tui-image-editor-angular3 14.0.2
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 +155 -0
- package/esm2020/lib/consts.mjs +170 -0
- package/esm2020/lib/i18n/en.mjs +129 -0
- package/esm2020/lib/i18n/nl.mjs +128 -0
- package/esm2020/lib/i18n/translation.service.mjs +40 -0
- package/esm2020/lib/interfaces/command.mjs +2 -0
- package/esm2020/lib/interfaces/history-item.mjs +343 -0
- package/esm2020/lib/interfaces/image-size.mjs +2 -0
- package/esm2020/lib/interfaces/tools-config.mjs +2 -0
- package/esm2020/lib/menus/buttons/crop/crop.component.mjs +22 -0
- package/esm2020/lib/menus/buttons/delete/delete.component.mjs +40 -0
- package/esm2020/lib/menus/buttons/delete-all/delete-all.component.mjs +27 -0
- package/esm2020/lib/menus/buttons/download/download.component.mjs +40 -0
- package/esm2020/lib/menus/buttons/drag/drag.component.mjs +41 -0
- package/esm2020/lib/menus/buttons/draw/draw.component.mjs +22 -0
- package/esm2020/lib/menus/buttons/filter/filter.component.mjs +22 -0
- package/esm2020/lib/menus/buttons/flip/flip.component.mjs +22 -0
- package/esm2020/lib/menus/buttons/history/history.component.mjs +41 -0
- package/esm2020/lib/menus/buttons/icon/icon.component.mjs +22 -0
- package/esm2020/lib/menus/buttons/load/load.component.mjs +23 -0
- package/esm2020/lib/menus/buttons/mask/mask.component.mjs +22 -0
- package/esm2020/lib/menus/buttons/redo/redo.component.mjs +36 -0
- package/esm2020/lib/menus/buttons/reset/reset.component.mjs +28 -0
- package/esm2020/lib/menus/buttons/rotate/rotate.component.mjs +22 -0
- package/esm2020/lib/menus/buttons/shape/shape.component.mjs +22 -0
- package/esm2020/lib/menus/buttons/text/text.component.mjs +22 -0
- package/esm2020/lib/menus/buttons/undo/undo.component.mjs +36 -0
- package/esm2020/lib/menus/buttons/zoom-in/zoom-in.component.mjs +45 -0
- package/esm2020/lib/menus/buttons/zoom-out/zoom-out.component.mjs +20 -0
- package/esm2020/lib/services/history.service.mjs +86 -0
- package/esm2020/lib/services/tools.config-manager.service.mjs +45 -0
- package/esm2020/lib/submenus/crop/crop.component.mjs +76 -0
- package/esm2020/lib/submenus/draw/draw.component.mjs +149 -0
- package/esm2020/lib/submenus/filter/filter.component.mjs +345 -0
- package/esm2020/lib/submenus/flip/flip.component.mjs +39 -0
- package/esm2020/lib/submenus/icon/icon.component.mjs +119 -0
- package/esm2020/lib/submenus/mask/mask.component.mjs +69 -0
- package/esm2020/lib/submenus/rotate/rotate.component.mjs +57 -0
- package/esm2020/lib/submenus/shape/shape.component.mjs +163 -0
- package/esm2020/lib/submenus/text/text.component.mjs +175 -0
- package/esm2020/lib/svg-definitions/svg-definitions.component.mjs +12 -0
- package/esm2020/lib/tui-image-editor.component.mjs +294 -0
- package/esm2020/lib/tui-image-editor.module.mjs +136 -0
- package/esm2020/lib/utils.mjs +173 -0
- package/esm2020/public-api.mjs +8 -0
- package/esm2020/tui-image-editor-angular2.mjs +5 -0
- package/esm2020/tui-image-editor-angular3.mjs +5 -0
- package/fesm2015/tui-image-editor-angular2.mjs +3166 -0
- package/fesm2015/tui-image-editor-angular2.mjs.map +1 -0
- package/fesm2015/tui-image-editor-angular3.mjs +3166 -0
- package/fesm2015/tui-image-editor-angular3.mjs.map +1 -0
- package/fesm2020/tui-image-editor-angular2.mjs +3126 -0
- package/fesm2020/tui-image-editor-angular2.mjs.map +1 -0
- package/fesm2020/tui-image-editor-angular3.mjs +3126 -0
- package/fesm2020/tui-image-editor-angular3.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/consts.d.ts +144 -0
- package/lib/consts.d.ts.map +1 -0
- package/lib/i18n/en.d.ts +128 -0
- package/lib/i18n/en.d.ts.map +1 -0
- package/lib/i18n/nl.d.ts +127 -0
- package/lib/i18n/nl.d.ts.map +1 -0
- package/lib/i18n/translation.service.d.ts +14 -0
- package/lib/i18n/translation.service.d.ts.map +1 -0
- package/lib/interfaces/command.d.ts +4 -0
- package/lib/interfaces/command.d.ts.map +1 -0
- package/lib/interfaces/history-item.d.ts +26 -0
- package/lib/interfaces/history-item.d.ts.map +1 -0
- package/lib/interfaces/image-size.d.ts +6 -0
- package/lib/interfaces/image-size.d.ts.map +1 -0
- package/lib/interfaces/tools-config.d.ts +14 -0
- package/lib/interfaces/tools-config.d.ts.map +1 -0
- package/lib/menus/buttons/crop/crop.component.d.ts +10 -0
- package/lib/menus/buttons/crop/crop.component.d.ts.map +1 -0
- package/lib/menus/buttons/delete/delete.component.d.ts +13 -0
- package/lib/menus/buttons/delete/delete.component.d.ts.map +1 -0
- package/lib/menus/buttons/delete-all/delete-all.component.d.ts +11 -0
- package/lib/menus/buttons/delete-all/delete-all.component.d.ts.map +1 -0
- package/lib/menus/buttons/download/download.component.d.ts +9 -0
- package/lib/menus/buttons/download/download.component.d.ts.map +1 -0
- package/lib/menus/buttons/drag/drag.component.d.ts +11 -0
- package/lib/menus/buttons/drag/drag.component.d.ts.map +1 -0
- package/lib/menus/buttons/draw/draw.component.d.ts +10 -0
- package/lib/menus/buttons/draw/draw.component.d.ts.map +1 -0
- package/lib/menus/buttons/filter/filter.component.d.ts +10 -0
- package/lib/menus/buttons/filter/filter.component.d.ts.map +1 -0
- package/lib/menus/buttons/flip/flip.component.d.ts +10 -0
- package/lib/menus/buttons/flip/flip.component.d.ts.map +1 -0
- package/lib/menus/buttons/history/history.component.d.ts +13 -0
- package/lib/menus/buttons/history/history.component.d.ts.map +1 -0
- package/lib/menus/buttons/icon/icon.component.d.ts +10 -0
- package/lib/menus/buttons/icon/icon.component.d.ts.map +1 -0
- package/lib/menus/buttons/load/load.component.d.ts +9 -0
- package/lib/menus/buttons/load/load.component.d.ts.map +1 -0
- package/lib/menus/buttons/mask/mask.component.d.ts +10 -0
- package/lib/menus/buttons/mask/mask.component.d.ts.map +1 -0
- package/lib/menus/buttons/redo/redo.component.d.ts +12 -0
- package/lib/menus/buttons/redo/redo.component.d.ts.map +1 -0
- package/lib/menus/buttons/reset/reset.component.d.ts +12 -0
- package/lib/menus/buttons/reset/reset.component.d.ts.map +1 -0
- package/lib/menus/buttons/rotate/rotate.component.d.ts +10 -0
- package/lib/menus/buttons/rotate/rotate.component.d.ts.map +1 -0
- package/lib/menus/buttons/shape/shape.component.d.ts +10 -0
- package/lib/menus/buttons/shape/shape.component.d.ts.map +1 -0
- package/lib/menus/buttons/text/text.component.d.ts +10 -0
- package/lib/menus/buttons/text/text.component.d.ts.map +1 -0
- package/lib/menus/buttons/undo/undo.component.d.ts +12 -0
- package/lib/menus/buttons/undo/undo.component.d.ts.map +1 -0
- package/lib/menus/buttons/zoom-in/zoom-in.component.d.ts +12 -0
- package/lib/menus/buttons/zoom-in/zoom-in.component.d.ts.map +1 -0
- package/lib/menus/buttons/zoom-out/zoom-out.component.d.ts +9 -0
- package/lib/menus/buttons/zoom-out/zoom-out.component.d.ts.map +1 -0
- package/lib/services/history.service.d.ts +45 -0
- package/lib/services/history.service.d.ts.map +1 -0
- package/lib/services/tools.config-manager.service.d.ts +12 -0
- package/lib/services/tools.config-manager.service.d.ts.map +1 -0
- package/lib/submenus/crop/crop.component.d.ts +23 -0
- package/lib/submenus/crop/crop.component.d.ts.map +1 -0
- package/lib/submenus/draw/draw.component.d.ts +32 -0
- package/lib/submenus/draw/draw.component.d.ts.map +1 -0
- package/lib/submenus/filter/filter.component.d.ts +70 -0
- package/lib/submenus/filter/filter.component.d.ts.map +1 -0
- package/lib/submenus/flip/flip.component.d.ts +10 -0
- package/lib/submenus/flip/flip.component.d.ts.map +1 -0
- package/lib/submenus/icon/icon.component.d.ts +24 -0
- package/lib/submenus/icon/icon.component.d.ts.map +1 -0
- package/lib/submenus/mask/mask.component.d.ts +16 -0
- package/lib/submenus/mask/mask.component.d.ts.map +1 -0
- package/lib/submenus/rotate/rotate.component.d.ts +12 -0
- package/lib/submenus/rotate/rotate.component.d.ts.map +1 -0
- package/lib/submenus/shape/shape.component.d.ts +31 -0
- package/lib/submenus/shape/shape.component.d.ts.map +1 -0
- package/lib/submenus/text/text.component.d.ts +31 -0
- package/lib/submenus/text/text.component.d.ts.map +1 -0
- package/lib/svg-definitions/svg-definitions.component.d.ts +6 -0
- package/lib/svg-definitions/svg-definitions.component.d.ts.map +1 -0
- package/lib/tui-image-editor.component.d.ts +71 -0
- package/lib/tui-image-editor.component.d.ts.map +1 -0
- package/lib/tui-image-editor.module.d.ts +48 -0
- package/lib/tui-image-editor.module.d.ts.map +1 -0
- package/lib/utils.d.ts +45 -0
- package/lib/utils.d.ts.map +1 -0
- package/package.json +43 -0
- package/public-api.d.ts +4 -0
- package/public-api.d.ts.map +1 -0
- package/src/checkboxes.scss +95 -0
- package/src/theme.scss +936 -0
- package/tui-image-editor-angular2.d.ts.map +1 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@ngx-translate/core";
|
|
4
|
+
export class FlipComponent {
|
|
5
|
+
constructor() { }
|
|
6
|
+
async flipX() {
|
|
7
|
+
try {
|
|
8
|
+
await this.imageEditor?.flipX();
|
|
9
|
+
}
|
|
10
|
+
catch (_err) {
|
|
11
|
+
console.error(_err);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
async flipY() {
|
|
15
|
+
try {
|
|
16
|
+
await this.imageEditor?.flipY();
|
|
17
|
+
}
|
|
18
|
+
catch (_err) {
|
|
19
|
+
console.error(_err);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
async resetFlip() {
|
|
23
|
+
try {
|
|
24
|
+
await this.imageEditor?.resetFlip();
|
|
25
|
+
}
|
|
26
|
+
catch (_err) {
|
|
27
|
+
console.error(_err);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
FlipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: FlipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
32
|
+
FlipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: FlipComponent, selector: "tui-image-editor-submenus-flip", inputs: { imageEditor: "imageEditor" }, ngImport: i0, template: "<div class=\"tui-image-editor-menu-flip\">\r\n <div\r\n class=\"tie-flip-button tui-image-editor-submenu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-justify-content-center tui-image-editor-my-3\"\r\n >\r\n <div>\r\n <div class=\"tui-image-editor-button flipX\" (click)=\"flipX()\">\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-flip-x\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-flip-x\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-flip-x\" | translate }}\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-button flipY\" (click)=\"flipY()\">\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-flip-y\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-flip-y\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-flip-y\" | translate }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-partition\">\r\n <div></div>\r\n </div>\r\n <div>\r\n <div class=\"tui-image-editor-button resetFlip\" (click)=\"resetFlip()\">\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-flip-reset\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-flip-reset\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-flip-reset\" | translate }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
33
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: FlipComponent, decorators: [{
|
|
34
|
+
type: Component,
|
|
35
|
+
args: [{ selector: 'tui-image-editor-submenus-flip', template: "<div class=\"tui-image-editor-menu-flip\">\r\n <div\r\n class=\"tie-flip-button tui-image-editor-submenu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-justify-content-center tui-image-editor-my-3\"\r\n >\r\n <div>\r\n <div class=\"tui-image-editor-button flipX\" (click)=\"flipX()\">\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-flip-x\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-flip-x\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-flip-x\" | translate }}\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-button flipY\" (click)=\"flipY()\">\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-flip-y\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-flip-y\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-flip-y\" | translate }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-partition\">\r\n <div></div>\r\n </div>\r\n <div>\r\n <div class=\"tui-image-editor-button resetFlip\" (click)=\"resetFlip()\">\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-flip-reset\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-flip-reset\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-flip-reset\" | translate }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
36
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageEditor: [{
|
|
37
|
+
type: Input
|
|
38
|
+
}] } });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXIyL3NyYy9saWIvc3VibWVudXMvZmxpcC9mbGlwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1aS1pbWFnZS1lZGl0b3ItYW5ndWxhcjIvc3JjL2xpYi9zdWJtZW51cy9mbGlwL2ZsaXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7OztBQU96RCxNQUFNLE9BQU8sYUFBYTtJQUd4QixnQkFBZSxDQUFDO0lBRWhCLEtBQUssQ0FBQyxLQUFLO1FBQ1QsSUFBSTtZQUNGLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUNqQztRQUFDLE9BQU8sSUFBSSxFQUFFO1lBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSztRQUNULElBQUk7WUFDRixNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUM7U0FDakM7UUFBQyxPQUFPLElBQUksRUFBRTtZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVM7UUFDYixJQUFJO1lBQ0YsTUFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxDQUFDO1NBQ3JDO1FBQUMsT0FBTyxJQUFJLEVBQUU7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3JCO0lBQ0gsQ0FBQzs7MEdBM0JVLGFBQWE7OEZBQWIsYUFBYSw4R0NQMUIsdzBEQThDQTsyRkR2Q2EsYUFBYTtrQkFMekIsU0FBUzsrQkFDRSxnQ0FBZ0M7MEVBS2pDLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHVpLWltYWdlLWVkaXRvci1zdWJtZW51cy1mbGlwJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZmxpcC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZmxpcC5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGbGlwQ29tcG9uZW50IHtcclxuICBASW5wdXQoKSBpbWFnZUVkaXRvcjogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHt9XHJcblxyXG4gIGFzeW5jIGZsaXBYKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgYXdhaXQgdGhpcy5pbWFnZUVkaXRvcj8uZmxpcFgoKTtcclxuICAgIH0gY2F0Y2ggKF9lcnIpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihfZXJyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGZsaXBZKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgYXdhaXQgdGhpcy5pbWFnZUVkaXRvcj8uZmxpcFkoKTtcclxuICAgIH0gY2F0Y2ggKF9lcnIpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihfZXJyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHJlc2V0RmxpcCgpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuaW1hZ2VFZGl0b3I/LnJlc2V0RmxpcCgpO1xyXG4gICAgfSBjYXRjaCAoX2Vycikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKF9lcnIpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidHVpLWltYWdlLWVkaXRvci1tZW51LWZsaXBcIj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cInRpZS1mbGlwLWJ1dHRvbiB0dWktaW1hZ2UtZWRpdG9yLXN1Ym1lbnUtaXRlbSB0dWktaW1hZ2UtZWRpdG9yLWQtZmxleCB0dWktaW1hZ2UtZWRpdG9yLWZsZXgtcm93IHR1aS1pbWFnZS1lZGl0b3ItYWxpZ24taXRlbXMtY2VudGVyIHR1aS1pbWFnZS1lZGl0b3ItanVzdGlmeS1jb250ZW50LWNlbnRlciB0dWktaW1hZ2UtZWRpdG9yLW15LTNcIlxyXG4gID5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0dWktaW1hZ2UtZWRpdG9yLWJ1dHRvbiBmbGlwWFwiIChjbGljayk9XCJmbGlwWCgpXCI+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxzdmcgY2xhc3M9XCJzdmdfaWMtc3VibWVudVwiPlxyXG4gICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjaWMtZmxpcC14XCIgY2xhc3M9XCJub3JtYWwgdXNlLWRlZmF1bHRcIj48L3VzZT5cclxuICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2ljLWZsaXAteFwiIGNsYXNzPVwiYWN0aXZlIHVzZS1kZWZhdWx0XCI+PC91c2U+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICB7eyBcInR1aS1pbWFnZS1lZGl0b3ItYW5ndWxhci1zdWJtZW51cy1mbGlwLXhcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvbGFiZWw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidHVpLWltYWdlLWVkaXRvci1idXR0b24gZmxpcFlcIiAoY2xpY2spPVwiZmxpcFkoKVwiPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8c3ZnIGNsYXNzPVwic3ZnX2ljLXN1Ym1lbnVcIj5cclxuICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2ljLWZsaXAteVwiIGNsYXNzPVwibm9ybWFsIHVzZS1kZWZhdWx0XCI+PC91c2U+XHJcbiAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj1cIiNpYy1mbGlwLXlcIiBjbGFzcz1cImFjdGl2ZSB1c2UtZGVmYXVsdFwiPjwvdXNlPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAge3sgXCJ0dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXItc3VibWVudXMtZmxpcC15XCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICA8L2xhYmVsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInR1aS1pbWFnZS1lZGl0b3ItcGFydGl0aW9uXCI+XHJcbiAgICAgIDxkaXY+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0dWktaW1hZ2UtZWRpdG9yLWJ1dHRvbiByZXNldEZsaXBcIiAoY2xpY2spPVwicmVzZXRGbGlwKClcIj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPHN2ZyBjbGFzcz1cInN2Z19pYy1zdWJtZW51XCI+XHJcbiAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj1cIiNpYy1mbGlwLXJlc2V0XCIgY2xhc3M9XCJub3JtYWwgdXNlLWRlZmF1bHRcIj48L3VzZT5cclxuICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2ljLWZsaXAtcmVzZXRcIiBjbGFzcz1cImFjdGl2ZSB1c2UtZGVmYXVsdFwiPjwvdXNlPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAge3sgXCJ0dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXItc3VibWVudXMtZmxpcC1yZXNldFwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { Component, Input, } from '@angular/core';
|
|
2
|
+
import ImageTracer from 'tui-image-editor/src/js/helper/imagetracer';
|
|
3
|
+
import { defaultColors, eventNames } from '../../consts';
|
|
4
|
+
import { clearSelection, getActiveObjectId } from '../../utils';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "ngx-color-picker";
|
|
7
|
+
import * as i2 from "@ngx-translate/core";
|
|
8
|
+
export class IconComponent {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.defaultIconColors = defaultColors;
|
|
11
|
+
this.iconColor = 'rgba(255, 187, 59, 1)';
|
|
12
|
+
this.onObjectActivatedEventListener = this.onObjectActivated.bind(this);
|
|
13
|
+
this.onObjectAddedEventListener = this.onObjectAdded.bind(this);
|
|
14
|
+
}
|
|
15
|
+
ngOnChanges(changes) {
|
|
16
|
+
var that = this;
|
|
17
|
+
if (changes['imageEditor']) {
|
|
18
|
+
this.activeObjectId = getActiveObjectId(changes['imageEditor'].currentValue);
|
|
19
|
+
this.checkActiveObject(this.activeObjectId);
|
|
20
|
+
changes['imageEditor'].previousValue?.off(eventNames.OBJECT_ACTIVATED, that.onObjectActivatedEventListener);
|
|
21
|
+
changes['imageEditor'].currentValue?.on(eventNames.OBJECT_ACTIVATED, that.onObjectActivatedEventListener);
|
|
22
|
+
changes['imageEditor'].previousValue?.off(eventNames.OBJECT_ADDED, that.onObjectAddedEventListener);
|
|
23
|
+
changes['imageEditor'].currentValue?.on(eventNames.OBJECT_ADDED, that.onObjectAddedEventListener);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
ngOnDestroy() {
|
|
27
|
+
if (this.imageEditor) {
|
|
28
|
+
this.imageEditor.off(eventNames.OBJECT_ACTIVATED, this.onObjectActivatedEventListener);
|
|
29
|
+
this.imageEditor.off(eventNames.OBJECT_ADDED, this.onObjectAddedEventListener);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
onObjectActivated(props) {
|
|
33
|
+
this.activeObjectId = props?.id;
|
|
34
|
+
this.checkActiveObject(this.activeObjectId);
|
|
35
|
+
}
|
|
36
|
+
onObjectAdded(props) {
|
|
37
|
+
if (props && props.type === 'icon') {
|
|
38
|
+
this.setActiveIconType(this.iconType, false);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
checkActiveObject(activeObjectId) {
|
|
42
|
+
if (activeObjectId != null) {
|
|
43
|
+
var props = this.imageEditor?.getObjectProperties(activeObjectId, [
|
|
44
|
+
'type',
|
|
45
|
+
'fill',
|
|
46
|
+
]);
|
|
47
|
+
if (props && props.type === 'icon') {
|
|
48
|
+
this.iconColor =
|
|
49
|
+
typeof props.fill == 'object' && props.fill.type == 'color'
|
|
50
|
+
? props.fill.color
|
|
51
|
+
: props.fill == null || props.fill.trim() == ''
|
|
52
|
+
? 'rgba(255, 187, 59, 1)'
|
|
53
|
+
: props.fill;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
setActiveIconType(newIconType, discardSelection = true) {
|
|
58
|
+
if (discardSelection) {
|
|
59
|
+
clearSelection(this.imageEditor);
|
|
60
|
+
}
|
|
61
|
+
if (this.iconType != newIconType) {
|
|
62
|
+
this.iconType = newIconType;
|
|
63
|
+
this.imageEditor.startDrawingMode('ICON');
|
|
64
|
+
this.imageEditor.setDrawingIcon(newIconType, this.iconColor);
|
|
65
|
+
this.imageEditor.changeCursor('crosshair');
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
this.iconType = null;
|
|
69
|
+
this.imageEditor.stopDrawingMode();
|
|
70
|
+
this.imageEditor.changeCursor('default');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
iconColorChanged(currentColor) {
|
|
74
|
+
this.iconChangeActiveObject();
|
|
75
|
+
}
|
|
76
|
+
iconChangeActiveObject() {
|
|
77
|
+
if (this.activeObjectId != null &&
|
|
78
|
+
getActiveObjectId(this.imageEditor) == this.activeObjectId) {
|
|
79
|
+
var props = this.imageEditor.getObjectProperties(this.activeObjectId, 'type');
|
|
80
|
+
if (props.type === 'icon') {
|
|
81
|
+
this.imageEditor.setObjectProperties(this.activeObjectId, {
|
|
82
|
+
fill: this.iconColor,
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
registerIcon(obj) {
|
|
88
|
+
this.imageEditor.registerIcons(obj);
|
|
89
|
+
}
|
|
90
|
+
onIconChosen(event) {
|
|
91
|
+
let selectedFile = event.target.files[0];
|
|
92
|
+
if (selectedFile != null) {
|
|
93
|
+
var imgUrl = URL.createObjectURL(selectedFile);
|
|
94
|
+
const imagetracer = new ImageTracer();
|
|
95
|
+
imagetracer.imageToSVG(imgUrl, (svgstr) => {
|
|
96
|
+
const [, svgPath] = svgstr.match(/path[^>]*d="([^"]*)"/);
|
|
97
|
+
const iconObj = {};
|
|
98
|
+
iconObj[selectedFile.name] = svgPath;
|
|
99
|
+
this.registerIcon(iconObj);
|
|
100
|
+
this.imageEditor.addIcon(selectedFile.name, {
|
|
101
|
+
fill: this.iconColor,
|
|
102
|
+
left: 100,
|
|
103
|
+
top: 100,
|
|
104
|
+
});
|
|
105
|
+
}, ImageTracer.tracerDefaultOption());
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
IconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: IconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
110
|
+
IconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: IconComponent, selector: "tui-image-editor-submenus-icon", inputs: { imageEditor: "imageEditor", defaultIconColors: "defaultIconColors" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"tui-image-editor-menu-icon\">\r\n <div\r\n class=\"tui-image-editor-submenu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-justify-content-center tui-image-editor-flex-nowrap\"\r\n >\r\n <div class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap tui-image-editor-overflowable-x tui-image-editor-py-3\">\r\n <div class=\"tie-icon-add-button tui-image-editor-d-flex tui-image-editor-flex-row\">\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button ' +\r\n (iconType == 'icon-arrow' ? 'active' : '')\r\n \"\r\n data-icontype=\"icon-arrow\"\r\n (click)=\"setActiveIconType('icon-arrow')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-icon-arrow\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-icon-arrow\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-icon-arrow1\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button ' +\r\n (iconType == 'icon-arrow-2' ? 'active' : '')\r\n \"\r\n data-icontype=\"icon-arrow-2\"\r\n (click)=\"setActiveIconType('icon-arrow-2')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-icon-arrow-2\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-icon-arrow-2\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-icon-arrow2\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button ' +\r\n (iconType == 'icon-arrow-3' ? 'active' : '')\r\n \"\r\n data-icontype=\"icon-arrow-3\"\r\n (click)=\"setActiveIconType('icon-arrow-3')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-icon-arrow-3\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-icon-arrow-3\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-icon-arrow3\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button ' +\r\n (iconType == 'icon-star' ? 'active' : '')\r\n \"\r\n data-icontype=\"icon-star\"\r\n (click)=\"setActiveIconType('icon-star')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-icon-star\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-icon-star\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-icon-star1\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button ' +\r\n (iconType == 'icon-star-2' ? 'active' : '')\r\n \"\r\n data-icontype=\"icon-star-2\"\r\n (click)=\"setActiveIconType('icon-star-2')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-icon-star-2\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-icon-star-2\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-icon-star2\" | translate }}\r\n </label>\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button ' +\r\n (iconType == 'icon-polygon' ? 'active' : '')\r\n \"\r\n data-icontype=\"icon-polygon\"\r\n (click)=\"setActiveIconType('icon-polygon')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-icon-polygon\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-icon-polygon\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-icon-polygon\" | translate }}\r\n </label>\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button ' +\r\n (iconType == 'icon-location' ? 'active' : '')\r\n \"\r\n data-icontype=\"icon-location\"\r\n (click)=\"setActiveIconType('icon-location')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-icon-location\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-icon-location\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-icon-location\" | translate }}\r\n </label>\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button ' +\r\n (iconType == 'icon-heart' ? 'active' : '')\r\n \"\r\n data-icontype=\"icon-heart\"\r\n (click)=\"setActiveIconType('icon-heart')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-icon-heart\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-icon-heart\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-icon-heart\" | translate }}\r\n </label>\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button ' +\r\n (iconType == 'icon-bubble' ? 'active' : '')\r\n \"\r\n data-icontype=\"icon-bubble\"\r\n (click)=\"setActiveIconType('icon-bubble')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-icon-bubble\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-icon-bubble\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-icon-bubble\" | translate }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-partition\">\r\n <div></div>\r\n </div>\r\n <div class=\"tie-icon-add-button\">\r\n <div class=\"tui-image-editor-button\" style=\"margin: 0\">\r\n <div>\r\n <input\r\n type=\"file\"\r\n accept=\"image/*\"\r\n class=\"tie-icon-image-file\"\r\n (change)=\"onIconChosen($event)\"\r\n />\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-icon-load\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-icon-load\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{\r\n \"tui-image-editor-angular-submenus-icon-customIcon\" | translate\r\n }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-partition\">\r\n <div></div>\r\n </div>\r\n <div>\r\n <div\r\n class=\"tie-icon-color tui-image-editor-button tui-image-editor-button-color-picker tui-image-editor-d-flex tui-image-editor-flex-column\"\r\n title=\"Color\"\r\n >\r\n <label>\r\n <input\r\n readonly\r\n class=\"tie-icon-color-picker\"\r\n [(colorPicker)]=\"iconColor\"\r\n [style.background]=\"iconColor\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPresetColors]=\"defaultIconColors\"\r\n (colorPickerChange)=\"iconColorChanged($event)\"\r\n [cpUseRootViewContainer]=\"true\"\r\n />\r\n <div>\r\n {{ \"tui-image-editor-angular-submenus-icon-color\" | translate }}\r\n </div></label\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.ColorPickerDirective, selector: "[colorPicker]", inputs: ["colorPicker", "cpWidth", "cpHeight", "cpToggle", "cpDisabled", "cpIgnoredElements", "cpFallbackColor", "cpColorMode", "cpCmykEnabled", "cpOutputFormat", "cpAlphaChannel", "cpDisableInput", "cpDialogDisplay", "cpSaveClickOutside", "cpCloseClickOutside", "cpUseRootViewContainer", "cpPosition", "cpPositionOffset", "cpPositionRelativeToArrow", "cpOKButton", "cpOKButtonText", "cpOKButtonClass", "cpCancelButton", "cpCancelButtonText", "cpCancelButtonClass", "cpEyeDropper", "cpPresetLabel", "cpPresetColors", "cpPresetColorsClass", "cpMaxPresetColorsLength", "cpPresetEmptyMessage", "cpPresetEmptyMessageClass", "cpAddColorButton", "cpAddColorButtonText", "cpAddColorButtonClass", "cpRemoveColorButtonClass", "cpExtraTemplate"], outputs: ["cpInputChange", "cpToggleChange", "cpSliderChange", "cpSliderDragEnd", "cpSliderDragStart", "colorPickerOpen", "colorPickerClose", "colorPickerCancel", "colorPickerSelect", "colorPickerChange", "cpCmykColorChange", "cpPresetColorsChange"], exportAs: ["ngxColorPicker"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
|
|
111
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: IconComponent, decorators: [{
|
|
112
|
+
type: Component,
|
|
113
|
+
args: [{ selector: 'tui-image-editor-submenus-icon', template: "<div class=\"tui-image-editor-menu-icon\">\r\n <div\r\n class=\"tui-image-editor-submenu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-justify-content-center tui-image-editor-flex-nowrap\"\r\n >\r\n <div class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap tui-image-editor-overflowable-x tui-image-editor-py-3\">\r\n <div class=\"tie-icon-add-button tui-image-editor-d-flex tui-image-editor-flex-row\">\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button ' +\r\n (iconType == 'icon-arrow' ? 'active' : '')\r\n \"\r\n data-icontype=\"icon-arrow\"\r\n (click)=\"setActiveIconType('icon-arrow')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-icon-arrow\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-icon-arrow\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-icon-arrow1\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button ' +\r\n (iconType == 'icon-arrow-2' ? 'active' : '')\r\n \"\r\n data-icontype=\"icon-arrow-2\"\r\n (click)=\"setActiveIconType('icon-arrow-2')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-icon-arrow-2\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-icon-arrow-2\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-icon-arrow2\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button ' +\r\n (iconType == 'icon-arrow-3' ? 'active' : '')\r\n \"\r\n data-icontype=\"icon-arrow-3\"\r\n (click)=\"setActiveIconType('icon-arrow-3')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-icon-arrow-3\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-icon-arrow-3\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-icon-arrow3\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button ' +\r\n (iconType == 'icon-star' ? 'active' : '')\r\n \"\r\n data-icontype=\"icon-star\"\r\n (click)=\"setActiveIconType('icon-star')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-icon-star\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-icon-star\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-icon-star1\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button ' +\r\n (iconType == 'icon-star-2' ? 'active' : '')\r\n \"\r\n data-icontype=\"icon-star-2\"\r\n (click)=\"setActiveIconType('icon-star-2')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-icon-star-2\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-icon-star-2\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-icon-star2\" | translate }}\r\n </label>\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button ' +\r\n (iconType == 'icon-polygon' ? 'active' : '')\r\n \"\r\n data-icontype=\"icon-polygon\"\r\n (click)=\"setActiveIconType('icon-polygon')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-icon-polygon\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-icon-polygon\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-icon-polygon\" | translate }}\r\n </label>\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button ' +\r\n (iconType == 'icon-location' ? 'active' : '')\r\n \"\r\n data-icontype=\"icon-location\"\r\n (click)=\"setActiveIconType('icon-location')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-icon-location\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-icon-location\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-icon-location\" | translate }}\r\n </label>\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button ' +\r\n (iconType == 'icon-heart' ? 'active' : '')\r\n \"\r\n data-icontype=\"icon-heart\"\r\n (click)=\"setActiveIconType('icon-heart')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-icon-heart\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-icon-heart\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-icon-heart\" | translate }}\r\n </label>\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button ' +\r\n (iconType == 'icon-bubble' ? 'active' : '')\r\n \"\r\n data-icontype=\"icon-bubble\"\r\n (click)=\"setActiveIconType('icon-bubble')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-icon-bubble\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-icon-bubble\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-icon-bubble\" | translate }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-partition\">\r\n <div></div>\r\n </div>\r\n <div class=\"tie-icon-add-button\">\r\n <div class=\"tui-image-editor-button\" style=\"margin: 0\">\r\n <div>\r\n <input\r\n type=\"file\"\r\n accept=\"image/*\"\r\n class=\"tie-icon-image-file\"\r\n (change)=\"onIconChosen($event)\"\r\n />\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-icon-load\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-icon-load\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{\r\n \"tui-image-editor-angular-submenus-icon-customIcon\" | translate\r\n }}\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-partition\">\r\n <div></div>\r\n </div>\r\n <div>\r\n <div\r\n class=\"tie-icon-color tui-image-editor-button tui-image-editor-button-color-picker tui-image-editor-d-flex tui-image-editor-flex-column\"\r\n title=\"Color\"\r\n >\r\n <label>\r\n <input\r\n readonly\r\n class=\"tie-icon-color-picker\"\r\n [(colorPicker)]=\"iconColor\"\r\n [style.background]=\"iconColor\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPresetColors]=\"defaultIconColors\"\r\n (colorPickerChange)=\"iconColorChanged($event)\"\r\n [cpUseRootViewContainer]=\"true\"\r\n />\r\n <div>\r\n {{ \"tui-image-editor-angular-submenus-icon-color\" | translate }}\r\n </div></label\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
114
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageEditor: [{
|
|
115
|
+
type: Input
|
|
116
|
+
}], defaultIconColors: [{
|
|
117
|
+
type: Input
|
|
118
|
+
}] } });
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXIyL3NyYy9saWIvc3VibWVudXMvaWNvbi9pY29uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1aS1pbWFnZS1lZGl0b3ItYW5ndWxhcjIvc3JjL2xpYi9zdWJtZW51cy9pY29uL2ljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEdBS04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxXQUFXLE1BQU0sNENBQTRDLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7OztBQU9oRSxNQUFNLE9BQU8sYUFBYTtJQWtCeEI7UUFoQlMsc0JBQWlCLEdBQWEsYUFBYSxDQUFDO1FBQzlDLGNBQVMsR0FBVyx1QkFBdUIsQ0FBQztRQWdCakQsSUFBSSxDQUFDLDhCQUE4QixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEUsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQzFCLElBQUksQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzdFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFNUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQ3ZDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFDM0IsSUFBSSxDQUFDLDhCQUE4QixDQUNwQyxDQUFDO1lBQ0YsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQ3JDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFDM0IsSUFBSSxDQUFDLDhCQUE4QixDQUNwQyxDQUFDO1lBRUYsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQ3ZDLFVBQVUsQ0FBQyxZQUFZLEVBQ3ZCLElBQUksQ0FBQywwQkFBMEIsQ0FDaEMsQ0FBQztZQUNGLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUNyQyxVQUFVLENBQUMsWUFBWSxFQUN2QixJQUFJLENBQUMsMEJBQTBCLENBQ2hDLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUNsQixVQUFVLENBQUMsZ0JBQWdCLEVBQzNCLElBQUksQ0FBQyw4QkFBOEIsQ0FDcEMsQ0FBQztZQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUNsQixVQUFVLENBQUMsWUFBWSxFQUN2QixJQUFJLENBQUMsMEJBQTBCLENBQ2hDLENBQUM7U0FDSDtJQUNILENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxLQUFLO1FBQzdCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTyxhQUFhLENBQUMsS0FBSztRQUN6QixJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtZQUNsQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUM5QztJQUNILENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxjQUFzQjtRQUM5QyxJQUFJLGNBQWMsSUFBSSxJQUFJLEVBQUU7WUFDMUIsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxtQkFBbUIsQ0FBQyxjQUFjLEVBQUU7Z0JBQ2hFLE1BQU07Z0JBQ04sTUFBTTthQUNQLENBQUMsQ0FBQztZQUNILElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO2dCQUNsQyxJQUFJLENBQUMsU0FBUztvQkFDWixPQUFPLEtBQUssQ0FBQyxJQUFJLElBQUksUUFBUSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLE9BQU87d0JBQ3pELENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUs7d0JBQ2xCLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7NEJBQy9DLENBQUMsQ0FBQyx1QkFBdUI7NEJBQ3pCLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO2FBQ2xCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQ2YsV0FTaUIsRUFDakIsbUJBQTRCLElBQUk7UUFFaEMsSUFBSSxnQkFBZ0IsRUFBRTtZQUNwQixjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2xDO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLFdBQVcsRUFBRTtZQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQztZQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDNUM7YUFBTTtZQUNMLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDMUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsWUFBb0I7UUFDbkMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELHNCQUFzQjtRQUNwQixJQUNFLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSTtZQUMzQixpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFDMUQ7WUFDQSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUM5QyxJQUFJLENBQUMsY0FBYyxFQUNuQixNQUFNLENBQ1AsQ0FBQztZQUNGLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7Z0JBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtvQkFDeEQsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTO2lCQUNyQixDQUFDLENBQUM7YUFDSjtTQUNGO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxHQUFHO1FBQ2QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFLO1FBQ2hCLElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksWUFBWSxJQUFJLElBQUksRUFBRTtZQUN4QixJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQy9DLE1BQU0sV0FBVyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7WUFDdEMsV0FBVyxDQUFDLFVBQVUsQ0FDcEIsTUFBTSxFQUNOLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ1QsTUFBTSxDQUFDLEVBQUUsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO2dCQUN6RCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7Z0JBQ25CLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFO29CQUMxQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVM7b0JBQ3BCLElBQUksRUFBRSxHQUFHO29CQUNULEdBQUcsRUFBRSxHQUFHO2lCQUNULENBQUMsQ0FBQztZQUNMLENBQUMsRUFDRCxXQUFXLENBQUMsbUJBQW1CLEVBQUUsQ0FDbEMsQ0FBQztTQUNIO0lBQ0gsQ0FBQzs7MEdBcEtVLGFBQWE7OEZBQWIsYUFBYSwyS0NqQjFCLDRzU0FxUUE7MkZEcFBhLGFBQWE7a0JBTHpCLFNBQVM7K0JBQ0UsZ0NBQWdDOzBFQUtqQyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCBJbWFnZVRyYWNlciBmcm9tICd0dWktaW1hZ2UtZWRpdG9yL3NyYy9qcy9oZWxwZXIvaW1hZ2V0cmFjZXInO1xyXG5pbXBvcnQgeyBkZWZhdWx0Q29sb3JzLCBldmVudE5hbWVzIH0gZnJvbSAnLi4vLi4vY29uc3RzJztcclxuaW1wb3J0IHsgY2xlYXJTZWxlY3Rpb24sIGdldEFjdGl2ZU9iamVjdElkIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0dWktaW1hZ2UtZWRpdG9yLXN1Ym1lbnVzLWljb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9pY29uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pY29uLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEljb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XHJcbiAgQElucHV0KCkgaW1hZ2VFZGl0b3I6IGFueTtcclxuICBASW5wdXQoKSBkZWZhdWx0SWNvbkNvbG9yczogc3RyaW5nW10gPSBkZWZhdWx0Q29sb3JzO1xyXG4gIHB1YmxpYyBpY29uQ29sb3I6IHN0cmluZyA9ICdyZ2JhKDI1NSwgMTg3LCA1OSwgMSknO1xyXG4gIHB1YmxpYyBpY29uVHlwZTpcclxuICAgIHwgJ2ljb24tYXJyb3cnXHJcbiAgICB8ICdpY29uLWFycm93LTInXHJcbiAgICB8ICdpY29uLWFycm93LTMnXHJcbiAgICB8ICdpY29uLXN0YXInXHJcbiAgICB8ICdpY29uLXN0YXItMidcclxuICAgIHwgJ2ljb24tcG9seWdvbidcclxuICAgIHwgJ2ljb24tbG9jYXRpb24nXHJcbiAgICB8ICdpY29uLWhlYXJ0J1xyXG4gICAgfCAnaWNvbi1idWJibGUnO1xyXG4gIHB1YmxpYyBhY3RpdmVPYmplY3RJZDogbnVtYmVyO1xyXG4gIHB1YmxpYyBvbk9iamVjdEFjdGl2YXRlZEV2ZW50TGlzdGVuZXI6IGFueTtcclxuICBwdWJsaWMgb25PYmplY3RBZGRlZEV2ZW50TGlzdGVuZXI6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLm9uT2JqZWN0QWN0aXZhdGVkRXZlbnRMaXN0ZW5lciA9IHRoaXMub25PYmplY3RBY3RpdmF0ZWQuYmluZCh0aGlzKTtcclxuICAgIHRoaXMub25PYmplY3RBZGRlZEV2ZW50TGlzdGVuZXIgPSB0aGlzLm9uT2JqZWN0QWRkZWQuYmluZCh0aGlzKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIHZhciB0aGF0ID0gdGhpcztcclxuICAgIGlmIChjaGFuZ2VzWydpbWFnZUVkaXRvciddKSB7XHJcbiAgICAgIHRoaXMuYWN0aXZlT2JqZWN0SWQgPSBnZXRBY3RpdmVPYmplY3RJZChjaGFuZ2VzWydpbWFnZUVkaXRvciddLmN1cnJlbnRWYWx1ZSk7XHJcbiAgICAgIHRoaXMuY2hlY2tBY3RpdmVPYmplY3QodGhpcy5hY3RpdmVPYmplY3RJZCk7XHJcblxyXG4gICAgICBjaGFuZ2VzWydpbWFnZUVkaXRvciddLnByZXZpb3VzVmFsdWU/Lm9mZihcclxuICAgICAgICBldmVudE5hbWVzLk9CSkVDVF9BQ1RJVkFURUQsXHJcbiAgICAgICAgdGhhdC5vbk9iamVjdEFjdGl2YXRlZEV2ZW50TGlzdGVuZXJcclxuICAgICAgKTtcclxuICAgICAgY2hhbmdlc1snaW1hZ2VFZGl0b3InXS5jdXJyZW50VmFsdWU/Lm9uKFxyXG4gICAgICAgIGV2ZW50TmFtZXMuT0JKRUNUX0FDVElWQVRFRCxcclxuICAgICAgICB0aGF0Lm9uT2JqZWN0QWN0aXZhdGVkRXZlbnRMaXN0ZW5lclxyXG4gICAgICApO1xyXG5cclxuICAgICAgY2hhbmdlc1snaW1hZ2VFZGl0b3InXS5wcmV2aW91c1ZhbHVlPy5vZmYoXHJcbiAgICAgICAgZXZlbnROYW1lcy5PQkpFQ1RfQURERUQsXHJcbiAgICAgICAgdGhhdC5vbk9iamVjdEFkZGVkRXZlbnRMaXN0ZW5lclxyXG4gICAgICApO1xyXG4gICAgICBjaGFuZ2VzWydpbWFnZUVkaXRvciddLmN1cnJlbnRWYWx1ZT8ub24oXHJcbiAgICAgICAgZXZlbnROYW1lcy5PQkpFQ1RfQURERUQsXHJcbiAgICAgICAgdGhhdC5vbk9iamVjdEFkZGVkRXZlbnRMaXN0ZW5lclxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5pbWFnZUVkaXRvcikge1xyXG4gICAgICB0aGlzLmltYWdlRWRpdG9yLm9mZihcclxuICAgICAgICBldmVudE5hbWVzLk9CSkVDVF9BQ1RJVkFURUQsXHJcbiAgICAgICAgdGhpcy5vbk9iamVjdEFjdGl2YXRlZEV2ZW50TGlzdGVuZXJcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5pbWFnZUVkaXRvci5vZmYoXHJcbiAgICAgICAgZXZlbnROYW1lcy5PQkpFQ1RfQURERUQsXHJcbiAgICAgICAgdGhpcy5vbk9iamVjdEFkZGVkRXZlbnRMaXN0ZW5lclxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbk9iamVjdEFjdGl2YXRlZChwcm9wcykge1xyXG4gICAgdGhpcy5hY3RpdmVPYmplY3RJZCA9IHByb3BzPy5pZDtcclxuICAgIHRoaXMuY2hlY2tBY3RpdmVPYmplY3QodGhpcy5hY3RpdmVPYmplY3RJZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uT2JqZWN0QWRkZWQocHJvcHMpIHtcclxuICAgIGlmIChwcm9wcyAmJiBwcm9wcy50eXBlID09PSAnaWNvbicpIHtcclxuICAgICAgdGhpcy5zZXRBY3RpdmVJY29uVHlwZSh0aGlzLmljb25UeXBlLCBmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNoZWNrQWN0aXZlT2JqZWN0KGFjdGl2ZU9iamVjdElkOiBudW1iZXIpIHtcclxuICAgIGlmIChhY3RpdmVPYmplY3RJZCAhPSBudWxsKSB7XHJcbiAgICAgIHZhciBwcm9wcyA9IHRoaXMuaW1hZ2VFZGl0b3I/LmdldE9iamVjdFByb3BlcnRpZXMoYWN0aXZlT2JqZWN0SWQsIFtcclxuICAgICAgICAndHlwZScsXHJcbiAgICAgICAgJ2ZpbGwnLFxyXG4gICAgICBdKTtcclxuICAgICAgaWYgKHByb3BzICYmIHByb3BzLnR5cGUgPT09ICdpY29uJykge1xyXG4gICAgICAgIHRoaXMuaWNvbkNvbG9yID1cclxuICAgICAgICAgIHR5cGVvZiBwcm9wcy5maWxsID09ICdvYmplY3QnICYmIHByb3BzLmZpbGwudHlwZSA9PSAnY29sb3InXHJcbiAgICAgICAgICAgID8gcHJvcHMuZmlsbC5jb2xvclxyXG4gICAgICAgICAgICA6IHByb3BzLmZpbGwgPT0gbnVsbCB8fCBwcm9wcy5maWxsLnRyaW0oKSA9PSAnJ1xyXG4gICAgICAgICAgICA/ICdyZ2JhKDI1NSwgMTg3LCA1OSwgMSknXHJcbiAgICAgICAgICAgIDogcHJvcHMuZmlsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0QWN0aXZlSWNvblR5cGUoXHJcbiAgICBuZXdJY29uVHlwZTpcclxuICAgICAgfCAnaWNvbi1hcnJvdydcclxuICAgICAgfCAnaWNvbi1hcnJvdy0yJ1xyXG4gICAgICB8ICdpY29uLWFycm93LTMnXHJcbiAgICAgIHwgJ2ljb24tc3RhcidcclxuICAgICAgfCAnaWNvbi1zdGFyLTInXHJcbiAgICAgIHwgJ2ljb24tcG9seWdvbidcclxuICAgICAgfCAnaWNvbi1sb2NhdGlvbidcclxuICAgICAgfCAnaWNvbi1oZWFydCdcclxuICAgICAgfCAnaWNvbi1idWJibGUnLFxyXG4gICAgZGlzY2FyZFNlbGVjdGlvbjogYm9vbGVhbiA9IHRydWVcclxuICApIHtcclxuICAgIGlmIChkaXNjYXJkU2VsZWN0aW9uKSB7XHJcbiAgICAgIGNsZWFyU2VsZWN0aW9uKHRoaXMuaW1hZ2VFZGl0b3IpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuaWNvblR5cGUgIT0gbmV3SWNvblR5cGUpIHtcclxuICAgICAgdGhpcy5pY29uVHlwZSA9IG5ld0ljb25UeXBlO1xyXG4gICAgICB0aGlzLmltYWdlRWRpdG9yLnN0YXJ0RHJhd2luZ01vZGUoJ0lDT04nKTtcclxuICAgICAgdGhpcy5pbWFnZUVkaXRvci5zZXREcmF3aW5nSWNvbihuZXdJY29uVHlwZSwgdGhpcy5pY29uQ29sb3IpO1xyXG4gICAgICB0aGlzLmltYWdlRWRpdG9yLmNoYW5nZUN1cnNvcignY3Jvc3NoYWlyJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmljb25UeXBlID0gbnVsbDtcclxuICAgICAgdGhpcy5pbWFnZUVkaXRvci5zdG9wRHJhd2luZ01vZGUoKTtcclxuICAgICAgdGhpcy5pbWFnZUVkaXRvci5jaGFuZ2VDdXJzb3IoJ2RlZmF1bHQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGljb25Db2xvckNoYW5nZWQoY3VycmVudENvbG9yOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuaWNvbkNoYW5nZUFjdGl2ZU9iamVjdCgpO1xyXG4gIH1cclxuXHJcbiAgaWNvbkNoYW5nZUFjdGl2ZU9iamVjdCgpIHtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5hY3RpdmVPYmplY3RJZCAhPSBudWxsICYmXHJcbiAgICAgIGdldEFjdGl2ZU9iamVjdElkKHRoaXMuaW1hZ2VFZGl0b3IpID09IHRoaXMuYWN0aXZlT2JqZWN0SWRcclxuICAgICkge1xyXG4gICAgICB2YXIgcHJvcHMgPSB0aGlzLmltYWdlRWRpdG9yLmdldE9iamVjdFByb3BlcnRpZXMoXHJcbiAgICAgICAgdGhpcy5hY3RpdmVPYmplY3RJZCxcclxuICAgICAgICAndHlwZSdcclxuICAgICAgKTtcclxuICAgICAgaWYgKHByb3BzLnR5cGUgPT09ICdpY29uJykge1xyXG4gICAgICAgIHRoaXMuaW1hZ2VFZGl0b3Iuc2V0T2JqZWN0UHJvcGVydGllcyh0aGlzLmFjdGl2ZU9iamVjdElkLCB7XHJcbiAgICAgICAgICBmaWxsOiB0aGlzLmljb25Db2xvcixcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVnaXN0ZXJJY29uKG9iaikge1xyXG4gICAgdGhpcy5pbWFnZUVkaXRvci5yZWdpc3Rlckljb25zKG9iaik7XHJcbiAgfVxyXG5cclxuICBvbkljb25DaG9zZW4oZXZlbnQpIHtcclxuICAgIGxldCBzZWxlY3RlZEZpbGUgPSBldmVudC50YXJnZXQuZmlsZXNbMF07XHJcbiAgICBpZiAoc2VsZWN0ZWRGaWxlICE9IG51bGwpIHtcclxuICAgICAgdmFyIGltZ1VybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc2VsZWN0ZWRGaWxlKTtcclxuICAgICAgY29uc3QgaW1hZ2V0cmFjZXIgPSBuZXcgSW1hZ2VUcmFjZXIoKTtcclxuICAgICAgaW1hZ2V0cmFjZXIuaW1hZ2VUb1NWRyhcclxuICAgICAgICBpbWdVcmwsXHJcbiAgICAgICAgKHN2Z3N0cikgPT4ge1xyXG4gICAgICAgICAgY29uc3QgWywgc3ZnUGF0aF0gPSBzdmdzdHIubWF0Y2goL3BhdGhbXj5dKmQ9XCIoW15cIl0qKVwiLyk7XHJcbiAgICAgICAgICBjb25zdCBpY29uT2JqID0ge307XHJcbiAgICAgICAgICBpY29uT2JqW3NlbGVjdGVkRmlsZS5uYW1lXSA9IHN2Z1BhdGg7XHJcbiAgICAgICAgICB0aGlzLnJlZ2lzdGVySWNvbihpY29uT2JqKTtcclxuICAgICAgICAgIHRoaXMuaW1hZ2VFZGl0b3IuYWRkSWNvbihzZWxlY3RlZEZpbGUubmFtZSwge1xyXG4gICAgICAgICAgICBmaWxsOiB0aGlzLmljb25Db2xvcixcclxuICAgICAgICAgICAgbGVmdDogMTAwLFxyXG4gICAgICAgICAgICB0b3A6IDEwMCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgSW1hZ2VUcmFjZXIudHJhY2VyRGVmYXVsdE9wdGlvbigpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0dWktaW1hZ2UtZWRpdG9yLW1lbnUtaWNvblwiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwidHVpLWltYWdlLWVkaXRvci1zdWJtZW51LWl0ZW0gdHVpLWltYWdlLWVkaXRvci1kLWZsZXggdHVpLWltYWdlLWVkaXRvci1mbGV4LXJvdyB0dWktaW1hZ2UtZWRpdG9yLWFsaWduLWl0ZW1zLWNlbnRlciB0dWktaW1hZ2UtZWRpdG9yLWp1c3RpZnktY29udGVudC1jZW50ZXIgdHVpLWltYWdlLWVkaXRvci1mbGV4LW5vd3JhcFwiXHJcbiAgPlxyXG4gICAgPGRpdiBjbGFzcz1cInR1aS1pbWFnZS1lZGl0b3ItZC1mbGV4IHR1aS1pbWFnZS1lZGl0b3ItZmxleC1yb3cgdHVpLWltYWdlLWVkaXRvci1mbGV4LW5vd3JhcCB0dWktaW1hZ2UtZWRpdG9yLW92ZXJmbG93YWJsZS14IHR1aS1pbWFnZS1lZGl0b3ItcHktM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGllLWljb24tYWRkLWJ1dHRvbiB0dWktaW1hZ2UtZWRpdG9yLWQtZmxleCB0dWktaW1hZ2UtZWRpdG9yLWZsZXgtcm93XCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgW2NsYXNzXT1cIlxyXG4gICAgICAgICAgICAndHVpLWltYWdlLWVkaXRvci1idXR0b24gJyArXHJcbiAgICAgICAgICAgIChpY29uVHlwZSA9PSAnaWNvbi1hcnJvdycgPyAnYWN0aXZlJyA6ICcnKVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGRhdGEtaWNvbnR5cGU9XCJpY29uLWFycm93XCJcclxuICAgICAgICAgIChjbGljayk9XCJzZXRBY3RpdmVJY29uVHlwZSgnaWNvbi1hcnJvdycpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8c3ZnIGNsYXNzPVwic3ZnX2ljLXN1Ym1lbnVcIj5cclxuICAgICAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjaWMtaWNvbi1hcnJvd1wiIGNsYXNzPVwibm9ybWFsIHVzZS1kZWZhdWx0XCI+PC91c2U+XHJcbiAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2ljLWljb24tYXJyb3dcIiBjbGFzcz1cImFjdGl2ZSB1c2UtZGVmYXVsdFwiPjwvdXNlPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICB7eyBcInR1aS1pbWFnZS1lZGl0b3ItYW5ndWxhci1zdWJtZW51cy1pY29uLWFycm93MVwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIFtjbGFzc109XCJcclxuICAgICAgICAgICAgJ3R1aS1pbWFnZS1lZGl0b3ItYnV0dG9uICcgK1xyXG4gICAgICAgICAgICAoaWNvblR5cGUgPT0gJ2ljb24tYXJyb3ctMicgPyAnYWN0aXZlJyA6ICcnKVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGRhdGEtaWNvbnR5cGU9XCJpY29uLWFycm93LTJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInNldEFjdGl2ZUljb25UeXBlKCdpY29uLWFycm93LTInKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPHN2ZyBjbGFzcz1cInN2Z19pYy1zdWJtZW51XCI+XHJcbiAgICAgICAgICAgICAgPHVzZVxyXG4gICAgICAgICAgICAgICAgeGxpbms6aHJlZj1cIiNpYy1pY29uLWFycm93LTJcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJub3JtYWwgdXNlLWRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgID48L3VzZT5cclxuICAgICAgICAgICAgICA8dXNlXHJcbiAgICAgICAgICAgICAgICB4bGluazpocmVmPVwiI2ljLWljb24tYXJyb3ctMlwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGl2ZSB1c2UtZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgPjwvdXNlPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICB7eyBcInR1aS1pbWFnZS1lZGl0b3ItYW5ndWxhci1zdWJtZW51cy1pY29uLWFycm93MlwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIFtjbGFzc109XCJcclxuICAgICAgICAgICAgJ3R1aS1pbWFnZS1lZGl0b3ItYnV0dG9uICcgK1xyXG4gICAgICAgICAgICAoaWNvblR5cGUgPT0gJ2ljb24tYXJyb3ctMycgPyAnYWN0aXZlJyA6ICcnKVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGRhdGEtaWNvbnR5cGU9XCJpY29uLWFycm93LTNcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInNldEFjdGl2ZUljb25UeXBlKCdpY29uLWFycm93LTMnKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPHN2ZyBjbGFzcz1cInN2Z19pYy1zdWJtZW51XCI+XHJcbiAgICAgICAgICAgICAgPHVzZVxyXG4gICAgICAgICAgICAgICAgeGxpbms6aHJlZj1cIiNpYy1pY29uLWFycm93LTNcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJub3JtYWwgdXNlLWRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgID48L3VzZT5cclxuICAgICAgICAgICAgICA8dXNlXHJcbiAgICAgICAgICAgICAgICB4bGluazpocmVmPVwiI2ljLWljb24tYXJyb3ctM1wiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGl2ZSB1c2UtZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgPjwvdXNlPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICB7eyBcInR1aS1pbWFnZS1lZGl0b3ItYW5ndWxhci1zdWJtZW51cy1pY29uLWFycm93M1wiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIFtjbGFzc109XCJcclxuICAgICAgICAgICAgJ3R1aS1pbWFnZS1lZGl0b3ItYnV0dG9uICcgK1xyXG4gICAgICAgICAgICAoaWNvblR5cGUgPT0gJ2ljb24tc3RhcicgPyAnYWN0aXZlJyA6ICcnKVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGRhdGEtaWNvbnR5cGU9XCJpY29uLXN0YXJcIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInNldEFjdGl2ZUljb25UeXBlKCdpY29uLXN0YXInKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPHN2ZyBjbGFzcz1cInN2Z19pYy1zdWJtZW51XCI+XHJcbiAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2ljLWljb24tc3RhclwiIGNsYXNzPVwibm9ybWFsIHVzZS1kZWZhdWx0XCI+PC91c2U+XHJcbiAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2ljLWljb24tc3RhclwiIGNsYXNzPVwiYWN0aXZlIHVzZS1kZWZhdWx0XCI+PC91c2U+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgIHt7IFwidHVpLWltYWdlLWVkaXRvci1hbmd1bGFyLXN1Ym1lbnVzLWljb24tc3RhcjFcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBbY2xhc3NdPVwiXHJcbiAgICAgICAgICAgICd0dWktaW1hZ2UtZWRpdG9yLWJ1dHRvbiAnICtcclxuICAgICAgICAgICAgKGljb25UeXBlID09ICdpY29uLXN0YXItMicgPyAnYWN0aXZlJyA6ICcnKVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGRhdGEtaWNvbnR5cGU9XCJpY29uLXN0YXItMlwiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2V0QWN0aXZlSWNvblR5cGUoJ2ljb24tc3Rhci0yJylcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJzdmdfaWMtc3VibWVudVwiPlxyXG4gICAgICAgICAgICAgIDx1c2VcclxuICAgICAgICAgICAgICAgIHhsaW5rOmhyZWY9XCIjaWMtaWNvbi1zdGFyLTJcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJub3JtYWwgdXNlLWRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgID48L3VzZT5cclxuICAgICAgICAgICAgICA8dXNlXHJcbiAgICAgICAgICAgICAgICB4bGluazpocmVmPVwiI2ljLWljb24tc3Rhci0yXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aXZlIHVzZS1kZWZhdWx0XCJcclxuICAgICAgICAgICAgICA+PC91c2U+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgIHt7IFwidHVpLWltYWdlLWVkaXRvci1hbmd1bGFyLXN1Ym1lbnVzLWljb24tc3RhcjJcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgW2NsYXNzXT1cIlxyXG4gICAgICAgICAgICAndHVpLWltYWdlLWVkaXRvci1idXR0b24gJyArXHJcbiAgICAgICAgICAgIChpY29uVHlwZSA9PSAnaWNvbi1wb2x5Z29uJyA/ICdhY3RpdmUnIDogJycpXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgZGF0YS1pY29udHlwZT1cImljb24tcG9seWdvblwiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2V0QWN0aXZlSWNvblR5cGUoJ2ljb24tcG9seWdvbicpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8c3ZnIGNsYXNzPVwic3ZnX2ljLXN1Ym1lbnVcIj5cclxuICAgICAgICAgICAgICA8dXNlXHJcbiAgICAgICAgICAgICAgICB4bGluazpocmVmPVwiI2ljLWljb24tcG9seWdvblwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm5vcm1hbCB1c2UtZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgPjwvdXNlPlxyXG4gICAgICAgICAgICAgIDx1c2VcclxuICAgICAgICAgICAgICAgIHhsaW5rOmhyZWY9XCIjaWMtaWNvbi1wb2x5Z29uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aXZlIHVzZS1kZWZhdWx0XCJcclxuICAgICAgICAgICAgICA+PC91c2U+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgIHt7IFwidHVpLWltYWdlLWVkaXRvci1hbmd1bGFyLXN1Ym1lbnVzLWljb24tcG9seWdvblwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBbY2xhc3NdPVwiXHJcbiAgICAgICAgICAgICd0dWktaW1hZ2UtZWRpdG9yLWJ1dHRvbiAnICtcclxuICAgICAgICAgICAgKGljb25UeXBlID09ICdpY29uLWxvY2F0aW9uJyA/ICdhY3RpdmUnIDogJycpXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgZGF0YS1pY29udHlwZT1cImljb24tbG9jYXRpb25cIlxyXG4gICAgICAgICAgKGNsaWNrKT1cInNldEFjdGl2ZUljb25UeXBlKCdpY29uLWxvY2F0aW9uJylcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJzdmdfaWMtc3VibWVudVwiPlxyXG4gICAgICAgICAgICAgIDx1c2VcclxuICAgICAgICAgICAgICAgIHhsaW5rOmhyZWY9XCIjaWMtaWNvbi1sb2NhdGlvblwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm5vcm1hbCB1c2UtZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgPjwvdXNlPlxyXG4gICAgICAgICAgICAgIDx1c2VcclxuICAgICAgICAgICAgICAgIHhsaW5rOmhyZWY9XCIjaWMtaWNvbi1sb2NhdGlvblwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGl2ZSB1c2UtZGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgPjwvdXNlPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICB7eyBcInR1aS1pbWFnZS1lZGl0b3ItYW5ndWxhci1zdWJtZW51cy1pY29uLWxvY2F0aW9uXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIFtjbGFzc109XCJcclxuICAgICAgICAgICAgJ3R1aS1pbWFnZS1lZGl0b3ItYnV0dG9uICcgK1xyXG4gICAgICAgICAgICAoaWNvblR5cGUgPT0gJ2ljb24taGVhcnQnID8gJ2FjdGl2ZScgOiAnJylcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBkYXRhLWljb250eXBlPVwiaWNvbi1oZWFydFwiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2V0QWN0aXZlSWNvblR5cGUoJ2ljb24taGVhcnQnKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPHN2ZyBjbGFzcz1cInN2Z19pYy1zdWJtZW51XCI+XHJcbiAgICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2ljLWljb24taGVhcnRcIiBjbGFzcz1cIm5vcm1hbCB1c2UtZGVmYXVsdFwiPjwvdXNlPlxyXG4gICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj1cIiNpYy1pY29uLWhlYXJ0XCIgY2xhc3M9XCJhY3RpdmUgdXNlLWRlZmF1bHRcIj48L3VzZT5cclxuICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgICAge3sgXCJ0dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXItc3VibWVudXMtaWNvbi1oZWFydFwiIHwgdHJhbnNsYXRlIH19XHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBbY2xhc3NdPVwiXHJcbiAgICAgICAgICAgICd0dWktaW1hZ2UtZWRpdG9yLWJ1dHRvbiAnICtcclxuICAgICAgICAgICAgKGljb25UeXBlID09ICdpY29uLWJ1YmJsZScgPyAnYWN0aXZlJyA6ICcnKVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIGRhdGEtaWNvbnR5cGU9XCJpY29uLWJ1YmJsZVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwic2V0QWN0aXZlSWNvblR5cGUoJ2ljb24tYnViYmxlJylcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJzdmdfaWMtc3VibWVudVwiPlxyXG4gICAgICAgICAgICAgIDx1c2VcclxuICAgICAgICAgICAgICAgIHhsaW5rOmhyZWY9XCIjaWMtaWNvbi1idWJibGVcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJub3JtYWwgdXNlLWRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgID48L3VzZT5cclxuICAgICAgICAgICAgICA8dXNlXHJcbiAgICAgICAgICAgICAgICB4bGluazpocmVmPVwiI2ljLWljb24tYnViYmxlXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWN0aXZlIHVzZS1kZWZhdWx0XCJcclxuICAgICAgICAgICAgICA+PC91c2U+XHJcbiAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgIHt7IFwidHVpLWltYWdlLWVkaXRvci1hbmd1bGFyLXN1Ym1lbnVzLWljb24tYnViYmxlXCIgfCB0cmFuc2xhdGUgfX1cclxuICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidHVpLWltYWdlLWVkaXRvci1wYXJ0aXRpb25cIj5cclxuICAgICAgICA8ZGl2PjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRpZS1pY29uLWFkZC1idXR0b25cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidHVpLWltYWdlLWVkaXRvci1idXR0b25cIiBzdHlsZT1cIm1hcmdpbjogMFwiPlxyXG4gICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxyXG4gICAgICAgICAgICAgIGFjY2VwdD1cImltYWdlLypcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwidGllLWljb24taW1hZ2UtZmlsZVwiXHJcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkljb25DaG9zZW4oJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJzdmdfaWMtc3VibWVudVwiPlxyXG4gICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj1cIiNpYy1pY29uLWxvYWRcIiBjbGFzcz1cIm5vcm1hbCB1c2UtZGVmYXVsdFwiPjwvdXNlPlxyXG4gICAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj1cIiNpYy1pY29uLWxvYWRcIiBjbGFzcz1cImFjdGl2ZSB1c2UtZGVmYXVsdFwiPjwvdXNlPlxyXG4gICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAgICB7e1xyXG4gICAgICAgICAgICAgIFwidHVpLWltYWdlLWVkaXRvci1hbmd1bGFyLXN1Ym1lbnVzLWljb24tY3VzdG9tSWNvblwiIHwgdHJhbnNsYXRlXHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInR1aS1pbWFnZS1lZGl0b3ItcGFydGl0aW9uXCI+XHJcbiAgICAgICAgPGRpdj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJ0aWUtaWNvbi1jb2xvciB0dWktaW1hZ2UtZWRpdG9yLWJ1dHRvbiB0dWktaW1hZ2UtZWRpdG9yLWJ1dHRvbi1jb2xvci1waWNrZXIgdHVpLWltYWdlLWVkaXRvci1kLWZsZXggdHVpLWltYWdlLWVkaXRvci1mbGV4LWNvbHVtblwiXHJcbiAgICAgICAgICB0aXRsZT1cIkNvbG9yXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0aWUtaWNvbi1jb2xvci1waWNrZXJcIlxyXG4gICAgICAgICAgICAgIFsoY29sb3JQaWNrZXIpXT1cImljb25Db2xvclwiXHJcbiAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiaWNvbkNvbG9yXCJcclxuICAgICAgICAgICAgICBbY3BPdXRwdXRGb3JtYXRdPVwiJ3JnYmEnXCJcclxuICAgICAgICAgICAgICBbY3BQcmVzZXRDb2xvcnNdPVwiZGVmYXVsdEljb25Db2xvcnNcIlxyXG4gICAgICAgICAgICAgIChjb2xvclBpY2tlckNoYW5nZSk9XCJpY29uQ29sb3JDaGFuZ2VkKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIFtjcFVzZVJvb3RWaWV3Q29udGFpbmVyXT1cInRydWVcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIHt7IFwidHVpLWltYWdlLWVkaXRvci1hbmd1bGFyLXN1Ym1lbnVzLWljb24tY29sb3JcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj48L2xhYmVsXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Component, Input, ViewChild, } from '@angular/core';
|
|
2
|
+
import { eventNames, historyNames } from '../../consts';
|
|
3
|
+
import { getActiveObjectId, isFileApiSupported } from '../../utils';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@ngx-translate/core";
|
|
6
|
+
export class MaskComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.onObjectActivatedEventListener = this.onObjectActivated.bind(this);
|
|
9
|
+
}
|
|
10
|
+
ngOnChanges(changes) {
|
|
11
|
+
var that = this;
|
|
12
|
+
if (changes['imageEditor']) {
|
|
13
|
+
this.activeObjectId = getActiveObjectId(changes['imageEditor'].currentValue);
|
|
14
|
+
changes['imageEditor'].previousValue?.off(eventNames.OBJECT_ACTIVATED, that.onObjectActivatedEventListener);
|
|
15
|
+
changes['imageEditor'].currentValue?.on(eventNames.OBJECT_ACTIVATED, that.onObjectActivatedEventListener);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
ngOnDestroy() {
|
|
19
|
+
if (this.imageEditor) {
|
|
20
|
+
this.imageEditor.off(eventNames.OBJECT_ACTIVATED, this.onObjectActivatedEventListener);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
onObjectActivated(props) {
|
|
24
|
+
this.activeObjectId = props?.id;
|
|
25
|
+
}
|
|
26
|
+
onMaskChosen(event) {
|
|
27
|
+
let selectedFile = event.target.files[0];
|
|
28
|
+
if (selectedFile != null) {
|
|
29
|
+
if (!isFileApiSupported()) {
|
|
30
|
+
alert('This browser does not support file-api');
|
|
31
|
+
}
|
|
32
|
+
let imgUrl = URL.createObjectURL(selectedFile);
|
|
33
|
+
this.imageEditor
|
|
34
|
+
.loadImageFromURL(this.imageEditor.toDataURL(), 'FilterImage')
|
|
35
|
+
.then(() => {
|
|
36
|
+
this.imageEditor.addImageObject(imgUrl).then(() => {
|
|
37
|
+
URL.revokeObjectURL(selectedFile);
|
|
38
|
+
});
|
|
39
|
+
this.imageEditor._invoker.fire(eventNames.EXECUTE_COMMAND, historyNames.LOAD_MASK_IMAGE);
|
|
40
|
+
if (this.fileInput != null) {
|
|
41
|
+
this.fileInput.nativeElement.value = '';
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
applyMask() {
|
|
47
|
+
if (this.activeObjectId != null &&
|
|
48
|
+
getActiveObjectId(this.imageEditor) == this.activeObjectId) {
|
|
49
|
+
var props = this.imageEditor.getObjectProperties(this.activeObjectId, 'type');
|
|
50
|
+
if (props.type === 'image') {
|
|
51
|
+
this.imageEditor.applyFilter('mask', {
|
|
52
|
+
maskObjId: this.activeObjectId,
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
MaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MaskComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
59
|
+
MaskComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: MaskComponent, selector: "tui-image-editor-submenus-mask", inputs: { imageEditor: "imageEditor" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"tui-image-editor-menu-mask\">\r\n <div class=\"tui-image-editor-submenu-item\">\r\n <div class=\"tui-image-editor-d-flex tui-image-editor-justify-content-center tui-image-editor-my-3\">\r\n <div class=\"tui-image-editor-button\">\r\n <div>\r\n <input\r\n #fileInput\r\n type=\"file\"\r\n accept=\"image/*\"\r\n class=\"tie-mask-image-file\"\r\n (change)=\"onMaskChosen($event)\"\r\n />\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-mask-load\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-mask-load\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{\r\n \"tui-image-editor-angular-submenus-mask-loadMaskImage\" | translate\r\n }}\r\n </label>\r\n </div>\r\n </div>\r\n <div\r\n class=\"tie-mask-apply tui-image-editor-newline apply tui-image-editor-my-3\"\r\n (click)=\"applyMask()\"\r\n >\r\n <div\r\n class=\"tui-image-editor-button apply tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap tui-image-editor-align-items-center tui-image-editor-justify-content-center\"\r\n >\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-apply\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-apply\" class=\"active use-default\"></use>\r\n </svg>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-mask-apply\" | translate }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MaskComponent, decorators: [{
|
|
61
|
+
type: Component,
|
|
62
|
+
args: [{ selector: 'tui-image-editor-submenus-mask', template: "<div class=\"tui-image-editor-menu-mask\">\r\n <div class=\"tui-image-editor-submenu-item\">\r\n <div class=\"tui-image-editor-d-flex tui-image-editor-justify-content-center tui-image-editor-my-3\">\r\n <div class=\"tui-image-editor-button\">\r\n <div>\r\n <input\r\n #fileInput\r\n type=\"file\"\r\n accept=\"image/*\"\r\n class=\"tie-mask-image-file\"\r\n (change)=\"onMaskChosen($event)\"\r\n />\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-mask-load\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-mask-load\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{\r\n \"tui-image-editor-angular-submenus-mask-loadMaskImage\" | translate\r\n }}\r\n </label>\r\n </div>\r\n </div>\r\n <div\r\n class=\"tie-mask-apply tui-image-editor-newline apply tui-image-editor-my-3\"\r\n (click)=\"applyMask()\"\r\n >\r\n <div\r\n class=\"tui-image-editor-button apply tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap tui-image-editor-align-items-center tui-image-editor-justify-content-center\"\r\n >\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-apply\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-apply\" class=\"active use-default\"></use>\r\n </svg>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-mask-apply\" | translate }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
63
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageEditor: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], fileInput: [{
|
|
66
|
+
type: ViewChild,
|
|
67
|
+
args: ['fileInput']
|
|
68
|
+
}] } });
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXIyL3NyYy9saWIvc3VibWVudXMvbWFzay9tYXNrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1aS1pbWFnZS1lZGl0b3ItYW5ndWxhcjIvc3JjL2xpYi9zdWJtZW51cy9tYXNrL21hc2suY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBS0wsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3hELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7O0FBT3BFLE1BQU0sT0FBTyxhQUFhO0lBTXhCO1FBQ0UsSUFBSSxDQUFDLDhCQUE4QixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7UUFDaEIsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDMUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxpQkFBaUIsQ0FDckMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFlBQVksQ0FDcEMsQ0FBQztZQUNGLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUN2QyxVQUFVLENBQUMsZ0JBQWdCLEVBQzNCLElBQUksQ0FBQyw4QkFBOEIsQ0FDcEMsQ0FBQztZQUNGLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUNyQyxVQUFVLENBQUMsZ0JBQWdCLEVBQzNCLElBQUksQ0FBQyw4QkFBOEIsQ0FDcEMsQ0FBQztTQUNIO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQ2xCLFVBQVUsQ0FBQyxnQkFBZ0IsRUFDM0IsSUFBSSxDQUFDLDhCQUE4QixDQUNwQyxDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRU8saUJBQWlCLENBQUMsS0FBSztRQUM3QixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssRUFBRSxFQUFFLENBQUM7SUFDbEMsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFLO1FBQ2hCLElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLElBQUksWUFBWSxJQUFJLElBQUksRUFBRTtZQUN4QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtnQkFDekIsS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7YUFDakQ7WUFFRCxJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxXQUFXO2lCQUNiLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEVBQUUsYUFBYSxDQUFDO2lCQUM3RCxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNULElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7b0JBQ2hELEdBQUcsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3BDLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDNUIsVUFBVSxDQUFDLGVBQWUsRUFDMUIsWUFBWSxDQUFDLGVBQWUsQ0FDN0IsQ0FBQztnQkFDRixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxFQUFFO29CQUMxQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2lCQUN6QztZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ047SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQ0UsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJO1lBQzNCLGlCQUFpQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUMxRDtZQUNBLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQzlDLElBQUksQ0FBQyxjQUFjLEVBQ25CLE1BQU0sQ0FDUCxDQUFDO1lBQ0YsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtnQkFDMUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFO29CQUNuQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGNBQWM7aUJBQy9CLENBQUMsQ0FBQzthQUNKO1NBQ0Y7SUFDSCxDQUFDOzswR0FoRlUsYUFBYTs4RkFBYixhQUFhLDJPQ2xCMUIsd3BEQTBDQTsyRkR4QmEsYUFBYTtrQkFMekIsU0FBUzsrQkFDRSxnQ0FBZ0M7MEVBS2pDLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR2tCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgU2ltcGxlQ2hhbmdlcyxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGV2ZW50TmFtZXMsIGhpc3RvcnlOYW1lcyB9IGZyb20gJy4uLy4uL2NvbnN0cyc7XHJcbmltcG9ydCB7IGdldEFjdGl2ZU9iamVjdElkLCBpc0ZpbGVBcGlTdXBwb3J0ZWQgfSBmcm9tICcuLi8uLi91dGlscyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3R1aS1pbWFnZS1lZGl0b3Itc3VibWVudXMtbWFzaycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21hc2suY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21hc2suY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFza0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBpbWFnZUVkaXRvcjogYW55O1xyXG4gIHB1YmxpYyBhY3RpdmVPYmplY3RJZDogbnVtYmVyO1xyXG4gIHB1YmxpYyBvbk9iamVjdEFjdGl2YXRlZEV2ZW50TGlzdGVuZXI6IGFueTtcclxuICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnKSBmaWxlSW5wdXQ6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5vbk9iamVjdEFjdGl2YXRlZEV2ZW50TGlzdGVuZXIgPSB0aGlzLm9uT2JqZWN0QWN0aXZhdGVkLmJpbmQodGhpcyk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICB2YXIgdGhhdCA9IHRoaXM7XHJcbiAgICBpZiAoY2hhbmdlc1snaW1hZ2VFZGl0b3InXSkge1xyXG4gICAgICB0aGlzLmFjdGl2ZU9iamVjdElkID0gZ2V0QWN0aXZlT2JqZWN0SWQoXHJcbiAgICAgICAgY2hhbmdlc1snaW1hZ2VFZGl0b3InXS5jdXJyZW50VmFsdWVcclxuICAgICAgKTtcclxuICAgICAgY2hhbmdlc1snaW1hZ2VFZGl0b3InXS5wcmV2aW91c1ZhbHVlPy5vZmYoXHJcbiAgICAgICAgZXZlbnROYW1lcy5PQkpFQ1RfQUNUSVZBVEVELFxyXG4gICAgICAgIHRoYXQub25PYmplY3RBY3RpdmF0ZWRFdmVudExpc3RlbmVyXHJcbiAgICAgICk7XHJcbiAgICAgIGNoYW5nZXNbJ2ltYWdlRWRpdG9yJ10uY3VycmVudFZhbHVlPy5vbihcclxuICAgICAgICBldmVudE5hbWVzLk9CSkVDVF9BQ1RJVkFURUQsXHJcbiAgICAgICAgdGhhdC5vbk9iamVjdEFjdGl2YXRlZEV2ZW50TGlzdGVuZXJcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaW1hZ2VFZGl0b3IpIHtcclxuICAgICAgdGhpcy5pbWFnZUVkaXRvci5vZmYoXHJcbiAgICAgICAgZXZlbnROYW1lcy5PQkpFQ1RfQUNUSVZBVEVELFxyXG4gICAgICAgIHRoaXMub25PYmplY3RBY3RpdmF0ZWRFdmVudExpc3RlbmVyXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uT2JqZWN0QWN0aXZhdGVkKHByb3BzKSB7XHJcbiAgICB0aGlzLmFjdGl2ZU9iamVjdElkID0gcHJvcHM/LmlkO1xyXG4gIH1cclxuXHJcbiAgb25NYXNrQ2hvc2VuKGV2ZW50KSB7XHJcbiAgICBsZXQgc2VsZWN0ZWRGaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xyXG4gICAgaWYgKHNlbGVjdGVkRmlsZSAhPSBudWxsKSB7XHJcbiAgICAgIGlmICghaXNGaWxlQXBpU3VwcG9ydGVkKCkpIHtcclxuICAgICAgICBhbGVydCgnVGhpcyBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgZmlsZS1hcGknKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgbGV0IGltZ1VybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoc2VsZWN0ZWRGaWxlKTtcclxuICAgICAgdGhpcy5pbWFnZUVkaXRvclxyXG4gICAgICAgIC5sb2FkSW1hZ2VGcm9tVVJMKHRoaXMuaW1hZ2VFZGl0b3IudG9EYXRhVVJMKCksICdGaWx0ZXJJbWFnZScpXHJcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pbWFnZUVkaXRvci5hZGRJbWFnZU9iamVjdChpbWdVcmwpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKHNlbGVjdGVkRmlsZSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuaW1hZ2VFZGl0b3IuX2ludm9rZXIuZmlyZShcclxuICAgICAgICAgICAgZXZlbnROYW1lcy5FWEVDVVRFX0NPTU1BTkQsXHJcbiAgICAgICAgICAgIGhpc3RvcnlOYW1lcy5MT0FEX01BU0tfSU1BR0VcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAodGhpcy5maWxlSW5wdXQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhcHBseU1hc2soKSB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuYWN0aXZlT2JqZWN0SWQgIT0gbnVsbCAmJlxyXG4gICAgICBnZXRBY3RpdmVPYmplY3RJZCh0aGlzLmltYWdlRWRpdG9yKSA9PSB0aGlzLmFjdGl2ZU9iamVjdElkXHJcbiAgICApIHtcclxuICAgICAgdmFyIHByb3BzID0gdGhpcy5pbWFnZUVkaXRvci5nZXRPYmplY3RQcm9wZXJ0aWVzKFxyXG4gICAgICAgIHRoaXMuYWN0aXZlT2JqZWN0SWQsXHJcbiAgICAgICAgJ3R5cGUnXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChwcm9wcy50eXBlID09PSAnaW1hZ2UnKSB7XHJcbiAgICAgICAgdGhpcy5pbWFnZUVkaXRvci5hcHBseUZpbHRlcignbWFzaycsIHtcclxuICAgICAgICAgIG1hc2tPYmpJZDogdGhpcy5hY3RpdmVPYmplY3RJZCxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwidHVpLWltYWdlLWVkaXRvci1tZW51LW1hc2tcIj5cclxuICA8ZGl2IGNsYXNzPVwidHVpLWltYWdlLWVkaXRvci1zdWJtZW51LWl0ZW1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0dWktaW1hZ2UtZWRpdG9yLWQtZmxleCB0dWktaW1hZ2UtZWRpdG9yLWp1c3RpZnktY29udGVudC1jZW50ZXIgdHVpLWltYWdlLWVkaXRvci1teS0zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0dWktaW1hZ2UtZWRpdG9yLWJ1dHRvblwiPlxyXG4gICAgICAgIDxkaXY+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgI2ZpbGVJbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwiZmlsZVwiXHJcbiAgICAgICAgICAgIGFjY2VwdD1cImltYWdlLypcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRpZS1tYXNrLWltYWdlLWZpbGVcIlxyXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uTWFza0Nob3NlbigkZXZlbnQpXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8c3ZnIGNsYXNzPVwic3ZnX2ljLXN1Ym1lbnVcIj5cclxuICAgICAgICAgICAgPHVzZSB4bGluazpocmVmPVwiI2ljLW1hc2stbG9hZFwiIGNsYXNzPVwibm9ybWFsIHVzZS1kZWZhdWx0XCI+PC91c2U+XHJcbiAgICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj1cIiNpYy1tYXNrLWxvYWRcIiBjbGFzcz1cImFjdGl2ZSB1c2UtZGVmYXVsdFwiPjwvdXNlPlxyXG4gICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGxhYmVsPlxyXG4gICAgICAgICAge3tcclxuICAgICAgICAgICAgXCJ0dWktaW1hZ2UtZWRpdG9yLWFuZ3VsYXItc3VibWVudXMtbWFzay1sb2FkTWFza0ltYWdlXCIgfCB0cmFuc2xhdGVcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgPC9sYWJlbD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJ0aWUtbWFzay1hcHBseSB0dWktaW1hZ2UtZWRpdG9yLW5ld2xpbmUgYXBwbHkgdHVpLWltYWdlLWVkaXRvci1teS0zXCJcclxuICAgICAgKGNsaWNrKT1cImFwcGx5TWFzaygpXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwidHVpLWltYWdlLWVkaXRvci1idXR0b24gYXBwbHkgdHVpLWltYWdlLWVkaXRvci1kLWZsZXggdHVpLWltYWdlLWVkaXRvci1mbGV4LXJvdyB0dWktaW1hZ2UtZWRpdG9yLWZsZXgtbm93cmFwIHR1aS1pbWFnZS1lZGl0b3ItYWxpZ24taXRlbXMtY2VudGVyIHR1aS1pbWFnZS1lZGl0b3ItanVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgICAgID5cclxuICAgICAgICA8c3ZnIGNsYXNzPVwic3ZnX2ljLW1lbnVcIj5cclxuICAgICAgICAgIDx1c2UgeGxpbms6aHJlZj1cIiNpYy1hcHBseVwiIGNsYXNzPVwibm9ybWFsIHVzZS1kZWZhdWx0XCI+PC91c2U+XHJcbiAgICAgICAgICA8dXNlIHhsaW5rOmhyZWY9XCIjaWMtYXBwbHlcIiBjbGFzcz1cImFjdGl2ZSB1c2UtZGVmYXVsdFwiPjwvdXNlPlxyXG4gICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDxsYWJlbD5cclxuICAgICAgICAgIHt7IFwidHVpLWltYWdlLWVkaXRvci1hbmd1bGFyLXN1Ym1lbnVzLW1hc2stYXBwbHlcIiB8IHRyYW5zbGF0ZSB9fVxyXG4gICAgICAgIDwvbGFiZWw+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/forms";
|
|
4
|
+
import * as i2 from "@ngx-translate/core";
|
|
5
|
+
export class RotateComponent {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.rotationChange = new EventEmitter();
|
|
8
|
+
}
|
|
9
|
+
async rotateImage(rotationAngle) {
|
|
10
|
+
const newAngle = this.rotation + rotationAngle;
|
|
11
|
+
const isRotatable = newAngle >= -360 && newAngle <= 360;
|
|
12
|
+
if (isRotatable) {
|
|
13
|
+
try {
|
|
14
|
+
await this.imageEditor?.setAngle(newAngle);
|
|
15
|
+
this.rotation = newAngle;
|
|
16
|
+
this.rotationChange.emit(newAngle);
|
|
17
|
+
}
|
|
18
|
+
catch (_err) {
|
|
19
|
+
console.error(_err);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async rotationChanged(currentRotationValue, isSilent) {
|
|
24
|
+
let rotationValueToUse = typeof currentRotationValue === 'number'
|
|
25
|
+
? currentRotationValue
|
|
26
|
+
: this.rotation;
|
|
27
|
+
let functionToExecute = () => {
|
|
28
|
+
this.imageEditor
|
|
29
|
+
?.setAngle(rotationValueToUse, isSilent)
|
|
30
|
+
.catch((_err) => {
|
|
31
|
+
console.error(_err);
|
|
32
|
+
})
|
|
33
|
+
.finally(() => {
|
|
34
|
+
this.rotationChange.emit(rotationValueToUse);
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
if (isSilent) {
|
|
38
|
+
functionToExecute();
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
setTimeout(functionToExecute);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
RotateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: RotateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
46
|
+
RotateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: RotateComponent, selector: "tui-image-editor-submenus-rotate", inputs: { imageEditor: "imageEditor", rotation: "rotation" }, outputs: { rotationChange: "rotationChange" }, ngImport: i0, template: "<div class=\"tui-image-editor-menu-rotate\">\r\n <div class=\"tui-image-editor-submenu-item\">\r\n <div class=\"tie-rotate-button tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-justify-content-center tui-image-editor-my-3\">\r\n <div class=\"tui-image-editor-button clockwise\" (click)=\"rotateImage(30)\">\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-rotate-clockwise\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-rotate-clockwise\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label> 30\u00B0 </label>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-button counterclockwise\"\r\n (click)=\"rotateImage(-30)\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-rotate-counterclockwise\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-rotate-counterclockwise\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label> -30\u00B0 </label>\r\n </div>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-newline tui-image-editor-range-wrap tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-justify-content-center tui-image-editor-my-3\"\r\n >\r\n <label class=\"range\">{{\r\n \"tui-image-editor-angular-submenus-rotate-slider\" | translate\r\n }}</label>\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"rotation\"\r\n (ngModelChange)=\"rotationChanged($event, true)\"\r\n (change)=\"rotationChanged($event, false)\"\r\n min=\"-360\"\r\n max=\"360\"\r\n />\r\n <input\r\n type=\"number\"\r\n min=\"-360\"\r\n max=\"360\"\r\n step=\"1\"\r\n class=\"tie-rotate-range-value tui-image-editor-range-value\"\r\n [(ngModel)]=\"rotation\"\r\n (ngModelChange)=\"rotationChanged($event, true)\"\r\n (change)=\"rotationChanged($event, false)\"\r\n />\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1.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: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: RotateComponent, decorators: [{
|
|
48
|
+
type: Component,
|
|
49
|
+
args: [{ selector: 'tui-image-editor-submenus-rotate', template: "<div class=\"tui-image-editor-menu-rotate\">\r\n <div class=\"tui-image-editor-submenu-item\">\r\n <div class=\"tie-rotate-button tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-justify-content-center tui-image-editor-my-3\">\r\n <div class=\"tui-image-editor-button clockwise\" (click)=\"rotateImage(30)\">\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-rotate-clockwise\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-rotate-clockwise\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label> 30\u00B0 </label>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-button counterclockwise\"\r\n (click)=\"rotateImage(-30)\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-rotate-counterclockwise\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-rotate-counterclockwise\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label> -30\u00B0 </label>\r\n </div>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-newline tui-image-editor-range-wrap tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-justify-content-center tui-image-editor-my-3\"\r\n >\r\n <label class=\"range\">{{\r\n \"tui-image-editor-angular-submenus-rotate-slider\" | translate\r\n }}</label>\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"rotation\"\r\n (ngModelChange)=\"rotationChanged($event, true)\"\r\n (change)=\"rotationChanged($event, false)\"\r\n min=\"-360\"\r\n max=\"360\"\r\n />\r\n <input\r\n type=\"number\"\r\n min=\"-360\"\r\n max=\"360\"\r\n step=\"1\"\r\n class=\"tie-rotate-range-value tui-image-editor-range-value\"\r\n [(ngModel)]=\"rotation\"\r\n (ngModelChange)=\"rotationChanged($event, true)\"\r\n (change)=\"rotationChanged($event, false)\"\r\n />\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
50
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageEditor: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}], rotation: [{
|
|
53
|
+
type: Input
|
|
54
|
+
}], rotationChange: [{
|
|
55
|
+
type: Output
|
|
56
|
+
}] } });
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm90YXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1aS1pbWFnZS1lZGl0b3ItYW5ndWxhcjIvc3JjL2xpYi9zdWJtZW51cy9yb3RhdGUvcm90YXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1aS1pbWFnZS1lZGl0b3ItYW5ndWxhcjIvc3JjL2xpYi9zdWJtZW51cy9yb3RhdGUvcm90YXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFPL0UsTUFBTSxPQUFPLGVBQWU7SUFLMUI7UUFGVSxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7SUFFdkMsQ0FBQztJQUVoQixLQUFLLENBQUMsV0FBVyxDQUFDLGFBQXFCO1FBQ3JDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsYUFBYSxDQUFDO1FBQy9DLE1BQU0sV0FBVyxHQUFHLFFBQVEsSUFBSSxDQUFDLEdBQUcsSUFBSSxRQUFRLElBQUksR0FBRyxDQUFDO1FBQ3hELElBQUksV0FBVyxFQUFFO1lBQ2YsSUFBSTtnQkFDRixNQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztnQkFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDcEM7WUFBQyxPQUFPLElBQUksRUFBRTtnQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3JCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FDbkIsb0JBQW9DLEVBQ3BDLFFBQWlCO1FBRWpCLElBQUksa0JBQWtCLEdBQ3BCLE9BQU8sb0JBQW9CLEtBQUssUUFBUTtZQUN0QyxDQUFDLENBQUMsb0JBQW9CO1lBQ3RCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRXBCLElBQUksaUJBQWlCLEdBQUcsR0FBRyxFQUFFO1lBQzNCLElBQUksQ0FBQyxXQUFXO2dCQUNkLEVBQUUsUUFBUSxDQUFDLGtCQUFrQixFQUFFLFFBQVEsQ0FBQztpQkFDdkMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ2QsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN0QixDQUFDLENBQUM7aUJBQ0QsT0FBTyxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQy9DLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDO1FBQ0YsSUFBSSxRQUFRLEVBQUU7WUFDWixpQkFBaUIsRUFBRSxDQUFDO1NBQ3JCO2FBQU07WUFDTCxVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQztTQUMvQjtJQUNILENBQUM7OzRHQTdDVSxlQUFlO2dHQUFmLGVBQWUscUxDUDVCLDAwRUFnRUE7MkZEekRhLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0Usa0NBQWtDOzBFQUtuQyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0ksY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAndHVpLWltYWdlLWVkaXRvci1zdWJtZW51cy1yb3RhdGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9yb3RhdGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3JvdGF0ZS5jb21wb25lbnQuY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSb3RhdGVDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIGltYWdlRWRpdG9yOiBhbnk7XHJcbiAgQElucHV0KCkgcm90YXRpb246IG51bWJlcjtcclxuICBAT3V0cHV0KCkgcm90YXRpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7fVxyXG5cclxuICBhc3luYyByb3RhdGVJbWFnZShyb3RhdGlvbkFuZ2xlOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IG5ld0FuZ2xlID0gdGhpcy5yb3RhdGlvbiArIHJvdGF0aW9uQW5nbGU7XHJcbiAgICBjb25zdCBpc1JvdGF0YWJsZSA9IG5ld0FuZ2xlID49IC0zNjAgJiYgbmV3QW5nbGUgPD0gMzYwO1xyXG4gICAgaWYgKGlzUm90YXRhYmxlKSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5pbWFnZUVkaXRvcj8uc2V0QW5nbGUobmV3QW5nbGUpO1xyXG4gICAgICAgIHRoaXMucm90YXRpb24gPSBuZXdBbmdsZTtcclxuICAgICAgICB0aGlzLnJvdGF0aW9uQ2hhbmdlLmVtaXQobmV3QW5nbGUpO1xyXG4gICAgICB9IGNhdGNoIChfZXJyKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihfZXJyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgcm90YXRpb25DaGFuZ2VkKFxyXG4gICAgY3VycmVudFJvdGF0aW9uVmFsdWU6IG51bWJlciB8IEV2ZW50LFxyXG4gICAgaXNTaWxlbnQ6IGJvb2xlYW5cclxuICApIHtcclxuICAgIGxldCByb3RhdGlvblZhbHVlVG9Vc2UgPVxyXG4gICAgICB0eXBlb2YgY3VycmVudFJvdGF0aW9uVmFsdWUgPT09ICdudW1iZXInXHJcbiAgICAgICAgPyBjdXJyZW50Um90YXRpb25WYWx1ZVxyXG4gICAgICAgIDogdGhpcy5yb3RhdGlvbjtcclxuXHJcbiAgICBsZXQgZnVuY3Rpb25Ub0V4ZWN1dGUgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMuaW1hZ2VFZGl0b3JcclxuICAgICAgICA/LnNldEFuZ2xlKHJvdGF0aW9uVmFsdWVUb1VzZSwgaXNTaWxlbnQpXHJcbiAgICAgICAgLmNhdGNoKChfZXJyKSA9PiB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKF9lcnIpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yb3RhdGlvbkNoYW5nZS5lbWl0KHJvdGF0aW9uVmFsdWVUb1VzZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgaWYgKGlzU2lsZW50KSB7XHJcbiAgICAgIGZ1bmN0aW9uVG9FeGVjdXRlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uVG9FeGVjdXRlKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInR1aS1pbWFnZS1lZGl0b3ItbWVudS1yb3RhdGVcIj5cclxuICA8ZGl2IGNsYXNzPVwidHVpLWltYWdlLWVkaXRvci1zdWJtZW51LWl0ZW1cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJ0aWUtcm90YXRlLWJ1dHRvbiB0dWktaW1hZ2UtZWRpdG9yLWQtZmxleCB0dWktaW1hZ2UtZWRpdG9yLWZsZXgtcm93IHR1aS1pbWFnZS1lZGl0b3ItanVzdGlmeS1jb250ZW50LWNlbnRlciB0dWktaW1hZ2UtZWRpdG9yLW15LTNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInR1aS1pbWFnZS1lZGl0b3ItYnV0dG9uIGNsb2Nrd2lzZVwiIChjbGljayk9XCJyb3RhdGVJbWFnZSgzMClcIj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgPHN2ZyBjbGFzcz1cInN2Z19pYy1zdWJtZW51XCI+XHJcbiAgICAgICAgICAgIDx1c2VcclxuICAgICAgICAgICAgICB4bGluazpocmVmPVwiI2ljLXJvdGF0ZS1jbG9ja3dpc2VcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwibm9ybWFsIHVzZS1kZWZhdWx0XCJcclxuICAgICAgICAgICAgPjwvdXNlPlxyXG4gICAgICAgICAgICA8dXNlXHJcbiAgICAgICAgICAgICAgeGxpbms6aHJlZj1cIiNpYy1yb3RhdGUtY2xvY2t3aXNlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImFjdGl2ZSB1c2UtZGVmYXVsdFwiXHJcbiAgICAgICAgICAgID48L3VzZT5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxsYWJlbD4gMzDCsCA8L2xhYmVsPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwidHVpLWltYWdlLWVkaXRvci1idXR0b24gY291bnRlcmNsb2Nrd2lzZVwiXHJcbiAgICAgICAgKGNsaWNrKT1cInJvdGF0ZUltYWdlKC0zMClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIDxzdmcgY2xhc3M9XCJzdmdfaWMtc3VibWVudVwiPlxyXG4gICAgICAgICAgICA8dXNlXHJcbiAgICAgICAgICAgICAgeGxpbms6aHJlZj1cIiNpYy1yb3RhdGUtY291bnRlcmNsb2Nrd2lzZVwiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJub3JtYWwgdXNlLWRlZmF1bHRcIlxyXG4gICAgICAgICAgICA+PC91c2U+XHJcbiAgICAgICAgICAgIDx1c2VcclxuICAgICAgICAgICAgICB4bGluazpocmVmPVwiI2ljLXJvdGF0ZS1jb3VudGVyY2xvY2t3aXNlXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImFjdGl2ZSB1c2UtZGVmYXVsdFwiXHJcbiAgICAgICAgICAgID48L3VzZT5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxsYWJlbD4gLTMwwrAgPC9sYWJlbD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJ0dWktaW1hZ2UtZWRpdG9yLW5ld2xpbmUgdHVpLWltYWdlLWVkaXRvci1yYW5nZS13cmFwIHR1aS1pbWFnZS1lZGl0b3ItZC1mbGV4IHR1aS1pbWFnZS1lZGl0b3ItZmxleC1yb3cgdHVpLWltYWdlLWVkaXRvci1hbGlnbi1pdGVtcy1jZW50ZXIgdHVpLWltYWdlLWVkaXRvci1qdXN0aWZ5LWNvbnRlbnQtY2VudGVyIHR1aS1pbWFnZS1lZGl0b3ItbXktM1wiXHJcbiAgICA+XHJcbiAgICAgIDxsYWJlbCBjbGFzcz1cInJhbmdlXCI+e3tcclxuICAgICAgICBcInR1aS1pbWFnZS1lZGl0b3ItYW5ndWxhci1zdWJtZW51cy1yb3RhdGUtc2xpZGVyXCIgfCB0cmFuc2xhdGVcclxuICAgICAgfX08L2xhYmVsPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICB0eXBlPVwicmFuZ2VcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwicm90YXRpb25cIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInJvdGF0aW9uQ2hhbmdlZCgkZXZlbnQsIHRydWUpXCJcclxuICAgICAgICAoY2hhbmdlKT1cInJvdGF0aW9uQ2hhbmdlZCgkZXZlbnQsIGZhbHNlKVwiXHJcbiAgICAgICAgbWluPVwiLTM2MFwiXHJcbiAgICAgICAgbWF4PVwiMzYwXCJcclxuICAgICAgLz5cclxuICAgICAgPGlucHV0XHJcbiAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgbWluPVwiLTM2MFwiXHJcbiAgICAgICAgbWF4PVwiMzYwXCJcclxuICAgICAgICBzdGVwPVwiMVwiXHJcbiAgICAgICAgY2xhc3M9XCJ0aWUtcm90YXRlLXJhbmdlLXZhbHVlIHR1aS1pbWFnZS1lZGl0b3ItcmFuZ2UtdmFsdWVcIlxyXG4gICAgICAgIFsobmdNb2RlbCldPVwicm90YXRpb25cIlxyXG4gICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInJvdGF0aW9uQ2hhbmdlZCgkZXZlbnQsIHRydWUpXCJcclxuICAgICAgICAoY2hhbmdlKT1cInJvdGF0aW9uQ2hhbmdlZCgkZXZlbnQsIGZhbHNlKVwiXHJcbiAgICAgIC8+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|