slate-angular 1.7.1 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -157,4 +157,31 @@ export const getPlainText = (domNode) => {
157
157
  }
158
158
  return text;
159
159
  };
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvc3JjL3V0aWxzL2RvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILDhFQUE4RTtBQUM5RSw2RUFBNkU7QUFDN0UsdURBQXVEO0FBQ3ZELElBQU8sT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBTyxVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztBQUN2QyxJQUFPLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO0FBQ3ZDLElBQU8sT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBTyxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztBQUNuQyxJQUFPLFlBQVksR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDO0FBQzNDLElBQU8sY0FBYyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUM7QUFDL0MsT0FBTyxFQUNILE9BQU8sRUFDUCxVQUFVLEVBQ1YsVUFBVSxFQUNWLE9BQU8sRUFDUCxRQUFRLEVBQ1IsWUFBWSxFQUNaLGNBQWMsRUFDakIsQ0FBQztBQVlGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBVSxFQUFpQixFQUFFO0lBQ3hELE9BQU8sQ0FDSCxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUM1RSxDQUFDO0FBQ04sQ0FBQyxDQUFBO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFVLEVBQXVCLEVBQUU7SUFDNUQsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZ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VUFBVSxDQUFDLEVBQUU7WUFDcEQsSUFBSSxJQUFJLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNuQztRQUVELE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXRFLElBQUksT0FBTyxLQUFLLE9BQU8sSUFBSSxPQUFPLEtBQUssTUFBTSxJQUFJLE9BQU8sQ0FBQyxPQUFPLEtBQUssSUFBSSxFQUFFO1lBQ3ZFLElBQUksSUFBSSxJQUFJLENBQUM7U0FDaEI7S0FDSjtJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVHlwZXMuXG4gKi9cblxuLy8gQ09NUEFUOiBUaGlzIGlzIHJlcXVpcmVkIHRvIHByZXZlbnQgVHlwZVNjcmlwdCBhbGlhc2VzIGZyb20gZG9pbmcgc29tZSB2ZXJ5XG4vLyB3ZWlyZCB0aGluZ3MgZm9yIFNsYXRlJ3MgdHlwZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIGdsb2JhbHMuICgyMDE5LzExLzI3KVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8zNTAwMlxuaW1wb3J0IERPTU5vZGUgPSBnbG9iYWxUaGlzLk5vZGU7XG5pbXBvcnQgRE9NQ29tbWVudCA9IGdsb2JhbFRoaXMuQ29tbWVudDtcbmltcG9ydCBET01FbGVtZW50ID0gZ2xvYmFsVGhpcy5FbGVtZW50O1xuaW1wb3J0IERPTVRleHQgPSBnbG9iYWxUaGlzLlRleHQ7XG5pbXBvcnQgRE9NUmFuZ2UgPSBnbG9iYWxUaGlzLlJhbmdlO1xuaW1wb3J0IERPTVNlbGVjdGlvbiA9IGdsb2JhbFRoaXMuU2VsZWN0aW9uO1xuaW1wb3J0IERPTVN0YXRpY1JhbmdlID0gZ2xvYmFsVGhpcy5TdGF0aWNSYW5nZTtcbmV4cG9ydCB7XG4gICAgRE9NTm9kZSxcbiAgICBET01Db21tZW50LFxuICAgIERPTUVsZW1lbnQsXG4gICAgRE9NVGV4dCxcbiAgICBET01SYW5nZSxcbiAgICBET01TZWxlY3Rpb24sXG4gICAgRE9NU3RhdGljUmFuZ2Vcbn07XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAgICAgU2VsZWN0aW9uOiB0eXBlb2YgU2VsZWN0aW9uWydjb25zdHJ1Y3RvciddO1xuICAgICAgICBEYXRhVHJhbnNmZXI6IHR5cGVvZiBEYXRhVHJhbnNmZXJbJ2NvbnN0cnVjdG9yJ107XG4gICAgICAgIE5vZGU6IHR5cGVvZiBOb2RlWydjb25zdHJ1Y3RvciddO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgRE9NUG9pbnQgPSBbTm9kZSwgbnVtYmVyXTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBob3N0IHdpbmRvdyBvZiBhIERPTSBub2RlXG4gKi9cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0VmlldyA9ICh2YWx1ZTogYW55KTogV2luZG93IHwgbnVsbCA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgKHZhbHVlICYmIHZhbHVlLm93bmVyRG9jdW1lbnQgJiYgdmFsdWUub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykgfHwgbnVsbFxuICAgICk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBET00gbm9kZSBpcyBhIGNvbW1lbnQgbm9kZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzRE9NQ29tbWVudCA9ICh2YWx1ZTogYW55KTogdmFsdWUgaXMgRE9NQ29tbWVudCA9PiB7XG4gICAgcmV0dXJuIGlzRE9NTm9kZSh2YWx1ZSkgJiYgdmFsdWUubm9kZVR5cGUgPT09IDg7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGEgRE9NIG5vZGUgaXMgYW4gZWxlbWVudCBub2RlLlxuICovXG5leHBvcnQgY29uc3QgaXNET01FbGVtZW50ID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBET01FbGVtZW50ID0+IHtcbiAgICByZXR1cm4gaXNET01Ob2RlKHZhbHVlKSAmJiB2YWx1ZS5ub2RlVHlwZSA9PT0gMTtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhIERPTSBub2RlLlxuICovXG5leHBvcnQgY29uc3QgaXNET01Ob2RlID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBET01Ob2RlID0+IHtcbiAgICBjb25zdCB3aW5kb3cgPSBnZXREZWZhdWx0Vmlldyh2YWx1ZSlcbiAgICByZXR1cm4gISF3aW5kb3cgJiYgdmFsdWUgaW5zdGFuY2VvZiB3aW5kb3cuTm9kZTtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhIERPTSBzZWxlY3Rpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RPTVNlbGVjdGlvbiA9ICh2YWx1ZTogYW55KTogdmFsdWUgaXMgRE9NU2VsZWN0aW9uID0+IHtcbiAgICBjb25zdCB3aW5kb3cgPSB2YWx1ZSAmJiB2YWx1ZS5hbmNob3JOb2RlICYmIGdldERlZmF1bHRWaWV3KHZhbHVlLmFuY2hvck5vZGUpXG4gICAgcmV0dXJuICEhd2luZG93ICYmIHZhbHVlIGluc3RhbmNlb2Ygd2luZG93LlNlbGVjdGlvblxufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgRE9NIG5vZGUgaXMgYW4gZWxlbWVudCBub2RlLlxuICovXG5leHBvcnQgY29uc3QgaXNET01UZXh0ID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBET01UZXh0ID0+IHtcbiAgICByZXR1cm4gaXNET01Ob2RlKHZhbHVlKSAmJiB2YWx1ZS5ub2RlVHlwZSA9PT0gMztcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBwYXN0ZSBldmVudCBpcyBhIHBsYWludGV4dC1vbmx5IGV2ZW50LlxuICovXG5leHBvcnQgY29uc3QgaXNQbGFpblRleHRPbmx5UGFzdGUgPSAoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YSAmJlxuICAgICAgICBldmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKSAhPT0gJycgJiZcbiAgICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS50eXBlcy5sZW5ndGggPT09IDFcbiAgICApO1xufTtcblxuLyoqXG4gKiBOb3JtYWxpemUgYSBET00gcG9pbnQgc28gdGhhdCBpdCBhbHdheXMgcmVmZXJzIHRvIGEgdGV4dCBub2RlLlxuICovXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplRE9NUG9pbnQgPSAoZG9tUG9pbnQ6IERPTVBvaW50KTogRE9NUG9pbnQgPT4ge1xuICAgIGxldCBbbm9kZSwgb2Zmc2V0XSA9IGRvbVBvaW50O1xuXG4gICAgLy8gSWYgaXQncyBhbiBlbGVtZW50IG5vZGUsIGl0cyBvZmZzZXQgcmVmZXJzIHRvIHRoZSBpbmRleCBvZiBpdHMgY2hpbGRyZW5cbiAgICAvLyBpbmNsdWRpbmcgY29tbWVudCBub2Rlcywgc28gdHJ5IHRvIGZpbmQgdGhlIHJpZ2h0IHRleHQgY2hpbGQgbm9kZS5cbiAgICBpZiAoaXNET01FbGVtZW50KG5vZGUpICYmIG5vZGUuY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgbGV0IGlzTGFzdCA9IG9mZnNldCA9PT0gbm9kZS5jaGlsZE5vZGVzLmxlbmd0aDtcbiAgICAgICAgbGV0IGluZGV4ID0gaXNMYXN0ID8gb2Zmc2V0IC0gMSA6IG9mZnNldDtcbiAgICAgICAgO1tub2RlLCBpbmRleF0gPSBnZXRFZGl0YWJsZUNoaWxkQW5kSW5kZXgobm9kZSxcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgaXNMYXN0ID8gJ2JhY2t3YXJkJyA6ICdmb3J3YXJkJyk7XG5cbiAgICAgICAgLy8gSWYgdGhlIGVkaXRhYmxlIGNoaWxkIGZvdW5kIGlzIGluIGZyb250IG9mIGlucHV0IG9mZnNldCwgd2UgaW5zdGVhZCBzZWVrIHRvIGl0cyBlbmRcbiAgICAgICAgaXNMYXN0ID0gaW5kZXggPCBvZmZzZXQ7XG5cbiAgICAgICAgLy8gSWYgdGhlIG5vZGUgaGFzIGNoaWxkcmVuLCB0cmF2ZXJzZSB1bnRpbCB3ZSBoYXZlIGEgbGVhZiBub2RlLiBMZWFmIG5vZGVzXG4gICAgICAgIC8vIGNhbiBiZSBlaXRoZXIgdGV4dCBub2Rlcywgb3Igb3RoZXIgdm9pZCBET00gbm9kZXMuXG4gICAgICAgIHdoaWxlIChpc0RPTUVsZW1lbnQobm9kZSkgJiYgbm9kZS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaSA9IGlzTGFzdCA/IG5vZGUuY2hpbGROb2Rlcy5sZW5ndGggLSAxIDogMDtcbiAgICAgICAgICAgIG5vZGUgPSBnZXRFZGl0YWJsZUNoaWxkKG5vZGUsIGksIGlzTGFzdCA/ICdiYWNrd2FyZCcgOiAnZm9yd2FyZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBuZXcgb2Zmc2V0IGluc2lkZSB0aGUgdGV4dCBub2RlLlxuICAgICAgICBvZmZzZXQgPVxuICAgICAgICAgICAgaXNMYXN0ICYmIG5vZGUudGV4dENvbnRlbnQgIT0gbnVsbCA/IG5vZGUudGV4dENvbnRlbnQubGVuZ3RoIDogMDtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdGhlIG5vZGUgYW5kIG9mZnNldC5cbiAgICByZXR1cm4gW25vZGUsIG9mZnNldF07XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2V0aGVyIHRoZSBhY3RpdmUgZWxlbWVudCBpcyBuZXN0ZWQgd2l0aGluIGEgc2hhZG93Um9vdFxuICovXG5cbmV4cG9ydCBjb25zdCBoYXNTaGFkb3dSb290ID0gKCkgPT4ge1xuICAgIHJldHVybiAhIShcbiAgICAgICAgd2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuc2hhZG93Um9vdFxuICAgIClcbn1cblxuLyoqXG4gKiBHZXQgdGhlIG5lYXJlc3QgZWRpdGFibGUgY2hpbGQgYW5kIGluZGV4IGF0IGBpbmRleGAgaW4gYSBgcGFyZW50YCwgcHJlZmVycmluZ1xuICogYGRpcmVjdGlvbmAuXG4gKi9cblxuZXhwb3J0IGNvbnN0IGdldEVkaXRhYmxlQ2hpbGRBbmRJbmRleCA9IChcbiAgICBwYXJlbnQ6IERPTUVsZW1lbnQsXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBkaXJlY3Rpb246ICdmb3J3YXJkJyB8ICdiYWNrd2FyZCdcbik6IFtET01Ob2RlLCBudW1iZXJdID0+IHtcbiAgICBjb25zdCB7IGNoaWxkTm9kZXMgfSA9IHBhcmVudDtcbiAgICBsZXQgY2hpbGQgPSBjaGlsZE5vZGVzW2luZGV4XTtcbiAgICBsZXQgaSA9IGluZGV4O1xuICAgIGxldCB0cmllZEZvcndhcmQgPSBmYWxzZTtcbiAgICBsZXQgdHJpZWRCYWNrd2FyZCA9IGZhbHNlO1xuXG4gICAgLy8gV2hpbGUgdGhlIGNoaWxkIGlzIGEgY29tbWVudCBub2RlLCBvciBhbiBlbGVtZW50IG5vZGUgd2l0aCBubyBjaGlsZHJlbixcbiAgICAvLyBrZWVwIGl0ZXJhdGluZyB0byBmaW5kIGEgc2libGluZyBub24tdm9pZCwgbm9uLWNvbW1lbnQgbm9kZS5cbiAgICB3aGlsZSAoXG4gICAgICAgIGlzRE9NQ29tbWVudChjaGlsZCkgfHxcbiAgICAgICAgKGlzRE9NRWxlbWVudChjaGlsZCkgJiYgY2hpbGQuY2hpbGROb2Rlcy5sZW5ndGggPT09IDApIHx8XG4gICAgICAgIChpc0RPTUVsZW1lbnQoY2hpbGQpICYmIGNoaWxkLmdldEF0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxlJykgPT09ICdmYWxzZScpXG4gICAgKSB7XG4gICAgICAgIGlmICh0cmllZEZvcndhcmQgJiYgdHJpZWRCYWNrd2FyZCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaSA+PSBjaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdHJpZWRGb3J3YXJkID0gdHJ1ZTtcbiAgICAgICAgICAgIGkgPSBpbmRleCAtIDE7XG4gICAgICAgICAgICBkaXJlY3Rpb24gPSAnYmFja3dhcmQnO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaSA8IDApIHtcbiAgICAgICAgICAgIHRyaWVkQmFja3dhcmQgPSB0cnVlO1xuICAgICAgICAgICAgaSA9IGluZGV4ICsgMTtcbiAgICAgICAgICAgIGRpcmVjdGlvbiA9ICdmb3J3YXJkJztcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY2hpbGQgPSBjaGlsZE5vZGVzW2ldO1xuICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgIGkgKz0gZGlyZWN0aW9uID09PSAnZm9yd2FyZCcgPyAxIDogLTE7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtjaGlsZCwgaW5kZXhdO1xufVxuXG4vKipcbiAqIEdldCB0aGUgbmVhcmVzdCBlZGl0YWJsZSBjaGlsZCBhdCBgaW5kZXhgIGluIGEgYHBhcmVudGAsIHByZWZlcnJpbmdcbiAqIGBkaXJlY3Rpb25gLlxuICovXG5cbmV4cG9ydCBjb25zdCBnZXRFZGl0YWJsZUNoaWxkID0gKFxuICAgIHBhcmVudDogRE9NRWxlbWVudCxcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGRpcmVjdGlvbjogJ2ZvcndhcmQnIHwgJ2JhY2t3YXJkJ1xuKTogRE9NTm9kZSA9PiB7XG4gICAgY29uc3QgW2NoaWxkXSA9IGdldEVkaXRhYmxlQ2hpbGRBbmRJbmRleChwYXJlbnQsIGluZGV4LCBkaXJlY3Rpb24pO1xuICAgIHJldHVybiBjaGlsZDtcbn1cblxuLyoqXG4gKiBHZXQgYSBwbGFpbnRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbnRlbnQgb2YgYSBub2RlLCBhY2NvdW50aW5nIGZvciBibG9ja1xuICogZWxlbWVudHMgd2hpY2ggZ2V0IGEgbmV3bGluZSBhcHBlbmRlZC5cbiAqXG4gKiBUaGUgZG9tTm9kZSBtdXN0IGJlIGF0dGFjaGVkIHRvIHRoZSBET00uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRQbGFpblRleHQgPSAoZG9tTm9kZTogRE9NTm9kZSkgPT4ge1xuICAgIGxldCB0ZXh0ID0gJyc7XG5cbiAgICBpZiAoaXNET01UZXh0KGRvbU5vZGUpICYmIGRvbU5vZGUubm9kZVZhbHVlKSB7XG4gICAgICAgIHJldHVybiBkb21Ob2RlLm5vZGVWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoaXNET01FbGVtZW50KGRvbU5vZGUpKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGROb2RlIG9mIEFycmF5LmZyb20oZG9tTm9kZS5jaGlsZE5vZGVzKSkge1xuICAgICAgICAgICAgdGV4dCArPSBnZXRQbGFpblRleHQoY2hpbGROb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRpc3BsYXkgPSBnZXRDb21wdXRlZFN0eWxlKGRvbU5vZGUpLmdldFByb3BlcnR5VmFsdWUoJ2Rpc3BsYXknKTtcblxuICAgICAgICBpZiAoZGlzcGxheSA9PT0gJ2Jsb2NrJyB8fCBkaXNwbGF5ID09PSAnbGlzdCcgfHwgZG9tTm9kZS50YWdOYW1lID09PSAnQlInKSB7XG4gICAgICAgICAgICB0ZXh0ICs9ICdcXG4nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRleHQ7XG59O1xuXG4iXX0=
160
+ /**
161
+ * Get x-slate-fragment attribute from data-slate-fragment
162
+ */
163
+ const catchSlateFragment = /data-slate-fragment="(.+?)"/m;
164
+ export const getSlateFragmentAttribute = (dataTransfer) => {
165
+ const htmlData = dataTransfer.getData('text/html');
166
+ const [, fragment] = htmlData.match(catchSlateFragment) || [];
167
+ return fragment;
168
+ };
169
+ /**
170
+ * Get the x-slate-fragment attribute that exist in text/html data
171
+ * and append it to the DataTransfer object
172
+ */
173
+ export const getClipboardData = (dataTransfer, clipboardFormatKey = 'x-slate-fragment') => {
174
+ if (!dataTransfer.getData(`application/${clipboardFormatKey}`)) {
175
+ const fragment = getSlateFragmentAttribute(dataTransfer);
176
+ if (fragment) {
177
+ const clipboardData = new DataTransfer();
178
+ dataTransfer.types.forEach(type => {
179
+ clipboardData.setData(type, dataTransfer.getData(type));
180
+ });
181
+ clipboardData.setData(`application/${clipboardFormatKey}`, fragment);
182
+ return clipboardData;
183
+ }
184
+ }
185
+ return dataTransfer;
186
+ };
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcGFja2FnZXMvc3JjL3V0aWxzL2RvbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILDhFQUE4RTtBQUM5RSw2RUFBNkU7QUFDN0UsdURBQXVEO0FBQ3ZELElBQU8sT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBTyxVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztBQUN2QyxJQUFPLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO0FBQ3ZDLElBQU8sT0FBTyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBTyxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQztBQUNuQyxJQUFPLFlBQVksR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDO0FBQzNDLElBQU8sY0FBYyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUM7QUFDL0MsT0FBTyxFQUNILE9BQU8sRUFDUCxVQUFVLEVBQ1YsVUFBVSxFQUNWLE9BQU8sRUFDUCxRQUFRLEVBQ1IsWUFBWSxFQUNaLGNBQWMsRUFDakIsQ0FBQztBQVlGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBVSxFQUFpQixFQUFFO0lBQ3hELE9BQU8sQ0FDSCxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsYUFBYSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUM1RSxDQUFDO0FBQ04sQ0FBQyxDQUFBO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFVLEVBQXVCLEVBQUU7SUFDNUQsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUM7QUFDcEQsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxZ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Q0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO1lBQzNELENBQUMsQ0FBQyxDQUFBO1lBQ0YsYUFBYSxDQUFDLE9BQU8sQ0FBQyxlQUFlLGtCQUFrQixFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUE7WUFDcEUsT0FBTyxhQUFhLENBQUE7U0FDdkI7S0FDSjtJQUNELE9BQU8sWUFBWSxDQUFBO0FBQ3ZCLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVHlwZXMuXG4gKi9cblxuLy8gQ09NUEFUOiBUaGlzIGlzIHJlcXVpcmVkIHRvIHByZXZlbnQgVHlwZVNjcmlwdCBhbGlhc2VzIGZyb20gZG9pbmcgc29tZSB2ZXJ5XG4vLyB3ZWlyZCB0aGluZ3MgZm9yIFNsYXRlJ3MgdHlwZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIGdsb2JhbHMuICgyMDE5LzExLzI3KVxuLy8gaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy8zNTAwMlxuaW1wb3J0IERPTU5vZGUgPSBnbG9iYWxUaGlzLk5vZGU7XG5pbXBvcnQgRE9NQ29tbWVudCA9IGdsb2JhbFRoaXMuQ29tbWVudDtcbmltcG9ydCBET01FbGVtZW50ID0gZ2xvYmFsVGhpcy5FbGVtZW50O1xuaW1wb3J0IERPTVRleHQgPSBnbG9iYWxUaGlzLlRleHQ7XG5pbXBvcnQgRE9NUmFuZ2UgPSBnbG9iYWxUaGlzLlJhbmdlO1xuaW1wb3J0IERPTVNlbGVjdGlvbiA9IGdsb2JhbFRoaXMuU2VsZWN0aW9uO1xuaW1wb3J0IERPTVN0YXRpY1JhbmdlID0gZ2xvYmFsVGhpcy5TdGF0aWNSYW5nZTtcbmV4cG9ydCB7XG4gICAgRE9NTm9kZSxcbiAgICBET01Db21tZW50LFxuICAgIERPTUVsZW1lbnQsXG4gICAgRE9NVGV4dCxcbiAgICBET01SYW5nZSxcbiAgICBET01TZWxlY3Rpb24sXG4gICAgRE9NU3RhdGljUmFuZ2Vcbn07XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAgICAgU2VsZWN0aW9uOiB0eXBlb2YgU2VsZWN0aW9uWydjb25zdHJ1Y3RvciddO1xuICAgICAgICBEYXRhVHJhbnNmZXI6IHR5cGVvZiBEYXRhVHJhbnNmZXJbJ2NvbnN0cnVjdG9yJ107XG4gICAgICAgIE5vZGU6IHR5cGVvZiBOb2RlWydjb25zdHJ1Y3RvciddO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgRE9NUG9pbnQgPSBbTm9kZSwgbnVtYmVyXTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBob3N0IHdpbmRvdyBvZiBhIERPTSBub2RlXG4gKi9cbmV4cG9ydCBjb25zdCBnZXREZWZhdWx0VmlldyA9ICh2YWx1ZTogYW55KTogV2luZG93IHwgbnVsbCA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgKHZhbHVlICYmIHZhbHVlLm93bmVyRG9jdW1lbnQgJiYgdmFsdWUub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykgfHwgbnVsbFxuICAgICk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBET00gbm9kZSBpcyBhIGNvbW1lbnQgbm9kZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGlzRE9NQ29tbWVudCA9ICh2YWx1ZTogYW55KTogdmFsdWUgaXMgRE9NQ29tbWVudCA9PiB7XG4gICAgcmV0dXJuIGlzRE9NTm9kZSh2YWx1ZSkgJiYgdmFsdWUubm9kZVR5cGUgPT09IDg7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGEgRE9NIG5vZGUgaXMgYW4gZWxlbWVudCBub2RlLlxuICovXG5leHBvcnQgY29uc3QgaXNET01FbGVtZW50ID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBET01FbGVtZW50ID0+IHtcbiAgICByZXR1cm4gaXNET01Ob2RlKHZhbHVlKSAmJiB2YWx1ZS5ub2RlVHlwZSA9PT0gMTtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhIERPTSBub2RlLlxuICovXG5leHBvcnQgY29uc3QgaXNET01Ob2RlID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBET01Ob2RlID0+IHtcbiAgICBjb25zdCB3aW5kb3cgPSBnZXREZWZhdWx0Vmlldyh2YWx1ZSlcbiAgICByZXR1cm4gISF3aW5kb3cgJiYgdmFsdWUgaW5zdGFuY2VvZiB3aW5kb3cuTm9kZTtcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhIERPTSBzZWxlY3Rpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RPTVNlbGVjdGlvbiA9ICh2YWx1ZTogYW55KTogdmFsdWUgaXMgRE9NU2VsZWN0aW9uID0+IHtcbiAgICBjb25zdCB3aW5kb3cgPSB2YWx1ZSAmJiB2YWx1ZS5hbmNob3JOb2RlICYmIGdldERlZmF1bHRWaWV3KHZhbHVlLmFuY2hvck5vZGUpXG4gICAgcmV0dXJuICEhd2luZG93ICYmIHZhbHVlIGluc3RhbmNlb2Ygd2luZG93LlNlbGVjdGlvblxufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgRE9NIG5vZGUgaXMgYW4gZWxlbWVudCBub2RlLlxuICovXG5leHBvcnQgY29uc3QgaXNET01UZXh0ID0gKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBET01UZXh0ID0+IHtcbiAgICByZXR1cm4gaXNET01Ob2RlKHZhbHVlKSAmJiB2YWx1ZS5ub2RlVHlwZSA9PT0gMztcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBwYXN0ZSBldmVudCBpcyBhIHBsYWludGV4dC1vbmx5IGV2ZW50LlxuICovXG5leHBvcnQgY29uc3QgaXNQbGFpblRleHRPbmx5UGFzdGUgPSAoZXZlbnQ6IENsaXBib2FyZEV2ZW50KSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YSAmJlxuICAgICAgICBldmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEoJ3RleHQvcGxhaW4nKSAhPT0gJycgJiZcbiAgICAgICAgZXZlbnQuY2xpcGJvYXJkRGF0YS50eXBlcy5sZW5ndGggPT09IDFcbiAgICApO1xufTtcblxuLyoqXG4gKiBOb3JtYWxpemUgYSBET00gcG9pbnQgc28gdGhhdCBpdCBhbHdheXMgcmVmZXJzIHRvIGEgdGV4dCBub2RlLlxuICovXG5leHBvcnQgY29uc3Qgbm9ybWFsaXplRE9NUG9pbnQgPSAoZG9tUG9pbnQ6IERPTVBvaW50KTogRE9NUG9pbnQgPT4ge1xuICAgIGxldCBbbm9kZSwgb2Zmc2V0XSA9IGRvbVBvaW50O1xuXG4gICAgLy8gSWYgaXQncyBhbiBlbGVtZW50IG5vZGUsIGl0cyBvZmZzZXQgcmVmZXJzIHRvIHRoZSBpbmRleCBvZiBpdHMgY2hpbGRyZW5cbiAgICAvLyBpbmNsdWRpbmcgY29tbWVudCBub2Rlcywgc28gdHJ5IHRvIGZpbmQgdGhlIHJpZ2h0IHRleHQgY2hpbGQgbm9kZS5cbiAgICBpZiAoaXNET01FbGVtZW50KG5vZGUpICYmIG5vZGUuY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgICAgbGV0IGlzTGFzdCA9IG9mZnNldCA9PT0gbm9kZS5jaGlsZE5vZGVzLmxlbmd0aDtcbiAgICAgICAgbGV0IGluZGV4ID0gaXNMYXN0ID8gb2Zmc2V0IC0gMSA6IG9mZnNldDtcbiAgICAgICAgO1tub2RlLCBpbmRleF0gPSBnZXRFZGl0YWJsZUNoaWxkQW5kSW5kZXgobm9kZSxcbiAgICAgICAgICAgIGluZGV4LFxuICAgICAgICAgICAgaXNMYXN0ID8gJ2JhY2t3YXJkJyA6ICdmb3J3YXJkJyk7XG5cbiAgICAgICAgLy8gSWYgdGhlIGVkaXRhYmxlIGNoaWxkIGZvdW5kIGlzIGluIGZyb250IG9mIGlucHV0IG9mZnNldCwgd2UgaW5zdGVhZCBzZWVrIHRvIGl0cyBlbmRcbiAgICAgICAgaXNMYXN0ID0gaW5kZXggPCBvZmZzZXQ7XG5cbiAgICAgICAgLy8gSWYgdGhlIG5vZGUgaGFzIGNoaWxkcmVuLCB0cmF2ZXJzZSB1bnRpbCB3ZSBoYXZlIGEgbGVhZiBub2RlLiBMZWFmIG5vZGVzXG4gICAgICAgIC8vIGNhbiBiZSBlaXRoZXIgdGV4dCBub2Rlcywgb3Igb3RoZXIgdm9pZCBET00gbm9kZXMuXG4gICAgICAgIHdoaWxlIChpc0RPTUVsZW1lbnQobm9kZSkgJiYgbm9kZS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3QgaSA9IGlzTGFzdCA/IG5vZGUuY2hpbGROb2Rlcy5sZW5ndGggLSAxIDogMDtcbiAgICAgICAgICAgIG5vZGUgPSBnZXRFZGl0YWJsZUNoaWxkKG5vZGUsIGksIGlzTGFzdCA/ICdiYWNrd2FyZCcgOiAnZm9yd2FyZCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBuZXcgb2Zmc2V0IGluc2lkZSB0aGUgdGV4dCBub2RlLlxuICAgICAgICBvZmZzZXQgPVxuICAgICAgICAgICAgaXNMYXN0ICYmIG5vZGUudGV4dENvbnRlbnQgIT0gbnVsbCA/IG5vZGUudGV4dENvbnRlbnQubGVuZ3RoIDogMDtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdGhlIG5vZGUgYW5kIG9mZnNldC5cbiAgICByZXR1cm4gW25vZGUsIG9mZnNldF07XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2V0aGVyIHRoZSBhY3RpdmUgZWxlbWVudCBpcyBuZXN0ZWQgd2l0aGluIGEgc2hhZG93Um9vdFxuICovXG5cbmV4cG9ydCBjb25zdCBoYXNTaGFkb3dSb290ID0gKCkgPT4ge1xuICAgIHJldHVybiAhIShcbiAgICAgICAgd2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuc2hhZG93Um9vdFxuICAgIClcbn1cblxuLyoqXG4gKiBHZXQgdGhlIG5lYXJlc3QgZWRpdGFibGUgY2hpbGQgYW5kIGluZGV4IGF0IGBpbmRleGAgaW4gYSBgcGFyZW50YCwgcHJlZmVycmluZ1xuICogYGRpcmVjdGlvbmAuXG4gKi9cblxuZXhwb3J0IGNvbnN0IGdldEVkaXRhYmxlQ2hpbGRBbmRJbmRleCA9IChcbiAgICBwYXJlbnQ6IERPTUVsZW1lbnQsXG4gICAgaW5kZXg6IG51bWJlcixcbiAgICBkaXJlY3Rpb246ICdmb3J3YXJkJyB8ICdiYWNrd2FyZCdcbik6IFtET01Ob2RlLCBudW1iZXJdID0+IHtcbiAgICBjb25zdCB7IGNoaWxkTm9kZXMgfSA9IHBhcmVudDtcbiAgICBsZXQgY2hpbGQgPSBjaGlsZE5vZGVzW2luZGV4XTtcbiAgICBsZXQgaSA9IGluZGV4O1xuICAgIGxldCB0cmllZEZvcndhcmQgPSBmYWxzZTtcbiAgICBsZXQgdHJpZWRCYWNrd2FyZCA9IGZhbHNlO1xuXG4gICAgLy8gV2hpbGUgdGhlIGNoaWxkIGlzIGEgY29tbWVudCBub2RlLCBvciBhbiBlbGVtZW50IG5vZGUgd2l0aCBubyBjaGlsZHJlbixcbiAgICAvLyBrZWVwIGl0ZXJhdGluZyB0byBmaW5kIGEgc2libGluZyBub24tdm9pZCwgbm9uLWNvbW1lbnQgbm9kZS5cbiAgICB3aGlsZSAoXG4gICAgICAgIGlzRE9NQ29tbWVudChjaGlsZCkgfHxcbiAgICAgICAgKGlzRE9NRWxlbWVudChjaGlsZCkgJiYgY2hpbGQuY2hpbGROb2Rlcy5sZW5ndGggPT09IDApIHx8XG4gICAgICAgIChpc0RPTUVsZW1lbnQoY2hpbGQpICYmIGNoaWxkLmdldEF0dHJpYnV0ZSgnY29udGVudGVkaXRhYmxlJykgPT09ICdmYWxzZScpXG4gICAgKSB7XG4gICAgICAgIGlmICh0cmllZEZvcndhcmQgJiYgdHJpZWRCYWNrd2FyZCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaSA+PSBjaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgdHJpZWRGb3J3YXJkID0gdHJ1ZTtcbiAgICAgICAgICAgIGkgPSBpbmRleCAtIDE7XG4gICAgICAgICAgICBkaXJlY3Rpb24gPSAnYmFja3dhcmQnO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaSA8IDApIHtcbiAgICAgICAgICAgIHRyaWVkQmFja3dhcmQgPSB0cnVlO1xuICAgICAgICAgICAgaSA9IGluZGV4ICsgMTtcbiAgICAgICAgICAgIGRpcmVjdGlvbiA9ICdmb3J3YXJkJztcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgY2hpbGQgPSBjaGlsZE5vZGVzW2ldO1xuICAgICAgICBpbmRleCA9IGk7XG4gICAgICAgIGkgKz0gZGlyZWN0aW9uID09PSAnZm9yd2FyZCcgPyAxIDogLTE7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtjaGlsZCwgaW5kZXhdO1xufVxuXG4vKipcbiAqIEdldCB0aGUgbmVhcmVzdCBlZGl0YWJsZSBjaGlsZCBhdCBgaW5kZXhgIGluIGEgYHBhcmVudGAsIHByZWZlcnJpbmdcbiAqIGBkaXJlY3Rpb25gLlxuICovXG5cbmV4cG9ydCBjb25zdCBnZXRFZGl0YWJsZUNoaWxkID0gKFxuICAgIHBhcmVudDogRE9NRWxlbWVudCxcbiAgICBpbmRleDogbnVtYmVyLFxuICAgIGRpcmVjdGlvbjogJ2ZvcndhcmQnIHwgJ2JhY2t3YXJkJ1xuKTogRE9NTm9kZSA9PiB7XG4gICAgY29uc3QgW2NoaWxkXSA9IGdldEVkaXRhYmxlQ2hpbGRBbmRJbmRleChwYXJlbnQsIGluZGV4LCBkaXJlY3Rpb24pO1xuICAgIHJldHVybiBjaGlsZDtcbn1cblxuLyoqXG4gKiBHZXQgYSBwbGFpbnRleHQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvbnRlbnQgb2YgYSBub2RlLCBhY2NvdW50aW5nIGZvciBibG9ja1xuICogZWxlbWVudHMgd2hpY2ggZ2V0IGEgbmV3bGluZSBhcHBlbmRlZC5cbiAqXG4gKiBUaGUgZG9tTm9kZSBtdXN0IGJlIGF0dGFjaGVkIHRvIHRoZSBET00uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRQbGFpblRleHQgPSAoZG9tTm9kZTogRE9NTm9kZSkgPT4ge1xuICAgIGxldCB0ZXh0ID0gJyc7XG5cbiAgICBpZiAoaXNET01UZXh0KGRvbU5vZGUpICYmIGRvbU5vZGUubm9kZVZhbHVlKSB7XG4gICAgICAgIHJldHVybiBkb21Ob2RlLm5vZGVWYWx1ZTtcbiAgICB9XG5cbiAgICBpZiAoaXNET01FbGVtZW50KGRvbU5vZGUpKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGROb2RlIG9mIEFycmF5LmZyb20oZG9tTm9kZS5jaGlsZE5vZGVzKSkge1xuICAgICAgICAgICAgdGV4dCArPSBnZXRQbGFpblRleHQoY2hpbGROb2RlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRpc3BsYXkgPSBnZXRDb21wdXRlZFN0eWxlKGRvbU5vZGUpLmdldFByb3BlcnR5VmFsdWUoJ2Rpc3BsYXknKTtcblxuICAgICAgICBpZiAoZGlzcGxheSA9PT0gJ2Jsb2NrJyB8fCBkaXNwbGF5ID09PSAnbGlzdCcgfHwgZG9tTm9kZS50YWdOYW1lID09PSAnQlInKSB7XG4gICAgICAgICAgICB0ZXh0ICs9ICdcXG4nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRleHQ7XG59O1xuXG4vKipcbiAqIEdldCB4LXNsYXRlLWZyYWdtZW50IGF0dHJpYnV0ZSBmcm9tIGRhdGEtc2xhdGUtZnJhZ21lbnRcbiAqL1xuY29uc3QgY2F0Y2hTbGF0ZUZyYWdtZW50ID0gL2RhdGEtc2xhdGUtZnJhZ21lbnQ9XCIoLis/KVwiL21cbmV4cG9ydCBjb25zdCBnZXRTbGF0ZUZyYWdtZW50QXR0cmlidXRlID0gKFxuICAgIGRhdGFUcmFuc2ZlcjogRGF0YVRyYW5zZmVyXG4pOiBzdHJpbmcgfCB2b2lkID0+IHtcbiAgICBjb25zdCBodG1sRGF0YSA9IGRhdGFUcmFuc2Zlci5nZXREYXRhKCd0ZXh0L2h0bWwnKVxuICAgIGNvbnN0IFssIGZyYWdtZW50XSA9IGh0bWxEYXRhLm1hdGNoKGNhdGNoU2xhdGVGcmFnbWVudCkgfHwgW11cbiAgICByZXR1cm4gZnJhZ21lbnRcbn1cblxuLyoqXG4gKiBHZXQgdGhlIHgtc2xhdGUtZnJhZ21lbnQgYXR0cmlidXRlIHRoYXQgZXhpc3QgaW4gdGV4dC9odG1sIGRhdGFcbiAqIGFuZCBhcHBlbmQgaXQgdG8gdGhlIERhdGFUcmFuc2ZlciBvYmplY3RcbiAqL1xuZXhwb3J0IGNvbnN0IGdldENsaXBib2FyZERhdGEgPSAoZGF0YVRyYW5zZmVyOiBEYXRhVHJhbnNmZXIsIGNsaXBib2FyZEZvcm1hdEtleSA9ICd4LXNsYXRlLWZyYWdtZW50Jyk6IERhdGFUcmFuc2ZlciA9PiB7XG4gICAgaWYgKCFkYXRhVHJhbnNmZXIuZ2V0RGF0YShgYXBwbGljYXRpb24vJHtjbGlwYm9hcmRGb3JtYXRLZXl9YCkpIHtcbiAgICAgICAgY29uc3QgZnJhZ21lbnQgPSBnZXRTbGF0ZUZyYWdtZW50QXR0cmlidXRlKGRhdGFUcmFuc2ZlcilcbiAgICAgICAgaWYgKGZyYWdtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBjbGlwYm9hcmREYXRhID0gbmV3IERhdGFUcmFuc2ZlcigpXG4gICAgICAgICAgICBkYXRhVHJhbnNmZXIudHlwZXMuZm9yRWFjaCh0eXBlID0+IHtcbiAgICAgICAgICAgICAgICBjbGlwYm9hcmREYXRhLnNldERhdGEodHlwZSwgZGF0YVRyYW5zZmVyLmdldERhdGEodHlwZSkpXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgY2xpcGJvYXJkRGF0YS5zZXREYXRhKGBhcHBsaWNhdGlvbi8ke2NsaXBib2FyZEZvcm1hdEtleX1gLCBmcmFnbWVudClcbiAgICAgICAgICAgIHJldHVybiBjbGlwYm9hcmREYXRhXG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRhdGFUcmFuc2ZlclxufVxuIl19
@@ -3,6 +3,7 @@ export const IS_IOS = typeof navigator !== 'undefined' &&
3
3
  /iPad|iPhone|iPod/.test(navigator.userAgent) &&
