aboutsummaryrefslogtreecommitdiff
path: root/src/fields/RichTextField.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/fields/RichTextField.ts')
-rw-r--r--src/fields/RichTextField.ts41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/fields/RichTextField.ts b/src/fields/RichTextField.ts
new file mode 100644
index 000000000..5cf0e0cc3
--- /dev/null
+++ b/src/fields/RichTextField.ts
@@ -0,0 +1,41 @@
+import { ObjectField } from "./ObjectField";
+import { serializable } from "serializr";
+import { Deserializable } from "../client/util/SerializationHelper";
+import { Copy, ToScriptString, ToPlainText, ToString } from "./FieldSymbols";
+import { scriptingGlobal } from "../client/util/Scripting";
+
+@scriptingGlobal
+@Deserializable("RichTextField")
+export class RichTextField extends ObjectField {
+ @serializable(true)
+ readonly Data: string;
+
+ @serializable(true)
+ readonly Text: string;
+
+ constructor(data: string, text: string = "") {
+ super();
+ this.Data = data;
+ this.Text = text;
+ }
+
+ Empty() {
+ return !(this.Text || this.Data.toString().includes("dashField"));
+ }
+
+ [Copy]() {
+ return new RichTextField(this.Data, this.Text);
+ }
+
+ [ToScriptString]() {
+ return `new RichTextField("${this.Data}", "${this.Text}")`;
+ }
+ [ToString]() {
+ return this.Text;
+ }
+
+ public static DashField(fieldKey: string) {
+ return new RichTextField(`{"doc":{"type":"doc","content":[{"type":"paragraph","attrs":{"align":null,"color":null,"id":null,"indent":null,"inset":null,"lineSpacing":null,"paddingBottom":null,"paddingTop":null},"content":[{"type":"dashField","attrs":{"fieldKey":"${fieldKey}","docid":""}}]}]},"selection":{"type":"text","anchor":2,"head":2},"storedMarks":[]}`, "");
+ }
+
+} \ No newline at end of file