@syncfusion/ej2-image-editor 21.2.10 → 22.1.34

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 (105) hide show
  1. package/.eslintrc.json +1 -0
  2. package/CHANGELOG.md +6 -38
  3. package/dist/ej2-image-editor.umd.min.js +2 -2
  4. package/dist/ej2-image-editor.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-image-editor.es2015.js +19163 -12410
  6. package/dist/es6/ej2-image-editor.es2015.js.map +1 -1
  7. package/dist/es6/ej2-image-editor.es5.js +19198 -12414
  8. package/dist/es6/ej2-image-editor.es5.js.map +1 -1
  9. package/dist/global/ej2-image-editor.min.js +2 -2
  10. package/dist/global/ej2-image-editor.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +11 -11
  13. package/src/image-editor/action/crop.d.ts +35 -0
  14. package/src/image-editor/action/crop.js +818 -0
  15. package/src/image-editor/action/draw.d.ts +122 -0
  16. package/src/image-editor/action/draw.js +3253 -0
  17. package/src/image-editor/action/export.d.ts +23 -0
  18. package/src/image-editor/action/export.js +364 -0
  19. package/src/image-editor/action/filter.d.ts +35 -0
  20. package/src/image-editor/action/filter.js +699 -0
  21. package/src/image-editor/action/freehand-draw.d.ts +61 -0
  22. package/src/image-editor/action/freehand-draw.js +1015 -0
  23. package/src/image-editor/action/index.d.ts +9 -0
  24. package/src/image-editor/action/index.js +9 -0
  25. package/src/image-editor/action/selection.d.ts +140 -0
  26. package/src/image-editor/action/selection.js +4689 -0
  27. package/src/image-editor/action/shape.d.ts +93 -0
  28. package/src/image-editor/action/shape.js +2657 -0
  29. package/src/image-editor/action/transform.d.ts +67 -0
  30. package/src/image-editor/action/transform.js +1670 -0
  31. package/src/image-editor/action/undo-redo.d.ts +43 -0
  32. package/src/image-editor/action/undo-redo.js +800 -0
  33. package/src/image-editor/base/enum.d.ts +189 -0
  34. package/src/image-editor/base/enum.js +198 -0
  35. package/src/image-editor/{image-editor-model.d.ts → base/image-editor-model.d.ts} +131 -43
  36. package/src/image-editor/{image-editor.d.ts → base/image-editor.d.ts} +425 -1108
  37. package/src/image-editor/base/image-editor.js +2458 -0
  38. package/src/image-editor/base/index.d.ts +4 -0
  39. package/src/image-editor/base/index.js +2 -0
  40. package/src/image-editor/base/interface.d.ts +1120 -0
  41. package/src/image-editor/base/interface.js +1 -0
  42. package/src/image-editor/index.d.ts +3 -5
  43. package/src/image-editor/index.js +3 -4
  44. package/src/image-editor/renderer/index.d.ts +1 -0
  45. package/src/image-editor/renderer/index.js +1 -0
  46. package/src/image-editor/renderer/toolbar.d.ts +105 -0
  47. package/src/image-editor/renderer/toolbar.js +3019 -0
  48. package/styles/bootstrap-dark.css +69 -3
  49. package/styles/bootstrap.css +69 -3
  50. package/styles/bootstrap4.css +69 -3
  51. package/styles/bootstrap5-dark.css +69 -3
  52. package/styles/bootstrap5.css +69 -3
  53. package/styles/fabric-dark.css +69 -3
  54. package/styles/fabric.css +69 -3
  55. package/styles/fluent-dark.css +69 -3
  56. package/styles/fluent.css +69 -3
  57. package/styles/highcontrast-light.css +69 -3
  58. package/styles/highcontrast.css +69 -7
  59. package/styles/image-editor/_layout.scss +21 -7
  60. package/styles/image-editor/_material3-dark-definition.scss +1 -0
  61. package/styles/image-editor/_material3-definition.scss +11 -0
  62. package/styles/image-editor/_theme.scss +9 -2
  63. package/styles/image-editor/bootstrap-dark.css +69 -3
  64. package/styles/image-editor/bootstrap.css +69 -3
  65. package/styles/image-editor/bootstrap4.css +69 -3
  66. package/styles/image-editor/bootstrap5-dark.css +69 -3
  67. package/styles/image-editor/bootstrap5.css +69 -3
  68. package/styles/image-editor/fabric-dark.css +69 -3
  69. package/styles/image-editor/fabric.css +69 -3
  70. package/styles/image-editor/fluent-dark.css +69 -3
  71. package/styles/image-editor/fluent.css +69 -3
  72. package/styles/image-editor/highcontrast-light.css +69 -3
  73. package/styles/image-editor/highcontrast.css +69 -7
  74. package/styles/image-editor/icons/_bootstrap-dark.scss +132 -0
  75. package/styles/image-editor/icons/_bootstrap.scss +132 -0
  76. package/styles/image-editor/icons/_bootstrap4.scss +132 -0
  77. package/styles/image-editor/icons/_bootstrap5.scss +132 -0
  78. package/styles/image-editor/icons/_fabric-dark.scss +132 -0
  79. package/styles/image-editor/icons/_fabric.scss +132 -0
  80. package/styles/image-editor/icons/_fluent.scss +132 -0
  81. package/styles/image-editor/icons/_fusionnew.scss +132 -0
  82. package/styles/image-editor/icons/_highcontrast-light.scss +132 -0
  83. package/styles/image-editor/icons/_highcontrast.scss +132 -0
  84. package/styles/image-editor/icons/_material-dark.scss +132 -0
  85. package/styles/image-editor/icons/_material.scss +132 -0
  86. package/styles/image-editor/icons/_material3-dark.scss +1 -0
  87. package/styles/image-editor/icons/_material3.scss +133 -1
  88. package/styles/image-editor/icons/_tailwind.scss +132 -0
  89. package/styles/image-editor/material-dark.css +69 -3
  90. package/styles/image-editor/material.css +69 -3
  91. package/styles/image-editor/material3-dark.css +453 -0
  92. package/styles/image-editor/material3-dark.scss +14 -0
  93. package/styles/image-editor/material3.css +509 -0
  94. package/styles/image-editor/material3.scss +14 -0
  95. package/styles/image-editor/tailwind-dark.css +69 -3
  96. package/styles/image-editor/tailwind.css +69 -3
  97. package/styles/material-dark.css +69 -3
  98. package/styles/material.css +69 -3
  99. package/styles/material3-dark.css +453 -0
  100. package/styles/material3-dark.scss +3 -0
  101. package/styles/material3.css +509 -0
  102. package/styles/material3.scss +3 -0
  103. package/styles/tailwind-dark.css +69 -3
  104. package/styles/tailwind.css +69 -3
  105. package/src/image-editor/image-editor.js +0 -14827
