diff --git a/Data/Server/WebUI/src/nodes/Data Analysis & Manipulation/Node_Regex_Replace.jsx b/Data/Server/WebUI/src/nodes/Data Analysis & Manipulation/Node_Regex_Replace.jsx index 8e7dd9b..904d519 100644 --- a/Data/Server/WebUI/src/nodes/Data Analysis & Manipulation/Node_Regex_Replace.jsx +++ b/Data/Server/WebUI/src/nodes/Data Analysis & Manipulation/Node_Regex_Replace.jsx @@ -2,30 +2,20 @@ import React, { useEffect, useRef, useState } from "react"; import { Handle, Position, useReactFlow, useStore } from "reactflow"; +// Shared memory bus setup if (!window.BorealisValueBus) window.BorealisValueBus = {}; if (!window.BorealisUpdateRate) window.BorealisUpdateRate = 100; +// -- Modern Regex Replace Node -- // const RegexReplaceNode = ({ id, data }) => { const edges = useStore((state) => state.edges); const { setNodes } = useReactFlow(); - const [pattern, setPattern] = useState(data?.pattern || ""); - const [replacement, setReplacement] = useState(data?.replacement || ""); - const [flags, setFlags] = useState(data?.flags || "g"); - const [enabled, setEnabled] = useState(data?.enabled ?? true); + // Maintain output live value const [result, setResult] = useState(""); const [original, setOriginal] = useState(""); - const valueRef = useRef(""); - const updateNodeData = (key, val) => { - setNodes(nds => - nds.map(n => - n.id === id ? { ...n, data: { ...n.data, [key]: val } } : n - ) - ); - }; - useEffect(() => { let intervalId = null; let currentRate = window.BorealisUpdateRate; @@ -39,11 +29,11 @@ const RegexReplaceNode = ({ id, data }) => { setOriginal(inputValue); let newVal = inputValue; - try { - if (enabled && pattern) { - const regex = new RegExp(pattern, flags); - let safeReplacement = replacement.trim(); + if ((data?.enabled ?? true) && data?.pattern) { + const regex = new RegExp(data.pattern, data.flags || "g"); + let safeReplacement = (data.replacement ?? "").trim(); + // Remove quotes if user adds them if ( safeReplacement.startsWith('"') && safeReplacement.endsWith('"') @@ -65,6 +55,7 @@ const RegexReplaceNode = ({ id, data }) => { intervalId = setInterval(runNodeLogic, currentRate); + // Monitor update rate changes const monitor = setInterval(() => { const newRate = window.BorealisUpdateRate; if (newRate !== currentRate) { @@ -78,84 +69,57 @@ const RegexReplaceNode = ({ id, data }) => { clearInterval(intervalId); clearInterval(monitor); }; - }, [id, edges, pattern, replacement, flags, enabled]); + }, [id, edges, data?.pattern, data?.replacement, data?.flags, data?.enabled]); return (