@wizishop/img-manager 15.2.60 → 15.2.62

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 (36) 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 +1 -4
  6. package/esm2020/lib/components/images-view/mosaic-view/img-card/img-card.component.mjs +3 -3
  7. package/esm2020/lib/components/images-view/table-view/table-view.component.mjs +3 -3
  8. package/esm2020/lib/components/img-editor/img-editor.component.mjs +7 -44
  9. package/esm2020/lib/components/img-tabs/img-tabs.component.mjs +3 -12
  10. package/esm2020/lib/dto/img-manager.dto.mjs +1 -1
  11. package/esm2020/lib/services/api.service.mjs +1 -1
  12. package/esm2020/lib/services/img-event.service.mjs +1 -8
  13. package/esm2020/lib/services/rename-picture.service.mjs +1 -4
  14. package/esm2020/lib/wz-img-manager.module.mjs +1 -7
  15. package/fesm2015/wizishop-img-manager.mjs +9 -258
  16. package/fesm2015/wizishop-img-manager.mjs.map +1 -1
  17. package/fesm2020/wizishop-img-manager.mjs +9 -257
  18. package/fesm2020/wizishop-img-manager.mjs.map +1 -1
  19. package/lib/components/images-view/images-actions-handler.d.ts +0 -1
  20. package/lib/components/img-editor/img-editor.component.d.ts +1 -8
  21. package/lib/components/img-tabs/img-tabs.component.d.ts +0 -1
  22. package/lib/dto/img-manager.dto.d.ts +0 -1
  23. package/lib/services/api.service.d.ts +0 -1
  24. package/lib/services/img-event.service.d.ts +0 -3
  25. package/lib/services/rename-picture.service.d.ts +0 -1
  26. package/lib/wz-img-manager.module.d.ts +44 -46
  27. package/package.json +1 -1
  28. package/wizishop-img-manager-15.2.62.tgz +0 -0
  29. package/wz-img-manager.scss +2 -183
  30. package/esm2020/lib/components/img-editor/info-video/info-video.component.mjs +0 -62
  31. package/esm2020/lib/components/img-editor/show-iframe/show-iframe.component.mjs +0 -54
  32. package/esm2020/lib/services/video-info.service.mjs +0 -87
  33. package/lib/components/img-editor/info-video/info-video.component.d.ts +0 -20
  34. package/lib/components/img-editor/show-iframe/show-iframe.component.d.ts +0 -15
  35. package/lib/services/video-info.service.d.ts +0 -23
  36. package/wizishop-img-manager-15.2.60.tgz +0 -0