4
4
  !window.MSStream;
5
5
  export const IS_APPLE = typeof navigator !== 'undefined' && /Mac OS X/.test(navigator.userAgent);
6
+ export const IS_ANDROID = typeof navigator !== 'undefined' && /Android/.test(navigator.userAgent);
6
7
  export const IS_FIREFOX = typeof navigator !== 'undefined' &&
7
8
  /^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);
8
9
  export const IS_SAFARI = typeof navigator !== 'undefined' &&
@@ -14,4 +15,22 @@ export const IS_CHROME = typeof navigator !== 'undefined' && /Chrome/i.test(navi
14
15
  // Native beforeInput events don't work well with react on Chrome 75 and older, Chrome 76+ can use beforeInput
15
16
  export const IS_CHROME_LEGACY = typeof navigator !== 'undefined' &&
16
17
  /Chrome?\/(?:[0-7][0-5]|[0-6][0-9])/i.test(navigator.userAgent);
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9zcmMvdXRpbHMvZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUNmLE9BQU8sU0FBUyxLQUFLLFdBQVc7SUFDaEMsT0FBTyxNQUFNLEtBQUssV0FBVztJQUM3QixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztJQUM1QyxDQUFFLE1BQWMsQ0FBQyxRQUFRLENBQUM7QUFFOUIsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUNqQixPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFN0UsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUNuQixPQUFPLFNBQVMsS0FBSyxXQUFXO0lBQ2hDLGtDQUFrQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFakUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUNsQixPQUFPLFNBQVMsS0FBSyxXQUFXO0lBQ2hDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFekQscUNBQXFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FDdkIsT0FBTyxTQUFTLEtBQUssV0FBVztJQUNoQyxtQ0FBbUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRWxFLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FDbEIsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRTVFLDhHQUE4RztBQUM5RyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FDekIsT0FBTyxTQUFTLEtBQUssV0FBVztJQUNoQyxxQ0FBcUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IElTX0lPUyA9XG4gICAgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIC9pUGFkfGlQaG9uZXxpUG9kLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpICYmXG4gICAgISh3aW5kb3cgYXMgYW55KS5NU1N0cmVhbTtcblxuZXhwb3J0IGNvbnN0IElTX0FQUExFID1cbiAgICB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiAvTWFjIE9TIFgvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbmV4cG9ydCBjb25zdCBJU19GSVJFRk9YID1cbiAgICB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIC9eKD8hLipTZWFtb25rZXkpKD89LipGaXJlZm94KS4qL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuZXhwb3J0IGNvbnN0IElTX1NBRkFSSSA9XG4gICAgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAvVmVyc2lvblxcL1tcXGRcXC5dKy4qU2FmYXJpLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG4vLyBcIm1vZGVyblwiIEVkZ2Ugd2FzIHJlbGVhc2VkIGF0IDc5LnhcbmV4cG9ydCBjb25zdCBJU19FREdFX0xFR0FDWSA9XG4gICAgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAvRWRnZT9cXC8oPzpbMC02XVswLTldfFswLTddWzAtOF0pL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuZXhwb3J0IGNvbnN0IElTX0NIUk9NRSA9XG4gICAgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgL0Nocm9tZS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbi8vIE5hdGl2ZSBiZWZvcmVJbnB1dCBldmVudHMgZG9uJ3Qgd29yayB3ZWxsIHdpdGggcmVhY3Qgb24gQ2hyb21lIDc1IGFuZCBvbGRlciwgQ2hyb21lIDc2KyBjYW4gdXNlIGJlZm9yZUlucHV0XG5leHBvcnQgY29uc3QgSVNfQ0hST01FX0xFR0FDWSA9XG4gICAgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAvQ2hyb21lP1xcLyg/OlswLTddWzAtNV18WzAtNl1bMC05XSkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuIl19
18
+ // Firefox did not support `beforeInput` until `v87`.
19
+ export const IS_FIREFOX_LEGACY = typeof navigator !== 'undefined' &&
20
+ /^(?!.*Seamonkey)(?=.*Firefox\/(?:[0-7][0-9]|[0-8][0-6])).*/i.test(navigator.userAgent);
21
+ // qq browser
22
+ export const IS_QQBROWSER = typeof navigator !== 'undefined' && /.*QQBrowser/.test(navigator.userAgent);
23
+ // UC mobile browser
24
+ export const IS_UC_MOBILE = typeof navigator !== 'undefined' && /.*UCBrowser/.test(navigator.userAgent);
25
+ // Wechat browser
26
+ export const IS_WECHATBROWSER = typeof navigator !== 'undefined' && /.*Wechat/.test(navigator.userAgent);
27
+ // COMPAT: Firefox/Edge Legacy don't support the `beforeinput` event
28
+ // Chrome Legacy doesn't support `beforeinput` correctly
29
+ export const HAS_BEFORE_INPUT_SUPPORT = !IS_CHROME_LEGACY &&
30
+ !IS_EDGE_LEGACY &&
31
+ // globalThis is undefined in older browsers
32
+ typeof globalThis !== 'undefined' &&
33
+ globalThis.InputEvent &&
34
+ // @ts-ignore The `getTargetRanges` property isn't recognized.
35
+ typeof globalThis.InputEvent.prototype.getTargetRanges === 'function';
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wYWNrYWdlcy9zcmMvdXRpbHMvZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUNmLE9BQU8sU0FBUyxLQUFLLFdBQVc7SUFDaEMsT0FBTyxNQUFNLEtBQUssV0FBVztJQUM3QixrQkFBa0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQztJQUM1QyxDQUFFLE1BQWMsQ0FBQyxRQUFRLENBQUM7QUFFOUIsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUNqQixPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFN0UsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUNuQixPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUE7QUFFM0UsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUNuQixPQUFPLFNBQVMsS0FBSyxXQUFXO0lBQ2hDLGtDQUFrQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFakUsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUNsQixPQUFPLFNBQVMsS0FBSyxXQUFXO0lBQ2hDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFekQscUNBQXFDO0FBQ3JDLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FDdkIsT0FBTyxTQUFTLEtBQUssV0FBVztJQUNoQyxtQ0FBbUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRWxFLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FDbEIsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRTVFLDhHQUE4RztBQUM5RyxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FDekIsT0FBTyxTQUFTLEtBQUssV0FBVztJQUNoQyxxQ0FBcUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBR3BFLHFEQUFxRDtBQUNyRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FDMUIsT0FBTyxTQUFTLEtBQUssV0FBVztJQUNoQyw2REFBNkQsQ0FBQyxJQUFJLENBQzlELFNBQVMsQ0FBQyxTQUFTLENBQ3RCLENBQUM7QUFFTixhQUFhO0FBQ2IsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUNyQixPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFFaEYsb0JBQW9CO0FBQ3BCLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FDckIsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRWhGLGlCQUFpQjtBQUNqQixNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FDekIsT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBRTdFLG9FQUFvRTtBQUNwRSx3REFBd0Q7QUFDeEQsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQ2pDLENBQUMsZ0JBQWdCO0lBQ2pCLENBQUMsY0FBYztJQUNmLDRDQUE0QztJQUM1QyxPQUFPLFVBQVUsS0FBSyxXQUFXO0lBQ2pDLFVBQVUsQ0FBQyxVQUFVO0lBQ3JCLDhEQUE4RDtJQUM5RCxPQUFPLFVBQVUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLGVBQWUsS0FBSyxVQUFVLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgSVNfSU9TID1cbiAgICB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmXG4gICAgL2lQYWR8aVBob25lfGlQb2QvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCkgJiZcbiAgICAhKHdpbmRvdyBhcyBhbnkpLk1TU3RyZWFtO1xuXG5leHBvcnQgY29uc3QgSVNfQVBQTEUgPVxuICAgIHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIC9NYWMgT1MgWC8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuZXhwb3J0IGNvbnN0IElTX0FORFJPSUQgPVxuICAgIHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIC9BbmRyb2lkLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpXG5cbmV4cG9ydCBjb25zdCBJU19GSVJFRk9YID1cbiAgICB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIC9eKD8hLipTZWFtb25rZXkpKD89LipGaXJlZm94KS4qL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuZXhwb3J0IGNvbnN0IElTX1NBRkFSSSA9XG4gICAgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAvVmVyc2lvblxcL1tcXGRcXC5dKy4qU2FmYXJpLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG4vLyBcIm1vZGVyblwiIEVkZ2Ugd2FzIHJlbGVhc2VkIGF0IDc5LnhcbmV4cG9ydCBjb25zdCBJU19FREdFX0xFR0FDWSA9XG4gICAgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAvRWRnZT9cXC8oPzpbMC02XVswLTldfFswLTddWzAtOF0pL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuZXhwb3J0IGNvbnN0IElTX0NIUk9NRSA9XG4gICAgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgL0Nocm9tZS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbi8vIE5hdGl2ZSBiZWZvcmVJbnB1dCBldmVudHMgZG9uJ3Qgd29yayB3ZWxsIHdpdGggcmVhY3Qgb24gQ2hyb21lIDc1IGFuZCBvbGRlciwgQ2hyb21lIDc2KyBjYW4gdXNlIGJlZm9yZUlucHV0XG5leHBvcnQgY29uc3QgSVNfQ0hST01FX0xFR0FDWSA9XG4gICAgdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiZcbiAgICAvQ2hyb21lP1xcLyg/OlswLTddWzAtNV18WzAtNl1bMC05XSkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG5cbi8vIEZpcmVmb3ggZGlkIG5vdCBzdXBwb3J0IGBiZWZvcmVJbnB1dGAgdW50aWwgYHY4N2AuXG5leHBvcnQgY29uc3QgSVNfRklSRUZPWF9MRUdBQ1kgPVxuICAgIHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmXG4gICAgL14oPyEuKlNlYW1vbmtleSkoPz0uKkZpcmVmb3hcXC8oPzpbMC03XVswLTldfFswLThdWzAtNl0pKS4qL2kudGVzdChcbiAgICAgICAgbmF2aWdhdG9yLnVzZXJBZ2VudFxuICAgICk7XG5cbi8vIHFxIGJyb3dzZXJcbmV4cG9ydCBjb25zdCBJU19RUUJST1dTRVIgPVxuICAgIHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIC8uKlFRQnJvd3Nlci8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLy8gVUMgbW9iaWxlIGJyb3dzZXJcbmV4cG9ydCBjb25zdCBJU19VQ19NT0JJTEUgPVxuICAgIHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIC8uKlVDQnJvd3Nlci8udGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcblxuLy8gV2VjaGF0IGJyb3dzZXJcbmV4cG9ydCBjb25zdCBJU19XRUNIQVRCUk9XU0VSID1cbiAgICB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiAvLipXZWNoYXQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbi8vIENPTVBBVDogRmlyZWZveC9FZGdlIExlZ2FjeSBkb24ndCBzdXBwb3J0IHRoZSBgYmVmb3JlaW5wdXRgIGV2ZW50XG4vLyBDaHJvbWUgTGVnYWN5IGRvZXNuJ3Qgc3VwcG9ydCBgYmVmb3JlaW5wdXRgIGNvcnJlY3RseVxuZXhwb3J0IGNvbnN0IEhBU19CRUZPUkVfSU5QVVRfU1VQUE9SVCA9XG4gICAgIUlTX0NIUk9NRV9MRUdBQ1kgJiZcbiAgICAhSVNfRURHRV9MRUdBQ1kgJiZcbiAgICAvLyBnbG9iYWxUaGlzIGlzIHVuZGVmaW5lZCBpbiBvbGRlciBicm93c2Vyc1xuICAgIHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyAmJlxuICAgIGdsb2JhbFRoaXMuSW5wdXRFdmVudCAmJlxuICAgIC8vIEB0cy1pZ25vcmUgVGhlIGBnZXRUYXJnZXRSYW5nZXNgIHByb3BlcnR5IGlzbid0IHJlY29nbml6ZWQuXG4gICAgdHlwZW9mIGdsb2JhbFRoaXMuSW5wdXRFdmVudC5wcm90b3R5cGUuZ2V0VGFyZ2V0UmFuZ2VzID09PSAnZnVuY3Rpb24nIl19
@@ -61,6 +61,31 @@ export class BaseLeafComponent extends BaseComponent {
61
61
  }
62
62
  this.cdr.markForCheck();
63
63
  }
