import { Deserializable } from '../client/util/SerializationHelper'; import { serializable, date } from 'serializr'; import { ObjectField } from './ObjectField'; import { Copy, ToScriptString, ToString } from './FieldSymbols'; import { scriptingGlobal, ScriptingGlobals } from '../client/util/ScriptingGlobals'; @scriptingGlobal @Deserializable('date') export class DateField extends ObjectField { @serializable(date()) readonly date: Date; constructor(date: Date = new Date()) { super(); this.date = date; } [Copy]() { return new DateField(this.date); } toString() { return `${this.date.toLocaleString()}`; } [ToScriptString]() { return `new DateField(new Date("${this.date.toISOString()}"))`; } [ToString]() { return this.date.toLocaleString(); } getDate() { return this.date; } } ScriptingGlobals.add(function d(...dateArgs: any[]) { return new DateField(new (Date as any)(...dateArgs)); });