From 3f3257541869fdab8e9ca6f9afa12a7ec66038fc Mon Sep 17 00:00:00 2001 From: Ulion Date: Sun, 7 Feb 2021 12:55:23 +0800 Subject: [PATCH] Implement remove a key from a map op (slate set to undefined) --- packages/bridge/src/convert/remove.ts | 7 +++++++ packages/bridge/src/convert/set.ts | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/bridge/src/convert/remove.ts b/packages/bridge/src/convert/remove.ts index e9f783b..609d627 100644 --- a/packages/bridge/src/convert/remove.ts +++ b/packages/bridge/src/convert/remove.ts @@ -3,6 +3,7 @@ import { Element } from 'slate' import { toSlatePath, toJS } from '../utils' import { getTarget } from '../path' +import { setDataOp } from './set' const removeTextOp = (op: Automerge.Diff) => (map: any, doc: Element) => { try { @@ -87,6 +88,12 @@ const opRemove = ( try { const { index, path, obj, type } = op + if (type === 'map' && path) { + // remove a key from map, mapping to slate set a key's value to undefined. + ops.push(setDataOp(op, doc)(map, tmpDoc)) + return [map, ops] + } + if ( map.hasOwnProperty(obj) && typeof map[obj] !== 'string' && diff --git a/packages/bridge/src/convert/set.ts b/packages/bridge/src/convert/set.ts index 6b42953..ac666e2 100644 --- a/packages/bridge/src/convert/set.ts +++ b/packages/bridge/src/convert/set.ts @@ -3,7 +3,7 @@ import { Element, Node } from 'slate' import { toSlatePath, toJS } from '../utils' -const setDataOp = ( +export const setDataOp = ( { key = '', obj, path, value }: Automerge.Diff, doc: any ) => (map: any, tmpDoc: Element) => {