import { BaseWidget } from "./BaseWidget.js"; import { ButtonWidget } from "./ButtonWidget.js"; import { BooleanWidget } from "./BooleanWidget.js"; import { SliderWidget } from "./SliderWidget.js"; import { KnobWidget } from "./KnobWidget.js"; import { ComboWidget } from "./ComboWidget.js"; import { NumberWidget } from "./NumberWidget.js"; import { TextWidget } from "./TextWidget.js"; import { LegacyWidget } from "./LegacyWidget.js"; export function toClass(cls, ...args) { return args[0] instanceof cls ? args[0] : new cls(...args); } export function toConcreteWidget(widget, node, wrapLegacyWidgets = true) { if (widget instanceof BaseWidget) return widget const narrowedWidget = widget switch (narrowedWidget.type) { case "button": return toClass(ButtonWidget, narrowedWidget, node) case "toggle": return toClass(BooleanWidget, narrowedWidget, node) case "slider": return toClass(SliderWidget, narrowedWidget, node) case "knob": return toClass(KnobWidget, narrowedWidget, node) case "combo": return toClass(ComboWidget, narrowedWidget, node) case "number": return toClass(NumberWidget, narrowedWidget, node) case "string": return toClass(TextWidget, narrowedWidget, node) case "text": return toClass(TextWidget, narrowedWidget, node) default: { if (wrapLegacyWidgets) return toClass(LegacyWidget, widget, node) } } }