@node-edit-utils/core 2.0.9 → 2.1.1
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/node-edit-utils.cjs.js +11 -10
- package/dist/node-edit-utils.esm.js +11 -10
- package/dist/node-edit-utils.umd.js +11 -10
- package/dist/node-edit-utils.umd.min.js +1 -1
- package/package.json +1 -1
- package/src/lib/node-tools/highlight/updateHighlightFrameVisibility.ts +2 -2
- package/src/lib/node-tools/text/nodeText.ts +4 -4
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Markup Canvas
|
|
3
3
|
* High-performance markup canvas with zoom and pan capabilities
|
|
4
|
-
* @version 2.
|
|
4
|
+
* @version 2.1.1
|
|
5
5
|
*/
|
|
6
6
|
'use strict';
|
|
7
7
|
|
|
@@ -323,18 +323,19 @@ const updateHighlightFrameVisibility = (node, nodeProvider) => {
|
|
|
323
323
|
const frame = getHighlightFrameElement(nodeProvider);
|
|
324
324
|
if (!frame)
|
|
325
325
|
return;
|
|
326
|
-
const
|
|
326
|
+
const className = node.className;
|
|
327
|
+
const hasHiddenClass = /\bhidden\b/.test(className) || node.classList.contains("select-none");
|
|
327
328
|
frame.style.display = hasHiddenClass ? "none" : "";
|
|
328
329
|
};
|
|
329
330
|
|
|
330
|
-
const
|
|
331
|
-
const
|
|
332
|
-
|
|
331
|
+
const disableCanvasKeyboard = () => {
|
|
332
|
+
const disable = getCanvasWindowValue(["keyboard", "disable"]);
|
|
333
|
+
disable?.();
|
|
333
334
|
};
|
|
334
335
|
|
|
335
|
-
const
|
|
336
|
-
const
|
|
337
|
-
|
|
336
|
+
const enableCanvasKeyboard = () => {
|
|
337
|
+
const enable = getCanvasWindowValue(["keyboard", "enable"]);
|
|
338
|
+
enable?.();
|
|
338
339
|
};
|
|
339
340
|
|
|
340
341
|
const insertLineBreak = () => {
|
|
@@ -430,7 +431,7 @@ const nodeText = () => {
|
|
|
430
431
|
if (editable) {
|
|
431
432
|
editableNode = node;
|
|
432
433
|
makeNodeEditable(node);
|
|
433
|
-
|
|
434
|
+
disableCanvasKeyboard();
|
|
434
435
|
cleanup = setupNodeListeners(node, nodeProvider, blurEditMode);
|
|
435
436
|
}
|
|
436
437
|
};
|
|
@@ -447,7 +448,7 @@ const nodeText = () => {
|
|
|
447
448
|
blurInProgress = true;
|
|
448
449
|
const nodeToCleanup = editableNode;
|
|
449
450
|
makeNodeNonEditable(nodeToCleanup);
|
|
450
|
-
|
|
451
|
+
enableCanvasKeyboard();
|
|
451
452
|
cleanup?.();
|
|
452
453
|
editableNode = null;
|
|
453
454
|
blurInProgress = false;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Markup Canvas
|
|
3
3
|
* High-performance markup canvas with zoom and pan capabilities
|
|
4
|
-
* @version 2.
|
|
4
|
+
* @version 2.1.1
|
|
5
5
|
*/
|
|
6
6
|
// biome-ignore lint/suspicious/noExplicitAny: generic constraint requires flexibility
|
|
7
7
|
function withRAFThrottle(func) {
|
|
@@ -321,18 +321,19 @@ const updateHighlightFrameVisibility = (node, nodeProvider) => {
|
|
|
321
321
|
const frame = getHighlightFrameElement(nodeProvider);
|
|
322
322
|
if (!frame)
|
|
323
323
|
return;
|
|
324
|
-
const
|
|
324
|
+
const className = node.className;
|
|
325
|
+
const hasHiddenClass = /\bhidden\b/.test(className) || node.classList.contains("select-none");
|
|
325
326
|
frame.style.display = hasHiddenClass ? "none" : "";
|
|
326
327
|
};
|
|
327
328
|
|
|
328
|
-
const
|
|
329
|
-
const
|
|
330
|
-
|
|
329
|
+
const disableCanvasKeyboard = () => {
|
|
330
|
+
const disable = getCanvasWindowValue(["keyboard", "disable"]);
|
|
331
|
+
disable?.();
|
|
331
332
|
};
|
|
332
333
|
|
|
333
|
-
const
|
|
334
|
-
const
|
|
335
|
-
|
|
334
|
+
const enableCanvasKeyboard = () => {
|
|
335
|
+
const enable = getCanvasWindowValue(["keyboard", "enable"]);
|
|
336
|
+
enable?.();
|
|
336
337
|
};
|
|
337
338
|
|
|
338
339
|
const insertLineBreak = () => {
|
|
@@ -428,7 +429,7 @@ const nodeText = () => {
|
|
|
428
429
|
if (editable) {
|
|
429
430
|
editableNode = node;
|
|
430
431
|
makeNodeEditable(node);
|
|
431
|
-
|
|
432
|
+
disableCanvasKeyboard();
|
|
432
433
|
cleanup = setupNodeListeners(node, nodeProvider, blurEditMode);
|
|
433
434
|
}
|
|
434
435
|
};
|
|
@@ -445,7 +446,7 @@ const nodeText = () => {
|
|
|
445
446
|
blurInProgress = true;
|
|
446
447
|
const nodeToCleanup = editableNode;
|
|
447
448
|
makeNodeNonEditable(nodeToCleanup);
|
|
448
|
-
|
|
449
|
+
enableCanvasKeyboard();
|
|
449
450
|
cleanup?.();
|
|
450
451
|
editableNode = null;
|
|
451
452
|
blurInProgress = false;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Markup Canvas
|
|
3
3
|
* High-performance markup canvas with zoom and pan capabilities
|
|
4
|
-
* @version 2.
|
|
4
|
+
* @version 2.1.1
|
|
5
5
|
*/
|
|
6
6
|
(function (global, factory) {
|
|
7
7
|
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
|
|
@@ -327,18 +327,19 @@
|
|
|
327
327
|
const frame = getHighlightFrameElement(nodeProvider);
|
|
328
328
|
if (!frame)
|
|
329
329
|
return;
|
|
330
|
-
const
|
|
330
|
+
const className = node.className;
|
|
331
|
+
const hasHiddenClass = /\bhidden\b/.test(className) || node.classList.contains("select-none");
|
|
331
332
|
frame.style.display = hasHiddenClass ? "none" : "";
|
|
332
333
|
};
|
|
333
334
|
|
|
334
|
-
const
|
|
335
|
-
const
|
|
336
|
-
|
|
335
|
+
const disableCanvasKeyboard = () => {
|
|
336
|
+
const disable = getCanvasWindowValue(["keyboard", "disable"]);
|
|
337
|
+
disable?.();
|
|
337
338
|
};
|
|
338
339
|
|
|
339
|
-
const
|
|
340
|
-
const
|
|
341
|
-
|
|
340
|
+
const enableCanvasKeyboard = () => {
|
|
341
|
+
const enable = getCanvasWindowValue(["keyboard", "enable"]);
|
|
342
|
+
enable?.();
|
|
342
343
|
};
|
|
343
344
|
|
|
344
345
|
const insertLineBreak = () => {
|
|
@@ -434,7 +435,7 @@
|
|
|
434
435
|
if (editable) {
|
|
435
436
|
editableNode = node;
|
|
436
437
|
makeNodeEditable(node);
|
|
437
|
-
|
|
438
|
+
disableCanvasKeyboard();
|
|
438
439
|
cleanup = setupNodeListeners(node, nodeProvider, blurEditMode);
|
|
439
440
|
}
|
|
440
441
|
};
|
|
@@ -451,7 +452,7 @@
|
|
|
451
452
|
blurInProgress = true;
|
|
452
453
|
const nodeToCleanup = editableNode;
|
|
453
454
|
makeNodeNonEditable(nodeToCleanup);
|
|
454
|
-
|
|
455
|
+
enableCanvasKeyboard();
|
|
455
456
|
cleanup?.();
|
|
456
457
|
editableNode = null;
|
|
457
458
|
blurInProgress = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).MarkupCanvas={})}(this,function(e){"use strict";function t(e){let t=null,n=null;const o=(...o)=>{n=o,null===t&&(t=requestAnimationFrame(()=>{n&&e(...n),t=null,n=null}))};return o.cleanup=()=>{null!==t&&(cancelAnimationFrame(t),t=null,n=null)},o}const n=e=>{const t=window.canvas;return e.reduce((e,t)=>e?.[t],t)};const o=e=>e?.classList.contains("select-none")??!1;function r(e){return e.querySelector(".highlight-frame")}const s=e=>{if(!e)return;const t=r(e);t&&t.remove()},a=["path","rect","circle","ellipse","polygon","line","polyline","text","text-noci"];let i=[],l=0;const d=(e,t)=>{let n=null;const r=e.clientX,s=e.clientY,d=e.metaKey||e.ctrlKey,c=((e,t)=>{const n=document.elementsFromPoint(e,t);return Array.from(n).reduce((e,t)=>e.found?e:"node-provider"===t.getAttribute("data-role")?(e.found=!0,e):(e.elements.push(t),e),{elements:[],found:!1}).elements})(r,s).filter(e=>!a.includes(e.tagName.toLowerCase()));if(t&&c.includes(t))return o(t)?null:t;if(d)return i=[],n=c[0],o(n)?null:n;var u,m;m=c,(u=i).length===m.length&&u.every((e,t)=>e===m[t])?l<=c.length&&l++:l=0;return n=c[c.length-1-l],i=c,o(n)?null:n},c=(e,t,n,r)=>{const a=e=>{((e,t)=>{if("application"===e.data.source&&"selectedNodeChanged"===e.data.action){const n=e.data.data,r=document.querySelector(`[data-node-id="${n}"]`);if(o(r))return void t?.(null);r&&t?.(r)}})(e,t)},i=n=>{((e,t,n,o)=>{if(e.preventDefault(),e.stopPropagation(),t&&!t.contains(e.target))return s(t),void o(null);o(d(e,n))})(n,e,r(),t)},l=e=>{console.log("Esacpe Handler",e),"Escape"===e.key&&(e.preventDefault(),e.stopPropagation(),n?.())};return window.addEventListener("message",a),document.addEventListener("click",i),document.addEventListener("keydown",l),()=>{window.removeEventListener("message",a),document.removeEventListener("click",i),document.removeEventListener("keydown",l)}};function u(e,t){const o=e.getBoundingClientRect(),r=t.getBoundingClientRect(),s=o.top-r.top,a=o.left-r.left,i=n(["zoom","current"])??1;return{top:parseFloat((s/i).toFixed(5)),left:parseFloat((a/i).toFixed(5)),width:Math.max(4,parseFloat((o.width/i).toFixed(5))),height:parseFloat((o.height/i).toFixed(5))}}const m=(e,t)=>{const n=document.createElement("div");n.className="node-tools",t.appendChild(n),((e,t)=>{const n=document.createElement("div");n.className="tag-label",n.textContent=e.tagName.toLowerCase(),t.appendChild(n)})(e,n)},p=(e,t)=>{if(!e)return;const o=r(t);o&&o.remove();const s=((e,t)=>{const{top:o,left:r,width:s,height:a}=u(e,t),i=n(["zoom","current"])??1;document.body.style.setProperty("--zoom",i.toString()),document.body.style.setProperty("--stroke-width",(2/i).toFixed(3));const l=document.createElement("div");l.classList.add("highlight-frame"),l.style.setProperty("--frame-top",`${o}px`),l.style.setProperty("--frame-left",`${r}px`),l.style.setProperty("--frame-width",`${s}px`),l.style.setProperty("--frame-height",`${a}px`);const d=document.createElementNS("http://www.w3.org/2000/svg","svg");d.classList.add("highlight-frame-svg");const c=document.createElementNS("http://www.w3.org/2000/svg","rect");return c.setAttribute("x","0"),c.setAttribute("y","0"),c.setAttribute("width","100%"),c.setAttribute("height","100%"),c.classList.add("highlight-frame-rect"),d.appendChild(c),l.appendChild(d),l})(e,t);"true"===e.contentEditable&&s.classList.add("is-editable"),m(e,s),t.appendChild(s)},v=(e,t)=>{const o=r(t),s=n(["zoom","current"])??1;if(!o)return;s>=.3?t.style.setProperty("--tool-opacity","1"):t.style.setProperty("--tool-opacity","0");const{top:a,left:i,width:l,height:d}=u(e,t);o.style.setProperty("--frame-top",`${a}px`),o.style.setProperty("--frame-left",`${i}px`),o.style.setProperty("--frame-width",`${l}px`),o.style.setProperty("--frame-height",`${d}px`)},h=(e,t)=>{const n=r(t);if(!n)return;const o=e.
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).MarkupCanvas={})}(this,function(e){"use strict";function t(e){let t=null,n=null;const o=(...o)=>{n=o,null===t&&(t=requestAnimationFrame(()=>{n&&e(...n),t=null,n=null}))};return o.cleanup=()=>{null!==t&&(cancelAnimationFrame(t),t=null,n=null)},o}const n=e=>{const t=window.canvas;return e.reduce((e,t)=>e?.[t],t)};const o=e=>e?.classList.contains("select-none")??!1;function r(e){return e.querySelector(".highlight-frame")}const s=e=>{if(!e)return;const t=r(e);t&&t.remove()},a=["path","rect","circle","ellipse","polygon","line","polyline","text","text-noci"];let i=[],l=0;const d=(e,t)=>{let n=null;const r=e.clientX,s=e.clientY,d=e.metaKey||e.ctrlKey,c=((e,t)=>{const n=document.elementsFromPoint(e,t);return Array.from(n).reduce((e,t)=>e.found?e:"node-provider"===t.getAttribute("data-role")?(e.found=!0,e):(e.elements.push(t),e),{elements:[],found:!1}).elements})(r,s).filter(e=>!a.includes(e.tagName.toLowerCase()));if(t&&c.includes(t))return o(t)?null:t;if(d)return i=[],n=c[0],o(n)?null:n;var u,m;m=c,(u=i).length===m.length&&u.every((e,t)=>e===m[t])?l<=c.length&&l++:l=0;return n=c[c.length-1-l],i=c,o(n)?null:n},c=(e,t,n,r)=>{const a=e=>{((e,t)=>{if("application"===e.data.source&&"selectedNodeChanged"===e.data.action){const n=e.data.data,r=document.querySelector(`[data-node-id="${n}"]`);if(o(r))return void t?.(null);r&&t?.(r)}})(e,t)},i=n=>{((e,t,n,o)=>{if(e.preventDefault(),e.stopPropagation(),t&&!t.contains(e.target))return s(t),void o(null);o(d(e,n))})(n,e,r(),t)},l=e=>{console.log("Esacpe Handler",e),"Escape"===e.key&&(e.preventDefault(),e.stopPropagation(),n?.())};return window.addEventListener("message",a),document.addEventListener("click",i),document.addEventListener("keydown",l),()=>{window.removeEventListener("message",a),document.removeEventListener("click",i),document.removeEventListener("keydown",l)}};function u(e,t){const o=e.getBoundingClientRect(),r=t.getBoundingClientRect(),s=o.top-r.top,a=o.left-r.left,i=n(["zoom","current"])??1;return{top:parseFloat((s/i).toFixed(5)),left:parseFloat((a/i).toFixed(5)),width:Math.max(4,parseFloat((o.width/i).toFixed(5))),height:parseFloat((o.height/i).toFixed(5))}}const m=(e,t)=>{const n=document.createElement("div");n.className="node-tools",t.appendChild(n),((e,t)=>{const n=document.createElement("div");n.className="tag-label",n.textContent=e.tagName.toLowerCase(),t.appendChild(n)})(e,n)},p=(e,t)=>{if(!e)return;const o=r(t);o&&o.remove();const s=((e,t)=>{const{top:o,left:r,width:s,height:a}=u(e,t),i=n(["zoom","current"])??1;document.body.style.setProperty("--zoom",i.toString()),document.body.style.setProperty("--stroke-width",(2/i).toFixed(3));const l=document.createElement("div");l.classList.add("highlight-frame"),l.style.setProperty("--frame-top",`${o}px`),l.style.setProperty("--frame-left",`${r}px`),l.style.setProperty("--frame-width",`${s}px`),l.style.setProperty("--frame-height",`${a}px`);const d=document.createElementNS("http://www.w3.org/2000/svg","svg");d.classList.add("highlight-frame-svg");const c=document.createElementNS("http://www.w3.org/2000/svg","rect");return c.setAttribute("x","0"),c.setAttribute("y","0"),c.setAttribute("width","100%"),c.setAttribute("height","100%"),c.classList.add("highlight-frame-rect"),d.appendChild(c),l.appendChild(d),l})(e,t);"true"===e.contentEditable&&s.classList.add("is-editable"),m(e,s),t.appendChild(s)},v=(e,t)=>{const o=r(t),s=n(["zoom","current"])??1;if(!o)return;s>=.3?t.style.setProperty("--tool-opacity","1"):t.style.setProperty("--tool-opacity","0");const{top:a,left:i,width:l,height:d}=u(e,t);o.style.setProperty("--frame-top",`${a}px`),o.style.setProperty("--frame-left",`${i}px`),o.style.setProperty("--frame-width",`${l}px`),o.style.setProperty("--frame-height",`${d}px`)},h=(e,t)=>{const n=r(t);if(!n)return;const o=e.className,s=/\bhidden\b/.test(o)||e.classList.contains("select-none");n.style.display=s?"none":""},f=e=>{const t=e=>{"Enter"===e.key&&(e.preventDefault(),e.stopPropagation(),(()=>{const e=window.getSelection();if(e&&e.rangeCount>0){const t=e.getRangeAt(0);t.deleteContents();const n=document.createElement("br");t.insertNode(n),t.setStartAfter(n),t.setEndAfter(n),e.removeAllRanges(),e.addRange(t)}})())};return e.addEventListener("keydown",t),()=>{e.removeEventListener("keydown",t)}},y=(e,t)=>{const n=((e,t)=>{const n=new MutationObserver(e=>{t(e)});return n.observe(e,{subtree:!0,childList:!0,characterData:!0}),n})(e,()=>{v(e,t)});return()=>n.disconnect()},g=()=>{let e=null,t=!1,o=null;const r=()=>{if(t||!e)return;t=!0;var r;(r=e).contentEditable="false",r.classList.remove("is-editable"),r.style.outline="none",(()=>{const e=n(["keyboard","enable"]);e?.()})(),o?.(),e=null,t=!1};return{enableEditMode:(t,s)=>{if(e===t)return;e&&e!==t&&r();const a=(e=>Array.from(e.childNodes).some(e=>e.nodeType===Node.TEXT_NODE&&e.textContent?.trim()))(t);a&&(e=t,(e=>{e.contentEditable="true",e.classList.add("is-editable"),e.style.outline="none"})(t),(()=>{const e=n(["keyboard","disable"]);e?.()})(),o=((e,t,n)=>{if(!t)return()=>{};e.addEventListener("blur",n);const o=f(e),r=y(e,t);return()=>{e.removeEventListener("blur",n),o(),r?.()}})(t,s,r))},blurEditMode:r,getEditableNode:()=>e,isEditing:()=>null!==e}},b=320,w=1680,E=[{name:"Mobile",rawValue:390,value:"320px"},{name:"Tablet Portrait",rawValue:768,value:"768px"},{name:"Tablet Landscape",rawValue:1024,value:"1024px"},{name:"Notebook",rawValue:1280,value:"1280px"},{name:"Desktop",rawValue:1680,value:"1680px"}],x=(e,t,n)=>{const o=parseFloat(document.body.dataset.zoom||"1"),r=((e,t)=>{const n=e+Math.round(t);return Math.max(b,Math.min(w,n))})(n,(e.clientX-t)/o);return r},L=(e,t)=>{e.style.setProperty("--container-width",`${t}px`),((e,t)=>{e.querySelectorAll(".resize-preset-button").forEach((e,n)=>{n<E.length&&(E[n].rawValue===t?e.classList.add("is-active"):e.classList.remove("is-active"))})})(e,t)};e.createCanvasObserver=function(){const e=document.querySelector(".transform-layer");if(!e)return{disconnect:()=>{}};const o=t(()=>{(()=>{const e=n(["zoom","current"]);document.body.style.setProperty("--zoom",e.toFixed(5)),document.body.style.setProperty("--stroke-width",(2/e).toFixed(3)),document.body.dataset.zoom=e.toFixed(5),document.body.dataset.strokeWidth=(2/e).toFixed(3)})()}),r=new MutationObserver(()=>{o()});return r.observe(e,{attributes:!0,attributeOldValue:!0,subtree:!0,childList:!0}),{disconnect:function(){o.cleanup(),r.disconnect()}}},e.createNodeTools=e=>{const n=e;let o=null,r=null,a=null;const i=g(),l=t(v),d=e=>{if(a!==e){if(a=e,i.isEditing()){const t=i.getEditableNode();t&&t!==e&&i.blurEditMode()}var t,s;o?.disconnect(),r?.disconnect(),e&&n&&(i.enableEditMode(e,n),o=((e,t)=>{const n=new ResizeObserver(e=>{t(e)});return n.observe(e),n})(n,()=>{l(e,n)}),r=new MutationObserver(()=>{l(e,n),h(e,n)}),r.observe(e,{attributes:!0,attributeFilter:["class"]})),t="selectedNodeChanged",s=e?.getAttribute("data-node-id")??null,window.parent.postMessage({source:"node-edit-utils",action:t,data:s,timestamp:Date.now()},"*"),p(e,n),e&&n&&h(e,n)}},u=c(n,d,()=>{i.isEditing()&&i.blurEditMode(),a&&n&&(s(n),a=null,o?.disconnect(),r?.disconnect())},i.getEditableNode),m={selectNode:d,getSelectedNode:()=>a,refreshHighlightFrame:()=>{l(a,n)},clearSelectedNode:()=>{s(n),a=null,o?.disconnect(),r?.disconnect()},getEditableNode:()=>i.getEditableNode(),cleanup:()=>{u(),o?.disconnect(),r?.disconnect(),i.blurEditMode(),l.cleanup()}};var f,y;return f="nodeTools",y=m,"undefined"!=typeof window&&(window[f]=y),m},e.createViewport=e=>{const n=document.querySelector(".canvas-container"),o=e.querySelector(".resize-handle");o&&o.remove();const r=(e=>{const t=document.createElement("div");return t.className="resize-handle",e.appendChild(t),t})(e);e.style.setProperty("--container-width","400px"),((e,t,n)=>{const o=document.createElement("div");o.className="resize-presets",E.forEach(e=>{const r=document.createElement("button");r.textContent=e.name,r.className="resize-preset-button",r.addEventListener("click",()=>{n(t,e.rawValue)}),o.appendChild(r)}),e.appendChild(o)})(r,e,L);let s=!1,a=0,i=0;const l=t(t=>{if(!s)return;n&&(n.style.cursor="ew-resize");const o=x(t,a,i);L(e,o)}),d=((e,t,n,o,r)=>(e.addEventListener("mousedown",t),document.addEventListener("mousemove",n),document.addEventListener("mouseup",o),window.addEventListener("blur",r),()=>{e.removeEventListener("mousedown",t),document.removeEventListener("mousemove",n),document.removeEventListener("mouseup",o),window.removeEventListener("blur",r)}))(r,t=>{t.preventDefault(),t.stopPropagation(),s=!0,a=t.clientX,i=e.offsetWidth},l,e=>{e.preventDefault(),e.stopPropagation(),n&&(n.style.cursor="default"),s=!1},()=>{s=!1});return{setWidth:t=>{L(e,t)},cleanup:()=>{s=!1,l?.cleanup(),d(),r.remove()}}}});
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@ export const updateHighlightFrameVisibility = (node: HTMLElement, nodeProvider:
|
|
|
4
4
|
const frame = getHighlightFrameElement(nodeProvider);
|
|
5
5
|
if (!frame) return;
|
|
6
6
|
|
|
7
|
-
const
|
|
7
|
+
const className = node.className;
|
|
8
|
+
const hasHiddenClass = /\bhidden\b/.test(className) || node.classList.contains("select-none");
|
|
8
9
|
frame.style.display = hasHiddenClass ? "none" : "";
|
|
9
10
|
};
|
|
10
|
-
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { disableCanvasKeyboard } from "../../canvas/disableCanvasKeyboard";
|
|
2
|
+
import { enableCanvasKeyboard } from "../../canvas/enableCanvasKeyboard";
|
|
3
3
|
import { setupNodeListeners } from "./events/setupNodeListeners";
|
|
4
4
|
import { hasTextContent } from "./helpers/hasTextContent";
|
|
5
5
|
import { makeNodeEditable } from "./helpers/makeNodeEditable";
|
|
@@ -26,7 +26,7 @@ export const nodeText = (): NodeText => {
|
|
|
26
26
|
editableNode = node;
|
|
27
27
|
|
|
28
28
|
makeNodeEditable(node);
|
|
29
|
-
|
|
29
|
+
disableCanvasKeyboard();
|
|
30
30
|
|
|
31
31
|
cleanup = setupNodeListeners(node, nodeProvider, blurEditMode);
|
|
32
32
|
}
|
|
@@ -50,7 +50,7 @@ export const nodeText = (): NodeText => {
|
|
|
50
50
|
const nodeToCleanup = editableNode;
|
|
51
51
|
|
|
52
52
|
makeNodeNonEditable(nodeToCleanup);
|
|
53
|
-
|
|
53
|
+
enableCanvasKeyboard();
|
|
54
54
|
cleanup?.();
|
|
55
55
|
|
|
56
56
|
editableNode = null;
|