64
+ renderPlaceholder() {
65
+ // issue-1: IME input was interrupted
66
+ // issue-2: IME input focus jumping
67
+ // Issue occurs when the span node of the placeholder is before the slateString span node
68
+ if (this.context.leaf['placeholder']) {
69
+ if (!this.placeholderElement) {
70
+ this.placeholderElement = document.createElement('span');
71
+ this.placeholderElement.innerText = this.context.leaf['placeholder'];
72
+ this.placeholderElement.contentEditable = 'false';
73
+ this.placeholderElement.setAttribute('data-slate-placeholder', 'true');
74
+ this.nativeElement.classList.add('leaf-with-placeholder');
75
+ this.nativeElement.appendChild(this.placeholderElement);
76
+ }
77
+ }
78
+ else {
79
+ this.destroyPlaceholder();
80
+ }
81
+ }
82
+ destroyPlaceholder() {
83
+ if (this.placeholderElement) {
84
+ this.placeholderElement.remove();
85
+ this.placeholderElement = null;
86
+ this.nativeElement.classList.remove('leaf-with-placeholder');
87
+ }
88
+ }
64
89
  }
65
90
  BaseLeafComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: BaseLeafComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
66
91
  BaseLeafComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.7", type: BaseLeafComponent, host: { properties: { "attr.data-slate-leaf": "this.isSlateLeaf" } }, usesInheritance: true, ngImport: i0 });
