diff --git a/examples/plugins/collapse-on-escape.js b/examples/plugins/collapse-on-escape.js new file mode 100644 index 000000000..46805d79e --- /dev/null +++ b/examples/plugins/collapse-on-escape.js @@ -0,0 +1,14 @@ +export default function CollapseOnEscape(options = {}) { + return { + onKeyDown(event, change, next) { + const { value } = change + const { selection } = value + + if (event.key === 'Escape' && selection.isExpanded) { + change.moveToEnd() + } else { + return next() + } + }, + } +} diff --git a/examples/plugins/index.js b/examples/plugins/index.js index 24fcee9be..7915e658d 100644 --- a/examples/plugins/index.js +++ b/examples/plugins/index.js @@ -2,45 +2,9 @@ import Plain from 'slate-plain-serializer' import { Editor } from 'slate-react' import React from 'react' -import CollapseOnEscape from 'slate-collapse-on-escape' -import SoftBreak from 'slate-soft-break' -import styled from 'react-emotion' - -/** - * A styled word counter component. - * - * @type {Component} - */ - -const WordCounter = styled('span')` - margin-top: 10px; - padding: 12px; - background-color: #ebebeb; - display: inline-block; -` - -/** - * A simple word count plugin. - * - * @param {Object} options - * @return {Object} - */ - -function WordCount(options) { - return { - renderEditor(props, next) { - const children = next() - return ( -
-
{children}
- - Word Count: {props.value.document.text.split(' ').length} - -
- ) - }, - } -} +import CollapseOnEscape from './collapse-on-escape' +import SoftBreak from './soft-break' +import WordCount from './word-count' /** * Plugins. diff --git a/examples/plugins/soft-break.js b/examples/plugins/soft-break.js new file mode 100644 index 000000000..4c432c867 --- /dev/null +++ b/examples/plugins/soft-break.js @@ -0,0 +1,11 @@ +export default function SoftBreak(options = {}) { + return { + onKeyDown(event, change, next) { + if (event.key === 'Enter') { + change.insertText('\n') + } else { + next() + } + }, + } +} diff --git a/examples/plugins/word-count.js b/examples/plugins/word-count.js new file mode 100644 index 000000000..4cb4c7e21 --- /dev/null +++ b/examples/plugins/word-count.js @@ -0,0 +1,25 @@ +import React from 'react' +import styled from 'react-emotion' + +const WordCounter = styled('span')` + margin-top: 10px; + padding: 12px; + background-color: #ebebeb; + display: inline-block; +` + +export default function WordCount(options) { + return { + renderEditor(props, next) { + const children = next() + return ( +
+
{children}
+ + Word Count: {props.value.document.text.split(' ').length} + +
+ ) + }, + } +} diff --git a/package.json b/package.json index 50d4c1452..41a77f196 100644 --- a/package.json +++ b/package.json @@ -72,10 +72,6 @@ "rollup-plugin-replace": "^2.0.0", "rollup-plugin-sourcemaps": "^0.4.2", "rollup-plugin-uglify": "^3.0.0", - "slate-collapse-on-escape": "^0.6.0", - "slate-dev-benchmark": "*", - "slate-dev-test-utils": "*", - "slate-soft-break": "^0.6.0", "source-map-loader": "^0.2.3", "source-map-support": "^0.4.0", "style-loader": "^0.20.2", @@ -87,6 +83,8 @@ }, "peerDependencies": { "slate": "*", + "slate-dev-benchmark": "*", + "slate-dev-test-utils": "*", "slate-html-serializer": "*", "slate-plain-serializer": "*", "slate-react": "*" diff --git a/yarn.lock b/yarn.lock index 413ce88e9..cade4f82e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7439,20 +7439,10 @@ slash@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" -slate-collapse-on-escape@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/slate-collapse-on-escape/-/slate-collapse-on-escape-0.6.0.tgz#668f2318770608a09a25a95623f5fb4329a277bf" - dependencies: - to-pascal-case "^1.0.0" - slate-simulator@^0.4.67: version "0.4.67" resolved "https://registry.yarnpkg.com/slate-simulator/-/slate-simulator-0.4.67.tgz#9313c84736db1e23d6aebacd536f582b6d54723c" -slate-soft-break@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/slate-soft-break/-/slate-soft-break-0.6.0.tgz#1e44815b7ff4ddada055bba14cd0d2d4ef0fd463" - slice-ansi@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" @@ -8079,12 +8069,6 @@ to-object-path@^0.3.0: dependencies: kind-of "^3.0.2" -to-pascal-case@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-pascal-case/-/to-pascal-case-1.0.0.tgz#0bbdc8df448886ba01535e543327048d0aa1ce78" - dependencies: - to-space-case "^1.0.0" - to-regex-range@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"