| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 | 
							- import Parchment from 'parchment';
 
- import TextBlot from './text';
 
- const GUARD_TEXT = "\uFEFF";
 
- class Embed extends Parchment.Embed {
 
-   constructor(node) {
 
-     super(node);
 
-     this.contentNode = document.createElement('span');
 
-     this.contentNode.setAttribute('contenteditable', false);
 
-     [].slice.call(this.domNode.childNodes).forEach((childNode) => {
 
-       this.contentNode.appendChild(childNode);
 
-     });
 
-     this.leftGuard = document.createTextNode(GUARD_TEXT);
 
-     this.rightGuard = document.createTextNode(GUARD_TEXT);
 
-     this.domNode.appendChild(this.leftGuard);
 
-     this.domNode.appendChild(this.contentNode);
 
-     this.domNode.appendChild(this.rightGuard);
 
-   }
 
-   index(node, offset) {
 
-     if (node === this.leftGuard) return 0;
 
-     if (node === this.rightGuard) return 1;
 
-     return super.index(node, offset);
 
-   }
 
-   restore(node) {
 
-     let range, textNode;
 
-     let text = node.data.split(GUARD_TEXT).join('');
 
-     if (node === this.leftGuard) {
 
-       if (this.prev instanceof TextBlot) {
 
-         let prevLength = this.prev.length();
 
-         this.prev.insertAt(prevLength, text);
 
-         range = {
 
-           startNode: this.prev.domNode,
 
-           startOffset: prevLength + text.length
 
-         };
 
-       } else {
 
-         textNode = document.createTextNode(text);
 
-         this.parent.insertBefore(Parchment.create(textNode), this);
 
-         range = {
 
-           startNode: textNode,
 
-           startOffset: text.length
 
-         };
 
-       }
 
-     } else if (node === this.rightGuard) {
 
-       if (this.next instanceof TextBlot) {
 
-         this.next.insertAt(0, text);
 
-         range = {
 
-           startNode: this.next.domNode,
 
-           startOffset: text.length
 
-         }
 
-       } else {
 
-         textNode = document.createTextNode(text);
 
-         this.parent.insertBefore(Parchment.create(textNode), this.next);
 
-         range = {
 
-           startNode: textNode,
 
-           startOffset: text.length
 
-         };
 
-       }
 
-     }
 
-     node.data = GUARD_TEXT;
 
-     return range;
 
-   }
 
-   update(mutations, context) {
 
-     mutations.forEach((mutation) => {
 
-       if (mutation.type === 'characterData' &&
 
-           (mutation.target === this.leftGuard || mutation.target === this.rightGuard)) {
 
-         let range = this.restore(mutation.target);
 
-         if (range) context.range = range;
 
-       }
 
-     });
 
-   }
 
- }
 
- export default Embed;
 
 
  |