@wizishop/img-manager 15.2.62 → 15.2.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/assets/i18n/en.json +1 -1
  2. package/assets/i18n/es.json +1 -1
  3. package/assets/i18n/fr.json +1 -1
  4. package/assets/i18n/it.json +1 -1
  5. package/esm2020/lib/components/images-view/images-actions-handler.mjs +5 -1
  6. package/esm2020/lib/components/images-view/images-view.component.mjs +12 -9
  7. package/esm2020/lib/components/images-view/mosaic-view/img-card/img-card.component.mjs +3 -3
  8. package/esm2020/lib/components/images-view/table-view/table-view.component.mjs +3 -3
  9. package/esm2020/lib/components/img-editor/img-editor.component.mjs +44 -7
  10. package/esm2020/lib/components/img-editor/info-video/info-video.component.mjs +62 -0
  11. package/esm2020/lib/components/img-editor/show-iframe/show-iframe.component.mjs +105 -0
  12. package/esm2020/lib/components/img-selection/img-selection.component.mjs +3 -3
  13. package/esm2020/lib/components/img-tabs/img-tabs.component.mjs +12 -3
  14. package/esm2020/lib/components/shared/table/table.component.mjs +2 -1
  15. package/esm2020/lib/dto/img-manager.dto.mjs +1 -1
  16. package/esm2020/lib/services/api.service.mjs +1 -1
  17. package/esm2020/lib/services/img-event.service.mjs +8 -1
  18. package/esm2020/lib/services/img-manager.service.mjs +4 -3
  19. package/esm2020/lib/services/rename-picture.service.mjs +4 -1
  20. package/esm2020/lib/services/table/filters-table.service.mjs +2 -1
  21. package/esm2020/lib/services/video-info.service.mjs +87 -0
  22. package/esm2020/lib/wz-img-manager.module.mjs +7 -1
  23. package/fesm2015/wizishop-img-manager.mjs +321 -16
  24. package/fesm2015/wizishop-img-manager.mjs.map +1 -1
  25. package/fesm2020/wizishop-img-manager.mjs +319 -15
  26. package/fesm2020/wizishop-img-manager.mjs.map +1 -1
  27. package/lib/components/images-view/images-actions-handler.d.ts +1 -0
  28. package/lib/components/images-view/images-view.component.d.ts +3 -2
  29. package/lib/components/img-editor/img-editor.component.d.ts +8 -1
  30. package/lib/components/img-editor/info-video/info-video.component.d.ts +20 -0
  31. package/lib/components/img-editor/show-iframe/show-iframe.component.d.ts +16 -0
  32. package/lib/components/img-tabs/img-tabs.component.d.ts +1 -0
  33. package/lib/dto/img-manager.dto.d.ts +9 -0
  34. package/lib/services/api.service.d.ts +1 -0
  35. package/lib/services/img-event.service.d.ts +3 -0
  36. package/lib/services/img-manager.service.d.ts +8 -14
  37. package/lib/services/rename-picture.service.d.ts +1 -0
  38. package/lib/services/table/filters-table.service.d.ts +1 -0
  39. package/lib/services/video-info.service.d.ts +23 -0
  40. package/lib/wz-img-manager.module.d.ts +46 -44
  41. package/package.json +1 -1
  42. package/wizishop-img-manager-15.2.63.tgz +0 -0
  43. package/wz-img-manager.scss +302 -11
  44. package/wizishop-img-manager-15.2.62.tgz +0 -0
@@ -47,13 +47,13 @@ export class TableViewComponent extends ImagesActionHandler {
47
47
  }
48
48
  }
49
49
  TableViewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TableViewComponent, deps: [{ token: i1.ImgManagerService }, { token: i2.ImgSelectionService }, { token: i3.HttpClient }, { token: i4.ImgCDNService }, { token: i5.ImgEventService }, { token: i6.AlertService }, { token: i7.TranslateService }, { token: i8.ApiService }], target: i0.ɵɵFactoryTarget.Component });
50
- TableViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: TableViewComponent, selector: "table-view", usesInheritance: true, ngImport: i0, template: "<div class=\"table-view\" [@listAnimation]=\"picturesList.length\">\r\n <wz-table\r\n [checkbox]=\"true\"\r\n (toggleAllCheckBox)=\"onToggleAllCheckBoxRow($event)\"\r\n [(tableFilters)]=\"tableFilters\"\r\n (tableFiltersChange)=\"onFiltersChange()\"\r\n [placeholder]=\"'ImgManager.SearchBar.placeholder' | translate\"\r\n [disablePagniation]=\"displayPexelsResults\"\r\n [isLoading]=\"isLoading\"\r\n >\r\n <!-- Header Section -->\r\n <div\r\n headerCell\r\n [headerName]=\"'ImgManager.ImgList.titleImgName' | translate\"\r\n columnSize=\"2\"\r\n sortName=\"name\"\r\n ></div>\r\n <div\r\n headerCell\r\n centerCell=\"center\"\r\n [headerName]=\"'ImgManager.ImgList.titleResolution' | translate\"\r\n ></div>\r\n <div headerCell columnSize=\"0\"></div>\r\n\r\n <!-- Body Section -->\r\n <div\r\n tableRow\r\n checkBoxRow\r\n [checkBoxValue]=\"picture.delSelected\"\r\n (checkBoxValueChange)=\"onToggleDelSelection(index)\"\r\n *ngFor=\"let picture of picturesList; let index = index\"\r\n >\r\n\r\n <div tableColumn columnSize=\"2\">\r\n <div class=\"table-view__row__container\">\r\n <div\r\n class=\"table-view__row__container__imgContainer\"\r\n [ngClass]=\"{'imgSelected': picture.selected}\"\r\n (click)=\"onToggleSelectImg(index)\">\r\n <img\r\n class=\"table-view__row__container__imgContainer__img\"\r\n [src]=\"picture.file_name | imgSrc : '100'\"\r\n alt=\"picture.display_name\"\r\n [ngClass]=\"{'pictureDeletion': picture.deleted}\"\r\n (error)=\"picture.imgNotLoaded=true;onPictureNotLoading($event);\"\r\n />\r\n <!-- If the img is not loaded, or the link is broken, an icon is displayed -->\r\n <div\r\n *ngIf=\"picture.imgNotLoaded\"\r\n class=\"table-view__row__container__imgContainer__overlay\"\r\n >\r\n <i class=\"fad fa-folder-times\"></i>\r\n </div>\r\n </div>\r\n <input\r\n type=\"text\"\r\n class=\"wzImgMngInput table-view__row__container__name\"\r\n [(ngModel)]=\"picture.display_name\"\r\n (focus)=\"previousName=picture.display_name\"\r\n (blur)=\"onNameChange(picture.id_file)\"\r\n (click)=\"onToggleDelSelection(index)\"\r\n [ngClass]=\"{'desabled': picture.deleted}\"\r\n [disabled]=\"picture.deleted\"\r\n >\r\n </div>\r\n </div>\r\n\r\n <div\r\n tableColumn\r\n centerCell=\"center\"\r\n (click)=\"onToggleDelSelection(index)\"\r\n >\r\n <p class=\"grey\">{{picture.raw_height}}x{{picture.raw_width}}</p>\r\n </div>\r\n\r\n <div tableColumn centerCell=\"center\" columnSize=\"0\" class=\"table-view__dropdown-options\">\r\n <!-- Dropdown -->\r\n <dropdown dropdownId=\"dropdown-options\" [disable]=\"picture.deleted\">\r\n <ng-container label>\r\n <div class=\"table-view__dropdown-options__label rotate\">\r\n <span> <i class=\"far fa-ellipsis-h is-size-4\" aria-haspopup=\"true\" aria-controls=\"dropdown-menu\"> </i> </span>\r\n </div>\r\n </ng-container>\r\n <ng-container item>\r\n <div\r\n class=\"dropdown-item\"\r\n (click)=\"onDownloadImg(picture.display_name, picture.file_name)\"\r\n >\r\n <i class=\"far fa-download download\"></i>&nbsp;\r\n <p>{{ 'ImgManager.ImgList.download' | translate }}</p>\r\n </div>\r\n </ng-container>\r\n <ng-container item>\r\n <div\r\n class=\"dropdown-item\"\r\n (click)=\"onEdit(picture)\"\r\n >\r\n <i class=\"far fa-crop-alt edit\"></i>&nbsp;\r\n <p>{{ 'ImgManager.ImgList.edit' | translate }}</p>\r\n </div>\r\n </ng-container>\r\n <ng-container item>\r\n <div\r\n class=\"dropdown-item\"\r\n (click)=\"copyImageLink(picture.file_name)\"\r\n >\r\n <i class=\"far fa-copy copy\"></i>&nbsp;\r\n <p>{{ 'ImgManager.ImgList.Link' | translate }}</p>\r\n </div>\r\n </ng-container>\r\n <ng-container item>\r\n <div\r\n class=\"dropdown-item\"\r\n (click)=\"onRemoveImg(picture)\"\r\n >\r\n <i class=\"fal fa-times deleted\"></i>&nbsp;\r\n <p>{{ 'ImgManager.ImgList.remove' | translate }}</p>\r\n </div>\r\n </ng-container>\r\n </dropdown>\r\n </div>\r\n </div>\r\n </wz-table>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i11.DropdownComponent, selector: "dropdown", inputs: ["dropDownMenuClass", "disable"] }, { kind: "component", type: i12.TableComponent, selector: "wz-table", inputs: ["tableFilters", "tableRoutingName", "placeholder", "checkbox", "disableSearch", "disablePagniation", "isLoading"], outputs: ["tableFiltersChange", "toggleAllCheckBox"] }, { kind: "directive", type: i13.TableColumn, selector: "[tableColumn]", inputs: ["columnSize", "centerCell"] }, { kind: "directive", type: i14.CheckBoxRow, selector: "[checkBoxRow]", inputs: ["checkBoxId", "checkBoxName", "checkBoxValue"], outputs: ["checkBoxValueChange"] }, { kind: "directive", type: i15.TableColumnHeader, selector: "[headerCell]", inputs: ["headerName", "columnSize", "filterRouting", "tableName", "sortName", "centerCell", "tableFilters"], outputs: ["onSortChange", "tableFiltersChange"] }, { kind: "directive", type: i16.TableRow, selector: "[tableRow]" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }, { kind: "pipe", type: i17.ImageSrcPipe, name: "imgSrc" }], animations: [
50
+ TableViewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: TableViewComponent, selector: "table-view", usesInheritance: true, ngImport: i0, template: "<div class=\"table-view\" [@listAnimation]=\"picturesList.length\">\r\n <wz-table\r\n [checkbox]=\"true\"\r\n (toggleAllCheckBox)=\"onToggleAllCheckBoxRow($event)\"\r\n [(tableFilters)]=\"tableFilters\"\r\n (tableFiltersChange)=\"onFiltersChange()\"\r\n [placeholder]=\"'ImgManager.SearchBar.placeholder' | translate\"\r\n [disablePagniation]=\"displayPexelsResults\"\r\n [isLoading]=\"isLoading\"\r\n >\r\n <!-- Header Section -->\r\n <div\r\n headerCell\r\n [headerName]=\"'ImgManager.ImgList.titleImgName' | translate\"\r\n columnSize=\"2\"\r\n sortName=\"name\"\r\n ></div>\r\n <div\r\n headerCell\r\n centerCell=\"center\"\r\n [headerName]=\"'ImgManager.ImgList.titleResolution' | translate\"\r\n ></div>\r\n <div headerCell columnSize=\"0\"></div>\r\n\r\n <!-- Body Section -->\r\n <div\r\n tableRow\r\n checkBoxRow\r\n [checkBoxValue]=\"picture.delSelected\"\r\n (checkBoxValueChange)=\"onToggleDelSelection(index)\"\r\n *ngFor=\"let picture of picturesList; let index = index\"\r\n >\r\n\r\n <div tableColumn columnSize=\"2\">\r\n <div class=\"table-view__row__container\">\r\n <div\r\n class=\"table-view__row__container__imgContainer\"\r\n [ngClass]=\"{'imgSelected': picture.selected}\"\r\n (click)=\"onToggleSelectImg(index)\">\r\n <img\r\n class=\"table-view__row__container__imgContainer__img\"\r\n [src]=\"picture.file_name | imgSrc : '100'\"\r\n alt=\"picture.display_name\"\r\n [ngClass]=\"{'pictureDeletion': picture.deleted}\"\r\n (error)=\"picture.imgNotLoaded=true;onPictureNotLoading($event);\"\r\n />\r\n <!-- If the img is not loaded, or the link is broken, an icon is displayed -->\r\n <div\r\n *ngIf=\"picture.imgNotLoaded\"\r\n class=\"table-view__row__container__imgContainer__overlay\"\r\n >\r\n <i class=\"fad fa-folder-times\"></i>\r\n </div>\r\n <div *ngIf=\"picture.video_link\" class=\"table-view__row__container__imgContainer__container__video\">\r\n <i class=\"fa-solid fa-play\"></i>\r\n <span>{{ 'ImgManager.ImgEditor.Video' | translate }}</span>\r\n </div>\r\n </div>\r\n <input\r\n type=\"text\"\r\n class=\"wzImgMngInput table-view__row__container__name\"\r\n [(ngModel)]=\"picture.display_name\"\r\n (focus)=\"previousName=picture.display_name\"\r\n (blur)=\"onNameChange(picture.id_file)\"\r\n (click)=\"onToggleDelSelection(index)\"\r\n [ngClass]=\"{'desabled': picture.deleted}\"\r\n [disabled]=\"picture.deleted\"\r\n >\r\n </div>\r\n </div>\r\n\r\n <div\r\n tableColumn\r\n centerCell=\"center\"\r\n (click)=\"onToggleDelSelection(index)\"\r\n >\r\n <p class=\"grey\">{{picture.raw_height}}x{{picture.raw_width}}</p>\r\n </div>\r\n\r\n <div tableColumn centerCell=\"center\" columnSize=\"0\" class=\"table-view__dropdown-options\">\r\n <!-- Dropdown -->\r\n <dropdown dropdownId=\"dropdown-options\" [disable]=\"picture.deleted\">\r\n <ng-container label>\r\n <div class=\"table-view__dropdown-options__label rotate\">\r\n <span> <i class=\"far fa-ellipsis-h is-size-4\" aria-haspopup=\"true\" aria-controls=\"dropdown-menu\"> </i> </span>\r\n </div>\r\n </ng-container>\r\n <ng-container item>\r\n <div\r\n class=\"dropdown-item\"\r\n (click)=\"onDownloadImg(picture.display_name, picture.file_name)\"\r\n >\r\n <i class=\"far fa-download download\"></i>&nbsp;\r\n <p>{{ 'ImgManager.ImgList.download' | translate }}</p>\r\n </div>\r\n </ng-container>\r\n <ng-container item>\r\n <div\r\n class=\"dropdown-item\"\r\n (click)=\"redirectToVideo(picture)\"\r\n >\r\n <i class=\"fa-solid fa-play\"></i>&nbsp;\r\n <p>{{ 'ImgManager.ImgEditor.AddVideo' | translate }}</p>\r\n </div>\r\n </ng-container>\r\n <ng-container item>\r\n <div\r\n class=\"dropdown-item\"\r\n (click)=\"onEdit(picture)\"\r\n >\r\n <i class=\"far fa-crop-alt edit\"></i>&nbsp;\r\n <p>{{ 'ImgManager.ImgList.edit' | translate }}</p>\r\n </div>\r\n </ng-container>\r\n <ng-container item>\r\n <div\r\n class=\"dropdown-item\"\r\n (click)=\"copyImageLink(picture.file_name)\"\r\n >\r\n <i class=\"far fa-copy copy\"></i>&nbsp;\r\n <p>{{ 'ImgManager.ImgList.Link' | translate }}</p>\r\n </div>\r\n </ng-container>\r\n <ng-container item>\r\n <div\r\n class=\"dropdown-item\"\r\n (click)=\"onRemoveImg(picture)\"\r\n >\r\n <i class=\"fal fa-times deleted\"></i>&nbsp;\r\n <p>{{ 'ImgManager.ImgList.remove' | translate }}</p>\r\n </div>\r\n </ng-container>\r\n </dropdown>\r\n </div>\r\n </div>\r\n </wz-table>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i9.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i11.DropdownComponent, selector: "dropdown", inputs: ["dropDownMenuClass", "disable"] }, { kind: "component", type: i12.TableComponent, selector: "wz-table", inputs: ["tableFilters", "tableRoutingName", "placeholder", "checkbox", "disableSearch", "disablePagniation", "isLoading"], outputs: ["tableFiltersChange", "toggleAllCheckBox"] }, { kind: "directive", type: i13.TableColumn, selector: "[tableColumn]", inputs: ["columnSize", "centerCell"] }, { kind: "directive", type: i14.CheckBoxRow, selector: "[checkBoxRow]", inputs: ["checkBoxId", "checkBoxName", "checkBoxValue"], outputs: ["checkBoxValueChange"] }, { kind: "directive", type: i15.TableColumnHeader, selector: "[headerCell]", inputs: ["headerName", "columnSize", "filterRouting", "tableName", "sortName", "centerCell", "tableFilters"], outputs: ["onSortChange", "tableFiltersChange"] }, { kind: "directive", type: i16.TableRow, selector: "[tableRow]" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }, { kind: "pipe", type: i17.ImageSrcPipe, name: "imgSrc" }], animations: [
51
51
  listAnnimation
