@syncfusion/ej2-richtexteditor 29.2.4-795127 → 29.2.4-803054
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/dist/ej2-richtexteditor.umd.min.js +1 -1
- package/dist/ej2-richtexteditor.umd.min.js.map +1 -1
- package/dist/es6/ej2-richtexteditor.es2015.js +78 -1
- package/dist/es6/ej2-richtexteditor.es2015.js.map +1 -1
- package/dist/es6/ej2-richtexteditor.es5.js +79 -1
- package/dist/es6/ej2-richtexteditor.es5.js.map +1 -1
- package/package.json +1 -1
- package/src/rich-text-editor/actions/paste-clean-up.d.ts +4 -0
- package/src/rich-text-editor/actions/paste-clean-up.js +78 -2
- package/src/rich-text-editor/models/toolbar-settings-model.d.ts +7 -0
- package/src/rich-text-editor/models/toolbar-settings.d.ts +6 -0
- package/src/rich-text-editor/models/toolbar-settings.js +3 -0
|
@@ -27988,6 +27988,9 @@ var ImageSettings = /** @class */ (function (_super) {
|
|
|
27988
27988
|
__decorate$1([
|
|
27989
27989
|
Property(false)
|
|
27990
27990
|
], ImageSettings.prototype, "resizeByPercent", void 0);
|
|
27991
|
+
__decorate$1([
|
|
27992
|
+
Property(false)
|
|
27993
|
+
], ImageSettings.prototype, "uploadRemoteURLs", void 0);
|
|
27991
27994
|
return ImageSettings;
|
|
27992
27995
|
}(ChildProperty));
|
|
27993
27996
|
/**
|
|
@@ -40503,7 +40506,11 @@ var PasteCleanup = /** @class */ (function () {
|
|
|
40503
40506
|
if (e.args && value !== null && this.parent.editorMode === 'HTML') {
|
|
40504
40507
|
var file = void 0;
|
|
40505
40508
|
var files = e.args.clipboardData.files;
|
|
40506
|
-
|
|
40509
|
+
var elm = createElement('p');
|
|
40510
|
+
elm.innerHTML = value;
|
|
40511
|
+
var source = this.findSource(elm);
|
|
40512
|
+
var extractedSRC = this.parent.insertImageSettings.uploadRemoteURLs ? this.extractImageSrcDOM(value) : null;
|
|
40513
|
+
if (value.length === 0 || (!isNullOrUndefined(files) && files.length > 0 && source === 'html')) {
|
|
40507
40514
|
var htmlRegex = new RegExp(/<\/[a-z][\s\S]*>/i);
|
|
40508
40515
|
value = e.args.clipboardData.getData('text/plain');
|
|
40509
40516
|
this.parent.trigger(beforePasteCleanup, { value: value });
|
|
@@ -40546,6 +40553,14 @@ var PasteCleanup = /** @class */ (function () {
|
|
|
40546
40553
|
value = divElement.innerHTML;
|
|
40547
40554
|
}
|
|
40548
40555
|
}
|
|
40556
|
+
else if (Array.isArray(extractedSRC) && extractedSRC.length &&
|
|
40557
|
+
this.parent.insertImageSettings.saveUrl && this.parent.insertImageSettings.path) {
|
|
40558
|
+
this.parent.trigger(beforePasteCleanup, { value: value });
|
|
40559
|
+
for (var i = 0; i < extractedSRC.length; i++) {
|
|
40560
|
+
var src = extractedSRC[i];
|
|
40561
|
+
this.fetchImageWithMetadata(src);
|
|
40562
|
+
}
|
|
40563
|
+
}
|
|
40549
40564
|
else if (value.length > 0) {
|
|
40550
40565
|
this.parent.trigger(beforePasteCleanup, { value: value });
|
|
40551
40566
|
this.parent.formatter.editorManager.observer.notify(MS_WORD_CLEANUP, {
|
|
@@ -40602,6 +40617,69 @@ var PasteCleanup = /** @class */ (function () {
|
|
|
40602
40617
|
}
|
|
40603
40618
|
}
|
|
40604
40619
|
};
|
|
40620
|
+
PasteCleanup.prototype.findSource = function (element) {
|
|
40621
|
+
var metaNodes = element.querySelectorAll('meta');
|
|
40622
|
+
for (var i = 0; i < metaNodes.length; i++) {
|
|
40623
|
+
var metaNode = metaNodes[i];
|
|
40624
|
+
var content = metaNode.getAttribute('content');
|
|
40625
|
+
var name_1 = metaNode.getAttribute('name');
|
|
40626
|
+
if (name_1 && name_1.toLowerCase().indexOf('generator') >= 0 && content && content.toLowerCase().indexOf('microsoft') >= 0) {
|
|
40627
|
+
for (var j = 0; j < PASTE_SOURCE.length; j++) {
|
|
40628
|
+
if (content.toLowerCase().indexOf(PASTE_SOURCE[j]) >= 0) {
|
|
40629
|
+
return PASTE_SOURCE[j];
|
|
40630
|
+
}
|
|
40631
|
+
}
|
|
40632
|
+
}
|
|
40633
|
+
}
|
|
40634
|
+
return 'html';
|
|
40635
|
+
};
|
|
40636
|
+
PasteCleanup.prototype.extractImageSrcDOM = function (value) {
|
|
40637
|
+
if (!value || typeof value !== 'string') {
|
|
40638
|
+
return null;
|
|
40639
|
+
}
|
|
40640
|
+
var parser = new DOMParser();
|
|
40641
|
+
var doc = parser.parseFromString(value, 'text/html');
|
|
40642
|
+
var images = doc.querySelectorAll('img');
|
|
40643
|
+
if (images.length === 0) {
|
|
40644
|
+
return null;
|
|
40645
|
+
}
|
|
40646
|
+
var srcs = Array.from(images)
|
|
40647
|
+
.map(function (img) { return img.getAttribute('src') || img.src || ''; })
|
|
40648
|
+
.map(function (src) { return src.trim(); })
|
|
40649
|
+
.filter(function (src) { return !!src; })
|
|
40650
|
+
// Exclude base64/data URLs, blob URLs, and anything containing "id="
|
|
40651
|
+
.filter(function (src) {
|
|
40652
|
+
var s = src.toLowerCase();
|
|
40653
|
+
return !s.startsWith('data:') && !s.includes('base64') && !s.startsWith('blob:') && !s.includes('id=');
|
|
40654
|
+
});
|
|
40655
|
+
return srcs.length ? srcs : null;
|
|
40656
|
+
};
|
|
40657
|
+
PasteCleanup.prototype.fetchImageWithMetadata = function (url) {
|
|
40658
|
+
var _this = this;
|
|
40659
|
+
fetch(url)
|
|
40660
|
+
.then(function (response) {
|
|
40661
|
+
if (!response.ok) {
|
|
40662
|
+
console.warn("Fetch status " + response.status + " for: " + url);
|
|
40663
|
+
return null;
|
|
40664
|
+
}
|
|
40665
|
+
return response.blob();
|
|
40666
|
+
})
|
|
40667
|
+
.then(function (blob) {
|
|
40668
|
+
if (blob) {
|
|
40669
|
+
var filename = _this.getFilenameFromUrl(url) || 'downloaded-image.jpg';
|
|
40670
|
+
var mimeType = blob.type || 'image/jpeg';
|
|
40671
|
+
var file = new File([blob], filename, { type: mimeType });
|
|
40672
|
+
var imageElement = _this.parent.inputElement.querySelector("img[src=\"" + url + "\"]");
|
|
40673
|
+
_this.uploadMethod(file, imageElement);
|
|
40674
|
+
}
|
|
40675
|
+
});
|
|
40676
|
+
};
|
|
40677
|
+
// Helper method to extract filename from URL
|
|
40678
|
+
PasteCleanup.prototype.getFilenameFromUrl = function (url) {
|
|
40679
|
+
var pathname = new URL(url).pathname;
|
|
40680
|
+
var filename = pathname.substring(pathname.lastIndexOf('/') + 1);
|
|
40681
|
+
return filename || 'image.jpg';
|
|
40682
|
+
};
|
|
40605
40683
|
PasteCleanup.prototype.splitBreakLine = function (value) {
|
|
40606
40684
|
var enterSplitText = value.split('\r\n\r\n');
|
|
40607
40685
|
var finalText = '';
|