- Fix (Embedded API): Cross-domain may fail to even access origin or contentDocument
- Fix (Embedded API): Avoid adding URL to iframe src if there are no arguments - Fix (Cross-domain usage): Recover from exceptions with `localStorage` - Docs (JSDoc): Missing function
This commit is contained in:
23
dist/index-es.js
vendored
23
dist/index-es.js
vendored
@@ -19832,6 +19832,11 @@ var SvgCanvas = function SvgCanvas(container, config) {
|
|||||||
$$9('#cmenu_canvas').enableContextMenuItems('#paste,#paste_in_place');
|
$$9('#cmenu_canvas').enableContextMenuItems('#paste,#paste_in_place');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {"in_place"|"point"|undefined} type
|
||||||
|
* @param {Number|undefined} x Expected if type is "point"
|
||||||
|
* @param {Number|undefined} y Expected if type is "point"
|
||||||
|
*/
|
||||||
this.pasteElements = function (type, x, y) {
|
this.pasteElements = function (type, x, y) {
|
||||||
var cb = JSON.parse(localStorage.getItem('svgedit_clipboard'));
|
var cb = JSON.parse(localStorage.getItem('svgedit_clipboard'));
|
||||||
var len = cb.length;
|
var len = cb.length;
|
||||||
@@ -30302,11 +30307,21 @@ editor.init = function () {
|
|||||||
$$b('#cmenu_canvas li').disableContextMenu();
|
$$b('#cmenu_canvas li').disableContextMenu();
|
||||||
canvMenu.enableContextMenuItems('#delete,#cut,#copy');
|
canvMenu.enableContextMenuItems('#delete,#cut,#copy');
|
||||||
|
|
||||||
canvMenu[(localStorage.getItem('svgedit_clipboard') ? 'en' : 'dis') + 'ableContextMenuItems']('#paste,#paste_in_place');
|
function enableOrDisableClipboard() {
|
||||||
window.addEventListener('storage', function (e) {
|
var svgeditClipboard = void 0;
|
||||||
if (e.key !== 'svgedit_clipboard') return;
|
try {
|
||||||
|
svgeditClipboard = localStorage.getItem('svgedit_clipboard');
|
||||||
|
} catch (err) {}
|
||||||
|
canvMenu[(svgeditClipboard ? 'en' : 'dis') + 'ableContextMenuItems']('#paste,#paste_in_place');
|
||||||
|
}
|
||||||
|
enableOrDisableClipboard();
|
||||||
|
|
||||||
canvMenu[(localStorage.getItem('svgedit_clipboard') ? 'en' : 'dis') + 'ableContextMenuItems']('#paste,#paste_in_place');
|
window.addEventListener('storage', function (e) {
|
||||||
|
if (e.key !== 'svgedit_clipboard') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
enableOrDisableClipboard();
|
||||||
});
|
});
|
||||||
|
|
||||||
window.addEventListener('beforeunload', function (e) {
|
window.addEventListener('beforeunload', function (e) {
|
||||||
|
|||||||
2
dist/index-es.min.js
vendored
2
dist/index-es.min.js
vendored
File diff suppressed because one or more lines are too long
2
dist/index-es.min.js.map
vendored
2
dist/index-es.min.js.map
vendored
File diff suppressed because one or more lines are too long
23
dist/index-umd.js
vendored
23
dist/index-umd.js
vendored
@@ -19838,6 +19838,11 @@
|
|||||||
$$9('#cmenu_canvas').enableContextMenuItems('#paste,#paste_in_place');
|
$$9('#cmenu_canvas').enableContextMenuItems('#paste,#paste_in_place');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {"in_place"|"point"|undefined} type
|
||||||
|
* @param {Number|undefined} x Expected if type is "point"
|
||||||
|
* @param {Number|undefined} y Expected if type is "point"
|
||||||
|
*/
|
||||||
this.pasteElements = function (type, x, y) {
|
this.pasteElements = function (type, x, y) {
|
||||||
var cb = JSON.parse(localStorage.getItem('svgedit_clipboard'));
|
var cb = JSON.parse(localStorage.getItem('svgedit_clipboard'));
|
||||||
var len = cb.length;
|
var len = cb.length;
|
||||||
@@ -30308,11 +30313,21 @@
|
|||||||
$$b('#cmenu_canvas li').disableContextMenu();
|
$$b('#cmenu_canvas li').disableContextMenu();
|
||||||
canvMenu.enableContextMenuItems('#delete,#cut,#copy');
|
canvMenu.enableContextMenuItems('#delete,#cut,#copy');
|
||||||
|
|
||||||
canvMenu[(localStorage.getItem('svgedit_clipboard') ? 'en' : 'dis') + 'ableContextMenuItems']('#paste,#paste_in_place');
|
function enableOrDisableClipboard() {
|
||||||
window.addEventListener('storage', function (e) {
|
var svgeditClipboard = void 0;
|
||||||
if (e.key !== 'svgedit_clipboard') return;
|
try {
|
||||||
|
svgeditClipboard = localStorage.getItem('svgedit_clipboard');
|
||||||
|
} catch (err) {}
|
||||||
|
canvMenu[(svgeditClipboard ? 'en' : 'dis') + 'ableContextMenuItems']('#paste,#paste_in_place');
|
||||||
|
}
|
||||||
|
enableOrDisableClipboard();
|
||||||
|
|
||||||
canvMenu[(localStorage.getItem('svgedit_clipboard') ? 'en' : 'dis') + 'ableContextMenuItems']('#paste,#paste_in_place');
|
window.addEventListener('storage', function (e) {
|
||||||
|
if (e.key !== 'svgedit_clipboard') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
enableOrDisableClipboard();
|
||||||
});
|
});
|
||||||
|
|
||||||
window.addEventListener('beforeunload', function (e) {
|
window.addEventListener('beforeunload', function (e) {
|
||||||
|
|||||||
2
dist/index-umd.min.js
vendored
2
dist/index-umd.min.js
vendored
File diff suppressed because one or more lines are too long
2
dist/index-umd.min.js.map
vendored
2
dist/index-umd.min.js.map
vendored
File diff suppressed because one or more lines are too long
@@ -62,13 +62,21 @@ $('#exportPNG').click(exportPNG);
|
|||||||
$('#exportPDF').click(exportPDF);
|
$('#exportPDF').click(exportPDF);
|
||||||
|
|
||||||
const iframe = $('<iframe src="svg-editor-es.html?extensions=ext-xdomain-messaging.js' +
|
const iframe = $('<iframe src="svg-editor-es.html?extensions=ext-xdomain-messaging.js' +
|
||||||
window.location.href.replace(/\?(.*)$/, '&$1') + // Append arguments to this file onto the iframe
|
(location.href.includes('?')
|
||||||
|
? location.href.replace(/\?(.*)$/, '&$1')
|
||||||
|
: '') + // Append arguments to this file onto the iframe
|
||||||
'" width="900px" height="600px" id="svgedit""></iframe>'
|
'" width="900px" height="600px" id="svgedit""></iframe>'
|
||||||
);
|
);
|
||||||
iframe[0].addEventListener('load', function () {
|
iframe[0].addEventListener('load', function () {
|
||||||
svgCanvas = new EmbeddedSVGEdit(frame);
|
svgCanvas = new EmbeddedSVGEdit(frame);
|
||||||
// Hide main button, as we will be controlling new, load, save, etc. from the host document
|
// Hide main button, as we will be controlling new, load, save, etc. from the host document
|
||||||
const doc = frame.contentDocument || frame.contentWindow.document;
|
let doc;
|
||||||
|
try {
|
||||||
|
doc = frame.contentDocument || frame.contentWindow.document;
|
||||||
|
} catch (err) {
|
||||||
|
console.log('Blocked from accessing document');
|
||||||
|
return;
|
||||||
|
}
|
||||||
const mainButton = doc.getElementById('main_button');
|
const mainButton = doc.getElementById('main_button');
|
||||||
mainButton.style.display = 'none';
|
mainButton.style.display = 'none';
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -297,7 +297,12 @@ class EmbeddedSVGEdit {
|
|||||||
* made compatile with all API functionality
|
* made compatile with all API functionality
|
||||||
*/
|
*/
|
||||||
// We accept and post strings for the sake of IE9 support
|
// We accept and post strings for the sake of IE9 support
|
||||||
if (window.location.origin === t.frame.contentWindow.location.origin) {
|
let sameOrigin = false;
|
||||||
|
try {
|
||||||
|
sameOrigin = window.location.origin === t.frame.contentWindow.location.origin;
|
||||||
|
} catch (err) {}
|
||||||
|
|
||||||
|
if (sameOrigin) {
|
||||||
// Although we do not really need this API if we are working same
|
// Although we do not really need this API if we are working same
|
||||||
// domain, it could allow us to write in a way that would work
|
// domain, it could allow us to write in a way that would work
|
||||||
// cross-domain as well, assuming we stick to the argument limitations
|
// cross-domain as well, assuming we stick to the argument limitations
|
||||||
|
|||||||
@@ -4951,15 +4951,21 @@ editor.init = function () {
|
|||||||
$('#cmenu_canvas li').disableContextMenu();
|
$('#cmenu_canvas li').disableContextMenu();
|
||||||
canvMenu.enableContextMenuItems('#delete,#cut,#copy');
|
canvMenu.enableContextMenuItems('#delete,#cut,#copy');
|
||||||
|
|
||||||
canvMenu[(localStorage.getItem('svgedit_clipboard') ? 'en' : 'dis') + 'ableContextMenuItems'](
|
function enableOrDisableClipboard () {
|
||||||
'#paste,#paste_in_place'
|
let svgeditClipboard;
|
||||||
);
|
try {
|
||||||
window.addEventListener('storage', function (e) {
|
svgeditClipboard = localStorage.getItem('svgedit_clipboard');
|
||||||
if (e.key !== 'svgedit_clipboard') return;
|
} catch (err) {}
|
||||||
|
canvMenu[(svgeditClipboard ? 'en' : 'dis') + 'ableContextMenuItems'](
|
||||||
canvMenu[(localStorage.getItem('svgedit_clipboard') ? 'en' : 'dis') + 'ableContextMenuItems'](
|
|
||||||
'#paste,#paste_in_place'
|
'#paste,#paste_in_place'
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
enableOrDisableClipboard();
|
||||||
|
|
||||||
|
window.addEventListener('storage', function (e) {
|
||||||
|
if (e.key !== 'svgedit_clipboard') { return; }
|
||||||
|
|
||||||
|
enableOrDisableClipboard();
|
||||||
});
|
});
|
||||||
|
|
||||||
window.addEventListener('beforeunload', function (e) {
|
window.addEventListener('beforeunload', function (e) {
|
||||||
|
|||||||
@@ -5270,6 +5270,11 @@ this.copySelectedElements = function () {
|
|||||||
$('#cmenu_canvas').enableContextMenuItems('#paste,#paste_in_place');
|
$('#cmenu_canvas').enableContextMenuItems('#paste,#paste_in_place');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {"in_place"|"point"|undefined} type
|
||||||
|
* @param {Number|undefined} x Expected if type is "point"
|
||||||
|
* @param {Number|undefined} y Expected if type is "point"
|
||||||
|
*/
|
||||||
this.pasteElements = function (type, x, y) {
|
this.pasteElements = function (type, x, y) {
|
||||||
let cb = JSON.parse(localStorage.getItem('svgedit_clipboard'));
|
let cb = JSON.parse(localStorage.getItem('svgedit_clipboard'));
|
||||||
let len = cb.length;
|
let len = cb.length;
|
||||||
|
|||||||
Reference in New Issue
Block a user