UNPKG

verstak

Version:
27 lines (26 loc) 900 B
import { ObservableObject, Ref, runAtomically, Isolation } from "reactronic"; export function triggeringModel(modelProps) { return runAtomically({ isolation: Isolation.disjoinFromOuterTransaction }, () => new TriggeringComposition(modelProps)); } class TriggeringComposition extends ObservableObject { constructor(composition) { super(); convertValuesToFieldsAndRefsToGetSet(this, composition); } } function convertValuesToFieldsAndRefsToGetSet(target, composition) { for (const key in composition) { const x = composition[key]; if (x instanceof Ref) { Object.defineProperty(target, key, { get() { return x.variable; }, set(v) { x.variable = v; return true; }, enumerable: true, }); } else { const t = target; t[key] = x; } } }