{"version":3,"sources":["jsdelivr-header.js","/npm/y-draft-js@1.8.0/lib/index.esm.js"],"names":[],"mappings":"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","file":"/npm/y-draft-js@1.8.0/lib/index.esm.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/y-draft-js@1.8.0/lib/index.esm.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import * as Y from 'yjs';\nimport { genKey, SelectionState, EditorState, convertFromRaw, convertToRaw } from 'draft-js';\nimport Dmp from 'diff-match-patch';\nimport _isEmpty from 'lodash/isEmpty';\nimport { DiffPatcher } from 'jsondiffpatch';\nimport _throttle from 'lodash/throttle';\n\nfunction _extends() {\n  _extends = Object.assign || function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n\n    return target;\n  };\n\n  return _extends.apply(this, arguments);\n}\n\nArray.prototype.arrayToObj = function () {\n  return _extends({}, this);\n};\n\nvar diffPatcher = new DiffPatcher({\n  objectHash: function objectHash(obj) {\n    if (_isEmpty(obj)) return '[]';\n    if (Array.isArray(obj)) return JSON.stringify(obj);\n    var res = {};\n    Object.keys(obj).sort().forEach(function (key) {\n      res[key] = obj[key];\n    });\n    return JSON.stringify(res);\n  },\n  textDiff: {\n    minLength: 1\n  },\n  cloneDiffValues: true\n});\n\nvar formatStringLen = function formatStringLen(length, char) {\n  if (char === void 0) {\n    char = '1';\n  }\n\n  return Array.from({\n    length: length\n  }).fill(char).join('');\n};\n\nvar getKeyByEntityData = function getKeyByEntityData(entityData) {\n  var type = entityData.type,\n      data = entityData.data;\n  if (!data) return '';\n\n  switch (type // 保证在同一行，不同类型的entity的key不重复\n  ) {\n    case 'COMMENT':\n      return \"COMMENT-\" + Object.values(data).filter(Boolean).map(function (i) {\n        return i.unique || i.key;\n      }).join('-');\n\n    case 'LINK':\n      return \"LINK-\" + (data.key || data.url);\n    // case 'TABLE':\n    //   return `OKR-${data.key}`\n\n    case 'mention':\n      return \"mention-\" + (data.key || data.mention.name);\n    // case 'IMAGE':\n    //   return `IMG`\n    // case 'VIDEO':\n    //   return `VIDEO`\n\n    default:\n      return type;\n  }\n};\n\nvar entityArray2Map = function entityArray2Map(arr, globalRangeMap) {\n  var entityRange = {};\n  var entity = {};\n  var rangeMap = {};\n  arr.forEach(function (item, index) {\n    var entityData = item.key;\n    if (!entityData) return;\n    var type = entityData.type,\n        data = entityData.data;\n    var key = getKeyByEntityData(entityData); // key = rangeMap[key] ? `${key}-0` : key\n\n    if (type === 'mention' && key) {\n      rangeMap[key] = {\n        length: formatStringLen(item.length),\n        offset: formatStringLen(item.offset),\n        key: _extends({}, entityData, {\n          data: data.mention.id + \"-\" + (data.key || data.mention.name)\n        })\n      };\n      entity[data.mention.id + \"-\" + (data.key || data.mention.name)] = data;\n      entityRange[key] = index;\n      return;\n    }\n\n    if (type === 'LINK' && key) {\n      rangeMap[key] = {\n        length: formatStringLen(item.length),\n        offset: formatStringLen(item.offset),\n        key: _extends({}, entityData, {\n          data: \"link-\" + (data.key || data.url)\n        })\n      };\n      entity[\"link-\" + (data.key || data.url)] = data;\n      entityRange[key] = index;\n      return;\n    }\n\n    if (type === 'COMMENT' && key) {\n      var dataKey = {};\n\n      if (key === 'COMMENT-') {\n        return;\n      }\n\n      var commentkey = key;\n      var i = 1;\n\n      while (globalRangeMap[commentkey]) {\n        commentkey = key + \"-\" + i++;\n      }\n\n      entityRange[commentkey] = index;\n      Object.values(data).forEach(function (com) {\n        entity[com.unique || com.key] = com;\n        dataKey[com.unique || com.key] = 1;\n      });\n      rangeMap[commentkey] = globalRangeMap[commentkey] = {\n        length: formatStringLen(item.length),\n        offset: formatStringLen(item.offset),\n        key: _extends({}, entityData, {\n          data: dataKey\n        })\n      };\n      return;\n    } // rangeMap[key] = {\n    //   length: formatStringLen(item.length),\n    //   offset: formatStringLen(item.offset),\n    //   key: entityData,\n    // }\n\n\n    entityRange[index] = _extends({}, item, {\n      length: formatStringLen(item.length),\n      offset: formatStringLen(item.offset)\n    });\n  });\n  return {\n    entityRange: entityRange,\n    rangeMap: rangeMap,\n    entity: entity\n  };\n};\n\nvar entityRange2Array = function entityRange2Array(entityRanges, entityPool, enityRangeMap) {\n  var arr = [];\n\n  for (var index in entityRanges) {\n    var target = null;\n    var enityRange = enityRangeMap[index] || entityRanges[index];\n    if (!(enityRange != null && enityRange.key)) continue;\n    var _enityRange$key = enityRange.key,\n        type = _enityRange$key.type,\n        data = _enityRange$key.data;\n    var offset = enityRange.offset.length;\n    var length = enityRange.length.length;\n\n    if (type === 'mention' && data) {\n      // enityRange.data = entityPool[data]\n      target = {\n        offset: offset,\n        length: length,\n        key: _extends({}, enityRange.key, {\n          data: entityPool[data]\n        })\n      };\n    }\n\n    if (type === 'LINK' && data) {\n      target = {\n        offset: offset,\n        length: length,\n        key: _extends({}, enityRange.key, {\n          data: entityPool[data]\n        })\n      };\n    }\n\n    if (type === 'COMMENT' && data) {\n      (function () {\n        var comments = {};\n        Object.keys(data).forEach(function (key, i) {\n          comments[i] = entityPool[key];\n        });\n        target = {\n          offset: offset,\n          length: length,\n          key: _extends({}, enityRange.key, {\n            data: comments\n          })\n        };\n      })();\n    }\n\n    target = target || _extends({}, entityRanges[index], {\n      offset: offset,\n      length: length\n    });\n    var i = isNaN(Number(index)) ? entityRanges[index] : Number(index);\n    arr[i] = target;\n  }\n\n  return arr;\n};\n\nvar raw2rbw = function raw2rbw(raw) {\n  if (!raw || typeof raw !== 'object') return raw;\n  raw = transRaw(raw);\n  var _raw = raw,\n      blocks = _raw.blocks,\n      entityMap = _raw.entityMap;\n  var blockMap = {};\n  var entityPool = {}; // mention和comment的映射的属性池\n\n  var enityRangeMap = {};\n  var globalRangeMap = {};\n  var rbw = {\n    blocks: blocks.map(function (item) {\n      var _item$entityRanges = item.entityRanges,\n          entityRanges = _item$entityRanges === void 0 ? [] : _item$entityRanges,\n          inlineStyleRanges = item.inlineStyleRanges;\n      var newEntityRanges = entityRanges.map(function (enti) {\n        return _extends({}, enti, {\n          key: entityMap[enti.key]\n        });\n      });\n\n      var _entityArray2Map = entityArray2Map(newEntityRanges, globalRangeMap),\n          entityRange = _entityArray2Map.entityRange,\n          entity = _entityArray2Map.entity,\n          rangeMap = _entityArray2Map.rangeMap;\n\n      entityPool = Object.assign(entityPool, entity);\n      enityRangeMap = Object.assign(enityRangeMap, rangeMap);\n      blockMap[item.key] = _extends({}, item, {\n        inlineStyleRanges: inlineStyleRanges.map(function (item) {\n          return _extends({}, item, {\n            length: formatStringLen(item.length),\n            offset: formatStringLen(item.offset)\n          });\n        }).arrayToObj(),\n        entityRanges: entityRange\n      });\n      return item.key;\n    }) // 用于保留顺序\n\n  };\n  rbw.blockMap = blockMap;\n  rbw.entityPool = entityPool;\n  rbw.enityRangeMap = enityRangeMap;\n  return rbw;\n};\n\nvar rbw2raw = function rbw2raw(rbw) {\n  var blocks = rbw.blocks,\n      blockMap = rbw.blockMap,\n      entityPool = rbw.entityPool,\n      enityRangeMap = rbw.enityRangeMap;\n  if (!rbw || !blocks) return rbw;\n  var entityMap = {};\n  var entityKey = 0;\n  var commentMap = new Map();\n  var newBlocks = blocks.map(function (key) {\n    if (!blockMap[key]) return getRaw().blocks[0];\n    var entityRanges = entityRange2Array(blockMap[key].entityRanges, entityPool, enityRangeMap).map(function (entity) {\n      var data = entity.key;\n      var key;\n\n      if (commentMap.has(data)) {\n        key = commentMap.get(data);\n      } else {\n        key = ++entityKey;\n        commentMap.set(data, key);\n      }\n\n      entityMap[key] = data;\n      return _extends({}, entity, {\n        key: key\n      });\n    });\n    return _extends({}, blockMap[key], {\n      inlineStyleRanges: objToArray(blockMap[key].inlineStyleRanges).map(function (item) {\n        var _item$length, _item$offset;\n\n        return _extends({}, item, {\n          length: ((_item$length = item.length) == null ? void 0 : _item$length.length) || 0,\n          offset: ((_item$offset = item.offset) == null ? void 0 : _item$offset.length) || 0\n        });\n      }),\n      entityRanges: entityRanges\n    });\n  });\n  return {\n    blocks: newBlocks,\n    entityMap: entityMap\n  };\n};\n\nvar diffRaw = function diffRaw(preRaw, nextRaw) {\n  var preRbw = raw2rbw(preRaw);\n  var nextRbw = raw2rbw(nextRaw);\n  var delta = diffPatcher.diff(preRbw, nextRbw);\n  return delta;\n};\n\nnew Dmp();\n\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\nvar getRaw = function getRaw(texts) {\n  if (texts === void 0) {\n    texts = '';\n  }\n\n  if (!Array.isArray(texts)) texts = [texts];\n  return {\n    blocks: texts.map(function (text) {\n      return {\n        key: genKey(),\n        text: text || '',\n        type: 'unstyled',\n        depth: 0,\n        inlineStyleRanges: [],\n        entityRanges: [],\n        data: {}\n      };\n    }),\n    entityMap: {}\n  };\n}; // text转RAW, key为xxxx，没有@\n\nvar stringToRaw = function stringToRaw(str) {\n  var contentRaw = getRaw(String(str || '').split('\\n'));\n  return contentRaw;\n}; // 类数组对象转数组的方法\n\nfunction objToArray(obj) {\n  if (!obj) return [];\n  var length = Math.max.apply(null, Object.keys(obj).filter(function (key) {\n    return key.match(/^\\d+$/);\n  })) + 1;\n  return Array.from(_extends({}, obj, {\n    length: length\n  })).filter(Boolean);\n}\nvar isRaw = function isRaw(raw) {\n  return raw && raw.blocks && raw.entityMap;\n};\n\nvar transRaw = function transRaw(raw) {\n  if (!raw || typeof raw !== 'object') return raw;\n  var _raw$blocks = raw.blocks,\n      blocks = _raw$blocks === void 0 ? [] : _raw$blocks,\n      entityMap = raw.entityMap;\n  if (_isEmpty(entityMap)) raw.entityMap = {};\n  blocks.forEach(function (block) {\n    if (_isEmpty(block.data)) block.data = {};\n  });\n  return raw;\n}; // 对方法进行封装，防止内部报错\n\n\nvar tryCatchFunc = function tryCatchFunc(fn, msg) {\n  return function () {\n    try {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      return typeof fn === 'function' && fn.apply(this, args);\n    } catch (error) {\n      console.warn(msg || '方法报错', error);\n    }\n  };\n};\nvar DMP = new Dmp(); // 计算序号, 默认不跟随内容更改\n\nvar diffIndex = function diffIndex(diffArr, index, needFlow) {\n  var curIndex = DMP.diff_xIndex(diffArr, index);\n  if (needFlow) return curIndex;\n  if (index === 0) return 0;\n  var lastIndex = DMP.diff_xIndex(diffArr, index - 1);\n  if (lastIndex === index - 1 && curIndex !== index) return index;\n  return curIndex;\n};\n\nvar getStringDiffArray = function getStringDiffArray(txt1, txt2) {\n  return DMP.diff_main(txt1, txt2);\n};\n\nvar transToRawObj = function transToRawObj(raw) {\n  return typeof raw === 'string' && raw.match(/^({|\\[)/) ? tryCatchFunc(function (raw) {\n    return JSON.parse(raw);\n  })(raw) || stringToRaw(raw) : raw.blocks ? raw : stringToRaw('');\n}; // RAW转text\n\nvar rawToText = function rawToText(raw) {\n  raw = transToRawObj(raw);\n  if (!raw) return '';\n  return raw.blocks ? raw.blocks.reduce(function (a, b, index) {\n    return {\n      text: \"\" + a.text + (index > 0 ? '\\n' : '') + b.text\n    };\n  }, {\n    text: ''\n  }).text : '';\n};\n\nvar getNewSelection = function getNewSelection(_ref, raw, contentState) {\n  var _newParmas$anchorKey, _newParmas$focusKey;\n\n  var startKey = _ref.startKey,\n      endKey = _ref.endKey,\n      start = _ref.start,\n      end = _ref.end,\n      hasFocus = _ref.hasFocus;\n  var oldBlockArray = contentState.getBlocksAsArray();\n  var newParmas = {\n    hasFocus: hasFocus\n  };\n  var isCollapsed = startKey === endKey && start === end;\n  var blocks = raw.blocks;\n  if (blocks.length === 0) return;\n  var editorText = rawToText(raw);\n  var oldEditorText = contentState.getPlainText(); // console.log(startKey, endKey, start, end);\n\n  if (oldEditorText === editorText) {\n    // 文本内容没有变化，保留原来的选择状态\n    return new SelectionState({\n      anchorKey: startKey,\n      focusKey: endKey,\n      anchorOffset: start,\n      focusOffset: end,\n      hasFocus: hasFocus\n    });\n  }\n\n  var blockKeys = blocks.map(function (block) {\n    return block.key;\n  });\n  var startIndex = blockKeys.indexOf(startKey);\n\n  if (startKey === endKey && startIndex >= 0) {\n    newParmas.anchorKey = startKey;\n    newParmas.focusKey = endKey;\n  }\n\n  var endIndex = blockKeys.indexOf(endKey);\n  var oldBlockKeys = oldBlockArray.map(function (block) {\n    return block.key;\n  });\n\n  if (startIndex < 0 || endIndex < 0 || startIndex > endIndex) {\n    // 起点和终点某一个被删掉了，或者拖拽改变了他们的前后顺序\n    var oldStartIndex = oldBlockKeys.indexOf(startKey);\n    var oldEndIndex = oldBlockKeys.indexOf(endKey);\n    var preBlockKeys = oldBlockKeys.slice(oldStartIndex, oldEndIndex + 1); // length 可能为1，但肯定不为0\n    // console.log('1', preBlockKeys.join(), blockKeys.join());\n\n    while (preBlockKeys.length > 0 && (blockKeys.indexOf(preBlockKeys[0]) < 0 || // eslint-disable-next-line no-unmodified-loop-condition\n    blockKeys.indexOf(preBlockKeys[0]) > endIndex && endIndex >= 0)) {\n      preBlockKeys.shift(); // 从上向下找起点\n    } // console.log('2', preBlockKeys.join());\n\n\n    if (startIndex < 0 || endIndex < 0) {\n      // 起点或终点被删掉了\n      if (preBlockKeys.length > 0) {\n        // 如果有起点\n        newParmas.anchorKey = preBlockKeys[0];\n        startIndex < 0 && (newParmas.anchorOffset = 0);\n\n        while (preBlockKeys.length > 0 && (blockKeys.indexOf(preBlockKeys[preBlockKeys.length - 1]) < 0 || blockKeys.indexOf(preBlockKeys[preBlockKeys.length - 1]) < startIndex)) {\n          preBlockKeys.pop(); // 从下向上找终点\n        } // console.log('3', preBlockKeys.join());\n\n\n        if (preBlockKeys.length > 0) {\n          // 如果有终点\n          newParmas.focusKey = preBlockKeys[preBlockKeys.length - 1];\n          endIndex < 0 && (newParmas.focusOffset = blocks[blockKeys.indexOf(newParmas.focusKey)].text.length);\n        } else {\n          // 终点被删掉了, 选择key为anchorKey，lenght为anchorKey所在的length\n          newParmas.focusKey = newParmas.anchorKey;\n          newParmas.focusOffset = blocks[blockKeys.indexOf(newParmas.focusKey)].text.length;\n        }\n      } else {\n        // 之前选中区域全删没了, 现存的最近一行的最后一个字符\n        var startBlocks = oldBlockKeys.slice(0, oldStartIndex).filter(function (key) {\n          return blockKeys.indexOf(key) >= 0;\n        });\n        var endBlocks = oldBlockKeys.slice(oldEndIndex + 1).filter(function (key) {\n          return blockKeys.indexOf(key) >= 0;\n        });\n\n        if (endBlocks.length === 0 && startBlocks.length === 0) {\n          // 全都找不到了，聚焦到最后\n          newParmas.anchorKey = blocks[blocks.length - 1].key;\n          newParmas.anchorOffset = blocks[blocks.length - 1].text.length;\n        } else {\n          // 先找到最近的一个\n          newParmas.anchorKey = startBlocks.length > 0 ? startBlocks[startBlocks.length - 1] : endBlocks[0];\n          newParmas.anchorOffset = blocks[blockKeys.indexOf(newParmas.anchorKey)].text.length;\n        }\n\n        newParmas.focusKey = newParmas.anchorKey;\n        newParmas.focusOffset = newParmas.anchorOffset;\n      }\n    } else {\n      // 选择除了被移动后剩下的block\n      newParmas.anchorKey = preBlockKeys[0];\n      newParmas.anchorOffset = 0;\n      newParmas.focusKey = endKey;\n    }\n  }\n\n  newParmas.anchorKey = (_newParmas$anchorKey = newParmas.anchorKey) != null ? _newParmas$anchorKey : startKey;\n  newParmas.focusKey = (_newParmas$focusKey = newParmas.focusKey) != null ? _newParmas$focusKey : endKey;\n\n  if (newParmas.anchorOffset !== undefined && newParmas.focusOffset !== undefined) {\n    // console.log(newParmas);\n    return new SelectionState(newParmas);\n  } // 上述的newParmas缺少anchorOffset和focusOffset，需要进一步根据start和end来调整计算\n  // startKey也是新选择的startKey，endKey也是新选择的endKey\n\n\n  if (newParmas.anchorOffset === undefined) {\n    var anchorText = blocks[blockKeys.indexOf(newParmas.anchorKey)].text;\n    var oldAnchorText = oldBlockArray[oldBlockKeys.indexOf(newParmas.anchorKey)].text;\n    var anchorDiff = getStringDiffArray(oldAnchorText, anchorText); // console.log(anchorDiff, start);\n    // const needFlow = !isCollapsed || !isUndo\n\n    var needFlow = !isCollapsed || oldAnchorText.length - anchorText.length > 0;\n    newParmas.anchorOffset = diffIndex(anchorDiff, start, needFlow);\n\n    if (startKey === endKey) {\n      newParmas.focusOffset = isCollapsed ? newParmas.anchorOffset : diffIndex(anchorDiff, end);\n    }\n  }\n\n  if (newParmas.focusOffset === undefined) {\n    var focusText = blocks[blockKeys.indexOf(newParmas.focusKey)].text;\n    var oldFocusText = oldBlockArray[oldBlockKeys.indexOf(newParmas.focusKey)].text;\n    var focusDiff = getStringDiffArray(oldFocusText, focusText);\n    newParmas.focusOffset = diffIndex(focusDiff, end);\n  } // console.log(newParmas);\n\n\n  return new SelectionState(newParmas);\n};\n\nvar getDeltaArray = function getDeltaArray(diff, path) {\n  if (path === void 0) {\n    path = [];\n  }\n\n  var deltaArray = [];\n\n  if (!Array.isArray(diff) && !diff._t) {\n    // 没到叶子节点\n    Object.keys(diff).forEach(function (key) {\n      deltaArray = deltaArray.concat(getDeltaArray(diff[key], [].concat(path, [key])));\n    });\n  } else {\n    deltaArray = getOperationByDiff(diff, path);\n  }\n\n  return deltaArray;\n};\n/**\n *\n * @param {*} diff\n * @param {Array} path\n * @returns {Array}\n *  {\n *  type: 'string'|'object'|'array'|'number',\n *  action: 'insert'|'delete'|'replace'|'plus'|'subtract'|'move',\n *  path: [],\n *  index: 0,\n *  length: 0,\n *  value: 'a'\n *  }\n */\n\n\nvar getOperationByDiff = function getOperationByDiff(diff, path) {\n  if (diff._t === 'a') {\n    // array\n    var actionKeys = Object.keys(diff).reduce(function (_ref2, a) {\n      var del = _ref2[0],\n          add = _ref2[1];\n      if (a === '_t') return [del, add];\n\n      if (a[0] === '_') {\n        return [[a].concat(del), add]; // delete from right to left\n      }\n\n      return [del, [].concat(add, [a])]; // add from left to right\n    }, [[], []]).reduce(function (prev, curr) {\n      return Array.isArray(curr) ? [].concat(prev, curr) : [].concat(prev, [curr]);\n    }, []);\n    return actionKeys.map(function (key) {\n      var res = {\n        type: 'array',\n        path: path\n      };\n      var isModify = !Array.isArray(diff[key]);\n\n      if (key[0] === '_') {\n        return diff[key][2] === 3 ? _extends({}, res, {\n          action: 'move',\n          index: ~~key.substr(1),\n          // 原index\n          value: diff[key][1] // new index\n\n        }) : _extends({}, res, {\n          action: 'delete',\n          index: ~~key.substr(1),\n          length: 1\n        });\n      }\n\n      if (isModify) {\n        return getDeltaArray(diff[key], [].concat(path, [key]));\n      }\n\n      return _extends({}, res, {\n        action: 'insert',\n        index: ~~key,\n        value: diff[key].map(function (item) {\n          return toSyncElement(item);\n        })\n      });\n    });\n  }\n\n  if (diff[2] === 2 && diff.length === 3) {\n    // text of block\n    var _DMP$patch_fromText$ = DMP.patch_fromText(diff[0])[0],\n        textDelta = _DMP$patch_fromText$.diffs,\n        start1 = _DMP$patch_fromText$.start1;\n\n    if (ingnoreKeys.indexOf(path[path.length - 1]) >= 0) {\n      return [{\n        type: 'object',\n        // as object\n        path: path,\n        action: 'replace',\n        value: textDelta.reduce(function (prev, curr) {\n          var op = curr[0],\n              text = curr[1];\n          if (op === DIFF_DELETE) return prev;\n          return prev + text;\n        }, '')\n      }];\n    }\n\n    return textDelta.reduce(function (res, item) {\n      var index = 0;\n\n      if (res.length === 0) {\n        index = start1;\n      } else {\n        var nextIndex = res[res.length - 1].nextIndex;\n        index = nextIndex;\n      } // console.log(index, res);\n\n\n      var action = item[0] === DIFF_EQUAL ? 'retain' : item[0] === DIFF_INSERT ? 'insert' : 'delete';\n      return [].concat(res, [{\n        type: 'string',\n        path: path,\n        action: action,\n        index: index,\n        nextIndex: action === 'delete' ? index : index + item[1].length,\n        value: item[1],\n        length: res.length === 0 ? start1 + item[1].length : item[1].length\n      }]);\n    }, []).filter(function (item) {\n      return item.action !== 'retain';\n    });\n  }\n\n  if (diff.length === 1) {\n    // add data\n    return [{\n      type: 'object',\n      path: path,\n      action: 'replace',\n      value: toSyncElement(diff[0])\n    }];\n  }\n\n  if (diff.length === 3 && diff[2] === 0 && diff[1] === 0) {\n    // delete data\n    return [{\n      type: 'object',\n      path: path,\n      action: 'delete'\n    }];\n  }\n\n  return [{\n    // replace data\n    type: 'object',\n    path: path,\n    action: 'replace',\n    value: toSyncElement(diff[1])\n  }];\n};\n/**\n * Converts all elements int a Draft content to SyncElements and adds them\n * to the SharedType\n *\n * @param sharedType\n * @param raw\n */\n\n\nfunction toRawSharedData(raw) {\n  var rbw = raw2rbw(raw);\n  return toSyncElement(rbw);\n}\nvar ingnoreKeys = ['type', 'key', 'mutability'];\nfunction toSyncElement(item) {\n  if (typeof item === 'string') {\n    var textElement = new Y.Text(item);\n    return textElement;\n  }\n\n  if (Array.isArray(item)) {\n    return Y.Array.from(item.map(toSyncElement));\n  }\n\n  if (item && typeof item === 'object') {\n    var mapElement = new Y.Map();\n\n    var _isRaw = item.blocks && item.entityMap && !item.entityPool;\n\n    if (_isRaw) return toRawSharedData(item);\n    Object.keys(item).forEach(function (key) {\n      mapElement.set(key, ingnoreKeys.indexOf(key) >= 0 && typeof item[key] === 'string' ? item[key] : toSyncElement(item[key]));\n    });\n    return mapElement;\n  }\n\n  return item === void 0 ? '' : item;\n}\nvar getTargetByPath = function getTargetByPath(path, target, isSync) {\n  if (path.length === 0) return target;\n  return path.reduce(function (t, key, index) {\n    if (!t) {\n      !isSync && console.warn(\"Could not find target according to path [\" + path.join('.') + \"], it is recommended that you use 'onTargetSync' to listen for the value of the path\", target);\n      return t;\n    }\n\n    var res = t.get ? t.get(key) : t[key];\n    return res;\n  }, target);\n};\nvar changeYmapByDelta = function changeYmapByDelta(delta, ymap, syncOpr, origin) {\n  if (!delta || delta.length === 0) return;\n  var operations = getDeltaArray(delta, []).sort(function (a, b) {\n    return a.path.length - b.path.length;\n  });\n  if (operations.length === 0) return;\n  var ydoc = ymap.doc; // console.log(operations, delta, ymap);\n\n  ydoc.transact(function () {\n    operations.forEach(function (opr) {\n      try {\n        applyYDocOp(opr, ymap);\n      } catch (e) {\n        console.error(ymap, opr, e);\n      }\n    });\n    if (syncOpr && syncOpr.apply) syncOpr(ymap);\n  }, origin);\n};\n\nvar applyYDocOp = function applyYDocOp(opr, ymap) {\n  var type = opr.type,\n      path = opr.path,\n      action = opr.action,\n      value = opr.value,\n      index = opr.index,\n      length = opr.length;\n\n  if (type === 'string') {\n    var target = getTargetByPath(path, ymap);\n    if (!target && action === 'delete') return;\n\n    if (typeof target === 'string' || !target) {\n      var field = path[path.length - 1];\n      var ydata = getTargetByPath(path.slice(0, path.length - 1), ymap);\n      return action === 'insert' ? ydata.set(field, value) : ydata.delete(field);\n    }\n\n    return action === 'insert' ? target.insert(index, value) : target.delete(index, length);\n  }\n\n  if (type === 'array') {\n    var _target = getTargetByPath(path, ymap);\n\n    if (action === 'insert') {\n      if (index === _target.length) return _target.push(value); // 最后一位是push方法\n\n      return _target.insert(index, value);\n    }\n\n    if (action === 'delete') {\n      return _target.delete(index, length);\n    }\n\n    if (action === 'move') {\n      var moveToLast = +value === _target.length - 1;\n\n      var item = _target.get(index).clone();\n\n      _target.delete(index, 1);\n\n      return moveToLast ? _target.push([item]) : _target.insert(value, [item]); // 最后一位是push方法\n    }\n  }\n\n  if (type === 'object') {\n    var _index = path.length - 1;\n\n    var _target2 = getTargetByPath(path.slice(0, -1), ymap); // while(index < path.length && ymap.get[path[index]]) {\n    //   target = ymap.get[path[index]]\n    //   index++\n    // }\n    // index-- //退到此时真值的位置\n    // if(index === path.length - 1) { // 遍历到底了,操作的就是最后的一个父元素\n    //   target = target.parent\n    //   index = index - 1\n\n\n    if (action === 'delete') {\n      return _target2.delete(path[_index]);\n    }\n\n    if (action === 'replace') {\n      return _target2.set(path[_index], value);\n    } // }\n    // path没遍历到底，delete不需要处理了，replace需要补齐数据，防止undefined报错\n    // if(action !== 'replace') return\n    // index++\n    // for(; index < path.length; index++) {\n    //   target.set(path[index], index === path.length - 1 ? value : new Y.Map())\n    //   target = target.get(path[index])\n    // }\n\n  }\n};\n\nvar _pathTargeDoc = new WeakMap(); // 获取从ydoc下指定路径的数据，如果有值则用回调返回，如果没有则自动监听到目标值出现, 并且持续监听目标路径下的y对象，一旦被更改成另一个对象也会执行回调，并返回的cancle方法来取消监听\n\n\nvar onTargetSync = function onTargetSync(path, ydoc, cb, firstType) {\n  var _targetDoc$pathKey;\n\n  if (firstType === void 0) {\n    firstType = Y.Map;\n  }\n\n  if (!ydoc) return console.warn('ydoc is undefined');\n  if (!cb) return console.warn('callback is necessary in onTargetSync');\n  var targetDoc = _pathTargeDoc.has(ydoc) ? _pathTargeDoc.get(ydoc) || {} : {};\n\n  _pathTargeDoc.set(ydoc, targetDoc);\n\n  Array.isArray(path) || (path = [path]);\n\n  var _path = path,\n      fixField = _path[0],\n      subPath = _path.slice(1);\n\n  var firstData = ydoc.get(fixField, firstType);\n\n  if (subPath.length === 0) {\n    setTimeout(function () {\n      return cb(firstData);\n    }, 0);\n    return;\n  }\n\n  var target = getTargetByPath(subPath, firstData, true);\n  var pathKey = path.join('.');\n  targetDoc[pathKey] = {\n    target: target,\n    callBacks: [].concat(((_targetDoc$pathKey = targetDoc[pathKey]) == null ? void 0 : _targetDoc$pathKey.callBacks) || [], [cb])\n  };\n\n  function ob(e) {\n    var target = getTargetByPath(subPath, firstData, true);\n\n    if (!target || !targetDoc[pathKey] || targetDoc[pathKey].target === target) {\n      return;\n    } // 等待目标字段的内容出现\n\n\n    targetDoc[pathKey].target = target;\n    targetDoc[pathKey].callBacks.forEach(function (fn) {\n      return fn(target);\n    });\n  }\n\n  firstData.observeDeep(ob);\n\n  if (target) {\n    setTimeout(function () {\n      return cb(target);\n    }, 0);\n  }\n\n  return function () {\n    if (!targetDoc[pathKey]) return;\n    var _targetDoc$pathKey$ca = targetDoc[pathKey].callBacks,\n        callBacks = _targetDoc$pathKey$ca === void 0 ? [] : _targetDoc$pathKey$ca;\n    callBacks.splice(callBacks.indexOf(cb), 1);\n    firstData.unobserveDeep(ob);\n\n    if (callBacks.length === 0) {\n      delete targetDoc[pathKey];\n    }\n  };\n};\n\n// import * as error from 'lib0/error.js'\n\nvar getRawBySharedData = function getRawBySharedData(rawPath, ydoc) {\n  !Array.isArray(rawPath) && (rawPath = [rawPath]);\n  var target = getTargetByPath(rawPath, ydoc);\n  if (!target) return null;\n  var rbw = null;\n  var raw = null;\n\n  try {\n    rbw = target.toJSON();\n    raw = rbw2raw(rbw);\n    if (!isRaw(raw)) return null;\n  } catch (error) {\n    return null;\n  }\n\n  return raw;\n};\n\nvar setRawToSharedData = function setRawToSharedData(rawPath, ydoc, raw) {\n  !Array.isArray(rawPath) && (rawPath = [rawPath]);\n  var target = getTargetByPath(rawPath, ydoc);\n  if (!target) return console.log(\"path:\" + rawPath + \" is undefined\");\n  var rbw = raw2rbw(raw);\n  ydoc.transact(function () {\n    target.forEach(function (val, key) {\n      return target.delete(key);\n    });\n    target.set(CHANGE_CLIENT, genKey()); // const rawYmap = toRawSharedData(rbw)\n\n    Object.entries(rbw).forEach(function (_ref) {\n      var key = _ref[0],\n          val = _ref[1];\n      return target.set(key, toSyncElement(val));\n    });\n  }); // console.log(target.toJSON(), 'target.toJSON()');\n\n  return target;\n};\nvar CHANGE_CLIENT = 'CHANGE_CLIENT'; // 用于识别是不是自己的更新\n\nvar editorMap = {};\nvar preAwarenessMap = new WeakMap(); // 更新光标数据\n\nvar updateAwareness = _throttle(function (provider, selectData) {\n  var selectStr = JSON.stringify(selectData);\n  var preAwareness = preAwarenessMap.get(provider) || '';\n  preAwarenessMap.set(provider, selectStr);\n  var preNotFocus = !!preAwareness.match(/:false}$/);\n  if (preAwareness === selectStr || preNotFocus && !selectData.hasFocus) return;\n  provider.awareness.setLocalStateField('selection', selectData);\n}, 300);\n\nvar DraftBinding = function DraftBinding(opts) {\n  var _this = this;\n\n  this.getSectionData = function () {\n    var selection = _this.getEditorState().getSelection();\n\n    if (_this.isCompositeMode() && _this.selectData) return _this.selectData;\n    _this.selectData = {\n      anchorKey: selection.getAnchorKey(),\n      anchorOffset: selection.getAnchorOffset(),\n      focusKey: selection.getFocusKey(),\n      focusOffset: selection.getFocusOffset(),\n      isBackward: selection.getIsBackward(),\n      hasFocus: selection.getHasFocus()\n    };\n    return _this.selectData;\n  };\n\n  this.setUpdatable = function (val) {\n    _this._updatable = !!val;\n\n    if (!!val && _this._stopUpdateEvents) {\n      _this.onObserveDeep(_this._stopUpdateEvents);\n    }\n  };\n\n  this.forceRefresh = _throttle(function () {\n    var raw = rbw2raw(_this.rawYmap.toJSON());\n\n    _this.muxSetRaw(raw);\n  }, 500, {\n    leading: true,\n    trailing: true\n  });\n\n  this.muxSetRaw = function (raw) {\n    _this._waitUpdateTarget = null;\n\n    _this.mutex(function () {\n      _this.setStateByRaw(raw);\n\n      if (_this._waitUpdateTarget) {\n        _this._lock = false;\n        return _this.muxSetRaw(_this._waitUpdateTarget);\n      }\n    }, function () {\n      console.warn('setStateByRaw has been delayed', _this);\n      _this._waitUpdateTarget = raw;\n    });\n  };\n\n  this.listenTargetYmap = function (rawYmap) {\n    var _this$rawYmap;\n\n    var val = rbw2raw(rawYmap.toJSON());\n\n    if (isRaw(val)) {\n      _this.value = val;\n      _this.oldJson = JSON.stringify(val);\n    } else {\n      _this.value = getRaw();\n      _this.oldJson = JSON.stringify(val);\n      rawYmap = setRawToSharedData(_this.rawPath, _this.doc, _this.value);\n\n      _this.log('initRaw =>', _this.value, _this.rawPath.join('.'));\n    }\n\n    (_this$rawYmap = _this.rawYmap) == null ? void 0 : _this$rawYmap.unobserveDeep(_this.onObserveDeep);\n    _this.rawYmap = rawYmap;\n    _this.oprID = _this.rawYmap.get(CHANGE_CLIENT);\n\n    if (!_this.oprID) {\n      _this.oprID = genKey();\n\n      _this.rawYmap.set(CHANGE_CLIENT, _this.oprID);\n    }\n\n    _this.undoManager = new Y.UndoManager(_this.rawYmap, {\n      trackedOrigins: _this.trackedSet\n    });\n\n    _this.log('on :[onObserveDeep]', rawYmap, _this.rawPath.join('.'));\n\n    _this.rawYmap.observeDeep(_this.onObserveDeep); // observeDeep this editor's raw\n\n\n    return true;\n  };\n\n  this.undo = function () {\n    if (!_this.undoManager) return;\n\n    _this.doc.transact(function () {\n      _this.oprID = genKey();\n\n      _this.rawYmap.set(CHANGE_CLIENT, _this.oprID);\n\n      _this.undoManager.undo();\n    });\n  };\n\n  this.redo = function () {\n    if (!_this.undoManager) return;\n\n    _this.doc.transact(function () {\n      _this.oprID = genKey();\n\n      _this.rawYmap.set(CHANGE_CLIENT, _this.oprID);\n\n      _this.undoManager.redo();\n    });\n  };\n\n  this.bindEditor = function (editor) {\n    var _this$getEditorContai;\n\n    // 支持异步绑定编辑器\n    if (!editor) return;\n\n    if (_this.draftEditor) {\n      console.warn('[editor-change] bind other draftEditor, preEditor:', _this.draftEditor, 'newEditor:', editor);\n    }\n\n    var draftEditor = editor.update ? editor : editor.getEditorRef == null ? void 0 : editor.getEditorRef(); // 原始的draft-editor\n\n    if (!draftEditor || !editor.componentDidUpdate) {\n      return console.warn('editor must be Draft ref');\n    }\n\n    var isPluginEditor = !!editor.onChange;\n    _this.isPluginEditor = isPluginEditor;\n    _this.draftEditor = editor;\n    _this.editorKey = draftEditor.getEditorKey();\n    (_this$getEditorContai = _this.getEditorContainer()) == null ? void 0 : _this$getEditorContai.addEventListener('mousedown', _this.releaseSelection);\n\n    if (isPluginEditor) {\n      _this._onChange = editor.onChange;\n      var componentDidUpdate = editor.componentDidUpdate; // listen to changes\n\n      var that = _this;\n      _this._onChange && (editor.onChange = function (editorState) {\n        if (that.editorState === editorState) {\n          if (that._lockFocus) that._lockFocus = false;\n          return;\n        }\n\n        if (that._lockFocus) {\n          editorState = EditorState.forceSelection(editorState, that.newSelection);\n        }\n\n        that._lockFocus = false;\n\n        if (this !== editor) {\n          that.onChange(editorState);\n        }\n\n        that._onChange.apply(editor, [editorState]);\n\n        that.editorState = editorState;\n\n        if (that._waitUpdateTarget) {\n          that._lock = false;\n          that.muxSetRaw(that._waitUpdateTarget);\n        }\n      });\n\n      editor.componentDidUpdate = function (prevProps, prevState) {\n        var editorState = editor.getEditorState();\n\n        if (that.editorState !== editorState && editorState !== prevProps.editorState) {\n          that.onChange(editorState); // console.log('componentDidUpdate.onChange');\n\n          if (that._waitUpdateTarget) {\n            that._lock = false;\n            that.muxSetRaw(that._waitUpdateTarget);\n          }\n        }\n\n        componentDidUpdate.apply(this, [prevProps, prevState]);\n      };\n    } else {\n      _this._update = editor.update; // listen to changes\n\n      _this._update && (editor.update = function () {\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n\n        _this.onChange(args[0]);\n\n        _this._update.apply(editor, args);\n\n        if (_this._waitUpdateTarget) {\n          _this._lock = false;\n          _this.editorState = args[0];\n\n          _this.muxSetRaw(_this._waitUpdateTarget);\n        }\n      });\n    }\n  };\n\n  this.getEditorContainer = function () {\n    var _this$draftEditor$edi;\n\n    if (!_this.draftEditor) return null;\n    return _this.draftEditor.editorContainer || ((_this$draftEditor$edi = _this.draftEditor.editor) == null ? void 0 : _this$draftEditor$edi.editorContainer);\n  };\n\n  this.isCompositeMode = function () {\n    return _this.getEditorState().isInCompositionMode();\n  };\n\n  this.getEditorState = function () {\n    return _this.editorState || _this.draftEditor.props.editorState;\n  };\n\n  this.setStateByRaw = function (raw) {\n    var _this$draftEditor;\n\n    var _onChange = _this._update || _this._onChange;\n\n    if (!isRaw(raw) || !_onChange) return;\n    if (!_this.draftEditor) return _this.destroy();\n\n    if (_this.isPluginEditor && !((_this$draftEditor = _this.draftEditor) != null && _this$draftEditor.getEditorRef != null && _this$draftEditor.getEditorRef())) {\n      if (_this.isDetoryed) {\n        return _this.rawYmap.unobserveDeep(_this.onObserveDeep);\n      }\n\n      return console.warn('drafjsEditor Can`t be found it, please rebind the editor', _this, _this.rawPath);\n    }\n\n    var editorState = _this.getEditorState();\n\n    var selectionState = editorState.getSelection();\n    var newEditorState = EditorState.set(EditorState.createWithContent(convertFromRaw(raw)), {\n      inCompositionMode: _this.isCompositeMode()\n    });\n    newEditorState.allowUndo = false;\n    var isCollapsed = selectionState.isCollapsed(); // console.log(selectionState.getHasFocus(), 'selectionState')\n\n    var focusLength = Object.values(editorMap).filter(Boolean).length; // console.log(this.isCompositeMode(), 'isCompositeMode');\n\n    if (focusLength > 0 && !editorMap[_this.editorKey] || focusLength === 0) {\n      _this.editorState = newEditorState;\n      _this.value = raw;\n      _this.oldJson = JSON.stringify(raw);\n      return _onChange.call(_this.draftEditor, newEditorState);\n    }\n\n    _this.setStateAndSelection(_onChange, newEditorState, isCollapsed, raw);\n  };\n\n  this.setStateAndSelection = function (_onChange, newEditorState, isCollapsed, raw) {\n    var editorState = _this.getEditorState();\n\n    var contentState = editorState.getCurrentContent();\n\n    var _ref2 = _this.selectData || _this.getSectionData(),\n        anchorKey = _ref2.anchorKey,\n        focusKey = _ref2.focusKey,\n        anchorOffset = _ref2.anchorOffset,\n        focusOffset = _ref2.focusOffset,\n        isBackward = _ref2.isBackward,\n        hasFocus = _ref2.hasFocus;\n\n    var startKey = isBackward ? focusKey : anchorKey;\n    var endKey = isBackward ? anchorKey : focusKey;\n    var start = isBackward ? focusOffset : anchorOffset;\n    var end = isBackward ? anchorOffset : focusOffset;\n    var newSelection = getNewSelection({\n      startKey: startKey,\n      endKey: endKey,\n      start: start,\n      end: end,\n      hasFocus: hasFocus\n    }, raw, contentState);\n\n    _this.log('NewSelection ->>' + newSelection.serialize().split(',').join(' | '), hasFocus);\n\n    _this.newSelection = newSelection; // this.localSelectionState = newSelection\n    // console.log(this.shouldAcceptSelection);\n\n    _this.editorState = newSelection ? EditorState[isCollapsed || _this.shouldAcceptSelection ? 'acceptSelection' : 'forceSelection'](newEditorState, newSelection) : newEditorState;\n    _this._lockFocus = true;\n    _this.value = raw;\n    _this.oldJson = JSON.stringify(raw);\n    _this.editorState.allowUndo = false; // const now = Date.now()\n    // console.log(now - this.now)\n    // this.now = now\n\n    _onChange.call(_this.draftEditor, _this.editorState);\n  };\n\n  this.releaseSelection = function () {\n    _this.shouldAcceptSelection = true;\n  };\n\n  this.isDetoryed = false;\n\n  this.destroy = function () {\n    var _this$getEditorContai2, _this$rawYmap2;\n\n    // console.warn('y-darf-js is destoryed');\n    (_this$getEditorContai2 = _this.getEditorContainer()) == null ? void 0 : _this$getEditorContai2.removeEventListener('mousedown', _this.releaseSelection);\n    (_this$rawYmap2 = _this.rawYmap) == null ? void 0 : _this$rawYmap2.unobserveDeep(_this.onObserveDeep);\n    _this.isDetoryed = true;\n\n    _this.provider.off('status', _this.onStatusChange);\n\n    _this.log('destroy: ' + _this.rawPath.join('.'));\n\n    _this._update && _this.draftEditor && (_this.draftEditor.update = _this._update);\n\n    if (_this._onChange) {\n      _this.draftEditor && (_this.draftEditor.onChange = _this._onChange);\n      Reflect.deleteProperty(_this.draftEditor, 'componentDidUpdate');\n    }\n\n    Reflect.deleteProperty(editorMap, _this.editorKey);\n    _this.cancel == null ? void 0 : _this.cancel();\n  };\n\n  var ydoc = opts.ydoc,\n      _rawPath = opts.rawPath,\n      _editor = opts.editor,\n      provider = opts.provider,\n      _opts$updatable = opts.updatable,\n      updatable = _opts$updatable === void 0 ? true : _opts$updatable,\n      debug = opts.debug;\n  this.log = debug ? console.log : function () {};\n  this.version = \"1.8.0\";\n  this.provider = provider;\n  var rawPath = _rawPath;\n  !Array.isArray(rawPath) && (rawPath = [rawPath]);\n  ydoc.getMap(rawPath[0]);\n  this.doc = ydoc;\n  this.clientID = this.doc.clientID;\n  this.trackedSet = new Set([this.clientID, this]);\n  this.awareness = provider.awareness;\n  this._lock = false;\n  this._updatable = !!updatable;\n  this.isConnecting = provider.wsconnecting;\n\n  this.onStatusChange = function (_ref3) {\n    var status = _ref3.status;\n    _this.isConnecting = status === 'connecting';\n  };\n\n  provider.on('status', this.onStatusChange);\n\n  this.mutex = function (f, g) {\n    if (!_this._lock) {\n      _this._lock = true;\n\n      try {\n        f();\n        _this._lock = false;\n      } finally {\n        _this._lock = false;\n      }\n\n      _this._lock = false;\n    } else if (g !== undefined) {\n      g();\n    }\n  };\n\n  this.rawPath = rawPath;\n\n  this.onObserveDeep = function (events) {\n    if (!_this._updatable) return _this._stopUpdateEvents = events;\n    _this._stopUpdateEvents = null;\n    var currentTarget = null;\n\n    var originOrpId = _this.rawYmap.get(CHANGE_CLIENT);\n\n    if (_this.oprID === originOrpId) return;\n    events.forEach(function (item) {\n      var path = item.path;\n\n      if (path.length > 0 && path[0] !== CHANGE_CLIENT) {\n        // 自己的更改不用更新\n        currentTarget = item.currentTarget;\n        _this.oprID = originOrpId;\n      }\n    });\n\n    _this.log('exe :[onObserveDeep]', !!currentTarget, _this.rawPath.join('.'));\n\n    currentTarget && _this.forceRefresh();\n  };\n\n  !provider.synced ? provider.on('sync', function (isSynced) {\n    if (!isSynced) return;\n    _this.cancel = onTargetSync(_this.rawPath, ydoc, function (rawYmap) {\n      _this.listenTargetYmap(rawYmap);\n    });\n  }) : this.cancel = onTargetSync(this.rawPath, ydoc, function (rawYmap) {\n    _this.listenTargetYmap(rawYmap);\n  });\n\n  this.onChange = function (editorState) {\n    return _this.mutex(function () {\n      var _this$editorState$all;\n\n      _this.editorState = editorState;\n      var raw = transRaw(convertToRaw(editorState.getCurrentContent()));\n      if (!_this.value) return _this.value = raw;\n      var selection = editorState.getSelection();\n\n      var selectData = _this.getSectionData(selection);\n\n      if (!_this._updatable) return; // console.log(selection.serialize(), selectData, this.isCompositeMode());\n\n      var allowUndo = (_this$editorState$all = _this.editorState.allowUndo) != null ? _this$editorState$all : _this.editorState.getAllowUndo();\n\n      if (_this.shouldAcceptSelection && !selection.isCollapsed()) {\n        _this.shouldAcceptSelection = false;\n      } // 释放控制\n\n\n      editorMap[_this.editorKey] = selectData.hasFocus;\n      updateAwareness(_this.provider, selectData);\n      var newJson = JSON.stringify(raw);\n      var rawYmap = getTargetByPath(_this.rawPath, ydoc);\n      if (!rawYmap || _this.isConnecting) return;\n\n      if (_this.rawYmap !== rawYmap && !_this.listenTargetYmap(rawYmap)) {\n        return;\n      }\n\n      if (_this.oldJson === newJson) return; // console.log(newJson, oldJson)\n\n      var delta = diffRaw(_this.value, raw);\n      changeYmapByDelta(delta, _this.rawYmap, function () {\n        _this.oprID = genKey();\n\n        _this.rawYmap.set(CHANGE_CLIENT, _this.oprID);\n      }, allowUndo ? _this.clientID : null);\n      _this.oldJson = newJson;\n      _this.value = JSON.parse(newJson);\n    }, function () {\n      console.warn('onChange has been delayed', _this);\n    });\n  };\n\n  this.bindEditor(_editor);\n};\n\nexport { DraftBinding, diffPatcher, getNewSelection, getRawBySharedData, getTargetByPath, onTargetSync, raw2rbw, rbw2raw, setRawToSharedData, toRawSharedData, toSyncElement };\n"]}