@wizishop/img-manager 18.2.2-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 +17 -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.2-beta.tgz +0 -0
- package/wz-img-manager.scss +0 -4085
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="43" height="40" viewBox="0 0 43 40">
|
|
2
|
-
<g id="Icon_Picture" transform="translate(0 0)">
|
|
3
|
-
<path id="Union_7" data-name="Union 7" d="M24.129,5.657l2.823.749a1.547,1.547,0,0,1,1.173,1.975l-4,14.26ZM0,2.667.428,1.173A1.574,1.574,0,0,1,2.344.051L12.517,2.667Z" transform="translate(11.451 3.258)" fill="#daf1f7"/>
|
|
4
|
-
<path id="Tracé_3319" data-name="Tracé 3319" d="M48.8,10.364a1.265,1.265,0,0,0-.959-1.6L43.052,7.533V7.426a1.491,1.491,0,0,0-1.491-1.5H36.873L20.148,1.658h0c-.053,0-.107-.053-.213-.053h-.053a1.313,1.313,0,0,0-1.332.961l-.959,3.365H16.1l1.332-4.753A1.579,1.579,0,0,1,19.349.056L49.337,7.747a1.575,1.575,0,0,1,1.119,1.976L43.1,36.213V30.819Z" transform="translate(-7.524 -0.005)" fill="#9cd6e5"/>
|
|
5
|
-
<path id="Tracé_3320" data-name="Tracé 3320" d="M34.249,15.2a1.572,1.572,0,0,0-1.6-1.6H1.6A1.572,1.572,0,0,0,0,15.2V44.737a1.572,1.572,0,0,0,1.6,1.6H32.651a1.572,1.572,0,0,0,1.6-1.6V15.2ZM32.811,38.7a1.412,1.412,0,0,1-1.385,1.389H2.823A1.412,1.412,0,0,1,1.438,38.7V16.324a1.412,1.412,0,0,1,1.385-1.389h28.6a1.412,1.412,0,0,1,1.385,1.389Z" transform="translate(0 -6.339)" fill="#52aecd"/>
|
|
6
|
-
<path id="Tracé_3321" data-name="Tracé 3321" d="M15.646,43.665,7.816,51.2H5.153a.052.052,0,0,1-.053-.053V43.878L9.574,40.3l.692.374Z" transform="translate(-2.384 -18.779)" fill="#aad7e3"/>
|
|
7
|
-
<path id="Tracé_3322" data-name="Tracé 3322" d="M37.6,40.968v7.8a.052.052,0,0,1-.053.053H13.1L27.215,35.2Z" transform="translate(-6.123 -16.403)" fill="#84c4d5"/>
|
|
8
|
-
<path id="Tracé_3323" data-name="Tracé 3323" d="M33.835,18.6H5.179c-.053,0,0,0,0,.053V32.112l4.048-3.2a.636.636,0,0,1,.746-.053l5.966,3.311,6.5-6.249a.792.792,0,0,1,.479-.214.756.756,0,0,1,.32.107l10.653,5.928L33.835,18.6ZM13.7,27.893a3.208,3.208,0,1,1,0-6.409,3.28,3.28,0,0,1,3.356,3.2A3.315,3.315,0,0,1,13.7,27.893Z" transform="translate(-2.41 -8.669)" fill="#daf1f7"/>
|
|
9
|
-
<path id="Tracé_3324" data-name="Tracé 3324" d="M21.448,28.223A2.027,2.027,0,1,1,19.424,26.3,1.971,1.971,0,0,1,21.448,28.223Z" transform="translate(-8.132 -12.256)" fill="#9ed0dd"/>
|
|
10
|
-
</g>
|
|
11
|
-
</svg>
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { animate, state, style, transition, trigger } from '@angular/animations';
|
|
2
|
-
export const easeInOut = // the fade-in/fade-out animation.
|
|
3
|
-
trigger('easeInOut', [
|
|
4
|
-
// the "in" style determines the "resting" state of the element when it is visible.
|
|
5
|
-
state('in', style({ opacity: 1 })),
|
|
6
|
-
// fade in when created. this could also be written as transition('void => *')
|
|
7
|
-
transition(':enter', [
|
|
8
|
-
style({ opacity: 0 }),
|
|
9
|
-
animate('0.5s ease-in-out')
|
|
10
|
-
]),
|
|
11
|
-
]);
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWFzZS1pbi1vdXQuYW5pbWF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvd3otaW1nLW1hbmFnZXIvc3JjL2xpYi9hbmltYXRpb25zL2Vhc2VJbk91dC9lYXNlLWluLW91dC5hbmltYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVqRixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsa0NBQWtDO0NBQzNELE9BQU8sQ0FBQyxXQUFXLEVBQUU7SUFFbkIsbUZBQW1GO0lBQ25GLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUM7SUFFaEMsOEVBQThFO0lBQzlFLFVBQVUsQ0FBQyxRQUFRLEVBQUU7UUFDbkIsS0FBSyxDQUFDLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDO1FBQ25CLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBRTtLQUM3QixDQUFDO0NBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYW5pbWF0ZSwgc3RhdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCBlYXNlSW5PdXQgPSAvLyB0aGUgZmFkZS1pbi9mYWRlLW91dCBhbmltYXRpb24uXG50cmlnZ2VyKCdlYXNlSW5PdXQnLCBbXG5cbiAgLy8gdGhlIFwiaW5cIiBzdHlsZSBkZXRlcm1pbmVzIHRoZSBcInJlc3RpbmdcIiBzdGF0ZSBvZiB0aGUgZWxlbWVudCB3aGVuIGl0IGlzIHZpc2libGUuXG4gIHN0YXRlKCdpbicsIHN0eWxlKHtvcGFjaXR5OiAxfSkpLFxuXG4gIC8vIGZhZGUgaW4gd2hlbiBjcmVhdGVkLiB0aGlzIGNvdWxkIGFsc28gYmUgd3JpdHRlbiBhcyB0cmFuc2l0aW9uKCd2b2lkID0+IConKVxuICB0cmFuc2l0aW9uKCc6ZW50ZXInLCBbXG4gICAgc3R5bGUoe29wYWNpdHk6IDB9KSxcbiAgICBhbmltYXRlKCcwLjVzIGVhc2UtaW4tb3V0JyApXG4gIF0pLFxuXSk7XG4iXX0=
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { animate, style, transition, trigger } from '@angular/animations';
|
|
2
|
-
export const insertRemove = // the fade-in/fade-out animation.
|
|
3
|
-
trigger('insertRemoveAnnim', [
|
|
4
|
-
transition(':enter', [
|
|
5
|
-
style({ opacity: 0 }),
|
|
6
|
-
animate('0.5s ease-in-out', style({ opacity: 1 })),
|
|
7
|
-
])
|
|
8
|
-
]);
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zZXJ0LXJlbW92ZS5hbmltYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93ei1pbWctbWFuYWdlci9zcmMvbGliL2FuaW1hdGlvbnMvaW5zZXJ0UmVtb3ZlL2luc2VydC1yZW1vdmUuYW5pbWF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRSxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsa0NBQWtDO0NBQzlELE9BQU8sQ0FBQyxtQkFBbUIsRUFBRTtJQUN2QixVQUFVLENBQUMsUUFBUSxFQUFFO1FBQ25CLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNyQixPQUFPLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDbkQsQ0FBQztDQUNQLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRSZW1vdmUgPSAvLyB0aGUgZmFkZS1pbi9mYWRlLW91dCBhbmltYXRpb24uXG50cmlnZ2VyKCdpbnNlcnRSZW1vdmVBbm5pbScsIFtcbiAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAwIH0pLFxuICAgICAgICBhbmltYXRlKCcwLjVzIGVhc2UtaW4tb3V0Jywgc3R5bGUoeyBvcGFjaXR5OiAxIH0pKSxcbiAgICAgIF0pXG5dKTtcbiJdfQ==
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { stagger } from '@angular/animations';
|
|
2
|
-
import { query } from '@angular/animations';
|
|
3
|
-
import { animate, style, transition, trigger } from '@angular/animations';
|
|
4
|
-
export const listAnnimation = // the fade-in/fade-out animation.
|
|
5
|
-
trigger('listAnimation', [
|
|
6
|
-
transition(':enter, * => 0, * => -1', []),
|
|
7
|
-
transition(':increment', [
|
|
8
|
-
query(':enter', [
|
|
9
|
-
style({ opacity: 0, transform: 'translateY(100px)' }),
|
|
10
|
-
stagger(50, [
|
|
11
|
-
animate('500ms cubic-bezier(0.35, 0, 0.25, 1)', style({ opacity: 1, transform: 'none' })),
|
|
12
|
-
]),
|
|
13
|
-
], { optional: true })
|
|
14
|
-
]),
|
|
15
|
-
]);
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5hbmltYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy93ei1pbWctbWFuYWdlci9zcmMvbGliL2FuaW1hdGlvbnMvbGlzdEFubmltYXRpb24vbGlzdC5hbmltYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM1QyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFMUUsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLGtDQUFrQztDQUNoRSxPQUFPLENBQUMsZUFBZSxFQUFFO0lBQ3ZCLFVBQVUsQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLENBQUM7SUFDekMsVUFBVSxDQUFDLFlBQVksRUFBRTtRQUN2QixLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ2QsS0FBSyxDQUFDLEVBQUMsT0FBTyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUMsQ0FBQztZQUNuRCxPQUFPLENBQUMsRUFBRSxFQUFFO2dCQUNWLE9BQU8sQ0FBQyxzQ0FBc0MsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO2FBQzFGLENBQUM7U0FDSCxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO0tBQ3ZCLENBQUM7Q0FDSCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzdGFnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBxdWVyeSB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgYW5pbWF0ZSwgc3R5bGUsIHRyYW5zaXRpb24sIHRyaWdnZXIgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcblxuZXhwb3J0IGNvbnN0IGxpc3RBbm5pbWF0aW9uID0gLy8gdGhlIGZhZGUtaW4vZmFkZS1vdXQgYW5pbWF0aW9uLlxudHJpZ2dlcignbGlzdEFuaW1hdGlvbicsIFtcbiAgdHJhbnNpdGlvbignOmVudGVyLCAqID0+IDAsICogPT4gLTEnLCBbXSksXG4gIHRyYW5zaXRpb24oJzppbmNyZW1lbnQnLCBbXG4gICAgcXVlcnkoJzplbnRlcicsIFtcbiAgICAgIHN0eWxlKHtvcGFjaXR5OiAwLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDEwMHB4KSd9KSxcbiAgICAgIHN0YWdnZXIoNTAsIFtcbiAgICAgICAgYW5pbWF0ZSgnNTAwbXMgY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpJywgc3R5bGUoeyBvcGFjaXR5OiAxLCB0cmFuc2Zvcm06ICdub25lJyB9KSksXG4gICAgICBdKSxcbiAgICBdLCB7IG9wdGlvbmFsOiB0cnVlIH0pXG4gIF0pLFxuXSk7XG4iXX0=
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import { Component, Output, EventEmitter, Input } from '@angular/core';
|
|
2
|
-
import { CanvaService } from '../../services/canva.service';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../../services/canva.service";
|
|
5
|
-
import * as i2 from "@angular/common";
|
|
6
|
-
import * as i3 from "ngx-scrollbar";
|
|
7
|
-
import * as i4 from "../../directives/loading.directive";
|
|
8
|
-
import * as i5 from "../../directives/auto-hide.directive";
|
|
9
|
-
import * as i6 from "@ngx-translate/core";
|
|
10
|
-
export class CanvaBtnComponent {
|
|
11
|
-
canvaService;
|
|
12
|
-
stateDisplayed;
|
|
13
|
-
showImgUploaded = new EventEmitter();
|
|
14
|
-
canvaApi;
|
|
15
|
-
canvaLogoRouteAssets;
|
|
16
|
-
imgLoading = false;
|
|
17
|
-
availableFormat = {
|
|
18
|
-
'ImgManager.CanvaBtn.smallSquare': {
|
|
19
|
-
'width': 500,
|
|
20
|
-
'height': 500
|
|
21
|
-
},
|
|
22
|
-
'ImgManager.CanvaBtn.mediumSquare': {
|
|
23
|
-
'width': 1000,
|
|
24
|
-
'height': 1000
|
|
25
|
-
},
|
|
26
|
-
'ImgManager.CanvaBtn.bigSquare': {
|
|
27
|
-
'width': 2500,
|
|
28
|
-
'height': 2500
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
openDropDownMenu = false;
|
|
32
|
-
expectedHeight;
|
|
33
|
-
expectedWidth;
|
|
34
|
-
subs = [];
|
|
35
|
-
constructor(canvaService) {
|
|
36
|
-
this.canvaService = canvaService;
|
|
37
|
-
}
|
|
38
|
-
ngOnInit() {
|
|
39
|
-
this.canvaLogoRouteAssets = this.canvaService.getCanvaLogo();
|
|
40
|
-
this.listenCanvaExpectedSize();
|
|
41
|
-
}
|
|
42
|
-
listenCanvaExpectedSize() {
|
|
43
|
-
// Subcribe to askImg from wizi-block
|
|
44
|
-
const subExpectedImgSizesChange = this.canvaService.bindEventExepectedImgSizeChange().subscribe((mediaDTO) => {
|
|
45
|
-
if (mediaDTO) {
|
|
46
|
-
this.expectedWidth = parseInt(mediaDTO.image_width, 10);
|
|
47
|
-
this.expectedHeight = parseInt(mediaDTO.image_height, 10);
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
this.expectedWidth = undefined;
|
|
51
|
-
this.expectedHeight = undefined;
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
this.subs.push(subExpectedImgSizesChange);
|
|
55
|
-
}
|
|
56
|
-
onOpenCanva(width, height) {
|
|
57
|
-
this.canvaService.openCanva(width, height);
|
|
58
|
-
}
|
|
59
|
-
ngOnDestroy() {
|
|
60
|
-
this.subs.forEach(sub => sub.unsubscribe());
|
|
61
|
-
}
|
|
62
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: CanvaBtnComponent, deps: [{ token: i1.CanvaService }], target: i0.ɵɵFactoryTarget.Component });
|
|
63
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.5", type: CanvaBtnComponent, selector: "canva-btn", inputs: { stateDisplayed: "stateDisplayed" }, outputs: { showImgUploaded: "showImgUploaded" }, ngImport: i0, template: "<div class=\"canva dropdown is-right is-hoverable\"\r\n wzAutoHide (clickOutside)=\"openDropDownMenu = false;\"\r\n [ngClass]=\"{'is-up': stateDisplayed === 'small', 'noTooltip': stateDisplayed !== 'small'}\"\r\n >\r\n <div class=\"dropdown-trigger\">\r\n <div\r\n class=\"button canva-btn\"\r\n aria-controls=\"dropdown-menuCanva\"\r\n (click)=\"openDropDownMenu = true;\"\r\n >\r\n <span>{{'ImgManager.CanvaBtn.createImg' | translate}}</span>\r\n <img [src]=\"canvaLogoRouteAssets\" class=\"canva-btn__logo\">\r\n\r\n <span btnLoadingAnim class=\"btnLoadingAnnimation\" *ngIf=\"imgLoading\"></span>\r\n </div>\r\n </div>\r\n <div\r\n class=\"dropdown-menu dropDownShadow\"\r\n [ngClass]=\"{'displayDropDownMenu': openDropDownMenu }\"\r\n id=\"dropdown-menuCanva\"\r\n role=\"menu\">\r\n <ng-scrollbar\r\n class=\"smallScroll\"\r\n >\r\n <div class=\"dropdown-content\">\r\n <div class=\"dropdownTitle\">\r\n <p>{{'ImgManager.CanvaBtn.createImg.title' | translate}}</p>\r\n </div>\r\n\r\n <div class=\"infoItem\">\r\n <p>{{'ImgManager.CanvaBtn.info' | translate}}</p>\r\n </div>\r\n\r\n <ng-container >\r\n <div\r\n *ngIf=\"expectedWidth && expectedHeight\"\r\n class=\"dropdown-item-wrapper\"\r\n >\r\n <div class=\"dropdown-item expectedSizes\" (click)=\"onOpenCanva(expectedWidth, expectedHeight)\">\r\n <p>{{'ImgManager.CanvaBtn.recommanded' | translate}}</p><p>{{expectedWidth}}*{{expectedHeight}}</p>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div\r\n *ngFor=\"let format of availableFormat| keyvalue\"\r\n class=\"dropdown-item-wrapper\">\r\n <div\r\n (click)=\"onOpenCanva(format.value.width, format.value.height)\"\r\n class=\"dropdown-item\">\r\n <p>{{format.key | translate}}</p><p>{{format.value.width}}*{{format.value.height}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-scrollbar>\r\n </div>\r\n</div>\r\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: i3.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: "directive", type: i4.LoadingDirective, selector: "[btnLoadingAnim]" }, { kind: "directive", type: i5.AutoHideDirective, selector: "[wzAutoHide]", inputs: ["triggerElement", "forceOn"], outputs: ["clickOutside"] }, { kind: "pipe", type: i2.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] });
|
|
64
|
-
}
|
|
65
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: CanvaBtnComponent, decorators: [{
|
|
66
|
-
type: Component,
|
|
67
|
-
args: [{ selector: 'canva-btn', template: "<div class=\"canva dropdown is-right is-hoverable\"\r\n wzAutoHide (clickOutside)=\"openDropDownMenu = false;\"\r\n [ngClass]=\"{'is-up': stateDisplayed === 'small', 'noTooltip': stateDisplayed !== 'small'}\"\r\n >\r\n <div class=\"dropdown-trigger\">\r\n <div\r\n class=\"button canva-btn\"\r\n aria-controls=\"dropdown-menuCanva\"\r\n (click)=\"openDropDownMenu = true;\"\r\n >\r\n <span>{{'ImgManager.CanvaBtn.createImg' | translate}}</span>\r\n <img [src]=\"canvaLogoRouteAssets\" class=\"canva-btn__logo\">\r\n\r\n <span btnLoadingAnim class=\"btnLoadingAnnimation\" *ngIf=\"imgLoading\"></span>\r\n </div>\r\n </div>\r\n <div\r\n class=\"dropdown-menu dropDownShadow\"\r\n [ngClass]=\"{'displayDropDownMenu': openDropDownMenu }\"\r\n id=\"dropdown-menuCanva\"\r\n role=\"menu\">\r\n <ng-scrollbar\r\n class=\"smallScroll\"\r\n >\r\n <div class=\"dropdown-content\">\r\n <div class=\"dropdownTitle\">\r\n <p>{{'ImgManager.CanvaBtn.createImg.title' | translate}}</p>\r\n </div>\r\n\r\n <div class=\"infoItem\">\r\n <p>{{'ImgManager.CanvaBtn.info' | translate}}</p>\r\n </div>\r\n\r\n <ng-container >\r\n <div\r\n *ngIf=\"expectedWidth && expectedHeight\"\r\n class=\"dropdown-item-wrapper\"\r\n >\r\n <div class=\"dropdown-item expectedSizes\" (click)=\"onOpenCanva(expectedWidth, expectedHeight)\">\r\n <p>{{'ImgManager.CanvaBtn.recommanded' | translate}}</p><p>{{expectedWidth}}*{{expectedHeight}}</p>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div\r\n *ngFor=\"let format of availableFormat| keyvalue\"\r\n class=\"dropdown-item-wrapper\">\r\n <div\r\n (click)=\"onOpenCanva(format.value.width, format.value.height)\"\r\n class=\"dropdown-item\">\r\n <p>{{format.key | translate}}</p><p>{{format.value.width}}*{{format.value.height}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-scrollbar>\r\n </div>\r\n</div>\r\n" }]
|
|
68
|
-
}], ctorParameters: () => [{ type: i1.CanvaService }], propDecorators: { stateDisplayed: [{
|
|
69
|
-
type: Input
|
|
70
|
-
}], showImgUploaded: [{
|
|
71
|
-
type: Output
|
|
72
|
-
}] } });
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmEtYnRuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3d6LWltZy1tYW5hZ2VyL3NyYy9saWIvY29tcG9uZW50cy9jYW52YS1idG4vY2FudmEtYnRuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3d6LWltZy1tYW5hZ2VyL3NyYy9saWIvY29tcG9uZW50cy9jYW52YS1idG4vY2FudmEtYnRuLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDOzs7Ozs7OztBQVU1RCxNQUFNLE9BQU8saUJBQWlCO0lBZ0NsQjtJQTlCRCxjQUFjLENBQWlCO0lBRTlCLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBRS9DLFFBQVEsQ0FBaUI7SUFDekIsb0JBQW9CLENBQVM7SUFDN0IsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUVuQixlQUFlLEdBQUc7UUFDaEIsaUNBQWlDLEVBQUc7WUFDbEMsT0FBTyxFQUFHLEdBQUc7WUFDYixRQUFRLEVBQUcsR0FBRztTQUNmO1FBQ0Qsa0NBQWtDLEVBQUc7WUFDbkMsT0FBTyxFQUFHLElBQUk7WUFDZCxRQUFRLEVBQUcsSUFBSTtTQUNoQjtRQUNELCtCQUErQixFQUFHO1lBQ2hDLE9BQU8sRUFBRyxJQUFJO1lBQ2QsUUFBUSxFQUFHLElBQUk7U0FDaEI7S0FDRixDQUFBO0lBRUQsZ0JBQWdCLEdBQVksS0FBSyxDQUFDO0lBRWxDLGNBQWMsQ0FBUztJQUN2QixhQUFhLENBQVM7SUFDdEIsSUFBSSxHQUFtQixFQUFFLENBQUM7SUFFMUIsWUFDVSxZQUEwQjtRQUExQixpQkFBWSxHQUFaLFlBQVksQ0FBYztJQUM5QixDQUFDO0lBRVAsUUFBUTtRQUNOLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzdELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCx1QkFBdUI7UUFDckIscUNBQXFDO1FBQ3JDLE1BQU0seUJBQXlCLEdBQzdCLElBQUksQ0FBQyxZQUFZLENBQUMsK0JBQStCLEVBQUUsQ0FBQyxTQUFTLENBQUUsQ0FBQyxRQUEyQixFQUFFLEVBQUU7WUFDN0YsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUN4RCxJQUFJLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzVELENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7WUFDbEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWEsRUFBRSxNQUFjO1FBQ3ZDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDOUMsQ0FBQzt1R0E3RFUsaUJBQWlCOzJGQUFqQixpQkFBaUIsZ0pDWDlCLG83RUF5REE7OzJGRDlDYSxpQkFBaUI7a0JBSjdCLFNBQVM7K0JBQ0UsV0FBVztpRkFLWixjQUFjO3NCQUF0QixLQUFLO2dCQUVJLGVBQWU7c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgT25Jbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDYW52YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jYW52YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2FudmFCdXR0b25BcGkgfSBmcm9tICcuLi8uLi9kdG8vY2FudmEuZHRvJztcclxuaW1wb3J0IHsgV2l6aUJsb2NrTWVkaWFEdG8gfSBmcm9tICcuLi8uLi9kdG8vd2l6aS1ibG9jay1tZWRpYS5kdG8nO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgc3RhdGVEaXNwbGF5ZWQgfSBmcm9tICcuLi8uLi9kdG8vZXhwb3J0LWR0b3MuYXBpJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2FudmEtYnRuJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY2FudmEtYnRuLmNvbXBvbmVudC5odG1sJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FudmFCdG5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBJbnB1dCgpIHN0YXRlRGlzcGxheWVkOiBzdGF0ZURpc3BsYXllZDtcclxuXHJcbiAgQE91dHB1dCgpIHNob3dJbWdVcGxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY2FudmFBcGk6IENhbnZhQnV0dG9uQXBpO1xyXG4gIGNhbnZhTG9nb1JvdXRlQXNzZXRzOiBzdHJpbmc7XHJcbiAgaW1nTG9hZGluZyA9IGZhbHNlO1xyXG5cclxuICBhdmFpbGFibGVGb3JtYXQgPSB7XHJcbiAgICAnSW1nTWFuYWdlci5DYW52YUJ0bi5zbWFsbFNxdWFyZScgOiB7XHJcbiAgICAgICd3aWR0aCcgOiA1MDAsXHJcbiAgICAgICdoZWlnaHQnIDogNTAwXHJcbiAgICB9LFxyXG4gICAgJ0ltZ01hbmFnZXIuQ2FudmFCdG4ubWVkaXVtU3F1YXJlJyA6IHtcclxuICAgICAgJ3dpZHRoJyA6IDEwMDAsXHJcbiAgICAgICdoZWlnaHQnIDogMTAwMFxyXG4gICAgfSxcclxuICAgICdJbWdNYW5hZ2VyLkNhbnZhQnRuLmJpZ1NxdWFyZScgOiB7XHJcbiAgICAgICd3aWR0aCcgOiAyNTAwLFxyXG4gICAgICAnaGVpZ2h0JyA6IDI1MDBcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9wZW5Ecm9wRG93bk1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgZXhwZWN0ZWRIZWlnaHQ6IG51bWJlcjtcclxuICBleHBlY3RlZFdpZHRoOiBudW1iZXI7XHJcbiAgc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNhbnZhU2VydmljZTogQ2FudmFTZXJ2aWNlXHJcbiAgICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2FudmFMb2dvUm91dGVBc3NldHMgPSB0aGlzLmNhbnZhU2VydmljZS5nZXRDYW52YUxvZ28oKTtcclxuICAgIHRoaXMubGlzdGVuQ2FudmFFeHBlY3RlZFNpemUoKTtcclxuICB9XHJcblxyXG4gIGxpc3RlbkNhbnZhRXhwZWN0ZWRTaXplKCkge1xyXG4gICAgLy8gU3ViY3JpYmUgdG8gYXNrSW1nIGZyb20gd2l6aS1ibG9ja1xyXG4gICAgY29uc3Qgc3ViRXhwZWN0ZWRJbWdTaXplc0NoYW5nZSA9XHJcbiAgICAgIHRoaXMuY2FudmFTZXJ2aWNlLmJpbmRFdmVudEV4ZXBlY3RlZEltZ1NpemVDaGFuZ2UoKS5zdWJzY3JpYmUoIChtZWRpYURUTzogV2l6aUJsb2NrTWVkaWFEdG8pID0+IHtcclxuICAgICAgICBpZiAobWVkaWFEVE8pIHtcclxuICAgICAgICAgIHRoaXMuZXhwZWN0ZWRXaWR0aCA9IHBhcnNlSW50KG1lZGlhRFRPLmltYWdlX3dpZHRoLCAxMCk7XHJcbiAgICAgICAgICB0aGlzLmV4cGVjdGVkSGVpZ2h0ID0gcGFyc2VJbnQobWVkaWFEVE8uaW1hZ2VfaGVpZ2h0LCAxMCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZXhwZWN0ZWRXaWR0aCA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgIHRoaXMuZXhwZWN0ZWRIZWlnaHQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIHRoaXMuc3Vicy5wdXNoKHN1YkV4cGVjdGVkSW1nU2l6ZXNDaGFuZ2UpO1xyXG4gIH1cclxuXHJcbiAgb25PcGVuQ2FudmEod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpIHtcclxuICAgIHRoaXMuY2FudmFTZXJ2aWNlLm9wZW5DYW52YSh3aWR0aCwgaGVpZ2h0KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5zdWJzLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImNhbnZhIGRyb3Bkb3duIGlzLXJpZ2h0IGlzLWhvdmVyYWJsZVwiXHJcbiAgICAgd3pBdXRvSGlkZSAoY2xpY2tPdXRzaWRlKT1cIm9wZW5Ecm9wRG93bk1lbnUgPSBmYWxzZTtcIlxyXG4gICAgW25nQ2xhc3NdPVwieydpcy11cCc6IHN0YXRlRGlzcGxheWVkID09PSAnc21hbGwnLCAnbm9Ub29sdGlwJzogc3RhdGVEaXNwbGF5ZWQgIT09ICdzbWFsbCd9XCJcclxuICAgID5cclxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi10cmlnZ2VyXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJidXR0b24gY2FudmEtYnRuXCJcclxuICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJkcm9wZG93bi1tZW51Q2FudmFcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5Ecm9wRG93bk1lbnUgPSB0cnVlO1wiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7J0ltZ01hbmFnZXIuQ2FudmFCdG4uY3JlYXRlSW1nJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8aW1nIFtzcmNdPVwiY2FudmFMb2dvUm91dGVBc3NldHNcIiBjbGFzcz1cImNhbnZhLWJ0bl9fbG9nb1wiPlxyXG5cclxuICAgICAgICAgICAgPHNwYW4gYnRuTG9hZGluZ0FuaW0gY2xhc3M9XCJidG5Mb2FkaW5nQW5uaW1hdGlvblwiICpuZ0lmPVwiaW1nTG9hZGluZ1wiPjwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcERvd25TaGFkb3dcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7J2Rpc3BsYXlEcm9wRG93bk1lbnUnOiBvcGVuRHJvcERvd25NZW51IH1cIlxyXG4gICAgICBpZD1cImRyb3Bkb3duLW1lbnVDYW52YVwiXHJcbiAgICAgIHJvbGU9XCJtZW51XCI+XHJcbiAgICAgICAgPG5nLXNjcm9sbGJhclxyXG4gICAgICAgICAgICBjbGFzcz1cInNtYWxsU2Nyb2xsXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duVGl0bGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cD57eydJbWdNYW5hZ2VyLkNhbnZhQnRuLmNyZWF0ZUltZy50aXRsZScgfCB0cmFuc2xhdGV9fTwvcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvSXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPnt7J0ltZ01hbmFnZXIuQ2FudmFCdG4uaW5mbycgfCB0cmFuc2xhdGV9fTwvcD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZXhwZWN0ZWRXaWR0aCAmJiBleHBlY3RlZEhlaWdodFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW0td3JhcHBlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGV4cGVjdGVkU2l6ZXNcIiAoY2xpY2spPVwib25PcGVuQ2FudmEoZXhwZWN0ZWRXaWR0aCwgZXhwZWN0ZWRIZWlnaHQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD57eydJbWdNYW5hZ2VyLkNhbnZhQnRuLnJlY29tbWFuZGVkJyB8IHRyYW5zbGF0ZX19PC9wPjxwPnt7ZXhwZWN0ZWRXaWR0aH19Knt7ZXhwZWN0ZWRIZWlnaHR9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmb3JtYXQgb2YgYXZhaWxhYmxlRm9ybWF0fCBrZXl2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbS13cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uT3BlbkNhbnZhKGZvcm1hdC52YWx1ZS53aWR0aCwgZm9ybWF0LnZhbHVlLmhlaWdodClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwPnt7Zm9ybWF0LmtleSB8IHRyYW5zbGF0ZX19PC9wPjxwPnt7Zm9ybWF0LnZhbHVlLndpZHRofX0qe3tmb3JtYXQudmFsdWUuaGVpZ2h0fX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1zY3JvbGxiYXI+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import { HttpClient } from "@angular/common/http";
|
|
2
|
-
import { Directive, Input, Output, inject } from "@angular/core";
|
|
3
|
-
import { EventEmitter } from '@angular/core';
|
|
4
|
-
import { TranslateService } from "@ngx-translate/core";
|
|
5
|
-
import { AlertService } from "../../services/alert.service";
|
|
6
|
-
import { ImgCDNService } from "../../services/config/img-cdn.service";
|
|
7
|
-
import { ImgEventService } from "../../services/img-event.service";
|
|
8
|
-
import { ImgManagerService } from "../../services/img-manager.service";
|
|
9
|
-
import { ImgSelectionService } from "../../services/img-selection.service";
|
|
10
|
-
import { ApiService } from "../../services/api.service";
|
|
11
|
-
import { ImageNotFoundService } from "../../services/image-not-found.service";
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "../../services/img-manager.service";
|
|
14
|
-
import * as i2 from "../../services/img-selection.service";
|
|
15
|
-
import * as i3 from "@angular/common/http";
|
|
16
|
-
import * as i4 from "../../services/config/img-cdn.service";
|
|
17
|
-
import * as i5 from "../../services/img-event.service";
|
|
18
|
-
import * as i6 from "../../services/alert.service";
|
|
19
|
-
import * as i7 from "@ngx-translate/core";
|
|
20
|
-
import * as i8 from "../../services/api.service";
|
|
21
|
-
export class ImagesActionHandler {
|
|
22
|
-
imgManager;
|
|
23
|
-
imgSelectionService;
|
|
24
|
-
http;
|
|
25
|
-
imgCDNService;
|
|
26
|
-
imgEventCardService;
|
|
27
|
-
alertService;
|
|
28
|
-
translateService;
|
|
29
|
-
apiService;
|
|
30
|
-
picturesList = [];
|
|
31
|
-
picturesListChange = new EventEmitter();
|
|
32
|
-
tableFilters = {
|
|
33
|
-
sort: undefined,
|
|
34
|
-
order: undefined,
|
|
35
|
-
searchValue: '',
|
|
36
|
-
totalItems: 0,
|
|
37
|
-
itemsPerPage: 30,
|
|
38
|
-
currentPage: 1
|
|
39
|
-
};
|
|
40
|
-
displayPexelsResults = false;
|
|
41
|
-
disable = false;
|
|
42
|
-
disableChange = new EventEmitter();
|
|
43
|
-
filtersChange = new EventEmitter();
|
|
44
|
-
pictureNameChange = new EventEmitter();
|
|
45
|
-
isLoading = false;
|
|
46
|
-
stateDisplayed;
|
|
47
|
-
previousName; // Use to save the previous picture name, when a user change his name
|
|
48
|
-
fakeImgRoute;
|
|
49
|
-
getDataAPISub;
|
|
50
|
-
errorRemoveImg = 'ImgManager.ImgList.errorRemoveImg';
|
|
51
|
-
errorAlreadyUsedImg = 'ImgManager.ImgList.errorAlreadyUsed';
|
|
52
|
-
imageNotFoundService = inject(ImageNotFoundService);
|
|
53
|
-
constructor(imgManager, imgSelectionService, http, imgCDNService, imgEventCardService, alertService, translateService, apiService) {
|
|
54
|
-
this.imgManager = imgManager;
|
|
55
|
-
this.imgSelectionService = imgSelectionService;
|
|
56
|
-
this.http = http;
|
|
57
|
-
this.imgCDNService = imgCDNService;
|
|
58
|
-
this.imgEventCardService = imgEventCardService;
|
|
59
|
-
this.alertService = alertService;
|
|
60
|
-
this.translateService = translateService;
|
|
61
|
-
this.apiService = apiService;
|
|
62
|
-
}
|
|
63
|
-
ngOnInit() {
|
|
64
|
-
this.fakeImgRoute = this.apiService.CONFIG.assets_route + 'img/fake.png';
|
|
65
|
-
}
|
|
66
|
-
/** Event emit when the header checkbox is checked */
|
|
67
|
-
onToggleAllCheckBoxRow(event) {
|
|
68
|
-
this.picturesList.forEach(data => {
|
|
69
|
-
data.delSelected = event;
|
|
70
|
-
});
|
|
71
|
-
this._pictureListeChange();
|
|
72
|
-
}
|
|
73
|
-
onToggleDelSelection(index) {
|
|
74
|
-
if (this.disable) {
|
|
75
|
-
return;
|
|
76
|
-
}
|
|
77
|
-
this.picturesList[index].delSelected = !this.picturesList[index].delSelected;
|
|
78
|
-
this._pictureListeChange();
|
|
79
|
-
}
|
|
80
|
-
/** Event emit each time filters change */
|
|
81
|
-
onFiltersChange() {
|
|
82
|
-
this.filtersChange.emit();
|
|
83
|
-
}
|
|
84
|
-
onEdit(picture) {
|
|
85
|
-
this.imgEventCardService.emitImgToEdit(picture);
|
|
86
|
-
}
|
|
87
|
-
onToggleSelectImg(index) {
|
|
88
|
-
if (this.disable || this.stateDisplayed === 'window') {
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
if (!this.picturesList[index].selected) {
|
|
92
|
-
this.imgSelectionService.addImgSelected(this.picturesList[index]);
|
|
93
|
-
this.picturesList[index].selected = true;
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
this.imgSelectionService.removeImgSelectedById(this.picturesList[index].id_file);
|
|
97
|
-
this.picturesList[index].selected = false;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
onRemoveImg(picture) {
|
|
101
|
-
picture.deleted = true;
|
|
102
|
-
this.imgManager.removeImg(picture.id_file).subscribe(data => {
|
|
103
|
-
this.imgEventCardService.imgRemoved$.next(picture.id_file);
|
|
104
|
-
this.imgSelectionService.removeImgSelectedById(picture.id_file);
|
|
105
|
-
}, error => {
|
|
106
|
-
const msg = error.status === 409 ? this.errorAlreadyUsedImg : this.errorRemoveImg;
|
|
107
|
-
picture.deleted = false;
|
|
108
|
-
this.alertService.openAlert(msg);
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
onPictureNotLoading(event) {
|
|
112
|
-
this.imageNotFoundService.imageNotFound(event.target.src);
|
|
113
|
-
event.target.src = this.fakeImgRoute;
|
|
114
|
-
}
|
|
115
|
-
onDownloadImg(display_name, file_name) {
|
|
116
|
-
this.http.get(this.getRAWImgRoute(file_name), { responseType: 'blob' }).subscribe(val => {
|
|
117
|
-
let url = URL.createObjectURL(val);
|
|
118
|
-
this.downloadUrl(url, display_name);
|
|
119
|
-
URL.revokeObjectURL(url);
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
onNameChange(id_file) {
|
|
123
|
-
this.pictureNameChange.emit({ id: id_file, previousName: this.previousName });
|
|
124
|
-
}
|
|
125
|
-
getRAWImgRoute(file_name) {
|
|
126
|
-
return this.imgCDNService.getUrlImg('raw') + file_name;
|
|
127
|
-
}
|
|
128
|
-
_pictureListeChange() {
|
|
129
|
-
this.picturesListChange.emit();
|
|
130
|
-
}
|
|
131
|
-
downloadUrl(url, fileName) {
|
|
132
|
-
const a = document.createElement('a');
|
|
133
|
-
a.href = url;
|
|
134
|
-
a.download = fileName;
|
|
135
|
-
a.click();
|
|
136
|
-
}
|
|
137
|
-
ngDestroy() {
|
|
138
|
-
if (this.getDataAPISub) {
|
|
139
|
-
this.getDataAPISub.unsubscribe();
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ImagesActionHandler, deps: [{ token: i1.ImgManagerService }, { token: i2.ImgSelectionService }, { token: i3.HttpClient }, { token: i4.ImgCDNService }, { token: i5.ImgEventService }, { token: i6.AlertService }, { token: i7.TranslateService }, { token: i8.ApiService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
143
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.5", type: ImagesActionHandler, inputs: { picturesList: "picturesList", tableFilters: "tableFilters", displayPexelsResults: "displayPexelsResults", disable: "disable", isLoading: "isLoading", stateDisplayed: "stateDisplayed" }, outputs: { picturesListChange: "picturesListChange", disableChange: "disableChange", filtersChange: "filtersChange", pictureNameChange: "pictureNameChange" }, ngImport: i0 });
|
|
144
|
-
}
|
|
145
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.5", ngImport: i0, type: ImagesActionHandler, decorators: [{
|
|
146
|
-
type: Directive
|
|
147
|
-
}], ctorParameters: () => [{ type: i1.ImgManagerService }, { type: i2.ImgSelectionService }, { type: i3.HttpClient }, { type: i4.ImgCDNService }, { type: i5.ImgEventService }, { type: i6.AlertService }, { type: i7.TranslateService }, { type: i8.ApiService }], propDecorators: { picturesList: [{
|
|
148
|
-
type: Input
|
|
149
|
-
}], picturesListChange: [{
|
|
150
|
-
type: Output
|
|
151
|
-
}], tableFilters: [{
|
|
152
|
-
type: Input
|
|
153
|
-
}], displayPexelsResults: [{
|
|
154
|
-
type: Input
|
|
155
|
-
}], disable: [{
|
|
156
|
-
type: Input
|
|
157
|
-
}], disableChange: [{
|
|
158
|
-
type: Output
|
|
159
|
-
}], filtersChange: [{
|
|
160
|
-
type: Output
|
|
161
|
-
}], pictureNameChange: [{
|
|
162
|
-
type: Output
|
|
163
|
-
}], isLoading: [{
|
|
164
|
-
type: Input
|
|
165
|
-
}], stateDisplayed: [{
|
|
166
|
-
type: Input
|
|
167
|
-
}] } });
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2VzLWFjdGlvbnMtaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3d6LWltZy1tYW5hZ2VyL3NyYy9saWIvY29tcG9uZW50cy9pbWFnZXMtdmlldy9pbWFnZXMtYWN0aW9ucy1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFLdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFFM0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7Ozs7O0FBRzlFLE1BQU0sT0FBZ0IsbUJBQW1CO0lBMkN6QjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNGO0lBaERWLFlBQVksR0FBb0IsRUFBRSxDQUFDO0lBRW5DLGtCQUFrQixHQUF1QixJQUFJLFlBQVksRUFBRSxDQUFDO0lBRzVELFlBQVksR0FBaUI7UUFDM0IsSUFBSSxFQUFFLFNBQVM7UUFDZixLQUFLLEVB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VyxFQUFFLENBQUM7UUFDbkMsQ0FBQztJQUNILENBQUM7dUdBbEppQixtQkFBbUI7MkZBQW5CLG1CQUFtQjs7MkZBQW5CLG1CQUFtQjtrQkFEeEMsU0FBUzs4UkFHTixZQUFZO3NCQURYLEtBQUs7Z0JBR04sa0JBQWtCO3NCQURqQixNQUFNO2dCQUlQLFlBQVk7c0JBRFgsS0FBSztnQkFVTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUdOLGFBQWE7c0JBRFosTUFBTTtnQkFJUCxhQUFhO3NCQURaLE1BQU07Z0JBR1AsaUJBQWlCO3NCQURoQixNQUFNO2dCQUdFLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR04sY0FBYztzQkFEYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPdXRwdXQsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgc3RhdGVEaXNwbGF5ZWQgfSBmcm9tIFwiLi4vLi4vZHRvL2V4cG9ydC1kdG9zLmFwaVwiO1xyXG5pbXBvcnQgeyBQaWN0dXJlTmFtZVVwZGF0ZSB9IGZyb20gXCIuLi8uLi9kdG8vcGljdHVyZS1uYW1lLXVwZGF0ZS5kdG9cIjtcclxuaW1wb3J0IHsgSW1nUGljdHVyZURUTyB9IGZyb20gXCIuLi8uLi9kdG8vaW1nLW1hbmFnZXIuZHRvXCI7XHJcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9hbGVydC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEltZ0NETlNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvY29uZmlnL2ltZy1jZG4uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBJbWdFdmVudFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvaW1nLWV2ZW50LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSW1nTWFuYWdlclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvaW1nLW1hbmFnZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBJbWdTZWxlY3Rpb25TZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2ltZy1zZWxlY3Rpb24uc2VydmljZVwiO1xyXG5pbXBvcnQgeyBUYWJsZUZpbHRlcnMgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvdGFibGUvZmlsdGVycy10YWJsZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvYXBpLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgSW1hZ2VOb3RGb3VuZFNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvaW1hZ2Utbm90LWZvdW5kLnNlcnZpY2VcIjtcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSW1hZ2VzQWN0aW9uSGFuZGxlciB7XHJcbiAgICBASW5wdXQoKVxyXG4gICAgcGljdHVyZXNMaXN0OiBJbWdQaWN0dXJlRFRPW10gPSBbXTtcclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcGljdHVyZXNMaXN0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHRhYmxlRmlsdGVyczogVGFibGVGaWx0ZXJzID0ge1xyXG4gICAgICBzb3J0OiB1bmRlZmluZWQsXHJcbiAgICAgIG9yZGVyOiB1bmRlZmluZWQsXHJcbiAgICAgIHNlYXJjaFZhbHVlOiAnJyxcclxuICAgICAgdG90YWxJdGVtczogMCxcclxuICAgICAgaXRlbXNQZXJQYWdlOiAzMCxcclxuICAgICAgY3VycmVudFBhZ2U6IDFcclxuICAgIH07XHJcbiAgICBASW5wdXQoKVxyXG4gICAgZGlzcGxheVBleGVsc1Jlc3VsdHM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgZGlzYWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBkaXNhYmxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgQE91dHB1dCgpXHJcbiAgICBmaWx0ZXJzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwaWN0dXJlTmFtZUNoYW5nZTogRXZlbnRFbWl0dGVyPFBpY3R1cmVOYW1lVXBkYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBASW5wdXQoKSBpc0xvYWRpbmcgPSBmYWxzZTtcclxuXHJcbiAgICBASW5wdXQoKVxyXG4gICAgc3RhdGVEaXNwbGF5ZWQ6IHN0YXRlRGlzcGxheWVkO1xyXG5cclxuICAgIHByZXZpb3VzTmFtZTogc3RyaW5nOyAvLyBVc2UgdG8gc2F2ZSB0aGUgcHJldmlvdXMgcGljdHVyZSBuYW1lLCB3aGVuIGEgdXNlciBjaGFuZ2UgaGlzIG5hbWVcclxuICAgIGZha2VJbWdSb3V0ZTogc3RyaW5nO1xyXG5cclxuICAgIHByaXZhdGUgZ2V0RGF0YUFQSVN1YjogU3Vic2NyaXB0aW9uO1xyXG4gICAgcHJpdmF0ZSBlcnJvclJlbW92ZUltZyA9ICdJbWdNYW5hZ2VyLkltZ0xpc3QuZXJyb3JSZW1vdmVJbWcnO1xyXG4gICAgcHJpdmF0ZSBlcnJvckFscmVhZHlVc2VkSW1nID0gJ0ltZ01hbmFnZXIuSW1nTGlzdC5lcnJvckFscmVhZHlVc2VkJztcclxuXHJcbiAgICBwcml2YXRlIGltYWdlTm90Rm91bmRTZXJ2aWNlID0gaW5qZWN0KEltYWdlTm90Rm91bmRTZXJ2aWNlKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgcHJvdGVjdGVkIGltZ01hbmFnZXI6IEltZ01hbmFnZXJTZXJ2aWNlLFxyXG4gICAgICBwcm90ZWN0ZWQgaW1nU2VsZWN0aW9uU2VydmljZTogSW1nU2VsZWN0aW9uU2VydmljZSxcclxuICAgICAgcHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICAgIHByb3RlY3RlZCBpbWdDRE5TZXJ2aWNlOiBJbWdDRE5TZXJ2aWNlLFxyXG4gICAgICBwcm90ZWN0ZWQgaW1nRXZlbnRDYXJkU2VydmljZTogSW1nRXZlbnRTZXJ2aWNlLFxyXG4gICAgICBwcm90ZWN0ZWQgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXHJcbiAgICAgIHByb3RlY3RlZCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFwaVNlcnZpY2UsXHJcbiAgICApIHtcclxuICAgIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZha2VJbWdSb3V0ZSA9IHRoaXMuYXBpU2VydmljZS5DT05GSUcuYXNzZXRzX3JvdXRlICsgJ2ltZy9mYWtlLnBuZyc7XHJcbiAgfVxyXG5cclxuICAgIC8qKiBFdmVudCBlbWl0IHdoZW4gdGhlIGhlYWRlciBjaGVja2JveCBpcyBjaGVja2VkICovXHJcbiAgICBvblRvZ2dsZUFsbENoZWNrQm94Um93KGV2ZW50KSB7XHJcbiAgICAgIHRoaXMucGljdHVyZXNMaXN0LmZvckVhY2goZGF0YSA9PiB7XHJcbiAgICAgICAgZGF0YS5kZWxTZWxlY3RlZCA9IGV2ZW50O1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5fcGljdHVyZUxpc3RlQ2hhbmdlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Ub2dnbGVEZWxTZWxlY3Rpb24oaW5kZXg6IG51bWJlcikge1xyXG4gICAgICBpZiAodGhpcy5kaXNhYmxlKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucGljdHVyZXNMaXN0W2luZGV4XS5kZWxTZWxlY3RlZCA9ICF0aGlzLnBpY3R1cmVzTGlzdFtpbmRleF0uZGVsU2VsZWN0ZWQ7XHJcbiAgICAgIHRoaXMuX3BpY3R1cmVMaXN0ZUNoYW5nZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBFdmVudCBlbWl0IGVhY2ggdGltZSBmaWx0ZXJzIGNoYW5nZSAqL1xyXG4gICAgb25GaWx0ZXJzQ2hhbmdlKCkge1xyXG4gICAgICB0aGlzLmZpbHRlcnNDaGFuZ2UuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRWRpdChwaWN0dXJlOiBJbWdQaWN0dXJlRFRPKSB7XHJcbiAgICAgIHRoaXMuaW1nRXZlbnRDYXJkU2VydmljZS5lbWl0SW1nVG9FZGl0KHBpY3R1cmUpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uVG9nZ2xlU2VsZWN0SW1nKGluZGV4OiBudW1iZXIpIHtcclxuICAgICAgaWYgKHRoaXMuZGlzYWJsZSB8fCB0aGlzLnN0YXRlRGlzcGxheWVkID09PSAnd2luZG93Jykge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMucGljdHVyZXNMaXN0W2luZGV4XS5zZWxlY3RlZCkge1xyXG4gICAgICAgIHRoaXMuaW1nU2VsZWN0aW9uU2VydmljZS5hZGRJbWdTZWxlY3RlZCh0aGlzLnBpY3R1cmVzTGlzdFtpbmRleF0pO1xyXG4gICAgICAgIHRoaXMucGljdHVyZXNMaXN0W2luZGV4XS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pbWdTZWxlY3Rpb25TZXJ2aWNlLnJlbW92ZUltZ1NlbGVjdGVkQnlJZCh0aGlzLnBpY3R1cmVzTGlzdFtpbmRleF0uaWRfZmlsZSk7XHJcbiAgICAgICAgdGhpcy5waWN0dXJlc0xpc3RbaW5kZXhdLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvblJlbW92ZUltZyhwaWN0dXJlOiBJbWdQaWN0dXJlRFRPKSB7XHJcbiAgICAgIHBpY3R1cmUuZGVsZXRlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuaW1nTWFuYWdlci5yZW1vdmVJbWcocGljdHVyZS5pZF9maWxlKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgZGF0YSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmltZ0V2ZW50Q2FyZFNlcnZpY2UuaW1nUmVtb3ZlZCQubmV4dChwaWN0dXJlLmlkX2ZpbGUpO1xyXG4gICAgICAgICAgdGhpcy5pbWdTZWxlY3Rpb25TZXJ2aWNlLnJlbW92ZUltZ1NlbGVjdGVkQnlJZChwaWN0dXJlLmlkX2ZpbGUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3IgPT4ge1xyXG4gICAgICAgICAgY29uc3QgbXNnID0gZXJyb3Iuc3RhdHVzID09PSA0MDkgPyAgdGhpcy5lcnJvckFscmVhZHlVc2VkSW1nOiB0aGlzLmVycm9yUmVtb3ZlSW1nO1xyXG4gICAgICAgICAgcGljdHVyZS5kZWxldGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5vcGVuQWxlcnQobXNnKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvblBpY3R1cmVOb3RMb2FkaW5nKGV2ZW50KSB7XHJcbiAgICAgIHRoaXMuaW1hZ2VOb3RGb3VuZFNlcnZpY2UuaW1hZ2VOb3RGb3VuZChldmVudC50YXJnZXQuc3JjKTtcclxuICAgICAgZXZlbnQudGFyZ2V0LnNyYyA9IHRoaXMuZmFrZUltZ1JvdXRlO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRG93bmxvYWRJbWcoZGlzcGxheV9uYW1lOiBzdHJpbmcsIGZpbGVfbmFtZTogc3RyaW5nKSB7XHJcbiAgICAgIHRoaXMuaHR0cC5nZXQodGhpcy5nZXRSQVdJbWdSb3V0ZShmaWxlX25hbWUpLCB7IHJlc3BvbnNlVHlwZTogJ2Jsb2InIH0pLnN1YnNjcmliZSh2YWwgPT4ge1xyXG4gICAgICAgIGxldCB1cmwgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHZhbCk7XHJcbiAgICAgICAgdGhpcy5kb3dubG9hZFVybCh1cmwsIGRpc3BsYXlfbmFtZSk7XHJcbiAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTCh1cmwpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbk5hbWVDaGFuZ2UoaWRfZmlsZTogc3RyaW5nKSB7XHJcbiAgICAgIHRoaXMucGljdHVyZU5hbWVDaGFuZ2UuZW1pdCh7aWQ6IGlkX2ZpbGUsIHByZXZpb3VzTmFtZTogdGhpcy5wcmV2aW91c05hbWV9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldFJBV0ltZ1JvdXRlKGZpbGVfbmFtZTogc3RyaW5nKXtcclxuICAgICAgcmV0dXJuIHRoaXMuaW1nQ0ROU2VydmljZS5nZXRVcmxJbWcoJ3JhdycpICsgZmlsZV9uYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3BpY3R1cmVMaXN0ZUNoYW5nZSgpIHtcclxuICAgICAgdGhpcy5waWN0dXJlc0xpc3RDaGFuZ2UuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZG93bmxvYWRVcmwodXJsOiBzdHJpbmcsIGZpbGVOYW1lOiBzdHJpbmcpIHtcclxuICAgICAgY29uc3QgYTogYW55ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgICBhLmhyZWYgPSB1cmw7XHJcbiAgICAgIGEuZG93bmxvYWQgPSBmaWxlTmFtZTtcclxuICAgICAgYS5jbGljaygpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nRGVzdHJveSgpIHtcclxuICAgICAgaWYgKHRoaXMuZ2V0RGF0YUFQSVN1Yikge1xyXG4gICAgICAgIHRoaXMuZ2V0RGF0YUFQSVN1Yi51bnN1YnNjcmliZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19
|