@wizishop/img-manager 18.2.3-beta → 19.0.0-beta.1
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.
- package/README.md +24 -394
- package/fesm2022/wizishop-img-manager.mjs +1150 -953
- package/fesm2022/wizishop-img-manager.mjs.map +1 -1
- package/lib/components/images-view/images-actions-handler.d.ts +3 -2
- package/lib/components/images-view/images-view.component.d.ts +11 -5
- package/lib/components/images-view/table-view/table-view.component.d.ts +1 -0
- package/lib/components/img-editor/img-editor.component.d.ts +8 -1
- package/lib/components/img-editor/info-video/info-video.component.d.ts +20 -0
- package/lib/components/img-editor/show-iframe/show-iframe.component.d.ts +16 -0
- package/lib/components/img-selection/img-selection.component.d.ts +4 -3
- package/lib/components/img-tabs/img-tabs.component.d.ts +1 -0
- package/lib/dto/img-manager.dto.d.ts +9 -0
- package/lib/services/api.service.d.ts +1 -0
- package/lib/services/img-event.service.d.ts +3 -0
- package/lib/services/img-manager.service.d.ts +11 -14
- package/lib/services/rename-picture.service.d.ts +1 -0
- package/lib/services/table/filters-table.service.d.ts +1 -0
- package/lib/services/video-info.service.d.ts +23 -0
- package/lib/wz-img-manager.component.d.ts +2 -2
- package/lib/wz-img-manager.module.d.ts +46 -44
- package/package.json +15 -24
- package/assets/canva/icon_canva.svg +0 -4
- package/assets/i18n/en.json +0 -1
- package/assets/i18n/es.json +0 -1
- package/assets/i18n/fr.json +0 -1
- package/assets/i18n/it.json +0 -1
- package/assets/img/fake.png +0 -0
- package/assets/img/icon_picture.svg +0 -11
- package/esm2022/lib/animations/easeInOut/ease-in-out.animation.mjs +0 -12
- package/esm2022/lib/animations/insertRemove/insert-remove.animation.mjs +0 -9
- package/esm2022/lib/animations/listAnnimation/list.animation.mjs +0 -16
- package/esm2022/lib/components/canva-btn/canva-btn.component.mjs +0 -73
- package/esm2022/lib/components/images-view/images-actions-handler.mjs +0 -168
- package/esm2022/lib/components/images-view/images-view.component.mjs +0 -391
- package/esm2022/lib/components/images-view/mosaic-view/img-card/img-card.component.mjs +0 -70
- package/esm2022/lib/components/images-view/mosaic-view/mosaic-view.component.mjs +0 -73
- package/esm2022/lib/components/images-view/table-view/table-view.component.mjs +0 -48
- package/esm2022/lib/components/img-editor/cropper/cropper.component.mjs +0 -313
- package/esm2022/lib/components/img-editor/img-editor.component.mjs +0 -129
- package/esm2022/lib/components/img-editor/info-section/info-section.component.mjs +0 -58
- package/esm2022/lib/components/img-selection/img-selection.component.mjs +0 -58
- package/esm2022/lib/components/img-tabs/img-tabs.component.mjs +0 -128
- package/esm2022/lib/components/img-upload/img-upload.component.mjs +0 -133
- package/esm2022/lib/components/loader/loader.component.mjs +0 -21
- package/esm2022/lib/components/pexels-lib/pexels-lib.component.mjs +0 -211
- package/esm2022/lib/components/shared/alert/alert.component.mjs +0 -26
- package/esm2022/lib/components/shared/checkbox/checkbox.component.mjs +0 -56
- package/esm2022/lib/components/shared/dropdown/dropdown.component.mjs +0 -21
- package/esm2022/lib/components/shared/input-search/input-search.component.mjs +0 -53
- package/esm2022/lib/components/shared/pagination/page-selector/page-selector.component.mjs +0 -50
- package/esm2022/lib/components/shared/pagination/pagination.component.mjs +0 -49
- package/esm2022/lib/components/shared/select/call-to-action.model.mjs +0 -2
- package/esm2022/lib/components/shared/select/select-items.dto.mjs +0 -2
- package/esm2022/lib/components/shared/select/select.component.mjs +0 -117
- package/esm2022/lib/components/shared/table/table.component.mjs +0 -124
- package/esm2022/lib/components/upload-list/upload-list.component.mjs +0 -85
- package/esm2022/lib/directives/abstract-debounce/abstract-debounce.directive.mjs +0 -41
- package/esm2022/lib/directives/abstract-debounce/debounce-keyup.directive.mjs +0 -24
- package/esm2022/lib/directives/auto-hide.directive.mjs +0 -51
- package/esm2022/lib/directives/copy-to-clipboard.directive.mjs +0 -36
- package/esm2022/lib/directives/drag-drop.directive.mjs +0 -55
- package/esm2022/lib/directives/loading.directive.mjs +0 -43
- package/esm2022/lib/directives/table/checkBoxRow.directive.mjs +0 -130
- package/esm2022/lib/directives/table/column.directive.mjs +0 -50
- package/esm2022/lib/directives/table/columnHeader.directive.mjs +0 -215
- package/esm2022/lib/directives/table/raw.directive.mjs +0 -34
- package/esm2022/lib/directives/zindex-toggle.directive.mjs +0 -45
- package/esm2022/lib/dto/ImgManagerDisplayConfig.dto.mjs +0 -2
- package/esm2022/lib/dto/canva-create-design.dto.mjs +0 -9
- package/esm2022/lib/dto/canva.dto.mjs +0 -6
- package/esm2022/lib/dto/config/apis/api.dto.mjs +0 -11
- package/esm2022/lib/dto/config/external/external-config.dto.mjs +0 -5
- package/esm2022/lib/dto/config/image-cdn/image-cdn-config.dto.mjs +0 -2
- package/esm2022/lib/dto/config/img-manager.mjs +0 -8
- package/esm2022/lib/dto/export-dtos.api.mjs +0 -11
- package/esm2022/lib/dto/img-editor-config.dto.mjs +0 -2
- package/esm2022/lib/dto/img-manager.dto.mjs +0 -2
- package/esm2022/lib/dto/pexels-img.dto.mjs +0 -2
- package/esm2022/lib/dto/picture-name-update.dto.mjs +0 -2
- package/esm2022/lib/dto/stateDisplayed.dto.mjs +0 -2
- package/esm2022/lib/dto/tabDisplayed.dto.mjs +0 -2
- package/esm2022/lib/dto/wizi-block-media.dto.mjs +0 -7
- package/esm2022/lib/pipes/images/img-src.pipe.mjs +0 -29
- package/esm2022/lib/pipes/number-to-array.pipe.mjs +0 -16
- package/esm2022/lib/pipes/pagination/array-total-pages/array-pages.pipe.mjs +0 -28
- package/esm2022/lib/pipes/pagination/large-number-of-page/large-number-of-page.pipe.mjs +0 -53
- package/esm2022/lib/pipes/pagination/text/custom-text.pipe.mjs +0 -36
- package/esm2022/lib/pipes/pagination/total-pages/is-last-page.pipe.mjs +0 -25
- package/esm2022/lib/pipes/select/select-filters.pipe.mjs +0 -19
- package/esm2022/lib/services/alert.service.mjs +0 -53
- package/esm2022/lib/services/api.service.mjs +0 -10
- package/esm2022/lib/services/canva.service.mjs +0 -165
- package/esm2022/lib/services/config/img-cdn.service.mjs +0 -21
- package/esm2022/lib/services/dom.service.mjs +0 -31
- package/esm2022/lib/services/icon.service.mjs +0 -18
- package/esm2022/lib/services/image-not-found.service.mjs +0 -13
- package/esm2022/lib/services/img-event.service.mjs +0 -33
- package/esm2022/lib/services/img-manager.service.mjs +0 -134
- package/esm2022/lib/services/img-selection.service.mjs +0 -75
- package/esm2022/lib/services/pexels.service.mjs +0 -66
- package/esm2022/lib/services/rename-picture.service.mjs +0 -66
- package/esm2022/lib/services/snackbar.service.mjs +0 -67
- package/esm2022/lib/services/table/filters-table.service.mjs +0 -61
- package/esm2022/lib/services/upload.service.mjs +0 -20
- package/esm2022/lib/services/user-settings.service.mjs +0 -23
- package/esm2022/lib/wz-img-manager.component.mjs +0 -209
- package/esm2022/lib/wz-img-manager.module.mjs +0 -225
- package/esm2022/public-api.mjs +0 -14
- package/esm2022/wizishop-img-manager.mjs +0 -5
- package/wizishop-img-manager-18.2.3-beta.tgz +0 -0
- package/wz-img-manager.scss +0 -4085
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, inject,
|
|
2
|
+
import { Injectable, inject, NgZone, EventEmitter, Input, Output, Directive, Pipe, Component, ViewEncapsulation, HostListener, HostBinding, ViewChild, ChangeDetectionStrategy, Inject, NgModule } from '@angular/core';
|
|
3
3
|
import { BehaviorSubject, Subject, tap, Observable, merge, debounceTime, distinctUntilChanged, switchMap, map, forkJoin, take as take$1, startWith, shareReplay, combineLatest } from 'rxjs';
|
|
4
4
|
import * as i3 from '@ngx-translate/core';
|
|
5
5
|
import { TranslateModule } from '@ngx-translate/core';
|
|
@@ -17,19 +17,21 @@ import * as i2$1 from '@angular/forms';
|
|
|
17
17
|
import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
|
|
18
18
|
import * as i3$2 from '@angular/router';
|
|
19
19
|
import * as i8 from 'ngx-scrollbar/reached-event';
|
|
20
|
-
import {
|
|
20
|
+
import { NgScrollReached } from 'ngx-scrollbar/reached-event';
|
|
21
|
+
import * as i1$1 from '@angular/platform-browser';
|
|
21
22
|
import * as i4$1 from 'ngx-image-cropper';
|
|
22
|
-
import {
|
|
23
|
+
import { ImageCropperComponent } from 'ngx-image-cropper';
|
|
23
24
|
import { v4 } from 'uuid';
|
|
24
25
|
import * as i3$3 from '@angular/cdk/drag-drop';
|
|
25
26
|
import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
26
27
|
import { CdkTableModule } from '@angular/cdk/table';
|
|
27
28
|
|
|
28
29
|
class ImgSelectionService {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
constructor() {
|
|
31
|
+
this.multipleImgMode = false;
|
|
32
|
+
this.imgSelection$ = new BehaviorSubject([]);
|
|
33
|
+
this.imgSelectedListLoading$ = new BehaviorSubject(false);
|
|
34
|
+
}
|
|
33
35
|
getImgSelection() {
|
|
34
36
|
return this.imgSelection$.getValue();
|
|
35
37
|
}
|
|
@@ -90,15 +92,17 @@ class ImgSelectionService {
|
|
|
90
92
|
imgSelectedList.splice(toIndex, 0, imgSelectedList.splice(fromIndex, 1)[0]);
|
|
91
93
|
this.imgSelection$.next(imgSelectedList);
|
|
92
94
|
}
|
|
93
|
-
static
|
|
94
|
-
static
|
|
95
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImgSelectionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
96
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImgSelectionService }); }
|
|
95
97
|
}
|
|
96
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
98
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImgSelectionService, decorators: [{
|
|
97
99
|
type: Injectable
|
|
98
100
|
}], ctorParameters: () => [] });
|
|
99
101
|
|
|
100
102
|
class UserSettingsService {
|
|
101
|
-
|
|
103
|
+
constructor() {
|
|
104
|
+
this.userdisplayPreference = 'WzImgManagerListDisplayed';
|
|
105
|
+
}
|
|
102
106
|
/**
|
|
103
107
|
* true : display list
|
|
104
108
|
* false : display mosaic
|
|
@@ -111,25 +115,22 @@ class UserSettingsService {
|
|
|
111
115
|
const value = localStorage.getItem(this.userdisplayPreference);
|
|
112
116
|
return value == 'true';
|
|
113
117
|
}
|
|
114
|
-
static
|
|
115
|
-
static
|
|
118
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: UserSettingsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
119
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: UserSettingsService }); }
|
|
116
120
|
}
|
|
117
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
121
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: UserSettingsService, decorators: [{
|
|
118
122
|
type: Injectable
|
|
119
123
|
}] });
|
|
120
124
|
|
|
121
125
|
class AlertService {
|
|
122
|
-
nwbAlertService;
|
|
123
|
-
translateService;
|
|
124
|
-
actionMsg = 'ImgManager.alert.action';
|
|
125
|
-
alertConfig = {
|
|
126
|
-
message: '',
|
|
127
|
-
duration: 5000
|
|
128
|
-
};
|
|
129
|
-
alertRefComponent;
|
|
130
126
|
constructor(nwbAlertService, translateService) {
|
|
131
127
|
this.nwbAlertService = nwbAlertService;
|
|
132
128
|
this.translateService = translateService;
|
|
129
|
+
this.actionMsg = 'ImgManager.alert.action';
|
|
130
|
+
this.alertConfig = {
|
|
131
|
+
message: '',
|
|
132
|
+
duration: 5000
|
|
133
|
+
};
|
|
133
134
|
}
|
|
134
135
|
openAlert(msgKey) {
|
|
135
136
|
this.closePreviousAlert();
|
|
@@ -158,24 +159,33 @@ class AlertService {
|
|
|
158
159
|
const isErrorMsg = /error/i.test(msgKey);
|
|
159
160
|
this.alertConfig.color = isErrorMsg ? 'is-danger' : 'is-success';
|
|
160
161
|
}
|
|
161
|
-
static
|
|
162
|
-
static
|
|
162
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AlertService, deps: [{ token: i1.NwbAlertService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
163
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AlertService }); }
|
|
163
164
|
}
|
|
164
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
165
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AlertService, decorators: [{
|
|
165
166
|
type: Injectable
|
|
166
167
|
}], ctorParameters: () => [{ type: i1.NwbAlertService }, { type: i3.TranslateService }] });
|
|
167
168
|
|
|
168
169
|
class ImgEventService {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
170
|
+
constructor() {
|
|
171
|
+
this.imgRemoved$ = new BehaviorSubject(undefined);
|
|
172
|
+
this.imgToEditEvent = new Subject();
|
|
173
|
+
this.imgToVideoEvent = new Subject();
|
|
174
|
+
this.imgAdded = new Subject();
|
|
175
|
+
this.listDisplayedChange = new Subject();
|
|
176
|
+
}
|
|
173
177
|
emitImgToEdit(imgToEdit) {
|
|
174
178
|
this.imgToEditEvent.next(imgToEdit);
|
|
175
179
|
}
|
|
180
|
+
emitImgToVideo(imgToEdit) {
|
|
181
|
+
this.imgToVideoEvent.next(imgToEdit);
|
|
182
|
+
}
|
|
176
183
|
getImgToEditEventListener() {
|
|
177
184
|
return this.imgToEditEvent.asObservable();
|
|
178
185
|
}
|
|
186
|
+
getImgToVideoEventListener() {
|
|
187
|
+
return this.imgToVideoEvent.asObservable();
|
|
188
|
+
}
|
|
179
189
|
emitImgAdded(id_file) {
|
|
180
190
|
this.imgAdded.next(id_file);
|
|
181
191
|
}
|
|
@@ -188,44 +198,40 @@ class ImgEventService {
|
|
|
188
198
|
getlistDisplayedChange() {
|
|
189
199
|
return this.listDisplayedChange.asObservable();
|
|
190
200
|
}
|
|
191
|
-
static
|
|
192
|
-
static
|
|
201
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImgEventService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
202
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImgEventService }); }
|
|
193
203
|
}
|
|
194
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
204
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImgEventService, decorators: [{
|
|
195
205
|
type: Injectable
|
|
196
206
|
}] });
|
|
197
207
|
|
|
198
208
|
class ApiService {
|
|
199
|
-
static
|
|
200
|
-
static
|
|
209
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
210
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ApiService }); }
|
|
201
211
|
}
|
|
202
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
212
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ApiService, decorators: [{
|
|
203
213
|
type: Injectable
|
|
204
214
|
}] });
|
|
205
215
|
|
|
206
216
|
class UploadService {
|
|
207
|
-
|
|
208
|
-
|
|
217
|
+
constructor() {
|
|
218
|
+
this.imageUploaded$ = new Subject();
|
|
219
|
+
this.apiService = inject(ApiService);
|
|
220
|
+
}
|
|
209
221
|
uploadFile(formData) {
|
|
210
222
|
return this.apiService.uploadFile(formData).pipe(tap((img) => this.imageUploaded$.next(img)));
|
|
211
223
|
}
|
|
212
224
|
uploadFileByUrl(url, fileName) {
|
|
213
225
|
return this.apiService.uploadFileByUrl(url, fileName).pipe(tap((img) => this.imageUploaded$.next(img)));
|
|
214
226
|
}
|
|
215
|
-
static
|
|
216
|
-
static
|
|
227
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: UploadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
228
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: UploadService }); }
|
|
217
229
|
}
|
|
218
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
230
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: UploadService, decorators: [{
|
|
219
231
|
type: Injectable
|
|
220
232
|
}] });
|
|
221
233
|
|
|
222
234
|
class CanvaService {
|
|
223
|
-
wzImgEventService;
|
|
224
|
-
alertService;
|
|
225
|
-
translateService;
|
|
226
|
-
uploadService;
|
|
227
|
-
apiService;
|
|
228
|
-
canvaApi; // Object use to manage the canva api
|
|
229
235
|
get canvaApiURL() {
|
|
230
236
|
return this.apiService.CONFIG.canva_url;
|
|
231
237
|
}
|
|
@@ -233,20 +239,20 @@ class CanvaService {
|
|
|
233
239
|
get canvaApiKey() {
|
|
234
240
|
return this.apiService.CONFIG.canva_token;
|
|
235
241
|
}
|
|
236
|
-
imgLoading = false;
|
|
237
|
-
uploadingImg = 'ImgManager.CanvaBtn.uploadingImg';
|
|
238
|
-
successUploadPhoto = 'ImgManager.CanvaBtn.successImport';
|
|
239
|
-
errorUploadCanvaImg = 'ImgManager.CanvaBtn.errorUploadCanvaImg';
|
|
240
|
-
errorRenameCanvaImg = 'ImgManager.CanvaBtn.errorRenameCanvaImg';
|
|
241
|
-
forceToOpenCanva = false;
|
|
242
|
-
bindExpectedImgSizeEvent = new BehaviorSubject(null);
|
|
243
|
-
bindExpectedSizeDone = this.bindExpectedImgSizeEvent.asObservable();
|
|
244
242
|
constructor(wzImgEventService, alertService, translateService, uploadService, apiService) {
|
|
245
243
|
this.wzImgEventService = wzImgEventService;
|
|
246
244
|
this.alertService = alertService;
|
|
247
245
|
this.translateService = translateService;
|
|
248
246
|
this.uploadService = uploadService;
|
|
249
247
|
this.apiService = apiService;
|
|
248
|
+
this.imgLoading = false;
|
|
249
|
+
this.uploadingImg = 'ImgManager.CanvaBtn.uploadingImg';
|
|
250
|
+
this.successUploadPhoto = 'ImgManager.CanvaBtn.successImport';
|
|
251
|
+
this.errorUploadCanvaImg = 'ImgManager.CanvaBtn.errorUploadCanvaImg';
|
|
252
|
+
this.errorRenameCanvaImg = 'ImgManager.CanvaBtn.errorRenameCanvaImg';
|
|
253
|
+
this.forceToOpenCanva = false;
|
|
254
|
+
this.bindExpectedImgSizeEvent = new BehaviorSubject(null);
|
|
255
|
+
this.bindExpectedSizeDone = this.bindExpectedImgSizeEvent.asObservable();
|
|
250
256
|
}
|
|
251
257
|
getCanvaLogo() {
|
|
252
258
|
return this.apiService.CONFIG.assets_route + "canva/icon_canva.svg";
|
|
@@ -363,18 +369,20 @@ class CanvaService {
|
|
|
363
369
|
}
|
|
364
370
|
});
|
|
365
371
|
}
|
|
366
|
-
static
|
|
367
|
-
static
|
|
372
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CanvaService, deps: [{ token: ImgEventService }, { token: AlertService }, { token: i3.TranslateService }, { token: UploadService }, { token: ApiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
373
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CanvaService }); }
|
|
368
374
|
}
|
|
369
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
375
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CanvaService, decorators: [{
|
|
370
376
|
type: Injectable
|
|
371
377
|
}], ctorParameters: () => [{ type: ImgEventService }, { type: AlertService }, { type: i3.TranslateService }, { type: UploadService }, { type: ApiService }] });
|
|
372
378
|
|
|
373
379
|
class DomService {
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
380
|
+
constructor() {
|
|
381
|
+
this.documentEventSource = new Subject();
|
|
382
|
+
this.documentEventDone = this.documentEventSource.asObservable();
|
|
383
|
+
this.documentScrollSource = new Subject();
|
|
384
|
+
this.documentScrollDone = this.documentScrollSource.asObservable();
|
|
385
|
+
}
|
|
378
386
|
documentEvent() {
|
|
379
387
|
return this.documentEventDone;
|
|
380
388
|
}
|
|
@@ -391,10 +399,10 @@ class DomService {
|
|
|
391
399
|
this.documentScrollSource.next(window);
|
|
392
400
|
};
|
|
393
401
|
}
|
|
394
|
-
static
|
|
395
|
-
static
|
|
402
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DomService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
403
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DomService }); }
|
|
396
404
|
}
|
|
397
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
405
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DomService, decorators: [{
|
|
398
406
|
type: Injectable
|
|
399
407
|
}] });
|
|
400
408
|
|
|
@@ -406,10 +414,10 @@ class IconService {
|
|
|
406
414
|
link.crossOrigin = "anonymous";
|
|
407
415
|
document.getElementsByTagName('head')[0].appendChild(link);
|
|
408
416
|
}
|
|
409
|
-
static
|
|
410
|
-
static
|
|
417
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: IconService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
418
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: IconService, providedIn: 'root' }); }
|
|
411
419
|
}
|
|
412
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
420
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: IconService, decorators: [{
|
|
413
421
|
type: Injectable,
|
|
414
422
|
args: [{ providedIn: 'root' }]
|
|
415
423
|
}] });
|
|
@@ -426,51 +434,64 @@ const easeInOut = // the fade-in/fade-out animation.
|
|
|
426
434
|
]);
|
|
427
435
|
|
|
428
436
|
class ImgManagerService {
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
437
|
+
constructor() {
|
|
438
|
+
this.uploadService = inject(UploadService);
|
|
439
|
+
this.ngZone = inject(NgZone); // Injecter NgZone
|
|
440
|
+
this.params = new HttpParams().set("limit", "20").set("page", "1");
|
|
441
|
+
// Display the img selection
|
|
442
|
+
this.pageFicheProductConfig = {
|
|
443
|
+
stateDisplayed: 'closed',
|
|
444
|
+
multipleImgMode: true,
|
|
445
|
+
showImgManagerModule: true,
|
|
446
|
+
showSelection: true,
|
|
447
|
+
displayBtn: true,
|
|
448
|
+
pageficheProduct: true
|
|
449
|
+
};
|
|
450
|
+
this.angularFicheProductConfig = {
|
|
451
|
+
stateDisplayed: 'closed',
|
|
452
|
+
multipleImgMode: true,
|
|
453
|
+
showImgManagerModule: true,
|
|
454
|
+
showSelection: true,
|
|
455
|
+
displayBtn: false,
|
|
456
|
+
pageficheProduct: true
|
|
457
|
+
};
|
|
458
|
+
this.wiziblockConfig = {
|
|
459
|
+
stateDisplayed: 'closed',
|
|
460
|
+
multipleImgMode: false,
|
|
461
|
+
showImgManagerModule: true,
|
|
462
|
+
showSelection: false,
|
|
463
|
+
displayBtn: false
|
|
464
|
+
};
|
|
465
|
+
this.simpleWithButtonOpenerConfig = {
|
|
466
|
+
stateDisplayed: 'closed',
|
|
467
|
+
multipleImgMode: false,
|
|
468
|
+
showImgManagerModule: true,
|
|
469
|
+
showSelection: false,
|
|
470
|
+
displayBtn: true
|
|
471
|
+
};
|
|
472
|
+
this.fullWindowConfig = {
|
|
473
|
+
stateDisplayed: 'window',
|
|
474
|
+
multipleImgMode: false,
|
|
475
|
+
showImgManagerModule: true,
|
|
476
|
+
showSelection: false,
|
|
477
|
+
displayBtn: false
|
|
478
|
+
};
|
|
479
|
+
this.apiService = inject(ApiService);
|
|
480
|
+
this.destroy$ = new Subject();
|
|
481
|
+
this.searchImagesParameters$ = new BehaviorSubject(this.DEFAULT_SEARCH_PARAMS);
|
|
482
|
+
this.refreshImageList$ = new Subject();
|
|
483
|
+
this.resetImageList$ = merge(this.uploadService.imageUploaded$);
|
|
484
|
+
this.isLoading$ = new BehaviorSubject(true);
|
|
485
|
+
this.fetchImagesList$ = merge(this.searchImagesParameters$.pipe(debounceTime(800), distinctUntilChanged()), this.refreshImageList$.pipe(switchMap(() => this.searchImagesParameters$))).pipe(map((params) => this.getHttpParameters(params)), tap(() => this.isLoading$.next(true)), switchMap((params) => forkJoin({
|
|
486
|
+
imageList: this.apiService.getShopImgList(params).pipe(take$1(1)),
|
|
487
|
+
imageTotal: this.apiService.getShopTotalImgList(params).pipe(take$1(1))
|
|
488
|
+
})), tap(() => this.isLoading$.next(false)));
|
|
489
|
+
this.imageList$ = merge(this.fetchImagesList$, this.resetImageList$.pipe(tap(() => this.isLoading$.next(true)), tap(() => this.searchImagesParameters$.next(this.DEFAULT_SEARCH_PARAMS)), map(() => this.DEFAULT_DATA_LIST))).pipe(startWith(this.DEFAULT_DATA_LIST), shareReplay({ bufferSize: 1, refCount: true }));
|
|
490
|
+
}
|
|
471
491
|
get DEFAULT_SEARCH_PARAMS() {
|
|
472
492
|
return {
|
|
473
493
|
limit: '30',
|
|
494
|
+
type: '',
|
|
474
495
|
page: '1',
|
|
475
496
|
};
|
|
476
497
|
}
|
|
@@ -486,15 +507,6 @@ class ImgManagerService {
|
|
|
486
507
|
imageTotal: 0
|
|
487
508
|
};
|
|
488
509
|
}
|
|
489
|
-
searchImagesParameters$ = new BehaviorSubject(this.DEFAULT_SEARCH_PARAMS);
|
|
490
|
-
refreshImageList$ = new Subject();
|
|
491
|
-
resetImageList$ = merge(this.uploadService.imageUploaded$);
|
|
492
|
-
isLoading$ = new BehaviorSubject(true);
|
|
493
|
-
fetchImagesList$ = merge(this.searchImagesParameters$.pipe(debounceTime(800), distinctUntilChanged()), this.refreshImageList$.pipe(switchMap(() => this.searchImagesParameters$))).pipe(map((params) => this.getHttpParameters(params)), tap(() => this.isLoading$.next(true)), switchMap((params) => forkJoin({
|
|
494
|
-
imageList: this.apiService.getShopImgList(params).pipe(take$1(1)),
|
|
495
|
-
imageTotal: this.apiService.getShopTotalImgList(params).pipe(take$1(1))
|
|
496
|
-
})), tap(() => this.isLoading$.next(false)));
|
|
497
|
-
imageList$ = merge(this.fetchImagesList$, this.resetImageList$.pipe(tap(() => this.isLoading$.next(true)), tap(() => this.searchImagesParameters$.next(this.DEFAULT_SEARCH_PARAMS)), map(() => this.DEFAULT_DATA_LIST))).pipe(startWith(this.DEFAULT_DATA_LIST), shareReplay(1));
|
|
498
510
|
getHttpParameters(params) {
|
|
499
511
|
let parameters = new HttpParams();
|
|
500
512
|
parameters = parameters.set('id_file:sort', 'desc');
|
|
@@ -543,32 +555,74 @@ class ImgManagerService {
|
|
|
543
555
|
];
|
|
544
556
|
}
|
|
545
557
|
ngOnDestroy() {
|
|
546
|
-
this.destroy$.next();
|
|
558
|
+
this.destroy$.next(null);
|
|
547
559
|
this.destroy$.complete();
|
|
548
560
|
}
|
|
549
|
-
|
|
550
|
-
|
|
561
|
+
copyToClipboard(url) {
|
|
562
|
+
return new Promise((resolve) => {
|
|
563
|
+
// Vérifier si l'API Clipboard est disponible
|
|
564
|
+
if (navigator.clipboard && navigator.clipboard.writeText) {
|
|
565
|
+
navigator.clipboard.writeText(url)
|
|
566
|
+
.then(() => resolve(true))
|
|
567
|
+
.catch((error) => {
|
|
568
|
+
console.error('Failed to copy to clipboard:', error);
|
|
569
|
+
resolve(this.fallbackCopyToClipboard(url));
|
|
570
|
+
});
|
|
571
|
+
}
|
|
572
|
+
else {
|
|
573
|
+
// Fallback pour les navigateurs qui ne supportent pas l'API Clipboard
|
|
574
|
+
resolve(this.fallbackCopyToClipboard(url));
|
|
575
|
+
}
|
|
576
|
+
});
|
|
577
|
+
}
|
|
578
|
+
fallbackCopyToClipboard(text) {
|
|
579
|
+
let success = false;
|
|
580
|
+
// Exécuter en dehors du cycle de détection d'Angular
|
|
581
|
+
this.ngZone.runOutsideAngular(() => {
|
|
582
|
+
const textArea = document.createElement('textarea');
|
|
583
|
+
textArea.value = text;
|
|
584
|
+
textArea.style.position = 'fixed';
|
|
585
|
+
textArea.style.left = '-999999px';
|
|
586
|
+
textArea.style.top = '-999999px';
|
|
587
|
+
document.body.appendChild(textArea);
|
|
588
|
+
textArea.focus();
|
|
589
|
+
textArea.select();
|
|
590
|
+
try {
|
|
591
|
+
success = document.execCommand('copy');
|
|
592
|
+
}
|
|
593
|
+
catch (error) {
|
|
594
|
+
console.error('Fallback: Failed to copy to clipboard:', error);
|
|
595
|
+
success = false;
|
|
596
|
+
}
|
|
597
|
+
finally {
|
|
598
|
+
document.body.removeChild(textArea);
|
|
599
|
+
}
|
|
600
|
+
});
|
|
601
|
+
return success;
|
|
602
|
+
}
|
|
603
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImgManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
604
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImgManagerService }); }
|
|
551
605
|
}
|
|
552
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
606
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImgManagerService, decorators: [{
|
|
553
607
|
type: Injectable
|
|
554
608
|
}] });
|
|
555
609
|
|
|
556
610
|
class RenamePictureService {
|
|
557
|
-
apiService;
|
|
558
|
-
alertService;
|
|
559
|
-
imgManagerService;
|
|
560
|
-
picturesList = [];
|
|
561
|
-
errorRenameImg = 'ImgManager.ImgList.errorRenameImg';
|
|
562
|
-
msgSavingImgName = 'ImgManager.ImgLib.savingImgName';
|
|
563
|
-
msgImgNameSaved = 'ImgManager.ImgLib.imgNameSaved';
|
|
564
611
|
constructor(apiService, alertService, imgManagerService) {
|
|
565
612
|
this.apiService = apiService;
|
|
566
613
|
this.alertService = alertService;
|
|
567
614
|
this.imgManagerService = imgManagerService;
|
|
615
|
+
this.picturesList = [];
|
|
616
|
+
this.errorRenameImg = 'ImgManager.ImgList.errorRenameImg';
|
|
617
|
+
this.msgSavingImgName = 'ImgManager.ImgLib.savingImgName';
|
|
618
|
+
this.msgImgNameSaved = 'ImgManager.ImgLib.imgNameSaved';
|
|
568
619
|
}
|
|
569
620
|
setPicturesList(picturesList) {
|
|
570
621
|
this.picturesList = picturesList;
|
|
571
622
|
}
|
|
623
|
+
changeVideoLink(videoLink, idFile) {
|
|
624
|
+
return this.apiService.changeVideoLink(videoLink, idFile).pipe(tap(() => this.imgManagerService.refreshImageList$.next()));
|
|
625
|
+
}
|
|
572
626
|
renamePicture(pictureNameUpdate) {
|
|
573
627
|
const picture = this.getPictureById(pictureNameUpdate.id);
|
|
574
628
|
if (!picture) {
|
|
@@ -603,15 +657,17 @@ class RenamePictureService {
|
|
|
603
657
|
}
|
|
604
658
|
return null;
|
|
605
659
|
}
|
|
606
|
-
static
|
|
607
|
-
static
|
|
660
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: RenamePictureService, deps: [{ token: ApiService }, { token: AlertService }, { token: ImgManagerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
661
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: RenamePictureService }); }
|
|
608
662
|
}
|
|
609
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
663
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: RenamePictureService, decorators: [{
|
|
610
664
|
type: Injectable
|
|
611
665
|
}], ctorParameters: () => [{ type: ApiService }, { type: AlertService }, { type: ImgManagerService }] });
|
|
612
666
|
|
|
613
667
|
class ImgCDNService {
|
|
614
|
-
|
|
668
|
+
constructor() {
|
|
669
|
+
this.imgCDNConfig = inject(ApiService).IMG_SIZE;
|
|
670
|
+
}
|
|
615
671
|
getUrlImg(size) {
|
|
616
672
|
const urlProperty = Object.keys(this.imgCDNConfig)
|
|
617
673
|
.filter(url => new RegExp(size, 'i').test(url))[0];
|
|
@@ -621,10 +677,10 @@ class ImgCDNService {
|
|
|
621
677
|
return Object.keys(this.imgCDNConfig)
|
|
622
678
|
.map(elem => elem.match(/_(\w+)_/)[1]);
|
|
623
679
|
}
|
|
624
|
-
static
|
|
625
|
-
static
|
|
680
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImgCDNService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
681
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImgCDNService }); }
|
|
626
682
|
}
|
|
627
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
683
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImgCDNService, decorators: [{
|
|
628
684
|
type: Injectable
|
|
629
685
|
}] });
|
|
630
686
|
|
|
@@ -632,45 +688,14 @@ class ImageNotFoundService {
|
|
|
632
688
|
imageNotFound($url) {
|
|
633
689
|
return;
|
|
634
690
|
}
|
|
635
|
-
static
|
|
636
|
-
static
|
|
691
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImageNotFoundService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
692
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImageNotFoundService }); }
|
|
637
693
|
}
|
|
638
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
694
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImageNotFoundService, decorators: [{
|
|
639
695
|
type: Injectable
|
|
640
696
|
}] });
|
|
641
697
|
|
|
642
698
|
class ImagesActionHandler {
|
|
643
|
-
imgManager;
|
|
644
|
-
imgSelectionService;
|
|
645
|
-
http;
|
|
646
|
-
imgCDNService;
|
|
647
|
-
imgEventCardService;
|
|
648
|
-
alertService;
|
|
649
|
-
translateService;
|
|
650
|
-
apiService;
|
|
651
|
-
picturesList = [];
|
|
652
|
-
picturesListChange = new EventEmitter();
|
|
653
|
-
tableFilters = {
|
|
654
|
-
sort: undefined,
|
|
655
|
-
order: undefined,
|
|
656
|
-
searchValue: '',
|
|
657
|
-
totalItems: 0,
|
|
658
|
-
itemsPerPage: 30,
|
|
659
|
-
currentPage: 1
|
|
660
|
-
};
|
|
661
|
-
displayPexelsResults = false;
|
|
662
|
-
disable = false;
|
|
663
|
-
disableChange = new EventEmitter();
|
|
664
|
-
filtersChange = new EventEmitter();
|
|
665
|
-
pictureNameChange = new EventEmitter();
|
|
666
|
-
isLoading = false;
|
|
667
|
-
stateDisplayed;
|
|
668
|
-
previousName; // Use to save the previous picture name, when a user change his name
|
|
669
|
-
fakeImgRoute;
|
|
670
|
-
getDataAPISub;
|
|
671
|
-
errorRemoveImg = 'ImgManager.ImgList.errorRemoveImg';
|
|
672
|
-
errorAlreadyUsedImg = 'ImgManager.ImgList.errorAlreadyUsed';
|
|
673
|
-
imageNotFoundService = inject(ImageNotFoundService);
|
|
674
699
|
constructor(imgManager, imgSelectionService, http, imgCDNService, imgEventCardService, alertService, translateService, apiService) {
|
|
675
700
|
this.imgManager = imgManager;
|
|
676
701
|
this.imgSelectionService = imgSelectionService;
|
|
@@ -680,9 +705,27 @@ class ImagesActionHandler {
|
|
|
680
705
|
this.alertService = alertService;
|
|
681
706
|
this.translateService = translateService;
|
|
682
707
|
this.apiService = apiService;
|
|
683
|
-
|
|
684
|
-
|
|
708
|
+
this.picturesList = [];
|
|
709
|
+
this.picturesListChange = new EventEmitter();
|
|
710
|
+
this.tableFilters = {
|
|
711
|
+
sort: undefined,
|
|
712
|
+
order: undefined,
|
|
713
|
+
searchValue: '',
|
|
714
|
+
totalItems: 0,
|
|
715
|
+
type: '',
|
|
716
|
+
itemsPerPage: 30,
|
|
717
|
+
currentPage: 1
|
|
718
|
+
};
|
|
719
|
+
this.displayPexelsResults = false;
|
|
720
|
+
this.disable = false;
|
|
721
|
+
this.disableChange = new EventEmitter();
|
|
722
|
+
this.filtersChange = new EventEmitter();
|
|
723
|
+
this.pictureNameChange = new EventEmitter();
|
|
724
|
+
this.isLoading = false;
|
|
685
725
|
this.fakeImgRoute = this.apiService.CONFIG.assets_route + 'img/fake.png';
|
|
726
|
+
this.errorRemoveImg = 'ImgManager.ImgList.errorRemoveImg';
|
|
727
|
+
this.errorAlreadyUsedImg = 'ImgManager.ImgList.errorAlreadyUsed';
|
|
728
|
+
this.imageNotFoundService = inject(ImageNotFoundService);
|
|
686
729
|
}
|
|
687
730
|
/** Event emit when the header checkbox is checked */
|
|
688
731
|
onToggleAllCheckBoxRow(event) {
|
|
@@ -705,6 +748,20 @@ class ImagesActionHandler {
|
|
|
705
748
|
onEdit(picture) {
|
|
706
749
|
this.imgEventCardService.emitImgToEdit(picture);
|
|
707
750
|
}
|
|
751
|
+
redirectToVideo(picture) {
|
|
752
|
+
this.imgEventCardService.emitImgToVideo(picture);
|
|
753
|
+
}
|
|
754
|
+
copyLink(file_name) {
|
|
755
|
+
const url = this.imgCDNService.getUrlImg('raw') + file_name;
|
|
756
|
+
this.imgManager.copyToClipboard(url).then(success => {
|
|
757
|
+
if (success) {
|
|
758
|
+
this.alertService.openAlert('ImgManager.ImgList.linkCopied');
|
|
759
|
+
}
|
|
760
|
+
else {
|
|
761
|
+
this.alertService.openAlert('ImgManager.ImgList.linkCopyFailed');
|
|
762
|
+
}
|
|
763
|
+
});
|
|
764
|
+
}
|
|
708
765
|
onToggleSelectImg(index) {
|
|
709
766
|
if (this.disable || this.stateDisplayed === 'window') {
|
|
710
767
|
return;
|
|
@@ -752,7 +809,7 @@ class ImagesActionHandler {
|
|
|
752
809
|
downloadUrl(url, fileName) {
|
|
753
810
|
const a = document.createElement('a');
|
|
754
811
|
a.href = url;
|
|
755
|
-
a.download = fileName;
|
|
812
|
+
a.download = fileName.replace(/[.]/g, "");
|
|
756
813
|
a.click();
|
|
757
814
|
}
|
|
758
815
|
ngDestroy() {
|
|
@@ -760,10 +817,10 @@ class ImagesActionHandler {
|
|
|
760
817
|
this.getDataAPISub.unsubscribe();
|
|
761
818
|
}
|
|
762
819
|
}
|
|
763
|
-
static
|
|
764
|
-
static
|
|
820
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImagesActionHandler, deps: [{ token: ImgManagerService }, { token: ImgSelectionService }, { token: i3$1.HttpClient }, { token: ImgCDNService }, { token: ImgEventService }, { token: AlertService }, { token: i3.TranslateService }, { token: ApiService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
821
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: ImagesActionHandler, isStandalone: true, inputs: { picturesList: "picturesList", tableFilters: "tableFilters", displayPexelsResults: "displayPexelsResults", disable: "disable", isLoading: "isLoading", stateDisplayed: "stateDisplayed" }, outputs: { picturesListChange: "picturesListChange", disableChange: "disableChange", filtersChange: "filtersChange", pictureNameChange: "pictureNameChange" }, ngImport: i0 }); }
|
|
765
822
|
}
|
|
766
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
823
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImagesActionHandler, decorators: [{
|
|
767
824
|
type: Directive
|
|
768
825
|
}], ctorParameters: () => [{ type: ImgManagerService }, { type: ImgSelectionService }, { type: i3$1.HttpClient }, { type: ImgCDNService }, { type: ImgEventService }, { type: AlertService }, { type: i3.TranslateService }, { type: ApiService }], propDecorators: { picturesList: [{
|
|
769
826
|
type: Input
|
|
@@ -788,10 +845,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
788
845
|
}] } });
|
|
789
846
|
|
|
790
847
|
class LoadingDirective {
|
|
791
|
-
element;
|
|
792
|
-
currentLoading = 0;
|
|
793
|
-
interval = null;
|
|
794
848
|
constructor(el) {
|
|
849
|
+
this.currentLoading = 0;
|
|
850
|
+
this.interval = null;
|
|
795
851
|
this.element = el;
|
|
796
852
|
this.launchLoading();
|
|
797
853
|
}
|
|
@@ -818,18 +874,18 @@ class LoadingDirective {
|
|
|
818
874
|
this.interval = null;
|
|
819
875
|
}
|
|
820
876
|
}
|
|
821
|
-
static
|
|
822
|
-
static
|
|
877
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: LoadingDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
878
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: LoadingDirective, isStandalone: false, selector: "[btnLoadingAnim]", ngImport: i0 }); }
|
|
823
879
|
}
|
|
824
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
880
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: LoadingDirective, decorators: [{
|
|
825
881
|
type: Directive,
|
|
826
882
|
args: [{
|
|
883
|
+
standalone: false,
|
|
827
884
|
selector: '[btnLoadingAnim]'
|
|
828
885
|
}]
|
|
829
886
|
}], ctorParameters: () => [{ type: i0.ElementRef }] });
|
|
830
887
|
|
|
831
888
|
class ImageSrcPipe {
|
|
832
|
-
imgCDNService;
|
|
833
889
|
constructor(imgCDNService) {
|
|
834
890
|
this.imgCDNService = imgCDNService;
|
|
835
891
|
}
|
|
@@ -843,28 +899,25 @@ class ImageSrcPipe {
|
|
|
843
899
|
}
|
|
844
900
|
return route + pictureName;
|
|
845
901
|
}
|
|
846
|
-
static
|
|
847
|
-
static
|
|
902
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImageSrcPipe, deps: [{ token: ImgCDNService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
903
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: ImageSrcPipe, isStandalone: false, name: "imgSrc" }); }
|
|
848
904
|
}
|
|
849
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
905
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImageSrcPipe, decorators: [{
|
|
850
906
|
type: Pipe,
|
|
851
907
|
args: [{
|
|
908
|
+
standalone: false,
|
|
852
909
|
name: 'imgSrc'
|
|
853
910
|
}]
|
|
854
911
|
}], ctorParameters: () => [{ type: ImgCDNService }] });
|
|
855
912
|
|
|
856
913
|
class ImgCardComponent extends ImagesActionHandler {
|
|
857
|
-
tabDisplayed;
|
|
858
|
-
fullSize;
|
|
859
|
-
picture;
|
|
860
|
-
index;
|
|
861
|
-
focusInput = false;
|
|
862
|
-
toggleImgSelected = new EventEmitter();
|
|
863
|
-
switchDisplayWindow = new EventEmitter();
|
|
864
|
-
isUploadSection = false;
|
|
865
|
-
activeConfirmDelete = false;
|
|
866
914
|
constructor(imgManager, imgSelectionService, http, imgCDNService, imgEventCardService, alertService, translateService, apiService) {
|
|
867
915
|
super(imgManager, imgSelectionService, http, imgCDNService, imgEventCardService, alertService, translateService, apiService);
|
|
916
|
+
this.focusInput = false;
|
|
917
|
+
this.toggleImgSelected = new EventEmitter();
|
|
918
|
+
this.switchDisplayWindow = new EventEmitter();
|
|
919
|
+
this.isUploadSection = false;
|
|
920
|
+
this.activeConfirmDelete = false;
|
|
868
921
|
}
|
|
869
922
|
ngOnInit() {
|
|
870
923
|
this.isUploadSection = this.tabDisplayed === 'img-upload';
|
|
@@ -875,16 +928,16 @@ class ImgCardComponent extends ImagesActionHandler {
|
|
|
875
928
|
onToggleImgSelected() {
|
|
876
929
|
this.toggleImgSelected.next();
|
|
877
930
|
}
|
|
878
|
-
static
|
|
879
|
-
static
|
|
931
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImgCardComponent, deps: [{ token: ImgManagerService }, { token: ImgSelectionService }, { token: i3$1.HttpClient }, { token: ImgCDNService }, { token: ImgEventService }, { token: AlertService }, { token: i3.TranslateService }, { token: ApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
932
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: ImgCardComponent, isStandalone: false, selector: "img-card", inputs: { tabDisplayed: "tabDisplayed", fullSize: "fullSize", picture: "picture", index: "index" }, outputs: { toggleImgSelected: "toggleImgSelected", switchDisplayWindow: "switchDisplayWindow" }, usesInheritance: true, ngImport: i0, template: "<div class=\"addCssPriority\" [@easeInOut]=\"'in'\" [ngClass]=\"{ 'fullSize': fullSize }\">\n <div class=\"img-card\">\n <div class=\"img-card__container\"\n [ngClass]=\"{\n 'smallDisplay': stateDisplayed === 'small' || isUploadSection,\n 'imgSelected': picture.selected,\n 'deletion': picture.deleted}\">\n <img\n class=\"img-card__container__img\"\n [src]=\"picture.file_name | imgSrc : '400'\"\n [alt]=\"picture.display_name\"\n (click)=\"onToggleImgSelected()\"\n (error)=\"picture.imgNotLoaded=true;onPictureNotLoading($event);\"\n />\n <div class=\"hover-img-size\">\n <span>{{picture.raw_height}}x{{picture.raw_width}}</span>\n </div>\n <div\n class=\"img-card__container__config\"\n *ngIf=\"!picture.deleted && stateDisplayed !== 'small'\"\n >\n <ng-container *ngIf=\"!picture.video_link\">\n <button type=\"button\" class=\"size\" (click)=\"redirectToVideo(picture)\"><i class=\"fa-solid fa-play\"></i><span>{{ 'ImgManager.ImgEditor.AddVideo' | translate }}</span></button>\n </ng-container>\n <ng-container *ngIf=\"picture.video_link\">\n <button type=\"button\" class=\"size\" (click)=\"redirectToVideo(picture)\"><i class=\"fa-solid fa-play\"></i><span>{{ 'ImgManager.ImgEditor.EditVideo' | translate }}</span></button>\n </ng-container>\n <button type=\"button\" class=\"dl\" (click)=\"onDownloadImg(picture.display_name, picture.file_name)\"><i class=\"fal fa-download\"></i><span>{{ 'ImgManager.ImgCard.download' | translate }}</span></button>\n <button type=\"button\" class=\"edit\" (click)=\"onEdit(picture)\"><i class=\"far fa-crop-alt\"></i><span>{{ 'ImgManager.ImgCard.edit' | translate }}</span></button>\n <button type=\"button\" class=\"copy\" (click)=\"copyLink(picture.file_name)\"><i class=\"fal fa-copy\"></i><span>{{ 'ImgManager.ImgCard.copyLink' | translate }}</span></button>\n <button type=\"button\" class=\"deleted\" (click)=\"activeConfirmDelete = true;\"><i class=\"fal fa-times\"></i><span>{{ 'ImgManager.ImgCard.del' | translate }}</span></button>\n <button type=\"button\" class=\"selected\" (click)=\"onToggleImgSelected()\" *ngIf=\"stateDisplayed !== 'window'\">\n <i *ngIf=\"!picture.selected\" class=\"fal fa-square\"></i>\n <i *ngIf=\"picture.selected\" class=\"fa-solid fa-check-square checked\"></i>\n <span>{{ 'ImgManager.ImgCard.select' | translate }}</span>\n </button>\n </div>\n <div\n class=\"img-card__container__config img-card__container__config--small\"\n *ngIf=\"!picture.deleted && stateDisplayed === 'small'\"\n >\n <button class=\"show-edit\" (click)=\"displayLargeWindow()\"><i class=\"fa-solid fa-edit\"></i></button>\n </div>\n <div class=\"img-card__container__delete\" [ngClass]=\"{ 'show' : activeConfirmDelete}\">\n <span>{{ 'ImgManager.ImgCard.confirmDeleteImg' | translate }}</span>\n <div>\n <button (click)=\"activeConfirmDelete = false;\">{{ 'no' | translate }}</button>\n <button (click)=\"onRemoveImg(picture);activeConfirmDelete = false;\">{{ 'yes' | translate }}</button>\n </div>\n </div>\n <div class=\"img-card__container__valid\" *ngIf=\"stateDisplayed === 'small' && tabDisplayed == 'img-upload'\">\n <i class=\"far fa-check\"></i>\n <span>{{ 'ImgManager.ImgCard.validImgSmall' | translate }}</span>\n </div>\n <div\n *ngIf=\"picture.imgNotLoaded\"\n class=\"img-card__container__overlay\"\n [ngClass]=\"{'img-card__container__overlay--smallDisplay': stateDisplayed === 'small' || isUploadSection}\">\n <i (click)=\"onToggleImgSelected()\" class=\"fad fa-folder-times\"></i>\n </div>\n <span btnLoadingAnim class=\"btnLoadingAnnimation\" *ngIf=\"picture.deleted\"></span>\n <div *ngIf=\"picture.video_link\" class=\"img-card__container__video\">\n <i class=\"fa-solid fa-play\"></i>\n <span>{{ 'ImgManager.ImgEditor.Video' | translate }}</span>\n </div>\n </div>\n <div\n class=\"img-card__nameContainer\"\n [ngClass]=\"{'smallNameDisplay': stateDisplayed === 'small' || isUploadSection, 'focus': focusInput}\">\n <input\n type=\"text\"\n class=\"wzImgMngInput img-card__nameContainer__name\"\n [(ngModel)]=\"picture.display_name\"\n (ngModelChange)=\"onNameChange(picture.id_file)\"\n [ngModelOptions]=\"{standalone: true, updateOn: 'blur'}\"\n (focus)=\"previousName=picture.display_name;focusInput = true;\"\n (blur)=\"focusInput = false;\"\n >\n <span>{{picture.display_name}}</span>\n </div>\n\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: LoadingDirective, selector: "[btnLoadingAnim]" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "pipe", type: ImageSrcPipe, name: "imgSrc" }], animations: [
|
|
880
933
|
easeInOut
|
|
881
|
-
] });
|
|
934
|
+
] }); }
|
|
882
935
|
}
|
|
883
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
936
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImgCardComponent, decorators: [{
|
|
884
937
|
type: Component,
|
|
885
|
-
args: [{ selector: 'img-card', animations: [
|
|
938
|
+
args: [{ standalone: false, selector: 'img-card', animations: [
|
|
886
939
|
easeInOut
|
|
887
|
-
], template: "<div class=\"addCssPriority\" [@easeInOut]=\"'in'\" [ngClass]=\"{ 'fullSize': fullSize }\">\
|
|
940
|
+
], template: "<div class=\"addCssPriority\" [@easeInOut]=\"'in'\" [ngClass]=\"{ 'fullSize': fullSize }\">\n <div class=\"img-card\">\n <div class=\"img-card__container\"\n [ngClass]=\"{\n 'smallDisplay': stateDisplayed === 'small' || isUploadSection,\n 'imgSelected': picture.selected,\n 'deletion': picture.deleted}\">\n <img\n class=\"img-card__container__img\"\n [src]=\"picture.file_name | imgSrc : '400'\"\n [alt]=\"picture.display_name\"\n (click)=\"onToggleImgSelected()\"\n (error)=\"picture.imgNotLoaded=true;onPictureNotLoading($event);\"\n />\n <div class=\"hover-img-size\">\n <span>{{picture.raw_height}}x{{picture.raw_width}}</span>\n </div>\n <div\n class=\"img-card__container__config\"\n *ngIf=\"!picture.deleted && stateDisplayed !== 'small'\"\n >\n <ng-container *ngIf=\"!picture.video_link\">\n <button type=\"button\" class=\"size\" (click)=\"redirectToVideo(picture)\"><i class=\"fa-solid fa-play\"></i><span>{{ 'ImgManager.ImgEditor.AddVideo' | translate }}</span></button>\n </ng-container>\n <ng-container *ngIf=\"picture.video_link\">\n <button type=\"button\" class=\"size\" (click)=\"redirectToVideo(picture)\"><i class=\"fa-solid fa-play\"></i><span>{{ 'ImgManager.ImgEditor.EditVideo' | translate }}</span></button>\n </ng-container>\n <button type=\"button\" class=\"dl\" (click)=\"onDownloadImg(picture.display_name, picture.file_name)\"><i class=\"fal fa-download\"></i><span>{{ 'ImgManager.ImgCard.download' | translate }}</span></button>\n <button type=\"button\" class=\"edit\" (click)=\"onEdit(picture)\"><i class=\"far fa-crop-alt\"></i><span>{{ 'ImgManager.ImgCard.edit' | translate }}</span></button>\n <button type=\"button\" class=\"copy\" (click)=\"copyLink(picture.file_name)\"><i class=\"fal fa-copy\"></i><span>{{ 'ImgManager.ImgCard.copyLink' | translate }}</span></button>\n <button type=\"button\" class=\"deleted\" (click)=\"activeConfirmDelete = true;\"><i class=\"fal fa-times\"></i><span>{{ 'ImgManager.ImgCard.del' | translate }}</span></button>\n <button type=\"button\" class=\"selected\" (click)=\"onToggleImgSelected()\" *ngIf=\"stateDisplayed !== 'window'\">\n <i *ngIf=\"!picture.selected\" class=\"fal fa-square\"></i>\n <i *ngIf=\"picture.selected\" class=\"fa-solid fa-check-square checked\"></i>\n <span>{{ 'ImgManager.ImgCard.select' | translate }}</span>\n </button>\n </div>\n <div\n class=\"img-card__container__config img-card__container__config--small\"\n *ngIf=\"!picture.deleted && stateDisplayed === 'small'\"\n >\n <button class=\"show-edit\" (click)=\"displayLargeWindow()\"><i class=\"fa-solid fa-edit\"></i></button>\n </div>\n <div class=\"img-card__container__delete\" [ngClass]=\"{ 'show' : activeConfirmDelete}\">\n <span>{{ 'ImgManager.ImgCard.confirmDeleteImg' | translate }}</span>\n <div>\n <button (click)=\"activeConfirmDelete = false;\">{{ 'no' | translate }}</button>\n <button (click)=\"onRemoveImg(picture);activeConfirmDelete = false;\">{{ 'yes' | translate }}</button>\n </div>\n </div>\n <div class=\"img-card__container__valid\" *ngIf=\"stateDisplayed === 'small' && tabDisplayed == 'img-upload'\">\n <i class=\"far fa-check\"></i>\n <span>{{ 'ImgManager.ImgCard.validImgSmall' | translate }}</span>\n </div>\n <div\n *ngIf=\"picture.imgNotLoaded\"\n class=\"img-card__container__overlay\"\n [ngClass]=\"{'img-card__container__overlay--smallDisplay': stateDisplayed === 'small' || isUploadSection}\">\n <i (click)=\"onToggleImgSelected()\" class=\"fad fa-folder-times\"></i>\n </div>\n <span btnLoadingAnim class=\"btnLoadingAnnimation\" *ngIf=\"picture.deleted\"></span>\n <div *ngIf=\"picture.video_link\" class=\"img-card__container__video\">\n <i class=\"fa-solid fa-play\"></i>\n <span>{{ 'ImgManager.ImgEditor.Video' | translate }}</span>\n </div>\n </div>\n <div\n class=\"img-card__nameContainer\"\n [ngClass]=\"{'smallNameDisplay': stateDisplayed === 'small' || isUploadSection, 'focus': focusInput}\">\n <input\n type=\"text\"\n class=\"wzImgMngInput img-card__nameContainer__name\"\n [(ngModel)]=\"picture.display_name\"\n (ngModelChange)=\"onNameChange(picture.id_file)\"\n [ngModelOptions]=\"{standalone: true, updateOn: 'blur'}\"\n (focus)=\"previousName=picture.display_name;focusInput = true;\"\n (blur)=\"focusInput = false;\"\n >\n <span>{{picture.display_name}}</span>\n </div>\n\n </div>\n</div>\n" }]
|
|
888
941
|
}], ctorParameters: () => [{ type: ImgManagerService }, { type: ImgSelectionService }, { type: i3$1.HttpClient }, { type: ImgCDNService }, { type: ImgEventService }, { type: AlertService }, { type: i3.TranslateService }, { type: ApiService }], propDecorators: { tabDisplayed: [{
|
|
889
942
|
type: Input
|
|
890
943
|
}], fullSize: [{
|
|
@@ -900,18 +953,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
900
953
|
}] } });
|
|
901
954
|
|
|
902
955
|
class UploadListComponent {
|
|
903
|
-
imgSelectionService;
|
|
904
|
-
renamePictureService;
|
|
905
|
-
picturesList = [];
|
|
906
|
-
imgSelectionChange;
|
|
907
|
-
selectImgEvent;
|
|
908
|
-
stateDisplayed;
|
|
909
|
-
tabDisplayed;
|
|
910
|
-
multipleImgMode = false;
|
|
911
|
-
switchDisplayWindow = new EventEmitter();
|
|
912
956
|
constructor(imgSelectionService, renamePictureService) {
|
|
913
957
|
this.imgSelectionService = imgSelectionService;
|
|
914
958
|
this.renamePictureService = renamePictureService;
|
|
959
|
+
this.picturesList = [];
|
|
960
|
+
this.multipleImgMode = false;
|
|
961
|
+
this.switchDisplayWindow = new EventEmitter();
|
|
915
962
|
}
|
|
916
963
|
ngOnInit() {
|
|
917
964
|
this.setEvents();
|
|
@@ -953,16 +1000,16 @@ class UploadListComponent {
|
|
|
953
1000
|
ngOnDestroy() {
|
|
954
1001
|
this.imgSelectionChange.unsubscribe();
|
|
955
1002
|
}
|
|
956
|
-
static
|
|
957
|
-
static
|
|
1003
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: UploadListComponent, deps: [{ token: ImgSelectionService }, { token: RenamePictureService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1004
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: UploadListComponent, isStandalone: false, selector: "upload-list", inputs: { stateDisplayed: "stateDisplayed", tabDisplayed: "tabDisplayed", multipleImgMode: "multipleImgMode" }, outputs: { switchDisplayWindow: "switchDisplayWindow" }, ngImport: i0, template: "<div class=\"upload-list\" [ngClass]=\"{'smallDisplay': stateDisplayed === 'small'}\" [@easeInOut]=\"'in'\">\n\n <ng-scrollbar\n class=\"upload-list__scroll\"\n [ngClass]=\"{\n 'upload-list__scroll--smallDisplay': stateDisplayed === 'small',\n 'upload-list__scroll--window': stateDisplayed === 'window'}\"\n >\n <div class=\"upload-list__box\">\n <div class=\"upload-list__box__container\">\n <div>\n <p class=\"mainColor\">\n {{ picturesList? picturesList.length : '' }}\n <ng-container *ngIf=\"picturesList && picturesList.length > 1\">{{ 'ImgManager.UploadList.imgSuccessImport' | translate }}</ng-container>\n <ng-container *ngIf=\"picturesList && picturesList.length === 1\">{{ 'ImgManager.UploadList.imgSuccessImportOne' | translate }}</ng-container>\n </p>\n <div class=\"dropdown is-hoverable\">\n <div class=\"dropdown-trigger\">\n <i\n aria-haspopup=\"true\" aria-controls=\"dropdown-menuInfoSeo\"\n class=\"fa-solid fa-info-circle\">\n </i>\n </div>\n <div class=\"dropdown-menu dropDownShadow\" id=\"dropdown-menuInfoSeo\" role=\"menu\">\n <div class=\"dropdown-content\">\n <div class=\"dropdown-item\">\n <p>{{ 'ImgManager.UploadList.seo.rezise' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n </div>\n <div class=\"dropdown-item\">\n <p>{{ 'ImgManager.UploadList.seo.webp' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n </div>\n <div class=\"dropdown-item\">\n <p>{{ 'ImgManager.UploadList.seo.cdn' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n </div>\n <div class=\"dropdown-item\">\n <p>{{ 'ImgManager.UploadList.seo.lazyloading' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"upload-list__box__cards\">\n <div class=\"upload-list__box__cards__card\" *ngFor=\"let picture of picturesList; let index = index;\">\n <img-card\n [picture]=\"picture\"\n [stateDisplayed]=\"stateDisplayed\"\n (toggleImgSelected)=\"onToggleSelectImg(index)\"\n (switchDisplayWindow)=\"switchDisplayWindowCard()\"\n (pictureNameChange)=\"onRenamePicture($event)\"\n ></img-card>\n <div class=\"upload-list__box__cards__card__btnBox\">\n <button type=\"button\" class=\"button success upload-list__box__cards__card__btnBox__btn\"><i class=\"fal fa-check\"></i></button>\n </div>\n </div>\n </div>\n </div>\n </ng-scrollbar>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }, { kind: "component", type: ImgCardComponent, selector: "img-card", inputs: ["tabDisplayed", "fullSize", "picture", "index"], outputs: ["toggleImgSelected", "switchDisplayWindow"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], animations: [
|
|
958
1005
|
easeInOut
|
|
959
|
-
] });
|
|
1006
|
+
] }); }
|
|
960
1007
|
}
|
|
961
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1008
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: UploadListComponent, decorators: [{
|
|
962
1009
|
type: Component,
|
|
963
|
-
args: [{ selector: 'upload-list', animations: [
|
|
1010
|
+
args: [{ standalone: false, selector: 'upload-list', animations: [
|
|
964
1011
|
easeInOut
|
|
965
|
-
], template: "<div class=\"upload-list\" [ngClass]=\"{'smallDisplay': stateDisplayed === 'small'}\" [@easeInOut]=\"'in'\">\
|
|
1012
|
+
], template: "<div class=\"upload-list\" [ngClass]=\"{'smallDisplay': stateDisplayed === 'small'}\" [@easeInOut]=\"'in'\">\n\n <ng-scrollbar\n class=\"upload-list__scroll\"\n [ngClass]=\"{\n 'upload-list__scroll--smallDisplay': stateDisplayed === 'small',\n 'upload-list__scroll--window': stateDisplayed === 'window'}\"\n >\n <div class=\"upload-list__box\">\n <div class=\"upload-list__box__container\">\n <div>\n <p class=\"mainColor\">\n {{ picturesList? picturesList.length : '' }}\n <ng-container *ngIf=\"picturesList && picturesList.length > 1\">{{ 'ImgManager.UploadList.imgSuccessImport' | translate }}</ng-container>\n <ng-container *ngIf=\"picturesList && picturesList.length === 1\">{{ 'ImgManager.UploadList.imgSuccessImportOne' | translate }}</ng-container>\n </p>\n <div class=\"dropdown is-hoverable\">\n <div class=\"dropdown-trigger\">\n <i\n aria-haspopup=\"true\" aria-controls=\"dropdown-menuInfoSeo\"\n class=\"fa-solid fa-info-circle\">\n </i>\n </div>\n <div class=\"dropdown-menu dropDownShadow\" id=\"dropdown-menuInfoSeo\" role=\"menu\">\n <div class=\"dropdown-content\">\n <div class=\"dropdown-item\">\n <p>{{ 'ImgManager.UploadList.seo.rezise' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n </div>\n <div class=\"dropdown-item\">\n <p>{{ 'ImgManager.UploadList.seo.webp' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n </div>\n <div class=\"dropdown-item\">\n <p>{{ 'ImgManager.UploadList.seo.cdn' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n </div>\n <div class=\"dropdown-item\">\n <p>{{ 'ImgManager.UploadList.seo.lazyloading' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"upload-list__box__cards\">\n <div class=\"upload-list__box__cards__card\" *ngFor=\"let picture of picturesList; let index = index;\">\n <img-card\n [picture]=\"picture\"\n [stateDisplayed]=\"stateDisplayed\"\n (toggleImgSelected)=\"onToggleSelectImg(index)\"\n (switchDisplayWindow)=\"switchDisplayWindowCard()\"\n (pictureNameChange)=\"onRenamePicture($event)\"\n ></img-card>\n <div class=\"upload-list__box__cards__card__btnBox\">\n <button type=\"button\" class=\"button success upload-list__box__cards__card__btnBox__btn\"><i class=\"fal fa-check\"></i></button>\n </div>\n </div>\n </div>\n </div>\n </ng-scrollbar>\n</div>\n" }]
|
|
966
1013
|
}], ctorParameters: () => [{ type: ImgSelectionService }, { type: RenamePictureService }], propDecorators: { stateDisplayed: [{
|
|
967
1014
|
type: Input
|
|
968
1015
|
}], tabDisplayed: [{
|
|
@@ -974,15 +1021,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
974
1021
|
}] } });
|
|
975
1022
|
|
|
976
1023
|
class LoaderComponent {
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
static
|
|
981
|
-
static
|
|
1024
|
+
constructor() {
|
|
1025
|
+
this.small = false;
|
|
1026
|
+
}
|
|
1027
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: LoaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1028
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: LoaderComponent, isStandalone: false, selector: "wz-loader", inputs: { text: "text", small: "small", position: "position" }, ngImport: i0, template: "<div class=\"wz-loader\" [ngClass]=\"{'is-small': small}\" [ngStyle]=\"{'position': position}\">\n <div class='loader loader1'>\n <div>\n <div>\n <div>\n <div>\n <div>\n <div></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <p class=\"is-textcentered\" *ngIf=\"text\" [innerHTML]=\"text\"></p>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
982
1029
|
}
|
|
983
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1030
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: LoaderComponent, decorators: [{
|
|
984
1031
|
type: Component,
|
|
985
|
-
args: [{ selector: 'wz-loader', encapsulation: ViewEncapsulation.None, template: "<div class=\"wz-loader\" [ngClass]=\"{'is-small': small}\" [ngStyle]=\"{'position': position}\">\n <div class='loader loader1'>\n <div>\n <div>\n <div>\n <div>\n <div>\n <div></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <p class=\"is-textcentered\" *ngIf=\"text\" [innerHTML]=\"text\"></p>\n</div>\n" }]
|
|
1032
|
+
args: [{ standalone: false, selector: 'wz-loader', encapsulation: ViewEncapsulation.None, template: "<div class=\"wz-loader\" [ngClass]=\"{'is-small': small}\" [ngStyle]=\"{'position': position}\">\n <div class='loader loader1'>\n <div>\n <div>\n <div>\n <div>\n <div>\n <div></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <p class=\"is-textcentered\" *ngIf=\"text\" [innerHTML]=\"text\"></p>\n</div>\n" }]
|
|
986
1033
|
}], propDecorators: { text: [{
|
|
987
1034
|
type: Input
|
|
988
1035
|
}], small: [{
|
|
@@ -992,9 +1039,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
992
1039
|
}] } });
|
|
993
1040
|
|
|
994
1041
|
class DragDropDirective {
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
1042
|
+
constructor() {
|
|
1043
|
+
this.onFileDropped = new EventEmitter();
|
|
1044
|
+
this.background = '#fff';
|
|
1045
|
+
this.opacity = '1';
|
|
1046
|
+
}
|
|
998
1047
|
onDragOver(evt) {
|
|
999
1048
|
evt.preventDefault();
|
|
1000
1049
|
evt.stopPropagation();
|
|
@@ -1017,12 +1066,13 @@ class DragDropDirective {
|
|
|
1017
1066
|
this.onFileDropped.emit(files);
|
|
1018
1067
|
}
|
|
1019
1068
|
}
|
|
1020
|
-
static
|
|
1021
|
-
static
|
|
1069
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DragDropDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1070
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: DragDropDirective, isStandalone: false, selector: "[appDragDrop]", outputs: { onFileDropped: "onFileDropped" }, host: { listeners: { "dragover": "onDragOver($event)", "dragleave": "onDragLeave($event)", "drop": "ondrop($event)" }, properties: { "style.background-color": "this.background", "style.opacity": "this.opacity" } }, ngImport: i0 }); }
|
|
1022
1071
|
}
|
|
1023
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1072
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DragDropDirective, decorators: [{
|
|
1024
1073
|
type: Directive,
|
|
1025
1074
|
args: [{
|
|
1075
|
+
standalone: false,
|
|
1026
1076
|
selector: '[appDragDrop]'
|
|
1027
1077
|
}]
|
|
1028
1078
|
}], propDecorators: { onFileDropped: [{
|
|
@@ -1045,25 +1095,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
1045
1095
|
}] } });
|
|
1046
1096
|
|
|
1047
1097
|
class ImgUploadComponent {
|
|
1048
|
-
alertService;
|
|
1049
|
-
apiService;
|
|
1050
|
-
translateService;
|
|
1051
|
-
uploadService;
|
|
1052
|
-
files = [];
|
|
1053
|
-
isLoading = false;
|
|
1054
|
-
assetsIcon;
|
|
1055
|
-
stateDisplayed;
|
|
1056
|
-
imgUploaded = new EventEmitter();
|
|
1057
|
-
dragAndDropBox;
|
|
1058
|
-
loadingText = 'ImgManager.ImgUpload.loading';
|
|
1059
|
-
errorUploadingImg = 'ImgManager.ImgUpload.errorUploadingImg';
|
|
1060
|
-
errorNotImg = 'ImgManager.ImgUpload.errorNotImg';
|
|
1061
|
-
MAX_IMAGE_SIZE = 10000000; // In bytes
|
|
1062
1098
|
constructor(alertService, apiService, translateService, uploadService) {
|
|
1063
1099
|
this.alertService = alertService;
|
|
1064
1100
|
this.apiService = apiService;
|
|
1065
1101
|
this.translateService = translateService;
|
|
1066
1102
|
this.uploadService = uploadService;
|
|
1103
|
+
this.files = [];
|
|
1104
|
+
this.isLoading = false;
|
|
1105
|
+
this.imgUploaded = new EventEmitter();
|
|
1106
|
+
this.loadingText = 'ImgManager.ImgUpload.loading';
|
|
1107
|
+
this.errorUploadingImg = 'ImgManager.ImgUpload.errorUploadingImg';
|
|
1108
|
+
this.errorNotImg = 'ImgManager.ImgUpload.errorNotImg';
|
|
1109
|
+
this.MAX_IMAGE_SIZE = 10000000; // In bytes
|
|
1067
1110
|
}
|
|
1068
1111
|
ngOnInit() {
|
|
1069
1112
|
this.assetsIcon = this.getAssets();
|
|
@@ -1143,16 +1186,16 @@ class ImgUploadComponent {
|
|
|
1143
1186
|
removeDragAndDropStyle() {
|
|
1144
1187
|
this.dragAndDropBox.nativeElement.style = '';
|
|
1145
1188
|
}
|
|
1146
|
-
static
|
|
1147
|
-
static
|
|
1189
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImgUploadComponent, deps: [{ token: AlertService }, { token: ApiService }, { token: i3.TranslateService }, { token: UploadService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1190
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: ImgUploadComponent, isStandalone: false, selector: "img-upload", inputs: { stateDisplayed: "stateDisplayed" }, outputs: { imgUploaded: "imgUploaded" }, viewQueries: [{ propertyName: "dragAndDropBox", first: true, predicate: ["dragAndDropBox"], descendants: true }], ngImport: i0, template: "<div\n class=\"img-upload has-text-centered\"\n [ngClass]=\"{'img-upload--small': stateDisplayed === 'small'}\"\n (click)=\"fileInput.click()\"\n appDragDrop\n (onFileDropped)=\"filesChangeByDragAndDrop($any($event))\"\n #dragAndDropBox\n [@easeInOut]=\"'in'\"\n>\n <input hidden type=\"file\" #fileInput (change)=\"filesChangeByClick($event)\" accept=\"image/*\" multiple >\n <div class=\"img-upload__container\" [ngClass]=\"{'img-upload__container--small': stateDisplayed === 'small'}\">\n\n <div class=\"img-upload__container__wrapper\">\n\n <div class=\"img-upload__container__loader\" *ngIf=\"isLoading\">\n <wz-loader [small]=\"true\" [position]=\"'relative'\"></wz-loader>\n </div>\n\n <ng-container *ngIf=\"!isLoading\">\n <div class=\"blueColor img-upload__container__dropImgIconDiv\">\n <img *ngIf=\"assetsIcon\" [src]=\"assetsIcon\" alt=\"icon picture\" />\n <p>{{ 'ImgManager.ImgUpload.dropImg' | translate }}</p>\n </div>\n\n <p class=\"img-upload__container__or\">{{ 'ImgManager.ImgUpload.or' | translate }}</p>\n\n <div class=\"img-upload__container__text\">\n <i class=\"fal fa-file-upload\"></i>{{ 'ImgManager.ImgUpload.selectImg' | translate }}\n </div>\n </ng-container>\n\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoaderComponent, selector: "wz-loader", inputs: ["text", "small", "position"] }, { kind: "directive", type: DragDropDirective, selector: "[appDragDrop]", outputs: ["onFileDropped"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], animations: [
|
|
1148
1191
|
easeInOut
|
|
1149
|
-
] });
|
|
1192
|
+
] }); }
|
|
1150
1193
|
}
|
|
1151
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1194
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImgUploadComponent, decorators: [{
|
|
1152
1195
|
type: Component,
|
|
1153
|
-
args: [{ selector: 'img-upload', animations: [
|
|
1196
|
+
args: [{ standalone: false, selector: 'img-upload', animations: [
|
|
1154
1197
|
easeInOut
|
|
1155
|
-
], template: "<div\
|
|
1198
|
+
], template: "<div\n class=\"img-upload has-text-centered\"\n [ngClass]=\"{'img-upload--small': stateDisplayed === 'small'}\"\n (click)=\"fileInput.click()\"\n appDragDrop\n (onFileDropped)=\"filesChangeByDragAndDrop($any($event))\"\n #dragAndDropBox\n [@easeInOut]=\"'in'\"\n>\n <input hidden type=\"file\" #fileInput (change)=\"filesChangeByClick($event)\" accept=\"image/*\" multiple >\n <div class=\"img-upload__container\" [ngClass]=\"{'img-upload__container--small': stateDisplayed === 'small'}\">\n\n <div class=\"img-upload__container__wrapper\">\n\n <div class=\"img-upload__container__loader\" *ngIf=\"isLoading\">\n <wz-loader [small]=\"true\" [position]=\"'relative'\"></wz-loader>\n </div>\n\n <ng-container *ngIf=\"!isLoading\">\n <div class=\"blueColor img-upload__container__dropImgIconDiv\">\n <img *ngIf=\"assetsIcon\" [src]=\"assetsIcon\" alt=\"icon picture\" />\n <p>{{ 'ImgManager.ImgUpload.dropImg' | translate }}</p>\n </div>\n\n <p class=\"img-upload__container__or\">{{ 'ImgManager.ImgUpload.or' | translate }}</p>\n\n <div class=\"img-upload__container__text\">\n <i class=\"fal fa-file-upload\"></i>{{ 'ImgManager.ImgUpload.selectImg' | translate }}\n </div>\n </ng-container>\n\n </div>\n </div>\n</div>\n" }]
|
|
1156
1199
|
}], ctorParameters: () => [{ type: AlertService }, { type: ApiService }, { type: i3.TranslateService }, { type: UploadService }], propDecorators: { stateDisplayed: [{
|
|
1157
1200
|
type: Input
|
|
1158
1201
|
}], imgUploaded: [{
|
|
@@ -1163,9 +1206,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
1163
1206
|
}] } });
|
|
1164
1207
|
|
|
1165
1208
|
class PexelsService {
|
|
1166
|
-
http;
|
|
1167
|
-
apiService;
|
|
1168
|
-
translateService;
|
|
1169
1209
|
get apiBaseUrl() {
|
|
1170
1210
|
return this.apiService.CONFIG.pexels_route;
|
|
1171
1211
|
}
|
|
@@ -1173,12 +1213,11 @@ class PexelsService {
|
|
|
1173
1213
|
get apiKey() {
|
|
1174
1214
|
return this.apiService.CONFIG.pexels_token;
|
|
1175
1215
|
}
|
|
1176
|
-
lang;
|
|
1177
|
-
languages = { 'fr': 'fr-FR', 'en': 'en-US', 'it': 'it-IT', 'es': 'es-ES' };
|
|
1178
1216
|
constructor(http, apiService, translateService) {
|
|
1179
1217
|
this.http = http;
|
|
1180
1218
|
this.apiService = apiService;
|
|
1181
1219
|
this.translateService = translateService;
|
|
1220
|
+
this.languages = { 'fr': 'fr-FR', 'en': 'en-US', 'it': 'it-IT', 'es': 'es-ES' };
|
|
1182
1221
|
this.setLang(this.translateService.currentLang);
|
|
1183
1222
|
this.translateService.onLangChange.subscribe(langData => {
|
|
1184
1223
|
this.setLang(langData.lang);
|
|
@@ -1212,10 +1251,10 @@ class PexelsService {
|
|
|
1212
1251
|
return data;
|
|
1213
1252
|
}));
|
|
1214
1253
|
}
|
|
1215
|
-
static
|
|
1216
|
-
static
|
|
1254
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PexelsService, deps: [{ token: i3$1.HttpClient }, { token: ApiService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1255
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PexelsService }); }
|
|
1217
1256
|
}
|
|
1218
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1257
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PexelsService, decorators: [{
|
|
1219
1258
|
type: Injectable
|
|
1220
1259
|
}], ctorParameters: () => [{ type: i3$1.HttpClient }, { type: ApiService }, { type: i3.TranslateService }] });
|
|
1221
1260
|
|
|
@@ -1233,10 +1272,6 @@ const listAnnimation = // the fade-in/fade-out animation.
|
|
|
1233
1272
|
]);
|
|
1234
1273
|
|
|
1235
1274
|
class AbstractDebounceDirective {
|
|
1236
|
-
debounceTime;
|
|
1237
|
-
onEventChange;
|
|
1238
|
-
emitEvent$;
|
|
1239
|
-
subscription$;
|
|
1240
1275
|
constructor() {
|
|
1241
1276
|
this.debounceTime = 500;
|
|
1242
1277
|
this.onEventChange = new EventEmitter();
|
|
@@ -1255,12 +1290,13 @@ class AbstractDebounceDirective {
|
|
|
1255
1290
|
this.subscription$.next();
|
|
1256
1291
|
this.subscription$.complete();
|
|
1257
1292
|
}
|
|
1258
|
-
static
|
|
1259
|
-
static
|
|
1293
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AbstractDebounceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1294
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: AbstractDebounceDirective, isStandalone: false, selector: "AbstractDebounceDirective", inputs: { debounceTime: "debounceTime" }, outputs: { onEventChange: "onEventChange" }, ngImport: i0 }); }
|
|
1260
1295
|
}
|
|
1261
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1296
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AbstractDebounceDirective, decorators: [{
|
|
1262
1297
|
type: Directive,
|
|
1263
1298
|
args: [{
|
|
1299
|
+
standalone: false,
|
|
1264
1300
|
selector: 'AbstractDebounceDirective'
|
|
1265
1301
|
}]
|
|
1266
1302
|
}], ctorParameters: () => [], propDecorators: { debounceTime: [{
|
|
@@ -1277,12 +1313,13 @@ class DebounceKeyupDirective extends AbstractDebounceDirective {
|
|
|
1277
1313
|
event.preventDefault();
|
|
1278
1314
|
this.emitEvent$.next(event);
|
|
1279
1315
|
}
|
|
1280
|
-
static
|
|
1281
|
-
static
|
|
1316
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DebounceKeyupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1317
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: DebounceKeyupDirective, isStandalone: false, selector: "input[debounceKeyUp]", host: { listeners: { "keyup": "onKeyUp($event)" } }, usesInheritance: true, ngImport: i0 }); }
|
|
1282
1318
|
}
|
|
1283
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1319
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DebounceKeyupDirective, decorators: [{
|
|
1284
1320
|
type: Directive,
|
|
1285
1321
|
args: [{
|
|
1322
|
+
standalone: false,
|
|
1286
1323
|
selector: 'input[debounceKeyUp]'
|
|
1287
1324
|
}]
|
|
1288
1325
|
}], ctorParameters: () => [], propDecorators: { onKeyUp: [{
|
|
@@ -1291,13 +1328,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
1291
1328
|
}] } });
|
|
1292
1329
|
|
|
1293
1330
|
class InputSearchComponent {
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1331
|
+
constructor() {
|
|
1332
|
+
this.placeholder = '';
|
|
1333
|
+
this.smallPadding = false;
|
|
1334
|
+
this.innerValue = '';
|
|
1335
|
+
this.changeDebounced = new EventEmitter(); // debounced
|
|
1336
|
+
this.onTouchedCallback = () => { };
|
|
1337
|
+
this.onChangeCallback = () => { };
|
|
1338
|
+
}
|
|
1301
1339
|
get value() {
|
|
1302
1340
|
return this.innerValue;
|
|
1303
1341
|
}
|
|
@@ -1321,12 +1359,12 @@ class InputSearchComponent {
|
|
|
1321
1359
|
handleDebouncedKeyUp(event) {
|
|
1322
1360
|
this.changeDebounced.emit(event.target.value);
|
|
1323
1361
|
}
|
|
1324
|
-
static
|
|
1325
|
-
static
|
|
1362
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: InputSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1363
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: InputSearchComponent, isStandalone: false, selector: "wz-input-search", inputs: { placeholder: "placeholder", smallPadding: "smallPadding", id: "id" }, outputs: { changeDebounced: "changeDebounced" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: InputSearchComponent, multi: true }], ngImport: i0, template: "<div class=\"input-search field\" [ngClass]=\"smallPadding ? 'small-padding' : ''\">\n <p class=\"control has-icons-left has-icons-right\">\n <input\n [placeholder]=\"placeholder\"\n value=\"\"\n class=\"input\"\n type=\"text\"\n [attr.id]=\"id\"\n [(ngModel)]=\"value\"\n debounceKeyUp\n [debounceTime]=\"1000\"\n (onEventChange)=\"handleDebouncedKeyUp($event)\"\n />\n <i class=\"icon fal fa-search\"></i>\n </p>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: DebounceKeyupDirective, selector: "input[debounceKeyUp]" }] }); }
|
|
1326
1364
|
}
|
|
1327
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1365
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: InputSearchComponent, decorators: [{
|
|
1328
1366
|
type: Component,
|
|
1329
|
-
args: [{ selector: 'wz-input-search', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: InputSearchComponent, multi: true }], template: "<div class=\"input-search field\" [ngClass]=\"smallPadding ? 'small-padding' : ''\">\n <p class=\"control has-icons-left has-icons-right\">\n <input\n [placeholder]=\"placeholder\"\n value=\"\"\n class=\"input\"\n type=\"text\"\n [attr.id]=\"id\"\n [(ngModel)]=\"value\"\n debounceKeyUp\n [debounceTime]=\"1000\"\n (onEventChange)=\"handleDebouncedKeyUp($event)\"\n />\n <i class=\"icon fal fa-search\"></i>\n </p>\n</div>\n" }]
|
|
1367
|
+
args: [{ standalone: false, selector: 'wz-input-search', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: InputSearchComponent, multi: true }], template: "<div class=\"input-search field\" [ngClass]=\"smallPadding ? 'small-padding' : ''\">\n <p class=\"control has-icons-left has-icons-right\">\n <input\n [placeholder]=\"placeholder\"\n value=\"\"\n class=\"input\"\n type=\"text\"\n [attr.id]=\"id\"\n [(ngModel)]=\"value\"\n debounceKeyUp\n [debounceTime]=\"1000\"\n (onEventChange)=\"handleDebouncedKeyUp($event)\"\n />\n <i class=\"icon fal fa-search\"></i>\n </p>\n</div>\n" }]
|
|
1330
1368
|
}], propDecorators: { placeholder: [{
|
|
1331
1369
|
type: Input
|
|
1332
1370
|
}], smallPadding: [{
|
|
@@ -1338,18 +1376,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
1338
1376
|
}] } });
|
|
1339
1377
|
|
|
1340
1378
|
class AlertComponent {
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1379
|
+
constructor() {
|
|
1380
|
+
this.icon = true;
|
|
1381
|
+
this.warning = false;
|
|
1382
|
+
this.success = false;
|
|
1383
|
+
this.iconClass = 'fa-solid fa-info';
|
|
1384
|
+
}
|
|
1346
1385
|
ngOnInit() { }
|
|
1347
|
-
static
|
|
1348
|
-
static
|
|
1386
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AlertComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1387
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: AlertComponent, isStandalone: false, selector: "wz-alert", inputs: { icon: "icon", warning: "warning", success: "success", iconClass: "iconClass" }, ngImport: i0, template: "<div class=\"wz-alert\" [ngClass]=\"{ success: success, warning: warning }\">\n <i *ngIf=\"icon\" [ngClass]=\"iconClass\"></i>\n <p><ng-content></ng-content></p>\n</div>\n", styles: [".wz-alert{width:100%;background-color:#52aecd26;color:#52aecd;border-radius:3px;display:flex;flex-wrap:nowrap;justify-content:space-between;padding:20px}.wz-alert.success{background-color:#2ecc7126}.wz-alert.success p{color:#11552e}.wz-alert.success p>*{color:#11552e}.wz-alert.success i{color:#2ecc71}.wz-alert.warning{background-color:#e9565626}.wz-alert.warning p{color:#3a0505}.wz-alert.warning p>*{color:#3a0505}.wz-alert.warning i{color:#e95656}.wz-alert p{width:100%;font-size:.875rem;line-height:1.5625rem;margin:0;padding:0;color:#1e5568}.wz-alert p>*{color:#1e5568}.wz-alert i{width:auto;margin:0 10px 0 0;color:inherit;font-size:.875rem;line-height:1.5625rem}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
1349
1388
|
}
|
|
1350
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1389
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AlertComponent, decorators: [{
|
|
1351
1390
|
type: Component,
|
|
1352
|
-
args: [{ selector: 'wz-alert', template: "<div class=\"wz-alert\" [ngClass]=\"{ success: success, warning: warning }\">\n <i *ngIf=\"icon\" [ngClass]=\"iconClass\"></i>\n <p><ng-content></ng-content></p>\n</div>\n" }]
|
|
1391
|
+
args: [{ standalone: false, selector: 'wz-alert', template: "<div class=\"wz-alert\" [ngClass]=\"{ success: success, warning: warning }\">\n <i *ngIf=\"icon\" [ngClass]=\"iconClass\"></i>\n <p><ng-content></ng-content></p>\n</div>\n", styles: [".wz-alert{width:100%;background-color:#52aecd26;color:#52aecd;border-radius:3px;display:flex;flex-wrap:nowrap;justify-content:space-between;padding:20px}.wz-alert.success{background-color:#2ecc7126}.wz-alert.success p{color:#11552e}.wz-alert.success p>*{color:#11552e}.wz-alert.success i{color:#2ecc71}.wz-alert.warning{background-color:#e9565626}.wz-alert.warning p{color:#3a0505}.wz-alert.warning p>*{color:#3a0505}.wz-alert.warning i{color:#e95656}.wz-alert p{width:100%;font-size:.875rem;line-height:1.5625rem;margin:0;padding:0;color:#1e5568}.wz-alert p>*{color:#1e5568}.wz-alert i{width:auto;margin:0 10px 0 0;color:inherit;font-size:.875rem;line-height:1.5625rem}\n"] }]
|
|
1353
1392
|
}], ctorParameters: () => [], propDecorators: { icon: [{
|
|
1354
1393
|
type: Input
|
|
1355
1394
|
}], warning: [{
|
|
@@ -1361,33 +1400,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
1361
1400
|
}] } });
|
|
1362
1401
|
|
|
1363
1402
|
class PexelLibComponent {
|
|
1364
|
-
wzImgLibService;
|
|
1365
|
-
alertService;
|
|
1366
|
-
translateService;
|
|
1367
|
-
uploadService;
|
|
1368
|
-
changeDetectorRef;
|
|
1369
|
-
stateDisplayed;
|
|
1370
|
-
searchValue = '';
|
|
1371
|
-
/** Pass to true to hide search input */
|
|
1372
|
-
disableSearch = false;
|
|
1373
|
-
perPage = 30;
|
|
1374
|
-
searchUpdated = new Subject();
|
|
1375
|
-
oldSearchValue;
|
|
1376
|
-
nbResult = 0;
|
|
1377
|
-
wzImgLibDto;
|
|
1378
|
-
currentPage = 1;
|
|
1379
|
-
isLoading = true;
|
|
1380
|
-
initComponent = true;
|
|
1381
|
-
photosColumns = [];
|
|
1382
|
-
nbColumns = 6;
|
|
1383
|
-
responsiveColumns = [1250, 1050, 750, 500];
|
|
1384
|
-
outerElement = null;
|
|
1385
|
-
uploadingImg = 'ImgManager.PexelLib.uploadingImg';
|
|
1386
|
-
untitled = 'ImgManager.PexelLib.untitled';
|
|
1387
|
-
successUploadPhoto = 'ImgManager.PexelLib.successImport';
|
|
1388
|
-
errorUploadPhoto = 'ImgManager.PexelLib.errorUploadPhoto';
|
|
1389
|
-
errorRetrievePhotos = 'ImgManager.PexelLib.errorRetrievePhotos';
|
|
1390
|
-
subs = [];
|
|
1391
1403
|
set content(control) {
|
|
1392
1404
|
this.outerElement = control;
|
|
1393
1405
|
}
|
|
@@ -1397,6 +1409,25 @@ class PexelLibComponent {
|
|
|
1397
1409
|
this.translateService = translateService;
|
|
1398
1410
|
this.uploadService = uploadService;
|
|
1399
1411
|
this.changeDetectorRef = changeDetectorRef;
|
|
1412
|
+
this.searchValue = '';
|
|
1413
|
+
/** Pass to true to hide search input */
|
|
1414
|
+
this.disableSearch = false;
|
|
1415
|
+
this.perPage = 30;
|
|
1416
|
+
this.searchUpdated = new Subject();
|
|
1417
|
+
this.nbResult = 0;
|
|
1418
|
+
this.currentPage = 1;
|
|
1419
|
+
this.isLoading = true;
|
|
1420
|
+
this.initComponent = true;
|
|
1421
|
+
this.photosColumns = [];
|
|
1422
|
+
this.nbColumns = 6;
|
|
1423
|
+
this.responsiveColumns = [1250, 1050, 750, 500];
|
|
1424
|
+
this.outerElement = null;
|
|
1425
|
+
this.uploadingImg = 'ImgManager.PexelLib.uploadingImg';
|
|
1426
|
+
this.untitled = 'ImgManager.PexelLib.untitled';
|
|
1427
|
+
this.successUploadPhoto = 'ImgManager.PexelLib.successImport';
|
|
1428
|
+
this.errorUploadPhoto = 'ImgManager.PexelLib.errorUploadPhoto';
|
|
1429
|
+
this.errorRetrievePhotos = 'ImgManager.PexelLib.errorRetrievePhotos';
|
|
1430
|
+
this.subs = [];
|
|
1400
1431
|
}
|
|
1401
1432
|
ngAfterViewInit() {
|
|
1402
1433
|
this.oldSearchValue = this.searchValue;
|
|
@@ -1527,18 +1558,18 @@ class PexelLibComponent {
|
|
|
1527
1558
|
ngOnDestroy() {
|
|
1528
1559
|
this.subs.forEach(sub => sub.unsubscribe());
|
|
1529
1560
|
}
|
|
1530
|
-
static
|
|
1531
|
-
static
|
|
1561
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PexelLibComponent, deps: [{ token: PexelsService }, { token: AlertService }, { token: i3.TranslateService }, { token: UploadService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1562
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: PexelLibComponent, isStandalone: false, selector: "pexels-lib", inputs: { stateDisplayed: "stateDisplayed", searchValue: "searchValue", disableSearch: "disableSearch" }, viewQueries: [{ propertyName: "content", first: true, predicate: ["outerElement"], descendants: true }], ngImport: i0, template: "<div class=\"pexels-lib\" #outerElement [@easeInOut]=\"'in'\">\n\n <ng-scrollbar\n [reachedOffset]=\"300\"\n class=\"pexels-lib__scroll\"\n [ngClass]=\"{\n 'pexels-lib__scroll--smallDisplay': stateDisplayed === 'small',\n 'pexels-lib__scroll--noResult': !nbResult,\n 'pexels-lib__scroll--hide': (!nbResult && disableSearch)\n }\"\n (reachedBottom)=\"onBottomReached()\"\n >\n <div\n *ngIf=\"!disableSearch\"\n class=\"pexels-lib__search\"\n [ngClass]=\"{'pexels-lib__search--smallDisplay': stateDisplayed === 'small'}\"\n >\n <wz-input-search\n [(ngModel)]=\"searchValue\"\n [placeholder]=\"'ImgManager.SearchBar.placeholder' | translate\"\n (changeDebounced)=\"onSearchNameChanged()\"\n [smallPadding]=\"stateDisplayed === 'small'\">\n </wz-input-search>\n </div>\n\n <div *ngIf=\"!initComponent\" class=\"pexels-lib__wrapper\">\n <p *ngIf=\"nbResult\" class=\"pexels-lib__wrapper__result-nb\">{{ 'ImgManager.PexelLib.nbImgFound' | translate }} : {{ nbResult }}</p>\n\n <div class=\"pexels-lib__wrapper__result\">\n\n <div *ngFor=\"let photosColumn of photosColumns; let indexCol = index;\" class=\"pexels-lib__wrapper__result__column\" [@listAnimation]=\"photosColumn.photos.length\">\n <div *ngFor=\"let photo of photosColumn.photos; let indexPhoto = index;\" class=\"pexels-lib__wrapper__result__column__element\">\n\n <img [alt]=\"photo.src.medium\" [src]=\"photo.src.medium\"\n class=\"pexels-lib__wrapper__result__column__element__img\"/>\n\n <div class=\"pexels-lib__wrapper__result__column__element__wrapper\">\n <span class=\"pexels-lib__wrapper__result__column__element__wrapper__infos\">\n {{ photo.width }} x {{ photo.height}}\n </span>\n\n <div class=\"dropdown is-up\" [ngClass]=\"{'is-hoverable': !photo.uploading}\">\n <div class=\"dropdown-trigger\">\n <button\n type=\"button\"\n class=\"button pexels-lib__wrapper__result__column__element__wrapper__button\"\n aria-haspopup=\"true\"\n aria-controls=\"dropdown-menu\">\n\n <div *ngIf=\"!photo.uploading\" (click)=\"uploadPhoto(photo, photo.src.large2x)\">\n <span>{{ 'ImgManager.PexelLib.import' | translate }}</span>\n <span class=\"icon is-small\">\n <i class=\"fa-solid fa-angle-up\" aria-hidden=\"true\"></i>\n </span>\n <ng-container *ngIf=\"photo.uploaded\">\n <i class=\"fal fa-check\"></i>\n </ng-container>\n </div>\n\n <ng-container *ngIf=\"photo.uploading\">\n {{ 'ImgManager.PexelLib.importation' | translate }}\n <span btnLoadingAnim class=\"btnLoadingAnnimation\"></span>\n </ng-container>\n\n </button>\n </div>\n <div class=\"dropdown-menu pexels-lib__wrapper__result__column__element__wrapper__dropdown\" id=\"dropdown-menu\" role=\"menu\">\n <div class=\"dropdown-content\">\n <div class=\"dropdown-content__wrapper\">\n <div class=\"dropdown-item\" (click)=\"uploadPhoto(photo, photo.src.portrait)\">\n <p>{{ 'ImgManager.PexelLib.portrait' | translate }}</p>\n <i class=\"fal fa-check iPortrait\"></i>\n </div>\n <div class=\"dropdown-item\" (click)=\"uploadPhoto(photo, photo.src.landscape)\">\n <p>{{ 'ImgManager.PexelLib.landscape' | translate }}</p>\n <i class=\"fal fa-check iLandscape\"></i>\n </div>\n <div class=\"dropdown-item\" (click)=\"uploadPhoto(photo, photo.src.large2x)\">\n <p>{{ 'ImgManager.PexelLib.original' | translate }}</p>\n <i class=\"fal fa-check iOriginal\"></i>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </div>\n </div>\n </div>\n\n </ng-scrollbar>\n\n <ng-container *ngIf=\"isLoading\">\n <wz-loader></wz-loader>\n </ng-container>\n <div\n *ngIf=\"!isLoading && !nbResult\"\n class=\"pexels-lib__alert\"\n [@easeInOut]=\"'in'\">\n <wz-alert [warning]=\"true\">\n {{ 'ImgManager.PexelLib.noResult' | translate }}\n </wz-alert>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }, { kind: "directive", type: i8.NgScrollReached, selector: "ng-scrollbar[reachedTop], ng-scrollbar[reachedBottom], ng-scrollbar[reachedStart], ng-scrollbar[reachedEnd]", inputs: ["reachedOffset", "reachedTopOffset", "reachedBottomOffset", "reachedStartOffset", "reachedEndOffset", "disableReached"], outputs: ["reachedTop", "reachedBottom", "reachedStart", "reachedEnd"] }, { kind: "component", type: LoaderComponent, selector: "wz-loader", inputs: ["text", "small", "position"] }, { kind: "component", type: InputSearchComponent, selector: "wz-input-search", inputs: ["placeholder", "smallPadding", "id"], outputs: ["changeDebounced"] }, { kind: "component", type: AlertComponent, selector: "wz-alert", inputs: ["icon", "warning", "success", "iconClass"] }, { kind: "directive", type: LoadingDirective, selector: "[btnLoadingAnim]" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], animations: [
|
|
1532
1563
|
easeInOut,
|
|
1533
1564
|
listAnnimation
|
|
1534
|
-
], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1565
|
+
], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1535
1566
|
}
|
|
1536
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1567
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PexelLibComponent, decorators: [{
|
|
1537
1568
|
type: Component,
|
|
1538
|
-
args: [{ selector: 'pexels-lib', animations: [
|
|
1569
|
+
args: [{ standalone: false, selector: 'pexels-lib', animations: [
|
|
1539
1570
|
easeInOut,
|
|
1540
1571
|
listAnnimation
|
|
1541
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"pexels-lib\" #outerElement [@easeInOut]=\"'in'\">\
|
|
1572
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"pexels-lib\" #outerElement [@easeInOut]=\"'in'\">\n\n <ng-scrollbar\n [reachedOffset]=\"300\"\n class=\"pexels-lib__scroll\"\n [ngClass]=\"{\n 'pexels-lib__scroll--smallDisplay': stateDisplayed === 'small',\n 'pexels-lib__scroll--noResult': !nbResult,\n 'pexels-lib__scroll--hide': (!nbResult && disableSearch)\n }\"\n (reachedBottom)=\"onBottomReached()\"\n >\n <div\n *ngIf=\"!disableSearch\"\n class=\"pexels-lib__search\"\n [ngClass]=\"{'pexels-lib__search--smallDisplay': stateDisplayed === 'small'}\"\n >\n <wz-input-search\n [(ngModel)]=\"searchValue\"\n [placeholder]=\"'ImgManager.SearchBar.placeholder' | translate\"\n (changeDebounced)=\"onSearchNameChanged()\"\n [smallPadding]=\"stateDisplayed === 'small'\">\n </wz-input-search>\n </div>\n\n <div *ngIf=\"!initComponent\" class=\"pexels-lib__wrapper\">\n <p *ngIf=\"nbResult\" class=\"pexels-lib__wrapper__result-nb\">{{ 'ImgManager.PexelLib.nbImgFound' | translate }} : {{ nbResult }}</p>\n\n <div class=\"pexels-lib__wrapper__result\">\n\n <div *ngFor=\"let photosColumn of photosColumns; let indexCol = index;\" class=\"pexels-lib__wrapper__result__column\" [@listAnimation]=\"photosColumn.photos.length\">\n <div *ngFor=\"let photo of photosColumn.photos; let indexPhoto = index;\" class=\"pexels-lib__wrapper__result__column__element\">\n\n <img [alt]=\"photo.src.medium\" [src]=\"photo.src.medium\"\n class=\"pexels-lib__wrapper__result__column__element__img\"/>\n\n <div class=\"pexels-lib__wrapper__result__column__element__wrapper\">\n <span class=\"pexels-lib__wrapper__result__column__element__wrapper__infos\">\n {{ photo.width }} x {{ photo.height}}\n </span>\n\n <div class=\"dropdown is-up\" [ngClass]=\"{'is-hoverable': !photo.uploading}\">\n <div class=\"dropdown-trigger\">\n <button\n type=\"button\"\n class=\"button pexels-lib__wrapper__result__column__element__wrapper__button\"\n aria-haspopup=\"true\"\n aria-controls=\"dropdown-menu\">\n\n <div *ngIf=\"!photo.uploading\" (click)=\"uploadPhoto(photo, photo.src.large2x)\">\n <span>{{ 'ImgManager.PexelLib.import' | translate }}</span>\n <span class=\"icon is-small\">\n <i class=\"fa-solid fa-angle-up\" aria-hidden=\"true\"></i>\n </span>\n <ng-container *ngIf=\"photo.uploaded\">\n <i class=\"fal fa-check\"></i>\n </ng-container>\n </div>\n\n <ng-container *ngIf=\"photo.uploading\">\n {{ 'ImgManager.PexelLib.importation' | translate }}\n <span btnLoadingAnim class=\"btnLoadingAnnimation\"></span>\n </ng-container>\n\n </button>\n </div>\n <div class=\"dropdown-menu pexels-lib__wrapper__result__column__element__wrapper__dropdown\" id=\"dropdown-menu\" role=\"menu\">\n <div class=\"dropdown-content\">\n <div class=\"dropdown-content__wrapper\">\n <div class=\"dropdown-item\" (click)=\"uploadPhoto(photo, photo.src.portrait)\">\n <p>{{ 'ImgManager.PexelLib.portrait' | translate }}</p>\n <i class=\"fal fa-check iPortrait\"></i>\n </div>\n <div class=\"dropdown-item\" (click)=\"uploadPhoto(photo, photo.src.landscape)\">\n <p>{{ 'ImgManager.PexelLib.landscape' | translate }}</p>\n <i class=\"fal fa-check iLandscape\"></i>\n </div>\n <div class=\"dropdown-item\" (click)=\"uploadPhoto(photo, photo.src.large2x)\">\n <p>{{ 'ImgManager.PexelLib.original' | translate }}</p>\n <i class=\"fal fa-check iOriginal\"></i>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </div>\n </div>\n </div>\n\n </ng-scrollbar>\n\n <ng-container *ngIf=\"isLoading\">\n <wz-loader></wz-loader>\n </ng-container>\n <div\n *ngIf=\"!isLoading && !nbResult\"\n class=\"pexels-lib__alert\"\n [@easeInOut]=\"'in'\">\n <wz-alert [warning]=\"true\">\n {{ 'ImgManager.PexelLib.noResult' | translate }}\n </wz-alert>\n </div>\n</div>\n" }]
|
|
1542
1573
|
}], ctorParameters: () => [{ type: PexelsService }, { type: AlertService }, { type: i3.TranslateService }, { type: UploadService }, { type: i0.ChangeDetectorRef }], propDecorators: { stateDisplayed: [{
|
|
1543
1574
|
type: Input
|
|
1544
1575
|
}], searchValue: [{
|
|
@@ -1551,8 +1582,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
1551
1582
|
}] } });
|
|
1552
1583
|
|
|
1553
1584
|
class CopyClipboardDirective {
|
|
1554
|
-
|
|
1555
|
-
|
|
1585
|
+
constructor() {
|
|
1586
|
+
this.copied = new EventEmitter();
|
|
1587
|
+
}
|
|
1556
1588
|
onClick(event) {
|
|
1557
1589
|
event.preventDefault();
|
|
1558
1590
|
if (!this.payload)
|
|
@@ -1567,12 +1599,12 @@ class CopyClipboardDirective {
|
|
|
1567
1599
|
document.execCommand("copy");
|
|
1568
1600
|
document.removeEventListener("copy", listener, false);
|
|
1569
1601
|
}
|
|
1570
|
-
static
|
|
1571
|
-
static
|
|
1602
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CopyClipboardDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1603
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: CopyClipboardDirective, isStandalone: false, selector: "[copy-clipboard]", inputs: { payload: ["copy-clipboard", "payload"] }, outputs: { copied: "copied" }, host: { listeners: { "click": "onClick($event)" } }, ngImport: i0 }); }
|
|
1572
1604
|
}
|
|
1573
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1605
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CopyClipboardDirective, decorators: [{
|
|
1574
1606
|
type: Directive,
|
|
1575
|
-
args: [{ selector: '[copy-clipboard]' }]
|
|
1607
|
+
args: [{ standalone: false, selector: '[copy-clipboard]' }]
|
|
1576
1608
|
}], propDecorators: { payload: [{
|
|
1577
1609
|
type: Input,
|
|
1578
1610
|
args: ["copy-clipboard"]
|
|
@@ -1585,21 +1617,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
1585
1617
|
}] } });
|
|
1586
1618
|
|
|
1587
1619
|
class EditorInfoSectionComponent {
|
|
1588
|
-
alertService;
|
|
1589
|
-
imgToEdit;
|
|
1590
1620
|
set isNameModified(isNameModified) {
|
|
1591
1621
|
this._isNameModified = isNameModified;
|
|
1592
1622
|
}
|
|
1593
1623
|
get isNameModified() {
|
|
1594
1624
|
return this._isNameModified;
|
|
1595
1625
|
}
|
|
1596
|
-
_isNameModified = false;
|
|
1597
|
-
isNameModifiedChange = new EventEmitter();
|
|
1598
|
-
imgName;
|
|
1599
|
-
imgRoute;
|
|
1600
|
-
msgCopyToClipBoard = 'ImgManager.ImgEditor.copytoClipBoard';
|
|
1601
1626
|
constructor(alertService) {
|
|
1602
1627
|
this.alertService = alertService;
|
|
1628
|
+
this._isNameModified = false;
|
|
1629
|
+
this.isNameModifiedChange = new EventEmitter();
|
|
1630
|
+
this.msgCopyToClipBoard = 'ImgManager.ImgEditor.copytoClipBoard';
|
|
1603
1631
|
}
|
|
1604
1632
|
ngOnInit() {
|
|
1605
1633
|
this.init();
|
|
@@ -1616,12 +1644,12 @@ class EditorInfoSectionComponent {
|
|
|
1616
1644
|
onNameChange() {
|
|
1617
1645
|
this.isNameModifiedChange.emit(true);
|
|
1618
1646
|
}
|
|
1619
|
-
static
|
|
1620
|
-
static
|
|
1647
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: EditorInfoSectionComponent, deps: [{ token: AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1648
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: EditorInfoSectionComponent, isStandalone: false, selector: "info-section", inputs: { imgToEdit: "imgToEdit", isNameModified: "isNameModified" }, outputs: { isNameModifiedChange: "isNameModifiedChange" }, ngImport: i0, template: "\n<!-- Img properties -->\n<div class=\"img-editor__infoSection__propertyEditable\">\n <p class=\"mainColor\">\n {{ 'ImgManager.UploadList.properties.imgName' | translate }}\n <span class=\"img-editor__infoSection__propertyEditable__tooltips\" [nwbToolTip]=\"'ImgManager.ImgEditor.NameInfo' | translate\" [nwbToolTipIsMultiline]=\"true\" nwbToolTipPosition=\"right\"><i class=\"fa-solid fa-info-circle\"></i></span>\n </p>\n <input\n type=\"text\"\n class=\"img-editor__infoSection__propertyEditable__input\"\n placeholder=\"{{'ImgManager.ImgEditor.nameEx' | translate}} \"\n [(ngModel)]=\"imgToEdit.display_name\"\n debounceKeyUp\n [debounceTime]=\"500\"\n (onEventChange)=\"onNameChange()\">\n</div>\n<div class=\"img-editor__infoSection__propertyEditable\">\n <p class=\"mainColor\">\n {{ 'ImgManager.UploadList.properties.imgURL' | translate }}\n <span class=\"img-editor__infoSection__propertyEditable__tooltips\" [nwbToolTip]=\"'ImgManager.editImg.changeName' | translate\" [nwbToolTipIsMultiline]=\"true\" nwbToolTipPosition=\"right\"><i class=\"fa-solid fa-info-circle\"></i></span>\n </p>\n <button type=\"button\" [copy-clipboard]=\"imgToEdit.file_name | imgSrc : 'raw'\" (copied)=\"copyToClipBoard($event)\" ><span class=\"img-editor__infoSection__propertyEditable__span\">{{imgToEdit.file_name}}</span> <i class=\"far fa-copy\"></i></button>\n</div>\n<div class=\"img-editor__infoSection__property\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.properties.imgSize' | translate }} :</p>\n <p>{{imgToEdit.raw_height}}*{{imgToEdit.raw_width}}px</p>\n</div>\n<div class=\"img-editor__infoSection__property\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.properties.imgWeight' | translate }} :</p>\n <p >{{getFileSize()}} ko</p>\n</div>\n\n<!-- SEO info -->\n\n<span class=\"img-editor__infoSection__divider\"></span>\n\n<div class=\"img-editor__infoSection__titleSEO\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.seo.title' | translate }}</p>\n</div>\n\n<div class=\"img-editor__infoSection__propertySEO\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.seo.rezise' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n <p class=\"img-editor__infoSection__propertySEO__tooltips\" [nwbToolTip]=\"'ImgManager.UploadList.seo.reziseTooltips' | translate\" [nwbToolTipIsMultiline]=\"true\" nwbToolTipPosition=\"right\"><i class=\"fa-solid fa-info-circle\"></i></p>\n</div>\n<div class=\"img-editor__infoSection__propertySEO\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.seo.webp' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n <p class=\"img-editor__infoSection__propertySEO__tooltips\" [nwbToolTip]=\"'ImgManager.UploadList.seo.webpTooltips' | translate\" [nwbToolTipIsMultiline]=\"true\" nwbToolTipPosition=\"right\"><i class=\"fa-solid fa-info-circle\"></i></p>\n</div>\n<div class=\"img-editor__infoSection__propertySEO\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.seo.cdn' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n <p class=\"img-editor__infoSection__propertySEO__tooltips\" [nwbToolTip]=\"'ImgManager.UploadList.seo.cdnTooltips' | translate\" [nwbToolTipIsMultiline]=\"true\" nwbToolTipPosition=\"right\"><i class=\"fa-solid fa-info-circle\"></i></p>\n\n</div>\n<div class=\"img-editor__infoSection__propertySEO\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.seo.lazyloading' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n <p class=\"img-editor__infoSection__propertySEO__tooltips\" [nwbToolTip]=\"'ImgManager.UploadList.seo.lazyloadingTooltips' | translate\" [nwbToolTipIsMultiline]=\"true\" nwbToolTipPosition=\"right\"><i class=\"fa-solid fa-info-circle\"></i></p>\n</div>\n", dependencies: [{ kind: "directive", type: i2$1.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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NwbToolTipDirective, selector: "[nwbToolTip]", inputs: ["nwbToolTip", "nwbToolTipPosition", "nwbToolTipIsMultiline"] }, { kind: "directive", type: CopyClipboardDirective, selector: "[copy-clipboard]", inputs: ["copy-clipboard"], outputs: ["copied"] }, { kind: "directive", type: DebounceKeyupDirective, selector: "input[debounceKeyUp]" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "pipe", type: ImageSrcPipe, name: "imgSrc" }] }); }
|
|
1621
1649
|
}
|
|
1622
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1650
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: EditorInfoSectionComponent, decorators: [{
|
|
1623
1651
|
type: Component,
|
|
1624
|
-
args: [{ selector: 'info-section', template: "\
|
|
1652
|
+
args: [{ standalone: false, selector: 'info-section', template: "\n<!-- Img properties -->\n<div class=\"img-editor__infoSection__propertyEditable\">\n <p class=\"mainColor\">\n {{ 'ImgManager.UploadList.properties.imgName' | translate }}\n <span class=\"img-editor__infoSection__propertyEditable__tooltips\" [nwbToolTip]=\"'ImgManager.ImgEditor.NameInfo' | translate\" [nwbToolTipIsMultiline]=\"true\" nwbToolTipPosition=\"right\"><i class=\"fa-solid fa-info-circle\"></i></span>\n </p>\n <input\n type=\"text\"\n class=\"img-editor__infoSection__propertyEditable__input\"\n placeholder=\"{{'ImgManager.ImgEditor.nameEx' | translate}} \"\n [(ngModel)]=\"imgToEdit.display_name\"\n debounceKeyUp\n [debounceTime]=\"500\"\n (onEventChange)=\"onNameChange()\">\n</div>\n<div class=\"img-editor__infoSection__propertyEditable\">\n <p class=\"mainColor\">\n {{ 'ImgManager.UploadList.properties.imgURL' | translate }}\n <span class=\"img-editor__infoSection__propertyEditable__tooltips\" [nwbToolTip]=\"'ImgManager.editImg.changeName' | translate\" [nwbToolTipIsMultiline]=\"true\" nwbToolTipPosition=\"right\"><i class=\"fa-solid fa-info-circle\"></i></span>\n </p>\n <button type=\"button\" [copy-clipboard]=\"imgToEdit.file_name | imgSrc : 'raw'\" (copied)=\"copyToClipBoard($event)\" ><span class=\"img-editor__infoSection__propertyEditable__span\">{{imgToEdit.file_name}}</span> <i class=\"far fa-copy\"></i></button>\n</div>\n<div class=\"img-editor__infoSection__property\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.properties.imgSize' | translate }} :</p>\n <p>{{imgToEdit.raw_height}}*{{imgToEdit.raw_width}}px</p>\n</div>\n<div class=\"img-editor__infoSection__property\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.properties.imgWeight' | translate }} :</p>\n <p >{{getFileSize()}} ko</p>\n</div>\n\n<!-- SEO info -->\n\n<span class=\"img-editor__infoSection__divider\"></span>\n\n<div class=\"img-editor__infoSection__titleSEO\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.seo.title' | translate }}</p>\n</div>\n\n<div class=\"img-editor__infoSection__propertySEO\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.seo.rezise' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n <p class=\"img-editor__infoSection__propertySEO__tooltips\" [nwbToolTip]=\"'ImgManager.UploadList.seo.reziseTooltips' | translate\" [nwbToolTipIsMultiline]=\"true\" nwbToolTipPosition=\"right\"><i class=\"fa-solid fa-info-circle\"></i></p>\n</div>\n<div class=\"img-editor__infoSection__propertySEO\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.seo.webp' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n <p class=\"img-editor__infoSection__propertySEO__tooltips\" [nwbToolTip]=\"'ImgManager.UploadList.seo.webpTooltips' | translate\" [nwbToolTipIsMultiline]=\"true\" nwbToolTipPosition=\"right\"><i class=\"fa-solid fa-info-circle\"></i></p>\n</div>\n<div class=\"img-editor__infoSection__propertySEO\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.seo.cdn' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n <p class=\"img-editor__infoSection__propertySEO__tooltips\" [nwbToolTip]=\"'ImgManager.UploadList.seo.cdnTooltips' | translate\" [nwbToolTipIsMultiline]=\"true\" nwbToolTipPosition=\"right\"><i class=\"fa-solid fa-info-circle\"></i></p>\n\n</div>\n<div class=\"img-editor__infoSection__propertySEO\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.seo.lazyloading' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n <p class=\"img-editor__infoSection__propertySEO__tooltips\" [nwbToolTip]=\"'ImgManager.UploadList.seo.lazyloadingTooltips' | translate\" [nwbToolTipIsMultiline]=\"true\" nwbToolTipPosition=\"right\"><i class=\"fa-solid fa-info-circle\"></i></p>\n</div>\n" }]
|
|
1625
1653
|
}], ctorParameters: () => [{ type: AlertService }], propDecorators: { imgToEdit: [{
|
|
1626
1654
|
type: Input
|
|
1627
1655
|
}], isNameModified: [{
|
|
@@ -1630,6 +1658,242 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
1630
1658
|
type: Output
|
|
1631
1659
|
}] } });
|
|
1632
1660
|
|
|
1661
|
+
class VideoInfoService {
|
|
1662
|
+
constructor(http) {
|
|
1663
|
+
this.http = http;
|
|
1664
|
+
this.YT_API_KEY = '';
|
|
1665
|
+
this.YT_API_URL = 'https://www.googleapis.com/youtube/v3/videos';
|
|
1666
|
+
}
|
|
1667
|
+
getVideoInfo(videoUrl) {
|
|
1668
|
+
if (!videoUrl)
|
|
1669
|
+
return null;
|
|
1670
|
+
if (this.isYouTube(videoUrl)) {
|
|
1671
|
+
const id = this.extractYoutubeId(videoUrl);
|
|
1672
|
+
return this.getYouTubeInfo(id);
|
|
1673
|
+
}
|
|
1674
|
+
if (this.isVimeo(videoUrl)) {
|
|
1675
|
+
const id = this.extractVimeoId(videoUrl);
|
|
1676
|
+
return this.getVimeoInfo(id);
|
|
1677
|
+
}
|
|
1678
|
+
return null;
|
|
1679
|
+
}
|
|
1680
|
+
isYouTube(url) {
|
|
1681
|
+
return url.includes('youtube.com') || url.includes('youtu.be');
|
|
1682
|
+
}
|
|
1683
|
+
isVimeo(url) {
|
|
1684
|
+
return url.includes('vimeo.com');
|
|
1685
|
+
}
|
|
1686
|
+
extractYoutubeId(url) {
|
|
1687
|
+
const regExp = /^.*(youtu.be\/|v=|embed\/)([^#\&\?]*).*/;
|
|
1688
|
+
const match = url.match(regExp);
|
|
1689
|
+
return match && match[2] ? match[2] : null;
|
|
1690
|
+
}
|
|
1691
|
+
extractVimeoId(url) {
|
|
1692
|
+
const regExp = /vimeo\.com\/(?:video\/)?(\d+)/;
|
|
1693
|
+
const match = url.match(regExp);
|
|
1694
|
+
return match ? match[1] : null;
|
|
1695
|
+
}
|
|
1696
|
+
getYouTubeInfo(id) {
|
|
1697
|
+
return this.http.get(`${this.YT_API_URL}?id=${id}&part=contentDetails,snippet&key=${this.YT_API_KEY}`)
|
|
1698
|
+
.pipe(map(res => {
|
|
1699
|
+
const item = res.items?.[0];
|
|
1700
|
+
if (!item)
|
|
1701
|
+
return null;
|
|
1702
|
+
return {
|
|
1703
|
+
duration: this.formatYoutubeDuration(item.contentDetails.duration),
|
|
1704
|
+
publishDate: this.formatDate(item.snippet.publishedAt)
|
|
1705
|
+
};
|
|
1706
|
+
}));
|
|
1707
|
+
}
|
|
1708
|
+
formatYoutubeDuration(duration) {
|
|
1709
|
+
const match = duration.match(/PT(\d+M)?(\d+S)?/);
|
|
1710
|
+
const minutes = match?.[1] ? parseInt(match[1]) : 0;
|
|
1711
|
+
const seconds = match?.[2] ? parseInt(match[2]) : 0;
|
|
1712
|
+
return `${minutes} min ${seconds} sec`;
|
|
1713
|
+
}
|
|
1714
|
+
getVimeoInfo(id) {
|
|
1715
|
+
return this.http.get(`https://vimeo.com/api/v2/video/${id}.json`)
|
|
1716
|
+
.pipe(map(res => {
|
|
1717
|
+
const item = res?.[0];
|
|
1718
|
+
if (!item)
|
|
1719
|
+
return null;
|
|
1720
|
+
return {
|
|
1721
|
+
duration: this.formatVimeoDuration(item.duration),
|
|
1722
|
+
publishDate: this.formatDate(item.upload_date)
|
|
1723
|
+
};
|
|
1724
|
+
}));
|
|
1725
|
+
}
|
|
1726
|
+
formatVimeoDuration(seconds) {
|
|
1727
|
+
const min = Math.floor(seconds / 60);
|
|
1728
|
+
const sec = seconds % 60;
|
|
1729
|
+
return `${min} min ${sec} sec`;
|
|
1730
|
+
}
|
|
1731
|
+
formatDate(dateStr) {
|
|
1732
|
+
const d = new Date(dateStr);
|
|
1733
|
+
return d.toLocaleDateString('fr-FR');
|
|
1734
|
+
}
|
|
1735
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: VideoInfoService, deps: [{ token: i3$1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1736
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: VideoInfoService, providedIn: 'root' }); }
|
|
1737
|
+
}
|
|
1738
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: VideoInfoService, decorators: [{
|
|
1739
|
+
type: Injectable,
|
|
1740
|
+
args: [{ providedIn: 'root' }]
|
|
1741
|
+
}], ctorParameters: () => [{ type: i3$1.HttpClient }] });
|
|
1742
|
+
|
|
1743
|
+
class EditorInfoVideoComponent {
|
|
1744
|
+
constructor(videoInfoService) {
|
|
1745
|
+
this.videoInfoService = videoInfoService;
|
|
1746
|
+
this.videoLink = '';
|
|
1747
|
+
this.videoLinkChange = new EventEmitter();
|
|
1748
|
+
this.isVideoModified = false;
|
|
1749
|
+
this.isVideoModifiedChange = new EventEmitter();
|
|
1750
|
+
this.deleteVideo = new EventEmitter();
|
|
1751
|
+
this.videoDuration = '';
|
|
1752
|
+
this.videoPublishDate = '';
|
|
1753
|
+
}
|
|
1754
|
+
ngOnInit() {
|
|
1755
|
+
this.loadVideoInfos();
|
|
1756
|
+
}
|
|
1757
|
+
onVideoLinkChange(value) {
|
|
1758
|
+
this.videoLink = value;
|
|
1759
|
+
this.videoLinkChange.emit(value);
|
|
1760
|
+
this.isVideoModifiedChange.emit(true);
|
|
1761
|
+
this.loadVideoInfos();
|
|
1762
|
+
}
|
|
1763
|
+
loadVideoInfos() {
|
|
1764
|
+
const obs = this.videoInfoService.getVideoInfo(this.videoLink);
|
|
1765
|
+
if (!obs) {
|
|
1766
|
+
this.videoDuration = '';
|
|
1767
|
+
this.videoPublishDate = '';
|
|
1768
|
+
return;
|
|
1769
|
+
}
|
|
1770
|
+
obs.subscribe(data => {
|
|
1771
|
+
if (!data)
|
|
1772
|
+
return;
|
|
1773
|
+
this.videoDuration = data.duration;
|
|
1774
|
+
this.videoPublishDate = data.publishDate;
|
|
1775
|
+
});
|
|
1776
|
+
}
|
|
1777
|
+
onDelete() {
|
|
1778
|
+
this.deleteVideo.emit();
|
|
1779
|
+
}
|
|
1780
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: EditorInfoVideoComponent, deps: [{ token: VideoInfoService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1781
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: EditorInfoVideoComponent, isStandalone: false, selector: "info-video", inputs: { videoLink: "videoLink", isVideoModified: "isVideoModified" }, outputs: { videoLinkChange: "videoLinkChange", isVideoModifiedChange: "isVideoModifiedChange", deleteVideo: "deleteVideo" }, ngImport: i0, template: "<div class=\"info-video\">\n <div class=\"info-video__wrapper\">\n\n <div class=\"info-video__wrapper__top\">\n <label for=\"input-video\">\n {{ 'ImgManager.ImgEditor.UrlVideo' | translate }}\n <i class=\"fa-solid fa-circle-info\"></i>\n </label>\n\n <input\n type=\"text\"\n id=\"input-video\"\n [ngModel]=\"videoLink\"\n (ngModelChange)=\"onVideoLinkChange($event)\"\n />\n\n <span>{{ 'ImgManager.ImgEditor.tooltipsIframe' | translate }}</span>\n </div>\n\n <a *ngIf=\"videoLink\" (click)=\"onDelete()\">{{ 'ImgManager.ImgEditor.deleteVideo' | translate }}</a>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
|
|
1782
|
+
}
|
|
1783
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: EditorInfoVideoComponent, decorators: [{
|
|
1784
|
+
type: Component,
|
|
1785
|
+
args: [{ standalone: false, selector: 'info-video', template: "<div class=\"info-video\">\n <div class=\"info-video__wrapper\">\n\n <div class=\"info-video__wrapper__top\">\n <label for=\"input-video\">\n {{ 'ImgManager.ImgEditor.UrlVideo' | translate }}\n <i class=\"fa-solid fa-circle-info\"></i>\n </label>\n\n <input\n type=\"text\"\n id=\"input-video\"\n [ngModel]=\"videoLink\"\n (ngModelChange)=\"onVideoLinkChange($event)\"\n />\n\n <span>{{ 'ImgManager.ImgEditor.tooltipsIframe' | translate }}</span>\n </div>\n\n <a *ngIf=\"videoLink\" (click)=\"onDelete()\">{{ 'ImgManager.ImgEditor.deleteVideo' | translate }}</a>\n </div>\n</div>\n" }]
|
|
1786
|
+
}], ctorParameters: () => [{ type: VideoInfoService }], propDecorators: { videoLink: [{
|
|
1787
|
+
type: Input
|
|
1788
|
+
}], videoLinkChange: [{
|
|
1789
|
+
type: Output
|
|
1790
|
+
}], isVideoModified: [{
|
|
1791
|
+
type: Input
|
|
1792
|
+
}], isVideoModifiedChange: [{
|
|
1793
|
+
type: Output
|
|
1794
|
+
}], deleteVideo: [{
|
|
1795
|
+
type: Output
|
|
1796
|
+
}] } });
|
|
1797
|
+
|
|
1798
|
+
class EditorShowIframeComponent {
|
|
1799
|
+
constructor(sanitizer) {
|
|
1800
|
+
this.sanitizer = sanitizer;
|
|
1801
|
+
this.videoLink = '';
|
|
1802
|
+
this.safeUrl = null;
|
|
1803
|
+
}
|
|
1804
|
+
ngOnChanges() {
|
|
1805
|
+
this.safeUrl = this.buildSafeIframeUrl(this.videoLink);
|
|
1806
|
+
}
|
|
1807
|
+
buildSafeIframeUrl(url) {
|
|
1808
|
+
if (!url)
|
|
1809
|
+
return null;
|
|
1810
|
+
if (this.isYouTubeUrl(url)) {
|
|
1811
|
+
const { videoId, playlistId } = this.extractYouTubeIds(url);
|
|
1812
|
+
if (!videoId && playlistId) {
|
|
1813
|
+
const embed = `https://www.youtube.com/embed/videoseries?list=${encodeURIComponent(playlistId)}`;
|
|
1814
|
+
return this.sanitizer.bypassSecurityTrustResourceUrl(embed);
|
|
1815
|
+
}
|
|
1816
|
+
if (!videoId)
|
|
1817
|
+
return null;
|
|
1818
|
+
const base = `https://www.youtube.com/embed/${encodeURIComponent(videoId)}`;
|
|
1819
|
+
const params = new URLSearchParams();
|
|
1820
|
+
params.set('playsinline', '1');
|
|
1821
|
+
if (playlistId)
|
|
1822
|
+
params.set('list', playlistId);
|
|
1823
|
+
const embed = params.toString() ? `${base}?${params.toString()}` : base;
|
|
1824
|
+
return this.sanitizer.bypassSecurityTrustResourceUrl(embed);
|
|
1825
|
+
}
|
|
1826
|
+
// --- Vimeo
|
|
1827
|
+
if (url.includes('vimeo.com')) {
|
|
1828
|
+
const videoId = this.extractVimeoId(url);
|
|
1829
|
+
if (!videoId)
|
|
1830
|
+
return null;
|
|
1831
|
+
const embed = `https://player.vimeo.com/video/${encodeURIComponent(videoId)}`;
|
|
1832
|
+
return this.sanitizer.bypassSecurityTrustResourceUrl(embed);
|
|
1833
|
+
}
|
|
1834
|
+
return null;
|
|
1835
|
+
}
|
|
1836
|
+
isYouTubeUrl(url) {
|
|
1837
|
+
try {
|
|
1838
|
+
const u = new URL(url);
|
|
1839
|
+
return (u.hostname === 'youtu.be' ||
|
|
1840
|
+
u.hostname.endsWith('youtube.com') ||
|
|
1841
|
+
u.hostname.endsWith('youtube-nocookie.com'));
|
|
1842
|
+
}
|
|
1843
|
+
catch {
|
|
1844
|
+
return url.includes('youtube.com') || url.includes('youtu.be') || url.includes('youtube-nocookie.com');
|
|
1845
|
+
}
|
|
1846
|
+
}
|
|
1847
|
+
extractYouTubeIds(rawUrl) {
|
|
1848
|
+
try {
|
|
1849
|
+
const url = new URL(rawUrl);
|
|
1850
|
+
const host = url.hostname.toLowerCase();
|
|
1851
|
+
const playlistId = url.searchParams.get('list');
|
|
1852
|
+
if (host === 'youtu.be') {
|
|
1853
|
+
const id = url.pathname.split('/').filter(Boolean)[0] ?? null;
|
|
1854
|
+
return { videoId: id, playlistId };
|
|
1855
|
+
}
|
|
1856
|
+
const v = url.searchParams.get('v');
|
|
1857
|
+
if (v)
|
|
1858
|
+
return { videoId: v, playlistId };
|
|
1859
|
+
const parts = url.pathname.split('/').filter(Boolean); // e.g. ["shorts","NquBrAU-iY8"]
|
|
1860
|
+
const idx = parts.findIndex(p => p === 'shorts' || p === 'embed');
|
|
1861
|
+
if (idx !== -1 && parts[idx + 1]) {
|
|
1862
|
+
return { videoId: parts[idx + 1], playlistId };
|
|
1863
|
+
}
|
|
1864
|
+
const liveIdx = parts.findIndex(p => p === 'live');
|
|
1865
|
+
if (liveIdx !== -1 && parts[liveIdx + 1]) {
|
|
1866
|
+
return { videoId: parts[liveIdx + 1], playlistId };
|
|
1867
|
+
}
|
|
1868
|
+
if (parts[0] === 'playlist' && playlistId) {
|
|
1869
|
+
return { videoId: null, playlistId };
|
|
1870
|
+
}
|
|
1871
|
+
return { videoId: null, playlistId };
|
|
1872
|
+
}
|
|
1873
|
+
catch {
|
|
1874
|
+
const playlistMatch = rawUrl.match(/[?&]list=([^&#]+)/);
|
|
1875
|
+
const playlistId = playlistMatch ? decodeURIComponent(playlistMatch[1]) : null;
|
|
1876
|
+
const regExp = /^.*(youtu\.be\/|v=|embed\/|shorts\/|live\/)([^#&?\/]+).*/;
|
|
1877
|
+
const match = rawUrl.match(regExp);
|
|
1878
|
+
const videoId = match && match[2] ? match[2] : null;
|
|
1879
|
+
return { videoId, playlistId };
|
|
1880
|
+
}
|
|
1881
|
+
}
|
|
1882
|
+
extractVimeoId(url) {
|
|
1883
|
+
const regExp = /vimeo\.com\/(?:video\/)?(\d+)/;
|
|
1884
|
+
const match = url.match(regExp);
|
|
1885
|
+
return match ? match[1] : null;
|
|
1886
|
+
}
|
|
1887
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: EditorShowIframeComponent, deps: [{ token: i1$1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1888
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: EditorShowIframeComponent, isStandalone: false, selector: "show-iframe", inputs: { videoLink: "videoLink" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"show-iframe\" *ngIf=\"safeUrl\">\n <div class=\"video-container\">\n <iframe\n [src]=\"safeUrl\"\n frameborder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n allowfullscreen>\n </iframe>\n </div>\n</div>\n\n<div class=\"show-iframe__none\" *ngIf=\"!safeUrl\">\n <p>{{ 'ImgManager.ImgEditor.NoVideo' | translate }}</p>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
|
|
1889
|
+
}
|
|
1890
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: EditorShowIframeComponent, decorators: [{
|
|
1891
|
+
type: Component,
|
|
1892
|
+
args: [{ standalone: false, selector: 'show-iframe', template: "<div class=\"show-iframe\" *ngIf=\"safeUrl\">\n <div class=\"video-container\">\n <iframe\n [src]=\"safeUrl\"\n frameborder=\"0\"\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n allowfullscreen>\n </iframe>\n </div>\n</div>\n\n<div class=\"show-iframe__none\" *ngIf=\"!safeUrl\">\n <p>{{ 'ImgManager.ImgEditor.NoVideo' | translate }}</p>\n</div>\n" }]
|
|
1893
|
+
}], ctorParameters: () => [{ type: i1$1.DomSanitizer }], propDecorators: { videoLink: [{
|
|
1894
|
+
type: Input
|
|
1895
|
+
}] } });
|
|
1896
|
+
|
|
1633
1897
|
const insertRemove = // the fade-in/fade-out animation.
|
|
1634
1898
|
trigger('insertRemoveAnnim', [
|
|
1635
1899
|
transition(':enter', [
|
|
@@ -1639,17 +1903,17 @@ const insertRemove = // the fade-in/fade-out animation.
|
|
|
1639
1903
|
]);
|
|
1640
1904
|
|
|
1641
1905
|
class DropdownComponent {
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1906
|
+
constructor() {
|
|
1907
|
+
this.disable = false;
|
|
1908
|
+
}
|
|
1645
1909
|
ngOnInit() {
|
|
1646
1910
|
}
|
|
1647
|
-
static
|
|
1648
|
-
static
|
|
1911
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1912
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: DropdownComponent, isStandalone: false, selector: "dropdown", inputs: { dropDownMenuClass: "dropDownMenuClass", disable: "disable" }, ngImport: i0, template: "<div class=\"dropdown dropdownWizi\" [ngClass]=\"{'is-hoverable': !disable}\">\n <div class=\"dropdown-trigger\">\n\n <!-- Label -->\n <ng-content select=\"[label]\"></ng-content>\n\n </div>\n <div class=\"dropdown-menu\" [ngClass]=\"dropDownMenuClass\" role=\"menu\">\n <div class=\"dropdown-content\">\n\n <!-- Content -->\n <ng-content select=\"[item]\"></ng-content>\n\n </div>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
1649
1913
|
}
|
|
1650
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1914
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: DropdownComponent, decorators: [{
|
|
1651
1915
|
type: Component,
|
|
1652
|
-
args: [{ selector: 'dropdown', template: "<div class=\"dropdown dropdownWizi\" [ngClass]=\"{'is-hoverable': !disable}\">\n <div class=\"dropdown-trigger\">\n\n <!-- Label -->\n <ng-content select=\"[label]\"></ng-content>\n\n </div>\n <div class=\"dropdown-menu\" [ngClass]=\"dropDownMenuClass\" role=\"menu\">\n <div class=\"dropdown-content\">\n\n <!-- Content -->\n <ng-content select=\"[item]\"></ng-content>\n\n </div>\n </div>\n</div>" }]
|
|
1916
|
+
args: [{ standalone: false, selector: 'dropdown', template: "<div class=\"dropdown dropdownWizi\" [ngClass]=\"{'is-hoverable': !disable}\">\n <div class=\"dropdown-trigger\">\n\n <!-- Label -->\n <ng-content select=\"[label]\"></ng-content>\n\n </div>\n <div class=\"dropdown-menu\" [ngClass]=\"dropDownMenuClass\" role=\"menu\">\n <div class=\"dropdown-content\">\n\n <!-- Content -->\n <ng-content select=\"[item]\"></ng-content>\n\n </div>\n </div>\n</div>" }]
|
|
1653
1917
|
}], ctorParameters: () => [], propDecorators: { dropDownMenuClass: [{
|
|
1654
1918
|
type: Input
|
|
1655
1919
|
}], disable: [{
|
|
@@ -1657,8 +1921,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
1657
1921
|
}] } });
|
|
1658
1922
|
|
|
1659
1923
|
class CropperComponent {
|
|
1660
|
-
imgCDNService;
|
|
1661
|
-
imgToEdit;
|
|
1662
1924
|
set isImgModified(isImgModified) {
|
|
1663
1925
|
this._isImgModified = isImgModified;
|
|
1664
1926
|
if (!isImgModified) {
|
|
@@ -1668,17 +1930,6 @@ class CropperComponent {
|
|
|
1668
1930
|
get isImgModified() {
|
|
1669
1931
|
return this._isImgModified;
|
|
1670
1932
|
}
|
|
1671
|
-
_isImgModified = false;
|
|
1672
|
-
isImgModifiedChange = new EventEmitter();
|
|
1673
|
-
editClosed = new EventEmitter();
|
|
1674
|
-
currentCroppedImageChange = new EventEmitter();
|
|
1675
|
-
msgFailLoad = 'ImgManager.ImgEditor.msgFailLoad';
|
|
1676
|
-
isNameModified = false;
|
|
1677
|
-
isCropperReady = false; // Use to not display the crop validation btn, after the img is loaded or changed
|
|
1678
|
-
currentCroppedImage = ''; // Img modified return in base64
|
|
1679
|
-
isCropped = false;
|
|
1680
|
-
isLoading = false;
|
|
1681
|
-
_isImgCropped = false;
|
|
1682
1933
|
set isImgCropped(isImgCropped) {
|
|
1683
1934
|
setTimeout(() => {
|
|
1684
1935
|
this._isImgCropped = isImgCropped;
|
|
@@ -1687,100 +1938,107 @@ class CropperComponent {
|
|
|
1687
1938
|
get isImgCropped() {
|
|
1688
1939
|
return this._isImgCropped;
|
|
1689
1940
|
}
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1941
|
+
constructor(imgCDNService) {
|
|
1942
|
+
this.imgCDNService = imgCDNService;
|
|
1943
|
+
this._isImgModified = false;
|
|
1944
|
+
this.isImgModifiedChange = new EventEmitter();
|
|
1945
|
+
this.editClosed = new EventEmitter();
|
|
1946
|
+
this.currentCroppedImageChange = new EventEmitter();
|
|
1947
|
+
this.msgFailLoad = 'ImgManager.ImgEditor.msgFailLoad';
|
|
1948
|
+
this.isNameModified = false;
|
|
1949
|
+
this.isCropperReady = false; // Use to not display the crop validation btn, after the img is loaded or changed
|
|
1950
|
+
this.currentCroppedImage = ''; // Img modified return in base64
|
|
1951
|
+
this.isCropped = false;
|
|
1952
|
+
this.isLoading = false;
|
|
1953
|
+
this._isImgCropped = false;
|
|
1954
|
+
this.imgCropperChange = new Subject();
|
|
1955
|
+
this.skipNextImgCropped = 1;
|
|
1956
|
+
this.imageChangedEvent = '';
|
|
1957
|
+
this.croppedImage = '';
|
|
1958
|
+
this.canvasRotation = 0;
|
|
1959
|
+
this.rotation = 0;
|
|
1960
|
+
this.scale = 1;
|
|
1961
|
+
this.showCropper = false;
|
|
1962
|
+
this.containWithinAspectRatio = false;
|
|
1963
|
+
this.transform = {};
|
|
1964
|
+
// dropdown list
|
|
1965
|
+
this.resolutionConfig = [
|
|
1966
|
+
{
|
|
1967
|
+
label: 'ImgManager.ImgEditor.config.origin',
|
|
1968
|
+
config: {
|
|
1969
|
+
maintainAspectRatio: true
|
|
1970
|
+
},
|
|
1710
1971
|
},
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1972
|
+
{
|
|
1973
|
+
label: 'ImgManager.ImgEditor.config.free',
|
|
1974
|
+
config: {
|
|
1975
|
+
maintainAspectRatio: false
|
|
1976
|
+
},
|
|
1977
|
+
active: true
|
|
1978
|
+
},
|
|
1979
|
+
{
|
|
1980
|
+
label: 'ImgManager.ImgEditor.config.square',
|
|
1981
|
+
config: {
|
|
1982
|
+
maintainAspectRatio: true,
|
|
1983
|
+
aspectRatio: 1 / 1
|
|
1984
|
+
}
|
|
1985
|
+
},
|
|
1986
|
+
{
|
|
1987
|
+
label: 'ImgManager.ImgEditor.config.Portrait',
|
|
1988
|
+
config: {
|
|
1989
|
+
maintainAspectRatio: true,
|
|
1990
|
+
aspectRatio: 3 / 4
|
|
1991
|
+
}
|
|
1716
1992
|
},
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
aspectRatio: 1 / 1
|
|
1993
|
+
{
|
|
1994
|
+
label: 'ImgManager.ImgEditor.config.landscape',
|
|
1995
|
+
config: {
|
|
1996
|
+
maintainAspectRatio: true,
|
|
1997
|
+
aspectRatio: 5 / 3
|
|
1998
|
+
}
|
|
1724
1999
|
}
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
2000
|
+
];
|
|
2001
|
+
this.rotationConfig = [
|
|
2002
|
+
{
|
|
2003
|
+
label: 'ImgManager.ImgEditor.config.schedule',
|
|
2004
|
+
icon: "fal fa-redo-alt",
|
|
2005
|
+
method: "rotateRight",
|
|
2006
|
+
active: true
|
|
2007
|
+
},
|
|
2008
|
+
{
|
|
2009
|
+
label: 'ImgManager.ImgEditor.config.AntiSchedule',
|
|
2010
|
+
icon: "fal fa-undo-alt",
|
|
2011
|
+
method: "rotateLeft"
|
|
2012
|
+
},
|
|
2013
|
+
{
|
|
2014
|
+
label: 'ImgManager.ImgEditor.config.flipVert',
|
|
2015
|
+
icon: "fal fa-sort-alt",
|
|
2016
|
+
method: "flipVertical"
|
|
2017
|
+
},
|
|
2018
|
+
{
|
|
2019
|
+
label: 'ImgManager.ImgEditor.config.flipHoriz',
|
|
2020
|
+
icon: "fal fa-exchange-alt",
|
|
2021
|
+
method: "flipHorizontal"
|
|
1731
2022
|
}
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
2023
|
+
];
|
|
2024
|
+
this.zoomConfig = [
|
|
2025
|
+
{
|
|
2026
|
+
label: 'ImgManager.ImgEditor.config.zoom',
|
|
2027
|
+
icon: "fal fa-search-plus",
|
|
2028
|
+
method: "zoomIn",
|
|
2029
|
+
active: true
|
|
2030
|
+
},
|
|
2031
|
+
{
|
|
2032
|
+
label: 'ImgManager.ImgEditor.config.dezoom',
|
|
2033
|
+
icon: "fal fa-search-minus",
|
|
2034
|
+
method: "zoomOut"
|
|
1738
2035
|
}
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
method: "rotateRight",
|
|
1746
|
-
active: true
|
|
1747
|
-
},
|
|
1748
|
-
{
|
|
1749
|
-
label: 'ImgManager.ImgEditor.config.AntiSchedule',
|
|
1750
|
-
icon: "fal fa-undo-alt",
|
|
1751
|
-
method: "rotateLeft"
|
|
1752
|
-
},
|
|
1753
|
-
{
|
|
1754
|
-
label: 'ImgManager.ImgEditor.config.flipVert',
|
|
1755
|
-
icon: "fal fa-sort-alt",
|
|
1756
|
-
method: "flipVertical"
|
|
1757
|
-
},
|
|
1758
|
-
{
|
|
1759
|
-
label: 'ImgManager.ImgEditor.config.flipHoriz',
|
|
1760
|
-
icon: "fal fa-exchange-alt",
|
|
1761
|
-
method: "flipHorizontal"
|
|
1762
|
-
}
|
|
1763
|
-
];
|
|
1764
|
-
zoomConfig = [
|
|
1765
|
-
{
|
|
1766
|
-
label: 'ImgManager.ImgEditor.config.zoom',
|
|
1767
|
-
icon: "fal fa-search-plus",
|
|
1768
|
-
method: "zoomIn",
|
|
1769
|
-
active: true
|
|
1770
|
-
},
|
|
1771
|
-
{
|
|
1772
|
-
label: 'ImgManager.ImgEditor.config.dezoom',
|
|
1773
|
-
icon: "fal fa-search-minus",
|
|
1774
|
-
method: "zoomOut"
|
|
1775
|
-
}
|
|
1776
|
-
];
|
|
1777
|
-
// Img cropper variables
|
|
1778
|
-
imgCropperConfig = {
|
|
1779
|
-
maintainAspectRatio: false,
|
|
1780
|
-
aspectRatio: undefined
|
|
1781
|
-
};
|
|
1782
|
-
constructor(imgCDNService) {
|
|
1783
|
-
this.imgCDNService = imgCDNService;
|
|
2036
|
+
];
|
|
2037
|
+
// Img cropper variables
|
|
2038
|
+
this.imgCropperConfig = {
|
|
2039
|
+
maintainAspectRatio: false,
|
|
2040
|
+
aspectRatio: undefined
|
|
2041
|
+
};
|
|
1784
2042
|
}
|
|
1785
2043
|
ngOnInit() {
|
|
1786
2044
|
this.init();
|
|
@@ -1936,16 +2194,16 @@ class CropperComponent {
|
|
|
1936
2194
|
applyMethod(method) {
|
|
1937
2195
|
this[method](); // call the method contains in zoomConfig or rotationConfig
|
|
1938
2196
|
}
|
|
1939
|
-
static
|
|
1940
|
-
static
|
|
2197
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CropperComponent, deps: [{ token: ImgCDNService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2198
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CropperComponent, isStandalone: false, selector: "cropper", inputs: { imgToEdit: "imgToEdit", isImgModified: "isImgModified" }, outputs: { isImgModifiedChange: "isImgModifiedChange", editClosed: "editClosed", currentCroppedImageChange: "currentCroppedImageChange" }, ngImport: i0, template: "<div class=\"img-editor__container__toolsContainer\">\n\n <div *ngIf=\"isImgCropped\">\n <div\n class=\"img-editor__container__toolsContainer__tool img-editor__container__toolsContainer__tool--button\"\n (click)=\"confirmCrop()\"\n [nwbToolTip]=\"'ImgManager.ImgEditor.ValidtToolTip' | translate\"\n nwbToolTipPosition=\"left\"\n >\n <i class=\"far fa-check\"></i>\n <p>{{ 'ImgManager.ImgEditor.Valid' | translate }}</p>\n </div>\n </div>\n\n <!-- Resolution -->\n <dropdown dropdownId=\"dropdown-resolution\">\n <ng-container label>\n <div\n class=\"img-editor__container__toolsContainer__tool\"\n >\n <i class=\"far fa-crop\"></i>\n <p>{{ 'ImgManager.ImgEditor.crop' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item *ngFor=\"let item of resolutionConfig; let index = index;\">\n <div\n class=\"dropdown-item\"\n [ngClass]=\"{'active-item': item.active}\"\n (click)=\"changeResolutionSize(index)\">\n <p>{{item.label | translate}}</p>\n </div>\n </ng-container>\n </dropdown>\n\n <!-- Zoom -->\n <dropdown dropdownId=\"dropdown-rotation\">\n <ng-container label>\n <div class=\"img-editor__container__toolsContainer__tool\" (click)=\"zoomIn()\">\n <i class=\"far fa-expand-arrows-alt\"></i>\n <p>{{ 'ImgManager.ImgEditor.display' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item *ngFor=\"let item of zoomConfig; let index = index;\">\n <div\n class=\"dropdown-item\"\n [ngClass]=\"{'active-item': item.active}\"\n (click)=\"applyMethod(item.method)\">\n <i *ngIf=\"item.icon\" [ngClass]=\"item.icon\"></i>\n <p>{{item.label | translate}}</p>\n </div>\n </ng-container>\n </dropdown>\n\n <!-- Rotation -->\n <dropdown dropdownId=\"dropdown-rotation\" dropDownMenuClass=\"img-editor__container__toolsContainer__RotationDropdown\">\n <ng-container label>\n <div class=\"img-editor__container__toolsContainer__tool\" (click)=\"rotateRight()\">\n <i class=\"far fa-redo\"></i>\n <p>{{ 'ImgManager.ImgEditor.rotation' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item *ngFor=\"let item of rotationConfig; let index = index;\">\n <div\n class=\"dropdown-item\"\n [ngClass]=\"{'active-item': item.active}\"\n (click)=\"applyMethod(item.method)\">\n <i *ngIf=\"item.icon\" [ngClass]=\"item.icon\"></i>\n <p>{{item.label | translate}}</p>\n </div>\n </ng-container>\n </dropdown>\n\n <div\n class=\"img-editor__container__toolsContainer__tool\"\n (click)=\"onRestart()\"\n @insertRemoveAnnim\n >\n <i class=\"far fa-retweet-alt\"></i>\n <p>{{ 'ImgManager.ImgEditor.restart' | translate }}</p>\n </div>\n</div>\n\n<div class=\"img-editor__image-cropper\" >\n <image-cropper\n [imageURL]=\"imgRoute\"\n [imageBase64]=\"croppedImage\"\n [maintainAspectRatio]=\"imgCropperConfig.maintainAspectRatio\"\n [containWithinAspectRatio]=\"containWithinAspectRatio\"\n [aspectRatio]=\"imgCropperConfig.aspectRatio\"\n [onlyScaleDown]=\"true\"\n [roundCropper]=\"false\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [alignImage]=\"'center'\"\n [style.display]=\"showCropper ? null : 'none'\"\n [format]=\"imgType\"\n [backgroundColor]=\"'white'\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n (cropperReady)=\"cropperReady()\"\n (loadImageFailed)=\"loadImageFailed()\"\n ></image-cropper>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NwbToolTipDirective, selector: "[nwbToolTip]", inputs: ["nwbToolTip", "nwbToolTipPosition", "nwbToolTipIsMultiline"] }, { kind: "component", type: i4$1.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "imageAltText", "options", "cropperFrameAriaLabel", "output", "format", "autoCrop", "cropper", "transform", "maintainAspectRatio", "aspectRatio", "resetCropOnAspectRatioChange", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "checkImageType", "alignImage", "disabled", "hidden"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange", "cropperChange"] }, { kind: "component", type: DropdownComponent, selector: "dropdown", inputs: ["dropDownMenuClass", "disable"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], animations: [
|
|
1941
2199
|
insertRemove
|
|
1942
|
-
] });
|
|
2200
|
+
] }); }
|
|
1943
2201
|
}
|
|
1944
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2202
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CropperComponent, decorators: [{
|
|
1945
2203
|
type: Component,
|
|
1946
|
-
args: [{ selector: 'cropper', animations: [
|
|
2204
|
+
args: [{ standalone: false, selector: 'cropper', animations: [
|
|
1947
2205
|
insertRemove
|
|
1948
|
-
], template: "<div class=\"img-editor__container__toolsContainer\">\
|
|
2206
|
+
], template: "<div class=\"img-editor__container__toolsContainer\">\n\n <div *ngIf=\"isImgCropped\">\n <div\n class=\"img-editor__container__toolsContainer__tool img-editor__container__toolsContainer__tool--button\"\n (click)=\"confirmCrop()\"\n [nwbToolTip]=\"'ImgManager.ImgEditor.ValidtToolTip' | translate\"\n nwbToolTipPosition=\"left\"\n >\n <i class=\"far fa-check\"></i>\n <p>{{ 'ImgManager.ImgEditor.Valid' | translate }}</p>\n </div>\n </div>\n\n <!-- Resolution -->\n <dropdown dropdownId=\"dropdown-resolution\">\n <ng-container label>\n <div\n class=\"img-editor__container__toolsContainer__tool\"\n >\n <i class=\"far fa-crop\"></i>\n <p>{{ 'ImgManager.ImgEditor.crop' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item *ngFor=\"let item of resolutionConfig; let index = index;\">\n <div\n class=\"dropdown-item\"\n [ngClass]=\"{'active-item': item.active}\"\n (click)=\"changeResolutionSize(index)\">\n <p>{{item.label | translate}}</p>\n </div>\n </ng-container>\n </dropdown>\n\n <!-- Zoom -->\n <dropdown dropdownId=\"dropdown-rotation\">\n <ng-container label>\n <div class=\"img-editor__container__toolsContainer__tool\" (click)=\"zoomIn()\">\n <i class=\"far fa-expand-arrows-alt\"></i>\n <p>{{ 'ImgManager.ImgEditor.display' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item *ngFor=\"let item of zoomConfig; let index = index;\">\n <div\n class=\"dropdown-item\"\n [ngClass]=\"{'active-item': item.active}\"\n (click)=\"applyMethod(item.method)\">\n <i *ngIf=\"item.icon\" [ngClass]=\"item.icon\"></i>\n <p>{{item.label | translate}}</p>\n </div>\n </ng-container>\n </dropdown>\n\n <!-- Rotation -->\n <dropdown dropdownId=\"dropdown-rotation\" dropDownMenuClass=\"img-editor__container__toolsContainer__RotationDropdown\">\n <ng-container label>\n <div class=\"img-editor__container__toolsContainer__tool\" (click)=\"rotateRight()\">\n <i class=\"far fa-redo\"></i>\n <p>{{ 'ImgManager.ImgEditor.rotation' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item *ngFor=\"let item of rotationConfig; let index = index;\">\n <div\n class=\"dropdown-item\"\n [ngClass]=\"{'active-item': item.active}\"\n (click)=\"applyMethod(item.method)\">\n <i *ngIf=\"item.icon\" [ngClass]=\"item.icon\"></i>\n <p>{{item.label | translate}}</p>\n </div>\n </ng-container>\n </dropdown>\n\n <div\n class=\"img-editor__container__toolsContainer__tool\"\n (click)=\"onRestart()\"\n @insertRemoveAnnim\n >\n <i class=\"far fa-retweet-alt\"></i>\n <p>{{ 'ImgManager.ImgEditor.restart' | translate }}</p>\n </div>\n</div>\n\n<div class=\"img-editor__image-cropper\" >\n <image-cropper\n [imageURL]=\"imgRoute\"\n [imageBase64]=\"croppedImage\"\n [maintainAspectRatio]=\"imgCropperConfig.maintainAspectRatio\"\n [containWithinAspectRatio]=\"containWithinAspectRatio\"\n [aspectRatio]=\"imgCropperConfig.aspectRatio\"\n [onlyScaleDown]=\"true\"\n [roundCropper]=\"false\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [alignImage]=\"'center'\"\n [style.display]=\"showCropper ? null : 'none'\"\n [format]=\"imgType\"\n [backgroundColor]=\"'white'\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n (cropperReady)=\"cropperReady()\"\n (loadImageFailed)=\"loadImageFailed()\"\n ></image-cropper>\n</div>\n" }]
|
|
1949
2207
|
}], ctorParameters: () => [{ type: ImgCDNService }], propDecorators: { imgToEdit: [{
|
|
1950
2208
|
type: Input
|
|
1951
2209
|
}], isImgModified: [{
|
|
@@ -1959,41 +2217,65 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
1959
2217
|
}] } });
|
|
1960
2218
|
|
|
1961
2219
|
class ImgEditorComponent {
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1969
|
-
|
|
1970
|
-
|
|
1971
|
-
previousName;
|
|
1972
|
-
msgFailSave = 'ImgManager.ImgEditor.msgFailSave';
|
|
1973
|
-
msgFailLoad = 'ImgManager.ImgEditor.msgFailLoad';
|
|
1974
|
-
msgSuccessEdit = "Les modifications de l'image ont bien été enregistrées.";
|
|
2220
|
+
set isVideoEdit(value) {
|
|
2221
|
+
this._isVideoEdit = value;
|
|
2222
|
+
if (value === true) {
|
|
2223
|
+
this.isEditorLinkActive = true;
|
|
2224
|
+
}
|
|
2225
|
+
}
|
|
2226
|
+
get isVideoEdit() {
|
|
2227
|
+
return this._isVideoEdit;
|
|
2228
|
+
}
|
|
1975
2229
|
constructor(imgManagerService, renamePictureService) {
|
|
1976
2230
|
this.imgManagerService = imgManagerService;
|
|
1977
2231
|
this.renamePictureService = renamePictureService;
|
|
2232
|
+
this._isVideoEdit = false;
|
|
2233
|
+
this.editClosed = new EventEmitter();
|
|
2234
|
+
this.isLoading = false;
|
|
2235
|
+
this.isImgModified = false;
|
|
2236
|
+
this.isNameModified = false;
|
|
2237
|
+
this.currentCroppedImage = ''; // Img modified return in base64 by the cropper
|
|
2238
|
+
this.isEditorLinkActive = false;
|
|
2239
|
+
this.isVideoModified = false;
|
|
2240
|
+
this.msgFailSave = 'ImgManager.ImgEditor.msgFailSave';
|
|
2241
|
+
this.msgFailLoad = 'ImgManager.ImgEditor.msgFailLoad';
|
|
2242
|
+
this.msgSuccessEdit = "Les modifications de l'image ont bien été enregistrées.";
|
|
1978
2243
|
}
|
|
1979
2244
|
ngOnInit() {
|
|
1980
2245
|
this.previousName = this.imgToEdit.display_name;
|
|
2246
|
+
this.previousVideoLink = this.imgToEdit.video_link;
|
|
1981
2247
|
}
|
|
1982
2248
|
onSave() {
|
|
1983
2249
|
if (this.isLoading) {
|
|
1984
2250
|
return;
|
|
1985
2251
|
}
|
|
1986
2252
|
this.isLoading = true;
|
|
1987
|
-
if (!this.isImgModified && !this.isNameModified) {
|
|
2253
|
+
if (!this.isImgModified && !this.isNameModified && !this.isVideoModified) {
|
|
1988
2254
|
this.isLoading = false;
|
|
1989
2255
|
this.onEditClosed();
|
|
1990
2256
|
}
|
|
1991
2257
|
const obsReplaceImg = this.imgManagerService.replaceImg(this.currentCroppedImage, this.imgToEdit.id_file);
|
|
1992
2258
|
const obsChangeImgName = this.renamePictureService.changeImageName(this.imgToEdit.display_name, this.imgToEdit.id_file);
|
|
2259
|
+
const obsChangeVideoLink = this.renamePictureService.changeVideoLink(this.imgToEdit.video_link, this.imgToEdit.id_file);
|
|
1993
2260
|
if (this.isImgModified && this.isNameModified) {
|
|
1994
2261
|
this.renameAndReplaceImg(obsChangeImgName, obsReplaceImg);
|
|
1995
2262
|
return;
|
|
1996
2263
|
}
|
|
2264
|
+
if (this.isVideoModified && !this.isImgModified && !this.isNameModified) {
|
|
2265
|
+
obsChangeVideoLink.subscribe({
|
|
2266
|
+
next: () => {
|
|
2267
|
+
this.isLoading = false;
|
|
2268
|
+
this.previousVideoLink = this.imgToEdit.video_link;
|
|
2269
|
+
this.onEditClosed(this.msgSuccessEdit);
|
|
2270
|
+
},
|
|
2271
|
+
error: () => {
|
|
2272
|
+
this.isLoading = false;
|
|
2273
|
+
this.imgToEdit.video_link = this.previousVideoLink;
|
|
2274
|
+
this.onEditClosed(this.msgFailSave);
|
|
2275
|
+
}
|
|
2276
|
+
});
|
|
2277
|
+
return;
|
|
2278
|
+
}
|
|
1997
2279
|
if (this.isImgModified) {
|
|
1998
2280
|
obsReplaceImg.subscribe({
|
|
1999
2281
|
next: data => {
|
|
@@ -2038,6 +2320,10 @@ class ImgEditorComponent {
|
|
|
2038
2320
|
onImgCropped(imgBase64) {
|
|
2039
2321
|
this.currentCroppedImage = imgBase64;
|
|
2040
2322
|
}
|
|
2323
|
+
onDeleteVideo() {
|
|
2324
|
+
this.imgToEdit.video_link = null;
|
|
2325
|
+
this.isVideoModified = true;
|
|
2326
|
+
}
|
|
2041
2327
|
renameAndReplaceImg(obsChangeImgName, obsReplaceImg) {
|
|
2042
2328
|
// Avoid to use forkjoin, because it can create conflict and loose the img
|
|
2043
2329
|
obsChangeImgName.subscribe({
|
|
@@ -2056,34 +2342,33 @@ class ImgEditorComponent {
|
|
|
2056
2342
|
}
|
|
2057
2343
|
});
|
|
2058
2344
|
}
|
|
2059
|
-
static
|
|
2060
|
-
static
|
|
2345
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImgEditorComponent, deps: [{ token: ImgManagerService }, { token: RenamePictureService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2346
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: ImgEditorComponent, isStandalone: false, selector: "img-editor", inputs: { stateDisplayed: "stateDisplayed", imgToEdit: "imgToEdit", isVideoEdit: "isVideoEdit" }, outputs: { editClosed: "editClosed" }, ngImport: i0, template: "<div class=\"img-editor\" [@easeInOut]=\"'in'\">\n\n <!-- Button Action Section -->\n\n <div class=\"img-editor__infoSection__actions\">\n <div>\n <button\n type=\"button\"\n class=\"button img-editor__infoSection__actions__cancel\"\n (click)=\"onCancel()\"\n [disabled]=\"isLoading || (!isImgModified && !isNameModified)\"\n >\n {{ 'ImgManager.ImgLib.cancel' | translate }}\n </button>\n <div\n class=\"button danger button img-editor__infoSection__actions__save\"\n [ngClass]=\"{'img-editor__infoSection__actions__save--disable': isLoading}\"\n (click)=\"onSave()\"\n >\n {{ 'ImgManager.ImgEditor.saveBtn' | translate }}\n <span btnLoadingAnim *ngIf=\"isLoading\" class=\"btnLoadingAnnimation\"></span>\n </div>\n\n </div>\n </div>\n\n <ng-scrollbar\n class=\"img-editor__scroll\"\n style=\"min-height: 500px\"\n [ngClass]=\"{\n 'img-editor__scroll--full': stateDisplayed === 'full',\n 'img-editor__scroll--smallDisplay': stateDisplayed === 'small',\n 'img-editor__scroll--window': stateDisplayed === 'window'\n }\"\n >\n\n <div class=\"columns\">\n <!-- Left section -->\n <div class=\"column is-one-third img-editor__infoSection\">\n\n <ul class=\"img-editorVideo__tabs\">\n <li [ngClass]=\"{'active': !isEditorLinkActive}\"><span (click)=\"isEditorLinkActive = false;\">{{ 'ImgManager.ImgLib.informations' | translate }}</span></li>\n <li [ngClass]=\"{'active': isEditorLinkActive}\"><span (click)=\"isEditorLinkActive = true;\">{{ 'ImgManager.ImgLib.associateVideo' | translate }}</span></li>\n </ul>\n\n <info-section\n *ngIf=\"!isEditorLinkActive\"\n [imgToEdit]=\"imgToEdit\"\n [(isNameModified)]=\"isNameModified\"\n >\n </info-section>\n <info-video\n *ngIf=\"isEditorLinkActive\"\n [(videoLink)]=\"imgToEdit.video_link\"\n [(isVideoModified)]=\"isVideoModified\"\n (deleteVideo)=\"onDeleteVideo()\">\n </info-video>\n </div>\n\n\n <!-- Right section -->\n <div class=\"column img-editor__container\">\n <cropper\n *ngIf=\"!isEditorLinkActive\"\n [imgToEdit]=\"imgToEdit\"\n [(isImgModified)]=\"isImgModified\"\n (currentCroppedImageChange)=\"onImgCropped($event)\"\n (editClosed)=\"onEditClosed($event)\">\n </cropper>\n <show-iframe\n style=\"display: block;width: 100%\"\n [videoLink]=\"imgToEdit.video_link\"\n *ngIf=\"isEditorLinkActive\">\n\n </show-iframe>\n </div>\n </div>\n </ng-scrollbar>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }, { kind: "component", type: EditorInfoSectionComponent, selector: "info-section", inputs: ["imgToEdit", "isNameModified"], outputs: ["isNameModifiedChange"] }, { kind: "component", type: EditorInfoVideoComponent, selector: "info-video", inputs: ["videoLink", "isVideoModified"], outputs: ["videoLinkChange", "isVideoModifiedChange", "deleteVideo"] }, { kind: "component", type: EditorShowIframeComponent, selector: "show-iframe", inputs: ["videoLink"] }, { kind: "component", type: CropperComponent, selector: "cropper", inputs: ["imgToEdit", "isImgModified"], outputs: ["isImgModifiedChange", "editClosed", "currentCroppedImageChange"] }, { kind: "directive", type: LoadingDirective, selector: "[btnLoadingAnim]" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], animations: [
|
|
2061
2347
|
easeInOut
|
|
2062
|
-
] });
|
|
2348
|
+
] }); }
|
|
2063
2349
|
}
|
|
2064
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2350
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImgEditorComponent, decorators: [{
|
|
2065
2351
|
type: Component,
|
|
2066
|
-
args: [{ selector: 'img-editor', animations: [
|
|
2352
|
+
args: [{ standalone: false, selector: 'img-editor', animations: [
|
|
2067
2353
|
easeInOut
|
|
2068
|
-
], template: "<div class=\"img-editor\" [@easeInOut]=\"'in'\">\
|
|
2354
|
+
], template: "<div class=\"img-editor\" [@easeInOut]=\"'in'\">\n\n <!-- Button Action Section -->\n\n <div class=\"img-editor__infoSection__actions\">\n <div>\n <button\n type=\"button\"\n class=\"button img-editor__infoSection__actions__cancel\"\n (click)=\"onCancel()\"\n [disabled]=\"isLoading || (!isImgModified && !isNameModified)\"\n >\n {{ 'ImgManager.ImgLib.cancel' | translate }}\n </button>\n <div\n class=\"button danger button img-editor__infoSection__actions__save\"\n [ngClass]=\"{'img-editor__infoSection__actions__save--disable': isLoading}\"\n (click)=\"onSave()\"\n >\n {{ 'ImgManager.ImgEditor.saveBtn' | translate }}\n <span btnLoadingAnim *ngIf=\"isLoading\" class=\"btnLoadingAnnimation\"></span>\n </div>\n\n </div>\n </div>\n\n <ng-scrollbar\n class=\"img-editor__scroll\"\n style=\"min-height: 500px\"\n [ngClass]=\"{\n 'img-editor__scroll--full': stateDisplayed === 'full',\n 'img-editor__scroll--smallDisplay': stateDisplayed === 'small',\n 'img-editor__scroll--window': stateDisplayed === 'window'\n }\"\n >\n\n <div class=\"columns\">\n <!-- Left section -->\n <div class=\"column is-one-third img-editor__infoSection\">\n\n <ul class=\"img-editorVideo__tabs\">\n <li [ngClass]=\"{'active': !isEditorLinkActive}\"><span (click)=\"isEditorLinkActive = false;\">{{ 'ImgManager.ImgLib.informations' | translate }}</span></li>\n <li [ngClass]=\"{'active': isEditorLinkActive}\"><span (click)=\"isEditorLinkActive = true;\">{{ 'ImgManager.ImgLib.associateVideo' | translate }}</span></li>\n </ul>\n\n <info-section\n *ngIf=\"!isEditorLinkActive\"\n [imgToEdit]=\"imgToEdit\"\n [(isNameModified)]=\"isNameModified\"\n >\n </info-section>\n <info-video\n *ngIf=\"isEditorLinkActive\"\n [(videoLink)]=\"imgToEdit.video_link\"\n [(isVideoModified)]=\"isVideoModified\"\n (deleteVideo)=\"onDeleteVideo()\">\n </info-video>\n </div>\n\n\n <!-- Right section -->\n <div class=\"column img-editor__container\">\n <cropper\n *ngIf=\"!isEditorLinkActive\"\n [imgToEdit]=\"imgToEdit\"\n [(isImgModified)]=\"isImgModified\"\n (currentCroppedImageChange)=\"onImgCropped($event)\"\n (editClosed)=\"onEditClosed($event)\">\n </cropper>\n <show-iframe\n style=\"display: block;width: 100%\"\n [videoLink]=\"imgToEdit.video_link\"\n *ngIf=\"isEditorLinkActive\">\n\n </show-iframe>\n </div>\n </div>\n </ng-scrollbar>\n</div>\n" }]
|
|
2069
2355
|
}], ctorParameters: () => [{ type: ImgManagerService }, { type: RenamePictureService }], propDecorators: { stateDisplayed: [{
|
|
2070
2356
|
type: Input
|
|
2071
2357
|
}], imgToEdit: [{
|
|
2072
2358
|
type: Input
|
|
2359
|
+
}], isVideoEdit: [{
|
|
2360
|
+
type: Input
|
|
2073
2361
|
}], editClosed: [{
|
|
2074
2362
|
type: Output
|
|
2075
2363
|
}] } });
|
|
2076
2364
|
|
|
2077
2365
|
class AutoHideDirective {
|
|
2078
|
-
_elementRef;
|
|
2079
|
-
domService;
|
|
2080
|
-
triggerElement;
|
|
2081
|
-
forceOn = null;
|
|
2082
2366
|
constructor(_elementRef, domService) {
|
|
2083
2367
|
this._elementRef = _elementRef;
|
|
2084
2368
|
this.domService = domService;
|
|
2369
|
+
this.forceOn = null;
|
|
2370
|
+
this.clickOutside = new EventEmitter();
|
|
2085
2371
|
}
|
|
2086
|
-
clickOutside = new EventEmitter();
|
|
2087
2372
|
ngAfterViewInit() {
|
|
2088
2373
|
this.domService.documentEvent().subscribe((targetElement) => {
|
|
2089
2374
|
const clickedInside = this._elementRef.nativeElement.contains(targetElement);
|
|
@@ -2104,12 +2389,13 @@ class AutoHideDirective {
|
|
|
2104
2389
|
}
|
|
2105
2390
|
});
|
|
2106
2391
|
}
|
|
2107
|
-
static
|
|
2108
|
-
static
|
|
2392
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AutoHideDirective, deps: [{ token: i0.ElementRef }, { token: DomService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2393
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: AutoHideDirective, isStandalone: false, selector: "[wzAutoHide]", inputs: { triggerElement: "triggerElement", forceOn: "forceOn" }, outputs: { clickOutside: "clickOutside" }, ngImport: i0 }); }
|
|
2109
2394
|
}
|
|
2110
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2395
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AutoHideDirective, decorators: [{
|
|
2111
2396
|
type: Directive,
|
|
2112
2397
|
args: [{
|
|
2398
|
+
standalone: false,
|
|
2113
2399
|
selector: '[wzAutoHide]'
|
|
2114
2400
|
}]
|
|
2115
2401
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: DomService }], propDecorators: { triggerElement: [{
|
|
@@ -2122,32 +2408,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
2122
2408
|
}] } });
|
|
2123
2409
|
|
|
2124
2410
|
class CanvaBtnComponent {
|
|
2125
|
-
canvaService;
|
|
2126
|
-
stateDisplayed;
|
|
2127
|
-
showImgUploaded = new EventEmitter();
|
|
2128
|
-
canvaApi;
|
|
2129
|
-
canvaLogoRouteAssets;
|
|
2130
|
-
imgLoading = false;
|
|
2131
|
-
availableFormat = {
|
|
2132
|
-
'ImgManager.CanvaBtn.smallSquare': {
|
|
2133
|
-
'width': 500,
|
|
2134
|
-
'height': 500
|
|
2135
|
-
},
|
|
2136
|
-
'ImgManager.CanvaBtn.mediumSquare': {
|
|
2137
|
-
'width': 1000,
|
|
2138
|
-
'height': 1000
|
|
2139
|
-
},
|
|
2140
|
-
'ImgManager.CanvaBtn.bigSquare': {
|
|
2141
|
-
'width': 2500,
|
|
2142
|
-
'height': 2500
|
|
2143
|
-
}
|
|
2144
|
-
};
|
|
2145
|
-
openDropDownMenu = false;
|
|
2146
|
-
expectedHeight;
|
|
2147
|
-
expectedWidth;
|
|
2148
|
-
subs = [];
|
|
2149
2411
|
constructor(canvaService) {
|
|
2150
2412
|
this.canvaService = canvaService;
|
|
2413
|
+
this.showImgUploaded = new EventEmitter();
|
|
2414
|
+
this.imgLoading = false;
|
|
2415
|
+
this.availableFormat = {
|
|
2416
|
+
'ImgManager.CanvaBtn.smallSquare': {
|
|
2417
|
+
'width': 500,
|
|
2418
|
+
'height': 500
|
|
2419
|
+
},
|
|
2420
|
+
'ImgManager.CanvaBtn.mediumSquare': {
|
|
2421
|
+
'width': 1000,
|
|
2422
|
+
'height': 1000
|
|
2423
|
+
},
|
|
2424
|
+
'ImgManager.CanvaBtn.bigSquare': {
|
|
2425
|
+
'width': 2500,
|
|
2426
|
+
'height': 2500
|
|
2427
|
+
}
|
|
2428
|
+
};
|
|
2429
|
+
this.openDropDownMenu = false;
|
|
2430
|
+
this.subs = [];
|
|
2151
2431
|
}
|
|
2152
2432
|
ngOnInit() {
|
|
2153
2433
|
this.canvaLogoRouteAssets = this.canvaService.getCanvaLogo();
|
|
@@ -2173,12 +2453,12 @@ class CanvaBtnComponent {
|
|
|
2173
2453
|
ngOnDestroy() {
|
|
2174
2454
|
this.subs.forEach(sub => sub.unsubscribe());
|
|
2175
2455
|
}
|
|
2176
|
-
static
|
|
2177
|
-
static
|
|
2456
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CanvaBtnComponent, deps: [{ token: CanvaService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2457
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CanvaBtnComponent, isStandalone: false, selector: "canva-btn", inputs: { stateDisplayed: "stateDisplayed" }, outputs: { showImgUploaded: "showImgUploaded" }, ngImport: i0, template: "<div class=\"canva dropdown is-right is-hoverable\"\n wzAutoHide (clickOutside)=\"openDropDownMenu = false;\"\n [ngClass]=\"{'is-up': stateDisplayed === 'small', 'noTooltip': stateDisplayed !== 'small'}\"\n >\n <div class=\"dropdown-trigger\">\n <div\n class=\"button canva-btn\"\n aria-controls=\"dropdown-menuCanva\"\n (click)=\"openDropDownMenu = true;\"\n >\n <span>{{'ImgManager.CanvaBtn.createImg' | translate}}</span>\n <img [src]=\"canvaLogoRouteAssets\" class=\"canva-btn__logo\">\n\n <span btnLoadingAnim class=\"btnLoadingAnnimation\" *ngIf=\"imgLoading\"></span>\n </div>\n </div>\n <div\n class=\"dropdown-menu dropDownShadow\"\n [ngClass]=\"{'displayDropDownMenu': openDropDownMenu }\"\n id=\"dropdown-menuCanva\"\n role=\"menu\">\n <ng-scrollbar\n class=\"smallScroll\"\n >\n <div class=\"dropdown-content\">\n <div class=\"dropdownTitle\">\n <p>{{'ImgManager.CanvaBtn.createImg.title' | translate}}</p>\n </div>\n\n <div class=\"infoItem\">\n <p>{{'ImgManager.CanvaBtn.info' | translate}}</p>\n </div>\n\n <ng-container >\n <div\n *ngIf=\"expectedWidth && expectedHeight\"\n class=\"dropdown-item-wrapper\"\n >\n <div class=\"dropdown-item expectedSizes\" (click)=\"onOpenCanva(expectedWidth, expectedHeight)\">\n <p>{{'ImgManager.CanvaBtn.recommanded' | translate}}</p><p>{{expectedWidth}}*{{expectedHeight}}</p>\n </div>\n </div>\n </ng-container>\n\n <div\n *ngFor=\"let format of availableFormat| keyvalue\"\n class=\"dropdown-item-wrapper\">\n <div\n (click)=\"onOpenCanva(format.value.width, format.value.height)\"\n class=\"dropdown-item\">\n <p>{{format.key | translate}}</p><p>{{format.value.width}}*{{format.value.height}}</p>\n </div>\n </div>\n </div>\n </ng-scrollbar>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }, { kind: "directive", type: LoadingDirective, selector: "[btnLoadingAnim]" }, { kind: "directive", type: AutoHideDirective, selector: "[wzAutoHide]", inputs: ["triggerElement", "forceOn"], outputs: ["clickOutside"] }, { kind: "pipe", type: i2.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
|
|
2178
2458
|
}
|
|
2179
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2459
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CanvaBtnComponent, decorators: [{
|
|
2180
2460
|
type: Component,
|
|
2181
|
-
args: [{ selector: 'canva-btn', template: "<div class=\"canva dropdown is-right is-hoverable\"\
|
|
2461
|
+
args: [{ standalone: false, selector: 'canva-btn', template: "<div class=\"canva dropdown is-right is-hoverable\"\n wzAutoHide (clickOutside)=\"openDropDownMenu = false;\"\n [ngClass]=\"{'is-up': stateDisplayed === 'small', 'noTooltip': stateDisplayed !== 'small'}\"\n >\n <div class=\"dropdown-trigger\">\n <div\n class=\"button canva-btn\"\n aria-controls=\"dropdown-menuCanva\"\n (click)=\"openDropDownMenu = true;\"\n >\n <span>{{'ImgManager.CanvaBtn.createImg' | translate}}</span>\n <img [src]=\"canvaLogoRouteAssets\" class=\"canva-btn__logo\">\n\n <span btnLoadingAnim class=\"btnLoadingAnnimation\" *ngIf=\"imgLoading\"></span>\n </div>\n </div>\n <div\n class=\"dropdown-menu dropDownShadow\"\n [ngClass]=\"{'displayDropDownMenu': openDropDownMenu }\"\n id=\"dropdown-menuCanva\"\n role=\"menu\">\n <ng-scrollbar\n class=\"smallScroll\"\n >\n <div class=\"dropdown-content\">\n <div class=\"dropdownTitle\">\n <p>{{'ImgManager.CanvaBtn.createImg.title' | translate}}</p>\n </div>\n\n <div class=\"infoItem\">\n <p>{{'ImgManager.CanvaBtn.info' | translate}}</p>\n </div>\n\n <ng-container >\n <div\n *ngIf=\"expectedWidth && expectedHeight\"\n class=\"dropdown-item-wrapper\"\n >\n <div class=\"dropdown-item expectedSizes\" (click)=\"onOpenCanva(expectedWidth, expectedHeight)\">\n <p>{{'ImgManager.CanvaBtn.recommanded' | translate}}</p><p>{{expectedWidth}}*{{expectedHeight}}</p>\n </div>\n </div>\n </ng-container>\n\n <div\n *ngFor=\"let format of availableFormat| keyvalue\"\n class=\"dropdown-item-wrapper\">\n <div\n (click)=\"onOpenCanva(format.value.width, format.value.height)\"\n class=\"dropdown-item\">\n <p>{{format.key | translate}}</p><p>{{format.value.width}}*{{format.value.height}}</p>\n </div>\n </div>\n </div>\n </ng-scrollbar>\n </div>\n</div>\n" }]
|
|
2182
2462
|
}], ctorParameters: () => [{ type: CanvaService }], propDecorators: { stateDisplayed: [{
|
|
2183
2463
|
type: Input
|
|
2184
2464
|
}], showImgUploaded: [{
|
|
@@ -2198,12 +2478,13 @@ class PagniationIsLastPage {
|
|
|
2198
2478
|
}
|
|
2199
2479
|
return currentPage === Math.ceil(totalItems / itemsPerPage);
|
|
2200
2480
|
}
|
|
2201
|
-
static
|
|
2202
|
-
static
|
|
2481
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PagniationIsLastPage, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2482
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: PagniationIsLastPage, isStandalone: false, name: "IsLastPage" }); }
|
|
2203
2483
|
}
|
|
2204
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2484
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PagniationIsLastPage, decorators: [{
|
|
2205
2485
|
type: Pipe,
|
|
2206
2486
|
args: [{
|
|
2487
|
+
standalone: false,
|
|
2207
2488
|
name: 'IsLastPage'
|
|
2208
2489
|
}]
|
|
2209
2490
|
}] });
|
|
@@ -2224,12 +2505,13 @@ class PagniationArrayTotalPages {
|
|
|
2224
2505
|
.map(Number.call, Number)
|
|
2225
2506
|
.map((x) => x + 1);
|
|
2226
2507
|
}
|
|
2227
|
-
static
|
|
2228
|
-
static
|
|
2508
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PagniationArrayTotalPages, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2509
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: PagniationArrayTotalPages, isStandalone: false, name: "ArrayTotalPages" }); }
|
|
2229
2510
|
}
|
|
2230
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2511
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PagniationArrayTotalPages, decorators: [{
|
|
2231
2512
|
type: Pipe,
|
|
2232
2513
|
args: [{
|
|
2514
|
+
standalone: false,
|
|
2233
2515
|
name: 'ArrayTotalPages'
|
|
2234
2516
|
}]
|
|
2235
2517
|
}] });
|
|
@@ -2275,12 +2557,13 @@ class LargeNumberOfPagePipe {
|
|
|
2275
2557
|
}
|
|
2276
2558
|
return arrayWithPageNumber;
|
|
2277
2559
|
}
|
|
2278
|
-
static
|
|
2279
|
-
static
|
|
2560
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: LargeNumberOfPagePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2561
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: LargeNumberOfPagePipe, isStandalone: false, name: "LargeNumberOfPage" }); }
|
|
2280
2562
|
}
|
|
2281
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2563
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: LargeNumberOfPagePipe, decorators: [{
|
|
2282
2564
|
type: Pipe,
|
|
2283
2565
|
args: [{
|
|
2566
|
+
standalone: false,
|
|
2284
2567
|
name: 'LargeNumberOfPage'
|
|
2285
2568
|
}]
|
|
2286
2569
|
}] });
|
|
@@ -2292,7 +2575,6 @@ class PageSelectorComponent {
|
|
|
2292
2575
|
get pagination() {
|
|
2293
2576
|
return this._pagination;
|
|
2294
2577
|
}
|
|
2295
|
-
_pagination;
|
|
2296
2578
|
set totalItems(totalItems) {
|
|
2297
2579
|
this.numberOfPage = Math.ceil(totalItems / this.pagination.itemsPerPage);
|
|
2298
2580
|
this.largeNumberOfPage = this.numberOfPage > 30;
|
|
@@ -2300,12 +2582,12 @@ class PageSelectorComponent {
|
|
|
2300
2582
|
get totalItems() {
|
|
2301
2583
|
return this._totalItems;
|
|
2302
2584
|
}
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
|
|
2585
|
+
constructor() {
|
|
2586
|
+
this.openAbsoluteSelect = false;
|
|
2587
|
+
this.largeNumberOfPage = false;
|
|
2588
|
+
this.numberOfPage = 0;
|
|
2589
|
+
this.pageChange = new EventEmitter();
|
|
2590
|
+
}
|
|
2309
2591
|
onGotoPageChange(event, directValue) {
|
|
2310
2592
|
if (directValue) {
|
|
2311
2593
|
this.pageChange.emit(event);
|
|
@@ -2315,12 +2597,12 @@ class PageSelectorComponent {
|
|
|
2315
2597
|
this.pageChange.emit(parseInt(event.target.value));
|
|
2316
2598
|
}
|
|
2317
2599
|
}
|
|
2318
|
-
static
|
|
2319
|
-
static
|
|
2600
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PageSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2601
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: PageSelectorComponent, isStandalone: false, selector: "wz-page-selector", inputs: { pagination: "pagination", totalItems: "totalItems" }, outputs: { pageChange: "pageChange" }, ngImport: i0, template: "<div class=\"wz-selector\">\n\n <div class=\"wz-selector__default\" [ngStyle]=\"{'width': 40 + (10*pagination.currentPage.toString().length) + 'px'}\">\n <div class=\"wz-selector__default__base\" *ngIf=\"largeNumberOfPage;\" (click)=\"openAbsoluteSelect = !openAbsoluteSelect\">\n <input name=\"page-input\" [value]=\"pagination.currentPage\" (change)=\"onGotoPageChange($event, false);openAbsoluteSelect = false;\" [ngStyle]=\"{'width': 40 + (10*pagination.currentPage.toString().length) + 'px'}\" />\n <i class=\"fa-solid fa-sort-down\"></i>\n </div>\n <div class=\"wz-selector__default__absolute\" *ngIf=\"openAbsoluteSelect\">\n <div class=\"wz-selector__default__absolute__wrapper\" *ngFor=\"let pageIndex of (pagination.totalItems | LargeNumberOfPage: pagination.itemsPerPage : pagination.currentPage).slice().reverse() as result\">\n <div class=\"wz-selector__default__absolute__wrapper__item\" [ngClass]=\"{'selected': pageIndex.value === pagination.currentPage}\" (click)=\"onGotoPageChange(pageIndex.value, true)\">\n <span>{{ pageIndex.display }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <ng-container *ngIf=\"!largeNumberOfPage\">\n <select name=\"page\" (change)=\"onGotoPageChange($event, false)\" [ngStyle]=\"{'width': 40 + (10*pagination.currentPage.toString().length) + 'px'}\">\n <ng-container *ngFor=\"let pageIndex of pagination.totalItems | ArrayTotalPages: pagination.itemsPerPage\">\n <option [selected]=\"pageIndex === pagination.currentPage\" [value]=\"pageIndex\">\n {{ pageIndex }}\n </option>\n </ng-container>\n </select>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "pipe", type: PagniationArrayTotalPages, name: "ArrayTotalPages" }, { kind: "pipe", type: LargeNumberOfPagePipe, name: "LargeNumberOfPage" }] }); }
|
|
2320
2602
|
}
|
|
2321
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2603
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PageSelectorComponent, decorators: [{
|
|
2322
2604
|
type: Component,
|
|
2323
|
-
args: [{ selector: 'wz-page-selector', template: "<div class=\"wz-selector\">\
|
|
2605
|
+
args: [{ standalone: false, selector: 'wz-page-selector', template: "<div class=\"wz-selector\">\n\n <div class=\"wz-selector__default\" [ngStyle]=\"{'width': 40 + (10*pagination.currentPage.toString().length) + 'px'}\">\n <div class=\"wz-selector__default__base\" *ngIf=\"largeNumberOfPage;\" (click)=\"openAbsoluteSelect = !openAbsoluteSelect\">\n <input name=\"page-input\" [value]=\"pagination.currentPage\" (change)=\"onGotoPageChange($event, false);openAbsoluteSelect = false;\" [ngStyle]=\"{'width': 40 + (10*pagination.currentPage.toString().length) + 'px'}\" />\n <i class=\"fa-solid fa-sort-down\"></i>\n </div>\n <div class=\"wz-selector__default__absolute\" *ngIf=\"openAbsoluteSelect\">\n <div class=\"wz-selector__default__absolute__wrapper\" *ngFor=\"let pageIndex of (pagination.totalItems | LargeNumberOfPage: pagination.itemsPerPage : pagination.currentPage).slice().reverse() as result\">\n <div class=\"wz-selector__default__absolute__wrapper__item\" [ngClass]=\"{'selected': pageIndex.value === pagination.currentPage}\" (click)=\"onGotoPageChange(pageIndex.value, true)\">\n <span>{{ pageIndex.display }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <ng-container *ngIf=\"!largeNumberOfPage\">\n <select name=\"page\" (change)=\"onGotoPageChange($event, false)\" [ngStyle]=\"{'width': 40 + (10*pagination.currentPage.toString().length) + 'px'}\">\n <ng-container *ngFor=\"let pageIndex of pagination.totalItems | ArrayTotalPages: pagination.itemsPerPage\">\n <option [selected]=\"pageIndex === pagination.currentPage\" [value]=\"pageIndex\">\n {{ pageIndex }}\n </option>\n </ng-container>\n </select>\n </ng-container>\n</div>\n" }]
|
|
2324
2606
|
}], ctorParameters: () => [], propDecorators: { pagination: [{
|
|
2325
2607
|
type: Input
|
|
2326
2608
|
}], totalItems: [{
|
|
@@ -2330,7 +2612,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
2330
2612
|
}] } });
|
|
2331
2613
|
|
|
2332
2614
|
class PagniationText {
|
|
2333
|
-
translateService;
|
|
2334
2615
|
constructor(translateService) {
|
|
2335
2616
|
this.translateService = translateService;
|
|
2336
2617
|
}
|
|
@@ -2351,12 +2632,13 @@ class PagniationText {
|
|
|
2351
2632
|
}
|
|
2352
2633
|
return this.translateService.instant('PaginationComponent.on', { low: currentItemsLow, high: currentItemsHigh, total: totalItems });
|
|
2353
2634
|
}
|
|
2354
|
-
static
|
|
2355
|
-
static
|
|
2635
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PagniationText, deps: [{ token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2636
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: PagniationText, isStandalone: false, name: "customPagniationText" }); }
|
|
2356
2637
|
}
|
|
2357
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2638
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PagniationText, decorators: [{
|
|
2358
2639
|
type: Pipe,
|
|
2359
2640
|
args: [{
|
|
2641
|
+
standalone: false,
|
|
2360
2642
|
name: 'customPagniationText'
|
|
2361
2643
|
}]
|
|
2362
2644
|
}], ctorParameters: () => [{ type: i3.TranslateService }] });
|
|
@@ -2368,9 +2650,9 @@ class PaginationComponent {
|
|
|
2368
2650
|
get pagination() {
|
|
2369
2651
|
return this._pagination;
|
|
2370
2652
|
}
|
|
2371
|
-
|
|
2372
|
-
|
|
2373
|
-
|
|
2653
|
+
constructor() {
|
|
2654
|
+
this.pageChange = new EventEmitter();
|
|
2655
|
+
}
|
|
2374
2656
|
decrementPage() {
|
|
2375
2657
|
if (this.pagination.currentPage <= 1) {
|
|
2376
2658
|
return;
|
|
@@ -2390,12 +2672,12 @@ class PaginationComponent {
|
|
|
2390
2672
|
this.pagination.currentPage = parseInt(pageNumber);
|
|
2391
2673
|
this.pageChange.emit(this.pagination);
|
|
2392
2674
|
}
|
|
2393
|
-
static
|
|
2394
|
-
static
|
|
2675
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2676
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: PaginationComponent, isStandalone: false, selector: "wz-pagination", inputs: { pagination: "pagination" }, outputs: { pageChange: "pageChange" }, ngImport: i0, template: "<div class=\"wz-pagination\" *ngIf=\"pagination && pagination.itemsPerPage\">\n <div class=\"wz-pagination__wrapper\">\n <div class=\"wz-pagination__wrapper__page\">\n <p>{{ 'PaginationComponent.page' | translate }}</p>\n\n <wz-page-selector [pagination]=\"pagination\" [totalItems]=\"pagination.totalItems\" (pageChange)=\"onGotoPageChange($event)\"></wz-page-selector>\n </div>\n\n <div class=\"wz-pagination__wrapper__elements\">\n <p>{{ pagination.currentPage | customPagniationText: pagination.totalItems:pagination.itemsPerPage }}</p>\n </div>\n\n <div class=\"wz-pagination__wrapper__arrows\">\n <div\n (click)=\"decrementPage()\"\n class=\"wz-pagination__wrapper__arrows__arrow wz-pagination__wrapper__arrows__arrow--left\"\n [ngClass]=\"{ 'wz-pagination__wrapper__arrows__arrow--disabled': pagination.currentPage === 1 }\"\n >\n <span class=\"wz-pagination__wrapper__arrows__arrow__icon\"></span>\n </div>\n <div\n (click)=\"incrementPage()\"\n class=\"wz-pagination__wrapper__arrows__arrow wz-pagination__wrapper__arrows__arrow--right\"\n [ngClass]=\"{\n 'wz-pagination__wrapper__arrows__arrow--disabled':\n pagination.currentPage | IsLastPage: pagination.totalItems:pagination.itemsPerPage\n }\"\n >\n <span class=\"wz-pagination__wrapper__arrows__arrow__icon\"></span>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PageSelectorComponent, selector: "wz-page-selector", inputs: ["pagination", "totalItems"], outputs: ["pageChange"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "pipe", type: PagniationIsLastPage, name: "IsLastPage" }, { kind: "pipe", type: PagniationText, name: "customPagniationText" }] }); }
|
|
2395
2677
|
}
|
|
2396
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2678
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: PaginationComponent, decorators: [{
|
|
2397
2679
|
type: Component,
|
|
2398
|
-
args: [{ selector: 'wz-pagination', template: "<div class=\"wz-pagination\" *ngIf=\"pagination && pagination.itemsPerPage\">\n <div class=\"wz-pagination__wrapper\">\n <div class=\"wz-pagination__wrapper__page\">\n <p>{{ 'PaginationComponent.page' | translate }}</p>\n\n <wz-page-selector [pagination]=\"pagination\" [totalItems]=\"pagination.totalItems\" (pageChange)=\"onGotoPageChange($event)\"></wz-page-selector>\n </div>\n\n <div class=\"wz-pagination__wrapper__elements\">\n <p>{{ pagination.currentPage | customPagniationText: pagination.totalItems:pagination.itemsPerPage }}</p>\n </div>\n\n <div class=\"wz-pagination__wrapper__arrows\">\n <div\n (click)=\"decrementPage()\"\n class=\"wz-pagination__wrapper__arrows__arrow wz-pagination__wrapper__arrows__arrow--left\"\n [ngClass]=\"{ 'wz-pagination__wrapper__arrows__arrow--disabled': pagination.currentPage === 1 }\"\n >\n <span class=\"wz-pagination__wrapper__arrows__arrow__icon\"></span>\n </div>\n <div\n (click)=\"incrementPage()\"\n class=\"wz-pagination__wrapper__arrows__arrow wz-pagination__wrapper__arrows__arrow--right\"\n [ngClass]=\"{\n 'wz-pagination__wrapper__arrows__arrow--disabled':\n pagination.currentPage | IsLastPage: pagination.totalItems:pagination.itemsPerPage\n }\"\n >\n <span class=\"wz-pagination__wrapper__arrows__arrow__icon\"></span>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
2680
|
+
args: [{ standalone: false, selector: 'wz-pagination', template: "<div class=\"wz-pagination\" *ngIf=\"pagination && pagination.itemsPerPage\">\n <div class=\"wz-pagination__wrapper\">\n <div class=\"wz-pagination__wrapper__page\">\n <p>{{ 'PaginationComponent.page' | translate }}</p>\n\n <wz-page-selector [pagination]=\"pagination\" [totalItems]=\"pagination.totalItems\" (pageChange)=\"onGotoPageChange($event)\"></wz-page-selector>\n </div>\n\n <div class=\"wz-pagination__wrapper__elements\">\n <p>{{ pagination.currentPage | customPagniationText: pagination.totalItems:pagination.itemsPerPage }}</p>\n </div>\n\n <div class=\"wz-pagination__wrapper__arrows\">\n <div\n (click)=\"decrementPage()\"\n class=\"wz-pagination__wrapper__arrows__arrow wz-pagination__wrapper__arrows__arrow--left\"\n [ngClass]=\"{ 'wz-pagination__wrapper__arrows__arrow--disabled': pagination.currentPage === 1 }\"\n >\n <span class=\"wz-pagination__wrapper__arrows__arrow__icon\"></span>\n </div>\n <div\n (click)=\"incrementPage()\"\n class=\"wz-pagination__wrapper__arrows__arrow wz-pagination__wrapper__arrows__arrow--right\"\n [ngClass]=\"{\n 'wz-pagination__wrapper__arrows__arrow--disabled':\n pagination.currentPage | IsLastPage: pagination.totalItems:pagination.itemsPerPage\n }\"\n >\n <span class=\"wz-pagination__wrapper__arrows__arrow__icon\"></span>\n </div>\n </div>\n </div>\n</div>\n" }]
|
|
2399
2681
|
}], ctorParameters: () => [], propDecorators: { pagination: [{
|
|
2400
2682
|
type: Input
|
|
2401
2683
|
}], pageChange: [{
|
|
@@ -2406,23 +2688,22 @@ class NumberToArray {
|
|
|
2406
2688
|
transform(number) {
|
|
2407
2689
|
return Array.from('x'.repeat(number));
|
|
2408
2690
|
}
|
|
2409
|
-
static
|
|
2410
|
-
static
|
|
2691
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: NumberToArray, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
2692
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: NumberToArray, isStandalone: false, name: "numberToArray" }); }
|
|
2411
2693
|
}
|
|
2412
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2694
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: NumberToArray, decorators: [{
|
|
2413
2695
|
type: Pipe,
|
|
2414
2696
|
args: [{
|
|
2697
|
+
standalone: false,
|
|
2415
2698
|
name: 'numberToArray'
|
|
2416
2699
|
}]
|
|
2417
2700
|
}] });
|
|
2418
2701
|
|
|
2419
2702
|
class MosaicViewComponent extends ImagesActionHandler {
|
|
2420
|
-
tabDisplayed;
|
|
2421
|
-
fullSize;
|
|
2422
|
-
nbFakeImg = 0;
|
|
2423
|
-
switchDisplayWindow = new EventEmitter();
|
|
2424
2703
|
constructor(imgManager, imgSelectionService, http, imgCDNService, imgEventCardService, alertService, translateService, apiService) {
|
|
2425
2704
|
super(imgManager, imgSelectionService, http, imgCDNService, imgEventCardService, alertService, translateService, apiService);
|
|
2705
|
+
this.nbFakeImg = 0;
|
|
2706
|
+
this.switchDisplayWindow = new EventEmitter();
|
|
2426
2707
|
}
|
|
2427
2708
|
ngOnInit() {
|
|
2428
2709
|
}
|
|
@@ -2442,16 +2723,16 @@ class MosaicViewComponent extends ImagesActionHandler {
|
|
|
2442
2723
|
trackById(index, picture) {
|
|
2443
2724
|
return picture.id;
|
|
2444
2725
|
}
|
|
2445
|
-
static
|
|
2446
|
-
static
|
|
2726
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: MosaicViewComponent, deps: [{ token: ImgManagerService }, { token: ImgSelectionService }, { token: i3$1.HttpClient }, { token: ImgCDNService }, { token: ImgEventService }, { token: AlertService }, { token: i3.TranslateService }, { token: ApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2727
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: MosaicViewComponent, isStandalone: false, selector: "mosaic-view", inputs: { tabDisplayed: "tabDisplayed", fullSize: "fullSize", nbFakeImg: "nbFakeImg" }, outputs: { switchDisplayWindow: "switchDisplayWindow" }, usesInheritance: true, ngImport: i0, template: "<div class=\"mosaic\" [ngClass]=\"{'fullSize': fullSize, 'small': stateDisplayed === 'small', 'mosaic--displayPexelsImg': displayPexelsResults}\">\n <!-- Search section -->\n <div\n class=\"mosaic__search\"\n [ngClass]=\"{'mosaic__search--small': stateDisplayed === 'small'}\"\n *ngIf=\"tabDisplayed !== 'img-upload'\">\n <wz-input-search\n [(ngModel)]=\"tableFilters.searchValue\"\n (changeDebounced)=\"onSearchChange($event)\"\n [placeholder]=\"'ImgManager.SearchBar.placeholder' | translate\"\n [smallPadding]=\"stateDisplayed === 'small'\"\n ></wz-input-search>\n </div>\n\n <!-- Cards section -->\n <div\n class=\"mosaic__container__cards\"\n [ngClass]=\"{'mosaic__container__cards--padding': stateDisplayed !== 'window'}\"\n [@listAnimation]=\"picturesList.length\"\n *ngIf=\"!isLoading && !displayPexelsResults\"\n >\n <img-card\n *ngFor=\"let picture of picturesList; let index = index; trackBy: trackById \"\n [picture]=\"picture\"\n [stateDisplayed]=\"stateDisplayed\"\n [tabDisplayed]=\"tabDisplayed\"\n [disable]=\"disable\"\n (toggleImgSelected)=\"onToggleSelectImg(index)\"\n (pictureNameChange)=\"onCardRenamePicture($event)\"\n (switchDisplayWindow)=\"switchDisplayWindowCard()\"\n [fullSize]=\"fullSize\"\n ></img-card>\n <div\n *ngFor=\"let fakeImg of nbFakeImg | numberToArray\"\n class=\"mosaic__container__cards__fakeImg\"\n [ngClass]=\"{'mosaic__container__cards__fakeImg--smallFakeImg': stateDisplayed === 'small' || tabDisplayed === 'img-upload'}\">\n </div>\n </div>\n\n <!-- Loader section -->\n <div class=\"mosaic__container__loader\" *ngIf=\"isLoading\">\n <wz-loader [small]=\"true\"></wz-loader>\n </div>\n\n <!-- Pagination section -->\n <div class=\"mosaic__pagination\" *ngIf=\"picturesList.length && tabDisplayed !== 'img-upload' && !displayPexelsResults\" >\n <wz-pagination\n [pagination]=\"tableFilters\"\n (pageChange)=\"onFiltersChange()\"\n >\n </wz-pagination>\n </div>\n\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ImgCardComponent, selector: "img-card", inputs: ["tabDisplayed", "fullSize", "picture", "index"], outputs: ["toggleImgSelected", "switchDisplayWindow"] }, { kind: "component", type: LoaderComponent, selector: "wz-loader", inputs: ["text", "small", "position"] }, { kind: "component", type: InputSearchComponent, selector: "wz-input-search", inputs: ["placeholder", "smallPadding", "id"], outputs: ["changeDebounced"] }, { kind: "component", type: PaginationComponent, selector: "wz-pagination", inputs: ["pagination"], outputs: ["pageChange"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "pipe", type: NumberToArray, name: "numberToArray" }], animations: [
|
|
2447
2728
|
listAnnimation
|
|
2448
|
-
] });
|
|
2729
|
+
] }); }
|
|
2449
2730
|
}
|
|
2450
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2731
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: MosaicViewComponent, decorators: [{
|
|
2451
2732
|
type: Component,
|
|
2452
|
-
args: [{ selector: 'mosaic-view', animations: [
|
|
2733
|
+
args: [{ standalone: false, selector: 'mosaic-view', animations: [
|
|
2453
2734
|
listAnnimation
|
|
2454
|
-
], template: "<div class=\"mosaic\" [ngClass]=\"{'fullSize': fullSize, 'small': stateDisplayed === 'small', 'mosaic--displayPexelsImg': displayPexelsResults}\">\
|
|
2735
|
+
], template: "<div class=\"mosaic\" [ngClass]=\"{'fullSize': fullSize, 'small': stateDisplayed === 'small', 'mosaic--displayPexelsImg': displayPexelsResults}\">\n <!-- Search section -->\n <div\n class=\"mosaic__search\"\n [ngClass]=\"{'mosaic__search--small': stateDisplayed === 'small'}\"\n *ngIf=\"tabDisplayed !== 'img-upload'\">\n <wz-input-search\n [(ngModel)]=\"tableFilters.searchValue\"\n (changeDebounced)=\"onSearchChange($event)\"\n [placeholder]=\"'ImgManager.SearchBar.placeholder' | translate\"\n [smallPadding]=\"stateDisplayed === 'small'\"\n ></wz-input-search>\n </div>\n\n <!-- Cards section -->\n <div\n class=\"mosaic__container__cards\"\n [ngClass]=\"{'mosaic__container__cards--padding': stateDisplayed !== 'window'}\"\n [@listAnimation]=\"picturesList.length\"\n *ngIf=\"!isLoading && !displayPexelsResults\"\n >\n <img-card\n *ngFor=\"let picture of picturesList; let index = index; trackBy: trackById \"\n [picture]=\"picture\"\n [stateDisplayed]=\"stateDisplayed\"\n [tabDisplayed]=\"tabDisplayed\"\n [disable]=\"disable\"\n (toggleImgSelected)=\"onToggleSelectImg(index)\"\n (pictureNameChange)=\"onCardRenamePicture($event)\"\n (switchDisplayWindow)=\"switchDisplayWindowCard()\"\n [fullSize]=\"fullSize\"\n ></img-card>\n <div\n *ngFor=\"let fakeImg of nbFakeImg | numberToArray\"\n class=\"mosaic__container__cards__fakeImg\"\n [ngClass]=\"{'mosaic__container__cards__fakeImg--smallFakeImg': stateDisplayed === 'small' || tabDisplayed === 'img-upload'}\">\n </div>\n </div>\n\n <!-- Loader section -->\n <div class=\"mosaic__container__loader\" *ngIf=\"isLoading\">\n <wz-loader [small]=\"true\"></wz-loader>\n </div>\n\n <!-- Pagination section -->\n <div class=\"mosaic__pagination\" *ngIf=\"picturesList.length && tabDisplayed !== 'img-upload' && !displayPexelsResults\" >\n <wz-pagination\n [pagination]=\"tableFilters\"\n (pageChange)=\"onFiltersChange()\"\n >\n </wz-pagination>\n </div>\n\n</div>\n" }]
|
|
2455
2736
|
}], ctorParameters: () => [{ type: ImgManagerService }, { type: ImgSelectionService }, { type: i3$1.HttpClient }, { type: ImgCDNService }, { type: ImgEventService }, { type: AlertService }, { type: i3.TranslateService }, { type: ApiService }], propDecorators: { tabDisplayed: [{
|
|
2456
2737
|
type: Input
|
|
2457
2738
|
}], fullSize: [{
|
|
@@ -2463,19 +2744,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
2463
2744
|
}] } });
|
|
2464
2745
|
|
|
2465
2746
|
class FiltersTableService {
|
|
2466
|
-
filterRoutingBuilder;
|
|
2467
|
-
filterGroups = new Map();
|
|
2468
|
-
dataTableFilters = {
|
|
2469
|
-
sort: undefined,
|
|
2470
|
-
order: undefined,
|
|
2471
|
-
searchValue: undefined,
|
|
2472
|
-
totalItems: 0,
|
|
2473
|
-
itemsPerPage: 0,
|
|
2474
|
-
currentPage: 0
|
|
2475
|
-
};
|
|
2476
|
-
sortSubject = new Subject();
|
|
2477
2747
|
constructor(filterRoutingBuilder) {
|
|
2478
2748
|
this.filterRoutingBuilder = filterRoutingBuilder;
|
|
2749
|
+
this.filterGroups = new Map();
|
|
2750
|
+
this.dataTableFilters = {
|
|
2751
|
+
sort: undefined,
|
|
2752
|
+
order: undefined,
|
|
2753
|
+
type: '',
|
|
2754
|
+
searchValue: undefined,
|
|
2755
|
+
totalItems: 0,
|
|
2756
|
+
itemsPerPage: 0,
|
|
2757
|
+
currentPage: 0
|
|
2758
|
+
};
|
|
2759
|
+
this.sortSubject = new Subject();
|
|
2479
2760
|
}
|
|
2480
2761
|
getTableFilterGroup(dataTableName) {
|
|
2481
2762
|
if (this.filterGroups.has(dataTableName)) {
|
|
@@ -2511,25 +2792,21 @@ class FiltersTableService {
|
|
|
2511
2792
|
currentPage: filterGroup.get('currentPage') ? parseInt(filterGroup.get('currentPage')) : currentPage
|
|
2512
2793
|
});
|
|
2513
2794
|
}
|
|
2514
|
-
static
|
|
2515
|
-
static
|
|
2795
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FiltersTableService, deps: [{ token: i1.NwbFilterRoutingBuilder }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2796
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FiltersTableService }); }
|
|
2516
2797
|
}
|
|
2517
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2798
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: FiltersTableService, decorators: [{
|
|
2518
2799
|
type: Injectable
|
|
2519
2800
|
}], ctorParameters: () => [{ type: i1.NwbFilterRoutingBuilder }] });
|
|
2520
2801
|
|
|
2521
2802
|
class CheckboxComponent {
|
|
2522
|
-
|
|
2523
|
-
|
|
2524
|
-
|
|
2525
|
-
|
|
2526
|
-
|
|
2527
|
-
|
|
2528
|
-
|
|
2529
|
-
disabled = false;
|
|
2530
|
-
constructor() { }
|
|
2531
|
-
_onChange;
|
|
2532
|
-
_onTouched;
|
|
2803
|
+
constructor() {
|
|
2804
|
+
this.label = '';
|
|
2805
|
+
this.alone = false;
|
|
2806
|
+
this.checked = false;
|
|
2807
|
+
this.id = '';
|
|
2808
|
+
this.disabled = false;
|
|
2809
|
+
}
|
|
2533
2810
|
registerOnChange(fn) {
|
|
2534
2811
|
this._onChange = fn;
|
|
2535
2812
|
}
|
|
@@ -2547,12 +2824,12 @@ class CheckboxComponent {
|
|
|
2547
2824
|
this._onChange(value);
|
|
2548
2825
|
}
|
|
2549
2826
|
}
|
|
2550
|
-
static
|
|
2551
|
-
static
|
|
2827
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2828
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: CheckboxComponent, isStandalone: false, selector: "wz-checkbox", inputs: { label: "label", value: "value", type: "type", alone: "alone", checked: "checked", id: "id", name: "name" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true }], ngImport: i0, template: "<div class=\"checkBoxField field\" [ngClass]=\"{ 'field--nowrap': type === 'column', alone: alone }\">\n <div class=\"field__row\">\n <input\n type=\"checkbox\"\n [id]=\"id\"\n class=\"is-checkradio\"\n [name]=\"name\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n [checked]=\"checked\"\n (ngModelChange)=\"onChange($event)\"\n />\n <label [attr.for]=\"id\">{{ label }}</label>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
2552
2829
|
}
|
|
2553
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2830
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CheckboxComponent, decorators: [{
|
|
2554
2831
|
type: Component,
|
|
2555
|
-
args: [{ selector: 'wz-checkbox', encapsulation: ViewEncapsulation.None, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true }], template: "<div class=\"checkBoxField field\" [ngClass]=\"{ 'field--nowrap': type === 'column', alone: alone }\">\n <div class=\"field__row\">\n <input\n type=\"checkbox\"\n [id]=\"id\"\n class=\"is-checkradio\"\n [name]=\"name\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n [checked]=\"checked\"\n (ngModelChange)=\"onChange($event)\"\n />\n <label [attr.for]=\"id\">{{ label }}</label>\n </div>\n</div>\n" }]
|
|
2832
|
+
args: [{ standalone: false, selector: 'wz-checkbox', encapsulation: ViewEncapsulation.None, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true }], template: "<div class=\"checkBoxField field\" [ngClass]=\"{ 'field--nowrap': type === 'column', alone: alone }\">\n <div class=\"field__row\">\n <input\n type=\"checkbox\"\n [id]=\"id\"\n class=\"is-checkradio\"\n [name]=\"name\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n [checked]=\"checked\"\n (ngModelChange)=\"onChange($event)\"\n />\n <label [attr.for]=\"id\">{{ label }}</label>\n </div>\n</div>\n" }]
|
|
2556
2833
|
}], ctorParameters: () => [], propDecorators: { label: [{
|
|
2557
2834
|
type: Input
|
|
2558
2835
|
}], value: [{
|
|
@@ -2570,30 +2847,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
2570
2847
|
}] } });
|
|
2571
2848
|
|
|
2572
2849
|
class TableComponent {
|
|
2573
|
-
filtersTableService;
|
|
2574
|
-
/// Input/Output of table filters ///
|
|
2575
|
-
tableFilters;
|
|
2576
|
-
tableFiltersChange = new EventEmitter();
|
|
2577
|
-
tableRoutingName; // Name of the table
|
|
2578
|
-
placeholder = '';
|
|
2579
|
-
_filterGroup;
|
|
2580
|
-
/// Input/Output of checkbox ///
|
|
2581
|
-
/** Pass to true to display checkbox in the header table */
|
|
2582
|
-
checkbox = false;
|
|
2583
|
-
/** Emit new header checboxValue */
|
|
2584
|
-
toggleAllCheckBox = new EventEmitter();
|
|
2585
|
-
/// Input to disable section ///
|
|
2586
|
-
/** Pass to true to hide search input */
|
|
2587
|
-
disableSearch = false;
|
|
2588
|
-
/** Pass to true to hide the pagniator */
|
|
2589
|
-
disablePagniation = false;
|
|
2590
|
-
/// Input for loader on table body ///
|
|
2591
|
-
isLoading = false;
|
|
2592
|
-
/// Private variables ///
|
|
2593
|
-
headerCheckBoxId;
|
|
2594
|
-
filterGroupChangeSub;
|
|
2595
2850
|
constructor(filtersTableService) {
|
|
2596
2851
|
this.filtersTableService = filtersTableService;
|
|
2852
|
+
this.tableFiltersChange = new EventEmitter();
|
|
2853
|
+
this.placeholder = '';
|
|
2854
|
+
/// Input/Output of checkbox ///
|
|
2855
|
+
/** Pass to true to display checkbox in the header table */
|
|
2856
|
+
this.checkbox = false;
|
|
2857
|
+
/** Emit new header checboxValue */
|
|
2858
|
+
this.toggleAllCheckBox = new EventEmitter();
|
|
2859
|
+
/// Input to disable section ///
|
|
2860
|
+
/** Pass to true to hide search input */
|
|
2861
|
+
this.disableSearch = false;
|
|
2862
|
+
/** Pass to true to hide the pagniator */
|
|
2863
|
+
this.disablePagniation = false;
|
|
2864
|
+
/// Input for loader on table body ///
|
|
2865
|
+
this.isLoading = false;
|
|
2597
2866
|
}
|
|
2598
2867
|
ngOnInit() {
|
|
2599
2868
|
this.headerCheckBoxId = v4(); // Create checkbox unique id
|
|
@@ -2645,6 +2914,7 @@ class TableComponent {
|
|
|
2645
2914
|
sort: this._filterGroup.get('sort'),
|
|
2646
2915
|
order: this._filterGroup.get('order'),
|
|
2647
2916
|
searchValue: this._filterGroup.get('searchValue'),
|
|
2917
|
+
type: this._filterGroup.get('type'),
|
|
2648
2918
|
itemsPerPage: this._filterGroup.get('itemsPerPage') ? parseInt(this._filterGroup.get('itemsPerPage')) : 0,
|
|
2649
2919
|
currentPage: this._filterGroup.get('currentPage') ? parseInt(this._filterGroup.get('currentPage')) : 0,
|
|
2650
2920
|
totalItems: this.tableFilters.totalItems
|
|
@@ -2656,12 +2926,12 @@ class TableComponent {
|
|
|
2656
2926
|
this.filterGroupChangeSub.unsubscribe();
|
|
2657
2927
|
}
|
|
2658
2928
|
}
|
|
2659
|
-
static
|
|
2660
|
-
static
|
|
2929
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TableComponent, deps: [{ token: FiltersTableService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2930
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: TableComponent, isStandalone: false, selector: "wz-table", inputs: { tableFilters: "tableFilters", tableRoutingName: "tableRoutingName", placeholder: "placeholder", checkbox: "checkbox", disableSearch: "disableSearch", disablePagniation: "disablePagniation", isLoading: "isLoading" }, outputs: { tableFiltersChange: "tableFiltersChange", toggleAllCheckBox: "toggleAllCheckBox" }, ngImport: i0, template: "<div class=\"wz-table\">\n <!-- Header section -->\n <div class=\"wz-table__head\" id=\"headerTable\">\n <div *ngIf=\"checkbox\" class=\"wz-table__head__cell wz-table__head__cell--checkbox\">\n <wz-checkbox [id]=\"headerCheckBoxId\" (change)=\"onToggleAllCheckBox($event)\" [alone]=\"true\"></wz-checkbox>\n </div>\n\n <!-- Header contents are added with the headerCell directive -->\n <ng-content select=\"[headerCell]\"></ng-content>\n </div>\n\n <!-- Search section -->\n <div *ngIf=\"!disableSearch\" class=\"wz-table__search\">\n <wz-input-search\n [(ngModel)]=\"tableFilters.searchValue\"\n (changeDebounced)=\"searchChange($event)\"\n [placeholder]=\"placeholder\"\n [smallPadding]=\"true\"\n ></wz-input-search>\n </div>\n\n <!-- Body section -->\n <div class=\"wz-table__body\">\n <!-- Loader on body -->\n <div class=\"wz-table__body__loader\" *ngIf=\"isLoading\">\n <wz-loader [small]=\"true\"></wz-loader>\n </div>\n <!-- Body contents are added with the tableRow directive -->\n <ng-content select=\"[tableRow]\" *ngIf=\"!isLoading\"></ng-content>\n </div>\n\n <!-- Pagination section -->\n <wz-pagination *ngIf=\"!disablePagniation\" [pagination]=\"tableFilters\" (pageChange)=\"pageChange()\"></wz-pagination>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: LoaderComponent, selector: "wz-loader", inputs: ["text", "small", "position"] }, { kind: "component", type: InputSearchComponent, selector: "wz-input-search", inputs: ["placeholder", "smallPadding", "id"], outputs: ["changeDebounced"] }, { kind: "component", type: PaginationComponent, selector: "wz-pagination", inputs: ["pagination"], outputs: ["pageChange"] }, { kind: "component", type: CheckboxComponent, selector: "wz-checkbox", inputs: ["label", "value", "type", "alone", "checked", "id", "name"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
2661
2931
|
}
|
|
2662
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2932
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TableComponent, decorators: [{
|
|
2663
2933
|
type: Component,
|
|
2664
|
-
args: [{ selector: 'wz-table', encapsulation: ViewEncapsulation.None, template: "<div class=\"wz-table\">\n <!-- Header section -->\n <div class=\"wz-table__head\" id=\"headerTable\">\n <div *ngIf=\"checkbox\" class=\"wz-table__head__cell wz-table__head__cell--checkbox\">\n <wz-checkbox [id]=\"headerCheckBoxId\" (change)=\"onToggleAllCheckBox($event)\" [alone]=\"true\"></wz-checkbox>\n </div>\n\n <!-- Header contents are added with the headerCell directive -->\n <ng-content select=\"[headerCell]\"></ng-content>\n </div>\n\n <!-- Search section -->\n <div *ngIf=\"!disableSearch\" class=\"wz-table__search\">\n <wz-input-search\n [(ngModel)]=\"tableFilters.searchValue\"\n (changeDebounced)=\"searchChange($event)\"\n [placeholder]=\"placeholder\"\n [smallPadding]=\"true\"\n ></wz-input-search>\n </div>\n\n <!-- Body section -->\n <div class=\"wz-table__body\">\n <!-- Loader on body -->\n <div class=\"wz-table__body__loader\" *ngIf=\"isLoading\">\n <wz-loader [small]=\"true\"></wz-loader>\n </div>\n <!-- Body contents are added with the tableRow directive -->\n <ng-content select=\"[tableRow]\" *ngIf=\"!isLoading\"></ng-content>\n </div>\n\n <!-- Pagination section -->\n <wz-pagination *ngIf=\"!disablePagniation\" [pagination]=\"tableFilters\" (pageChange)=\"pageChange()\"></wz-pagination>\n</div>\n" }]
|
|
2934
|
+
args: [{ standalone: false, selector: 'wz-table', encapsulation: ViewEncapsulation.None, template: "<div class=\"wz-table\">\n <!-- Header section -->\n <div class=\"wz-table__head\" id=\"headerTable\">\n <div *ngIf=\"checkbox\" class=\"wz-table__head__cell wz-table__head__cell--checkbox\">\n <wz-checkbox [id]=\"headerCheckBoxId\" (change)=\"onToggleAllCheckBox($event)\" [alone]=\"true\"></wz-checkbox>\n </div>\n\n <!-- Header contents are added with the headerCell directive -->\n <ng-content select=\"[headerCell]\"></ng-content>\n </div>\n\n <!-- Search section -->\n <div *ngIf=\"!disableSearch\" class=\"wz-table__search\">\n <wz-input-search\n [(ngModel)]=\"tableFilters.searchValue\"\n (changeDebounced)=\"searchChange($event)\"\n [placeholder]=\"placeholder\"\n [smallPadding]=\"true\"\n ></wz-input-search>\n </div>\n\n <!-- Body section -->\n <div class=\"wz-table__body\">\n <!-- Loader on body -->\n <div class=\"wz-table__body__loader\" *ngIf=\"isLoading\">\n <wz-loader [small]=\"true\"></wz-loader>\n </div>\n <!-- Body contents are added with the tableRow directive -->\n <ng-content select=\"[tableRow]\" *ngIf=\"!isLoading\"></ng-content>\n </div>\n\n <!-- Pagination section -->\n <wz-pagination *ngIf=\"!disablePagniation\" [pagination]=\"tableFilters\" (pageChange)=\"pageChange()\"></wz-pagination>\n</div>\n" }]
|
|
2665
2935
|
}], ctorParameters: () => [{ type: FiltersTableService }], propDecorators: { tableFilters: [{
|
|
2666
2936
|
type: Input
|
|
2667
2937
|
}], tableFiltersChange: [{
|
|
@@ -2683,16 +2953,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
2683
2953
|
}] } });
|
|
2684
2954
|
|
|
2685
2955
|
class TableColumn {
|
|
2686
|
-
currentCell;
|
|
2687
|
-
renderer;
|
|
2688
|
-
document;
|
|
2689
|
-
columnSize; // Optional.
|
|
2690
|
-
centerCell; // Optional. left|center|right
|
|
2691
|
-
centerCellValue = ['left', 'center', 'right'];
|
|
2692
2956
|
constructor(currentCell, renderer, document) {
|
|
2693
2957
|
this.currentCell = currentCell;
|
|
2694
2958
|
this.renderer = renderer;
|
|
2695
2959
|
this.document = document;
|
|
2960
|
+
this.centerCellValue = ['left', 'center', 'right'];
|
|
2696
2961
|
}
|
|
2697
2962
|
ngAfterViewInit() {
|
|
2698
2963
|
this.applyCustomStylesOnCell();
|
|
@@ -2708,12 +2973,13 @@ class TableColumn {
|
|
|
2708
2973
|
this.renderer.addClass(this.currentCell.nativeElement, className);
|
|
2709
2974
|
}
|
|
2710
2975
|
}
|
|
2711
|
-
static
|
|
2712
|
-
static
|
|
2976
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TableColumn, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2977
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: TableColumn, isStandalone: false, selector: "[tableColumn]", inputs: { columnSize: "columnSize", centerCell: "centerCell" }, ngImport: i0 }); }
|
|
2713
2978
|
}
|
|
2714
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2979
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TableColumn, decorators: [{
|
|
2715
2980
|
type: Directive,
|
|
2716
2981
|
args: [{
|
|
2982
|
+
standalone: false,
|
|
2717
2983
|
selector: '[tableColumn]'
|
|
2718
2984
|
}]
|
|
2719
2985
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
|
|
@@ -2728,27 +2994,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
2728
2994
|
}] } });
|
|
2729
2995
|
|
|
2730
2996
|
class CheckBoxRow {
|
|
2731
|
-
currentRow;
|
|
2732
|
-
appRef;
|
|
2733
|
-
renderer;
|
|
2734
|
-
document;
|
|
2735
|
-
resolver;
|
|
2736
|
-
injector;
|
|
2737
|
-
checkBoxId;
|
|
2738
|
-
checkBoxName;
|
|
2739
2997
|
set checkBoxValue(value) {
|
|
2740
2998
|
this._value = value;
|
|
2741
2999
|
if (this.checkboxComponentRef) {
|
|
2742
3000
|
this.setCheckBoxValue();
|
|
2743
3001
|
}
|
|
2744
3002
|
}
|
|
2745
|
-
_value;
|
|
2746
3003
|
get checkBoxValue() {
|
|
2747
3004
|
return this._value;
|
|
2748
3005
|
}
|
|
2749
|
-
checkBoxValueChange = new EventEmitter();
|
|
2750
|
-
checkboxComponentRef;
|
|
2751
|
-
htmlContainer;
|
|
2752
3006
|
constructor(currentRow, appRef, renderer, document, resolver, injector) {
|
|
2753
3007
|
this.currentRow = currentRow;
|
|
2754
3008
|
this.appRef = appRef;
|
|
@@ -2756,6 +3010,7 @@ class CheckBoxRow {
|
|
|
2756
3010
|
this.document = document;
|
|
2757
3011
|
this.resolver = resolver;
|
|
2758
3012
|
this.injector = injector;
|
|
3013
|
+
this.checkBoxValueChange = new EventEmitter();
|
|
2759
3014
|
}
|
|
2760
3015
|
ngOnInit() {
|
|
2761
3016
|
this.createCheckBoxComponent();
|
|
@@ -2794,12 +3049,13 @@ class CheckBoxRow {
|
|
|
2794
3049
|
ngOnDestroy() {
|
|
2795
3050
|
this.htmlContainer.dispose();
|
|
2796
3051
|
}
|
|
2797
|
-
static
|
|
2798
|
-
static
|
|
3052
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CheckBoxRow, deps: [{ token: i0.ElementRef }, { token: i0.ApplicationRef }, { token: i0.Renderer2 }, { token: DOCUMENT }, { token: i0.ComponentFactoryResolver }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
3053
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: CheckBoxRow, isStandalone: false, selector: "[checkBoxRow]", inputs: { checkBoxId: "checkBoxId", checkBoxName: "checkBoxName", checkBoxValue: "checkBoxValue" }, outputs: { checkBoxValueChange: "checkBoxValueChange" }, ngImport: i0 }); }
|
|
2799
3054
|
}
|
|
2800
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3055
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: CheckBoxRow, decorators: [{
|
|
2801
3056
|
type: Directive,
|
|
2802
3057
|
args: [{
|
|
3058
|
+
standalone: false,
|
|
2803
3059
|
selector: '[checkBoxRow]'
|
|
2804
3060
|
}]
|
|
2805
3061
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ApplicationRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
|
|
@@ -2818,17 +3074,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
2818
3074
|
type: Output
|
|
2819
3075
|
}] } });
|
|
2820
3076
|
class HtmlContainer {
|
|
2821
|
-
hostElement;
|
|
2822
|
-
appRef;
|
|
2823
|
-
componentFactoryResolver;
|
|
2824
|
-
injector;
|
|
2825
|
-
attached = false;
|
|
2826
|
-
disposeFn;
|
|
2827
3077
|
constructor(hostElement, appRef, componentFactoryResolver, injector) {
|
|
2828
3078
|
this.hostElement = hostElement;
|
|
2829
3079
|
this.appRef = appRef;
|
|
2830
3080
|
this.componentFactoryResolver = componentFactoryResolver;
|
|
2831
3081
|
this.injector = injector;
|
|
3082
|
+
this.attached = false;
|
|
2832
3083
|
}
|
|
2833
3084
|
attach(component) {
|
|
2834
3085
|
if (this.attached) {
|
|
@@ -2853,35 +3104,24 @@ class HtmlContainer {
|
|
|
2853
3104
|
}
|
|
2854
3105
|
|
|
2855
3106
|
class TableColumnHeader {
|
|
2856
|
-
currentCell;
|
|
2857
|
-
renderer;
|
|
2858
|
-
document;
|
|
2859
|
-
filtersTableService;
|
|
2860
3107
|
set headerName(value) {
|
|
2861
3108
|
this._headerName = value;
|
|
2862
3109
|
this.setHeaderName();
|
|
2863
3110
|
}
|
|
2864
|
-
_headerName = '';
|
|
2865
3111
|
get headerName() {
|
|
2866
3112
|
return this._headerName;
|
|
2867
3113
|
}
|
|
2868
|
-
columnSize; // Optional.
|
|
2869
|
-
filterRouting = false; // Optional. Set to true to use Filter Routing.
|
|
2870
|
-
tableName; // Optional, but mandatory to handle sorting
|
|
2871
|
-
sortName; // Optional, but mandatory to handle sorting
|
|
2872
|
-
centerCell; // Optional. left|center|right
|
|
2873
|
-
onSortChange = new EventEmitter(); // Emit the sort value (true, false, undefuned) of the current sort icon when clicking
|
|
2874
|
-
tableFilters;
|
|
2875
|
-
tableFiltersChange = new EventEmitter();
|
|
2876
|
-
centerCellValue = ['left', 'center', 'right'];
|
|
2877
|
-
contentHeader;
|
|
2878
|
-
filterGroup;
|
|
2879
|
-
subscriptions = [];
|
|
2880
3114
|
constructor(currentCell, renderer, document, filtersTableService) {
|
|
2881
3115
|
this.currentCell = currentCell;
|
|
2882
3116
|
this.renderer = renderer;
|
|
2883
3117
|
this.document = document;
|
|
2884
3118
|
this.filtersTableService = filtersTableService;
|
|
3119
|
+
this._headerName = '';
|
|
3120
|
+
this.filterRouting = false; // Optional. Set to true to use Filter Routing.
|
|
3121
|
+
this.onSortChange = new EventEmitter(); // Emit the sort value (true, false, undefuned) of the current sort icon when clicking
|
|
3122
|
+
this.tableFiltersChange = new EventEmitter();
|
|
3123
|
+
this.centerCellValue = ['left', 'center', 'right'];
|
|
3124
|
+
this.subscriptions = [];
|
|
2885
3125
|
}
|
|
2886
3126
|
ngOnInit() {
|
|
2887
3127
|
if (this.tableName && this.sortName) {
|
|
@@ -3022,12 +3262,13 @@ class TableColumnHeader {
|
|
|
3022
3262
|
subscription.unsubscribe();
|
|
3023
3263
|
});
|
|
3024
3264
|
}
|
|
3025
|
-
static
|
|
3026
|
-
static
|
|
3265
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TableColumnHeader, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DOCUMENT }, { token: FiltersTableService }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
3266
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: TableColumnHeader, isStandalone: false, selector: "[headerCell]", inputs: { headerName: "headerName", columnSize: "columnSize", filterRouting: "filterRouting", tableName: "tableName", sortName: "sortName", centerCell: "centerCell", tableFilters: "tableFilters" }, outputs: { onSortChange: "onSortChange", tableFiltersChange: "tableFiltersChange" }, ngImport: i0 }); }
|
|
3027
3267
|
}
|
|
3028
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3268
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TableColumnHeader, decorators: [{
|
|
3029
3269
|
type: Directive,
|
|
3030
3270
|
args: [{
|
|
3271
|
+
standalone: false,
|
|
3031
3272
|
// The selector has the same name as the headerCell selector in table.component.html
|
|
3032
3273
|
selector: '[headerCell]'
|
|
3033
3274
|
}]
|
|
@@ -3061,9 +3302,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
3061
3302
|
}] } });
|
|
3062
3303
|
|
|
3063
3304
|
class TableRow {
|
|
3064
|
-
currentCell;
|
|
3065
|
-
renderer;
|
|
3066
|
-
document;
|
|
3067
3305
|
constructor(currentCell, renderer, document) {
|
|
3068
3306
|
this.currentCell = currentCell;
|
|
3069
3307
|
this.renderer = renderer;
|
|
@@ -3075,12 +3313,13 @@ class TableRow {
|
|
|
3075
3313
|
applyCustomStylesOnCell() {
|
|
3076
3314
|
this.renderer.addClass(this.currentCell.nativeElement, 'wz-table__body__line');
|
|
3077
3315
|
}
|
|
3078
|
-
static
|
|
3079
|
-
static
|
|
3316
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TableRow, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
3317
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: TableRow, isStandalone: false, selector: "[tableRow]", ngImport: i0 }); }
|
|
3080
3318
|
}
|
|
3081
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3319
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TableRow, decorators: [{
|
|
3082
3320
|
type: Directive,
|
|
3083
3321
|
args: [{
|
|
3322
|
+
standalone: false,
|
|
3084
3323
|
// The selector has the same name as the tableRaw selector in table.component.html
|
|
3085
3324
|
selector: '[tableRow]',
|
|
3086
3325
|
}]
|
|
@@ -3090,130 +3329,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
3090
3329
|
}] }] });
|
|
3091
3330
|
|
|
3092
3331
|
class TableViewComponent extends ImagesActionHandler {
|
|
3093
|
-
dataTableName = 'imgagesView'; // Name of your table
|
|
3094
3332
|
constructor(imgManager, imgSelectionService, http, imgCDNService, imgEventCardService, alertService, translateService, apiService) {
|
|
3095
3333
|
super(imgManager, imgSelectionService, http, imgCDNService, imgEventCardService, alertService, translateService, apiService);
|
|
3334
|
+
this.dataTableName = 'imgagesView'; // Name of your table
|
|
3096
3335
|
}
|
|
3097
3336
|
ngOnInit() {
|
|
3098
3337
|
}
|
|
3099
|
-
|
|
3100
|
-
|
|
3338
|
+
// Copy the image link to clipboard
|
|
3339
|
+
async copyImageLink(file_name) {
|
|
3340
|
+
const url = this.imgCDNService.getUrlImg('raw') + file_name;
|
|
3341
|
+
const success = await this.imgManager.copyToClipboard(url);
|
|
3342
|
+
if (success) {
|
|
3343
|
+
this.alertService.openAlert('ImgManager.ImgList.linkCopied');
|
|
3344
|
+
}
|
|
3345
|
+
else {
|
|
3346
|
+
this.alertService.openAlert('ImgManager.ImgList.linkCopyFailed');
|
|
3347
|
+
}
|
|
3348
|
+
}
|
|
3349
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TableViewComponent, deps: [{ token: ImgManagerService }, { token: ImgSelectionService }, { token: i3$1.HttpClient }, { token: ImgCDNService }, { token: ImgEventService }, { token: AlertService }, { token: i3.TranslateService }, { token: ApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3350
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: TableViewComponent, isStandalone: false, selector: "table-view", usesInheritance: true, ngImport: i0, template: "<div class=\"table-view\" [@listAnimation]=\"picturesList.length\">\n <wz-table\n [checkbox]=\"true\"\n (toggleAllCheckBox)=\"onToggleAllCheckBoxRow($event)\"\n [(tableFilters)]=\"tableFilters\"\n (tableFiltersChange)=\"onFiltersChange()\"\n [placeholder]=\"'ImgManager.SearchBar.placeholder' | translate\"\n [disablePagniation]=\"displayPexelsResults\"\n [isLoading]=\"isLoading\"\n >\n <!-- Header Section -->\n <div\n headerCell\n [headerName]=\"'ImgManager.ImgList.titleImgName' | translate\"\n columnSize=\"2\"\n sortName=\"name\"\n ></div>\n <div\n headerCell\n centerCell=\"center\"\n [headerName]=\"'ImgManager.ImgList.titleResolution' | translate\"\n ></div>\n <div headerCell columnSize=\"0\"></div>\n\n <!-- Body Section -->\n <div\n tableRow\n checkBoxRow\n [checkBoxValue]=\"picture.delSelected\"\n (checkBoxValueChange)=\"onToggleDelSelection(index)\"\n *ngFor=\"let picture of picturesList; let index = index\"\n >\n\n <div tableColumn columnSize=\"2\">\n <div class=\"table-view__row__container\">\n <div\n class=\"table-view__row__container__imgContainer\"\n [ngClass]=\"{'imgSelected': picture.selected}\"\n (click)=\"onToggleSelectImg(index)\">\n <img\n class=\"table-view__row__container__imgContainer__img\"\n [src]=\"picture.file_name | imgSrc : '100'\"\n alt=\"picture.display_name\"\n [ngClass]=\"{'pictureDeletion': picture.deleted}\"\n (error)=\"picture.imgNotLoaded=true;onPictureNotLoading($event);\"\n />\n <!-- If the img is not loaded, or the link is broken, an icon is displayed -->\n <div\n *ngIf=\"picture.imgNotLoaded\"\n class=\"table-view__row__container__imgContainer__overlay\"\n >\n <i class=\"fad fa-folder-times\"></i>\n </div>\n <div *ngIf=\"picture.video_link\" class=\"table-view__row__container__imgContainer__container__video\">\n <i class=\"fa-solid fa-play\"></i>\n <span>{{ 'ImgManager.ImgEditor.Video' | translate }}</span>\n </div>\n </div>\n <input\n type=\"text\"\n class=\"wzImgMngInput table-view__row__container__name\"\n [(ngModel)]=\"picture.display_name\"\n (focus)=\"previousName=picture.display_name\"\n (blur)=\"onNameChange(picture.id_file)\"\n (click)=\"onToggleDelSelection(index)\"\n [ngClass]=\"{'desabled': picture.deleted}\"\n [disabled]=\"picture.deleted\"\n >\n </div>\n </div>\n\n <div\n tableColumn\n centerCell=\"center\"\n (click)=\"onToggleDelSelection(index)\"\n >\n <p class=\"grey\">{{picture.raw_height}}x{{picture.raw_width}}</p>\n </div>\n\n <div tableColumn centerCell=\"center\" columnSize=\"0\" class=\"table-view__dropdown-options\">\n <!-- Dropdown -->\n <dropdown dropdownId=\"dropdown-options\" [disable]=\"picture.deleted\">\n <ng-container label>\n <div class=\"table-view__dropdown-options__label rotate\">\n <span> <i class=\"far fa-ellipsis-h is-size-4\" aria-haspopup=\"true\" aria-controls=\"dropdown-menu\"> </i> </span>\n </div>\n </ng-container>\n <ng-container item>\n <div\n class=\"dropdown-item\"\n (click)=\"onDownloadImg(picture.display_name, picture.file_name)\"\n >\n <i class=\"far fa-download download\"></i> \n <p>{{ 'ImgManager.ImgList.download' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item>\n <div\n class=\"dropdown-item\"\n (click)=\"redirectToVideo(picture)\"\n >\n <i class=\"fa-solid fa-play\"></i> \n <p>{{ 'ImgManager.ImgEditor.AddVideo' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item>\n <div\n class=\"dropdown-item\"\n (click)=\"onEdit(picture)\"\n >\n <i class=\"far fa-crop-alt edit\"></i> \n <p>{{ 'ImgManager.ImgList.edit' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item>\n <div\n class=\"dropdown-item\"\n (click)=\"copyImageLink(picture.file_name)\"\n >\n <i class=\"far fa-copy copy\"></i> \n <p>{{ 'ImgManager.ImgList.Link' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item>\n <div\n class=\"dropdown-item\"\n (click)=\"onRemoveImg(picture)\"\n >\n <i class=\"fal fa-times deleted\"></i> \n <p>{{ 'ImgManager.ImgList.remove' | translate }}</p>\n </div>\n </ng-container>\n </dropdown>\n </div>\n </div>\n </wz-table>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: DropdownComponent, selector: "dropdown", inputs: ["dropDownMenuClass", "disable"] }, { kind: "component", type: TableComponent, selector: "wz-table", inputs: ["tableFilters", "tableRoutingName", "placeholder", "checkbox", "disableSearch", "disablePagniation", "isLoading"], outputs: ["tableFiltersChange", "toggleAllCheckBox"] }, { kind: "directive", type: TableColumn, selector: "[tableColumn]", inputs: ["columnSize", "centerCell"] }, { kind: "directive", type: CheckBoxRow, selector: "[checkBoxRow]", inputs: ["checkBoxId", "checkBoxName", "checkBoxValue"], outputs: ["checkBoxValueChange"] }, { kind: "directive", type: TableColumnHeader, selector: "[headerCell]", inputs: ["headerName", "columnSize", "filterRouting", "tableName", "sortName", "centerCell", "tableFilters"], outputs: ["onSortChange", "tableFiltersChange"] }, { kind: "directive", type: TableRow, selector: "[tableRow]" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "pipe", type: ImageSrcPipe, name: "imgSrc" }], animations: [
|
|
3101
3351
|
listAnnimation
|
|
3102
|
-
] });
|
|
3352
|
+
] }); }
|
|
3103
3353
|
}
|
|
3104
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3354
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TableViewComponent, decorators: [{
|
|
3105
3355
|
type: Component,
|
|
3106
|
-
args: [{ selector: 'table-view', animations: [
|
|
3356
|
+
args: [{ standalone: false, selector: 'table-view', animations: [
|
|
3107
3357
|
listAnnimation
|
|
3108
|
-
], template: "<div class=\"table-view\" [@listAnimation]=\"picturesList.length\">\n <wz-table\n [checkbox]=\"true\"\n (toggleAllCheckBox)=\"onToggleAllCheckBoxRow($event)\"\n [(tableFilters)]=\"tableFilters\"\n (tableFiltersChange)=\"onFiltersChange()\"\n [placeholder]=\"'ImgManager.SearchBar.placeholder' | translate\"\n [disablePagniation]=\"displayPexelsResults\"\n [isLoading]=\"isLoading\"\n >\n <!-- Header Section -->\n <div\n headerCell\n [headerName]=\"'ImgManager.ImgList.titleImgName' | translate\"\n columnSize=\"2\"\n sortName=\"name\"\n ></div>\n <div\n headerCell\n centerCell=\"center\"\n [headerName]=\"'ImgManager.ImgList.titleResolution' | translate\"\n ></div>\n <div headerCell columnSize=\"0\"></div>\n\n <!-- Body Section -->\n <div\n tableRow\n checkBoxRow\n [checkBoxValue]=\"picture.delSelected\"\n (checkBoxValueChange)=\"onToggleDelSelection(index)\"\n *ngFor=\"let picture of picturesList; let index = index\"\n >\n\n <div tableColumn columnSize=\"2\">\n <div class=\"table-view__row__container\">\n <div\n class=\"table-view__row__container__imgContainer\"\n [ngClass]=\"{'imgSelected': picture.selected}\"\n (click)=\"onToggleSelectImg(index)\">\n <img\n class=\"table-view__row__container__imgContainer__img\"\n [src]=\"picture.file_name | imgSrc : '100'\"\n alt=\"picture.display_name\"\n [ngClass]=\"{'pictureDeletion': picture.deleted}\"\n (error)=\"picture.imgNotLoaded=true;onPictureNotLoading($event);\"\n />\n <!-- If the img is not loaded, or the link is broken, an icon is displayed -->\n <div\n *ngIf=\"picture.imgNotLoaded\"\n class=\"table-view__row__container__imgContainer__overlay\"\n >\n <i class=\"fad fa-folder-times\"></i>\n </div>\n </div>\n <input\n
|
|
3358
|
+
], template: "<div class=\"table-view\" [@listAnimation]=\"picturesList.length\">\n <wz-table\n [checkbox]=\"true\"\n (toggleAllCheckBox)=\"onToggleAllCheckBoxRow($event)\"\n [(tableFilters)]=\"tableFilters\"\n (tableFiltersChange)=\"onFiltersChange()\"\n [placeholder]=\"'ImgManager.SearchBar.placeholder' | translate\"\n [disablePagniation]=\"displayPexelsResults\"\n [isLoading]=\"isLoading\"\n >\n <!-- Header Section -->\n <div\n headerCell\n [headerName]=\"'ImgManager.ImgList.titleImgName' | translate\"\n columnSize=\"2\"\n sortName=\"name\"\n ></div>\n <div\n headerCell\n centerCell=\"center\"\n [headerName]=\"'ImgManager.ImgList.titleResolution' | translate\"\n ></div>\n <div headerCell columnSize=\"0\"></div>\n\n <!-- Body Section -->\n <div\n tableRow\n checkBoxRow\n [checkBoxValue]=\"picture.delSelected\"\n (checkBoxValueChange)=\"onToggleDelSelection(index)\"\n *ngFor=\"let picture of picturesList; let index = index\"\n >\n\n <div tableColumn columnSize=\"2\">\n <div class=\"table-view__row__container\">\n <div\n class=\"table-view__row__container__imgContainer\"\n [ngClass]=\"{'imgSelected': picture.selected}\"\n (click)=\"onToggleSelectImg(index)\">\n <img\n class=\"table-view__row__container__imgContainer__img\"\n [src]=\"picture.file_name | imgSrc : '100'\"\n alt=\"picture.display_name\"\n [ngClass]=\"{'pictureDeletion': picture.deleted}\"\n (error)=\"picture.imgNotLoaded=true;onPictureNotLoading($event);\"\n />\n <!-- If the img is not loaded, or the link is broken, an icon is displayed -->\n <div\n *ngIf=\"picture.imgNotLoaded\"\n class=\"table-view__row__container__imgContainer__overlay\"\n >\n <i class=\"fad fa-folder-times\"></i>\n </div>\n <div *ngIf=\"picture.video_link\" class=\"table-view__row__container__imgContainer__container__video\">\n <i class=\"fa-solid fa-play\"></i>\n <span>{{ 'ImgManager.ImgEditor.Video' | translate }}</span>\n </div>\n </div>\n <input\n type=\"text\"\n class=\"wzImgMngInput table-view__row__container__name\"\n [(ngModel)]=\"picture.display_name\"\n (focus)=\"previousName=picture.display_name\"\n (blur)=\"onNameChange(picture.id_file)\"\n (click)=\"onToggleDelSelection(index)\"\n [ngClass]=\"{'desabled': picture.deleted}\"\n [disabled]=\"picture.deleted\"\n >\n </div>\n </div>\n\n <div\n tableColumn\n centerCell=\"center\"\n (click)=\"onToggleDelSelection(index)\"\n >\n <p class=\"grey\">{{picture.raw_height}}x{{picture.raw_width}}</p>\n </div>\n\n <div tableColumn centerCell=\"center\" columnSize=\"0\" class=\"table-view__dropdown-options\">\n <!-- Dropdown -->\n <dropdown dropdownId=\"dropdown-options\" [disable]=\"picture.deleted\">\n <ng-container label>\n <div class=\"table-view__dropdown-options__label rotate\">\n <span> <i class=\"far fa-ellipsis-h is-size-4\" aria-haspopup=\"true\" aria-controls=\"dropdown-menu\"> </i> </span>\n </div>\n </ng-container>\n <ng-container item>\n <div\n class=\"dropdown-item\"\n (click)=\"onDownloadImg(picture.display_name, picture.file_name)\"\n >\n <i class=\"far fa-download download\"></i> \n <p>{{ 'ImgManager.ImgList.download' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item>\n <div\n class=\"dropdown-item\"\n (click)=\"redirectToVideo(picture)\"\n >\n <i class=\"fa-solid fa-play\"></i> \n <p>{{ 'ImgManager.ImgEditor.AddVideo' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item>\n <div\n class=\"dropdown-item\"\n (click)=\"onEdit(picture)\"\n >\n <i class=\"far fa-crop-alt edit\"></i> \n <p>{{ 'ImgManager.ImgList.edit' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item>\n <div\n class=\"dropdown-item\"\n (click)=\"copyImageLink(picture.file_name)\"\n >\n <i class=\"far fa-copy copy\"></i> \n <p>{{ 'ImgManager.ImgList.Link' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item>\n <div\n class=\"dropdown-item\"\n (click)=\"onRemoveImg(picture)\"\n >\n <i class=\"fal fa-times deleted\"></i> \n <p>{{ 'ImgManager.ImgList.remove' | translate }}</p>\n </div>\n </ng-container>\n </dropdown>\n </div>\n </div>\n </wz-table>\n</div>\n" }]
|
|
3109
3359
|
}], ctorParameters: () => [{ type: ImgManagerService }, { type: ImgSelectionService }, { type: i3$1.HttpClient }, { type: ImgCDNService }, { type: ImgEventService }, { type: AlertService }, { type: i3.TranslateService }, { type: ApiService }] });
|
|
3110
3360
|
|
|
3111
3361
|
class ImagesViewComponent {
|
|
3112
|
-
imgManager;
|
|
3113
|
-
imgEventService;
|
|
3114
|
-
imgSelectionService;
|
|
3115
|
-
alertService;
|
|
3116
|
-
userSettingsService;
|
|
3117
|
-
renamePictureService;
|
|
3118
|
-
changeDetectorRef;
|
|
3119
|
-
stateDisplayed;
|
|
3120
|
-
tabDisplayed;
|
|
3121
|
-
fullSize;
|
|
3122
|
-
nbRowToShow;
|
|
3123
|
-
listDisplayed = false; // Display format list or mosaic
|
|
3124
|
-
multipleImgMode = false;
|
|
3125
|
-
switchDisplayWindow = new EventEmitter();
|
|
3126
|
-
imgLibContainer;
|
|
3127
|
-
widthLargeCard = 219; // Default value of a card width 199 + margin 20
|
|
3128
|
-
widthSmallCard = 160; // Default value of a card width 140 + margin 20
|
|
3129
|
-
nbMinImgPerLine;
|
|
3130
|
-
nbMaxImgPerLine;
|
|
3131
|
-
nbFakeImg = 0;
|
|
3132
|
-
imgFullWidthConfig = [
|
|
3133
|
-
{
|
|
3134
|
-
max: 419,
|
|
3135
|
-
largeImgWidthFactor: 1,
|
|
3136
|
-
smallImgWidthFactor: 0.5
|
|
3137
|
-
},
|
|
3138
|
-
{
|
|
3139
|
-
max: 499,
|
|
3140
|
-
largeImgWidthFactor: 1,
|
|
3141
|
-
smallImgWidthFactor: 0.5
|
|
3142
|
-
},
|
|
3143
|
-
{
|
|
3144
|
-
max: 719, // tablet
|
|
3145
|
-
largeImgWidthFactor: 0.5,
|
|
3146
|
-
smallImgWidthFactor: 0.3333
|
|
3147
|
-
},
|
|
3148
|
-
{
|
|
3149
|
-
max: 1023, // deskop
|
|
3150
|
-
largeImgWidthFactor: 0.3333,
|
|
3151
|
-
smallImgWidthFactor: 0.2
|
|
3152
|
-
},
|
|
3153
|
-
{
|
|
3154
|
-
max: 1399,
|
|
3155
|
-
largeImgWidthFactor: 0.25,
|
|
3156
|
-
smallImgWidthFactor: 0.125
|
|
3157
|
-
},
|
|
3158
|
-
{
|
|
3159
|
-
max: 1599,
|
|
3160
|
-
largeImgWidthFactor: 0.2,
|
|
3161
|
-
smallImgWidthFactor: 0.1111
|
|
3162
|
-
},
|
|
3163
|
-
{
|
|
3164
|
-
largeImgWidthFactor: 0.1666,
|
|
3165
|
-
smallImgWidthFactor: 0.1
|
|
3166
|
-
}
|
|
3167
|
-
];
|
|
3168
|
-
imgWidthConfig = [
|
|
3169
|
-
{
|
|
3170
|
-
max: 1024,
|
|
3171
|
-
largeImgWidthFactor: 0.25,
|
|
3172
|
-
smallImgWidthFactor: 0.125
|
|
3173
|
-
},
|
|
3174
|
-
{
|
|
3175
|
-
max: 1199,
|
|
3176
|
-
largeImgWidthFactor: 0.3333,
|
|
3177
|
-
smallImgWidthFactor: 0.2
|
|
3178
|
-
},
|
|
3179
|
-
{
|
|
3180
|
-
max: 1299,
|
|
3181
|
-
largeImgWidthFactor: 0.3333,
|
|
3182
|
-
smallImgWidthFactor: 0.1666
|
|
3183
|
-
},
|
|
3184
|
-
{
|
|
3185
|
-
max: 1399,
|
|
3186
|
-
largeImgWidthFactor: 0.25,
|
|
3187
|
-
smallImgWidthFactor: 0.1666
|
|
3188
|
-
},
|
|
3189
|
-
{
|
|
3190
|
-
max: 1599,
|
|
3191
|
-
largeImgWidthFactor: 0.25,
|
|
3192
|
-
smallImgWidthFactor: 0.14
|
|
3193
|
-
},
|
|
3194
|
-
{
|
|
3195
|
-
largeImgWidthFactor: 0.25,
|
|
3196
|
-
smallImgWidthFactor: 0.125
|
|
3197
|
-
}
|
|
3198
|
-
];
|
|
3199
|
-
nbImgToDelSelected = 0;
|
|
3200
|
-
disable = false; // Use to disable action during server request
|
|
3201
|
-
delListImgLoader = false;
|
|
3202
|
-
initComponent = true;
|
|
3203
|
-
failLoaded = false;
|
|
3204
|
-
confirmImgSup = false;
|
|
3205
|
-
previousSearchValue;
|
|
3206
3362
|
get searchImagesParameters$() {
|
|
3207
3363
|
return this.imgManager.searchImagesParameters$;
|
|
3208
3364
|
}
|
|
3209
|
-
// Api Img manager Params
|
|
3210
|
-
params;
|
|
3211
|
-
errorGetAllImg = 'ImgManager.ImgLib.errorGetAllImg';
|
|
3212
|
-
errorGetTotalImg = 'ImgManager.ImgLib.errorGetTotalImg';
|
|
3213
|
-
errorGetImg = 'ImgManager.ImgLib.errorGetCanvaImg';
|
|
3214
|
-
errorRemoveImg = 'ImgManager.ImgList.errorRemoveImg';
|
|
3215
|
-
destroy$ = new Subject();
|
|
3216
|
-
vm$;
|
|
3217
3365
|
constructor(imgManager, imgEventService, imgSelectionService, alertService, userSettingsService, renamePictureService, changeDetectorRef) {
|
|
3218
3366
|
this.imgManager = imgManager;
|
|
3219
3367
|
this.imgEventService = imgEventService;
|
|
@@ -3222,26 +3370,106 @@ class ImagesViewComponent {
|
|
|
3222
3370
|
this.userSettingsService = userSettingsService;
|
|
3223
3371
|
this.renamePictureService = renamePictureService;
|
|
3224
3372
|
this.changeDetectorRef = changeDetectorRef;
|
|
3225
|
-
|
|
3226
|
-
|
|
3373
|
+
this.listDisplayed = false; // Display format list or mosaic
|
|
3374
|
+
this.multipleImgMode = false;
|
|
3375
|
+
this.switchDisplayWindow = new EventEmitter();
|
|
3376
|
+
this.widthLargeCard = 219; // Default value of a card width 199 + margin 20
|
|
3377
|
+
this.widthSmallCard = 160; // Default value of a card width 140 + margin 20
|
|
3378
|
+
this.nbFakeImg = 0;
|
|
3379
|
+
this.imgFullWidthConfig = [
|
|
3380
|
+
{
|
|
3381
|
+
max: 419,
|
|
3382
|
+
largeImgWidthFactor: 1,
|
|
3383
|
+
smallImgWidthFactor: 0.5
|
|
3384
|
+
},
|
|
3385
|
+
{
|
|
3386
|
+
max: 499,
|
|
3387
|
+
largeImgWidthFactor: 1,
|
|
3388
|
+
smallImgWidthFactor: 0.5
|
|
3389
|
+
},
|
|
3390
|
+
{
|
|
3391
|
+
max: 719, // tablet
|
|
3392
|
+
largeImgWidthFactor: 0.5,
|
|
3393
|
+
smallImgWidthFactor: 0.3333
|
|
3394
|
+
},
|
|
3395
|
+
{
|
|
3396
|
+
max: 1023, // deskop
|
|
3397
|
+
largeImgWidthFactor: 0.3333,
|
|
3398
|
+
smallImgWidthFactor: 0.2
|
|
3399
|
+
},
|
|
3400
|
+
{
|
|
3401
|
+
max: 1399,
|
|
3402
|
+
largeImgWidthFactor: 0.25,
|
|
3403
|
+
smallImgWidthFactor: 0.125
|
|
3404
|
+
},
|
|
3405
|
+
{
|
|
3406
|
+
max: 1599,
|
|
3407
|
+
largeImgWidthFactor: 0.2,
|
|
3408
|
+
smallImgWidthFactor: 0.1111
|
|
3409
|
+
},
|
|
3410
|
+
{
|
|
3411
|
+
largeImgWidthFactor: 0.1666,
|
|
3412
|
+
smallImgWidthFactor: 0.1
|
|
3413
|
+
}
|
|
3414
|
+
];
|
|
3415
|
+
this.imgWidthConfig = [
|
|
3416
|
+
{
|
|
3417
|
+
max: 1024,
|
|
3418
|
+
largeImgWidthFactor: 0.25,
|
|
3419
|
+
smallImgWidthFactor: 0.125
|
|
3420
|
+
},
|
|
3421
|
+
{
|
|
3422
|
+
max: 1199,
|
|
3423
|
+
largeImgWidthFactor: 0.3333,
|
|
3424
|
+
smallImgWidthFactor: 0.2
|
|
3425
|
+
},
|
|
3426
|
+
{
|
|
3427
|
+
max: 1299,
|
|
3428
|
+
largeImgWidthFactor: 0.3333,
|
|
3429
|
+
smallImgWidthFactor: 0.1666
|
|
3430
|
+
},
|
|
3431
|
+
{
|
|
3432
|
+
max: 1399,
|
|
3433
|
+
largeImgWidthFactor: 0.25,
|
|
3434
|
+
smallImgWidthFactor: 0.1666
|
|
3435
|
+
},
|
|
3436
|
+
{
|
|
3437
|
+
max: 1599,
|
|
3438
|
+
largeImgWidthFactor: 0.25,
|
|
3439
|
+
smallImgWidthFactor: 0.14
|
|
3440
|
+
},
|
|
3441
|
+
{
|
|
3442
|
+
largeImgWidthFactor: 0.25,
|
|
3443
|
+
smallImgWidthFactor: 0.125
|
|
3444
|
+
}
|
|
3445
|
+
];
|
|
3446
|
+
this.nbImgToDelSelected = 0;
|
|
3447
|
+
this.disable = false; // Use to disable action during server request
|
|
3448
|
+
this.delListImgLoader = false;
|
|
3449
|
+
this.initComponent = true;
|
|
3450
|
+
this.failLoaded = false;
|
|
3451
|
+
this.confirmImgSup = false;
|
|
3452
|
+
this.errorGetAllImg = 'ImgManager.ImgLib.errorGetAllImg';
|
|
3453
|
+
this.errorGetTotalImg = 'ImgManager.ImgLib.errorGetTotalImg';
|
|
3454
|
+
this.errorGetImg = 'ImgManager.ImgLib.errorGetCanvaImg';
|
|
3455
|
+
this.errorRemoveImg = 'ImgManager.ImgList.errorRemoveImg';
|
|
3456
|
+
this.destroy$ = new Subject();
|
|
3227
3457
|
this.vm$ = combineLatest({
|
|
3228
3458
|
imageSelection: this.imgSelectionService.imgSelection$,
|
|
3229
3459
|
imageListData: this.imgManager.imageList$,
|
|
3230
3460
|
isLoading: this.imgManager.isLoading$,
|
|
3231
3461
|
searchImagesParameters: this.imgManager.searchImagesParameters$,
|
|
3232
3462
|
}).pipe(map$1(({ imageSelection, imageListData: { imageList, imageTotal }, isLoading, searchImagesParameters }) => {
|
|
3233
|
-
this.initVariables(true);
|
|
3234
|
-
this.calculateNbImgFake(imageList.data.length);
|
|
3463
|
+
this.initVariables(true);
|
|
3464
|
+
this.calculateNbImgFake(imageList.data.length);
|
|
3235
3465
|
const picturesList = this.setSelectedProperty(imageSelection, imageList.data);
|
|
3236
3466
|
this.renamePictureService.setPicturesList(picturesList);
|
|
3237
3467
|
const tableFilters = this.getTableFilters(searchImagesParameters, imageTotal);
|
|
3238
|
-
const keepImagesDisplayed = (this.tabDisplayed === 'img-upload' && searchImagesParameters.page === '1') ||
|
|
3239
|
-
(this.tabDisplayed === 'images-view' && imageList.data.length && searchImagesParameters.page === '1');
|
|
3468
|
+
const keepImagesDisplayed = (this.tabDisplayed === 'img-upload' && searchImagesParameters.page === '1') || (this.tabDisplayed === 'images-view' && imageList.data.length && searchImagesParameters.page === '1');
|
|
3240
3469
|
const skipSetImagesToDisplay = !!picturesList?.length && this.tabDisplayed === 'img-upload' && searchImagesParameters.page === '1';
|
|
3241
|
-
const hideUntilFetchedFirstPageImagesForTabUpload = this.tabDisplayed === 'img-upload' &&
|
|
3242
|
-
(searchImagesParameters.page !== '1' || imageList?.page !== 1);
|
|
3470
|
+
const hideUntilFetchedFirstPageImagesForTabUpload = this.tabDisplayed === 'img-upload' && (searchImagesParameters.page !== '1' || imageList?.page !== 1);
|
|
3243
3471
|
return {
|
|
3244
|
-
isLoading: hideUntilFetchedFirstPageImagesForTabUpload ||
|
|
3472
|
+
isLoading: hideUntilFetchedFirstPageImagesForTabUpload || !keepImagesDisplayed && isLoading,
|
|
3245
3473
|
displayPexelsResults: !isLoading && imageTotal === 0,
|
|
3246
3474
|
picturesList,
|
|
3247
3475
|
imageTotal,
|
|
@@ -3254,6 +3482,7 @@ class ImagesViewComponent {
|
|
|
3254
3482
|
return {
|
|
3255
3483
|
sort: undefined,
|
|
3256
3484
|
order: undefined,
|
|
3485
|
+
type: searchImagesParameters.type,
|
|
3257
3486
|
searchValue: searchImagesParameters.search,
|
|
3258
3487
|
totalItems: imageTotal,
|
|
3259
3488
|
itemsPerPage: parseInt(searchImagesParameters.limit),
|
|
@@ -3393,6 +3622,7 @@ class ImagesViewComponent {
|
|
|
3393
3622
|
return {
|
|
3394
3623
|
limit: tableFilters.itemsPerPage.toString(),
|
|
3395
3624
|
page: tableFilters.currentPage.toString(),
|
|
3625
|
+
type: tableFilters.type,
|
|
3396
3626
|
...(tableFilters.searchValue && { search: tableFilters.searchValue.toString() }),
|
|
3397
3627
|
};
|
|
3398
3628
|
}
|
|
@@ -3443,18 +3673,18 @@ class ImagesViewComponent {
|
|
|
3443
3673
|
this.destroy$.next();
|
|
3444
3674
|
this.destroy$.complete();
|
|
3445
3675
|
}
|
|
3446
|
-
static
|
|
3447
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: ImagesViewComponent, selector: "images-view", inputs: { stateDisplayed: "stateDisplayed", tabDisplayed: "tabDisplayed", fullSize: "fullSize", nbRowToShow: "nbRowToShow", listDisplayed: "listDisplayed", multipleImgMode: "multipleImgMode" }, outputs: { switchDisplayWindow: "switchDisplayWindow" }, viewQueries: [{ propertyName: "imgLibContainer", first: true, predicate: ["imgLibContainer"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"vm$ | async as vm\">\r\n\r\n <div class=\"images-view\" [ngClass]=\"{'fullSize': fullSize, 'small': stateDisplayed === 'small'}\" [@easeInOut]=\"'in'\">\r\n <!-- Subheader : Img number and actions btn (sup img list, switch forma display) -->\r\n <div\r\n *ngIf=\"(stateDisplayed !== 'small' || tabDisplayed === 'img-upload')\"\r\n class=\"images-view__container\"\r\n [ngClass]=\"{'images-view__container--uploadTab': tabDisplayed === 'img-upload', 'images-view__container--window': stateDisplayed === 'window'}\"\r\n >\r\n\r\n <div *ngIf=\"tabDisplayed !== 'img-upload'\">\r\n <p class=\"mainColor\" [ngClass]=\"{'images-view__container__total--hide': vm.displayPexelsResults}\">{{ 'ImgManager.ImgLib.nbImg' | translate }} : {{vm.imageTotal}}</p>\r\n </div>\r\n <div *ngIf=\"tabDisplayed === 'img-upload'\">\r\n <p class=\"mainColor\">{{ 'ImgManager.ImgLib.lastImgs' | translate }}</p>\r\n </div>\r\n\r\n <div class=\"field has-addons subHeaderActions\" *ngIf=\"tabDisplayed !== 'img-upload'\">\r\n\r\n <!-- For listforma : Display btn del multiple img & Confirm action -->\r\n <div class=\"images-view__container__boxAction\">\r\n\r\n\r\n <!-- Select -->\r\n <button\r\n class=\"button success images-view__container__boxAction__import\"\r\n @insertRemoveAnnim\r\n *ngIf=\"listDisplayed && nbImgToDelSelected && !confirmImgSup && !delListImgLoader && multipleImgMode\"\r\n (click)=\"selectImgChosen(vm.picturesList)\"\r\n type=\"button\"\r\n >\r\n <i class=\"fal fa-check\"></i>\r\n {{ 'ImgManager.ImgLib.select' | translate }} ({{nbImgToDelSelected}})\r\n </button>\r\n\r\n <!-- Display btn del multiple img -->\r\n <button\r\n *ngIf=\"listDisplayed && nbImgToDelSelected && !confirmImgSup\"\r\n (click)=\"displayConfirmImgSup()\"\r\n class=\"button images-view__container__boxAction__delBtn danger\"\r\n @insertRemoveAnnim\r\n type=\"button\"\r\n >\r\n <i class=\"fal fa-times\"></i>{{ 'ImgManager.ImgLib.delMlt' | translate }} ({{nbImgToDelSelected}})\r\n <span btnLoadingAnim *ngIf=\"delListImgLoader\" class=\"btnLoadingAnnimation\"></span>\r\n </button>\r\n\r\n <!-- Confirm action -->\r\n <div\r\n class=\"images-view__container__boxAction__confirmSup\"\r\n [ngClass]=\"{'images-view__container__boxAction__confirmSup--visible': confirmImgSup}\">\r\n <p *ngIf=\"nbImgToDelSelected > 1\" class=\"images-view__container__boxAction__confirmSup__text\">{{ 'ImgManager.ImgLib.confirmSupQuestions' | translate:{nbImage: nbImgToDelSelected} }}</p>\r\n <p *ngIf=\"nbImgToDelSelected === 1\" class=\"images-view__container__boxAction__confirmSup__text\">{{ 'ImgManager.ImgLib.confirmSupQuestion' | translate:{nbImage: nbImgToDelSelected} }}</p>\r\n <div>\r\n <button\r\n class=\"button images-view__container__boxAction__confirmSup__cancel\"\r\n (click)=\"cancelSup()\"\r\n type=\"button\"\r\n >\r\n {{ 'ImgManager.ImgLib.cancel' | translate }}\r\n </button>\r\n <button\r\n (click)=\"removeListImg(vm.picturesList)\"\r\n class=\"button images-view__container__delBtn danger\"\r\n type=\"button\"\r\n >\r\n {{ 'ImgManager.ImgLib.confirm' | translate }}\r\n </button>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <!-- Swith mosaic/list forma -->\r\n <div class=\"field has-addons images-view__container__buttonBox\">\r\n <div class=\"control\">\r\n <div\r\n class=\"button is-lighted images-view__container__buttonBox__btn\"\r\n [ngClass]=\"{'actifDisplayed': !listDisplayed}\"\r\n (click)=\"onSwitchFormatDisplayed(false)\"\r\n >\r\n <span class=\"icon is-small\">\r\n <i class=\"fa-solid fa-th\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"control\">\r\n <div class=\"button is-lighted images-view__container__buttonBox__btn\"\r\n [ngClass]=\"{'actifDisplayed': listDisplayed}\"\r\n (click)=\"onSwitchFormatDisplayed(true)\"\r\n >\r\n <span class=\"icon is-small\">\r\n <i class=\"fa-solid fa-bars\"></i>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n <!-- Images section -->\r\n <ng-scrollbar\r\n class=\"images-view__scroll\"\r\n [ngClass]=\"{\r\n 'images-view__scroll--hide--mosaic': vm.displayPexelsResults && !listDisplayed,\r\n 'images-view__scroll--hide--table': vm.displayPexelsResults && listDisplayed,\r\n 'images-view__scroll--full': stateDisplayed === 'full',\r\n 'images-view__scroll--smallDisplay' : stateDisplayed === 'small' && tabDisplayed !== 'img-upload',\r\n 'images-view__scroll--smallUploadDisplay' : stateDisplayed === 'small' && tabDisplayed === 'img-upload',\r\n 'images-view__scroll--window': stateDisplayed === 'window'\r\n }\"\r\n >\r\n <div #imgLibContainer class=\"images-view__wrapper\">\r\n\r\n <div *ngIf=\"!listDisplayed || stateDisplayed === 'small'\" [@easeInOut]=\"'in'\">\r\n <mosaic-view\r\n [picturesList]=\"vm.picturesList\"\r\n (picturesListChange)=\"onPicturesListChange(vm.picturesList)\"\r\n [tableFilters]=\"vm.tableFilters\"\r\n (filtersChange)=\"searchImagesParameters$.next(getParams(vm.tableFilters));\"\r\n [(disable)]=\"disable\"\r\n (pictureNameChange)=\"onRenamePicture($event)\"\r\n (switchDisplayWindow)=\"switchDisplayWindowMosaic()\"\r\n [nbFakeImg]=\"nbFakeImg\"\r\n [stateDisplayed]=\"stateDisplayed\"\r\n [tabDisplayed]=\"tabDisplayed\"\r\n [displayPexelsResults]=\"vm.displayPexelsResults\"\r\n [isLoading]=\"vm.isLoading\"\r\n [fullSize]=\"fullSize\"\r\n >\r\n </mosaic-view>\r\n </div>\r\n\r\n <div *ngIf=\"listDisplayed && stateDisplayed !== 'small'\" [@easeInOut]=\"'in'\">\r\n <table-view\r\n [picturesList]=\"vm.picturesList\"\r\n (picturesListChange)=\"onPicturesListChange(vm.picturesList)\"\r\n [tableFilters]=\"vm.tableFilters\"\r\n (filtersChange)=\"searchImagesParameters$.next(getParams(vm.tableFilters));\"\r\n [(disable)]=\"disable\"\r\n (pictureNameChange)=\"onRenamePicture($event)\"\r\n [displayPexelsResults]=\"vm.displayPexelsResults\"\r\n [stateDisplayed]=\"stateDisplayed\"\r\n [isLoading]=\"vm.isLoading\"\r\n >\r\n </table-view>\r\n </div>\r\n </div>\r\n </ng-scrollbar>\r\n\r\n <!-- Pexels Section - When no img found -->\r\n <div\r\n *ngIf=\"vm.displayPexelsResults\"\r\n class=\"images-view--pexels\"\r\n [@easeInOut]=\"'in'\">\r\n <pexels-lib\r\n [searchValue]=\"vm.tableFilters.searchValue\"\r\n [disableSearch]=\"true\"\r\n >\r\n </pexels-lib>\r\n </div>\r\n</ng-container>\r\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.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: PexelLibComponent, selector: "pexels-lib", inputs: ["stateDisplayed", "searchValue", "disableSearch"] }, { kind: "component", type: MosaicViewComponent, selector: "mosaic-view", inputs: ["tabDisplayed", "fullSize", "nbFakeImg"], outputs: ["switchDisplayWindow"] }, { kind: "component", type: TableViewComponent, selector: "table-view" }, { kind: "directive", type: LoadingDirective, selector: "[btnLoadingAnim]" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], animations: [
|
|
3676
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImagesViewComponent, deps: [{ token: ImgManagerService }, { token: ImgEventService }, { token: ImgSelectionService }, { token: AlertService }, { token: UserSettingsService }, { token: RenamePictureService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3677
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: ImagesViewComponent, isStandalone: false, selector: "images-view", inputs: { stateDisplayed: "stateDisplayed", tabDisplayed: "tabDisplayed", fullSize: "fullSize", nbRowToShow: "nbRowToShow", listDisplayed: "listDisplayed", multipleImgMode: "multipleImgMode" }, outputs: { switchDisplayWindow: "switchDisplayWindow" }, viewQueries: [{ propertyName: "imgLibContainer", first: true, predicate: ["imgLibContainer"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"vm$ | async as vm\">\n\n <div class=\"images-view\" [ngClass]=\"{'fullSize': fullSize, 'small': stateDisplayed === 'small'}\" [@easeInOut]=\"'in'\">\n <!-- Subheader : Img number and actions btn (sup img list, switch forma display) -->\n <div\n *ngIf=\"(stateDisplayed !== 'small' || tabDisplayed === 'img-upload')\"\n class=\"images-view__container\"\n [ngClass]=\"{'images-view__container--uploadTab': tabDisplayed === 'img-upload', 'images-view__container--window': stateDisplayed === 'window'}\"\n >\n\n <div *ngIf=\"tabDisplayed !== 'img-upload'\">\n <p class=\"mainColor\" [ngClass]=\"{'images-view__container__total--hide': vm.displayPexelsResults}\">{{ 'ImgManager.ImgLib.nbImg' | translate }} : {{vm.imageTotal}}</p>\n </div>\n <div *ngIf=\"tabDisplayed === 'img-upload'\">\n <p class=\"mainColor\">{{ 'ImgManager.ImgLib.lastImgs' | translate }}</p>\n </div>\n\n <div class=\"field has-addons subHeaderActions\" *ngIf=\"tabDisplayed !== 'img-upload'\">\n\n <!-- For listforma : Display btn del multiple img & Confirm action -->\n <div class=\"images-view__container__boxAction\">\n\n\n <!-- Select -->\n <button\n class=\"button success images-view__container__boxAction__import\"\n @insertRemoveAnnim\n *ngIf=\"listDisplayed && nbImgToDelSelected && !confirmImgSup && !delListImgLoader && multipleImgMode\"\n (click)=\"selectImgChosen(vm.picturesList)\"\n type=\"button\"\n >\n <i class=\"fal fa-check\"></i>\n {{ 'ImgManager.ImgLib.select' | translate }} ({{nbImgToDelSelected}})\n </button>\n\n <!-- Display btn del multiple img -->\n <button\n *ngIf=\"listDisplayed && nbImgToDelSelected && !confirmImgSup\"\n (click)=\"displayConfirmImgSup()\"\n class=\"button images-view__container__boxAction__delBtn danger\"\n @insertRemoveAnnim\n type=\"button\"\n >\n <i class=\"fal fa-times\"></i>{{ 'ImgManager.ImgLib.delMlt' | translate }} ({{nbImgToDelSelected}})\n <span btnLoadingAnim *ngIf=\"delListImgLoader\" class=\"btnLoadingAnnimation\"></span>\n </button>\n\n <!-- Confirm action -->\n <div\n class=\"images-view__container__boxAction__confirmSup\"\n [ngClass]=\"{'images-view__container__boxAction__confirmSup--visible': confirmImgSup}\">\n <p *ngIf=\"nbImgToDelSelected > 1\" class=\"images-view__container__boxAction__confirmSup__text\">{{ 'ImgManager.ImgLib.confirmSupQuestions' | translate:{nbImage: nbImgToDelSelected} }}</p>\n <p *ngIf=\"nbImgToDelSelected === 1\" class=\"images-view__container__boxAction__confirmSup__text\">{{ 'ImgManager.ImgLib.confirmSupQuestion' | translate:{nbImage: nbImgToDelSelected} }}</p>\n <div>\n <button\n class=\"button images-view__container__boxAction__confirmSup__cancel\"\n (click)=\"cancelSup()\"\n type=\"button\"\n >\n {{ 'ImgManager.ImgLib.cancel' | translate }}\n </button>\n <button\n (click)=\"removeListImg(vm.picturesList)\"\n class=\"button images-view__container__delBtn danger\"\n type=\"button\"\n >\n {{ 'ImgManager.ImgLib.confirm' | translate }}\n </button>\n </div>\n </div>\n\n </div>\n\n\n <!-- Swith mosaic/list forma -->\n <div class=\"field has-addons images-view__container__buttonBox\">\n <div class=\"control\">\n <div\n class=\"button is-lighted images-view__container__buttonBox__btn\"\n [ngClass]=\"{'actifDisplayed': !listDisplayed}\"\n (click)=\"onSwitchFormatDisplayed(false)\"\n >\n <span class=\"icon is-small\">\n <i class=\"fa-solid fa-th\"></i>\n </span>\n </div>\n </div>\n\n <div class=\"control\">\n <div class=\"button is-lighted images-view__container__buttonBox__btn\"\n [ngClass]=\"{'actifDisplayed': listDisplayed}\"\n (click)=\"onSwitchFormatDisplayed(true)\"\n >\n <span class=\"icon is-small\">\n <i class=\"fa-solid fa-bars\"></i>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n <!-- Images section -->\n <ng-scrollbar\n class=\"images-view__scroll\"\n [ngClass]=\"{\n 'images-view__scroll--hide--mosaic': vm.displayPexelsResults && !listDisplayed,\n 'images-view__scroll--hide--table': vm.displayPexelsResults && listDisplayed,\n 'images-view__scroll--full': stateDisplayed === 'full',\n 'images-view__scroll--smallDisplay' : stateDisplayed === 'small' && tabDisplayed !== 'img-upload',\n 'images-view__scroll--smallUploadDisplay' : stateDisplayed === 'small' && tabDisplayed === 'img-upload',\n 'images-view__scroll--window': stateDisplayed === 'window'\n }\"\n >\n\n <div class=\"filter-video\" *ngIf=\"tabDisplayed !== 'img-upload'\">\n <label class=\"checkbox images-view__container__filterVideo\">\n <span>{{ 'ImgManager.ImgLib.filterVideo' | translate }}</span>\n <select [(ngModel)]=\"vm.tableFilters.type\" (ngModelChange)=\"searchImagesParameters$.next(getParams(vm.tableFilters));\">\n <option selected value=\"\">\n {{ 'ImgManager.ImgLib.allFiles' | translate }}\n </option>\n <option value=\"image\">\n {{ 'ImgManager.ImgLib.onlyImages' | translate }}\n </option>\n <option value=\"video\">\n {{ 'ImgManager.ImgLib.onlyVideos' | translate }}\n </option>\n </select>\n </label>\n </div>\n\n <div #imgLibContainer class=\"images-view__wrapper\">\n\n <div *ngIf=\"!listDisplayed || stateDisplayed === 'small'\" [@easeInOut]=\"'in'\">\n <mosaic-view\n [picturesList]=\"vm.picturesList\"\n (picturesListChange)=\"onPicturesListChange(vm.picturesList)\"\n [tableFilters]=\"vm.tableFilters\"\n (filtersChange)=\"searchImagesParameters$.next(getParams(vm.tableFilters));\"\n [(disable)]=\"disable\"\n (pictureNameChange)=\"onRenamePicture($event)\"\n (switchDisplayWindow)=\"switchDisplayWindowMosaic()\"\n [nbFakeImg]=\"nbFakeImg\"\n [stateDisplayed]=\"stateDisplayed\"\n [tabDisplayed]=\"tabDisplayed\"\n [displayPexelsResults]=\"vm.displayPexelsResults\"\n [isLoading]=\"vm.isLoading\"\n [fullSize]=\"fullSize\"\n >\n </mosaic-view>\n </div>\n\n <div *ngIf=\"listDisplayed && stateDisplayed !== 'small'\" [@easeInOut]=\"'in'\">\n <table-view\n [picturesList]=\"vm.picturesList\"\n (picturesListChange)=\"onPicturesListChange(vm.picturesList)\"\n [tableFilters]=\"vm.tableFilters\"\n (filtersChange)=\"searchImagesParameters$.next(getParams(vm.tableFilters));\"\n [(disable)]=\"disable\"\n (pictureNameChange)=\"onRenamePicture($event)\"\n [displayPexelsResults]=\"vm.displayPexelsResults\"\n [stateDisplayed]=\"stateDisplayed\"\n [isLoading]=\"vm.isLoading\"\n >\n </table-view>\n </div>\n </div>\n </ng-scrollbar>\n\n <!-- Pexels Section - When no img found -->\n <div\n *ngIf=\"vm.displayPexelsResults\"\n class=\"images-view--pexels\"\n [@easeInOut]=\"'in'\">\n <pexels-lib\n [searchValue]=\"vm.tableFilters.searchValue\"\n [disableSearch]=\"true\"\n >\n </pexels-lib>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }, { kind: "component", type: PexelLibComponent, selector: "pexels-lib", inputs: ["stateDisplayed", "searchValue", "disableSearch"] }, { kind: "component", type: MosaicViewComponent, selector: "mosaic-view", inputs: ["tabDisplayed", "fullSize", "nbFakeImg"], outputs: ["switchDisplayWindow"] }, { kind: "component", type: TableViewComponent, selector: "table-view" }, { kind: "directive", type: LoadingDirective, selector: "[btnLoadingAnim]" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], animations: [
|
|
3448
3678
|
easeInOut,
|
|
3449
3679
|
insertRemove
|
|
3450
|
-
] });
|
|
3680
|
+
] }); }
|
|
3451
3681
|
}
|
|
3452
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3682
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImagesViewComponent, decorators: [{
|
|
3453
3683
|
type: Component,
|
|
3454
|
-
args: [{ selector: 'images-view', animations: [
|
|
3684
|
+
args: [{ standalone: false, selector: 'images-view', animations: [
|
|
3455
3685
|
easeInOut,
|
|
3456
3686
|
insertRemove
|
|
3457
|
-
], template: "<ng-container *ngIf=\"vm$ | async as vm\">\
|
|
3687
|
+
], template: "<ng-container *ngIf=\"vm$ | async as vm\">\n\n <div class=\"images-view\" [ngClass]=\"{'fullSize': fullSize, 'small': stateDisplayed === 'small'}\" [@easeInOut]=\"'in'\">\n <!-- Subheader : Img number and actions btn (sup img list, switch forma display) -->\n <div\n *ngIf=\"(stateDisplayed !== 'small' || tabDisplayed === 'img-upload')\"\n class=\"images-view__container\"\n [ngClass]=\"{'images-view__container--uploadTab': tabDisplayed === 'img-upload', 'images-view__container--window': stateDisplayed === 'window'}\"\n >\n\n <div *ngIf=\"tabDisplayed !== 'img-upload'\">\n <p class=\"mainColor\" [ngClass]=\"{'images-view__container__total--hide': vm.displayPexelsResults}\">{{ 'ImgManager.ImgLib.nbImg' | translate }} : {{vm.imageTotal}}</p>\n </div>\n <div *ngIf=\"tabDisplayed === 'img-upload'\">\n <p class=\"mainColor\">{{ 'ImgManager.ImgLib.lastImgs' | translate }}</p>\n </div>\n\n <div class=\"field has-addons subHeaderActions\" *ngIf=\"tabDisplayed !== 'img-upload'\">\n\n <!-- For listforma : Display btn del multiple img & Confirm action -->\n <div class=\"images-view__container__boxAction\">\n\n\n <!-- Select -->\n <button\n class=\"button success images-view__container__boxAction__import\"\n @insertRemoveAnnim\n *ngIf=\"listDisplayed && nbImgToDelSelected && !confirmImgSup && !delListImgLoader && multipleImgMode\"\n (click)=\"selectImgChosen(vm.picturesList)\"\n type=\"button\"\n >\n <i class=\"fal fa-check\"></i>\n {{ 'ImgManager.ImgLib.select' | translate }} ({{nbImgToDelSelected}})\n </button>\n\n <!-- Display btn del multiple img -->\n <button\n *ngIf=\"listDisplayed && nbImgToDelSelected && !confirmImgSup\"\n (click)=\"displayConfirmImgSup()\"\n class=\"button images-view__container__boxAction__delBtn danger\"\n @insertRemoveAnnim\n type=\"button\"\n >\n <i class=\"fal fa-times\"></i>{{ 'ImgManager.ImgLib.delMlt' | translate }} ({{nbImgToDelSelected}})\n <span btnLoadingAnim *ngIf=\"delListImgLoader\" class=\"btnLoadingAnnimation\"></span>\n </button>\n\n <!-- Confirm action -->\n <div\n class=\"images-view__container__boxAction__confirmSup\"\n [ngClass]=\"{'images-view__container__boxAction__confirmSup--visible': confirmImgSup}\">\n <p *ngIf=\"nbImgToDelSelected > 1\" class=\"images-view__container__boxAction__confirmSup__text\">{{ 'ImgManager.ImgLib.confirmSupQuestions' | translate:{nbImage: nbImgToDelSelected} }}</p>\n <p *ngIf=\"nbImgToDelSelected === 1\" class=\"images-view__container__boxAction__confirmSup__text\">{{ 'ImgManager.ImgLib.confirmSupQuestion' | translate:{nbImage: nbImgToDelSelected} }}</p>\n <div>\n <button\n class=\"button images-view__container__boxAction__confirmSup__cancel\"\n (click)=\"cancelSup()\"\n type=\"button\"\n >\n {{ 'ImgManager.ImgLib.cancel' | translate }}\n </button>\n <button\n (click)=\"removeListImg(vm.picturesList)\"\n class=\"button images-view__container__delBtn danger\"\n type=\"button\"\n >\n {{ 'ImgManager.ImgLib.confirm' | translate }}\n </button>\n </div>\n </div>\n\n </div>\n\n\n <!-- Swith mosaic/list forma -->\n <div class=\"field has-addons images-view__container__buttonBox\">\n <div class=\"control\">\n <div\n class=\"button is-lighted images-view__container__buttonBox__btn\"\n [ngClass]=\"{'actifDisplayed': !listDisplayed}\"\n (click)=\"onSwitchFormatDisplayed(false)\"\n >\n <span class=\"icon is-small\">\n <i class=\"fa-solid fa-th\"></i>\n </span>\n </div>\n </div>\n\n <div class=\"control\">\n <div class=\"button is-lighted images-view__container__buttonBox__btn\"\n [ngClass]=\"{'actifDisplayed': listDisplayed}\"\n (click)=\"onSwitchFormatDisplayed(true)\"\n >\n <span class=\"icon is-small\">\n <i class=\"fa-solid fa-bars\"></i>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n\n <!-- Images section -->\n <ng-scrollbar\n class=\"images-view__scroll\"\n [ngClass]=\"{\n 'images-view__scroll--hide--mosaic': vm.displayPexelsResults && !listDisplayed,\n 'images-view__scroll--hide--table': vm.displayPexelsResults && listDisplayed,\n 'images-view__scroll--full': stateDisplayed === 'full',\n 'images-view__scroll--smallDisplay' : stateDisplayed === 'small' && tabDisplayed !== 'img-upload',\n 'images-view__scroll--smallUploadDisplay' : stateDisplayed === 'small' && tabDisplayed === 'img-upload',\n 'images-view__scroll--window': stateDisplayed === 'window'\n }\"\n >\n\n <div class=\"filter-video\" *ngIf=\"tabDisplayed !== 'img-upload'\">\n <label class=\"checkbox images-view__container__filterVideo\">\n <span>{{ 'ImgManager.ImgLib.filterVideo' | translate }}</span>\n <select [(ngModel)]=\"vm.tableFilters.type\" (ngModelChange)=\"searchImagesParameters$.next(getParams(vm.tableFilters));\">\n <option selected value=\"\">\n {{ 'ImgManager.ImgLib.allFiles' | translate }}\n </option>\n <option value=\"image\">\n {{ 'ImgManager.ImgLib.onlyImages' | translate }}\n </option>\n <option value=\"video\">\n {{ 'ImgManager.ImgLib.onlyVideos' | translate }}\n </option>\n </select>\n </label>\n </div>\n\n <div #imgLibContainer class=\"images-view__wrapper\">\n\n <div *ngIf=\"!listDisplayed || stateDisplayed === 'small'\" [@easeInOut]=\"'in'\">\n <mosaic-view\n [picturesList]=\"vm.picturesList\"\n (picturesListChange)=\"onPicturesListChange(vm.picturesList)\"\n [tableFilters]=\"vm.tableFilters\"\n (filtersChange)=\"searchImagesParameters$.next(getParams(vm.tableFilters));\"\n [(disable)]=\"disable\"\n (pictureNameChange)=\"onRenamePicture($event)\"\n (switchDisplayWindow)=\"switchDisplayWindowMosaic()\"\n [nbFakeImg]=\"nbFakeImg\"\n [stateDisplayed]=\"stateDisplayed\"\n [tabDisplayed]=\"tabDisplayed\"\n [displayPexelsResults]=\"vm.displayPexelsResults\"\n [isLoading]=\"vm.isLoading\"\n [fullSize]=\"fullSize\"\n >\n </mosaic-view>\n </div>\n\n <div *ngIf=\"listDisplayed && stateDisplayed !== 'small'\" [@easeInOut]=\"'in'\">\n <table-view\n [picturesList]=\"vm.picturesList\"\n (picturesListChange)=\"onPicturesListChange(vm.picturesList)\"\n [tableFilters]=\"vm.tableFilters\"\n (filtersChange)=\"searchImagesParameters$.next(getParams(vm.tableFilters));\"\n [(disable)]=\"disable\"\n (pictureNameChange)=\"onRenamePicture($event)\"\n [displayPexelsResults]=\"vm.displayPexelsResults\"\n [stateDisplayed]=\"stateDisplayed\"\n [isLoading]=\"vm.isLoading\"\n >\n </table-view>\n </div>\n </div>\n </ng-scrollbar>\n\n <!-- Pexels Section - When no img found -->\n <div\n *ngIf=\"vm.displayPexelsResults\"\n class=\"images-view--pexels\"\n [@easeInOut]=\"'in'\">\n <pexels-lib\n [searchValue]=\"vm.tableFilters.searchValue\"\n [disableSearch]=\"true\"\n >\n </pexels-lib>\n </div>\n</ng-container>\n" }]
|
|
3458
3688
|
}], ctorParameters: () => [{ type: ImgManagerService }, { type: ImgEventService }, { type: ImgSelectionService }, { type: AlertService }, { type: UserSettingsService }, { type: RenamePictureService }, { type: i0.ChangeDetectorRef }], propDecorators: { stateDisplayed: [{
|
|
3459
3689
|
type: Input
|
|
3460
3690
|
}], tabDisplayed: [{
|
|
@@ -3475,10 +3705,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
3475
3705
|
}] } });
|
|
3476
3706
|
|
|
3477
3707
|
class ZindexToggleDirective {
|
|
3478
|
-
currentElement;
|
|
3479
|
-
renderer;
|
|
3480
|
-
isActived = false;
|
|
3481
|
-
onEventChange;
|
|
3482
3708
|
set isActive(value) {
|
|
3483
3709
|
this.isActived = value;
|
|
3484
3710
|
this.switchToggle();
|
|
@@ -3489,6 +3715,7 @@ class ZindexToggleDirective {
|
|
|
3489
3715
|
constructor(currentElement, renderer) {
|
|
3490
3716
|
this.currentElement = currentElement;
|
|
3491
3717
|
this.renderer = renderer;
|
|
3718
|
+
this.isActived = false;
|
|
3492
3719
|
}
|
|
3493
3720
|
ngOnInit() {
|
|
3494
3721
|
}
|
|
@@ -3502,12 +3729,13 @@ class ZindexToggleDirective {
|
|
|
3502
3729
|
}
|
|
3503
3730
|
ngOnDestroy() {
|
|
3504
3731
|
}
|
|
3505
|
-
static
|
|
3506
|
-
static
|
|
3732
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ZindexToggleDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
3733
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.20", type: ZindexToggleDirective, isStandalone: false, selector: "[zIndexToggle]", inputs: { isActive: ["zIndexToggle", "isActive"] }, outputs: { onEventChange: "onEventChange" }, ngImport: i0 }); }
|
|
3507
3734
|
}
|
|
3508
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3735
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ZindexToggleDirective, decorators: [{
|
|
3509
3736
|
type: Directive,
|
|
3510
3737
|
args: [{
|
|
3738
|
+
standalone: false,
|
|
3511
3739
|
selector: '[zIndexToggle]'
|
|
3512
3740
|
}]
|
|
3513
3741
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { onEventChange: [{
|
|
@@ -3524,35 +3752,32 @@ class SelectFiltersPipe {
|
|
|
3524
3752
|
return regexp.test(item.name);
|
|
3525
3753
|
});
|
|
3526
3754
|
}
|
|
3527
|
-
static
|
|
3528
|
-
static
|
|
3755
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SelectFiltersPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
3756
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: SelectFiltersPipe, isStandalone: false, name: "selectFilters" }); }
|
|
3529
3757
|
}
|
|
3530
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3758
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SelectFiltersPipe, decorators: [{
|
|
3531
3759
|
type: Pipe,
|
|
3532
3760
|
args: [{
|
|
3761
|
+
standalone: false,
|
|
3533
3762
|
name: 'selectFilters'
|
|
3534
3763
|
}]
|
|
3535
3764
|
}] });
|
|
3536
3765
|
|
|
3537
3766
|
class SelectComponent {
|
|
3538
|
-
translateService;
|
|
3539
|
-
items;
|
|
3540
|
-
placeholder;
|
|
3541
|
-
label;
|
|
3542
|
-
maxWidthItems;
|
|
3543
|
-
search = false;
|
|
3544
|
-
type = 'default';
|
|
3545
|
-
callToAction;
|
|
3546
|
-
maxWidth = '100%';
|
|
3547
|
-
disabled = false;
|
|
3548
|
-
selectValue = new EventEmitter();
|
|
3549
|
-
clickOnCallToAction = new EventEmitter();
|
|
3550
|
-
searchElement;
|
|
3551
|
-
openCategories = false;
|
|
3552
|
-
searchValue = '';
|
|
3553
|
-
indexItemSelected = -1;
|
|
3554
3767
|
constructor(translateService) {
|
|
3555
3768
|
this.translateService = translateService;
|
|
3769
|
+
this.search = false;
|
|
3770
|
+
this.type = 'default';
|
|
3771
|
+
this.maxWidth = '100%';
|
|
3772
|
+
this.disabled = false;
|
|
3773
|
+
this.selectValue = new EventEmitter();
|
|
3774
|
+
this.clickOnCallToAction = new EventEmitter();
|
|
3775
|
+
this.openCategories = false;
|
|
3776
|
+
this.searchValue = '';
|
|
3777
|
+
this.indexItemSelected = -1;
|
|
3778
|
+
// ControlValueAccessor methods
|
|
3779
|
+
this.onChange = () => { };
|
|
3780
|
+
this.onTouch = () => { };
|
|
3556
3781
|
}
|
|
3557
3782
|
ngOnInit() {
|
|
3558
3783
|
this.indexItemSelected = this.items.findIndex(item => item.selected);
|
|
@@ -3590,9 +3815,6 @@ class SelectComponent {
|
|
|
3590
3815
|
setIndexItemSelected(id) {
|
|
3591
3816
|
this.indexItemSelected = this.items.findIndex(item => item.id === id);
|
|
3592
3817
|
}
|
|
3593
|
-
// ControlValueAccessor methods
|
|
3594
|
-
onChange = () => { };
|
|
3595
|
-
onTouch = () => { };
|
|
3596
3818
|
writeValue(selectItem) {
|
|
3597
3819
|
if (!selectItem) {
|
|
3598
3820
|
return;
|
|
@@ -3607,12 +3829,12 @@ class SelectComponent {
|
|
|
3607
3829
|
registerOnTouched(fn) {
|
|
3608
3830
|
this.onTouch = fn;
|
|
3609
3831
|
}
|
|
3610
|
-
static
|
|
3611
|
-
static
|
|
3832
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SelectComponent, deps: [{ token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3833
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: SelectComponent, isStandalone: false, selector: "wac-select", inputs: { items: "items", placeholder: "placeholder", label: "label", maxWidthItems: "maxWidthItems", search: "search", type: "type", callToAction: "callToAction", maxWidth: "maxWidth", disabled: "disabled" }, outputs: { selectValue: "selectValue", clickOnCallToAction: "clickOnCallToAction" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SelectComponent, multi: true }], viewQueries: [{ propertyName: "searchElement", first: true, predicate: ["search"], descendants: true }], ngImport: i0, template: "<p *ngIf=\"label\" [innerHTML]=\"label\" class=\"wac-select__label\"></p>\n\n<div class=\"wac-select\" wzAutoHide (clickOutside)=\"onClose()\" [ngStyle]=\"{ 'max-width': maxWidth }\" [zIndexToggle]=\"openCategories\">\n\n <div class=\"wac-select__current\" [ngClass]=\"{ 'select-disabled' : disabled }\" (click)=\"!disabled && openCategories = !openCategories\" *ngIf=\"!search\">\n <span *ngIf=\"indexItemSelected !== -1\" class=\"icon\" [innerHTML]=\"items[indexItemSelected].icon\"></span>\n <span [innerHTML]=\"(indexItemSelected !== -1 ? items[indexItemSelected].name : placeholder) | translate\"></span><span><i class=\"fa-solid fa-chevron-down\"></i></span>\n </div>\n\n <div class=\"wac-select__current wac-select__current--withSearch\" [ngClass]=\"{ 'select-disabled' : disabled, 'open-search': openCategories }\" *ngIf=\"search\">\n <div class=\"wac-select__current__search\" *ngIf=\"openCategories && !disabled\">\n <i class=\"far fa-search\"></i>\n <input #search type=\"text\" [(ngModel)]=\"searchValue\" />\n </div>\n <span (click)=\"openCategories = !openCategories;\" *ngIf=\"items[indexItemSelected]?.icon && !openCategories\" class=\"icon\" [innerHTML]=\"items[indexItemSelected].icon\"></span>\n <span (click)=\"showCategories()\" [innerHTML]=\"items[indexItemSelected]?.name ? items[indexItemSelected].name : placeholder\"></span>\n <span (click)=\"openCategories = !openCategories;\"><i class=\"fa-solid fa-chevron-down\"></i></span>\n </div>\n\n <div class=\"wac-select__content\" *ngIf=\"!disabled\" [ngClass]=\"{ hidden: !openCategories, open: type === 'open' }\" [ngStyle]=\"{ 'max-width': maxWidthItems }\">\n <ng-scrollbar *ngIf=\"items.length\" style=\"height: 110px; width: 100%;\">\n\n <div *ngIf=\"callToAction\" class=\"wac-select__content__cta\">\n <div (click)=\"onClickCallToAction()\">\n <i *ngIf=\"callToAction.icon\" [classList]=\"callToAction.icon\"></i><strong *ngIf=\"callToAction.boldText\">{{ callToAction.boldText }}</strong\n ><span>{{ callToAction?.name }}</span>\n </div>\n </div>\n\n <div\n *ngFor=\"let item of items | selectFilters: searchValue; let index = index;\"\n (click)=\"onClose()\"\n class=\"wac-select__content__item\"\n >\n <div *ngIf=\"!item.hide\" [ngClass]=\"{ selected: item.selected }\" (click)=\"onSelectItem(item.id)\">\n <span class=\"icon\" [innerHTML]=\"item.icon\" *ngIf=\"item.icon\"></span>{{ item.name | translate }}\n </div>\n </div>\n\n </ng-scrollbar>\n\n <div *ngIf=\"!(items | selectFilters: searchValue)?.length\" class=\"wac-select__content__empty\">\n <span>{{'wac.datatable.noresult' | translate}}</span>\n </div>\n\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2$1.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: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }, { kind: "directive", type: AutoHideDirective, selector: "[wzAutoHide]", inputs: ["triggerElement", "forceOn"], outputs: ["clickOutside"] }, { kind: "directive", type: ZindexToggleDirective, selector: "[zIndexToggle]", inputs: ["zIndexToggle"], outputs: ["onEventChange"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "pipe", type: SelectFiltersPipe, name: "selectFilters" }] }); }
|
|
3612
3834
|
}
|
|
3613
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3835
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SelectComponent, decorators: [{
|
|
3614
3836
|
type: Component,
|
|
3615
|
-
args: [{ selector: 'wac-select', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SelectComponent, multi: true }], template: "<p *ngIf=\"label\" [innerHTML]=\"label\" class=\"wac-select__label\"></p>\
|
|
3837
|
+
args: [{ standalone: false, selector: 'wac-select', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SelectComponent, multi: true }], template: "<p *ngIf=\"label\" [innerHTML]=\"label\" class=\"wac-select__label\"></p>\n\n<div class=\"wac-select\" wzAutoHide (clickOutside)=\"onClose()\" [ngStyle]=\"{ 'max-width': maxWidth }\" [zIndexToggle]=\"openCategories\">\n\n <div class=\"wac-select__current\" [ngClass]=\"{ 'select-disabled' : disabled }\" (click)=\"!disabled && openCategories = !openCategories\" *ngIf=\"!search\">\n <span *ngIf=\"indexItemSelected !== -1\" class=\"icon\" [innerHTML]=\"items[indexItemSelected].icon\"></span>\n <span [innerHTML]=\"(indexItemSelected !== -1 ? items[indexItemSelected].name : placeholder) | translate\"></span><span><i class=\"fa-solid fa-chevron-down\"></i></span>\n </div>\n\n <div class=\"wac-select__current wac-select__current--withSearch\" [ngClass]=\"{ 'select-disabled' : disabled, 'open-search': openCategories }\" *ngIf=\"search\">\n <div class=\"wac-select__current__search\" *ngIf=\"openCategories && !disabled\">\n <i class=\"far fa-search\"></i>\n <input #search type=\"text\" [(ngModel)]=\"searchValue\" />\n </div>\n <span (click)=\"openCategories = !openCategories;\" *ngIf=\"items[indexItemSelected]?.icon && !openCategories\" class=\"icon\" [innerHTML]=\"items[indexItemSelected].icon\"></span>\n <span (click)=\"showCategories()\" [innerHTML]=\"items[indexItemSelected]?.name ? items[indexItemSelected].name : placeholder\"></span>\n <span (click)=\"openCategories = !openCategories;\"><i class=\"fa-solid fa-chevron-down\"></i></span>\n </div>\n\n <div class=\"wac-select__content\" *ngIf=\"!disabled\" [ngClass]=\"{ hidden: !openCategories, open: type === 'open' }\" [ngStyle]=\"{ 'max-width': maxWidthItems }\">\n <ng-scrollbar *ngIf=\"items.length\" style=\"height: 110px; width: 100%;\">\n\n <div *ngIf=\"callToAction\" class=\"wac-select__content__cta\">\n <div (click)=\"onClickCallToAction()\">\n <i *ngIf=\"callToAction.icon\" [classList]=\"callToAction.icon\"></i><strong *ngIf=\"callToAction.boldText\">{{ callToAction.boldText }}</strong\n ><span>{{ callToAction?.name }}</span>\n </div>\n </div>\n\n <div\n *ngFor=\"let item of items | selectFilters: searchValue; let index = index;\"\n (click)=\"onClose()\"\n class=\"wac-select__content__item\"\n >\n <div *ngIf=\"!item.hide\" [ngClass]=\"{ selected: item.selected }\" (click)=\"onSelectItem(item.id)\">\n <span class=\"icon\" [innerHTML]=\"item.icon\" *ngIf=\"item.icon\"></span>{{ item.name | translate }}\n </div>\n </div>\n\n </ng-scrollbar>\n\n <div *ngIf=\"!(items | selectFilters: searchValue)?.length\" class=\"wac-select__content__empty\">\n <span>{{'wac.datatable.noresult' | translate}}</span>\n </div>\n\n </div>\n</div>\n" }]
|
|
3616
3838
|
}], ctorParameters: () => [{ type: i3.TranslateService }], propDecorators: { items: [{
|
|
3617
3839
|
type: Input
|
|
3618
3840
|
}], placeholder: [{
|
|
@@ -3641,60 +3863,63 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
3641
3863
|
}] } });
|
|
3642
3864
|
|
|
3643
3865
|
class ImgTabsComponent {
|
|
3644
|
-
imgEventEditService;
|
|
3645
|
-
alertService;
|
|
3646
|
-
route;
|
|
3647
|
-
multipleImgMode = false;
|
|
3648
|
-
stateDisplayed;
|
|
3649
|
-
listDisplayed = false;
|
|
3650
|
-
imgManagerClosed = new EventEmitter();
|
|
3651
|
-
currentTab = new EventEmitter();
|
|
3652
|
-
switchDisplayWindow = new EventEmitter();
|
|
3653
|
-
tabs = [
|
|
3654
|
-
{
|
|
3655
|
-
name: 'ImgManager.Tabs.addImg',
|
|
3656
|
-
value: 'img-upload',
|
|
3657
|
-
selected: true,
|
|
3658
|
-
id: 0
|
|
3659
|
-
},
|
|
3660
|
-
{
|
|
3661
|
-
name: 'ImgManager.Tabs.imgLib',
|
|
3662
|
-
value: 'images-view',
|
|
3663
|
-
id: 1
|
|
3664
|
-
},
|
|
3665
|
-
{
|
|
3666
|
-
name: 'ImgManager.Tabs.freeImgLib',
|
|
3667
|
-
value: 'pexels-lib',
|
|
3668
|
-
id: 2
|
|
3669
|
-
},
|
|
3670
|
-
{
|
|
3671
|
-
name: 'ImgManager.Tabs.Editor',
|
|
3672
|
-
value: 'img-edition',
|
|
3673
|
-
hide: true,
|
|
3674
|
-
id: 3
|
|
3675
|
-
}
|
|
3676
|
-
];
|
|
3677
|
-
tabActive = this.tabs[0];
|
|
3678
|
-
/* tabActive = 'images-view';
|
|
3679
|
-
tabs: string[] = ['img-upload', 'images-view', 'pexels-lib', 'img-edition']; */
|
|
3680
|
-
editTab = false;
|
|
3681
|
-
imgToEdit;
|
|
3682
|
-
imgUpload = false;
|
|
3683
|
-
imgUploadedComponent;
|
|
3684
|
-
snackBarNewVersionConfig = {
|
|
3685
|
-
message: '',
|
|
3686
|
-
duration: 3000
|
|
3687
|
-
};
|
|
3688
3866
|
constructor(imgEventEditService, alertService, route) {
|
|
3689
3867
|
this.imgEventEditService = imgEventEditService;
|
|
3690
3868
|
this.alertService = alertService;
|
|
3691
3869
|
this.route = route;
|
|
3870
|
+
this.multipleImgMode = false;
|
|
3871
|
+
this.listDisplayed = false;
|
|
3872
|
+
this.imgManagerClosed = new EventEmitter();
|
|
3873
|
+
this.currentTab = new EventEmitter();
|
|
3874
|
+
this.switchDisplayWindow = new EventEmitter();
|
|
3875
|
+
this.tabs = [
|
|
3876
|
+
{
|
|
3877
|
+
name: 'ImgManager.Tabs.addImg',
|
|
3878
|
+
value: 'img-upload',
|
|
3879
|
+
selected: true,
|
|
3880
|
+
id: 0
|
|
3881
|
+
},
|
|
3882
|
+
{
|
|
3883
|
+
name: 'ImgManager.Tabs.imgLib',
|
|
3884
|
+
value: 'images-view',
|
|
3885
|
+
id: 1
|
|
3886
|
+
},
|
|
3887
|
+
{
|
|
3888
|
+
name: 'ImgManager.Tabs.freeImgLib',
|
|
3889
|
+
value: 'pexels-lib',
|
|
3890
|
+
id: 2
|
|
3891
|
+
},
|
|
3892
|
+
{
|
|
3893
|
+
name: 'ImgManager.Tabs.Editor',
|
|
3894
|
+
value: 'img-edition',
|
|
3895
|
+
hide: true,
|
|
3896
|
+
id: 3
|
|
3897
|
+
}
|
|
3898
|
+
];
|
|
3899
|
+
this.tabActive = this.tabs[0];
|
|
3900
|
+
/* tabActive = 'images-view';
|
|
3901
|
+
tabs: string[] = ['img-upload', 'images-view', 'pexels-lib', 'img-edition']; */
|
|
3902
|
+
this.editTab = false;
|
|
3903
|
+
this.imgUpload = false;
|
|
3904
|
+
this.isVideoEdit = false;
|
|
3905
|
+
this.snackBarNewVersionConfig = {
|
|
3906
|
+
message: '',
|
|
3907
|
+
duration: 3000
|
|
3908
|
+
};
|
|
3692
3909
|
}
|
|
3693
3910
|
ngOnInit() {
|
|
3694
3911
|
this.imgEventEditService.getImgToEditEventListener().subscribe(imgToEdit => {
|
|
3695
3912
|
this.tabActive = this.tabs[3];
|
|
3696
3913
|
this.imgToEdit = imgToEdit;
|
|
3697
3914
|
this.editTab = true;
|
|
3915
|
+
this.isVideoEdit = false;
|
|
3916
|
+
this.currentTab.emit(this.tabs[3]);
|
|
3917
|
+
});
|
|
3918
|
+
this.imgEventEditService.getImgToVideoEventListener().subscribe(imgToEdit => {
|
|
3919
|
+
this.tabActive = this.tabs[3];
|
|
3920
|
+
this.imgToEdit = imgToEdit;
|
|
3921
|
+
this.editTab = true;
|
|
3922
|
+
this.isVideoEdit = true;
|
|
3698
3923
|
this.currentTab.emit(this.tabs[3]);
|
|
3699
3924
|
});
|
|
3700
3925
|
}
|
|
@@ -3726,12 +3951,12 @@ class ImgTabsComponent {
|
|
|
3726
3951
|
onImgManagerClosed() {
|
|
3727
3952
|
this.imgManagerClosed.emit();
|
|
3728
3953
|
}
|
|
3729
|
-
static
|
|
3730
|
-
static
|
|
3954
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImgTabsComponent, deps: [{ token: ImgEventService }, { token: AlertService }, { token: i3$2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3955
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: ImgTabsComponent, isStandalone: false, selector: "img-tabs", inputs: { multipleImgMode: "multipleImgMode", stateDisplayed: "stateDisplayed", listDisplayed: "listDisplayed" }, outputs: { imgManagerClosed: "imgManagerClosed", currentTab: "currentTab", switchDisplayWindow: "switchDisplayWindow" }, viewQueries: [{ propertyName: "imgUploadedComponent", first: true, predicate: ["imgUploadedImg"], descendants: true }], ngImport: i0, template: "<div\n class=\"img-tabs\" [ngClass]=\"{'small': stateDisplayed === 'small'}\">\n <div class=\"wrapper-tabs\">\n <div\n class=\"tabs\"\n [ngClass]=\"\n {\n 'tabs--notWindow': stateDisplayed !== 'window',\n 'tabs--notDisplayed': stateDisplayed === 'window' && tabActive.value === tabs[3].value\n }\">\n\n <ul>\n <li class=\"is-active\" [ngClass]=\"{'is-active': tabActive.value === tabs[0].value}\" (click)=\"toggleTabs(tabs[0])\"><a>{{ tabs[0].name | translate }}</a></li>\n <li [ngClass]=\"{'is-active': tabActive.value === tabs[1].value}\" (click)=\"toggleTabs(tabs[1])\"><a>{{ tabs[1].name | translate }}</a></li>\n <li [ngClass]=\"{'is-active': tabActive.value === tabs[2].value}\" (click)=\"toggleTabs(tabs[2])\"><a>{{ tabs[2].name | translate }}</a></li>\n <li [ngClass]=\"{'is-active': tabActive.value === tabs[3].value}\" *ngIf=\"editTab\"><a>{{ tabs[3].name | translate }}</a></li>\n </ul>\n <div\n class=\"img-tabs__canva\"\n [ngClass]=\"{'img-tabs__canva--window': stateDisplayed === 'window'}\">\n <canva-btn\n (showImgUploaded)=\"onShowImgUploaded()\"\n [stateDisplayed]=\"stateDisplayed\">\n </canva-btn>\n </div>\n </div>\n <div class=\"select-mobile-page\">\n <wac-select\n [(ngModel)]=\"tabActive\"\n name=\"tabs\"\n [items]=\"tabs\"\n ></wac-select>\n </div>\n </div>\n\n <!-- Upload section -->\n <div\n class=\"columns img-tabs__tabsFirst\"\n [ngClass]=\"{\n 'img-tabs__tabsFirst--small': stateDisplayed === 'small',\n 'img-tabs__tabsFirst--window': stateDisplayed === 'window'\n }\"\n *ngIf=\"tabActive.value === tabs[0].value\">\n <div class=\"column img-tabs__tabsFirst__upload\">\n <img-upload\n [stateDisplayed]=\"stateDisplayed\"\n (imgUploaded)=\"onImgUploaded($event)\"\n ></img-upload>\n </div>\n <div class=\"column img-tabs__tabsFirst__list\" [ngClass]=\"{\n 'img-tabs__tabsFirst__list--upload': imgUpload\n }\">\n <images-view\n *ngIf=\"!imgUpload\"\n [stateDisplayed]=\"stateDisplayed\"\n [listDisplayed]=\"false\"\n [multipleImgMode]=\"multipleImgMode\"\n [tabDisplayed]=\"tabActive.value\"\n [nbRowToShow]=\"2\"\n (switchDisplayWindow)=\"switchDisplayWindowImgView()\"\n [fullSize]=\"false\">\n </images-view>\n\n\n <div [hidden]=\"!imgUpload\">\n <upload-list\n #imgUploadedImg\n [stateDisplayed]=\"stateDisplayed\"\n [tabDisplayed]=\"tabActive.value\"\n [multipleImgMode]=\"multipleImgMode\"\n (switchDisplayWindow)=\"switchDisplayWindowImgView()\"\n >\n </upload-list>\n </div>\n </div>\n </div>\n\n <!-- Images section -->\n <div class=\"columns img-tabs__tabsSecond\" *ngIf=\"tabActive.value === tabs[1].value\">\n <div class=\"column\">\n\n <images-view\n [stateDisplayed]=\"stateDisplayed\"\n [listDisplayed]=\"listDisplayed\"\n [multipleImgMode]=\"multipleImgMode\"\n [tabDisplayed]=\"tabActive.value\"\n (switchDisplayWindow)=\"switchDisplayWindowImgView()\"\n [fullSize]=\"true\">\n </images-view>\n\n </div>\n </div>\n\n <!-- Pexels img section -->\n <div class=\"columns img-tabs__tabsThird\" *ngIf=\"tabActive.value === tabs[2].value\">\n <div class=\"column\">\n <pexels-lib\n [stateDisplayed]=\"stateDisplayed\"\n (showImgUploaded)=\"onShowImgUploaded()\">\n </pexels-lib>\n </div>\n </div>\n\n <!--Edition section -->\n <div class=\"columns img-tabs__tabsEdit\" *ngIf=\"tabActive.value === tabs[3].value\">\n <div class=\"column\">\n <img-editor\n [stateDisplayed]=\"stateDisplayed\"\n [imgToEdit]=\"imgToEdit\"\n [isVideoEdit]=\"isVideoEdit\"\n (editClosed)=\"onEditClosed($event)\">\n </img-editor>\n </div>\n </div>\n\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ImgUploadComponent, selector: "img-upload", inputs: ["stateDisplayed"], outputs: ["imgUploaded"] }, { kind: "component", type: PexelLibComponent, selector: "pexels-lib", inputs: ["stateDisplayed", "searchValue", "disableSearch"] }, { kind: "component", type: UploadListComponent, selector: "upload-list", inputs: ["stateDisplayed", "tabDisplayed", "multipleImgMode"], outputs: ["switchDisplayWindow"] }, { kind: "component", type: ImgEditorComponent, selector: "img-editor", inputs: ["stateDisplayed", "imgToEdit", "isVideoEdit"], outputs: ["editClosed"] }, { kind: "component", type: CanvaBtnComponent, selector: "canva-btn", inputs: ["stateDisplayed"], outputs: ["showImgUploaded"] }, { kind: "component", type: ImagesViewComponent, selector: "images-view", inputs: ["stateDisplayed", "tabDisplayed", "fullSize", "nbRowToShow", "listDisplayed", "multipleImgMode"], outputs: ["switchDisplayWindow"] }, { kind: "component", type: SelectComponent, selector: "wac-select", inputs: ["items", "placeholder", "label", "maxWidthItems", "search", "type", "callToAction", "maxWidth", "disabled"], outputs: ["selectValue", "clickOnCallToAction"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
|
|
3731
3956
|
}
|
|
3732
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3957
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImgTabsComponent, decorators: [{
|
|
3733
3958
|
type: Component,
|
|
3734
|
-
args: [{ selector: 'img-tabs', template: "<div\
|
|
3959
|
+
args: [{ standalone: false, selector: 'img-tabs', template: "<div\n class=\"img-tabs\" [ngClass]=\"{'small': stateDisplayed === 'small'}\">\n <div class=\"wrapper-tabs\">\n <div\n class=\"tabs\"\n [ngClass]=\"\n {\n 'tabs--notWindow': stateDisplayed !== 'window',\n 'tabs--notDisplayed': stateDisplayed === 'window' && tabActive.value === tabs[3].value\n }\">\n\n <ul>\n <li class=\"is-active\" [ngClass]=\"{'is-active': tabActive.value === tabs[0].value}\" (click)=\"toggleTabs(tabs[0])\"><a>{{ tabs[0].name | translate }}</a></li>\n <li [ngClass]=\"{'is-active': tabActive.value === tabs[1].value}\" (click)=\"toggleTabs(tabs[1])\"><a>{{ tabs[1].name | translate }}</a></li>\n <li [ngClass]=\"{'is-active': tabActive.value === tabs[2].value}\" (click)=\"toggleTabs(tabs[2])\"><a>{{ tabs[2].name | translate }}</a></li>\n <li [ngClass]=\"{'is-active': tabActive.value === tabs[3].value}\" *ngIf=\"editTab\"><a>{{ tabs[3].name | translate }}</a></li>\n </ul>\n <div\n class=\"img-tabs__canva\"\n [ngClass]=\"{'img-tabs__canva--window': stateDisplayed === 'window'}\">\n <canva-btn\n (showImgUploaded)=\"onShowImgUploaded()\"\n [stateDisplayed]=\"stateDisplayed\">\n </canva-btn>\n </div>\n </div>\n <div class=\"select-mobile-page\">\n <wac-select\n [(ngModel)]=\"tabActive\"\n name=\"tabs\"\n [items]=\"tabs\"\n ></wac-select>\n </div>\n </div>\n\n <!-- Upload section -->\n <div\n class=\"columns img-tabs__tabsFirst\"\n [ngClass]=\"{\n 'img-tabs__tabsFirst--small': stateDisplayed === 'small',\n 'img-tabs__tabsFirst--window': stateDisplayed === 'window'\n }\"\n *ngIf=\"tabActive.value === tabs[0].value\">\n <div class=\"column img-tabs__tabsFirst__upload\">\n <img-upload\n [stateDisplayed]=\"stateDisplayed\"\n (imgUploaded)=\"onImgUploaded($event)\"\n ></img-upload>\n </div>\n <div class=\"column img-tabs__tabsFirst__list\" [ngClass]=\"{\n 'img-tabs__tabsFirst__list--upload': imgUpload\n }\">\n <images-view\n *ngIf=\"!imgUpload\"\n [stateDisplayed]=\"stateDisplayed\"\n [listDisplayed]=\"false\"\n [multipleImgMode]=\"multipleImgMode\"\n [tabDisplayed]=\"tabActive.value\"\n [nbRowToShow]=\"2\"\n (switchDisplayWindow)=\"switchDisplayWindowImgView()\"\n [fullSize]=\"false\">\n </images-view>\n\n\n <div [hidden]=\"!imgUpload\">\n <upload-list\n #imgUploadedImg\n [stateDisplayed]=\"stateDisplayed\"\n [tabDisplayed]=\"tabActive.value\"\n [multipleImgMode]=\"multipleImgMode\"\n (switchDisplayWindow)=\"switchDisplayWindowImgView()\"\n >\n </upload-list>\n </div>\n </div>\n </div>\n\n <!-- Images section -->\n <div class=\"columns img-tabs__tabsSecond\" *ngIf=\"tabActive.value === tabs[1].value\">\n <div class=\"column\">\n\n <images-view\n [stateDisplayed]=\"stateDisplayed\"\n [listDisplayed]=\"listDisplayed\"\n [multipleImgMode]=\"multipleImgMode\"\n [tabDisplayed]=\"tabActive.value\"\n (switchDisplayWindow)=\"switchDisplayWindowImgView()\"\n [fullSize]=\"true\">\n </images-view>\n\n </div>\n </div>\n\n <!-- Pexels img section -->\n <div class=\"columns img-tabs__tabsThird\" *ngIf=\"tabActive.value === tabs[2].value\">\n <div class=\"column\">\n <pexels-lib\n [stateDisplayed]=\"stateDisplayed\"\n (showImgUploaded)=\"onShowImgUploaded()\">\n </pexels-lib>\n </div>\n </div>\n\n <!--Edition section -->\n <div class=\"columns img-tabs__tabsEdit\" *ngIf=\"tabActive.value === tabs[3].value\">\n <div class=\"column\">\n <img-editor\n [stateDisplayed]=\"stateDisplayed\"\n [imgToEdit]=\"imgToEdit\"\n [isVideoEdit]=\"isVideoEdit\"\n (editClosed)=\"onEditClosed($event)\">\n </img-editor>\n </div>\n </div>\n\n</div>\n" }]
|
|
3735
3960
|
}], ctorParameters: () => [{ type: ImgEventService }, { type: AlertService }, { type: i3$2.Router }], propDecorators: { multipleImgMode: [{
|
|
3736
3961
|
type: Input
|
|
3737
3962
|
}], stateDisplayed: [{
|
|
@@ -3750,24 +3975,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
3750
3975
|
}] } });
|
|
3751
3976
|
|
|
3752
3977
|
class ImgSelectionComponent {
|
|
3753
|
-
imgSelectionService;
|
|
3754
|
-
tabDisplayed;
|
|
3755
|
-
imgManagerClosed = new EventEmitter();
|
|
3756
|
-
removingAll = false;
|
|
3757
|
-
cancellingAll = false;
|
|
3758
|
-
importingAll = false;
|
|
3759
|
-
dragStart = false;
|
|
3760
|
-
vm$;
|
|
3761
|
-
trashPositionIndex = 0;
|
|
3762
|
-
trashPositionLeft = '-5px';
|
|
3763
3978
|
constructor(imgSelectionService) {
|
|
3764
3979
|
this.imgSelectionService = imgSelectionService;
|
|
3765
|
-
|
|
3766
|
-
|
|
3980
|
+
this.imgManagerClosed = new EventEmitter();
|
|
3981
|
+
this.removingAll = false;
|
|
3982
|
+
this.cancellingAll = false;
|
|
3983
|
+
this.importingAll = false;
|
|
3984
|
+
this.dragStart = false;
|
|
3767
3985
|
this.vm$ = combineLatest({
|
|
3768
3986
|
imgSelectedList: this.imgSelectionService.imgSelection$,
|
|
3769
3987
|
isLoading: this.imgSelectionService.imgSelectedListLoading$
|
|
3770
3988
|
});
|
|
3989
|
+
this.trashPositionIndex = 0;
|
|
3990
|
+
this.trashPositionLeft = '-5px';
|
|
3771
3991
|
}
|
|
3772
3992
|
init() {
|
|
3773
3993
|
this.removingAll = false;
|
|
@@ -3785,12 +4005,12 @@ class ImgSelectionComponent {
|
|
|
3785
4005
|
removeImgFromSelection(event) {
|
|
3786
4006
|
this.imgSelectionService.removeImgSelectedByIndex(event.previousIndex);
|
|
3787
4007
|
}
|
|
3788
|
-
static
|
|
3789
|
-
static
|
|
4008
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImgSelectionComponent, deps: [{ token: ImgSelectionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4009
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: ImgSelectionComponent, isStandalone: false, selector: "img-selection", inputs: { tabDisplayed: "tabDisplayed" }, outputs: { imgManagerClosed: "imgManagerClosed" }, ngImport: i0, template: "<div\n class=\"trash\"\n cdkDropList\n #unSelectList=\"cdkDropList\"\n (cdkDropListDropped)=\"removeImgFromSelection($event)\">\n <p>{{'ImgManager.ImgSelection.unselect' | translate}}</p>\n</div>\n\n<ng-container *ngIf=\"vm$ | async as vm\">\n\n <div\n class=\"img-selection\"\n *ngIf=\"!vm.isLoading; else Loading\"\n [ngClass]=\"{'img-selection--visible' : vm.imgSelectedList && vm.imgSelectedList.length}\"\n >\n\n <div\n cdkDropList\n #selectionList=\"cdkDropList\"\n cdkDropListOrientation=\"horizontal\"\n class=\"list_img_selection\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListConnectedTo]=\"[unSelectList]\"\n >\n\n <div\n class=\"img_box\"\n *ngFor=\"let picture of vm.imgSelectedList; let index = index\"\n cdkDrag\n (cdkDragStarted)=\"dragStart = true;\"\n (cdkDragEnded)=\"dragStart = false;\"\n >\n\n <img\n *ngIf=\"index < 1\"\n class=\"drag__img\"\n [src]=\"picture.file_name | imgSrc : '400'\"\n [title]=\"picture.display_name\"\n />\n\n <img\n *ngIf=\"index > 0\"\n class=\"drag__img\"\n [src]=\"picture.file_name | imgSrc : '200'\"\n [title]=\"picture.display_name\"\n />\n\n <div *ngIf=\"picture.video_link\" class=\"img_box__video\">\n <i class=\"fa-solid fa-play\"></i>\n </div>\n\n <div class=\"delete-btn\" (click)=\"removeImg(index)\">{{'ImgManager.ImgSelection.deleteImg' | translate}}</div>\n\n <span class=\"drag__tooltips\">{{'ImgManager.ImgSelection.tooltips' | translate}}</span>\n\n </div>\n </div>\n </div>\n</ng-container>\n<!-- Loader -->\n<ng-template #Loading>\n <wz-loader></wz-loader>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i3$3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: LoaderComponent, selector: "wz-loader", inputs: ["text", "small", "position"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "pipe", type: ImageSrcPipe, name: "imgSrc" }] }); }
|
|
3790
4010
|
}
|
|
3791
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
4011
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: ImgSelectionComponent, decorators: [{
|
|
3792
4012
|
type: Component,
|
|
3793
|
-
args: [{ selector: 'img-selection', template: "<div\
|
|
4013
|
+
args: [{ standalone: false, selector: 'img-selection', template: "<div\n class=\"trash\"\n cdkDropList\n #unSelectList=\"cdkDropList\"\n (cdkDropListDropped)=\"removeImgFromSelection($event)\">\n <p>{{'ImgManager.ImgSelection.unselect' | translate}}</p>\n</div>\n\n<ng-container *ngIf=\"vm$ | async as vm\">\n\n <div\n class=\"img-selection\"\n *ngIf=\"!vm.isLoading; else Loading\"\n [ngClass]=\"{'img-selection--visible' : vm.imgSelectedList && vm.imgSelectedList.length}\"\n >\n\n <div\n cdkDropList\n #selectionList=\"cdkDropList\"\n cdkDropListOrientation=\"horizontal\"\n class=\"list_img_selection\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListConnectedTo]=\"[unSelectList]\"\n >\n\n <div\n class=\"img_box\"\n *ngFor=\"let picture of vm.imgSelectedList; let index = index\"\n cdkDrag\n (cdkDragStarted)=\"dragStart = true;\"\n (cdkDragEnded)=\"dragStart = false;\"\n >\n\n <img\n *ngIf=\"index < 1\"\n class=\"drag__img\"\n [src]=\"picture.file_name | imgSrc : '400'\"\n [title]=\"picture.display_name\"\n />\n\n <img\n *ngIf=\"index > 0\"\n class=\"drag__img\"\n [src]=\"picture.file_name | imgSrc : '200'\"\n [title]=\"picture.display_name\"\n />\n\n <div *ngIf=\"picture.video_link\" class=\"img_box__video\">\n <i class=\"fa-solid fa-play\"></i>\n </div>\n\n <div class=\"delete-btn\" (click)=\"removeImg(index)\">{{'ImgManager.ImgSelection.deleteImg' | translate}}</div>\n\n <span class=\"drag__tooltips\">{{'ImgManager.ImgSelection.tooltips' | translate}}</span>\n\n </div>\n </div>\n </div>\n</ng-container>\n<!-- Loader -->\n<ng-template #Loading>\n <wz-loader></wz-loader>\n</ng-template>\n" }]
|
|
3794
4014
|
}], ctorParameters: () => [{ type: ImgSelectionService }], propDecorators: { tabDisplayed: [{
|
|
3795
4015
|
type: Input
|
|
3796
4016
|
}], imgManagerClosed: [{
|
|
@@ -3798,15 +4018,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
3798
4018
|
}] } });
|
|
3799
4019
|
|
|
3800
4020
|
class WzImgManagerComponent {
|
|
3801
|
-
imgSelectionService;
|
|
3802
|
-
userSettingsService;
|
|
3803
|
-
canvaService;
|
|
3804
|
-
imgEventService;
|
|
3805
|
-
domService;
|
|
3806
|
-
uploadService;
|
|
3807
|
-
iconService;
|
|
3808
|
-
stateDisplayed;
|
|
3809
|
-
showSelection = false;
|
|
3810
4021
|
// If forceToOpenCanva is true : Canva will open with the canvaService.expectedImgSizesChange
|
|
3811
4022
|
// If forceToOpenCanva is a WiziBlockMediaDto, Canva open immediatly
|
|
3812
4023
|
set forceToOpenCanva(forceToOpenCanva) {
|
|
@@ -3816,8 +4027,6 @@ class WzImgManagerComponent {
|
|
|
3816
4027
|
}
|
|
3817
4028
|
this.canvaService.expectedImgSizesChange(forceToOpenCanva);
|
|
3818
4029
|
}
|
|
3819
|
-
imgManagerClosed = new EventEmitter();
|
|
3820
|
-
_multipleImgMode = false;
|
|
3821
4030
|
set multipleImgMode(activate) {
|
|
3822
4031
|
this._multipleImgMode = activate;
|
|
3823
4032
|
this.imgSelectionService.setMultipleImgMode(this._multipleImgMode);
|
|
@@ -3825,7 +4034,6 @@ class WzImgManagerComponent {
|
|
|
3825
4034
|
get multipleImgMode() {
|
|
3826
4035
|
return this._multipleImgMode;
|
|
3827
4036
|
}
|
|
3828
|
-
_showImgManagerModule = false;
|
|
3829
4037
|
set showImgManagerModule(activate) {
|
|
3830
4038
|
this._showImgManagerModule = activate;
|
|
3831
4039
|
if (activate) {
|
|
@@ -3840,16 +4048,6 @@ class WzImgManagerComponent {
|
|
|
3840
4048
|
this.onClose();
|
|
3841
4049
|
}
|
|
3842
4050
|
}
|
|
3843
|
-
imgSelectionChange = new EventEmitter();
|
|
3844
|
-
imageUploaded = new EventEmitter();
|
|
3845
|
-
close = false;
|
|
3846
|
-
selectImgEvent;
|
|
3847
|
-
listDisplayed = false;
|
|
3848
|
-
listDisplayedEvent;
|
|
3849
|
-
hideTab = false;
|
|
3850
|
-
// Save the default overflow apply to html tag, when the module is full open
|
|
3851
|
-
overflowHTML;
|
|
3852
|
-
bodyPadding;
|
|
3853
4051
|
constructor(imgSelectionService, userSettingsService, canvaService, imgEventService, domService, uploadService, iconService) {
|
|
3854
4052
|
this.imgSelectionService = imgSelectionService;
|
|
3855
4053
|
this.userSettingsService = userSettingsService;
|
|
@@ -3858,21 +4056,26 @@ class WzImgManagerComponent {
|
|
|
3858
4056
|
this.domService = domService;
|
|
3859
4057
|
this.uploadService = uploadService;
|
|
3860
4058
|
this.iconService = iconService;
|
|
4059
|
+
this.showSelection = false;
|
|
4060
|
+
this.imgManagerClosed = new EventEmitter();
|
|
4061
|
+
this._multipleImgMode = false;
|
|
4062
|
+
this._showImgManagerModule = false;
|
|
4063
|
+
this.imgSelectionChange = this.imgSelectionService.imgSelection$;
|
|
4064
|
+
this.imageUploaded = this.uploadService.imageUploaded$;
|
|
4065
|
+
this.close = false;
|
|
4066
|
+
this.listDisplayed = false;
|
|
4067
|
+
this.hideTab = false;
|
|
3861
4068
|
this.iconService.loadIconLib();
|
|
3862
4069
|
}
|
|
3863
4070
|
ngOnInit() {
|
|
3864
4071
|
this.imgSelectionService.setMultipleImgMode(this._multipleImgMode);
|
|
3865
4072
|
this.imgSelectionService.initImgSelectedList(null);
|
|
3866
4073
|
this.selectImgEvent = this.imgSelectionService.imgSelection$.subscribe(imgSelection => {
|
|
3867
|
-
this.imgSelectionChange.emit(imgSelection);
|
|
3868
4074
|
if (imgSelection && imgSelection.length && this.checkCloseImgManager()) {
|
|
3869
4075
|
// Close the img manager
|
|
3870
4076
|
this.onClose();
|
|
3871
4077
|
}
|
|
3872
4078
|
});
|
|
3873
|
-
this.uploadService.imageUploaded$.subscribe(uploadedImage => {
|
|
3874
|
-
this.imageUploaded.emit(uploadedImage);
|
|
3875
|
-
});
|
|
3876
4079
|
this.checkUserDisplayPreference();
|
|
3877
4080
|
// Use when the img manager is full open or open in page. This display the user preference display, mosaic or list.
|
|
3878
4081
|
this.listDisplayedEvent = this.imgEventService.getlistDisplayedChange().subscribe(value => this.listDisplayed = value);
|
|
@@ -3959,12 +4162,12 @@ class WzImgManagerComponent {
|
|
|
3959
4162
|
this.canvaService.expectedImgSizesChange(null);
|
|
3960
4163
|
this.listDisplayedEvent.unsubscribe();
|
|
3961
4164
|
}
|
|
3962
|
-
static
|
|
3963
|
-
static
|
|
4165
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: WzImgManagerComponent, deps: [{ token: ImgSelectionService }, { token: UserSettingsService }, { token: CanvaService }, { token: ImgEventService }, { token: DomService }, { token: UploadService }, { token: IconService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4166
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: WzImgManagerComponent, isStandalone: false, selector: "wz-img-manager", inputs: { stateDisplayed: "stateDisplayed", showSelection: "showSelection", forceToOpenCanva: "forceToOpenCanva", multipleImgMode: "multipleImgMode", showImgManagerModule: "showImgManagerModule" }, outputs: { imgManagerClosed: "imgManagerClosed", imgSelectionChange: "imgSelectionChange", imageUploaded: "imageUploaded" }, host: { listeners: { "document:keydown.escape": "onKeydownHandler($event)" } }, ngImport: i0, template: "<div class=\"wz-img-manager\">\n <!-- Img selection handler -->\n <div class=\"wz-img-manager__selectionHandler\" *ngIf=\"showSelection\">\n <img-selection></img-selection>\n </div>\n\n <!-- Img manager module -->\n <div\n *ngIf=\"_showImgManagerModule\"\n class=\"wz-img-manager__module\"\n [ngClass]=\"{\n 'wz-img-manager__module--small': stateDisplayed === 'small',\n 'wz-img-manager__module--full': stateDisplayed === 'full',\n 'wz-img-manager__module--window': stateDisplayed === 'window',\n 'wz-img-manager__module--edit': hideTab}\"\n >\n\n <div class=\"wz-img-manager__module__header\" *ngIf=\"stateDisplayed !== 'window'\">\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'full'\" type=\"button\"><span>Expand</span><i class=\"fal fa-compress-alt\"></i></button>\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'closed'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"openFull()\" *ngIf=\"stateDisplayed === 'small'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"onClose()\" *ngIf=\"stateDisplayed !== 'closed'\" type=\"button\"><span>Close</span><i class=\"fal fa-times\"></i></button>\n </div>\n\n <div\n class=\"wz-img-manager__module__content wz-block\"\n [ngClass]=\"{'wz-block--window': stateDisplayed === 'window'}\">\n <img-tabs\n [stateDisplayed]=\"stateDisplayed\"\n [multipleImgMode]=\"multipleImgMode\"\n [listDisplayed]=\"listDisplayed\"\n (imgManagerClosed)=\"onImgManagerClosed()\"\n (switchDisplayWindow)=\"changeDisplayTab()\"\n (currentTab)=\"setCurrentTab($event)\">\n </img-tabs>\n </div>\n </div>\n\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ImgTabsComponent, selector: "img-tabs", inputs: ["multipleImgMode", "stateDisplayed", "listDisplayed"], outputs: ["imgManagerClosed", "currentTab", "switchDisplayWindow"] }, { kind: "component", type: ImgSelectionComponent, selector: "img-selection", inputs: ["tabDisplayed"], outputs: ["imgManagerClosed"] }] }); }
|
|
3964
4167
|
}
|
|
3965
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
4168
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: WzImgManagerComponent, decorators: [{
|
|
3966
4169
|
type: Component,
|
|
3967
|
-
args: [{ selector: 'wz-img-manager', template: "<div class=\"wz-img-manager\">\
|
|
4170
|
+
args: [{ standalone: false, selector: 'wz-img-manager', template: "<div class=\"wz-img-manager\">\n <!-- Img selection handler -->\n <div class=\"wz-img-manager__selectionHandler\" *ngIf=\"showSelection\">\n <img-selection></img-selection>\n </div>\n\n <!-- Img manager module -->\n <div\n *ngIf=\"_showImgManagerModule\"\n class=\"wz-img-manager__module\"\n [ngClass]=\"{\n 'wz-img-manager__module--small': stateDisplayed === 'small',\n 'wz-img-manager__module--full': stateDisplayed === 'full',\n 'wz-img-manager__module--window': stateDisplayed === 'window',\n 'wz-img-manager__module--edit': hideTab}\"\n >\n\n <div class=\"wz-img-manager__module__header\" *ngIf=\"stateDisplayed !== 'window'\">\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'full'\" type=\"button\"><span>Expand</span><i class=\"fal fa-compress-alt\"></i></button>\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'closed'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"openFull()\" *ngIf=\"stateDisplayed === 'small'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"onClose()\" *ngIf=\"stateDisplayed !== 'closed'\" type=\"button\"><span>Close</span><i class=\"fal fa-times\"></i></button>\n </div>\n\n <div\n class=\"wz-img-manager__module__content wz-block\"\n [ngClass]=\"{'wz-block--window': stateDisplayed === 'window'}\">\n <img-tabs\n [stateDisplayed]=\"stateDisplayed\"\n [multipleImgMode]=\"multipleImgMode\"\n [listDisplayed]=\"listDisplayed\"\n (imgManagerClosed)=\"onImgManagerClosed()\"\n (switchDisplayWindow)=\"changeDisplayTab()\"\n (currentTab)=\"setCurrentTab($event)\">\n </img-tabs>\n </div>\n </div>\n\n</div>\n" }]
|
|
3968
4171
|
}], ctorParameters: () => [{ type: ImgSelectionService }, { type: UserSettingsService }, { type: CanvaService }, { type: ImgEventService }, { type: DomService }, { type: UploadService }, { type: IconService }], propDecorators: { stateDisplayed: [{
|
|
3969
4172
|
type: Input
|
|
3970
4173
|
}], showSelection: [{
|
|
@@ -3987,21 +4190,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
3987
4190
|
}] } });
|
|
3988
4191
|
|
|
3989
4192
|
class SnackBarService {
|
|
3990
|
-
nwbSnackbar;
|
|
3991
|
-
translateService;
|
|
3992
|
-
actionMsg = 'ImgManager.snackBar.action';
|
|
3993
|
-
snackBarConfigAction = {
|
|
3994
|
-
message: '',
|
|
3995
|
-
duration: 5000
|
|
3996
|
-
};
|
|
3997
|
-
snackBarConfig = {
|
|
3998
|
-
message: '',
|
|
3999
|
-
duration: 5000
|
|
4000
|
-
};
|
|
4001
|
-
snackBarRefComponent;
|
|
4002
4193
|
constructor(nwbSnackbar, translateService) {
|
|
4003
4194
|
this.nwbSnackbar = nwbSnackbar;
|
|
4004
4195
|
this.translateService = translateService;
|
|
4196
|
+
this.actionMsg = 'ImgManager.snackBar.action';
|
|
4197
|
+
this.snackBarConfigAction = {
|
|
4198
|
+
message: '',
|
|
4199
|
+
duration: 5000
|
|
4200
|
+
};
|
|
4201
|
+
this.snackBarConfig = {
|
|
4202
|
+
message: '',
|
|
4203
|
+
duration: 5000
|
|
4204
|
+
};
|
|
4005
4205
|
}
|
|
4006
4206
|
openSnackBar(msgKey) {
|
|
4007
4207
|
this.closePreviousSnackbar();
|
|
@@ -4039,10 +4239,10 @@ class SnackBarService {
|
|
|
4039
4239
|
this.snackBarRefComponent.dismiss(false);
|
|
4040
4240
|
}
|
|
4041
4241
|
}
|
|
4042
|
-
static
|
|
4043
|
-
static
|
|
4242
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SnackBarService, deps: [{ token: i1.NwbSnackbarService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4243
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SnackBarService }); }
|
|
4044
4244
|
}
|
|
4045
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
4245
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: SnackBarService, decorators: [{
|
|
4046
4246
|
type: Injectable
|
|
4047
4247
|
}], ctorParameters: () => [{ type: i1.NwbSnackbarService }, { type: i3.TranslateService }] });
|
|
4048
4248
|
|
|
@@ -4056,6 +4256,8 @@ const components = [
|
|
|
4056
4256
|
UploadListComponent,
|
|
4057
4257
|
ImgEditorComponent,
|
|
4058
4258
|
EditorInfoSectionComponent,
|
|
4259
|
+
EditorInfoVideoComponent,
|
|
4260
|
+
EditorShowIframeComponent,
|
|
4059
4261
|
CanvaBtnComponent,
|
|
4060
4262
|
ImgSelectionComponent,
|
|
4061
4263
|
LoaderComponent,
|
|
@@ -4117,8 +4319,8 @@ class WzImgManagerModule {
|
|
|
4117
4319
|
]
|
|
4118
4320
|
};
|
|
4119
4321
|
}
|
|
4120
|
-
static
|
|
4121
|
-
static
|
|
4322
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: WzImgManagerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
4323
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: WzImgManagerModule, declarations: [WzImgManagerComponent,
|
|
4122
4324
|
ImgTabsComponent,
|
|
4123
4325
|
ImgUploadComponent,
|
|
4124
4326
|
PexelLibComponent,
|
|
@@ -4126,6 +4328,8 @@ class WzImgManagerModule {
|
|
|
4126
4328
|
UploadListComponent,
|
|
4127
4329
|
ImgEditorComponent,
|
|
4128
4330
|
EditorInfoSectionComponent,
|
|
4331
|
+
EditorInfoVideoComponent,
|
|
4332
|
+
EditorShowIframeComponent,
|
|
4129
4333
|
CanvaBtnComponent,
|
|
4130
4334
|
ImgSelectionComponent,
|
|
4131
4335
|
LoaderComponent,
|
|
@@ -4160,24 +4364,23 @@ class WzImgManagerModule {
|
|
|
4160
4364
|
HttpClientModule,
|
|
4161
4365
|
FormsModule,
|
|
4162
4366
|
NgScrollbarModule,
|
|
4163
|
-
|
|
4367
|
+
NgScrollReached,
|
|
4164
4368
|
NwbAllModule,
|
|
4165
|
-
|
|
4369
|
+
ImageCropperComponent,
|
|
4166
4370
|
CdkTableModule,
|
|
4167
4371
|
DragDropModule,
|
|
4168
|
-
TranslateModule], exports: [WzImgManagerComponent] });
|
|
4169
|
-
static
|
|
4372
|
+
TranslateModule], exports: [WzImgManagerComponent] }); }
|
|
4373
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: WzImgManagerModule, imports: [CommonModule,
|
|
4170
4374
|
HttpClientModule,
|
|
4171
4375
|
FormsModule,
|
|
4172
4376
|
NgScrollbarModule,
|
|
4173
|
-
NgScrollbarReachedModule,
|
|
4174
4377
|
NwbAllModule,
|
|
4175
|
-
|
|
4378
|
+
ImageCropperComponent,
|
|
4176
4379
|
CdkTableModule,
|
|
4177
4380
|
DragDropModule,
|
|
4178
|
-
TranslateModule] });
|
|
4381
|
+
TranslateModule] }); }
|
|
4179
4382
|
}
|
|
4180
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
4383
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: WzImgManagerModule, decorators: [{
|
|
4181
4384
|
type: NgModule,
|
|
4182
4385
|
args: [{
|
|
4183
4386
|
declarations: [
|
|
@@ -4190,9 +4393,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
4190
4393
|
HttpClientModule,
|
|
4191
4394
|
FormsModule,
|
|
4192
4395
|
NgScrollbarModule,
|
|
4193
|
-
|
|
4396
|
+
NgScrollReached,
|
|
4194
4397
|
NwbAllModule,
|
|
4195
|
-
|
|
4398
|
+
ImageCropperComponent,
|
|
4196
4399
|
CdkTableModule,
|
|
4197
4400
|
DragDropModule,
|
|
4198
4401
|
TranslateModule,
|
|
@@ -4205,25 +4408,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImpor
|
|
|
4205
4408
|
}] });
|
|
4206
4409
|
|
|
4207
4410
|
class CanvaButtonApi {
|
|
4208
|
-
createDesign;
|
|
4209
|
-
editDesign;
|
|
4210
4411
|
}
|
|
4211
4412
|
;
|
|
4212
4413
|
|
|
4213
4414
|
class ImgApiDto {
|
|
4214
|
-
|
|
4215
|
-
|
|
4216
|
-
|
|
4217
|
-
|
|
4218
|
-
|
|
4219
|
-
|
|
4220
|
-
canva_url = '';
|
|
4221
|
-
assets_route = 'assets/img-manager/';
|
|
4415
|
+
constructor() {
|
|
4416
|
+
this.image_manager_route = '';
|
|
4417
|
+
this.pexels_route = '';
|
|
4418
|
+
this.canva_url = '';
|
|
4419
|
+
this.assets_route = 'assets/img-manager/';
|
|
4420
|
+
}
|
|
4222
4421
|
}
|
|
4223
4422
|
|
|
4224
4423
|
class ImgManagerConfigDto {
|
|
4225
|
-
api;
|
|
4226
|
-
imgCDNConfig;
|
|
4227
4424
|
}
|
|
4228
4425
|
|
|
4229
4426
|
/*
|