diff options
Diffstat (limited to 'src/new_fields')
-rw-r--r-- | src/new_fields/Doc.ts | 1 | ||||
-rw-r--r-- | src/new_fields/RichTextField.ts | 1 | ||||
-rw-r--r-- | src/new_fields/util.ts | 5 |
3 files changed, 5 insertions, 2 deletions
diff --git a/src/new_fields/Doc.ts b/src/new_fields/Doc.ts index 4531fd5e0..08d808e78 100644 --- a/src/new_fields/Doc.ts +++ b/src/new_fields/Doc.ts @@ -518,6 +518,7 @@ export namespace Doc { copy[key] = Doc.MakeCopy(doc[key]!, false); } } else { + const field = ProxyField.WithoutProxy(() => doc[key]); if (field instanceof RefField) { copy[key] = field; } else if (cfield instanceof ComputedField) { diff --git a/src/new_fields/RichTextField.ts b/src/new_fields/RichTextField.ts index fd5459876..e86251732 100644 --- a/src/new_fields/RichTextField.ts +++ b/src/new_fields/RichTextField.ts @@ -19,6 +19,7 @@ export class RichTextField extends ObjectField { this.Text = text; } + [Copy]() { return new RichTextField(this.Data, this.Text); } diff --git a/src/new_fields/util.ts b/src/new_fields/util.ts index 04194509c..92e3e3f6f 100644 --- a/src/new_fields/util.ts +++ b/src/new_fields/util.ts @@ -69,14 +69,15 @@ const _setterImpl = action(function (target: any, prop: string | symbol | number } else { target.__fields[prop] = value; } - if (typeof value === "object" && !(value instanceof ObjectField)) debugger; + // if (typeof value === "object" && !(value instanceof ObjectField)) debugger; if (writeToServer) { if (value === undefined) target[Update]({ '$unset': { ["fields." + prop]: "" } }); else target[Update]({ '$set': { ["fields." + prop]: value instanceof ObjectField ? SerializationHelper.Serialize(value) : (value === undefined ? null : value) } }); } else { DocServer.registerDocWithCachedUpdate(receiver, prop as string, curValue); } - UndoManager.AddEvent({ + UndoManager. + AddEvent({ redo: () => receiver[prop] = value, undo: () => receiver[prop] = curValue }); |