From 0b79020a9b1906859d6baeb09a5d6b964e293c82 Mon Sep 17 00:00:00 2001 From: agriyadev5 Date: Tue, 17 Aug 2021 13:19:12 +0530 Subject: [PATCH] #599 InternalError: too much recursion issue partially fixed --- src/editor/components/seSpinInput.js | 2 +- src/editor/panels/BottomPanel.js | 10 +++++++-- src/editor/panels/TopPanel.js | 31 ++++++++++++++++++++++------ src/svgcanvas/elem-get-set.js | 2 +- src/svgcanvas/selection.js | 6 ++++-- 5 files changed, 39 insertions(+), 12 deletions(-) diff --git a/src/editor/components/seSpinInput.js b/src/editor/components/seSpinInput.js index 50074fd2..eae0931f 100644 --- a/src/editor/components/seSpinInput.js +++ b/src/editor/components/seSpinInput.js @@ -183,7 +183,7 @@ export class SESpinInput extends HTMLElement { connectedCallback () { this.$input.addEventListener('onchange', (e) => { e.preventDefault(); - if(e.detail !== this.value && e.detail !== "") { + if(e.detail !== this.value && e.detail !== "" && !isNaN(e.detail) ) { const event = new CustomEvent('change', { detail: e.detail }); this.dispatchEvent(event); } diff --git a/src/editor/panels/BottomPanel.js b/src/editor/panels/BottomPanel.js index 4fd14c87..15947b87 100644 --- a/src/editor/panels/BottomPanel.js +++ b/src/editor/panels/BottomPanel.js @@ -134,8 +134,14 @@ class BottomPanel { * @type {module} */ handleOpacity (evt) { - const val = Number.parseInt(evt.currentTarget.value.split('%')[0]); - this.editor.svgCanvas.setOpacity(val / 100); + let val = evt.currentTarget.value; + if(evt.detail !== undefined) { + val = evt.detail; + } + val = Number.parseInt(val.split('%')[0]); + if(!isNaN(val)) { + this.editor.svgCanvas.setOpacity(val / 100); + } } /** * @type {module} diff --git a/src/editor/panels/TopPanel.js b/src/editor/panels/TopPanel.js index 351542ab..fd59e46d 100644 --- a/src/editor/panels/TopPanel.js +++ b/src/editor/panels/TopPanel.js @@ -497,23 +497,35 @@ class TopPanel { * @type {module} */ changeRectRadius(e) { - this.editor.svgCanvas.setRectRadius(e.target.value); + let val = e.target.value; + if(e.detail !== undefined) { + val = e.detail; + } + this.editor.svgCanvas.setRectRadius(val); } /** * @type {module} */ changeFontSize(e) { - this.editor.svgCanvas.setFontSize(e.target.value); + let val = e.target.value; + if(e.detail !== undefined) { + val = e.detail; + } + this.editor.svgCanvas.setFontSize(val); } /** * @type {module} */ changeRotationAngle(e) { - this.editor.svgCanvas.setRotationAngle(e.target.value); + let val = e.target.value; + if(e.detail !== undefined) { + val = e.detail; + } + this.editor.svgCanvas.setRotationAngle(val); // eslint-disable-next-line max-len - (Number.parseInt(e.target.value) === 0) ? $id("tool_reorient").classList.add("disabled") : $id("tool_reorient").classList.remove("disabled"); + (Number.parseInt(val) === 0) ? $id("tool_reorient").classList.add("disabled") : $id("tool_reorient").classList.remove("disabled"); } /** @@ -521,7 +533,11 @@ class TopPanel { * @returns {void} */ changeBlur(e) { - this.editor.svgCanvas.setBlur(e.target.value / 10, true); + let val = e.target.value; + if(e.detail !== undefined) { + val = e.detail; + } + this.editor.svgCanvas.setBlur(val / 10, true); } /** * @@ -570,7 +586,10 @@ class TopPanel { */ attrChanger(e) { const attr = e.target.getAttribute("data-attr"); - let val = (e.detail || e.target.value); + let val = e?.target?.value; + if(e.detail !== undefined) { + val = e.detail; + } const valid = isValidUnit(attr, val, this.selectedElement); if (!valid) { diff --git a/src/svgcanvas/elem-get-set.js b/src/svgcanvas/elem-get-set.js index 32c63c30..41dd0a21 100644 --- a/src/svgcanvas/elem-get-set.js +++ b/src/svgcanvas/elem-get-set.js @@ -828,7 +828,7 @@ export const setRectRadiusMethod = function (val) { const selected = selectedElements[0]; if (!isNullish(selected) && selected.tagName === 'rect') { const r = selected.getAttribute('rx'); - if (r !== String(val)) { + if (r !== String(val) && !isNullish(val)) { selected.setAttribute('rx', val); selected.setAttribute('ry', val); elemContext_.addCommandToHistory(new ChangeElementCommand(selected, { rx: r, ry: r }, 'Radius')); diff --git a/src/svgcanvas/selection.js b/src/svgcanvas/selection.js index 7435f48d..05318c46 100644 --- a/src/svgcanvas/selection.js +++ b/src/svgcanvas/selection.js @@ -385,8 +385,10 @@ export const setRotationAngle = function (val, preventUndo) { } else { elem.removeAttribute('transform'); } - svgCanvas.changeSelectedAttribute('transform', newTransform, selectedElements()); - svgCanvas.call('changed', selectedElements()); + if (oldTransform !== newTransform) { + svgCanvas.changeSelectedAttribute('transform', newTransform, selectedElements()); + svgCanvas.call('changed', selectedElements()); + } } // const pointGripContainer = getElem('pathpointgrip_container'); // if (elem.nodeName === 'path' && pointGripContainer) {