52
52
  ] });
53
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TableViewComponent, decorators: [{
54
54
  type: Component,
55
55
  args: [{ selector: 'table-view', animations: [
56
56
  listAnnimation
57
- ], template: "<div class=\"table-view\" [@listAnimation]=\"picturesList.length\">\r\n <wz-table\r\n [checkbox]=\"true\"\r\n (toggleAllCheckBox)=\"onToggleAllCheckBoxRow($event)\"\r\n [(tableFilters)]=\"tableFilters\"\r\n (tableFiltersChange)=\"onFiltersChange()\"\r\n [placeholder]=\"'ImgManager.SearchBar.placeholder' | translate\"\r\n [disablePagniation]=\"displayPexelsResults\"\r\n [isLoading]=\"isLoading\"\r\n >\r\n <!-- Header Section -->\r\n <div\r\n headerCell\r\n [headerName]=\"'ImgManager.ImgList.titleImgName' | translate\"\r\n columnSize=\"2\"\r\n sortName=\"name\"\r\n ></div>\r\n <div\r\n headerCell\r\n centerCell=\"center\"\r\n [headerName]=\"'ImgManager.ImgList.titleResolution' | translate\"\r\n ></div>\r\n <div headerCell columnSize=\"0\"></div>\r\n\r\n <!-- Body Section -->\r\n <div\r\n tableRow\r\n checkBoxRow\r\n [checkBoxValue]=\"picture.delSelected\"\r\n (checkBoxValueChange)=\"onToggleDelSelection(index)\"\r\n *ngFor=\"let picture of picturesList; let index = index\"\r\n >\r\n\r\n <div tableColumn columnSize=\"2\">\r\n <div class=\"table-view__row__container\">\r\n <div\r\n class=\"table-view__row__container__imgContainer\"\r\n [ngClass]=\"{'imgSelected': picture.selected}\"\r\n (click)=\"onToggleSelectImg(index)\">\r\n <img\r\n class=\"table-view__row__container__imgContainer__img\"\r\n [src]=\"picture.file_name | imgSrc : '100'\"\r\n alt=\"picture.display_name\"\r\n [ngClass]=\"{'pictureDeletion': picture.deleted}\"\r\n (error)=\"picture.imgNotLoaded=true;onPictureNotLoading($event);\"\r\n />\r\n <!-- If the img is not loaded, or the link is broken, an icon is displayed -->\r\n <div\r\n *ngIf=\"picture.imgNotLoaded\"\r\n class=\"table-view__row__container__imgContainer__overlay\"\r\n >\r\n <i class=\"fad fa-folder-times\"></i>\r\n </div>\r\n </div>\r\n <input\r\n type=\"text\"\r\n class=\"wzImgMngInput table-view__row__container__name\"\r\n [(ngModel)]=\"picture.display_name\"\r\n (focus)=\"previousName=picture.display_name\"\r\n (blur)=\"onNameChange(picture.id_file)\"\r\n (click)=\"onToggleDelSelection(index)\"\r\n [ngClass]=\"{'desabled': picture.deleted}\"\r\n [disabled]=\"picture.deleted\"\r\n >\r\n </div>\r\n </div>\r\n\r\n <div\r\n tableColumn\r\n centerCell=\"center\"\r\n (click)=\"onToggleDelSelection(index)\"\r\n >\r\n <p class=\"grey\">{{picture.raw_height}}x{{picture.raw_width}}</p>\r\n </div>\r\n\r\n <div tableColumn centerCell=\"center\" columnSize=\"0\" class=\"table-view__dropdown-options\">\r\n <!-- Dropdown -->\r\n <dropdown dropdownId=\"dropdown-options\" [disable]=\"picture.deleted\">\r\n <ng-container label>\r\n <div class=\"table-view__dropdown-options__label rotate\">\r\n <span> <i class=\"far fa-ellipsis-h is-size-4\" aria-haspopup=\"true\" aria-controls=\"dropdown-menu\"> </i> </span>\r\n </div>\r\n </ng-container>\r\n <ng-container item>\r\n <div\r\n class=\"dropdown-item\"\r\n (click)=\"onDownloadImg(picture.display_name, picture.file_name)\"\r\n >\r\n <i class=\"far fa-download download\"></i>&nbsp;\r\n <p>{{ 'ImgManager.ImgList.download' | translate }}</p>\r\n </div>\r\n </ng-container>\r\n <ng-container item>\r\n <div\r\n class=\"dropdown-item\"\r\n (click)=\"onEdit(picture)\"\r\n >\r\n <i class=\"far fa-crop-alt edit\"></i>&nbsp;\r\n <p>{{ 'ImgManager.ImgList.edit' | translate }}</p>\r\n </div>\r\n </ng-container>\r\n <ng-container item>\r\n <div\r\n class=\"dropdown-item\"\r\n (click)=\"copyImageLink(picture.file_name)\"\r\n >\r\n <i class=\"far fa-copy copy\"></i>&nbsp;\r\n <p>{{ 'ImgManager.ImgList.Link' | translate }}</p>\r\n </div>\r\n </ng-container>\r\n <ng-container item>\r\n <div\r\n class=\"dropdown-item\"\r\n (click)=\"onRemoveImg(picture)\"\r\n >\r\n <i class=\"fal fa-times deleted\"></i>&nbsp;\r\n <p>{{ 'ImgManager.ImgList.remove' | translate }}</p>\r\n </div>\r\n </ng-container>\r\n </dropdown>\r\n </div>\r\n </div>\r\n </wz-table>\r\n</div>\r\n" }]
57
+ ], template: "<div class=\"table-view\" [@listAnimation]=\"picturesList.length\">\r\n <wz-table\r\n [checkbox]=\"true\"\r\n (toggleAllCheckBox)=\"onToggleAllCheckBoxRow($event)\"\r\n [(tableFilters)]=\"tableFilters\"\r\n (tableFiltersChange)=\"onFiltersChange()\"\r\n [placeholder]=\"'ImgManager.SearchBar.placeholder' | translate\"\r\n [disablePagniation]=\"displayPexelsResults\"\r\n [isLoading]=\"isLoading\"\r\n >\r\n <!-- Header Section -->\r\n <div\r\n headerCell\r\n [headerName]=\"'ImgManager.ImgList.titleImgName' | translate\"\r\n columnSize=\"2\"\r\n sortName=\"name\"\r\n ></div>\r\n <div\r\n headerCell\r\n centerCell=\"center\"\r\n [headerName]=\"'ImgManager.ImgList.titleResolution' | translate\"\r\n ></div>\r\n <div headerCell columnSize=\"0\"></div>\r\n\r\n <!-- Body Section -->\r\n <div\r\n tableRow\r\n checkBoxRow\r\n [checkBoxValue]=\"picture.delSelected\"\r\n (checkBoxValueChange)=\"onToggleDelSelection(index)\"\r\n *ngFor=\"let picture of picturesList; let index = index\"\r\n >\r\n\r\n <div tableColumn columnSize=\"2\">\r\n <div class=\"table-view__row__container\">\r\n <div\r\n class=\"table-view__row__container__imgContainer\"\r\n [ngClass]=\"{'imgSelected': picture.selected}\"\r\n (click)=\"onToggleSelectImg(index)\">\r\n <img\r\n class=\"table-view__row__container__imgContainer__img\"\r\n [src]=\"picture.file_name | imgSrc : '100'\"\r\n alt=\"picture.display_name\"\r\n [ngClass]=\"{'pictureDeletion': picture.deleted}\"\r\n (error)=\"picture.imgNotLoaded=true;onPictureNotLoading($event);\"\r\n />\r\n <!-- If the img is not loaded, or the link is broken, an icon is displayed -->\r\n <div\r\n *ngIf=\"picture.imgNotLoaded\"\r\n class=\"table-view__row__container__imgContainer__overlay\"\r\n >\r\n <i class=\"fad fa-folder-times\"></i>\r\n </div>\r\n <div *ngIf=\"picture.video_link\" class=\"table-view__row__container__imgContainer__container__video\">\r\n <i class=\"fa-solid fa-play\"></i>\r\n <span>{{ 'ImgManager.ImgEditor.Video' | translate }}</span>\r\n </div>\r\n </div>\r\n <input\r\n type=\"text\"\r\n class=\"wzImgMngInput table-view__row__container__name\"\r\n [(ngModel)]=\"picture.display_name\"\r\n (focus)=\"previousName=picture.display_name\"\r\n (blur)=\"onNameChange(picture.id_file)\"\r\n (click)=\"onToggleDelSelection(index)\"\r\n [ngClass]=\"{'desabled': picture.deleted}\"\r\n [disabled]=\"picture.deleted\"\r\n >\r\n </div>\r\n </div>\r\n\r\n <div\r\n tableColumn\r\n centerCell=\"center\"\r\n (click)=\"onToggleDelSelection(index)\"\r\n >\r\n <p class=\"grey\">{{picture.raw_height}}x{{picture.raw_width}}</p>\r\n </div>\r\n\r\n <div tableColumn centerCell=\"center\" columnSize=\"0\" class=\"table-view__dropdown-options\">\r\n <!-- Dropdown -->\r\n <dropdown dropdownId=\"dropdown-options\" [disable]=\"picture.deleted\">\r\n <ng-container label>\r\n <div class=\"table-view__dropdown-options__label rotate\">\r\n <span> <i class=\"far fa-ellipsis-h is-size-4\" aria-haspopup=\"true\" aria-controls=\"dropdown-menu\"> </i> </span>\r\n </div>\r\n </ng-container>\r\n <ng-container item>\r\n <div\r\n class=\"dropdown-item\"\r\n (click)=\"onDownloadImg(picture.display_name, picture.file_name)\"\r\n >\r\n <i class=\"far fa-download download\"></i>&nbsp;\r\n <p>{{ 'ImgManager.ImgList.download' | translate }}</p>\r\n </div>\r\n </ng-container>\r\n <ng-container item>\r\n <div\r\n class=\"dropdown-item\"\r\n (click)=\"redirectToVideo(picture)\"\r\n >\r\n <i class=\"fa-solid fa-play\"></i>&nbsp;\r\n <p>{{ 'ImgManager.ImgEditor.AddVideo' | translate }}</p>\r\n </div>\r\n </ng-container>\r\n <ng-container item>\r\n <div\r\n class=\"dropdown-item\"\r\n (click)=\"onEdit(picture)\"\r\n >\r\n <i class=\"far fa-crop-alt edit\"></i>&nbsp;\r\n <p>{{ 'ImgManager.ImgList.edit' | translate }}</p>\r\n </div>\r\n </ng-container>\r\n <ng-container item>\r\n <div\r\n class=\"dropdown-item\"\r\n (click)=\"copyImageLink(picture.file_name)\"\r\n >\r\n <i class=\"far fa-copy copy\"></i>&nbsp;\r\n <p>{{ 'ImgManager.ImgList.Link' | translate }}</p>\r\n </div>\r\n </ng-container>\r\n <ng-container item>\r\n <div\r\n class=\"dropdown-item\"\r\n (click)=\"onRemoveImg(picture)\"\r\n >\r\n <i class=\"fal fa-times deleted\"></i>&nbsp;\r\n <p>{{ 'ImgManager.ImgList.remove' | translate }}</p>\r\n </div>\r\n </ng-container>\r\n </dropdown>\r\n </div>\r\n </div>\r\n </wz-table>\r\n</div>\r\n" }]
58
58
  }], ctorParameters: function () { return [{ type: i1.ImgManagerService }, { type: i2.ImgSelectionService }, { type: i3.HttpClient }, { type: i4.ImgCDNService }, { type: i5.ImgEventService }, { type: i6.AlertService }, { type: i7.TranslateService }, { type: i8.ApiService }]; } });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93ei1pbWctbWFuYWdlci9zcmMvbGliL2NvbXBvbmVudHMvaW1hZ2VzLXZpZXcvdGFibGUtdmlldy90YWJsZS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3d6LWltZy1tYW5hZ2VyL3NyYy9saWIvY29tcG9uZW50cy9pbWFnZXMtdmlldy90YWJsZS12aWV3L3RhYmxlLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVMzRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsbUJBQW1CO0lBSXpELFlBQ0UsVUFBNkIsRUFDN0IsbUJBQXdDLEVBQ3hDLElBQWdCLEVBQ2hCLGFBQTRCLEVBQzVCLG1CQUFvQyxFQUNwQyxZQUEwQixFQUMxQixnQkFBa0MsRUFDbEMsVUFBc0I7UUFFdEIsS0FBSyxDQUNILFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsSUFBSSxFQUNKLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixVQUFVLENBQ1gsQ0FBQztRQXJCSixrQkFBYSxHQUFXLGFBQWEsQ0FBQyxDQUFDLHFCQUFxQjtJQXNCNUQsQ0FBQztJQUVELFFBQVE7SUFDUixDQUFDO0lBRUEsbUNBQW1DO0lBRW5DLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBaUI7UUFDbEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBRTVELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFM0QsSUFBSSxPQUFPLEVBQUU7WUFDWCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1NBQzlEO2FBQU07WUFDTCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1NBQ2xFO0lBQ0gsQ0FBQzs7K0dBekNRLGtCQUFrQjttR0FBbEIsa0JBQWtCLHlFQ25CL0IsazJKQTRIQSx1OUREN0djO1FBQ1YsY0FBYztLQUNmOzJGQUVVLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDRSxZQUFZLGNBRVY7d0JBQ1YsY0FBYztxQkFDZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgbGlzdEFubmltYXRpb24gfSBmcm9tICcuLi8uLi8uLi9hbmltYXRpb25zL2xpc3RBbm5pbWF0aW9uL2xpc3QuYW5pbWF0aW9uJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEltZ0NETlNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jb25maWcvaW1nLWNkbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW1nRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaW1nLWV2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbWdNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ltZy1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbWdTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaW1nLXNlbGVjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW1hZ2VzQWN0aW9uSGFuZGxlciB9IGZyb20gJy4uL2ltYWdlcy1hY3Rpb25zLWhhbmRsZXInO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXBpLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0YWJsZS12aWV3JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgbGlzdEFubmltYXRpb25cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZVZpZXdDb21wb25lbnQgZXh0ZW5kcyBJbWFnZXNBY3Rpb25IYW5kbGVyIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgZGF0YVRhYmxlTmFtZTogc3RyaW5nID0gJ2ltZ2FnZXNWaWV3JzsgLy8gTmFtZSBvZiB5b3VyIHRhYmxlXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgaW1nTWFuYWdlcjogSW1nTWFuYWdlclNlcnZpY2UsXHJcbiAgICBpbWdTZWxlY3Rpb25TZXJ2aWNlOiBJbWdTZWxlY3Rpb25TZXJ2aWNlLFxyXG4gICAgaHR0cDogSHR0cENsaWVudCxcclxuICAgIGltZ0NETlNlcnZpY2U6IEltZ0NETlNlcnZpY2UsXHJcbiAgICBpbWdFdmVudENhcmRTZXJ2aWNlOiBJbWdFdmVudFNlcnZpY2UsXHJcbiAgICBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBhcGlTZXJ2aWNlOiBBcGlTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihcclxuICAgICAgaW1nTWFuYWdlcixcclxuICAgICAgaW1nU2VsZWN0aW9uU2VydmljZSxcclxuICAgICAgaHR0cCxcclxuICAgICAgaW1nQ0ROU2VydmljZSxcclxuICAgICAgaW1nRXZlbnRDYXJkU2VydmljZSxcclxuICAgICAgYWxlcnRTZXJ2aWNlLFxyXG4gICAgICB0cmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICBhcGlTZXJ2aWNlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICAgLy8gQ29weSB0aGUgaW1hZ2UgbGluayB0byBjbGlwYm9hcmRcclxuXHJcbiAgIGFzeW5jIGNvcHlJbWFnZUxpbmsoZmlsZV9uYW1lOiBzdHJpbmcpIHtcclxuICAgICAgY29uc3QgdXJsID0gdGhpcy5pbWdDRE5TZXJ2aWNlLmdldFVybEltZygncmF3JykgKyBmaWxlX25hbWU7XHJcbiAgICAgIFxyXG4gICAgICBjb25zdCBzdWNjZXNzID0gYXdhaXQgdGhpcy5pbWdNYW5hZ2VyLmNvcHlUb0NsaXBib2FyZCh1cmwpO1xyXG4gICAgICBcclxuICAgICAgaWYgKHN1Y2Nlc3MpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5vcGVuQWxlcnQoJ0ltZ01hbmFnZXIuSW1nTGlzdC5saW5rQ29waWVkJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uub3BlbkFsZXJ0KCdJbWdNYW5hZ2VyLkltZ0xpc3QubGlua0NvcHlGYWlsZWQnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRhYmxlLXZpZXdcIiBbQGxpc3RBbmltYXRpb25dPVwicGljdHVyZXNMaXN0Lmxlbmd0aFwiPlxyXG4gIDx3ei10YWJsZVxyXG4gICAgW2NoZWNrYm94XT1cInRydWVcIlxyXG4gICAgKHRvZ2dsZUFsbENoZWNrQm94KT1cIm9uVG9nZ2xlQWxsQ2hlY2tCb3hSb3coJGV2ZW50KVwiXHJcbiAgICBbKHRhYmxlRmlsdGVycyldPVwidGFibGVGaWx0ZXJzXCJcclxuICAgICh0YWJsZUZpbHRlcnNDaGFuZ2UpPVwib25GaWx0ZXJzQ2hhbmdlKClcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cIidJbWdNYW5hZ2VyLlNlYXJjaEJhci5wbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxyXG4gICAgW2Rpc2FibGVQYWduaWF0aW9uXT1cImRpc3BsYXlQZXhlbHNSZXN1bHRzXCJcclxuICAgIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nXCJcclxuICA+XHJcbiAgICA8IS0tIEhlYWRlciBTZWN0aW9uIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBoZWFkZXJDZWxsXHJcbiAgICAgIFtoZWFkZXJOYW1lXT1cIidJbWdNYW5hZ2VyLkltZ0xpc3QudGl0bGVJbWdOYW1lJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgIGNvbHVtblNpemU9XCIyXCJcclxuICAgICAgc29ydE5hbWU9XCJuYW1lXCJcclxuICAgID48L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgaGVhZGVyQ2VsbFxyXG4gICAgICBjZW50ZXJDZWxsPVwiY2VudGVyXCJcclxuICAgICAgW2hlYWRlck5hbWVdPVwiJ0ltZ01hbmFnZXIuSW1nTGlzdC50aXRsZVJlc29sdXRpb24nIHwgdHJhbnNsYXRlXCJcclxuICAgID48L2Rpdj5cclxuICAgIDxkaXYgaGVhZGVyQ2VsbCBjb2x1bW5TaXplPVwiMFwiPjwvZGl2PlxyXG5cclxuICAgIDwhLS0gQm9keSBTZWN0aW9uIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICB0YWJsZVJvd1xyXG4gICAgICBjaGVja0JveFJvd1xyXG4gICAgICBbY2hlY2tCb3hWYWx1ZV09XCJwaWN0dXJlLmRlbFNlbGVjdGVkXCJcclxuICAgICAgKGNoZWNrQm94VmFsdWVDaGFuZ2UpPVwib25Ub2dnbGVEZWxTZWxlY3Rpb24oaW5kZXgpXCJcclxuICAgICAgKm5nRm9yPVwibGV0IHBpY3R1cmUgb2YgcGljdHVyZXNMaXN0OyBsZXQgaW5kZXggPSBpbmRleFwiXHJcbiAgICA+XHJcblxyXG4gICAgICA8ZGl2IHRhYmxlQ29sdW1uIGNvbHVtblNpemU9XCIyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXZpZXdfX3Jvd19fY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwidGFibGUtdmlld19fcm93X19jb250YWluZXJfX2ltZ0NvbnRhaW5lclwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaW1nU2VsZWN0ZWQnOiBwaWN0dXJlLnNlbGVjdGVkfVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvblRvZ2dsZVNlbGVjdEltZyhpbmRleClcIj5cclxuICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLXZpZXdfX3Jvd19fY29udGFpbmVyX19pbWdDb250YWluZXJfX2ltZ1wiXHJcbiAgICAgICAgICAgICAgICBbc3JjXT1cInBpY3R1cmUuZmlsZV9uYW1lIHwgaW1nU3JjIDogJzEwMCdcIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwicGljdHVyZS5kaXNwbGF5X25hbWVcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydwaWN0dXJlRGVsZXRpb24nOiBwaWN0dXJlLmRlbGV0ZWR9XCJcclxuICAgICAgICAgICAgICAgIChlcnJvcik9XCJwaWN0dXJlLmltZ05vdExvYWRlZD10cnVlO29uUGljdHVyZU5vdExvYWRpbmcoJGV2ZW50KTtcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPCEtLSBJZiB0aGUgaW1nIGlzIG5vdCBsb2FkZWQsIG9yIHRoZSBsaW5rIGlzIGJyb2tlbiwgYW4gaWNvbiBpcyBkaXNwbGF5ZWQgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwaWN0dXJlLmltZ05vdExvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLXZpZXdfX3Jvd19fY29udGFpbmVyX19pbWdDb250YWluZXJfX292ZXJsYXlcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFkIGZhLWZvbGRlci10aW1lc1wiPjwvaT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwid3pJbWdNbmdJbnB1dCB0YWJsZS12aWV3X19yb3dfX2NvbnRhaW5lcl9fbmFtZVwiXHJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwaWN0dXJlLmRpc3BsYXlfbmFtZVwiXHJcbiAgICAgICAgICAgICAgKGZvY3VzKT1cInByZXZpb3VzTmFtZT1waWN0dXJlLmRpc3BsYXlfbmFtZVwiXHJcbiAgICAgICAgICAgICAgKGJsdXIpPVwib25OYW1lQ2hhbmdlKHBpY3R1cmUuaWRfZmlsZSlcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJvblRvZ2dsZURlbFNlbGVjdGlvbihpbmRleClcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZGVzYWJsZWQnOiBwaWN0dXJlLmRlbGV0ZWR9XCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicGljdHVyZS5kZWxldGVkXCJcclxuICAgICAgICAgID5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgdGFibGVDb2x1bW5cclxuICAgICAgICBjZW50ZXJDZWxsPVwiY2VudGVyXCJcclxuICAgICAgICAoY2xpY2spPVwib25Ub2dnbGVEZWxTZWxlY3Rpb24oaW5kZXgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8cCBjbGFzcz1cImdyZXlcIj57e3BpY3R1cmUucmF3X2hlaWdodH19eHt7cGljdHVyZS5yYXdfd2lkdGh9fTwvcD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8ZGl2IHRhYmxlQ29sdW1uIGNlbnRlckNlbGw9XCJjZW50ZXJcIiBjb2x1bW5TaXplPVwiMFwiIGNsYXNzPVwidGFibGUtdmlld19fZHJvcGRvd24tb3B0aW9uc1wiPlxyXG4gICAgICAgIDwhLS0gRHJvcGRvd24gLS0+XHJcbiAgICAgICAgPGRyb3Bkb3duIGRyb3Bkb3duSWQ9XCJkcm9wZG93bi1vcHRpb25zXCIgW2Rpc2FibGVdPVwicGljdHVyZS5kZWxldGVkXCI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIGxhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS12aWV3X19kcm9wZG93bi1vcHRpb25zX19sYWJlbCByb3RhdGVcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPiA8aSBjbGFzcz1cImZhciBmYS1lbGxpcHNpcy1oIGlzLXNpemUtNFwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1jb250cm9scz1cImRyb3Bkb3duLW1lbnVcIj4gPC9pPiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgaXRlbT5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRG93bmxvYWRJbWcocGljdHVyZS5kaXNwbGF5X25hbWUsIHBpY3R1cmUuZmlsZV9uYW1lKVwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1kb3dubG9hZCBkb3dubG9hZFwiPjwvaT4mbmJzcDtcclxuICAgICAgICAgICAgICAgICAgPHA+e3sgJ0ltZ01hbmFnZXIuSW1nTGlzdC5kb3dubG9hZCcgfCB0cmFuc2xhdGUgfX08L3A+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgaXRlbT5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRWRpdChwaWN0dXJlKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWNyb3AtYWx0IGVkaXRcIj48L2k+Jm5ic3A7XHJcbiAgICAgICAgICAgICAgICA8cD57eyAnSW1nTWFuYWdlci5JbWdMaXN0LmVkaXQnIHwgdHJhbnNsYXRlIH19PC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBpdGVtPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiY29weUltYWdlTGluayhwaWN0dXJlLmZpbGVfbmFtZSlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1jb3B5IGNvcHlcIj48L2k+Jm5ic3A7XHJcbiAgICAgICAgICAgICAgICA8cD57eyAnSW1nTWFuYWdlci5JbWdMaXN0LkxpbmsnIHwgdHJhbnNsYXRlIH19PC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBpdGVtPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwib25SZW1vdmVJbWcocGljdHVyZSlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhbCBmYS10aW1lcyBkZWxldGVkXCI+PC9pPiZuYnNwO1xyXG4gICAgICAgICAgICAgICAgPHA+e3sgJ0ltZ01hbmFnZXIuSW1nTGlzdC5yZW1vdmUnIHwgdHJhbnNsYXRlIH19PC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZHJvcGRvd24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC93ei10YWJsZT5cclxuPC9kaXY+XHJcbiJdfQ==
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93ei1pbWctbWFuYWdlci9zcmMvbGliL2NvbXBvbmVudHMvaW1hZ2VzLXZpZXcvdGFibGUtdmlldy90YWJsZS12aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3d6LWltZy1tYW5hZ2VyL3NyYy9saWIvY29tcG9uZW50cy9pbWFnZXMtdmlldy90YWJsZS12aWV3L3RhYmxlLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUMvRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVMzRCxNQUFNLE9BQU8sa0JBQW1CLFNBQVEsbUJBQW1CO0lBSXpELFlBQ0UsVUFBNkIsRUFDN0IsbUJBQXdDLEVBQ3hDLElBQWdCLEVBQ2hCLGFBQTRCLEVBQzVCLG1CQUFvQyxFQUNwQyxZQUEwQixFQUMxQixnQkFBa0MsRUFDbEMsVUFBc0I7UUFFdEIsS0FBSyxDQUNILFVBQVUsRUFDVixtQkFBbUIsRUFDbkIsSUFBSSxFQUNKLGFBQWEsRUFDYixtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixVQUFVLENBQ1gsQ0FBQztRQXJCSixrQkFBYSxHQUFXLGFBQWEsQ0FBQyxDQUFDLHFCQUFxQjtJQXNCNUQsQ0FBQztJQUVELFFBQVE7SUFDUixDQUFDO0lBRUEsbUNBQW1DO0lBRW5DLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBaUI7UUFDbEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBRTVELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFM0QsSUFBSSxPQUFPLEVBQUU7WUFDWCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1NBQzlEO2FBQU07WUFDTCxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO1NBQ2xFO0lBQ0gsQ0FBQzs7K0dBekNRLGtCQUFrQjttR0FBbEIsa0JBQWtCLHlFQ25CL0IsbzhLQXlJQSx1OUREMUhjO1FBQ1YsY0FBYztLQUNmOzJGQUVVLGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDRSxZQUFZLGNBRVY7d0JBQ1YsY0FBYztxQkFDZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgbGlzdEFubmltYXRpb24gfSBmcm9tICcuLi8uLi8uLi9hbmltYXRpb25zL2xpc3RBbm5pbWF0aW9uL2xpc3QuYW5pbWF0aW9uJztcclxuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYWxlcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IEltZ0NETlNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jb25maWcvaW1nLWNkbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW1nRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaW1nLWV2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbWdNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ltZy1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJbWdTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaW1nLXNlbGVjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW1hZ2VzQWN0aW9uSGFuZGxlciB9IGZyb20gJy4uL2ltYWdlcy1hY3Rpb25zLWhhbmRsZXInO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXBpLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0YWJsZS12aWV3JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFibGUtdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgbGlzdEFubmltYXRpb25cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJsZVZpZXdDb21wb25lbnQgZXh0ZW5kcyBJbWFnZXNBY3Rpb25IYW5kbGVyIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgZGF0YVRhYmxlTmFtZTogc3RyaW5nID0gJ2ltZ2FnZXNWaWV3JzsgLy8gTmFtZSBvZiB5b3VyIHRhYmxlXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgaW1nTWFuYWdlcjogSW1nTWFuYWdlclNlcnZpY2UsXHJcbiAgICBpbWdTZWxlY3Rpb25TZXJ2aWNlOiBJbWdTZWxlY3Rpb25TZXJ2aWNlLFxyXG4gICAgaHR0cDogSHR0cENsaWVudCxcclxuICAgIGltZ0NETlNlcnZpY2U6IEltZ0NETlNlcnZpY2UsXHJcbiAgICBpbWdFdmVudENhcmRTZXJ2aWNlOiBJbWdFdmVudFNlcnZpY2UsXHJcbiAgICBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcclxuICAgIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBhcGlTZXJ2aWNlOiBBcGlTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgICBzdXBlcihcclxuICAgICAgaW1nTWFuYWdlcixcclxuICAgICAgaW1nU2VsZWN0aW9uU2VydmljZSxcclxuICAgICAgaHR0cCxcclxuICAgICAgaW1nQ0ROU2VydmljZSxcclxuICAgICAgaW1nRXZlbnRDYXJkU2VydmljZSxcclxuICAgICAgYWxlcnRTZXJ2aWNlLFxyXG4gICAgICB0cmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICBhcGlTZXJ2aWNlXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICAgLy8gQ29weSB0aGUgaW1hZ2UgbGluayB0byBjbGlwYm9hcmRcclxuXHJcbiAgIGFzeW5jIGNvcHlJbWFnZUxpbmsoZmlsZV9uYW1lOiBzdHJpbmcpIHtcclxuICAgICAgY29uc3QgdXJsID0gdGhpcy5pbWdDRE5TZXJ2aWNlLmdldFVybEltZygncmF3JykgKyBmaWxlX25hbWU7XHJcbiAgICAgIFxyXG4gICAgICBjb25zdCBzdWNjZXNzID0gYXdhaXQgdGhpcy5pbWdNYW5hZ2VyLmNvcHlUb0NsaXBib2FyZCh1cmwpO1xyXG4gICAgICBcclxuICAgICAgaWYgKHN1Y2Nlc3MpIHtcclxuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5vcGVuQWxlcnQoJ0ltZ01hbmFnZXIuSW1nTGlzdC5saW5rQ29waWVkJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uub3BlbkFsZXJ0KCdJbWdNYW5hZ2VyLkltZ0xpc3QubGlua0NvcHlGYWlsZWQnKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRhYmxlLXZpZXdcIiBbQGxpc3RBbmltYXRpb25dPVwicGljdHVyZXNMaXN0Lmxlbmd0aFwiPlxyXG4gIDx3ei10YWJsZVxyXG4gICAgW2NoZWNrYm94XT1cInRydWVcIlxyXG4gICAgKHRvZ2dsZUFsbENoZWNrQm94KT1cIm9uVG9nZ2xlQWxsQ2hlY2tCb3hSb3coJGV2ZW50KVwiXHJcbiAgICBbKHRhYmxlRmlsdGVycyldPVwidGFibGVGaWx0ZXJzXCJcclxuICAgICh0YWJsZUZpbHRlcnNDaGFuZ2UpPVwib25GaWx0ZXJzQ2hhbmdlKClcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cIidJbWdNYW5hZ2VyLlNlYXJjaEJhci5wbGFjZWhvbGRlcicgfCB0cmFuc2xhdGVcIlxyXG4gICAgW2Rpc2FibGVQYWduaWF0aW9uXT1cImRpc3BsYXlQZXhlbHNSZXN1bHRzXCJcclxuICAgIFtpc0xvYWRpbmddPVwiaXNMb2FkaW5nXCJcclxuICA+XHJcbiAgICA8IS0tIEhlYWRlciBTZWN0aW9uIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICBoZWFkZXJDZWxsXHJcbiAgICAgIFtoZWFkZXJOYW1lXT1cIidJbWdNYW5hZ2VyLkltZ0xpc3QudGl0bGVJbWdOYW1lJyB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgIGNvbHVtblNpemU9XCIyXCJcclxuICAgICAgc29ydE5hbWU9XCJuYW1lXCJcclxuICAgID48L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgaGVhZGVyQ2VsbFxyXG4gICAgICBjZW50ZXJDZWxsPVwiY2VudGVyXCJcclxuICAgICAgW2hlYWRlck5hbWVdPVwiJ0ltZ01hbmFnZXIuSW1nTGlzdC50aXRsZVJlc29sdXRpb24nIHwgdHJhbnNsYXRlXCJcclxuICAgID48L2Rpdj5cclxuICAgIDxkaXYgaGVhZGVyQ2VsbCBjb2x1bW5TaXplPVwiMFwiPjwvZGl2PlxyXG5cclxuICAgIDwhLS0gQm9keSBTZWN0aW9uIC0tPlxyXG4gICAgPGRpdlxyXG4gICAgICB0YWJsZVJvd1xyXG4gICAgICBjaGVja0JveFJvd1xyXG4gICAgICBbY2hlY2tCb3hWYWx1ZV09XCJwaWN0dXJlLmRlbFNlbGVjdGVkXCJcclxuICAgICAgKGNoZWNrQm94VmFsdWVDaGFuZ2UpPVwib25Ub2dnbGVEZWxTZWxlY3Rpb24oaW5kZXgpXCJcclxuICAgICAgKm5nRm9yPVwibGV0IHBpY3R1cmUgb2YgcGljdHVyZXNMaXN0OyBsZXQgaW5kZXggPSBpbmRleFwiXHJcbiAgICA+XHJcblxyXG4gICAgICA8ZGl2IHRhYmxlQ29sdW1uIGNvbHVtblNpemU9XCIyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXZpZXdfX3Jvd19fY29udGFpbmVyXCI+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwidGFibGUtdmlld19fcm93X19jb250YWluZXJfX2ltZ0NvbnRhaW5lclwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaW1nU2VsZWN0ZWQnOiBwaWN0dXJlLnNlbGVjdGVkfVwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvblRvZ2dsZVNlbGVjdEltZyhpbmRleClcIj5cclxuICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLXZpZXdfX3Jvd19fY29udGFpbmVyX19pbWdDb250YWluZXJfX2ltZ1wiXHJcbiAgICAgICAgICAgICAgICBbc3JjXT1cInBpY3R1cmUuZmlsZV9uYW1lIHwgaW1nU3JjIDogJzEwMCdcIlxyXG4gICAgICAgICAgICAgICAgYWx0PVwicGljdHVyZS5kaXNwbGF5X25hbWVcIlxyXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydwaWN0dXJlRGVsZXRpb24nOiBwaWN0dXJlLmRlbGV0ZWR9XCJcclxuICAgICAgICAgICAgICAgIChlcnJvcik9XCJwaWN0dXJlLmltZ05vdExvYWRlZD10cnVlO29uUGljdHVyZU5vdExvYWRpbmcoJGV2ZW50KTtcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPCEtLSBJZiB0aGUgaW1nIGlzIG5vdCBsb2FkZWQsIG9yIHRoZSBsaW5rIGlzIGJyb2tlbiwgYW4gaWNvbiBpcyBkaXNwbGF5ZWQgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJwaWN0dXJlLmltZ05vdExvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLXZpZXdfX3Jvd19fY29udGFpbmVyX19pbWdDb250YWluZXJfX292ZXJsYXlcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFkIGZhLWZvbGRlci10aW1lc1wiPjwvaT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicGljdHVyZS52aWRlb19saW5rXCIgY2xhc3M9XCJ0YWJsZS12aWV3X19yb3dfX2NvbnRhaW5lcl9faW1nQ29udGFpbmVyX19jb250YWluZXJfX3ZpZGVvXCI+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLXBsYXlcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyAnSW1nTWFuYWdlci5JbWdFZGl0b3IuVmlkZW8nIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInd6SW1nTW5nSW5wdXQgdGFibGUtdmlld19fcm93X19jb250YWluZXJfX25hbWVcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBpY3R1cmUuZGlzcGxheV9uYW1lXCJcclxuICAgICAgICAgICAgKGZvY3VzKT1cInByZXZpb3VzTmFtZT1waWN0dXJlLmRpc3BsYXlfbmFtZVwiXHJcbiAgICAgICAgICAgIChibHVyKT1cIm9uTmFtZUNoYW5nZShwaWN0dXJlLmlkX2ZpbGUpXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uVG9nZ2xlRGVsU2VsZWN0aW9uKGluZGV4KVwiXHJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnZGVzYWJsZWQnOiBwaWN0dXJlLmRlbGV0ZWR9XCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cInBpY3R1cmUuZGVsZXRlZFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIHRhYmxlQ29sdW1uXHJcbiAgICAgICAgY2VudGVyQ2VsbD1cImNlbnRlclwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uVG9nZ2xlRGVsU2VsZWN0aW9uKGluZGV4KVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHAgY2xhc3M9XCJncmV5XCI+e3twaWN0dXJlLnJhd19oZWlnaHR9fXh7e3BpY3R1cmUucmF3X3dpZHRofX08L3A+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiB0YWJsZUNvbHVtbiBjZW50ZXJDZWxsPVwiY2VudGVyXCIgY29sdW1uU2l6ZT1cIjBcIiBjbGFzcz1cInRhYmxlLXZpZXdfX2Ryb3Bkb3duLW9wdGlvbnNcIj5cclxuICAgICAgICA8IS0tIERyb3Bkb3duIC0tPlxyXG4gICAgICAgIDxkcm9wZG93biBkcm9wZG93bklkPVwiZHJvcGRvd24tb3B0aW9uc1wiIFtkaXNhYmxlXT1cInBpY3R1cmUuZGVsZXRlZFwiPlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBsYWJlbD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtdmlld19fZHJvcGRvd24tb3B0aW9uc19fbGFiZWwgcm90YXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj4gPGkgY2xhc3M9XCJmYXIgZmEtZWxsaXBzaXMtaCBpcy1zaXplLTRcIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtY29udHJvbHM9XCJkcm9wZG93bi1tZW51XCI+IDwvaT4gPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIGl0ZW0+XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRvd25sb2FkSW1nKHBpY3R1cmUuZGlzcGxheV9uYW1lLCBwaWN0dXJlLmZpbGVfbmFtZSlcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtZG93bmxvYWQgZG93bmxvYWRcIj48L2k+Jm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgIDxwPnt7ICdJbWdNYW5hZ2VyLkltZ0xpc3QuZG93bmxvYWQnIHwgdHJhbnNsYXRlIH19PC9wPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIGl0ZW0+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJyZWRpcmVjdFRvVmlkZW8ocGljdHVyZSlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1wbGF5XCI+PC9pPiZuYnNwO1xyXG4gICAgICAgICAgICAgIDxwPnt7ICdJbWdNYW5hZ2VyLkltZ0VkaXRvci5BZGRWaWRlbycgfCB0cmFuc2xhdGUgfX08L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyIGl0ZW0+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJvbkVkaXQocGljdHVyZSlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS1jcm9wLWFsdCBlZGl0XCI+PC9pPiZuYnNwO1xyXG4gICAgICAgICAgICAgICAgPHA+e3sgJ0ltZ01hbmFnZXIuSW1nTGlzdC5lZGl0JyB8IHRyYW5zbGF0ZSB9fTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgaXRlbT5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImNvcHlJbWFnZUxpbmsocGljdHVyZS5maWxlX25hbWUpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXIgZmEtY29weSBjb3B5XCI+PC9pPiZuYnNwO1xyXG4gICAgICAgICAgICAgICAgPHA+e3sgJ0ltZ01hbmFnZXIuSW1nTGlzdC5MaW5rJyB8IHRyYW5zbGF0ZSB9fTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgaXRlbT5cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUmVtb3ZlSW1nKHBpY3R1cmUpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYWwgZmEtdGltZXMgZGVsZXRlZFwiPjwvaT4mbmJzcDtcclxuICAgICAgICAgICAgICAgIDxwPnt7ICdJbWdNYW5hZ2VyLkltZ0xpc3QucmVtb3ZlJyB8IHRyYW5zbGF0ZSB9fTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Ryb3Bkb3duPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvd3otdGFibGU+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -8,40 +8,71 @@ import * as i2 from "../../services/rename-picture.service";
8
8
  import * as i3 from "@angular/common";
