import { parseState, serializeState } from './state.js'; export function createRefreshTracker(readSignature, refresh) { let previous = null; let timer = null; function check() { const next = String(readSignature() ?? ''); if (next === previous) return false; previous = next; refresh(); return true; } return { check, start(interval = 250) { if (timer !== null) return; check(); timer = setInterval(check, interval); }, stop() { if (timer === null) return; clearInterval(timer); timer = null; }, }; } export function createStateController(widget, node) { let state = parseState(widget?.value); function getState() { return state; } function setState(next) { state = next; return state; } function refresh() { state = parseState(widget?.value); return state; } function persist() { const oldValue = widget.value; const value = serializeState(state); widget.value = value; widget.callback?.(value); node?.onWidgetChanged?.(widget.name, value, oldValue, widget); node?.graph?.setDirtyCanvas?.(true, true); return value; } return { getState, setState, refresh, persist }; }