@@ -0,0 +1,800 @@
1
+ import { isNullOrUndefined, extend, isBlazor } from '@syncfusion/ej2-base';
2
+ var UndoRedo = /** @class */ (function () {
3
+ function UndoRedo(parent) {
4
+ this.undoRedoStep = 0;
5
+ this.undoRedoColl = [];
6
+ this.appliedUndoRedoColl = [];
7
+ this.tempUndoRedoColl = [];
8
+ this.tempUndoRedoStep = 0;
9
+ this.parent = parent;
10
+ this.addEventListener();
11
+ }
12
+ UndoRedo.prototype.destroy = function () {
13
+ if (this.parent.isDestroyed) {
14
+ return;
15
+ }
16
+ this.removeEventListener();
17
+ };
18
+ UndoRedo.prototype.addEventListener = function () {
19
+ this.parent.on('undo-redo', this.undoRedo, this);
20
+ this.parent.on('destroyed', this.destroy, this);
21
+ };
22
+ UndoRedo.prototype.removeEventListener = function () {
23
+ this.parent.off('undo-redo', this.undoRedo);
24
+ this.parent.off('destroyed', this.destroy);
25
+ };
26
+ UndoRedo.prototype.initializeUrPvtProp = function () {
27
+ if (!isNullOrUndefined(this.parent.lowerCanvas)) {
28
+ this.lowerContext = this.parent.lowerCanvas.getContext('2d');
29
+ }
30
+ if (!isNullOrUndefined(this.parent.upperCanvas)) {
31
+ this.upperContext = this.parent.upperCanvas.getContext('2d');
32
+ }
33
+ };
34
+ UndoRedo.prototype.undoRedo = function (args) {
35
+ this.initializeUrPvtProp();
36
+ switch (args.prop) {
37
+ case 'updateUndoRedoColl':
38
+ this.updateUrc(args.value['operation'], args.value['previousObj'], args.value['previousObjColl'], args.value['previousPointColl'], args.value['previousSelPointColl'], args.value['previousCropObj'], args.value['previousText'], args.value['currentText'], args.value['previousFilter'], args.value['isCircleCrop']);
39
+ break;
40
+ case 'refreshUrc':
41
+ this.refreshUrc(args.value['bool']);
42
+ break;
43
+ case 'updateCurrUrc':
44
+ this.updateCurrUrc(args.value['type']);
45
+ break;
46
+ case 'call-undo':
47
+ this.callUndo();
48
+ break;
49
+ case 'call-redo':
50
+ this.callRedo();
51
+ break;
52
+ case 'undo':
53
+ this.undo();
54
+ break;
55
+ case 'redo':
56
+ this.redo();
57
+ break;
58
+ case 'updateUrObj':
59
+ this.updateUrObj(args.value['objColl']);
60
+ break;
61
+ case 'updateUndoRedo':
62
+ this.updateUndoRedo();
63
+ break;
64
+ case 'getAppliedUndoRedoColl':
65
+ args.value['obj']['appliedUndoRedoColl'] = this.appliedUndoRedoColl;
66
+ break;
67
+ case 'getUndoRedoStep':
68
+ args.value['obj']['undoRedoStep'] = this.undoRedoStep;
69
+ break;
70
+ case 'setUndoRedoStep':
71
+ this.undoRedoStep = args.value['step'];
72
+ break;
73
+ case 'undoDefault':
74
+ this.undoDefault(args.value['obj']);
75
+ break;
76
+ case 'reset':
77
+ this.reset();
78
+ break;
79
+ }
80
+ };
81
+ UndoRedo.prototype.getModuleName = function () {
82
+ return 'undo-redo';
83
+ };
84
+ UndoRedo.prototype.reset = function () {
85
+ this.tempCurrSelPoint = null;
86
+ this.undoRedoStep = 0;
87
+ this.undoRedoColl = [];
88
+ this.appliedUndoRedoColl = [];
89
+ this.tempActObj = null;
90
+ this.tempUndoRedoColl = [];
91
+ this.tempUndoRedoStep = 0;
92
+ };
93
+ UndoRedo.prototype.refreshUrc = function (refreshToolbar) {
94
+ var parent = this.parent;
95
+ refreshToolbar = refreshToolbar ? refreshToolbar : false;
96
+ if (refreshToolbar) {
97
+ if (!isBlazor()) {
98
+ parent.notify('toolbar', { prop: 'setEnableDisableUndoRedo', value: { isPrevent: true } });
99
+ }
100
+ this.tempUndoRedoColl = extend([], this.appliedUndoRedoColl, [], true);
101
+ this.tempUndoRedoStep = this.undoRedoStep;
102
+ }
103
+ else if (!isBlazor()) {
104
+ parent.notify('toolbar', { prop: 'setEnableDisableUndoRedo', value: { isPrevent: false } });
105
+ }
106
+ this.undoRedoColl = this.undoRedoColl.slice(0, this.undoRedoStep);
107
+ this.appliedUndoRedoColl = this.appliedUndoRedoColl.slice(0, this.undoRedoStep);
108
+ parent.isUndoRedo = parent.currObjType.isUndoAction = false;
109
+ if (!isBlazor()) {
110
+ parent.notify('toolbar', { prop: 'enable-disable-btns' });
111
+ }
112
+ else {
113
+ parent.updateToolbar(parent.element, 'enableDisableToolbarBtn');
114
+ }
115
+ };
116
+ UndoRedo.prototype.updateCurrUrc = function (type) {
117
+ var parent = this.parent;
118
+ if (!isBlazor()) {
119
+ parent.notify('toolbar', { prop: 'setEnableDisableUndoRedo', value: { isPrevent: false } });
120
+ }
121
+ if (type === 'ok') {
122
+ parent.notify('draw', { prop: 'setShapeTextInsert', onPropertyChange: false, value: { bool: false } });
123
+ var collection = this.tempUndoRedoColl.length > 0 ?
124
+ extend([], this.tempUndoRedoColl, [], true) :
125
+ extend([], this.undoRedoColl, [], true);
126
+ var prevObj = this.undoRedoColl[this.undoRedoColl.length - 1];
127
+ if (isNullOrUndefined(this.appliedUndoRedoColl[this.appliedUndoRedoColl.length - 1])) {
128
+ if (this.undoRedoColl[0]) {
129
+ prevObj.previousCropObj = collection[0].previousCropObj;
130
+ prevObj.previousObj = collection[0].previousObj;
131
+ prevObj.previousObjColl = collection[0].previousObjColl;
132
+ prevObj.previousPointColl = collection[0].previousPointColl;
133
+ prevObj.previousText = collection[0].previousText;
134
+ }
135
+ }
136
+ else {
137
+ prevObj.previousCropObj = this.appliedUndoRedoColl[this.appliedUndoRedoColl.length - 1].currentCropObj;
138
+ prevObj.previousObj = this.appliedUndoRedoColl[this.appliedUndoRedoColl.length - 1].currentObj;
139
+ prevObj.previousObjColl = this.appliedUndoRedoColl[this.appliedUndoRedoColl.length - 1].currentObjColl;
140
+ prevObj.previousPointColl = this.appliedUndoRedoColl[this.appliedUndoRedoColl.length - 1].currentPointColl;
141
+ prevObj.previousText = this.appliedUndoRedoColl[this.appliedUndoRedoColl.length - 1].currentText;
142
+ }
143
+ if (prevObj) {
144
+ var obj = this.getZeroZoomObjPointValue(prevObj.currentObjColl, prevObj.currentPointColl);
145
+ prevObj.currentObjColl = obj['obj'];
146
+ prevObj.currentPointColl = obj['point'];
147
+ this.appliedUndoRedoColl.push(prevObj);
148
+ }
149
+ this.tempUndoRedoColl = [];
150
+ this.tempUndoRedoStep = 0;
151
+ }
152
+ else if (this.tempUndoRedoColl.length > 0) {
153
+ this.appliedUndoRedoColl = extend([], this.tempUndoRedoColl, [], true);
154
+ this.undoRedoStep = this.tempUndoRedoStep;
155
+ this.tempUndoRedoColl = [];
156
+ this.tempUndoRedoStep = 0;
157
+ }
158
+ if (this.appliedUndoRedoColl.length > 16) {
159
+ this.appliedUndoRedoColl.splice(0, 1);
160
+ }
161
+ this.undoRedoColl = [];
162
+ this.undoRedoColl = extend([], this.appliedUndoRedoColl, [], true);
163
+ if (type === 'ok') {
164
+ this.undoRedoStep = this.undoRedoColl.length;
165
+ if (!isBlazor()) {
166
+ parent.notify('toolbar', { prop: 'enable-disable-btns' });
167
+ }
168
+ else {
169
+ parent.updateToolbar(parent.element, 'enableDisableToolbarBtn');
170
+ }
171
+ }
172
+ if (parent.transform.zoomFactor > 0) {
173
+ parent.togglePan = true;
174
+ parent.notify('selection', { prop: 'setDragCanvas', value: { bool: true } });
175
+ }
176
+ };
177
+ UndoRedo.prototype.cancelCropSelection = function () {
178
+ var parent = this.parent;
179
+ var isCropSelection = false;
180
+ var splitWords;
181
+ if (parent.activeObj.shape) {
182
+ splitWords = parent.activeObj.shape.split('-');
183
+ }
184
+ if (parent.currObjType.isCustomCrop || (splitWords && splitWords[0] === 'crop')) {
185
+ isCropSelection = true;
186
+ }
187
+ if (isCropSelection) {
188
+ parent.notify('draw', { prop: 'performCancel', value: { isContextualToolbar: null } });
189
+ }
190
+ if (this.tempUndoRedoColl.length !== 0 || this.tempUndoRedoStep !== 0) {
191
+ this.appliedUndoRedoColl = extend([], this.tempUndoRedoColl, [], true);
192
+ this.undoRedoColl = extend([], this.tempUndoRedoColl, [], true);
193
+ this.undoRedoStep = this.tempUndoRedoStep;
194
+ this.tempUndoRedoColl = [];
195
+ this.tempUndoRedoStep = 0;
196
+ if (!isBlazor()) {
197
+ parent.notify('toolbar', { prop: 'setEnableDisableUndoRedo', value: { isPrevent: false } });
198
+ }
199
+ }
200
+ };
201
+ UndoRedo.prototype.refreshToolbarActions = function () {
202
+ var parent = this.parent;
203
+ if (!isBlazor()) {
204
+ if (parent.activeObj.shape) {
205
+ parent.notify('toolbar', { prop: 'refresh-toolbar', onPropertyChange: false, value: { type: 'shapes',
206
+ isApplyBtn: null, isCropping: null, isZooming: null, cType: null } });
207
+ parent.notify('toolbar', { prop: 'update-toolbar-items', onPropertyChange: false });
208
+ }
209
+ else {
210
+ parent.notify('toolbar', { prop: 'refresh-main-toolbar', onPropertyChange: false });
211
+ }
212
+ }
213
+ else if (isNullOrUndefined(parent.activeObj.shape)) {
214
+ parent.updateToolbar(parent.element, 'imageLoaded');
215
+ }
216
+ };
217
+ UndoRedo.prototype.applyCurrentChanges = function () {
218
+ var parent = this.parent;
219
+ parent.currObjType.isFiltered = false;
220
+ if (parent.transform.zoomFactor === 0) {
221
+ parent.togglePan = false;
222
+ parent.notify('selection', { prop: 'setDragCanvas', value: { bool: false } });
223
+ }
224
+ if (parent.element.querySelector('.e-contextual-toolbar-wrapper') && !isBlazor()) {
225
+ parent.element.querySelector('.e-contextual-toolbar-wrapper').classList.add('e-hide');
226
+ }
227
+ if (parent.togglePen) {
228
+ parent.togglePen = false;
229
+ parent.upperCanvas.style.cursor = parent.cursor = 'default';
230
+ this.upperContext.clearRect(0, 0, parent.upperCanvas.width, parent.upperCanvas.height);
231
+ }
232
+ if (this.appliedUndoRedoColl.length > 0) {
233
+ this.undoRedoColl = extend([], this.appliedUndoRedoColl, [], true);
234
+ }
235
+ };
236
+ UndoRedo.prototype.callUndo = function () {
237
+ this.applyCurrentChanges();
238
+ this.undo();
239
+ };
240
+ UndoRedo.prototype.callRedo = function () {
241
+ this.applyCurrentChanges();
242
+ this.redo();
243
+ };
244
+ UndoRedo.prototype.undo = function () {
245
+ var parent = this.parent;
246
+ this.cancelCropSelection();
247
+ if (!parent.disabled && parent.isImageLoaded) {
248
+ if (this.undoRedoStep > 0) {
249
+ this.refreshToolbarActions();
250
+ if (!isNullOrUndefined(parent.activeObj.activePoint) && parent.activeObj.activePoint.width !== 0) {
251
+ this.tempActObj = parent.activeObj;
252
+ }
253
+ parent.notify('shape', { prop: 'refreshActiveObj', onPropertyChange: false });
254
+ this.undoRedoStep--;
255
+ if (!isBlazor()) {
256
+ parent.notify('toolbar', { prop: 'enable-disable-btns' });
257
+ parent.element.querySelector('.e-contextual-toolbar-wrapper').classList.add('e-hide');
258
+ }
259
+ else {
260
+ parent.updateToolbar(parent.element, 'enableDisableToolbarBtn');
261
+ }
262
+ parent.isUndoRedo = true;
263
+ var obj = this.undoRedoColl[this.undoRedoStep];
264
+ if (this.undoRedoColl.length === this.undoRedoStep) {
265
+ parent.currObjType.isUndoAction = false;
266
+ }
267
+ else {
268
+ parent.currObjType.isUndoAction = true;
269
+ }
270
+ if (obj.operation !== 'textAreaCustomization' && parent.textArea.style.display === 'block') {
271
+ parent.textArea.style.display = 'none';
272
+ }
273
+ parent.notify('draw', { prop: 'setCancelAction', onPropertyChange: false, value: { bool: true } });
274
+ var activeObj = void 0;
275
+ parent.cropObj = extend({}, obj.previousCropObj, {}, true);
276
+ parent.afterCropActions = obj.previousObj.afterCropActions;
277
+ this.lowerContext.filter = obj.previousObj.filter;
278
+ parent.canvasFilter = this.lowerContext.filter;
279
+ switch (obj.operation) {
280
+ case 'shapeTransform':
281
+ this.shapeTransform(obj.previousObjColl);
282
+ break;
283
+ case 'freehanddraw':
284
+ case 'freehand-draw':
285
+ this.updateFreehandDraw(obj.previousPointColl);
286
+ break;
287
+ case 'freehanddrawCustomized':
288
+ this.updateFreehandDrawCustomized(obj.previousPointColl);
289
+ break;
290
+ case 'deleteFreehandDrawing':
291
+ case 'deleteObj':
292
+ this.updateDelete(obj.operation, obj.previousObjColl, obj.previousPointColl);
293
+ break;
294
+ case 'textAreaCustomization':
295
+ this.updateTextAreaCustomization(activeObj, obj.previousObjColl);
296
+ break;
297
+ case 'text':
298
+ this.updateText(obj.previousObjColl, true);
299
+ break;
300
+ default:
301
+ this.undoDefault(obj);
302
+ parent.notify('filter', { prop: 'set-adjustment', value: { operation: obj.operation } });
303
+ parent.notify('filter', { prop: 'update-filter', value: { operation: obj.operation, filter: obj.filter } });
304
+ break;
305
+ }
306
+ if (obj.operation === 'crop') {
307
+ if (obj.previousObj.currSelectionPoint) {
308
+ parent.currSelectionPoint = extend({}, obj.previousObj.currSelectionPoint, {}, true);
309
+ if (parent.currSelectionPoint && isNullOrUndefined(parent.currSelectionPoint.shape)) {
310
+ parent.currSelectionPoint = null;
311
+ }
312
+ }
313
+ parent.updateCropTransformItems();
314
+ parent.select('custom');
315
+ if (parent.isCircleCrop) {
316
+ parent.isCircleCrop = false;
317
+ this.tempCurrSelPoint = extend({}, parent.currSelectionPoint, {}, true);
318
+ parent.currSelectionPoint = null;
319
+ }
320
+ parent.notify('draw', { prop: 'performCancel', value: { isContextualToolbar: null } });
321
+ }
322
+ if ((this.undoRedoColl[this.undoRedoStep - 1]
323
+ && this.undoRedoColl[this.undoRedoStep - 1].isCircleCrop)) {
324
+ parent.isCircleCrop = true;
325
+ parent.notify('crop', { prop: 'cropCircle', onPropertyChange: false,
326
+ value: { context: this.lowerContext, isSave: null, isFlip: null } });
327
+ }
328
+ this.endUndoRedo(obj.operation, true);
329
+ }
330
+ }
331
+ };
332
+ UndoRedo.prototype.redo = function () {
333
+ var parent = this.parent;
334
+ this.cancelCropSelection();
335
+ if (!parent.disabled && parent.isImageLoaded) {
336
+ if (this.undoRedoStep < this.appliedUndoRedoColl.length) {
337
+ this.refreshToolbarActions();
338
+ this.undoRedoStep++;
339
+ if (!isBlazor()) {
340
+ parent.notify('toolbar', { prop: 'enable-disable-btns' });
341
+ }
342
+ else {
343
+ parent.updateToolbar(parent.element, 'enableDisableToolbarBtn');
344
+ }
345
+ parent.isUndoRedo = true;
346
+ var obj = this.undoRedoColl[this.undoRedoStep - 1];
347
+ if (this.undoRedoColl.length === this.undoRedoStep) {
348
+ parent.currObjType.isUndoAction = false;
349
+ }
350
+ else {
351
+ parent.currObjType.isUndoAction = true;
352
+ }
353
+ if (obj.operation !== 'textAreaCustomization' && parent.textArea.style.display === 'block') {
354
+ parent.textArea.style.display = 'none';
355
+ }
356
+ parent.notify('draw', { prop: 'setCancelAction', onPropertyChange: false, value: { bool: true } });
357
+ parent.cropObj = extend({}, obj.currentCropObj, {}, true);
358
+ parent.afterCropActions = obj.currentObj.afterCropActions;
359
+ this.lowerContext.filter = obj.currentObj.filter;
360
+ if (!isBlazor()) {
361
+ parent.element.querySelector('.e-contextual-toolbar-wrapper').classList.add('e-hide');
362
+ }
363
+ parent.canvasFilter = this.lowerContext.filter;
364
+ var activeObj = void 0;
365
+ switch (obj.operation) {
366
+ case 'shapeTransform':
367
+ this.shapeTransform(obj.currentObjColl);
368
+ break;
369
+ case 'freehanddraw':
370
+ case 'freehand-draw':
371
+ this.updateFreehandDraw(obj.currentPointColl);
372
+ break;
373
+ case 'freehanddrawCustomized':
374
+ this.updateFreehandDrawCustomized(obj.currentPointColl);
375
+ break;
376
+ case 'deleteFreehandDrawing':
377
+ case 'deleteObj':
378
+ this.updateDelete(obj.operation, obj.currentObjColl, obj.currentPointColl);
379
+ break;
380
+ case 'textAreaCustomization':
381
+ this.updateTextAreaCustomization(activeObj, obj.currentObjColl);
382
+ break;
383
+ case 'text':
384
+ this.updateText(obj.currentObjColl, false);
385
+ break;
386
+ default:
387
+ parent.objColl = [];
388
+ parent.pointColl = [];
389
+ parent.freehandCounter = 0;
390
+ parent.notify('freehand-draw', { prop: 'setSelPointColl', onPropertyChange: false,
391
+ value: { obj: { selPointColl: [] } } });
392
+ parent.notify('draw', { prop: 'setCurrentObj', onPropertyChange: false, value: { obj: obj.currentObj } });
393
+ parent.img.destLeft = obj.currentObj.destPoints.startX;
394
+ parent.img.destTop = obj.currentObj.destPoints.startY;
395
+ activeObj = extend({}, parent.activeObj, {}, true);
396
+ parent.objColl = extend([], obj.currentObjColl, [], true);
397
+ parent.pointColl = extend([], obj.currentPointColl, [], true);
398
+ parent.freehandCounter = parent.pointColl.length;
399
+ parent.notify('freehand-draw', { prop: 'setSelPointColl', onPropertyChange: false,
400
+ value: { obj: { selPointColl: extend([], obj.currentSelPointColl, [], true) } } });
401
+ this.lowerContext.filter = 'none';
402
+ parent.notify('shape', { prop: 'zoomObjColl', onPropertyChange: false, value: { isPreventApply: null } });
403
+ parent.notify('freehand-draw', { prop: 'zoomFHDColl', onPropertyChange: false, value: { isPreventApply: null } });
404
+ this.lowerContext.filter = obj.currentObj.filter;
405
+ parent.activeObj = activeObj;
406
+ this.upperContext.clearRect(0, 0, parent.upperCanvas.width, parent.upperCanvas.height);
407
+ if (parent.activeObj.activePoint.width !== 0 && parent.activeObj.activePoint.height !== 0) {
408
+ parent.notify('draw', { prop: 'drawObject', onPropertyChange: false, value: { canvas: 'duplicate' } });
409
+ }
410
+ parent.notify('filter', { prop: 'set-adjustment', value: { operation: obj.operation } });
411
+ parent.notify('filter', { prop: 'update-filter', value: { operation: obj.operation } });
412
+ break;
413
+ }
414
+ if (obj.operation === 'crop' && obj.isCircleCrop) {
415
+ parent.isCircleCrop = true;
416
+ parent.currSelectionPoint = extend({}, this.tempCurrSelPoint, {}, true);
417
+ this.tempCurrSelPoint = null;
418
+ }
419
+ if (obj.operation === 'crop' && !obj.isCircleCrop) {
420
+ parent.isCircleCrop = false;
421
+ }
422
+ if (obj.operation === 'crop' && !isNullOrUndefined(obj.currentObj.currSelectionPoint)) {
423
+ parent.currSelectionPoint = extend({}, obj.currentObj.currSelectionPoint, {}, true);
424
+ }
425
+ if (!isNullOrUndefined(parent.currSelectionPoint) && isNullOrUndefined(parent.currSelectionPoint.shape)) {
426
+ parent.currSelectionPoint = null;
427
+ }
428
+ this.endUndoRedo(obj.operation, false);
429
+ }
430
+ }
431
+ };
432
+ UndoRedo.prototype.shapeTransform = function (objColl) {
433
+ var parent = this.parent;
434
+ parent.objColl = extend([], objColl, [], true);
435
+ parent.notify('shape', { prop: 'zoomObjColl', onPropertyChange: false, value: { isPreventApply: null } });
436
+ this.lowerContext.clearRect(0, 0, parent.lowerCanvas.width, parent.lowerCanvas.height);
437
+ this.upperContext.clearRect(0, 0, parent.upperCanvas.width, parent.upperCanvas.height);
438
+ parent.isUndoRedo = true;
439
+ parent.notify('draw', { prop: 'redrawImgWithObj', onPropertyChange: false });
440
+ parent.notify('shape', { prop: 'refreshActiveObj', onPropertyChange: false });
441
+ };
442
+ UndoRedo.prototype.updateFreehandDraw = function (pointColl) {
443
+ var parent = this.parent;
444
+ parent.pointColl = pointColl;
445
+ parent.freehandCounter = parent.pointColl.length;
446
+ parent.notify('freehand-draw', { prop: 'zoomFHDColl', onPropertyChange: false, value: { isPreventApply: null } });
447
+ this.lowerContext.clearRect(0, 0, parent.lowerCanvas.width, parent.lowerCanvas.height);
448
+ this.upperContext.clearRect(0, 0, parent.upperCanvas.width, parent.upperCanvas.height);
449
+ parent.isUndoRedo = true;
450
+ parent.notify('draw', { prop: 'redrawImgWithObj', onPropertyChange: false });
451
+ };
452
+ UndoRedo.prototype.updateFreehandDrawCustomized = function (pointColl) {
453
+ var parent = this.parent;
454
+ parent.pointColl = pointColl;
455
+ parent.notify('freehand-draw', { prop: 'zoomFHDColl', onPropertyChange: false, value: { isPreventApply: null } });
456
+ this.lowerContext.clearRect(0, 0, parent.lowerCanvas.width, parent.lowerCanvas.height);
457
+ this.upperContext.clearRect(0, 0, parent.upperCanvas.width, parent.upperCanvas.height);
458
+ parent.isUndoRedo = true;
459
+ parent.notify('draw', { prop: 'redrawImgWithObj', onPropertyChange: false });
460
+ };
461
+ UndoRedo.prototype.updateDelete = function (operation, objColl, pointColl) {
462
+ var parent = this.parent;
463
+ if (operation === 'deleteFreehandDrawing') {
464
+ parent.pointColl = pointColl;
465
+ parent.freehandCounter = parent.pointColl.length;
466
+ parent.notify('freehand-draw', { prop: 'zoomFHDColl', onPropertyChange: false, value: { isPreventApply: null } });
467
+ }
468
+ else if (operation === 'deleteObj') {
469
+ parent.objColl = objColl;
470
+ parent.notify('shape', { prop: 'zoomObjColl', onPropertyChange: false, value: { isPreventApply: null } });
471
+ }
472
+ this.lowerContext.clearRect(0, 0, parent.lowerCanvas.width, parent.lowerCanvas.height);
473
+ this.upperContext.clearRect(0, 0, parent.upperCanvas.width, parent.upperCanvas.height);
474
+ parent.isUndoRedo = true;
475
+ parent.notify('draw', { prop: 'redrawImgWithObj', onPropertyChange: false });
476
+ };
477
+ UndoRedo.prototype.updateTextAreaCustomization = function (activeObj, objColl) {
478
+ var parent = this.parent;
479
+ parent.objColl = extend([], objColl, [], true);
480
+ parent.notify('shape', { prop: 'zoomObjColl', onPropertyChange: false, value: { isPreventApply: true } });
481
+ this.lowerContext.clearRect(0, 0, parent.lowerCanvas.width, parent.lowerCanvas.height);
482
+ parent.isUndoRedo = true;
483
+ parent.notify('draw', { prop: 'redrawImgWithObj', onPropertyChange: false });
484
+ for (var i = 0, len = objColl.length; i < len; i++) {
485
+ if (this.tempActObj) {
486
+ if (this.tempActObj.currIndex === objColl[i].currIndex) {
487
+ activeObj = extend({}, objColl[i], {}, true);
488
+ parent.objColl.splice(i, 1);
489
+ break;
490
+ }
491
+ }
492
+ else {
493
+ activeObj = extend({}, objColl[objColl.length - 1], {}, true);
494
+ parent.objColl.splice(i, 1);
495
+ break;
496
+ }
497
+ }
498
+ if (activeObj) {
499
+ this.updateTextBox(activeObj);
500
+ }
501
+ if (parent.textArea.style.display === 'block') {
502
+ parent.notify('shape', { prop: 'redrawActObj', onPropertyChange: false,
503
+ value: { x: null, y: null, isMouseDown: null } });
504
+ }
505
+ };
506
+ UndoRedo.prototype.updateText = function (objColl, allowActiveObj) {
507
+ var parent = this.parent;
508
+ if (this.tempActObj) {
509
+ parent.activeObj = extend({}, this.tempActObj, {}, true);
510
+ }
511
+ if (objColl.length === 0 && parent.objColl.length === 1) {
512
+ this.tempActObj = extend({}, parent.objColl[0], {}, true);
513
+ }
514
+ else {
515
+ for (var i = 0; i < parent.objColl.length; i++) {
516
+ if (parent.objColl[i] && isNullOrUndefined(objColl[i])) {
517
+ this.tempActObj = extend({}, parent.objColl[i], {}, true);
518
+ break;
519
+ }
520
+ if (objColl[i].currIndex !== parent.objColl[i].currIndex) {
521
+ this.tempActObj = extend({}, parent.objColl[i], {}, true);
522
+ break;
523
+ }
524
+ }
525
+ }
526
+ if (allowActiveObj) {
527
+ parent.activeObj = extend({}, this.tempActObj, {}, true);
528
+ }
529
+ parent.objColl = extend([], objColl, [], true);
530
+ parent.notify('shape', { prop: 'zoomObjColl', onPropertyChange: false, value: { isPreventApply: true } });
531
+ this.upperContext.clearRect(0, 0, parent.upperCanvas.width, parent.upperCanvas.height);
532
+ this.lowerContext.clearRect(0, 0, parent.lowerCanvas.width, parent.lowerCanvas.height);
533
+ parent.isUndoRedo = true;
534
+ parent.notify('draw', { prop: 'redrawImgWithObj', onPropertyChange: false });
535
+ parent.notify('shape', { prop: 'refreshActiveObj', onPropertyChange: false });
536
+ };
537
+ UndoRedo.prototype.updateTextBox = function (obj) {
538
+ var parent = this.parent;
539
+ this.upperContext.clearRect(0, 0, parent.lowerCanvas.width, parent.lowerCanvas.height);
540
+ this.lowerContext.clearRect(0, 0, parent.lowerCanvas.width, parent.lowerCanvas.height);
541
+ parent.notify('draw', { prop: 'redrawImgWithObj', onPropertyChange: false });
542
+ if (!isBlazor()) {
543
+ parent.notify('toolbar', { prop: 'destroy-qa-toolbar', onPropertyChange: false });
544
+ }
545
+ else {
546
+ parent.updateToolbar(parent.element, 'destroyQuickAccessToolbar');
547
+ }
548
+ parent.textArea.style.display = 'block';
549
+ parent.textArea.style.fontFamily = obj.textSettings.fontFamily;
550
+ parent.textArea.style.fontSize = obj.textSettings.fontSize + 'px';
551
+ parent.textArea.style.color = obj.strokeSettings.strokeColor;
552
+ parent.textArea.style.fontWeight = obj.textSettings.bold ? 'bold' : 'normal';
553
+ parent.textArea.style.fontStyle = obj.textSettings.italic ? 'italic' : 'normal';
554
+ parent.textArea.style.border = '2px solid ' + parent.themeColl[parent.theme]['primaryColor'];
555
+ parent.textArea.value = obj.keyHistory;
556
+ parent.activeObj = extend({}, obj, {}, true);
557
+ parent.notify('shape', { prop: 'updateFontStyles', onPropertyChange: false,
558
+ value: { isTextBox: null } });
559
+ parent.textArea.style.width = parent.activeObj.activePoint.width + 'px';
560
+ };
561
+ UndoRedo.prototype.undoDefault = function (obj) {
562
+ this.lowerContext.filter = obj.previousObj.filter;
563
+ var parent = this.parent;
564
+ parent.objColl = [];
565
+ parent.pointColl = [];
566
+ parent.freehandCounter = 0;
567
+ parent.notify('freehand-draw', { prop: 'setSelPointColl', onPropertyChange: false,
568
+ value: { obj: { selPointColl: [] } } });
569
+ parent.notify('draw', { prop: 'setCurrentObj', onPropertyChange: false, value: { obj: obj.previousObj } });
570
+ this.upperContext.clearRect(0, 0, parent.upperCanvas.width, parent.upperCanvas.height);
571
+ parent.notify('shape', { prop: 'refreshActiveObj', onPropertyChange: false });
572
+ parent.img.destLeft = obj.previousObj.destPoints.startX;
573
+ parent.img.destTop = obj.previousObj.destPoints.startY;
574
+ var activeObj = extend({}, parent.activeObj, {}, true);
575
+ parent.objColl = extend([], obj.previousObjColl, [], true);
576
+ parent.pointColl = extend([], obj.previousPointColl, [], true);
577
+ parent.freehandCounter = parent.pointColl.length;
578
+ parent.notify('freehand-draw', { prop: 'setSelPointColl', onPropertyChange: false,
579
+ value: { obj: { selPointColl: extend([], obj.previousSelPointColl, [], true) } } });
580
+ this.lowerContext.filter = 'none';
581
+ parent.notify('shape', { prop: 'zoomObjColl', onPropertyChange: false, value: { isPreventApply: null } });
582
+ parent.notify('freehand-draw', { prop: 'zoomFHDColl', onPropertyChange: false, value: { isPreventApply: null } });
583
+ this.lowerContext.filter = obj.previousObj.filter;
584
+ parent.activeObj = activeObj;
585
+ this.upperContext.clearRect(0, 0, parent.upperCanvas.width, parent.upperCanvas.height);
586
+ if (parent.activeObj.activePoint.width !== 0 && parent.activeObj.activePoint.height !== 0) {
587
+ parent.notify('draw', { prop: 'drawObject', onPropertyChange: false, value: { canvas: 'duplicate' } });
588
+ }
589
+ };
590
+ UndoRedo.prototype.endUndoRedo = function (operation, isUndo) {
591
+ var parent = this.parent;
592
+ parent.notify('draw', { prop: 'clearOuterCanvas', onPropertyChange: false, value: { context: this.lowerContext } });
593
+ if (parent.isCircleCrop && ((isUndo && operation !== 'crop') || !isUndo)) {
594
+ parent.notify('crop', { prop: 'cropCircle', onPropertyChange: false,
595
+ value: { context: this.lowerContext, isSave: null, isFlip: null } });
596
+ }
597
+ if (parent.transform.zoomFactor > 0) {
598
+ parent.notify('selection', { prop: 'setDragCanvas', value: { bool: true } });
599
+ }
600
+ parent.notify('draw', { prop: 'setCancelAction', onPropertyChange: false, value: { bool: false } });
601
+ if (!isBlazor()) {
602
+ if (parent.activeObj.shape && parent.activeObj.shape.split('-')[0] === 'crop') {
603
+ parent.notify('toolbar', { prop: 'refresh-toolbar', onPropertyChange: false, value: { type: 'main',
604
+ isApplyBtn: true, isCropping: true, isZooming: null, cType: null } });
605
+ }
606
+ else {
607
+ parent.notify('toolbar', { prop: 'refresh-main-toolbar', onPropertyChange: false });
608
+ }
609
+ parent.notify('toolbar', { prop: 'enable-disable-btns' });
610
+ }
611
+ else if (isNullOrUndefined(parent.activeObj.shape) || parent.activeObj.shape.split('-')[0] !== 'crop') {
612
+ parent.updateToolbar(parent.element, 'imageLoaded');
613
+ parent.updateToolbar(parent.element, 'enableDisableToolbarBtn');
614
+ }
615
+ if (document.getElementById(parent.element.id + '_quickAccessToolbarArea')) {
616
+ document.getElementById(parent.element.id + '_quickAccessToolbarArea').style.display = 'none';
617
+ }
618
+ if (!isBlazor()) {
619
+ parent.notify('toolbar', { prop: 'enable-disable-btns' });
620
+ }
621
+ else {
622
+ parent.updateToolbar(parent.element, 'enableDisableToolbarBtn');
623
+ }
624
+ if (parent.transform.degree !== 0) {
625
+ parent.notify('transform', { prop: 'drawPannedImage', onPropertyChange: false,
626
+ value: { xDiff: 0, yDiff: 0 } });
627
+ }
628
+ parent.notify('filter', { prop: 'setAdjustmentValue', onPropertyChange: false, value: { adjustmentValue: this.lowerContext.filter } });
629
+ parent.currObjType.isCustomCrop = false;
630
+ };
631
+ UndoRedo.prototype.updateUrc = function (operation, previousObj, previousObjColl, previousPointColl, previousSelPointColl, previousCropObj, previousText, currentText, previousFilter, isCircleCrop) {
632
+ var parent = this.parent;
633
+ var obj = { isInitialLoaded: false };
634
+ if (parent.currObjType.isUndoAction) {
635
+ this.refreshUrc(true);
636
+ }
637
+ parent.notify('draw', { prop: 'isInitialLoaded', onPropertyChange: false, value: { object: obj } });
638
+ if (!obj['isInitialLoaded'] && parent.allowUndoRedo) {
639
+ var object = { currObj: {} };
640
+ parent.notify('filter', { prop: 'getCurrentObj', onPropertyChange: false, value: { object: object } });
641
+ var currentObj = object['currObj'];
642
+ currentObj.objColl = extend([], parent.objColl, [], true);
643
+ currentObj.pointColl = extend([], parent.pointColl, [], true);
644
+ currentObj.afterCropActions = extend([], parent.afterCropActions, [], true);
645
+ var selPointCollObj = { selPointColl: null };
646
+ parent.notify('freehand-draw', { prop: 'getSelPointColl', onPropertyChange: false,
647
+ value: { obj: selPointCollObj } });
648
+ currentObj.selPointColl = extend([], selPointCollObj['selPointColl'], [], true);
649
+ if (operation === 'crop') {
650
+ currentObj.currSelectionPoint = extend({}, parent.currSelectionPoint, {}, true);
651
+ }
652
+ this.undoRedoColl.push({ operation: operation, previousObj: previousObj, currentObj: currentObj,
653
+ previousObjColl: previousObjColl, currentObjColl: currentObj.objColl,
654
+ previousPointColl: previousPointColl, currentPointColl: currentObj.pointColl,
655
+ previousSelPointColl: previousSelPointColl, currentSelPointColl: currentObj.selPointColl,
656
+ previousCropObj: previousCropObj, currentCropObj: extend({}, parent.cropObj, {}, true),
657
+ previousText: previousText, currentText: currentText, filter: previousFilter, isCircleCrop: isCircleCrop });
658
+ if (!isBlazor()) {
659
+ parent.notify('toolbar', { prop: 'enable-disable-btns', onPropertyChange: false });
660
+ }
661
+ else {
662
+ parent.updateToolbar(parent.element, 'enableDisableToolbarBtn');
663
+ }
664
+ }
665
+ };
666
+ UndoRedo.prototype.updateUrObj = function (objColl) {
667
+ var parent = this.parent;
668
+ if (parent.allowUndoRedo) {
669
+ if (parent.currObjType.isUndoAction) {
670
+ this.refreshUrc(true);
671
+ }
672
+ parent.objColl.push(parent.activeObj);
673
+ var cropObj = extend({}, parent.cropObj, {}, true);
674
+ var object = { currObj: {} };
675
+ parent.notify('filter', { prop: 'getCurrentObj', onPropertyChange: false, value: { object: object } });
676
+ var obj = object['currObj'];
677
+ obj.objColl = extend([], parent.objColl, [], true);
678
+ obj.pointColl = extend([], parent.pointColl, [], true);
679
+ obj.afterCropActions = extend([], parent.afterCropActions, [], true);
680
+ var selPointCollObj = { selPointColl: null };
681
+ parent.notify('freehand-draw', { prop: 'getSelPointColl', onPropertyChange: false,
682
+ value: { obj: selPointCollObj } });
683
+ obj.selPointColl = extend([], selPointCollObj['selPointColl'], [], true);
684
+ this.undoRedoColl.push({ operation: 'shapeTransform', previousObj: obj, currentObj: obj,
685
+ previousObjColl: objColl, currentObjColl: obj.objColl,
686
+ previousPointColl: obj.pointColl, currentPointColl: obj.pointColl,
687
+ previousSelPointColl: obj.selPointColl, currentSelPointColl: obj.selPointColl,
688
+ previousCropObj: cropObj, currentCropObj: cropObj });
689
+ parent.notify('selection', { prop: 'redrawShape', onPropertyChange: false,
690
+ value: { obj: parent.objColl[parent.objColl.length - 1] } });
691
+ }
692
+ };
693
+ UndoRedo.prototype.updateUndoRedo = function () {
694
+ var parent = this.parent;
695
+ var prevCropObj = extend({}, parent.cropObj, {}, true);
696
+ var object = { currObj: {} };
697
+ parent.notify('filter', { prop: 'getCurrentObj', onPropertyChange: false, value: { object: object } });
698
+ var prevObj = object['currObj'];
699
+ prevObj.objColl = extend([], parent.objColl, [], true);
700
+ prevObj.pointColl = extend([], parent.pointColl, [], true);
701
+ prevObj.afterCropActions = extend([], parent.afterCropActions, [], true);
702
+ var selPointCollObj = { selPointColl: null };
703
+ parent.notify('freehand-draw', { prop: 'getSelPointColl', onPropertyChange: false,
704
+ value: { obj: selPointCollObj } });
705
+ prevObj.selPointColl = extend([], selPointCollObj['selPointColl'], [], true);
706
+ parent.objColl.push(parent.activeObj);
707
+ this.updateUrc('shapeTransform', prevObj, prevObj.objColl, prevObj.pointColl, prevObj.selPointColl, prevCropObj);
708
+ parent.objColl.pop();
709
+ parent.notify('shape', { prop: 'applyActObj', onPropertyChange: false, value: { isMouseDown: null } });
710
+ parent.notify('shape', { prop: 'refreshActiveObj', onPropertyChange: false });
711
+ if (!isBlazor()) {
712
+ parent.notify('toolbar', { prop: 'refresh-toolbar', onPropertyChange: false, value: { type: 'shapes',
713
+ isApplyBtn: null, isCropping: null, isZooming: null, cType: null } });
714
+ parent.notify('toolbar', { prop: 'refresh-toolbar', onPropertyChange: false, value: { type: 'main',
715
+ isApplyBtn: null, isCropping: null, isZooming: null, cType: null } });
716
+ }
717
+ else {
718
+ parent.updateToolbar(parent.element, 'imageLoaded');
719
+ }
720
+ };
721
+ UndoRedo.prototype.getZeroZoomObjPointValue = function (obj, point) {
722
+ var parent = this.parent;
723
+ var object = { currObj: {} };
724
+ parent.notify('filter', { prop: 'getCurrentObj', onPropertyChange: false, value: { object: object } });
725
+ var currentObj = object['currObj'];
726
+ currentObj.objColl = extend([], parent.objColl, [], true);
727
+ currentObj.pointColl = extend([], parent.pointColl, [], true);
728
+ currentObj.afterCropActions = extend([], parent.afterCropActions, [], true);
729
+ var selPointCollObj = { selPointColl: null };
730
+ parent.notify('freehand-draw', { prop: 'getSelPointColl', onPropertyChange: false,
731
+ value: { obj: selPointCollObj } });
732
+ currentObj.selPointColl = extend([], selPointCollObj['selPointColl'], [], true);
733
+ var cropDimensionObj = { cropDimension: null };
734
+ parent.notify('transform', { prop: 'getCropDimension', onPropertyChange: false, value: { obj: cropDimensionObj } });
735
+ var getZeroZoomObjColl = extend([], parent.objColl, [], true);
736
+ var getZeroZoomPointColl = extend([], parent.pointColl, [], true);
737
+ var arrowObj = { arrowDimension: null };
738
+ this.parent.notify('draw', { prop: 'getArrowDimension', onPropertyChange: false, value: { obj: arrowObj } });
739
+ var tempArrowObj = extend({}, arrowObj['arrowDimension'], {}, true);
740
+ if (parent.transform.zoomFactor > 0 && (obj.length > 0 || point.length > 0)) {
741
+ parent.objColl = obj;
742
+ parent.pointColl = point;
743
+ var isUndoRedo = parent.isUndoRedo;
744
+ if (parent.transform.zoomFactor !== 0) {
745
+ parent.isUndoRedo = parent.isCropTab = true;
746
+ parent.notify('freehand-draw', { prop: 'updateFHDColl', onPropertyChange: false });
747
+ var zoomSettings = extend({}, parent.zoomSettings, null, true);
748
+ if (parent.transform.zoomFactor > 0) {
749
+ parent.notify('transform', { prop: 'zoomAction', onPropertyChange: false,
750
+ value: { zoomFactor: -parent.transform.zoomFactor, zoomPoint: null } });
751
+ }
752
+ else {
753
+ parent.notify('transform', { prop: 'zoomAction', onPropertyChange: false,
754
+ value: { zoomFactor: Math.abs(parent.transform.zoomFactor), zoomPoint: null } });
755
+ }
756
+ parent.zoomSettings = zoomSettings;
757
+ parent.isCropTab = false;
758
+ parent.isUndoRedo = isUndoRedo;
759
+ getZeroZoomObjColl = extend([], parent.objColl, [], true);
760
+ getZeroZoomPointColl = extend([], parent.pointColl, [], true);
761
+ parent.objColl = [];
762
+ parent.pointColl = [];
763
+ parent.freehandCounter = 0;
764
+ parent.notify('freehand-draw', { prop: 'setSelPointColl', onPropertyChange: false,
765
+ value: { obj: { selPointColl: [] } } });
766
+ parent.notify('transform', { prop: 'setCropDimension', onPropertyChange: false,
767
+ value: { width: cropDimensionObj['cropDimension']['width'], height: cropDimensionObj['cropDimension']['height'] } });
768
+ var maxDimension = { width: cropDimensionObj['cropDimension']['width'], height: cropDimensionObj['cropDimension']['height'] };
769
+ maxDimension.width += (maxDimension.width * currentObj.defaultZoom);
770
+ maxDimension.height += (maxDimension.height * currentObj.defaultZoom);
771
+ parent.notify('draw', { prop: 'setZoomCropWidth', value: { width: maxDimension.width, height: maxDimension.height } });
772
+ parent.notify('draw', { prop: 'setCurrentObj', onPropertyChange: false, value: { obj: currentObj } });
773
+ parent.img.destLeft = currentObj.destPoints.startX;
774
+ parent.img.destTop = currentObj.destPoints.startY;
775
+ parent.panPoint.totalPannedPoint = currentObj.totalPannedPoint;
776
+ parent.panPoint.totalPannedClientPoint = currentObj.totalPannedClientPoint;
777
+ parent.panPoint.totalPannedInternalPoint = currentObj.totalPannedInternalPoint;
778
+ parent.objColl = extend([], currentObj.objColl, [], true);
779
+ parent.pointColl = extend([], currentObj.pointColl, [], true);
780
+ parent.freehandCounter = parent.pointColl.length;
781
+ parent.notify('draw', { prop: 'setArrowDimension', onPropertyChange: false, value: { arrowDimension: tempArrowObj } });
782
+ parent.notify('freehand-draw', { prop: 'setSelPointColl', onPropertyChange: false,
783
+ value: { obj: { selPointColl: extend([], currentObj.selPointColl, [], true) } } });
784
+ this.lowerContext.filter = 'none';
785
+ parent.notify('shape', { prop: 'iterateObjColl', onPropertyChange: false });
786
+ parent.notify('freehand-draw', { prop: 'freehandRedraw', onPropertyChange: false,
787
+ value: { context: this.lowerContext, points: null } });
788
+ parent.notify('freehand-draw', { prop: 'updateFHDCurPts', onPropertyChange: false });
789
+ this.lowerContext.filter = currentObj.filter;
790
+ if (parent.transform.degree !== 0) {
791
+ parent.notify('transform', { prop: 'drawPannedImage', onPropertyChange: false,
792
+ value: { xDiff: 0, yDiff: 0 } });
793
+ }
794
+ }
795
+ }
796
+ return { obj: getZeroZoomObjColl, point: getZeroZoomPointColl };
797
+ };
798
+ return UndoRedo;
799
+ }());
800
+ export { UndoRedo };