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.
Files changed (148) hide show
  1. package/README.md +155 -0
  2. package/esm2020/lib/consts.mjs +170 -0
  3. package/esm2020/lib/i18n/en.mjs +129 -0
  4. package/esm2020/lib/i18n/nl.mjs +128 -0
  5. package/esm2020/lib/i18n/translation.service.mjs +40 -0
  6. package/esm2020/lib/interfaces/command.mjs +2 -0
  7. package/esm2020/lib/interfaces/history-item.mjs +343 -0
  8. package/esm2020/lib/interfaces/image-size.mjs +2 -0
  9. package/esm2020/lib/interfaces/tools-config.mjs +2 -0
  10. package/esm2020/lib/menus/buttons/crop/crop.component.mjs +22 -0
  11. package/esm2020/lib/menus/buttons/delete/delete.component.mjs +40 -0
  12. package/esm2020/lib/menus/buttons/delete-all/delete-all.component.mjs +27 -0
  13. package/esm2020/lib/menus/buttons/download/download.component.mjs +40 -0
  14. package/esm2020/lib/menus/buttons/drag/drag.component.mjs +41 -0
  15. package/esm2020/lib/menus/buttons/draw/draw.component.mjs +22 -0
  16. package/esm2020/lib/menus/buttons/filter/filter.component.mjs +22 -0
  17. package/esm2020/lib/menus/buttons/flip/flip.component.mjs +22 -0
  18. package/esm2020/lib/menus/buttons/history/history.component.mjs +41 -0
  19. package/esm2020/lib/menus/buttons/icon/icon.component.mjs +22 -0
  20. package/esm2020/lib/menus/buttons/load/load.component.mjs +23 -0
  21. package/esm2020/lib/menus/buttons/mask/mask.component.mjs +22 -0
  22. package/esm2020/lib/menus/buttons/redo/redo.component.mjs +36 -0
  23. package/esm2020/lib/menus/buttons/reset/reset.component.mjs +28 -0
  24. package/esm2020/lib/menus/buttons/rotate/rotate.component.mjs +22 -0
  25. package/esm2020/lib/menus/buttons/shape/shape.component.mjs +22 -0
  26. package/esm2020/lib/menus/buttons/text/text.component.mjs +22 -0
  27. package/esm2020/lib/menus/buttons/undo/undo.component.mjs +36 -0
  28. package/esm2020/lib/menus/buttons/zoom-in/zoom-in.component.mjs +45 -0
  29. package/esm2020/lib/menus/buttons/zoom-out/zoom-out.component.mjs +20 -0
  30. package/esm2020/lib/services/history.service.mjs +86 -0
  31. package/esm2020/lib/services/tools.config-manager.service.mjs +45 -0
  32. package/esm2020/lib/submenus/crop/crop.component.mjs +76 -0
  33. package/esm2020/lib/submenus/draw/draw.component.mjs +149 -0
  34. package/esm2020/lib/submenus/filter/filter.component.mjs +345 -0
  35. package/esm2020/lib/submenus/flip/flip.component.mjs +39 -0
  36. package/esm2020/lib/submenus/icon/icon.component.mjs +119 -0
  37. package/esm2020/lib/submenus/mask/mask.component.mjs +69 -0
  38. package/esm2020/lib/submenus/rotate/rotate.component.mjs +57 -0
  39. package/esm2020/lib/submenus/shape/shape.component.mjs +163 -0
  40. package/esm2020/lib/submenus/text/text.component.mjs +175 -0
  41. package/esm2020/lib/svg-definitions/svg-definitions.component.mjs +12 -0
  42. package/esm2020/lib/tui-image-editor.component.mjs +294 -0
  43. package/esm2020/lib/tui-image-editor.module.mjs +136 -0
  44. package/esm2020/lib/utils.mjs +173 -0
  45. package/esm2020/public-api.mjs +8 -0
  46. package/esm2020/tui-image-editor-angular2.mjs +5 -0
  47. package/esm2020/tui-image-editor-angular3.mjs +5 -0
  48. package/fesm2015/tui-image-editor-angular2.mjs +3166 -0
  49. package/fesm2015/tui-image-editor-angular2.mjs.map +1 -0
  50. package/fesm2015/tui-image-editor-angular3.mjs +3166 -0
  51. package/fesm2015/tui-image-editor-angular3.mjs.map +1 -0
  52. package/fesm2020/tui-image-editor-angular2.mjs +3126 -0
  53. package/fesm2020/tui-image-editor-angular2.mjs.map +1 -0
  54. package/fesm2020/tui-image-editor-angular3.mjs +3126 -0
  55. package/fesm2020/tui-image-editor-angular3.mjs.map +1 -0
  56. package/index.d.ts +5 -0
  57. package/lib/consts.d.ts +144 -0
  58. package/lib/consts.d.ts.map +1 -0
  59. package/lib/i18n/en.d.ts +128 -0
  60. package/lib/i18n/en.d.ts.map +1 -0
  61. package/lib/i18n/nl.d.ts +127 -0
  62. package/lib/i18n/nl.d.ts.map +1 -0
  63. package/lib/i18n/translation.service.d.ts +14 -0
  64. package/lib/i18n/translation.service.d.ts.map +1 -0
  65. package/lib/interfaces/command.d.ts +4 -0
  66. package/lib/interfaces/command.d.ts.map +1 -0
  67. package/lib/interfaces/history-item.d.ts +26 -0
  68. package/lib/interfaces/history-item.d.ts.map +1 -0
  69. package/lib/interfaces/image-size.d.ts +6 -0
  70. package/lib/interfaces/image-size.d.ts.map +1 -0
  71. package/lib/interfaces/tools-config.d.ts +14 -0
  72. package/lib/interfaces/tools-config.d.ts.map +1 -0
  73. package/lib/menus/buttons/crop/crop.component.d.ts +10 -0
  74. package/lib/menus/buttons/crop/crop.component.d.ts.map +1 -0
  75. package/lib/menus/buttons/delete/delete.component.d.ts +13 -0
  76. package/lib/menus/buttons/delete/delete.component.d.ts.map +1 -0
  77. package/lib/menus/buttons/delete-all/delete-all.component.d.ts +11 -0
  78. package/lib/menus/buttons/delete-all/delete-all.component.d.ts.map +1 -0
  79. package/lib/menus/buttons/download/download.component.d.ts +9 -0
  80. package/lib/menus/buttons/download/download.component.d.ts.map +1 -0
  81. package/lib/menus/buttons/drag/drag.component.d.ts +11 -0
  82. package/lib/menus/buttons/drag/drag.component.d.ts.map +1 -0
  83. package/lib/menus/buttons/draw/draw.component.d.ts +10 -0
  84. package/lib/menus/buttons/draw/draw.component.d.ts.map +1 -0
  85. package/lib/menus/buttons/filter/filter.component.d.ts +10 -0
  86. package/lib/menus/buttons/filter/filter.component.d.ts.map +1 -0
  87. package/lib/menus/buttons/flip/flip.component.d.ts +10 -0
  88. package/lib/menus/buttons/flip/flip.component.d.ts.map +1 -0
  89. package/lib/menus/buttons/history/history.component.d.ts +13 -0
  90. package/lib/menus/buttons/history/history.component.d.ts.map +1 -0
  91. package/lib/menus/buttons/icon/icon.component.d.ts +10 -0
  92. package/lib/menus/buttons/icon/icon.component.d.ts.map +1 -0
  93. package/lib/menus/buttons/load/load.component.d.ts +9 -0
  94. package/lib/menus/buttons/load/load.component.d.ts.map +1 -0
  95. package/lib/menus/buttons/mask/mask.component.d.ts +10 -0
  96. package/lib/menus/buttons/mask/mask.component.d.ts.map +1 -0
  97. package/lib/menus/buttons/redo/redo.component.d.ts +12 -0
  98. package/lib/menus/buttons/redo/redo.component.d.ts.map +1 -0
  99. package/lib/menus/buttons/reset/reset.component.d.ts +12 -0
  100. package/lib/menus/buttons/reset/reset.component.d.ts.map +1 -0
  101. package/lib/menus/buttons/rotate/rotate.component.d.ts +10 -0
  102. package/lib/menus/buttons/rotate/rotate.component.d.ts.map +1 -0
  103. package/lib/menus/buttons/shape/shape.component.d.ts +10 -0
  104. package/lib/menus/buttons/shape/shape.component.d.ts.map +1 -0
  105. package/lib/menus/buttons/text/text.component.d.ts +10 -0
  106. package/lib/menus/buttons/text/text.component.d.ts.map +1 -0
  107. package/lib/menus/buttons/undo/undo.component.d.ts +12 -0
  108. package/lib/menus/buttons/undo/undo.component.d.ts.map +1 -0
  109. package/lib/menus/buttons/zoom-in/zoom-in.component.d.ts +12 -0
  110. package/lib/menus/buttons/zoom-in/zoom-in.component.d.ts.map +1 -0
  111. package/lib/menus/buttons/zoom-out/zoom-out.component.d.ts +9 -0
  112. package/lib/menus/buttons/zoom-out/zoom-out.component.d.ts.map +1 -0
  113. package/lib/services/history.service.d.ts +45 -0
  114. package/lib/services/history.service.d.ts.map +1 -0
  115. package/lib/services/tools.config-manager.service.d.ts +12 -0
  116. package/lib/services/tools.config-manager.service.d.ts.map +1 -0
  117. package/lib/submenus/crop/crop.component.d.ts +23 -0
  118. package/lib/submenus/crop/crop.component.d.ts.map +1 -0
  119. package/lib/submenus/draw/draw.component.d.ts +32 -0
  120. package/lib/submenus/draw/draw.component.d.ts.map +1 -0
  121. package/lib/submenus/filter/filter.component.d.ts +70 -0
  122. package/lib/submenus/filter/filter.component.d.ts.map +1 -0
  123. package/lib/submenus/flip/flip.component.d.ts +10 -0
  124. package/lib/submenus/flip/flip.component.d.ts.map +1 -0
  125. package/lib/submenus/icon/icon.component.d.ts +24 -0
  126. package/lib/submenus/icon/icon.component.d.ts.map +1 -0
  127. package/lib/submenus/mask/mask.component.d.ts +16 -0
  128. package/lib/submenus/mask/mask.component.d.ts.map +1 -0
  129. package/lib/submenus/rotate/rotate.component.d.ts +12 -0
  130. package/lib/submenus/rotate/rotate.component.d.ts.map +1 -0
  131. package/lib/submenus/shape/shape.component.d.ts +31 -0
  132. package/lib/submenus/shape/shape.component.d.ts.map +1 -0
  133. package/lib/submenus/text/text.component.d.ts +31 -0
  134. package/lib/submenus/text/text.component.d.ts.map +1 -0
  135. package/lib/svg-definitions/svg-definitions.component.d.ts +6 -0
  136. package/lib/svg-definitions/svg-definitions.component.d.ts.map +1 -0
  137. package/lib/tui-image-editor.component.d.ts +71 -0
  138. package/lib/tui-image-editor.component.d.ts.map +1 -0
  139. package/lib/tui-image-editor.module.d.ts +48 -0
  140. package/lib/tui-image-editor.module.d.ts.map +1 -0
  141. package/lib/utils.d.ts +45 -0
  142. package/lib/utils.d.ts.map +1 -0
  143. package/package.json +43 -0
  144. package/public-api.d.ts +4 -0
  145. package/public-api.d.ts.map +1 -0
  146. package/src/checkboxes.scss +95 -0
  147. package/src/theme.scss +936 -0
  148. 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