9
9
  import * as i4 from "ngx-scrollbar";
10
10
  import * as i5 from "./info-section/info-section.component";
11
- import * as i6 from "./cropper/cropper.component";
12
- import * as i7 from "../../directives/loading.directive";
13
- import * as i8 from "@ngx-translate/core";
11
+ import * as i6 from "./info-video/info-video.component";
12
+ import * as i7 from "./show-iframe/show-iframe.component";
13
+ import * as i8 from "./cropper/cropper.component";
14
+ import * as i9 from "../../directives/loading.directive";
15
+ import * as i10 from "@ngx-translate/core";
14
16
  export class ImgEditorComponent {
15
17
  constructor(imgManagerService, renamePictureService) {
16
18
  this.imgManagerService = imgManagerService;
17
19
  this.renamePictureService = renamePictureService;
20
+ this._isVideoEdit = false;
18
21
  this.editClosed = new EventEmitter();
19
22
  this.isLoading = false;
20
23
  this.isImgModified = false;
21
24
  this.isNameModified = false;
22
25
  this.currentCroppedImage = ''; // Img modified return in base64 by the cropper
26
+ this.isEditorLinkActive = false;
27
+ this.isVideoModified = false;
23
28
  this.msgFailSave = 'ImgManager.ImgEditor.msgFailSave';
24
29
  this.msgFailLoad = 'ImgManager.ImgEditor.msgFailLoad';
25
30
  this.msgSuccessEdit = "Les modifications de l'image ont bien été enregistrées.";
26
31
  }
32
+ set isVideoEdit(value) {
33
+ this._isVideoEdit = value;
34
+ if (value === true) {
35
+ this.isEditorLinkActive = true;
36
+ }
37
+ }
38
+ get isVideoEdit() {
39
+ return this._isVideoEdit;
40
+ }
27
41
  ngOnInit() {
28
42
  this.previousName = this.imgToEdit.display_name;
43
+ this.previousVideoLink = this.imgToEdit.video_link;
29
44
  }
30
45
  onSave() {
31
46
  if (this.isLoading) {
32
47
  return;
33
48
  }
34
49
  this.isLoading = true;
35
- if (!this.isImgModified && !this.isNameModified) {
50
+ if (!this.isImgModified && !this.isNameModified && !this.isVideoModified) {
36
51
  this.isLoading = false;
37
52
  this.onEditClosed();
38
53
  }
39
54
  const obsReplaceImg = this.imgManagerService.replaceImg(this.currentCroppedImage, this.imgToEdit.id_file);
40
55
  const obsChangeImgName = this.renamePictureService.changeImageName(this.imgToEdit.display_name, this.imgToEdit.id_file);
56
+ const obsChangeVideoLink = this.renamePictureService.changeVideoLink(this.imgToEdit.video_link, this.imgToEdit.id_file);
41
57
  if (this.isImgModified && this.isNameModified) {
42
58
  this.renameAndReplaceImg(obsChangeImgName, obsReplaceImg);
43
59
  return;
44
60
  }
61
+ if (this.isVideoModified && !this.isImgModified && !this.isNameModified) {
62
+ obsChangeVideoLink.subscribe({
63
+ next: () => {
64
+ this.isLoading = false;
65
+ this.previousVideoLink = this.imgToEdit.video_link;
66
+ this.onEditClosed(this.msgSuccessEdit);
67
+ },
68
+ error: () => {
69
+ this.isLoading = false;
70
+ this.imgToEdit.video_link = this.previousVideoLink;
71
+ this.onEditClosed(this.msgFailSave);
72
+ }
73
+ });
74
+ return;
75
+ }
45
76
  if (this.isImgModified) {
46
77
  obsReplaceImg.subscribe({
47
78
  next: data => {
@@ -86,6 +117,10 @@ export class ImgEditorComponent {
86
117
  onImgCropped(imgBase64) {
87
118
  this.currentCroppedImage = imgBase64;
88
119
  }
120
+ onDeleteVideo() {
121
+ this.imgToEdit.video_link = null;
122
+ this.isVideoModified = true;
123
+ }
89
124
  renameAndReplaceImg(obsChangeImgName, obsReplaceImg) {
90
125
  // Avoid to use forkjoin, because it can create conflict and loose the img
91
126
  obsChangeImgName.subscribe({
@@ -106,19 +141,21 @@ export class ImgEditorComponent {
106
141
  }
107
142
  }
108
143
  ImgEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ImgEditorComponent, deps: [{ token: i1.ImgManagerService }, { token: i2.RenamePictureService }], target: i0.ɵɵFactoryTarget.Component });
109
- ImgEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ImgEditorComponent, selector: "img-editor", inputs: { stateDisplayed: "stateDisplayed", imgToEdit: "imgToEdit" }, outputs: { editClosed: "editClosed" }, ngImport: i0, template: "<div class=\"img-editor\" [@easeInOut]=\"'in'\">\r\n\r\n <!-- Button Action Section -->\r\n\r\n <div class=\"img-editor__infoSection__actions\">\r\n <div>\r\n <button\r\n type=\"button\"\r\n class=\"button img-editor__infoSection__actions__cancel\"\r\n (click)=\"onCancel()\"\r\n [disabled]=\"isLoading || (!isImgModified && !isNameModified)\"\r\n >\r\n {{ 'ImgManager.ImgLib.cancel' | translate }}\r\n </button>\r\n <div\r\n class=\"button danger button img-editor__infoSection__actions__save\"\r\n [ngClass]=\"{'img-editor__infoSection__actions__save--disable': isLoading}\"\r\n (click)=\"onSave()\"\r\n >\r\n {{ 'ImgManager.ImgEditor.saveBtn' | translate }}\r\n <span btnLoadingAnim *ngIf=\"isLoading\" class=\"btnLoadingAnnimation\"></span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <ng-scrollbar\r\n class=\"img-editor__scroll\"\r\n [ngClass]=\"{\r\n 'img-editor__scroll--full': stateDisplayed === 'full',\r\n 'img-editor__scroll--smallDisplay': stateDisplayed === 'small',\r\n 'img-editor__scroll--window': stateDisplayed === 'window'\r\n }\"\r\n >\r\n <div class=\"columns\">\r\n <!-- Left section -->\r\n <div class=\"column is-one-third img-editor__infoSection\">\r\n\r\n <info-section\r\n [imgToEdit]=\"imgToEdit\"\r\n [(isNameModified)]=\"isNameModified\"\r\n >\r\n </info-section>\r\n </div>\r\n\r\n\r\n <!-- Right section -->\r\n <div class=\"column img-editor__container\">\r\n <cropper\r\n [imgToEdit]=\"imgToEdit\"\r\n [(isImgModified)]=\"isImgModified\"\r\n (currentCroppedImageChange)=\"onImgCropped($event)\"\r\n (editClosed)=\"onEditClosed($event)\">\r\n </cropper>\r\n </div>\r\n </div>\r\n </ng-scrollbar>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.NgScrollbar, selector: "ng-scrollbar", inputs: ["disabled", "sensorDisabled", "pointerEventsDisabled", "viewportPropagateMouseMove", "autoHeightDisabled", "autoWidthDisabled", "viewClass", "trackClass", "thumbClass", "minThumbSize", "trackClickScrollDuration", "pointerEventsMethod", "track", "visibility", "appearance", "position", "sensorDebounce", "scrollAuditTime"], outputs: ["updated"], exportAs: ["ngScrollbar"] }, { kind: "component", type: i5.EditorInfoSectionComponent, selector: "info-section", inputs: ["imgToEdit", "isNameModified"], outputs: ["isNameModifiedChange"] }, { kind: "component", type: i6.CropperComponent, selector: "cropper", inputs: ["imgToEdit", "isImgModified"], outputs: ["isImgModifiedChange", "editClosed", "currentCroppedImageChange"] }, { kind: "directive", type: i7.LoadingDirective, selector: "[btnLoadingAnim]" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }], animations: [
144
+ ImgEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ImgEditorComponent, selector: "img-editor", inputs: { stateDisplayed: "stateDisplayed", imgToEdit: "imgToEdit", isVideoEdit: "isVideoEdit" }, outputs: { editClosed: "editClosed" }, ngImport: i0, template: "<div class=\"img-editor\" [@easeInOut]=\"'in'\">\r\n\r\n <!-- Button Action Section -->\r\n\r\n <div class=\"img-editor__infoSection__actions\">\r\n <div>\r\n <button\r\n type=\"button\"\r\n class=\"button img-editor__infoSection__actions__cancel\"\r\n (click)=\"onCancel()\"\r\n [disabled]=\"isLoading || (!isImgModified && !isNameModified)\"\r\n >\r\n {{ 'ImgManager.ImgLib.cancel' | translate }}\r\n </button>\r\n <div\r\n class=\"button danger button img-editor__infoSection__actions__save\"\r\n [ngClass]=\"{'img-editor__infoSection__actions__save--disable': isLoading}\"\r\n (click)=\"onSave()\"\r\n >\r\n {{ 'ImgManager.ImgEditor.saveBtn' | translate }}\r\n <span btnLoadingAnim *ngIf=\"isLoading\" class=\"btnLoadingAnnimation\"></span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <ng-scrollbar\r\n class=\"img-editor__scroll\"\r\n style=\"min-height: 500px\"\r\n [ngClass]=\"{\r\n 'img-editor__scroll--full': stateDisplayed === 'full',\r\n 'img-editor__scroll--smallDisplay': stateDisplayed === 'small',\r\n 'img-editor__scroll--window': stateDisplayed === 'window'\r\n }\"\r\n >\r\n\r\n <div class=\"columns\">\r\n <!-- Left section -->\r\n <div class=\"column is-one-third img-editor__infoSection\">\r\n\r\n <ul class=\"img-editorVideo__tabs\">\r\n <li [ngClass]=\"{'active': !isEditorLinkActive}\"><span (click)=\"isEditorLinkActive = false;\">{{ 'ImgManager.ImgLib.informations' | translate }}</span></li>\r\n <li [ngClass]=\"{'active': isEditorLinkActive}\"><span (click)=\"isEditorLinkActive = true;\">{{ 'ImgManager.ImgLib.associateVideo' | translate }}</span></li>\r\n </ul>\r\n\r\n <info-section\r\n *ngIf=\"!isEditorLinkActive\"\r\n [imgToEdit]=\"imgToEdit\"\r\n [(isNameModified)]=\"isNameModified\"\r\n >\r\n </info-section>\r\n <info-video\r\n *ngIf=\"isEditorLinkActive\"\r\n [(videoLink)]=\"imgToEdit.video_link\"\r\n [(isVideoModified)]=\"isVideoModified\"\r\n (deleteVideo)=\"onDeleteVideo()\">\r\n </info-video>\r\n </div>\r\n\r\n\r\n <!-- Right section -->\r\n <div class=\"column img-editor__container\">\r\n <cropper\r\n *ngIf=\"!isEditorLinkActive\"\r\n [imgToEdit]=\"imgToEdit\"\r\n [(isImgModified)]=\"isImgModified\"\r\n (currentCroppedImageChange)=\"onImgCropped($event)\"\r\n (editClosed)=\"onEditClosed($event)\">\r\n </cropper>\r\n <show-iframe\r\n style=\"display: block;width: 100%\"\r\n [videoLink]=\"imgToEdit.video_link\"\r\n *ngIf=\"isEditorLinkActive\">\r\n\r\n </show-iframe>\r\n </div>\r\n </div>\r\n </ng-scrollbar>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.NgScrollbar, selector: "ng-scrollbar", inputs: ["disabled", "sensorDisabled", "pointerEventsDisabled", "viewportPropagateMouseMove", "autoHeightDisabled", "autoWidthDisabled", "viewClass", "trackClass", "thumbClass", "minThumbSize", "trackClickScrollDuration", "pointerEventsMethod", "track", "visibility", "appearance", "position", "sensorDebounce", "scrollAuditTime"], outputs: ["updated"], exportAs: ["ngScrollbar"] }, { kind: "component", type: i5.EditorInfoSectionComponent, selector: "info-section", inputs: ["imgToEdit", "isNameModified"], outputs: ["isNameModifiedChange"] }, { kind: "component", type: i6.EditorInfoVideoComponent, selector: "info-video", inputs: ["videoLink", "isVideoModified"], outputs: ["videoLinkChange", "isVideoModifiedChange", "deleteVideo"] }, { kind: "component", type: i7.EditorShowIframeComponent, selector: "show-iframe", inputs: ["videoLink"] }, { kind: "component", type: i8.CropperComponent, selector: "cropper", inputs: ["imgToEdit", "isImgModified"], outputs: ["isImgModifiedChange", "editClosed", "currentCroppedImageChange"] }, { kind: "directive", type: i9.LoadingDirective, selector: "[btnLoadingAnim]" }, { kind: "pipe", type: i10.TranslatePipe, name: "translate" }], animations: [
110
145
  easeInOut
111
146
  ] });
112
147
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ImgEditorComponent, decorators: [{
113
148
  type: Component,
114
149
  args: [{ selector: 'img-editor', animations: [
115
150
  easeInOut
116
- ], template: "<div class=\"img-editor\" [@easeInOut]=\"'in'\">\r\n\r\n <!-- Button Action Section -->\r\n\r\n <div class=\"img-editor__infoSection__actions\">\r\n <div>\r\n <button\r\n type=\"button\"\r\n class=\"button img-editor__infoSection__actions__cancel\"\r\n (click)=\"onCancel()\"\r\n [disabled]=\"isLoading || (!isImgModified && !isNameModified)\"\r\n >\r\n {{ 'ImgManager.ImgLib.cancel' | translate }}\r\n </button>\r\n <div\r\n class=\"button danger button img-editor__infoSection__actions__save\"\r\n [ngClass]=\"{'img-editor__infoSection__actions__save--disable': isLoading}\"\r\n (click)=\"onSave()\"\r\n >\r\n {{ 'ImgManager.ImgEditor.saveBtn' | translate }}\r\n <span btnLoadingAnim *ngIf=\"isLoading\" class=\"btnLoadingAnnimation\"></span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <ng-scrollbar\r\n class=\"img-editor__scroll\"\r\n [ngClass]=\"{\r\n 'img-editor__scroll--full': stateDisplayed === 'full',\r\n 'img-editor__scroll--smallDisplay': stateDisplayed === 'small',\r\n 'img-editor__scroll--window': stateDisplayed === 'window'\r\n }\"\r\n >\r\n <div class=\"columns\">\r\n <!-- Left section -->\r\n <div class=\"column is-one-third img-editor__infoSection\">\r\n\r\n <info-section\r\n [imgToEdit]=\"imgToEdit\"\r\n [(isNameModified)]=\"isNameModified\"\r\n >\r\n </info-section>\r\n </div>\r\n\r\n\r\n <!-- Right section -->\r\n <div class=\"column img-editor__container\">\r\n <cropper\r\n [imgToEdit]=\"imgToEdit\"\r\n [(isImgModified)]=\"isImgModified\"\r\n (currentCroppedImageChange)=\"onImgCropped($event)\"\r\n (editClosed)=\"onEditClosed($event)\">\r\n </cropper>\r\n </div>\r\n </div>\r\n </ng-scrollbar>\r\n</div>\r\n" }]
151
+ ], template: "<div class=\"img-editor\" [@easeInOut]=\"'in'\">\r\n\r\n <!-- Button Action Section -->\r\n\r\n <div class=\"img-editor__infoSection__actions\">\r\n <div>\r\n <button\r\n type=\"button\"\r\n class=\"button img-editor__infoSection__actions__cancel\"\r\n (click)=\"onCancel()\"\r\n [disabled]=\"isLoading || (!isImgModified && !isNameModified)\"\r\n >\r\n {{ 'ImgManager.ImgLib.cancel' | translate }}\r\n </button>\r\n <div\r\n class=\"button danger button img-editor__infoSection__actions__save\"\r\n [ngClass]=\"{'img-editor__infoSection__actions__save--disable': isLoading}\"\r\n (click)=\"onSave()\"\r\n >\r\n {{ 'ImgManager.ImgEditor.saveBtn' | translate }}\r\n <span btnLoadingAnim *ngIf=\"isLoading\" class=\"btnLoadingAnnimation\"></span>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <ng-scrollbar\r\n class=\"img-editor__scroll\"\r\n style=\"min-height: 500px\"\r\n [ngClass]=\"{\r\n 'img-editor__scroll--full': stateDisplayed === 'full',\r\n 'img-editor__scroll--smallDisplay': stateDisplayed === 'small',\r\n 'img-editor__scroll--window': stateDisplayed === 'window'\r\n }\"\r\n >\r\n\r\n <div class=\"columns\">\r\n <!-- Left section -->\r\n <div class=\"column is-one-third img-editor__infoSection\">\r\n\r\n <ul class=\"img-editorVideo__tabs\">\r\n <li [ngClass]=\"{'active': !isEditorLinkActive}\"><span (click)=\"isEditorLinkActive = false;\">{{ 'ImgManager.ImgLib.informations' | translate }}</span></li>\r\n <li [ngClass]=\"{'active': isEditorLinkActive}\"><span (click)=\"isEditorLinkActive = true;\">{{ 'ImgManager.ImgLib.associateVideo' | translate }}</span></li>\r\n </ul>\r\n\r\n <info-section\r\n *ngIf=\"!isEditorLinkActive\"\r\n [imgToEdit]=\"imgToEdit\"\r\n [(isNameModified)]=\"isNameModified\"\r\n >\r\n </info-section>\r\n <info-video\r\n *ngIf=\"isEditorLinkActive\"\r\n [(videoLink)]=\"imgToEdit.video_link\"\r\n [(isVideoModified)]=\"isVideoModified\"\r\n (deleteVideo)=\"onDeleteVideo()\">\r\n </info-video>\r\n </div>\r\n\r\n\r\n <!-- Right section -->\r\n <div class=\"column img-editor__container\">\r\n <cropper\r\n *ngIf=\"!isEditorLinkActive\"\r\n [imgToEdit]=\"imgToEdit\"\r\n [(isImgModified)]=\"isImgModified\"\r\n (currentCroppedImageChange)=\"onImgCropped($event)\"\r\n (editClosed)=\"onEditClosed($event)\">\r\n </cropper>\r\n <show-iframe\r\n style=\"display: block;width: 100%\"\r\n [videoLink]=\"imgToEdit.video_link\"\r\n *ngIf=\"isEditorLinkActive\">\r\n\r\n </show-iframe>\r\n </div>\r\n </div>\r\n </ng-scrollbar>\r\n</div>\r\n" }]
117
152
  }], ctorParameters: function () { return [{ type: i1.ImgManagerService }, { type: i2.RenamePictureService }]; }, propDecorators: { stateDisplayed: [{
118
153
  type: Input
119
154
  }], imgToEdit: [{
120
155
  type: Input
156
+ }], isVideoEdit: [{
157
+ type: Input
121
158
  }], editClosed: [{
122
159
  type: Output
123
160
  }] } });
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1nLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93ei1pbWctbWFuYWdlci9zcmMvbGliL2NvbXBvbmVudHMvaW1nLWVkaXRvci9pbWctZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3d6LWltZy1tYW5hZ2VyL3NyYy9saWIvY29tcG9uZW50cy9pbWctZWRpdG9yL2ltZy1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFHOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7Ozs7O0FBUzdFLE1BQU0sT0FBTyxrQkFBa0I7SUFtQjdCLFlBQ1UsaUJBQW9DLEVBQ3BDLG9CQUEwQztRQUQxQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFkMUMsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFMUMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyx3QkFBbUIsR0FBVyxFQUFFLENBQUMsQ0FBQywrQ0FBK0M7UUFHakYsZ0JBQVcsR0FBVyxrQ0FBa0MsQ0FBQztRQUN6RCxnQkFBVyxHQUFXLGtDQUFrQyxDQUFDO1FBQ3pELG1CQUFjLEdBQVcseURBQXlELENBQUE7SUFLNUUsQ0FBQztJQUVQLFFBQVE7UUFD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QUMsQ0FBQztJQUN4QixDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQWlCO1FBQzVCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUM7SUFDdkMsQ0FBQztJQUVPLG1CQUFtQixDQUFDLGdCQUFpQyxFQUFFLGFBQThCO1FBQzNGLDBFQUEwRTtRQUMxRSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7WUFDekIsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFO2dCQUNYLGFBQWEsQ0FBQyxTQUFTLENBQUM7b0JBQ3RCLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRTt3QkFDWCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDekMsQ0FBQztvQkFDRCxLQUFLLEVBQUUsS0FBSyxDQUFDLEVBQUU7d0JBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQ3RDLENBQUM7aUJBQ0YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDYixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN0QyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7K0dBakhVLGtCQUFrQjttR0FBbEIsa0JBQWtCLCtKQ2QvQiw0L0RBMERBLCtvQ0RoRGM7UUFDVixTQUFTO0tBQ1Y7MkZBRVUsa0JBQWtCO2tCQVA5QixTQUFTOytCQUNFLFlBQVksY0FFVjt3QkFDVixTQUFTO3FCQUNWOzJJQUtELGNBQWM7c0JBRGIsS0FBSztnQkFHTixTQUFTO3NCQURSLEtBQUs7Z0JBR0ksVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEFmdGVyVmlld0luaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSW1nUGljdHVyZURUTyB9IGZyb20gJy4uLy4uL2R0by9pbWctbWFuYWdlci5kdG8nO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmb3JrSm9pbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBJbWdNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ltZy1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBlYXNlSW5PdXQgfSBmcm9tICcuLi8uLi9hbmltYXRpb25zL2Vhc2VJbk91dC9lYXNlLWluLW91dC5hbmltYXRpb24nO1xyXG5pbXBvcnQgeyBSZW5hbWVQaWN0dXJlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlbmFtZS1waWN0dXJlLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpbWctZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW1nLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgYW5pbWF0aW9uczogW1xyXG4gICAgZWFzZUluT3V0XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW1nRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KClcclxuICBzdGF0ZURpc3BsYXllZDtcclxuICBASW5wdXQoKVxyXG4gIGltZ1RvRWRpdDogSW1nUGljdHVyZURUTztcclxuXHJcbiAgQE91dHB1dCgpIGVkaXRDbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzSW1nTW9kaWZpZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc05hbWVNb2RpZmllZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGN1cnJlbnRDcm9wcGVkSW1hZ2U6IHN0cmluZyA9ICcnOyAvLyBJbWcgbW9kaWZpZWQgcmV0dXJuIGluIGJhc2U2NCBieSB0aGUgY3JvcHBlclxyXG4gIHByaXZhdGUgcHJldmlvdXNOYW1lOiBzdHJpbmc7XHJcblxyXG4gIG1zZ0ZhaWxTYXZlOiBzdHJpbmcgPSAnSW1nTWFuYWdlci5JbWdFZGl0b3IubXNnRmFpbFNhdmUnO1xyXG4gIG1zZ0ZhaWxMb2FkOiBzdHJpbmcgPSAnSW1nTWFuYWdlci5JbWdFZGl0b3IubXNnRmFpbExvYWQnO1xyXG4gIG1zZ1N1Y2Nlc3NFZGl0OiBzdHJpbmcgPSBcIkxlcyBtb2RpZmljYXRpb25zIGRlIGwnaW1hZ2Ugb250IGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llcy5cIlxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaW1nTWFuYWdlclNlcnZpY2U6IEltZ01hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZW5hbWVQaWN0dXJlU2VydmljZTogUmVuYW1lUGljdHVyZVNlcnZpY2VcclxuICAgICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5wcmV2aW91c05hbWUgPSB0aGlzLmltZ1RvRWRpdC5kaXNwbGF5X25hbWU7XHJcbiAgfVxyXG5cclxuICBvblNhdmUoKSB7XHJcbiAgICBpZiAodGhpcy5pc0xvYWRpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgIGlmICghdGhpcy5pc0ltZ01vZGlmaWVkICAmJiAhdGhpcy5pc05hbWVNb2RpZmllZCkge1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm9uRWRpdENsb3NlZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IG9ic1JlcGxhY2VJbWcgPSB0aGlzLmltZ01hbmFnZXJTZXJ2aWNlLnJlcGxhY2VJbWcodGhpcy5jdXJyZW50Q3JvcHBlZEltYWdlLCB0aGlzLmltZ1RvRWRpdC5pZF9maWxlKTtcclxuICAgIGNvbnN0IG9ic0NoYW5nZUltZ05hbWUgPSB0aGlzLnJlbmFtZVBpY3R1cmVTZXJ2aWNlLmNoYW5nZUltYWdlTmFtZSh0aGlzLmltZ1RvRWRpdC5kaXNwbGF5X25hbWUsIHRoaXMuaW1nVG9FZGl0LmlkX2ZpbGUpO1xyXG5cclxuICAgIGlmKHRoaXMuaXNJbWdNb2RpZmllZCAmJiB0aGlzLmlzTmFtZU1vZGlmaWVkKSB7XHJcbiAgICAgIHRoaXMucmVuYW1lQW5kUmVwbGFjZUltZyhvYnNDaGFuZ2VJbWdOYW1lLCBvYnNSZXBsYWNlSW1nKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHRoaXMuaXNJbWdNb2RpZmllZCl7XHJcbiAgICAgIG9ic1JlcGxhY2VJbWcuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiBkYXRhID0+IHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub25FZGl0Q2xvc2VkKHRoaXMubXNnU3VjY2Vzc0VkaXQpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50Q3JvcHBlZEltYWdlID0gJyc7XHJcbiAgICAgICAgdGhpcy5vbkVkaXRDbG9zZWQodGhpcy5tc2dGYWlsU2F2ZSk7XHJcbiAgICAgIH19KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlzTmFtZU1vZGlmaWVkKSB7XHJcbiAgICAgIG9ic0NoYW5nZUltZ05hbWUuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiBkYXRhID0+IHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucHJldmlvdXNOYW1lID0gdGhpcy5pbWdUb0VkaXQuZGlzcGxheV9uYW1lO1xyXG4gICAgICAgIHRoaXMub25FZGl0Q2xvc2VkKHRoaXMubXNnU3VjY2Vzc0VkaXQpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogZXJyb3IgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5pbWdUb0VkaXQuZGlzcGxheV9uYW1lID0gdGhpcy5wcmV2aW91c05hbWU7XHJcbiAgICAgICAgdGhpcy5vbkVkaXRDbG9zZWQodGhpcy5tc2dGYWlsU2F2ZSk7XHJcbiAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzTmFtZU1vZGlmaWVkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBvbkVkaXRDbG9zZWQobXNnS2V5Pzogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmVkaXRDbG9zZWQuZW1pdChtc2dLZXkpO1xyXG4gIH1cclxuXHJcbiAgb25SZXN0YXJ0RWRpdCgpIHtcclxuICAgIHRoaXMuaXNJbWdNb2RpZmllZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pc05hbWVNb2RpZmllZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5pbWdUb0VkaXQuZGlzcGxheV9uYW1lID0gdGhpcy5wcmV2aW91c05hbWU7XHJcbiAgfVxyXG5cclxuICBvbkNhbmNlbCgpIHtcclxuICAgIHRoaXMub25FZGl0Q2xvc2VkKCcnKTtcclxuICB9XHJcblxyXG4gIG9uSW1nQ3JvcHBlZChpbWdCYXNlNjQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5jdXJyZW50Q3JvcHBlZEltYWdlID0gaW1nQmFzZTY0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW5hbWVBbmRSZXBsYWNlSW1nKG9ic0NoYW5nZUltZ05hbWU6IE9ic2VydmFibGU8YW55Piwgb2JzUmVwbGFjZUltZzogT2JzZXJ2YWJsZTxhbnk+KSB7XHJcbiAgICAvLyBBdm9pZCB0byB1c2UgZm9ya2pvaW4sIGJlY2F1c2UgaXQgY2FuIGNyZWF0ZSBjb25mbGljdCBhbmQgbG9vc2UgdGhlIGltZ1xyXG4gICAgb2JzQ2hhbmdlSW1nTmFtZS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiByZXMxID0+IHtcclxuICAgICAgICBvYnNSZXBsYWNlSW1nLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiByZXMyID0+IHtcclxuICAgICAgICAgICAgdGhpcy5vbkVkaXRDbG9zZWQodGhpcy5tc2dTdWNjZXNzRWRpdCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZXJyb3I6IGVycm9yID0+IHtcclxuICAgICAgICAgICAgdGhpcy5vbkVkaXRDbG9zZWQodGhpcy5tc2dGYWlsU2F2ZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5vbkVkaXRDbG9zZWQodGhpcy5tc2dGYWlsU2F2ZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiaW1nLWVkaXRvclwiIFtAZWFzZUluT3V0XT1cIidpbidcIj5cclxuXHJcbiAgICA8IS0tIEJ1dHRvbiBBY3Rpb24gU2VjdGlvbiAtLT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiaW1nLWVkaXRvcl9faW5mb1NlY3Rpb25fX2FjdGlvbnNcIj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgIGNsYXNzPVwiYnV0dG9uIGltZy1lZGl0b3JfX2luZm9TZWN0aW9uX19hY3Rpb25zX19jYW5jZWxcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzTG9hZGluZyB8fCAoIWlzSW1nTW9kaWZpZWQgICYmICFpc05hbWVNb2RpZmllZClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7ICdJbWdNYW5hZ2VyLkltZ0xpYi5jYW5jZWwnIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gZGFuZ2VyIGJ1dHRvbiBpbWctZWRpdG9yX19pbmZvU2VjdGlvbl9fYWN0aW9uc19fc2F2ZVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J2ltZy1lZGl0b3JfX2luZm9TZWN0aW9uX19hY3Rpb25zX19zYXZlLS1kaXNhYmxlJzogaXNMb2FkaW5nfVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25TYXZlKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIHt7ICdJbWdNYW5hZ2VyLkltZ0VkaXRvci5zYXZlQnRuJyB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgPHNwYW4gYnRuTG9hZGluZ0FuaW0gKm5nSWY9XCJpc0xvYWRpbmdcIiBjbGFzcz1cImJ0bkxvYWRpbmdBbm5pbWF0aW9uXCI+PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bmctc2Nyb2xsYmFyXHJcbiAgICAgICAgY2xhc3M9XCJpbWctZWRpdG9yX19zY3JvbGxcIlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgJ2ltZy1lZGl0b3JfX3Njcm9sbC0tZnVsbCc6IHN0YXRlRGlzcGxheWVkID09PSAnZnVsbCcsXHJcbiAgICAgICAgICAgICdpbWctZWRpdG9yX19zY3JvbGwtLXNtYWxsRGlzcGxheSc6IHN0YXRlRGlzcGxheWVkID09PSAnc21hbGwnLFxyXG4gICAgICAgICAgICAnaW1nLWVkaXRvcl9fc2Nyb2xsLS13aW5kb3cnOiBzdGF0ZURpc3BsYXllZCA9PT0gJ3dpbmRvdydcclxuICAgICAgICB9XCJcclxuICAgID5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zXCI+XHJcbiAgICAgICAgPCEtLSBMZWZ0IHNlY3Rpb24gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1vbmUtdGhpcmQgaW1nLWVkaXRvcl9faW5mb1NlY3Rpb25cIj5cclxuXHJcbiAgICAgICAgICAgIDxpbmZvLXNlY3Rpb25cclxuICAgICAgICAgICAgICBbaW1nVG9FZGl0XT1cImltZ1RvRWRpdFwiXHJcbiAgICAgICAgICAgICAgWyhpc05hbWVNb2RpZmllZCldPVwiaXNOYW1lTW9kaWZpZWRcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9pbmZvLXNlY3Rpb24+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICA8IS0tIFJpZ2h0IHNlY3Rpb24gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpbWctZWRpdG9yX19jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGNyb3BwZXJcclxuICAgICAgICAgICAgICBbaW1nVG9FZGl0XT1cImltZ1RvRWRpdFwiXHJcbiAgICAgICAgICAgICAgWyhpc0ltZ01vZGlmaWVkKV09XCJpc0ltZ01vZGlmaWVkXCJcclxuICAgICAgICAgICAgICAoY3VycmVudENyb3BwZWRJbWFnZUNoYW5nZSk9XCJvbkltZ0Nyb3BwZWQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgKGVkaXRDbG9zZWQpPVwib25FZGl0Q2xvc2VkKCRldmVudClcIj5cclxuICAgICAgICAgICAgPC9jcm9wcGVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8L25nLXNjcm9sbGJhcj5cclxuPC9kaXY+XHJcbiJdfQ==
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1nLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93ei1pbWctbWFuYWdlci9zcmMvbGliL2NvbXBvbmVudHMvaW1nLWVkaXRvci9pbWctZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3d6LWltZy1tYW5hZ2VyL3NyYy9saWIvY29tcG9uZW50cy9pbWctZWRpdG9yL2ltZy1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFHOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7Ozs7Ozs7QUFTN0UsTUFBTSxPQUFPLGtCQUFrQjtJQW9DN0IsWUFDVSxpQkFBb0MsRUFDcEMsb0JBQTBDO1FBRDFDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQW5CNUMsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFbkIsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFFMUMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUNoQyx3QkFBbUIsR0FBVyxFQUFFLENBQUMsQ0FBQywrQ0FBK0M7UUFFakYsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBR2pDLGdCQUFXLEdBQVcsa0NBQWtDLENB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LEtBQUs7Z0JBR04sU0FBUztzQkFEUixLQUFLO2dCQUdGLFdBQVc7c0JBRGQsS0FBSztnQkFlSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBJbWdQaWN0dXJlRFRPIH0gZnJvbSAnLi4vLi4vZHRvL2ltZy1tYW5hZ2VyLmR0byc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEltZ01hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvaW1nLW1hbmFnZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IGVhc2VJbk91dCB9IGZyb20gJy4uLy4uL2FuaW1hdGlvbnMvZWFzZUluT3V0L2Vhc2UtaW4tb3V0LmFuaW1hdGlvbic7XHJcbmltcG9ydCB7IFJlbmFtZVBpY3R1cmVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVuYW1lLXBpY3R1cmUuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2ltZy1lZGl0b3InLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbWctZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBhbmltYXRpb25zOiBbXHJcbiAgICBlYXNlSW5PdXRcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbWdFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHN0YXRlRGlzcGxheWVkO1xyXG4gIEBJbnB1dCgpXHJcbiAgaW1nVG9FZGl0OiBJbWdQaWN0dXJlRFRPO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGlzVmlkZW9FZGl0KHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pc1ZpZGVvRWRpdCA9IHZhbHVlO1xyXG5cclxuICAgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmlzRWRpdG9yTGlua0FjdGl2ZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXQgaXNWaWRlb0VkaXQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNWaWRlb0VkaXQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pc1ZpZGVvRWRpdCA9IGZhbHNlO1xyXG5cclxuICBAT3V0cHV0KCkgZWRpdENsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNJbWdNb2RpZmllZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzTmFtZU1vZGlmaWVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgY3VycmVudENyb3BwZWRJbWFnZTogc3RyaW5nID0gJyc7IC8vIEltZyBtb2RpZmllZCByZXR1cm4gaW4gYmFzZTY0IGJ5IHRoZSBjcm9wcGVyXHJcbiAgcHJpdmF0ZSBwcmV2aW91c05hbWU6IHN0cmluZztcclxuICBpc0VkaXRvckxpbmtBY3RpdmUgPSBmYWxzZTtcclxuICBpc1ZpZGVvTW9kaWZpZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIHByZXZpb3VzVmlkZW9MaW5rOiBzdHJpbmc7XHJcblxyXG4gIG1zZ0ZhaWxTYXZlOiBzdHJpbmcgPSAnSW1nTWFuYWdlci5JbWdFZGl0b3IubXNnRmFpbFNhdmUnO1xyXG4gIG1zZ0ZhaWxMb2FkOiBzdHJpbmcgPSAnSW1nTWFuYWdlci5JbWdFZGl0b3IubXNnRmFpbExvYWQnO1xyXG4gIG1zZ1N1Y2Nlc3NFZGl0OiBzdHJpbmcgPSBcIkxlcyBtb2RpZmljYXRpb25zIGRlIGwnaW1hZ2Ugb250IGJpZW4gw6l0w6kgZW5yZWdpc3Ryw6llcy5cIlxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaW1nTWFuYWdlclNlcnZpY2U6IEltZ01hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZW5hbWVQaWN0dXJlU2VydmljZTogUmVuYW1lUGljdHVyZVNlcnZpY2VcclxuICAgICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5wcmV2aW91c05hbWUgPSB0aGlzLmltZ1RvRWRpdC5kaXNwbGF5X25hbWU7XHJcbiAgICB0aGlzLnByZXZpb3VzVmlkZW9MaW5rID0gdGhpcy5pbWdUb0VkaXQudmlkZW9fbGluaztcclxuICB9XHJcblxyXG4gIG9uU2F2ZSgpIHtcclxuICAgIGlmICh0aGlzLmlzTG9hZGluZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgaWYgKCF0aGlzLmlzSW1nTW9kaWZpZWQgJiYgIXRoaXMuaXNOYW1lTW9kaWZpZWQgJiYgIXRoaXMuaXNWaWRlb01vZGlmaWVkKSB7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMub25FZGl0Q2xvc2VkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgb2JzUmVwbGFjZUltZyA9IHRoaXMuaW1nTWFuYWdlclNlcnZpY2UucmVwbGFjZUltZyh0aGlzLmN1cnJlbnRDcm9wcGVkSW1hZ2UsIHRoaXMuaW1nVG9FZGl0LmlkX2ZpbGUpO1xyXG4gICAgY29uc3Qgb2JzQ2hhbmdlSW1nTmFtZSA9IHRoaXMucmVuYW1lUGljdHVyZVNlcnZpY2UuY2hhbmdlSW1hZ2VOYW1lKHRoaXMuaW1nVG9FZGl0LmRpc3BsYXlfbmFtZSwgdGhpcy5pbWdUb0VkaXQuaWRfZmlsZSk7XHJcbiAgICBjb25zdCBvYnNDaGFuZ2VWaWRlb0xpbmsgPSB0aGlzLnJlbmFtZVBpY3R1cmVTZXJ2aWNlLmNoYW5nZVZpZGVvTGluayhcclxuICAgICAgdGhpcy5pbWdUb0VkaXQudmlkZW9fbGluayxcclxuICAgICAgdGhpcy5pbWdUb0VkaXQuaWRfZmlsZVxyXG4gICAgKTtcclxuXHJcbiAgICBpZih0aGlzLmlzSW1nTW9kaWZpZWQgJiYgdGhpcy5pc05hbWVNb2RpZmllZCkge1xyXG4gICAgICB0aGlzLnJlbmFtZUFuZFJlcGxhY2VJbWcob2JzQ2hhbmdlSW1nTmFtZSwgb2JzUmVwbGFjZUltZyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5pc1ZpZGVvTW9kaWZpZWQgJiYgIXRoaXMuaXNJbWdNb2RpZmllZCAmJiAhdGhpcy5pc05hbWVNb2RpZmllZCkge1xyXG4gICAgICBvYnNDaGFuZ2VWaWRlb0xpbmsuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5wcmV2aW91c1ZpZGVvTGluayA9IHRoaXMuaW1nVG9FZGl0LnZpZGVvX2xpbms7XHJcbiAgICAgICAgICB0aGlzLm9uRWRpdENsb3NlZCh0aGlzLm1zZ1N1Y2Nlc3NFZGl0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pbWdUb0VkaXQudmlkZW9fbGluayA9IHRoaXMucHJldmlvdXNWaWRlb0xpbms7XHJcbiAgICAgICAgICB0aGlzLm9uRWRpdENsb3NlZCh0aGlzLm1zZ0ZhaWxTYXZlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYodGhpcy5pc0ltZ01vZGlmaWVkKXtcclxuICAgICAgb2JzUmVwbGFjZUltZy5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IGRhdGEgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5vbkVkaXRDbG9zZWQodGhpcy5tc2dTdWNjZXNzRWRpdCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRDcm9wcGVkSW1hZ2UgPSAnJztcclxuICAgICAgICB0aGlzLm9uRWRpdENsb3NlZCh0aGlzLm1zZ0ZhaWxTYXZlKTtcclxuICAgICAgfX0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNOYW1lTW9kaWZpZWQpIHtcclxuICAgICAgb2JzQ2hhbmdlSW1nTmFtZS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IGRhdGEgPT4ge1xyXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5wcmV2aW91c05hbWUgPSB0aGlzLmltZ1RvRWRpdC5kaXNwbGF5X25hbWU7XHJcbiAgICAgICAgdGhpcy5vbkVkaXRDbG9zZWQodGhpcy5tc2dTdWNjZXNzRWRpdCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiBlcnJvciA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmltZ1RvRWRpdC5kaXNwbGF5X25hbWUgPSB0aGlzLnByZXZpb3VzTmFtZTtcclxuICAgICAgICB0aGlzLm9uRWRpdENsb3NlZCh0aGlzLm1zZ0ZhaWxTYXZlKTtcclxuICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNOYW1lTW9kaWZpZWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIG9uRWRpdENsb3NlZChtc2dLZXk/OiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZWRpdENsb3NlZC5lbWl0KG1zZ0tleSk7XHJcbiAgfVxyXG5cclxuICBvblJlc3RhcnRFZGl0KCkge1xyXG4gICAgdGhpcy5pc0ltZ01vZGlmaWVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzTmFtZU1vZGlmaWVkID0gZmFsc2U7XHJcbiAgICB0aGlzLmltZ1RvRWRpdC5kaXNwbGF5X25hbWUgPSB0aGlzLnByZXZpb3VzTmFtZTtcclxuICB9XHJcblxyXG4gIG9uQ2FuY2VsKCkge1xyXG4gICAgdGhpcy5vbkVkaXRDbG9zZWQoJycpO1xyXG4gIH1cclxuXHJcbiAgb25JbWdDcm9wcGVkKGltZ0Jhc2U2NDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRDcm9wcGVkSW1hZ2UgPSBpbWdCYXNlNjQ7XHJcbiAgfVxyXG5cclxuICBvbkRlbGV0ZVZpZGVvKCkge1xyXG4gICAgdGhpcy5pbWdUb0VkaXQudmlkZW9fbGluayA9IG51bGw7XHJcbiAgICB0aGlzLmlzVmlkZW9Nb2RpZmllZCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlbmFtZUFuZFJlcGxhY2VJbWcob2JzQ2hhbmdlSW1nTmFtZTogT2JzZXJ2YWJsZTxhbnk+LCBvYnNSZXBsYWNlSW1nOiBPYnNlcnZhYmxlPGFueT4pIHtcclxuICAgIC8vIEF2b2lkIHRvIHVzZSBmb3Jram9pbiwgYmVjYXVzZSBpdCBjYW4gY3JlYXRlIGNvbmZsaWN0IGFuZCBsb29zZSB0aGUgaW1nXHJcbiAgICBvYnNDaGFuZ2VJbWdOYW1lLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IHJlczEgPT4ge1xyXG4gICAgICAgIG9ic1JlcGxhY2VJbWcuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6IHJlczIgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm9uRWRpdENsb3NlZCh0aGlzLm1zZ1N1Y2Nlc3NFZGl0KTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm9uRWRpdENsb3NlZCh0aGlzLm1zZ0ZhaWxTYXZlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IGVycm9yID0+IHtcclxuICAgICAgICB0aGlzLm9uRWRpdENsb3NlZCh0aGlzLm1zZ0ZhaWxTYXZlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJpbWctZWRpdG9yXCIgW0BlYXNlSW5PdXRdPVwiJ2luJ1wiPlxyXG5cclxuICAgIDwhLS0gQnV0dG9uIEFjdGlvbiBTZWN0aW9uIC0tPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJpbWctZWRpdG9yX19pbmZvU2VjdGlvbl9fYWN0aW9uc1wiPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gaW1nLWVkaXRvcl9faW5mb1NlY3Rpb25fX2FjdGlvbnNfX2NhbmNlbFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwib25DYW5jZWwoKVwiXHJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nIHx8ICghaXNJbWdNb2RpZmllZCAgJiYgIWlzTmFtZU1vZGlmaWVkKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgJ0ltZ01hbmFnZXIuSW1nTGliLmNhbmNlbCcgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImJ1dHRvbiBkYW5nZXIgYnV0dG9uIGltZy1lZGl0b3JfX2luZm9TZWN0aW9uX19hY3Rpb25zX19zYXZlXCJcclxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaW1nLWVkaXRvcl9faW5mb1NlY3Rpb25fX2FjdGlvbnNfX3NhdmUtLWRpc2FibGUnOiBpc0xvYWRpbmd9XCJcclxuICAgICAgICAgIChjbGljayk9XCJvblNhdmUoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAge3sgJ0ltZ01hbmFnZXIuSW1nRWRpdG9yLnNhdmVCdG4nIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICA8c3BhbiBidG5Mb2FkaW5nQW5pbSAqbmdJZj1cImlzTG9hZGluZ1wiIGNsYXNzPVwiYnRuTG9hZGluZ0FubmltYXRpb25cIj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxuZy1zY3JvbGxiYXJcclxuICAgICAgICBjbGFzcz1cImltZy1lZGl0b3JfX3Njcm9sbFwiXHJcbiAgICAgICAgc3R5bGU9XCJtaW4taGVpZ2h0OiA1MDBweFwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAnaW1nLWVkaXRvcl9fc2Nyb2xsLS1mdWxsJzogc3RhdGVEaXNwbGF5ZWQgPT09ICdmdWxsJyxcclxuICAgICAgICAgICAgJ2ltZy1lZGl0b3JfX3Njcm9sbC0tc21hbGxEaXNwbGF5Jzogc3RhdGVEaXNwbGF5ZWQgPT09ICdzbWFsbCcsXHJcbiAgICAgICAgICAgICdpbWctZWRpdG9yX19zY3JvbGwtLXdpbmRvdyc6IHN0YXRlRGlzcGxheWVkID09PSAnd2luZG93J1xyXG4gICAgICAgIH1cIlxyXG4gICAgPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5zXCI+XHJcbiAgICAgICAgPCEtLSBMZWZ0IHNlY3Rpb24gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpcy1vbmUtdGhpcmQgaW1nLWVkaXRvcl9faW5mb1NlY3Rpb25cIj5cclxuXHJcbiAgICAgICAgICA8dWwgY2xhc3M9XCJpbWctZWRpdG9yVmlkZW9fX3RhYnNcIj5cclxuICAgICAgICAgICAgPGxpIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogIWlzRWRpdG9yTGlua0FjdGl2ZX1cIj48c3BhbiAoY2xpY2spPVwiaXNFZGl0b3JMaW5rQWN0aXZlID0gZmFsc2U7XCI+e3sgJ0ltZ01hbmFnZXIuSW1nTGliLmluZm9ybWF0aW9ucycgfCB0cmFuc2xhdGUgfX08L3NwYW4+PC9saT5cclxuICAgICAgICAgICAgPGxpIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNFZGl0b3JMaW5rQWN0aXZlfVwiPjxzcGFuIChjbGljayk9XCJpc0VkaXRvckxpbmtBY3RpdmUgPSB0cnVlO1wiPnt7ICdJbWdNYW5hZ2VyLkltZ0xpYi5hc3NvY2lhdGVWaWRlbycgfCB0cmFuc2xhdGUgfX08L3NwYW4+PC9saT5cclxuICAgICAgICAgIDwvdWw+XHJcblxyXG4gICAgICAgICAgICA8aW5mby1zZWN0aW9uXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCIhaXNFZGl0b3JMaW5rQWN0aXZlXCJcclxuICAgICAgICAgICAgICBbaW1nVG9FZGl0XT1cImltZ1RvRWRpdFwiXHJcbiAgICAgICAgICAgICAgWyhpc05hbWVNb2RpZmllZCldPVwiaXNOYW1lTW9kaWZpZWRcIlxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPC9pbmZvLXNlY3Rpb24+XHJcbiAgICAgICAgICAgPGluZm8tdmlkZW9cclxuICAgICAgICAgICAgICpuZ0lmPVwiaXNFZGl0b3JMaW5rQWN0aXZlXCJcclxuICAgICAgICAgICAgIFsodmlkZW9MaW5rKV09XCJpbWdUb0VkaXQudmlkZW9fbGlua1wiXHJcbiAgICAgICAgICAgICBbKGlzVmlkZW9Nb2RpZmllZCldPVwiaXNWaWRlb01vZGlmaWVkXCJcclxuICAgICAgICAgICAgIChkZWxldGVWaWRlbyk9XCJvbkRlbGV0ZVZpZGVvKClcIj5cclxuICAgICAgICAgICA8L2luZm8tdmlkZW8+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICA8IS0tIFJpZ2h0IHNlY3Rpb24gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbHVtbiBpbWctZWRpdG9yX19jb250YWluZXJcIj5cclxuICAgICAgICAgICAgPGNyb3BwZXJcclxuICAgICAgICAgICAgICAqbmdJZj1cIiFpc0VkaXRvckxpbmtBY3RpdmVcIlxyXG4gICAgICAgICAgICAgIFtpbWdUb0VkaXRdPVwiaW1nVG9FZGl0XCJcclxuICAgICAgICAgICAgICBbKGlzSW1nTW9kaWZpZWQpXT1cImlzSW1nTW9kaWZpZWRcIlxyXG4gICAgICAgICAgICAgIChjdXJyZW50Q3JvcHBlZEltYWdlQ2hhbmdlKT1cIm9uSW1nQ3JvcHBlZCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAoZWRpdENsb3NlZCk9XCJvbkVkaXRDbG9zZWQoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8L2Nyb3BwZXI+XHJcbiAgICAgICAgICA8c2hvdy1pZnJhbWVcclxuICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBibG9jazt3aWR0aDogMTAwJVwiXHJcbiAgICAgICAgICAgIFt2aWRlb0xpbmtdPVwiaW1nVG9FZGl0LnZpZGVvX2xpbmtcIlxyXG4gICAgICAgICAgICAqbmdJZj1cImlzRWRpdG9yTGlua0FjdGl2ZVwiPlxyXG5cclxuICAgICAgICAgIDwvc2hvdy1pZnJhbWU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwvbmctc2Nyb2xsYmFyPlxyXG48L2Rpdj5cclxuIl19
@@ -0,0 +1,62 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import { VideoInfoService } from "../../../services/video-info.service";
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../../services/video-info.service";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "@angular/forms";
7
+ import * as i4 from "@ngx-translate/core";
8
+ export class EditorInfoVideoComponent {
9
+ constructor(videoInfoService) {
10
+ this.videoInfoService = videoInfoService;
11
+ this.videoLink = '';
12
+ this.videoLinkChange = new EventEmitter();
13
+ this.isVideoModified = false;
14
+ this.isVideoModifiedChange = new EventEmitter();
15
+ this.deleteVideo = new EventEmitter();
16
+ this.videoDuration = '';
17
+ this.videoPublishDate = '';
18
+ }
19
+ ngOnInit() {
20
+ this.loadVideoInfos();
21
+ }
22
+ onVideoLinkChange(value) {
23
+ this.videoLink = value;
24
+ this.videoLinkChange.emit(value);
25
+ this.isVideoModifiedChange.emit(true);
26
+ this.loadVideoInfos();
27
+ }
28
+ loadVideoInfos() {
29
+ const obs = this.videoInfoService.getVideoInfo(this.videoLink);
30
+ if (!obs) {
31
+ this.videoDuration = '';
32
+ this.videoPublishDate = '';
33
+ return;
34
+ }
35
+ obs.subscribe(data => {
36
+ if (!data)
37
+ return;
38
+ this.videoDuration = data.duration;
39
+ this.videoPublishDate = data.publishDate;
40
+ });
41
+ }
42
+ onDelete() {
43
+ this.deleteVideo.emit();
44
+ }
45
+ }
46
+ EditorInfoVideoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: EditorInfoVideoComponent, deps: [{ token: i1.VideoInfoService }], target: i0.ɵɵFactoryTarget.Component });
47
+ EditorInfoVideoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: EditorInfoVideoComponent, selector: "info-video", inputs: { videoLink: "videoLink", isVideoModified: "isVideoModified" }, outputs: { videoLinkChange: "videoLinkChange", isVideoModifiedChange: "isVideoModifiedChange", deleteVideo: "deleteVideo" }, ngImport: i0, template: "<div class=\"info-video\">\r\n <div class=\"info-video__wrapper\">\r\n\r\n <div class=\"info-video__wrapper__top\">\r\n <label for=\"input-video\">\r\n {{ 'ImgManager.ImgEditor.UrlVideo' | translate }}\r\n <i class=\"fa-solid fa-circle-info\"></i>\r\n </label>\r\n\r\n <input\r\n type=\"text\"\r\n id=\"input-video\"\r\n [ngModel]=\"videoLink\"\r\n (ngModelChange)=\"onVideoLinkChange($event)\"\r\n />\r\n\r\n <span>{{ 'ImgManager.ImgEditor.tooltipsIframe' | translate }}</span>\r\n </div>\r\n\r\n <a *ngIf=\"videoLink\" (click)=\"onDelete()\">{{ 'ImgManager.ImgEditor.deleteVideo' | translate }}</a>\r\n </div>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] });
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: EditorInfoVideoComponent, decorators: [{
49
+ type: Component,
50
+ args: [{ selector: 'info-video', template: "<div class=\"info-video\">\r\n <div class=\"info-video__wrapper\">\r\n\r\n <div class=\"info-video__wrapper__top\">\r\n <label for=\"input-video\">\r\n {{ 'ImgManager.ImgEditor.UrlVideo' | translate }}\r\n <i class=\"fa-solid fa-circle-info\"></i>\r\n </label>\r\n\r\n <input\r\n type=\"text\"\r\n id=\"input-video\"\r\n [ngModel]=\"videoLink\"\r\n (ngModelChange)=\"onVideoLinkChange($event)\"\r\n />\r\n\r\n <span>{{ 'ImgManager.ImgEditor.tooltipsIframe' | translate }}</span>\r\n </div>\r\n\r\n <a *ngIf=\"videoLink\" (click)=\"onDelete()\">{{ 'ImgManager.ImgEditor.deleteVideo' | translate }}</a>\r\n </div>\r\n</div>\r\n" }]
51
+ }], ctorParameters: function () { return [{ type: i1.VideoInfoService }]; }, propDecorators: { videoLink: [{
52
+ type: Input
53
+ }], videoLinkChange: [{
54
+ type: Output
55
+ }], isVideoModified: [{
56
+ type: Input
57
+ }], isVideoModifiedChange: [{
58
+ type: Output
59
+ }], deleteVideo: [{
60
+ type: Output
61
+ }] } });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby12aWRlby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93ei1pbWctbWFuYWdlci9zcmMvbGliL2NvbXBvbmVudHMvaW1nLWVkaXRvci9pbmZvLXZpZGVvL2luZm8tdmlkZW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd3otaW1nLW1hbmFnZXIvc3JjL2xpYi9jb21wb25lbnRzL2ltZy1lZGl0b3IvaW5mby12aWRlby9pbmZvLXZpZGVvLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sc0NBQXNDLENBQUM7Ozs7OztBQU10RSxNQUFNLE9BQU8sd0JBQXdCO0lBYW5DLFlBQW9CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBWDdDLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFDdEIsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRTlDLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2hDLDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFFcEQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWpELGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBQzNCLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztJQUUyQixDQUFDO0lBRTFELFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGlCQUFpQixDQUFDLEtBQWE7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFFdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvRCxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1IsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztZQUMzQixPQUFPO1NBQ1I7UUFFRCxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ25CLElBQUksQ0FBQyxJQUFJO2dCQUFFLE9BQU87WUFDbEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQ25DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7O3FIQTdDVSx3QkFBd0I7eUdBQXhCLHdCQUF3Qix1UENQckMsaXNCQXNCQTsyRkRmYSx3QkFBd0I7a0JBSnBDLFNBQVM7K0JBQ0UsWUFBWTt1R0FLYixTQUFTO3NCQUFqQixLQUFLO2dCQUNJLGVBQWU7c0JBQXhCLE1BQU07Z0JBRUUsZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBRUcsV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtWaWRlb0luZm9TZXJ2aWNlfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdmlkZW8taW5mby5zZXJ2aWNlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2luZm8tdmlkZW8nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pbmZvLXZpZGVvLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRWRpdG9ySW5mb1ZpZGVvQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgQElucHV0KCkgdmlkZW9MaW5rOiBzdHJpbmcgPSAnJztcclxuICBAT3V0cHV0KCkgdmlkZW9MaW5rQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIEBJbnB1dCgpIGlzVmlkZW9Nb2RpZmllZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBPdXRwdXQoKSBpc1ZpZGVvTW9kaWZpZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIEBPdXRwdXQoKSBkZWxldGVWaWRlbyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgdmlkZW9EdXJhdGlvbjogc3RyaW5nID0gJyc7XHJcbiAgdmlkZW9QdWJsaXNoRGF0ZTogc3RyaW5nID0gJyc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdmlkZW9JbmZvU2VydmljZTogVmlkZW9JbmZvU2VydmljZSkge31cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmxvYWRWaWRlb0luZm9zKCk7XHJcbiAgfVxyXG5cclxuICBvblZpZGVvTGlua0NoYW5nZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnZpZGVvTGluayA9IHZhbHVlO1xyXG5cclxuICAgIHRoaXMudmlkZW9MaW5rQ2hhbmdlLmVtaXQodmFsdWUpO1xyXG4gICAgdGhpcy5pc1ZpZGVvTW9kaWZpZWRDaGFuZ2UuZW1pdCh0cnVlKTtcclxuXHJcbiAgICB0aGlzLmxvYWRWaWRlb0luZm9zKCk7XHJcbiAgfVxyXG5cclxuICBsb2FkVmlkZW9JbmZvcygpIHtcclxuICAgIGNvbnN0IG9icyA9IHRoaXMudmlkZW9JbmZvU2VydmljZS5nZXRWaWRlb0luZm8odGhpcy52aWRlb0xpbmspO1xyXG4gICAgaWYgKCFvYnMpIHtcclxuICAgICAgdGhpcy52aWRlb0R1cmF0aW9uID0gJyc7XHJcbiAgICAgIHRoaXMudmlkZW9QdWJsaXNoRGF0ZSA9ICcnO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgb2JzLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgaWYgKCFkYXRhKSByZXR1cm47XHJcbiAgICAgIHRoaXMudmlkZW9EdXJhdGlvbiA9IGRhdGEuZHVyYXRpb247XHJcbiAgICAgIHRoaXMudmlkZW9QdWJsaXNoRGF0ZSA9IGRhdGEucHVibGlzaERhdGU7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uRGVsZXRlKCkge1xyXG4gICAgdGhpcy5kZWxldGVWaWRlby5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJpbmZvLXZpZGVvXCI+XHJcbiAgPGRpdiBjbGFzcz1cImluZm8tdmlkZW9fX3dyYXBwZXJcIj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5mby12aWRlb19fd3JhcHBlcl9fdG9wXCI+XHJcbiAgICAgIDxsYWJlbCBmb3I9XCJpbnB1dC12aWRlb1wiPlxyXG4gICAgICAgIHt7ICdJbWdNYW5hZ2VyLkltZ0VkaXRvci5VcmxWaWRlbycgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWNpcmNsZS1pbmZvXCI+PC9pPlxyXG4gICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgIGlkPVwiaW5wdXQtdmlkZW9cIlxyXG4gICAgICAgIFtuZ01vZGVsXT1cInZpZGVvTGlua1wiXHJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25WaWRlb0xpbmtDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgIC8+XHJcblxyXG4gICAgICA8c3Bhbj57eyAnSW1nTWFuYWdlci5JbWdFZGl0b3IudG9vbHRpcHNJZnJhbWUnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGEgKm5nSWY9XCJ2aWRlb0xpbmtcIiAoY2xpY2spPVwib25EZWxldGUoKVwiPnt7ICdJbWdNYW5hZ2VyLkltZ0VkaXRvci5kZWxldGVWaWRlbycgfCB0cmFuc2xhdGUgfX08L2E+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -0,0 +1,105 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { DomSanitizer } from '@angular/platform-browser';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/platform-browser";
5
+ import * as i2 from "@angular/common";
6
+ import * as i3 from "@ngx-translate/core";
7
+ export class EditorShowIframeComponent {
8
+ constructor(sanitizer) {
9
+ this.sanitizer = sanitizer;
10
+ this.videoLink = '';
11
+ this.safeUrl = null;
12
+ }
13
+ ngOnChanges() {
14
+ this.safeUrl = this.buildSafeIframeUrl(this.videoLink);
15
+ }
16
+ buildSafeIframeUrl(url) {
17
+ if (!url)
18
+ return null;
19
+ if (this.isYouTubeUrl(url)) {
20
+ const { videoId, playlistId } = this.extractYouTubeIds(url);
21
+ if (!videoId && playlistId) {
22
+ const embed = `https://www.youtube.com/embed/videoseries?list=${encodeURIComponent(playlistId)}`;
23
+ return this.sanitizer.bypassSecurityTrustResourceUrl(embed);
24
+ }
25
+ if (!videoId)
26
+ return null;
27
+ const base = `https://www.youtube.com/embed/${encodeURIComponent(videoId)}`;
28
+ const params = new URLSearchParams();
29
+ params.set('playsinline', '1');
30
+ if (playlistId)
31
+ params.set('list', playlistId);
32
+ const embed = params.toString() ? `${base}?${params.toString()}` : base;
33
+ return this.sanitizer.bypassSecurityTrustResourceUrl(embed);
34
+ }
35
+ // --- Vimeo
36
+ if (url.includes('vimeo.com')) {
37
+ const videoId = this.extractVimeoId(url);
38
+ if (!videoId)
39
+ return null;
40
+ const embed = `https://player.vimeo.com/video/${encodeURIComponent(videoId)}`;
41
+ return this.sanitizer.bypassSecurityTrustResourceUrl(embed);
42
+ }
43
+ return null;
44
+ }
45
+ isYouTubeUrl(url) {
46
+ try {
47
+ const u = new URL(url);
48
+ return (u.hostname === 'youtu.be' ||
49
+ u.hostname.endsWith('youtube.com') ||
50
+ u.hostname.endsWith('youtube-nocookie.com'));
51
+ }
52
+ catch {
53
+ return url.includes('youtube.com') || url.includes('youtu.be') || url.includes('youtube-nocookie.com');
54
+ }
55
+ }
56
+ extractYouTubeIds(rawUrl) {
57
+ try {
58
+ const url = new URL(rawUrl);
59
+ const host = url.hostname.toLowerCase();
60
+ const playlistId = url.searchParams.get('list');
61
+ if (host === 'youtu.be') {
62
+ const id = url.pathname.split('/').filter(Boolean)[0] ?? null;
63
+ return { videoId: id, playlistId };
64
+ }
65
+ const v = url.searchParams.get('v');
66
+ if (v)
67
+ return { videoId: v, playlistId };
68
+ const parts = url.pathname.split('/').filter(Boolean); // e.g. ["shorts","NquBrAU-iY8"]
69
+ const idx = parts.findIndex(p => p === 'shorts' || p === 'embed');
70
+ if (idx !== -1 && parts[idx + 1]) {
71
+ return { videoId: parts[idx + 1], playlistId };
72
+ }
73
+ const liveIdx = parts.findIndex(p => p === 'live');
74
+ if (liveIdx !== -1 && parts[liveIdx + 1]) {
75
+ return { videoId: parts[liveIdx + 1], playlistId };
76
+ }
77
+ if (parts[0] === 'playlist' && playlistId) {
78
+ return { videoId: null, playlistId };
79
+ }
80
+ return { videoId: null, playlistId };
81
+ }
82
+ catch {
83
+ const playlistMatch = rawUrl.match(/[?&]list=([^&#]+)/);
84
+ const playlistId = playlistMatch ? decodeURIComponent(playlistMatch[1]) : null;
85
+ const regExp = /^.*(youtu\.be\/|v=|embed\/|shorts\/|live\/)([^#&?\/]+).*/;
86
+ const match = rawUrl.match(regExp);
87
+ const videoId = match && match[2] ? match[2] : null;
88
+ return { videoId, playlistId };
89
+ }
90
+ }
91
+ extractVimeoId(url) {
92
+ const regExp = /vimeo\.com\/(?:video\/)?(\d+)/;
93
+ const match = url.match(regExp);
94
+ return match ? match[1] : null;
95
+ }
96
+ }
97
+ EditorShowIframeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: EditorShowIframeComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
98
+ EditorShowIframeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: EditorShowIframeComponent, selector: "show-iframe", inputs: { videoLink: "videoLink" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"show-iframe\" *ngIf=\"safeUrl\">\r\n <div class=\"video-container\">\r\n <iframe\r\n [src]=\"safeUrl\"\r\n frameborder=\"0\"\r\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\r\n allowfullscreen>\r\n </iframe>\r\n </div>\r\n</div>\r\n\r\n<div class=\"show-iframe__none\" *ngIf=\"!safeUrl\">\r\n <p>{{ 'ImgManager.ImgEditor.NoVideo' | translate }}</p>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] });
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: EditorShowIframeComponent, decorators: [{
100
+ type: Component,
101
+ args: [{ selector: 'show-iframe', template: "<div class=\"show-iframe\" *ngIf=\"safeUrl\">\r\n <div class=\"video-container\">\r\n <iframe\r\n [src]=\"safeUrl\"\r\n frameborder=\"0\"\r\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\r\n allowfullscreen>\r\n </iframe>\r\n </div>\r\n</div>\r\n\r\n<div class=\"show-iframe__none\" *ngIf=\"!safeUrl\">\r\n <p>{{ 'ImgManager.ImgEditor.NoVideo' | translate }}</p>\r\n</div>\r\n" }]
102
+ }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; }, propDecorators: { videoLink: [{
103
+ type: Input
104
+ }] } });
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvdy1pZnJhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd3otaW1nLW1hbmFnZXIvc3JjL2xpYi9jb21wb25lbnRzL2ltZy1lZGl0b3Ivc2hvdy1pZnJhbWUvc2hvdy1pZnJhbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd3otaW1nLW1hbmFnZXIvc3JjL2xpYi9jb21wb25lbnRzL2ltZy1lZGl0b3Ivc2hvdy1pZnJhbWUvc2hvdy1pZnJhbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBbUIsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7QUFNMUUsTUFBTSxPQUFPLHlCQUF5QjtJQUlwQyxZQUFvQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBSGxDLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFDaEMsWUFBTyxHQUEyQixJQUFJLENBQUM7SUFFTyxDQUFDO0lBRS9DLFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEdBQVc7UUFDcEMsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLElBQUksQ0FBQztRQUV0QixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDMUIsTUFBTSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFNUQsSUFBSSxDQUFDLE9BQU8sSUFBSSxVQUFVLEVBQUU7Z0JBQzFCLE1BQU0sS0FBSyxHQUFH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QUMsQ0FBQyxJQUFJLENBQUM7WUFFL0UsTUFBTSxNQUFNLEdBQUcsMERBQTBELENBQUM7WUFDMUUsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuQyxNQUFNLE9BQU8sR0FBRyxLQUFLLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUVwRCxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVPLGNBQWMsQ0FBQyxHQUFXO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLCtCQUErQixDQUFDO1FBQy9DLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pDLENBQUM7O3NIQXhHVSx5QkFBeUI7MEdBQXpCLHlCQUF5Qiw0R0NQdEMsd2RBY0E7MkZEUGEseUJBQXlCO2tCQUpyQyxTQUFTOytCQUNFLGFBQWE7bUdBSWQsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaG93LWlmcmFtZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Nob3ctaWZyYW1lLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRWRpdG9yU2hvd0lmcmFtZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XHJcbiAgQElucHV0KCkgdmlkZW9MaW5rOiBzdHJpbmcgPSAnJztcclxuICBzYWZlVXJsOiBTYWZlUmVzb3VyY2VVcmwgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikge31cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLnNhZmVVcmwgPSB0aGlzLmJ1aWxkU2FmZUlmcmFtZVVybCh0aGlzLnZpZGVvTGluayk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkU2FmZUlmcmFtZVVybCh1cmw6IHN0cmluZyk6IFNhZmVSZXNvdXJjZVVybCB8IG51bGwge1xyXG4gICAgaWYgKCF1cmwpIHJldHVybiBudWxsO1xyXG5cclxuICAgIGlmICh0aGlzLmlzWW91VHViZVVybCh1cmwpKSB7XHJcbiAgICAgIGNvbnN0IHsgdmlkZW9JZCwgcGxheWxpc3RJZCB9ID0gdGhpcy5leHRyYWN0WW91VHViZUlkcyh1cmwpO1xyXG5cclxuICAgICAgaWYgKCF2aWRlb0lkICYmIHBsYXlsaXN0SWQpIHtcclxuICAgICAgICBjb25zdCBlbWJlZCA9IGBodHRwczovL3d3dy55b3V0dWJlLmNvbS9lbWJlZC92aWRlb3Nlcmllcz9saXN0PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHBsYXlsaXN0SWQpfWA7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybChlbWJlZCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICghdmlkZW9JZCkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICBjb25zdCBiYXNlID0gYGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHZpZGVvSWQpfWA7XHJcbiAgICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcclxuICAgICAgcGFyYW1zLnNldCgncGxheXNpbmxpbmUnLCAnMScpO1xyXG4gICAgICBpZiAocGxheWxpc3RJZCkgcGFyYW1zLnNldCgnbGlzdCcsIHBsYXlsaXN0SWQpO1xyXG5cclxuICAgICAgY29uc3QgZW1iZWQgPSBwYXJhbXMudG9TdHJpbmcoKSA/IGAke2Jhc2V9PyR7cGFyYW1zLnRvU3RyaW5nKCl9YCA6IGJhc2U7XHJcbiAgICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoZW1iZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIC0tLSBWaW1lb1xyXG4gICAgaWYgKHVybC5pbmNsdWRlcygndmltZW8uY29tJykpIHtcclxuICAgICAgY29uc3QgdmlkZW9JZCA9IHRoaXMuZXh0cmFjdFZpbWVvSWQodXJsKTtcclxuICAgICAgaWYgKCF2aWRlb0lkKSByZXR1cm4gbnVsbDtcclxuXHJcbiAgICAgIGNvbnN0IGVtYmVkID0gYGh0dHBzOi8vcGxheWVyLnZpbWVvLmNvbS92aWRlby8ke2VuY29kZVVSSUNvbXBvbmVudCh2aWRlb0lkKX1gO1xyXG4gICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKGVtYmVkKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaXNZb3VUdWJlVXJsKHVybDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB1ID0gbmV3IFVSTCh1cmwpO1xyXG4gICAgICByZXR1cm4gKFxyXG4gICAgICAgIHUuaG9zdG5hbWUgPT09ICd5b3V0dS5iZScgfHxcclxuICAgICAgICB1Lmhvc3RuYW1lLmVuZHNXaXRoKCd5b3V0dWJlLmNvbScpIHx8XHJcbiAgICAgICAgdS5ob3N0bmFtZS5lbmRzV2l0aCgneW91dHViZS1ub2Nvb2tpZS5jb20nKVxyXG4gICAgICApO1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIHJldHVybiB1cmwuaW5jbHVkZXMoJ3lvdXR1YmUuY29tJykgfHwgdXJsLmluY2x1ZGVzKCd5b3V0dS5iZScpIHx8IHVybC5pbmNsdWRlcygneW91dHViZS1ub2Nvb2tpZS5jb20nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXh0cmFjdFlvdVR1YmVJZHMocmF3VXJsOiBzdHJpbmcpOiB7IHZpZGVvSWQ6IHN0cmluZyB8IG51bGw7IHBsYXlsaXN0SWQ6IHN0cmluZyB8IG51bGwgfSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHJhd1VybCk7XHJcbiAgICAgIGNvbnN0IGhvc3QgPSB1cmwuaG9zdG5hbWUudG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAgIGNvbnN0IHBsYXlsaXN0SWQgPSB1cmwuc2VhcmNoUGFyYW1zLmdldCgnbGlzdCcpO1xyXG5cclxuICAgICAgaWYgKGhvc3QgPT09ICd5b3V0dS5iZScpIHtcclxuICAgICAgICBjb25zdCBpZCA9IHVybC5wYXRobmFtZS5zcGxpdCgnLycpLmZpbHRlcihCb29sZWFuKVswXSA/PyBudWxsO1xyXG4gICAgICAgIHJldHVybiB7IHZpZGVvSWQ6IGlkLCBwbGF5bGlzdElkIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHYgPSB1cmwuc2VhcmNoUGFyYW1zLmdldCgndicpO1xyXG4gICAgICBpZiAodikgcmV0dXJuIHsgdmlkZW9JZDogdiwgcGxheWxpc3RJZCB9O1xyXG5cclxuICAgICAgY29uc3QgcGFydHMgPSB1cmwucGF0aG5hbWUuc3BsaXQoJy8nKS5maWx0ZXIoQm9vbGVhbik7IC8vIGUuZy4gW1wic2hvcnRzXCIsXCJOcXVCckFVLWlZOFwiXVxyXG4gICAgICBjb25zdCBpZHggPSBwYXJ0cy5maW5kSW5kZXgocCA9PiBwID09PSAnc2hvcnRzJyB8fCBwID09PSAnZW1iZWQnKTtcclxuICAgICAgaWYgKGlkeCAhPT0gLTEgJiYgcGFydHNbaWR4ICsgMV0pIHtcclxuICAgICAgICByZXR1cm4geyB2aWRlb0lkOiBwYXJ0c1tpZHggKyAxXSwgcGxheWxpc3RJZCB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBsaXZlSWR4ID0gcGFydHMuZmluZEluZGV4KHAgPT4gcCA9PT0gJ2xpdmUnKTtcclxuICAgICAgaWYgKGxpdmVJZHggIT09IC0xICYmIHBhcnRzW2xpdmVJZHggKyAxXSkge1xyXG4gICAgICAgIHJldHVybiB7IHZpZGVvSWQ6IHBhcnRzW2xpdmVJZHggKyAxXSwgcGxheWxpc3RJZCB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAocGFydHNbMF0gPT09ICdwbGF5bGlzdCcgJiYgcGxheWxpc3RJZCkge1xyXG4gICAgICAgIHJldHVybiB7IHZpZGVvSWQ6IG51bGwsIHBsYXlsaXN0SWQgfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHsgdmlkZW9JZDogbnVsbCwgcGxheWxpc3RJZCB9O1xyXG4gICAgfSBjYXRjaCB7XHJcbiAgICAgIGNvbnN0IHBsYXlsaXN0TWF0Y2ggPSByYXdVcmwubWF0Y2goL1s/Jl1saXN0PShbXiYjXSspLyk7XHJcbiAgICAgIGNvbnN0IHBsYXlsaXN0SWQgPSBwbGF5bGlzdE1hdGNoID8gZGVjb2RlVVJJQ29tcG9uZW50KHBsYXlsaXN0TWF0Y2hbMV0pIDogbnVsbDtcclxuXHJcbiAgICAgIGNvbnN0IHJlZ0V4cCA9IC9eLiooeW91dHVcXC5iZVxcL3x2PXxlbWJlZFxcL3xzaG9ydHNcXC98bGl2ZVxcLykoW14jJj9cXC9dKykuKi87XHJcbiAgICAgIGNvbnN0IG1hdGNoID0gcmF3VXJsLm1hdGNoKHJlZ0V4cCk7XHJcbiAgICAgIGNvbnN0IHZpZGVvSWQgPSBtYXRjaCAmJiBtYXRjaFsyXSA/IG1hdGNoWzJdIDogbnVsbDtcclxuXHJcbiAgICAgIHJldHVybiB7IHZpZGVvSWQsIHBsYXlsaXN0SWQgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZXh0cmFjdFZpbWVvSWQodXJsOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGNvbnN0IHJlZ0V4cCA9IC92aW1lb1xcLmNvbVxcLyg/OnZpZGVvXFwvKT8oXFxkKykvO1xyXG4gICAgY29uc3QgbWF0Y2ggPSB1cmwubWF0Y2gocmVnRXhwKTtcclxuICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzFdIDogbnVsbDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInNob3ctaWZyYW1lXCIgKm5nSWY9XCJzYWZlVXJsXCI+XHJcbiAgPGRpdiBjbGFzcz1cInZpZGVvLWNvbnRhaW5lclwiPlxyXG4gICAgPGlmcmFtZVxyXG4gICAgICBbc3JjXT1cInNhZmVVcmxcIlxyXG4gICAgICBmcmFtZWJvcmRlcj1cIjBcIlxyXG4gICAgICBhbGxvdz1cImFjY2VsZXJvbWV0ZXI7IGF1dG9wbGF5OyBjbGlwYm9hcmQtd3JpdGU7IGVuY3J5cHRlZC1tZWRpYTsgZ3lyb3Njb3BlOyBwaWN0dXJlLWluLXBpY3R1cmU7IHdlYi1zaGFyZVwiXHJcbiAgICAgIGFsbG93ZnVsbHNjcmVlbj5cclxuICAgIDwvaWZyYW1lPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJzaG93LWlmcmFtZV9fbm9uZVwiICpuZ0lmPVwiIXNhZmVVcmxcIj5cclxuICA8cD57eyAnSW1nTWFuYWdlci5JbWdFZGl0b3IuTm9WaWRlbycgfCB0cmFuc2xhdGUgfX08L3A+XHJcbjwvZGl2PlxyXG4iXX0=