From 558ea9d45eece7c4b8dd3abad51dc433693ffcf2 Mon Sep 17 00:00:00 2001 From: Gerrit Riessen Date: Wed, 11 Jun 2025 10:17:18 +0200 Subject: [PATCH 1/5] Step 2 - using b64 data for mermaid content see https://discourse.nodered.org/t/node-red-mermaid-rendering-is-off-by-one/97546 for details --- .../@node-red/editor-client/src/js/ui/editors/mermaid.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/editors/mermaid.js b/packages/node_modules/@node-red/editor-client/src/js/ui/editors/mermaid.js index b4ae5d52d..6de2a1d1e 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/editors/mermaid.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/editors/mermaid.js @@ -44,7 +44,7 @@ RED.editor.mermaid = (function () { nodes.forEach(async node => { if (!node.getAttribute('mermaid-processed')) { - const mermaidContent = node.innerText + const mermaidContent = atob($(node).data('c64')) node.setAttribute('mermaid-processed', true) try { const { svg } = await mermaid.render('mermaid-render-'+Date.now()+'-'+(diagramIds++), mermaidContent); From 559be0b52b37eeb779a590cda4757dc692568ca1 Mon Sep 17 00:00:00 2001 From: Gerrit Riessen Date: Wed, 11 Jun 2025 10:20:50 +0200 Subject: [PATCH 2/5] Step 1 : include base64 code in pre for mermaid diagrams and also remove the "word-break: break-all" for mermaid diagrams. See https://discourse.nodered.org/t/node-red-mermaid-rendering-is-off-by-one/97546 for details --- .../node_modules/@node-red/editor-client/src/js/ui/utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/utils.js b/packages/node_modules/@node-red/editor-client/src/js/ui/utils.js index 4529a6923..a25259b52 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/utils.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/utils.js @@ -101,7 +101,7 @@ RED.utils = (function() { renderer.code = function (code, lang) { if(lang === "mermaid") { - return `
${code}
`; + return `
${code}
`; } else { return "
" +code +"
"; } From 07d6c4e582f2b6e75478a8c98fa4daf4d1ddaada Mon Sep 17 00:00:00 2001 From: GogoVega <92022724+GogoVega@users.noreply.github.com> Date: Wed, 11 Jun 2025 17:25:14 +0200 Subject: [PATCH 3/5] Prevent the editor to open the same dialog multiple times --- .../@node-red/editor-client/src/js/ui/editor.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js b/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js index 1de42a69a..648c55d71 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js @@ -1017,6 +1017,7 @@ RED.editor = (function() { function showEditDialog(node, defaultTab) { if (buildingEditDialog) { return } + if (editStack.includes(node)) { return } buildingEditDialog = true; if (node.z && RED.workspaces.isLocked(node.z)) { return } var editing_node = node; @@ -1334,6 +1335,7 @@ RED.editor = (function() { var editing_config_node = RED.nodes.node(id); var activeEditPanes = []; + if (editStack.includes(editing_config_node)) { return } if (editing_config_node && editing_config_node.z && RED.workspaces.isLocked(editing_config_node.z)) { return } var configNodeScope = ""; // default to global @@ -1777,6 +1779,7 @@ RED.editor = (function() { function showEditSubflowDialog(subflow, defaultTab) { if (buildingEditDialog) { return } + if (editStack.includes(subflow)) { return } buildingEditDialog = true; editStack.push(subflow); @@ -1993,6 +1996,7 @@ RED.editor = (function() { function showEditGroupDialog(group, defaultTab) { if (buildingEditDialog) { return } + if (editStack.includes(group)) { return } buildingEditDialog = true; if (group.z && RED.workspaces.isLocked(group.z)) { return } var editing_node = group; @@ -2107,6 +2111,7 @@ RED.editor = (function() { function showEditFlowDialog(workspace, defaultTab) { if (buildingEditDialog) { return } + if (editStack.includes(workspace)) { return } buildingEditDialog = true; var activeEditPanes = []; RED.view.state(RED.state.EDITING); @@ -2258,6 +2263,7 @@ RED.editor = (function() { function showTypeEditor(type, options) { if (customEditTypes.hasOwnProperty(type)) { + if (editStack.find((item) => Object.keys(item).length === 1 && item.type === type)) { return } if (editStack.length > 0) { options.parent = editStack[editStack.length-1].id; } From 630d057c4ca24139f3276b1147e2074e1edf969f Mon Sep 17 00:00:00 2001 From: Kazuhito Yokoi Date: Sun, 15 Jun 2025 14:02:58 +0900 Subject: [PATCH 4/5] Update Japanese translations of mqtt-in node for 4.0.9 --- .../@node-red/nodes/locales/ja/network/10-mqtt.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/node_modules/@node-red/nodes/locales/ja/network/10-mqtt.html b/packages/node_modules/@node-red/nodes/locales/ja/network/10-mqtt.html index 435829e1e..bd6fd7839 100644 --- a/packages/node_modules/@node-red/nodes/locales/ja/network/10-mqtt.html +++ b/packages/node_modules/@node-red/nodes/locales/ja/network/10-mqtt.html @@ -47,7 +47,7 @@

これらは、動的購読が設定されている場合のみ適用されます。

action 文字列
-
本ノードが行う動作の名前。利用可能な動作は"connect""disconnect""subscribe""unsubscribe"です。
+
本ノードが行う動作の名前。利用可能な動作は"connect""disconnect""getSubscriptions""subscribe""unsubscribe"です。
topic 文字列|オブジェクト|配列
"subscribe""unsubscribe"の動作に対して、本プロパティはトピックを提供します。次のいずれかを設定できます:
  • トピックフィルターを含む文字列
  • @@ -105,7 +105,7 @@

    入力

    action 文字列
    -
    本ノードが行う動作の名前。利用可能な動作は"connect""disconnect""subscribe""unsubscribe"です。
    +
    本ノードが行う動作の名前。利用可能な動作は"connect""disconnect"です。
    broker broker
    "connect"の動作に対して、本プロパティは次の様な個々のブローカ設定を上書きします:
    • broker
    • From a25595765f274e5b1821e4562124e849209c6d9c Mon Sep 17 00:00:00 2001 From: GogoVega <92022724+GogoVega@users.noreply.github.com> Date: Thu, 19 Jun 2025 16:41:34 +0200 Subject: [PATCH 5/5] Do not check the type editors --- .../node_modules/@node-red/editor-client/src/js/ui/editor.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js b/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js index 648c55d71..70963e389 100644 --- a/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js +++ b/packages/node_modules/@node-red/editor-client/src/js/ui/editor.js @@ -2263,7 +2263,6 @@ RED.editor = (function() { function showTypeEditor(type, options) { if (customEditTypes.hasOwnProperty(type)) { - if (editStack.find((item) => Object.keys(item).length === 1 && item.type === type)) { return } if (editStack.length > 0) { options.parent = editStack[editStack.length-1].id; }