Skip to content

Commit

Permalink
WIP: DRY render node creation, update UI after rerender
Browse files Browse the repository at this point in the history
  • Loading branch information
mixonic committed Jul 14, 2015
1 parent 12c531b commit 07e2812
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 13 deletions.
22 changes: 9 additions & 13 deletions src/js/editor/editor.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import EventEmitter from '../utils/event-emitter';
import MobiledocParser from "../parsers/mobiledoc";
import DOMParser from "../parsers/dom";
import render from 'content-kit-editor/renderers/render';
import RenderNode from 'content-kit-editor/models/render-node';
import RenderTree from 'content-kit-editor/models/render-tree';
import MobiledocRenderer from '../renderers/mobiledoc';

Expand Down Expand Up @@ -234,19 +233,17 @@ merge(Editor.prototype, {

parseModelFromDOM(element) {
this.post = this._parser.parse(element);
let node = new RenderNode(this.post);
this.post.renderNode = node;
this._renderTree = new RenderTree(node);
node.renderTree = this._renderTree;
this._renderTree = new RenderTree();
let node = this._renderTree.buildRenderNode(this.post);
this._renderTree.node = node;
this.trigger('update');
},

parseModelFromMobiledoc(mobiledoc) {
this.post = new MobiledocParser().parse(mobiledoc);
let node = new RenderNode(this.post);
this.post.renderNode = node;
this._renderTree = new RenderTree(node);
node.renderTree = this._renderTree;
this._renderTree = new RenderTree();
let node = this._renderTree.buildRenderNode(this.post);
this._renderTree.node = node;
this.trigger('update');
},

Expand Down Expand Up @@ -367,11 +364,9 @@ merge(Editor.prototype, {
);
newSections.push(section);

sectionRenderNode = new RenderNode(section);
sectionRenderNode.renderTree = this._renderTree;
sectionRenderNode = this._renderTree.buildRenderNode(section);
sectionRenderNode.element = node;
sectionRenderNode.markClean();
section.renderNode = sectionRenderNode;

if (previousSection) {
this.post.insertSectionAfter(section, previousSection);
Expand Down Expand Up @@ -418,6 +413,7 @@ merge(Editor.prototype, {
});

this.rerender();
this.trigger('update');
},

getSectionsWithCursor() {
Expand Down Expand Up @@ -476,7 +472,7 @@ merge(Editor.prototype, {
},

insertSectionAtCursor(newSection) {
let newRenderNode = new RenderNode(newSection);
let newRenderNode = this._renderTree.buildRenderNode(newSection);
let renderNodes = this.getRenderNodesWithCursor();
let lastRenderNode = renderNodes[renderNodes.length-1];
lastRenderNode.parentNode.insertAfter(newRenderNode, lastRenderNode);
Expand Down
7 changes: 7 additions & 0 deletions src/js/models/render-tree.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import RenderNode from 'content-kit-editor/models/render-node';
import ElementMap from "../utils/element-map";

export default class RenderTree {
Expand All @@ -8,4 +9,10 @@ export default class RenderTree {
getElementRenderNode(element) {
return this.elements.get(element);
}
buildRenderNode(section) {
let renderNode = new RenderNode(section);
renderNode.renderTree = this;
section.renderNode = renderNode;
return renderNode;
}
}

0 comments on commit 07e2812

Please sign in to comment.