aboutsummaryrefslogtreecommitdiff
path: root/src/fields/RefField.ts
diff options
context:
space:
mode:
authorStanley Yip <stanley_yip@brown.edu>2020-05-20 22:18:13 -0700
committerStanley Yip <stanley_yip@brown.edu>2020-05-20 22:18:13 -0700
commit1113da5f2db22bd2b2b457b1f5b183d7f1f2e68d (patch)
treea559fa400fedb87799cba4f85451460f649c46dd /src/fields/RefField.ts
parent4109fea6787608022c8f5c147fa4fb9ad26e92eb (diff)
parent45386f6950e5ae8390486900a430061bfe9e4846 (diff)
Merge branch 'master' of https://github.com/browngraphicslab/Dash-Web
Diffstat (limited to 'src/fields/RefField.ts')
-rw-r--r--src/fields/RefField.ts21
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;
+}