@@ -176,4 +201,4 @@ BaseTextComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", vers
176
201
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: BaseTextComponent, decorators: [{
177
202
  type: Directive
178
203
  }] });
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3NyYy92aWV3L2Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQyxTQUFTLEVBQWMsV0FBVyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFM0gsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RixPQUFPLEVBQXVCLEtBQUssRUFBUSxNQUFNLE9BQU8sQ0FBQztBQUV6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFVakU7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLGFBQWE7SUEwQi9CLFlBQW1CLFVBQXNCLEVBQVMsR0FBc0I7UUFBckQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFTLFFBQUcsR0FBSCxHQUFHLENBQW1CO0lBQUksQ0FBQztJQXZCN0UsSUFDSSxPQUFPLENBQUMsS0FBUTtRQUNoQixJQUFJLHNCQUFzQixDQUFJLElBQUksQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFJRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDdkQsQ0FBQztJQUVELElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7SUFDekMsQ0FBQzs7MEdBeEJpQixhQUFhOzhGQUFiLGFBQWE7MkZBQWIsYUFBYTtrQkFEbEMs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QUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzVCLENBQUM7SUFFRCxhQUFhO1FBQ1QsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuRCxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZELGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3JDO0lBQ0wsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNuQixPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDOzs4R0E5QlEsaUJBQWlCO2tHQUFqQixpQkFBaUI7MkZBQWpCLGlCQUFpQjtrQkFEN0IsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBbmd1bGFyRWRpdG9yIH0gZnJvbSBcIi4uL3BsdWdpbnMvYW5ndWxhci1lZGl0b3JcIjtcbmltcG9ydCB7IEVMRU1FTlRfVE9fQ09NUE9ORU5ULCBFTEVNRU5UX1RPX05PREUsIE5PREVfVE9fRUxFTUVOVCB9IGZyb20gXCIuLi91dGlscy93ZWFrLW1hcHNcIjtcbmltcG9ydCB7IFNsYXRlVmlld0NvbnRleHQsIFNsYXRlRWxlbWVudENvbnRleHQsIFNsYXRlVGV4dENvbnRleHQsIFNsYXRlTGVhZkNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQgeyBEZXNjZW5kYW50LCBFbGVtZW50LCBSYW5nZSwgVGV4dCB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IFNsYXRlQ2hpbGRyZW5Db250ZXh0IH0gZnJvbSBcIi4vY29udGV4dFwiO1xuaW1wb3J0IHsgaGFzQmVmb3JlQ29udGV4dENoYW5nZSB9IGZyb20gXCIuL2JlZm9yZS1jb250ZXh0LWNoYW5nZVwiO1xuXG4vKipcbiAqIGJhc2UgY2xhc3MgZm9yIHRlbXBsYXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUVtYmVkZGVkVmlldzxULCBLIGV4dGVuZHMgQW5ndWxhckVkaXRvciA9IEFuZ3VsYXJFZGl0b3I+IHtcbiAgICBjb250ZXh0OiBUO1xuICAgIHZpZXdDb250ZXh0OiBTbGF0ZVZpZXdDb250ZXh0PEs+O1xufVxuXG4vKipcbiAqIGJhc2UgY2xhc3MgZm9yIGN1c3RvbSBlbGVtZW50IGNvbXBvbmVudCBvciB0ZXh0IGNvbXBvbmVudFxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ29tcG9uZW50PFQgPSBTbGF0ZVRleHRDb250ZXh0IHwgU2xhdGVMZWFmQ29udGV4dCB8IFNsYXRlRWxlbWVudENvbnRleHQsIEsgZXh0ZW5kcyBBbmd1bGFyRWRpdG9yID0gQW5ndWxhckVkaXRvcj4ge1xuICAgIHByb3RlY3RlZCBfY29udGV4dDogVDtcblxuICAgIEBJbnB1dCgpXG4gICAgc2V0IGNvbnRleHQodmFsdWU6IFQpIHtcbiAgICAgICAgaWYgKGhhc0JlZm9yZUNvbnRleHRDaGFuZ2U8VD4odGhpcykpIHtcbiAgICAgICAgICAgIHRoaXMuYmVmb3JlQ29udGV4dENoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY29udGV4dCA9IHZhbHVlO1xuICAgICAgICB0aGlzLm9uQ29udGV4dENoYW5nZSgpO1xuICAgIH1cblxuICAgIGdldCBjb250ZXh0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29udGV4dDtcbiAgICB9XG5cbiAgICBASW5wdXQoKSB2aWV3Q29udGV4dDogU2xhdGVWaWV3Q29udGV4dDxLPjtcblxuICAgIGdldCBlZGl0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpZXdDb250ZXh0ICYmIHRoaXMudmlld0NvbnRleHQuZWRpdG9yO1xuICAgIH1cblxuICAgIGdldCBuYXRpdmVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikgeyB9XG5cbiAgICBhYnN0cmFjdCBvbkNvbnRleHRDaGFuZ2UoKTtcbn1cblxuLyoqXG4gKiBiYXNlIGNsYXNzIGZvciBjdXN0b20gbGVhZiBjb21wb25lbnRcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgQmFzZUxlYWZDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50PFNsYXRlTGVhZkNvbnRleHQ+IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtc2xhdGUtbGVhZicpICBpc1NsYXRlTGVhZiA9IHRydWVcblxuICAgIGdldCB0ZXh0KCk6IFRleHQge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0ICYmIHRoaXMuY29udGV4dC50ZXh0O1xuICAgIH1cblxuICAgIGdldCBsZWFmKCk6IFRleHQge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0ICYmIHRoaXMuY29udGV4dC5sZWFmO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2UoKSB7XG4gICAgICAgIGlmICghdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbn1cblxuLyoqXG4gKiBiYXNlIGNsYXNzIGZvciBjdXN0b20gZWxlbWVudCBjb21wb25lbnRcbiAqL1xuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgQmFzZUVsZW1lbnRDb21wb25lbnQ8VCBleHRlbmRzIEVsZW1lbnQgPSBFbGVtZW50LCBLIGV4dGVuZHMgQW5ndWxhckVkaXRvciA9IEFuZ3VsYXJFZGl0b3I+IGV4dGVuZHMgQmFzZUNvbXBvbmVudDxTbGF0ZUVsZW1lbnRDb250ZXh0PFQ+LCBLPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gICAgY2hpbGRyZW5Db250ZXh0OiBTbGF0ZUNoaWxkcmVuQ29udGV4dDtcblxuICAgIGdldCBlbGVtZW50KCk6IFQge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29udGV4dCAmJiB0aGlzLl9jb250ZXh0LmVsZW1lbnQ7XG4gICAgfVxuXG4gICAgZ2V0IHNlbGVjdGlvbigpOiBSYW5nZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb250ZXh0ICYmIHRoaXMuX2NvbnRleHQuc2VsZWN0aW9uO1xuICAgIH1cblxuICAgIGdldCBkZWNvcmF0aW9ucygpOiBSYW5nZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRleHQgJiYgdGhpcy5fY29udGV4dC5kZWNvcmF0aW9ucztcbiAgICB9XG5cbiAgICBnZXQgY2hpbGRyZW4oKTogRGVzY2VuZGFudFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRleHQgJiYgdGhpcy5fY29udGV4dC5lbGVtZW50LmNoaWxkcmVuO1xuICAgIH1cblxuICAgIGdldCBpc0NvbGxhcHNlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uICYmIFJhbmdlLmlzQ29sbGFwc2VkKHRoaXMuZWRpdG9yLnNlbGVjdGlvbik7XG4gICAgfVxuXG4gICAgZ2V0IHJlYWRvbmx5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29udGV4dCAmJiB0aGlzLl9jb250ZXh0LnJlYWRvbmx5O1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnVwZGF0ZVdlYWtNYXAoKTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5fY29udGV4dC5hdHRyaWJ1dGVzKSB7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKGtleSwgdGhpcy5fY29udGV4dC5hdHRyaWJ1dGVzW2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHVwZGF0ZVdlYWtNYXAoKSB7XG4gICAgICAgIE5PREVfVE9fRUxFTUVOVC5zZXQodGhpcy5lbGVtZW50LCB0aGlzLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBFTEVNRU5UX1RPX05PREUuc2V0KHRoaXMubmF0aXZlRWxlbWVudCwgdGhpcy5lbGVtZW50KTtcbiAgICAgICAgRUxFTUVOVF9UT19DT01QT05FTlQuc2V0KHRoaXMuZWxlbWVudCwgdGhpcyk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmIChOT0RFX1RPX0VMRU1FTlQuZ2V0KHRoaXMuZWxlbWVudCkgPT09IHRoaXMubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgTk9ERV9UT19FTEVNRU5ULmRlbGV0ZSh0aGlzLmVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChFTEVNRU5UX1RPX0NPTVBPTkVOVC5nZXQodGhpcy5lbGVtZW50KSA9PT0gdGhpcykge1xuICAgICAgICAgICAgRUxFTUVOVF9UT19DT01QT05FTlQuZGVsZXRlKHRoaXMuZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2UoKSB7XG4gICAgICAgIHRoaXMuY2hpbGRyZW5Db250ZXh0ID0gdGhpcy5nZXRDaGlsZHJlbkNvbnRleHQoKTtcbiAgICAgICAgaWYgKCF0aGlzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMudXBkYXRlV2Vha01hcCgpO1xuICAgIH1cblxuICAgIGdldENoaWxkcmVuQ29udGV4dCgpOiBTbGF0ZUNoaWxkcmVuQ29udGV4dCB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwYXJlbnQ6IHRoaXMuX2NvbnRleHQuZWxlbWVudCxcbiAgICAgICAgICAgIHNlbGVjdGlvbjogdGhpcy5fY29udGV4dC5zZWxlY3Rpb24sXG4gICAgICAgICAgICBkZWNvcmF0aW9uczogdGhpcy5fY29udGV4dC5kZWNvcmF0aW9ucyxcbiAgICAgICAgICAgIGRlY29yYXRlOiB0aGlzLl9jb250ZXh0LmRlY29yYXRlLFxuICAgICAgICAgICAgcmVhZG9ubHk6IHRoaXMuX2NvbnRleHQucmVhZG9ubHlcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbi8qKlxuICogYmFzZSBjbGFzcyBmb3IgY3VzdG9tIHRleHQgY29tcG9uZW50XG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIEJhc2VUZXh0Q29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudDxTbGF0ZVRleHRDb250ZXh0PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICBpbml0aWFsaXplZCA9IGZhbHNlO1xuXG4gICAgZ2V0IHRleHQoKTogVGV4dCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb250ZXh0ICYmIHRoaXMuX2NvbnRleHQudGV4dDtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVXZWFrTWFwKCk7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHVwZGF0ZVdlYWtNYXAoKSB7XG4gICAgICAgIEVMRU1FTlRfVE9fTk9ERS5zZXQodGhpcy5uYXRpdmVFbGVtZW50LCB0aGlzLnRleHQpO1xuICAgICAgICBOT0RFX1RPX0VMRU1FTlQuc2V0KHRoaXMudGV4dCwgdGhpcy5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgaWYgKE5PREVfVE9fRUxFTUVOVC5nZXQodGhpcy50ZXh0KSA9PT0gdGhpcy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICBOT0RFX1RPX0VMRU1FTlQuZGVsZXRlKHRoaXMudGV4dCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2UoKSB7XG4gICAgICAgIGlmICghdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMudXBkYXRlV2Vha01hcCgpO1xuICAgIH1cbn1cbiJdfQ==
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3BhY2thZ2VzL3NyYy92aWV3L2Jhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQyxTQUFTLEVBQWMsV0FBVyxFQUFFLEtBQUssRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFM0gsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU1RixPQUFPLEVBQXVCLEtBQUssRUFBUSxNQUFNLE9BQU8sQ0FBQztBQUV6RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFVakU7O0dBRUc7QUFFSCxNQUFNLE9BQWdCLGFBQWE7SUEwQi9CLFlBQW1CLFVBQXNCLEVBQVMsR0FBc0I7UUFBckQsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFTLFFBQUcsR0FBSCxHQUFHLENBQW1CO0lBQUksQ0FBQztJQXZCN0UsSUFDSSxPQUFPLENBQUMsS0FBUTtRQUNoQixJQUFJLHNCQUFzQixDQUFJLElBQUksQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNuQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFJRCxJQUFJLE1BQU07UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUM7SUFDdkQsQ0FBQztJQUVELElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7SUFDekMsQ0FBQzs7MEdBeEJpQixhQUFhOzhGQUFiLGFBQWE7MkZBQWIsYUFBYTtrQkFEbEMs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SSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdkQsZUFBZSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckM7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ25CLE9BQU87U0FDVjtRQUVELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7OzhHQTlCUSxpQkFBaUI7a0dBQWpCLGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQUQ3QixTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEFuZ3VsYXJFZGl0b3IgfSBmcm9tIFwiLi4vcGx1Z2lucy9hbmd1bGFyLWVkaXRvclwiO1xuaW1wb3J0IHsgRUxFTUVOVF9UT19DT01QT05FTlQsIEVMRU1FTlRfVE9fTk9ERSwgTk9ERV9UT19FTEVNRU5UIH0gZnJvbSBcIi4uL3V0aWxzL3dlYWstbWFwc1wiO1xuaW1wb3J0IHsgU2xhdGVWaWV3Q29udGV4dCwgU2xhdGVFbGVtZW50Q29udGV4dCwgU2xhdGVUZXh0Q29udGV4dCwgU2xhdGVMZWFmQ29udGV4dCB9IGZyb20gXCIuL2NvbnRleHRcIjtcbmltcG9ydCB7IERlc2NlbmRhbnQsIEVsZW1lbnQsIFJhbmdlLCBUZXh0IH0gZnJvbSAnc2xhdGUnO1xuaW1wb3J0IHsgU2xhdGVDaGlsZHJlbkNvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5pbXBvcnQgeyBoYXNCZWZvcmVDb250ZXh0Q2hhbmdlIH0gZnJvbSBcIi4vYmVmb3JlLWNvbnRleHQtY2hhbmdlXCI7XG5cbi8qKlxuICogYmFzZSBjbGFzcyBmb3IgdGVtcGxhdGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlRW1iZWRkZWRWaWV3PFQsIEsgZXh0ZW5kcyBBbmd1bGFyRWRpdG9yID0gQW5ndWxhckVkaXRvcj4ge1xuICAgIGNvbnRleHQ6IFQ7XG4gICAgdmlld0NvbnRleHQ6IFNsYXRlVmlld0NvbnRleHQ8Sz47XG59XG5cbi8qKlxuICogYmFzZSBjbGFzcyBmb3IgY3VzdG9tIGVsZW1lbnQgY29tcG9uZW50IG9yIHRleHQgY29tcG9uZW50XG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VDb21wb25lbnQ8VCA9IFNsYXRlVGV4dENvbnRleHQgfCBTbGF0ZUxlYWZDb250ZXh0IHwgU2xhdGVFbGVtZW50Q29udGV4dCwgSyBleHRlbmRzIEFuZ3VsYXJFZGl0b3IgPSBBbmd1bGFyRWRpdG9yPiB7XG4gICAgcHJvdGVjdGVkIF9jb250ZXh0OiBUO1xuXG4gICAgQElucHV0KClcbiAgICBzZXQgY29udGV4dCh2YWx1ZTogVCkge1xuICAgICAgICBpZiAoaGFzQmVmb3JlQ29udGV4dENoYW5nZTxUPih0aGlzKSkge1xuICAgICAgICAgICAgdGhpcy5iZWZvcmVDb250ZXh0Q2hhbmdlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jb250ZXh0ID0gdmFsdWU7XG4gICAgICAgIHRoaXMub25Db250ZXh0Q2hhbmdlKCk7XG4gICAgfVxuXG4gICAgZ2V0IGNvbnRleHQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb250ZXh0O1xuICAgIH1cblxuICAgIEBJbnB1dCgpIHZpZXdDb250ZXh0OiBTbGF0ZVZpZXdDb250ZXh0PEs+O1xuXG4gICAgZ2V0IGVkaXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlld0NvbnRleHQgJiYgdGhpcy52aWV3Q29udGV4dC5lZGl0b3I7XG4gICAgfVxuXG4gICAgZ2V0IG5hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7IH1cblxuICAgIGFic3RyYWN0IG9uQ29udGV4dENoYW5nZSgpO1xufVxuXG4vKipcbiAqIGJhc2UgY2xhc3MgZm9yIGN1c3RvbSBsZWFmIGNvbXBvbmVudFxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBCYXNlTGVhZkNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQ8U2xhdGVMZWFmQ29udGV4dD4gaW1wbGVtZW50cyBPbkluaXQge1xuICAgIGluaXRpYWxpemVkID0gZmFsc2U7XG5cbiAgICBwbGFjZWhvbGRlckVsZW1lbnQ6IEhUTUxTcGFuRWxlbWVudDtcblxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXNsYXRlLWxlYWYnKSBpc1NsYXRlTGVhZiA9IHRydWVcblxuICAgIGdldCB0ZXh0KCk6IFRleHQge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0ICYmIHRoaXMuY29udGV4dC50ZXh0O1xuICAgIH1cblxuICAgIGdldCBsZWFmKCk6IFRleHQge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250ZXh0ICYmIHRoaXMuY29udGV4dC5sZWFmO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvbkNvbnRleHRDaGFuZ2UoKSB7XG4gICAgICAgIGlmICghdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHJlbmRlclBsYWNlaG9sZGVyKCkge1xuICAgICAgICAvLyBpc3N1ZS0xOiBJTUUgaW5wdXQgd2FzIGludGVycnVwdGVkXG4gICAgICAgIC8vIGlzc3VlLTI6IElNRSBpbnB1dCBmb2N1cyBqdW1waW5nXG4gICAgICAgIC8vIElzc3VlIG9jY3VycyB3aGVuIHRoZSBzcGFuIG5vZGUgb2YgdGhlIHBsYWNlaG9sZGVyIGlzIGJlZm9yZSB0aGUgc2xhdGVTdHJpbmcgc3BhbiBub2RlXG4gICAgICAgIGlmICh0aGlzLmNvbnRleHQubGVhZlsncGxhY2Vob2xkZXInXSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnBsYWNlaG9sZGVyRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXJFbGVtZW50LmlubmVyVGV4dCA9IHRoaXMuY29udGV4dC5sZWFmWydwbGFjZWhvbGRlciddO1xuICAgICAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXJFbGVtZW50LmNvbnRlbnRFZGl0YWJsZSA9ICdmYWxzZSc7XG4gICAgICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlckVsZW1lbnQuc2V0QXR0cmlidXRlKCdkYXRhLXNsYXRlLXBsYWNlaG9sZGVyJywgJ3RydWUnKTtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnbGVhZi13aXRoLXBsYWNlaG9sZGVyJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMucGxhY2Vob2xkZXJFbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveVBsYWNlaG9sZGVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZXN0cm95UGxhY2Vob2xkZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyRWxlbWVudCkge1xuICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlckVsZW1lbnQucmVtb3ZlKCk7XG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyRWxlbWVudCA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnbGVhZi13aXRoLXBsYWNlaG9sZGVyJyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8qKlxuICogYmFzZSBjbGFzcyBmb3IgY3VzdG9tIGVsZW1lbnQgY29tcG9uZW50XG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIEJhc2VFbGVtZW50Q29tcG9uZW50PFQgZXh0ZW5kcyBFbGVtZW50ID0gRWxlbWVudCwgSyBleHRlbmRzIEFuZ3VsYXJFZGl0b3IgPSBBbmd1bGFyRWRpdG9yPiBleHRlbmRzIEJhc2VDb21wb25lbnQ8U2xhdGVFbGVtZW50Q29udGV4dDxUPiwgSz4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIGNoaWxkcmVuQ29udGV4dDogU2xhdGVDaGlsZHJlbkNvbnRleHQ7XG5cbiAgICBnZXQgZWxlbWVudCgpOiBUIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRleHQgJiYgdGhpcy5fY29udGV4dC5lbGVtZW50O1xuICAgIH1cblxuICAgIGdldCBzZWxlY3Rpb24oKTogUmFuZ2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29udGV4dCAmJiB0aGlzLl9jb250ZXh0LnNlbGVjdGlvbjtcbiAgICB9XG5cbiAgICBnZXQgZGVjb3JhdGlvbnMoKTogUmFuZ2VbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb250ZXh0ICYmIHRoaXMuX2NvbnRleHQuZGVjb3JhdGlvbnM7XG4gICAgfVxuXG4gICAgZ2V0IGNoaWxkcmVuKCk6IERlc2NlbmRhbnRbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb250ZXh0ICYmIHRoaXMuX2NvbnRleHQuZWxlbWVudC5jaGlsZHJlbjtcbiAgICB9XG5cbiAgICBnZXQgaXNDb2xsYXBzZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvbiAmJiBSYW5nZS5pc0NvbGxhcHNlZCh0aGlzLmVkaXRvci5zZWxlY3Rpb24pO1xuICAgIH1cblxuICAgIGdldCByZWFkb25seSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRleHQgJiYgdGhpcy5fY29udGV4dC5yZWFkb25seTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVXZWFrTWFwKCk7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHRoaXMuX2NvbnRleHQuYXR0cmlidXRlcykge1xuICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnNldEF0dHJpYnV0ZShrZXksIHRoaXMuX2NvbnRleHQuYXR0cmlidXRlc1trZXldKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB1cGRhdGVXZWFrTWFwKCkge1xuICAgICAgICBOT0RFX1RPX0VMRU1FTlQuc2V0KHRoaXMuZWxlbWVudCwgdGhpcy5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgRUxFTUVOVF9UT19OT0RFLnNldCh0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMuZWxlbWVudCk7XG4gICAgICAgIEVMRU1FTlRfVE9fQ09NUE9ORU5ULnNldCh0aGlzLmVsZW1lbnQsIHRoaXMpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICBpZiAoTk9ERV9UT19FTEVNRU5ULmdldCh0aGlzLmVsZW1lbnQpID09PSB0aGlzLm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIE5PREVfVE9fRUxFTUVOVC5kZWxldGUodGhpcy5lbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoRUxFTUVOVF9UT19DT01QT05FTlQuZ2V0KHRoaXMuZWxlbWVudCkgPT09IHRoaXMpIHtcbiAgICAgICAgICAgIEVMRU1FTlRfVE9fQ09NUE9ORU5ULmRlbGV0ZSh0aGlzLmVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Db250ZXh0Q2hhbmdlKCkge1xuICAgICAgICB0aGlzLmNoaWxkcmVuQ29udGV4dCA9IHRoaXMuZ2V0Q2hpbGRyZW5Db250ZXh0KCk7XG4gICAgICAgIGlmICghdGhpcy5pbml0aWFsaXplZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVdlYWtNYXAoKTtcbiAgICB9XG5cbiAgICBnZXRDaGlsZHJlbkNvbnRleHQoKTogU2xhdGVDaGlsZHJlbkNvbnRleHQge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcGFyZW50OiB0aGlzLl9jb250ZXh0LmVsZW1lbnQsXG4gICAgICAgICAgICBzZWxlY3Rpb246IHRoaXMuX2NvbnRleHQuc2VsZWN0aW9uLFxuICAgICAgICAgICAgZGVjb3JhdGlvbnM6IHRoaXMuX2NvbnRleHQuZGVjb3JhdGlvbnMsXG4gICAgICAgICAgICBkZWNvcmF0ZTogdGhpcy5fY29udGV4dC5kZWNvcmF0ZSxcbiAgICAgICAgICAgIHJlYWRvbmx5OiB0aGlzLl9jb250ZXh0LnJlYWRvbmx5XG4gICAgICAgIH07XG4gICAgfVxufVxuXG4vKipcbiAqIGJhc2UgY2xhc3MgZm9yIGN1c3RvbSB0ZXh0IGNvbXBvbmVudFxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBjbGFzcyBCYXNlVGV4dENvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQ8U2xhdGVUZXh0Q29udGV4dD4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gICAgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICAgIGdldCB0ZXh0KCk6IFRleHQge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29udGV4dCAmJiB0aGlzLl9jb250ZXh0LnRleHQ7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlV2Vha01hcCgpO1xuICAgICAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB1cGRhdGVXZWFrTWFwKCkge1xuICAgICAgICBFTEVNRU5UX1RPX05PREUuc2V0KHRoaXMubmF0aXZlRWxlbWVudCwgdGhpcy50ZXh0KTtcbiAgICAgICAgTk9ERV9UT19FTEVNRU5ULnNldCh0aGlzLnRleHQsIHRoaXMubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIGlmIChOT0RFX1RPX0VMRU1FTlQuZ2V0KHRoaXMudGV4dCkgPT09IHRoaXMubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgTk9ERV9UT19FTEVNRU5ULmRlbGV0ZSh0aGlzLnRleHQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Db250ZXh0Q2hhbmdlKCkge1xuICAgICAgICBpZiAoIXRoaXMuaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVdlYWtNYXAoKTtcbiAgICB9XG59XG4iXX0=
@@ -208,6 +208,33 @@ const getPlainText = (domNode) => {
208
208
  }
