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,3126 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable, Inject, EventEmitter, Component, Output, Input, ViewChild, NgModule } from '@angular/core';
|
|
3
|
+
import * as i2 from '@angular/common';
|
|
4
|
+
import { DOCUMENT, CommonModule } from '@angular/common';
|
|
5
|
+
import * as i1 from '@ngx-translate/core';
|
|
6
|
+
import { TranslateModule } from '@ngx-translate/core';
|
|
7
|
+
import { BehaviorSubject } from 'rxjs';
|
|
8
|
+
import heic2any from 'heic2any';
|
|
9
|
+
import ImageEditor from 'tui-image-editor';
|
|
10
|
+
import * as i3 from '@ng-bootstrap/ng-bootstrap';
|
|
11
|
+
import { NgbPopoverModule } from '@ng-bootstrap/ng-bootstrap';
|
|
12
|
+
import * as i1$1 from '@angular/forms';
|
|
13
|
+
import { FormsModule } from '@angular/forms';
|
|
14
|
+
import * as i2$1 from 'ngx-color-picker';
|
|
15
|
+
import { ColorPickerModule } from 'ngx-color-picker';
|
|
16
|
+
import ImageTracer from 'tui-image-editor/src/js/helper/imagetracer';
|
|
17
|
+
|
|
18
|
+
const en = {
|
|
19
|
+
'tui-image-editor-angular-menus-buttons-crop-tooltip': 'Crop',
|
|
20
|
+
'tui-image-editor-angular-menus-buttons-delete': 'Delete',
|
|
21
|
+
'tui-image-editor-angular-menus-buttons-deleteAll': 'Delete all',
|
|
22
|
+
'tui-image-editor-angular-menus-buttons-download': 'Download',
|
|
23
|
+
'tui-image-editor-angular-menus-buttons-drag': 'Drag',
|
|
24
|
+
'tui-image-editor-angular-menus-buttons-draw': 'Draw',
|
|
25
|
+
'tui-image-editor-angular-menus-buttons-filter': 'Filter',
|
|
26
|
+
'tui-image-editor-angular-menus-buttons-flip': 'Flip',
|
|
27
|
+
'tui-image-editor-angular-menus-buttons-history': 'History',
|
|
28
|
+
'tui-image-editor-angular-menus-buttons-icon': 'Icon',
|
|
29
|
+
'tui-image-editor-angular-menus-buttons-load': 'Load image',
|
|
30
|
+
'tui-image-editor-angular-menus-buttons-mask': 'Mask',
|
|
31
|
+
'tui-image-editor-angular-menus-buttons-redo': 'Redo',
|
|
32
|
+
'tui-image-editor-angular-menus-buttons-reset': 'Reset',
|
|
33
|
+
'tui-image-editor-angular-menus-buttons-rotate': 'Rotate',
|
|
34
|
+
'tui-image-editor-angular-menus-buttons-shape': 'Shape',
|
|
35
|
+
'tui-image-editor-angular-menus-buttons-text': 'Text',
|
|
36
|
+
'tui-image-editor-angular-menus-buttons-undo': 'Undo',
|
|
37
|
+
'tui-image-editor-angular-menus-buttons-zoomIn': 'ZoomIn',
|
|
38
|
+
'tui-image-editor-angular-menus-buttons-zoomOut': 'ZoomOut',
|
|
39
|
+
'tui-image-editor-angular-submenus-crop-custom': 'Custom',
|
|
40
|
+
'tui-image-editor-angular-submenus-crop-square': 'Square',
|
|
41
|
+
'tui-image-editor-angular-submenus-crop-apply': 'Apply',
|
|
42
|
+
'tui-image-editor-angular-submenus-crop-cancel': 'Cancel',
|
|
43
|
+
'tui-image-editor-angular-submenus-flip-x': 'Flip X',
|
|
44
|
+
'tui-image-editor-angular-submenus-flip-y': 'Flip Y',
|
|
45
|
+
'tui-image-editor-angular-submenus-flip-reset': 'Reset',
|
|
46
|
+
'tui-image-editor-angular-submenus-rotate-slider': 'Rotation',
|
|
47
|
+
'tui-image-editor-angular-submenus-draw-free': 'Free',
|
|
48
|
+
'tui-image-editor-angular-submenus-draw-straight': 'Straight',
|
|
49
|
+
'tui-image-editor-angular-submenus-draw-color': 'Color',
|
|
50
|
+
'tui-image-editor-angular-submenus-draw-strokeWidth': 'Stroke width',
|
|
51
|
+
'tui-image-editor-angular-submenus-shape-rectangle': 'Rectangle',
|
|
52
|
+
'tui-image-editor-angular-submenus-shape-circle': 'Circle',
|
|
53
|
+
'tui-image-editor-angular-submenus-shape-triangle': 'Triangle',
|
|
54
|
+
'tui-image-editor-angular-submenus-shape-fill': 'Fill',
|
|
55
|
+
'tui-image-editor-angular-submenus-shape-stroke': 'Stroke',
|
|
56
|
+
'tui-image-editor-angular-submenus-shape-strokeWidth': 'Stroke width',
|
|
57
|
+
'tui-image-editor-angular-submenus-icon-arrow1': 'Arrow-1',
|
|
58
|
+
'tui-image-editor-angular-submenus-icon-arrow2': 'Arrow-2',
|
|
59
|
+
'tui-image-editor-angular-submenus-icon-arrow3': 'Arrow-3',
|
|
60
|
+
'tui-image-editor-angular-submenus-icon-star1': 'Star-1',
|
|
61
|
+
'tui-image-editor-angular-submenus-icon-star2': 'Star-2',
|
|
62
|
+
'tui-image-editor-angular-submenus-icon-polygon': 'Polygon',
|
|
63
|
+
'tui-image-editor-angular-submenus-icon-location': 'Location',
|
|
64
|
+
'tui-image-editor-angular-submenus-icon-heart': 'Heart',
|
|
65
|
+
'tui-image-editor-angular-submenus-icon-bubble': 'Bubble',
|
|
66
|
+
'tui-image-editor-angular-submenus-icon-customIcon': 'Custom icon',
|
|
67
|
+
'tui-image-editor-angular-submenus-icon-color': 'Color',
|
|
68
|
+
'tui-image-editor-angular-submenus-text-bold': 'Bold',
|
|
69
|
+
'tui-image-editor-angular-submenus-text-italic': 'Italic',
|
|
70
|
+
'tui-image-editor-angular-submenus-text-underline': 'Underline',
|
|
71
|
+
'tui-image-editor-angular-submenus-text-left': 'Left',
|
|
72
|
+
'tui-image-editor-angular-submenus-text-center': 'Center',
|
|
73
|
+
'tui-image-editor-angular-submenus-text-right': 'Right',
|
|
74
|
+
'tui-image-editor-angular-submenus-text-color': 'Color',
|
|
75
|
+
'tui-image-editor-angular-submenus-text-textSize': 'Text size',
|
|
76
|
+
'tui-image-editor-angular-submenus-mask-loadMaskImage': 'Load mask image',
|
|
77
|
+
'tui-image-editor-angular-submenus-mask-apply': 'Apply',
|
|
78
|
+
'tui-image-editor-angular-submenus-filter-grayscale': 'Grayscale',
|
|
79
|
+
'tui-image-editor-angular-submenus-filter-invert': 'Invert',
|
|
80
|
+
'tui-image-editor-angular-submenus-filter-sepia': 'Sepia',
|
|
81
|
+
'tui-image-editor-angular-submenus-filter-sepia2': 'Sepia 2',
|
|
82
|
+
'tui-image-editor-angular-submenus-filter-blur': 'Blur',
|
|
83
|
+
'tui-image-editor-angular-submenus-filter-sharpen': 'Sharpen',
|
|
84
|
+
'tui-image-editor-angular-submenus-filter-emboss': 'Emboss',
|
|
85
|
+
'tui-image-editor-angular-submenus-filter-removeWhite': 'Remove white',
|
|
86
|
+
'tui-image-editor-angular-submenus-filter-removeWhite-distance': 'Distance',
|
|
87
|
+
'tui-image-editor-angular-submenus-filter-brightness': 'Brightness',
|
|
88
|
+
'tui-image-editor-angular-submenus-filter-noise': 'Noise',
|
|
89
|
+
'tui-image-editor-angular-submenus-filter-pixelate': 'Pixelate',
|
|
90
|
+
'tui-image-editor-angular-submenus-filter-colorFilter': 'Color filter',
|
|
91
|
+
'tui-image-editor-angular-submenus-filter-colorFilter-threshold': 'Threshold',
|
|
92
|
+
'tui-image-editor-angular-submenus-filter-tint': 'Tint',
|
|
93
|
+
'tui-image-editor-angular-submenus-filter-multiply': 'Multiply',
|
|
94
|
+
'tui-image-editor-angular-submenus-filter-blend': 'Blend',
|
|
95
|
+
'tui-image-editor-angular-history-noItems': 'No history available',
|
|
96
|
+
'tui-image-editor-angular-history-text-added': 'Added',
|
|
97
|
+
'tui-image-editor-angular-history-text-styleChange-textAlignment-left': 'Align left',
|
|
98
|
+
'tui-image-editor-angular-history-text-styleChange-textAlignment-center': 'Align center',
|
|
99
|
+
'tui-image-editor-angular-history-text-styleChange-textAlignment-right': 'Align right',
|
|
100
|
+
'tui-image-editor-angular-history-text-styleChange-underline': 'Underline',
|
|
101
|
+
'tui-image-editor-angular-history-text-styleChange-underline-true': 'Underline',
|
|
102
|
+
'tui-image-editor-angular-history-text-styleChange-underline-false': 'Not underlined',
|
|
103
|
+
'tui-image-editor-angular-history-text-styleChange-fontStyle-normal': 'Not italic',
|
|
104
|
+
'tui-image-editor-angular-history-text-styleChange-fontStyle-italic': 'Italic',
|
|
105
|
+
'tui-image-editor-angular-history-text-styleChange-fontWeight-normal': 'Normal fontweight',
|
|
106
|
+
'tui-image-editor-angular-history-text-styleChange-fontWeight-bold': 'Bold',
|
|
107
|
+
'tui-image-editor-angular-history-text-styleChange-fontSize': 'Fontsize {{0}}',
|
|
108
|
+
'tui-image-editor-angular-history-text-fill': 'Color',
|
|
109
|
+
'tui-image-editor-angular-history-text-general': 'Text',
|
|
110
|
+
'tui-image-editor-angular-history-text-details': 'Moved/Resized',
|
|
111
|
+
'tui-image-editor-angular-history-mask-general': 'Mask',
|
|
112
|
+
'tui-image-editor-angular-history-mask-details': 'Moved/Resized',
|
|
113
|
+
'tui-image-editor-angular-history-mask-added': 'Added',
|
|
114
|
+
'tui-image-editor-angular-history-mask-apply': 'Applied',
|
|
115
|
+
'tui-image-editor-angular-history-crop': 'Crop',
|
|
116
|
+
'tui-image-editor-angular-history-flip': 'Flip',
|
|
117
|
+
'tui-image-editor-angular-history-flip-reset': 'Reset',
|
|
118
|
+
'tui-image-editor-angular-history-flip-flipX': 'X',
|
|
119
|
+
'tui-image-editor-angular-history-flip-flipY': 'Y',
|
|
120
|
+
'tui-image-editor-angular-history-rotate': 'Rotate',
|
|
121
|
+
'tui-image-editor-angular-history-draw-general': 'Drawing',
|
|
122
|
+
'tui-image-editor-angular-history-draw-details': 'Added/Moved/Resized',
|
|
123
|
+
'tui-image-editor-angular-history-draw-strokeWidth': 'Width {{0}}',
|
|
124
|
+
'tui-image-editor-angular-history-draw-stroke': 'Color',
|
|
125
|
+
'tui-image-editor-angular-history-icon-general': 'Icon',
|
|
126
|
+
'tui-image-editor-angular-history-icon-details': 'Added/Moved/Resized',
|
|
127
|
+
'tui-image-editor-angular-history-icon-colorChange': 'Color changed',
|
|
128
|
+
'tui-image-editor-angular-history-icon-added': 'Added',
|
|
129
|
+
'tui-image-editor-angular-history-icon-fill': 'Color',
|
|
130
|
+
'tui-image-editor-angular-history-load': 'Image loaded',
|
|
131
|
+
'tui-image-editor-angular-history-delete': 'Delete',
|
|
132
|
+
'tui-image-editor-angular-history-delete-all': 'All',
|
|
133
|
+
'tui-image-editor-angular-history-delete-draw': 'Drawing',
|
|
134
|
+
'tui-image-editor-angular-history-delete-shape': 'Shape',
|
|
135
|
+
'tui-image-editor-angular-history-delete-icon': 'Icon',
|
|
136
|
+
'tui-image-editor-angular-history-delete-text': 'Text',
|
|
137
|
+
'tui-image-editor-angular-history-delete-mask': 'Mask',
|
|
138
|
+
'tui-image-editor-angular-history-shape-general': 'Shape',
|
|
139
|
+
'tui-image-editor-angular-history-shape-details': 'Added/Moved/Resized',
|
|
140
|
+
'tui-image-editor-angular-history-applyFilter': 'Apply filter',
|
|
141
|
+
'tui-image-editor-angular-history-removeFilter': 'Remove filter',
|
|
142
|
+
'tui-image-editor-angular-history-shape-strokeWidth': 'Stroke width',
|
|
143
|
+
'tui-image-editor-angular-history-shape-stroke': 'Stroke',
|
|
144
|
+
'tui-image-editor-angular-history-shape-fill': 'Fill',
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
const nl = {
|
|
148
|
+
'tui-image-editor-angular-menus-buttons-crop-tooltip': 'Crop',
|
|
149
|
+
'tui-image-editor-angular-menus-buttons-delete': 'Verwijderen',
|
|
150
|
+
'tui-image-editor-angular-menus-buttons-deleteAll': 'Alles verwijderen',
|
|
151
|
+
'tui-image-editor-angular-menus-buttons-download': 'Downloaden',
|
|
152
|
+
'tui-image-editor-angular-menus-buttons-drag': 'Slepen',
|
|
153
|
+
'tui-image-editor-angular-menus-buttons-draw': 'Tekenen',
|
|
154
|
+
'tui-image-editor-angular-menus-buttons-filter': 'Filters',
|
|
155
|
+
'tui-image-editor-angular-menus-buttons-flip': 'Âfbeelding draaien',
|
|
156
|
+
'tui-image-editor-angular-menus-buttons-history': 'Historiek',
|
|
157
|
+
'tui-image-editor-angular-menus-buttons-icon': 'Icoon',
|
|
158
|
+
'tui-image-editor-angular-menus-buttons-load': 'Afbeelding laden',
|
|
159
|
+
'tui-image-editor-angular-menus-buttons-mask': 'Masker',
|
|
160
|
+
'tui-image-editor-angular-menus-buttons-redo': 'Herhalen',
|
|
161
|
+
'tui-image-editor-angular-menus-buttons-reset': 'Reset',
|
|
162
|
+
'tui-image-editor-angular-menus-buttons-rotate': 'Roteren',
|
|
163
|
+
'tui-image-editor-angular-menus-buttons-shape': 'Vorm',
|
|
164
|
+
'tui-image-editor-angular-menus-buttons-text': 'Tekst',
|
|
165
|
+
'tui-image-editor-angular-menus-buttons-undo': 'Ongedaan maken',
|
|
166
|
+
'tui-image-editor-angular-menus-buttons-zoomIn': 'Inzoomen',
|
|
167
|
+
'tui-image-editor-angular-menus-buttons-zoomOut': 'Uitzoomen',
|
|
168
|
+
'tui-image-editor-angular-submenus-crop-custom': 'Aangepast',
|
|
169
|
+
'tui-image-editor-angular-submenus-crop-square': 'Vierkant',
|
|
170
|
+
'tui-image-editor-angular-submenus-crop-apply': 'Toepassen',
|
|
171
|
+
'tui-image-editor-angular-submenus-crop-cancel': 'Annuleren',
|
|
172
|
+
'tui-image-editor-angular-submenus-flip-x': 'Horizontaal',
|
|
173
|
+
'tui-image-editor-angular-submenus-flip-y': 'Verticaal',
|
|
174
|
+
'tui-image-editor-angular-submenus-flip-reset': 'Annuleren',
|
|
175
|
+
'tui-image-editor-angular-submenus-rotate-slider': 'Rotatie',
|
|
176
|
+
'tui-image-editor-angular-submenus-draw-free': 'Vrij',
|
|
177
|
+
'tui-image-editor-angular-submenus-draw-straight': 'Rechte lijn',
|
|
178
|
+
'tui-image-editor-angular-submenus-draw-color': 'Kleur',
|
|
179
|
+
'tui-image-editor-angular-submenus-draw-strokeWidth': 'Lijndikte',
|
|
180
|
+
'tui-image-editor-angular-submenus-shape-rectangle': 'Rechthoek',
|
|
181
|
+
'tui-image-editor-angular-submenus-shape-circle': 'Cirkel',
|
|
182
|
+
'tui-image-editor-angular-submenus-shape-triangle': 'Driehoek',
|
|
183
|
+
'tui-image-editor-angular-submenus-shape-fill': 'Opvulling',
|
|
184
|
+
'tui-image-editor-angular-submenus-shape-stroke': 'Randkleur',
|
|
185
|
+
'tui-image-editor-angular-submenus-shape-strokeWidth': 'Randdikte',
|
|
186
|
+
'tui-image-editor-angular-submenus-icon-arrow1': 'Pijl-1',
|
|
187
|
+
'tui-image-editor-angular-submenus-icon-arrow2': 'Pijl-2',
|
|
188
|
+
'tui-image-editor-angular-submenus-icon-arrow3': 'Pijl-3',
|
|
189
|
+
'tui-image-editor-angular-submenus-icon-star1': 'Ster-1',
|
|
190
|
+
'tui-image-editor-angular-submenus-icon-star2': 'Ster-2',
|
|
191
|
+
'tui-image-editor-angular-submenus-icon-polygon': 'Polygoon',
|
|
192
|
+
'tui-image-editor-angular-submenus-icon-location': 'Locatie',
|
|
193
|
+
'tui-image-editor-angular-submenus-icon-heart': 'Hart',
|
|
194
|
+
'tui-image-editor-angular-submenus-icon-bubble': 'Bubbel',
|
|
195
|
+
'tui-image-editor-angular-submenus-icon-customIcon': 'Eigen icoon',
|
|
196
|
+
'tui-image-editor-angular-submenus-icon-color': 'Kleur',
|
|
197
|
+
'tui-image-editor-angular-submenus-text-bold': 'Vet',
|
|
198
|
+
'tui-image-editor-angular-submenus-text-italic': 'Cursief',
|
|
199
|
+
'tui-image-editor-angular-submenus-text-underline': 'Onderstreept',
|
|
200
|
+
'tui-image-editor-angular-submenus-text-left': 'Links',
|
|
201
|
+
'tui-image-editor-angular-submenus-text-center': 'Midden',
|
|
202
|
+
'tui-image-editor-angular-submenus-text-right': 'Rechts',
|
|
203
|
+
'tui-image-editor-angular-submenus-text-color': 'Kleur',
|
|
204
|
+
'tui-image-editor-angular-submenus-text-textSize': 'Tekstgrootte',
|
|
205
|
+
'tui-image-editor-angular-submenus-mask-loadMaskImage': 'Masker laden',
|
|
206
|
+
'tui-image-editor-angular-submenus-mask-apply': 'Toepassen',
|
|
207
|
+
'tui-image-editor-angular-submenus-filter-grayscale': 'Grijstinten',
|
|
208
|
+
'tui-image-editor-angular-submenus-filter-invert': 'Kleuren omkeren',
|
|
209
|
+
'tui-image-editor-angular-submenus-filter-sepia': 'Sepia',
|
|
210
|
+
'tui-image-editor-angular-submenus-filter-sepia2': 'Sepia 2',
|
|
211
|
+
'tui-image-editor-angular-submenus-filter-blur': 'Wazig maken',
|
|
212
|
+
'tui-image-editor-angular-submenus-filter-sharpen': 'Scherpte',
|
|
213
|
+
'tui-image-editor-angular-submenus-filter-emboss': 'Reliëf',
|
|
214
|
+
'tui-image-editor-angular-submenus-filter-removeWhite': 'Wit verwijderen',
|
|
215
|
+
'tui-image-editor-angular-submenus-filter-removeWhite-distance': 'Afstand',
|
|
216
|
+
'tui-image-editor-angular-submenus-filter-brightness': 'Helderheid',
|
|
217
|
+
'tui-image-editor-angular-submenus-filter-noise': 'Ruis',
|
|
218
|
+
'tui-image-editor-angular-submenus-filter-pixelate': 'Pixelate',
|
|
219
|
+
'tui-image-editor-angular-submenus-filter-colorFilter': 'Kleurfilter',
|
|
220
|
+
'tui-image-editor-angular-submenus-filter-colorFilter-threshold': 'Drempel',
|
|
221
|
+
'tui-image-editor-angular-submenus-filter-tint': 'Tint',
|
|
222
|
+
'tui-image-editor-angular-submenus-filter-multiply': 'Vermenigvuldigen',
|
|
223
|
+
'tui-image-editor-angular-submenus-filter-blend': 'Mengsel',
|
|
224
|
+
'tui-image-editor-angular-history-noItems': 'Nog geen historiek beschikbaar',
|
|
225
|
+
'tui-image-editor-angular-history-text-added': 'Toegevoegd',
|
|
226
|
+
'tui-image-editor-angular-history-text-styleChange-textAlignment-left': 'Links uitlijnen',
|
|
227
|
+
'tui-image-editor-angular-history-text-styleChange-textAlignment-center': 'Centreren',
|
|
228
|
+
'tui-image-editor-angular-history-text-styleChange-textAlignment-right': 'Rechts uitlijnen',
|
|
229
|
+
'tui-image-editor-angular-history-text-styleChange-underline-true': 'Onderstrepen',
|
|
230
|
+
'tui-image-editor-angular-history-text-styleChange-underline-false': 'Niet onderstrepen',
|
|
231
|
+
'tui-image-editor-angular-history-text-styleChange-fontStyle-normal': 'Niet-cursief',
|
|
232
|
+
'tui-image-editor-angular-history-text-styleChange-fontStyle-italic': 'Cursief',
|
|
233
|
+
'tui-image-editor-angular-history-text-styleChange-fontWeight-normal': 'Niet vet',
|
|
234
|
+
'tui-image-editor-angular-history-text-styleChange-fontWeight-bold': 'Vet',
|
|
235
|
+
'tui-image-editor-angular-history-text-styleChange-fontSize': 'Tekstgrootte {{0}}',
|
|
236
|
+
'tui-image-editor-angular-history-text-fill': 'Kleur',
|
|
237
|
+
'tui-image-editor-angular-history-text-general': 'Tekst',
|
|
238
|
+
'tui-image-editor-angular-history-text-details': 'Verplaatst/Vergroot/Verkleind',
|
|
239
|
+
'tui-image-editor-angular-history-mask-general': 'Masker',
|
|
240
|
+
'tui-image-editor-angular-history-mask-details': 'Verplaatst/Vergroot/Verkleind',
|
|
241
|
+
'tui-image-editor-angular-history-mask-added': 'Toegevoegd',
|
|
242
|
+
'tui-image-editor-angular-history-mask-apply': 'Uitgevoerd',
|
|
243
|
+
'tui-image-editor-angular-history-crop': 'Bijsnijden',
|
|
244
|
+
'tui-image-editor-angular-history-flip': 'Omdraaien',
|
|
245
|
+
'tui-image-editor-angular-history-flip-reset': 'Reset',
|
|
246
|
+
'tui-image-editor-angular-history-flip-flipX': 'X',
|
|
247
|
+
'tui-image-editor-angular-history-flip-flipY': 'Y',
|
|
248
|
+
'tui-image-editor-angular-history-rotate': 'Draaien',
|
|
249
|
+
'tui-image-editor-angular-history-draw-general': 'Tekening',
|
|
250
|
+
'tui-image-editor-angular-history-draw-details': 'Toegevoegd/Verplaatst/Vergroot/Verkleind',
|
|
251
|
+
'tui-image-editor-angular-history-draw-strokeWidth': 'Lijndikte {{0}}',
|
|
252
|
+
'tui-image-editor-angular-history-draw-stroke': 'Kleur',
|
|
253
|
+
'tui-image-editor-angular-history-icon-general': 'Icoon',
|
|
254
|
+
'tui-image-editor-angular-history-icon-details': 'Toegevoegd/Verplaatst/Vergroot/Verkleind',
|
|
255
|
+
'tui-image-editor-angular-history-icon-colorChange': 'Kleur gewijzigd',
|
|
256
|
+
'tui-image-editor-angular-history-icon-added': 'Toegevoegd',
|
|
257
|
+
'tui-image-editor-angular-history-icon-fill': 'Kleur',
|
|
258
|
+
'tui-image-editor-angular-history-load': 'Foto geladen',
|
|
259
|
+
'tui-image-editor-angular-history-delete': 'Verwijderen',
|
|
260
|
+
'tui-image-editor-angular-history-delete-all': 'Alle',
|
|
261
|
+
'tui-image-editor-angular-history-delete-draw': 'Tekening',
|
|
262
|
+
'tui-image-editor-angular-history-delete-shape': 'Vorm',
|
|
263
|
+
'tui-image-editor-angular-history-delete-icon': 'Icoon',
|
|
264
|
+
'tui-image-editor-angular-history-delete-text': 'Tekst',
|
|
265
|
+
'tui-image-editor-angular-history-delete-mask': 'Masker',
|
|
266
|
+
'tui-image-editor-angular-history-shape-general': 'Vorm',
|
|
267
|
+
'tui-image-editor-angular-history-shape-details': 'Toegevoegd/Verplaatst/Vergroot/Verkleind',
|
|
268
|
+
'tui-image-editor-angular-history-applyFilter': 'Filter toepassen',
|
|
269
|
+
'tui-image-editor-angular-history-removeFilter': 'Filter verwijderen',
|
|
270
|
+
'tui-image-editor-angular-history-shape-strokeWidth': 'Randdikte',
|
|
271
|
+
'tui-image-editor-angular-history-shape-stroke': 'Randkleur',
|
|
272
|
+
'tui-image-editor-angular-history-shape-fill': 'Opvulling',
|
|
273
|
+
};
|
|
274
|
+
|
|
275
|
+
class TranslationService {
|
|
276
|
+
constructor(document, service) {
|
|
277
|
+
this.document = document;
|
|
278
|
+
this.service = service;
|
|
279
|
+
this.availableLanguages = { en, nl };
|
|
280
|
+
Object.keys(this.availableLanguages).forEach((language) => {
|
|
281
|
+
this.service.setTranslation(language, this.availableLanguages[language], true);
|
|
282
|
+
});
|
|
283
|
+
let browserLanguages = window.navigator.languages;
|
|
284
|
+
let firstSupportedBrowserLanguage = browserLanguages.find((item) => Object.keys(this.availableLanguages).some((key) => key == item));
|
|
285
|
+
service.use(firstSupportedBrowserLanguage || 'nl');
|
|
286
|
+
}
|
|
287
|
+
get window() {
|
|
288
|
+
return this.document.defaultView;
|
|
289
|
+
}
|
|
290
|
+
changeLanguage(lang) {
|
|
291
|
+
this.service.use(lang);
|
|
292
|
+
}
|
|
293
|
+
loadCustomMessages(lang, messagesJson) {
|
|
294
|
+
this.service.setTranslation(lang, messagesJson, true);
|
|
295
|
+
}
|
|
296
|
+
getTranslation(key, params) {
|
|
297
|
+
return this.service.instant(key, params);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
TranslationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TranslationService, deps: [{ token: DOCUMENT }, { token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
301
|
+
TranslationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TranslationService });
|
|
302
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TranslationService, decorators: [{
|
|
303
|
+
type: Injectable
|
|
304
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
305
|
+
type: Inject,
|
|
306
|
+
args: [DOCUMENT]
|
|
307
|
+
}] }, { type: i1.TranslateService }]; } });
|
|
308
|
+
|
|
309
|
+
var zoomModes;
|
|
310
|
+
(function (zoomModes) {
|
|
311
|
+
zoomModes["DEFAULT"] = "normal";
|
|
312
|
+
zoomModes["ZOOM"] = "zoom";
|
|
313
|
+
zoomModes["HAND"] = "hand";
|
|
314
|
+
})(zoomModes || (zoomModes = {}));
|
|
315
|
+
var eventNames;
|
|
316
|
+
(function (eventNames) {
|
|
317
|
+
eventNames["OBJECT_ACTIVATED"] = "objectActivated";
|
|
318
|
+
eventNames["OBJECT_MOVED"] = "objectMoved";
|
|
319
|
+
eventNames["OBJECT_SCALED"] = "objectScaled";
|
|
320
|
+
eventNames["OBJECT_CREATED"] = "objectCreated";
|
|
321
|
+
eventNames["OBJECT_ROTATED"] = "objectRotated";
|
|
322
|
+
eventNames["OBJECT_ADDED"] = "objectAdded";
|
|
323
|
+
eventNames["OBJECT_MODIFIED"] = "objectModified";
|
|
324
|
+
eventNames["TEXT_EDITING"] = "textEditing";
|
|
325
|
+
eventNames["TEXT_CHANGED"] = "textChanged";
|
|
326
|
+
eventNames["ICON_CREATE_RESIZE"] = "iconCreateResize";
|
|
327
|
+
eventNames["ICON_CREATE_END"] = "iconCreateEnd";
|
|
328
|
+
eventNames["ADD_TEXT"] = "addText";
|
|
329
|
+
eventNames["ADD_OBJECT"] = "addObject";
|
|
330
|
+
eventNames["ADD_OBJECT_AFTER"] = "addObjectAfter";
|
|
331
|
+
eventNames["MOUSE_DOWN"] = "mousedown";
|
|
332
|
+
eventNames["MOUSE_UP"] = "mouseup";
|
|
333
|
+
eventNames["MOUSE_MOVE"] = "mousemove";
|
|
334
|
+
// UNDO/REDO Events
|
|
335
|
+
eventNames["REDO_STACK_CHANGED"] = "redoStackChanged";
|
|
336
|
+
eventNames["UNDO_STACK_CHANGED"] = "undoStackChanged";
|
|
337
|
+
eventNames["SELECTION_CLEARED"] = "selectionCleared";
|
|
338
|
+
eventNames["SELECTION_CREATED"] = "selectionCreated";
|
|
339
|
+
eventNames["EXECUTE_COMMAND"] = "executeCommand";
|
|
340
|
+
eventNames["AFTER_UNDO"] = "afterUndo";
|
|
341
|
+
eventNames["AFTER_REDO"] = "afterRedo";
|
|
342
|
+
eventNames["ZOOM_CHANGED"] = "zoomChanged";
|
|
343
|
+
eventNames["HAND_STARTED"] = "handStarted";
|
|
344
|
+
eventNames["HAND_STOPPED"] = "handStopped";
|
|
345
|
+
eventNames["KEY_DOWN"] = "keydown";
|
|
346
|
+
eventNames["KEY_UP"] = "keyup";
|
|
347
|
+
})(eventNames || (eventNames = {}));
|
|
348
|
+
var commandNames;
|
|
349
|
+
(function (commandNames) {
|
|
350
|
+
commandNames["TEXT"] = "Text";
|
|
351
|
+
commandNames["MASK"] = "Image";
|
|
352
|
+
commandNames["CROP"] = "Crop";
|
|
353
|
+
commandNames["DRAW"] = "Draw";
|
|
354
|
+
commandNames["ICON"] = "Icon";
|
|
355
|
+
commandNames["LOAD"] = "Load";
|
|
356
|
+
commandNames["SHAPE"] = "Shape";
|
|
357
|
+
commandNames["CLEAR_OBJECTS"] = "clearObjects";
|
|
358
|
+
commandNames["LOAD_IMAGE"] = "loadImage";
|
|
359
|
+
commandNames["FLIP_IMAGE"] = "flip";
|
|
360
|
+
commandNames["ROTATE_IMAGE"] = "rotate";
|
|
361
|
+
commandNames["ADD_OBJECT"] = "addObject";
|
|
362
|
+
commandNames["REMOVE_OBJECT"] = "removeObject";
|
|
363
|
+
commandNames["APPLY_FILTER"] = "applyFilter";
|
|
364
|
+
commandNames["REMOVE_FILTER"] = "removeFilter";
|
|
365
|
+
commandNames["ADD_ICON"] = "addIcon";
|
|
366
|
+
commandNames["CHANGE_ICON_COLOR"] = "changeIconColor";
|
|
367
|
+
commandNames["ADD_SHAPE"] = "addShape";
|
|
368
|
+
commandNames["CHANGE_SHAPE"] = "changeShape";
|
|
369
|
+
commandNames["ADD_TEXT"] = "addText";
|
|
370
|
+
commandNames["CHANGE_TEXT"] = "changeText";
|
|
371
|
+
commandNames["CHANGE_TEXT_STYLE"] = "changeTextStyle";
|
|
372
|
+
commandNames["ADD_IMAGE_OBJECT"] = "addImageObject";
|
|
373
|
+
commandNames["RESIZE_CANVAS_DIMENSION"] = "resizeCanvasDimension";
|
|
374
|
+
commandNames["SET_OBJECT_PROPERTIES"] = "setObjectProperties";
|
|
375
|
+
commandNames["SET_OBJECT_POSITION"] = "setObjectPosition";
|
|
376
|
+
commandNames["CHANGE_SELECTION"] = "changeSelection";
|
|
377
|
+
})(commandNames || (commandNames = {}));
|
|
378
|
+
var historyNames;
|
|
379
|
+
(function (historyNames) {
|
|
380
|
+
historyNames["LOAD_IMAGE"] = "Load";
|
|
381
|
+
historyNames["LOAD_MASK_IMAGE"] = "Mask";
|
|
382
|
+
historyNames["ADD_MASK_IMAGE"] = "Mask";
|
|
383
|
+
historyNames["ADD_IMAGE_OBJECT"] = "Mask";
|
|
384
|
+
historyNames["CROP"] = "Crop";
|
|
385
|
+
historyNames["APPLY_FILTER"] = "Apply filter";
|
|
386
|
+
historyNames["REMOVE_FILTER"] = "Remove filter";
|
|
387
|
+
historyNames["CHANGE_SHAPE"] = "Shape";
|
|
388
|
+
historyNames["CHANGE_ICON_COLOR"] = "Icon";
|
|
389
|
+
historyNames["ADD_TEXT"] = "Text";
|
|
390
|
+
historyNames["CHANGE_TEXT_STYLE"] = "Text";
|
|
391
|
+
historyNames["REMOVE_OBJECT"] = "Delete";
|
|
392
|
+
historyNames["CLEAR_OBJECTS"] = "Delete";
|
|
393
|
+
})(historyNames || (historyNames = {}));
|
|
394
|
+
var filterType;
|
|
395
|
+
(function (filterType) {
|
|
396
|
+
filterType["VINTAGE"] = "vintage";
|
|
397
|
+
filterType["SEPIA2"] = "sepia2";
|
|
398
|
+
filterType["REMOVE_COLOR"] = "removeColor";
|
|
399
|
+
filterType["COLOR_FILTER"] = "colorFilter";
|
|
400
|
+
filterType["REMOVE_WHITE"] = "removeWhite";
|
|
401
|
+
filterType["BLEND_COLOR"] = "blendColor";
|
|
402
|
+
filterType["BLEND"] = "blend";
|
|
403
|
+
filterType["TINT"] = "tint";
|
|
404
|
+
filterType["MULTIPLY"] = "multiply";
|
|
405
|
+
filterType["BLEND_OR_TINT_OR_MULTIPLY"] = "blend_tint_multiply";
|
|
406
|
+
filterType["REMOVE_COLOR_OR_WHITE"] = "removeColor_removeWhite";
|
|
407
|
+
filterType["BRIGHTNESS"] = "brightness";
|
|
408
|
+
filterType["NOISE"] = "noise";
|
|
409
|
+
filterType["PIXELATE"] = "pixelate";
|
|
410
|
+
filterType["SHARPEN"] = "sharpen";
|
|
411
|
+
filterType["INVERT"] = "invert";
|
|
412
|
+
filterType["EMBOSS"] = "emboss";
|
|
413
|
+
filterType["SEPIA"] = "sepia";
|
|
414
|
+
filterType["GRAYSCALE"] = "grayscale";
|
|
415
|
+
filterType["BLUR"] = "blur";
|
|
416
|
+
})(filterType || (filterType = {}));
|
|
417
|
+
var drawingModes;
|
|
418
|
+
(function (drawingModes) {
|
|
419
|
+
drawingModes["NORMAL"] = "NORMAL";
|
|
420
|
+
drawingModes["CROPPER"] = "CROPPER";
|
|
421
|
+
drawingModes["FREE_DRAWING"] = "FREE_DRAWING";
|
|
422
|
+
drawingModes["LINE_DRAWING"] = "LINE_DRAWING";
|
|
423
|
+
drawingModes["TEXT"] = "TEXT";
|
|
424
|
+
drawingModes["SHAPE"] = "SHAPE";
|
|
425
|
+
drawingModes["ICON"] = "ICON";
|
|
426
|
+
drawingModes["ZOOM"] = "ZOOM";
|
|
427
|
+
})(drawingModes || (drawingModes = {}));
|
|
428
|
+
const defaultIconPath = {
|
|
429
|
+
'icon-arrow': 'M40 12V0l24 24-24 24V36H0V12h40z',
|
|
430
|
+
'icon-arrow-2': 'M49,32 H3 V22 h46 l-18,-18 h12 l23,23 L43,50 h-12 l18,-18 z ',
|
|
431
|
+
'icon-arrow-3': 'M43.349998,27 L17.354,53 H1.949999 l25.996,-26 L1.949999,1 h15.404 L43.349998,27 z ',
|
|
432
|
+
'icon-star': 'M35,54.557999 l-19.912001,10.468 l3.804,-22.172001 l-16.108,-15.7 l22.26,-3.236 L35,3.746 l9.956,20.172001 l22.26,3.236 l-16.108,15.7 l3.804,22.172001 z ',
|
|
433
|
+
'icon-star-2': 'M17,31.212 l-7.194,4.08 l-4.728,-6.83 l-8.234,0.524 l-1.328,-8.226 l-7.644,-3.14 l2.338,-7.992 l-5.54,-6.18 l5.54,-6.176 l-2.338,-7.994 l7.644,-3.138 l1.328,-8.226 l8.234,0.522 l4.728,-6.83 L17,-24.312 l7.194,-4.08 l4.728,6.83 l8.234,-0.522 l1.328,8.226 l7.644,3.14 l-2.338,7.992 l5.54,6.178 l-5.54,6.178 l2.338,7.992 l-7.644,3.14 l-1.328,8.226 l-8.234,-0.524 l-4.728,6.83 z ',
|
|
434
|
+
'icon-polygon': 'M3,31 L19,3 h32 l16,28 l-16,28 H19 z ',
|
|
435
|
+
'icon-location': 'M24 62C8 45.503 0 32.837 0 24 0 10.745 10.745 0 24 0s24 10.745 24 24c0 8.837-8 21.503-24 38zm0-28c5.523 0 10-4.477 10-10s-4.477-10-10-10-10 4.477-10 10 4.477 10 10 10z',
|
|
436
|
+
'icon-heart': 'M49.994999,91.349998 l-6.96,-6.333 C18.324001,62.606995 2.01,47.829002 2.01,29.690998 C2.01,14.912998 13.619999,3.299999 28.401001,3.299999 c8.349,0 16.362,5.859 21.594,12 c5.229,-6.141 13.242001,-12 21.591,-12 c14.778,0 26.390999,11.61 26.390999,26.390999 c0,18.138 -16.314001,32.916 -41.025002,55.374001 l-6.96,6.285 z ',
|
|
437
|
+
'icon-bubble': 'M44 48L34 58V48H12C5.373 48 0 42.627 0 36V12C0 5.373 5.373 0 12 0h40c6.627 0 12 5.373 12 12v24c0 6.627-5.373 12-12 12h-8z',
|
|
438
|
+
};
|
|
439
|
+
var cropModes;
|
|
440
|
+
(function (cropModes) {
|
|
441
|
+
cropModes["PRESET_SQUARE"] = "preset-square";
|
|
442
|
+
cropModes["PRESET_3_2"] = "preset-3-2";
|
|
443
|
+
cropModes["PRESET_4_3"] = "preset-4-3";
|
|
444
|
+
cropModes["PRESET_5_4"] = "preset-5-4";
|
|
445
|
+
cropModes["PRESET_7_5"] = "preset-7-5";
|
|
446
|
+
cropModes["PRESET_16_9"] = "preset-16-9";
|
|
447
|
+
cropModes["PRESET_NONE"] = "preset-none";
|
|
448
|
+
})(cropModes || (cropModes = {}));
|
|
449
|
+
const defaultColors = [
|
|
450
|
+
'#000000',
|
|
451
|
+
'#2a2a2a',
|
|
452
|
+
'#545454',
|
|
453
|
+
'#7e7e7e',
|
|
454
|
+
'#a8a8a8',
|
|
455
|
+
'#d2d2d2',
|
|
456
|
+
'#ffffff',
|
|
457
|
+
'#ff4040',
|
|
458
|
+
'#ff6518',
|
|
459
|
+
'#ffbb3b',
|
|
460
|
+
'#03bd9e',
|
|
461
|
+
'#00a9ff',
|
|
462
|
+
'#515ce6',
|
|
463
|
+
'#9e5fff',
|
|
464
|
+
'#ff5583',
|
|
465
|
+
];
|
|
466
|
+
var objectTypes;
|
|
467
|
+
(function (objectTypes) {
|
|
468
|
+
objectTypes["icon"] = "icon";
|
|
469
|
+
objectTypes["image"] = "image";
|
|
470
|
+
objectTypes["itext"] = "i-text";
|
|
471
|
+
objectTypes["text"] = "text";
|
|
472
|
+
objectTypes["straightLine"] = "line";
|
|
473
|
+
objectTypes["line"] = "path";
|
|
474
|
+
objectTypes["shapeRect"] = "rect";
|
|
475
|
+
objectTypes["shapeCircle"] = "circle";
|
|
476
|
+
objectTypes["shapeTriangle"] = "triangle";
|
|
477
|
+
})(objectTypes || (objectTypes = {}));
|
|
478
|
+
|
|
479
|
+
function isFileApiSupported() {
|
|
480
|
+
return !!(window.File && window.FileList && window.FileReader);
|
|
481
|
+
}
|
|
482
|
+
function isSilentCommand(command) {
|
|
483
|
+
return typeof command === 'string'
|
|
484
|
+
? commandNames.LOAD_IMAGE === command
|
|
485
|
+
: commandNames.LOAD_IMAGE === command.name;
|
|
486
|
+
}
|
|
487
|
+
function getHistoryTitle(command) {
|
|
488
|
+
const { FLIP_IMAGE, ROTATE_IMAGE, ADD_TEXT, APPLY_FILTER, REMOVE_FILTER, CHANGE_SHAPE, CHANGE_ICON_COLOR, CHANGE_TEXT_STYLE, CLEAR_OBJECTS, ADD_IMAGE_OBJECT, REMOVE_OBJECT, } = commandNames;
|
|
489
|
+
const { name, args } = command;
|
|
490
|
+
let historyInfo;
|
|
491
|
+
switch (name) {
|
|
492
|
+
case FLIP_IMAGE:
|
|
493
|
+
historyInfo = {
|
|
494
|
+
name,
|
|
495
|
+
detail: args[1] === 'reset' ? args[1] : args[1].slice(4),
|
|
496
|
+
};
|
|
497
|
+
break;
|
|
498
|
+
case ROTATE_IMAGE:
|
|
499
|
+
historyInfo = { name, detail: args[2] };
|
|
500
|
+
break;
|
|
501
|
+
case APPLY_FILTER:
|
|
502
|
+
historyInfo = {
|
|
503
|
+
name: historyNames.APPLY_FILTER,
|
|
504
|
+
detail: getFilterType(args[1], args[2]),
|
|
505
|
+
};
|
|
506
|
+
break;
|
|
507
|
+
case REMOVE_FILTER:
|
|
508
|
+
historyInfo = { name: historyNames.REMOVE_FILTER, detail: args[1] };
|
|
509
|
+
break;
|
|
510
|
+
case CHANGE_SHAPE:
|
|
511
|
+
historyInfo = { name: historyNames.CHANGE_SHAPE, detail: 'Change' };
|
|
512
|
+
break;
|
|
513
|
+
case CHANGE_ICON_COLOR:
|
|
514
|
+
historyInfo = { name: historyNames.CHANGE_ICON_COLOR, detail: 'Change' };
|
|
515
|
+
break;
|
|
516
|
+
case CHANGE_TEXT_STYLE:
|
|
517
|
+
historyInfo = { name: historyNames.CHANGE_TEXT_STYLE, detail: 'Change' };
|
|
518
|
+
break;
|
|
519
|
+
case REMOVE_OBJECT:
|
|
520
|
+
historyInfo = { name: historyNames.REMOVE_OBJECT, detail: args[2] };
|
|
521
|
+
break;
|
|
522
|
+
case CLEAR_OBJECTS:
|
|
523
|
+
historyInfo = { name: historyNames.CLEAR_OBJECTS, detail: 'All' };
|
|
524
|
+
break;
|
|
525
|
+
case ADD_IMAGE_OBJECT:
|
|
526
|
+
historyInfo = { name: historyNames.ADD_IMAGE_OBJECT, detail: 'Add' };
|
|
527
|
+
break;
|
|
528
|
+
case ADD_TEXT:
|
|
529
|
+
historyInfo = { name: historyNames.ADD_TEXT };
|
|
530
|
+
break;
|
|
531
|
+
default:
|
|
532
|
+
historyInfo = { name };
|
|
533
|
+
break;
|
|
534
|
+
}
|
|
535
|
+
if (args[1] === 'mask') {
|
|
536
|
+
historyInfo = { name: historyNames.LOAD_MASK_IMAGE, detail: 'Apply' };
|
|
537
|
+
}
|
|
538
|
+
return historyInfo;
|
|
539
|
+
}
|
|
540
|
+
function getFilterType(type, { useAlpha = true, mode = null } = {}) {
|
|
541
|
+
const { VINTAGE, REMOVE_COLOR, BLEND_COLOR, SEPIA2, COLOR_FILTER, REMOVE_WHITE, BLEND, } = filterType;
|
|
542
|
+
let filterName;
|
|
543
|
+
switch (type) {
|
|
544
|
+
case VINTAGE:
|
|
545
|
+
filterName = SEPIA2;
|
|
546
|
+
break;
|
|
547
|
+
case REMOVE_COLOR:
|
|
548
|
+
filterName = useAlpha ? COLOR_FILTER : REMOVE_WHITE;
|
|
549
|
+
break;
|
|
550
|
+
case BLEND_COLOR:
|
|
551
|
+
filterName = mode === 'add' ? BLEND : mode;
|
|
552
|
+
break;
|
|
553
|
+
default:
|
|
554
|
+
filterName = type;
|
|
555
|
+
}
|
|
556
|
+
return toStartOfCapital(filterName);
|
|
557
|
+
}
|
|
558
|
+
function toStartOfCapital(str) {
|
|
559
|
+
return str.replace(/[a-z]/, (first) => first.toUpperCase());
|
|
560
|
+
}
|
|
561
|
+
function dataUrlToBlob(dataUrl) {
|
|
562
|
+
const { groups: { mime, base64data }, } = /data:(?<mime>.+);base64,(?<base64data>.+)/.exec(dataUrl);
|
|
563
|
+
const byteCharacters = atob(base64data);
|
|
564
|
+
const byteNumbers = new Array(byteCharacters.length);
|
|
565
|
+
for (let i = 0; i < byteCharacters.length; i++) {
|
|
566
|
+
byteNumbers[i] = byteCharacters.charCodeAt(i);
|
|
567
|
+
}
|
|
568
|
+
const byteArray = new Uint8Array(byteNumbers);
|
|
569
|
+
return new Blob([byteArray], { type: mime });
|
|
570
|
+
}
|
|
571
|
+
const emptyCropRectValues = {
|
|
572
|
+
LEFT: 0,
|
|
573
|
+
TOP: 0,
|
|
574
|
+
WIDTH: 0.5,
|
|
575
|
+
HEIGHT: 0.5,
|
|
576
|
+
};
|
|
577
|
+
/**
|
|
578
|
+
* Check if cropRect is Empty.
|
|
579
|
+
* @param {Object} cropRect - cropRect object
|
|
580
|
+
* @param {Number} cropRect.left - cropRect left position value
|
|
581
|
+
* @param {Number} cropRect.top - cropRect top position value
|
|
582
|
+
* @param {Number} cropRect.width - cropRect width value
|
|
583
|
+
* @param {Number} cropRect.height - cropRect height value
|
|
584
|
+
* @returns {boolean}
|
|
585
|
+
*/
|
|
586
|
+
function isEmptyCropzone(cropRect) {
|
|
587
|
+
const { left, top, width, height } = cropRect;
|
|
588
|
+
const { LEFT, TOP, WIDTH, HEIGHT } = emptyCropRectValues;
|
|
589
|
+
return left === LEFT && top === TOP && width === WIDTH && height === HEIGHT;
|
|
590
|
+
}
|
|
591
|
+
function clearSelection(imageEditor, fire_event = true) {
|
|
592
|
+
imageEditor.discardSelection();
|
|
593
|
+
if (fire_event) {
|
|
594
|
+
imageEditor.fire(eventNames.OBJECT_ACTIVATED, null);
|
|
595
|
+
imageEditor.fire(eventNames.SELECTION_CLEARED, null);
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
function getActiveObjectId(imageEditor) {
|
|
599
|
+
if (imageEditor != null) {
|
|
600
|
+
let activeObject = imageEditor._graphics.getActiveObject();
|
|
601
|
+
if (activeObject) {
|
|
602
|
+
let activeObjectId = imageEditor._graphics.getObjectId(activeObject);
|
|
603
|
+
return activeObjectId;
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
return null;
|
|
607
|
+
}
|
|
608
|
+
async function removeFilter(imageEditor, type, isSilent) {
|
|
609
|
+
if (imageEditor != null) {
|
|
610
|
+
if (isSilent) {
|
|
611
|
+
await imageEditor.executeSilent('removeFilter', type);
|
|
612
|
+
}
|
|
613
|
+
else {
|
|
614
|
+
await imageEditor.execute('removeFilter', type);
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
}
|
|
618
|
+
function rgbaToObject(rgba) {
|
|
619
|
+
if (rgba.startsWith('rgba')) {
|
|
620
|
+
const { groups: { r, g, b, a }, } = /rgba\(\s*(?<r>\d+)\s*,\s*(?<g>\d+)\s*,\s*(?<b>\d+)\s*,\s*(?<a>[0-9.]+)\s*\)/.exec(rgba);
|
|
621
|
+
let parsedR = parseInt(r);
|
|
622
|
+
let parsedG = parseInt(g);
|
|
623
|
+
let parsedB = parseInt(b);
|
|
624
|
+
return {
|
|
625
|
+
r: parsedR,
|
|
626
|
+
g: parsedG,
|
|
627
|
+
b: parsedB,
|
|
628
|
+
hexString: `#${(parsedR <= 15 ? '0' : '') + parsedR.toString(16)}${(parsedG <= 15 ? '0' : '') + parsedG.toString(16)}${(parsedB <= 15 ? '0' : '') + parsedB.toString(16)}`,
|
|
629
|
+
alpha: parseFloat(a),
|
|
630
|
+
};
|
|
631
|
+
}
|
|
632
|
+
return rgbToObject(rgba);
|
|
633
|
+
}
|
|
634
|
+
function rgbToObject(rgb) {
|
|
635
|
+
if (rgb.startsWith('rgb')) {
|
|
636
|
+
const { groups: { r, g, b }, } = /rgb\(\s*(?<r>\d+)\s*,\s*(?<g>\d+)\s*,\s*(?<b>\d+)\s*\)/.exec(rgb);
|
|
637
|
+
let parsedR = parseInt(r);
|
|
638
|
+
let parsedG = parseInt(g);
|
|
639
|
+
let parsedB = parseInt(b);
|
|
640
|
+
return {
|
|
641
|
+
r: parsedR,
|
|
642
|
+
g: parsedG,
|
|
643
|
+
b: parsedB,
|
|
644
|
+
hexString: `#${(parsedR <= 15 ? '0' : '') + parsedR.toString(16)}${(parsedG <= 15 ? '0' : '') + parsedG.toString(16)}${(parsedB <= 15 ? '0' : '') + parsedB.toString(16)}`,
|
|
645
|
+
alpha: 1,
|
|
646
|
+
};
|
|
647
|
+
}
|
|
648
|
+
return null;
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
var HistoryItemType;
|
|
652
|
+
(function (HistoryItemType) {
|
|
653
|
+
HistoryItemType[HistoryItemType["Shape"] = 0] = "Shape";
|
|
654
|
+
HistoryItemType[HistoryItemType["Icon"] = 1] = "Icon";
|
|
655
|
+
HistoryItemType[HistoryItemType["Text"] = 2] = "Text";
|
|
656
|
+
HistoryItemType[HistoryItemType["Mask"] = 3] = "Mask";
|
|
657
|
+
HistoryItemType[HistoryItemType["Crop"] = 4] = "Crop";
|
|
658
|
+
HistoryItemType[HistoryItemType["Draw"] = 5] = "Draw";
|
|
659
|
+
HistoryItemType[HistoryItemType["Rotate"] = 6] = "Rotate";
|
|
660
|
+
HistoryItemType[HistoryItemType["Flip"] = 7] = "Flip";
|
|
661
|
+
HistoryItemType[HistoryItemType["Load"] = 8] = "Load";
|
|
662
|
+
HistoryItemType[HistoryItemType["Delete"] = 9] = "Delete";
|
|
663
|
+
HistoryItemType[HistoryItemType["Image"] = 10] = "Image";
|
|
664
|
+
HistoryItemType[HistoryItemType["ApplyFilter"] = 11] = "ApplyFilter";
|
|
665
|
+
HistoryItemType[HistoryItemType["RemoveFilter"] = 12] = "RemoveFilter";
|
|
666
|
+
})(HistoryItemType || (HistoryItemType = {}));
|
|
667
|
+
class HistoryItem {
|
|
668
|
+
constructor(command, translationService, imageEditor) {
|
|
669
|
+
if (typeof command === 'string') {
|
|
670
|
+
if (command === commandNames.TEXT) {
|
|
671
|
+
this.name = translationService.getTranslation('tui-image-editor-angular-history-text-general');
|
|
672
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-text-details');
|
|
673
|
+
this.type = HistoryItemType.Text;
|
|
674
|
+
}
|
|
675
|
+
else if (command === commandNames.MASK) {
|
|
676
|
+
this.name = translationService.getTranslation('tui-image-editor-angular-history-mask-general');
|
|
677
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-mask-details');
|
|
678
|
+
this.type = HistoryItemType.Mask;
|
|
679
|
+
}
|
|
680
|
+
else if (command === commandNames.CROP) {
|
|
681
|
+
this.name = translationService.getTranslation('tui-image-editor-angular-history-crop');
|
|
682
|
+
this.type = HistoryItemType.Crop;
|
|
683
|
+
}
|
|
684
|
+
else if (command === commandNames.DRAW) {
|
|
685
|
+
this.name = translationService.getTranslation('tui-image-editor-angular-history-draw-general');
|
|
686
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-draw-details');
|
|
687
|
+
this.type = HistoryItemType.Draw;
|
|
688
|
+
}
|
|
689
|
+
else if (command === commandNames.ICON) {
|
|
690
|
+
this.name = translationService.getTranslation('tui-image-editor-angular-history-icon-general');
|
|
691
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-icon-details');
|
|
692
|
+
this.type = HistoryItemType.Icon;
|
|
693
|
+
}
|
|
694
|
+
else if (command === commandNames.LOAD) {
|
|
695
|
+
this.name = translationService.getTranslation('tui-image-editor-angular-history-load');
|
|
696
|
+
this.type = HistoryItemType.Load;
|
|
697
|
+
}
|
|
698
|
+
else if (command === commandNames.SHAPE) {
|
|
699
|
+
this.name = translationService.getTranslation('tui-image-editor-angular-history-shape-general');
|
|
700
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-shape-details');
|
|
701
|
+
this.type = HistoryItemType.Shape;
|
|
702
|
+
}
|
|
703
|
+
else {
|
|
704
|
+
this.name = command;
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
else {
|
|
708
|
+
switch (command.name) {
|
|
709
|
+
case commandNames.FLIP_IMAGE:
|
|
710
|
+
this.name = translationService.getTranslation('tui-image-editor-angular-history-flip');
|
|
711
|
+
switch (command.args[1]) {
|
|
712
|
+
case 'reset':
|
|
713
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-flip-reset');
|
|
714
|
+
break;
|
|
715
|
+
case 'flipX':
|
|
716
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-flip-flipX');
|
|
717
|
+
break;
|
|
718
|
+
case 'flipY':
|
|
719
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-flip-flipY');
|
|
720
|
+
break;
|
|
721
|
+
}
|
|
722
|
+
this.type = HistoryItemType.Flip;
|
|
723
|
+
break;
|
|
724
|
+
case commandNames.ROTATE_IMAGE:
|
|
725
|
+
this.name = translationService.getTranslation('tui-image-editor-angular-history-rotate');
|
|
726
|
+
this.detail = command.args[2] + '°';
|
|
727
|
+
this.type = HistoryItemType.Rotate;
|
|
728
|
+
this.args = [command.args[2]];
|
|
729
|
+
break;
|
|
730
|
+
case commandNames.APPLY_FILTER:
|
|
731
|
+
if (command.args?.length >= 3 && command.args[1] === 'mask') {
|
|
732
|
+
this.name = translationService.getTranslation('tui-image-editor-angular-history-mask-general');
|
|
733
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-mask-apply');
|
|
734
|
+
this.type = HistoryItemType.Mask;
|
|
735
|
+
}
|
|
736
|
+
else {
|
|
737
|
+
this.name = translationService.getTranslation('tui-image-editor-angular-history-applyFilter');
|
|
738
|
+
this.detail = getFilterType(command.args[1], command.args[2]);
|
|
739
|
+
this.type = HistoryItemType.ApplyFilter;
|
|
740
|
+
if (command.args[1] === filterType.REMOVE_COLOR &&
|
|
741
|
+
command.args[2] != null) {
|
|
742
|
+
this.filterType =
|
|
743
|
+
command.args[2].useAlpha == null
|
|
744
|
+
? filterType.REMOVE_COLOR
|
|
745
|
+
: filterType.REMOVE_WHITE;
|
|
746
|
+
this.detail =
|
|
747
|
+
command.args[2].useAlpha == null
|
|
748
|
+
? translationService.getTranslation('tui-image-editor-angular-submenus-filter-colorFilter')
|
|
749
|
+
: translationService.getTranslation('tui-image-editor-angular-submenus-filter-removeWhite');
|
|
750
|
+
this.args = [command.args[2].distance];
|
|
751
|
+
}
|
|
752
|
+
else if (command.args[1] === filterType.BLEND_COLOR &&
|
|
753
|
+
command.args[2] != null) {
|
|
754
|
+
if (command.args[2].mode === 'tint') {
|
|
755
|
+
this.filterType = filterType.TINT;
|
|
756
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-submenus-filter-tint');
|
|
757
|
+
}
|
|
758
|
+
else if (command.args[2].mode === 'multiply') {
|
|
759
|
+
this.filterType = filterType.MULTIPLY;
|
|
760
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-submenus-filter-multiply');
|
|
761
|
+
}
|
|
762
|
+
else if (command.args[2].mode === 'add') {
|
|
763
|
+
this.filterType = filterType.BLEND;
|
|
764
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-submenus-filter-blend');
|
|
765
|
+
}
|
|
766
|
+
this.args = [command.args[2].color];
|
|
767
|
+
}
|
|
768
|
+
else if (command.args[1] === filterType.NOISE &&
|
|
769
|
+
command.args[2] != null) {
|
|
770
|
+
this.filterType = filterType.NOISE;
|
|
771
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-submenus-filter-noise');
|
|
772
|
+
this.args = [command.args[2].noise];
|
|
773
|
+
}
|
|
774
|
+
else if (command.args[1] === filterType.BRIGHTNESS &&
|
|
775
|
+
command.args[2] != null) {
|
|
776
|
+
this.filterType = filterType.BRIGHTNESS;
|
|
777
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-submenus-filter-brightness');
|
|
778
|
+
this.args = [command.args[2].brightness];
|
|
779
|
+
}
|
|
780
|
+
else if (command.args[1] === filterType.PIXELATE &&
|
|
781
|
+
command.args[2] != null) {
|
|
782
|
+
this.filterType = filterType.PIXELATE;
|
|
783
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-submenus-filter-pixelate');
|
|
784
|
+
this.args = [command.args[2].blocksize];
|
|
785
|
+
}
|
|
786
|
+
else if (command.args[1] === filterType.GRAYSCALE) {
|
|
787
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-submenus-filter-grayscale');
|
|
788
|
+
}
|
|
789
|
+
else if (command.args[1] === filterType.SEPIA) {
|
|
790
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-submenus-filter-sepia');
|
|
791
|
+
}
|
|
792
|
+
else if (command.args[1] === filterType.BLUR) {
|
|
793
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-submenus-filter-blur');
|
|
794
|
+
}
|
|
795
|
+
else if (command.args[1] === filterType.INVERT) {
|
|
796
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-submenus-filter-invert');
|
|
797
|
+
}
|
|
798
|
+
else if (command.args[1] === filterType.VINTAGE) {
|
|
799
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-submenus-filter-sepia2');
|
|
800
|
+
}
|
|
801
|
+
else if (command.args[1] === filterType.SHARPEN) {
|
|
802
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-submenus-filter-sharpen');
|
|
803
|
+
}
|
|
804
|
+
else if (command.args[1] === filterType.EMBOSS) {
|
|
805
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-submenus-filter-emboss');
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
break;
|
|
809
|
+
case commandNames.REMOVE_FILTER:
|
|
810
|
+
this.name = translationService.getTranslation('tui-image-editor-angular-history-removeFilter');
|
|
811
|
+
if (command.args[1] === filterType.BLEND_COLOR) {
|
|
812
|
+
this.filterType = filterType.BLEND_OR_TINT_OR_MULTIPLY;
|
|
813
|
+
this.detail = `${translationService.getTranslation('tui-image-editor-angular-submenus-filter-tint')} | ${translationService.getTranslation('tui-image-editor-angular-submenus-filter-multiply')} | ${translationService.getTranslation('tui-image-editor-angular-submenus-filter-blend')}`;
|
|
814
|
+
}
|
|
815
|
+
else if (command.args[1] === filterType.REMOVE_COLOR) {
|
|
816
|
+
this.filterType = filterType.REMOVE_COLOR_OR_WHITE;
|
|
817
|
+
this.detail = `${translationService.getTranslation('tui-image-editor-angular-submenus-filter-removeWhite')} | ${translationService.getTranslation('tui-image-editor-angular-submenus-filter-colorFilter')}`;
|
|
818
|
+
}
|
|
819
|
+
else if (command.args[1] === filterType.GRAYSCALE) {
|
|
820
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-submenus-filter-grayscale');
|
|
821
|
+
}
|
|
822
|
+
else if (command.args[1] === filterType.SEPIA) {
|
|
823
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-submenus-filter-sepia');
|
|
824
|
+
}
|
|
825
|
+
else if (command.args[1] === filterType.BLUR) {
|
|
826
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-submenus-filter-blur');
|
|
827
|
+
}
|
|
828
|
+
else if (command.args[1] === filterType.INVERT) {
|
|
829
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-submenus-filter-invert');
|
|
830
|
+
}
|
|
831
|
+
else if (command.args[1] === filterType.VINTAGE) {
|
|
832
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-submenus-filter-sepia2');
|
|
833
|
+
}
|
|
834
|
+
else if (command.args[1] === filterType.SHARPEN) {
|
|
835
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-submenus-filter-sharpen');
|
|
836
|
+
}
|
|
837
|
+
else if (command.args[1] === filterType.EMBOSS) {
|
|
838
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-submenus-filter-emboss');
|
|
839
|
+
}
|
|
840
|
+
this.type = HistoryItemType.RemoveFilter;
|
|
841
|
+
break;
|
|
842
|
+
case commandNames.CHANGE_SHAPE:
|
|
843
|
+
this.name = translationService.getTranslation('tui-image-editor-angular-history-shape-general');
|
|
844
|
+
if (command.args?.length >= 3) {
|
|
845
|
+
let changedProperties = command.args[2];
|
|
846
|
+
if (changedProperties.strokeWidth) {
|
|
847
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-shape-strokeWidth');
|
|
848
|
+
}
|
|
849
|
+
else if (changedProperties.stroke) {
|
|
850
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-shape-stroke');
|
|
851
|
+
}
|
|
852
|
+
else if (changedProperties.fill) {
|
|
853
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-shape-fill');
|
|
854
|
+
}
|
|
855
|
+
}
|
|
856
|
+
this.type = HistoryItemType.Shape;
|
|
857
|
+
break;
|
|
858
|
+
case commandNames.CHANGE_ICON_COLOR:
|
|
859
|
+
this.name = translationService.getTranslation('tui-image-editor-angular-history-icon-general');
|
|
860
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-icon-colorChange');
|
|
861
|
+
this.type = HistoryItemType.Icon;
|
|
862
|
+
break;
|
|
863
|
+
case commandNames.CHANGE_TEXT_STYLE:
|
|
864
|
+
this.name = translationService.getTranslation('tui-image-editor-angular-history-text-general');
|
|
865
|
+
this.type = HistoryItemType.Text;
|
|
866
|
+
if (command.args?.length >= 3 &&
|
|
867
|
+
typeof command.args[2] === 'object') {
|
|
868
|
+
let textStyleArg = command.args[2];
|
|
869
|
+
if (textStyleArg.textAlign) {
|
|
870
|
+
switch (textStyleArg.textAlign) {
|
|
871
|
+
case 'left':
|
|
872
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-text-styleChange-textAlignment-left');
|
|
873
|
+
break;
|
|
874
|
+
case 'center':
|
|
875
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-text-styleChange-textAlignment-center');
|
|
876
|
+
break;
|
|
877
|
+
case 'right':
|
|
878
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-text-styleChange-textAlignment-right');
|
|
879
|
+
break;
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
else if (textStyleArg.textDecoration ||
|
|
883
|
+
textStyleArg.underline != null) {
|
|
884
|
+
if (textStyleArg.underline) {
|
|
885
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-text-styleChange-underline-true');
|
|
886
|
+
}
|
|
887
|
+
else if (textStyleArg.underline === false) {
|
|
888
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-text-styleChange-underline-false');
|
|
889
|
+
}
|
|
890
|
+
}
|
|
891
|
+
else if (textStyleArg.fontStyle) {
|
|
892
|
+
if (textStyleArg.fontStyle === 'normal') {
|
|
893
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-text-styleChange-fontStyle-normal');
|
|
894
|
+
}
|
|
895
|
+
else if (textStyleArg.fontStyle === 'italic') {
|
|
896
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-text-styleChange-fontStyle-italic');
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
else if (textStyleArg.fontWeight) {
|
|
900
|
+
if (textStyleArg.fontWeight === 'normal') {
|
|
901
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-text-styleChange-fontWeight-normal');
|
|
902
|
+
}
|
|
903
|
+
else if (textStyleArg.fontWeight === 'bold') {
|
|
904
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-text-styleChange-fontWeight-bold');
|
|
905
|
+
}
|
|
906
|
+
}
|
|
907
|
+
else if (textStyleArg.fontSize) {
|
|
908
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-text-styleChange-fontSize', { 0: textStyleArg.fontSize });
|
|
909
|
+
}
|
|
910
|
+
else if (textStyleArg.fill) {
|
|
911
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-text-fill');
|
|
912
|
+
}
|
|
913
|
+
}
|
|
914
|
+
break;
|
|
915
|
+
case commandNames.REMOVE_OBJECT:
|
|
916
|
+
this.name = translationService.getTranslation('tui-image-editor-angular-history-delete');
|
|
917
|
+
switch (command.args[2]) {
|
|
918
|
+
case commandNames.DRAW:
|
|
919
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-delete-draw');
|
|
920
|
+
break;
|
|
921
|
+
case commandNames.SHAPE:
|
|
922
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-delete-shape');
|
|
923
|
+
break;
|
|
924
|
+
case commandNames.ICON:
|
|
925
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-delete-icon');
|
|
926
|
+
break;
|
|
927
|
+
case commandNames.TEXT:
|
|
928
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-delete-text');
|
|
929
|
+
break;
|
|
930
|
+
case commandNames.MASK:
|
|
931
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-delete-mask');
|
|
932
|
+
break;
|
|
933
|
+
}
|
|
934
|
+
this.type = HistoryItemType.Delete;
|
|
935
|
+
break;
|
|
936
|
+
case commandNames.CLEAR_OBJECTS:
|
|
937
|
+
this.name = translationService.getTranslation('tui-image-editor-angular-history-delete');
|
|
938
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-delete-all');
|
|
939
|
+
this.type = HistoryItemType.Delete;
|
|
940
|
+
break;
|
|
941
|
+
case commandNames.ADD_IMAGE_OBJECT:
|
|
942
|
+
this.name = translationService.getTranslation('tui-image-editor-angular-history-mask-general');
|
|
943
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-mask-added');
|
|
944
|
+
this.type = HistoryItemType.Image;
|
|
945
|
+
break;
|
|
946
|
+
case commandNames.ADD_TEXT:
|
|
947
|
+
this.name = translationService.getTranslation('tui-image-editor-angular-history-text-general');
|
|
948
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-text-added');
|
|
949
|
+
this.type = HistoryItemType.Text;
|
|
950
|
+
break;
|
|
951
|
+
case commandNames.SET_OBJECT_PROPERTIES:
|
|
952
|
+
if (command.args?.length >= 3) {
|
|
953
|
+
let objectId = command.args[1];
|
|
954
|
+
var props = imageEditor?.getObjectProperties(objectId, ['type']);
|
|
955
|
+
console.debug(props);
|
|
956
|
+
if (props?.type) {
|
|
957
|
+
if ([objectTypes.line, objectTypes.straightLine].indexOf(props.type) > -1) {
|
|
958
|
+
this.name = translationService.getTranslation('tui-image-editor-angular-history-draw-general');
|
|
959
|
+
this.type = HistoryItemType.Draw;
|
|
960
|
+
let changedProperties = command.args[2];
|
|
961
|
+
if (changedProperties?.strokeWidth) {
|
|
962
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-draw-strokeWidth', { 0: changedProperties.strokeWidth });
|
|
963
|
+
}
|
|
964
|
+
else if (changedProperties?.stroke) {
|
|
965
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-draw-stroke');
|
|
966
|
+
}
|
|
967
|
+
}
|
|
968
|
+
else if (props.type === objectTypes.icon) {
|
|
969
|
+
this.name = translationService.getTranslation('tui-image-editor-angular-history-icon-general');
|
|
970
|
+
this.type = HistoryItemType.Icon;
|
|
971
|
+
let changedProperties = command.args[2];
|
|
972
|
+
if (changedProperties?.fill) {
|
|
973
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-icon-fill');
|
|
974
|
+
}
|
|
975
|
+
}
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
break;
|
|
979
|
+
case commandNames.ADD_ICON:
|
|
980
|
+
this.name = translationService.getTranslation('tui-image-editor-angular-history-icon-general');
|
|
981
|
+
this.detail = translationService.getTranslation('tui-image-editor-angular-history-icon-added');
|
|
982
|
+
this.type = HistoryItemType.Icon;
|
|
983
|
+
break;
|
|
984
|
+
default:
|
|
985
|
+
this.name = command.name;
|
|
986
|
+
break;
|
|
987
|
+
}
|
|
988
|
+
}
|
|
989
|
+
}
|
|
990
|
+
}
|
|
991
|
+
|
|
992
|
+
class HistoryService {
|
|
993
|
+
constructor(translationService) {
|
|
994
|
+
this.translationService = translationService;
|
|
995
|
+
this.items = [];
|
|
996
|
+
this.historyIndex = -1;
|
|
997
|
+
this.onChangeEmitter = new BehaviorSubject([]);
|
|
998
|
+
}
|
|
999
|
+
/**
|
|
1000
|
+
* Get list's length
|
|
1001
|
+
*/
|
|
1002
|
+
get listLength() {
|
|
1003
|
+
return this.items.length;
|
|
1004
|
+
}
|
|
1005
|
+
/**
|
|
1006
|
+
* Clear history
|
|
1007
|
+
*/
|
|
1008
|
+
clear() {
|
|
1009
|
+
if (this.listLength > 0) {
|
|
1010
|
+
this.deleteListItemElement(0, this.listLength);
|
|
1011
|
+
this.historyIndex = -1;
|
|
1012
|
+
}
|
|
1013
|
+
}
|
|
1014
|
+
/**
|
|
1015
|
+
* Whether history menu has disabled item
|
|
1016
|
+
*/
|
|
1017
|
+
hasDisabledItem() {
|
|
1018
|
+
return this.listLength - 1 > this.historyIndex;
|
|
1019
|
+
}
|
|
1020
|
+
/**
|
|
1021
|
+
* Push list item element
|
|
1022
|
+
*/
|
|
1023
|
+
pushListItemElement(item) {
|
|
1024
|
+
this.items.push(item);
|
|
1025
|
+
}
|
|
1026
|
+
add(command, imageEditor) {
|
|
1027
|
+
console.debug(command);
|
|
1028
|
+
if (typeof command === 'string' && command === historyNames.LOAD_IMAGE) {
|
|
1029
|
+
this.deleteListItemElement(0, this.listLength);
|
|
1030
|
+
}
|
|
1031
|
+
if (this.hasDisabledItem()) {
|
|
1032
|
+
this.deleteListItemElement(this.historyIndex + 1, this.listLength);
|
|
1033
|
+
}
|
|
1034
|
+
if (typeof command === 'string' &&
|
|
1035
|
+
command === historyNames.ADD_MASK_IMAGE) {
|
|
1036
|
+
imageEditor?.clearRedoStack();
|
|
1037
|
+
imageEditor?.clearUndoStack();
|
|
1038
|
+
this.deleteListItemElement(0, this.listLength);
|
|
1039
|
+
}
|
|
1040
|
+
else {
|
|
1041
|
+
this.pushListItemElement(new HistoryItem(command, this.translationService, imageEditor));
|
|
1042
|
+
this.historyIndex = this.listLength - 1;
|
|
1043
|
+
}
|
|
1044
|
+
}
|
|
1045
|
+
/**
|
|
1046
|
+
* Select previous history of current selected history
|
|
1047
|
+
*/
|
|
1048
|
+
prev() {
|
|
1049
|
+
this.historyIndex -= 1;
|
|
1050
|
+
}
|
|
1051
|
+
/**
|
|
1052
|
+
* Select next history of current selected history
|
|
1053
|
+
*/
|
|
1054
|
+
next() {
|
|
1055
|
+
this.historyIndex += 1;
|
|
1056
|
+
}
|
|
1057
|
+
/**
|
|
1058
|
+
* Delete list item element
|
|
1059
|
+
* @param {number} start - start index to delete
|
|
1060
|
+
* @param {number} end - end index to delete
|
|
1061
|
+
*/
|
|
1062
|
+
deleteListItemElement(start, end) {
|
|
1063
|
+
this.items.splice(start, end - start + 1);
|
|
1064
|
+
}
|
|
1065
|
+
}
|
|
1066
|
+
HistoryService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: HistoryService, deps: [{ token: TranslationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1067
|
+
HistoryService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: HistoryService });
|
|
1068
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: HistoryService, decorators: [{
|
|
1069
|
+
type: Injectable
|
|
1070
|
+
}], ctorParameters: function () { return [{ type: TranslationService }]; } });
|
|
1071
|
+
|
|
1072
|
+
class LoadComponent {
|
|
1073
|
+
constructor() {
|
|
1074
|
+
this.loadImage = new EventEmitter();
|
|
1075
|
+
}
|
|
1076
|
+
onImageChosen(event) {
|
|
1077
|
+
let selectedFile = event.target.files[0];
|
|
1078
|
+
if (selectedFile != null) {
|
|
1079
|
+
this.loadImage.emit(selectedFile);
|
|
1080
|
+
}
|
|
1081
|
+
}
|
|
1082
|
+
}
|
|
1083
|
+
LoadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: LoadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1084
|
+
LoadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: LoadComponent, selector: "tui-image-editor-menus-buttons-load", outputs: { loadImage: "loadImage" }, ngImport: i0, template: "<div\r\n [title]=\"'tui-image-editor-angular-menus-buttons-load' | translate\"\r\n class=\"tie-btn-load tui-image-editor-item help enabled button-background\"\r\n>\r\n <!-- <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-file-upload\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-file-upload\" class=\"active use-default\"></use>\r\n <use xlink:href=\"#ic-file-upload\" class=\"hover use-default\"></use>\r\n </svg> -->\r\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M30.3168 5.05286H26.9987V1.73477C26.9987 0.847753 26.276 0.125 25.389 0.125H25.3397C24.4362 0.125 23.7135 0.847753 23.7135 1.73477V5.05286H20.4118C19.5248 5.05286 18.8021 5.77562 18.7856 6.66263V6.71191C18.7856 7.61535 19.5084 8.33811 20.4118 8.33811H23.7135V11.6398C23.7135 12.5268 24.4362 13.266 25.3397 13.2495H25.389C26.276 13.2495 26.9987 12.5268 26.9987 11.6398V8.33811H30.3168C31.2038 8.33811 31.9266 7.61535 31.9266 6.72834V6.66263C31.9266 5.77562 31.2038 5.05286 30.3168 5.05286ZM22.0709 11.6398V9.98073H20.4118C19.5412 9.98073 18.7199 9.63578 18.0957 9.02801C17.488 8.40381 17.143 7.5825 17.143 6.66263C17.143 6.07129 17.3073 5.52922 17.5865 5.05286H4.00204C2.19516 5.05286 0.716797 6.53122 0.716797 8.33811V28.0496C0.716797 29.8564 2.19516 31.3348 4.00204 31.3348H23.7135C25.5204 31.3348 26.9987 29.8564 26.9987 28.0496V14.4487C26.5059 14.7279 25.9475 14.9086 25.3233 14.9086C23.5328 14.8922 22.0709 13.4302 22.0709 11.6398ZM22.0052 28.0496H5.64466C4.97119 28.0496 4.57696 27.2775 4.98761 26.7355L8.24 22.4154C8.58495 21.9554 9.25843 21.9883 9.58695 22.4482L12.2151 26.4069L16.5024 20.6906C16.8309 20.2635 17.4715 20.2471 17.8001 20.6742L22.6458 26.719C23.0729 27.2611 22.6951 28.0496 22.0052 28.0496Z\" fill=\"#207C80\"/>\r\n </svg>\r\n <input\r\n type=\"file\"\r\n class=\"tui-image-editor-load-btn\"\r\n accept=\"image/*,.heic\"\r\n (change)=\"onImageChosen($event)\"\r\n />\r\n</div>\r\n", styles: [".button-background{width:100%;display:flex;justify-content:center;align-items:center}\n"], dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
1085
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: LoadComponent, decorators: [{
|
|
1086
|
+
type: Component,
|
|
1087
|
+
args: [{ selector: 'tui-image-editor-menus-buttons-load', template: "<div\r\n [title]=\"'tui-image-editor-angular-menus-buttons-load' | translate\"\r\n class=\"tie-btn-load tui-image-editor-item help enabled button-background\"\r\n>\r\n <!-- <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-file-upload\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-file-upload\" class=\"active use-default\"></use>\r\n <use xlink:href=\"#ic-file-upload\" class=\"hover use-default\"></use>\r\n </svg> -->\r\n <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M30.3168 5.05286H26.9987V1.73477C26.9987 0.847753 26.276 0.125 25.389 0.125H25.3397C24.4362 0.125 23.7135 0.847753 23.7135 1.73477V5.05286H20.4118C19.5248 5.05286 18.8021 5.77562 18.7856 6.66263V6.71191C18.7856 7.61535 19.5084 8.33811 20.4118 8.33811H23.7135V11.6398C23.7135 12.5268 24.4362 13.266 25.3397 13.2495H25.389C26.276 13.2495 26.9987 12.5268 26.9987 11.6398V8.33811H30.3168C31.2038 8.33811 31.9266 7.61535 31.9266 6.72834V6.66263C31.9266 5.77562 31.2038 5.05286 30.3168 5.05286ZM22.0709 11.6398V9.98073H20.4118C19.5412 9.98073 18.7199 9.63578 18.0957 9.02801C17.488 8.40381 17.143 7.5825 17.143 6.66263C17.143 6.07129 17.3073 5.52922 17.5865 5.05286H4.00204C2.19516 5.05286 0.716797 6.53122 0.716797 8.33811V28.0496C0.716797 29.8564 2.19516 31.3348 4.00204 31.3348H23.7135C25.5204 31.3348 26.9987 29.8564 26.9987 28.0496V14.4487C26.5059 14.7279 25.9475 14.9086 25.3233 14.9086C23.5328 14.8922 22.0709 13.4302 22.0709 11.6398ZM22.0052 28.0496H5.64466C4.97119 28.0496 4.57696 27.2775 4.98761 26.7355L8.24 22.4154C8.58495 21.9554 9.25843 21.9883 9.58695 22.4482L12.2151 26.4069L16.5024 20.6906C16.8309 20.2635 17.4715 20.2471 17.8001 20.6742L22.6458 26.719C23.0729 27.2611 22.6951 28.0496 22.0052 28.0496Z\" fill=\"#207C80\"/>\r\n </svg>\r\n <input\r\n type=\"file\"\r\n class=\"tui-image-editor-load-btn\"\r\n accept=\"image/*,.heic\"\r\n (change)=\"onImageChosen($event)\"\r\n />\r\n</div>\r\n", styles: [".button-background{width:100%;display:flex;justify-content:center;align-items:center}\n"] }]
|
|
1088
|
+
}], ctorParameters: function () { return []; }, propDecorators: { loadImage: [{
|
|
1089
|
+
type: Output
|
|
1090
|
+
}] } });
|
|
1091
|
+
|
|
1092
|
+
class HistoryComponent {
|
|
1093
|
+
constructor(historyService) {
|
|
1094
|
+
this.historyService = historyService;
|
|
1095
|
+
}
|
|
1096
|
+
get items() {
|
|
1097
|
+
return this.historyService.items;
|
|
1098
|
+
}
|
|
1099
|
+
get historyIndex() {
|
|
1100
|
+
return this.historyService.historyIndex;
|
|
1101
|
+
}
|
|
1102
|
+
onclickHistoryItem(index) {
|
|
1103
|
+
if (index !== this.historyIndex) {
|
|
1104
|
+
const count = Math.abs(index - this.historyIndex);
|
|
1105
|
+
if (index < this.historyIndex) {
|
|
1106
|
+
this.imageEditor?.undo(count).then(() => {
|
|
1107
|
+
this.historyService.onChangeEmitter.next(this.items.slice(0, index + 1));
|
|
1108
|
+
});
|
|
1109
|
+
}
|
|
1110
|
+
else {
|
|
1111
|
+
this.imageEditor?.redo(count).then(() => {
|
|
1112
|
+
this.historyService.onChangeEmitter.next(this.items.slice(0, index + 1));
|
|
1113
|
+
});
|
|
1114
|
+
}
|
|
1115
|
+
}
|
|
1116
|
+
}
|
|
1117
|
+
}
|
|
1118
|
+
HistoryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: HistoryComponent, deps: [{ token: HistoryService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1119
|
+
HistoryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: HistoryComponent, selector: "tui-image-editor-menus-buttons-history", inputs: { imageEditor: "imageEditor" }, ngImport: i0, template: "<div\r\n [ngbPopover]=\"popupContent\"\r\n popoverClass=\"tie-history-popover\"\r\n autoClose=\"outside\"\r\n container=\"body\"\r\n class=\"tie-btn-history tui-image-editor-item help enabled\"\r\n>\r\n <div\r\n [title]=\"'tui-image-editor-angular-menus-buttons-history' | translate\"\r\n class=\"tui-image-editor-d-flex tui-image-editor-align-items-center\"\r\n >\r\n <svg class=\"svg_ic-menu tui-image-editor-d-flex\">\r\n <use xlink:href=\"#ic-history\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-history\" class=\"disabled use-default\"></use>\r\n <use xlink:href=\"#ic-history\" class=\"hover use-default\"></use>\r\n </svg>\r\n </div>\r\n</div>\r\n\r\n<ng-template #popupContent>\r\n <div class=\"tie-panel-history\">\r\n <ul class=\"history-list\" *ngIf=\"items.length > 0\">\r\n <li\r\n [class]=\"\r\n 'history-item ' +\r\n (itemNr > historyIndex ? 'disabled-item' : '') +\r\n (itemNr == historyIndex ? 'selected-item' : '')\r\n \"\r\n *ngFor=\"let item of items; index as itemNr\"\r\n >\r\n <div\r\n class=\"tui-image-editor-history-item history tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap tui-image-editor-align-items-center\"\r\n (click)=\"onclickHistoryItem(itemNr)\"\r\n >\r\n <div\r\n class=\"history-item-icon tui-image-editor-d-flex tui-image-editor-align-items-center\"\r\n >\r\n <svg *ngIf=\"item.type == 8\" class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-history-load\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-history-load\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n <svg *ngIf=\"item.type == 5\" class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-history-draw\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-history-draw\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n <svg *ngIf=\"item.type == 6\" class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-history-rotate\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-history-rotate\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n <svg *ngIf=\"item.type == 4\" class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-history-crop\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-history-crop\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n <svg *ngIf=\"item.type == 7\" class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-history-flip\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-history-flip\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n <svg *ngIf=\"item.type == 2\" class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-history-text\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-history-text\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n <svg\r\n *ngIf=\"item.type == 3 || item.type == 10\"\r\n class=\"svg_ic-submenu\"\r\n >\r\n <use\r\n xlink:href=\"#ic-history-mask\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-history-mask\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n <svg *ngIf=\"item.type == 0\" class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-history-shape\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-history-shape\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n <svg *ngIf=\"item.type == 1\" class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-history-icon\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-history-icon\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n <svg\r\n *ngIf=\"item.type == 11 || item.type == 12\"\r\n class=\"svg_ic-submenu\"\r\n >\r\n <use\r\n xlink:href=\"#ic-history-filter\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-history-filter\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n <svg *ngIf=\"item.type == 9\" class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-history-delete\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-history-delete\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <div class=\"history-item-text\">\r\n <div>{{ item.name }}</div>\r\n <div class=\"history-item-text-details\" *ngIf=\"item.detail\">\r\n {{ item.detail }}\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"itemNr == historyIndex\"\r\n class=\"history-item-checkbox tui-image-editor-d-flex tui-image-editor-align-items-center\"\r\n >\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-history-check\"\r\n class=\"normal use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n </div>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"items.length === 0\" class=\"tui-image-editor-px-2\">\r\n {{ \"tui-image-editor-angular-history-noItems\" | translate }}\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgbPopover, selector: "[ngbPopover]", inputs: ["animation", "autoClose", "ngbPopover", "popoverTitle", "placement", "triggers", "container", "disablePopover", "popoverClass", "openDelay", "closeDelay"], outputs: ["shown", "hidden"], exportAs: ["ngbPopover"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
1120
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: HistoryComponent, decorators: [{
|
|
1121
|
+
type: Component,
|
|
1122
|
+
args: [{ selector: 'tui-image-editor-menus-buttons-history', template: "<div\r\n [ngbPopover]=\"popupContent\"\r\n popoverClass=\"tie-history-popover\"\r\n autoClose=\"outside\"\r\n container=\"body\"\r\n class=\"tie-btn-history tui-image-editor-item help enabled\"\r\n>\r\n <div\r\n [title]=\"'tui-image-editor-angular-menus-buttons-history' | translate\"\r\n class=\"tui-image-editor-d-flex tui-image-editor-align-items-center\"\r\n >\r\n <svg class=\"svg_ic-menu tui-image-editor-d-flex\">\r\n <use xlink:href=\"#ic-history\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-history\" class=\"disabled use-default\"></use>\r\n <use xlink:href=\"#ic-history\" class=\"hover use-default\"></use>\r\n </svg>\r\n </div>\r\n</div>\r\n\r\n<ng-template #popupContent>\r\n <div class=\"tie-panel-history\">\r\n <ul class=\"history-list\" *ngIf=\"items.length > 0\">\r\n <li\r\n [class]=\"\r\n 'history-item ' +\r\n (itemNr > historyIndex ? 'disabled-item' : '') +\r\n (itemNr == historyIndex ? 'selected-item' : '')\r\n \"\r\n *ngFor=\"let item of items; index as itemNr\"\r\n >\r\n <div\r\n class=\"tui-image-editor-history-item history tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap tui-image-editor-align-items-center\"\r\n (click)=\"onclickHistoryItem(itemNr)\"\r\n >\r\n <div\r\n class=\"history-item-icon tui-image-editor-d-flex tui-image-editor-align-items-center\"\r\n >\r\n <svg *ngIf=\"item.type == 8\" class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-history-load\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-history-load\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n <svg *ngIf=\"item.type == 5\" class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-history-draw\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-history-draw\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n <svg *ngIf=\"item.type == 6\" class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-history-rotate\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-history-rotate\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n <svg *ngIf=\"item.type == 4\" class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-history-crop\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-history-crop\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n <svg *ngIf=\"item.type == 7\" class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-history-flip\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-history-flip\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n <svg *ngIf=\"item.type == 2\" class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-history-text\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-history-text\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n <svg\r\n *ngIf=\"item.type == 3 || item.type == 10\"\r\n class=\"svg_ic-submenu\"\r\n >\r\n <use\r\n xlink:href=\"#ic-history-mask\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-history-mask\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n <svg *ngIf=\"item.type == 0\" class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-history-shape\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-history-shape\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n <svg *ngIf=\"item.type == 1\" class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-history-icon\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-history-icon\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n <svg\r\n *ngIf=\"item.type == 11 || item.type == 12\"\r\n class=\"svg_ic-submenu\"\r\n >\r\n <use\r\n xlink:href=\"#ic-history-filter\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-history-filter\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n <svg *ngIf=\"item.type == 9\" class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-history-delete\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-history-delete\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <div class=\"history-item-text\">\r\n <div>{{ item.name }}</div>\r\n <div class=\"history-item-text-details\" *ngIf=\"item.detail\">\r\n {{ item.detail }}\r\n </div>\r\n </div>\r\n <div\r\n *ngIf=\"itemNr == historyIndex\"\r\n class=\"history-item-checkbox tui-image-editor-d-flex tui-image-editor-align-items-center\"\r\n >\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-history-check\"\r\n class=\"normal use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n </div>\r\n </li>\r\n </ul>\r\n <div *ngIf=\"items.length === 0\" class=\"tui-image-editor-px-2\">\r\n {{ \"tui-image-editor-angular-history-noItems\" | translate }}\r\n </div>\r\n </div>\r\n</ng-template>\r\n" }]
|
|
1123
|
+
}], ctorParameters: function () { return [{ type: HistoryService }]; }, propDecorators: { imageEditor: [{
|
|
1124
|
+
type: Input
|
|
1125
|
+
}] } });
|
|
1126
|
+
|
|
1127
|
+
class DownloadComponent {
|
|
1128
|
+
constructor() { }
|
|
1129
|
+
downloadImage() {
|
|
1130
|
+
if (this.imageChosen && this.imageEditor != null) {
|
|
1131
|
+
const dataURL = this.imageEditor.toDataURL();
|
|
1132
|
+
if (window.fetch) {
|
|
1133
|
+
fetch(dataURL)
|
|
1134
|
+
.then((res) => res.blob())
|
|
1135
|
+
.then((blob) => {
|
|
1136
|
+
var link = document.createElement('a');
|
|
1137
|
+
link.href = window.URL.createObjectURL(blob);
|
|
1138
|
+
link.target = '_blank';
|
|
1139
|
+
link.click();
|
|
1140
|
+
});
|
|
1141
|
+
}
|
|
1142
|
+
else {
|
|
1143
|
+
let blob = dataUrlToBlob(dataURL);
|
|
1144
|
+
var link = document.createElement('a');
|
|
1145
|
+
link.target = '_blank';
|
|
1146
|
+
link.href = window.URL.createObjectURL(blob);
|
|
1147
|
+
link.click();
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1150
|
+
}
|
|
1151
|
+
}
|
|
1152
|
+
DownloadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: DownloadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1153
|
+
DownloadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: DownloadComponent, selector: "tui-image-editor-menus-buttons-download", inputs: { imageChosen: "imageChosen", imageEditor: "imageEditor" }, ngImport: i0, template: "<div\r\n [title]=\"'tui-image-editor-angular-menus-buttons-download' | translate\"\r\n class=\"tie-btn-download tui-image-editor-item help enabled\"\r\n (click)=\"downloadImage()\"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use href=\"#ic-file-download\" class=\"normal use-default\"></use>\r\n <use href=\"#ic-file-download\" class=\"active use-default\"></use>\r\n <use href=\"#ic-file-download\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
1154
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: DownloadComponent, decorators: [{
|
|
1155
|
+
type: Component,
|
|
1156
|
+
args: [{ selector: 'tui-image-editor-menus-buttons-download', template: "<div\r\n [title]=\"'tui-image-editor-angular-menus-buttons-download' | translate\"\r\n class=\"tie-btn-download tui-image-editor-item help enabled\"\r\n (click)=\"downloadImage()\"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use href=\"#ic-file-download\" class=\"normal use-default\"></use>\r\n <use href=\"#ic-file-download\" class=\"active use-default\"></use>\r\n <use href=\"#ic-file-download\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n" }]
|
|
1157
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageChosen: [{
|
|
1158
|
+
type: Input
|
|
1159
|
+
}], imageEditor: [{
|
|
1160
|
+
type: Input
|
|
1161
|
+
}] } });
|
|
1162
|
+
|
|
1163
|
+
class ZoomInComponent {
|
|
1164
|
+
constructor() { }
|
|
1165
|
+
get isSelected() {
|
|
1166
|
+
if (this.imageEditor == null) {
|
|
1167
|
+
return false;
|
|
1168
|
+
}
|
|
1169
|
+
const zoomMode = this.imageEditor?._graphics.getZoomMode();
|
|
1170
|
+
return (this.imageEditor.getDrawingMode() == drawingModes.ZOOM &&
|
|
1171
|
+
zoomMode !== zoomModes.HAND);
|
|
1172
|
+
}
|
|
1173
|
+
startZoom() {
|
|
1174
|
+
this.imageEditor?.startDrawingMode(drawingModes.ZOOM);
|
|
1175
|
+
this.zoomIn();
|
|
1176
|
+
}
|
|
1177
|
+
zoomIn() {
|
|
1178
|
+
this.imageEditor?.deactivateAll();
|
|
1179
|
+
this.toggleZoomMode();
|
|
1180
|
+
}
|
|
1181
|
+
toggleZoomMode() {
|
|
1182
|
+
const zoomMode = this.imageEditor?._graphics.getZoomMode();
|
|
1183
|
+
this.imageEditor?.stopDrawingMode();
|
|
1184
|
+
if (zoomMode !== zoomModes.ZOOM) {
|
|
1185
|
+
this.imageEditor?.startDrawingMode(drawingModes.ZOOM);
|
|
1186
|
+
this.imageEditor?._graphics.startZoomInMode();
|
|
1187
|
+
}
|
|
1188
|
+
else {
|
|
1189
|
+
this.imageEditor?._graphics.endZoomInMode();
|
|
1190
|
+
}
|
|
1191
|
+
}
|
|
1192
|
+
}
|
|
1193
|
+
ZoomInComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ZoomInComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1194
|
+
ZoomInComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: ZoomInComponent, selector: "tui-image-editor-menus-buttons-zoom-in", inputs: { imageChosen: "imageChosen", imageEditor: "imageEditor" }, ngImport: i0, template: "<div\r\n [title]=\"'tui-image-editor-angular-menus-buttons-zoomIn' | translate\"\r\n [class]=\"\r\n 'tie-btn-zoomIn tui-image-editor-item help ' +\r\n (imageChosen ? 'enabled ' : 'disabled ') +\r\n (isSelected ? 'active ' : '')\r\n \"\r\n (click)=\"imageChosen ? startZoom() : null\"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-zoom-in\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-zoom-in\" class=\"disabled use-default\"></use>\r\n <use xlink:href=\"#ic-zoom-in\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
1195
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ZoomInComponent, decorators: [{
|
|
1196
|
+
type: Component,
|
|
1197
|
+
args: [{ selector: 'tui-image-editor-menus-buttons-zoom-in', template: "<div\r\n [title]=\"'tui-image-editor-angular-menus-buttons-zoomIn' | translate\"\r\n [class]=\"\r\n 'tie-btn-zoomIn tui-image-editor-item help ' +\r\n (imageChosen ? 'enabled ' : 'disabled ') +\r\n (isSelected ? 'active ' : '')\r\n \"\r\n (click)=\"imageChosen ? startZoom() : null\"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-zoom-in\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-zoom-in\" class=\"disabled use-default\"></use>\r\n <use xlink:href=\"#ic-zoom-in\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n" }]
|
|
1198
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageChosen: [{
|
|
1199
|
+
type: Input
|
|
1200
|
+
}], imageEditor: [{
|
|
1201
|
+
type: Input
|
|
1202
|
+
}] } });
|
|
1203
|
+
|
|
1204
|
+
class ZoomOutComponent {
|
|
1205
|
+
constructor() { }
|
|
1206
|
+
zoomOut() {
|
|
1207
|
+
this.imageEditor?._graphics.zoomOut();
|
|
1208
|
+
}
|
|
1209
|
+
}
|
|
1210
|
+
ZoomOutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ZoomOutComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1211
|
+
ZoomOutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: ZoomOutComponent, selector: "tui-image-editor-menus-buttons-zoom-out", inputs: { imageChosen: "imageChosen", imageEditor: "imageEditor" }, ngImport: i0, template: "<div\r\n [title]=\"'tui-image-editor-angular-menus-buttons-zoomOut' | translate\"\r\n [class]=\"\r\n 'tie-btn-zoomOut tui-image-editor-item help ' +\r\n (imageChosen ? 'enabled ' : 'disabled ')\r\n \"\r\n (click)=\"imageChosen ? zoomOut() : null\"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-zoom-out\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-zoom-out\" class=\"disabled use-default\"></use>\r\n <use xlink:href=\"#ic-zoom-out\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
1212
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ZoomOutComponent, decorators: [{
|
|
1213
|
+
type: Component,
|
|
1214
|
+
args: [{ selector: 'tui-image-editor-menus-buttons-zoom-out', template: "<div\r\n [title]=\"'tui-image-editor-angular-menus-buttons-zoomOut' | translate\"\r\n [class]=\"\r\n 'tie-btn-zoomOut tui-image-editor-item help ' +\r\n (imageChosen ? 'enabled ' : 'disabled ')\r\n \"\r\n (click)=\"imageChosen ? zoomOut() : null\"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-zoom-out\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-zoom-out\" class=\"disabled use-default\"></use>\r\n <use xlink:href=\"#ic-zoom-out\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n" }]
|
|
1215
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageChosen: [{
|
|
1216
|
+
type: Input
|
|
1217
|
+
}], imageEditor: [{
|
|
1218
|
+
type: Input
|
|
1219
|
+
}] } });
|
|
1220
|
+
|
|
1221
|
+
class DragComponent {
|
|
1222
|
+
constructor() { }
|
|
1223
|
+
get isSelected() {
|
|
1224
|
+
if (this.imageEditor == null) {
|
|
1225
|
+
return false;
|
|
1226
|
+
}
|
|
1227
|
+
const zoomMode = this.imageEditor?._graphics.getZoomMode();
|
|
1228
|
+
return (this.imageEditor.getDrawingMode() == drawingModes.ZOOM &&
|
|
1229
|
+
zoomMode === zoomModes.HAND);
|
|
1230
|
+
}
|
|
1231
|
+
startDrag() {
|
|
1232
|
+
this.imageEditor?.deactivateAll();
|
|
1233
|
+
this.toggleHandMode();
|
|
1234
|
+
}
|
|
1235
|
+
toggleHandMode() {
|
|
1236
|
+
const zoomMode = this.imageEditor?._graphics.getZoomMode();
|
|
1237
|
+
this.imageEditor?.stopDrawingMode();
|
|
1238
|
+
if (zoomMode !== zoomModes.HAND) {
|
|
1239
|
+
this.imageEditor?.startDrawingMode(drawingModes.ZOOM);
|
|
1240
|
+
this.imageEditor?._graphics.startHandMode();
|
|
1241
|
+
}
|
|
1242
|
+
else {
|
|
1243
|
+
this.imageEditor?._graphics.endHandMode();
|
|
1244
|
+
}
|
|
1245
|
+
}
|
|
1246
|
+
}
|
|
1247
|
+
DragComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: DragComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1248
|
+
DragComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: DragComponent, selector: "tui-image-editor-menus-buttons-drag", inputs: { imageChosen: "imageChosen", imageEditor: "imageEditor" }, ngImport: i0, template: "<div\r\n [title]=\"'tui-image-editor-angular-menus-buttons-drag' | translate\"\r\n [class]=\"\r\n 'tie-btn-hand tui-image-editor-item help ' +\r\n (imageChosen ? 'enabled ' : 'disabled ') +\r\n (isSelected ? 'active ' : '')\r\n \"\r\n (click)=\"imageChosen ? startDrag() : null\"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-hand\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-hand\" class=\"disabled use-default\"></use>\r\n <use xlink:href=\"#ic-hand\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
1249
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: DragComponent, decorators: [{
|
|
1250
|
+
type: Component,
|
|
1251
|
+
args: [{ selector: 'tui-image-editor-menus-buttons-drag', template: "<div\r\n [title]=\"'tui-image-editor-angular-menus-buttons-drag' | translate\"\r\n [class]=\"\r\n 'tie-btn-hand tui-image-editor-item help ' +\r\n (imageChosen ? 'enabled ' : 'disabled ') +\r\n (isSelected ? 'active ' : '')\r\n \"\r\n (click)=\"imageChosen ? startDrag() : null\"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-hand\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-hand\" class=\"disabled use-default\"></use>\r\n <use xlink:href=\"#ic-hand\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n" }]
|
|
1252
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageChosen: [{
|
|
1253
|
+
type: Input
|
|
1254
|
+
}], imageEditor: [{
|
|
1255
|
+
type: Input
|
|
1256
|
+
}] } });
|
|
1257
|
+
|
|
1258
|
+
class UndoComponent {
|
|
1259
|
+
constructor() {
|
|
1260
|
+
this.cancelCroppingRequested = new EventEmitter();
|
|
1261
|
+
this.undoStackSize = 0;
|
|
1262
|
+
}
|
|
1263
|
+
ngOnChanges(changes) {
|
|
1264
|
+
var that = this;
|
|
1265
|
+
if (changes['imageEditor'] && changes['imageEditor'].currentValue != null) {
|
|
1266
|
+
this.imageEditor.on(eventNames.UNDO_STACK_CHANGED, function (length) {
|
|
1267
|
+
that.undoStackSize = length;
|
|
1268
|
+
});
|
|
1269
|
+
}
|
|
1270
|
+
}
|
|
1271
|
+
undo() {
|
|
1272
|
+
if (this.imageEditor != null && !this.imageEditor.isEmptyUndoStack()) {
|
|
1273
|
+
this.cancelCroppingRequested.emit();
|
|
1274
|
+
this.imageEditor.deactivateAll();
|
|
1275
|
+
this.imageEditor.undo();
|
|
1276
|
+
}
|
|
1277
|
+
}
|
|
1278
|
+
}
|
|
1279
|
+
UndoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: UndoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1280
|
+
UndoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: UndoComponent, selector: "tui-image-editor-menus-buttons-undo", inputs: { imageEditor: "imageEditor" }, outputs: { cancelCroppingRequested: "cancelCroppingRequested" }, usesOnChanges: true, ngImport: i0, template: "<div\r\n [title]=\"'tui-image-editor-angular-menus-buttons-undo' | translate\"\r\n [class]=\"\r\n 'tie-btn-undo tui-image-editor-item help ' +\r\n (undoStackSize != 0 ? 'enabled' : 'disabled')\r\n \"\r\n (click)=\"undoStackSize != 0 ? undo() : null\"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-undo\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-undo\" class=\"disabled use-default\"></use>\r\n <use xlink:href=\"#ic-undo\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
1281
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: UndoComponent, decorators: [{
|
|
1282
|
+
type: Component,
|
|
1283
|
+
args: [{ selector: 'tui-image-editor-menus-buttons-undo', template: "<div\r\n [title]=\"'tui-image-editor-angular-menus-buttons-undo' | translate\"\r\n [class]=\"\r\n 'tie-btn-undo tui-image-editor-item help ' +\r\n (undoStackSize != 0 ? 'enabled' : 'disabled')\r\n \"\r\n (click)=\"undoStackSize != 0 ? undo() : null\"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-undo\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-undo\" class=\"disabled use-default\"></use>\r\n <use xlink:href=\"#ic-undo\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n" }]
|
|
1284
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageEditor: [{
|
|
1285
|
+
type: Input
|
|
1286
|
+
}], cancelCroppingRequested: [{
|
|
1287
|
+
type: Output
|
|
1288
|
+
}] } });
|
|
1289
|
+
|
|
1290
|
+
class RedoComponent {
|
|
1291
|
+
constructor() {
|
|
1292
|
+
this.cancelCroppingRequested = new EventEmitter();
|
|
1293
|
+
this.redoStackSize = 0;
|
|
1294
|
+
}
|
|
1295
|
+
ngOnChanges(changes) {
|
|
1296
|
+
var that = this;
|
|
1297
|
+
if (changes['imageEditor'] && changes['imageEditor'].currentValue != null) {
|
|
1298
|
+
this.imageEditor.on(eventNames.REDO_STACK_CHANGED, function (length) {
|
|
1299
|
+
that.redoStackSize = length;
|
|
1300
|
+
});
|
|
1301
|
+
}
|
|
1302
|
+
}
|
|
1303
|
+
redo() {
|
|
1304
|
+
if (this.imageEditor != null && !this.imageEditor.isEmptyRedoStack()) {
|
|
1305
|
+
this.cancelCroppingRequested.emit();
|
|
1306
|
+
this.imageEditor.deactivateAll();
|
|
1307
|
+
this.imageEditor.redo();
|
|
1308
|
+
}
|
|
1309
|
+
}
|
|
1310
|
+
}
|
|
1311
|
+
RedoComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: RedoComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1312
|
+
RedoComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: RedoComponent, selector: "tui-image-editor-menus-buttons-redo", inputs: { imageEditor: "imageEditor" }, outputs: { cancelCroppingRequested: "cancelCroppingRequested" }, usesOnChanges: true, ngImport: i0, template: "<div\r\n [title]=\"'tui-image-editor-angular-menus-buttons-redo' | translate\"\r\n [class]=\"\r\n 'tie-btn-redo tui-image-editor-item help ' +\r\n (redoStackSize != 0 ? 'enabled' : 'disabled')\r\n \"\r\n (click)=\"redoStackSize != 0 ? redo() : null\"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-redo\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-redo\" class=\"disabled use-default\"></use>\r\n <use xlink:href=\"#ic-redo\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
1313
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: RedoComponent, decorators: [{
|
|
1314
|
+
type: Component,
|
|
1315
|
+
args: [{ selector: 'tui-image-editor-menus-buttons-redo', template: "<div\r\n [title]=\"'tui-image-editor-angular-menus-buttons-redo' | translate\"\r\n [class]=\"\r\n 'tie-btn-redo tui-image-editor-item help ' +\r\n (redoStackSize != 0 ? 'enabled' : 'disabled')\r\n \"\r\n (click)=\"redoStackSize != 0 ? redo() : null\"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-redo\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-redo\" class=\"disabled use-default\"></use>\r\n <use xlink:href=\"#ic-redo\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n" }]
|
|
1316
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageEditor: [{
|
|
1317
|
+
type: Input
|
|
1318
|
+
}], cancelCroppingRequested: [{
|
|
1319
|
+
type: Output
|
|
1320
|
+
}] } });
|
|
1321
|
+
|
|
1322
|
+
class ResetComponent {
|
|
1323
|
+
constructor() {
|
|
1324
|
+
this.cancelCroppingRequested = new EventEmitter();
|
|
1325
|
+
this.resetImage = new EventEmitter();
|
|
1326
|
+
}
|
|
1327
|
+
reset() {
|
|
1328
|
+
this.cancelCroppingRequested.emit();
|
|
1329
|
+
this.resetImage.emit();
|
|
1330
|
+
}
|
|
1331
|
+
}
|
|
1332
|
+
ResetComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ResetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1333
|
+
ResetComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: ResetComponent, selector: "tui-image-editor-menus-buttons-reset", inputs: { imageChosen: "imageChosen", imageEditor: "imageEditor" }, outputs: { cancelCroppingRequested: "cancelCroppingRequested", resetImage: "resetImage" }, ngImport: i0, template: "<div\r\n [title]=\"'tui-image-editor-angular-menus-buttons-reset' | translate\"\r\n [class]=\"\r\n 'tie-btn-reset tui-image-editor-item help ' +\r\n (imageChosen ? 'enabled' : 'disabled')\r\n \"\r\n (click)=\"imageChosen ? reset() : null\"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-reset\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-reset\" class=\"disabled use-default\"></use>\r\n <use xlink:href=\"#ic-reset\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
1334
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ResetComponent, decorators: [{
|
|
1335
|
+
type: Component,
|
|
1336
|
+
args: [{ selector: 'tui-image-editor-menus-buttons-reset', template: "<div\r\n [title]=\"'tui-image-editor-angular-menus-buttons-reset' | translate\"\r\n [class]=\"\r\n 'tie-btn-reset tui-image-editor-item help ' +\r\n (imageChosen ? 'enabled' : 'disabled')\r\n \"\r\n (click)=\"imageChosen ? reset() : null\"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-reset\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-reset\" class=\"disabled use-default\"></use>\r\n <use xlink:href=\"#ic-reset\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n" }]
|
|
1337
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageChosen: [{
|
|
1338
|
+
type: Input
|
|
1339
|
+
}], imageEditor: [{
|
|
1340
|
+
type: Input
|
|
1341
|
+
}], cancelCroppingRequested: [{
|
|
1342
|
+
type: Output
|
|
1343
|
+
}], resetImage: [{
|
|
1344
|
+
type: Output
|
|
1345
|
+
}] } });
|
|
1346
|
+
|
|
1347
|
+
class DeleteComponent {
|
|
1348
|
+
constructor() {
|
|
1349
|
+
this.cancelCroppingRequested = new EventEmitter();
|
|
1350
|
+
}
|
|
1351
|
+
ngOnChanges(changes) {
|
|
1352
|
+
var that = this;
|
|
1353
|
+
if (changes['imageEditor'] && changes['imageEditor'].currentValue != null) {
|
|
1354
|
+
this.imageEditor.on(eventNames.OBJECT_ACTIVATED, function (props) {
|
|
1355
|
+
that.activeObjectId = props?.id;
|
|
1356
|
+
});
|
|
1357
|
+
}
|
|
1358
|
+
}
|
|
1359
|
+
deleteActiveObject() {
|
|
1360
|
+
if (this.activeObjectId != null) {
|
|
1361
|
+
this.cancelCroppingRequested.emit();
|
|
1362
|
+
try {
|
|
1363
|
+
this.imageEditor.removeActiveObject();
|
|
1364
|
+
}
|
|
1365
|
+
catch (_err) { }
|
|
1366
|
+
this.activeObjectId = null;
|
|
1367
|
+
}
|
|
1368
|
+
}
|
|
1369
|
+
}
|
|
1370
|
+
DeleteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: DeleteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1371
|
+
DeleteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: DeleteComponent, selector: "tui-image-editor-menus-buttons-delete", inputs: { imageChosen: "imageChosen", imageEditor: "imageEditor" }, outputs: { cancelCroppingRequested: "cancelCroppingRequested" }, usesOnChanges: true, ngImport: i0, template: "<div\r\n [title]=\"'tui-image-editor-angular-menus-buttons-delete' | translate\"\r\n [class]=\"\r\n 'tie-btn-delete tui-image-editor-item help ' +\r\n (activeObjectId != null ? 'enabled' : '')\r\n \"\r\n (click)=\"activeObjectId != null ? deleteActiveObject() : null\"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-delete\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-delete\" class=\"disabled use-default\"></use>\r\n <use xlink:href=\"#ic-delete\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
1372
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: DeleteComponent, decorators: [{
|
|
1373
|
+
type: Component,
|
|
1374
|
+
args: [{ selector: 'tui-image-editor-menus-buttons-delete', template: "<div\r\n [title]=\"'tui-image-editor-angular-menus-buttons-delete' | translate\"\r\n [class]=\"\r\n 'tie-btn-delete tui-image-editor-item help ' +\r\n (activeObjectId != null ? 'enabled' : '')\r\n \"\r\n (click)=\"activeObjectId != null ? deleteActiveObject() : null\"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-delete\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-delete\" class=\"disabled use-default\"></use>\r\n <use xlink:href=\"#ic-delete\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n" }]
|
|
1375
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageChosen: [{
|
|
1376
|
+
type: Input
|
|
1377
|
+
}], imageEditor: [{
|
|
1378
|
+
type: Input
|
|
1379
|
+
}], cancelCroppingRequested: [{
|
|
1380
|
+
type: Output
|
|
1381
|
+
}] } });
|
|
1382
|
+
|
|
1383
|
+
class DeleteAllComponent {
|
|
1384
|
+
constructor() {
|
|
1385
|
+
this.cancelCroppingRequested = new EventEmitter();
|
|
1386
|
+
}
|
|
1387
|
+
deleteAll() {
|
|
1388
|
+
if (this.imageEditor != null && this.imageChosen) {
|
|
1389
|
+
this.cancelCroppingRequested.emit();
|
|
1390
|
+
this.imageEditor.clearObjects();
|
|
1391
|
+
}
|
|
1392
|
+
}
|
|
1393
|
+
}
|
|
1394
|
+
DeleteAllComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: DeleteAllComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1395
|
+
DeleteAllComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: DeleteAllComponent, selector: "tui-image-editor-menus-buttons-delete-all", inputs: { imageChosen: "imageChosen", imageEditor: "imageEditor" }, outputs: { cancelCroppingRequested: "cancelCroppingRequested" }, ngImport: i0, template: "<div\r\n [title]=\"'tui-image-editor-angular-menus-buttons-deleteAll' | translate\"\r\n [class]=\"\r\n 'tie-btn-deleteAll tui-image-editor-item help ' +\r\n (imageChosen ? 'enabled' : 'disabled')\r\n \"\r\n (click)=\"deleteAll()\"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-delete-all\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-delete-all\" class=\"disabled use-default\"></use>\r\n <use xlink:href=\"#ic-delete-all\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
1396
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: DeleteAllComponent, decorators: [{
|
|
1397
|
+
type: Component,
|
|
1398
|
+
args: [{ selector: 'tui-image-editor-menus-buttons-delete-all', template: "<div\r\n [title]=\"'tui-image-editor-angular-menus-buttons-deleteAll' | translate\"\r\n [class]=\"\r\n 'tie-btn-deleteAll tui-image-editor-item help ' +\r\n (imageChosen ? 'enabled' : 'disabled')\r\n \"\r\n (click)=\"deleteAll()\"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-delete-all\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-delete-all\" class=\"disabled use-default\"></use>\r\n <use xlink:href=\"#ic-delete-all\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n" }]
|
|
1399
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageChosen: [{
|
|
1400
|
+
type: Input
|
|
1401
|
+
}], imageEditor: [{
|
|
1402
|
+
type: Input
|
|
1403
|
+
}], cancelCroppingRequested: [{
|
|
1404
|
+
type: Output
|
|
1405
|
+
}] } });
|
|
1406
|
+
|
|
1407
|
+
class CropComponent$1 {
|
|
1408
|
+
constructor() {
|
|
1409
|
+
this.selected = false;
|
|
1410
|
+
this.clicked = new EventEmitter();
|
|
1411
|
+
}
|
|
1412
|
+
}
|
|
1413
|
+
CropComponent$1.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: CropComponent$1, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1414
|
+
CropComponent$1.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: CropComponent$1, selector: "tui-image-editor-menus-buttons-crop", inputs: { imageChosen: "imageChosen", selected: "selected" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<div\r\n (click)=\"imageChosen ? clicked.emit('crop') : null\"\r\n [title]=\"\r\n 'tui-image-editor-angular-menus-buttons-crop-tooltip' | translate\r\n \"\r\n [class]=\"\r\n 'tie-btn-crop tui-image-editor-item normal ' + (selected ? 'active' : '')\r\n \"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-crop\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-crop\" class=\"active use-default\"></use>\r\n <use xlink:href=\"#ic-crop\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
1415
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: CropComponent$1, decorators: [{
|
|
1416
|
+
type: Component,
|
|
1417
|
+
args: [{ selector: 'tui-image-editor-menus-buttons-crop', template: "<div\r\n (click)=\"imageChosen ? clicked.emit('crop') : null\"\r\n [title]=\"\r\n 'tui-image-editor-angular-menus-buttons-crop-tooltip' | translate\r\n \"\r\n [class]=\"\r\n 'tie-btn-crop tui-image-editor-item normal ' + (selected ? 'active' : '')\r\n \"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-crop\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-crop\" class=\"active use-default\"></use>\r\n <use xlink:href=\"#ic-crop\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n" }]
|
|
1418
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageChosen: [{
|
|
1419
|
+
type: Input
|
|
1420
|
+
}], selected: [{
|
|
1421
|
+
type: Input
|
|
1422
|
+
}], clicked: [{
|
|
1423
|
+
type: Output
|
|
1424
|
+
}] } });
|
|
1425
|
+
|
|
1426
|
+
class CropComponent {
|
|
1427
|
+
constructor() {
|
|
1428
|
+
this.activeCropMode = cropModes.PRESET_NONE;
|
|
1429
|
+
this.CROPMODE_PRESET_NONE = cropModes.PRESET_NONE;
|
|
1430
|
+
this.CROPMODE_PRESET_SQUARE = cropModes.PRESET_SQUARE;
|
|
1431
|
+
this.CROPMODE_PRESET_16_9 = cropModes.PRESET_16_9;
|
|
1432
|
+
this.CROPMODE_PRESET_3_2 = cropModes.PRESET_3_2;
|
|
1433
|
+
this.CROPMODE_PRESET_4_3 = cropModes.PRESET_4_3;
|
|
1434
|
+
this.CROPMODE_PRESET_5_4 = cropModes.PRESET_5_4;
|
|
1435
|
+
this.CROPMODE_PRESET_7_5 = cropModes.PRESET_7_5;
|
|
1436
|
+
this.cancelCroppingRequested = new EventEmitter();
|
|
1437
|
+
}
|
|
1438
|
+
ngOnChanges(changes) {
|
|
1439
|
+
if (changes['imageEditor'] && changes['imageEditor'].currentValue != null) {
|
|
1440
|
+
this.imageEditor.startDrawingMode('CROPPER');
|
|
1441
|
+
}
|
|
1442
|
+
}
|
|
1443
|
+
setCropMode(cropMode) {
|
|
1444
|
+
this.activeCropMode = cropMode;
|
|
1445
|
+
switch (cropMode) {
|
|
1446
|
+
case cropModes.PRESET_SQUARE:
|
|
1447
|
+
this.setCropzoneRect(1 / 1);
|
|
1448
|
+
break;
|
|
1449
|
+
case cropModes.PRESET_3_2:
|
|
1450
|
+
this.setCropzoneRect(3 / 2);
|
|
1451
|
+
break;
|
|
1452
|
+
case cropModes.PRESET_4_3:
|
|
1453
|
+
this.setCropzoneRect(4 / 3);
|
|
1454
|
+
break;
|
|
1455
|
+
case cropModes.PRESET_5_4:
|
|
1456
|
+
this.setCropzoneRect(5 / 4);
|
|
1457
|
+
break;
|
|
1458
|
+
case cropModes.PRESET_7_5:
|
|
1459
|
+
this.setCropzoneRect(7 / 5);
|
|
1460
|
+
break;
|
|
1461
|
+
case cropModes.PRESET_16_9:
|
|
1462
|
+
this.setCropzoneRect(16 / 9);
|
|
1463
|
+
break;
|
|
1464
|
+
}
|
|
1465
|
+
}
|
|
1466
|
+
setCropzoneRect(mode) {
|
|
1467
|
+
this.imageEditor.setCropzoneRect(mode);
|
|
1468
|
+
}
|
|
1469
|
+
applyCrop() {
|
|
1470
|
+
if (this.imageEditor != null) {
|
|
1471
|
+
const cropRect = this.imageEditor.getCropzoneRect();
|
|
1472
|
+
if (cropRect && !isEmptyCropzone(cropRect)) {
|
|
1473
|
+
this.imageEditor
|
|
1474
|
+
.crop(cropRect)
|
|
1475
|
+
.then(() => {
|
|
1476
|
+
this.cancelCrop();
|
|
1477
|
+
this.imageEditor._invoker.fire(eventNames.EXECUTE_COMMAND, historyNames.CROP);
|
|
1478
|
+
})['catch']((message) => Promise.reject(message));
|
|
1479
|
+
}
|
|
1480
|
+
}
|
|
1481
|
+
}
|
|
1482
|
+
cancelCrop() {
|
|
1483
|
+
this.cancelCroppingRequested.emit();
|
|
1484
|
+
}
|
|
1485
|
+
}
|
|
1486
|
+
CropComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: CropComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1487
|
+
CropComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: CropComponent, selector: "tui-image-editor-submenus-crop", inputs: { imageEditor: "imageEditor" }, outputs: { cancelCroppingRequested: "cancelCroppingRequested" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"tui-image-editor-menu-crop\">\r\n <div class=\"tui-image-editor-submenu-item\">\r\n <div\r\n class=\"tui-image-editor-d-flex tui-image-editor-justify-content-center\"\r\n >\r\n <div\r\n class=\"tie-crop-preset-button tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap tui-image-editor-align-items-center tui-image-editor-overflowable-x tui-image-editor-py-3\"\r\n >\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button preset preset-none ' +\r\n (activeCropMode == CROPMODE_PRESET_NONE ? 'active' : '')\r\n \"\r\n (click)=\"setCropMode(CROPMODE_PRESET_NONE)\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-shape-rectangle\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-shape-rectangle\"\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-crop-custom\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button preset preset-square ' +\r\n (activeCropMode == CROPMODE_PRESET_SQUARE ? 'active' : '')\r\n \"\r\n (click)=\"setCropMode(CROPMODE_PRESET_SQUARE)\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-crop\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-crop\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-crop-square\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button preset preset-3-2 ' +\r\n (activeCropMode == CROPMODE_PRESET_3_2 ? 'active' : '')\r\n \"\r\n (click)=\"setCropMode(CROPMODE_PRESET_3_2)\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-crop\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-crop\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label> 3:2 </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button preset preset-4-3 ' +\r\n (activeCropMode == CROPMODE_PRESET_4_3 ? 'active' : '')\r\n \"\r\n (click)=\"setCropMode(CROPMODE_PRESET_4_3)\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-crop\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-crop\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label> 4:3 </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button preset preset-5-4 ' +\r\n (activeCropMode == CROPMODE_PRESET_5_4 ? 'active' : '')\r\n \"\r\n (click)=\"setCropMode(CROPMODE_PRESET_5_4)\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-crop\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-crop\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label> 5:4 </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button preset preset-7-5 ' +\r\n (activeCropMode == CROPMODE_PRESET_7_5 ? 'active' : '')\r\n \"\r\n (click)=\"setCropMode(CROPMODE_PRESET_7_5)\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-crop\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-crop\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label> 7:5 </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button preset preset-16-9 ' +\r\n (activeCropMode == CROPMODE_PRESET_16_9 ? 'active' : '')\r\n \"\r\n (click)=\"setCropMode(CROPMODE_PRESET_16_9)\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-crop\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-crop\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label> 16:9 </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"tie-crop-button action 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 tui-image-editor-mb-3\"\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-align-items-center\"\r\n (click)=\"applyCrop()\"\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-crop-apply\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-button cancel tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center\"\r\n (click)=\"cancelCrop()\"\r\n >\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-cancel\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-cancel\" class=\"active use-default\"></use>\r\n </svg>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-crop-cancel\" | 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" }] });
|
|
1488
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: CropComponent, decorators: [{
|
|
1489
|
+
type: Component,
|
|
1490
|
+
args: [{ selector: 'tui-image-editor-submenus-crop', template: "<div class=\"tui-image-editor-menu-crop\">\r\n <div class=\"tui-image-editor-submenu-item\">\r\n <div\r\n class=\"tui-image-editor-d-flex tui-image-editor-justify-content-center\"\r\n >\r\n <div\r\n class=\"tie-crop-preset-button tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap tui-image-editor-align-items-center tui-image-editor-overflowable-x tui-image-editor-py-3\"\r\n >\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button preset preset-none ' +\r\n (activeCropMode == CROPMODE_PRESET_NONE ? 'active' : '')\r\n \"\r\n (click)=\"setCropMode(CROPMODE_PRESET_NONE)\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-shape-rectangle\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-shape-rectangle\"\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-crop-custom\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button preset preset-square ' +\r\n (activeCropMode == CROPMODE_PRESET_SQUARE ? 'active' : '')\r\n \"\r\n (click)=\"setCropMode(CROPMODE_PRESET_SQUARE)\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-crop\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-crop\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-crop-square\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button preset preset-3-2 ' +\r\n (activeCropMode == CROPMODE_PRESET_3_2 ? 'active' : '')\r\n \"\r\n (click)=\"setCropMode(CROPMODE_PRESET_3_2)\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-crop\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-crop\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label> 3:2 </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button preset preset-4-3 ' +\r\n (activeCropMode == CROPMODE_PRESET_4_3 ? 'active' : '')\r\n \"\r\n (click)=\"setCropMode(CROPMODE_PRESET_4_3)\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-crop\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-crop\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label> 4:3 </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button preset preset-5-4 ' +\r\n (activeCropMode == CROPMODE_PRESET_5_4 ? 'active' : '')\r\n \"\r\n (click)=\"setCropMode(CROPMODE_PRESET_5_4)\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-crop\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-crop\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label> 5:4 </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button preset preset-7-5 ' +\r\n (activeCropMode == CROPMODE_PRESET_7_5 ? 'active' : '')\r\n \"\r\n (click)=\"setCropMode(CROPMODE_PRESET_7_5)\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-crop\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-crop\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label> 7:5 </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button preset preset-16-9 ' +\r\n (activeCropMode == CROPMODE_PRESET_16_9 ? 'active' : '')\r\n \"\r\n (click)=\"setCropMode(CROPMODE_PRESET_16_9)\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-crop\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-crop\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label> 16:9 </label>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n class=\"tie-crop-button action 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 tui-image-editor-mb-3\"\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-align-items-center\"\r\n (click)=\"applyCrop()\"\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-crop-apply\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-button cancel tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center\"\r\n (click)=\"cancelCrop()\"\r\n >\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-cancel\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-cancel\" class=\"active use-default\"></use>\r\n </svg>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-crop-cancel\" | translate }}\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
1491
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageEditor: [{
|
|
1492
|
+
type: Input
|
|
1493
|
+
}], cancelCroppingRequested: [{
|
|
1494
|
+
type: Output
|
|
1495
|
+
}] } });
|
|
1496
|
+
|
|
1497
|
+
class FlipComponent$1 {
|
|
1498
|
+
constructor() {
|
|
1499
|
+
this.selected = false;
|
|
1500
|
+
this.clicked = new EventEmitter();
|
|
1501
|
+
}
|
|
1502
|
+
}
|
|
1503
|
+
FlipComponent$1.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: FlipComponent$1, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1504
|
+
FlipComponent$1.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: FlipComponent$1, selector: "tui-image-editor-menus-buttons-flip", inputs: { imageChosen: "imageChosen", selected: "selected" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<div\r\n (click)=\"imageChosen ? clicked.emit('flip') : null\"\r\n [title]=\"'tui-image-editor-angular-menus-buttons-flip' | translate\"\r\n [class]=\"\r\n 'tie-btn-flip tui-image-editor-item normal ' + (selected ? 'active' : '')\r\n \"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-flip\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-flip\" class=\"active use-default\"></use>\r\n <use xlink:href=\"#ic-flip\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
1505
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: FlipComponent$1, decorators: [{
|
|
1506
|
+
type: Component,
|
|
1507
|
+
args: [{ selector: 'tui-image-editor-menus-buttons-flip', template: "<div\r\n (click)=\"imageChosen ? clicked.emit('flip') : null\"\r\n [title]=\"'tui-image-editor-angular-menus-buttons-flip' | translate\"\r\n [class]=\"\r\n 'tie-btn-flip tui-image-editor-item normal ' + (selected ? 'active' : '')\r\n \"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-flip\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-flip\" class=\"active use-default\"></use>\r\n <use xlink:href=\"#ic-flip\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n" }]
|
|
1508
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageChosen: [{
|
|
1509
|
+
type: Input
|
|
1510
|
+
}], selected: [{
|
|
1511
|
+
type: Input
|
|
1512
|
+
}], clicked: [{
|
|
1513
|
+
type: Output
|
|
1514
|
+
}] } });
|
|
1515
|
+
|
|
1516
|
+
class FlipComponent {
|
|
1517
|
+
constructor() { }
|
|
1518
|
+
async flipX() {
|
|
1519
|
+
try {
|
|
1520
|
+
await this.imageEditor?.flipX();
|
|
1521
|
+
}
|
|
1522
|
+
catch (_err) {
|
|
1523
|
+
console.error(_err);
|
|
1524
|
+
}
|
|
1525
|
+
}
|
|
1526
|
+
async flipY() {
|
|
1527
|
+
try {
|
|
1528
|
+
await this.imageEditor?.flipY();
|
|
1529
|
+
}
|
|
1530
|
+
catch (_err) {
|
|
1531
|
+
console.error(_err);
|
|
1532
|
+
}
|
|
1533
|
+
}
|
|
1534
|
+
async resetFlip() {
|
|
1535
|
+
try {
|
|
1536
|
+
await this.imageEditor?.resetFlip();
|
|
1537
|
+
}
|
|
1538
|
+
catch (_err) {
|
|
1539
|
+
console.error(_err);
|
|
1540
|
+
}
|
|
1541
|
+
}
|
|
1542
|
+
}
|
|
1543
|
+
FlipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: FlipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1544
|
+
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" }] });
|
|
1545
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: FlipComponent, decorators: [{
|
|
1546
|
+
type: Component,
|
|
1547
|
+
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" }]
|
|
1548
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageEditor: [{
|
|
1549
|
+
type: Input
|
|
1550
|
+
}] } });
|
|
1551
|
+
|
|
1552
|
+
class RotateComponent$1 {
|
|
1553
|
+
constructor() {
|
|
1554
|
+
this.selected = false;
|
|
1555
|
+
this.clicked = new EventEmitter();
|
|
1556
|
+
}
|
|
1557
|
+
}
|
|
1558
|
+
RotateComponent$1.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: RotateComponent$1, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1559
|
+
RotateComponent$1.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: RotateComponent$1, selector: "tui-image-editor-menus-buttons-rotate", inputs: { imageChosen: "imageChosen", selected: "selected" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<div\r\n (click)=\"imageChosen ? clicked.emit('rotate') : null\"\r\n [title]=\"'tui-image-editor-angular-menus-buttons-rotate' | translate\"\r\n [class]=\"\r\n 'tie-btn-rotate tui-image-editor-item normal ' +\r\n (selected ? 'active' : '')\r\n \"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-rotate\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-rotate\" class=\"active use-default\"></use>\r\n <use xlink:href=\"#ic-rotate\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
1560
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: RotateComponent$1, decorators: [{
|
|
1561
|
+
type: Component,
|
|
1562
|
+
args: [{ selector: 'tui-image-editor-menus-buttons-rotate', template: "<div\r\n (click)=\"imageChosen ? clicked.emit('rotate') : null\"\r\n [title]=\"'tui-image-editor-angular-menus-buttons-rotate' | translate\"\r\n [class]=\"\r\n 'tie-btn-rotate tui-image-editor-item normal ' +\r\n (selected ? 'active' : '')\r\n \"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-rotate\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-rotate\" class=\"active use-default\"></use>\r\n <use xlink:href=\"#ic-rotate\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n" }]
|
|
1563
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageChosen: [{
|
|
1564
|
+
type: Input
|
|
1565
|
+
}], selected: [{
|
|
1566
|
+
type: Input
|
|
1567
|
+
}], clicked: [{
|
|
1568
|
+
type: Output
|
|
1569
|
+
}] } });
|
|
1570
|
+
|
|
1571
|
+
class RotateComponent {
|
|
1572
|
+
constructor() {
|
|
1573
|
+
this.rotationChange = new EventEmitter();
|
|
1574
|
+
}
|
|
1575
|
+
async rotateImage(rotationAngle) {
|
|
1576
|
+
const newAngle = this.rotation + rotationAngle;
|
|
1577
|
+
const isRotatable = newAngle >= -360 && newAngle <= 360;
|
|
1578
|
+
if (isRotatable) {
|
|
1579
|
+
try {
|
|
1580
|
+
await this.imageEditor?.setAngle(newAngle);
|
|
1581
|
+
this.rotation = newAngle;
|
|
1582
|
+
this.rotationChange.emit(newAngle);
|
|
1583
|
+
}
|
|
1584
|
+
catch (_err) {
|
|
1585
|
+
console.error(_err);
|
|
1586
|
+
}
|
|
1587
|
+
}
|
|
1588
|
+
}
|
|
1589
|
+
async rotationChanged(currentRotationValue, isSilent) {
|
|
1590
|
+
let rotationValueToUse = typeof currentRotationValue === 'number'
|
|
1591
|
+
? currentRotationValue
|
|
1592
|
+
: this.rotation;
|
|
1593
|
+
let functionToExecute = () => {
|
|
1594
|
+
this.imageEditor
|
|
1595
|
+
?.setAngle(rotationValueToUse, isSilent)
|
|
1596
|
+
.catch((_err) => {
|
|
1597
|
+
console.error(_err);
|
|
1598
|
+
})
|
|
1599
|
+
.finally(() => {
|
|
1600
|
+
this.rotationChange.emit(rotationValueToUse);
|
|
1601
|
+
});
|
|
1602
|
+
};
|
|
1603
|
+
if (isSilent) {
|
|
1604
|
+
functionToExecute();
|
|
1605
|
+
}
|
|
1606
|
+
else {
|
|
1607
|
+
setTimeout(functionToExecute);
|
|
1608
|
+
}
|
|
1609
|
+
}
|
|
1610
|
+
}
|
|
1611
|
+
RotateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: RotateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1612
|
+
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$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1$1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
1613
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: RotateComponent, decorators: [{
|
|
1614
|
+
type: Component,
|
|
1615
|
+
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" }]
|
|
1616
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageEditor: [{
|
|
1617
|
+
type: Input
|
|
1618
|
+
}], rotation: [{
|
|
1619
|
+
type: Input
|
|
1620
|
+
}], rotationChange: [{
|
|
1621
|
+
type: Output
|
|
1622
|
+
}] } });
|
|
1623
|
+
|
|
1624
|
+
class DrawComponent$1 {
|
|
1625
|
+
constructor() {
|
|
1626
|
+
this.selected = false;
|
|
1627
|
+
this.clicked = new EventEmitter();
|
|
1628
|
+
}
|
|
1629
|
+
}
|
|
1630
|
+
DrawComponent$1.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: DrawComponent$1, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1631
|
+
DrawComponent$1.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: DrawComponent$1, selector: "tui-image-editor-menus-buttons-draw", inputs: { imageChosen: "imageChosen", selected: "selected" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<div\r\n (click)=\"imageChosen ? clicked.emit('draw') : null\"\r\n [title]=\"'tui-image-editor-angular-menus-buttons-draw' | translate\"\r\n [class]=\"\r\n 'tie-btn-draw tui-image-editor-item normal ' + (selected ? 'active' : '')\r\n \"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-draw\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-draw\" class=\"active use-default\"></use>\r\n <use xlink:href=\"#ic-draw\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
1632
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: DrawComponent$1, decorators: [{
|
|
1633
|
+
type: Component,
|
|
1634
|
+
args: [{ selector: 'tui-image-editor-menus-buttons-draw', template: "<div\r\n (click)=\"imageChosen ? clicked.emit('draw') : null\"\r\n [title]=\"'tui-image-editor-angular-menus-buttons-draw' | translate\"\r\n [class]=\"\r\n 'tie-btn-draw tui-image-editor-item normal ' + (selected ? 'active' : '')\r\n \"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-draw\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-draw\" class=\"active use-default\"></use>\r\n <use xlink:href=\"#ic-draw\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n" }]
|
|
1635
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageChosen: [{
|
|
1636
|
+
type: Input
|
|
1637
|
+
}], selected: [{
|
|
1638
|
+
type: Input
|
|
1639
|
+
}], clicked: [{
|
|
1640
|
+
type: Output
|
|
1641
|
+
}] } });
|
|
1642
|
+
|
|
1643
|
+
class ToolsConfigService {
|
|
1644
|
+
constructor() {
|
|
1645
|
+
this.defaultConfig = {
|
|
1646
|
+
pen: {
|
|
1647
|
+
drawStrokeWidthValue: 5,
|
|
1648
|
+
drawType: 'free',
|
|
1649
|
+
drawStrokeColor: 'rgb(60, 60, 60)'
|
|
1650
|
+
},
|
|
1651
|
+
text: {
|
|
1652
|
+
fontSize: 16,
|
|
1653
|
+
fontFamily: 'Arial',
|
|
1654
|
+
color: '#000000',
|
|
1655
|
+
},
|
|
1656
|
+
};
|
|
1657
|
+
this.configSubject = new BehaviorSubject(this.defaultConfig);
|
|
1658
|
+
this.config$ = this.configSubject.asObservable();
|
|
1659
|
+
}
|
|
1660
|
+
updateConfig(tool, newConfig) {
|
|
1661
|
+
const currentConfig = this.configSubject.getValue();
|
|
1662
|
+
const updatedToolConfig = { ...currentConfig[tool], ...newConfig };
|
|
1663
|
+
this.configSubject.next({
|
|
1664
|
+
...currentConfig,
|
|
1665
|
+
[tool]: updatedToolConfig,
|
|
1666
|
+
});
|
|
1667
|
+
}
|
|
1668
|
+
changePenConfig(newConfig) {
|
|
1669
|
+
const currentConf = this.configSubject.getValue();
|
|
1670
|
+
this.updateConfig('pen', { ...currentConf.pen, ...newConfig });
|
|
1671
|
+
}
|
|
1672
|
+
changeTextConfig(newConfig) {
|
|
1673
|
+
this.updateConfig('text', { ...this.defaultConfig.text, ...newConfig });
|
|
1674
|
+
}
|
|
1675
|
+
}
|
|
1676
|
+
ToolsConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ToolsConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1677
|
+
ToolsConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ToolsConfigService, providedIn: 'root' });
|
|
1678
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ToolsConfigService, decorators: [{
|
|
1679
|
+
type: Injectable,
|
|
1680
|
+
args: [{
|
|
1681
|
+
providedIn: 'root'
|
|
1682
|
+
}]
|
|
1683
|
+
}] });
|
|
1684
|
+
|
|
1685
|
+
class DrawComponent {
|
|
1686
|
+
constructor(toolConfigService) {
|
|
1687
|
+
this.toolConfigService = toolConfigService;
|
|
1688
|
+
this.defaultDrawShapeColors = defaultColors;
|
|
1689
|
+
this.drawStrokeWidthValue = 12;
|
|
1690
|
+
this.drawStrokeColor = 'rgba(0, 169, 255, 1)';
|
|
1691
|
+
this.onObjectActivatedEventListener = this.onObjectActivated.bind(this);
|
|
1692
|
+
this.toolConfigService.config$.subscribe(config => {
|
|
1693
|
+
const { drawType, drawStrokeColor, drawStrokeWidthValue } = config.pen;
|
|
1694
|
+
this.drawStrokeWidthValue = drawStrokeWidthValue;
|
|
1695
|
+
this.drawType = drawType;
|
|
1696
|
+
this.drawStrokeColor = drawStrokeColor;
|
|
1697
|
+
});
|
|
1698
|
+
}
|
|
1699
|
+
ngOnChanges(changes) {
|
|
1700
|
+
var that = this;
|
|
1701
|
+
if (changes['imageEditor']) {
|
|
1702
|
+
this.activeObjectId = getActiveObjectId(changes['imageEditor'].currentValue);
|
|
1703
|
+
this.checkActiveObject(this.activeObjectId, true);
|
|
1704
|
+
changes['imageEditor'].previousValue?.off(eventNames.OBJECT_ACTIVATED, that.onObjectActivatedEventListener);
|
|
1705
|
+
changes['imageEditor'].currentValue?.on(eventNames.OBJECT_ACTIVATED, that.onObjectActivatedEventListener);
|
|
1706
|
+
}
|
|
1707
|
+
}
|
|
1708
|
+
ngOnDestroy() {
|
|
1709
|
+
if (this.imageEditor) {
|
|
1710
|
+
this.imageEditor.off(eventNames.OBJECT_ACTIVATED, this.onObjectActivatedEventListener);
|
|
1711
|
+
}
|
|
1712
|
+
}
|
|
1713
|
+
onObjectActivated(props) {
|
|
1714
|
+
this.activeObjectId = props?.id;
|
|
1715
|
+
this.checkActiveObject(this.activeObjectId);
|
|
1716
|
+
}
|
|
1717
|
+
checkActiveObject(activeObjectId, enableDrawModeIfNoActiveObject = false) {
|
|
1718
|
+
let ifNoActiveObject = () => {
|
|
1719
|
+
this.setDrawMode('free', {
|
|
1720
|
+
width: this.drawStrokeWidthValue,
|
|
1721
|
+
color: this.drawStrokeColor,
|
|
1722
|
+
});
|
|
1723
|
+
};
|
|
1724
|
+
if (activeObjectId != null) {
|
|
1725
|
+
var props = this.imageEditor?.getObjectProperties(activeObjectId, [
|
|
1726
|
+
'type',
|
|
1727
|
+
'strokeWidth',
|
|
1728
|
+
'stroke',
|
|
1729
|
+
]);
|
|
1730
|
+
if (props && (props.type === 'path' || props.type === 'line')) {
|
|
1731
|
+
this.drawStrokeWidthValue = props.strokeWidth;
|
|
1732
|
+
this.drawStrokeColor = props.stroke;
|
|
1733
|
+
}
|
|
1734
|
+
else if (enableDrawModeIfNoActiveObject) {
|
|
1735
|
+
ifNoActiveObject();
|
|
1736
|
+
}
|
|
1737
|
+
}
|
|
1738
|
+
else if (enableDrawModeIfNoActiveObject) {
|
|
1739
|
+
ifNoActiveObject();
|
|
1740
|
+
}
|
|
1741
|
+
}
|
|
1742
|
+
drawStrokeWidthChanged(currentStrokeWidth, isSilent) {
|
|
1743
|
+
this.setDrawMode(this.drawType, {
|
|
1744
|
+
width: typeof currentStrokeWidth === "number" ? currentStrokeWidth : this.drawStrokeWidthValue,
|
|
1745
|
+
color: this.drawStrokeColor,
|
|
1746
|
+
});
|
|
1747
|
+
this.strokeChangeActiveObject('strokeWidth', isSilent);
|
|
1748
|
+
this.toolConfigService.changePenConfig({ drawStrokeWidthValue: (typeof currentStrokeWidth === "number" ? currentStrokeWidth : this.drawStrokeWidthValue) });
|
|
1749
|
+
}
|
|
1750
|
+
setDrawType(type) {
|
|
1751
|
+
clearSelection(this.imageEditor);
|
|
1752
|
+
if (this.drawType != type) {
|
|
1753
|
+
this.drawType = type;
|
|
1754
|
+
this.setDrawMode(this.drawType, {
|
|
1755
|
+
width: this.drawStrokeWidthValue,
|
|
1756
|
+
color: this.drawStrokeColor,
|
|
1757
|
+
});
|
|
1758
|
+
this.toolConfigService.changePenConfig({ drawType: type });
|
|
1759
|
+
}
|
|
1760
|
+
else {
|
|
1761
|
+
this.drawType = null;
|
|
1762
|
+
this.imageEditor.stopDrawingMode();
|
|
1763
|
+
}
|
|
1764
|
+
}
|
|
1765
|
+
drawStrokeColorChanged(currentStrokeColor) {
|
|
1766
|
+
this.setDrawMode(this.drawType, {
|
|
1767
|
+
width: this.drawStrokeWidthValue,
|
|
1768
|
+
color: currentStrokeColor,
|
|
1769
|
+
});
|
|
1770
|
+
this.strokeChangeActiveObject('strokeColor', false);
|
|
1771
|
+
this.toolConfigService.changePenConfig({ drawStrokeColor: currentStrokeColor });
|
|
1772
|
+
}
|
|
1773
|
+
setDrawMode(type, settings) {
|
|
1774
|
+
this.drawType = type;
|
|
1775
|
+
this.imageEditor.stopDrawingMode();
|
|
1776
|
+
if (type === 'free') {
|
|
1777
|
+
clearSelection(this.imageEditor);
|
|
1778
|
+
this.imageEditor.startDrawingMode('FREE_DRAWING', settings);
|
|
1779
|
+
}
|
|
1780
|
+
else if (type === 'line') {
|
|
1781
|
+
clearSelection(this.imageEditor);
|
|
1782
|
+
this.imageEditor.startDrawingMode('LINE_DRAWING', settings);
|
|
1783
|
+
}
|
|
1784
|
+
}
|
|
1785
|
+
strokeChangeActiveObject(changedProperty, isSilent) {
|
|
1786
|
+
if (this.activeObjectId != null &&
|
|
1787
|
+
getActiveObjectId(this.imageEditor) == this.activeObjectId) {
|
|
1788
|
+
var props = this.imageEditor.getObjectProperties(this.activeObjectId, 'type');
|
|
1789
|
+
if (props != null && (props.type === 'path' || props.type === 'line')) {
|
|
1790
|
+
let parameters = null;
|
|
1791
|
+
switch (changedProperty) {
|
|
1792
|
+
case 'strokeWidth':
|
|
1793
|
+
parameters = {
|
|
1794
|
+
strokeWidth: this.drawStrokeWidthValue,
|
|
1795
|
+
};
|
|
1796
|
+
break;
|
|
1797
|
+
case 'strokeColor':
|
|
1798
|
+
parameters = {
|
|
1799
|
+
stroke: this.drawStrokeColor,
|
|
1800
|
+
};
|
|
1801
|
+
break;
|
|
1802
|
+
}
|
|
1803
|
+
if (isSilent) {
|
|
1804
|
+
this.imageEditor.setObjectPropertiesQuietly(this.activeObjectId, parameters);
|
|
1805
|
+
}
|
|
1806
|
+
else {
|
|
1807
|
+
setTimeout(() => {
|
|
1808
|
+
this.imageEditor.setObjectProperties(this.activeObjectId, parameters);
|
|
1809
|
+
});
|
|
1810
|
+
}
|
|
1811
|
+
}
|
|
1812
|
+
}
|
|
1813
|
+
}
|
|
1814
|
+
}
|
|
1815
|
+
DrawComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: DrawComponent, deps: [{ token: ToolsConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
1816
|
+
DrawComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: DrawComponent, selector: "tui-image-editor-submenus-draw", inputs: { imageEditor: "imageEditor", defaultDrawShapeColors: "defaultDrawShapeColors" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"tui-image-editor-menu-draw\">\r\n <div class=\"tui-image-editor-submenu-item\">\r\n <div class=\"tie-draw-line-select-button\">\r\n <div\r\n class=\"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 (click)=\"setDrawType('free')\"\r\n [class]=\"\r\n 'tui-image-editor-button free ' +\r\n (drawType == 'free' ? 'active' : '')\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-draw-free\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-draw-free\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-draw-free\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n (click)=\"setDrawType('line')\"\r\n [class]=\"\r\n 'tui-image-editor-button line ' +\r\n (drawType == 'line' ? 'active' : '')\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-draw-line\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-draw-line\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-draw-straight\" | translate }}\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-partition\">\r\n <div></div>\r\n </div>\r\n <div\r\n class=\"tie-draw-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-draw-color-picker\"\r\n [style.background]=\"drawStrokeColor\"\r\n [(colorPicker)]=\"drawStrokeColor\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPresetColors]=\"defaultDrawShapeColors\"\r\n [cpUseRootViewContainer]=\"true\"\r\n (colorPickerChange)=\"drawStrokeColorChanged($event)\"\r\n />\r\n <div>\r\n {{ \"tui-image-editor-angular-submenus-draw-color\" | translate }}\r\n </div></label\r\n >\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-draw-strokeWidth\" | translate\r\n }}</label>\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"drawStrokeWidthValue\"\r\n (ngModelChange)=\"drawStrokeWidthChanged($event, true)\"\r\n (change)=\"drawStrokeWidthChanged($event, false)\"\r\n min=\"5\"\r\n max=\"30\"\r\n />\r\n <input\r\n type=\"number\"\r\n min=\"5\"\r\n max=\"30\"\r\n step=\"1\"\r\n class=\"tie-draw-range-value tui-image-editor-range-value\"\r\n [(ngModel)]=\"drawStrokeWidthValue\"\r\n (ngModelChange)=\"drawStrokeWidthChanged($event, true)\"\r\n (change)=\"drawStrokeWidthChanged($event, false)\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1$1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2$1.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: i1.TranslatePipe, name: "translate" }] });
|
|
1817
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: DrawComponent, decorators: [{
|
|
1818
|
+
type: Component,
|
|
1819
|
+
args: [{ selector: 'tui-image-editor-submenus-draw', template: "<div class=\"tui-image-editor-menu-draw\">\r\n <div class=\"tui-image-editor-submenu-item\">\r\n <div class=\"tie-draw-line-select-button\">\r\n <div\r\n class=\"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 (click)=\"setDrawType('free')\"\r\n [class]=\"\r\n 'tui-image-editor-button free ' +\r\n (drawType == 'free' ? 'active' : '')\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-draw-free\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-draw-free\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-draw-free\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n (click)=\"setDrawType('line')\"\r\n [class]=\"\r\n 'tui-image-editor-button line ' +\r\n (drawType == 'line' ? 'active' : '')\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use xlink:href=\"#ic-draw-line\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-draw-line\" class=\"active use-default\"></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{ \"tui-image-editor-angular-submenus-draw-straight\" | translate }}\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-partition\">\r\n <div></div>\r\n </div>\r\n <div\r\n class=\"tie-draw-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-draw-color-picker\"\r\n [style.background]=\"drawStrokeColor\"\r\n [(colorPicker)]=\"drawStrokeColor\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPresetColors]=\"defaultDrawShapeColors\"\r\n [cpUseRootViewContainer]=\"true\"\r\n (colorPickerChange)=\"drawStrokeColorChanged($event)\"\r\n />\r\n <div>\r\n {{ \"tui-image-editor-angular-submenus-draw-color\" | translate }}\r\n </div></label\r\n >\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-draw-strokeWidth\" | translate\r\n }}</label>\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"drawStrokeWidthValue\"\r\n (ngModelChange)=\"drawStrokeWidthChanged($event, true)\"\r\n (change)=\"drawStrokeWidthChanged($event, false)\"\r\n min=\"5\"\r\n max=\"30\"\r\n />\r\n <input\r\n type=\"number\"\r\n min=\"5\"\r\n max=\"30\"\r\n step=\"1\"\r\n class=\"tie-draw-range-value tui-image-editor-range-value\"\r\n [(ngModel)]=\"drawStrokeWidthValue\"\r\n (ngModelChange)=\"drawStrokeWidthChanged($event, true)\"\r\n (change)=\"drawStrokeWidthChanged($event, false)\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
1820
|
+
}], ctorParameters: function () { return [{ type: ToolsConfigService }]; }, propDecorators: { imageEditor: [{
|
|
1821
|
+
type: Input
|
|
1822
|
+
}], defaultDrawShapeColors: [{
|
|
1823
|
+
type: Input
|
|
1824
|
+
}] } });
|
|
1825
|
+
|
|
1826
|
+
class ShapeComponent$1 {
|
|
1827
|
+
constructor() {
|
|
1828
|
+
this.selected = false;
|
|
1829
|
+
this.clicked = new EventEmitter();
|
|
1830
|
+
}
|
|
1831
|
+
}
|
|
1832
|
+
ShapeComponent$1.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ShapeComponent$1, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1833
|
+
ShapeComponent$1.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: ShapeComponent$1, selector: "tui-image-editor-menus-buttons-shape", inputs: { imageChosen: "imageChosen", selected: "selected" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<div\r\n (click)=\"imageChosen ? clicked.emit('shape') : null\"\r\n [title]=\"'tui-image-editor-angular-menus-buttons-shape' | translate\"\r\n [class]=\"\r\n 'tie-btn-shape tui-image-editor-item normal ' + (selected ? 'active' : '')\r\n \"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-shape\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-shape\" class=\"active use-default\"></use>\r\n <use xlink:href=\"#ic-shape\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
1834
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ShapeComponent$1, decorators: [{
|
|
1835
|
+
type: Component,
|
|
1836
|
+
args: [{ selector: 'tui-image-editor-menus-buttons-shape', template: "<div\r\n (click)=\"imageChosen ? clicked.emit('shape') : null\"\r\n [title]=\"'tui-image-editor-angular-menus-buttons-shape' | translate\"\r\n [class]=\"\r\n 'tie-btn-shape tui-image-editor-item normal ' + (selected ? 'active' : '')\r\n \"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-shape\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-shape\" class=\"active use-default\"></use>\r\n <use xlink:href=\"#ic-shape\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n" }]
|
|
1837
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageChosen: [{
|
|
1838
|
+
type: Input
|
|
1839
|
+
}], selected: [{
|
|
1840
|
+
type: Input
|
|
1841
|
+
}], clicked: [{
|
|
1842
|
+
type: Output
|
|
1843
|
+
}] } });
|
|
1844
|
+
|
|
1845
|
+
class ShapeComponent {
|
|
1846
|
+
constructor() {
|
|
1847
|
+
this.defaultShapeStrokeColors = defaultColors;
|
|
1848
|
+
this.defaultShapeFillColors = defaultColors;
|
|
1849
|
+
this.shapeStrokeWidthValue = 3;
|
|
1850
|
+
this.shapeFillColor = 'rgba(255, 255, 255, 0)';
|
|
1851
|
+
this.shapeStrokeColor = 'rgba(0, 169, 255, 1)';
|
|
1852
|
+
this.onObjectActivatedEventListener = this.onObjectActivated.bind(this);
|
|
1853
|
+
this.onObjectAddedEventListener = this.onObjectAdded.bind(this);
|
|
1854
|
+
}
|
|
1855
|
+
ngOnChanges(changes) {
|
|
1856
|
+
var that = this;
|
|
1857
|
+
if (changes['imageEditor']) {
|
|
1858
|
+
this.activeObjectId = getActiveObjectId(changes['imageEditor'].currentValue);
|
|
1859
|
+
this.checkActiveObject(this.activeObjectId);
|
|
1860
|
+
changes['imageEditor'].previousValue?.off(eventNames.OBJECT_ACTIVATED, that.onObjectActivatedEventListener);
|
|
1861
|
+
changes['imageEditor'].currentValue?.on(eventNames.OBJECT_ACTIVATED, that.onObjectActivatedEventListener);
|
|
1862
|
+
changes['imageEditor'].previousValue?.off(eventNames.OBJECT_ADDED, that.onObjectAddedEventListener);
|
|
1863
|
+
changes['imageEditor'].currentValue?.on(eventNames.OBJECT_ADDED, that.onObjectAddedEventListener);
|
|
1864
|
+
}
|
|
1865
|
+
}
|
|
1866
|
+
ngOnDestroy() {
|
|
1867
|
+
if (this.imageEditor) {
|
|
1868
|
+
this.imageEditor.off(eventNames.OBJECT_ACTIVATED, this.onObjectActivatedEventListener);
|
|
1869
|
+
this.imageEditor.off(eventNames.OBJECT_ADDED, this.onObjectAddedEventListener);
|
|
1870
|
+
}
|
|
1871
|
+
}
|
|
1872
|
+
onObjectActivated(props) {
|
|
1873
|
+
this.activeObjectId = props?.id;
|
|
1874
|
+
this.checkActiveObject(this.activeObjectId);
|
|
1875
|
+
}
|
|
1876
|
+
onObjectAdded(props) {
|
|
1877
|
+
if (props && ['rect', 'circle', 'triangle'].indexOf(props.type) > -1) {
|
|
1878
|
+
this.shapeType = null;
|
|
1879
|
+
this.imageEditor?.stopDrawingMode();
|
|
1880
|
+
}
|
|
1881
|
+
}
|
|
1882
|
+
checkActiveObject(activeObjectId) {
|
|
1883
|
+
if (activeObjectId != null) {
|
|
1884
|
+
var props = this.imageEditor?.getObjectProperties(activeObjectId, [
|
|
1885
|
+
'type',
|
|
1886
|
+
'strokeWidth',
|
|
1887
|
+
'stroke',
|
|
1888
|
+
'fill',
|
|
1889
|
+
]);
|
|
1890
|
+
if (props && ['rect', 'circle', 'triangle'].indexOf(props.type) > -1) {
|
|
1891
|
+
this.shapeStrokeWidthValue = props.strokeWidth;
|
|
1892
|
+
this.shapeFillColor =
|
|
1893
|
+
typeof props.fill == 'object' && props.fill.type == 'color'
|
|
1894
|
+
? props.fill.color
|
|
1895
|
+
: props.fill == null || props.fill.trim() == ''
|
|
1896
|
+
? 'rgba(255, 255, 255, 0)'
|
|
1897
|
+
: props.fill;
|
|
1898
|
+
this.shapeStrokeColor =
|
|
1899
|
+
props.stroke == null || props.stroke.trim() == ''
|
|
1900
|
+
? 'rgba(255, 255, 255, 0)'
|
|
1901
|
+
: props.stroke;
|
|
1902
|
+
}
|
|
1903
|
+
}
|
|
1904
|
+
}
|
|
1905
|
+
shapeStrokeWidthChanged(currentStrokeWidth, isSilent) {
|
|
1906
|
+
this.setDrawingShape(this.shapeType, {
|
|
1907
|
+
fill: this.shapeFillColor,
|
|
1908
|
+
stroke: this.shapeStrokeColor,
|
|
1909
|
+
strokeWidth: typeof currentStrokeWidth === "number" ? currentStrokeWidth : this.shapeStrokeWidthValue,
|
|
1910
|
+
});
|
|
1911
|
+
this.shapeChangeActiveObject('strokeWidth', isSilent);
|
|
1912
|
+
}
|
|
1913
|
+
shapeColorChanged(type, currentColor) {
|
|
1914
|
+
switch (type) {
|
|
1915
|
+
case 'fill':
|
|
1916
|
+
this.setDrawingShape(this.shapeType, {
|
|
1917
|
+
fill: currentColor,
|
|
1918
|
+
stroke: this.shapeStrokeColor,
|
|
1919
|
+
strokeWidth: this.shapeStrokeWidthValue,
|
|
1920
|
+
});
|
|
1921
|
+
break;
|
|
1922
|
+
case 'stroke':
|
|
1923
|
+
this.setDrawingShape(this.shapeType, {
|
|
1924
|
+
fill: this.shapeFillColor,
|
|
1925
|
+
stroke: currentColor,
|
|
1926
|
+
strokeWidth: this.shapeStrokeWidthValue,
|
|
1927
|
+
});
|
|
1928
|
+
break;
|
|
1929
|
+
}
|
|
1930
|
+
this.shapeChangeActiveObject(type == 'stroke' ? 'strokeColor' : 'fillColor');
|
|
1931
|
+
}
|
|
1932
|
+
setShapeType(type) {
|
|
1933
|
+
clearSelection(this.imageEditor);
|
|
1934
|
+
if (this.shapeType != type) {
|
|
1935
|
+
this.shapeType = type;
|
|
1936
|
+
this.imageEditor.startDrawingMode('SHAPE');
|
|
1937
|
+
this.setDrawingShape(this.shapeType, {
|
|
1938
|
+
fill: this.shapeFillColor,
|
|
1939
|
+
stroke: this.shapeStrokeColor,
|
|
1940
|
+
strokeWidth: this.shapeStrokeWidthValue,
|
|
1941
|
+
});
|
|
1942
|
+
}
|
|
1943
|
+
else {
|
|
1944
|
+
this.shapeType = null;
|
|
1945
|
+
this.imageEditor.stopDrawingMode();
|
|
1946
|
+
}
|
|
1947
|
+
}
|
|
1948
|
+
setDrawingShape(type, options) {
|
|
1949
|
+
this.imageEditor.setDrawingShape(type, options);
|
|
1950
|
+
}
|
|
1951
|
+
shapeChangeActiveObject(changedProperty, isSilent = false) {
|
|
1952
|
+
if (this.activeObjectId != null &&
|
|
1953
|
+
getActiveObjectId(this.imageEditor) == this.activeObjectId) {
|
|
1954
|
+
var props = this.imageEditor.getObjectProperties(this.activeObjectId, 'type');
|
|
1955
|
+
if (props != null &&
|
|
1956
|
+
['rect', 'circle', 'triangle'].indexOf(props.type) > -1) {
|
|
1957
|
+
let parameters = null;
|
|
1958
|
+
switch (changedProperty) {
|
|
1959
|
+
case 'strokeWidth':
|
|
1960
|
+
parameters = {
|
|
1961
|
+
strokeWidth: this.shapeStrokeWidthValue,
|
|
1962
|
+
};
|
|
1963
|
+
break;
|
|
1964
|
+
case 'strokeColor':
|
|
1965
|
+
parameters = {
|
|
1966
|
+
stroke: this.shapeStrokeColor,
|
|
1967
|
+
};
|
|
1968
|
+
break;
|
|
1969
|
+
case 'fillColor':
|
|
1970
|
+
parameters = {
|
|
1971
|
+
fill: this.shapeFillColor,
|
|
1972
|
+
};
|
|
1973
|
+
break;
|
|
1974
|
+
}
|
|
1975
|
+
let functionToExecute = () => {
|
|
1976
|
+
this.imageEditor.changeShape(this.activeObjectId, parameters, isSilent);
|
|
1977
|
+
};
|
|
1978
|
+
if (isSilent) {
|
|
1979
|
+
functionToExecute();
|
|
1980
|
+
}
|
|
1981
|
+
else {
|
|
1982
|
+
setTimeout(functionToExecute);
|
|
1983
|
+
}
|
|
1984
|
+
}
|
|
1985
|
+
}
|
|
1986
|
+
}
|
|
1987
|
+
}
|
|
1988
|
+
ShapeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ShapeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1989
|
+
ShapeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: ShapeComponent, selector: "tui-image-editor-submenus-shape", inputs: { imageEditor: "imageEditor", defaultShapeStrokeColors: "defaultShapeStrokeColors", defaultShapeFillColors: "defaultShapeFillColors" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"tui-image-editor-menu-shape\">\r\n <div class=\"tui-image-editor-submenu-item\">\r\n <div class=\"tui-image-editor-d-flex tui-image-editor-justify-content-center\">\r\n <div class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-overflowable-x tui-image-editor-py-3\">\r\n <div class=\"tie-shape-button\">\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button rect ' +\r\n (shapeType == 'rect' ? 'active' : '')\r\n \"\r\n (click)=\"setShapeType('rect')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-shape-rectangle\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-shape-rectangle\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{\r\n \"tui-image-editor-angular-submenus-shape-rectangle\" | translate\r\n }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button circle ' +\r\n (shapeType == 'circle' ? 'active' : '')\r\n \"\r\n (click)=\"setShapeType('circle')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-shape-circle\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-shape-circle\"\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-shape-circle\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button triangle ' +\r\n (shapeType == 'triangle' ? 'active' : '')\r\n \"\r\n (click)=\"setShapeType('triangle')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-shape-triangle\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-shape-triangle\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{\r\n \"tui-image-editor-angular-submenus-shape-triangle\" | 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 class=\"tie-shape-color-button tui-image-editor-d-flex tui-image-editor-flex-row\">\r\n <div\r\n class=\"tie-color-fill tui-image-editor-button tui-image-editor-button-color-picker tui-image-editor-d-flex tui-image-editor-flex-column\"\r\n title=\"Fill\"\r\n >\r\n <label>\r\n <input\r\n readonly\r\n class=\"tie-draw-color-picker\"\r\n [(colorPicker)]=\"shapeFillColor\"\r\n [style.background]=\"shapeFillColor\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPresetColors]=\"defaultShapeFillColors\"\r\n (colorPickerChange)=\"shapeColorChanged('fill', $event)\"\r\n [cpUseRootViewContainer]=\"true\"\r\n />\r\n <div>\r\n {{ \"tui-image-editor-angular-submenus-shape-fill\" | translate }}\r\n </div></label\r\n >\r\n </div>\r\n <div\r\n class=\"tie-color-stroke tui-image-editor-button tui-image-editor-button-color-picker tui-image-editor-d-flex tui-image-editor-flex-column\"\r\n title=\"Stroke\"\r\n >\r\n <label>\r\n <input\r\n readonly\r\n class=\"tie-draw-color-picker\"\r\n [(colorPicker)]=\"shapeStrokeColor\"\r\n [style.background]=\"shapeStrokeColor\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPresetColors]=\"defaultShapeStrokeColors\"\r\n (colorPickerChange)=\"shapeColorChanged('stroke', $event)\"\r\n [cpUseRootViewContainer]=\"true\"\r\n />\r\n <div>\r\n {{\r\n \"tui-image-editor-angular-submenus-shape-stroke\" | translate\r\n }}\r\n </div></label\r\n >\r\n </div>\r\n </div>\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-justify-content-center tui-image-editor-align-items-center tui-image-editor-mb-3\"\r\n >\r\n <label class=\"range\">{{\r\n \"tui-image-editor-angular-submenus-shape-strokeWidth\" | translate\r\n }}</label>\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"shapeStrokeWidthValue\"\r\n (ngModelChange)=\"shapeStrokeWidthChanged($event, true)\"\r\n (change)=\"shapeStrokeWidthChanged($event, false)\"\r\n min=\"2\"\r\n max=\"300\"\r\n />\r\n <input\r\n type=\"number\"\r\n min=\"2\"\r\n max=\"300\"\r\n step=\"1\"\r\n class=\"tie-draw-range-value tui-image-editor-range-value\"\r\n [(ngModel)]=\"shapeStrokeWidthValue\"\r\n (ngModelChange)=\"shapeStrokeWidthChanged($event, true)\"\r\n (change)=\"shapeStrokeWidthChanged($event, false)\"\r\n />\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1$1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2$1.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: i1.TranslatePipe, name: "translate" }] });
|
|
1990
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ShapeComponent, decorators: [{
|
|
1991
|
+
type: Component,
|
|
1992
|
+
args: [{ selector: 'tui-image-editor-submenus-shape', template: "<div class=\"tui-image-editor-menu-shape\">\r\n <div class=\"tui-image-editor-submenu-item\">\r\n <div class=\"tui-image-editor-d-flex tui-image-editor-justify-content-center\">\r\n <div class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-overflowable-x tui-image-editor-py-3\">\r\n <div class=\"tie-shape-button\">\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button rect ' +\r\n (shapeType == 'rect' ? 'active' : '')\r\n \"\r\n (click)=\"setShapeType('rect')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-shape-rectangle\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-shape-rectangle\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{\r\n \"tui-image-editor-angular-submenus-shape-rectangle\" | translate\r\n }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button circle ' +\r\n (shapeType == 'circle' ? 'active' : '')\r\n \"\r\n (click)=\"setShapeType('circle')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-shape-circle\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-shape-circle\"\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-shape-circle\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button triangle ' +\r\n (shapeType == 'triangle' ? 'active' : '')\r\n \"\r\n (click)=\"setShapeType('triangle')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-shape-triangle\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-shape-triangle\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{\r\n \"tui-image-editor-angular-submenus-shape-triangle\" | 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 class=\"tie-shape-color-button tui-image-editor-d-flex tui-image-editor-flex-row\">\r\n <div\r\n class=\"tie-color-fill tui-image-editor-button tui-image-editor-button-color-picker tui-image-editor-d-flex tui-image-editor-flex-column\"\r\n title=\"Fill\"\r\n >\r\n <label>\r\n <input\r\n readonly\r\n class=\"tie-draw-color-picker\"\r\n [(colorPicker)]=\"shapeFillColor\"\r\n [style.background]=\"shapeFillColor\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPresetColors]=\"defaultShapeFillColors\"\r\n (colorPickerChange)=\"shapeColorChanged('fill', $event)\"\r\n [cpUseRootViewContainer]=\"true\"\r\n />\r\n <div>\r\n {{ \"tui-image-editor-angular-submenus-shape-fill\" | translate }}\r\n </div></label\r\n >\r\n </div>\r\n <div\r\n class=\"tie-color-stroke tui-image-editor-button tui-image-editor-button-color-picker tui-image-editor-d-flex tui-image-editor-flex-column\"\r\n title=\"Stroke\"\r\n >\r\n <label>\r\n <input\r\n readonly\r\n class=\"tie-draw-color-picker\"\r\n [(colorPicker)]=\"shapeStrokeColor\"\r\n [style.background]=\"shapeStrokeColor\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPresetColors]=\"defaultShapeStrokeColors\"\r\n (colorPickerChange)=\"shapeColorChanged('stroke', $event)\"\r\n [cpUseRootViewContainer]=\"true\"\r\n />\r\n <div>\r\n {{\r\n \"tui-image-editor-angular-submenus-shape-stroke\" | translate\r\n }}\r\n </div></label\r\n >\r\n </div>\r\n </div>\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-justify-content-center tui-image-editor-align-items-center tui-image-editor-mb-3\"\r\n >\r\n <label class=\"range\">{{\r\n \"tui-image-editor-angular-submenus-shape-strokeWidth\" | translate\r\n }}</label>\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"shapeStrokeWidthValue\"\r\n (ngModelChange)=\"shapeStrokeWidthChanged($event, true)\"\r\n (change)=\"shapeStrokeWidthChanged($event, false)\"\r\n min=\"2\"\r\n max=\"300\"\r\n />\r\n <input\r\n type=\"number\"\r\n min=\"2\"\r\n max=\"300\"\r\n step=\"1\"\r\n class=\"tie-draw-range-value tui-image-editor-range-value\"\r\n [(ngModel)]=\"shapeStrokeWidthValue\"\r\n (ngModelChange)=\"shapeStrokeWidthChanged($event, true)\"\r\n (change)=\"shapeStrokeWidthChanged($event, false)\"\r\n />\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
1993
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageEditor: [{
|
|
1994
|
+
type: Input
|
|
1995
|
+
}], defaultShapeStrokeColors: [{
|
|
1996
|
+
type: Input
|
|
1997
|
+
}], defaultShapeFillColors: [{
|
|
1998
|
+
type: Input
|
|
1999
|
+
}] } });
|
|
2000
|
+
|
|
2001
|
+
class IconComponent$1 {
|
|
2002
|
+
constructor() {
|
|
2003
|
+
this.selected = false;
|
|
2004
|
+
this.clicked = new EventEmitter();
|
|
2005
|
+
}
|
|
2006
|
+
}
|
|
2007
|
+
IconComponent$1.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: IconComponent$1, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2008
|
+
IconComponent$1.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: IconComponent$1, selector: "tui-image-editor-menus-buttons-icon", inputs: { imageChosen: "imageChosen", selected: "selected" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<div\r\n (click)=\"imageChosen ? clicked.emit('icon') : null\"\r\n [title]=\"'tui-image-editor-angular-menus-buttons-icon' | translate\"\r\n [class]=\"\r\n 'tie-btn-icon tui-image-editor-item normal ' +\r\n (selected ? 'active' : '')\r\n \"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-icon\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-icon\" class=\"active use-default\"></use>\r\n <use xlink:href=\"#ic-icon\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
2009
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: IconComponent$1, decorators: [{
|
|
2010
|
+
type: Component,
|
|
2011
|
+
args: [{ selector: 'tui-image-editor-menus-buttons-icon', template: "<div\r\n (click)=\"imageChosen ? clicked.emit('icon') : null\"\r\n [title]=\"'tui-image-editor-angular-menus-buttons-icon' | translate\"\r\n [class]=\"\r\n 'tie-btn-icon tui-image-editor-item normal ' +\r\n (selected ? 'active' : '')\r\n \"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-icon\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-icon\" class=\"active use-default\"></use>\r\n <use xlink:href=\"#ic-icon\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n" }]
|
|
2012
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageChosen: [{
|
|
2013
|
+
type: Input
|
|
2014
|
+
}], selected: [{
|
|
2015
|
+
type: Input
|
|
2016
|
+
}], clicked: [{
|
|
2017
|
+
type: Output
|
|
2018
|
+
}] } });
|
|
2019
|
+
|
|
2020
|
+
class IconComponent {
|
|
2021
|
+
constructor() {
|
|
2022
|
+
this.defaultIconColors = defaultColors;
|
|
2023
|
+
this.iconColor = 'rgba(255, 187, 59, 1)';
|
|
2024
|
+
this.onObjectActivatedEventListener = this.onObjectActivated.bind(this);
|
|
2025
|
+
this.onObjectAddedEventListener = this.onObjectAdded.bind(this);
|
|
2026
|
+
}
|
|
2027
|
+
ngOnChanges(changes) {
|
|
2028
|
+
var that = this;
|
|
2029
|
+
if (changes['imageEditor']) {
|
|
2030
|
+
this.activeObjectId = getActiveObjectId(changes['imageEditor'].currentValue);
|
|
2031
|
+
this.checkActiveObject(this.activeObjectId);
|
|
2032
|
+
changes['imageEditor'].previousValue?.off(eventNames.OBJECT_ACTIVATED, that.onObjectActivatedEventListener);
|
|
2033
|
+
changes['imageEditor'].currentValue?.on(eventNames.OBJECT_ACTIVATED, that.onObjectActivatedEventListener);
|
|
2034
|
+
changes['imageEditor'].previousValue?.off(eventNames.OBJECT_ADDED, that.onObjectAddedEventListener);
|
|
2035
|
+
changes['imageEditor'].currentValue?.on(eventNames.OBJECT_ADDED, that.onObjectAddedEventListener);
|
|
2036
|
+
}
|
|
2037
|
+
}
|
|
2038
|
+
ngOnDestroy() {
|
|
2039
|
+
if (this.imageEditor) {
|
|
2040
|
+
this.imageEditor.off(eventNames.OBJECT_ACTIVATED, this.onObjectActivatedEventListener);
|
|
2041
|
+
this.imageEditor.off(eventNames.OBJECT_ADDED, this.onObjectAddedEventListener);
|
|
2042
|
+
}
|
|
2043
|
+
}
|
|
2044
|
+
onObjectActivated(props) {
|
|
2045
|
+
this.activeObjectId = props?.id;
|
|
2046
|
+
this.checkActiveObject(this.activeObjectId);
|
|
2047
|
+
}
|
|
2048
|
+
onObjectAdded(props) {
|
|
2049
|
+
if (props && props.type === 'icon') {
|
|
2050
|
+
this.setActiveIconType(this.iconType, false);
|
|
2051
|
+
}
|
|
2052
|
+
}
|
|
2053
|
+
checkActiveObject(activeObjectId) {
|
|
2054
|
+
if (activeObjectId != null) {
|
|
2055
|
+
var props = this.imageEditor?.getObjectProperties(activeObjectId, [
|
|
2056
|
+
'type',
|
|
2057
|
+
'fill',
|
|
2058
|
+
]);
|
|
2059
|
+
if (props && props.type === 'icon') {
|
|
2060
|
+
this.iconColor =
|
|
2061
|
+
typeof props.fill == 'object' && props.fill.type == 'color'
|
|
2062
|
+
? props.fill.color
|
|
2063
|
+
: props.fill == null || props.fill.trim() == ''
|
|
2064
|
+
? 'rgba(255, 187, 59, 1)'
|
|
2065
|
+
: props.fill;
|
|
2066
|
+
}
|
|
2067
|
+
}
|
|
2068
|
+
}
|
|
2069
|
+
setActiveIconType(newIconType, discardSelection = true) {
|
|
2070
|
+
if (discardSelection) {
|
|
2071
|
+
clearSelection(this.imageEditor);
|
|
2072
|
+
}
|
|
2073
|
+
if (this.iconType != newIconType) {
|
|
2074
|
+
this.iconType = newIconType;
|
|
2075
|
+
this.imageEditor.startDrawingMode('ICON');
|
|
2076
|
+
this.imageEditor.setDrawingIcon(newIconType, this.iconColor);
|
|
2077
|
+
this.imageEditor.changeCursor('crosshair');
|
|
2078
|
+
}
|
|
2079
|
+
else {
|
|
2080
|
+
this.iconType = null;
|
|
2081
|
+
this.imageEditor.stopDrawingMode();
|
|
2082
|
+
this.imageEditor.changeCursor('default');
|
|
2083
|
+
}
|
|
2084
|
+
}
|
|
2085
|
+
iconColorChanged(currentColor) {
|
|
2086
|
+
this.iconChangeActiveObject();
|
|
2087
|
+
}
|
|
2088
|
+
iconChangeActiveObject() {
|
|
2089
|
+
if (this.activeObjectId != null &&
|
|
2090
|
+
getActiveObjectId(this.imageEditor) == this.activeObjectId) {
|
|
2091
|
+
var props = this.imageEditor.getObjectProperties(this.activeObjectId, 'type');
|
|
2092
|
+
if (props.type === 'icon') {
|
|
2093
|
+
this.imageEditor.setObjectProperties(this.activeObjectId, {
|
|
2094
|
+
fill: this.iconColor,
|
|
2095
|
+
});
|
|
2096
|
+
}
|
|
2097
|
+
}
|
|
2098
|
+
}
|
|
2099
|
+
registerIcon(obj) {
|
|
2100
|
+
this.imageEditor.registerIcons(obj);
|
|
2101
|
+
}
|
|
2102
|
+
onIconChosen(event) {
|
|
2103
|
+
let selectedFile = event.target.files[0];
|
|
2104
|
+
if (selectedFile != null) {
|
|
2105
|
+
var imgUrl = URL.createObjectURL(selectedFile);
|
|
2106
|
+
const imagetracer = new ImageTracer();
|
|
2107
|
+
imagetracer.imageToSVG(imgUrl, (svgstr) => {
|
|
2108
|
+
const [, svgPath] = svgstr.match(/path[^>]*d="([^"]*)"/);
|
|
2109
|
+
const iconObj = {};
|
|
2110
|
+
iconObj[selectedFile.name] = svgPath;
|
|
2111
|
+
this.registerIcon(iconObj);
|
|
2112
|
+
this.imageEditor.addIcon(selectedFile.name, {
|
|
2113
|
+
fill: this.iconColor,
|
|
2114
|
+
left: 100,
|
|
2115
|
+
top: 100,
|
|
2116
|
+
});
|
|
2117
|
+
}, ImageTracer.tracerDefaultOption());
|
|
2118
|
+
}
|
|
2119
|
+
}
|
|
2120
|
+
}
|
|
2121
|
+
IconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: IconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2122
|
+
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: i2$1.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: i1.TranslatePipe, name: "translate" }] });
|
|
2123
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: IconComponent, decorators: [{
|
|
2124
|
+
type: Component,
|
|
2125
|
+
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" }]
|
|
2126
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageEditor: [{
|
|
2127
|
+
type: Input
|
|
2128
|
+
}], defaultIconColors: [{
|
|
2129
|
+
type: Input
|
|
2130
|
+
}] } });
|
|
2131
|
+
|
|
2132
|
+
class TextComponent$1 {
|
|
2133
|
+
constructor() {
|
|
2134
|
+
this.selected = false;
|
|
2135
|
+
this.clicked = new EventEmitter();
|
|
2136
|
+
}
|
|
2137
|
+
}
|
|
2138
|
+
TextComponent$1.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TextComponent$1, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2139
|
+
TextComponent$1.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TextComponent$1, selector: "tui-image-editor-menus-buttons-text", inputs: { imageChosen: "imageChosen", selected: "selected" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<div\r\n (click)=\"imageChosen ? clicked.emit('text') : null\"\r\n [title]=\"'tui-image-editor-angular-menus-buttons-text' | translate\"\r\n [class]=\"\r\n 'tie-btn-text tui-image-editor-item normal ' + (selected ? 'active' : '')\r\n \"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-text\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-text\" class=\"active use-default\"></use>\r\n <use xlink:href=\"#ic-text\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
2140
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TextComponent$1, decorators: [{
|
|
2141
|
+
type: Component,
|
|
2142
|
+
args: [{ selector: 'tui-image-editor-menus-buttons-text', template: "<div\r\n (click)=\"imageChosen ? clicked.emit('text') : null\"\r\n [title]=\"'tui-image-editor-angular-menus-buttons-text' | translate\"\r\n [class]=\"\r\n 'tie-btn-text tui-image-editor-item normal ' + (selected ? 'active' : '')\r\n \"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-text\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-text\" class=\"active use-default\"></use>\r\n <use xlink:href=\"#ic-text\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n" }]
|
|
2143
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageChosen: [{
|
|
2144
|
+
type: Input
|
|
2145
|
+
}], selected: [{
|
|
2146
|
+
type: Input
|
|
2147
|
+
}], clicked: [{
|
|
2148
|
+
type: Output
|
|
2149
|
+
}] } });
|
|
2150
|
+
|
|
2151
|
+
class TextComponent {
|
|
2152
|
+
constructor() {
|
|
2153
|
+
this.defaultTextColors = defaultColors;
|
|
2154
|
+
this.textColor = 'rgba(255, 187, 59, 1)';
|
|
2155
|
+
this.textSizeValue = 50;
|
|
2156
|
+
this.textAlign = 'left';
|
|
2157
|
+
this.textFontFamily = 'Noto Sans';
|
|
2158
|
+
this.textFontStyle = 'normal';
|
|
2159
|
+
this.textFontWeight = 'normal';
|
|
2160
|
+
this.textDecoration = null;
|
|
2161
|
+
this.onObjectActivatedEventListener = this.onObjectActivated.bind(this);
|
|
2162
|
+
this.onTextAddedEventListener = this.onTextAdded.bind(this);
|
|
2163
|
+
}
|
|
2164
|
+
ngOnChanges(changes) {
|
|
2165
|
+
var that = this;
|
|
2166
|
+
if (changes['imageEditor']) {
|
|
2167
|
+
this.activeObjectId = getActiveObjectId(changes['imageEditor'].currentValue);
|
|
2168
|
+
this.checkActiveObject(this.activeObjectId);
|
|
2169
|
+
changes['imageEditor'].currentValue?.startDrawingMode('TEXT');
|
|
2170
|
+
changes['imageEditor'].previousValue?.off(eventNames.OBJECT_ACTIVATED, that.onObjectActivatedEventListener);
|
|
2171
|
+
changes['imageEditor'].currentValue?.on(eventNames.OBJECT_ACTIVATED, that.onObjectActivatedEventListener);
|
|
2172
|
+
changes['imageEditor'].previousValue?.off(eventNames.ADD_TEXT, that.onTextAddedEventListener);
|
|
2173
|
+
changes['imageEditor'].currentValue?.on(eventNames.ADD_TEXT, that.onTextAddedEventListener);
|
|
2174
|
+
}
|
|
2175
|
+
}
|
|
2176
|
+
ngOnDestroy() {
|
|
2177
|
+
if (this.imageEditor) {
|
|
2178
|
+
this.imageEditor.off(eventNames.OBJECT_ACTIVATED, this.onObjectActivatedEventListener);
|
|
2179
|
+
this.imageEditor.off(eventNames.ADD_TEXT, this.onTextAddedEventListener);
|
|
2180
|
+
}
|
|
2181
|
+
}
|
|
2182
|
+
onObjectActivated(props) {
|
|
2183
|
+
this.activeObjectId = props?.id;
|
|
2184
|
+
this.checkActiveObject(this.activeObjectId);
|
|
2185
|
+
}
|
|
2186
|
+
onTextAdded(e) {
|
|
2187
|
+
this.imageEditor
|
|
2188
|
+
.addText('Edit text', {
|
|
2189
|
+
position: e.originPosition,
|
|
2190
|
+
styles: {
|
|
2191
|
+
fill: this.textColor,
|
|
2192
|
+
fontFamily: this.textFontFamily,
|
|
2193
|
+
fontSize: this.textSizeValue,
|
|
2194
|
+
fontStyle: this.textFontStyle,
|
|
2195
|
+
fontWeight: this.textFontWeight,
|
|
2196
|
+
textAlign: this.textAlign,
|
|
2197
|
+
textDecoration: this.textDecoration,
|
|
2198
|
+
underline: this.textDecoration == 'underline',
|
|
2199
|
+
},
|
|
2200
|
+
})
|
|
2201
|
+
.then(() => {
|
|
2202
|
+
this.imageEditor.changeCursor('default');
|
|
2203
|
+
this.imageEditor?.startDrawingMode('TEXT');
|
|
2204
|
+
});
|
|
2205
|
+
}
|
|
2206
|
+
checkActiveObject(activeObjectId) {
|
|
2207
|
+
if (activeObjectId != null) {
|
|
2208
|
+
var props = this.imageEditor?.getObjectProperties(activeObjectId, [
|
|
2209
|
+
'type',
|
|
2210
|
+
'fill',
|
|
2211
|
+
'textAlign',
|
|
2212
|
+
'textDecoration',
|
|
2213
|
+
'fontFamily',
|
|
2214
|
+
'fontStyle',
|
|
2215
|
+
'fontWeight',
|
|
2216
|
+
'fontSize',
|
|
2217
|
+
]);
|
|
2218
|
+
if (props && (props.type === 'i-text' || props.type === 'text')) {
|
|
2219
|
+
this.textAlign = props.textAlign;
|
|
2220
|
+
this.textColor = props.fill;
|
|
2221
|
+
this.textDecoration = props.textDecoration;
|
|
2222
|
+
this.textFontFamily = props.fontFamily;
|
|
2223
|
+
this.textFontStyle = props.fontStyle;
|
|
2224
|
+
this.textFontWeight = props.fontWeight;
|
|
2225
|
+
this.textSizeValue = props.fontSize;
|
|
2226
|
+
this.imageEditor?.startDrawingMode('TEXT');
|
|
2227
|
+
}
|
|
2228
|
+
}
|
|
2229
|
+
}
|
|
2230
|
+
changeTextAlignment(newValue) {
|
|
2231
|
+
this.textAlign = newValue;
|
|
2232
|
+
this.textChangeActiveObject('textAlign');
|
|
2233
|
+
}
|
|
2234
|
+
changeTextFontStyle(newFontStyle) {
|
|
2235
|
+
this.textFontStyle = newFontStyle;
|
|
2236
|
+
this.textChangeActiveObject('fontStyle');
|
|
2237
|
+
}
|
|
2238
|
+
changeTextFontWeight(newFontWeight) {
|
|
2239
|
+
this.textFontWeight = newFontWeight;
|
|
2240
|
+
this.textChangeActiveObject('fontWeight');
|
|
2241
|
+
}
|
|
2242
|
+
changeTextDecoration(newTextDecoration) {
|
|
2243
|
+
this.textDecoration = newTextDecoration;
|
|
2244
|
+
this.textChangeActiveObject('textDecoration');
|
|
2245
|
+
}
|
|
2246
|
+
textSizeValueChanged(currentTextSizeValue, isSilent) {
|
|
2247
|
+
this.textChangeActiveObject('fontSize', isSilent);
|
|
2248
|
+
}
|
|
2249
|
+
textColorChanged(currentColor) {
|
|
2250
|
+
this.textChangeActiveObject('color');
|
|
2251
|
+
}
|
|
2252
|
+
textChangeActiveObject(type, isSilent = false) {
|
|
2253
|
+
if (this.activeObjectId != null &&
|
|
2254
|
+
getActiveObjectId(this.imageEditor) == this.activeObjectId) {
|
|
2255
|
+
var props = this.imageEditor.getObjectProperties(this.activeObjectId, 'type');
|
|
2256
|
+
let parameters = null;
|
|
2257
|
+
if (props.type === 'i-text' || props.type === 'text') {
|
|
2258
|
+
switch (type) {
|
|
2259
|
+
case 'color':
|
|
2260
|
+
parameters = {
|
|
2261
|
+
fill: this.textColor,
|
|
2262
|
+
};
|
|
2263
|
+
break;
|
|
2264
|
+
case 'fontFamily':
|
|
2265
|
+
parameters = {
|
|
2266
|
+
fontFamily: this.textFontFamily,
|
|
2267
|
+
};
|
|
2268
|
+
break;
|
|
2269
|
+
case 'fontSize':
|
|
2270
|
+
parameters = {
|
|
2271
|
+
fontSize: this.textSizeValue,
|
|
2272
|
+
};
|
|
2273
|
+
break;
|
|
2274
|
+
case 'fontStyle':
|
|
2275
|
+
parameters = {
|
|
2276
|
+
fontStyle: this.textFontStyle,
|
|
2277
|
+
};
|
|
2278
|
+
break;
|
|
2279
|
+
case 'fontWeight':
|
|
2280
|
+
parameters = {
|
|
2281
|
+
fontWeight: this.textFontWeight,
|
|
2282
|
+
};
|
|
2283
|
+
break;
|
|
2284
|
+
case 'textAlign':
|
|
2285
|
+
parameters = {
|
|
2286
|
+
textAlign: this.textAlign,
|
|
2287
|
+
};
|
|
2288
|
+
break;
|
|
2289
|
+
case 'textDecoration':
|
|
2290
|
+
parameters = {
|
|
2291
|
+
textDecoration: this.textDecoration,
|
|
2292
|
+
};
|
|
2293
|
+
break;
|
|
2294
|
+
}
|
|
2295
|
+
let functionToExecute = () => {
|
|
2296
|
+
this.imageEditor.changeTextStyle(this.activeObjectId, parameters, isSilent);
|
|
2297
|
+
};
|
|
2298
|
+
if (isSilent) {
|
|
2299
|
+
functionToExecute();
|
|
2300
|
+
}
|
|
2301
|
+
else {
|
|
2302
|
+
setTimeout(functionToExecute);
|
|
2303
|
+
}
|
|
2304
|
+
}
|
|
2305
|
+
}
|
|
2306
|
+
}
|
|
2307
|
+
}
|
|
2308
|
+
TextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2309
|
+
TextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TextComponent, selector: "tui-image-editor-submenus-text", inputs: { imageEditor: "imageEditor", defaultTextColors: "defaultTextColors" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"tui-image-editor-menu-text\">\r\n <div class=\"tui-image-editor-submenu-item\">\r\n <div\r\n class=\"tui-image-editor-d-flex tui-image-editor-justify-content-center\"\r\n [style.maxWidth]=\"'100%'\"\r\n >\r\n <div\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-overflowable-x tui-image-editor-py-3\"\r\n >\r\n <div\r\n class=\"tie-text-effect-button tui-image-editor-d-flex tui-image-editor-flex-row\"\r\n >\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button bold ' +\r\n (textFontWeight == 'bold' ? 'active' : '')\r\n \"\r\n (click)=\"\r\n changeTextFontWeight(textFontWeight == 'bold' ? 'normal' : 'bold')\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-bold\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-bold\"\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-text-bold\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button italic ' +\r\n (textFontStyle == 'italic' ? 'active' : '')\r\n \"\r\n (click)=\"\r\n changeTextFontStyle(\r\n textFontStyle == 'italic' ? 'normal' : 'italic'\r\n )\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-italic\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-italic\"\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-text-italic\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button underline ' +\r\n (textDecoration == 'underline' ? 'active' : '')\r\n \"\r\n (click)=\"\r\n changeTextDecoration(\r\n textDecoration == 'underline' ? null : 'underline'\r\n )\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-underline\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-underline\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{\r\n \"tui-image-editor-angular-submenus-text-underline\" | 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 class=\"tie-text-align-button tui-image-editor-d-flex tui-image-editor-flex-row\"\r\n >\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button left ' +\r\n (textAlign == 'left' ? 'active' : '')\r\n \"\r\n (click)=\"changeTextAlignment('left')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-align-left\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-align-left\"\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-text-left\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button center ' +\r\n (textAlign == 'center' ? 'active' : '')\r\n \"\r\n (click)=\"changeTextAlignment('center')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-align-center\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-align-center\"\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-text-center\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button right ' +\r\n (textAlign == 'right' ? 'active' : '')\r\n \"\r\n (click)=\"changeTextAlignment('right')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-align-right\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-align-right\"\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-text-right\" | 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\r\n class=\"tie-text-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-text-color-picker\"\r\n [(colorPicker)]=\"textColor\"\r\n [style.background]=\"textColor\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPresetColors]=\"defaultTextColors\"\r\n (colorPickerChange)=\"textColorChanged($event)\"\r\n [cpUseRootViewContainer]=\"true\"\r\n />\r\n <div>\r\n {{ \"tui-image-editor-angular-submenus-text-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 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-mb-3\"\r\n >\r\n <label class=\"range\">\r\n {{\r\n \"tui-image-editor-angular-submenus-text-textSize\" | translate\r\n }}</label\r\n >\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"textSizeValue\"\r\n (ngModelChange)=\"textSizeValueChanged($event, true)\"\r\n (change)=\"textSizeValueChanged($event, false)\"\r\n min=\"10\"\r\n max=\"100\"\r\n />\r\n <input\r\n type=\"number\"\r\n min=\"10\"\r\n max=\"100\"\r\n step=\"1\"\r\n class=\"tie-text-range-value tui-image-editor-range-value\"\r\n [(ngModel)]=\"textSizeValue\"\r\n (ngModelChange)=\"textSizeValueChanged($event, true)\"\r\n (change)=\"textSizeValueChanged($event, false)\"\r\n />\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i1$1.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2$1.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: i1.TranslatePipe, name: "translate" }] });
|
|
2310
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TextComponent, decorators: [{
|
|
2311
|
+
type: Component,
|
|
2312
|
+
args: [{ selector: 'tui-image-editor-submenus-text', template: "<div class=\"tui-image-editor-menu-text\">\r\n <div class=\"tui-image-editor-submenu-item\">\r\n <div\r\n class=\"tui-image-editor-d-flex tui-image-editor-justify-content-center\"\r\n [style.maxWidth]=\"'100%'\"\r\n >\r\n <div\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-overflowable-x tui-image-editor-py-3\"\r\n >\r\n <div\r\n class=\"tie-text-effect-button tui-image-editor-d-flex tui-image-editor-flex-row\"\r\n >\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button bold ' +\r\n (textFontWeight == 'bold' ? 'active' : '')\r\n \"\r\n (click)=\"\r\n changeTextFontWeight(textFontWeight == 'bold' ? 'normal' : 'bold')\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-bold\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-bold\"\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-text-bold\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button italic ' +\r\n (textFontStyle == 'italic' ? 'active' : '')\r\n \"\r\n (click)=\"\r\n changeTextFontStyle(\r\n textFontStyle == 'italic' ? 'normal' : 'italic'\r\n )\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-italic\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-italic\"\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-text-italic\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button underline ' +\r\n (textDecoration == 'underline' ? 'active' : '')\r\n \"\r\n (click)=\"\r\n changeTextDecoration(\r\n textDecoration == 'underline' ? null : 'underline'\r\n )\r\n \"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-underline\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-underline\"\r\n class=\"active use-default\"\r\n ></use>\r\n </svg>\r\n </div>\r\n <label>\r\n {{\r\n \"tui-image-editor-angular-submenus-text-underline\" | 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 class=\"tie-text-align-button tui-image-editor-d-flex tui-image-editor-flex-row\"\r\n >\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button left ' +\r\n (textAlign == 'left' ? 'active' : '')\r\n \"\r\n (click)=\"changeTextAlignment('left')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-align-left\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-align-left\"\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-text-left\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button center ' +\r\n (textAlign == 'center' ? 'active' : '')\r\n \"\r\n (click)=\"changeTextAlignment('center')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-align-center\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-align-center\"\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-text-center\" | translate }}\r\n </label>\r\n </div>\r\n <div\r\n [class]=\"\r\n 'tui-image-editor-button right ' +\r\n (textAlign == 'right' ? 'active' : '')\r\n \"\r\n (click)=\"changeTextAlignment('right')\"\r\n >\r\n <div>\r\n <svg class=\"svg_ic-submenu\">\r\n <use\r\n xlink:href=\"#ic-text-align-right\"\r\n class=\"normal use-default\"\r\n ></use>\r\n <use\r\n xlink:href=\"#ic-text-align-right\"\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-text-right\" | 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\r\n class=\"tie-text-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-text-color-picker\"\r\n [(colorPicker)]=\"textColor\"\r\n [style.background]=\"textColor\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPresetColors]=\"defaultTextColors\"\r\n (colorPickerChange)=\"textColorChanged($event)\"\r\n [cpUseRootViewContainer]=\"true\"\r\n />\r\n <div>\r\n {{ \"tui-image-editor-angular-submenus-text-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 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-mb-3\"\r\n >\r\n <label class=\"range\">\r\n {{\r\n \"tui-image-editor-angular-submenus-text-textSize\" | translate\r\n }}</label\r\n >\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"textSizeValue\"\r\n (ngModelChange)=\"textSizeValueChanged($event, true)\"\r\n (change)=\"textSizeValueChanged($event, false)\"\r\n min=\"10\"\r\n max=\"100\"\r\n />\r\n <input\r\n type=\"number\"\r\n min=\"10\"\r\n max=\"100\"\r\n step=\"1\"\r\n class=\"tie-text-range-value tui-image-editor-range-value\"\r\n [(ngModel)]=\"textSizeValue\"\r\n (ngModelChange)=\"textSizeValueChanged($event, true)\"\r\n (change)=\"textSizeValueChanged($event, false)\"\r\n />\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
2313
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageEditor: [{
|
|
2314
|
+
type: Input
|
|
2315
|
+
}], defaultTextColors: [{
|
|
2316
|
+
type: Input
|
|
2317
|
+
}] } });
|
|
2318
|
+
|
|
2319
|
+
class MaskComponent$1 {
|
|
2320
|
+
constructor() {
|
|
2321
|
+
this.selected = false;
|
|
2322
|
+
this.clicked = new EventEmitter();
|
|
2323
|
+
}
|
|
2324
|
+
}
|
|
2325
|
+
MaskComponent$1.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MaskComponent$1, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2326
|
+
MaskComponent$1.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: MaskComponent$1, selector: "tui-image-editor-menus-buttons-mask", inputs: { imageChosen: "imageChosen", selected: "selected" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<div\r\n (click)=\"imageChosen ? clicked.emit('mask') : null\"\r\n [title]=\"'tui-image-editor-angular-menus-buttons-mask' | translate\"\r\n [class]=\"\r\n 'tie-btn-mask tui-image-editor-item normal ' + (selected ? 'active' : '')\r\n \"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-mask\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-mask\" class=\"active use-default\"></use>\r\n <use xlink:href=\"#ic-mask\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
2327
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MaskComponent$1, decorators: [{
|
|
2328
|
+
type: Component,
|
|
2329
|
+
args: [{ selector: 'tui-image-editor-menus-buttons-mask', template: "<div\r\n (click)=\"imageChosen ? clicked.emit('mask') : null\"\r\n [title]=\"'tui-image-editor-angular-menus-buttons-mask' | translate\"\r\n [class]=\"\r\n 'tie-btn-mask tui-image-editor-item normal ' + (selected ? 'active' : '')\r\n \"\r\n>\r\n <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-mask\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-mask\" class=\"active use-default\"></use>\r\n <use xlink:href=\"#ic-mask\" class=\"hover use-default\"></use>\r\n </svg>\r\n</div>\r\n" }]
|
|
2330
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageChosen: [{
|
|
2331
|
+
type: Input
|
|
2332
|
+
}], selected: [{
|
|
2333
|
+
type: Input
|
|
2334
|
+
}], clicked: [{
|
|
2335
|
+
type: Output
|
|
2336
|
+
}] } });
|
|
2337
|
+
|
|
2338
|
+
class MaskComponent {
|
|
2339
|
+
constructor() {
|
|
2340
|
+
this.onObjectActivatedEventListener = this.onObjectActivated.bind(this);
|
|
2341
|
+
}
|
|
2342
|
+
ngOnChanges(changes) {
|
|
2343
|
+
var that = this;
|
|
2344
|
+
if (changes['imageEditor']) {
|
|
2345
|
+
this.activeObjectId = getActiveObjectId(changes['imageEditor'].currentValue);
|
|
2346
|
+
changes['imageEditor'].previousValue?.off(eventNames.OBJECT_ACTIVATED, that.onObjectActivatedEventListener);
|
|
2347
|
+
changes['imageEditor'].currentValue?.on(eventNames.OBJECT_ACTIVATED, that.onObjectActivatedEventListener);
|
|
2348
|
+
}
|
|
2349
|
+
}
|
|
2350
|
+
ngOnDestroy() {
|
|
2351
|
+
if (this.imageEditor) {
|
|
2352
|
+
this.imageEditor.off(eventNames.OBJECT_ACTIVATED, this.onObjectActivatedEventListener);
|
|
2353
|
+
}
|
|
2354
|
+
}
|
|
2355
|
+
onObjectActivated(props) {
|
|
2356
|
+
this.activeObjectId = props?.id;
|
|
2357
|
+
}
|
|
2358
|
+
onMaskChosen(event) {
|
|
2359
|
+
let selectedFile = event.target.files[0];
|
|
2360
|
+
if (selectedFile != null) {
|
|
2361
|
+
if (!isFileApiSupported()) {
|
|
2362
|
+
alert('This browser does not support file-api');
|
|
2363
|
+
}
|
|
2364
|
+
let imgUrl = URL.createObjectURL(selectedFile);
|
|
2365
|
+
this.imageEditor
|
|
2366
|
+
.loadImageFromURL(this.imageEditor.toDataURL(), 'FilterImage')
|
|
2367
|
+
.then(() => {
|
|
2368
|
+
this.imageEditor.addImageObject(imgUrl).then(() => {
|
|
2369
|
+
URL.revokeObjectURL(selectedFile);
|
|
2370
|
+
});
|
|
2371
|
+
this.imageEditor._invoker.fire(eventNames.EXECUTE_COMMAND, historyNames.LOAD_MASK_IMAGE);
|
|
2372
|
+
if (this.fileInput != null) {
|
|
2373
|
+
this.fileInput.nativeElement.value = '';
|
|
2374
|
+
}
|
|
2375
|
+
});
|
|
2376
|
+
}
|
|
2377
|
+
}
|
|
2378
|
+
applyMask() {
|
|
2379
|
+
if (this.activeObjectId != null &&
|
|
2380
|
+
getActiveObjectId(this.imageEditor) == this.activeObjectId) {
|
|
2381
|
+
var props = this.imageEditor.getObjectProperties(this.activeObjectId, 'type');
|
|
2382
|
+
if (props.type === 'image') {
|
|
2383
|
+
this.imageEditor.applyFilter('mask', {
|
|
2384
|
+
maskObjId: this.activeObjectId,
|
|
2385
|
+
});
|
|
2386
|
+
}
|
|
2387
|
+
}
|
|
2388
|
+
}
|
|
2389
|
+
}
|
|
2390
|
+
MaskComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MaskComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2391
|
+
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" }] });
|
|
2392
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: MaskComponent, decorators: [{
|
|
2393
|
+
type: Component,
|
|
2394
|
+
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" }]
|
|
2395
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageEditor: [{
|
|
2396
|
+
type: Input
|
|
2397
|
+
}], fileInput: [{
|
|
2398
|
+
type: ViewChild,
|
|
2399
|
+
args: ['fileInput']
|
|
2400
|
+
}] } });
|
|
2401
|
+
|
|
2402
|
+
class FilterComponent$1 {
|
|
2403
|
+
constructor() {
|
|
2404
|
+
this.selected = false;
|
|
2405
|
+
this.clicked = new EventEmitter();
|
|
2406
|
+
}
|
|
2407
|
+
}
|
|
2408
|
+
FilterComponent$1.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: FilterComponent$1, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2409
|
+
FilterComponent$1.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: FilterComponent$1, selector: "tui-image-editor-menus-buttons-filter", inputs: { imageChosen: "imageChosen", selected: "selected" }, outputs: { clicked: "clicked" }, ngImport: i0, template: "<div\r\n (click)=\"imageChosen ? clicked.emit('filter') : null\"\r\n [title]=\"'tui-image-editor-angular-menus-buttons-filter' | translate\"\r\n [class]=\"\r\n 'tie-btn-filter tui-image-editor-item normal ' + (selected ? 'active' : '')\r\n \"\r\n>\r\n <!-- <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-filter\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-filter\" class=\"active use-default\"></use>\r\n <use xlink:href=\"#ic-filter\" class=\"hover use-default\"></use>\r\n </svg> -->\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 22 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M11.0014 12.7391C14.243 12.7391 16.8709 10.1112 16.8709 6.86957C16.8709 3.62789 14.243 1 11.0014 1C7.75969 1 5.13179 3.62789 5.13179 6.86957C5.13179 10.1112 7.75969 12.7391 11.0014 12.7391Z\" stroke=\"#8a8a8a\" stroke-width=\"1.5\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M14.9144 19C18.1561 19 20.784 16.3721 20.784 13.1304C20.784 9.88876 18.1561 7.26087 14.9144 7.26087C11.6727 7.26087 9.04484 9.88876 9.04484 13.1304C9.04484 16.3721 11.6727 19 14.9144 19Z\" stroke=\"#8a8a8a\" stroke-width=\"1.5\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M7.08832 19C10.33 19 12.9579 16.3721 12.9579 13.1304C12.9579 9.88876 10.33 7.26087 7.08832 7.26087C3.84664 7.26087 1.21875 9.88876 1.21875 13.1304C1.21875 16.3721 3.84664 19 7.08832 19Z\" stroke=\"#8a8a8a\" stroke-width=\"1.5\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
2410
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: FilterComponent$1, decorators: [{
|
|
2411
|
+
type: Component,
|
|
2412
|
+
args: [{ selector: 'tui-image-editor-menus-buttons-filter', template: "<div\r\n (click)=\"imageChosen ? clicked.emit('filter') : null\"\r\n [title]=\"'tui-image-editor-angular-menus-buttons-filter' | translate\"\r\n [class]=\"\r\n 'tie-btn-filter tui-image-editor-item normal ' + (selected ? 'active' : '')\r\n \"\r\n>\r\n <!-- <svg class=\"svg_ic-menu\">\r\n <use xlink:href=\"#ic-filter\" class=\"normal use-default\"></use>\r\n <use xlink:href=\"#ic-filter\" class=\"active use-default\"></use>\r\n <use xlink:href=\"#ic-filter\" class=\"hover use-default\"></use>\r\n </svg> -->\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 22 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path d=\"M11.0014 12.7391C14.243 12.7391 16.8709 10.1112 16.8709 6.86957C16.8709 3.62789 14.243 1 11.0014 1C7.75969 1 5.13179 3.62789 5.13179 6.86957C5.13179 10.1112 7.75969 12.7391 11.0014 12.7391Z\" stroke=\"#8a8a8a\" stroke-width=\"1.5\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M14.9144 19C18.1561 19 20.784 16.3721 20.784 13.1304C20.784 9.88876 18.1561 7.26087 14.9144 7.26087C11.6727 7.26087 9.04484 9.88876 9.04484 13.1304C9.04484 16.3721 11.6727 19 14.9144 19Z\" stroke=\"#8a8a8a\" stroke-width=\"1.5\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n <path d=\"M7.08832 19C10.33 19 12.9579 16.3721 12.9579 13.1304C12.9579 9.88876 10.33 7.26087 7.08832 7.26087C3.84664 7.26087 1.21875 9.88876 1.21875 13.1304C1.21875 16.3721 3.84664 19 7.08832 19Z\" stroke=\"#8a8a8a\" stroke-width=\"1.5\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\r\n </svg>\r\n</div>\r\n" }]
|
|
2413
|
+
}], ctorParameters: function () { return []; }, propDecorators: { imageChosen: [{
|
|
2414
|
+
type: Input
|
|
2415
|
+
}], selected: [{
|
|
2416
|
+
type: Input
|
|
2417
|
+
}], clicked: [{
|
|
2418
|
+
type: Output
|
|
2419
|
+
}] } });
|
|
2420
|
+
|
|
2421
|
+
class FilterComponent {
|
|
2422
|
+
constructor(historyService) {
|
|
2423
|
+
this.historyService = historyService;
|
|
2424
|
+
this.filterBlurChecked = false;
|
|
2425
|
+
this.filterBlurValue = 0.1;
|
|
2426
|
+
this.filterGrayscaleChecked = false;
|
|
2427
|
+
this.filterSepiaChecked = false;
|
|
2428
|
+
this.filterEmbossChecked = false;
|
|
2429
|
+
this.filterInvertChecked = false;
|
|
2430
|
+
this.filterVintageChecked = false;
|
|
2431
|
+
this.filterSharpenChecked = false;
|
|
2432
|
+
this.filterWhiteRemovalChecked = false;
|
|
2433
|
+
this.filterWhiteRemovalDistance = 0.5;
|
|
2434
|
+
this.filterBrightnessChecked = false;
|
|
2435
|
+
this.filterBrightnessValue = 0;
|
|
2436
|
+
this.filterNoiseChecked = false;
|
|
2437
|
+
this.filterNoiseValue = 100;
|
|
2438
|
+
this.filterPixelateChecked = false;
|
|
2439
|
+
this.filterPixelateValue = 15;
|
|
2440
|
+
this.filterColorFilterChecked = false;
|
|
2441
|
+
this.filterColorFilterThreshold = 0;
|
|
2442
|
+
this.defaultFilterTintColors = defaultColors;
|
|
2443
|
+
this.filterTintChecked = false;
|
|
2444
|
+
this.filterTintColor = 'rgba(3, 189, 158, 0.7)';
|
|
2445
|
+
this.defaultFilterMultiplyColors = defaultColors;
|
|
2446
|
+
this.filterMultiplyChecked = false;
|
|
2447
|
+
this.filterMultiplyColor = 'rgb(81, 92, 230)';
|
|
2448
|
+
this.defaultFilterBlendColors = defaultColors;
|
|
2449
|
+
this.filterBlendChecked = false;
|
|
2450
|
+
this.filterBlendColor = 'rgba(255, 187, 59, 1)';
|
|
2451
|
+
}
|
|
2452
|
+
ngOnInit() {
|
|
2453
|
+
this.historyServiceSubscription = this.historyService.onChangeEmitter.subscribe((items) => items != null && items.length != 0
|
|
2454
|
+
? this.rebindFields(items)
|
|
2455
|
+
: this.rebindFields(this.historyService.items));
|
|
2456
|
+
}
|
|
2457
|
+
ngOnDestroy() {
|
|
2458
|
+
this.historyServiceSubscription?.unsubscribe();
|
|
2459
|
+
}
|
|
2460
|
+
rebindFields(items) {
|
|
2461
|
+
console.debug(items);
|
|
2462
|
+
if (this.imageEditor != null) {
|
|
2463
|
+
this.filterBlurChecked = this.imageEditor.hasFilter('blur');
|
|
2464
|
+
this.filterBrightnessChecked = this.imageEditor.hasFilter('brightness');
|
|
2465
|
+
if (this.filterBrightnessChecked) {
|
|
2466
|
+
this.filterBrightnessValue = this.getAppliedFilterArgument(items, filterType.BRIGHTNESS, 0);
|
|
2467
|
+
}
|
|
2468
|
+
this.filterColorFilterChecked =
|
|
2469
|
+
this.imageEditor.hasFilter('removeColor') &&
|
|
2470
|
+
this.hasAppliedFilter(items, filterType.REMOVE_COLOR);
|
|
2471
|
+
if (this.filterColorFilterChecked) {
|
|
2472
|
+
this.filterColorFilterThreshold = this.getAppliedFilterArgument(items, filterType.REMOVE_COLOR, 0);
|
|
2473
|
+
}
|
|
2474
|
+
this.filterEmbossChecked = this.imageEditor.hasFilter('emboss');
|
|
2475
|
+
this.filterGrayscaleChecked = this.imageEditor.hasFilter('grayscale');
|
|
2476
|
+
this.filterInvertChecked = this.imageEditor.hasFilter('invert');
|
|
2477
|
+
this.filterNoiseChecked = this.imageEditor.hasFilter('noise');
|
|
2478
|
+
if (this.filterNoiseChecked) {
|
|
2479
|
+
this.filterNoiseValue = this.getAppliedFilterArgument(items, filterType.NOISE, 0);
|
|
2480
|
+
}
|
|
2481
|
+
this.filterPixelateChecked = this.imageEditor.hasFilter('pixelate');
|
|
2482
|
+
if (this.filterPixelateChecked) {
|
|
2483
|
+
this.filterPixelateValue = this.getAppliedFilterArgument(items, filterType.PIXELATE, 0);
|
|
2484
|
+
}
|
|
2485
|
+
this.filterSepiaChecked = this.imageEditor.hasFilter('sepia');
|
|
2486
|
+
this.filterSharpenChecked = this.imageEditor.hasFilter('sharpen');
|
|
2487
|
+
this.filterVintageChecked = this.imageEditor.hasFilter('vintage');
|
|
2488
|
+
this.filterWhiteRemovalChecked =
|
|
2489
|
+
this.imageEditor.hasFilter('removeColor') &&
|
|
2490
|
+
this.hasAppliedFilter(items, filterType.REMOVE_WHITE);
|
|
2491
|
+
if (this.filterWhiteRemovalChecked) {
|
|
2492
|
+
this.filterWhiteRemovalDistance = this.getAppliedFilterArgument(items, filterType.REMOVE_WHITE, 0);
|
|
2493
|
+
}
|
|
2494
|
+
this.filterMultiplyChecked =
|
|
2495
|
+
this.imageEditor.hasFilter('blendColor') &&
|
|
2496
|
+
this.hasAppliedFilter(items, filterType.MULTIPLY);
|
|
2497
|
+
if (this.filterMultiplyChecked) {
|
|
2498
|
+
this.filterMultiplyColor = this.getAppliedFilterArgument(items, filterType.MULTIPLY, 0);
|
|
2499
|
+
}
|
|
2500
|
+
this.filterTintChecked =
|
|
2501
|
+
this.imageEditor.hasFilter('blendColor') &&
|
|
2502
|
+
this.hasAppliedFilter(items, filterType.TINT);
|
|
2503
|
+
if (this.filterTintChecked) {
|
|
2504
|
+
this.filterTintColor = this.getAppliedFilterArgument(items, filterType.TINT, 0);
|
|
2505
|
+
}
|
|
2506
|
+
this.filterBlendChecked =
|
|
2507
|
+
this.imageEditor.hasFilter('blendColor') &&
|
|
2508
|
+
this.hasAppliedFilter(items, filterType.BLEND);
|
|
2509
|
+
if (this.filterBlendChecked) {
|
|
2510
|
+
this.filterBlendColor = this.getAppliedFilterArgument(items, filterType.BLEND, 0);
|
|
2511
|
+
}
|
|
2512
|
+
}
|
|
2513
|
+
}
|
|
2514
|
+
getAppliedFilterArgument(items, type, index) {
|
|
2515
|
+
let validItems = items.filter((f) => f.filterType === type && f.type === HistoryItemType.ApplyFilter);
|
|
2516
|
+
return validItems[validItems.length - 1].args[index];
|
|
2517
|
+
}
|
|
2518
|
+
hasAppliedFilter(historyItems, type) {
|
|
2519
|
+
let hasFilter = false;
|
|
2520
|
+
for (let i = 0; i < historyItems.length; i++) {
|
|
2521
|
+
let item = historyItems[i];
|
|
2522
|
+
if (item.type === HistoryItemType.ApplyFilter &&
|
|
2523
|
+
item.filterType === type) {
|
|
2524
|
+
hasFilter = true;
|
|
2525
|
+
}
|
|
2526
|
+
else if (hasFilter == true &&
|
|
2527
|
+
[filterType.TINT, filterType.BLEND, filterType.MULTIPLY].some((t) => t === type) &&
|
|
2528
|
+
item.type === HistoryItemType.RemoveFilter &&
|
|
2529
|
+
item.filterType === filterType.BLEND_OR_TINT_OR_MULTIPLY) {
|
|
2530
|
+
hasFilter = false;
|
|
2531
|
+
}
|
|
2532
|
+
else if (hasFilter == true &&
|
|
2533
|
+
[filterType.REMOVE_COLOR, filterType.REMOVE_WHITE].some((t) => t === type) &&
|
|
2534
|
+
item.type === HistoryItemType.RemoveFilter &&
|
|
2535
|
+
item.filterType === filterType.REMOVE_COLOR_OR_WHITE) {
|
|
2536
|
+
hasFilter = false;
|
|
2537
|
+
}
|
|
2538
|
+
}
|
|
2539
|
+
return hasFilter;
|
|
2540
|
+
}
|
|
2541
|
+
filterWhiteRemovalCheckedChanged(newValue) {
|
|
2542
|
+
this.filterApply('white-removal');
|
|
2543
|
+
}
|
|
2544
|
+
filterWhiteRemovalDistanceChanged(newValue, isSilent) {
|
|
2545
|
+
this.filterApply('white-removal', isSilent);
|
|
2546
|
+
}
|
|
2547
|
+
filterBrightnessCheckedChanged(newValue) {
|
|
2548
|
+
this.filterApply('brightness');
|
|
2549
|
+
}
|
|
2550
|
+
filterBrightnessValueChanged(newValue, isSilent) {
|
|
2551
|
+
this.filterApply('brightness', isSilent);
|
|
2552
|
+
}
|
|
2553
|
+
filterNoiseCheckedChanged(newValue) {
|
|
2554
|
+
this.filterApply('noise');
|
|
2555
|
+
}
|
|
2556
|
+
filterNoiseValueChanged(newValue, isSilent) {
|
|
2557
|
+
this.filterApply('noise', isSilent);
|
|
2558
|
+
}
|
|
2559
|
+
filterPixelateCheckedChanged(newValue) {
|
|
2560
|
+
this.filterApply('pixelate');
|
|
2561
|
+
}
|
|
2562
|
+
filterPixelateValueChanged(newValue, isSilent) {
|
|
2563
|
+
this.filterApply('pixelate', isSilent);
|
|
2564
|
+
}
|
|
2565
|
+
filterColorFilterCheckedChanged(newValue) {
|
|
2566
|
+
this.filterApply('removeColor');
|
|
2567
|
+
}
|
|
2568
|
+
filterColorFilterThresholdChanged(newValue, isSilent) {
|
|
2569
|
+
this.filterApply('removeColor', isSilent);
|
|
2570
|
+
}
|
|
2571
|
+
filterTintColorChanged(newColor) {
|
|
2572
|
+
this.filterApply('tint');
|
|
2573
|
+
}
|
|
2574
|
+
filterTintCheckedChanged(newValue) {
|
|
2575
|
+
this.filterApply('tint');
|
|
2576
|
+
if (this.filterTintChecked) {
|
|
2577
|
+
this.filterMultiplyChecked = false;
|
|
2578
|
+
this.filterBlendChecked = false;
|
|
2579
|
+
}
|
|
2580
|
+
}
|
|
2581
|
+
filterMultiplyColorChanged(newColor) {
|
|
2582
|
+
this.filterApply('multiply');
|
|
2583
|
+
}
|
|
2584
|
+
filterMultiplyCheckedChanged(newValue) {
|
|
2585
|
+
this.filterApply('multiply');
|
|
2586
|
+
if (this.filterMultiplyChecked) {
|
|
2587
|
+
this.filterTintChecked = false;
|
|
2588
|
+
this.filterBlendChecked = false;
|
|
2589
|
+
}
|
|
2590
|
+
}
|
|
2591
|
+
filterBlendColorChanged(newColor) {
|
|
2592
|
+
this.filterApply('blend');
|
|
2593
|
+
}
|
|
2594
|
+
filterBlendCheckedChanged(newValue) {
|
|
2595
|
+
this.filterApply('blend');
|
|
2596
|
+
if (this.filterBlendChecked) {
|
|
2597
|
+
this.filterMultiplyChecked = false;
|
|
2598
|
+
this.filterTintChecked = false;
|
|
2599
|
+
}
|
|
2600
|
+
}
|
|
2601
|
+
filterBlurCheckedChanged(newValue) {
|
|
2602
|
+
this.filterApply('blur');
|
|
2603
|
+
}
|
|
2604
|
+
filterGrayscaleCheckedChanged(newValue) {
|
|
2605
|
+
this.filterApply('grayscale');
|
|
2606
|
+
}
|
|
2607
|
+
filterSepiaCheckedChanged(newValue) {
|
|
2608
|
+
this.filterApply('sepia');
|
|
2609
|
+
}
|
|
2610
|
+
filterEmbossCheckedChanged(newValue) {
|
|
2611
|
+
this.filterApply('emboss');
|
|
2612
|
+
}
|
|
2613
|
+
filterInvertCheckedChanged(newValue) {
|
|
2614
|
+
this.filterApply('invert');
|
|
2615
|
+
}
|
|
2616
|
+
filterVintageCheckedChanged(newValue) {
|
|
2617
|
+
this.filterApply('vintage');
|
|
2618
|
+
}
|
|
2619
|
+
filterSharpenCheckedChanged(newValue) {
|
|
2620
|
+
this.filterApply('sharpen');
|
|
2621
|
+
}
|
|
2622
|
+
filterApply(type, isSilent = false) {
|
|
2623
|
+
switch (type) {
|
|
2624
|
+
case 'white-removal':
|
|
2625
|
+
this.filterApplyConfirmed(this.filterWhiteRemovalChecked, 'removeColor', {
|
|
2626
|
+
color: '#FFFFFF',
|
|
2627
|
+
useAlpha: false,
|
|
2628
|
+
distance: this.filterWhiteRemovalDistance,
|
|
2629
|
+
}, isSilent);
|
|
2630
|
+
break;
|
|
2631
|
+
case 'brightness':
|
|
2632
|
+
this.filterApplyConfirmed(this.filterBrightnessChecked, 'brightness', {
|
|
2633
|
+
brightness: this.filterBrightnessValue,
|
|
2634
|
+
}, isSilent);
|
|
2635
|
+
break;
|
|
2636
|
+
case 'noise':
|
|
2637
|
+
this.filterApplyConfirmed(this.filterNoiseChecked, 'noise', {
|
|
2638
|
+
noise: this.filterNoiseValue,
|
|
2639
|
+
}, isSilent);
|
|
2640
|
+
break;
|
|
2641
|
+
case 'pixelate':
|
|
2642
|
+
this.filterApplyConfirmed(this.filterPixelateChecked, 'pixelate', {
|
|
2643
|
+
blocksize: this.filterPixelateValue,
|
|
2644
|
+
}, isSilent);
|
|
2645
|
+
break;
|
|
2646
|
+
case 'removeColor':
|
|
2647
|
+
this.filterApplyConfirmed(this.filterColorFilterChecked, 'removeColor', {
|
|
2648
|
+
color: '#FFFFFF',
|
|
2649
|
+
distance: this.filterColorFilterThreshold,
|
|
2650
|
+
}, isSilent);
|
|
2651
|
+
break;
|
|
2652
|
+
case 'blur':
|
|
2653
|
+
this.filterApplyConfirmed(this.filterBlurChecked, 'blur', {
|
|
2654
|
+
blur: this.filterBlurValue,
|
|
2655
|
+
}, isSilent);
|
|
2656
|
+
break;
|
|
2657
|
+
case 'blend':
|
|
2658
|
+
this.filterApplyConfirmed(this.filterBlendChecked, 'blendColor', {
|
|
2659
|
+
mode: 'add',
|
|
2660
|
+
color: this.filterBlendColor,
|
|
2661
|
+
}, isSilent);
|
|
2662
|
+
break;
|
|
2663
|
+
case 'multiply':
|
|
2664
|
+
this.filterApplyConfirmed(this.filterMultiplyChecked, 'blendColor', {
|
|
2665
|
+
mode: 'multiply',
|
|
2666
|
+
color: this.filterMultiplyColor,
|
|
2667
|
+
}, isSilent);
|
|
2668
|
+
break;
|
|
2669
|
+
case 'tint':
|
|
2670
|
+
let rgbTint = rgbaToObject(this.filterTintColor);
|
|
2671
|
+
this.filterApplyConfirmed(this.filterTintChecked, 'blendColor', {
|
|
2672
|
+
mode: 'tint',
|
|
2673
|
+
color: rgbTint.hexString,
|
|
2674
|
+
alpha: rgbTint.alpha,
|
|
2675
|
+
}, isSilent);
|
|
2676
|
+
break;
|
|
2677
|
+
case 'grayscale':
|
|
2678
|
+
this.filterApplyConfirmed(this.filterGrayscaleChecked, type, {}, isSilent);
|
|
2679
|
+
break;
|
|
2680
|
+
case 'sepia':
|
|
2681
|
+
this.filterApplyConfirmed(this.filterSepiaChecked, type, {}, isSilent);
|
|
2682
|
+
break;
|
|
2683
|
+
case 'emboss':
|
|
2684
|
+
this.filterApplyConfirmed(this.filterEmbossChecked, type, {}, isSilent);
|
|
2685
|
+
break;
|
|
2686
|
+
case 'invert':
|
|
2687
|
+
this.filterApplyConfirmed(this.filterInvertChecked, type, {}, isSilent);
|
|
2688
|
+
break;
|
|
2689
|
+
case 'vintage':
|
|
2690
|
+
this.filterApplyConfirmed(this.filterVintageChecked, type, {}, isSilent);
|
|
2691
|
+
break;
|
|
2692
|
+
case 'sharpen':
|
|
2693
|
+
this.filterApplyConfirmed(this.filterSharpenChecked, type, {}, isSilent);
|
|
2694
|
+
break;
|
|
2695
|
+
}
|
|
2696
|
+
}
|
|
2697
|
+
async filterApplyConfirmed(applying, type, options, isSilent = false) {
|
|
2698
|
+
let functionToExecute = async () => {
|
|
2699
|
+
if (applying) {
|
|
2700
|
+
if (type === 'blendColor' && this.imageEditor.hasFilter('blendColor')) {
|
|
2701
|
+
switch (options.mode) {
|
|
2702
|
+
case 'add':
|
|
2703
|
+
this.filterTintChecked = false;
|
|
2704
|
+
this.filterMultiplyChecked = false;
|
|
2705
|
+
break;
|
|
2706
|
+
case 'multiply':
|
|
2707
|
+
this.filterTintChecked = false;
|
|
2708
|
+
this.filterBlendChecked = false;
|
|
2709
|
+
break;
|
|
2710
|
+
case 'tint':
|
|
2711
|
+
this.filterBlendChecked = false;
|
|
2712
|
+
this.filterMultiplyChecked = false;
|
|
2713
|
+
break;
|
|
2714
|
+
}
|
|
2715
|
+
await removeFilter(this.imageEditor, type, isSilent);
|
|
2716
|
+
}
|
|
2717
|
+
else if (type === 'removeColor' &&
|
|
2718
|
+
this.imageEditor.hasFilter('removeColor')) {
|
|
2719
|
+
if (options.useAlpha != null) {
|
|
2720
|
+
this.filterColorFilterChecked = false;
|
|
2721
|
+
}
|
|
2722
|
+
else {
|
|
2723
|
+
this.filterWhiteRemovalChecked = false;
|
|
2724
|
+
}
|
|
2725
|
+
await removeFilter(this.imageEditor, type, isSilent);
|
|
2726
|
+
}
|
|
2727
|
+
await this.imageEditor.applyFilter(type, options, isSilent);
|
|
2728
|
+
}
|
|
2729
|
+
else if (this.imageEditor.hasFilter(type)) {
|
|
2730
|
+
await removeFilter(this.imageEditor, type, isSilent);
|
|
2731
|
+
if (type == 'blendColor') {
|
|
2732
|
+
this.filterTintChecked = false;
|
|
2733
|
+
this.filterMultiplyChecked = false;
|
|
2734
|
+
this.filterBlendChecked = false;
|
|
2735
|
+
}
|
|
2736
|
+
}
|
|
2737
|
+
};
|
|
2738
|
+
if (isSilent) {
|
|
2739
|
+
await functionToExecute();
|
|
2740
|
+
}
|
|
2741
|
+
else {
|
|
2742
|
+
setTimeout(async () => {
|
|
2743
|
+
await functionToExecute();
|
|
2744
|
+
});
|
|
2745
|
+
}
|
|
2746
|
+
}
|
|
2747
|
+
}
|
|
2748
|
+
FilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: FilterComponent, deps: [{ token: HistoryService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2749
|
+
FilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: FilterComponent, selector: "tui-image-editor-submenus-filter", inputs: { imageEditor: "imageEditor" }, ngImport: i0, template: "<div\r\n class=\"tui-image-editor-menu-filter tui-image-editor-d-flex tui-image-editor-justify-content-center\"\r\n>\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-overflowable-x tui-image-editor-py-3\"\r\n >\r\n <div class=\"tui-image-editor-submenu-align\">\r\n <div\r\n class=\"tui-image-editor-checkbox-wrap fixed-width tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-wrap tui-image-editor-justify-content-center\"\r\n >\r\n <div class=\"tui-image-editor-checkbox tui-image-editor-align-self-center\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-grayscale\"\r\n [(ngModel)]=\"filterGrayscaleChecked\"\r\n (ngModelChange)=\"filterGrayscaleCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-grayscale\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-checkbox tui-image-editor-align-self-center\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-invert\"\r\n [(ngModel)]=\"filterInvertChecked\"\r\n (ngModelChange)=\"filterInvertCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-invert\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-checkbox tui-image-editor-align-self-center\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-sepia\"\r\n [(ngModel)]=\"filterSepiaChecked\"\r\n (ngModelChange)=\"filterSepiaCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-sepia\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-checkbox tui-image-editor-align-self-center\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-vintage\"\r\n [(ngModel)]=\"filterVintageChecked\"\r\n (ngModelChange)=\"filterVintageCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-sepia2\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-checkbox tui-image-editor-align-self-center\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-blur\"\r\n [(ngModel)]=\"filterBlurChecked\"\r\n (ngModelChange)=\"filterBlurCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-blur\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-checkbox tui-image-editor-align-self-center\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-sharpen\"\r\n [(ngModel)]=\"filterSharpenChecked\"\r\n (ngModelChange)=\"filterSharpenCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-sharpen\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-checkbox tui-image-editor-align-self-center\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-emboss\"\r\n [(ngModel)]=\"filterEmbossChecked\"\r\n (ngModelChange)=\"filterEmbossCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-emboss\" | translate\r\n }}</span>\r\n </label>\r\n </div>\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=\"tui-image-editor-submenu-align\">\r\n <div\r\n class=\"tui-image-editor-checkbox-group tui-image-editor-disabled\"\r\n style=\"margin-bottom: 7px\"\r\n >\r\n <div class=\"tui-image-editor-checkbox-wrap\">\r\n <div class=\"tui-image-editor-checkbox\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-remove-white\"\r\n [(ngModel)]=\"filterWhiteRemovalChecked\"\r\n (ngModelChange)=\"filterWhiteRemovalCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-removeWhite\"\r\n | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-newline tui-image-editor-range-wrap short tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap tui-image-editor-align-items-center\"\r\n >\r\n <label>{{\r\n \"tui-image-editor-angular-submenus-filter-removeWhite-distance\"\r\n | translate\r\n }}</label>\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"filterWhiteRemovalDistance\"\r\n (ngModelChange)=\"filterWhiteRemovalDistanceChanged($event, true)\"\r\n (change)=\"filterWhiteRemovalDistanceChanged($event, false)\"\r\n min=\"0\"\r\n max=\"1\"\r\n step=\"0.001\"\r\n [disabled]=\"filterWhiteRemovalChecked == false\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-checkbox-group tui-image-editor-disabled\">\r\n <div class=\"tui-image-editor-checkbox\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-brightness\"\r\n [(ngModel)]=\"filterBrightnessChecked\"\r\n (ngModelChange)=\"filterBrightnessCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-brightness\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-range-wrap short tui-image-editor-d-flex tui-image-editor-flex-row align-items-center tui-image-editor-my-2\">\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"filterBrightnessValue\"\r\n (ngModelChange)=\"filterBrightnessValueChanged($event, true)\"\r\n (change)=\"filterBrightnessValueChanged($event, false)\"\r\n min=\"-1\"\r\n max=\"1\"\r\n step=\"0.03\"\r\n [disabled]=\"filterBrightnessChecked == false\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-checkbox-group tui-image-editor-disabled\">\r\n <div class=\"tui-image-editor-checkbox\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-noise\"\r\n [(ngModel)]=\"filterNoiseChecked\"\r\n (ngModelChange)=\"filterNoiseCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-noise\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-range-wrap short tui-image-editor-d-flex tui-image-editor-flex-row align-items-center tui-image-editor-my-2\">\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"filterNoiseValue\"\r\n (ngModelChange)=\"filterNoiseValueChanged($event, true)\"\r\n (change)=\"filterNoiseValueChanged($event, false)\"\r\n min=\"0\"\r\n max=\"1000\"\r\n step=\"10\"\r\n [disabled]=\"filterNoiseChecked == false\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-partition only-left-right\">\r\n <div></div>\r\n </div>\r\n <div class=\"tui-image-editor-submenu-align\">\r\n <div class=\"tui-image-editor-checkbox-group tui-image-editor-disabled\">\r\n <div class=\"tui-image-editor-checkbox\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-pixelate\"\r\n [(ngModel)]=\"filterPixelateChecked\"\r\n (ngModelChange)=\"filterPixelateCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-pixelate\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-range-wrap short tui-image-editor-d-flex tui-image-editor-flex-row align-items-center tui-image-editor-my-2\">\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"filterPixelateValue\"\r\n (ngModelChange)=\"filterPixelateValueChanged($event, true)\"\r\n (change)=\"filterPixelateValueChanged($event, false)\"\r\n min=\"2\"\r\n max=\"20\"\r\n step=\"1\"\r\n [disabled]=\"filterPixelateChecked == false\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-checkbox-group tui-image-editor-disabled\">\r\n <div class=\"tui-image-editor-newline tui-image-editor-checkbox-wrap\">\r\n <div class=\"tui-image-editor-checkbox\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-color-filter\"\r\n [(ngModel)]=\"filterColorFilterChecked\"\r\n (ngModelChange)=\"filterColorFilterCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-colorFilter\"\r\n | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-newline tui-image-editor-range-wrap short\">\r\n <label>{{\r\n \"tui-image-editor-angular-submenus-filter-colorFilter-threshold\"\r\n | translate\r\n }}</label>\r\n <div class=\"tie-colorfilter-threshold-range tui-image-editor-range tui-image-editor-d-flex tui-image-editor-flex-row align-items-center tui-image-editor-my-2\">\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"filterColorFilterThreshold\"\r\n (ngModelChange)=\"filterColorFilterThresholdChanged($event, true)\"\r\n (change)=\"filterColorFilterThresholdChanged($event, false)\"\r\n min=\"0\"\r\n max=\"1\"\r\n step=\"0.02\"\r\n [disabled]=\"filterColorFilterChecked == false\"\r\n />\r\n </div>\r\n </div>\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 class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center\"\r\n >\r\n <div class=\"filter-color-item\">\r\n <div\r\n [class]=\"\r\n 'tie-filter-tint-color tui-image-editor-button tui-image-editor-button-color-picker tui-image-editor-d-flex tui-image-editor-flex-column tui-image-editor-align-items-center ' +\r\n (filterTintChecked ? 'active' : '')\r\n \"\r\n [title]=\"'tui-image-editor-angular-submenus-filter-tint' | translate\"\r\n >\r\n <input\r\n readonly\r\n class=\"tie-filter-tint-color-picker tui-image-editor-mb-2\"\r\n [(colorPicker)]=\"filterTintColor\"\r\n [style.background]=\"filterTintColor\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPresetColors]=\"defaultFilterTintColors\"\r\n (colorPickerChange)=\"filterTintColorChanged($event)\"\r\n [cpUseRootViewContainer]=\"true\"\r\n />\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-tint\"\r\n [(ngModel)]=\"filterTintChecked\"\r\n (ngModelChange)=\"filterTintCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-tint\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"filter-color-item\">\r\n <div\r\n [class]=\"\r\n 'tie-filter-multiply-color tui-image-editor-button tui-image-editor-button-color-picker tui-image-editor-d-flex tui-image-editor-flex-column tui-image-editor-align-items-center ' +\r\n (filterMultiplyChecked ? 'active' : '')\r\n \"\r\n [title]=\"\r\n 'tui-image-editor-angular-submenus-filter-multiply' | translate\r\n \"\r\n >\r\n <input\r\n readonly\r\n class=\"tie-filter-multiply-color-picker tui-image-editor-mb-2\"\r\n [(colorPicker)]=\"filterMultiplyColor\"\r\n [style.background]=\"filterMultiplyColor\"\r\n [cpOutputFormat]=\"'hex'\"\r\n [cpPresetColors]=\"defaultFilterMultiplyColors\"\r\n (colorPickerChange)=\"filterMultiplyColorChanged($event)\"\r\n [cpUseRootViewContainer]=\"true\"\r\n />\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-multiply\"\r\n [(ngModel)]=\"filterMultiplyChecked\"\r\n (ngModelChange)=\"filterMultiplyCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-multiply\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"filter-color-item\">\r\n <div\r\n [class]=\"\r\n 'tie-filter-blend-color tui-image-editor-button tui-image-editor-button-color-picker tui-image-editor-d-flex tui-image-editor-flex-column tui-image-editor-align-items-center ' +\r\n (filterBlendChecked ? 'active' : '')\r\n \"\r\n [title]=\"'tui-image-editor-angular-submenus-filter-blend' | translate\"\r\n >\r\n <input\r\n readonly\r\n class=\"tie-filter-blend-color-picker tui-image-editor-mb-2\"\r\n [(colorPicker)]=\"filterBlendColor\"\r\n [style.background]=\"filterBlendColor\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPresetColors]=\"defaultFilterBlendColors\"\r\n (colorPickerChange)=\"filterBlendColorChanged($event)\"\r\n [cpUseRootViewContainer]=\"true\"\r\n />\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-blend\"\r\n [(ngModel)]=\"filterBlendChecked\"\r\n (ngModelChange)=\"filterBlendCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-blend\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.RangeValueAccessor, selector: "input[type=range][formControlName],input[type=range][formControl],input[type=range][ngModel]" }, { kind: "directive", type: i1$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2$1.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: i1.TranslatePipe, name: "translate" }] });
|
|
2750
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: FilterComponent, decorators: [{
|
|
2751
|
+
type: Component,
|
|
2752
|
+
args: [{ selector: 'tui-image-editor-submenus-filter', template: "<div\r\n class=\"tui-image-editor-menu-filter tui-image-editor-d-flex tui-image-editor-justify-content-center\"\r\n>\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-overflowable-x tui-image-editor-py-3\"\r\n >\r\n <div class=\"tui-image-editor-submenu-align\">\r\n <div\r\n class=\"tui-image-editor-checkbox-wrap fixed-width tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-wrap tui-image-editor-justify-content-center\"\r\n >\r\n <div class=\"tui-image-editor-checkbox tui-image-editor-align-self-center\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-grayscale\"\r\n [(ngModel)]=\"filterGrayscaleChecked\"\r\n (ngModelChange)=\"filterGrayscaleCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-grayscale\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-checkbox tui-image-editor-align-self-center\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-invert\"\r\n [(ngModel)]=\"filterInvertChecked\"\r\n (ngModelChange)=\"filterInvertCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-invert\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-checkbox tui-image-editor-align-self-center\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-sepia\"\r\n [(ngModel)]=\"filterSepiaChecked\"\r\n (ngModelChange)=\"filterSepiaCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-sepia\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-checkbox tui-image-editor-align-self-center\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-vintage\"\r\n [(ngModel)]=\"filterVintageChecked\"\r\n (ngModelChange)=\"filterVintageCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-sepia2\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-checkbox tui-image-editor-align-self-center\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-blur\"\r\n [(ngModel)]=\"filterBlurChecked\"\r\n (ngModelChange)=\"filterBlurCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-blur\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-checkbox tui-image-editor-align-self-center\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-sharpen\"\r\n [(ngModel)]=\"filterSharpenChecked\"\r\n (ngModelChange)=\"filterSharpenCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-sharpen\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-checkbox tui-image-editor-align-self-center\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-emboss\"\r\n [(ngModel)]=\"filterEmbossChecked\"\r\n (ngModelChange)=\"filterEmbossCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-emboss\" | translate\r\n }}</span>\r\n </label>\r\n </div>\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=\"tui-image-editor-submenu-align\">\r\n <div\r\n class=\"tui-image-editor-checkbox-group tui-image-editor-disabled\"\r\n style=\"margin-bottom: 7px\"\r\n >\r\n <div class=\"tui-image-editor-checkbox-wrap\">\r\n <div class=\"tui-image-editor-checkbox\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-remove-white\"\r\n [(ngModel)]=\"filterWhiteRemovalChecked\"\r\n (ngModelChange)=\"filterWhiteRemovalCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-removeWhite\"\r\n | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-newline tui-image-editor-range-wrap short tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap tui-image-editor-align-items-center\"\r\n >\r\n <label>{{\r\n \"tui-image-editor-angular-submenus-filter-removeWhite-distance\"\r\n | translate\r\n }}</label>\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"filterWhiteRemovalDistance\"\r\n (ngModelChange)=\"filterWhiteRemovalDistanceChanged($event, true)\"\r\n (change)=\"filterWhiteRemovalDistanceChanged($event, false)\"\r\n min=\"0\"\r\n max=\"1\"\r\n step=\"0.001\"\r\n [disabled]=\"filterWhiteRemovalChecked == false\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-checkbox-group tui-image-editor-disabled\">\r\n <div class=\"tui-image-editor-checkbox\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-brightness\"\r\n [(ngModel)]=\"filterBrightnessChecked\"\r\n (ngModelChange)=\"filterBrightnessCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-brightness\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-range-wrap short tui-image-editor-d-flex tui-image-editor-flex-row align-items-center tui-image-editor-my-2\">\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"filterBrightnessValue\"\r\n (ngModelChange)=\"filterBrightnessValueChanged($event, true)\"\r\n (change)=\"filterBrightnessValueChanged($event, false)\"\r\n min=\"-1\"\r\n max=\"1\"\r\n step=\"0.03\"\r\n [disabled]=\"filterBrightnessChecked == false\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-checkbox-group tui-image-editor-disabled\">\r\n <div class=\"tui-image-editor-checkbox\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-noise\"\r\n [(ngModel)]=\"filterNoiseChecked\"\r\n (ngModelChange)=\"filterNoiseCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-noise\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-range-wrap short tui-image-editor-d-flex tui-image-editor-flex-row align-items-center tui-image-editor-my-2\">\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"filterNoiseValue\"\r\n (ngModelChange)=\"filterNoiseValueChanged($event, true)\"\r\n (change)=\"filterNoiseValueChanged($event, false)\"\r\n min=\"0\"\r\n max=\"1000\"\r\n step=\"10\"\r\n [disabled]=\"filterNoiseChecked == false\"\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-partition only-left-right\">\r\n <div></div>\r\n </div>\r\n <div class=\"tui-image-editor-submenu-align\">\r\n <div class=\"tui-image-editor-checkbox-group tui-image-editor-disabled\">\r\n <div class=\"tui-image-editor-checkbox\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-pixelate\"\r\n [(ngModel)]=\"filterPixelateChecked\"\r\n (ngModelChange)=\"filterPixelateCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-pixelate\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n <div class=\"tui-image-editor-range-wrap short tui-image-editor-d-flex tui-image-editor-flex-row align-items-center tui-image-editor-my-2\">\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"filterPixelateValue\"\r\n (ngModelChange)=\"filterPixelateValueChanged($event, true)\"\r\n (change)=\"filterPixelateValueChanged($event, false)\"\r\n min=\"2\"\r\n max=\"20\"\r\n step=\"1\"\r\n [disabled]=\"filterPixelateChecked == false\"\r\n />\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-checkbox-group tui-image-editor-disabled\">\r\n <div class=\"tui-image-editor-newline tui-image-editor-checkbox-wrap\">\r\n <div class=\"tui-image-editor-checkbox\">\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-color-filter\"\r\n [(ngModel)]=\"filterColorFilterChecked\"\r\n (ngModelChange)=\"filterColorFilterCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-colorFilter\"\r\n | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-newline tui-image-editor-range-wrap short\">\r\n <label>{{\r\n \"tui-image-editor-angular-submenus-filter-colorFilter-threshold\"\r\n | translate\r\n }}</label>\r\n <div class=\"tie-colorfilter-threshold-range tui-image-editor-range tui-image-editor-d-flex tui-image-editor-flex-row align-items-center tui-image-editor-my-2\">\r\n <input\r\n type=\"range\"\r\n [(ngModel)]=\"filterColorFilterThreshold\"\r\n (ngModelChange)=\"filterColorFilterThresholdChanged($event, true)\"\r\n (change)=\"filterColorFilterThresholdChanged($event, false)\"\r\n min=\"0\"\r\n max=\"1\"\r\n step=\"0.02\"\r\n [disabled]=\"filterColorFilterChecked == false\"\r\n />\r\n </div>\r\n </div>\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 class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center\"\r\n >\r\n <div class=\"filter-color-item\">\r\n <div\r\n [class]=\"\r\n 'tie-filter-tint-color tui-image-editor-button tui-image-editor-button-color-picker tui-image-editor-d-flex tui-image-editor-flex-column tui-image-editor-align-items-center ' +\r\n (filterTintChecked ? 'active' : '')\r\n \"\r\n [title]=\"'tui-image-editor-angular-submenus-filter-tint' | translate\"\r\n >\r\n <input\r\n readonly\r\n class=\"tie-filter-tint-color-picker tui-image-editor-mb-2\"\r\n [(colorPicker)]=\"filterTintColor\"\r\n [style.background]=\"filterTintColor\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPresetColors]=\"defaultFilterTintColors\"\r\n (colorPickerChange)=\"filterTintColorChanged($event)\"\r\n [cpUseRootViewContainer]=\"true\"\r\n />\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-tint\"\r\n [(ngModel)]=\"filterTintChecked\"\r\n (ngModelChange)=\"filterTintCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-tint\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"filter-color-item\">\r\n <div\r\n [class]=\"\r\n 'tie-filter-multiply-color tui-image-editor-button tui-image-editor-button-color-picker tui-image-editor-d-flex tui-image-editor-flex-column tui-image-editor-align-items-center ' +\r\n (filterMultiplyChecked ? 'active' : '')\r\n \"\r\n [title]=\"\r\n 'tui-image-editor-angular-submenus-filter-multiply' | translate\r\n \"\r\n >\r\n <input\r\n readonly\r\n class=\"tie-filter-multiply-color-picker tui-image-editor-mb-2\"\r\n [(colorPicker)]=\"filterMultiplyColor\"\r\n [style.background]=\"filterMultiplyColor\"\r\n [cpOutputFormat]=\"'hex'\"\r\n [cpPresetColors]=\"defaultFilterMultiplyColors\"\r\n (colorPickerChange)=\"filterMultiplyColorChanged($event)\"\r\n [cpUseRootViewContainer]=\"true\"\r\n />\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-multiply\"\r\n [(ngModel)]=\"filterMultiplyChecked\"\r\n (ngModelChange)=\"filterMultiplyCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-multiply\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n </div>\r\n <div class=\"filter-color-item\">\r\n <div\r\n [class]=\"\r\n 'tie-filter-blend-color tui-image-editor-button tui-image-editor-button-color-picker tui-image-editor-d-flex tui-image-editor-flex-column tui-image-editor-align-items-center ' +\r\n (filterBlendChecked ? 'active' : '')\r\n \"\r\n [title]=\"'tui-image-editor-angular-submenus-filter-blend' | translate\"\r\n >\r\n <input\r\n readonly\r\n class=\"tie-filter-blend-color-picker tui-image-editor-mb-2\"\r\n [(colorPicker)]=\"filterBlendColor\"\r\n [style.background]=\"filterBlendColor\"\r\n [cpOutputFormat]=\"'rgba'\"\r\n [cpPresetColors]=\"defaultFilterBlendColors\"\r\n (colorPickerChange)=\"filterBlendColorChanged($event)\"\r\n [cpUseRootViewContainer]=\"true\"\r\n />\r\n <label\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-align-items-center tui-image-editor-flex-nowrap\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n class=\"tie-blend\"\r\n [(ngModel)]=\"filterBlendChecked\"\r\n (ngModelChange)=\"filterBlendCheckedChanged($event)\"\r\n />\r\n <span>{{\r\n \"tui-image-editor-angular-submenus-filter-blend\" | translate\r\n }}</span>\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
2753
|
+
}], ctorParameters: function () { return [{ type: HistoryService }]; }, propDecorators: { imageEditor: [{
|
|
2754
|
+
type: Input
|
|
2755
|
+
}] } });
|
|
2756
|
+
|
|
2757
|
+
class TuiImageEditorComponent {
|
|
2758
|
+
constructor(historyService) {
|
|
2759
|
+
this.historyService = historyService;
|
|
2760
|
+
this.onInitialization = new EventEmitter();
|
|
2761
|
+
this.options = {
|
|
2762
|
+
usageStatistics: false,
|
|
2763
|
+
selectionStyle: {
|
|
2764
|
+
cornerStyle: 'circle',
|
|
2765
|
+
cornerSize: 32,
|
|
2766
|
+
cornerColor: '#fff',
|
|
2767
|
+
cornerStrokeColor: '#fff',
|
|
2768
|
+
transparentCorners: false,
|
|
2769
|
+
lineWidth: 4,
|
|
2770
|
+
borderColor: '#fff',
|
|
2771
|
+
rotatingPointOffset: 500,
|
|
2772
|
+
},
|
|
2773
|
+
applyCropSelectionStyle: true,
|
|
2774
|
+
applyGroupSelectionStyle: true,
|
|
2775
|
+
};
|
|
2776
|
+
this.template = 'default';
|
|
2777
|
+
this.imageLoaded = false;
|
|
2778
|
+
this.initializeImgUrl = null;
|
|
2779
|
+
this.imageChosen = false;
|
|
2780
|
+
this.showSubmenu = false;
|
|
2781
|
+
this.isMenuExpanded = false;
|
|
2782
|
+
this.rotation = 0;
|
|
2783
|
+
this.onObjectActivatedEventListener = this.onObjectActivated.bind(this);
|
|
2784
|
+
this.onExecuteCommandEventListener = this.onExecuteCommand.bind(this);
|
|
2785
|
+
this.onAfterUndoEventListener = this.onAfterUndo.bind(this);
|
|
2786
|
+
this.onAfterRedoEventListener = this.onAfterRedo.bind(this);
|
|
2787
|
+
}
|
|
2788
|
+
ngOnInit() {
|
|
2789
|
+
this.historyServiceSubscription =
|
|
2790
|
+
this.historyService.onChangeEmitter.subscribe((items) => this.onActiveHistoryElementChanged(items));
|
|
2791
|
+
}
|
|
2792
|
+
ngOnChanges(changes) {
|
|
2793
|
+
if ((changes['options'] && changes['options'].firstChange == false) ||
|
|
2794
|
+
(changes['initialImage'] && changes['initialImage'].firstChange == false)) {
|
|
2795
|
+
this.destroyImageEditor();
|
|
2796
|
+
this.initializeImageEditor();
|
|
2797
|
+
}
|
|
2798
|
+
}
|
|
2799
|
+
initializeImageEditor() {
|
|
2800
|
+
this.historyService.clear();
|
|
2801
|
+
this.imageEditor = new ImageEditor(this.imageContainer.nativeElement, this.options);
|
|
2802
|
+
this.onInitialization.emit({
|
|
2803
|
+
imageEditor: this.imageEditor
|
|
2804
|
+
});
|
|
2805
|
+
console.debug(this.imageEditor);
|
|
2806
|
+
this.imageEditor.registerIcons(defaultIconPath);
|
|
2807
|
+
this.imageEditor.on(eventNames.OBJECT_ACTIVATED, this.onObjectActivatedEventListener);
|
|
2808
|
+
this.imageEditor._invoker.on(eventNames.EXECUTE_COMMAND, this.onExecuteCommandEventListener);
|
|
2809
|
+
this.imageEditor._invoker.on(eventNames.AFTER_UNDO, this.onAfterUndoEventListener);
|
|
2810
|
+
this.imageEditor._invoker.on(eventNames.AFTER_REDO, this.onAfterRedoEventListener);
|
|
2811
|
+
if (this.initialImage != null) {
|
|
2812
|
+
this.loadImage(this.initialImage);
|
|
2813
|
+
}
|
|
2814
|
+
}
|
|
2815
|
+
destroyImageEditor() {
|
|
2816
|
+
console.log('DISPOSING IMAGE EDITOR...');
|
|
2817
|
+
if (this.imageEditor != null) {
|
|
2818
|
+
this.imageEditor.off(eventNames.OBJECT_ACTIVATED, this.onObjectActivatedEventListener);
|
|
2819
|
+
this.imageEditor._invoker.off(eventNames.EXECUTE_COMMAND, this.onExecuteCommandEventListener);
|
|
2820
|
+
this.imageEditor._invoker.off(eventNames.AFTER_UNDO, this.onAfterUndoEventListener);
|
|
2821
|
+
this.imageEditor._invoker.off(eventNames.AFTER_REDO, this.onAfterRedoEventListener);
|
|
2822
|
+
const canvas = this.imageEditor._graphics._canvas;
|
|
2823
|
+
this.imageEditor.destroy();
|
|
2824
|
+
canvas.dispose();
|
|
2825
|
+
}
|
|
2826
|
+
}
|
|
2827
|
+
ngAfterViewInit() {
|
|
2828
|
+
var that = this;
|
|
2829
|
+
this.loadBtn.nativeElement.style.zIndex = '1';
|
|
2830
|
+
this.imageContainer.nativeElement.style.zIndex = '-1';
|
|
2831
|
+
setTimeout(() => {
|
|
2832
|
+
// this.imageEditor.on(eventNames.SELECTION_CLEARED, function () {
|
|
2833
|
+
// that.activeObjectId = null;
|
|
2834
|
+
// if (that.submenu === 'text') {
|
|
2835
|
+
// that.imageEditor.changeCursor('text');
|
|
2836
|
+
// } else if (that.submenu !== 'draw' && that.submenu !== 'crop') {
|
|
2837
|
+
// that.imageEditor.stopDrawingMode();
|
|
2838
|
+
// }
|
|
2839
|
+
// });
|
|
2840
|
+
that.initializeImageEditor();
|
|
2841
|
+
});
|
|
2842
|
+
}
|
|
2843
|
+
ngOnDestroy() {
|
|
2844
|
+
if (this.initializeImgUrl != null) {
|
|
2845
|
+
URL.revokeObjectURL(this.initializeImgUrl);
|
|
2846
|
+
}
|
|
2847
|
+
this.destroyImageEditor();
|
|
2848
|
+
this.historyServiceSubscription?.unsubscribe();
|
|
2849
|
+
}
|
|
2850
|
+
onObjectActivated(props) {
|
|
2851
|
+
console.debug(props);
|
|
2852
|
+
this.activeObjectId = props?.id;
|
|
2853
|
+
if (props?.id != null) {
|
|
2854
|
+
if ([
|
|
2855
|
+
objectTypes.shapeRect,
|
|
2856
|
+
objectTypes.shapeCircle,
|
|
2857
|
+
objectTypes.shapeTriangle,
|
|
2858
|
+
].indexOf(props.type) > -1) {
|
|
2859
|
+
this.showMenu('shape', false);
|
|
2860
|
+
}
|
|
2861
|
+
else if (props.type === objectTypes.line ||
|
|
2862
|
+
props.type === objectTypes.straightLine) {
|
|
2863
|
+
this.showMenu('draw', false);
|
|
2864
|
+
}
|
|
2865
|
+
else if (props.type === objectTypes.itext ||
|
|
2866
|
+
props.type === objectTypes.text) {
|
|
2867
|
+
this.showMenu('text', false);
|
|
2868
|
+
}
|
|
2869
|
+
else if (props.type === objectTypes.icon) {
|
|
2870
|
+
this.showMenu('icon', false);
|
|
2871
|
+
}
|
|
2872
|
+
else if (props.type === objectTypes.image) {
|
|
2873
|
+
this.showMenu('mask', false);
|
|
2874
|
+
}
|
|
2875
|
+
}
|
|
2876
|
+
}
|
|
2877
|
+
onExecuteCommand(command) {
|
|
2878
|
+
if (!isSilentCommand(command)) {
|
|
2879
|
+
this.historyService.add(command, this.imageEditor);
|
|
2880
|
+
}
|
|
2881
|
+
}
|
|
2882
|
+
onAfterUndo() {
|
|
2883
|
+
this.historyService.prev();
|
|
2884
|
+
}
|
|
2885
|
+
onAfterRedo() {
|
|
2886
|
+
this.historyService.next();
|
|
2887
|
+
}
|
|
2888
|
+
onLoad(event) {
|
|
2889
|
+
this.loadBtn.nativeElement.style.zIndex = '-1';
|
|
2890
|
+
this.imageContainer.nativeElement.style.zIndex = '1';
|
|
2891
|
+
this.loadImage(event);
|
|
2892
|
+
}
|
|
2893
|
+
loadImage(file) {
|
|
2894
|
+
const type = file?.name?.split('.').pop();
|
|
2895
|
+
if (type?.toLowerCase() === 'heic') {
|
|
2896
|
+
heic2any({ blob: file }).then(data => {
|
|
2897
|
+
file = data;
|
|
2898
|
+
this.uploadIMage(file);
|
|
2899
|
+
}).catch(err => {
|
|
2900
|
+
console.log("Err", err);
|
|
2901
|
+
});
|
|
2902
|
+
}
|
|
2903
|
+
else {
|
|
2904
|
+
this.uploadIMage(file);
|
|
2905
|
+
}
|
|
2906
|
+
}
|
|
2907
|
+
uploadIMage(file) {
|
|
2908
|
+
if (file != null) {
|
|
2909
|
+
let imageUrl = null;
|
|
2910
|
+
if (typeof file === 'string') {
|
|
2911
|
+
imageUrl = file;
|
|
2912
|
+
}
|
|
2913
|
+
else {
|
|
2914
|
+
if (!isFileApiSupported()) {
|
|
2915
|
+
alert('This browser does not support file-api');
|
|
2916
|
+
return;
|
|
2917
|
+
}
|
|
2918
|
+
imageUrl = URL.createObjectURL(file);
|
|
2919
|
+
}
|
|
2920
|
+
if (this.initializeImgUrl != null && imageUrl != this.initializeImgUrl) {
|
|
2921
|
+
URL.revokeObjectURL(this.initializeImgUrl);
|
|
2922
|
+
}
|
|
2923
|
+
this.initializeImgUrl = imageUrl;
|
|
2924
|
+
this.imageEditor
|
|
2925
|
+
.loadImageFromURL(this.initializeImgUrl, 'RandomFileName')
|
|
2926
|
+
.then((sizeValue) => {
|
|
2927
|
+
this.imageChosen = true;
|
|
2928
|
+
this.showMenu('draw', false);
|
|
2929
|
+
this.exitCropOnAction();
|
|
2930
|
+
this.imageEditor.clearUndoStack();
|
|
2931
|
+
this.imageEditor.clearRedoStack();
|
|
2932
|
+
this.historyService.clear();
|
|
2933
|
+
this.imageEditor._invoker.fire(eventNames.EXECUTE_COMMAND, historyNames.LOAD_IMAGE);
|
|
2934
|
+
})['catch']((message) => Promise.reject(message));
|
|
2935
|
+
}
|
|
2936
|
+
}
|
|
2937
|
+
resetImage() {
|
|
2938
|
+
if (this.initializeImgUrl != null) {
|
|
2939
|
+
this.loadImage(this.initializeImgUrl);
|
|
2940
|
+
}
|
|
2941
|
+
}
|
|
2942
|
+
getImage(options = {
|
|
2943
|
+
format: 'png',
|
|
2944
|
+
quality: 1,
|
|
2945
|
+
multiplier: 1,
|
|
2946
|
+
}) {
|
|
2947
|
+
if (this.imageChosen) {
|
|
2948
|
+
return this.imageEditor.toDataURL(options);
|
|
2949
|
+
}
|
|
2950
|
+
return null;
|
|
2951
|
+
}
|
|
2952
|
+
exitCropOnAction() {
|
|
2953
|
+
this.hideMenu('crop');
|
|
2954
|
+
}
|
|
2955
|
+
hideMenu(menuName) {
|
|
2956
|
+
if (this.submenu == menuName) {
|
|
2957
|
+
this.submenu = null;
|
|
2958
|
+
this.showSubmenu = false;
|
|
2959
|
+
clearSelection(this.imageEditor);
|
|
2960
|
+
this.imageEditor.stopDrawingMode();
|
|
2961
|
+
}
|
|
2962
|
+
}
|
|
2963
|
+
onActiveHistoryElementChanged(items) {
|
|
2964
|
+
let rotationEvents = items.filter((i) => i.type === HistoryItemType.Rotate);
|
|
2965
|
+
if (rotationEvents.length > 0) {
|
|
2966
|
+
let lastRotationEvent = rotationEvents[rotationEvents.length - 1];
|
|
2967
|
+
this.rotation = lastRotationEvent.args[0];
|
|
2968
|
+
}
|
|
2969
|
+
else {
|
|
2970
|
+
this.rotation = 0;
|
|
2971
|
+
}
|
|
2972
|
+
}
|
|
2973
|
+
showMenu(menuName, discardSelection = true) {
|
|
2974
|
+
this.submenu = menuName;
|
|
2975
|
+
this.showSubmenu = true;
|
|
2976
|
+
if (discardSelection) {
|
|
2977
|
+
clearSelection(this.imageEditor);
|
|
2978
|
+
}
|
|
2979
|
+
this.imageEditor.stopDrawingMode();
|
|
2980
|
+
//this.stopShape();
|
|
2981
|
+
// this._changeMenu(menuName, toggle, discardSelection);
|
|
2982
|
+
// if (this.submenu == 'draw') {
|
|
2983
|
+
// this.setDrawMode('free', {
|
|
2984
|
+
// width: this.drawStrokeWidthValue,
|
|
2985
|
+
// color: this.drawStrokeColor,
|
|
2986
|
+
// });
|
|
2987
|
+
// }
|
|
2988
|
+
}
|
|
2989
|
+
}
|
|
2990
|
+
TuiImageEditorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TuiImageEditorComponent, deps: [{ token: HistoryService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2991
|
+
TuiImageEditorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: TuiImageEditorComponent, selector: "tui-image-editor", inputs: { options: "options", initialImage: "initialImage", template: "template" }, outputs: { onInitialization: "onInitialization" }, providers: [HistoryService], viewQueries: [{ propertyName: "imageContainer", first: true, predicate: ["imageContainer"], descendants: true }, { propertyName: "loadBtn", first: true, predicate: ["loadBtn"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf=\"template==='default';else newImageEditor\"\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-column tui-image-editor-justify-content-center tui-image-editor-h-100 tui-image-editor-w-100 tui-image-editor-container\">\r\n <div\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-wrap tui-image-editor-justify-content-center tui-image-editor-align-items-center\">\r\n <div\r\n class=\"tui-image-editor-help-menu tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-wrap tui-image-editor-align-items-center tui-image-editor-justify-content-center tui-image-editor-p-1\">\r\n <div></div>\r\n <!-- <div #loadBtn style=\"position: absolute;\"\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-load (loadImage)=\"loadImage($event)\"></tui-image-editor-menus-buttons-load>\r\n <tui-image-editor-menus-buttons-download [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-download>\r\n </div> -->\r\n <div\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-zoom-in [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-zoom-in>\r\n <tui-image-editor-menus-buttons-zoom-out [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-zoom-out>\r\n <tui-image-editor-menus-buttons-drag [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-drag>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-history [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-history>\r\n <tui-image-editor-menus-buttons-undo [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-undo>\r\n <tui-image-editor-menus-buttons-redo [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-redo>\r\n <tui-image-editor-menus-buttons-reset [imageChosen]=\"imageChosen\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"\r\n (resetImage)=\"resetImage()\"></tui-image-editor-menus-buttons-reset>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-delete [imageChosen]=\"imageChosen\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-delete>\r\n <tui-image-editor-menus-buttons-delete-all [imageChosen]=\"imageChosen\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-delete-all>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div #imageContainer\r\n class=\"tui-image-editor-flex-grow-1 tui-image-editor-d-flex tui-image-editor-align-items-center tui-image-editor-justify-content-center\"\r\n [style.height]=\"'0'\"></div> -->\r\n <div style=\"position: relative;height: 100%; display: flex; justify-content: center; align-items: center;\">\r\n <div #loadBtn style=\"position: absolute;\"\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-load (loadImage)=\"onLoad($event)\"></tui-image-editor-menus-buttons-load>\r\n </div>\r\n <div style=\"position: absolute;height: 100%; width: 100%;\" #imageContainer\r\n class=\"tui-image-editor-flex-grow-1 tui-image-editor-d-flex tui-image-editor-align-items-center tui-image-editor-justify-content-center\">\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-submenu\" *ngIf=\"submenu != null\">\r\n <tui-image-editor-submenus-crop *ngIf=\"submenu == 'crop'\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-submenus-crop>\r\n <tui-image-editor-submenus-flip *ngIf=\"submenu == 'flip'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-flip>\r\n <tui-image-editor-submenus-rotate *ngIf=\"submenu == 'rotate'\" [imageEditor]=\"imageEditor\"\r\n [(rotation)]=\"rotation\"></tui-image-editor-submenus-rotate>\r\n <tui-image-editor-submenus-draw *ngIf=\"submenu == 'draw'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-draw>\r\n <tui-image-editor-submenus-shape *ngIf=\"submenu == 'shape'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-shape>\r\n <tui-image-editor-submenus-icon *ngIf=\"submenu == 'icon'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-icon>\r\n <tui-image-editor-submenus-text *ngIf=\"submenu == 'text'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-text>\r\n <tui-image-editor-submenus-mask *ngIf=\"submenu == 'mask'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-mask>\r\n <tui-image-editor-submenus-filter *ngIf=\"submenu == 'filter'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-filter>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-controls tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-justify-content-center\">\r\n <div\r\n class=\"tui-image-editor-menu tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap tui-image-editor-align-items-center\">\r\n <tui-image-editor-menus-buttons-crop [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'crop'\"\r\n (clicked)=\"submenu == 'crop' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-crop>\r\n <tui-image-editor-menus-buttons-flip [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'flip'\"\r\n (clicked)=\"submenu == 'flip' ? hideMenu($event) : showMenu($event)\">\r\n </tui-image-editor-menus-buttons-flip>\r\n <tui-image-editor-menus-buttons-rotate [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'rotate'\"\r\n (clicked)=\"submenu == 'rotate' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-rotate>\r\n <tui-image-editor-menus-buttons-draw [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'draw'\"\r\n (clicked)=\"submenu == 'draw' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-draw>\r\n <tui-image-editor-menus-buttons-shape [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'shape'\"\r\n (clicked)=\"submenu == 'shape' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-shape>\r\n <tui-image-editor-menus-buttons-icon [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'icon'\"\r\n (clicked)=\"submenu == 'icon' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-icon>\r\n <tui-image-editor-menus-buttons-text [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'text'\"\r\n (clicked)=\"submenu == 'text' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-text>\r\n <tui-image-editor-menus-buttons-mask [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'mask'\"\r\n (clicked)=\"submenu == 'mask' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-mask>\r\n <tui-image-editor-menus-buttons-filter [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'filter'\"\r\n (clicked)=\"submenu == 'filter' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-filter>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #newImageEditor>\r\n <div class=\"new-template tui-image-editor-container\">\r\n <div class=\"image-load-container\">\r\n <div style=\"position: relative;height: 100%; display: flex; justify-content: center; align-items: center;\">\r\n <div #loadBtn style=\"position: absolute;\"\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-load (loadImage)=\"onLoad($event)\"></tui-image-editor-menus-buttons-load>\r\n </div>\r\n <div style=\"position: absolute;height: 100%; width: 100%;\" #imageContainer\r\n class=\"tui-image-editor-flex-grow-1 tui-image-editor-d-flex tui-image-editor-align-items-center tui-image-editor-justify-content-center\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"tools-container\" style=\"position: relative;\" [style.width.px]=\"isMenuExpanded ? 160 : 80\">\r\n <div class=\"primary-tools\">\r\n <div class=\"selected-option\" style=\"cursor: pointer;\" (click)=\"showSubmenu=!showSubmenu\">\r\n <svg *ngIf=\"!showSubmenu\" width=\"18\" height=\"16\" viewBox=\"0 0 18 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path opacity=\"0.7\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M9.3809 2.67601H17.0011C17.5527 2.67601 18 3.12327 18 3.67491C18 4.22654 17.5527 4.6738 17.0011 4.6738H9.38083C8.94507 6.20757 7.53168 7.33419 5.86014 7.33419C4.18856 7.33419 2.77524 6.20757 2.33944 4.6738H0.998897C0.447224 4.6738 0 4.22651 0 3.67487C0 3.12323 0.447224 2.67597 0.998897 2.67601H2.33951C2.77527 1.14224 4.18863 0.015625 5.86021 0.015625C7.53175 0.015625 8.9451 1.14224 9.3809 2.67601ZM4.19868 3.67484C4.19868 4.59097 4.944 5.33632 5.86017 5.33632C6.77635 5.33632 7.52166 4.59097 7.52166 3.67484C7.52166 2.7587 6.77635 2.01335 5.86017 2.01335C4.944 2.01335 4.19868 2.7587 4.19868 3.67484ZM15.6581 11.3275H17.0011C17.5528 11.3275 18 11.7748 18 12.3264C18 12.8781 17.5528 13.3253 17.0011 13.3253H15.6581C15.2224 14.8591 13.809 15.9857 12.1374 15.9857C10.4659 15.9857 9.05254 14.8591 8.61674 13.3253H0.998897C0.447224 13.3253 0 12.8781 0 12.3264C0 11.7748 0.447224 11.3275 0.998897 11.3275H8.61674C9.05251 9.79378 10.4659 8.66716 12.1374 8.66716C13.809 8.66716 15.2223 9.79378 15.6581 11.3275ZM10.476 12.3264C10.476 13.2426 11.2213 13.9879 12.1374 13.9879C13.0536 13.9879 13.799 13.2426 13.7989 12.3264C13.7989 11.4103 13.0536 10.665 12.1374 10.665C11.2213 10.665 10.476 11.4103 10.476 12.3264Z\"\r\n fill=\"#25282B\" />\r\n </svg>\r\n <svg *ngIf=\"showSubmenu\" width=\"42\" height=\"40\" viewBox=\"0 0 42 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"42\" height=\"40\" rx=\"8\" fill=\"#25282B\" fill-opacity=\"0.1\" />\r\n <g opacity=\"0.7\">\r\n <path\r\n d=\"M16.1375 25.9935C15.8433 26.0108 15.554 25.9119 15.3305 25.7176C14.8898 25.2691 14.8898 24.5447 15.3305 24.0962L24.9801 14.3337C25.4384 13.8998 26.1576 13.9239 26.5865 14.3876C26.9744 14.807 26.997 15.4515 26.6395 15.8976L16.9331 25.7176C16.7125 25.9091 16.4278 26.0078 16.1375 25.9935Z\"\r\n fill=\"#25282B\" />\r\n <path\r\n d=\"M25.7732 25.9938C25.475 25.9925 25.1893 25.8728 24.9776 25.6603L15.328 15.8978C14.9197 15.4155 14.9752 14.6896 15.452 14.2765C15.8775 13.9078 16.5051 13.9078 16.9306 14.2765L26.637 24.039C27.0952 24.473 27.1189 25.2007 26.6899 25.6643C26.6728 25.6827 26.6552 25.7006 26.637 25.7178C26.3993 25.9269 26.0865 26.0268 25.7732 25.9938Z\"\r\n fill=\"#25282B\" />\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"hr\">\r\n\r\n </div>\r\n <div class=\"menu\">\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-draw #penMenu [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'draw'\"\r\n (clicked)=\"submenu == 'draw' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-draw>\r\n </div>\r\n <!-- <div class=\"eraser\">\r\n \r\n </div> -->\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-text [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'text'\"\r\n (clicked)=\"submenu == 'text' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-text>\r\n </div>\r\n <div class=\"tool-icon-group\">\r\n <tui-image-editor-menus-buttons-zoom-in [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-zoom-in>\r\n <tui-image-editor-menus-buttons-zoom-out [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-zoom-out>\r\n <tui-image-editor-menus-buttons-drag [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-drag>\r\n </div>\r\n <div class=\"tool-icon-group\">\r\n <tui-image-editor-menus-buttons-history\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-history>\r\n <tui-image-editor-menus-buttons-undo [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-undo>\r\n <tui-image-editor-menus-buttons-redo [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-redo>\r\n <tui-image-editor-menus-buttons-reset [imageChosen]=\"imageChosen\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"\r\n (resetImage)=\"resetImage()\"></tui-image-editor-menus-buttons-reset>\r\n </div>\r\n\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-crop [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'crop'\"\r\n (clicked)=\"submenu == 'crop' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-crop>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-flip [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'flip'\"\r\n (clicked)=\"submenu == 'flip' ? hideMenu($event) : showMenu($event)\">\r\n </tui-image-editor-menus-buttons-flip>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-rotate [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'rotate'\"\r\n (clicked)=\"submenu == 'rotate' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-rotate>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-shape [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'shape'\"\r\n (clicked)=\"submenu == 'shape' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-shape>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-icon [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'icon'\"\r\n (clicked)=\"submenu == 'icon' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-icon>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-mask [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'mask'\"\r\n (clicked)=\"submenu == 'mask' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-mask>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-filter [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'filter'\"\r\n (clicked)=\"submenu == 'filter' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-filter>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-download [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-download>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n <div class=\"sub-menu\">\r\n <div class=\"tui-image-editor-submenu new\" [style.right.px]=\"isMenuExpanded ? 160 : 80\"\r\n *ngIf=\"submenu != null && showSubmenu\">\r\n <tui-image-editor-submenus-crop *ngIf=\"submenu == 'crop'\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-submenus-crop>\r\n <tui-image-editor-submenus-flip *ngIf=\"submenu == 'flip'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-flip>\r\n <tui-image-editor-submenus-rotate *ngIf=\"submenu == 'rotate'\" [imageEditor]=\"imageEditor\"\r\n [(rotation)]=\"rotation\"></tui-image-editor-submenus-rotate>\r\n <tui-image-editor-submenus-draw *ngIf=\"submenu == 'draw'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-draw>\r\n <tui-image-editor-submenus-shape *ngIf=\"submenu == 'shape'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-shape>\r\n <tui-image-editor-submenus-icon *ngIf=\"submenu == 'icon'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-icon>\r\n <tui-image-editor-submenus-text *ngIf=\"submenu == 'text'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-text>\r\n <tui-image-editor-submenus-mask *ngIf=\"submenu == 'mask'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-mask>\r\n <tui-image-editor-submenus-filter *ngIf=\"submenu == 'filter'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-filter>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"toggler\" (click)=\"isMenuExpanded=!isMenuExpanded\" style=\"cursor: pointer;\">\r\n <svg *ngIf=\"!isMenuExpanded\" width=\"18\" height=\"16\" viewBox=\"0 0 18 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M0.864575 7.34425C0.503475 7.70535 0.503475 8.29473 0.864575 8.65583L7.93771 15.7287C8.29937 16.0904 8.88768 16.0904 9.2493 15.7287L9.64494 15.3331C10.0069 14.9711 10.007 14.3831 9.64498 14.0211L4.27939 8.65599C3.91733 8.29401 3.91733 7.7059 4.27939 7.34393L9.64494 1.97882C10.007 1.6168 10.007 1.02885 9.6449 0.66683L9.24926 0.27119C8.88816 -0.0899105 8.29877 -0.0899105 7.93767 0.27119L0.864575 7.34425ZM15.4293 0.27111C15.7907 -0.0903898 16.3796 -0.0903499 16.741 0.27111L17.1367 0.66675C17.498 1.02805 17.498 1.61744 17.1367 1.97878L11.7714 7.34393C11.4094 7.70595 11.4094 8.29398 11.7714 8.65599L17.1367 14.0211C17.4982 14.3825 17.4981 14.9717 17.1367 15.3331L16.7411 15.7288C16.3795 16.0904 15.7909 16.0904 15.4293 15.7288L8.98444 9.28372C7.17658 11.0898 7.63387 10.6318 8.98312 9.2824L8.35659 8.65583C7.99525 8.29449 7.99529 7.70554 8.35659 7.34421L15.4293 0.27111Z\"\r\n fill=\"#515355\" />\r\n </svg>\r\n <svg *ngIf=\"isMenuExpanded\" width=\"18\" height=\"16\" viewBox=\"0 0 18 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M17.1354 8.65575C17.4965 8.29465 17.4965 7.70527 17.1354 7.34417L10.0623 0.27127C9.70063 -0.0903886 9.11232 -0.0903885 8.7507 0.271271L8.35506 0.666911C7.99308 1.02889 7.993 1.61688 8.35502 1.97894L13.7206 7.34401C14.0827 7.70599 14.0827 8.2941 13.7206 8.65607L8.35506 14.0212C7.993 14.3832 7.99304 14.9712 8.3551 15.3332L8.75074 15.7288C9.11184 16.0899 9.70123 16.0899 10.0623 15.7288L17.1354 8.65575ZM2.57075 15.7289C2.20929 16.0904 1.62042 16.0904 1.25896 15.7289L0.863319 15.3333C0.50202 14.972 0.50198 14.3826 0.863319 14.0212L6.22863 8.65607C6.59065 8.29406 6.59065 7.70603 6.22863 7.34401L0.86328 1.9789C0.50182 1.61748 0.50186 1.02829 0.86328 0.666871L1.25892 0.27123C1.62054 -0.0903879 2.20909 -0.090428 2.57071 0.27123L9.01556 6.71628C10.8234 4.91023 10.3661 5.36824 9.01688 6.7176L9.64341 7.34417C10.0047 7.70551 10.0047 8.29446 9.64341 8.6558L2.57075 15.7289Z\"\r\n fill=\"#515355\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>", styles: ["::ng-deep .menu-background{height:181px;background-color:#f8f8f8;position:absolute;width:100%;bottom:-182px;z-index:2;display:flex;justify-content:center;align-items:center;border-radius:4px;color:#8d8f9e}::ng-deep .tui-image-editor-d-flex{display:flex!important}::ng-deep .tui-image-editor-flex-row{flex-direction:row!important}::ng-deep .tui-image-editor-flex-column{flex-direction:column!important}::ng-deep .tui-image-editor-flex-wrap{flex-wrap:wrap!important}::ng-deep .tui-image-editor-flex-nowrap{flex-wrap:wrap!important}::ng-deep .tui-image-editor-align-items-center{align-items:center!important}::ng-deep .tui-image-editor-align-self-center{align-self:center!important}::ng-deep .tui-image-editor-justify-content-center{justify-content:center!important}::ng-deep .tui-image-editor-justify-content-between{justify-content:space-between!important}::ng-deep .tui-image-editor-flex-grow-1{flex-grow:1!important;margin-block:4px;cursor:pointer;position:relative}::ng-deep .tui-image-editor-flex-grow-1 .tui-image-editor-canvas-container{min-height:300px;border:1px solid #E8EAED}::ng-deep .tui-image-editor-flex-grow-1 .tui-image-editor-canvas-container .lower-canvas{height:unset!important;width:unset!important;max-height:100%!important;max-width:100%!important;object-fit:contain!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important}::ng-deep .tui-image-editor-flex-grow-1 .tui-image-editor-canvas-container .upper-canvas{height:unset!important;width:unset!important;max-height:100%!important;max-width:100%!important;object-fit:contain!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important}::ng-deep .tui-image-editor-flex-grow-1 .button-background{position:absolute;inset:0px;background-color:#eff0f6;background-image:url(../favicon.ico);background-repeat:no-repeat;background-position:center;z-index:2}::ng-deep .tui-image-editor-h-100{height:100%!important}::ng-deep .tui-image-editor-w-100{width:100%!important}::ng-deep .tui-image-editor-p-1{padding:.25rem!important}::ng-deep .tui-image-editor-pb-1{padding-bottom:.25rem!important}::ng-deep .tui-image-editor-pb-2{padding-bottom:.5rem!important}::ng-deep .tui-image-editor-pb-3{padding-bottom:1rem!important}::ng-deep .tui-image-editor-pt-1{padding-top:.25rem!important}::ng-deep .tui-image-editor-pt-2{padding-top:.5rem!important}::ng-deep .tui-image-editor-pt-3{padding-top:1rem!important}::ng-deep .tui-image-editor-py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}::ng-deep .tui-image-editor-py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}::ng-deep .tui-image-editor-py-3{padding-top:1rem!important;padding-bottom:1rem!important}::ng-deep .tui-image-editor-px-1{padding-left:.25rem!important;padding-right:.25rem!important}::ng-deep .tui-image-editor-px-2{padding-left:.5rem!important;padding-right:.5rem!important}::ng-deep .tui-image-editor-px-3{padding-left:1rem!important;padding-right:1rem!important}::ng-deep .tui-image-editor-my-2{margin-top:.5rem;margin-bottom:.5rem}::ng-deep .tui-image-editor-my-3{margin-top:1rem;margin-bottom:1rem}::ng-deep .tui-image-editor-my-3.apply{display:none}::ng-deep .tui-image-editor-mb-2{margin-bottom:.5rem}::ng-deep .tui-image-editor-mb-3{margin-bottom:1rem}::ng-deep .tui-image-editor-container{background-color:#fff;border-radius:10px;position:relative}::ng-deep .tui-image-editor-container .tui-image-editor-submenu{background-color:#353535;position:absolute;width:100%;bottom:-176px;opacity:.8;height:181px;z-index:3}::ng-deep .tui-image-editor-container label{margin-bottom:0!important}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-item.disabled{cursor:not-allowed}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu svg>use{display:none}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .enabled svg:hover>use.hover,::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .enabled:hover svg>use.hover,::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .help.enabled svg>use.normal{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .help:not(.enabled) svg>use.disabled{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu>.tui-image-editor-item.tui-image-editor-item-separator{width:10px;padding:0}::ng-deep .tui-image-editor-container .tui-image-editor-controls{width:100%;background-color:#dedede;border-bottom-left-radius:22px;border-bottom-right-radius:22px}::ng-deep .tui-image-editor-container .tui-image-editor-controls svg>use{display:none}::ng-deep .tui-image-editor-container .tui-image-editor-controls svg>use.normal{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-controls .active svg>use.active{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-controls>.tui-image-editor-menu{font-size:16px;justify-content:center}::ng-deep .tui-image-editor-container .tui-image-editor-menu .tui-image-editor-item.active,::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-item.active{background-color:#ef736b;transition:all .3s ease;border-radius:6px}::ng-deep .tui-image-editor-container .svg_ic-menu{width:24px;height:24px;fill:#8a8a8a;stroke:#8a8a8a}::ng-deep .tui-image-editor-container .svg_ic-submenu{width:32px;height:32px}::ng-deep .tui-image-editor-container .tui-image-editor-submenu use.normal.use-default{fill-rule:evenodd;fill:#8a8a8a;stroke:#8a8a8a}::ng-deep .tui-image-editor-container .tui-image-editor-submenu use.active.use-default{fill-rule:evenodd;fill:#e9e9e9;stroke:#e9e9e9}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu{margin:0 auto;text-align:center;vertical-align:middle;border-radius:20px;z-index:2}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu use.normal.use-default,::ng-deep .tui-image-editor-container .tui-image-editor-menu use.normal.use-default{fill-rule:evenodd;fill:#3d3d3d;stroke:#3d3d3d}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu use.disabled.use-default,::ng-deep .tui-image-editor-container .tui-image-editor-menu use.disabled.use-default{fill-rule:evenodd;fill:#434343;stroke:#434343}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu use.hover.use-default,::ng-deep .tui-image-editor-container .tui-image-editor-menu use.hover.use-default{fill-rule:evenodd;fill:#e9e9e9;stroke:#e9e9e9}::ng-deep .tui-image-editor-container .tui-image-editor-icpartition{display:inline-block;background-color:#444;width:1px;height:24px}::ng-deep .tui-image-editor-container .tui-image-editor-partition>div{color:#3c3c3c;border-left:1px solid #3c3c3c}::ng-deep .tui-image-editor-container .tui-image-editor-partition>div{width:1px;height:52px;border-left:1px solid #3c3c3c;margin:0 8px}::ng-deep .tui-image-editor-container .tui-image-editor-item{position:relative;display:flex;border-radius:2px;padding:.25em .3em;cursor:pointer;margin:0 .25em;width:2em;height:2em;align-items:center;justify-content:center}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-item{padding-left:.25em;padding-right:.25em;width:2em}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-help-menu-item{background-color:#f8f8f8;border-radius:20px;padding-left:4px;padding-right:4px;margin:4px}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-help-menu-item:first-child{display:none!important}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-help-menu-item tui-image-editor-menus-buttons-history{display:none}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu>.tui-image-editor-item{padding-left:.25em;padding-right:.25em}::ng-deep .tui-image-editor-container .tui-image-editor-load-btn{position:absolute;left:0;right:0;display:inline-block;top:0;bottom:0;width:100%;cursor:pointer;opacity:0}::ng-deep .tui-image-editor-container .tui-image-editor-menu{padding-top:.5rem;padding-bottom:.5rem;overflow-x:auto;margin-left:4px;margin-right:4px}::ng-deep .tui-image-editor-container .tui-image-editor-overflowable-x{overflow-x:auto}::ng-deep .tui-image-editor-container .tie-icon-add-button,::ng-deep .tui-image-editor-container .tie-icon-add-button *{cursor:pointer}::ng-deep .tui-image-editor-container .tie-mask-image-file,::ng-deep .tui-image-editor-container .tie-icon-image-file{opacity:0;position:absolute;width:100%;height:100%;border:1px solid #008000;cursor:inherit;left:0;top:0}::ng-deep .tui-image-editor-container .tui-image-editor-submenu-align:first-child label>span{width:70px;display:inline-block;cursor:pointer}::ng-deep .tui-image-editor-container .tui-image-editor-menu-shape{white-space:nowrap}::ng-deep .tui-image-editor-container .tui-image-editor-checkbox-wrap.fixed-width{width:200px;white-space:normal}::ng-deep .tui-image-editor-container .tui-image-editor-checkbox{display:inline-block;margin:.25rem 0;color:#8a8a8a;font-weight:lighter;font-size:11px}::ng-deep .tui-image-editor-container .tui-image-editor-checkbox input[type=checkbox]:checked+span{color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-range-wrap label{vertical-align:baseline;font-size:11px;margin-right:7px;color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-range-wrap .tui-image-editor-range-value{cursor:default;width:40px;height:24px;outline:none;border-radius:2px;box-shadow:none;border:1px solid #d5d5d5;text-align:center;background-color:#1c1c1c;color:#fff;font-weight:lighter;vertical-align:baseline;font-family:Noto Sans,sans-serif;margin-left:4px}::ng-deep .tui-image-editor-container .tui-image-editor-range-wrap .tui-image-editor-range-value{color:#fff;font-weight:lighter;font-size:11px;border:1px solid #353535;background-color:#207c80}::ng-deep .tui-image-editor-container input[type=range]{-webkit-appearance:none;background:transparent}::ng-deep .tui-image-editor-container input[type=range]::-webkit-slider-thumb{-webkit-appearance:none}::ng-deep .tui-image-editor-container input[type=range]:focus{outline:none}::ng-deep .tui-image-editor-container input[type=range]::-ms-track{cursor:pointer;background:transparent;border-color:transparent;color:transparent}::ng-deep .tui-image-editor-container input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:1px solid #0d6efd;height:12px;width:12px;border-radius:12px;background:#0d6efd;cursor:pointer;margin-top:-6px}::ng-deep .tui-image-editor-container input[type=range]:disabled::-webkit-slider-thumb,::ng-deep .tui-image-editor-container input[type=range].disabled::-webkit-slider-thumb{cursor:not-allowed;background:#ced4da;border-color:#ced4da}::ng-deep .tui-image-editor-container input[type=range]::-moz-range-thumb{border:1px solid #0d6efd;height:12px;width:12px;border-radius:12px;background:#0d6efd;cursor:pointer}::ng-deep .tui-image-editor-container input[type=range]:disabled::-moz-range-thumb,::ng-deep .tui-image-editor-container input[type=range].disabled::-moz-range-thumb{cursor:not-allowed;background:#ced4da;border-color:#ced4da}::ng-deep .tui-image-editor-container input[type=range]::-ms-thumb{border:1px solid #0d6efd;height:12px;width:12px;border-radius:12px;background:#0d6efd;cursor:pointer}::ng-deep .tui-image-editor-container input[type=range]:disabled::-ms-thumb,::ng-deep .tui-image-editor-container input[type=range].disabled::-ms-thumb{cursor:not-allowed;background:#ced4da;border-color:#ced4da}::ng-deep .tui-image-editor-container input[type=range]::-webkit-slider-runnable-track{height:2px;cursor:pointer;background:#fff;border-radius:1.3px;border:.2px solid #fff}::ng-deep .tui-image-editor-container input[type=range]:disabled::-webkit-slider-runnable-track,::ng-deep .tui-image-editor-container input[type=range].disabled::-webkit-slider-runnable-track{cursor:not-allowed;background:#e9ecef;border-color:#e9ecef}::ng-deep .tui-image-editor-container input[type=range]:focus::-webkit-slider-runnable-track{background:#fff}::ng-deep .tui-image-editor-container input[type=range]::-moz-range-track{height:2px;cursor:pointer;background:#fff;border-radius:1.3px;border:.2px solid #fff}::ng-deep .tui-image-editor-container input[type=range]:disabled::-moz-range-track,::ng-deep .tui-image-editor-container input[type=range].disabled::-moz-range-track{cursor:not-allowed;background:#e9ecef;border-color:#e9ecef}::ng-deep .tui-image-editor-container input[type=range]::-ms-track{height:2px;cursor:pointer;background:transparent;border-color:transparent;border-width:16px 0;color:transparent}::ng-deep .tui-image-editor-container input[type=range]:disabled::-ms-track,::ng-deep .tui-image-editor-container input[type=range].disabled::-ms-track{cursor:not-allowed;background:#e9ecef;border-color:#e9ecef}::ng-deep .tui-image-editor-container input[type=range]::-ms-fill-lower{background:#fff;border:.2px solid #fff;border-radius:2.6px}::ng-deep .tui-image-editor-container input[type=range]:focus::-ms-fill-lower{background:#fff}::ng-deep .tui-image-editor-container input[type=range]::-ms-fill-upper{background:#fff;border:.2px solid #fff;border-radius:2.6px}::ng-deep .tui-image-editor-container input[type=range]:focus::-ms-fill-upper{background:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button.preset{margin:0 9px 0 5px}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button{position:relative;cursor:pointer;display:inline-block;font-weight:400;font-size:11px;margin:0 9px;text-align:center}::ng-deep .tui-image-editor-container .tui-image-editor-submenu svg>use{display:none}::ng-deep .tui-image-editor-container .tui-image-editor-submenu svg>use.normal{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button:hover{cursor:pointer}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.apply svg>use.active{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.apply>label{color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.active>label{color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button>label{color:#8a8a8a;font-weight:lighter}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.tie-draw-color label,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.tie-color-stroke label,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.tie-color-fill label,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.tie-icon-color label,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.tie-text-color label{color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button:hover svg>use.active,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.active svg>use.active{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button:hover>label,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.active>label{color:#fff;cursor:pointer}::ng-deep .tie-crop-button .tui-image-editor-button.preset.active svg>use.active,::ng-deep .tie-crop-preset-button .tui-image-editor-button.preset.active svg>use.active{display:block}::ng-deep .tie-crop-preset-button>.preset>label{color:#fff;font-weight:lighter}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual{display:none;position:absolute;width:100%;height:100%;border:1px solid rgba(255,255,255,.7)}::ng-deep .tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip,::ng-deep .tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor{transition:none}::ng-deep .tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-grid-visual,::ng-deep .tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-grid-visual{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table{width:100%;height:100%;border-collapse:collapse}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td{border:1px solid rgba(255,255,255,.3)}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td.dot:before{content:\"\";position:absolute;box-sizing:border-box;width:10px;height:10px;border:0;box-shadow:0 0 1px #0000004d;border-radius:100%;background-color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td.dot.left-top:before{top:-5px;left:-5px}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td.dot.right-top:before{top:-5px;right:-5px}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td.dot.left-bottom:before{bottom:-5px;left:-5px}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td.dot.right-bottom:before{bottom:-5px;right:-5px}::ng-deep .tie-text-color-picker,::ng-deep .tie-draw-color-picker,::ng-deep .tie-icon-color-picker,::ng-deep .tie-filter-tint-color-picker,::ng-deep .tie-filter-multiply-color-picker,::ng-deep .tie-filter-blend-color-picker{border-radius:100%;width:32px;height:32px;border:1px solid #1e1e1e;cursor:pointer;font-size:16px}::ng-deep .tie-panel-history{max-height:300px;overflow:auto;padding:.5rem 0}::ng-deep .tie-panel-history .history-list{margin-bottom:0;margin-top:0;list-style-type:none;padding-left:0;padding-right:0}::ng-deep .tie-panel-history .history-list .history-item{min-width:255px;padding:3px 0}::ng-deep .tie-panel-history .history-list .history-item.disabled-item{color:#333;opacity:.3}::ng-deep .tie-panel-history .history-list .history-item:not(:last-child){border-bottom:1px solid black}::ng-deep .tie-panel-history .history-list .history-item.selected-item{background-color:#eee}::ng-deep .tie-panel-history .history-list .history-item:hover{background-color:#e2e2e2}::ng-deep .tie-panel-history .history-list .history-item .history-item-text{flex:1;overflow:hidden;text-overflow:ellipsis;word-break:break-word}::ng-deep .tie-panel-history .history-list .history-item .history-item-text .history-item-text-details{font-size:.85em}::ng-deep .tie-panel-history .history-list .history-item .tui-image-editor-history-item{padding-left:.5em;padding-right:.5em;cursor:pointer}::ng-deep .tie-panel-history .history-list .history-item .tui-image-editor-history-item .history-item-icon{margin-right:.5em}::ng-deep .tie-panel-history .history-list .history-item .tui-image-editor-history-item .history-item-icon svg{width:1em;height:1em}::ng-deep .tie-panel-history .history-list .history-item .tui-image-editor-history-item .history-item-checkbox{margin-left:auto}::ng-deep .tie-panel-history .history-list .history-item .tui-image-editor-history-item .history-item-checkbox svg{width:1em;height:1em;margin-left:.5em}::ng-deep .fade{transition:opacity .15s linear}::ng-deep .popover{position:absolute;top:0;left:0;z-index:10070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}::ng-deep .popover .arrow{position:absolute;display:block;width:1rem;height:.5rem}::ng-deep .popover .arrow:before,::ng-deep .popover .arrow:after{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}::ng-deep .bs-popover-top>.arrow,::ng-deep .bs-popover-auto[data-popper-placement^=top]>.arrow{bottom:calc(-.5rem - 1px)}::ng-deep .bs-popover-top>.arrow:before,::ng-deep .bs-popover-auto[data-popper-placement^=top]>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}::ng-deep .bs-popover-top>.arrow:after,::ng-deep .bs-popover-auto[data-popper-placement^=top]>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}::ng-deep .bs-popover-end>.arrow,::ng-deep .bs-popover-auto[data-popper-placement^=right]>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}::ng-deep .bs-popover-end>.arrow:before,::ng-deep .bs-popover-auto[data-popper-placement^=right]>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}::ng-deep .bs-popover-end>.arrow:after,::ng-deep .bs-popover-auto[data-popper-placement^=right]>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}::ng-deep .bs-popover-bottom>.arrow,::ng-deep .bs-popover-auto[data-popper-placement^=bottom]>.arrow{top:calc(-.5rem - 1px)}::ng-deep .bs-popover-bottom>.arrow:before,::ng-deep .bs-popover-auto[data-popper-placement^=bottom]>.arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}::ng-deep .bs-popover-bottom>.arrow:after,::ng-deep .bs-popover-auto[data-popper-placement^=bottom]>.arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}::ng-deep .bs-popover-bottom .popover-header:before,::ng-deep .bs-popover-auto[data-popper-placement^=bottom] .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f0f0f0}::ng-deep .bs-popover-start>.arrow,::ng-deep .bs-popover-auto[data-popper-placement^=left]>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}::ng-deep .bs-popover-start>.arrow:before,::ng-deep .bs-popover-auto[data-popper-placement^=left]>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}::ng-deep .bs-popover-start>.arrow:after,::ng-deep .bs-popover-auto[data-popper-placement^=left]>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}::ng-deep .popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid #d8d8d8;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}::ng-deep .popover-header:empty{display:none}::ng-deep .popover-body{padding:1rem;color:#212529}::ng-deep .tie-history-popover .popover-body{padding:0}::ng-deep .color-picker.open{z-index:1063}.new-template{display:flex;height:100%}.new-template ::ng-deep .tui-image-editor-overflowable-x{overflow-x:unset}.new-template ::ng-deep .color-picker{right:50px!important;top:5px!important;left:unset!important}.new-template .image-load-container{flex:1}.new-template .tools-container{border-left:1px solid #dcdfe4;width:80px;display:flex;align-items:center;justify-content:space-between;padding-top:15px;padding-bottom:15px;flex-direction:column}.new-template .tools-container .primary-tools{height:95%}.new-template .tools-container .primary-tools .selected-option{text-align:center}.new-template .tools-container .primary-tools .hr{height:1px;background-color:#dcdfe4;margin-top:10px}.new-template .tools-container .primary-tools .menu{height:90%;display:flex;flex-direction:column;flex-wrap:wrap-reverse;padding:15px;overflow-x:hidden;gap:15px}.new-template .tools-container .primary-tools .menu .tool-icon ::ng-deep .tui-image-editor-item{border-radius:50%;border:1px solid #E8EAED}.new-template .tools-container .primary-tools .menu .tool-icon ::ng-deep .tui-image-editor-item.active{background-color:#207c8026}.new-template .tools-container .primary-tools .menu .tool-icon ::ng-deep .tui-image-editor-item.active .svg_ic-menu{fill:#207c80;stroke:#207c80}.new-template .tools-container .primary-tools .menu .tool-icon-group{border-radius:50px;border:1px solid #E8EAED}.new-template .tools-container .primary-tools .sub-menu .tui-image-editor-submenu.new{position:absolute;background-color:#353535;top:0;right:80px;z-index:1000;opacity:.8;color:#fff;width:-moz-fit-content;width:fit-content;padding:10px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadComponent, selector: "tui-image-editor-menus-buttons-load", outputs: ["loadImage"] }, { kind: "component", type: HistoryComponent, selector: "tui-image-editor-menus-buttons-history", inputs: ["imageEditor"] }, { kind: "component", type: DownloadComponent, selector: "tui-image-editor-menus-buttons-download", inputs: ["imageChosen", "imageEditor"] }, { kind: "component", type: ZoomInComponent, selector: "tui-image-editor-menus-buttons-zoom-in", inputs: ["imageChosen", "imageEditor"] }, { kind: "component", type: ZoomOutComponent, selector: "tui-image-editor-menus-buttons-zoom-out", inputs: ["imageChosen", "imageEditor"] }, { kind: "component", type: DragComponent, selector: "tui-image-editor-menus-buttons-drag", inputs: ["imageChosen", "imageEditor"] }, { kind: "component", type: UndoComponent, selector: "tui-image-editor-menus-buttons-undo", inputs: ["imageEditor"], outputs: ["cancelCroppingRequested"] }, { kind: "component", type: RedoComponent, selector: "tui-image-editor-menus-buttons-redo", inputs: ["imageEditor"], outputs: ["cancelCroppingRequested"] }, { kind: "component", type: ResetComponent, selector: "tui-image-editor-menus-buttons-reset", inputs: ["imageChosen", "imageEditor"], outputs: ["cancelCroppingRequested", "resetImage"] }, { kind: "component", type: DeleteComponent, selector: "tui-image-editor-menus-buttons-delete", inputs: ["imageChosen", "imageEditor"], outputs: ["cancelCroppingRequested"] }, { kind: "component", type: DeleteAllComponent, selector: "tui-image-editor-menus-buttons-delete-all", inputs: ["imageChosen", "imageEditor"], outputs: ["cancelCroppingRequested"] }, { kind: "component", type: CropComponent$1, selector: "tui-image-editor-menus-buttons-crop", inputs: ["imageChosen", "selected"], outputs: ["clicked"] }, { kind: "component", type: CropComponent, selector: "tui-image-editor-submenus-crop", inputs: ["imageEditor"], outputs: ["cancelCroppingRequested"] }, { kind: "component", type: FlipComponent$1, selector: "tui-image-editor-menus-buttons-flip", inputs: ["imageChosen", "selected"], outputs: ["clicked"] }, { kind: "component", type: FlipComponent, selector: "tui-image-editor-submenus-flip", inputs: ["imageEditor"] }, { kind: "component", type: RotateComponent$1, selector: "tui-image-editor-menus-buttons-rotate", inputs: ["imageChosen", "selected"], outputs: ["clicked"] }, { kind: "component", type: RotateComponent, selector: "tui-image-editor-submenus-rotate", inputs: ["imageEditor", "rotation"], outputs: ["rotationChange"] }, { kind: "component", type: DrawComponent$1, selector: "tui-image-editor-menus-buttons-draw", inputs: ["imageChosen", "selected"], outputs: ["clicked"] }, { kind: "component", type: DrawComponent, selector: "tui-image-editor-submenus-draw", inputs: ["imageEditor", "defaultDrawShapeColors"] }, { kind: "component", type: ShapeComponent$1, selector: "tui-image-editor-menus-buttons-shape", inputs: ["imageChosen", "selected"], outputs: ["clicked"] }, { kind: "component", type: ShapeComponent, selector: "tui-image-editor-submenus-shape", inputs: ["imageEditor", "defaultShapeStrokeColors", "defaultShapeFillColors"] }, { kind: "component", type: IconComponent$1, selector: "tui-image-editor-menus-buttons-icon", inputs: ["imageChosen", "selected"], outputs: ["clicked"] }, { kind: "component", type: IconComponent, selector: "tui-image-editor-submenus-icon", inputs: ["imageEditor", "defaultIconColors"] }, { kind: "component", type: TextComponent$1, selector: "tui-image-editor-menus-buttons-text", inputs: ["imageChosen", "selected"], outputs: ["clicked"] }, { kind: "component", type: TextComponent, selector: "tui-image-editor-submenus-text", inputs: ["imageEditor", "defaultTextColors"] }, { kind: "component", type: MaskComponent$1, selector: "tui-image-editor-menus-buttons-mask", inputs: ["imageChosen", "selected"], outputs: ["clicked"] }, { kind: "component", type: MaskComponent, selector: "tui-image-editor-submenus-mask", inputs: ["imageEditor"] }, { kind: "component", type: FilterComponent$1, selector: "tui-image-editor-menus-buttons-filter", inputs: ["imageChosen", "selected"], outputs: ["clicked"] }, { kind: "component", type: FilterComponent, selector: "tui-image-editor-submenus-filter", inputs: ["imageEditor"] }] });
|
|
2992
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TuiImageEditorComponent, decorators: [{
|
|
2993
|
+
type: Component,
|
|
2994
|
+
args: [{ selector: 'tui-image-editor', providers: [HistoryService], template: "<div *ngIf=\"template==='default';else newImageEditor\"\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-column tui-image-editor-justify-content-center tui-image-editor-h-100 tui-image-editor-w-100 tui-image-editor-container\">\r\n <div\r\n class=\"tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-wrap tui-image-editor-justify-content-center tui-image-editor-align-items-center\">\r\n <div\r\n class=\"tui-image-editor-help-menu tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-wrap tui-image-editor-align-items-center tui-image-editor-justify-content-center tui-image-editor-p-1\">\r\n <div></div>\r\n <!-- <div #loadBtn style=\"position: absolute;\"\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-load (loadImage)=\"loadImage($event)\"></tui-image-editor-menus-buttons-load>\r\n <tui-image-editor-menus-buttons-download [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-download>\r\n </div> -->\r\n <div\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-zoom-in [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-zoom-in>\r\n <tui-image-editor-menus-buttons-zoom-out [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-zoom-out>\r\n <tui-image-editor-menus-buttons-drag [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-drag>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-history [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-history>\r\n <tui-image-editor-menus-buttons-undo [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-undo>\r\n <tui-image-editor-menus-buttons-redo [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-redo>\r\n <tui-image-editor-menus-buttons-reset [imageChosen]=\"imageChosen\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"\r\n (resetImage)=\"resetImage()\"></tui-image-editor-menus-buttons-reset>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-delete [imageChosen]=\"imageChosen\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-delete>\r\n <tui-image-editor-menus-buttons-delete-all [imageChosen]=\"imageChosen\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-delete-all>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div #imageContainer\r\n class=\"tui-image-editor-flex-grow-1 tui-image-editor-d-flex tui-image-editor-align-items-center tui-image-editor-justify-content-center\"\r\n [style.height]=\"'0'\"></div> -->\r\n <div style=\"position: relative;height: 100%; display: flex; justify-content: center; align-items: center;\">\r\n <div #loadBtn style=\"position: absolute;\"\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-load (loadImage)=\"onLoad($event)\"></tui-image-editor-menus-buttons-load>\r\n </div>\r\n <div style=\"position: absolute;height: 100%; width: 100%;\" #imageContainer\r\n class=\"tui-image-editor-flex-grow-1 tui-image-editor-d-flex tui-image-editor-align-items-center tui-image-editor-justify-content-center\">\r\n </div>\r\n </div>\r\n <div class=\"tui-image-editor-submenu\" *ngIf=\"submenu != null\">\r\n <tui-image-editor-submenus-crop *ngIf=\"submenu == 'crop'\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-submenus-crop>\r\n <tui-image-editor-submenus-flip *ngIf=\"submenu == 'flip'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-flip>\r\n <tui-image-editor-submenus-rotate *ngIf=\"submenu == 'rotate'\" [imageEditor]=\"imageEditor\"\r\n [(rotation)]=\"rotation\"></tui-image-editor-submenus-rotate>\r\n <tui-image-editor-submenus-draw *ngIf=\"submenu == 'draw'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-draw>\r\n <tui-image-editor-submenus-shape *ngIf=\"submenu == 'shape'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-shape>\r\n <tui-image-editor-submenus-icon *ngIf=\"submenu == 'icon'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-icon>\r\n <tui-image-editor-submenus-text *ngIf=\"submenu == 'text'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-text>\r\n <tui-image-editor-submenus-mask *ngIf=\"submenu == 'mask'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-mask>\r\n <tui-image-editor-submenus-filter *ngIf=\"submenu == 'filter'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-filter>\r\n </div>\r\n <div\r\n class=\"tui-image-editor-controls tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-justify-content-center\">\r\n <div\r\n class=\"tui-image-editor-menu tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap tui-image-editor-align-items-center\">\r\n <tui-image-editor-menus-buttons-crop [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'crop'\"\r\n (clicked)=\"submenu == 'crop' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-crop>\r\n <tui-image-editor-menus-buttons-flip [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'flip'\"\r\n (clicked)=\"submenu == 'flip' ? hideMenu($event) : showMenu($event)\">\r\n </tui-image-editor-menus-buttons-flip>\r\n <tui-image-editor-menus-buttons-rotate [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'rotate'\"\r\n (clicked)=\"submenu == 'rotate' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-rotate>\r\n <tui-image-editor-menus-buttons-draw [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'draw'\"\r\n (clicked)=\"submenu == 'draw' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-draw>\r\n <tui-image-editor-menus-buttons-shape [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'shape'\"\r\n (clicked)=\"submenu == 'shape' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-shape>\r\n <tui-image-editor-menus-buttons-icon [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'icon'\"\r\n (clicked)=\"submenu == 'icon' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-icon>\r\n <tui-image-editor-menus-buttons-text [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'text'\"\r\n (clicked)=\"submenu == 'text' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-text>\r\n <tui-image-editor-menus-buttons-mask [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'mask'\"\r\n (clicked)=\"submenu == 'mask' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-mask>\r\n <tui-image-editor-menus-buttons-filter [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'filter'\"\r\n (clicked)=\"submenu == 'filter' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-filter>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #newImageEditor>\r\n <div class=\"new-template tui-image-editor-container\">\r\n <div class=\"image-load-container\">\r\n <div style=\"position: relative;height: 100%; display: flex; justify-content: center; align-items: center;\">\r\n <div #loadBtn style=\"position: absolute;\"\r\n class=\"tui-image-editor-help-menu-item tui-image-editor-d-flex tui-image-editor-flex-row tui-image-editor-flex-nowrap\">\r\n <tui-image-editor-menus-buttons-load (loadImage)=\"onLoad($event)\"></tui-image-editor-menus-buttons-load>\r\n </div>\r\n <div style=\"position: absolute;height: 100%; width: 100%;\" #imageContainer\r\n class=\"tui-image-editor-flex-grow-1 tui-image-editor-d-flex tui-image-editor-align-items-center tui-image-editor-justify-content-center\">\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"tools-container\" style=\"position: relative;\" [style.width.px]=\"isMenuExpanded ? 160 : 80\">\r\n <div class=\"primary-tools\">\r\n <div class=\"selected-option\" style=\"cursor: pointer;\" (click)=\"showSubmenu=!showSubmenu\">\r\n <svg *ngIf=\"!showSubmenu\" width=\"18\" height=\"16\" viewBox=\"0 0 18 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path opacity=\"0.7\" fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M9.3809 2.67601H17.0011C17.5527 2.67601 18 3.12327 18 3.67491C18 4.22654 17.5527 4.6738 17.0011 4.6738H9.38083C8.94507 6.20757 7.53168 7.33419 5.86014 7.33419C4.18856 7.33419 2.77524 6.20757 2.33944 4.6738H0.998897C0.447224 4.6738 0 4.22651 0 3.67487C0 3.12323 0.447224 2.67597 0.998897 2.67601H2.33951C2.77527 1.14224 4.18863 0.015625 5.86021 0.015625C7.53175 0.015625 8.9451 1.14224 9.3809 2.67601ZM4.19868 3.67484C4.19868 4.59097 4.944 5.33632 5.86017 5.33632C6.77635 5.33632 7.52166 4.59097 7.52166 3.67484C7.52166 2.7587 6.77635 2.01335 5.86017 2.01335C4.944 2.01335 4.19868 2.7587 4.19868 3.67484ZM15.6581 11.3275H17.0011C17.5528 11.3275 18 11.7748 18 12.3264C18 12.8781 17.5528 13.3253 17.0011 13.3253H15.6581C15.2224 14.8591 13.809 15.9857 12.1374 15.9857C10.4659 15.9857 9.05254 14.8591 8.61674 13.3253H0.998897C0.447224 13.3253 0 12.8781 0 12.3264C0 11.7748 0.447224 11.3275 0.998897 11.3275H8.61674C9.05251 9.79378 10.4659 8.66716 12.1374 8.66716C13.809 8.66716 15.2223 9.79378 15.6581 11.3275ZM10.476 12.3264C10.476 13.2426 11.2213 13.9879 12.1374 13.9879C13.0536 13.9879 13.799 13.2426 13.7989 12.3264C13.7989 11.4103 13.0536 10.665 12.1374 10.665C11.2213 10.665 10.476 11.4103 10.476 12.3264Z\"\r\n fill=\"#25282B\" />\r\n </svg>\r\n <svg *ngIf=\"showSubmenu\" width=\"42\" height=\"40\" viewBox=\"0 0 42 40\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <rect width=\"42\" height=\"40\" rx=\"8\" fill=\"#25282B\" fill-opacity=\"0.1\" />\r\n <g opacity=\"0.7\">\r\n <path\r\n d=\"M16.1375 25.9935C15.8433 26.0108 15.554 25.9119 15.3305 25.7176C14.8898 25.2691 14.8898 24.5447 15.3305 24.0962L24.9801 14.3337C25.4384 13.8998 26.1576 13.9239 26.5865 14.3876C26.9744 14.807 26.997 15.4515 26.6395 15.8976L16.9331 25.7176C16.7125 25.9091 16.4278 26.0078 16.1375 25.9935Z\"\r\n fill=\"#25282B\" />\r\n <path\r\n d=\"M25.7732 25.9938C25.475 25.9925 25.1893 25.8728 24.9776 25.6603L15.328 15.8978C14.9197 15.4155 14.9752 14.6896 15.452 14.2765C15.8775 13.9078 16.5051 13.9078 16.9306 14.2765L26.637 24.039C27.0952 24.473 27.1189 25.2007 26.6899 25.6643C26.6728 25.6827 26.6552 25.7006 26.637 25.7178C26.3993 25.9269 26.0865 26.0268 25.7732 25.9938Z\"\r\n fill=\"#25282B\" />\r\n </g>\r\n </svg>\r\n </div>\r\n <div class=\"hr\">\r\n\r\n </div>\r\n <div class=\"menu\">\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-draw #penMenu [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'draw'\"\r\n (clicked)=\"submenu == 'draw' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-draw>\r\n </div>\r\n <!-- <div class=\"eraser\">\r\n \r\n </div> -->\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-text [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'text'\"\r\n (clicked)=\"submenu == 'text' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-text>\r\n </div>\r\n <div class=\"tool-icon-group\">\r\n <tui-image-editor-menus-buttons-zoom-in [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-zoom-in>\r\n <tui-image-editor-menus-buttons-zoom-out [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-zoom-out>\r\n <tui-image-editor-menus-buttons-drag [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-drag>\r\n </div>\r\n <div class=\"tool-icon-group\">\r\n <tui-image-editor-menus-buttons-history\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-history>\r\n <tui-image-editor-menus-buttons-undo [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-undo>\r\n <tui-image-editor-menus-buttons-redo [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-menus-buttons-redo>\r\n <tui-image-editor-menus-buttons-reset [imageChosen]=\"imageChosen\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"\r\n (resetImage)=\"resetImage()\"></tui-image-editor-menus-buttons-reset>\r\n </div>\r\n\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-crop [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'crop'\"\r\n (clicked)=\"submenu == 'crop' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-crop>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-flip [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'flip'\"\r\n (clicked)=\"submenu == 'flip' ? hideMenu($event) : showMenu($event)\">\r\n </tui-image-editor-menus-buttons-flip>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-rotate [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'rotate'\"\r\n (clicked)=\"submenu == 'rotate' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-rotate>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-shape [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'shape'\"\r\n (clicked)=\"submenu == 'shape' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-shape>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-icon [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'icon'\"\r\n (clicked)=\"submenu == 'icon' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-icon>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-mask [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'mask'\"\r\n (clicked)=\"submenu == 'mask' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-mask>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-filter [imageChosen]=\"imageChosen\" [selected]=\"submenu == 'filter'\"\r\n (clicked)=\"submenu == 'filter' ? hideMenu($event) : showMenu($event)\"></tui-image-editor-menus-buttons-filter>\r\n </div>\r\n <div class=\"tool-icon\">\r\n <tui-image-editor-menus-buttons-download [imageChosen]=\"imageChosen\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-menus-buttons-download>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n <div class=\"sub-menu\">\r\n <div class=\"tui-image-editor-submenu new\" [style.right.px]=\"isMenuExpanded ? 160 : 80\"\r\n *ngIf=\"submenu != null && showSubmenu\">\r\n <tui-image-editor-submenus-crop *ngIf=\"submenu == 'crop'\" [imageEditor]=\"imageEditor\"\r\n (cancelCroppingRequested)=\"exitCropOnAction()\"></tui-image-editor-submenus-crop>\r\n <tui-image-editor-submenus-flip *ngIf=\"submenu == 'flip'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-flip>\r\n <tui-image-editor-submenus-rotate *ngIf=\"submenu == 'rotate'\" [imageEditor]=\"imageEditor\"\r\n [(rotation)]=\"rotation\"></tui-image-editor-submenus-rotate>\r\n <tui-image-editor-submenus-draw *ngIf=\"submenu == 'draw'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-draw>\r\n <tui-image-editor-submenus-shape *ngIf=\"submenu == 'shape'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-shape>\r\n <tui-image-editor-submenus-icon *ngIf=\"submenu == 'icon'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-icon>\r\n <tui-image-editor-submenus-text *ngIf=\"submenu == 'text'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-text>\r\n <tui-image-editor-submenus-mask *ngIf=\"submenu == 'mask'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-mask>\r\n <tui-image-editor-submenus-filter *ngIf=\"submenu == 'filter'\"\r\n [imageEditor]=\"imageEditor\"></tui-image-editor-submenus-filter>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"toggler\" (click)=\"isMenuExpanded=!isMenuExpanded\" style=\"cursor: pointer;\">\r\n <svg *ngIf=\"!isMenuExpanded\" width=\"18\" height=\"16\" viewBox=\"0 0 18 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M0.864575 7.34425C0.503475 7.70535 0.503475 8.29473 0.864575 8.65583L7.93771 15.7287C8.29937 16.0904 8.88768 16.0904 9.2493 15.7287L9.64494 15.3331C10.0069 14.9711 10.007 14.3831 9.64498 14.0211L4.27939 8.65599C3.91733 8.29401 3.91733 7.7059 4.27939 7.34393L9.64494 1.97882C10.007 1.6168 10.007 1.02885 9.6449 0.66683L9.24926 0.27119C8.88816 -0.0899105 8.29877 -0.0899105 7.93767 0.27119L0.864575 7.34425ZM15.4293 0.27111C15.7907 -0.0903898 16.3796 -0.0903499 16.741 0.27111L17.1367 0.66675C17.498 1.02805 17.498 1.61744 17.1367 1.97878L11.7714 7.34393C11.4094 7.70595 11.4094 8.29398 11.7714 8.65599L17.1367 14.0211C17.4982 14.3825 17.4981 14.9717 17.1367 15.3331L16.7411 15.7288C16.3795 16.0904 15.7909 16.0904 15.4293 15.7288L8.98444 9.28372C7.17658 11.0898 7.63387 10.6318 8.98312 9.2824L8.35659 8.65583C7.99525 8.29449 7.99529 7.70554 8.35659 7.34421L15.4293 0.27111Z\"\r\n fill=\"#515355\" />\r\n </svg>\r\n <svg *ngIf=\"isMenuExpanded\" width=\"18\" height=\"16\" viewBox=\"0 0 18 16\" fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\">\r\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\r\n d=\"M17.1354 8.65575C17.4965 8.29465 17.4965 7.70527 17.1354 7.34417L10.0623 0.27127C9.70063 -0.0903886 9.11232 -0.0903885 8.7507 0.271271L8.35506 0.666911C7.99308 1.02889 7.993 1.61688 8.35502 1.97894L13.7206 7.34401C14.0827 7.70599 14.0827 8.2941 13.7206 8.65607L8.35506 14.0212C7.993 14.3832 7.99304 14.9712 8.3551 15.3332L8.75074 15.7288C9.11184 16.0899 9.70123 16.0899 10.0623 15.7288L17.1354 8.65575ZM2.57075 15.7289C2.20929 16.0904 1.62042 16.0904 1.25896 15.7289L0.863319 15.3333C0.50202 14.972 0.50198 14.3826 0.863319 14.0212L6.22863 8.65607C6.59065 8.29406 6.59065 7.70603 6.22863 7.34401L0.86328 1.9789C0.50182 1.61748 0.50186 1.02829 0.86328 0.666871L1.25892 0.27123C1.62054 -0.0903879 2.20909 -0.090428 2.57071 0.27123L9.01556 6.71628C10.8234 4.91023 10.3661 5.36824 9.01688 6.7176L9.64341 7.34417C10.0047 7.70551 10.0047 8.29446 9.64341 8.6558L2.57075 15.7289Z\"\r\n fill=\"#515355\" />\r\n </svg>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>", styles: ["::ng-deep .menu-background{height:181px;background-color:#f8f8f8;position:absolute;width:100%;bottom:-182px;z-index:2;display:flex;justify-content:center;align-items:center;border-radius:4px;color:#8d8f9e}::ng-deep .tui-image-editor-d-flex{display:flex!important}::ng-deep .tui-image-editor-flex-row{flex-direction:row!important}::ng-deep .tui-image-editor-flex-column{flex-direction:column!important}::ng-deep .tui-image-editor-flex-wrap{flex-wrap:wrap!important}::ng-deep .tui-image-editor-flex-nowrap{flex-wrap:wrap!important}::ng-deep .tui-image-editor-align-items-center{align-items:center!important}::ng-deep .tui-image-editor-align-self-center{align-self:center!important}::ng-deep .tui-image-editor-justify-content-center{justify-content:center!important}::ng-deep .tui-image-editor-justify-content-between{justify-content:space-between!important}::ng-deep .tui-image-editor-flex-grow-1{flex-grow:1!important;margin-block:4px;cursor:pointer;position:relative}::ng-deep .tui-image-editor-flex-grow-1 .tui-image-editor-canvas-container{min-height:300px;border:1px solid #E8EAED}::ng-deep .tui-image-editor-flex-grow-1 .tui-image-editor-canvas-container .lower-canvas{height:unset!important;width:unset!important;max-height:100%!important;max-width:100%!important;object-fit:contain!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important}::ng-deep .tui-image-editor-flex-grow-1 .tui-image-editor-canvas-container .upper-canvas{height:unset!important;width:unset!important;max-height:100%!important;max-width:100%!important;object-fit:contain!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important}::ng-deep .tui-image-editor-flex-grow-1 .button-background{position:absolute;inset:0px;background-color:#eff0f6;background-image:url(../favicon.ico);background-repeat:no-repeat;background-position:center;z-index:2}::ng-deep .tui-image-editor-h-100{height:100%!important}::ng-deep .tui-image-editor-w-100{width:100%!important}::ng-deep .tui-image-editor-p-1{padding:.25rem!important}::ng-deep .tui-image-editor-pb-1{padding-bottom:.25rem!important}::ng-deep .tui-image-editor-pb-2{padding-bottom:.5rem!important}::ng-deep .tui-image-editor-pb-3{padding-bottom:1rem!important}::ng-deep .tui-image-editor-pt-1{padding-top:.25rem!important}::ng-deep .tui-image-editor-pt-2{padding-top:.5rem!important}::ng-deep .tui-image-editor-pt-3{padding-top:1rem!important}::ng-deep .tui-image-editor-py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}::ng-deep .tui-image-editor-py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}::ng-deep .tui-image-editor-py-3{padding-top:1rem!important;padding-bottom:1rem!important}::ng-deep .tui-image-editor-px-1{padding-left:.25rem!important;padding-right:.25rem!important}::ng-deep .tui-image-editor-px-2{padding-left:.5rem!important;padding-right:.5rem!important}::ng-deep .tui-image-editor-px-3{padding-left:1rem!important;padding-right:1rem!important}::ng-deep .tui-image-editor-my-2{margin-top:.5rem;margin-bottom:.5rem}::ng-deep .tui-image-editor-my-3{margin-top:1rem;margin-bottom:1rem}::ng-deep .tui-image-editor-my-3.apply{display:none}::ng-deep .tui-image-editor-mb-2{margin-bottom:.5rem}::ng-deep .tui-image-editor-mb-3{margin-bottom:1rem}::ng-deep .tui-image-editor-container{background-color:#fff;border-radius:10px;position:relative}::ng-deep .tui-image-editor-container .tui-image-editor-submenu{background-color:#353535;position:absolute;width:100%;bottom:-176px;opacity:.8;height:181px;z-index:3}::ng-deep .tui-image-editor-container label{margin-bottom:0!important}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-item.disabled{cursor:not-allowed}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu svg>use{display:none}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .enabled svg:hover>use.hover,::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .enabled:hover svg>use.hover,::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .help.enabled svg>use.normal{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .help:not(.enabled) svg>use.disabled{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu>.tui-image-editor-item.tui-image-editor-item-separator{width:10px;padding:0}::ng-deep .tui-image-editor-container .tui-image-editor-controls{width:100%;background-color:#dedede;border-bottom-left-radius:22px;border-bottom-right-radius:22px}::ng-deep .tui-image-editor-container .tui-image-editor-controls svg>use{display:none}::ng-deep .tui-image-editor-container .tui-image-editor-controls svg>use.normal{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-controls .active svg>use.active{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-controls>.tui-image-editor-menu{font-size:16px;justify-content:center}::ng-deep .tui-image-editor-container .tui-image-editor-menu .tui-image-editor-item.active,::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-item.active{background-color:#ef736b;transition:all .3s ease;border-radius:6px}::ng-deep .tui-image-editor-container .svg_ic-menu{width:24px;height:24px;fill:#8a8a8a;stroke:#8a8a8a}::ng-deep .tui-image-editor-container .svg_ic-submenu{width:32px;height:32px}::ng-deep .tui-image-editor-container .tui-image-editor-submenu use.normal.use-default{fill-rule:evenodd;fill:#8a8a8a;stroke:#8a8a8a}::ng-deep .tui-image-editor-container .tui-image-editor-submenu use.active.use-default{fill-rule:evenodd;fill:#e9e9e9;stroke:#e9e9e9}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu{margin:0 auto;text-align:center;vertical-align:middle;border-radius:20px;z-index:2}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu use.normal.use-default,::ng-deep .tui-image-editor-container .tui-image-editor-menu use.normal.use-default{fill-rule:evenodd;fill:#3d3d3d;stroke:#3d3d3d}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu use.disabled.use-default,::ng-deep .tui-image-editor-container .tui-image-editor-menu use.disabled.use-default{fill-rule:evenodd;fill:#434343;stroke:#434343}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu use.hover.use-default,::ng-deep .tui-image-editor-container .tui-image-editor-menu use.hover.use-default{fill-rule:evenodd;fill:#e9e9e9;stroke:#e9e9e9}::ng-deep .tui-image-editor-container .tui-image-editor-icpartition{display:inline-block;background-color:#444;width:1px;height:24px}::ng-deep .tui-image-editor-container .tui-image-editor-partition>div{color:#3c3c3c;border-left:1px solid #3c3c3c}::ng-deep .tui-image-editor-container .tui-image-editor-partition>div{width:1px;height:52px;border-left:1px solid #3c3c3c;margin:0 8px}::ng-deep .tui-image-editor-container .tui-image-editor-item{position:relative;display:flex;border-radius:2px;padding:.25em .3em;cursor:pointer;margin:0 .25em;width:2em;height:2em;align-items:center;justify-content:center}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-item{padding-left:.25em;padding-right:.25em;width:2em}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-help-menu-item{background-color:#f8f8f8;border-radius:20px;padding-left:4px;padding-right:4px;margin:4px}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-help-menu-item:first-child{display:none!important}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu .tui-image-editor-help-menu-item tui-image-editor-menus-buttons-history{display:none}::ng-deep .tui-image-editor-container .tui-image-editor-help-menu>.tui-image-editor-item{padding-left:.25em;padding-right:.25em}::ng-deep .tui-image-editor-container .tui-image-editor-load-btn{position:absolute;left:0;right:0;display:inline-block;top:0;bottom:0;width:100%;cursor:pointer;opacity:0}::ng-deep .tui-image-editor-container .tui-image-editor-menu{padding-top:.5rem;padding-bottom:.5rem;overflow-x:auto;margin-left:4px;margin-right:4px}::ng-deep .tui-image-editor-container .tui-image-editor-overflowable-x{overflow-x:auto}::ng-deep .tui-image-editor-container .tie-icon-add-button,::ng-deep .tui-image-editor-container .tie-icon-add-button *{cursor:pointer}::ng-deep .tui-image-editor-container .tie-mask-image-file,::ng-deep .tui-image-editor-container .tie-icon-image-file{opacity:0;position:absolute;width:100%;height:100%;border:1px solid #008000;cursor:inherit;left:0;top:0}::ng-deep .tui-image-editor-container .tui-image-editor-submenu-align:first-child label>span{width:70px;display:inline-block;cursor:pointer}::ng-deep .tui-image-editor-container .tui-image-editor-menu-shape{white-space:nowrap}::ng-deep .tui-image-editor-container .tui-image-editor-checkbox-wrap.fixed-width{width:200px;white-space:normal}::ng-deep .tui-image-editor-container .tui-image-editor-checkbox{display:inline-block;margin:.25rem 0;color:#8a8a8a;font-weight:lighter;font-size:11px}::ng-deep .tui-image-editor-container .tui-image-editor-checkbox input[type=checkbox]:checked+span{color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-range-wrap label{vertical-align:baseline;font-size:11px;margin-right:7px;color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-range-wrap .tui-image-editor-range-value{cursor:default;width:40px;height:24px;outline:none;border-radius:2px;box-shadow:none;border:1px solid #d5d5d5;text-align:center;background-color:#1c1c1c;color:#fff;font-weight:lighter;vertical-align:baseline;font-family:Noto Sans,sans-serif;margin-left:4px}::ng-deep .tui-image-editor-container .tui-image-editor-range-wrap .tui-image-editor-range-value{color:#fff;font-weight:lighter;font-size:11px;border:1px solid #353535;background-color:#207c80}::ng-deep .tui-image-editor-container input[type=range]{-webkit-appearance:none;background:transparent}::ng-deep .tui-image-editor-container input[type=range]::-webkit-slider-thumb{-webkit-appearance:none}::ng-deep .tui-image-editor-container input[type=range]:focus{outline:none}::ng-deep .tui-image-editor-container input[type=range]::-ms-track{cursor:pointer;background:transparent;border-color:transparent;color:transparent}::ng-deep .tui-image-editor-container input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:1px solid #0d6efd;height:12px;width:12px;border-radius:12px;background:#0d6efd;cursor:pointer;margin-top:-6px}::ng-deep .tui-image-editor-container input[type=range]:disabled::-webkit-slider-thumb,::ng-deep .tui-image-editor-container input[type=range].disabled::-webkit-slider-thumb{cursor:not-allowed;background:#ced4da;border-color:#ced4da}::ng-deep .tui-image-editor-container input[type=range]::-moz-range-thumb{border:1px solid #0d6efd;height:12px;width:12px;border-radius:12px;background:#0d6efd;cursor:pointer}::ng-deep .tui-image-editor-container input[type=range]:disabled::-moz-range-thumb,::ng-deep .tui-image-editor-container input[type=range].disabled::-moz-range-thumb{cursor:not-allowed;background:#ced4da;border-color:#ced4da}::ng-deep .tui-image-editor-container input[type=range]::-ms-thumb{border:1px solid #0d6efd;height:12px;width:12px;border-radius:12px;background:#0d6efd;cursor:pointer}::ng-deep .tui-image-editor-container input[type=range]:disabled::-ms-thumb,::ng-deep .tui-image-editor-container input[type=range].disabled::-ms-thumb{cursor:not-allowed;background:#ced4da;border-color:#ced4da}::ng-deep .tui-image-editor-container input[type=range]::-webkit-slider-runnable-track{height:2px;cursor:pointer;background:#fff;border-radius:1.3px;border:.2px solid #fff}::ng-deep .tui-image-editor-container input[type=range]:disabled::-webkit-slider-runnable-track,::ng-deep .tui-image-editor-container input[type=range].disabled::-webkit-slider-runnable-track{cursor:not-allowed;background:#e9ecef;border-color:#e9ecef}::ng-deep .tui-image-editor-container input[type=range]:focus::-webkit-slider-runnable-track{background:#fff}::ng-deep .tui-image-editor-container input[type=range]::-moz-range-track{height:2px;cursor:pointer;background:#fff;border-radius:1.3px;border:.2px solid #fff}::ng-deep .tui-image-editor-container input[type=range]:disabled::-moz-range-track,::ng-deep .tui-image-editor-container input[type=range].disabled::-moz-range-track{cursor:not-allowed;background:#e9ecef;border-color:#e9ecef}::ng-deep .tui-image-editor-container input[type=range]::-ms-track{height:2px;cursor:pointer;background:transparent;border-color:transparent;border-width:16px 0;color:transparent}::ng-deep .tui-image-editor-container input[type=range]:disabled::-ms-track,::ng-deep .tui-image-editor-container input[type=range].disabled::-ms-track{cursor:not-allowed;background:#e9ecef;border-color:#e9ecef}::ng-deep .tui-image-editor-container input[type=range]::-ms-fill-lower{background:#fff;border:.2px solid #fff;border-radius:2.6px}::ng-deep .tui-image-editor-container input[type=range]:focus::-ms-fill-lower{background:#fff}::ng-deep .tui-image-editor-container input[type=range]::-ms-fill-upper{background:#fff;border:.2px solid #fff;border-radius:2.6px}::ng-deep .tui-image-editor-container input[type=range]:focus::-ms-fill-upper{background:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button.preset{margin:0 9px 0 5px}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-submenu-item .tui-image-editor-button{position:relative;cursor:pointer;display:inline-block;font-weight:400;font-size:11px;margin:0 9px;text-align:center}::ng-deep .tui-image-editor-container .tui-image-editor-submenu svg>use{display:none}::ng-deep .tui-image-editor-container .tui-image-editor-submenu svg>use.normal{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button:hover{cursor:pointer}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.apply svg>use.active{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.apply>label{color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.active>label{color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button>label{color:#8a8a8a;font-weight:lighter}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.tie-draw-color label,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.tie-color-stroke label,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.tie-color-fill label,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.tie-icon-color label,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.tie-text-color label{color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button:hover svg>use.active,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.active svg>use.active{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button:hover>label,::ng-deep .tui-image-editor-container .tui-image-editor-submenu .tui-image-editor-button.active>label{color:#fff;cursor:pointer}::ng-deep .tie-crop-button .tui-image-editor-button.preset.active svg>use.active,::ng-deep .tie-crop-preset-button .tui-image-editor-button.preset.active svg>use.active{display:block}::ng-deep .tie-crop-preset-button>.preset>label{color:#fff;font-weight:lighter}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual{display:none;position:absolute;width:100%;height:100%;border:1px solid rgba(255,255,255,.7)}::ng-deep .tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip,::ng-deep .tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor{transition:none}::ng-deep .tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-grid-visual,::ng-deep .tui-image-editor-container .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-grid-visual{display:block}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table{width:100%;height:100%;border-collapse:collapse}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td{border:1px solid rgba(255,255,255,.3)}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td.dot:before{content:\"\";position:absolute;box-sizing:border-box;width:10px;height:10px;border:0;box-shadow:0 0 1px #0000004d;border-radius:100%;background-color:#fff}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td.dot.left-top:before{top:-5px;left:-5px}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td.dot.right-top:before{top:-5px;right:-5px}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td.dot.left-bottom:before{bottom:-5px;left:-5px}::ng-deep .tui-image-editor-container .tui-image-editor-grid-visual table td.dot.right-bottom:before{bottom:-5px;right:-5px}::ng-deep .tie-text-color-picker,::ng-deep .tie-draw-color-picker,::ng-deep .tie-icon-color-picker,::ng-deep .tie-filter-tint-color-picker,::ng-deep .tie-filter-multiply-color-picker,::ng-deep .tie-filter-blend-color-picker{border-radius:100%;width:32px;height:32px;border:1px solid #1e1e1e;cursor:pointer;font-size:16px}::ng-deep .tie-panel-history{max-height:300px;overflow:auto;padding:.5rem 0}::ng-deep .tie-panel-history .history-list{margin-bottom:0;margin-top:0;list-style-type:none;padding-left:0;padding-right:0}::ng-deep .tie-panel-history .history-list .history-item{min-width:255px;padding:3px 0}::ng-deep .tie-panel-history .history-list .history-item.disabled-item{color:#333;opacity:.3}::ng-deep .tie-panel-history .history-list .history-item:not(:last-child){border-bottom:1px solid black}::ng-deep .tie-panel-history .history-list .history-item.selected-item{background-color:#eee}::ng-deep .tie-panel-history .history-list .history-item:hover{background-color:#e2e2e2}::ng-deep .tie-panel-history .history-list .history-item .history-item-text{flex:1;overflow:hidden;text-overflow:ellipsis;word-break:break-word}::ng-deep .tie-panel-history .history-list .history-item .history-item-text .history-item-text-details{font-size:.85em}::ng-deep .tie-panel-history .history-list .history-item .tui-image-editor-history-item{padding-left:.5em;padding-right:.5em;cursor:pointer}::ng-deep .tie-panel-history .history-list .history-item .tui-image-editor-history-item .history-item-icon{margin-right:.5em}::ng-deep .tie-panel-history .history-list .history-item .tui-image-editor-history-item .history-item-icon svg{width:1em;height:1em}::ng-deep .tie-panel-history .history-list .history-item .tui-image-editor-history-item .history-item-checkbox{margin-left:auto}::ng-deep .tie-panel-history .history-list .history-item .tui-image-editor-history-item .history-item-checkbox svg{width:1em;height:1em;margin-left:.5em}::ng-deep .fade{transition:opacity .15s linear}::ng-deep .popover{position:absolute;top:0;left:0;z-index:10070;display:block;max-width:276px;font-family:var(--bs-font-sans-serif);font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}::ng-deep .popover .arrow{position:absolute;display:block;width:1rem;height:.5rem}::ng-deep .popover .arrow:before,::ng-deep .popover .arrow:after{position:absolute;display:block;content:\"\";border-color:transparent;border-style:solid}::ng-deep .bs-popover-top>.arrow,::ng-deep .bs-popover-auto[data-popper-placement^=top]>.arrow{bottom:calc(-.5rem - 1px)}::ng-deep .bs-popover-top>.arrow:before,::ng-deep .bs-popover-auto[data-popper-placement^=top]>.arrow:before{bottom:0;border-width:.5rem .5rem 0;border-top-color:#00000040}::ng-deep .bs-popover-top>.arrow:after,::ng-deep .bs-popover-auto[data-popper-placement^=top]>.arrow:after{bottom:1px;border-width:.5rem .5rem 0;border-top-color:#fff}::ng-deep .bs-popover-end>.arrow,::ng-deep .bs-popover-auto[data-popper-placement^=right]>.arrow{left:calc(-.5rem - 1px);width:.5rem;height:1rem}::ng-deep .bs-popover-end>.arrow:before,::ng-deep .bs-popover-auto[data-popper-placement^=right]>.arrow:before{left:0;border-width:.5rem .5rem .5rem 0;border-right-color:#00000040}::ng-deep .bs-popover-end>.arrow:after,::ng-deep .bs-popover-auto[data-popper-placement^=right]>.arrow:after{left:1px;border-width:.5rem .5rem .5rem 0;border-right-color:#fff}::ng-deep .bs-popover-bottom>.arrow,::ng-deep .bs-popover-auto[data-popper-placement^=bottom]>.arrow{top:calc(-.5rem - 1px)}::ng-deep .bs-popover-bottom>.arrow:before,::ng-deep .bs-popover-auto[data-popper-placement^=bottom]>.arrow:before{top:0;border-width:0 .5rem .5rem .5rem;border-bottom-color:#00000040}::ng-deep .bs-popover-bottom>.arrow:after,::ng-deep .bs-popover-auto[data-popper-placement^=bottom]>.arrow:after{top:1px;border-width:0 .5rem .5rem .5rem;border-bottom-color:#fff}::ng-deep .bs-popover-bottom .popover-header:before,::ng-deep .bs-popover-auto[data-popper-placement^=bottom] .popover-header:before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:\"\";border-bottom:1px solid #f0f0f0}::ng-deep .bs-popover-start>.arrow,::ng-deep .bs-popover-auto[data-popper-placement^=left]>.arrow{right:calc(-.5rem - 1px);width:.5rem;height:1rem}::ng-deep .bs-popover-start>.arrow:before,::ng-deep .bs-popover-auto[data-popper-placement^=left]>.arrow:before{right:0;border-width:.5rem 0 .5rem .5rem;border-left-color:#00000040}::ng-deep .bs-popover-start>.arrow:after,::ng-deep .bs-popover-auto[data-popper-placement^=left]>.arrow:after{right:1px;border-width:.5rem 0 .5rem .5rem;border-left-color:#fff}::ng-deep .popover-header{padding:.5rem 1rem;margin-bottom:0;font-size:1rem;background-color:#f0f0f0;border-bottom:1px solid #d8d8d8;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}::ng-deep .popover-header:empty{display:none}::ng-deep .popover-body{padding:1rem;color:#212529}::ng-deep .tie-history-popover .popover-body{padding:0}::ng-deep .color-picker.open{z-index:1063}.new-template{display:flex;height:100%}.new-template ::ng-deep .tui-image-editor-overflowable-x{overflow-x:unset}.new-template ::ng-deep .color-picker{right:50px!important;top:5px!important;left:unset!important}.new-template .image-load-container{flex:1}.new-template .tools-container{border-left:1px solid #dcdfe4;width:80px;display:flex;align-items:center;justify-content:space-between;padding-top:15px;padding-bottom:15px;flex-direction:column}.new-template .tools-container .primary-tools{height:95%}.new-template .tools-container .primary-tools .selected-option{text-align:center}.new-template .tools-container .primary-tools .hr{height:1px;background-color:#dcdfe4;margin-top:10px}.new-template .tools-container .primary-tools .menu{height:90%;display:flex;flex-direction:column;flex-wrap:wrap-reverse;padding:15px;overflow-x:hidden;gap:15px}.new-template .tools-container .primary-tools .menu .tool-icon ::ng-deep .tui-image-editor-item{border-radius:50%;border:1px solid #E8EAED}.new-template .tools-container .primary-tools .menu .tool-icon ::ng-deep .tui-image-editor-item.active{background-color:#207c8026}.new-template .tools-container .primary-tools .menu .tool-icon ::ng-deep .tui-image-editor-item.active .svg_ic-menu{fill:#207c80;stroke:#207c80}.new-template .tools-container .primary-tools .menu .tool-icon-group{border-radius:50px;border:1px solid #E8EAED}.new-template .tools-container .primary-tools .sub-menu .tui-image-editor-submenu.new{position:absolute;background-color:#353535;top:0;right:80px;z-index:1000;opacity:.8;color:#fff;width:-moz-fit-content;width:fit-content;padding:10px}\n"] }]
|
|
2995
|
+
}], ctorParameters: function () { return [{ type: HistoryService }]; }, propDecorators: { imageContainer: [{
|
|
2996
|
+
type: ViewChild,
|
|
2997
|
+
args: ['imageContainer']
|
|
2998
|
+
}], loadBtn: [{
|
|
2999
|
+
type: ViewChild,
|
|
3000
|
+
args: ['loadBtn']
|
|
3001
|
+
}], onInitialization: [{
|
|
3002
|
+
type: Output
|
|
3003
|
+
}], options: [{
|
|
3004
|
+
type: Input
|
|
3005
|
+
}], initialImage: [{
|
|
3006
|
+
type: Input
|
|
3007
|
+
}], template: [{
|
|
3008
|
+
type: Input
|
|
3009
|
+
}] } });
|
|
3010
|
+
|
|
3011
|
+
class SvgDefinitionsComponent {
|
|
3012
|
+
constructor() { }
|
|
3013
|
+
}
|
|
3014
|
+
SvgDefinitionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SvgDefinitionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3015
|
+
SvgDefinitionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SvgDefinitionsComponent, selector: "tui-image-editor-svg-definitions", ngImport: i0, template: "\r\n<svg\r\nxmlns=\"http://www.w3.org/2000/svg\"\r\nxmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\ndisplay=\"none\"\r\n>\r\n<defs id=\"tui-image-editor-svg-default-icons\">\r\n <symbol id=\"ic-apply\" viewBox=\"0 0 24 24\">\r\n <path d=\"M0 0h24v24H0z\" stroke=\"none\" fill=\"none\"></path>\r\n <path fill=\"none\" stroke=\"inherit\" d=\"M4 12.011l5 5L20.011 6\"></path>\r\n </symbol>\r\n <symbol id=\"ic-cancel\" viewBox=\"0 0 24 24\">\r\n <path d=\"M0 0h24v24H0z\" fill=\"none\" stroke=\"none\"></path>\r\n <path fill=\"none\" stroke=\"inherit\" d=\"M6 6l12 12M18 6L6 18\"></path>\r\n </symbol>\r\n <symbol id=\"ic-crop\" viewBox=\"0 0 24 24\">\r\n <path d=\"M0 0h24v24H0z\" stroke=\"none\" fill=\"none\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M4 0h1v20a1 1 0 0 1-1-1V0zM20 17h-1V5h1v12zm0 2v5h-1v-5h1z\"\r\n ></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M5 19h19v1H5zM4.762 4v1H0V4h4.762zM7 4h12a1 1 0 0 1 1 1H7V4z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-delete-all\" viewBox=\"0 0 24 24\">\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M5 23H3a1 1 0 0 1-1-1V6h1v16h2v1zm16-10h-1V6h1v7zM9 13H8v-3h1v3zm3 0h-1v-3h1v3zm3 0h-1v-3h1v3zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z\"\r\n ></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M0 3h23v1H0zM11.286 21H8.714L8 23H7l1-2.8V20h.071L9.5 16h1l1.429 4H12v.2l1 2.8h-1l-.714-2zm-.357-1L10 17.4 9.071 20h1.858zM20 22h3v1h-4v-7h1v6zm-5 0h3v1h-4v-7h1v6z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-delete\" viewBox=\"0 0 24 24\">\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M3 6v16h17V6h1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6h1zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z\"\r\n ></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M0 3h23v1H0zM8 10h1v6H8v-6zm3 0h1v6h-1v-6zm3 0h1v6h-1v-6z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-draw-free\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n d=\"M2.5 20.929C2.594 10.976 4.323 6 7.686 6c5.872 0 2.524 19 7.697 19s1.89-14.929 6.414-14.929 1.357 10.858 5.13 10.858c1.802 0 2.657-2.262 2.566-6.786\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-draw-line\" viewBox=\"0 0 32 32\">\r\n <path fill=\"none\" stroke=\"inherit\" d=\"M2 15.5h28\"></path>\r\n </symbol>\r\n <symbol id=\"ic-draw\" viewBox=\"0 0 24 24\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n d=\"M2.5 21.5H5c.245 0 .48-.058.691-.168l.124-.065.14.01c.429.028.85-.127 1.16-.437L22.55 5.405a.5.5 0 0 0 0-.707l-3.246-3.245a.5.5 0 0 0-.707 0L3.162 16.888a1.495 1.495 0 0 0-.437 1.155l.01.14-.065.123c-.111.212-.17.448-.17.694v2.5z\"\r\n ></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M16.414 3.707l3.89 3.89-.708.706-3.889-3.889z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-filter\" viewBox=\"0 0 24 24\">\r\n <path d=\"M0 0h24v24H0z\" fill=\"none\" stroke=\"none\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M12 7v1H2V7h10zm6 0h4v1h-4V7zM12 16v1h10v-1H12zm-6 0H2v1h4v-1z\"\r\n ></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M8.5 20a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM15.5 11a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-flip-reset\" viewBox=\"0 0 31 32\">\r\n <path fill=\"none\" stroke=\"none\" d=\"M31 0H0v32h31z\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M28 16a8 8 0 0 1-8 8H3v-1h1v-7H3a8 8 0 0 1 8-8h17v1h-1v7h1zM11 9a7 7 0 0 0-7 7v7h16a7 7 0 0 0 7-7V9H11z\"\r\n ></path>\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"square\"\r\n d=\"M24 5l3.5 3.5L24 12M7 20l-3.5 3.5L7 27\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-flip-x\" viewBox=\"0 0 32 32\">\r\n <path fill=\"none\" stroke=\"none\" d=\"M32 32H0V0h32z\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M17 32h-1V0h1zM27.167 11l.5 3h-1.03l-.546-3h1.076zm-.5-3h-1.122L25 5h-5V4h5.153a1 1 0 0 1 .986.836L26.667 8zm1.5 9l.5 3h-.94l-.545-3h.985zm1 6l.639 3.836A1 1 0 0 1 28.819 28H26v-1h3l-.726-4h.894zM23 28h-3v-1h3v1zM13 4v1H7L3 27h10v1H3.18a1 1 0 0 1-.986-1.164l3.666-22A1 1 0 0 1 6.847 4H13z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-flip-y\" viewBox=\"0 0 32 32\">\r\n <path fill=\"none\" stroke=\"none\" d=\"M0 0v32h32V0z\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M0 16v1h32v-1zM11 27.167l3 .5v-1.03l-3-.546v1.076zm-3-.5v-1.122L5 25v-5H4v5.153a1 1 0 0 0 .836.986L8 26.667zm9 1.5l3 .5v-.94l-3-.545v.985zm6 1l3.836.639A1 1 0 0 0 28 28.82V26h-1v3l-4-.727v.894zM28 23v-3h-1v3h1zM4 13h1V7l22-4v10h1V3.18a1 1 0 0 0-1.164-.986l-22 3.667A1 1 0 0 0 4 6.847V13z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-flip\" viewBox=\"0 0 24 24\">\r\n <path d=\"M0 0h24v24H0z\" fill=\"none\" stroke=\"none\"></path>\r\n <path\r\n fill=\"inherit\"\r\n stroke=\"none\"\r\n d=\"M11 0h1v24h-1zM19 21v-1h2v-2h1v2a1 1 0 0 1-1 1h-2zm-2 0h-3v-1h3v1zm5-5h-1v-3h1v3zm0-5h-1V8h1v3zm0-5h-1V4h-2V3h2a1 1 0 0 1 1 1v2zm-5-3v1h-3V3h3zM9 3v1H2v16h7v1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-history\" viewBox=\"0 0 24 24\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"none\"\r\n d=\"M0 0H24V24H0z\"\r\n transform=\"translate(-740 -16) translate(547 8) translate(193 8)\"\r\n ></path>\r\n <path\r\n fill=\"inherit\"\r\n stroke=\"none\"\r\n d=\"M12.5 1C18.299 1 23 5.701 23 11.5S18.299 22 12.5 22c-5.29 0-9.665-3.911-10.394-8.999h1.012C3.838 17.534 7.764 21 12.5 21c5.247 0 9.5-4.253 9.5-9.5S17.747 2 12.5 2C8.49 2 5.06 4.485 3.666 8H3h4v1H2V4h1v3.022C4.68 3.462 8.303 1 12.5 1zm.5 5l-.001 5.291 2.537 2.537-.708.708L12.292 12H12V6h1z\"\r\n transform=\"translate(-740 -16) translate(547 8) translate(193 8)\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-history-check\" viewBox=\"0 0 12 12\">\r\n <g fill=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n stroke=\"#555555\"\r\n d=\"M4.5 -1L1.5 2 6.5 7\"\r\n transform=\"translate(-60 -804) translate(60 804) translate(2 3) rotate(-90 4 3)\"\r\n ></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-crop\" viewBox=\"0 0 12 12\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n d=\"M0 0H12V12H0z\"\r\n transform=\"translate(-84 -804) translate(84 804)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M2 0h1v10c-.552 0-1-.448-1-1V0zM10 9v3H9V9h1zM9 2h1v6H9V2z\"\r\n transform=\"translate(-84 -804) translate(84 804)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M2 9H12V10H2zM9 2c.513 0 .936.386.993.883L10 3H3V2h6zM2 3H0V2h2v1z\"\r\n transform=\"translate(-84 -804) translate(84 804)\"\r\n ></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-draw\" viewBox=\"0 0 12 12\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n d=\"M0 1H12V13H0z\"\r\n transform=\"translate(-156 -804) translate(156 803)\"\r\n ></path>\r\n <path\r\n stroke=\"#434343\"\r\n d=\"M9.622 1.584l1.835 1.658-8.31 8.407L.5 12.5V11l9.122-9.416z\"\r\n transform=\"translate(-156 -804) translate(156 803)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M7.628 3.753L10.378 3.753 10.378 4.253 7.628 4.253z\"\r\n transform=\"translate(-156 -804) translate(156 803) rotate(45 9.003 4.003)\"\r\n ></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-filter\" viewBox=\"0 0 12 12\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n d=\"M0 0H12V12H0z\"\r\n transform=\"translate(-276 -804) translate(276 804)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M12 3v1H9V3h3zM7 4H0V3h7v1z\"\r\n transform=\"translate(-276 -804) translate(276 804)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M12 8v1H9V8h3zM7 9H0V8h7v1z\"\r\n transform=\"translate(-276 -804) translate(276 804) matrix(-1 0 0 1 12 0)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M8 1c1.105 0 2 .895 2 2s-.895 2-2 2-2-.895-2-2 .895-2 2-2zm0 1c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zM4 7c1.105 0 2 .895 2 2s-.895 2-2 2-2-.895-2-2 .895-2 2-2zm0 1c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1z\"\r\n transform=\"translate(-276 -804) translate(276 804)\"\r\n ></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-flip\" viewBox=\"0 0 12 12\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n d=\"M0 0H12V12H0z\"\r\n transform=\"translate(-108 -804) translate(108 804)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M6 0L7 0 7 12 6 12zM11 10V9h1v1.5c0 .276-.224.5-.5.5H10v-1h1zM5 1v1H1v8h4v1H.5c-.276 0-.5-.224-.5-.5v-9c0-.276.224-.5.5-.5H5zm7 5v2h-1V6h1zm0-3v2h-1V3h1zM9 1v1H7V1h2zm2.5 0c.276 0 .5.224.5.5V2h-2V1h1.5zM9 11H7v-1h2v1z\"\r\n transform=\"translate(-108 -804) translate(108 804)\"\r\n ></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-icon\" viewBox=\"0 0 12 12\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n d=\"M0 0H12V12H0z\"\r\n transform=\"translate(-204 -804) translate(204 804)\"\r\n ></path>\r\n <path\r\n stroke=\"#434343\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"1.1\"\r\n d=\"M6 9.568L2.601 11 2.975 7.467 0.5 4.82 4.13 4.068 6 1 7.87 4.068 11.5 4.82 9.025 7.467 9.399 11z\"\r\n transform=\"translate(-204 -804) translate(204 804)\"\r\n ></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-mask\" viewBox=\"0 0 12 12\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <g transform=\"translate(-252 -804) translate(252 804)\">\r\n <path d=\"M0 0H12V12H0z\"></path>\r\n <circle cx=\"6\" cy=\"6\" r=\"2.5\" stroke=\"#444\"></circle>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M11.5 0c.276 0 .5.224.5.5v11c0 .276-.224.5-.5.5H.5c-.276 0-.5-.224-.5-.5V.5C0 .224.224 0 .5 0h11zM11 1H1v10h10V1z\"\r\n ></path>\r\n </g>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-rotate\" viewBox=\"0 0 12 12\">\r\n <defs>\r\n <path\r\n id=\"rfn4rylffa\"\r\n d=\"M7 12c-.335 0-.663-.025-.983-.074C3.171 11.492 1 9.205 1 6.444c0-1.363.534-2.613 1.415-3.58\"\r\n ></path>\r\n <mask\r\n id=\"6f9gn2dysb\"\r\n width=\"6\"\r\n height=\"9.136\"\r\n x=\"0\"\r\n y=\"0\"\r\n maskUnits=\"objectBoundingBox\"\r\n >\r\n <use xlink:href=\"#rfn4rylffa\" stroke=\"434343\"></use>\r\n </mask>\r\n </defs>\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <g transform=\"translate(-132 -804) translate(132 804)\">\r\n <path d=\"M0 0.5H12V12.5H0z\"></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M6.5 1C9.538 1 12 3.462 12 6.5c0 2.37-1.5 4.39-3.6 5.163l-.407-.916C9.744 10.13 11 8.462 11 6.5 11 4.015 8.985 2 6.5 2c-.777 0-1.509.197-2.147.544L4 1.75l-.205-.04C4.594 1.258 5.517 1 6.5 1z\"\r\n ></path>\r\n <use\r\n stroke=\"#434343\"\r\n stroke-dasharray=\"2 1.25\"\r\n stroke-width=\"1\"\r\n mask=\"url(#6f9gn2dysb)\"\r\n xlink:href=\"#rfn4rylffa\"\r\n ></use>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M4.279 0L6 1.75 4.25 3.571 3.543 2.864 4.586 1.75 3.572 0.707z\"\r\n transform=\"matrix(-1 0 0 1 9.543 0)\"\r\n ></path>\r\n </g>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-shape\" viewBox=\"0 0 12 12\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n d=\"M0 0H12V12H0z\"\r\n transform=\"translate(-180 -804) translate(180 804)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M11.5 4c.276 0 .5.224.5.5v7c0 .276-.224.5-.5.5h-7c-.276 0-.5-.224-.5-.5V8.8h1V11h6V5H8.341l-.568-1H11.5z\"\r\n transform=\"translate(-180 -804) translate(180 804)\"\r\n ></path>\r\n <path\r\n stroke=\"#434343\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n d=\"M4.5 0.5L8.5 7.611 0.5 7.611z\"\r\n transform=\"translate(-180 -804) translate(180 804)\"\r\n ></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-text\" viewBox=\"0 0 12 12\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n d=\"M0 0H12V12H0z\"\r\n transform=\"translate(-228 -804) translate(228 804)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M2 1h8c.552 0 1 .448 1 1H1c0-.552.448-1 1-1z\"\r\n transform=\"translate(-228 -804) translate(228 804)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M1 1H2V3H1zM10 1H11V3H10zM5.5 1L6.5 1 6.5 11 5.5 11z\"\r\n transform=\"translate(-228 -804) translate(228 804)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M4 10H8V11H4z\"\r\n transform=\"translate(-228 -804) translate(228 804)\"\r\n ></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-load\" viewBox=\"0 0 12 12\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n d=\"M0 0H12V12H0z\"\r\n transform=\"translate(-324 -805) translate(324 805)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M5 0c.552 0 1 .448 1 1v1h5.5c.276 0 .5.224.5.5v8c0 .276-.224.5-.5.5H.5c-.276 0-.5-.224-.5-.5V1c0-.552.448-1 1-1h4zm0 1H1v9h10V3H5V1z\"\r\n transform=\"translate(-324 -805) translate(324 805)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M1 2L5 2 5 3 1 3z\"\r\n transform=\"translate(-324 -805) translate(324 805)\"\r\n ></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-delete\" viewBox=\"0 0 12 12\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <g fill=\"#434343\">\r\n <path\r\n d=\"M2 9h8V1h1v8.5c0 .276-.224.5-.5.5h-9c-.276 0-.5-.224-.5-.5V1h1v8zM0 0H12V1H0z\"\r\n transform=\"translate(-300 -804) translate(300 804) translate(0 2)\"\r\n ></path>\r\n <path\r\n d=\"M4 3H5V7H4zM7 3H8V7H7z\"\r\n transform=\"translate(-300 -804) translate(300 804) translate(0 2)\"\r\n ></path>\r\n <path\r\n d=\"M4 1h4V0h1v1.5c0 .276-.224.5-.5.5h-5c-.276 0-.5-.224-.5-.5V0h1v1z\"\r\n transform=\"translate(-300 -804) translate(300 804) matrix(1 0 0 -1 0 2)\"\r\n ></path>\r\n </g>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-group\" viewBox=\"0 0 24 24\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <g transform=\"translate(-348 -804) translate(348 804)\">\r\n <path d=\"M0 0H12V12H0z\"></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M1 9v2h1v1H.5c-.276 0-.5-.224-.5-.5V9h1zm11 1v1.5c0 .276-.224.5-.5.5H9v-1h2v-1h1zm-4 1v1H6v-1h2zm-3 0v1H3v-1h2zm7-4v2h-1V7h1zM1 6v2H0V6h1zm11-2v2h-1V4h1zM1 3v2H0V3h1zm10.5-3c.276 0 .5.224.5.5V3h-1V1h-1V0h1.5zM6 0v1H4V0h2zm3 0v1H7V0h2zM0 .5C0 .224.224 0 .5 0H3v1H1v1H0V.5zM9.5 4c.276 0 .5.224.5.5v5c0 .276-.224.5-.5.5h-5c-.276 0-.5-.224-.5-.5V8.355c.317.094.652.145 1 .145V9h4V5h-.5c0-.348-.05-.683-.145-1H9.5z\"\r\n ></path>\r\n <circle cx=\"5\" cy=\"5\" r=\"2.5\" stroke=\"#434343\"></circle>\r\n </g>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-icon-arrow-2\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n d=\"M21.793 18.5H2.5v-5h18.935l-7.6-8h5.872l10.5 10.5-10.5 10.5h-5.914l8-8z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-icon-arrow-3\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n d=\"M25.288 16.42L14.208 27.5H6.792l11.291-11.291L6.826 4.5h7.381l11.661 11.661-.58.258z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-icon-arrow\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n d=\"M2.5 11.5v9h18v5.293L30.293 16 20.5 6.207V11.5h-18z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-icon-bubble\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n d=\"M22.207 24.5L16.5 30.207V24.5H8A6.5 6.5 0 0 1 1.5 18V9A6.5 6.5 0 0 1 8 2.5h16A6.5 6.5 0 0 1 30.5 9v9a6.5 6.5 0 0 1-6.5 6.5h-1.793z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-icon-heart\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill-rule=\"nonzero\"\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n d=\"M15.996 30.675l1.981-1.79c7.898-7.177 10.365-9.718 12.135-13.012.922-1.716 1.377-3.37 1.377-5.076 0-4.65-3.647-8.297-8.297-8.297-2.33 0-4.86 1.527-6.817 3.824l-.38.447-.381-.447C13.658 4.027 11.126 2.5 8.797 2.5 4.147 2.5.5 6.147.5 10.797c0 1.714.46 3.375 1.389 5.098 1.775 3.288 4.26 5.843 12.123 12.974l1.984 1.806z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-icon-load\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n d=\"M17.314 18.867l1.951-2.53 4 5.184h-17l6.5-8.84 4.549 6.186z\"\r\n ></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01z\"\r\n ></path>\r\n <path stroke=\"none\" fill=\"inherit\" d=\"M25 3h1v9h-1z\"></path>\r\n <path fill=\"none\" stroke=\"inherit\" d=\"M22 6l3.5-3.5L29 6\"></path>\r\n </symbol>\r\n <symbol id=\"ic-icon-location\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n d=\"M16 31.28C23.675 23.302 27.5 17.181 27.5 13c0-6.351-5.149-11.5-11.5-11.5S4.5 6.649 4.5 13c0 4.181 3.825 10.302 11.5 18.28z\"\r\n ></path>\r\n <circle fill=\"none\" stroke=\"inherit\" cx=\"16\" cy=\"13\" r=\"4.5\"></circle>\r\n </symbol>\r\n <symbol id=\"ic-icon-polygon\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n d=\"M.576 16L8.29 29.5h15.42L31.424 16 23.71 2.5H8.29L.576 16z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-icon-star-2\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n d=\"M19.446 31.592l2.265-3.272 3.946.25.636-3.94 3.665-1.505-1.12-3.832 2.655-2.962-2.656-2.962 1.12-3.832-3.664-1.505-.636-3.941-3.946.25-2.265-3.271L16 3.024 12.554 1.07 10.289 4.34l-3.946-.25-.636 3.941-3.665 1.505 1.12 3.832L.508 16.33l2.656 2.962-1.12 3.832 3.664 1.504.636 3.942 3.946-.25 2.265 3.27L16 29.638l3.446 1.955z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-icon-star\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n d=\"M25.292 29.878l-1.775-10.346 7.517-7.327-10.388-1.51L16 1.282l-4.646 9.413-10.388 1.51 7.517 7.327-1.775 10.346L16 24.993l9.292 4.885z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-icon\" viewBox=\"0 0 24 24\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n d=\"M11.923 19.136L5.424 22l.715-7.065-4.731-5.296 6.94-1.503L11.923 2l3.574 6.136 6.94 1.503-4.731 5.296L18.42 22z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-mask-load\" viewBox=\"0 0 32 32\">\r\n <path stroke=\"none\" fill=\"none\" d=\"M0 0h32v32H0z\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01zM15 23a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-1a5 5 0 1 0 0-10 5 5 0 0 0 0 10z\"\r\n ></path>\r\n <path stroke=\"none\" fill=\"inherit\" d=\"M25 3h1v9h-1z\"></path>\r\n <path fill=\"none\" stroke=\"inherit\" d=\"M22 6l3.5-3.5L29 6\"></path>\r\n </symbol>\r\n <symbol id=\"ic-mask\" viewBox=\"0 0 24 24\">\r\n <circle cx=\"12\" cy=\"12\" r=\"4.5\" stroke=\"inherit\" fill=\"none\"></circle>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M2 1h20a1 1 0 0 1 1 1v20a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm0 1v20h20V2H2z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-redo\" viewBox=\"0 0 24 24\">\r\n <path d=\"M0 0h24v24H0z\" opacity=\".5\" fill=\"none\" stroke=\"none\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M21 6H9a6 6 0 1 0 0 12h12v1H9A7 7 0 0 1 9 5h12v1z\"\r\n ></path>\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"square\"\r\n d=\"M19 3l2.5 2.5L19 8\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-reset\" viewBox=\"0 0 24 24\">\r\n <path d=\"M0 0h24v24H0z\" opacity=\".5\" stroke=\"none\" fill=\"none\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M2 13v-1a7 7 0 0 1 7-7h13v1h-1v5h1v1a7 7 0 0 1-7 7H2v-1h1v-5H2zm7-7a6 6 0 0 0-6 6v6h12a6 6 0 0 0 6-6V6H9z\"\r\n ></path>\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"square\"\r\n d=\"M19 3l2.5 2.5L19 8M5 16l-2.5 2.5L5 21\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-rotate-clockwise\" viewBox=\"0 0 32 32\">\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M29 17h-.924c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12C4.076 10.398 9.407 5.041 16 5V4C8.82 4 3 9.82 3 17s5.82 13 13 13 13-5.82 13-13z\"\r\n ></path>\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"square\"\r\n d=\"M16 1.5l4 3-4 3\"\r\n ></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n fill-rule=\"nonzero\"\r\n d=\"M16 4h4v1h-4z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-rotate-counterclockwise\" viewBox=\"0 0 32 32\">\r\n <path\r\n stroke=\"none\"\r\n d=\"M3 17h.924c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.602-5.331-11.96-11.924-12V4c7.18 0 13 5.82 13 13s-5.82 13-13 13S3 24.18 3 17z\"\r\n ></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n fill-rule=\"nonzero\"\r\n d=\"M12 4h4v1h-4z\"\r\n ></path>\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"square\"\r\n d=\"M16 1.5l-4 3 4 3\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-rotate\" viewBox=\"0 0 24 24\">\r\n <path d=\"M0 0h24v24H0z\" fill=\"none\" stroke=\"none\"></path>\r\n <path\r\n fill=\"inherit\"\r\n stroke=\"none\"\r\n d=\"M8.349 22.254a10.002 10.002 0 0 1-2.778-1.719l.65-.76a9.002 9.002 0 0 0 2.495 1.548l-.367.931zm2.873.704l.078-.997a9 9 0 1 0-.557-17.852l-.14-.99A10.076 10.076 0 0 1 12.145 3c5.523 0 10 4.477 10 10s-4.477 10-10 10c-.312 0-.62-.014-.924-.042zm-7.556-4.655a9.942 9.942 0 0 1-1.253-2.996l.973-.234a8.948 8.948 0 0 0 1.124 2.693l-.844.537zm-1.502-5.91A9.949 9.949 0 0 1 2.88 9.23l.925.382a8.954 8.954 0 0 0-.644 2.844l-.998-.062zm2.21-5.686c.687-.848 1.51-1.58 2.436-2.166l.523.852a9.048 9.048 0 0 0-2.188 1.95l-.771-.636z\"\r\n ></path>\r\n <path\r\n stroke=\"inherit\"\r\n fill=\"none\"\r\n stroke-linecap=\"square\"\r\n d=\"M13 1l-2.5 2.5L13 6\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-shape-circle\" viewBox=\"0 0 32 32\">\r\n <circle cx=\"16\" cy=\"16\" r=\"14.5\" fill=\"none\" stroke=\"inherit\"></circle>\r\n </symbol>\r\n <symbol id=\"ic-shape-rectangle\" viewBox=\"0 0 32 32\">\r\n <rect\r\n width=\"27\"\r\n height=\"27\"\r\n x=\"2.5\"\r\n y=\"2.5\"\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n rx=\"1\"\r\n ></rect>\r\n </symbol>\r\n <symbol id=\"ic-shape-triangle\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill=\"none\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n d=\"M16 2.5l15.5 27H.5z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-shape\" viewBox=\"0 0 24 24\">\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M14.706 8H21a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-4h1v4h12V9h-5.706l-.588-1z\"\r\n ></path>\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n d=\"M8.5 1.5l7.5 13H1z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-text-align-center\" viewBox=\"0 0 32 32\">\r\n <path stroke=\"none\" fill=\"none\" d=\"M0 0h32v32H0z\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M2 5h28v1H2zM8 12h16v1H8zM2 19h28v1H2zM8 26h16v1H8z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-text-align-left\" viewBox=\"0 0 32 32\">\r\n <path stroke=\"none\" fill=\"none\" d=\"M0 0h32v32H0z\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M2 5h28v1H2zM2 12h16v1H2zM2 19h28v1H2zM2 26h16v1H2z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-text-align-right\" viewBox=\"0 0 32 32\">\r\n <path stroke=\"none\" fill=\"none\" d=\"M0 0h32v32H0z\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M2 5h28v1H2zM14 12h16v1H14zM2 19h28v1H2zM14 26h16v1H14z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-text-bold\" viewBox=\"0 0 32 32\">\r\n <path fill=\"none\" stroke=\"none\" d=\"M0 0h32v32H0z\"></path>\r\n <path stroke=\"none\" fill=\"inherit\" d=\"M7 2h2v2H7zM7 28h2v2H7z\"></path>\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-width=\"2\"\r\n d=\"M9 3v12h9a6 6 0 1 0 0-12H9zM9 15v14h10a7 7 0 0 0 0-14H9z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-text-italic\" viewBox=\"0 0 32 32\">\r\n <path fill=\"none\" stroke=\"none\" d=\"M0 0h32v32H0z\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M15 2h5v1h-5zM11 29h5v1h-5zM17 3h1l-4 26h-1z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-text-underline\" viewBox=\"0 0 32 32\">\r\n <path stroke=\"none\" fill=\"none\" d=\"M0 0h32v32H0z\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M8 2v14a8 8 0 1 0 16 0V2h1v14a9 9 0 0 1-18 0V2h1zM3 29h26v1H3z\"\r\n ></path>\r\n <path stroke=\"none\" fill=\"inherit\" d=\"M5 2h5v1H5zM22 2h5v1h-5z\"></path>\r\n </symbol>\r\n <symbol id=\"ic-text\" viewBox=\"0 0 24 24\">\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M4 3h15a1 1 0 0 1 1 1H3a1 1 0 0 1 1-1zM3 4h1v1H3zM19 4h1v1h-1z\"\r\n ></path>\r\n <path stroke=\"none\" fill=\"inherit\" d=\"M11 3h1v18h-1z\"></path>\r\n <path stroke=\"none\" fill=\"inherit\" d=\"M10 20h3v1h-3z\"></path>\r\n </symbol>\r\n <symbol id=\"ic-undo\" viewBox=\"0 0 24 24\">\r\n <path d=\"M24 0H0v24h24z\" opacity=\".5\" fill=\"none\" stroke=\"none\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M3 6h12a6 6 0 1 1 0 12H3v1h12a7 7 0 0 0 0-14H3v1z\"\r\n ></path>\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"square\"\r\n d=\"M5 3L2.5 5.5 5 8\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-zoom-in\" viewBox=\"0 0 24 24\">\r\n <g transform=\"translate(-229 -290) translate(229 290)\">\r\n <circle cx=\"10.5\" cy=\"10.5\" r=\"9\" stroke=\"inherit\" fill=\"none\"></circle>\r\n <path\r\n fill=\"inherit\"\r\n d=\"M18.828 15.828H19.828V22.828H18.828z\"\r\n transform=\"rotate(-45 19.328 19.328)\"\r\n ></path>\r\n <path fill=\"inherit\" d=\"M7 10H14V11H7z\"></path>\r\n <path fill=\"inherit\" d=\"M10 7H11V14H10z\"></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-zoom-out\" viewBox=\"0 0 24 24\">\r\n <g transform=\"translate(-263 -290) translate(263 290)\">\r\n <circle cx=\"10.5\" cy=\"10.5\" r=\"9\" stroke=\"inherit\" fill=\"none\"></circle>\r\n <path\r\n fill=\"inherit\"\r\n d=\"M18.828 15.828H19.828V22.828H18.828z\"\r\n transform=\"rotate(-45 19.328 19.328)\"\r\n ></path>\r\n <path fill=\"inherit\" d=\"M7 10H14V11H7z\"></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-hand\" viewBox=\"0 0 24 24\">\r\n <g fill=\"none\" fill-rule=\"evenodd\" stroke-linejoin=\"round\">\r\n <path\r\n fill=\"inherit\"\r\n fill-rule=\"nonzero\"\r\n d=\"M8.672 3.36c1.328 0 2.114.78 2.29 1.869l.014.101.023.006v1.042l-.638-.185c-.187-.055-.323-.211-.354-.399L10 5.713c0-.825-.42-1.353-1.328-1.353C7.695 4.36 7 5.041 7 5.713v7.941c0 .439-.524.665-.843.364l-1.868-1.761c-.595-.528-1.316-.617-1.918-.216-.522.348-.562 1.203-.18 1.8L7.738 22h11.013l.285-.518c1.247-2.326 1.897-4.259 1.96-5.785l.004-.239V8.035c0-.656-.5-1.17-1-1.17-.503 0-1 .456-1 1.17 0 .333-.32.573-.64.48L18 8.41V7.368l.086.026.042-.136c.279-.805.978-1.332 1.738-1.388L20 5.865c1.057 0 2 .967 2 2.17v7.423c0 1.929-.845 4.352-2.521 7.29-.09.156-.255.252-.435.252H7.474c-.166 0-.321-.082-.414-.219l-5.704-8.39c-.653-1.019-.584-2.486.46-3.182 1-.666 2.216-.516 3.148.31L6 12.495V5.713c0-1.18 1.058-2.263 2.49-2.348z\"\r\n transform=\"translate(-297 -290) translate(297 290)\"\r\n ></path>\r\n <path\r\n fill=\"inherit\"\r\n fill-rule=\"nonzero\"\r\n d=\"M12.5 1.5c1.325 0 2.41 1.032 2.495 2.336L15 4v7.22h-1V4c0-.828-.672-1.5-1.5-1.5-.78 0-1.42.595-1.493 1.356L11 4v7.22h-1V4c0-1.38 1.12-2.5 2.5-2.5z\"\r\n transform=\"translate(-297 -290) translate(297 290)\"\r\n ></path>\r\n <path\r\n fill=\"inherit\"\r\n fill-rule=\"nonzero\"\r\n d=\"M16.5 3.5c1.325 0 2.41 1.032 2.495 2.336L19 6v6.3h-1V6c0-.828-.672-1.5-1.5-1.5-.78 0-1.42.595-1.493 1.356L15 6v2.44h-1V6c0-1.38 1.12-2.5 2.5-2.5z\"\r\n transform=\"translate(-297 -290) translate(297 290)\"\r\n ></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-rotate\" viewBox=\"0 0 24 24\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <g transform=\"translate(-132 -804) translate(132 804)\">\r\n <path d=\"M0 0.5H12V12.5H0z\"></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M6.5 1C9.538 1 12 3.462 12 6.5c0 2.37-1.5 4.39-3.6 5.163l-.407-.916C9.744 10.13 11 8.462 11 6.5 11 4.015 8.985 2 6.5 2c-.777 0-1.509.197-2.147.544L4 1.75l-.205-.04C4.594 1.258 5.517 1 6.5 1z\"\r\n ></path>\r\n <use\r\n stroke=\"#434343\"\r\n stroke-dasharray=\"2 1.25\"\r\n stroke-width=\"1\"\r\n mask=\"url(#6f9gn2dysb)\"\r\n xlink:href=\"#rfn4rylffa\"\r\n ></use>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M4.279 0L6 1.75 4.25 3.571 3.543 2.864 4.586 1.75 3.572 0.707z\"\r\n transform=\"matrix(-1 0 0 1 9.543 0)\"\r\n ></path>\r\n </g>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-file-upload\" viewBox=\"-53 1 511 511.99906\">\r\n <path\r\n d=\"M 276.410156 3.957031 C 274.0625 1.484375 270.84375 0 267.507812 0 L 67.777344 0 C 30.921875 0 0.5 30.300781 0.5 67.152344 L 0.5 444.84375 C 0.5 481.699219 30.921875 512 67.777344 512 L 338.863281 512 C 375.71875 512 406.140625 481.699219 406.140625 444.84375 L 406.140625 144.941406 C 406.140625 141.726562 404.65625 138.636719 402.554688 136.285156 Z M 279.996094 43.65625 L 364.464844 132.328125 L 309.554688 132.328125 C 293.230469 132.328125 279.996094 119.21875 279.996094 102.894531 Z M 338.863281 487.265625 L 67.777344 487.265625 C 44.652344 487.265625 25.234375 468.097656 25.234375 444.84375 L 25.234375 67.152344 C 25.234375 44.027344 44.527344 24.734375 67.777344 24.734375 L 255.261719 24.734375 L 255.261719 102.894531 C 255.261719 132.945312 279.503906 157.0625 309.554688 157.0625 L 381.40625 157.0625 L 381.40625 444.84375 C 381.40625 468.097656 362.113281 487.265625 338.863281 487.265625 Z M 338.863281 487.265625 \"\r\n />\r\n <path\r\n d=\"M 305.101562 401.933594 L 101.539062 401.933594 C 94.738281 401.933594 89.171875 407.496094 89.171875 414.300781 C 89.171875 421.101562 94.738281 426.667969 101.539062 426.667969 L 305.226562 426.667969 C 312.027344 426.667969 317.59375 421.101562 317.59375 414.300781 C 317.59375 407.496094 312.027344 401.933594 305.101562 401.933594 Z M 305.101562 401.933594 \"\r\n />\r\n <path\r\n d=\"M 140 268.863281 L 190.953125 214.074219 L 190.953125 349.125 C 190.953125 355.925781 196.519531 361.492188 203.320312 361.492188 C 210.125 361.492188 215.6875 355.925781 215.6875 349.125 L 215.6875 214.074219 L 266.640625 268.863281 C 269.113281 271.457031 272.332031 272.820312 275.667969 272.820312 C 278.636719 272.820312 281.730469 271.707031 284.078125 269.480469 C 289.027344 264.78125 289.398438 256.988281 284.699219 252.042969 L 212.226562 174.253906 C 209.875 171.78125 206.660156 170.296875 203.199219 170.296875 C 199.734375 170.296875 196.519531 171.78125 194.171875 174.253906 L 121.699219 252.042969 C 117 256.988281 117.371094 264.902344 122.316406 269.480469 C 127.511719 274.179688 135.300781 273.808594 140 268.863281 Z M 140 268.863281 \"\r\n />\r\n </symbol>\r\n <symbol id=\"ic-file-download\" viewBox=\"-53 1 511 511.99906\">\r\n <path\r\n d=\"M 276.410156 3.957031 C 274.0625 1.484375 270.84375 0 267.507812 0 L 67.777344 0 C 30.921875 0 0.5 30.300781 0.5 67.152344 L 0.5 444.84375 C 0.5 481.699219 30.921875 512 67.777344 512 L 338.863281 512 C 375.71875 512 406.140625 481.699219 406.140625 444.84375 L 406.140625 144.941406 C 406.140625 141.726562 404.65625 138.636719 402.554688 136.285156 Z M 279.996094 43.65625 L 364.464844 132.328125 L 309.554688 132.328125 C 293.230469 132.328125 279.996094 119.21875 279.996094 102.894531 Z M 338.863281 487.265625 L 67.777344 487.265625 C 44.652344 487.265625 25.234375 468.097656 25.234375 444.84375 L 25.234375 67.152344 C 25.234375 44.027344 44.527344 24.734375 67.777344 24.734375 L 255.261719 24.734375 L 255.261719 102.894531 C 255.261719 132.945312 279.503906 157.0625 309.554688 157.0625 L 381.40625 157.0625 L 381.40625 444.84375 C 381.40625 468.097656 362.113281 487.265625 338.863281 487.265625 Z M 338.863281 487.265625 \"\r\n />\r\n <path\r\n d=\"M 305.101562 401.933594 L 101.539062 401.933594 C 94.738281 401.933594 89.171875 407.496094 89.171875 414.300781 C 89.171875 421.101562 94.738281 426.667969 101.539062 426.667969 L 305.226562 426.667969 C 312.027344 426.667969 317.59375 421.101562 317.59375 414.300781 C 317.59375 407.496094 312.027344 401.933594 305.101562 401.933594 Z M 305.101562 401.933594 \"\r\n />\r\n <path\r\n d=\"M 194.292969 357.535156 C 196.644531 360.007812 199.859375 361.492188 203.320312 361.492188 C 206.785156 361.492188 210 360.007812 212.347656 357.535156 L 284.820312 279.746094 C 289.519531 274.796875 289.148438 266.882812 284.203125 262.308594 C 279.253906 257.609375 271.339844 257.976562 266.765625 262.925781 L 215.6875 317.710938 L 215.6875 182.664062 C 215.6875 175.859375 210.121094 170.296875 203.320312 170.296875 C 196.519531 170.296875 190.953125 175.859375 190.953125 182.664062 L 190.953125 317.710938 L 140 262.925781 C 135.300781 257.980469 127.507812 257.609375 122.5625 262.308594 C 117.617188 267.007812 117.246094 274.800781 121.945312 279.746094 Z M 194.292969 357.535156 \"\r\n />\r\n </symbol>\r\n</defs>\r\n</svg>\r\n" });
|
|
3016
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SvgDefinitionsComponent, decorators: [{
|
|
3017
|
+
type: Component,
|
|
3018
|
+
args: [{ selector: 'tui-image-editor-svg-definitions', template: "\r\n<svg\r\nxmlns=\"http://www.w3.org/2000/svg\"\r\nxmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\ndisplay=\"none\"\r\n>\r\n<defs id=\"tui-image-editor-svg-default-icons\">\r\n <symbol id=\"ic-apply\" viewBox=\"0 0 24 24\">\r\n <path d=\"M0 0h24v24H0z\" stroke=\"none\" fill=\"none\"></path>\r\n <path fill=\"none\" stroke=\"inherit\" d=\"M4 12.011l5 5L20.011 6\"></path>\r\n </symbol>\r\n <symbol id=\"ic-cancel\" viewBox=\"0 0 24 24\">\r\n <path d=\"M0 0h24v24H0z\" fill=\"none\" stroke=\"none\"></path>\r\n <path fill=\"none\" stroke=\"inherit\" d=\"M6 6l12 12M18 6L6 18\"></path>\r\n </symbol>\r\n <symbol id=\"ic-crop\" viewBox=\"0 0 24 24\">\r\n <path d=\"M0 0h24v24H0z\" stroke=\"none\" fill=\"none\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M4 0h1v20a1 1 0 0 1-1-1V0zM20 17h-1V5h1v12zm0 2v5h-1v-5h1z\"\r\n ></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M5 19h19v1H5zM4.762 4v1H0V4h4.762zM7 4h12a1 1 0 0 1 1 1H7V4z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-delete-all\" viewBox=\"0 0 24 24\">\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M5 23H3a1 1 0 0 1-1-1V6h1v16h2v1zm16-10h-1V6h1v7zM9 13H8v-3h1v3zm3 0h-1v-3h1v3zm3 0h-1v-3h1v3zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z\"\r\n ></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M0 3h23v1H0zM11.286 21H8.714L8 23H7l1-2.8V20h.071L9.5 16h1l1.429 4H12v.2l1 2.8h-1l-.714-2zm-.357-1L10 17.4 9.071 20h1.858zM20 22h3v1h-4v-7h1v6zm-5 0h3v1h-4v-7h1v6z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-delete\" viewBox=\"0 0 24 24\">\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M3 6v16h17V6h1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V6h1zM14.794 3.794L13 2h-3L8.206 3.794A.963.963 0 0 1 8 2.5l.703-1.055A1 1 0 0 1 9.535 1h3.93a1 1 0 0 1 .832.445L15 2.5a.965.965 0 0 1-.206 1.294zM14.197 4H8.803h5.394z\"\r\n ></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M0 3h23v1H0zM8 10h1v6H8v-6zm3 0h1v6h-1v-6zm3 0h1v6h-1v-6z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-draw-free\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n d=\"M2.5 20.929C2.594 10.976 4.323 6 7.686 6c5.872 0 2.524 19 7.697 19s1.89-14.929 6.414-14.929 1.357 10.858 5.13 10.858c1.802 0 2.657-2.262 2.566-6.786\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-draw-line\" viewBox=\"0 0 32 32\">\r\n <path fill=\"none\" stroke=\"inherit\" d=\"M2 15.5h28\"></path>\r\n </symbol>\r\n <symbol id=\"ic-draw\" viewBox=\"0 0 24 24\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n d=\"M2.5 21.5H5c.245 0 .48-.058.691-.168l.124-.065.14.01c.429.028.85-.127 1.16-.437L22.55 5.405a.5.5 0 0 0 0-.707l-3.246-3.245a.5.5 0 0 0-.707 0L3.162 16.888a1.495 1.495 0 0 0-.437 1.155l.01.14-.065.123c-.111.212-.17.448-.17.694v2.5z\"\r\n ></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M16.414 3.707l3.89 3.89-.708.706-3.889-3.889z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-filter\" viewBox=\"0 0 24 24\">\r\n <path d=\"M0 0h24v24H0z\" fill=\"none\" stroke=\"none\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M12 7v1H2V7h10zm6 0h4v1h-4V7zM12 16v1h10v-1H12zm-6 0H2v1h4v-1z\"\r\n ></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M8.5 20a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5zM15.5 11a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7zm0-1a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-flip-reset\" viewBox=\"0 0 31 32\">\r\n <path fill=\"none\" stroke=\"none\" d=\"M31 0H0v32h31z\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M28 16a8 8 0 0 1-8 8H3v-1h1v-7H3a8 8 0 0 1 8-8h17v1h-1v7h1zM11 9a7 7 0 0 0-7 7v7h16a7 7 0 0 0 7-7V9H11z\"\r\n ></path>\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"square\"\r\n d=\"M24 5l3.5 3.5L24 12M7 20l-3.5 3.5L7 27\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-flip-x\" viewBox=\"0 0 32 32\">\r\n <path fill=\"none\" stroke=\"none\" d=\"M32 32H0V0h32z\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M17 32h-1V0h1zM27.167 11l.5 3h-1.03l-.546-3h1.076zm-.5-3h-1.122L25 5h-5V4h5.153a1 1 0 0 1 .986.836L26.667 8zm1.5 9l.5 3h-.94l-.545-3h.985zm1 6l.639 3.836A1 1 0 0 1 28.819 28H26v-1h3l-.726-4h.894zM23 28h-3v-1h3v1zM13 4v1H7L3 27h10v1H3.18a1 1 0 0 1-.986-1.164l3.666-22A1 1 0 0 1 6.847 4H13z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-flip-y\" viewBox=\"0 0 32 32\">\r\n <path fill=\"none\" stroke=\"none\" d=\"M0 0v32h32V0z\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M0 16v1h32v-1zM11 27.167l3 .5v-1.03l-3-.546v1.076zm-3-.5v-1.122L5 25v-5H4v5.153a1 1 0 0 0 .836.986L8 26.667zm9 1.5l3 .5v-.94l-3-.545v.985zm6 1l3.836.639A1 1 0 0 0 28 28.82V26h-1v3l-4-.727v.894zM28 23v-3h-1v3h1zM4 13h1V7l22-4v10h1V3.18a1 1 0 0 0-1.164-.986l-22 3.667A1 1 0 0 0 4 6.847V13z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-flip\" viewBox=\"0 0 24 24\">\r\n <path d=\"M0 0h24v24H0z\" fill=\"none\" stroke=\"none\"></path>\r\n <path\r\n fill=\"inherit\"\r\n stroke=\"none\"\r\n d=\"M11 0h1v24h-1zM19 21v-1h2v-2h1v2a1 1 0 0 1-1 1h-2zm-2 0h-3v-1h3v1zm5-5h-1v-3h1v3zm0-5h-1V8h1v3zm0-5h-1V4h-2V3h2a1 1 0 0 1 1 1v2zm-5-3v1h-3V3h3zM9 3v1H2v16h7v1H2a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h7z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-history\" viewBox=\"0 0 24 24\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"none\"\r\n d=\"M0 0H24V24H0z\"\r\n transform=\"translate(-740 -16) translate(547 8) translate(193 8)\"\r\n ></path>\r\n <path\r\n fill=\"inherit\"\r\n stroke=\"none\"\r\n d=\"M12.5 1C18.299 1 23 5.701 23 11.5S18.299 22 12.5 22c-5.29 0-9.665-3.911-10.394-8.999h1.012C3.838 17.534 7.764 21 12.5 21c5.247 0 9.5-4.253 9.5-9.5S17.747 2 12.5 2C8.49 2 5.06 4.485 3.666 8H3h4v1H2V4h1v3.022C4.68 3.462 8.303 1 12.5 1zm.5 5l-.001 5.291 2.537 2.537-.708.708L12.292 12H12V6h1z\"\r\n transform=\"translate(-740 -16) translate(547 8) translate(193 8)\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-history-check\" viewBox=\"0 0 12 12\">\r\n <g fill=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n stroke=\"#555555\"\r\n d=\"M4.5 -1L1.5 2 6.5 7\"\r\n transform=\"translate(-60 -804) translate(60 804) translate(2 3) rotate(-90 4 3)\"\r\n ></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-crop\" viewBox=\"0 0 12 12\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n d=\"M0 0H12V12H0z\"\r\n transform=\"translate(-84 -804) translate(84 804)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M2 0h1v10c-.552 0-1-.448-1-1V0zM10 9v3H9V9h1zM9 2h1v6H9V2z\"\r\n transform=\"translate(-84 -804) translate(84 804)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M2 9H12V10H2zM9 2c.513 0 .936.386.993.883L10 3H3V2h6zM2 3H0V2h2v1z\"\r\n transform=\"translate(-84 -804) translate(84 804)\"\r\n ></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-draw\" viewBox=\"0 0 12 12\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n d=\"M0 1H12V13H0z\"\r\n transform=\"translate(-156 -804) translate(156 803)\"\r\n ></path>\r\n <path\r\n stroke=\"#434343\"\r\n d=\"M9.622 1.584l1.835 1.658-8.31 8.407L.5 12.5V11l9.122-9.416z\"\r\n transform=\"translate(-156 -804) translate(156 803)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M7.628 3.753L10.378 3.753 10.378 4.253 7.628 4.253z\"\r\n transform=\"translate(-156 -804) translate(156 803) rotate(45 9.003 4.003)\"\r\n ></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-filter\" viewBox=\"0 0 12 12\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n d=\"M0 0H12V12H0z\"\r\n transform=\"translate(-276 -804) translate(276 804)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M12 3v1H9V3h3zM7 4H0V3h7v1z\"\r\n transform=\"translate(-276 -804) translate(276 804)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M12 8v1H9V8h3zM7 9H0V8h7v1z\"\r\n transform=\"translate(-276 -804) translate(276 804) matrix(-1 0 0 1 12 0)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M8 1c1.105 0 2 .895 2 2s-.895 2-2 2-2-.895-2-2 .895-2 2-2zm0 1c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1zM4 7c1.105 0 2 .895 2 2s-.895 2-2 2-2-.895-2-2 .895-2 2-2zm0 1c-.552 0-1 .448-1 1s.448 1 1 1 1-.448 1-1-.448-1-1-1z\"\r\n transform=\"translate(-276 -804) translate(276 804)\"\r\n ></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-flip\" viewBox=\"0 0 12 12\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n d=\"M0 0H12V12H0z\"\r\n transform=\"translate(-108 -804) translate(108 804)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M6 0L7 0 7 12 6 12zM11 10V9h1v1.5c0 .276-.224.5-.5.5H10v-1h1zM5 1v1H1v8h4v1H.5c-.276 0-.5-.224-.5-.5v-9c0-.276.224-.5.5-.5H5zm7 5v2h-1V6h1zm0-3v2h-1V3h1zM9 1v1H7V1h2zm2.5 0c.276 0 .5.224.5.5V2h-2V1h1.5zM9 11H7v-1h2v1z\"\r\n transform=\"translate(-108 -804) translate(108 804)\"\r\n ></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-icon\" viewBox=\"0 0 12 12\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n d=\"M0 0H12V12H0z\"\r\n transform=\"translate(-204 -804) translate(204 804)\"\r\n ></path>\r\n <path\r\n stroke=\"#434343\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"1.1\"\r\n d=\"M6 9.568L2.601 11 2.975 7.467 0.5 4.82 4.13 4.068 6 1 7.87 4.068 11.5 4.82 9.025 7.467 9.399 11z\"\r\n transform=\"translate(-204 -804) translate(204 804)\"\r\n ></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-mask\" viewBox=\"0 0 12 12\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <g transform=\"translate(-252 -804) translate(252 804)\">\r\n <path d=\"M0 0H12V12H0z\"></path>\r\n <circle cx=\"6\" cy=\"6\" r=\"2.5\" stroke=\"#444\"></circle>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M11.5 0c.276 0 .5.224.5.5v11c0 .276-.224.5-.5.5H.5c-.276 0-.5-.224-.5-.5V.5C0 .224.224 0 .5 0h11zM11 1H1v10h10V1z\"\r\n ></path>\r\n </g>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-rotate\" viewBox=\"0 0 12 12\">\r\n <defs>\r\n <path\r\n id=\"rfn4rylffa\"\r\n d=\"M7 12c-.335 0-.663-.025-.983-.074C3.171 11.492 1 9.205 1 6.444c0-1.363.534-2.613 1.415-3.58\"\r\n ></path>\r\n <mask\r\n id=\"6f9gn2dysb\"\r\n width=\"6\"\r\n height=\"9.136\"\r\n x=\"0\"\r\n y=\"0\"\r\n maskUnits=\"objectBoundingBox\"\r\n >\r\n <use xlink:href=\"#rfn4rylffa\" stroke=\"434343\"></use>\r\n </mask>\r\n </defs>\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <g transform=\"translate(-132 -804) translate(132 804)\">\r\n <path d=\"M0 0.5H12V12.5H0z\"></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M6.5 1C9.538 1 12 3.462 12 6.5c0 2.37-1.5 4.39-3.6 5.163l-.407-.916C9.744 10.13 11 8.462 11 6.5 11 4.015 8.985 2 6.5 2c-.777 0-1.509.197-2.147.544L4 1.75l-.205-.04C4.594 1.258 5.517 1 6.5 1z\"\r\n ></path>\r\n <use\r\n stroke=\"#434343\"\r\n stroke-dasharray=\"2 1.25\"\r\n stroke-width=\"1\"\r\n mask=\"url(#6f9gn2dysb)\"\r\n xlink:href=\"#rfn4rylffa\"\r\n ></use>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M4.279 0L6 1.75 4.25 3.571 3.543 2.864 4.586 1.75 3.572 0.707z\"\r\n transform=\"matrix(-1 0 0 1 9.543 0)\"\r\n ></path>\r\n </g>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-shape\" viewBox=\"0 0 12 12\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n d=\"M0 0H12V12H0z\"\r\n transform=\"translate(-180 -804) translate(180 804)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M11.5 4c.276 0 .5.224.5.5v7c0 .276-.224.5-.5.5h-7c-.276 0-.5-.224-.5-.5V8.8h1V11h6V5H8.341l-.568-1H11.5z\"\r\n transform=\"translate(-180 -804) translate(180 804)\"\r\n ></path>\r\n <path\r\n stroke=\"#434343\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n d=\"M4.5 0.5L8.5 7.611 0.5 7.611z\"\r\n transform=\"translate(-180 -804) translate(180 804)\"\r\n ></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-text\" viewBox=\"0 0 12 12\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n d=\"M0 0H12V12H0z\"\r\n transform=\"translate(-228 -804) translate(228 804)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M2 1h8c.552 0 1 .448 1 1H1c0-.552.448-1 1-1z\"\r\n transform=\"translate(-228 -804) translate(228 804)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M1 1H2V3H1zM10 1H11V3H10zM5.5 1L6.5 1 6.5 11 5.5 11z\"\r\n transform=\"translate(-228 -804) translate(228 804)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M4 10H8V11H4z\"\r\n transform=\"translate(-228 -804) translate(228 804)\"\r\n ></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-load\" viewBox=\"0 0 12 12\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <path\r\n d=\"M0 0H12V12H0z\"\r\n transform=\"translate(-324 -805) translate(324 805)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M5 0c.552 0 1 .448 1 1v1h5.5c.276 0 .5.224.5.5v8c0 .276-.224.5-.5.5H.5c-.276 0-.5-.224-.5-.5V1c0-.552.448-1 1-1h4zm0 1H1v9h10V3H5V1z\"\r\n transform=\"translate(-324 -805) translate(324 805)\"\r\n ></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M1 2L5 2 5 3 1 3z\"\r\n transform=\"translate(-324 -805) translate(324 805)\"\r\n ></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-delete\" viewBox=\"0 0 12 12\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <g fill=\"#434343\">\r\n <path\r\n d=\"M2 9h8V1h1v8.5c0 .276-.224.5-.5.5h-9c-.276 0-.5-.224-.5-.5V1h1v8zM0 0H12V1H0z\"\r\n transform=\"translate(-300 -804) translate(300 804) translate(0 2)\"\r\n ></path>\r\n <path\r\n d=\"M4 3H5V7H4zM7 3H8V7H7z\"\r\n transform=\"translate(-300 -804) translate(300 804) translate(0 2)\"\r\n ></path>\r\n <path\r\n d=\"M4 1h4V0h1v1.5c0 .276-.224.5-.5.5h-5c-.276 0-.5-.224-.5-.5V0h1v1z\"\r\n transform=\"translate(-300 -804) translate(300 804) matrix(1 0 0 -1 0 2)\"\r\n ></path>\r\n </g>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-group\" viewBox=\"0 0 24 24\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <g transform=\"translate(-348 -804) translate(348 804)\">\r\n <path d=\"M0 0H12V12H0z\"></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M1 9v2h1v1H.5c-.276 0-.5-.224-.5-.5V9h1zm11 1v1.5c0 .276-.224.5-.5.5H9v-1h2v-1h1zm-4 1v1H6v-1h2zm-3 0v1H3v-1h2zm7-4v2h-1V7h1zM1 6v2H0V6h1zm11-2v2h-1V4h1zM1 3v2H0V3h1zm10.5-3c.276 0 .5.224.5.5V3h-1V1h-1V0h1.5zM6 0v1H4V0h2zm3 0v1H7V0h2zM0 .5C0 .224.224 0 .5 0H3v1H1v1H0V.5zM9.5 4c.276 0 .5.224.5.5v5c0 .276-.224.5-.5.5h-5c-.276 0-.5-.224-.5-.5V8.355c.317.094.652.145 1 .145V9h4V5h-.5c0-.348-.05-.683-.145-1H9.5z\"\r\n ></path>\r\n <circle cx=\"5\" cy=\"5\" r=\"2.5\" stroke=\"#434343\"></circle>\r\n </g>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-icon-arrow-2\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n d=\"M21.793 18.5H2.5v-5h18.935l-7.6-8h5.872l10.5 10.5-10.5 10.5h-5.914l8-8z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-icon-arrow-3\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n d=\"M25.288 16.42L14.208 27.5H6.792l11.291-11.291L6.826 4.5h7.381l11.661 11.661-.58.258z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-icon-arrow\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n d=\"M2.5 11.5v9h18v5.293L30.293 16 20.5 6.207V11.5h-18z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-icon-bubble\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n d=\"M22.207 24.5L16.5 30.207V24.5H8A6.5 6.5 0 0 1 1.5 18V9A6.5 6.5 0 0 1 8 2.5h16A6.5 6.5 0 0 1 30.5 9v9a6.5 6.5 0 0 1-6.5 6.5h-1.793z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-icon-heart\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill-rule=\"nonzero\"\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n d=\"M15.996 30.675l1.981-1.79c7.898-7.177 10.365-9.718 12.135-13.012.922-1.716 1.377-3.37 1.377-5.076 0-4.65-3.647-8.297-8.297-8.297-2.33 0-4.86 1.527-6.817 3.824l-.38.447-.381-.447C13.658 4.027 11.126 2.5 8.797 2.5 4.147 2.5.5 6.147.5 10.797c0 1.714.46 3.375 1.389 5.098 1.775 3.288 4.26 5.843 12.123 12.974l1.984 1.806z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-icon-load\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n d=\"M17.314 18.867l1.951-2.53 4 5.184h-17l6.5-8.84 4.549 6.186z\"\r\n ></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01z\"\r\n ></path>\r\n <path stroke=\"none\" fill=\"inherit\" d=\"M25 3h1v9h-1z\"></path>\r\n <path fill=\"none\" stroke=\"inherit\" d=\"M22 6l3.5-3.5L29 6\"></path>\r\n </symbol>\r\n <symbol id=\"ic-icon-location\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n d=\"M16 31.28C23.675 23.302 27.5 17.181 27.5 13c0-6.351-5.149-11.5-11.5-11.5S4.5 6.649 4.5 13c0 4.181 3.825 10.302 11.5 18.28z\"\r\n ></path>\r\n <circle fill=\"none\" stroke=\"inherit\" cx=\"16\" cy=\"13\" r=\"4.5\"></circle>\r\n </symbol>\r\n <symbol id=\"ic-icon-polygon\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n d=\"M.576 16L8.29 29.5h15.42L31.424 16 23.71 2.5H8.29L.576 16z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-icon-star-2\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n d=\"M19.446 31.592l2.265-3.272 3.946.25.636-3.94 3.665-1.505-1.12-3.832 2.655-2.962-2.656-2.962 1.12-3.832-3.664-1.505-.636-3.941-3.946.25-2.265-3.271L16 3.024 12.554 1.07 10.289 4.34l-3.946-.25-.636 3.941-3.665 1.505 1.12 3.832L.508 16.33l2.656 2.962-1.12 3.832 3.664 1.504.636 3.942 3.946-.25 2.265 3.27L16 29.638l3.446 1.955z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-icon-star\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n d=\"M25.292 29.878l-1.775-10.346 7.517-7.327-10.388-1.51L16 1.282l-4.646 9.413-10.388 1.51 7.517 7.327-1.775 10.346L16 24.993l9.292 4.885z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-icon\" viewBox=\"0 0 24 24\">\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n d=\"M11.923 19.136L5.424 22l.715-7.065-4.731-5.296 6.94-1.503L11.923 2l3.574 6.136 6.94 1.503-4.731 5.296L18.42 22z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-mask-load\" viewBox=\"0 0 32 32\">\r\n <path stroke=\"none\" fill=\"none\" d=\"M0 0h32v32H0z\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M18.01 4a11.798 11.798 0 0 0 0 1H3v24h24V14.986a8.738 8.738 0 0 0 1 0V29a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h15.01zM15 23a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-1a5 5 0 1 0 0-10 5 5 0 0 0 0 10z\"\r\n ></path>\r\n <path stroke=\"none\" fill=\"inherit\" d=\"M25 3h1v9h-1z\"></path>\r\n <path fill=\"none\" stroke=\"inherit\" d=\"M22 6l3.5-3.5L29 6\"></path>\r\n </symbol>\r\n <symbol id=\"ic-mask\" viewBox=\"0 0 24 24\">\r\n <circle cx=\"12\" cy=\"12\" r=\"4.5\" stroke=\"inherit\" fill=\"none\"></circle>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M2 1h20a1 1 0 0 1 1 1v20a1 1 0 0 1-1 1H2a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1zm0 1v20h20V2H2z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-redo\" viewBox=\"0 0 24 24\">\r\n <path d=\"M0 0h24v24H0z\" opacity=\".5\" fill=\"none\" stroke=\"none\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M21 6H9a6 6 0 1 0 0 12h12v1H9A7 7 0 0 1 9 5h12v1z\"\r\n ></path>\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"square\"\r\n d=\"M19 3l2.5 2.5L19 8\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-reset\" viewBox=\"0 0 24 24\">\r\n <path d=\"M0 0h24v24H0z\" opacity=\".5\" stroke=\"none\" fill=\"none\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M2 13v-1a7 7 0 0 1 7-7h13v1h-1v5h1v1a7 7 0 0 1-7 7H2v-1h1v-5H2zm7-7a6 6 0 0 0-6 6v6h12a6 6 0 0 0 6-6V6H9z\"\r\n ></path>\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"square\"\r\n d=\"M19 3l2.5 2.5L19 8M5 16l-2.5 2.5L5 21\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-rotate-clockwise\" viewBox=\"0 0 32 32\">\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M29 17h-.924c0 6.627-5.373 12-12 12-6.628 0-12-5.373-12-12C4.076 10.398 9.407 5.041 16 5V4C8.82 4 3 9.82 3 17s5.82 13 13 13 13-5.82 13-13z\"\r\n ></path>\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"square\"\r\n d=\"M16 1.5l4 3-4 3\"\r\n ></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n fill-rule=\"nonzero\"\r\n d=\"M16 4h4v1h-4z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-rotate-counterclockwise\" viewBox=\"0 0 32 32\">\r\n <path\r\n stroke=\"none\"\r\n d=\"M3 17h.924c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.602-5.331-11.96-11.924-12V4c7.18 0 13 5.82 13 13s-5.82 13-13 13S3 24.18 3 17z\"\r\n ></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n fill-rule=\"nonzero\"\r\n d=\"M12 4h4v1h-4z\"\r\n ></path>\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"square\"\r\n d=\"M16 1.5l-4 3 4 3\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-rotate\" viewBox=\"0 0 24 24\">\r\n <path d=\"M0 0h24v24H0z\" fill=\"none\" stroke=\"none\"></path>\r\n <path\r\n fill=\"inherit\"\r\n stroke=\"none\"\r\n d=\"M8.349 22.254a10.002 10.002 0 0 1-2.778-1.719l.65-.76a9.002 9.002 0 0 0 2.495 1.548l-.367.931zm2.873.704l.078-.997a9 9 0 1 0-.557-17.852l-.14-.99A10.076 10.076 0 0 1 12.145 3c5.523 0 10 4.477 10 10s-4.477 10-10 10c-.312 0-.62-.014-.924-.042zm-7.556-4.655a9.942 9.942 0 0 1-1.253-2.996l.973-.234a8.948 8.948 0 0 0 1.124 2.693l-.844.537zm-1.502-5.91A9.949 9.949 0 0 1 2.88 9.23l.925.382a8.954 8.954 0 0 0-.644 2.844l-.998-.062zm2.21-5.686c.687-.848 1.51-1.58 2.436-2.166l.523.852a9.048 9.048 0 0 0-2.188 1.95l-.771-.636z\"\r\n ></path>\r\n <path\r\n stroke=\"inherit\"\r\n fill=\"none\"\r\n stroke-linecap=\"square\"\r\n d=\"M13 1l-2.5 2.5L13 6\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-shape-circle\" viewBox=\"0 0 32 32\">\r\n <circle cx=\"16\" cy=\"16\" r=\"14.5\" fill=\"none\" stroke=\"inherit\"></circle>\r\n </symbol>\r\n <symbol id=\"ic-shape-rectangle\" viewBox=\"0 0 32 32\">\r\n <rect\r\n width=\"27\"\r\n height=\"27\"\r\n x=\"2.5\"\r\n y=\"2.5\"\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n rx=\"1\"\r\n ></rect>\r\n </symbol>\r\n <symbol id=\"ic-shape-triangle\" viewBox=\"0 0 32 32\">\r\n <path\r\n fill=\"none\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n d=\"M16 2.5l15.5 27H.5z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-shape\" viewBox=\"0 0 24 24\">\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M14.706 8H21a1 1 0 0 1 1 1v12a1 1 0 0 1-1 1H9a1 1 0 0 1-1-1v-4h1v4h12V9h-5.706l-.588-1z\"\r\n ></path>\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n d=\"M8.5 1.5l7.5 13H1z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-text-align-center\" viewBox=\"0 0 32 32\">\r\n <path stroke=\"none\" fill=\"none\" d=\"M0 0h32v32H0z\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M2 5h28v1H2zM8 12h16v1H8zM2 19h28v1H2zM8 26h16v1H8z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-text-align-left\" viewBox=\"0 0 32 32\">\r\n <path stroke=\"none\" fill=\"none\" d=\"M0 0h32v32H0z\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M2 5h28v1H2zM2 12h16v1H2zM2 19h28v1H2zM2 26h16v1H2z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-text-align-right\" viewBox=\"0 0 32 32\">\r\n <path stroke=\"none\" fill=\"none\" d=\"M0 0h32v32H0z\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M2 5h28v1H2zM14 12h16v1H14zM2 19h28v1H2zM14 26h16v1H14z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-text-bold\" viewBox=\"0 0 32 32\">\r\n <path fill=\"none\" stroke=\"none\" d=\"M0 0h32v32H0z\"></path>\r\n <path stroke=\"none\" fill=\"inherit\" d=\"M7 2h2v2H7zM7 28h2v2H7z\"></path>\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-width=\"2\"\r\n d=\"M9 3v12h9a6 6 0 1 0 0-12H9zM9 15v14h10a7 7 0 0 0 0-14H9z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-text-italic\" viewBox=\"0 0 32 32\">\r\n <path fill=\"none\" stroke=\"none\" d=\"M0 0h32v32H0z\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M15 2h5v1h-5zM11 29h5v1h-5zM17 3h1l-4 26h-1z\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-text-underline\" viewBox=\"0 0 32 32\">\r\n <path stroke=\"none\" fill=\"none\" d=\"M0 0h32v32H0z\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M8 2v14a8 8 0 1 0 16 0V2h1v14a9 9 0 0 1-18 0V2h1zM3 29h26v1H3z\"\r\n ></path>\r\n <path stroke=\"none\" fill=\"inherit\" d=\"M5 2h5v1H5zM22 2h5v1h-5z\"></path>\r\n </symbol>\r\n <symbol id=\"ic-text\" viewBox=\"0 0 24 24\">\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M4 3h15a1 1 0 0 1 1 1H3a1 1 0 0 1 1-1zM3 4h1v1H3zM19 4h1v1h-1z\"\r\n ></path>\r\n <path stroke=\"none\" fill=\"inherit\" d=\"M11 3h1v18h-1z\"></path>\r\n <path stroke=\"none\" fill=\"inherit\" d=\"M10 20h3v1h-3z\"></path>\r\n </symbol>\r\n <symbol id=\"ic-undo\" viewBox=\"0 0 24 24\">\r\n <path d=\"M24 0H0v24h24z\" opacity=\".5\" fill=\"none\" stroke=\"none\"></path>\r\n <path\r\n stroke=\"none\"\r\n fill=\"inherit\"\r\n d=\"M3 6h12a6 6 0 1 1 0 12H3v1h12a7 7 0 0 0 0-14H3v1z\"\r\n ></path>\r\n <path\r\n fill=\"none\"\r\n stroke=\"inherit\"\r\n stroke-linecap=\"square\"\r\n d=\"M5 3L2.5 5.5 5 8\"\r\n ></path>\r\n </symbol>\r\n <symbol id=\"ic-zoom-in\" viewBox=\"0 0 24 24\">\r\n <g transform=\"translate(-229 -290) translate(229 290)\">\r\n <circle cx=\"10.5\" cy=\"10.5\" r=\"9\" stroke=\"inherit\" fill=\"none\"></circle>\r\n <path\r\n fill=\"inherit\"\r\n d=\"M18.828 15.828H19.828V22.828H18.828z\"\r\n transform=\"rotate(-45 19.328 19.328)\"\r\n ></path>\r\n <path fill=\"inherit\" d=\"M7 10H14V11H7z\"></path>\r\n <path fill=\"inherit\" d=\"M10 7H11V14H10z\"></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-zoom-out\" viewBox=\"0 0 24 24\">\r\n <g transform=\"translate(-263 -290) translate(263 290)\">\r\n <circle cx=\"10.5\" cy=\"10.5\" r=\"9\" stroke=\"inherit\" fill=\"none\"></circle>\r\n <path\r\n fill=\"inherit\"\r\n d=\"M18.828 15.828H19.828V22.828H18.828z\"\r\n transform=\"rotate(-45 19.328 19.328)\"\r\n ></path>\r\n <path fill=\"inherit\" d=\"M7 10H14V11H7z\"></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-hand\" viewBox=\"0 0 24 24\">\r\n <g fill=\"none\" fill-rule=\"evenodd\" stroke-linejoin=\"round\">\r\n <path\r\n fill=\"inherit\"\r\n fill-rule=\"nonzero\"\r\n d=\"M8.672 3.36c1.328 0 2.114.78 2.29 1.869l.014.101.023.006v1.042l-.638-.185c-.187-.055-.323-.211-.354-.399L10 5.713c0-.825-.42-1.353-1.328-1.353C7.695 4.36 7 5.041 7 5.713v7.941c0 .439-.524.665-.843.364l-1.868-1.761c-.595-.528-1.316-.617-1.918-.216-.522.348-.562 1.203-.18 1.8L7.738 22h11.013l.285-.518c1.247-2.326 1.897-4.259 1.96-5.785l.004-.239V8.035c0-.656-.5-1.17-1-1.17-.503 0-1 .456-1 1.17 0 .333-.32.573-.64.48L18 8.41V7.368l.086.026.042-.136c.279-.805.978-1.332 1.738-1.388L20 5.865c1.057 0 2 .967 2 2.17v7.423c0 1.929-.845 4.352-2.521 7.29-.09.156-.255.252-.435.252H7.474c-.166 0-.321-.082-.414-.219l-5.704-8.39c-.653-1.019-.584-2.486.46-3.182 1-.666 2.216-.516 3.148.31L6 12.495V5.713c0-1.18 1.058-2.263 2.49-2.348z\"\r\n transform=\"translate(-297 -290) translate(297 290)\"\r\n ></path>\r\n <path\r\n fill=\"inherit\"\r\n fill-rule=\"nonzero\"\r\n d=\"M12.5 1.5c1.325 0 2.41 1.032 2.495 2.336L15 4v7.22h-1V4c0-.828-.672-1.5-1.5-1.5-.78 0-1.42.595-1.493 1.356L11 4v7.22h-1V4c0-1.38 1.12-2.5 2.5-2.5z\"\r\n transform=\"translate(-297 -290) translate(297 290)\"\r\n ></path>\r\n <path\r\n fill=\"inherit\"\r\n fill-rule=\"nonzero\"\r\n d=\"M16.5 3.5c1.325 0 2.41 1.032 2.495 2.336L19 6v6.3h-1V6c0-.828-.672-1.5-1.5-1.5-.78 0-1.42.595-1.493 1.356L15 6v2.44h-1V6c0-1.38 1.12-2.5 2.5-2.5z\"\r\n transform=\"translate(-297 -290) translate(297 290)\"\r\n ></path>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-history-rotate\" viewBox=\"0 0 24 24\">\r\n <g fill=\"none\" stroke=\"none\" fill-rule=\"evenodd\">\r\n <g transform=\"translate(-132 -804) translate(132 804)\">\r\n <path d=\"M0 0.5H12V12.5H0z\"></path>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M6.5 1C9.538 1 12 3.462 12 6.5c0 2.37-1.5 4.39-3.6 5.163l-.407-.916C9.744 10.13 11 8.462 11 6.5 11 4.015 8.985 2 6.5 2c-.777 0-1.509.197-2.147.544L4 1.75l-.205-.04C4.594 1.258 5.517 1 6.5 1z\"\r\n ></path>\r\n <use\r\n stroke=\"#434343\"\r\n stroke-dasharray=\"2 1.25\"\r\n stroke-width=\"1\"\r\n mask=\"url(#6f9gn2dysb)\"\r\n xlink:href=\"#rfn4rylffa\"\r\n ></use>\r\n <path\r\n fill=\"#434343\"\r\n d=\"M4.279 0L6 1.75 4.25 3.571 3.543 2.864 4.586 1.75 3.572 0.707z\"\r\n transform=\"matrix(-1 0 0 1 9.543 0)\"\r\n ></path>\r\n </g>\r\n </g>\r\n </symbol>\r\n <symbol id=\"ic-file-upload\" viewBox=\"-53 1 511 511.99906\">\r\n <path\r\n d=\"M 276.410156 3.957031 C 274.0625 1.484375 270.84375 0 267.507812 0 L 67.777344 0 C 30.921875 0 0.5 30.300781 0.5 67.152344 L 0.5 444.84375 C 0.5 481.699219 30.921875 512 67.777344 512 L 338.863281 512 C 375.71875 512 406.140625 481.699219 406.140625 444.84375 L 406.140625 144.941406 C 406.140625 141.726562 404.65625 138.636719 402.554688 136.285156 Z M 279.996094 43.65625 L 364.464844 132.328125 L 309.554688 132.328125 C 293.230469 132.328125 279.996094 119.21875 279.996094 102.894531 Z M 338.863281 487.265625 L 67.777344 487.265625 C 44.652344 487.265625 25.234375 468.097656 25.234375 444.84375 L 25.234375 67.152344 C 25.234375 44.027344 44.527344 24.734375 67.777344 24.734375 L 255.261719 24.734375 L 255.261719 102.894531 C 255.261719 132.945312 279.503906 157.0625 309.554688 157.0625 L 381.40625 157.0625 L 381.40625 444.84375 C 381.40625 468.097656 362.113281 487.265625 338.863281 487.265625 Z M 338.863281 487.265625 \"\r\n />\r\n <path\r\n d=\"M 305.101562 401.933594 L 101.539062 401.933594 C 94.738281 401.933594 89.171875 407.496094 89.171875 414.300781 C 89.171875 421.101562 94.738281 426.667969 101.539062 426.667969 L 305.226562 426.667969 C 312.027344 426.667969 317.59375 421.101562 317.59375 414.300781 C 317.59375 407.496094 312.027344 401.933594 305.101562 401.933594 Z M 305.101562 401.933594 \"\r\n />\r\n <path\r\n d=\"M 140 268.863281 L 190.953125 214.074219 L 190.953125 349.125 C 190.953125 355.925781 196.519531 361.492188 203.320312 361.492188 C 210.125 361.492188 215.6875 355.925781 215.6875 349.125 L 215.6875 214.074219 L 266.640625 268.863281 C 269.113281 271.457031 272.332031 272.820312 275.667969 272.820312 C 278.636719 272.820312 281.730469 271.707031 284.078125 269.480469 C 289.027344 264.78125 289.398438 256.988281 284.699219 252.042969 L 212.226562 174.253906 C 209.875 171.78125 206.660156 170.296875 203.199219 170.296875 C 199.734375 170.296875 196.519531 171.78125 194.171875 174.253906 L 121.699219 252.042969 C 117 256.988281 117.371094 264.902344 122.316406 269.480469 C 127.511719 274.179688 135.300781 273.808594 140 268.863281 Z M 140 268.863281 \"\r\n />\r\n </symbol>\r\n <symbol id=\"ic-file-download\" viewBox=\"-53 1 511 511.99906\">\r\n <path\r\n d=\"M 276.410156 3.957031 C 274.0625 1.484375 270.84375 0 267.507812 0 L 67.777344 0 C 30.921875 0 0.5 30.300781 0.5 67.152344 L 0.5 444.84375 C 0.5 481.699219 30.921875 512 67.777344 512 L 338.863281 512 C 375.71875 512 406.140625 481.699219 406.140625 444.84375 L 406.140625 144.941406 C 406.140625 141.726562 404.65625 138.636719 402.554688 136.285156 Z M 279.996094 43.65625 L 364.464844 132.328125 L 309.554688 132.328125 C 293.230469 132.328125 279.996094 119.21875 279.996094 102.894531 Z M 338.863281 487.265625 L 67.777344 487.265625 C 44.652344 487.265625 25.234375 468.097656 25.234375 444.84375 L 25.234375 67.152344 C 25.234375 44.027344 44.527344 24.734375 67.777344 24.734375 L 255.261719 24.734375 L 255.261719 102.894531 C 255.261719 132.945312 279.503906 157.0625 309.554688 157.0625 L 381.40625 157.0625 L 381.40625 444.84375 C 381.40625 468.097656 362.113281 487.265625 338.863281 487.265625 Z M 338.863281 487.265625 \"\r\n />\r\n <path\r\n d=\"M 305.101562 401.933594 L 101.539062 401.933594 C 94.738281 401.933594 89.171875 407.496094 89.171875 414.300781 C 89.171875 421.101562 94.738281 426.667969 101.539062 426.667969 L 305.226562 426.667969 C 312.027344 426.667969 317.59375 421.101562 317.59375 414.300781 C 317.59375 407.496094 312.027344 401.933594 305.101562 401.933594 Z M 305.101562 401.933594 \"\r\n />\r\n <path\r\n d=\"M 194.292969 357.535156 C 196.644531 360.007812 199.859375 361.492188 203.320312 361.492188 C 206.785156 361.492188 210 360.007812 212.347656 357.535156 L 284.820312 279.746094 C 289.519531 274.796875 289.148438 266.882812 284.203125 262.308594 C 279.253906 257.609375 271.339844 257.976562 266.765625 262.925781 L 215.6875 317.710938 L 215.6875 182.664062 C 215.6875 175.859375 210.121094 170.296875 203.320312 170.296875 C 196.519531 170.296875 190.953125 175.859375 190.953125 182.664062 L 190.953125 317.710938 L 140 262.925781 C 135.300781 257.980469 127.507812 257.609375 122.5625 262.308594 C 117.617188 267.007812 117.246094 274.800781 121.945312 279.746094 Z M 194.292969 357.535156 \"\r\n />\r\n </symbol>\r\n</defs>\r\n</svg>\r\n" }]
|
|
3019
|
+
}], ctorParameters: function () { return []; } });
|
|
3020
|
+
|
|
3021
|
+
const translateModule = TranslateModule.forRoot();
|
|
3022
|
+
class TuiImageEditorModule {
|
|
3023
|
+
static forRoot() {
|
|
3024
|
+
return {
|
|
3025
|
+
ngModule: TuiImageEditorModule,
|
|
3026
|
+
providers: [],
|
|
3027
|
+
};
|
|
3028
|
+
}
|
|
3029
|
+
}
|
|
3030
|
+
TuiImageEditorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TuiImageEditorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
3031
|
+
TuiImageEditorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: TuiImageEditorModule, declarations: [TuiImageEditorComponent,
|
|
3032
|
+
LoadComponent,
|
|
3033
|
+
HistoryComponent,
|
|
3034
|
+
SvgDefinitionsComponent,
|
|
3035
|
+
DownloadComponent,
|
|
3036
|
+
ZoomInComponent,
|
|
3037
|
+
ZoomOutComponent,
|
|
3038
|
+
DragComponent,
|
|
3039
|
+
UndoComponent,
|
|
3040
|
+
RedoComponent,
|
|
3041
|
+
ResetComponent,
|
|
3042
|
+
DeleteComponent,
|
|
3043
|
+
DeleteAllComponent,
|
|
3044
|
+
CropComponent$1,
|
|
3045
|
+
CropComponent,
|
|
3046
|
+
FlipComponent$1,
|
|
3047
|
+
FlipComponent,
|
|
3048
|
+
RotateComponent$1,
|
|
3049
|
+
RotateComponent,
|
|
3050
|
+
DrawComponent$1,
|
|
3051
|
+
DrawComponent,
|
|
3052
|
+
ShapeComponent$1,
|
|
3053
|
+
ShapeComponent,
|
|
3054
|
+
IconComponent$1,
|
|
3055
|
+
IconComponent,
|
|
3056
|
+
TextComponent$1,
|
|
3057
|
+
TextComponent,
|
|
3058
|
+
MaskComponent$1,
|
|
3059
|
+
MaskComponent,
|
|
3060
|
+
FilterComponent$1,
|
|
3061
|
+
FilterComponent], imports: [CommonModule,
|
|
3062
|
+
FormsModule, i1.TranslateModule, ColorPickerModule,
|
|
3063
|
+
NgbPopoverModule], exports: [TuiImageEditorComponent, SvgDefinitionsComponent] });
|
|
3064
|
+
TuiImageEditorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TuiImageEditorModule, providers: [TranslationService], imports: [CommonModule,
|
|
3065
|
+
FormsModule,
|
|
3066
|
+
translateModule,
|
|
3067
|
+
ColorPickerModule,
|
|
3068
|
+
NgbPopoverModule] });
|
|
3069
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: TuiImageEditorModule, decorators: [{
|
|
3070
|
+
type: NgModule,
|
|
3071
|
+
args: [{
|
|
3072
|
+
declarations: [
|
|
3073
|
+
TuiImageEditorComponent,
|
|
3074
|
+
LoadComponent,
|
|
3075
|
+
HistoryComponent,
|
|
3076
|
+
SvgDefinitionsComponent,
|
|
3077
|
+
DownloadComponent,
|
|
3078
|
+
ZoomInComponent,
|
|
3079
|
+
ZoomOutComponent,
|
|
3080
|
+
DragComponent,
|
|
3081
|
+
UndoComponent,
|
|
3082
|
+
RedoComponent,
|
|
3083
|
+
ResetComponent,
|
|
3084
|
+
DeleteComponent,
|
|
3085
|
+
DeleteAllComponent,
|
|
3086
|
+
CropComponent$1,
|
|
3087
|
+
CropComponent,
|
|
3088
|
+
FlipComponent$1,
|
|
3089
|
+
FlipComponent,
|
|
3090
|
+
RotateComponent$1,
|
|
3091
|
+
RotateComponent,
|
|
3092
|
+
DrawComponent$1,
|
|
3093
|
+
DrawComponent,
|
|
3094
|
+
ShapeComponent$1,
|
|
3095
|
+
ShapeComponent,
|
|
3096
|
+
IconComponent$1,
|
|
3097
|
+
IconComponent,
|
|
3098
|
+
TextComponent$1,
|
|
3099
|
+
TextComponent,
|
|
3100
|
+
MaskComponent$1,
|
|
3101
|
+
MaskComponent,
|
|
3102
|
+
FilterComponent$1,
|
|
3103
|
+
FilterComponent,
|
|
3104
|
+
],
|
|
3105
|
+
imports: [
|
|
3106
|
+
CommonModule,
|
|
3107
|
+
FormsModule,
|
|
3108
|
+
translateModule,
|
|
3109
|
+
ColorPickerModule,
|
|
3110
|
+
NgbPopoverModule,
|
|
3111
|
+
],
|
|
3112
|
+
exports: [TuiImageEditorComponent, SvgDefinitionsComponent],
|
|
3113
|
+
providers: [TranslationService],
|
|
3114
|
+
}]
|
|
3115
|
+
}] });
|
|
3116
|
+
|
|
3117
|
+
/*
|
|
3118
|
+
* Public API Surface of tui-image-editor
|
|
3119
|
+
*/
|
|
3120
|
+
|
|
3121
|
+
/**
|
|
3122
|
+
* Generated bundle index. Do not edit.
|
|
3123
|
+
*/
|
|
3124
|
+
|
|
3125
|
+
export { SvgDefinitionsComponent, TranslationService, TuiImageEditorComponent, TuiImageEditorModule, translateModule };
|
|
3126
|
+
//# sourceMappingURL=tui-image-editor-angular3.mjs.map
|