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 }