209
209
  return text;
210
210
  };
211
+ /**
212
+ * Get x-slate-fragment attribute from data-slate-fragment
213
+ */
214
+ const catchSlateFragment = /data-slate-fragment="(.+?)"/m;
215
+ const getSlateFragmentAttribute = (dataTransfer) => {
216
+ const htmlData = dataTransfer.getData('text/html');
217
+ const [, fragment] = htmlData.match(catchSlateFragment) || [];
218
+ return fragment;
219
+ };
220
+ /**
221
+ * Get the x-slate-fragment attribute that exist in text/html data
222
+ * and append it to the DataTransfer object
223
+ */
224
+ const getClipboardData = (dataTransfer, clipboardFormatKey = 'x-slate-fragment') => {
225
+ if (!dataTransfer.getData(`application/${clipboardFormatKey}`)) {
226
+ const fragment = getSlateFragmentAttribute(dataTransfer);
227
+ if (fragment) {
228
+ const clipboardData = new DataTransfer();
229
+ dataTransfer.types.forEach(type => {
230
+ clipboardData.setData(type, dataTransfer.getData(type));
231
+ });
232
+ clipboardData.setData(`application/${clipboardFormatKey}`, fragment);
233
+ return clipboardData;
234
+ }
235
+ }
236
+ return dataTransfer;
237
+ };
211
238
 
