From 38b85fe7207a226d3c973a0550b1b64e573b8b05 Mon Sep 17 00:00:00 2001 From: Ian Storm Taylor Date: Tue, 21 Jun 2016 17:08:15 -0700 Subject: [PATCH] fix bugs in rich text example --- examples/rich-text/index.js | 4 ++-- lib/models/node.js | 15 +++++---------- lib/models/state.js | 8 ++++---- 3 files changed, 11 insertions(+), 16 deletions(-) diff --git a/examples/rich-text/index.js b/examples/rich-text/index.js index c40b910a0..bb284dca2 100644 --- a/examples/rich-text/index.js +++ b/examples/rich-text/index.js @@ -22,8 +22,8 @@ class App extends React.Component { hasBlock(type) { const { state } = this.state - const { currentWrappingNodes } = state - return currentWrappingNodes.some(node => node.type == type) + const { currentBlockNodes } = state + return currentBlockNodes.some(node => node.type == type) } onClickMark(e, type) { diff --git a/lib/models/node.js b/lib/models/node.js index c9fc9fa17..31c52f547 100644 --- a/lib/models/node.js +++ b/lib/models/node.js @@ -549,16 +549,11 @@ const Node = { hasNode(key) { key = normalizeKey(key) - - const shallow = this.nodes.has(key) - if (shallow) return true - - const deep = this.nodes - .map(node => node.kind == 'text' ? false : node.hasNode(key)) - .some(has => has) - if (deep) return true - - return false + return !! this.nodes.find((node) => { + return node.kind == 'text' + ? node.key == key + : node.key == key || node.hasNode(key) + }) }, /** diff --git a/lib/models/state.js b/lib/models/state.js index 3e419b37e..173a7ed4d 100644 --- a/lib/models/state.js +++ b/lib/models/state.js @@ -200,12 +200,12 @@ class State extends Record(DEFAULTS) { const { startKey } = selection const startNode = document.getNode(startKey) - if (selection.isAtStartOf(document)) { - after = selection + if (selection.isExpanded) { + after = selection.moveToStart() } - else if (selection.isExpanded) { - after = selection.moveToStart() + else if (selection.isAtStartOf(document)) { + after = selection } else if (selection.isAtStartOf(startNode)) {