import { RefField } from "./RefField"; import { OnUpdate, Parent, Copy, ToScriptString, ToString } from "./FieldSymbols"; import { ScriptingGlobals } from "../client/util/ScriptingGlobals"; export abstract class ObjectField { public [OnUpdate]?: (diff?: any) => void; public [Parent]?: RefField | ObjectField; abstract [Copy](): ObjectField; abstract [ToScriptString](): string; abstract [ToString](): string; } export namespace ObjectField { export function MakeCopy(field: T) { return field?.[Copy](); } } ScriptingGlobals.add(ObjectField);