212
239
  /**
213
240
  * An auto-incrementing identifier for keys.
@@ -228,6 +255,7 @@ const IS_IOS = typeof navigator !== 'undefined' &&
228
255
  /iPad|iPhone|iPod/.test(navigator.userAgent) &&
229
256
  !window.MSStream;
230
257
  const IS_APPLE = typeof navigator !== 'undefined' && /Mac OS X/.test(navigator.userAgent);
258
+ const IS_ANDROID = typeof navigator !== 'undefined' && /Android/.test(navigator.userAgent);
231
259
  const IS_FIREFOX = typeof navigator !== 'undefined' &&
232
260
  /^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);
233
261
  const IS_SAFARI = typeof navigator !== 'undefined' &&
@@ -239,6 +267,24 @@ const IS_CHROME = typeof navigator !== 'undefined' && /Chrome/i.test(navigator.u
239
267
  // Native beforeInput events don't work well with react on Chrome 75 and older, Chrome 76+ can use beforeInput
240
268
  const IS_CHROME_LEGACY = typeof navigator !== 'undefined' &&
241
269
  /Chrome?\/(?:[0-7][0-5]|[0-6][0-9])/i.test(navigator.userAgent);
270
+ // Firefox did not support `beforeInput` until `v87`.
271
+ const IS_FIREFOX_LEGACY = typeof navigator !== 'undefined' &&
272
+ /^(?!.*Seamonkey)(?=.*Firefox\/(?:[0-7][0-9]|[0-8][0-6])).*/i.test(navigator.userAgent);
273
+ // qq browser
274
+ const IS_QQBROWSER = typeof navigator !== 'undefined' && /.*QQBrowser/.test(navigator.userAgent);
275
+ // UC mobile browser
276
+ const IS_UC_MOBILE = typeof navigator !== 'undefined' && /.*UCBrowser/.test(navigator.userAgent);
277
+ // Wechat browser
278
+ const IS_WECHATBROWSER = typeof navigator !== 'undefined' && /.*Wechat/.test(navigator.userAgent);
279
+ // COMPAT: Firefox/Edge Legacy don't support the `beforeinput` event
280
+ // Chrome Legacy doesn't support `beforeinput` correctly
281
+ const HAS_BEFORE_INPUT_SUPPORT = !IS_CHROME_LEGACY &&
282
+ !IS_EDGE_LEGACY &&
283
+ // globalThis is undefined in older browsers
284
+ typeof globalThis !== 'undefined' &&
285
+ globalThis.InputEvent &&
286
+ // @ts-ignore The `getTargetRanges` property isn't recognized.
287
+ typeof globalThis.InputEvent.prototype.getTargetRanges === 'function';
242
288
 
