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 (
-
Regex Replace
+
+ {data?.label || "Regex Replace"} +
- Perform regex replacement on upstream string + Performs live regex-based find/replace on incoming string value.
- - - { - setPattern(e.target.value); - updateNodeData("pattern", e.target.value); - }} - placeholder="e.g. \\d+" - style={inputStyle} - /> - - - { - setReplacement(e.target.value); - updateNodeData("replacement", e.target.value); - }} - placeholder="e.g. $1" - style={inputStyle} - /> - - - { - setFlags(e.target.value); - updateNodeData("flags", e.target.value); - }} - placeholder="e.g. gi" - style={inputStyle} - /> - -
- +
+ Pattern: {data?.pattern || (not set)}
+ Flags: {data?.flags || "g"}
+ Enabled: {(data?.enabled ?? true) ? "Yes" : "No"}
- - +