diff --git a/.eslintrc b/.eslintrc
index 890fee220..d0456bf30 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -38,7 +38,7 @@
"import/no-named-as-default": "error",
"import/no-named-as-default-member": "error",
"import/no-unresolved": "error",
- "indent": ["error", 2],
+ "indent": ["error", 2, { "SwitchCase": 1, "MemberExpression": 1 }],
"key-spacing": ["error", { "beforeColon": false, "afterColon": true }],
"lines-around-comment": ["error", { "beforeBlockComment": true, "afterBlockComment": true }],
"new-parens": "error",
diff --git a/examples/auto-markdown/index.js b/examples/auto-markdown/index.js
index 8264b6f52..bc6babcce 100644
--- a/examples/auto-markdown/index.js
+++ b/examples/auto-markdown/index.js
@@ -50,17 +50,17 @@ class AutoMarkdown extends React.Component {
getType = (chars) => {
switch (chars) {
- case '*':
- case '-':
- case '+': return 'list-item'
- case '>': return 'block-quote'
- case '#': return 'heading-one'
- case '##': return 'heading-two'
- case '###': return 'heading-three'
- case '####': return 'heading-four'
- case '#####': return 'heading-five'
- case '######': return 'heading-six'
- default: return null
+ case '*':
+ case '-':
+ case '+': return 'list-item'
+ case '>': return 'block-quote'
+ case '#': return 'heading-one'
+ case '##': return 'heading-two'
+ case '###': return 'heading-three'
+ case '####': return 'heading-four'
+ case '#####': return 'heading-five'
+ case '######': return 'heading-six'
+ default: return null
}
}
@@ -105,9 +105,9 @@ class AutoMarkdown extends React.Component {
onKeyDown = (e, data, state) => {
switch (data.key) {
- case 'space': return this.onSpace(e, state)
- case 'backspace': return this.onBackspace(e, state)
- case 'enter': return this.onEnter(e, state)
+ case 'space': return this.onSpace(e, state)
+ case 'backspace': return this.onBackspace(e, state)
+ case 'enter': return this.onEnter(e, state)
}
}
diff --git a/examples/development/performance-rich/index.js b/examples/development/performance-rich/index.js
index 1fafac737..b807f640e 100644
--- a/examples/development/performance-rich/index.js
+++ b/examples/development/performance-rich/index.js
@@ -109,20 +109,20 @@ class RichText extends React.Component {
let mark
switch (data.key) {
- case 'b':
- mark = 'bold'
- break
- case 'i':
- mark = 'italic'
- break
- case 'u':
- mark = 'underlined'
- break
- case '`':
- mark = 'code'
- break
- default:
- return
+ case 'b':
+ mark = 'bold'
+ break
+ case 'i':
+ mark = 'italic'
+ break
+ case 'u':
+ mark = 'underlined'
+ break
+ case '`':
+ mark = 'code'
+ break
+ default:
+ return
}
state = state
diff --git a/examples/focus-blur/index.js b/examples/focus-blur/index.js
index 311be90d6..8ebe9b3e0 100644
--- a/examples/focus-blur/index.js
+++ b/examples/focus-blur/index.js
@@ -1,10 +1,7 @@
-import { Editor, Mark, Raw } from '../..'
+import { Editor, Raw } from '../..'
import React from 'react'
-import ReactDOM from 'react-dom'
import initialState from './state.json'
-import isUrl from 'is-url'
-import { Map } from 'immutable'
/**
* Define a schema.
diff --git a/examples/iframes/index.js b/examples/iframes/index.js
index 6a9bb8629..d50d050a3 100644
--- a/examples/iframes/index.js
+++ b/examples/iframes/index.js
@@ -104,14 +104,14 @@ class Iframes extends React.Component {
let mark
switch (data.key) {
- case 'b':
- mark = 'bold'
- break
- case 'i':
- mark = 'italic'
- break
- default:
- return
+ case 'b':
+ mark = 'bold'
+ break
+ case 'i':
+ mark = 'italic'
+ break
+ default:
+ return
}
state = state
diff --git a/examples/images/index.js b/examples/images/index.js
index 6ecf90bce..0e3ed2a6d 100644
--- a/examples/images/index.js
+++ b/examples/images/index.js
@@ -160,8 +160,8 @@ class Images extends React.Component {
onDrop = (e, data, state, editor) => {
switch (data.type) {
- case 'files': return this.onDropOrPasteFiles(e, data, state, editor)
- case 'node': return this.onDropNode(e, data, state)
+ case 'files': return this.onDropOrPasteFiles(e, data, state, editor)
+ case 'node': return this.onDropNode(e, data, state)
}
}
@@ -197,7 +197,7 @@ class Images extends React.Component {
onDropOrPasteFiles = (e, data, state, editor) => {
for (const file of data.files) {
const reader = new FileReader()
- const [ type, ext ] = file.type.split('/')
+ const [ type ] = file.type.split('/')
if (type != 'image') continue
reader.addEventListener('load', () => {
@@ -222,8 +222,8 @@ class Images extends React.Component {
onPaste = (e, data, state, editor) => {
switch (data.type) {
- case 'files': return this.onDropOrPasteFiles(e, data, state, editor)
- case 'text': return this.onPasteText(e, data, state)
+ case 'files': return this.onDropOrPasteFiles(e, data, state, editor)
+ case 'text': return this.onPasteText(e, data, state)
}
}
diff --git a/examples/rich-text/index.js b/examples/rich-text/index.js
index d0bad01b8..9a344942e 100644
--- a/examples/rich-text/index.js
+++ b/examples/rich-text/index.js
@@ -109,20 +109,20 @@ class RichText extends React.Component {
let mark
switch (data.key) {
- case 'b':
- mark = 'bold'
- break
- case 'i':
- mark = 'italic'
- break
- case 'u':
- mark = 'underlined'
- break
- case '`':
- mark = 'code'
- break
- default:
- return
+ case 'b':
+ mark = 'bold'
+ break
+ case 'i':
+ mark = 'italic'
+ break
+ case 'u':
+ mark = 'underlined'
+ break
+ case '`':
+ mark = 'code'
+ break
+ default:
+ return
}
state = state
diff --git a/examples/tables/index.js b/examples/tables/index.js
index b14471367..e6b8b444b 100644
--- a/examples/tables/index.js
+++ b/examples/tables/index.js
@@ -115,9 +115,9 @@ class Tables extends React.Component {
if (state.startBlock.type != 'table-cell') return
switch (data.key) {
- case 'backspace': return this.onBackspace(e, state)
- case 'delete': return this.onDelete(e, state)
- case 'enter': return this.onEnter(e, state)
+ case 'backspace': return this.onBackspace(e, state)
+ case 'delete': return this.onDelete(e, state)
+ case 'enter': return this.onEnter(e, state)
}
}
diff --git a/src/models/schema.js b/src/models/schema.js
index 719c85404..1a2dbe11d 100644
--- a/src/models/schema.js
+++ b/src/models/schema.js
@@ -226,12 +226,12 @@ function normalizeMarkComponent(render) {
if (isReactComponent(render)) return render
switch (typeOf(render)) {
- case 'function':
- return render
- case 'object':
- return props => {props.children}
- case 'string':
- return props => {props.children}
+ case 'function':
+ return render
+ case 'object':
+ return props => {props.children}
+ case 'string':
+ return props => {props.children}
}
}
diff --git a/src/plugins/core.js b/src/plugins/core.js
index d157dbfd5..9d1263294 100644
--- a/src/plugins/core.js
+++ b/src/plugins/core.js
@@ -262,11 +262,11 @@ function Plugin(options = {}) {
debug('onDrop', { data })
switch (data.type) {
- case 'text':
- case 'html':
- return onDropText(e, data, state)
- case 'fragment':
- return onDropFragment(e, data, state)
+ case 'text':
+ case 'html':
+ return onDropText(e, data, state)
+ case 'fragment':
+ return onDropFragment(e, data, state)
}
}
@@ -347,14 +347,14 @@ function Plugin(options = {}) {
debug('onKeyDown', { data })
switch (data.key) {
- case 'enter': return onKeyDownEnter(e, data, state)
- case 'backspace': return onKeyDownBackspace(e, data, state)
- case 'delete': return onKeyDownDelete(e, data, state)
- case 'left': return onKeyDownLeft(e, data, state)
- case 'right': return onKeyDownRight(e, data, state)
- case 'y': return onKeyDownY(e, data, state)
- case 'z': return onKeyDownZ(e, data, state)
- case 'k': return onKeyDownK(e, data, state)
+ case 'enter': return onKeyDownEnter(e, data, state)
+ case 'backspace': return onKeyDownBackspace(e, data, state)
+ case 'delete': return onKeyDownDelete(e, data, state)
+ case 'left': return onKeyDownLeft(e, data, state)
+ case 'right': return onKeyDownRight(e, data, state)
+ case 'y': return onKeyDownY(e, data, state)
+ case 'z': return onKeyDownZ(e, data, state)
+ case 'k': return onKeyDownK(e, data, state)
}
}
@@ -626,11 +626,11 @@ function Plugin(options = {}) {
debug('onPaste', { data })
switch (data.type) {
- case 'fragment':
- return onPasteFragment(e, data, state)
- case 'text':
- case 'html':
- return onPasteText(e, data, state)
+ case 'fragment':
+ return onPasteFragment(e, data, state)
+ case 'text':
+ case 'html':
+ return onPasteText(e, data, state)
}
}
diff --git a/src/serializers/html.js b/src/serializers/html.js
index e7f4b450f..0ee5f8048 100644
--- a/src/serializers/html.js
+++ b/src/serializers/html.js
@@ -130,17 +130,17 @@ class Html {
elements.forEach((element) => {
const node = this.deserializeElement(element)
switch (typeOf(node)) {
- case 'array':
- nodes = nodes.concat(node)
- break
- case 'object':
- nodes.push(node)
- break
- case 'null':
- case 'undefined':
- return
- default:
- throw new Error(`A rule returned an invalid deserialized representation: "${node}".`)
+ case 'array':
+ nodes = nodes.concat(node)
+ break
+ case 'object':
+ nodes.push(node)
+ break
+ case 'null':
+ case 'undefined':
+ return
+ default:
+ throw new Error(`A rule returned an invalid deserialized representation: "${node}".`)
}
})
@@ -159,15 +159,15 @@ class Html {
const next = (elements) => {
switch (typeOf(elements)) {
- case 'array':
- return this.deserializeElements(elements)
- case 'object':
- return this.deserializeElement(elements)
- case 'null':
- case 'undefined':
- return
- default:
- throw new Error(`The \`next\` argument was called with invalid children: "${elements}".`)
+ case 'array':
+ return this.deserializeElements(elements)
+ case 'object':
+ return this.deserializeElement(elements)
+ case 'null':
+ case 'undefined':
+ return
+ default:
+ throw new Error(`The \`next\` argument was called with invalid children: "${elements}".`)
}
}
diff --git a/src/serializers/raw.js b/src/serializers/raw.js
index 10a0d12d8..8f132fec2 100644
--- a/src/serializers/raw.js
+++ b/src/serializers/raw.js
@@ -111,13 +111,13 @@ const Raw = {
deserializeNode(object, options) {
switch (object.kind) {
- case 'block': return Raw.deserializeBlock(object, options)
- case 'document': return Raw.deserializeDocument(object, options)
- case 'inline': return Raw.deserializeInline(object, options)
- case 'text': return Raw.deserializeText(object, options)
- default: {
- throw new Error(`Unrecognized node kind "${object.kind}".`)
- }
+ case 'block': return Raw.deserializeBlock(object, options)
+ case 'document': return Raw.deserializeDocument(object, options)
+ case 'inline': return Raw.deserializeInline(object, options)
+ case 'text': return Raw.deserializeText(object, options)
+ default: {
+ throw new Error(`Unrecognized node kind "${object.kind}".`)
+ }
}
},
@@ -305,13 +305,13 @@ const Raw = {
serializeNode(node, options) {
switch (node.kind) {
- case 'block': return Raw.serializeBlock(node, options)
- case 'document': return Raw.serializeDocument(node, options)
- case 'inline': return Raw.serializeInline(node, options)
- case 'text': return Raw.serializeText(node, options)
- default: {
- throw new Error(`Unrecognized node kind "${node.kind}".`)
- }
+ case 'block': return Raw.serializeBlock(node, options)
+ case 'document': return Raw.serializeDocument(node, options)
+ case 'inline': return Raw.serializeInline(node, options)
+ case 'text': return Raw.serializeText(node, options)
+ default: {
+ throw new Error(`Unrecognized node kind "${node.kind}".`)
+ }
}
},
diff --git a/src/utils/normalize.js b/src/utils/normalize.js
index b8fa5467a..e8e84b96c 100644
--- a/src/utils/normalize.js
+++ b/src/utils/normalize.js
@@ -20,12 +20,12 @@ function block(value) {
if (value instanceof Block) return value
switch (typeOf(value)) {
- case 'string':
- case 'object':
- return Block.create(nodeProperties(value))
+ case 'string':
+ case 'object':
+ return Block.create(nodeProperties(value))
- default:
- throw new Error(`Invalid \`block\` argument! It must be a block, an object, or a string. You passed: "${value}".`)
+ default:
+ throw new Error(`Invalid \`block\` argument! It must be a block, an object, or a string. You passed: "${value}".`)
}
}
@@ -40,12 +40,12 @@ function inline(value) {
if (value instanceof Inline) return value
switch (typeOf(value)) {
- case 'string':
- case 'object':
- return Inline.create(nodeProperties(value))
+ case 'string':
+ case 'object':
+ return Inline.create(nodeProperties(value))
- default:
- throw new Error(`Invalid \`inline\` argument! It must be an inline, an object, or a string. You passed: "${value}".`)
+ default:
+ throw new Error(`Invalid \`inline\` argument! It must be an inline, an object, or a string. You passed: "${value}".`)
}
}
@@ -79,12 +79,12 @@ function mark(value) {
if (value instanceof Mark) return value
switch (typeOf(value)) {
- case 'string':
- case 'object':
- return Mark.create(markProperties(value))
+ case 'string':
+ case 'object':
+ return Mark.create(markProperties(value))
- default:
- throw new Error(`Invalid \`mark\` argument! It must be a mark, an object, or a string. You passed: "${value}".`)
+ default:
+ throw new Error(`Invalid \`mark\` argument! It must be a mark, an object, or a string. You passed: "${value}".`)
}
}
@@ -99,22 +99,22 @@ function markProperties(value = {}) {
const ret = {}
switch (typeOf(value)) {
- case 'string':
- ret.type = value
- break
+ case 'string':
+ ret.type = value
+ break
- case 'object':
- for (const k in value) {
- if (k == 'data') {
- if (value[k] !== undefined) ret[k] = Data.create(value[k])
- } else {
- ret[k] = value[k]
+ case 'object':
+ for (const k in value) {
+ if (k == 'data') {
+ if (value[k] !== undefined) ret[k] = Data.create(value[k])
+ } else {
+ ret[k] = value[k]
+ }
}
- }
- break
+ break
- default:
- throw new Error(`Invalid mark \`properties\` argument! It must be an object, a string or a mark. You passed: "${value}".`)
+ default:
+ throw new Error(`Invalid mark \`properties\` argument! It must be an object, a string or a mark. You passed: "${value}".`)
}
return ret
@@ -131,23 +131,23 @@ function nodeProperties(value = {}) {
const ret = {}
switch (typeOf(value)) {
- case 'string':
- ret.type = value
- break
+ case 'string':
+ ret.type = value
+ break
- case 'object':
- if (value.isVoid !== undefined) ret.isVoid = !!value.isVoid
- for (const k in value) {
- if (k == 'data') {
- if (value[k] !== undefined) ret[k] = Data.create(value[k])
- } else {
- ret[k] = value[k]
+ case 'object':
+ if (value.isVoid !== undefined) ret.isVoid = !!value.isVoid
+ for (const k in value) {
+ if (k == 'data') {
+ if (value[k] !== undefined) ret[k] = Data.create(value[k])
+ } else {
+ ret[k] = value[k]
+ }
}
- }
- break
+ break
- default:
- throw new Error(`Invalid node \`properties\` argument! It must be an object, a string or a node. You passed: "${value}".`)
+ default:
+ throw new Error(`Invalid node \`properties\` argument! It must be an object, a string or a node. You passed: "${value}".`)
}
return ret
@@ -164,11 +164,11 @@ function selection(value) {
if (value instanceof Selection) return value
switch (typeOf(value)) {
- case 'object':
- return Selection.create(value)
+ case 'object':
+ return Selection.create(value)
- default:
- throw new Error(`Invalid \`selection\` argument! It must be a selection or an object. You passed: "${value}".`)
+ default:
+ throw new Error(`Invalid \`selection\` argument! It must be a selection or an object. You passed: "${value}".`)
}
}
@@ -183,18 +183,18 @@ function selectionProperties(value = {}) {
const ret = {}
switch (typeOf(value)) {
- case 'object':
- if (value.anchorKey !== undefined) ret.anchorKey = value.anchorKey
- if (value.anchorOffset !== undefined) ret.anchorOffset = value.anchorOffset
- if (value.focusKey !== undefined) ret.focusKey = value.focusKey
- if (value.focusOffset !== undefined) ret.focusOffset = value.focusOffset
- if (value.isBackward !== undefined) ret.isBackward = !!value.isBackward
- if (value.isFocused !== undefined) ret.isFocused = !!value.isFocused
- if (value.marks !== undefined) ret.marks = value.marks
- break
+ case 'object':
+ if (value.anchorKey !== undefined) ret.anchorKey = value.anchorKey
+ if (value.anchorOffset !== undefined) ret.anchorOffset = value.anchorOffset
+ if (value.focusKey !== undefined) ret.focusKey = value.focusKey
+ if (value.focusOffset !== undefined) ret.focusOffset = value.focusOffset
+ if (value.isBackward !== undefined) ret.isBackward = !!value.isBackward
+ if (value.isFocused !== undefined) ret.isFocused = !!value.isFocused
+ if (value.marks !== undefined) ret.marks = value.marks
+ break
- default:
- throw new Error(`Invalid selection \`properties\` argument! It must be an object or a selection. You passed: "${value}".`)
+ default:
+ throw new Error(`Invalid selection \`properties\` argument! It must be an object or a selection. You passed: "${value}".`)
}
return ret
diff --git a/src/utils/transfer.js b/src/utils/transfer.js
index df5adc6a7..27965e87c 100644
--- a/src/utils/transfer.js
+++ b/src/utils/transfer.js
@@ -41,22 +41,22 @@ class Transfer {
data.type = type
switch (type) {
- case 'files':
- data.files = this.getFiles()
- break
- case 'fragment':
- data.fragment = this.getFragment()
- break
- case 'html':
- data.html = this.getHtml()
- data.text = this.getText()
- break
- case 'node':
- data.node = this.getNode()
- break
- case 'text':
- data.text = this.getText()
- break
+ case 'files':
+ data.files = this.getFiles()
+ break
+ case 'fragment':
+ data.fragment = this.getFragment()
+ break
+ case 'html':
+ data.html = this.getHtml()
+ data.text = this.getText()
+ break
+ case 'node':
+ data.node = this.getNode()
+ break
+ case 'text':
+ data.text = this.getText()
+ break
}
return data
@@ -76,8 +76,8 @@ class Transfer {
if (data.items && data.items.length) {
const fileItems = Array.from(data.items)
- .map(item => item.kind == 'file' ? item.getAsFile() : null)
- .filter(exists => exists)
+ .map(item => item.kind == 'file' ? item.getAsFile() : null)
+ .filter(exists => exists)
if (fileItems.length) files = fileItems
}