243
289
  const FAKE_LEFT_BLOCK_CARD_OFFSET = -1;
244
290
  const FAKE_RIGHT_BLOCK_CARD_OFFSET = -2;
@@ -321,27 +367,16 @@ const AngularEditor = {
321
367
  throw new Error(`Unable to find the path for Slate node: ${JSON.stringify(node)}`);
322
368
  },
323
369
  /**
324
- * Find the DOM node that implements DocumentOrShadowRoot for the editor.
325
- */
370
+ * Find the DOM node that implements DocumentOrShadowRoot for the editor.
371
+ */
326
372
  findDocumentOrShadowRoot(editor) {
327
373
  const el = AngularEditor.toDOMNode(editor, editor);
328
374
  const root = el.getRootNode();
329
- // The below exception will always be thrown for iframes because the document inside an iframe
330
- // does not inherit it's prototype from the parent document, therefore we return early
331
- if (el.ownerDocument !== document) {
332
- return el.ownerDocument;
333
- }
334
- if (!(root instanceof Document || root instanceof ShadowRoot)) {
335
- throw new Error(`Unable to find DocumentOrShadowRoot for editor element: ${el}`);
336
- }
337
- // COMPAT: Only Chrome implements the DocumentOrShadowRoot mixin for
338
- // ShadowRoot; other browsers still implement it on the Document
339
- // interface. (2020/08/08)
340
- // https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot#Properties
341
- if (root.getSelection === undefined && el.ownerDocument !== null) {
342
- return el.ownerDocument;
343
- }
344
- return root;
375
+ if ((root instanceof Document || root instanceof ShadowRoot) &&
376
+ root.getSelection != null) {
377
+ return root;
378
+ }
379
+ return el.ownerDocument;
345
380
  },
346
381
  /**
347
382
  * Check if the editor is focused.
@@ -438,6 +473,18 @@ const AngularEditor = {
438
473
  insertData(editor, data) {
439
474
  editor.insertData(data);
440
475
  },
476
+ /**
477
+ * Insert fragment data from a `DataTransfer` into the editor.
478
+ */
479
+ insertFragmentData(editor, data) {
480
+ return editor.insertFragmentData(data);
481
+ },
482
+ /**
483
+ * Insert text data from a `DataTransfer` into the editor.
484
+ */
485
+ insertTextData(editor, data) {
486
+ return editor.insertTextData(data);
487
+ },
441
488
  /**
442
489
  * onKeydown hook.
443
490
  */
@@ -453,8 +500,8 @@ const AngularEditor = {
453
500
  /**
454
501
  * Sets data from the currently selected fragment on a `DataTransfer`.
455
502
  */
456
- setFragmentData(editor, data) {
457
- editor.setFragmentData(data);
503
+ setFragmentData(editor, data, originEvent) {
504
+ editor.setFragmentData(data, originEvent);
458
505
  },
459
506
  deleteCutData(editor) {
460
507
  editor.deleteCutData();
@@ -711,7 +758,9 @@ const AngularEditor = {
711
758
  // composition the ASCII characters will be prepended to the zero-width
712
759
  // space, so subtract 1 from the offset to account for the zero-width
713
760
  // space character.
714
- if (domNode && offset === domNode.textContent.length && parentNode && parentNode.hasAttribute('data-slate-zero-width')) {
761
+ if (domNode &&
762
+ offset === domNode.textContent.length &&
763
+ (parentNode && parentNode.hasAttribute('data-slate-zero-width'))) {
715
764
  offset--;
716
765
  }
717
766
  }
@@ -1125,7 +1174,7 @@ const withAngular = (editor, clipboardFormatKey = 'x-slate-fragment') => {
1125
1174
  // in the HTML, and can be used for intra-Slate pasting. If it's a text
1126
1175
  // node, wrap it in a `<span>` so we have something to set an attribute on.
1127
1176
  if (isDOMText(attach)) {
1128
- const span = document.createElement('span');
1177
+ const span = attach.ownerDocument.createElement('span');
1129
1178
  // COMPAT: In Chrome and Safari, if we don't add the `white-space` style
1130
1179
  // then leading and trailing spaces will be ignored. (2017/09/21)
1131
1180
  span.style.whiteSpace = 'pre';
@@ -1139,13 +1188,14 @@ const withAngular = (editor, clipboardFormatKey = 'x-slate-fragment') => {
1139
1188
  attach.setAttribute('data-slate-fragment', encoded);
1140
1189
  data.setData(`application/${clipboardFormatKey}`, encoded);
1141
1190
  // Add the content to a <div> so that we can get its inner HTML.
1142
- const div = document.createElement('div');
1191
+ const div = contents.ownerDocument.createElement('div');
1143
1192
  div.appendChild(contents);
1144
1193
  div.setAttribute('hidden', 'true');
1145
- document.body.appendChild(div);
1194
+ contents.ownerDocument.body.appendChild(div);
1146
1195
  data.setData('text/html', div.innerHTML);
1147
1196
  data.setData('text/plain', getPlainText(div));
1148
- document.body.removeChild(div);
1197
+ contents.ownerDocument.body.removeChild(div);
1198
+ return data;
1149
1199
  };
1150
1200
  e.deleteCutData = () => {
1151
1201
  const { selection } = editor;
@@ -1162,13 +1212,25 @@ const withAngular = (editor, clipboardFormatKey = 'x-slate-fragment') => {
1162
1212
  }
1163
1213
  };
1164
1214
  e.insertData = (data) => {
1165
- const fragment = data.getData(`application/${clipboardFormatKey}`);
1215
+ if (!e.insertFragmentData(data)) {
1216
+ e.insertTextData(data);
1217
+ }
1218
+ };
1219
+ e.insertFragmentData = (data) => {
1220
+ /**
1221
+ * Checking copied fragment from application/x-slate-fragment or data-slate-fragment
1222
+ */
1223
+ const fragment = data.getData(`application/${clipboardFormatKey}`) ||
1224
+ getSlateFragmentAttribute(data);
1166
1225
  if (fragment) {
1167
1226
  const decoded = decodeURIComponent(window.atob(fragment));
1168
1227
  const parsed = JSON.parse(decoded);
1169
1228
  e.insertFragment(parsed);
1170
- return;
1229
+ return true;
1171
1230
  }
1231
+ return false;
1232
+ };
1233
+ e.insertTextData = (data) => {
1172
1234
  const text = data.getData('text/plain');
1173
1235
  if (text) {
1174
1236
  const lines = text.split(/\r\n|\r|\n/);
@@ -1180,7 +1242,9 @@ const withAngular = (editor, clipboardFormatKey = 'x-slate-fragment') => {
1180
1242
  e.insertText(line);
1181
1243
  split = true;
1182
1244
  }
1245
+ return true;
1183
1246
  }
1247
+ return false;
1184
1248
  };
1185
1249
  e.onKeydown = () => { };
1186
1250
  e.onClick = () => { };
@@ -1736,6 +1800,31 @@ class BaseLeafComponent extends BaseComponent {
1736
1800
  }
1737
1801
  this.cdr.markForCheck();
1738
1802
  }
1803
+ renderPlaceholder() {
1804
+ // issue-1: IME input was interrupted
1805
+ // issue-2: IME input focus jumping
1806
+ // Issue occurs when the span node of the placeholder is before the slateString span node
1807
+ if (this.context.leaf['placeholder']) {
1808
+ if (!this.placeholderElement) {
1809
+ this.placeholderElement = document.createElement('span');
1810
+ this.placeholderElement.innerText = this.context.leaf['placeholder'];
1811
+ this.placeholderElement.contentEditable = 'false';
1812
+ this.placeholderElement.setAttribute('data-slate-placeholder', 'true');
1813
+ this.nativeElement.classList.add('leaf-with-placeholder');
1814
+ this.nativeElement.appendChild(this.placeholderElement);
1815
+ }
1816
+ }
1817
+ else {
1818
+ this.destroyPlaceholder();
1819
+ }
1820
+ }
1821
+ destroyPlaceholder() {
1822
+ if (this.placeholderElement) {
1823
+ this.placeholderElement.remove();
1824
+ this.placeholderElement = null;
1825
+ this.nativeElement.classList.remove('leaf-with-placeholder');
1826
+ }
1827
+ }
1739
1828
  }
1740
1829
  BaseLeafComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: BaseLeafComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
1741
1830
  BaseLeafComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "12.2.7", type: BaseLeafComponent, host: { properties: { "attr.data-slate-leaf": "this.isSlateLeaf" } }, usesInheritance: true, ngImport: i0 });
@@ -2018,22 +2107,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImpor
2018
2107
  }] } });
