diff options
author | Stanley Yip <stanley_yip@brown.edu> | 2020-05-20 22:18:13 -0700 |
---|---|---|
committer | Stanley Yip <stanley_yip@brown.edu> | 2020-05-20 22:18:13 -0700 |
commit | 1113da5f2db22bd2b2b457b1f5b183d7f1f2e68d (patch) | |
tree | a559fa400fedb87799cba4f85451460f649c46dd /src/fields/RefField.ts | |
parent | 4109fea6787608022c8f5c147fa4fb9ad26e92eb (diff) | |
parent | 45386f6950e5ae8390486900a430061bfe9e4846 (diff) |
Merge branch 'master' of https://github.com/browngraphicslab/Dash-Web
Diffstat (limited to 'src/fields/RefField.ts')
-rw-r--r-- | src/fields/RefField.ts | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/fields/RefField.ts b/src/fields/RefField.ts new file mode 100644 index 000000000..b6ef69750 --- /dev/null +++ b/src/fields/RefField.ts @@ -0,0 +1,21 @@ +import { serializable, primitive, alias } from "serializr"; +import { Utils } from "../Utils"; +import { Id, HandleUpdate, ToScriptString, ToString } from "./FieldSymbols"; +import { afterDocDeserialize } from "../client/util/SerializationHelper"; + +export type FieldId = string; +export abstract class RefField { + @serializable(alias("id", primitive({ afterDeserialize: afterDocDeserialize }))) + private __id: FieldId; + readonly [Id]: FieldId; + + constructor(id?: FieldId) { + this.__id = id || Utils.GenerateGuid(); + this[Id] = this.__id; + } + + protected [HandleUpdate]?(diff: any): void | Promise<void>; + + abstract [ToScriptString](): string; + abstract [ToString](): string; +} |