@@ -44,7 +44,6 @@ export declare abstract class ImagesActionHandler {
44
44
  /** Event emit each time filters change */
45
45
  onFiltersChange(): void;
46
46
  onEdit(picture: ImgPictureDTO): void;
47
- redirectToVideo(picture: ImgPictureDTO): void;
48
47
  copyLink(file_name: string): void;
49
48
  onToggleSelectImg(index: number): void;
50
49
  onRemoveImg(picture: ImgPictureDTO): void;
@@ -8,18 +8,12 @@ export declare class ImgEditorComponent implements OnInit {
8
8
  private renamePictureService;
9
9
  stateDisplayed: any;
10
10
  imgToEdit: ImgPictureDTO;
11
- set isVideoEdit(value: boolean);
12
- get isVideoEdit(): boolean;
13
- private _isVideoEdit;
14
11
  editClosed: EventEmitter<any>;
15
12
  isLoading: boolean;
16
13
  isImgModified: boolean;
17
14
  isNameModified: boolean;
18
15
  currentCroppedImage: string;
19
16
  private previousName;
20
- isEditorLinkActive: boolean;
21
- isVideoModified: boolean;
22
- private previousVideoLink;
23
17
  msgFailSave: string;
24
18
  msgFailLoad: string;
25
19
  msgSuccessEdit: string;
@@ -30,8 +24,7 @@ export declare class ImgEditorComponent implements OnInit {
30
24
  onRestartEdit(): void;
31
25
  onCancel(): void;
32
26
  onImgCropped(imgBase64: string): void;
33
- onDeleteVideo(): void;
34
27
  private renameAndReplaceImg;
35
28
  static ɵfac: i0.ɵɵFactoryDeclaration<ImgEditorComponent, never>;
36
- static ɵcmp: i0.ɵɵComponentDeclaration<ImgEditorComponent, "img-editor", never, { "stateDisplayed": "stateDisplayed"; "imgToEdit": "imgToEdit"; "isVideoEdit": "isVideoEdit"; }, { "editClosed": "editClosed"; }, never, never, false, never>;
29
+ static ɵcmp: i0.ɵɵComponentDeclaration<ImgEditorComponent, "img-editor", never, { "stateDisplayed": "stateDisplayed"; "imgToEdit": "imgToEdit"; }, { "editClosed": "editClosed"; }, never, never, false, never>;
37
30
  }
@@ -23,7 +23,6 @@ export declare class ImgTabsComponent implements OnInit {
23
23
  editTab: boolean;
24
24
  imgToEdit: ImgPictureDTO;
25
25
  imgUpload: boolean;
26
- isVideoEdit: boolean;
27
26
  imgUploadedComponent: UploadListComponent;
28
27
  snackBarNewVersionConfig: NwbSnackbarConfig;
29
28
  constructor(imgEventEditService: ImgEventService, alertService: AlertService, route: Router);
@@ -18,7 +18,6 @@ export interface ImgPictureDTO {
18
18
  delSelected?: boolean;
19
19
  deleted?: boolean;
20
20
  imgNotLoaded?: boolean;
21
- video_link?: string;
22
21
  }
23
22
  export interface ImgPicturesDTO {
24
23
  data: ImgPictureDTO[];
@@ -21,7 +21,6 @@ export declare abstract class ApiService {
21
21
  abstract uploadFileByUrl(url: string, fileName?: string): Observable<ImgPictureDTO>;
22
22
  abstract replaceImg(imageBase64: string, id_file: string): Observable<ImgPictureDTO>;
23
23
  abstract changeImgName(fileName: string, id_file: string): Observable<ImgPictureDTO>;
24
- abstract changeVideoLink(videoLink: string, id_file: string): Observable<ImgPictureDTO>;
25
24
  abstract removeImg(id_file: string): Observable<ImgPictureDTO>;
26
25
  abstract removeMultipleImg(id_array: string[]): Observable<ImgPictureDTO[]>;
27
26
  static ɵfac: i0.ɵɵFactoryDeclaration<ApiService, never>;
@@ -4,13 +4,10 @@ import * as i0 from "@angular/core";
4
4
  export declare class ImgEventService {
5
5
  imgRemoved$: BehaviorSubject<string>;
6
6
  private imgToEditEvent;
7
- private imgToVideoEvent;
8
7
  private imgAdded;
9
8
  private listDisplayedChange;
10
9
  emitImgToEdit(imgToEdit: ImgPictureDTO): void;
11
- emitImgToVideo(imgToEdit: ImgPictureDTO): void;
12
10
  getImgToEditEventListener(): import("rxjs").Observable<ImgPictureDTO>;
13
- getImgToVideoEventListener(): import("rxjs").Observable<ImgPictureDTO>;
14
11
  emitImgAdded(id_file: string): void;
15
12
  getImgAddedEventListner(): import("rxjs").Observable<string>;
16
13
  emitlistDisplayedChange(value: boolean): void;
@@ -14,7 +14,6 @@ export declare class RenamePictureService {
14
14
  private msgImgNameSaved;
15
15
  constructor(apiService: ApiService, alertService: AlertService, imgManagerService: ImgManagerService);
16
16
  setPicturesList(picturesList: ImgPictureDTO[]): void;
17
- changeVideoLink(videoLink: string, idFile: string): import("rxjs").Observable<ImgPictureDTO>;
18
17
  renamePicture(pictureNameUpdate: PictureNameUpdate): void;
19
18
  changeImageName(name: string, idFile: string): import("rxjs").Observable<ImgPictureDTO>;
20
19
  private getPictureById;
@@ -8,54 +8,52 @@ import * as i5 from "./components/images-view/mosaic-view/img-card/img-card.comp
8
8
  import * as i6 from "./components/upload-list/upload-list.component";
9
9
  import * as i7 from "./components/img-editor/img-editor.component";
10
10
  import * as i8 from "./components/img-editor/info-section/info-section.component";
11
- import * as i9 from "./components/img-editor/info-video/info-video.component";
12
- import * as i10 from "./components/img-editor/show-iframe/show-iframe.component";
13
- import * as i11 from "./components/canva-btn/canva-btn.component";
14
- import * as i12 from "./components/img-selection/img-selection.component";
15
- import * as i13 from "./components/loader/loader.component";
16
- import * as i14 from "./components/shared/dropdown/dropdown.component";
17
- import * as i15 from "./components/img-editor/cropper/cropper.component";
18
- import * as i16 from "./components/images-view/images-view.component";
19
- import * as i17 from "./components/images-view/mosaic-view/mosaic-view.component";
20
- import * as i18 from "./components/images-view/table-view/table-view.component";
21
- import * as i19 from "./components/shared/table/table.component";
22
- import * as i20 from "./components/shared/input-search/input-search.component";
23
- import * as i21 from "./components/shared/pagination/pagination.component";
24
- import * as i22 from "./components/shared/checkbox/checkbox.component";
25
- import * as i23 from "./components/shared/alert/alert.component";
26
- import * as i24 from "./components/shared/pagination/page-selector/page-selector.component";
27
- import * as i25 from "./components/shared/select/select.component";
28
- import * as i26 from "./directives/drag-drop.directive";
29
- import * as i27 from "./directives/loading.directive";
30
- import * as i28 from "./directives/auto-hide.directive";
31
- import * as i29 from "./directives/copy-to-clipboard.directive";
32
- import * as i30 from "./directives/table/column.directive";
33
- import * as i31 from "./directives/table/checkBoxRow.directive";
34
- import * as i32 from "./directives/table/columnHeader.directive";
35
- import * as i33 from "./directives/table/raw.directive";
36
- import * as i34 from "./directives/abstract-debounce/abstract-debounce.directive";
37
- import * as i35 from "./directives/abstract-debounce/debounce-keyup.directive";
38
- import * as i36 from "./directives/zindex-toggle.directive";
39
- import * as i37 from "./pipes/pagination/array-total-pages/array-pages.pipe";
40
- import * as i38 from "./pipes/pagination/total-pages/is-last-page.pipe";
41
- import * as i39 from "./pipes/pagination/text/custom-text.pipe";
42
- import * as i40 from "./pipes/images/img-src.pipe";
43
- import * as i41 from "./pipes/number-to-array.pipe";
44
- import * as i42 from "./pipes/pagination/large-number-of-page/large-number-of-page.pipe";
45
- import * as i43 from "./pipes/select/select-filters.pipe";
46
- import * as i44 from "@angular/common";
47
- import * as i45 from "@angular/common/http";
48
- import * as i46 from "@angular/forms";
49
- import * as i47 from "ngx-scrollbar";
50
- import * as i48 from "ngx-scrollbar/reached-event";
51
- import * as i49 from "@wizishop/ng-wizi-bulma";
52
- import * as i50 from "ngx-image-cropper";
53
- import * as i51 from "@angular/cdk/table";
54
- import * as i52 from "@angular/cdk/drag-drop";
55
- import * as i53 from "@ngx-translate/core";
11
+ import * as i9 from "./components/canva-btn/canva-btn.component";
12
+ import * as i10 from "./components/img-selection/img-selection.component";
13
+ import * as i11 from "./components/loader/loader.component";
14
+ import * as i12 from "./components/shared/dropdown/dropdown.component";
15
+ import * as i13 from "./components/img-editor/cropper/cropper.component";
16
+ import * as i14 from "./components/images-view/images-view.component";
17
+ import * as i15 from "./components/images-view/mosaic-view/mosaic-view.component";
18
+ import * as i16 from "./components/images-view/table-view/table-view.component";
19
+ import * as i17 from "./components/shared/table/table.component";
20
+ import * as i18 from "./components/shared/input-search/input-search.component";
21
+ import * as i19 from "./components/shared/pagination/pagination.component";
22
+ import * as i20 from "./components/shared/checkbox/checkbox.component";
23
+ import * as i21 from "./components/shared/alert/alert.component";
24
+ import * as i22 from "./components/shared/pagination/page-selector/page-selector.component";
25
+ import * as i23 from "./components/shared/select/select.component";
26
+ import * as i24 from "./directives/drag-drop.directive";
27
+ import * as i25 from "./directives/loading.directive";
28
+ import * as i26 from "./directives/auto-hide.directive";
29
+ import * as i27 from "./directives/copy-to-clipboard.directive";
30
+ import * as i28 from "./directives/table/column.directive";
31
+ import * as i29 from "./directives/table/checkBoxRow.directive";
32
+ import * as i30 from "./directives/table/columnHeader.directive";
33
+ import * as i31 from "./directives/table/raw.directive";
34
+ import * as i32 from "./directives/abstract-debounce/abstract-debounce.directive";
35
+ import * as i33 from "./directives/abstract-debounce/debounce-keyup.directive";
36
+ import * as i34 from "./directives/zindex-toggle.directive";
37
+ import * as i35 from "./pipes/pagination/array-total-pages/array-pages.pipe";
38
+ import * as i36 from "./pipes/pagination/total-pages/is-last-page.pipe";
39
+ import * as i37 from "./pipes/pagination/text/custom-text.pipe";
40
+ import * as i38 from "./pipes/images/img-src.pipe";
41
+ import * as i39 from "./pipes/number-to-array.pipe";
42
+ import * as i40 from "./pipes/pagination/large-number-of-page/large-number-of-page.pipe";
43
+ import * as i41 from "./pipes/select/select-filters.pipe";
44
+ import * as i42 from "@angular/common";
45
+ import * as i43 from "@angular/common/http";
46
+ import * as i44 from "@angular/forms";
47
+ import * as i45 from "ngx-scrollbar";
48
+ import * as i46 from "ngx-scrollbar/reached-event";
49
+ import * as i47 from "@wizishop/ng-wizi-bulma";
50
+ import * as i48 from "ngx-image-cropper";
51
+ import * as i49 from "@angular/cdk/table";
52
+ import * as i50 from "@angular/cdk/drag-drop";
53
+ import * as i51 from "@ngx-translate/core";
56
54
  export declare class WzImgManagerModule {
57
55
  static withConfig(ApiService: Provider, ImageNotFoundProvider?: Provider): ModuleWithProviders<WzImgManagerModule>;
58
56
  static ɵfac: i0.ɵɵFactoryDeclaration<WzImgManagerModule, never>;
59
- static ɵmod: i0.ɵɵNgModuleDeclaration<WzImgManagerModule, [typeof i1.WzImgManagerComponent, typeof i2.ImgTabsComponent, typeof i3.ImgUploadComponent, typeof i4.PexelLibComponent, typeof i5.ImgCardComponent, typeof i6.UploadListComponent, typeof i7.ImgEditorComponent, typeof i8.EditorInfoSectionComponent, typeof i9.EditorInfoVideoComponent, typeof i10.EditorShowIframeComponent, typeof i11.CanvaBtnComponent, typeof i12.ImgSelectionComponent, typeof i13.LoaderComponent, typeof i14.DropdownComponent, typeof i15.CropperComponent, typeof i16.ImagesViewComponent, typeof i17.MosaicViewComponent, typeof i18.TableViewComponent, typeof i19.TableComponent, typeof i20.InputSearchComponent, typeof i21.PaginationComponent, typeof i22.CheckboxComponent, typeof i23.AlertComponent, typeof i24.PageSelectorComponent, typeof i25.SelectComponent, typeof i26.DragDropDirective, typeof i27.LoadingDirective, typeof i28.AutoHideDirective, typeof i29.CopyClipboardDirective, typeof i30.TableColumn, typeof i31.CheckBoxRow, typeof i32.TableColumnHeader, typeof i33.TableRow, typeof i34.AbstractDebounceDirective, typeof i35.DebounceKeyupDirective, typeof i36.ZindexToggleDirective, typeof i37.PagniationArrayTotalPages, typeof i38.PagniationIsLastPage, typeof i39.PagniationText, typeof i40.ImageSrcPipe, typeof i41.NumberToArray, typeof i42.LargeNumberOfPagePipe, typeof i43.SelectFiltersPipe], [typeof i44.CommonModule, typeof i45.HttpClientModule, typeof i46.FormsModule, typeof i47.NgScrollbarModule, typeof i48.NgScrollbarReachedModule, typeof i49.NwbAllModule, typeof i50.ImageCropperModule, typeof i51.CdkTableModule, typeof i52.DragDropModule, typeof i53.TranslateModule], [typeof i1.WzImgManagerComponent]>;
57
+ static ɵmod: i0.ɵɵNgModuleDeclaration<WzImgManagerModule, [typeof i1.WzImgManagerComponent, typeof i2.ImgTabsComponent, typeof i3.ImgUploadComponent, typeof i4.PexelLibComponent, typeof i5.ImgCardComponent, typeof i6.UploadListComponent, typeof i7.ImgEditorComponent, typeof i8.EditorInfoSectionComponent, typeof i9.CanvaBtnComponent, typeof i10.ImgSelectionComponent, typeof i11.LoaderComponent, typeof i12.DropdownComponent, typeof i13.CropperComponent, typeof i14.ImagesViewComponent, typeof i15.MosaicViewComponent, typeof i16.TableViewComponent, typeof i17.TableComponent, typeof i18.InputSearchComponent, typeof i19.PaginationComponent, typeof i20.CheckboxComponent, typeof i21.AlertComponent, typeof i22.PageSelectorComponent, typeof i23.SelectComponent, typeof i24.DragDropDirective, typeof i25.LoadingDirective, typeof i26.AutoHideDirective, typeof i27.CopyClipboardDirective, typeof i28.TableColumn, typeof i29.CheckBoxRow, typeof i30.TableColumnHeader, typeof i31.TableRow, typeof i32.AbstractDebounceDirective, typeof i33.DebounceKeyupDirective, typeof i34.ZindexToggleDirective, typeof i35.PagniationArrayTotalPages, typeof i36.PagniationIsLastPage, typeof i37.PagniationText, typeof i38.ImageSrcPipe, typeof i39.NumberToArray, typeof i40.LargeNumberOfPagePipe, typeof i41.SelectFiltersPipe], [typeof i42.CommonModule, typeof i43.HttpClientModule, typeof i44.FormsModule, typeof i45.NgScrollbarModule, typeof i46.NgScrollbarReachedModule, typeof i47.NwbAllModule, typeof i48.ImageCropperModule, typeof i49.CdkTableModule, typeof i50.DragDropModule, typeof i51.TranslateModule], [typeof i1.WzImgManagerComponent]>;
60
58
  static ɵinj: i0.ɵɵInjectorDeclaration<WzImgManagerModule>;
61
59
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wizishop/img-manager",
3
- "version": "15.2.60",
3
+ "version": "15.2.62",
4
4
  "description": "The best and the most beautiful image manager.",
5
5
  "repository": {
6
6
  "type": "git",
Binary file
@@ -1336,10 +1336,6 @@ $tag-radius: rem(20px)!default;
1336
1336
  padding: 0;
1337
1337
  margin: 0 rem(30) 0 0;
1338
1338
 
1339
- &, * {
1340
- box-sizing: border-box;
1341
- }
1342
-
1343
1339
  &__propertyEditable {
1344
1340
  margin-bottom: 31px;
1345
1341
  p {
@@ -1472,31 +1468,6 @@ $tag-radius: rem(20px)!default;
1472
1468
  .wz-img-manager .marginBottom {
1473
1469
  margin-bottom: 20px;
1474
1470
  }
1475
-
1476
- .img-editorVideo__tabs {
1477
- display: flex;
1478
- justify-content: flex-start;
1479
- align-items: center;
1480
- gap: 20px;
1481
- list-style-type: none;
1482
- width: 100%;
1483
- margin: 0 0 30px;
1484
- li {
1485
- cursor: pointer;
1486
- padding-bottom: 8px;
1487
- font-size: rem(14);
1488
- color: $img-second-color;
1489
- border-bottom: 1px solid transparent;
1490
- transition: .3s ease;
1491
- &:hover {
1492
- color: $main-text;
1493
- }
1494
- &.active {
1495
- color: $main-text;
1496
- border-bottom: 1px solid $img-main-color;
1497
- }
1498
- }
1499
- }
1500
1471
  // Warning: in webcomponent (for wizishop-com project) the following style are added by styles-handler.js script (hard-coded)
1501
1472
  .wz-img-manager .img-selection {
1502
1473
  background-color: white;
@@ -2726,120 +2697,7 @@ $tag-radius: rem(20px)!default;
2726
2697
  font-size: rem(16);
2727
2698
  color: $main-text;
2728
2699
  }
2729
- }.info-video {
2730
- width: 100%;
2731
- &, * {
2732
- box-sizing: border-box;
2733
- }
2734
- &__wrapper {
2735
- width: 100%;
2736
- display: flex;
2737
- flex-direction: column;
2738
- justify-content: flex-start;
2739
- align-items: flex-start;
2740
- gap: 30px;
2741
- &__top {
2742
- width: 100%;
2743
- display: flex;
2744
- flex-direction: column;
2745
- justify-content: flex-start;
2746
- align-items: flex-start;
2747
- gap: 12px;
2748
- > label {
2749
- font-size: rem(14);
2750
- font-weight: 500;
2751
- color: $main-text;
2752
- i {
2753
- font-size: rem(14);
2754
- font-weight: 400;
2755
- color: $img-second-color;
2756
- margin: 0 0 0 5px;
2757
- }
2758
- }
2759
- > span {
2760
- font-size: rem(12);
2761
- color: $img-second-color;
2762
- margin-top: -2px;
2763
- }
2764
- > input {
2765
- width: 100%;
2766
- height: rem(40);
2767
- border: 1px solid $img-input-border;
2768
- border-radius: rem(3);
2769
- color: $img-main-text;
2770
- padding: 0 rem(20);
2771
- font-size: rem(14);
2772
- &:hover, &:focus {
2773
- color: $main-text;
2774
- border-color: $main-text;
2775
- }
2776
- }
2777
- }
2778
- &__bottom {
2779
- width: 100%;
2780
- display: flex;
2781
- flex-direction: column;
2782
- justify-content: flex-start;
2783
- align-items: flex-start;
2784
- gap: 15px;
2785
- &.has-border {
2786
- padding-bottom: 32px;
2787
- border-bottom: 2px solid $img-input-border;
2788
- }
2789
- > strong {
2790
- font-size: rem(16);
2791
- font-weight: 600;
2792
- color: $main-text;
2793
- }
2794
- > p {
2795
- font-size: rem(14);
2796
- font-weight: 400;
2797
- color: $main-text;
2798
- display: flex;
2799
- align-items: center;
2800
- width: 100%;
2801
- > span {
2802
- white-space: nowrap;
2803
- &:first-child {
2804
- width: 100%;
2805
- }
2806
- &:last-child {
2807
- width: auto;
2808
- }
2809
- }
2810
- }
2811
- }
2812
- & > a {
2813
- color: $img-bright-red-color;
2814
- text-decoration: underline;
2815
- transition: .3s ease;
2816
- cursor: pointer;
2817
- font-size: rem(14);
2818
- font-weight: 400;
2819
- &:hover, &:focus {
2820
- color: darken($img-bright-red-color, 10%);
2821
- text-decoration: none;
2822
- }
2823
- }
2824
- }
2825
- }
2826
- iframe {
2827
- width: 100%!important;
2828
- height: 309px;
2829
- }
2830
-
2831
- .show-iframe {
2832
- box-sizing: border-box;
2833
- padding: 20px;
2834
- &__none {
2835
- width: 100%;
2836
- text-align: center;
2837
- font-size: rem(16);
2838
- font-weight: 600;
2839
- color: $main-text;
2840
- }
2841
- }
2842
- $default-color-p-alert: #1e5568;
2700
+ }$default-color-p-alert: #1e5568;
2843
2701
  $success-color-p-alert: #11552e;
2844
2702
  $warning-color-p-alert: #3a0505;
2845
2703
  $primary-button: #e95656;
@@ -3928,7 +3786,7 @@ $card-img-size-small: 140px;
3928
3786
  background-color: $img-orange-color;
3929
3787
  }
3930
3788
  }
3931
- &.copy {
3789
+ &.copy {
3932
3790
  background-color: $img-green-color;
3933
3791
  transition: transform .3s ease .15s;
3934
3792
  span, &:before {
@@ -4052,27 +3910,6 @@ $card-img-size-small: 140px;
4052
3910
  }
4053
3911
  }
4054
3912
  }
4055
- &__video {
4056
- width: fit-content;
4057
- height: 24px;
4058
- display: flex;
4059
- justify-content: center;
4060
- align-items: center;
4061
- position: absolute;
4062
- bottom: 10px;
4063
- right: 10px;
4064
- background-color: rgba(29, 42, 59, 0.8);
4065
- gap: 5px;
4066
- border-radius: 3px;
4067
- padding: 0 10px;
4068
- color: white;
4069
- font-size: rem(12);
4070
- font-weight: 500;
4071
- i {
4072
- color: white;
4073
- font-size: rem(14);
4074
- }
4075
- }
4076
3913
  }
4077
3914
 
4078
3915
  &__nameContainer {
@@ -4138,9 +3975,6 @@ $card-img-size-small: 140px;
4138
3975
 
4139
3976
  &:hover, &:focus {
4140
3977
  z-index: 3;
4141
- .hover-img-size {
4142
- opacity: 1;
4143
- }
4144
3978
  .img-card {
4145
3979
  &__nameContainer {
4146
3980
  overflow: visible;
@@ -4197,21 +4031,6 @@ $card-img-size-small: 140px;
4197
4031
  width: $card-img-size-small;
4198
4032
  }
4199
4033
  }
4200
-
4201
- .hover-img-size {
4202
- position: absolute;
4203
- top: 10px;
4204
- right: 10px;
4205
- opacity: 0;
4206
- transition: .3s ease;
4207
- background-color: rgba(0,0,0,.45);
4208
- color: $white;
4209
- font-size: rem(12);
4210
- padding: 3px 6px;
4211
- border-radius: 2px;
4212
- pointer-events: none;
4213
- }
4214
-
4215
4034
  .wz-selector {
4216
4035
  &__default {
4217
4036
  position: relative;
@@ -1,62 +0,0 @@
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=
@@ -1,54 +0,0 @@
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 (url.includes('youtube.com') || url.includes('youtu.be')) {
20
- const videoId = this.extractYoutubeId(url);
21
- if (!videoId)
22
- return null;
23
- const embed = `https://www.youtube.com/embed/${videoId}`;
24
- return this.sanitizer.bypassSecurityTrustResourceUrl(embed);
25
- }
26
- if (url.includes('vimeo.com')) {
27
- const videoId = this.extractVimeoId(url);
28
- if (!videoId)
29
- return null;
30
- const embed = `https://player.vimeo.com/video/${videoId}`;
31
- return this.sanitizer.bypassSecurityTrustResourceUrl(embed);
32
- }
33
- return null;
34
- }
35
- extractYoutubeId(url) {
36
- const regExp = /^.*(youtu.be\/|v=|embed\/)([^#\&\?]*).*/;
37
- const match = url.match(regExp);
38
- return match && match[2].length > 0 ? match[2] : null;
39
- }
40
- extractVimeoId(url) {
41
- const regExp = /vimeo\.com\/(?:video\/)?(\d+)/;
42
- const match = url.match(regExp);
43
- return match ? match[1] : null;
44
- }
45
- }
46
- EditorShowIframeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: EditorShowIframeComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
47
- 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 <iframe\r\n width=\"100%\"\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\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" }] });
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: EditorShowIframeComponent, decorators: [{
49
- type: Component,
50
- args: [{ selector: 'show-iframe', template: "<div class=\"show-iframe\" *ngIf=\"safeUrl\">\r\n <iframe\r\n width=\"100%\"\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\r\n<div class=\"show-iframe__none\" *ngIf=\"!safeUrl\">\r\n <p>{{ 'ImgManager.ImgEditor.NoVideo' | translate }}</p>\r\n</div>\r\n" }]
51
- }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; }, propDecorators: { videoLink: [{
52
- type: Input
53
- }] } });
54
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvdy1pZnJhbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd3otaW1nLW1hbmFnZXIvc3JjL2xpYi9jb21wb25lbnRzL2ltZy1lZGl0b3Ivc2hvdy1pZnJhbWUvc2hvdy1pZnJhbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd3otaW1nLW1hbmFnZXIvc3JjL2xpYi9jb21wb25lbnRzL2ltZy1lZGl0b3Ivc2hvdy1pZnJhbWUvc2hvdy1pZnJhbWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBbUIsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7QUFNMUUsTUFBTSxPQUFPLHlCQUF5QjtJQUtwQyxZQUFvQixTQUF1QjtRQUF2QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBSGxDLGNBQVMsR0FBVyxFQUFFLENBQUM7UUFDaEMsWUFBTyxHQUEyQixJQUFJLENBQUM7SUFFTyxDQUFDO0lBRS9DLFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEdBQVc7UUFDcEMsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLElBQUksQ0FBQztRQUV0QixJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMzRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0MsSUFBSSxDQUFDLE9BQU87Z0JBQUUsT0FBTyxJQUFJLENBQUM7WUFFMUIsTUFBTSxLQUFLLEdBQUcsaUNBQWlDLE9BQU8sRUFBRSxDQUFDO1lBQ3pELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM3RDtRQUVELElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUM3QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBRTFCLE1BQU0sS0FBSyxHQUFHLGtDQUFrQyxPQUFPLEVBQUUsQ0FBQztZQUMxRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsOEJBQThCLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0Q7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxHQUFXO1FBQ2xDLE1BQU0sTUFBTSxHQUFHLHlDQUF5QyxDQUFDO1FBQ3pELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsT0FBTyxLQUFLLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3hELENBQUM7SUFFTyxjQUFjLENBQUMsR0FBVztRQUNoQyxNQUFNLE1BQU0sR0FBRywrQkFBK0IsQ0FBQztRQUMvQyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNqQyxDQUFDOztzSEEzQ1UseUJBQXlCOzBHQUF6Qix5QkFBeUIsNEdDUHRDLGliQWFBOzJGRE5hLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDRSxhQUFhO21HQUtkLFNBQVM7c0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlUmVzb3VyY2VVcmwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2hvdy1pZnJhbWUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9zaG93LWlmcmFtZS5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEVkaXRvclNob3dJZnJhbWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG5cclxuICBASW5wdXQoKSB2aWRlb0xpbms6IHN0cmluZyA9ICcnO1xyXG4gIHNhZmVVcmw6IFNhZmVSZXNvdXJjZVVybCB8IG51bGwgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7fVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIHRoaXMuc2FmZVVybCA9IHRoaXMuYnVpbGRTYWZlSWZyYW1lVXJsKHRoaXMudmlkZW9MaW5rKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRTYWZlSWZyYW1lVXJsKHVybDogc3RyaW5nKTogU2FmZVJlc291cmNlVXJsIHwgbnVsbCB7XHJcbiAgICBpZiAoIXVybCkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgaWYgKHVybC5pbmNsdWRlcygneW91dHViZS5jb20nKSB8fCB1cmwuaW5jbHVkZXMoJ3lvdXR1LmJlJykpIHtcclxuICAgICAgY29uc3QgdmlkZW9JZCA9IHRoaXMuZXh0cmFjdFlvdXR1YmVJZCh1cmwpO1xyXG4gICAgICBpZiAoIXZpZGVvSWQpIHJldHVybiBudWxsO1xyXG5cclxuICAgICAgY29uc3QgZW1iZWQgPSBgaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvJHt2aWRlb0lkfWA7XHJcbiAgICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoZW1iZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh1cmwuaW5jbHVkZXMoJ3ZpbWVvLmNvbScpKSB7XHJcbiAgICAgIGNvbnN0IHZpZGVvSWQgPSB0aGlzLmV4dHJhY3RWaW1lb0lkKHVybCk7XHJcbiAgICAgIGlmICghdmlkZW9JZCkgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICBjb25zdCBlbWJlZCA9IGBodHRwczovL3BsYXllci52aW1lby5jb20vdmlkZW8vJHt2aWRlb0lkfWA7XHJcbiAgICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoZW1iZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBleHRyYWN0WW91dHViZUlkKHVybDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICBjb25zdCByZWdFeHAgPSAvXi4qKHlvdXR1LmJlXFwvfHY9fGVtYmVkXFwvKShbXiNcXCZcXD9dKikuKi87XHJcbiAgICBjb25zdCBtYXRjaCA9IHVybC5tYXRjaChyZWdFeHApO1xyXG4gICAgcmV0dXJuIG1hdGNoICYmIG1hdGNoWzJdLmxlbmd0aCA+IDAgPyBtYXRjaFsyXSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4dHJhY3RWaW1lb0lkKHVybDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICBjb25zdCByZWdFeHAgPSAvdmltZW9cXC5jb21cXC8oPzp2aWRlb1xcLyk/KFxcZCspLztcclxuICAgIGNvbnN0IG1hdGNoID0gdXJsLm1hdGNoKHJlZ0V4cCk7XHJcbiAgICByZXR1cm4gbWF0Y2ggPyBtYXRjaFsxXSA6IG51bGw7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJzaG93LWlmcmFtZVwiICpuZ0lmPVwic2FmZVVybFwiPlxyXG4gIDxpZnJhbWVcclxuICAgIHdpZHRoPVwiMTAwJVwiXHJcbiAgICBbc3JjXT1cInNhZmVVcmxcIlxyXG4gICAgZnJhbWVib3JkZXI9XCIwXCJcclxuICAgIGFsbG93PVwiYWNjZWxlcm9tZXRlcjsgYXV0b3BsYXk7IGNsaXBib2FyZC13cml0ZTsgZW5jcnlwdGVkLW1lZGlhOyBneXJvc2NvcGU7IHBpY3R1cmUtaW4tcGljdHVyZTsgd2ViLXNoYXJlXCJcclxuICAgIGFsbG93ZnVsbHNjcmVlbj5cclxuICA8L2lmcmFtZT5cclxuPC9kaXY+XHJcblxyXG48ZGl2IGNsYXNzPVwic2hvdy1pZnJhbWVfX25vbmVcIiAqbmdJZj1cIiFzYWZlVXJsXCI+XHJcbiAgPHA+e3sgJ0ltZ01hbmFnZXIuSW1nRWRpdG9yLk5vVmlkZW8nIHwgdHJhbnNsYXRlIH19PC9wPlxyXG48L2Rpdj5cclxuIl19