2019
2108
 
2020
2109
  class SlateDefaultLeafComponent extends BaseLeafComponent {
2110
+ onContextChange() {
2111
+ super.onContextChange();
2112
+ this.renderPlaceholder();
2113
+ }
2114
+ ngOnDestroy() {
2115
+ // Because the placeholder span is not in the current component, it is destroyed along with the current component
2116
+ this.destroyPlaceholder();
2117
+ }
2021
2118
  }
2022
2119
  SlateDefaultLeafComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: SlateDefaultLeafComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2023
- SlateDefaultLeafComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.7", type: SlateDefaultLeafComponent, selector: "span[slateDefaultLeaf]", host: { attributes: { "data-slate-leaf": "true" } }, usesInheritance: true, ngImport: i0, template: `
2024
- <ng-container *ngIf="context.leaf['placeholder']">
2025
- <span contenteditable="false" data-slate-placeholder="true" slate-placeholder="true">{{context.leaf['placeholder']}}</span>
2026
- </ng-container>
2027
- <span slateString [context]="context" [viewContext]="viewContext"><span>`, isInline: true, components: [{ type: SlateStringComponent, selector: "span[slateString]", inputs: ["context"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2120
+ SlateDefaultLeafComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.7", type: SlateDefaultLeafComponent, selector: "span[slateDefaultLeaf]", host: { attributes: { "data-slate-leaf": "true" } }, usesInheritance: true, ngImport: i0, template: `<span slateString [context]="context" [viewContext]="viewContext"><span>`, isInline: true, components: [{ type: SlateStringComponent, selector: "span[slateString]", inputs: ["context"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2028
2121
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImport: i0, type: SlateDefaultLeafComponent, decorators: [{
2029
2122
  type: Component,
2030
2123
  args: [{
2031
2124
  selector: 'span[slateDefaultLeaf]',
2032
- template: `
2033
- <ng-container *ngIf="context.leaf['placeholder']">
2034
- <span contenteditable="false" data-slate-placeholder="true" slate-placeholder="true">{{context.leaf['placeholder']}}</span>
2035
- </ng-container>
2036
- <span slateString [context]="context" [viewContext]="viewContext"><span>`,
2125
+ template: `<span slateString [context]="context" [viewContext]="viewContext"><span>`,
2037
2126
  changeDetection: ChangeDetectionStrategy.OnPush,
2038
2127
  host: {
2039
2128
  'data-slate-leaf': 'true'
@@ -2418,13 +2507,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImpor
2418
2507
  }] } });
2419
2508
 
2420
2509
  const timeDebug = Debug('slate-angular-time');
2421
- // COMPAT: Firefox/Edge Legacy don't support the `beforeinput` event
2422
- // Chrome Legacy doesn't support `beforeinput` correctly
2423
- const HAS_BEFORE_INPUT_SUPPORT = !IS_CHROME_LEGACY &&
2424
- !IS_EDGE_LEGACY &&
2425
- globalThis.InputEvent &&
2426
- // @ts-ignore The `getTargetRanges` property isn't recognized.
2427
- typeof globalThis.InputEvent.prototype.getTargetRanges === 'function';
2428
2510
  // not correctly clipboardData on beforeinput
2429
2511
  const forceOnDOMPaste = IS_SAFARI;
2430
2512
  class SlateEditableComponent {
@@ -2479,6 +2561,9 @@ class SlateEditableComponent {
2479
2561
  this.initializeContext();
2480
2562
  // remove unused DOM, just keep templateComponent instance
2481
2563
  this.templateElementRef.nativeElement.remove();
2564
+ // add browser class
2565
+ let browserClass = IS_FIREFOX ? 'firefox' : (IS_SAFARI ? 'safari' : '');
2566
+ browserClass && this.elementRef.nativeElement.classList.add(browserClass);
2482
2567
  }
2483
2568
  ngOnChanges(simpleChanges) {
2484
2569
  if (!this.initialized) {
@@ -2852,7 +2937,10 @@ class SlateEditableComponent {
2852
2937
  case 'insertFromYank':
2853
2938
  case 'insertReplacementText':
2854
2939
  case 'insertText': {
2855
- if (data instanceof DataTransfer) {
2940
+ // use a weak comparison instead of 'instanceof' to allow
2941
+ // programmatic access of paste events coming from external windows
2942
+ // like cypress where cy.window does not work realibly
2943
+ if ((data === null || data === void 0 ? void 0 : data.constructor.name) === 'DataTransfer') {
2856
2944
  AngularEditor.insertData(editor, data);
2857
2945
  }
2858
2946
  else if (typeof data === 'string') {
@@ -2964,13 +3052,13 @@ class SlateEditableComponent {
2964
3052
  const isOutsideSlate = !hasStringTarget(window.getSelection()) && isTargetInsideVoid(this.editor, event.target);
2965
3053
  if (!isOutsideSlate && hasTarget(this.editor, event.target) && !this.readonly && !this.isDOMEventHandled(event, this.copy)) {
2966
3054
  event.preventDefault();
2967
- AngularEditor.setFragmentData(this.editor, event.clipboardData);
3055
+ AngularEditor.setFragmentData(this.editor, event.clipboardData, 'copy');
2968
3056
  }
2969
3057
  }
2970
3058
  onDOMCut(event) {
2971
3059
  if (!this.readonly && hasEditableTarget(this.editor, event.target) && !this.isDOMEventHandled(event, this.cut)) {
2972
3060
  event.preventDefault();
2973
- AngularEditor.setFragmentData(this.editor, event.clipboardData);
3061
+ AngularEditor.setFragmentData(this.editor, event.clipboardData, 'cut');
2974
3062
  const { selection } = this.editor;
2975
3063
  if (selection) {
2976
3064
  AngularEditor.deleteCutData(this.editor);
@@ -2989,7 +3077,7 @@ class SlateEditableComponent {
2989
3077
  }
2990
3078
  }
2991
3079
  onDOMDragStart(event) {
2992
- if (hasTarget(this.editor, event.target) && !this.isDOMEventHandled(event, this.dragStart)) {
3080
+ if (!this.readonly && hasTarget(this.editor, event.target) && !this.isDOMEventHandled(event, this.dragStart)) {
2993
3081
  const node = AngularEditor.toSlateNode(this.editor, event.target);
2994
3082
  const path = AngularEditor.findPath(this.editor, node);
2995
3083
  const voidMatch = Editor.isVoid(this.editor, node) ||
@@ -3001,7 +3089,7 @@ class SlateEditableComponent {
3001
3089
  Transforms.select(this.editor, range);
3002
3090
  }
3003
3091
  this.isDraggingInternally = true;
3004
- AngularEditor.setFragmentData(this.editor, event.dataTransfer);
3092
+ AngularEditor.setFragmentData(this.editor, event.dataTransfer, 'drag');
3005
3093
  }
3006
3094
  }
3007
3095
  onDOMDrop(event) {
@@ -3544,5 +3632,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.7", ngImpor
3544
3632
  * Generated bundle index. Do not edit.
3545
3633
  */
3546
3634
 
3547
- export { AngularEditor, BaseComponent, BaseElementComponent, BaseLeafComponent, BaseTextComponent, DOMComment, DOMElement, DOMNode, DOMRange, DOMSelection, DOMStaticRange, DOMText, EDITOR_TO_ELEMENT, EDITOR_TO_ON_CHANGE, EDITOR_TO_PLACEHOLDER, EDITOR_TO_WINDOW, ELEMENT_TO_COMPONENT, ELEMENT_TO_NODE, FAKE_LEFT_BLOCK_CARD_OFFSET, FAKE_RIGHT_BLOCK_CARD_OFFSET, IS_APPLE, IS_CHROME, IS_CHROME_LEGACY, IS_CLICKING, IS_DRAGGING, IS_EDGE_LEGACY, IS_FIREFOX, IS_FOCUSED, IS_IOS, IS_READONLY, IS_SAFARI, KEY_TO_ELEMENT, Key, NODE_TO_ELEMENT, NODE_TO_INDEX, NODE_TO_KEY, NODE_TO_PARENT, PLACEHOLDER_SYMBOL, SlateChildrenComponent, SlateEditableComponent, SlateElementComponent, SlateErrorCode, SlateLeavesComponent, SlateModule, SlateStringComponent, check, getCardTargetAttribute, getDefaultView, getEditableChild, getEditableChildAndIndex, getPlainText, hasBeforeContextChange, hasBlockCard, hasBlockCardWithNode, hasShadowRoot, hotkeys, isCardCenterByTargetAttr, isCardLeft, isCardLeftByTargetAttr, isCardRightByTargetAttr, isComponentType, isDOMComment, isDOMElement, isDOMNode, isDOMSelection, isDOMText, isDecoratorRangeListEqual, isPlainTextOnlyPaste, isTemplateRef, isValid, normalize, normalizeDOMPoint, shallowCompare, withAngular };
3635
+ export { AngularEditor, BaseComponent, BaseElementComponent, BaseLeafComponent, BaseTextComponent, DOMComment, DOMElement, DOMNode, DOMRange, DOMSelection, DOMStaticRange, DOMText, EDITOR_TO_ELEMENT, EDITOR_TO_ON_CHANGE, EDITOR_TO_PLACEHOLDER, EDITOR_TO_WINDOW, ELEMENT_TO_COMPONENT, ELEMENT_TO_NODE, FAKE_LEFT_BLOCK_CARD_OFFSET, FAKE_RIGHT_BLOCK_CARD_OFFSET, HAS_BEFORE_INPUT_SUPPORT, IS_ANDROID, IS_APPLE, IS_CHROME, IS_CHROME_LEGACY, IS_CLICKING, IS_DRAGGING, IS_EDGE_LEGACY, IS_FIREFOX, IS_FIREFOX_LEGACY, IS_FOCUSED, IS_IOS, IS_QQBROWSER, IS_READONLY, IS_SAFARI, IS_UC_MOBILE, IS_WECHATBROWSER, KEY_TO_ELEMENT, Key, NODE_TO_ELEMENT, NODE_TO_INDEX, NODE_TO_KEY, NODE_TO_PARENT, PLACEHOLDER_SYMBOL, SlateChildrenComponent, SlateEditableComponent, SlateElementComponent, SlateErrorCode, SlateLeavesComponent, SlateModule, SlateStringComponent, check, getCardTargetAttribute, getClipboardData, getDefaultView, getEditableChild, getEditableChildAndIndex, getPlainText, getSlateFragmentAttribute, hasBeforeContextChange, hasBlockCard, hasBlockCardWithNode, hasShadowRoot, hotkeys, isCardCenterByTargetAttr, isCardLeft, isCardLeftByTargetAttr, isCardRightByTargetAttr, isComponentType, isDOMComment, isDOMElement, isDOMNode, isDOMSelection, isDOMText, isDecoratorRangeListEqual, isPlainTextOnlyPaste, isTemplateRef, isValid, normalize, normalizeDOMPoint, shallowCompare, withAngular };
3548
3636
  //# sourceMappingURL=slate-angular.js.map