@syncfusion/ej2-image-editor 26.2.14 → 27.1.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/ej2-image-editor.umd.min.js +2 -2
- package/dist/ej2-image-editor.umd.min.js.map +1 -1
- package/dist/es6/ej2-image-editor.es2015.js +3202 -732
- package/dist/es6/ej2-image-editor.es2015.js.map +1 -1
- package/dist/es6/ej2-image-editor.es5.js +3281 -797
- package/dist/es6/ej2-image-editor.es5.js.map +1 -1
- package/dist/global/ej2-image-editor.min.js +2 -2
- package/dist/global/ej2-image-editor.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +14 -13
- package/src/image-editor/action/crop.d.ts +0 -1
- package/src/image-editor/action/crop.js +8 -19
- package/src/image-editor/action/draw.d.ts +4 -0
- package/src/image-editor/action/draw.js +377 -45
- package/src/image-editor/action/export.js +21 -13
- package/src/image-editor/action/filter.d.ts +13 -0
- package/src/image-editor/action/filter.js +272 -1
- package/src/image-editor/action/freehand-draw.d.ts +1 -0
- package/src/image-editor/action/freehand-draw.js +44 -23
- package/src/image-editor/action/selection.d.ts +6 -0
- package/src/image-editor/action/selection.js +382 -97
- package/src/image-editor/action/shape.d.ts +5 -0
- package/src/image-editor/action/shape.js +287 -141
- package/src/image-editor/action/transform.js +56 -82
- package/src/image-editor/action/undo-redo.d.ts +2 -0
- package/src/image-editor/action/undo-redo.js +100 -1
- package/src/image-editor/base/enum.d.ts +11 -0
- package/src/image-editor/base/enum.js +12 -0
- package/src/image-editor/base/image-editor-model.d.ts +13 -1
- package/src/image-editor/base/image-editor.d.ts +142 -20
- package/src/image-editor/base/image-editor.js +811 -149
- package/src/image-editor/base/interface.d.ts +140 -1
- package/src/image-editor/renderer/toolbar.d.ts +8 -0
- package/src/image-editor/renderer/toolbar.js +873 -191
- package/styles/bootstrap-dark-lite.css +746 -0
- package/styles/bootstrap-dark-lite.scss +13 -0
- package/styles/bootstrap-dark.css +150 -105
- package/styles/bootstrap-dark.scss +1 -0
- package/styles/bootstrap-lite.css +747 -0
- package/styles/bootstrap-lite.scss +13 -0
- package/styles/bootstrap.css +151 -106
- package/styles/bootstrap.scss +1 -0
- package/styles/bootstrap4-lite.css +747 -0
- package/styles/bootstrap4-lite.scss +13 -0
- package/styles/bootstrap4.css +150 -105
- package/styles/bootstrap4.scss +1 -0
- package/styles/bootstrap5-dark-lite.css +757 -0
- package/styles/bootstrap5-dark-lite.scss +13 -0
- package/styles/bootstrap5-dark.css +152 -113
- package/styles/bootstrap5-dark.scss +1 -0
- package/styles/bootstrap5-lite.css +757 -0
- package/styles/bootstrap5-lite.scss +13 -0
- package/styles/bootstrap5.3-lite.css +760 -0
- package/styles/bootstrap5.3-lite.scss +13 -0
- package/styles/bootstrap5.3.css +867 -0
- package/styles/bootstrap5.3.scss +14 -0
- package/styles/bootstrap5.css +152 -113
- package/styles/bootstrap5.scss +1 -0
- package/styles/fabric-dark-lite.css +749 -0
- package/styles/fabric-dark-lite.scss +13 -0
- package/styles/fabric-dark.css +150 -105
- package/styles/fabric-dark.scss +1 -0
- package/styles/fabric-lite.css +751 -0
- package/styles/fabric-lite.scss +13 -0
- package/styles/fabric.css +151 -106
- package/styles/fabric.scss +1 -0
- package/styles/fluent-dark-lite.css +758 -0
- package/styles/fluent-dark-lite.scss +13 -0
- package/styles/fluent-dark.css +150 -111
- package/styles/fluent-dark.scss +1 -0
- package/styles/fluent-lite.css +758 -0
- package/styles/fluent-lite.scss +13 -0
- package/styles/fluent.css +150 -111
- package/styles/fluent.scss +1 -0
- package/styles/fluent2-lite.css +791 -0
- package/styles/fluent2-lite.scss +13 -0
- package/styles/fluent2.css +173 -117
- package/styles/fluent2.scss +1 -0
- package/styles/highcontrast-light-lite.css +748 -0
- package/styles/highcontrast-light-lite.scss +13 -0
- package/styles/highcontrast-light.css +149 -104
- package/styles/highcontrast-light.scss +1 -0
- package/styles/highcontrast-lite.css +753 -0
- package/styles/highcontrast-lite.scss +13 -0
- package/styles/highcontrast.css +150 -104
- package/styles/highcontrast.scss +1 -0
- package/styles/image-editor/_bds-definition.scss +3 -1
- package/styles/image-editor/_bigger.scss +216 -0
- package/styles/image-editor/_bootstrap-dark-definition.scss +3 -1
- package/styles/image-editor/_bootstrap-definition.scss +3 -1
- package/styles/image-editor/_bootstrap4-definition.scss +3 -1
- package/styles/image-editor/_bootstrap5-definition.scss +3 -1
- package/styles/image-editor/_bootstrap5.3-definition.scss +3 -1
- package/styles/image-editor/_fabric-dark-definition.scss +3 -1
- package/styles/image-editor/_fabric-definition.scss +3 -1
- package/styles/image-editor/_fluent-definition.scss +3 -1
- package/styles/image-editor/_fluent2-definition.scss +4 -2
- package/styles/image-editor/_fusionnew-definition.scss +3 -1
- package/styles/image-editor/_highcontrast-definition.scss +3 -1
- package/styles/image-editor/_highcontrast-light-definition.scss +3 -1
- package/styles/image-editor/_layout.scss +75 -212
- package/styles/image-editor/_material-dark-definition.scss +3 -1
- package/styles/image-editor/_material-definition.scss +3 -1
- package/styles/image-editor/_material3-definition.scss +5 -3
- package/styles/image-editor/_tailwind-definition.scss +5 -3
- package/styles/image-editor/_theme.scss +48 -11
- package/styles/image-editor/bootstrap-dark.css +150 -105
- package/styles/image-editor/bootstrap-dark.scss +1 -0
- package/styles/image-editor/bootstrap.css +151 -106
- package/styles/image-editor/bootstrap.scss +1 -0
- package/styles/image-editor/bootstrap4.css +150 -105
- package/styles/image-editor/bootstrap4.scss +1 -0
- package/styles/image-editor/bootstrap5-dark.css +152 -113
- package/styles/image-editor/bootstrap5-dark.scss +1 -0
- package/styles/image-editor/bootstrap5.3.css +867 -0
- package/styles/image-editor/bootstrap5.3.scss +14 -0
- package/styles/image-editor/bootstrap5.css +152 -113
- package/styles/image-editor/bootstrap5.scss +1 -0
- package/styles/image-editor/fabric-dark.css +150 -105
- package/styles/image-editor/fabric-dark.scss +1 -0
- package/styles/image-editor/fabric.css +151 -106
- package/styles/image-editor/fabric.scss +1 -0
- package/styles/image-editor/fluent-dark.css +150 -111
- package/styles/image-editor/fluent-dark.scss +1 -0
- package/styles/image-editor/fluent.css +150 -111
- package/styles/image-editor/fluent.scss +1 -0
- package/styles/image-editor/fluent2.css +173 -117
- package/styles/image-editor/fluent2.scss +1 -0
- package/styles/image-editor/highcontrast-light.css +149 -104
- package/styles/image-editor/highcontrast-light.scss +1 -0
- package/styles/image-editor/highcontrast.css +150 -104
- package/styles/image-editor/highcontrast.scss +1 -0
- package/styles/image-editor/icons/_bds.scss +10 -1
- package/styles/image-editor/icons/_bootstrap-dark.scss +10 -1
- package/styles/image-editor/icons/_bootstrap.scss +10 -1
- package/styles/image-editor/icons/_bootstrap4.scss +10 -1
- package/styles/image-editor/icons/_bootstrap5.3.scss +10 -1
- package/styles/image-editor/icons/_bootstrap5.scss +10 -1
- package/styles/image-editor/icons/_fabric-dark.scss +10 -1
- package/styles/image-editor/icons/_fabric.scss +10 -1
- package/styles/image-editor/icons/_fluent.scss +10 -1
- package/styles/image-editor/icons/_fluent2.scss +10 -1
- package/styles/image-editor/icons/_fusionnew.scss +10 -1
- package/styles/image-editor/icons/_highcontrast-light.scss +10 -1
- package/styles/image-editor/icons/_highcontrast.scss +10 -1
- package/styles/image-editor/icons/_material-dark.scss +10 -1
- package/styles/image-editor/icons/_material.scss +10 -1
- package/styles/image-editor/icons/_material3.scss +10 -1
- package/styles/image-editor/icons/_tailwind.scss +10 -1
- package/styles/image-editor/material-dark.css +153 -108
- package/styles/image-editor/material-dark.scss +1 -0
- package/styles/image-editor/material.css +159 -114
- package/styles/image-editor/material.scss +1 -0
- package/styles/image-editor/material3-dark.css +171 -123
- package/styles/image-editor/material3-dark.scss +1 -0
- package/styles/image-editor/material3.css +171 -123
- package/styles/image-editor/material3.scss +1 -0
- package/styles/image-editor/tailwind-dark.css +154 -116
- package/styles/image-editor/tailwind-dark.scss +1 -0
- package/styles/image-editor/tailwind.css +154 -116
- package/styles/image-editor/tailwind.scss +1 -0
- package/styles/material-dark-lite.css +767 -0
- package/styles/material-dark-lite.scss +13 -0
- package/styles/material-dark.css +153 -108
- package/styles/material-dark.scss +1 -0
- package/styles/material-lite.css +769 -0
- package/styles/material-lite.scss +13 -0
- package/styles/material.css +159 -114
- package/styles/material.scss +1 -0
- package/styles/material3-dark-lite.css +799 -0
- package/styles/material3-dark-lite.scss +13 -0
- package/styles/material3-dark.css +171 -123
- package/styles/material3-dark.scss +1 -0
- package/styles/material3-lite.css +801 -0
- package/styles/material3-lite.scss +13 -0
- package/styles/material3.css +171 -123
- package/styles/material3.scss +1 -0
- package/styles/tailwind-dark-lite.css +751 -0
- package/styles/tailwind-dark-lite.scss +13 -0
- package/styles/tailwind-dark.css +154 -116
- package/styles/tailwind-dark.scss +1 -0
- package/styles/tailwind-lite.css +751 -0
- package/styles/tailwind-lite.scss +13 -0
- package/styles/tailwind.css +154 -116
- package/styles/tailwind.scss +1 -0
|
@@ -17,6 +17,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
17
17
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
18
18
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
19
19
|
};
|
|
20
|
+
/* eslint-disable max-len */
|
|
20
21
|
import { Component, NotifyPropertyChanges, Property, addClass, removeClass, extend } from '@syncfusion/ej2-base';
|
|
21
22
|
import { Event, EventHandler, getComponent, isNullOrUndefined, getUniqueID, setValue } from '@syncfusion/ej2-base';
|
|
22
23
|
import { Dialog, createSpinner } from '@syncfusion/ej2-popups';
|
|
@@ -151,7 +152,7 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
151
152
|
// current object's ui interaction properties
|
|
152
153
|
/** @hidden */
|
|
153
154
|
_this.currObjType = { shape: '', isDragging: false, isActiveObj: false, isText: false, isInitialText: false, isLine: false, isInitialLine: false,
|
|
154
|
-
isCustomCrop: false, isZoomed: false, isUndoZoom: false, isUndoAction: false, isFiltered: false, isSave: false, isResize: false };
|
|
155
|
+
isCustomCrop: false, isZoomed: false, isUndoZoom: false, isUndoAction: false, isFiltered: false, isSave: false, isResize: false, isRedact: false };
|
|
155
156
|
/** @hidden */
|
|
156
157
|
_this.objColl = [];
|
|
157
158
|
/** @hidden */
|
|
@@ -263,6 +264,25 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
263
264
|
_this.shapeColl = [];
|
|
264
265
|
/** @hidden */
|
|
265
266
|
_this.isKBDNavigation = false;
|
|
267
|
+
/** @hidden */
|
|
268
|
+
_this.isMaskImage = false;
|
|
269
|
+
/** @hidden */
|
|
270
|
+
_this.tempObjColl = [];
|
|
271
|
+
/** @hidden */
|
|
272
|
+
_this.tempPointColl = [];
|
|
273
|
+
/** @hidden */
|
|
274
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
275
|
+
_this.tempShapeColl = [];
|
|
276
|
+
/** @hidden */
|
|
277
|
+
_this.isImageUpdated = false;
|
|
278
|
+
/** @hidden */
|
|
279
|
+
_this.noRedact = false;
|
|
280
|
+
/** @hidden */
|
|
281
|
+
_this.tempRedactBlur = 50;
|
|
282
|
+
/** @hidden */
|
|
283
|
+
_this.tempRedactPixel = 40;
|
|
284
|
+
_this.tempToolbarHeight = 0;
|
|
285
|
+
_this.tempToolbar = [];
|
|
266
286
|
ImageEditor_1.Inject(Crop, Draw, Selection, Transform, Export, ToolbarModule);
|
|
267
287
|
ImageEditor_1.Inject(UndoRedo);
|
|
268
288
|
ImageEditor_1.Inject(Filter);
|
|
@@ -297,6 +317,7 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
297
317
|
ImageEditor.prototype.preRender = function () {
|
|
298
318
|
// pre render code snippets
|
|
299
319
|
this.element.id = this.element.id || getUniqueID('ej2-image-editor');
|
|
320
|
+
this.isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
|
|
300
321
|
if (Browser.isDevice) {
|
|
301
322
|
this.element.classList.add('e-device');
|
|
302
323
|
}
|
|
@@ -310,6 +331,7 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
310
331
|
* @returns {void}
|
|
311
332
|
*/
|
|
312
333
|
ImageEditor.prototype.render = function () {
|
|
334
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
313
335
|
if (this.isAngular) {
|
|
314
336
|
var originalElement = this.element;
|
|
315
337
|
var clonedElement = originalElement.cloneNode(true);
|
|
@@ -743,6 +765,9 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
743
765
|
this.lowerCanvas = canvasWrapper.appendChild(this.createElement('canvas', {
|
|
744
766
|
id: this.element.id + '_lowerCanvas', attrs: { name: 'canvasImage' }
|
|
745
767
|
}));
|
|
768
|
+
this.maskCanvas = canvasWrapper.appendChild(this.createElement('canvas', {
|
|
769
|
+
id: this.element.id + '_maskCanvas', attrs: { name: 'canvasImage' }
|
|
770
|
+
}));
|
|
746
771
|
this.upperCanvas = canvasWrapper.appendChild(this.createElement('canvas', {
|
|
747
772
|
id: this.element.id + '_upperCanvas', attrs: { name: 'canvasImage' }
|
|
748
773
|
}));
|
|
@@ -767,12 +792,15 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
767
792
|
uploader.style.display = 'none';
|
|
768
793
|
this.textArea.setAttribute('spellcheck', 'false');
|
|
769
794
|
this.textArea.style.lineHeight = 'normal';
|
|
770
|
-
this.lowerCanvas.style.width = this.upperCanvas.style.width = this.
|
|
771
|
-
|
|
772
|
-
this.
|
|
795
|
+
this.lowerCanvas.style.width = this.upperCanvas.style.width = this.maskCanvas.style.width =
|
|
796
|
+
this.inMemoryCanvas.style.width = '100%';
|
|
797
|
+
this.lowerCanvas.style.height = this.upperCanvas.style.height = this.maskCanvas.style.height =
|
|
798
|
+
this.inMemoryCanvas.style.height = '100%';
|
|
799
|
+
this.upperCanvas.style.position = this.lowerCanvas.style.position = this.maskCanvas.style.position =
|
|
800
|
+
this.textArea.style.position = 'absolute';
|
|
773
801
|
this.textArea.style.backgroundColor = 'transparent';
|
|
774
802
|
this.textArea.style.display = 'none';
|
|
775
|
-
this.textArea.style.resize = 'none';
|
|
803
|
+
this.maskCanvas.style.display = this.textArea.style.resize = 'none';
|
|
776
804
|
this.lowerContext = this.lowerCanvas.getContext('2d');
|
|
777
805
|
this.baseImg = this.createElement('img', {
|
|
778
806
|
id: this.element.id + '_orgImg', attrs: { name: 'Image', crossorigin: 'anonymous' }
|
|
@@ -909,41 +937,66 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
909
937
|
this.notify('transform', { prop: 'flip', value: { direction: direction } });
|
|
910
938
|
this.notify('draw', { prop: 'redrawDownScale' });
|
|
911
939
|
this.notify('undo-redo', { prop: 'updateCurrUrc', value: { type: 'ok' } });
|
|
940
|
+
var actionArgs = { action: 'flip', actionEventArgs: this.editCompleteArgs };
|
|
941
|
+
this.triggerEditCompleteEvent(actionArgs);
|
|
912
942
|
};
|
|
913
943
|
/**
|
|
914
944
|
* Returns an image as ImageData to load it in to a canvas.
|
|
915
945
|
*
|
|
946
|
+
* @param {boolean} [includeAnnotations=true] - Optional. Specifies whether the returned image data should include annotations. The default value is true, meaning annotations are included.
|
|
947
|
+
*
|
|
916
948
|
* @remarks
|
|
917
949
|
* The data returned from this method is directly drawn in a canvas using 'putImageData' method.
|
|
918
950
|
* And then the user can get the base64 string from the canvas using toDataURL method.
|
|
919
951
|
*
|
|
920
952
|
* @returns {ImageData}.
|
|
921
953
|
*/
|
|
922
|
-
ImageEditor.prototype.getImageData = function () {
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
954
|
+
ImageEditor.prototype.getImageData = function (includeAnnotations) {
|
|
955
|
+
includeAnnotations = isNullOrUndefined(includeAnnotations) ? true : includeAnnotations;
|
|
956
|
+
var imageData;
|
|
957
|
+
if (includeAnnotations) {
|
|
958
|
+
var obj = { canvas: null };
|
|
959
|
+
this.applyShapes();
|
|
960
|
+
this.notify('export', { prop: 'exportToCanvas', value: { object: obj } });
|
|
961
|
+
imageData = obj['canvas'].getContext('2d').getImageData(0, 0, obj['canvas'].width, obj['canvas'].height);
|
|
962
|
+
}
|
|
963
|
+
else if (this.isMaskImage && this.element.getAttribute('data-value') === 'mask-drawing') {
|
|
964
|
+
imageData = this.getData(true);
|
|
965
|
+
this.updateColl('reset');
|
|
966
|
+
}
|
|
967
|
+
else {
|
|
968
|
+
imageData = this.getData();
|
|
969
|
+
this.notify('draw', { prop: 'render-image', value: { isMouseWheel: false } });
|
|
970
|
+
}
|
|
971
|
+
return imageData;
|
|
927
972
|
};
|
|
928
973
|
/**
|
|
929
974
|
* Opens an image as URL or ImageData for editing in an image editor.
|
|
930
975
|
*
|
|
931
976
|
* @param {string | ImageData } data - Specifies url of the image or image data.
|
|
977
|
+
* @param {boolean} [resetChanges=true] - Optional. Determines whether to reset existing changes when opening the image. The default value is true, which resets all existing changes.
|
|
978
|
+
* @param {ImageSettings} imageSettings - Optional. Specifies the image setting that contains background color to apply when opening a transparent image. The default value of background color is an empty string (''), meaning no background color is applied by default when a transparent image is opened.
|
|
932
979
|
*
|
|
933
980
|
* @remarks
|
|
934
981
|
* The supported file types are JPG, JPEG, PNG, and SVG.
|
|
935
982
|
*
|
|
936
983
|
* @returns {void}.
|
|
937
984
|
*/
|
|
938
|
-
ImageEditor.prototype.open = function (data) {
|
|
939
|
-
|
|
940
|
-
|
|
985
|
+
ImageEditor.prototype.open = function (data, resetChanges, imageSettings) {
|
|
986
|
+
resetChanges = isNullOrUndefined(resetChanges) ? true : resetChanges;
|
|
987
|
+
if (resetChanges) {
|
|
988
|
+
if (isNullOrUndefined(data)) {
|
|
989
|
+
return;
|
|
990
|
+
}
|
|
991
|
+
var dropArea = document.getElementById(this.element.id + '_dropArea');
|
|
992
|
+
if (dropArea) {
|
|
993
|
+
dropArea.style.display = 'none';
|
|
994
|
+
}
|
|
995
|
+
this.notify('draw', { prop: 'open', value: { data: data } });
|
|
941
996
|
}
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
dropArea.style.display = 'none';
|
|
997
|
+
else {
|
|
998
|
+
this.updateImage(data, imageSettings.backgroundColor);
|
|
945
999
|
}
|
|
946
|
-
this.notify('draw', { prop: 'open', value: { data: data } });
|
|
947
1000
|
};
|
|
948
1001
|
/**
|
|
949
1002
|
* Reset all the changes done in an image editor and revert to original image.
|
|
@@ -954,12 +1007,14 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
954
1007
|
* @returns {void}.
|
|
955
1008
|
*/
|
|
956
1009
|
ImageEditor.prototype.reset = function () {
|
|
1010
|
+
this.updateColl('reset');
|
|
957
1011
|
var obj = { isErrorImage: false };
|
|
958
1012
|
this.notify('draw', { prop: 'getErrorImage', value: { obj: obj } });
|
|
959
1013
|
if (!this.disabled && !obj['isErrorImage']) {
|
|
960
1014
|
this.clearContext(this.inMemoryContext);
|
|
961
1015
|
this.clearContext(this.lowerContext);
|
|
962
1016
|
this.clearContext(this.upperContext);
|
|
1017
|
+
this.notify('shape', { prop: 'setRedactType', onPropertyChange: false, value: { redactType: 'blur' } });
|
|
963
1018
|
this.notify('shape', { prop: 'refreshActiveObj', onPropertyChange: false });
|
|
964
1019
|
this.notify('toolbar', { prop: 'refresh-toolbar', onPropertyChange: false, value: { type: 'main',
|
|
965
1020
|
isApplyBtn: false, isCropping: false, isZooming: null, cType: null } });
|
|
@@ -968,7 +1023,6 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
968
1023
|
this.notify('toolbar', { prop: 'create-bottom-toolbar', onPropertyChange: false });
|
|
969
1024
|
}
|
|
970
1025
|
var isImageLoaded = this.isImageLoaded;
|
|
971
|
-
// eslint-disable-next-line max-len
|
|
972
1026
|
this.currObjType.isUndoAction = this.isUndoRedo = this.togglePan = this.togglePen = this.isImageLoaded = this.isFinetuning = false;
|
|
973
1027
|
this.isCircleCrop = this.isCropTab = false;
|
|
974
1028
|
this.objColl = [];
|
|
@@ -1002,7 +1056,7 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1002
1056
|
this.tempFrameObj = { type: 'none', color: '#fff', size: 20, inset: 20, offset: 20, radius: 0, amount: 1, border: 'solid', gradientColor: '' };
|
|
1003
1057
|
this.currObjType = { shape: '', isDragging: false, isActiveObj: false, isText: false, isInitialText: false, isLine: false,
|
|
1004
1058
|
isInitialLine: false, isCustomCrop: false, isZoomed: false, isUndoZoom: false,
|
|
1005
|
-
isUndoAction: false, isFiltered: false, isSave: false, isResize: false };
|
|
1059
|
+
isUndoAction: false, isFiltered: false, isSave: false, isResize: false, isRedact: false };
|
|
1006
1060
|
this.cropObj = { cropZoom: 0, defaultZoom: 0, totalPannedPoint: { x: 0, y: 0 }, totalPannedClientPoint: { x: 0, y: 0 },
|
|
1007
1061
|
totalPannedInternalPoint: { x: 0, y: 0 }, tempFlipPanPoint: { x: 0, y: 0 }, activeObj: {},
|
|
1008
1062
|
rotateFlipColl: [], degree: 0, currFlipState: '', straighten: 0, zoomFactor: 0, previousZoomValue: 0,
|
|
@@ -1019,11 +1073,21 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1019
1073
|
this.transform.straighten = 0;
|
|
1020
1074
|
this.cancelCropSelection = null;
|
|
1021
1075
|
this.aspectWidth = this.aspectHeight = null;
|
|
1022
|
-
this.isResize = false;
|
|
1076
|
+
this.isResize = this.isMaskImage = false;
|
|
1023
1077
|
this.drawingShape = null;
|
|
1024
1078
|
this.isShapeDrawing = this.noPushUndo = this.isUndoRedoStack = this.isKBDNavigation = false;
|
|
1025
1079
|
this.shapeColl = [];
|
|
1080
|
+
this.tempObjColl = [];
|
|
1081
|
+
this.tempPointColl = [];
|
|
1082
|
+
this.tempShapeColl = [];
|
|
1083
|
+
this.isImageUpdated = false;
|
|
1084
|
+
this.tempToolbarHeight = 0;
|
|
1085
|
+
this.tempToolbar = [];
|
|
1086
|
+
this.tempRedactBlur = 50;
|
|
1087
|
+
this.tempRedactPixel = 40;
|
|
1026
1088
|
var obj_1 = { initialZoomValue: false };
|
|
1089
|
+
this.editCompleteArgs = null;
|
|
1090
|
+
this.isFinetuneBtnClick = false;
|
|
1027
1091
|
this.notify('draw', { prop: 'getInitialZoomValue', onPropertyChange: false, value: { obj: obj_1 } });
|
|
1028
1092
|
if (obj_1['initialZoomValue']) {
|
|
1029
1093
|
this.setProperties({ zoomSettings: { zoomFactor: obj_1['initialZoomValue'] } }, true);
|
|
@@ -1057,6 +1121,8 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1057
1121
|
if (Browser.isDevice && straightenObj['bool']) {
|
|
1058
1122
|
this.notify('crop', { prop: 'resizeWrapper' });
|
|
1059
1123
|
}
|
|
1124
|
+
var actionArgs = { action: 'reset', actionEventArgs: null };
|
|
1125
|
+
this.triggerEditCompleteEvent(actionArgs);
|
|
1060
1126
|
}
|
|
1061
1127
|
};
|
|
1062
1128
|
/**
|
|
@@ -1080,6 +1146,8 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1080
1146
|
}
|
|
1081
1147
|
this.notify('transform', { prop: 'rotate', value: { degree: degree, obj: obj } });
|
|
1082
1148
|
this.notify('draw', { prop: 'redrawDownScale' });
|
|
1149
|
+
var actionArgs = { action: 'rotate', actionEventArgs: this.editCompleteArgs };
|
|
1150
|
+
this.triggerEditCompleteEvent(actionArgs);
|
|
1083
1151
|
return obj['isRotate'];
|
|
1084
1152
|
};
|
|
1085
1153
|
/**
|
|
@@ -1158,8 +1226,19 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1158
1226
|
*/
|
|
1159
1227
|
ImageEditor.prototype.freehandDraw = function (value) {
|
|
1160
1228
|
if (!this.disabled && this.isImageLoaded) {
|
|
1229
|
+
if (!value && this.isMaskImage) {
|
|
1230
|
+
this.discard();
|
|
1231
|
+
return;
|
|
1232
|
+
}
|
|
1161
1233
|
this.applyShapes();
|
|
1162
1234
|
this.freeHandDraw(value);
|
|
1235
|
+
var prevObj = { shapeSettingsObj: {} };
|
|
1236
|
+
this.notify('selection', { prop: 'updatePrevShapeSettings', onPropertyChange: false, value: { obj: prevObj } });
|
|
1237
|
+
var shapeSettings = prevObj['shapeSettingsObj'];
|
|
1238
|
+
shapeSettings.type = ShapeType.FreehandDraw;
|
|
1239
|
+
var shapeChangingArgs = { cancel: false, action: 'insert', previousShapeSettings: shapeSettings,
|
|
1240
|
+
currentShapeSettings: shapeSettings };
|
|
1241
|
+
this.notify('freehand-draw', { prop: 'triggerShapeChanging', value: { shapeChangingArgs: shapeChangingArgs } });
|
|
1163
1242
|
}
|
|
1164
1243
|
};
|
|
1165
1244
|
/**
|
|
@@ -1220,7 +1299,7 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1220
1299
|
isEllipse = true;
|
|
1221
1300
|
this.notify('shape', { prop: 'drawEllipse', onPropertyChange: false, value: { x: x, y: y, radiusX: radiusX, radiusY: radiusY,
|
|
1222
1301
|
strokeWidth: strokeWidth, strokeColor: strokeColor, fillColor: fillColor, degree: degree, isSelected: isSelected } });
|
|
1223
|
-
this.
|
|
1302
|
+
this.editCompleted();
|
|
1224
1303
|
}
|
|
1225
1304
|
return isEllipse;
|
|
1226
1305
|
};
|
|
@@ -1243,7 +1322,7 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1243
1322
|
isLine = true;
|
|
1244
1323
|
this.notify('shape', { prop: 'drawLine', onPropertyChange: false, value: { startX: startX, startY: startY, endX: endX,
|
|
1245
1324
|
endY: endY, strokeWidth: strokeWidth, strokeColor: strokeColor, isSelected: isSelected } });
|
|
1246
|
-
this.
|
|
1325
|
+
this.editCompleted();
|
|
1247
1326
|
}
|
|
1248
1327
|
return isLine;
|
|
1249
1328
|
};
|
|
@@ -1269,7 +1348,7 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1269
1348
|
this.notify('shape', { prop: 'drawArrow', onPropertyChange: false, value: { startX: startX, startY: startY, endX: endX,
|
|
1270
1349
|
endY: endY, strokeWidth: strokeWidth, strokeColor: strokeColor, arrowStart: arrowStart, arrowEnd: arrowEnd,
|
|
1271
1350
|
isSelected: isSelected } });
|
|
1272
|
-
this.
|
|
1351
|
+
this.editCompleted();
|
|
1273
1352
|
}
|
|
1274
1353
|
return isArrow;
|
|
1275
1354
|
};
|
|
@@ -1300,7 +1379,7 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1300
1379
|
this.applyShapes();
|
|
1301
1380
|
this.notify('shape', { prop: 'drawPath', onPropertyChange: false, value: { pointColl: pointColl,
|
|
1302
1381
|
strokeWidth: strokeWidth, strokeColor: strokeColor, isSelected: isSelected } });
|
|
1303
|
-
this.
|
|
1382
|
+
this.editCompleted();
|
|
1304
1383
|
}
|
|
1305
1384
|
return isPath;
|
|
1306
1385
|
};
|
|
@@ -1316,16 +1395,18 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1316
1395
|
* @param {string} fillColor - Specifies the fill color of the rectangle.
|
|
1317
1396
|
* @param {number} degree - Specifies the degree to rotate the rectangle.
|
|
1318
1397
|
* @param {boolean} isSelected - Specifies to show the rectangle in the selected state.
|
|
1398
|
+
* @param {number} borderRadius - Specifies the radius to apply border radius to rectangle.
|
|
1319
1399
|
* @returns {boolean}.
|
|
1320
1400
|
*/
|
|
1321
|
-
ImageEditor.prototype.drawRectangle = function (x, y, width, height, strokeWidth, strokeColor, fillColor, degree, isSelected) {
|
|
1401
|
+
ImageEditor.prototype.drawRectangle = function (x, y, width, height, strokeWidth, strokeColor, fillColor, degree, isSelected, borderRadius) {
|
|
1322
1402
|
var isRectangle = false;
|
|
1323
1403
|
var isPointsInRange = this.allowShape(x, y);
|
|
1324
1404
|
if (!this.disabled && this.isImageLoaded && (isPointsInRange || (isNullOrUndefined(x) && isNullOrUndefined(y)))) {
|
|
1325
1405
|
isRectangle = true;
|
|
1326
1406
|
this.notify('shape', { prop: 'drawRectangle', onPropertyChange: false, value: { x: x, y: y, width: width, height: height,
|
|
1327
|
-
strokeWidth: strokeWidth, strokeColor: strokeColor, fillColor: fillColor, degree: degree, isSelected: isSelected
|
|
1328
|
-
|
|
1407
|
+
strokeWidth: strokeWidth, strokeColor: strokeColor, fillColor: fillColor, degree: degree, isSelected: isSelected,
|
|
1408
|
+
radius: borderRadius } });
|
|
1409
|
+
this.editCompleted();
|
|
1329
1410
|
}
|
|
1330
1411
|
return isRectangle;
|
|
1331
1412
|
};
|
|
@@ -1344,17 +1425,21 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1344
1425
|
* @param {string} color - Specifies font color of the text.
|
|
1345
1426
|
* @param {boolean} isSelected - Specifies to show the text in the selected state.
|
|
1346
1427
|
* @param {number} degree - Specifies the degree to rotate the text.
|
|
1428
|
+
* @param {fillColor} fillColor - Specifies the background Color of the text.
|
|
1429
|
+
* @param {string} strokeColor - Specifies the outline color of the text annotation.
|
|
1430
|
+
* @param {number} strokeWidth - Specifies the outline stroke width of the text annotation.
|
|
1347
1431
|
* @returns {boolean}.
|
|
1348
1432
|
*
|
|
1349
1433
|
*/
|
|
1350
|
-
ImageEditor.prototype.drawText = function (x, y, text, fontFamily, fontSize, bold, italic, color, isSelected, degree) {
|
|
1434
|
+
ImageEditor.prototype.drawText = function (x, y, text, fontFamily, fontSize, bold, italic, color, isSelected, degree, fillColor, strokeColor, strokeWidth) {
|
|
1351
1435
|
var isText = false;
|
|
1352
1436
|
var isPointsInRange = this.allowShape(x, y);
|
|
1353
1437
|
if (!this.disabled && this.isImageLoaded && (isPointsInRange || (isNullOrUndefined(x) && isNullOrUndefined(y)))) {
|
|
1354
1438
|
isText = true;
|
|
1355
1439
|
this.notify('shape', { prop: 'drawText', onPropertyChange: false, value: { x: x, y: y, text: text, fontFamily: fontFamily,
|
|
1356
|
-
fontSize: fontSize, bold: bold, italic: italic, color: color, isSelected: isSelected, degree: degree
|
|
1357
|
-
|
|
1440
|
+
fontSize: fontSize, bold: bold, italic: italic, color: color, isSelected: isSelected, degree: degree, fillColor: fillColor,
|
|
1441
|
+
outlineColor: strokeColor, outlineWidth: strokeWidth } });
|
|
1442
|
+
this.editCompleted();
|
|
1358
1443
|
}
|
|
1359
1444
|
return isText;
|
|
1360
1445
|
};
|
|
@@ -1381,13 +1466,97 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1381
1466
|
var length_1 = this.objColl.length;
|
|
1382
1467
|
this.notify('shape', { prop: 'drawImage', onPropertyChange: false, value: { x: x, y: y, width: width, height: height,
|
|
1383
1468
|
src: data, degree: degree, isAspectRatio: isAspectRatio, opacity: opacity, isSelected: isSelected } });
|
|
1384
|
-
this.
|
|
1469
|
+
this.editCompleted();
|
|
1385
1470
|
if (this.objColl.length > length_1) {
|
|
1386
1471
|
isImage = true;
|
|
1387
1472
|
}
|
|
1388
1473
|
}
|
|
1389
1474
|
return isImage;
|
|
1390
1475
|
};
|
|
1476
|
+
/**
|
|
1477
|
+
* This method is used to update the existing shapes by changing its height, width, color, and font styles in the component.
|
|
1478
|
+
* Use 'getShapeSettings' method to get the shape which is then passed to change the options of a shape.
|
|
1479
|
+
* {% codeBlock src='image-editor/updateShape/index.md' %}{% endcodeBlock %}
|
|
1480
|
+
*
|
|
1481
|
+
* @param {ShapeSettings} setting - Specifies the shape settings to be updated for the shape on an image.
|
|
1482
|
+
* @param {boolean} isSelected - Specifies to show the shape in the selected state.
|
|
1483
|
+
* @returns {boolean}.
|
|
1484
|
+
*
|
|
1485
|
+
*/
|
|
1486
|
+
ImageEditor.prototype.updateShape = function (setting, isSelected) {
|
|
1487
|
+
var obj = { isSelected: false };
|
|
1488
|
+
var isTextArea = false;
|
|
1489
|
+
var freehandObj = { bool: false };
|
|
1490
|
+
if (isNullOrUndefined(setting.id)) {
|
|
1491
|
+
if (setting.strokeColor) {
|
|
1492
|
+
this.activeObj.strokeSettings.strokeColor = setting.strokeColor;
|
|
1493
|
+
}
|
|
1494
|
+
if (setting.fillColor) {
|
|
1495
|
+
this.activeObj.strokeSettings.fillColor = setting.fillColor;
|
|
1496
|
+
}
|
|
1497
|
+
if (setting.strokeWidth) {
|
|
1498
|
+
this.activeObj.strokeSettings.strokeWidth = setting.strokeWidth;
|
|
1499
|
+
}
|
|
1500
|
+
if (setting.index) {
|
|
1501
|
+
this.activeObj.order = setting.index;
|
|
1502
|
+
}
|
|
1503
|
+
if (setting.type === 'FreehandDraw' && setting.strokeWidth) {
|
|
1504
|
+
this.notify('freehand-draw', { prop: 'setPenStrokeWidth', onPropertyChange: false, value: { value: setting.strokeWidth } });
|
|
1505
|
+
}
|
|
1506
|
+
}
|
|
1507
|
+
else {
|
|
1508
|
+
if (setting.type.toLowerCase() === 'text' && (this.textArea.style.display === 'block' ||
|
|
1509
|
+
this.textArea.style.display === 'inline-block')) {
|
|
1510
|
+
this.okBtn(null, true);
|
|
1511
|
+
isTextArea = true;
|
|
1512
|
+
}
|
|
1513
|
+
this.notify('shape', { prop: 'selectShape', onPropertyChange: false, value: { id: setting.id, obj: obj } });
|
|
1514
|
+
this.notify('selection', { prop: 'getFreehandDrawEditing', onPropertyChange: false, value: { obj: freehandObj } });
|
|
1515
|
+
if (obj['isSelected']) {
|
|
1516
|
+
var tempFontSize = this.activeObj.textSettings.fontSize;
|
|
1517
|
+
this.notify('shape', { prop: 'updateShapeChangeEventArgs', onPropertyChange: false,
|
|
1518
|
+
value: { shapeSettings: setting } });
|
|
1519
|
+
if (this.activeObj.shape === 'text' && tempFontSize) {
|
|
1520
|
+
var diff = this.activeObj.textSettings.fontSize - tempFontSize;
|
|
1521
|
+
if (diff !== 0) {
|
|
1522
|
+
this.activeObj.activePoint.height += diff;
|
|
1523
|
+
this.activeObj.activePoint.startY -= (diff / 2);
|
|
1524
|
+
this.activeObj.activePoint.endY += (diff / 2);
|
|
1525
|
+
this.notify('draw', { prop: 'updateActiveObject', onPropertyChange: false, value: { actPoint: this.activeObj.activePoint, obj: this.activeObj,
|
|
1526
|
+
isMouseMove: null, x: null, y: null } });
|
|
1527
|
+
}
|
|
1528
|
+
}
|
|
1529
|
+
var activeObj = extend({}, this.activeObj, {}, true);
|
|
1530
|
+
this.notify('shape', { prop: 'refreshActiveObj', onPropertyChange: false });
|
|
1531
|
+
this.notify('draw', { prop: 'render-image', value: { isMouseWheel: null, isPreventClearRect: null, isFrame: null } });
|
|
1532
|
+
this.upperContext.clearRect(0, 0, this.upperCanvas.width, this.upperCanvas.height);
|
|
1533
|
+
if (activeObj.shape) {
|
|
1534
|
+
this.notify('draw', { prop: 'drawObject', onPropertyChange: false, value: { canvas: 'duplicate', obj: activeObj } });
|
|
1535
|
+
}
|
|
1536
|
+
if (this.activeObj.shape === 'text') {
|
|
1537
|
+
this.notify('toolbar', { prop: 'editText', onPropertyChange: false });
|
|
1538
|
+
}
|
|
1539
|
+
if (freehandObj['bool']) {
|
|
1540
|
+
this.notify('undo-redo', { prop: 'setPreventUR', value: { bool: true } });
|
|
1541
|
+
}
|
|
1542
|
+
this.okBtn(isSelected, true);
|
|
1543
|
+
if (freehandObj['bool']) {
|
|
1544
|
+
this.notify('undo-redo', { prop: 'setPreventUR', value: { bool: false } });
|
|
1545
|
+
}
|
|
1546
|
+
this.upperContext.clearRect(0, 0, this.upperCanvas.width, this.upperCanvas.height);
|
|
1547
|
+
this.editCompleteArgs = { action: 'shape-update', currentShapeSettings: setting };
|
|
1548
|
+
this.editCompleted('shape-customize');
|
|
1549
|
+
if (isTextArea) {
|
|
1550
|
+
this.enableTextEditing();
|
|
1551
|
+
}
|
|
1552
|
+
if (isSelected) {
|
|
1553
|
+
this.noRedact = true;
|
|
1554
|
+
this.selectShape(setting.id);
|
|
1555
|
+
}
|
|
1556
|
+
}
|
|
1557
|
+
}
|
|
1558
|
+
return obj['isSelected'];
|
|
1559
|
+
};
|
|
1391
1560
|
/**
|
|
1392
1561
|
* Select a shape based on the given shape id.
|
|
1393
1562
|
* Use 'getShapeSettings' method to get the shape id which is then passed to perform selection.
|
|
@@ -1402,7 +1571,8 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1402
1571
|
this.applyShapes();
|
|
1403
1572
|
var obj = { isSelected: false };
|
|
1404
1573
|
this.notify('shape', { prop: 'selectShape', onPropertyChange: false, value: { id: id, obj: obj } });
|
|
1405
|
-
this.
|
|
1574
|
+
this.editCompleted('shape-select');
|
|
1575
|
+
this.noRedact = false;
|
|
1406
1576
|
return obj['isSelected'];
|
|
1407
1577
|
};
|
|
1408
1578
|
/**
|
|
@@ -1416,9 +1586,14 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1416
1586
|
*
|
|
1417
1587
|
*/
|
|
1418
1588
|
ImageEditor.prototype.deleteShape = function (id) {
|
|
1589
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
1590
|
+
var shape = this.getShapeSetting(id);
|
|
1591
|
+
if (shape.type === 'Redact') {
|
|
1592
|
+
return;
|
|
1593
|
+
}
|
|
1419
1594
|
this.applyShapes();
|
|
1420
1595
|
this.notify('shape', { prop: 'deleteShape', onPropertyChange: false, value: { id: id } });
|
|
1421
|
-
this.
|
|
1596
|
+
this.editCompleted('shape-delete');
|
|
1422
1597
|
};
|
|
1423
1598
|
/**
|
|
1424
1599
|
* Get particular shapes details based on id of the shape which is drawn on an image editor.
|
|
@@ -1448,7 +1623,92 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1448
1623
|
var obj = { shapeDetailsColl: [] };
|
|
1449
1624
|
this.notify('shape', { prop: 'getShapeSettings', onPropertyChange: false, value: { obj: obj } });
|
|
1450
1625
|
this.notify('draw', { prop: 'redrawDownScale' });
|
|
1451
|
-
|
|
1626
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
1627
|
+
return obj.shapeDetailsColl.filter(function (item) { return item.type !== 'redact'; });
|
|
1628
|
+
};
|
|
1629
|
+
/**
|
|
1630
|
+
* Get all the shapes details which is drawn on an image editor.
|
|
1631
|
+
*
|
|
1632
|
+
* @returns {RedactSettings[]}.
|
|
1633
|
+
*/
|
|
1634
|
+
ImageEditor.prototype.getRedacts = function () {
|
|
1635
|
+
this.applyShapes();
|
|
1636
|
+
var obj = { shapeDetailsColl: [] };
|
|
1637
|
+
this.notify('shape', { prop: 'getRedactSettings', onPropertyChange: false, value: { obj: obj } });
|
|
1638
|
+
this.notify('draw', { prop: 'redrawDownScale' });
|
|
1639
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
1640
|
+
return obj.shapeDetailsColl.filter(function (item) { return item.type !== 'redact'; });
|
|
1641
|
+
};
|
|
1642
|
+
/**
|
|
1643
|
+
* Select a redaction based on the given redaction id.
|
|
1644
|
+
* Use 'getRedacts' method to get the shape id which is then passed to perform selection.
|
|
1645
|
+
*
|
|
1646
|
+
*
|
|
1647
|
+
* @param {string} id - Specifies the shape id to select a redact on an image.
|
|
1648
|
+
* @returns {boolean}.
|
|
1649
|
+
*
|
|
1650
|
+
*/
|
|
1651
|
+
ImageEditor.prototype.selectRedact = function (id) {
|
|
1652
|
+
this.applyShapes();
|
|
1653
|
+
var obj = { isSelected: false };
|
|
1654
|
+
this.notify('shape', { prop: 'selectShape', onPropertyChange: false, value: { id: id, obj: obj } });
|
|
1655
|
+
this.editCompleted('redact-select');
|
|
1656
|
+
this.noRedact = false;
|
|
1657
|
+
return obj['isSelected'];
|
|
1658
|
+
};
|
|
1659
|
+
/**
|
|
1660
|
+
* Deletes a redaction based on the given shape id.
|
|
1661
|
+
* Use 'getRedacts' method to get the redaaction id which is then passed to perform deletion.
|
|
1662
|
+
*
|
|
1663
|
+
*
|
|
1664
|
+
* @param {string} id - Specifies the redaction id to delete the redaction on an image.
|
|
1665
|
+
* @returns {void}.
|
|
1666
|
+
*
|
|
1667
|
+
*/
|
|
1668
|
+
ImageEditor.prototype.deleteRedact = function (id) {
|
|
1669
|
+
this.applyShapes();
|
|
1670
|
+
this.notify('shape', { prop: 'deleteShape', onPropertyChange: false, value: { id: id } });
|
|
1671
|
+
this.editCompleted('redact-delete');
|
|
1672
|
+
};
|
|
1673
|
+
/**
|
|
1674
|
+
* This method is used to update the existing redacts by changing its height, width, blur, and pixel size in the component.
|
|
1675
|
+
* Use 'getRedacts' method to get the redacts which is then passed to change the options of a redacts.
|
|
1676
|
+
*
|
|
1677
|
+
* @param {RedactSettings} setting - Specifies the redact settings to be updated for the shape on an image.
|
|
1678
|
+
* @param {boolean} isSelected - Specifies to show the redacts in the selected state.
|
|
1679
|
+
* @returns {boolean}.
|
|
1680
|
+
*
|
|
1681
|
+
*/
|
|
1682
|
+
ImageEditor.prototype.updateRedact = function (setting, isSelected) {
|
|
1683
|
+
this.applyShapes();
|
|
1684
|
+
var obj = { isSelected: false };
|
|
1685
|
+
this.notify('shape', { prop: 'selectShape', onPropertyChange: false, value: { id: setting.id, obj: obj } });
|
|
1686
|
+
if (obj['isSelected']) {
|
|
1687
|
+
this.notify('shape', { prop: 'updateShapeChangeEventArgs', onPropertyChange: false,
|
|
1688
|
+
value: { shapeSettings: setting } });
|
|
1689
|
+
if (setting.blurIntensity) {
|
|
1690
|
+
this.activeObj.redactBlur = setting.blurIntensity;
|
|
1691
|
+
}
|
|
1692
|
+
if (setting.pixelSize) {
|
|
1693
|
+
this.activeObj.redactPixelate = setting.pixelSize;
|
|
1694
|
+
}
|
|
1695
|
+
this.activeObj.redactType = setting.type.toLowerCase() === 'blur' ? 'blur' : 'pixelate';
|
|
1696
|
+
var activeObj = extend({}, this.activeObj, {}, true);
|
|
1697
|
+
this.notify('shape', { prop: 'refreshActiveObj', onPropertyChange: false });
|
|
1698
|
+
this.notify('draw', { prop: 'render-image', value: { isMouseWheel: null, isPreventClearRect: null, isFrame: null } });
|
|
1699
|
+
this.upperContext.clearRect(0, 0, this.upperCanvas.width, this.upperCanvas.height);
|
|
1700
|
+
if (activeObj.shape) {
|
|
1701
|
+
this.notify('draw', { prop: 'drawObject', onPropertyChange: false, value: { canvas: 'duplicate', obj: activeObj } });
|
|
1702
|
+
}
|
|
1703
|
+
this.okBtn(isSelected, true);
|
|
1704
|
+
this.upperContext.clearRect(0, 0, this.upperCanvas.width, this.upperCanvas.height);
|
|
1705
|
+
this.editCompleteArgs = { action: 'redact-update', currentShapeSettings: setting };
|
|
1706
|
+
this.editCompleted('redact-customize');
|
|
1707
|
+
if (isSelected) {
|
|
1708
|
+
this.selectRedact(setting.id);
|
|
1709
|
+
}
|
|
1710
|
+
}
|
|
1711
|
+
return obj['isSelected'];
|
|
1452
1712
|
};
|
|
1453
1713
|
/**
|
|
1454
1714
|
* To refresh the Canvas Wrapper.
|
|
@@ -1474,7 +1734,8 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1474
1734
|
if (!this.disabled && this.isImageLoaded) {
|
|
1475
1735
|
this.applyShapes();
|
|
1476
1736
|
this.notify('filter', { prop: 'finetuneImage', value: { value: value, option: finetuneOption } });
|
|
1477
|
-
this.
|
|
1737
|
+
this.editCompleteArgs = { finetune: finetuneOption, value: value };
|
|
1738
|
+
this.editCompleted('fine-tune');
|
|
1478
1739
|
}
|
|
1479
1740
|
};
|
|
1480
1741
|
/**
|
|
@@ -1490,7 +1751,8 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1490
1751
|
if (!this.disabled && this.isImageLoaded) {
|
|
1491
1752
|
this.applyShapes();
|
|
1492
1753
|
this.notify('filter', { prop: 'applyImageFilter', value: { option: filterOption.toString() } });
|
|
1493
|
-
this.
|
|
1754
|
+
this.editCompleteArgs = { filter: filterOption };
|
|
1755
|
+
this.editCompleted('filter');
|
|
1494
1756
|
this.canvasFilter = this.lowerContext.filter;
|
|
1495
1757
|
this.notify('undo-redo', { prop: 'updateCurrUrc', value: { type: 'ok' } });
|
|
1496
1758
|
}
|
|
@@ -1660,88 +1922,6 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1660
1922
|
}
|
|
1661
1923
|
return isStraightened;
|
|
1662
1924
|
};
|
|
1663
|
-
/**
|
|
1664
|
-
* This method is used to update the existing shapes by changing its height, width, color, and font styles in the component.
|
|
1665
|
-
* Use 'getShapeSettings' method to get the shape which is then passed to change the options of a shape.
|
|
1666
|
-
* {% codeBlock src='image-editor/updateShape/index.md' %}{% endcodeBlock %}
|
|
1667
|
-
*
|
|
1668
|
-
* @param {ShapeSettings} setting - Specifies the shape settings to be updated for the shape on an image.
|
|
1669
|
-
* @param {boolean} isSelected - Specifies to show the shape in the selected state.
|
|
1670
|
-
* @returns {boolean}.
|
|
1671
|
-
*
|
|
1672
|
-
*/
|
|
1673
|
-
ImageEditor.prototype.updateShape = function (setting, isSelected) {
|
|
1674
|
-
var obj = { isSelected: false };
|
|
1675
|
-
var isTextArea = false;
|
|
1676
|
-
var freehandObj = { bool: false };
|
|
1677
|
-
if (isNullOrUndefined(setting.id)) {
|
|
1678
|
-
if (setting.strokeColor) {
|
|
1679
|
-
this.activeObj.strokeSettings.strokeColor = setting.strokeColor;
|
|
1680
|
-
}
|
|
1681
|
-
if (setting.fillColor) {
|
|
1682
|
-
this.activeObj.strokeSettings.fillColor = setting.fillColor;
|
|
1683
|
-
}
|
|
1684
|
-
if (setting.strokeWidth) {
|
|
1685
|
-
this.activeObj.strokeSettings.strokeWidth = setting.strokeWidth;
|
|
1686
|
-
}
|
|
1687
|
-
if (setting.index) {
|
|
1688
|
-
this.activeObj.order = setting.index;
|
|
1689
|
-
}
|
|
1690
|
-
if (setting.type === 'FreehandDraw' && setting.strokeWidth) {
|
|
1691
|
-
this.notify('freehand-draw', { prop: 'setPenStrokeWidth', onPropertyChange: false, value: { value: setting.strokeWidth } });
|
|
1692
|
-
}
|
|
1693
|
-
}
|
|
1694
|
-
else {
|
|
1695
|
-
if (setting.type.toLowerCase() === 'text' && (this.textArea.style.display === 'block' ||
|
|
1696
|
-
this.textArea.style.display === 'inline-block')) {
|
|
1697
|
-
this.okBtn(null, true);
|
|
1698
|
-
isTextArea = true;
|
|
1699
|
-
}
|
|
1700
|
-
this.notify('shape', { prop: 'selectShape', onPropertyChange: false, value: { id: setting.id, obj: obj } });
|
|
1701
|
-
this.notify('selection', { prop: 'getFreehandDrawEditing', onPropertyChange: false, value: { obj: freehandObj } });
|
|
1702
|
-
if (obj['isSelected']) {
|
|
1703
|
-
var tempFontSize = this.activeObj.textSettings.fontSize;
|
|
1704
|
-
this.notify('shape', { prop: 'updateShapeChangeEventArgs', onPropertyChange: false,
|
|
1705
|
-
value: { shapeSettings: setting } });
|
|
1706
|
-
if (this.activeObj.shape === 'text' && tempFontSize) {
|
|
1707
|
-
var diff = this.activeObj.textSettings.fontSize - tempFontSize;
|
|
1708
|
-
if (diff !== 0) {
|
|
1709
|
-
this.activeObj.activePoint.height += diff;
|
|
1710
|
-
this.activeObj.activePoint.startY -= (diff / 2);
|
|
1711
|
-
this.activeObj.activePoint.endY += (diff / 2);
|
|
1712
|
-
this.notify('draw', { prop: 'updateActiveObject', onPropertyChange: false, value: { actPoint: this.activeObj.activePoint, obj: this.activeObj,
|
|
1713
|
-
isMouseMove: null, x: null, y: null } });
|
|
1714
|
-
}
|
|
1715
|
-
}
|
|
1716
|
-
var activeObj = extend({}, this.activeObj, {}, true);
|
|
1717
|
-
this.notify('shape', { prop: 'refreshActiveObj', onPropertyChange: false });
|
|
1718
|
-
this.notify('draw', { prop: 'render-image', value: { isMouseWheel: null, isPreventClearRect: null, isFrame: null } });
|
|
1719
|
-
this.upperContext.clearRect(0, 0, this.upperCanvas.width, this.upperCanvas.height);
|
|
1720
|
-
if (activeObj.shape) {
|
|
1721
|
-
this.notify('draw', { prop: 'drawObject', onPropertyChange: false, value: { canvas: 'duplicate', obj: activeObj } });
|
|
1722
|
-
}
|
|
1723
|
-
if (this.activeObj.shape === 'text') {
|
|
1724
|
-
this.notify('toolbar', { prop: 'editText', onPropertyChange: false });
|
|
1725
|
-
}
|
|
1726
|
-
if (freehandObj['bool']) {
|
|
1727
|
-
this.notify('undo-redo', { prop: 'setPreventUR', value: { bool: true } });
|
|
1728
|
-
}
|
|
1729
|
-
this.okBtn(isSelected, true);
|
|
1730
|
-
if (freehandObj['bool']) {
|
|
1731
|
-
this.notify('undo-redo', { prop: 'setPreventUR', value: { bool: false } });
|
|
1732
|
-
}
|
|
1733
|
-
this.upperContext.clearRect(0, 0, this.upperCanvas.width, this.upperCanvas.height);
|
|
1734
|
-
this.notify('draw', { prop: 'redrawDownScale' });
|
|
1735
|
-
if (isTextArea) {
|
|
1736
|
-
this.enableTextEditing();
|
|
1737
|
-
}
|
|
1738
|
-
if (isSelected) {
|
|
1739
|
-
this.selectShape(setting.id);
|
|
1740
|
-
}
|
|
1741
|
-
}
|
|
1742
|
-
}
|
|
1743
|
-
return obj['isSelected'];
|
|
1744
|
-
};
|
|
1745
1925
|
/**
|
|
1746
1926
|
* Duplicates a shape based on the given shape ID in the ImageEditor.
|
|
1747
1927
|
* Use 'getShapeSettings' method to get the shape and then pass a shapeId from the returned shape to clone a shape.
|
|
@@ -1788,6 +1968,7 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1788
1968
|
this.noPushUndo = true;
|
|
1789
1969
|
this.okBtn();
|
|
1790
1970
|
this.noPushUndo = false;
|
|
1971
|
+
this.noRedact = true;
|
|
1791
1972
|
this.selectShape(activeObj.currIndex);
|
|
1792
1973
|
activeObj.order = this.activeObj.order;
|
|
1793
1974
|
}
|
|
@@ -1844,8 +2025,14 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1844
2025
|
* This method applies the actions performed after enabling annotation drawings, ensuring that the drawn annotations are applied to the image.
|
|
1845
2026
|
*/
|
|
1846
2027
|
ImageEditor.prototype.apply = function () {
|
|
1847
|
-
this.
|
|
1848
|
-
|
|
2028
|
+
if (this.isMaskImage) {
|
|
2029
|
+
this.discard();
|
|
2030
|
+
}
|
|
2031
|
+
else {
|
|
2032
|
+
this.updateColl('reset');
|
|
2033
|
+
this.closeOverlayTbar();
|
|
2034
|
+
this.okBtn(null, true);
|
|
2035
|
+
}
|
|
1849
2036
|
};
|
|
1850
2037
|
/**
|
|
1851
2038
|
* Discards the operations performed in the Image Editor, such as annotation drawings.
|
|
@@ -1855,6 +2042,7 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1855
2042
|
* This method discards the actions performed after enabling annotation drawings, ensuring that the drawn annotations are not applied to the image.
|
|
1856
2043
|
*/
|
|
1857
2044
|
ImageEditor.prototype.discard = function () {
|
|
2045
|
+
this.updateColl('reset');
|
|
1858
2046
|
this.notify('draw', { prop: 'performCancel', value: { isContextualToolbar: this.closeOverlayTbar(), isFinalCancel: true } });
|
|
1859
2047
|
};
|
|
1860
2048
|
/**
|
|
@@ -1888,6 +2076,10 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1888
2076
|
this.notify('toolbar', { prop: 'refresh-toolbar', onPropertyChange: false, value: { type: 'text',
|
|
1889
2077
|
isApplyBtn: null, isCropping: null, isZooming: null, cType: null } });
|
|
1890
2078
|
}
|
|
2079
|
+
else if (this.currObjType.shape === 'redact') {
|
|
2080
|
+
this.notify('toolbar', { prop: 'refresh-toolbar', onPropertyChange: false, value: { type: 'redact',
|
|
2081
|
+
isApplyBtn: null, isCropping: null, isZooming: null, cType: null } });
|
|
2082
|
+
}
|
|
1891
2083
|
else {
|
|
1892
2084
|
this.notify('toolbar', { prop: 'refresh-toolbar', onPropertyChange: false, value: { type: 'shapes',
|
|
1893
2085
|
isApplyBtn: null, isCropping: null, isZooming: null, cType: null } });
|
|
@@ -1907,6 +2099,7 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1907
2099
|
*
|
|
1908
2100
|
*/
|
|
1909
2101
|
ImageEditor.prototype.bringToFront = function (shapeId) {
|
|
2102
|
+
this.noRedact = true;
|
|
1910
2103
|
if (this.selectShape(shapeId)) {
|
|
1911
2104
|
this.updateShapeOrder(shapeId, 'bringToFront');
|
|
1912
2105
|
this.apply();
|
|
@@ -1921,6 +2114,7 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1921
2114
|
*
|
|
1922
2115
|
*/
|
|
1923
2116
|
ImageEditor.prototype.bringForward = function (shapeId) {
|
|
2117
|
+
this.noRedact = true;
|
|
1924
2118
|
if (this.selectShape(shapeId)) {
|
|
1925
2119
|
this.updateShapeOrder(shapeId, 'bringForward');
|
|
1926
2120
|
this.apply();
|
|
@@ -1935,6 +2129,7 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1935
2129
|
*
|
|
1936
2130
|
*/
|
|
1937
2131
|
ImageEditor.prototype.sendToBack = function (shapeId) {
|
|
2132
|
+
this.noRedact = true;
|
|
1938
2133
|
if (this.selectShape(shapeId)) {
|
|
1939
2134
|
this.updateShapeOrder(shapeId, 'sendToBack');
|
|
1940
2135
|
this.apply();
|
|
@@ -1949,6 +2144,7 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1949
2144
|
*
|
|
1950
2145
|
*/
|
|
1951
2146
|
ImageEditor.prototype.sendBackward = function (shapeId) {
|
|
2147
|
+
this.noRedact = true;
|
|
1952
2148
|
if (this.selectShape(shapeId)) {
|
|
1953
2149
|
this.updateShapeOrder(shapeId, 'sendBackward');
|
|
1954
2150
|
this.apply();
|
|
@@ -1978,7 +2174,291 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
1978
2174
|
dropArea.style.display = 'block';
|
|
1979
2175
|
}
|
|
1980
2176
|
};
|
|
2177
|
+
// AI related codes
|
|
2178
|
+
/**
|
|
2179
|
+
* Enables overlay drawing to erase objects in an image editor. The eraser tool assists in selecting the mask image.
|
|
2180
|
+
*
|
|
2181
|
+
* @remarks
|
|
2182
|
+
* The selection UI is based on the 'theme' property.
|
|
2183
|
+
*
|
|
2184
|
+
* @param {number} strokeWidth - Specifies the stroke width of the drawing.
|
|
2185
|
+
* @param {string} color - Specifies the color of the drawing.
|
|
2186
|
+
* @hidden
|
|
2187
|
+
* @returns {void}.
|
|
2188
|
+
*
|
|
2189
|
+
*/
|
|
2190
|
+
ImageEditor.prototype.selectMaskImage = function (strokeWidth, color) {
|
|
2191
|
+
strokeWidth = strokeWidth ? strokeWidth : 10;
|
|
2192
|
+
color = color ? color : '#512da880';
|
|
2193
|
+
this.applyShapes();
|
|
2194
|
+
this.isMaskImage = true;
|
|
2195
|
+
this.updateColl('empty');
|
|
2196
|
+
this.enableDisableToolbar(true);
|
|
2197
|
+
this.update();
|
|
2198
|
+
this.activeObj.strokeSettings.strokeWidth = strokeWidth;
|
|
2199
|
+
this.notify('freehand-draw', { prop: 'setPenStrokeWidth', onPropertyChange: false, value: { value: strokeWidth } });
|
|
2200
|
+
this.activeObj.strokeSettings.strokeColor = color;
|
|
2201
|
+
this.notify('freehand-draw', { prop: 'freeHandDraw', onPropertyChange: false, value: { value: true } });
|
|
2202
|
+
this.maskCanvas.style.display = 'block';
|
|
2203
|
+
};
|
|
2204
|
+
ImageEditor.prototype.enableDisableToolbar = function (value) {
|
|
2205
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
2206
|
+
var toolbar;
|
|
2207
|
+
var elem = document.getElementById(this.element.id + '_toolbar');
|
|
2208
|
+
if (elem) {
|
|
2209
|
+
toolbar = getComponent(elem, 'toolbar');
|
|
2210
|
+
if (toolbar) {
|
|
2211
|
+
toolbar.disable(value);
|
|
2212
|
+
}
|
|
2213
|
+
}
|
|
2214
|
+
elem = document.getElementById(this.element.id + '_bottomToolbar');
|
|
2215
|
+
if (elem) {
|
|
2216
|
+
toolbar = getComponent(elem, 'toolbar');
|
|
2217
|
+
if (toolbar) {
|
|
2218
|
+
toolbar.disable(value);
|
|
2219
|
+
}
|
|
2220
|
+
}
|
|
2221
|
+
};
|
|
2222
|
+
ImageEditor.prototype.updateImage = function (data, imageBackgroundColor) {
|
|
2223
|
+
var _this = this;
|
|
2224
|
+
if (data || imageBackgroundColor) {
|
|
2225
|
+
var prevCropObj_1 = extend({}, this.cropObj, {}, true);
|
|
2226
|
+
var object = { currObj: {} };
|
|
2227
|
+
this.notify('filter', { prop: 'getCurrentObj', onPropertyChange: false, value: { object: object } });
|
|
2228
|
+
var prevObj_1 = object['currObj'];
|
|
2229
|
+
prevObj_1.objColl = extend([], this.objColl, [], true);
|
|
2230
|
+
prevObj_1.pointColl = extend([], this.pointColl, [], true);
|
|
2231
|
+
prevObj_1.afterCropActions = extend([], this.afterCropActions, [], true);
|
|
2232
|
+
var selPointCollObj = { selPointColl: null };
|
|
2233
|
+
this.notify('freehand-draw', { prop: 'getSelPointColl', onPropertyChange: false, value: { obj: selPointCollObj } });
|
|
2234
|
+
prevObj_1.selPointColl = extend([], selPointCollObj['selPointColl'], [], true);
|
|
2235
|
+
if (data) {
|
|
2236
|
+
this.isImageUpdated = true;
|
|
2237
|
+
if (typeof (data) !== 'string') {
|
|
2238
|
+
var canvas = this.createElement('canvas');
|
|
2239
|
+
canvas.width = data.width;
|
|
2240
|
+
canvas.height = data.height;
|
|
2241
|
+
canvas.getContext('2d').putImageData(data, 0, 0);
|
|
2242
|
+
data = canvas.toDataURL();
|
|
2243
|
+
}
|
|
2244
|
+
this.baseImg.src = data;
|
|
2245
|
+
setTimeout(function () {
|
|
2246
|
+
if (_this.cropObj.straighten !== 0) {
|
|
2247
|
+
_this.notify('toolbar', { prop: 'performCropTransformClick', value: { shape: 'crop-' + 'custom' } });
|
|
2248
|
+
_this.noPushUndo = true;
|
|
2249
|
+
_this.crop();
|
|
2250
|
+
_this.noPushUndo = false;
|
|
2251
|
+
}
|
|
2252
|
+
else {
|
|
2253
|
+
_this.notify('draw', { prop: 'render-image', value: { isMouseWheel: false } });
|
|
2254
|
+
}
|
|
2255
|
+
_this.isImageUpdated = false;
|
|
2256
|
+
if (!imageBackgroundColor) {
|
|
2257
|
+
_this.notify('undo-redo', { prop: 'updateUndoRedoColl', onPropertyChange: false, value: { operation: 'updateImage', previousObj: prevObj_1,
|
|
2258
|
+
previousObjColl: prevObj_1.objColl, previousPointColl: prevObj_1.pointColl,
|
|
2259
|
+
previousSelPointColl: prevObj_1.selPointColl, previousCropObj: prevCropObj_1,
|
|
2260
|
+
previousText: null, currentText: null, previousFilter: null, isCircleCrop: null
|
|
2261
|
+
} });
|
|
2262
|
+
_this.notify('undo-redo', { prop: 'updateCurrUrc', value: { type: 'ok' } });
|
|
2263
|
+
}
|
|
2264
|
+
}, 100);
|
|
2265
|
+
}
|
|
2266
|
+
if (imageBackgroundColor) {
|
|
2267
|
+
this.notify('draw', { prop: 'imageBackgroundColor', onPropertyChange: false, value: { color: imageBackgroundColor } });
|
|
2268
|
+
this.notify('draw', { prop: 'render-image', value: { isMouseWheel: false } });
|
|
2269
|
+
if (!data) {
|
|
2270
|
+
this.notify('undo-redo', { prop: 'updateUndoRedoColl', onPropertyChange: false, value: { operation: 'bgColor', previousObj: prevObj_1,
|
|
2271
|
+
previousObjColl: prevObj_1.objColl, previousPointColl: prevObj_1.pointColl, previousSelPointColl: prevObj_1.selPointColl,
|
|
2272
|
+
previousCropObj: prevCropObj_1, previousText: null, currentText: null, previousFilter: null, isCircleCrop: null
|
|
2273
|
+
} });
|
|
2274
|
+
this.notify('undo-redo', { prop: 'updateCurrUrc', value: { type: 'ok' } });
|
|
2275
|
+
}
|
|
2276
|
+
}
|
|
2277
|
+
if (data && imageBackgroundColor) {
|
|
2278
|
+
this.notify('undo-redo', { prop: 'updateUndoRedoColl', onPropertyChange: false, value: { operation: 'updateImage', previousObj: prevObj_1,
|
|
2279
|
+
previousObjColl: prevObj_1.objColl, previousPointColl: prevObj_1.pointColl, previousSelPointColl: prevObj_1.selPointColl,
|
|
2280
|
+
previousCropObj: prevCropObj_1, previousText: null, currentText: null, previousFilter: null, isCircleCrop: null
|
|
2281
|
+
} });
|
|
2282
|
+
this.notify('undo-redo', { prop: 'updateCurrUrc', value: { type: 'ok' } });
|
|
2283
|
+
}
|
|
2284
|
+
}
|
|
2285
|
+
};
|
|
2286
|
+
ImageEditor.prototype.editCompleted = function (type) {
|
|
2287
|
+
this.notify('draw', { prop: 'redrawDownScale' });
|
|
2288
|
+
var actionArgs = { action: type ? type : 'shape-insert',
|
|
2289
|
+
actionEventArgs: this.editCompleteArgs };
|
|
2290
|
+
this.triggerEditCompleteEvent(actionArgs);
|
|
2291
|
+
};
|
|
2292
|
+
ImageEditor.prototype.updateColl = function (type) {
|
|
2293
|
+
if (!this.isMaskImage) {
|
|
2294
|
+
return;
|
|
2295
|
+
}
|
|
2296
|
+
if (type === 'empty') {
|
|
2297
|
+
this.tempToolbarHeight = this.toolbarHeight;
|
|
2298
|
+
this.tempToolbar = this.toolbar ? extend([], this.toolbar, [], true) : null;
|
|
2299
|
+
this.tempObjColl = extend([], this.objColl, [], true);
|
|
2300
|
+
this.tempPointColl = extend([], this.pointColl, [], true);
|
|
2301
|
+
this.tempShapeColl = extend([], this.shapeColl, [], true);
|
|
2302
|
+
this.objColl = [];
|
|
2303
|
+
this.pointColl = [];
|
|
2304
|
+
this.shapeColl = [];
|
|
2305
|
+
this.freehandCounter = 0;
|
|
2306
|
+
this.notify('freehand-draw', { prop: 'setCurrentFreehandDrawIndex',
|
|
2307
|
+
value: { value: 0 } });
|
|
2308
|
+
this.notify('draw', { prop: 'render-image', value: { isMouseWheel: false } });
|
|
2309
|
+
}
|
|
2310
|
+
else if (type === 'reset') {
|
|
2311
|
+
this.objColl = this.tempObjColl;
|
|
2312
|
+
this.pointColl = this.tempPointColl;
|
|
2313
|
+
this.shapeColl = this.tempShapeColl;
|
|
2314
|
+
this.freehandCounter = this.pointColl.length;
|
|
2315
|
+
this.notify('freehand-draw', { prop: 'setCurrentFreehandDrawIndex',
|
|
2316
|
+
value: { value: this.freehandCounter } });
|
|
2317
|
+
this.enableDisableToolbar(false);
|
|
2318
|
+
if (this.cropObj.straighten !== 0) {
|
|
2319
|
+
this.notify('toolbar', { prop: 'performCropTransformClick', value: { shape: 'crop-' + 'custom' } });
|
|
2320
|
+
this.noPushUndo = true;
|
|
2321
|
+
this.crop();
|
|
2322
|
+
this.noPushUndo = false;
|
|
2323
|
+
}
|
|
2324
|
+
this.notify('draw', { prop: 'render-image', value: { isMouseWheel: false } });
|
|
2325
|
+
this.isMaskImage = false;
|
|
2326
|
+
this.upperContext.globalCompositeOperation = 'source-over';
|
|
2327
|
+
this.maskCanvas.style.display = 'none';
|
|
2328
|
+
this.activeObj.strokeSettings = { strokeColor: '#fff', fillColor: '', strokeWidth: null,
|
|
2329
|
+
radius: null, outlineColor: '', outlineWidth: null };
|
|
2330
|
+
this.notify('shape', { prop: 'setStrokeSettings', value: { strokeSettings: this.activeObj.strokeSettings,
|
|
2331
|
+
strokeColor: '#fff', fillColor: '', strokeWidth: null, outlineWidth: null } });
|
|
2332
|
+
this.notify('freehand-draw', { prop: 'setPenStrokeWidth', onPropertyChange: false, value: { value: 2 } });
|
|
2333
|
+
this.notify('freehand-draw', { prop: 'setMasking', onPropertyChange: false, value: { value: false } });
|
|
2334
|
+
}
|
|
2335
|
+
};
|
|
1981
2336
|
// Toolbar related codes
|
|
2337
|
+
ImageEditor.prototype.resetToolbar = function () {
|
|
2338
|
+
if (this.toolbarHeight !== this.tempToolbarHeight && !((isNullOrUndefined(this.toolbar) ||
|
|
2339
|
+
(this.toolbar && this.toolbar.length > 0)
|
|
2340
|
+
|| !isNullOrUndefined(this.toolbarTemplate)))) {
|
|
2341
|
+
this.toolbarHeight = this.tempToolbarHeight;
|
|
2342
|
+
this.notify('toolbar', { prop: 'setToolbarHeight', value: { height: this.toolbarHeight } });
|
|
2343
|
+
this.toolbar = this.tempToolbar;
|
|
2344
|
+
if (!this.toolbarTemplate) {
|
|
2345
|
+
this.notify('toolbar', { prop: 'create-toolbar', onPropertyChange: false });
|
|
2346
|
+
this.notify('toolbar', { prop: 'create-contextual-toolbar', onPropertyChange: false });
|
|
2347
|
+
}
|
|
2348
|
+
this.update();
|
|
2349
|
+
}
|
|
2350
|
+
};
|
|
2351
|
+
ImageEditor.prototype.getData = function (isMaskImage) {
|
|
2352
|
+
if (isMaskImage) {
|
|
2353
|
+
this.resetToolbar();
|
|
2354
|
+
}
|
|
2355
|
+
var objColl = extend([], this.objColl, null, true);
|
|
2356
|
+
var pointColl = extend([], this.pointColl, null, true);
|
|
2357
|
+
/* eslint-disable-next-line @typescript-eslint/no-explicit-any */
|
|
2358
|
+
var shapeColl = extend([], this.shapeColl, null, true);
|
|
2359
|
+
if (isMaskImage) {
|
|
2360
|
+
this.notify('shape', { prop: 'updateShapeColl', onPropertyChange: false });
|
|
2361
|
+
for (var i = 0; i < this.freehandCounter; i++) {
|
|
2362
|
+
this.pointColl[i].strokeColor = '#fff';
|
|
2363
|
+
}
|
|
2364
|
+
}
|
|
2365
|
+
else {
|
|
2366
|
+
this.objColl = [];
|
|
2367
|
+
this.pointColl = [];
|
|
2368
|
+
this.shapeColl = [];
|
|
2369
|
+
this.freehandCounter = 0;
|
|
2370
|
+
}
|
|
2371
|
+
var frameType = this.frameObj.type;
|
|
2372
|
+
this.frameObj.type = 'none';
|
|
2373
|
+
var aspectWidth = this.aspectWidth;
|
|
2374
|
+
var aspectHeight = this.aspectHeight;
|
|
2375
|
+
this.aspectWidth = this.aspectHeight = null;
|
|
2376
|
+
var straighten = this.cropObj.straighten;
|
|
2377
|
+
this.togglePen = false;
|
|
2378
|
+
this.notify('toolbar', { prop: 'performCropTransformClick', value: { shape: 'crop-' + 'custom' } });
|
|
2379
|
+
var tempDestPoints = extend({}, this.img, {}, true);
|
|
2380
|
+
var tempCropObj = extend({}, this.cropObj, {}, true);
|
|
2381
|
+
var tempSel = extend({}, this.activeObj, {}, true);
|
|
2382
|
+
var tempTransform = extend({}, this.transform, {}, true);
|
|
2383
|
+
var panPoint = extend({}, this.panPoint, {}, true);
|
|
2384
|
+
if (straighten !== 0) {
|
|
2385
|
+
this.setStraighten(0);
|
|
2386
|
+
}
|
|
2387
|
+
var point = this.activeObj.activePoint;
|
|
2388
|
+
point.startX = this.img.destLeft;
|
|
2389
|
+
point.startY = this.img.destTop;
|
|
2390
|
+
point.width = this.img.destWidth;
|
|
2391
|
+
point.height = this.img.destHeight;
|
|
2392
|
+
point.endX = point.startX + point.width;
|
|
2393
|
+
point.endY = point.startY + point.height;
|
|
2394
|
+
this.notify('draw', { prop: 'updateActiveObject', onPropertyChange: false, value: { actPoint: point, obj: this.activeObj,
|
|
2395
|
+
isMouseMove: null, x: null, y: null } });
|
|
2396
|
+
this.noPushUndo = true;
|
|
2397
|
+
this.crop();
|
|
2398
|
+
this.noPushUndo = false;
|
|
2399
|
+
this.isCropTab = false;
|
|
2400
|
+
this.notify('shape', { prop: 'refreshActiveObj', onPropertyChange: false });
|
|
2401
|
+
this.notify('crop', { prop: 'resetZoom', onPropertyChange: false });
|
|
2402
|
+
this.isCropTab = true;
|
|
2403
|
+
var afterCropActions = extend([], this.afterCropActions, [], true);
|
|
2404
|
+
var coll = extend([], this.rotateFlipColl, [], true);
|
|
2405
|
+
this.notify('crop', { prop: 'revertTransform', value: { type: 'initial', coll: coll } });
|
|
2406
|
+
var imageData = this.getImageData();
|
|
2407
|
+
if (isMaskImage) {
|
|
2408
|
+
var canvas = this.createElement('canvas');
|
|
2409
|
+
var ctx = canvas.getContext('2d');
|
|
2410
|
+
canvas.width = imageData.width;
|
|
2411
|
+
canvas.height = imageData.height;
|
|
2412
|
+
ctx.fillRect(0, 0, canvas.width, canvas.height);
|
|
2413
|
+
if (this.pointColl.length > 0) {
|
|
2414
|
+
var obj = { width: 0, height: 0 };
|
|
2415
|
+
this.notify('crop', { prop: 'calcRatio', onPropertyChange: false,
|
|
2416
|
+
value: { obj: obj, dimension: { width: canvas.width, height: canvas.height } } });
|
|
2417
|
+
var ratio = obj;
|
|
2418
|
+
this.notify('export', { prop: 'drawAnnotation', value: { context: ctx, ratio: ratio } });
|
|
2419
|
+
}
|
|
2420
|
+
this.upperContext.clearRect(0, 0, this.upperCanvas.width, this.upperCanvas.height);
|
|
2421
|
+
imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
|
|
2422
|
+
}
|
|
2423
|
+
this.notify('crop', { prop: 'revertTransform', value: { type: 'reverse', coll: coll } });
|
|
2424
|
+
this.notify('shape', { prop: 'refreshActiveObj', onPropertyChange: false });
|
|
2425
|
+
this.afterCropActions = afterCropActions;
|
|
2426
|
+
if (!isMaskImage) {
|
|
2427
|
+
this.objColl = objColl;
|
|
2428
|
+
this.pointColl = pointColl;
|
|
2429
|
+
this.shapeColl = shapeColl;
|
|
2430
|
+
this.freehandCounter = this.pointColl.length;
|
|
2431
|
+
}
|
|
2432
|
+
this.frameObj.type = frameType;
|
|
2433
|
+
this.aspectWidth = aspectWidth;
|
|
2434
|
+
this.aspectHeight = aspectHeight;
|
|
2435
|
+
this.notify('toolbar', { prop: 'performCropTransformClick', value: { shape: 'crop-' + 'custom' } });
|
|
2436
|
+
if (straighten !== 0) {
|
|
2437
|
+
this.setStraighten(straighten);
|
|
2438
|
+
}
|
|
2439
|
+
this.img = tempDestPoints;
|
|
2440
|
+
this.cropObj = tempCropObj;
|
|
2441
|
+
this.activeObj = tempSel;
|
|
2442
|
+
this.transform = tempTransform;
|
|
2443
|
+
this.notify('transform', { prop: 'zoomAction', onPropertyChange: false,
|
|
2444
|
+
value: { zoomFactor: 0.1, zoomPoint: null, isResize: null } });
|
|
2445
|
+
this.notify('transform', { prop: 'zoomAction', onPropertyChange: false,
|
|
2446
|
+
value: { zoomFactor: -0.1, zoomPoint: null, isResize: null } });
|
|
2447
|
+
if (this.transform.degree !== 0) {
|
|
2448
|
+
this.panPoint.currentPannedPoint = { x: panPoint.totalPannedClientPoint.x,
|
|
2449
|
+
y: panPoint.totalPannedClientPoint.y };
|
|
2450
|
+
this.notify('transform', { prop: 'drawPannedImage', value: { xDiff: panPoint.totalPannedClientPoint.x,
|
|
2451
|
+
yDiff: panPoint.totalPannedClientPoint.y } });
|
|
2452
|
+
this.panPoint.currentPannedPoint = { x: 0, y: 0 };
|
|
2453
|
+
this.notify('transform', { prop: 'setTempPanMove', value: { point: null } });
|
|
2454
|
+
}
|
|
2455
|
+
this.noPushUndo = true;
|
|
2456
|
+
this.crop();
|
|
2457
|
+
this.noPushUndo = false;
|
|
2458
|
+
this.transform.straighten = 0;
|
|
2459
|
+
this.notify('draw', { prop: 'render-image', value: { isMouseWheel: false } });
|
|
2460
|
+
return imageData;
|
|
2461
|
+
};
|
|
1982
2462
|
ImageEditor.prototype.applyShapes = function () {
|
|
1983
2463
|
if (this.isUndoRedoStack) {
|
|
1984
2464
|
return;
|
|
@@ -2248,12 +2728,16 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
2248
2728
|
shapeSettings.type = ShapeType.FreehandDraw;
|
|
2249
2729
|
}
|
|
2250
2730
|
var shapeChangedArgs = { action: 'apply', currentShapeSettings: extend({}, shapeSettings, {}, true) };
|
|
2251
|
-
if (isFinalApply || this.isShapeDrawing) {
|
|
2731
|
+
if (!this.currObjType.isRedact && (isFinalApply || this.isShapeDrawing)) {
|
|
2252
2732
|
if (this.isShapeDrawing) {
|
|
2253
2733
|
shapeChangedArgs.action = 'draw-end';
|
|
2254
2734
|
}
|
|
2255
2735
|
this.trigger('shapeChange', shapeChangedArgs);
|
|
2256
2736
|
}
|
|
2737
|
+
this.editCompleteArgs = shapeChangedArgs;
|
|
2738
|
+
if (this.currObjType.isRedact) {
|
|
2739
|
+
this.currObjType.isRedact = false;
|
|
2740
|
+
}
|
|
2257
2741
|
}
|
|
2258
2742
|
if (aspectIcon || nonAspectIcon) {
|
|
2259
2743
|
var obj_2 = { width: null, height: null };
|
|
@@ -2329,7 +2813,12 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
2329
2813
|
}
|
|
2330
2814
|
else if (this.togglePen) {
|
|
2331
2815
|
this.freeHandDraw(false);
|
|
2332
|
-
this.
|
|
2816
|
+
if (!this.isMaskImage) {
|
|
2817
|
+
var widthObj = { penStrokeWidth: null };
|
|
2818
|
+
this.notify('freehand-draw', { prop: 'getPenStrokeWidth', onPropertyChange: false, value: { obj: widthObj } });
|
|
2819
|
+
this.notify('undo-redo', { prop: 'updateCurrUrc', value: { type: 'ok' } });
|
|
2820
|
+
this.notify('freehand-draw', { prop: 'setPenStrokeWidth', onPropertyChange: false, value: { value: widthObj['penStrokeWidth'] } });
|
|
2821
|
+
}
|
|
2333
2822
|
this.notify('draw', { prop: 'clearOuterCanvas', onPropertyChange: false, value: { context: this.lowerContext } });
|
|
2334
2823
|
this.notify('draw', { prop: 'clearOuterCanvas', onPropertyChange: false, value: { context: this.upperContext } });
|
|
2335
2824
|
}
|
|
@@ -2344,13 +2833,12 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
2344
2833
|
this.notify('draw', { prop: 'clearOuterCanvas', onPropertyChange: false, value: { context: this.lowerContext } });
|
|
2345
2834
|
this.notify('draw', { prop: 'clearOuterCanvas', onPropertyChange: false, value: { context: this.upperContext } });
|
|
2346
2835
|
}
|
|
2347
|
-
else if (sliderWrap || this.currObjType.isFiltered) {
|
|
2836
|
+
else if ((sliderWrap || this.currObjType.isFiltered) && !this.drawingShape && this.activeObj.shape !== 'redact') {
|
|
2348
2837
|
this.initialAdjustmentValue = this.canvasFilter = this.lowerContext.filter;
|
|
2349
2838
|
this.currObjType.isFiltered = false;
|
|
2350
2839
|
var obj_4 = { value: null };
|
|
2351
2840
|
this.notify('draw', { prop: 'getTempAdjustmentValue', value: { obj: obj_4 } });
|
|
2352
|
-
if (
|
|
2353
|
-
!sliderWrap.classList.contains('e-ie-finetune-slider-wrap'))) {
|
|
2841
|
+
if (!sliderWrap || sliderWrap.parentElement.previousElementSibling.textContent !== 'Opacity') {
|
|
2354
2842
|
this.notify('undo-redo', { prop: 'updateCurrUrc', value: { type: 'ok' } });
|
|
2355
2843
|
}
|
|
2356
2844
|
if ((this.activeObj.activePoint.width !== 0 && this.activeObj.activePoint.height !== 0) ||
|
|
@@ -2383,6 +2871,17 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
2383
2871
|
previousFilter: null, isCircleCrop: null
|
|
2384
2872
|
} });
|
|
2385
2873
|
this.notify('draw', { prop: 'render-image', value: { isMouseWheel: null, isPreventClearRect: null, isFrame: true } });
|
|
2874
|
+
var currFrameSettings = { type: this.toPascalCase(this.frameObj.type),
|
|
2875
|
+
color: this.frameObj.color, gradientColor: this.frameObj.gradientColor, size: this.frameObj.size,
|
|
2876
|
+
inset: this.frameObj.inset, offset: this.frameObj.offset, borderRadius: this.frameObj.radius,
|
|
2877
|
+
frameLineStyle: this.toPascalCase(this.frameObj.border), lineCount: this.frameObj.amount };
|
|
2878
|
+
var prevFrameSettings = { type: this.toPascalCase(this.tempFrameObj.type),
|
|
2879
|
+
color: this.tempFrameObj.color, gradientColor: this.tempFrameObj.gradientColor, size: this.tempFrameObj.size,
|
|
2880
|
+
inset: this.tempFrameObj.inset, offset: this.tempFrameObj.offset, borderRadius: this.tempFrameObj.radius,
|
|
2881
|
+
frameLineStyle: this.toPascalCase(this.tempFrameObj.border), lineCount: this.tempFrameObj.amount };
|
|
2882
|
+
var frameChange = { cancel: false, previousFrameSetting: prevFrameSettings,
|
|
2883
|
+
currentFrameSetting: currFrameSettings };
|
|
2884
|
+
this.editCompleteArgs = frameChange;
|
|
2386
2885
|
this.notify('undo-redo', { prop: 'updateCurrUrc', value: { type: 'ok' } });
|
|
2387
2886
|
this.tempFrameObj = extend({}, this.frameObj, {}, true);
|
|
2388
2887
|
}
|
|
@@ -2391,19 +2890,29 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
2391
2890
|
if (!obj['isCropToolbar']) {
|
|
2392
2891
|
this.notify('toolbar', { prop: 'refresh-toolbar', onPropertyChange: false, value: { type: 'main',
|
|
2393
2892
|
isApplyBtn: false, isCropping: null, isZooming: null, cType: null } });
|
|
2893
|
+
this.currObjType.isRedact = false;
|
|
2394
2894
|
}
|
|
2395
2895
|
this.notify('draw', { prop: 'setNewPath', value: { bool: false } });
|
|
2396
2896
|
this.transform.zoomFactor = this.transform.defaultZoomFactor;
|
|
2397
2897
|
this.notify('selection', { prop: 'setCurrentDrawingShape', onPropertyChange: false, value: { value: '' } });
|
|
2398
2898
|
this.isResizeOkBtn = false;
|
|
2399
2899
|
this.notify('draw', { prop: 'redrawDownScale' });
|
|
2400
|
-
this.isChangesSaved = false;
|
|
2900
|
+
this.isChangesSaved = this.isFinetuneBtnClick = false;
|
|
2401
2901
|
if (isFinalApply) {
|
|
2402
2902
|
this.drawingShape = null;
|
|
2403
2903
|
this.notify('draw', { prop: 'resetTempObjColl' });
|
|
2404
2904
|
this.notify('draw', { prop: 'resetTempPointColl' });
|
|
2405
2905
|
}
|
|
2406
2906
|
};
|
|
2907
|
+
ImageEditor.prototype.triggerEditCompleteEvent = function (args) {
|
|
2908
|
+
if (args.action === 'shape-insert' && args.actionEventArgs &&
|
|
2909
|
+
args.actionEventArgs.currentShapeSettings &&
|
|
2910
|
+
args.actionEventArgs.currentShapeSettings.type.toString() === 'Redact') {
|
|
2911
|
+
args.action = 'redact';
|
|
2912
|
+
}
|
|
2913
|
+
this.trigger('editComplete', args);
|
|
2914
|
+
this.editCompleteArgs = null;
|
|
2915
|
+
};
|
|
2407
2916
|
/**
|
|
2408
2917
|
* Handles the OK button operation
|
|
2409
2918
|
*
|
|
@@ -2511,6 +3020,7 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
2511
3020
|
ImageEditor.prototype.setCurrAdjustmentValue = function (type, value) {
|
|
2512
3021
|
var finetuneValueChanging = { finetune: this.getFinetuneOption(type), value: value, cancel: false };
|
|
2513
3022
|
this.trigger('finetuneValueChanging', finetuneValueChanging);
|
|
3023
|
+
this.editCompleteArgs = finetuneValueChanging;
|
|
2514
3024
|
if (finetuneValueChanging.cancel) {
|
|
2515
3025
|
return;
|
|
2516
3026
|
}
|
|
@@ -2630,9 +3140,9 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
2630
3140
|
toolbar_2.refreshOverflow();
|
|
2631
3141
|
}
|
|
2632
3142
|
}
|
|
2633
|
-
// eslint-disable-next-line max-len
|
|
2634
3143
|
var shapeChangedArgs = { action: type, currentShapeSettings: extend({}, shapeSettings, {}, true) };
|
|
2635
3144
|
this.trigger('shapeChange', shapeChangedArgs);
|
|
3145
|
+
this.editCompleteArgs = shapeChangedArgs;
|
|
2636
3146
|
};
|
|
2637
3147
|
/**
|
|
2638
3148
|
* Apply Font style for text.
|
|
@@ -2715,6 +3225,7 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
2715
3225
|
var shapeChangedArgs = { action: 'font-family', currentShapeSettings: extend({}, shapeSettings, {}, true) };
|
|
2716
3226
|
shapeChangedArgs.currentShapeSettings.fontFamily = this.textArea.style.fontFamily;
|
|
2717
3227
|
this.trigger('shapeChange', shapeChangedArgs);
|
|
3228
|
+
this.editCompleteArgs = shapeChangedArgs;
|
|
2718
3229
|
};
|
|
2719
3230
|
/**
|
|
2720
3231
|
* Apply Font size for text.
|
|
@@ -2826,15 +3337,17 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
2826
3337
|
var shapeChangedArgs = { action: 'font-size', currentShapeSettings: extend({}, shapeSettings, {}, true) };
|
|
2827
3338
|
shapeChangedArgs.currentShapeSettings.fontSize = this.activeObj.textSettings.fontSize;
|
|
2828
3339
|
this.trigger('shapeChange', shapeChangedArgs);
|
|
3340
|
+
this.editCompleteArgs = shapeChangedArgs;
|
|
2829
3341
|
};
|
|
2830
3342
|
/**
|
|
2831
3343
|
* Apply Font color for text.
|
|
2832
3344
|
*
|
|
2833
3345
|
* @param { string } value - Specifies the selected color item value.
|
|
3346
|
+
* @param { string } color - Specifies the selected color type value.
|
|
2834
3347
|
* @hidden
|
|
2835
3348
|
* @returns {void}.
|
|
2836
3349
|
*/
|
|
2837
|
-
ImageEditor.prototype.updateFontColor = function (value) {
|
|
3350
|
+
ImageEditor.prototype.updateFontColor = function (value, color) {
|
|
2838
3351
|
this.notify('selection', { prop: 'setInitialTextEdit', value: { bool: false } });
|
|
2839
3352
|
var isObjPushed = false;
|
|
2840
3353
|
var collLength = this.objColl.length;
|
|
@@ -2860,12 +3373,19 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
2860
3373
|
this.objColl.pop();
|
|
2861
3374
|
}
|
|
2862
3375
|
if (this.textArea.style.display === 'none') {
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
|
|
3376
|
+
if (color === 'Text') {
|
|
3377
|
+
this.activeObj.strokeSettings.strokeColor = value;
|
|
3378
|
+
this.notify('shape', { prop: 'setStrokeSettings', value: { strokeSettings: null,
|
|
3379
|
+
strokeColor: this.activeObj.strokeSettings.strokeColor, fillColor: null, strokeWidth: null } });
|
|
3380
|
+
}
|
|
3381
|
+
else {
|
|
3382
|
+
this.activeObj.strokeSettings.fillColor = value;
|
|
3383
|
+
this.notify('shape', { prop: 'setStrokeSettings', value: { strokeSettings: null,
|
|
3384
|
+
strokeColor: null, fillColor: this.activeObj.strokeSettings.fillColor, strokeWidth: null } });
|
|
3385
|
+
}
|
|
2866
3386
|
if (!this.togglePen) {
|
|
2867
|
-
this.objColl.push(this.activeObj);
|
|
2868
3387
|
if (this.activeObj.activePoint.width !== 0 || this.activeObj.activePoint.height !== 0) {
|
|
3388
|
+
this.objColl.push(this.activeObj);
|
|
2869
3389
|
this.notify('undo-redo', { prop: 'updateUndoRedoColl', onPropertyChange: false,
|
|
2870
3390
|
value: { operation: 'shapeTransform', previousObj: prevObj, previousObjColl: prevObj.objColl,
|
|
2871
3391
|
previousPointColl: prevObj.pointColl, previousSelPointColl: prevObj.selPointColl,
|
|
@@ -2876,36 +3396,114 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
2876
3396
|
}
|
|
2877
3397
|
}
|
|
2878
3398
|
else if (this.textArea.style.display === 'block' || this.textArea.style.display === 'inline-block') {
|
|
2879
|
-
this.textArea.style
|
|
2880
|
-
var temp = this.activeObj.strokeSettings.strokeColor;
|
|
2881
|
-
this.activeObj.strokeSettings
|
|
2882
|
-
this.objColl.push(this.activeObj);
|
|
3399
|
+
this.textArea.style[color === 'Text' ? 'color' : 'backgroundColor'] = value;
|
|
3400
|
+
var temp = color === 'Text' ? this.activeObj.strokeSettings.strokeColor : this.activeObj.strokeSettings.fillColor;
|
|
3401
|
+
this.activeObj.strokeSettings[color === 'Text' ? 'strokeColor' : 'fillColor'] = value;
|
|
2883
3402
|
if (this.activeObj.activePoint.width !== 0 || this.activeObj.activePoint.height !== 0) {
|
|
3403
|
+
this.objColl.push(this.activeObj);
|
|
2884
3404
|
this.notify('undo-redo', { prop: 'updateUndoRedoColl', onPropertyChange: false,
|
|
2885
3405
|
value: { operation: 'textAreaCustomization', previousObj: prevObj, previousObjColl: prevObj.objColl,
|
|
2886
3406
|
previousPointColl: prevObj.pointColl, previousSelPointColl: prevObj.selPointColl,
|
|
2887
3407
|
previousCropObj: prevCropObj, previousText: null,
|
|
2888
3408
|
currentText: null, previousFilter: null, isCircleCrop: null } });
|
|
3409
|
+
this.objColl.pop();
|
|
2889
3410
|
}
|
|
2890
|
-
this.
|
|
2891
|
-
this.activeObj.strokeSettings.strokeColor = temp;
|
|
3411
|
+
this.activeObj.strokeSettings[color === 'Text' ? 'strokeColor' : 'fillColor'] = temp;
|
|
2892
3412
|
}
|
|
2893
3413
|
else if (!this.togglePen) {
|
|
2894
|
-
this.objColl.push(this.activeObj);
|
|
2895
3414
|
if (this.activeObj.activePoint.width !== 0 || this.activeObj.activePoint.height !== 0) {
|
|
3415
|
+
this.objColl.push(this.activeObj);
|
|
2896
3416
|
this.notify('undo-redo', { prop: 'updateUndoRedoColl', onPropertyChange: false,
|
|
2897
3417
|
value: { operation: 'shapeTransform', previousObj: prevObj, previousObjColl: prevObj.objColl,
|
|
2898
3418
|
previousPointColl: prevObj.pointColl, previousSelPointColl: prevObj.selPointColl,
|
|
2899
3419
|
previousCropObj: prevCropObj, previousText: null,
|
|
2900
3420
|
currentText: null, previousFilter: null, isCircleCrop: null } });
|
|
3421
|
+
this.notify('selection', { prop: 'redrawShape', value: { obj: this.objColl[this.objColl.length - 1] } });
|
|
2901
3422
|
}
|
|
3423
|
+
}
|
|
3424
|
+
var shapeChangedArgs = { action: 'font-color', currentShapeSettings: extend({}, shapeSettings, {}, true) };
|
|
3425
|
+
shapeChangedArgs.currentShapeSettings.fillColor = value;
|
|
3426
|
+
this.trigger('shapeChange', shapeChangedArgs);
|
|
3427
|
+
this.editCompleteArgs = shapeChangedArgs;
|
|
3428
|
+
};
|
|
3429
|
+
/**
|
|
3430
|
+
* Apply Font color for text.
|
|
3431
|
+
*
|
|
3432
|
+
* @param { string } value - Specifies the selected color item value.
|
|
3433
|
+
* @hidden
|
|
3434
|
+
* @returns {void}.
|
|
3435
|
+
*/
|
|
3436
|
+
ImageEditor.prototype.updateStrokeTextColor = function (value) {
|
|
3437
|
+
this.notify('selection', { prop: 'setInitialTextEdit', value: { bool: false } });
|
|
3438
|
+
var isObjPushed = false;
|
|
3439
|
+
var collLength = this.objColl.length;
|
|
3440
|
+
this.notify('shape', { prop: 'pushActItemIntoObj' });
|
|
3441
|
+
if (collLength !== this.objColl.length) {
|
|
3442
|
+
isObjPushed = true;
|
|
3443
|
+
}
|
|
3444
|
+
var prevCropObj = extend({}, this.cropObj, {}, true);
|
|
3445
|
+
var objt = { shapeSettingsObj: {} };
|
|
3446
|
+
this.notify('selection', { prop: 'updatePrevShapeSettings', onPropertyChange: false, value: { obj: objt } });
|
|
3447
|
+
var shapeSettings = objt['shapeSettingsObj'];
|
|
3448
|
+
var object = { currObj: {} };
|
|
3449
|
+
this.notify('filter', { prop: 'getCurrentObj', onPropertyChange: false, value: { object: object } });
|
|
3450
|
+
var prevObj = object['currObj'];
|
|
3451
|
+
prevObj.objColl = extend([], this.objColl, [], true);
|
|
3452
|
+
prevObj.pointColl = extend([], this.pointColl, [], true);
|
|
3453
|
+
prevObj.afterCropActions = extend([], this.afterCropActions, [], true);
|
|
3454
|
+
var selPointCollObj = { selPointColl: null };
|
|
3455
|
+
this.notify('freehand-draw', { prop: 'getSelPointColl', onPropertyChange: false,
|
|
3456
|
+
value: { obj: selPointCollObj } });
|
|
3457
|
+
prevObj.selPointColl = extend([], selPointCollObj['selPointColl'], [], true);
|
|
3458
|
+
if (isObjPushed) {
|
|
3459
|
+
this.objColl.pop();
|
|
3460
|
+
}
|
|
3461
|
+
if (this.textArea.style.display === 'none') {
|
|
3462
|
+
this.activeObj.strokeSettings.outlineColor = value;
|
|
3463
|
+
this.notify('shape', { prop: 'setStrokeSettings', value: { strokeSettings: null,
|
|
3464
|
+
strokeColor: null, fillColor: null, strokeWidth: null, outlineColor: this.activeObj.strokeSettings.outlineColor } });
|
|
3465
|
+
if (!this.togglePen) {
|
|
3466
|
+
if (this.activeObj.activePoint.width !== 0 || this.activeObj.activePoint.height !== 0) {
|
|
3467
|
+
this.objColl.push(this.activeObj);
|
|
3468
|
+
this.notify('undo-redo', { prop: 'updateUndoRedoColl', onPropertyChange: false,
|
|
3469
|
+
value: { operation: 'shapeTransform', previousObj: prevObj, previousObjColl: prevObj.objColl,
|
|
3470
|
+
previousPointColl: prevObj.pointColl, previousSelPointColl: prevObj.selPointColl,
|
|
3471
|
+
previousCropObj: prevCropObj, previousText: null,
|
|
3472
|
+
currentText: null, previousFilter: null, isCircleCrop: null } });
|
|
3473
|
+
this.notify('selection', { prop: 'redrawShape', value: { obj: this.objColl[this.objColl.length - 1] } });
|
|
3474
|
+
}
|
|
3475
|
+
}
|
|
3476
|
+
}
|
|
3477
|
+
else if (this.textArea.style.display === 'block' || this.textArea.style.display === 'inline-block') {
|
|
3478
|
+
this.textArea.style.textShadow = "-1px -1px 0 " + value + ", 1px -1px 0 " + value + ", -1px 1px 0 " + value + ", 1px 1px 0 " + value;
|
|
3479
|
+
var temp = this.activeObj.strokeSettings.outlineColor;
|
|
3480
|
+
this.activeObj.strokeSettings.outlineColor = value;
|
|
3481
|
+
if (this.activeObj.activePoint.width !== 0 || this.activeObj.activePoint.height !== 0) {
|
|
3482
|
+
this.objColl.push(this.activeObj);
|
|
3483
|
+
this.notify('undo-redo', { prop: 'updateUndoRedoColl', onPropertyChange: false,
|
|
3484
|
+
value: { operation: 'textAreaCustomization', previousObj: prevObj, previousObjColl: prevObj.objColl,
|
|
3485
|
+
previousPointColl: prevObj.pointColl, previousSelPointColl: prevObj.selPointColl,
|
|
3486
|
+
previousCropObj: prevCropObj, previousText: null,
|
|
3487
|
+
currentText: null, previousFilter: null, isCircleCrop: null } });
|
|
3488
|
+
this.objColl.pop();
|
|
3489
|
+
}
|
|
3490
|
+
this.activeObj.strokeSettings.outlineColor = temp;
|
|
3491
|
+
}
|
|
3492
|
+
else if (!this.togglePen) {
|
|
2902
3493
|
if (this.activeObj.activePoint.width !== 0 || this.activeObj.activePoint.height !== 0) {
|
|
3494
|
+
this.objColl.push(this.activeObj);
|
|
3495
|
+
this.notify('undo-redo', { prop: 'updateUndoRedoColl', onPropertyChange: false,
|
|
3496
|
+
value: { operation: 'shapeTransform', previousObj: prevObj, previousObjColl: prevObj.objColl,
|
|
3497
|
+
previousPointColl: prevObj.pointColl, previousSelPointColl: prevObj.selPointColl,
|
|
3498
|
+
previousCropObj: prevCropObj, previousText: null,
|
|
3499
|
+
currentText: null, previousFilter: null, isCircleCrop: null } });
|
|
2903
3500
|
this.notify('selection', { prop: 'redrawShape', value: { obj: this.objColl[this.objColl.length - 1] } });
|
|
2904
3501
|
}
|
|
2905
3502
|
}
|
|
2906
3503
|
var shapeChangedArgs = { action: 'font-color', currentShapeSettings: extend({}, shapeSettings, {}, true) };
|
|
2907
3504
|
shapeChangedArgs.currentShapeSettings.fillColor = value;
|
|
2908
3505
|
this.trigger('shapeChange', shapeChangedArgs);
|
|
3506
|
+
this.editCompleteArgs = shapeChangedArgs;
|
|
2909
3507
|
};
|
|
2910
3508
|
/**
|
|
2911
3509
|
* Apply Pen stroke width.
|
|
@@ -2961,6 +3559,7 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
2961
3559
|
var shapeChangedArgs = { action: 'stroke-width', currentShapeSettings: extend({}, shapeSettings, {}, true) };
|
|
2962
3560
|
shapeChangedArgs.currentShapeSettings.strokeWidth = this.activeObj.strokeSettings.strokeWidth;
|
|
2963
3561
|
this.trigger('shapeChange', shapeChangedArgs);
|
|
3562
|
+
this.editCompleteArgs = shapeChangedArgs;
|
|
2964
3563
|
};
|
|
2965
3564
|
/**
|
|
2966
3565
|
* Apply Pen stroke color.
|
|
@@ -3021,15 +3620,18 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
3021
3620
|
var shapeChangedArgs = { action: 'stroke-color', currentShapeSettings: extend({}, shapeSettings, {}, true) };
|
|
3022
3621
|
shapeChangedArgs.currentShapeSettings.strokeColor = value;
|
|
3023
3622
|
this.trigger('shapeChange', shapeChangedArgs);
|
|
3623
|
+
this.editCompleteArgs = shapeChangedArgs;
|
|
3024
3624
|
};
|
|
3025
3625
|
/**
|
|
3026
3626
|
* Apply Shape stroke width.
|
|
3027
3627
|
*
|
|
3028
3628
|
* @param { string } id - Specifies the selected item id.
|
|
3629
|
+
* @param { string } type - Specifies the type of selected item.
|
|
3630
|
+
* @param { string } shapeType - Specifies the shape type of selected item.
|
|
3029
3631
|
* @hidden
|
|
3030
3632
|
* @returns {void}.
|
|
3031
3633
|
*/
|
|
3032
|
-
ImageEditor.prototype.updateStrokeWidth = function (id) {
|
|
3634
|
+
ImageEditor.prototype.updateStrokeWidth = function (id, type, shapeType) {
|
|
3033
3635
|
if (this.activeObj.shape && (this.activeObj.shape !== 'path' || (this.activeObj.shape === 'path' &&
|
|
3034
3636
|
this.activeObj.pointColl.length > 0))) {
|
|
3035
3637
|
var obj = { shapeSettingsObj: {} };
|
|
@@ -3055,13 +3657,25 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
3055
3657
|
if (isObjPushed) {
|
|
3056
3658
|
this.objColl.pop();
|
|
3057
3659
|
}
|
|
3058
|
-
this.activeObj.strokeSettings
|
|
3660
|
+
this.activeObj.strokeSettings[type === 'width' ? (shapeType === 'text' ? 'outlineWidth' : 'strokeWidth') : 'radius'] = parseInt(id, 10);
|
|
3059
3661
|
if (this.activeObj.shape === 'rectangle' || this.activeObj.shape === 'ellipse') {
|
|
3060
|
-
this.activeObj.strokeSettings
|
|
3662
|
+
this.activeObj.strokeSettings[type === 'width' ? (shapeType === 'text' ? 'outlineWidth' : 'strokeWidth') : 'radius'] = parseInt(id, 10) - 1;
|
|
3663
|
+
}
|
|
3664
|
+
this.activeObj.strokeSettings[type === 'width' ? (shapeType === 'text' ? 'outlineWidth' : 'strokeWidth') : 'radius'] *= 2;
|
|
3665
|
+
if (type === 'width') {
|
|
3666
|
+
if (shapeType === 'text') {
|
|
3667
|
+
this.notify('shape', { prop: 'setStrokeSettings', value: { strokeSettings: null, strokeColor: null, fillColor: null,
|
|
3668
|
+
strokeWidth: null, radius: null, outlineWidth: this.activeObj.strokeSettings.outlineWidth } });
|
|
3669
|
+
}
|
|
3670
|
+
else {
|
|
3671
|
+
this.notify('shape', { prop: 'setStrokeSettings', value: { strokeSettings: null, strokeColor: null, fillColor: null,
|
|
3672
|
+
strokeWidth: this.activeObj.strokeSettings.strokeWidth, radius: null, outlineWidth: null } });
|
|
3673
|
+
}
|
|
3674
|
+
}
|
|
3675
|
+
else {
|
|
3676
|
+
this.notify('shape', { prop: 'setStrokeSettings', value: { strokeSettings: null, strokeColor: null, fillColor: null,
|
|
3677
|
+
strokeWidth: null, radius: this.activeObj.strokeSettings.radius } });
|
|
3061
3678
|
}
|
|
3062
|
-
this.activeObj.strokeSettings.strokeWidth *= 2;
|
|
3063
|
-
this.notify('shape', { prop: 'setStrokeSettings', value: { strokeSettings: null, strokeColor: null, fillColor: null,
|
|
3064
|
-
strokeWidth: this.activeObj.strokeSettings.strokeWidth } });
|
|
3065
3679
|
this.objColl.push(this.activeObj);
|
|
3066
3680
|
if (this.activeObj.activePoint.width !== 0 || this.activeObj.activePoint.height !== 0) {
|
|
3067
3681
|
this.notify('undo-redo', { prop: 'updateUndoRedoColl', onPropertyChange: false,
|
|
@@ -3072,15 +3686,28 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
3072
3686
|
}
|
|
3073
3687
|
this.notify('selection', { prop: 'redrawShape', value: { obj: this.objColl[this.objColl.length - 1] } });
|
|
3074
3688
|
var shapeChangedArgs = { action: 'stroke-width', currentShapeSettings: extend({}, shapeSettings, {}, true) };
|
|
3075
|
-
shapeChangedArgs.currentShapeSettings
|
|
3689
|
+
shapeChangedArgs.currentShapeSettings[type === 'width' ? (shapeType === 'text' ? 'outlineWidth' : 'strokeWidth') : 'radius'] = this.activeObj.strokeSettings[type === 'width' ? (shapeType === 'text' ? 'outlineWidth' : 'strokeWidth') : 'radius'];
|
|
3076
3690
|
this.trigger('shapeChange', shapeChangedArgs);
|
|
3691
|
+
this.editCompleteArgs = shapeChangedArgs;
|
|
3077
3692
|
}
|
|
3078
3693
|
else if (this.activeObj.shape && (this.activeObj.shape === 'path' &&
|
|
3079
3694
|
this.activeObj.pointColl.length === 0)) {
|
|
3080
3695
|
this.activeObj.strokeSettings.strokeWidth = parseInt(id, 10);
|
|
3081
3696
|
this.activeObj.strokeSettings.strokeWidth *= 2;
|
|
3082
|
-
|
|
3083
|
-
|
|
3697
|
+
if (type === 'width') {
|
|
3698
|
+
if (shapeType === 'text') {
|
|
3699
|
+
this.notify('shape', { prop: 'setStrokeSettings', value: { strokeSettings: null, strokeColor: null, fillColor: null,
|
|
3700
|
+
strokeWidth: null, radius: null, outlineWidth: this.activeObj.strokeSettings.outlineWidth } });
|
|
3701
|
+
}
|
|
3702
|
+
else {
|
|
3703
|
+
this.notify('shape', { prop: 'setStrokeSettings', value: { strokeSettings: null, strokeColor: null, fillColor: null,
|
|
3704
|
+
strokeWidth: this.activeObj.strokeSettings.strokeWidth, radius: null, outlineWidth: null } });
|
|
3705
|
+
}
|
|
3706
|
+
}
|
|
3707
|
+
else {
|
|
3708
|
+
this.notify('shape', { prop: 'setStrokeSettings', value: { strokeSettings: null, strokeColor: null, fillColor: null,
|
|
3709
|
+
strokeWidth: null, radius: this.activeObj.strokeSettings.radius } });
|
|
3710
|
+
}
|
|
3084
3711
|
}
|
|
3085
3712
|
};
|
|
3086
3713
|
/**
|
|
@@ -3138,6 +3765,7 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
3138
3765
|
var shapeChangedArgs = { action: 'stroke-color', currentShapeSettings: extend({}, shapeSettings, {}, true) };
|
|
3139
3766
|
shapeChangedArgs.currentShapeSettings.strokeColor = value;
|
|
3140
3767
|
this.trigger('shapeChange', shapeChangedArgs);
|
|
3768
|
+
this.editCompleteArgs = shapeChangedArgs;
|
|
3141
3769
|
};
|
|
3142
3770
|
/**
|
|
3143
3771
|
* Apply Shape fill color.
|
|
@@ -3185,6 +3813,7 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
3185
3813
|
this.notify('selection', { prop: 'redrawShape', value: { obj: this.objColl[this.objColl.length - 1] } });
|
|
3186
3814
|
var shapeChangedArgs = { action: 'fill-color', currentShapeSettings: extend({}, shapeSettings, {}, true) };
|
|
3187
3815
|
this.trigger('shapeChange', shapeChangedArgs);
|
|
3816
|
+
this.editCompleteArgs = shapeChangedArgs;
|
|
3188
3817
|
};
|
|
3189
3818
|
/**
|
|
3190
3819
|
* Apply horizontal flip.
|
|
@@ -3488,8 +4117,11 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
3488
4117
|
ImageEditor.prototype.setStraighten = function (value) {
|
|
3489
4118
|
var straightenEventArgs = { cancel: false, previousDegree: this.transform.straighten, currentDegree: value };
|
|
3490
4119
|
this.trigger('rotating', straightenEventArgs);
|
|
4120
|
+
this.editCompleteArgs = straightenEventArgs;
|
|
3491
4121
|
if (!straightenEventArgs.cancel) {
|
|
3492
4122
|
this.performStraighten(straightenEventArgs);
|
|
4123
|
+
var actionArgs = { action: 'straighten', actionEventArgs: this.editCompleteArgs };
|
|
4124
|
+
this.triggerEditCompleteEvent(actionArgs);
|
|
3493
4125
|
}
|
|
3494
4126
|
};
|
|
3495
4127
|
ImageEditor.prototype.duplicateImage = function () {
|
|
@@ -3705,9 +4337,36 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
3705
4337
|
Material3Dark: { primaryColor: '#d0bcff', secondaryColor: '#fff' },
|
|
3706
4338
|
Fluent2: { primaryColor: '#0f6cbd', secondaryColor: '#fff' },
|
|
3707
4339
|
Fluent2Dark: { primaryColor: '#115ea3', secondaryColor: '#fff' },
|
|
3708
|
-
Fluent2Highcontrast: { primaryColor: '#1aebff', secondaryColor: '#fff' }
|
|
4340
|
+
Fluent2Highcontrast: { primaryColor: '#1aebff', secondaryColor: '#fff' },
|
|
4341
|
+
'Bootstrap5.3': { primaryColor: '#0d6efd', secondaryColor: '#fff' },
|
|
4342
|
+
'Bootstrap5.3Dark': { primaryColor: '#0d6efd', secondaryColor: '#fff' }
|
|
3709
4343
|
};
|
|
3710
4344
|
};
|
|
4345
|
+
/**
|
|
4346
|
+
* Draw a redaction on an image.
|
|
4347
|
+
*
|
|
4348
|
+
* @param {RedactType} type – Optional. Specifies the type of redaction to be drawn on the image such as blur or pixelate. If not specified, the redaction drawing is initiated with the default blur value.
|
|
4349
|
+
* @param {number} x – Optional. Specifies x-coordinate of redaction. If not specified, the redaction drawing is initiated with the first parameter.
|
|
4350
|
+
* @param {number} y – Optional. Specifies y-coordinate of redaction. If not specified it draws redaction from the center point of the image.
|
|
4351
|
+
* @param {number} width – Optional. Specifies the width of the redaction. The default value is 100.
|
|
4352
|
+
* @param {number} height – Optional. Specifies the height of the redaction. The default value is 50.
|
|
4353
|
+
* @param {number} value – Optional. Specifies the blur value for blur-type redaction or the pixel size for pixelate-type redaction. Defaults to 20 since the default redaction is blur.
|
|
4354
|
+
* @returns {boolean}.
|
|
4355
|
+
*/
|
|
4356
|
+
ImageEditor.prototype.drawRedact = function (type, x, y, width, height, value) {
|
|
4357
|
+
var isRedact = false;
|
|
4358
|
+
var isPointsInRange = this.allowShape(x, y);
|
|
4359
|
+
if (!this.disabled && this.isImageLoaded && (isPointsInRange || (isNullOrUndefined(x) && isNullOrUndefined(y)))) {
|
|
4360
|
+
isRedact = true;
|
|
4361
|
+
this.notify('shape', {
|
|
4362
|
+
prop: 'drawRedact', onPropertyChange: false, value: {
|
|
4363
|
+
x: x, y: y, width: width, height: height, type: type, value: value
|
|
4364
|
+
}
|
|
4365
|
+
});
|
|
4366
|
+
this.notify('draw', { prop: 'redrawDownScale' });
|
|
4367
|
+
}
|
|
4368
|
+
return isRedact;
|
|
4369
|
+
};
|
|
3711
4370
|
var ImageEditor_1;
|
|
3712
4371
|
__decorate([
|
|
3713
4372
|
Property('')
|
|
@@ -3829,6 +4488,9 @@ var ImageEditor = /** @class */ (function (_super) {
|
|
|
3829
4488
|
__decorate([
|
|
3830
4489
|
Event()
|
|
3831
4490
|
], ImageEditor.prototype, "frameChange", void 0);
|
|
4491
|
+
__decorate([
|
|
4492
|
+
Event()
|
|
4493
|
+
], ImageEditor.prototype, "editComplete", void 0);
|
|
3832
4494
|
ImageEditor = ImageEditor_1 = __decorate([
|
|
3833
4495
|
NotifyPropertyChanges
|
|
3834
4496
|
], ImageEditor);
|