From ace9f47930550cfea49107684b1ceb63a046e91b Mon Sep 17 00:00:00 2001 From: Ian Storm Taylor Date: Mon, 11 Sep 2017 18:11:45 -0700 Subject: [PATCH] change slate to be a monorepo using lerna (#1106) * init lerna, move files into ./packages * move test files into ./packages * more moving around * fill out package.json files * fixing imports * more fixing of imports, and horribleness * convert examples, fix linting errors * add documentation * update docs * get tests passing * update travis.yml * update travis.yml * update travis.yml * update test script * update travis.yml * update scripts * try simplifying travis.yml * ocd stuff * remove slate-core-test-helpers package * add package readmes * update reference docs structure * refactor slate-simulator into its own package * add docs for new packages * update docs * separate benchmarks into packages, and refactor them --- .babelrc | 2 +- .eslintrc | 2 +- .gitignore | 2 + .npmignore | 2 +- .travis.yml | 47 +- Changelog.md | 1 + Contributing.md | 74 +- License.md | 2 +- .../models/get-blocks-at-range/index.js | 17 - .../models/get-blocks-at-range/input.yaml | 683 -------- benchmark/fixtures/models/get-blocks/index.js | 10 - .../fixtures/models/get-blocks/input.yaml | 683 -------- .../models/get-characters-at-range/index.js | 18 - .../models/get-characters-at-range/input.yaml | 683 -------- .../fixtures/models/get-characters/index.js | 11 - .../fixtures/models/get-characters/input.yaml | 683 -------- .../models/get-inlines-at-range/index.js | 17 - .../models/get-inlines-at-range/input.yaml | 683 -------- .../fixtures/models/get-inlines/index.js | 10 - .../fixtures/models/get-inlines/input.yaml | 683 -------- .../models/get-marks-at-range/index.js | 17 - .../models/get-marks-at-range/input.yaml | 683 -------- benchmark/fixtures/models/get-marks/index.js | 10 - .../fixtures/models/get-marks/input.yaml | 683 -------- benchmark/fixtures/models/get-path/index.js | 17 - benchmark/fixtures/models/get-path/input.yaml | 683 -------- benchmark/fixtures/models/get-ranges/index.js | 17 - .../fixtures/models/get-ranges/input.yaml | 19 - .../models/get-texts-at-range/index.js | 18 - .../models/get-texts-at-range/input.yaml | 683 -------- benchmark/fixtures/models/get-texts/index.js | 11 - .../fixtures/models/get-texts/input.yaml | 683 -------- .../fixtures/models/update-node/index.js | 20 - .../fixtures/models/update-node/input.yaml | 683 -------- benchmark/fixtures/rendering/normal/index.js | 8 - .../fixtures/rendering/normal/input.yaml | 683 -------- .../serializers/raw-deserialize/index.js | 10 - .../serializers/raw-deserialize/input.yaml | 683 -------- .../serializers/raw-serialize/index.js | 6 - .../serializers/raw-serialize/input.yaml | 683 -------- .../transforms/delete-backward/index.js | 18 - .../transforms/delete-backward/input.yaml | 683 -------- .../fixtures/transforms/insert-text/index.js | 18 - .../transforms/insert-text/input.yaml | 41 - .../fixtures/transforms/normalize/index.js | 8 - .../fixtures/transforms/normalize/input.yaml | 683 -------- .../fixtures/transforms/split-block/index.js | 18 - .../transforms/split-block/input.yaml | 683 -------- benchmark/index.js | 38 - book.json | 14 +- docs/Introduction.md | 124 ++ docs/Readme.md | 147 +- docs/Summary.md | 59 - docs/reference/Readme.md | 29 - .../index.md} | 20 +- docs/reference/slate-hyperscript/index.md | 90 ++ .../index.md} | 10 +- docs/reference/slate-prop-types/index.md | 144 ++ .../core.md => slate-react/core-plugin.md} | 2 +- .../custom.md => slate-react/custom-nodes.md} | 10 +- .../{components => slate-react}/editor.md | 10 +- .../placeholder.md | 2 +- .../plugin.md => slate-react/plugins.md} | 6 +- docs/reference/slate-react/utils.md | 18 + docs/reference/slate-simulator/index.md | 87 + docs/reference/{models => slate}/block.md | 0 docs/reference/{models => slate}/change.md | 0 docs/reference/{models => slate}/character.md | 0 docs/reference/{models => slate}/data.md | 0 docs/reference/{models => slate}/document.md | 0 docs/reference/{models => slate}/inline.md | 0 docs/reference/{models => slate}/mark.md | 0 docs/reference/{models => slate}/node.md | 0 docs/reference/{models => slate}/schema.md | 0 docs/reference/{models => slate}/selection.md | 0 docs/reference/{models => slate}/state.md | 2 +- docs/reference/{models => slate}/text.md | 0 docs/reference/{utils => slate}/utils.md | 10 +- examples/Readme.md | 26 +- examples/check-lists/index.js | 4 +- examples/code-highlighting/index.js | 4 +- examples/dev/huge-document/index.js | 4 +- examples/dev/performance-plain/index.js | 4 +- examples/dev/performance-rich/index.js | 4 +- examples/embeds/index.js | 4 +- examples/emojis/index.js | 4 +- examples/forced-layout/index.js | 4 +- examples/hovering-menu/index.js | 4 +- examples/iframes/index.js | 4 +- examples/images/index.js | 4 +- examples/links/index.js | 4 +- examples/markdown-preview/index.js | 5 +- examples/markdown-shortcuts/index.js | 4 +- examples/paste-html/index.js | 5 +- examples/plain-text/index.js | 4 +- examples/plugins/index.js | 4 +- examples/read-only/index.js | 4 +- examples/rich-text/index.js | 4 +- examples/rtl/index.js | 4 +- examples/tables/index.js | 4 +- lerna.json | 6 + package.json | 119 +- packages/Readme.md | 19 + packages/slate-base64-serializer/.npmignore | 7 + packages/slate-base64-serializer/Readme.md | 4 + packages/slate-base64-serializer/package.json | 37 + .../slate-base64-serializer/src/index.js | 4 +- .../slate-base64-serializer/test/index.js | 0 packages/slate-html-serializer/.npmignore | 7 + packages/slate-html-serializer/Readme.md | 4 + packages/slate-html-serializer/package.json | 50 + .../slate-html-serializer/src/index.js | 5 +- .../test}/deserialize/block-nested.js | 2 +- .../test}/deserialize/block-no-children.js | 2 +- .../test}/deserialize/block-with-data.js | 2 +- .../test}/deserialize/block-with-is-void.js | 2 +- .../test}/deserialize/block.js | 2 +- .../test}/deserialize/default-block.js | 2 +- .../test}/deserialize/empty-string.js | 2 +- .../test}/deserialize/html-comment.js | 2 +- .../test}/deserialize/inline-nested.js | 2 +- .../test}/deserialize/inline-no-children.js | 2 +- .../test}/deserialize/inline-with-data.js | 2 +- .../test}/deserialize/inline-with-is-void.js | 2 +- .../test}/deserialize/inline.js | 2 +- .../test}/deserialize/mark-adjacent.js | 2 +- .../test}/deserialize/mark-nested.js | 2 +- .../test}/deserialize/mark-with-data.js | 2 +- .../test}/deserialize/mark.js | 2 +- .../deserialize/multiple-matching-rules.js | 2 +- .../test}/deserialize/no-next.js | 2 +- .../test}/deserialize/skip-element.js | 2 +- .../test}/deserialize/to-json.js | 0 .../slate-html-serializer/test}/helpers/h.js | 2 +- packages/slate-html-serializer/test/index.js | 65 + .../test}/serialize/block-nested.js | 2 +- .../test}/serialize/block-with-data.js | 2 +- .../test}/serialize/block-with-is-void.js | 2 +- .../test}/serialize/block-with-mark.js | 2 +- .../test}/serialize/block.js | 2 +- .../test}/serialize/inline-nested.js | 2 +- .../test}/serialize/inline-with-data.js | 2 +- .../test}/serialize/inline-with-is-void.js | 2 +- .../test}/serialize/inline-with-mark.js | 2 +- .../test}/serialize/inline.js | 2 +- .../test}/serialize/multiple-rules.js | 2 +- packages/slate-hyperscript/.npmignore | 7 + packages/slate-hyperscript/Readme.md | 4 + packages/slate-hyperscript/package.json | 41 + .../slate-hyperscript/src/index.js | 19 +- packages/slate-hyperscript/test/index.js | 0 packages/slate-logger/.npmignore | 7 + packages/slate-logger/Readme.md | 4 + packages/slate-logger/package.json | 23 + .../slate-logger/src/index.js | 12 +- packages/slate-logger/test/index.js | 0 packages/slate-plain-serializer/.npmignore | 7 + packages/slate-plain-serializer/Readme.md | 4 + packages/slate-plain-serializer/package.json | 47 + .../slate-plain-serializer/src/index.js | 7 +- .../test}/deserialize/line-multiple.js | 2 +- .../test}/deserialize/line.js | 2 +- .../test}/deserialize/to-json.js | 0 .../slate-plain-serializer/test/helpers/h.js | 43 + packages/slate-plain-serializer/test/index.js | 62 + .../test}/serialize/block-multiple-empty.js | 2 +- .../test}/serialize/block-multiple.js | 2 +- .../serialize/block-nested-multiple-empty.js | 2 +- .../test}/serialize/block-nested-multiple.js | 2 +- .../serialize/block-nested-nested-multiple.js | 2 +- .../block-nested-with-inline-nested.js | 2 +- .../serialize/block-nested-with-inlines.js | 2 +- .../test}/serialize/block-with-data.js | 2 +- .../test}/serialize/block-with-is-void.js | 2 +- .../test}/serialize/block-with-mark.js | 2 +- .../test}/serialize/block.js | 2 +- .../test}/serialize/inline-nested.js | 2 +- .../test}/serialize/inline-with-data.js | 2 +- .../test}/serialize/inline-with-is-void.js | 2 +- .../test}/serialize/inline-with-mark.js | 2 +- .../test}/serialize/inline.js | 2 +- packages/slate-prop-types/.npmignore | 7 + packages/slate-prop-types/Readme.md | 4 + packages/slate-prop-types/package.json | 42 + .../slate-prop-types/src/index.js | 33 +- packages/slate-prop-types/test/index.js | 0 packages/slate-react/.npmignore | 7 + packages/slate-react/Readme.md | 11 + packages/slate-react/benchmark/index.js | 34 + .../slate-react/benchmark/rendering/normal.js | 28 + packages/slate-react/package.json | 72 + .../slate-react/src}/components/Readme.md | 0 .../slate-react/src}/components/content.js | 6 +- .../slate-react/src}/components/editor.js | 45 +- .../slate-react/src}/components/leaf.js | 2 +- .../slate-react/src}/components/node.js | 6 +- .../src}/components/placeholder.js | 3 +- .../slate-react/src}/components/void.js | 4 +- .../slate-react/src}/constants/environment.js | 0 .../src}/constants/transfer-types.js | 0 packages/slate-react/src/index.js | 31 + .../slate-react/src}/plugins/Readme.md | 0 .../slate-react/src}/plugins/core.js | 14 +- .../src}/utils/extend-selection.js | 0 .../src}/utils/find-closest-node.js | 0 .../src}/utils/find-deepest-node.js | 0 .../slate-react/src}/utils/find-dom-node.js | 0 .../src}/utils/get-caret-position.js | 1 + .../src}/utils/get-html-from-native-paste.js | 0 .../slate-react/src}/utils/get-point.js | 0 .../src}/utils/get-transfer-data.js | 3 +- .../slate-react/src}/utils/noop.js | 0 .../src}/utils/normalize-node-and-offset.js | 0 .../slate-react/src}/utils/offset-key.js | 0 .../src}/utils/scroll-to-selection.js | 0 .../src}/utils/set-transfer-data.js | 0 .../slate-react/test}/helpers/clean.js | 3 +- packages/slate-react/test/helpers/h.js | 43 + packages/slate-react/test/index.js | 29 + .../plugins/core/on-blur/blur-selection.js | 0 .../core/on-key-down/split-empty-block.js | 0 .../plugins/core/on-select/move-selection.js | 2 +- .../slate-react/test}/plugins/index.js | 12 +- .../fixtures/custom-block-multiple.js | 0 .../rendering/fixtures/custom-block-void.js | 0 .../test}/rendering/fixtures/custom-block.js | 0 .../rendering/fixtures/custom-decorator.js | 2 +- .../fixtures/custom-inline-multiple.js | 0 .../rendering/fixtures/custom-inline-void.js | 0 .../test}/rendering/fixtures/custom-inline.js | 0 .../fixtures/custom-mark-as-component.js | 0 .../fixtures/custom-mark-as-function.js | 0 .../fixtures/custom-mark-as-object.js | 0 .../fixtures/custom-mark-as-string.js | 0 .../fixtures/default-block-with-inline.js | 0 .../test}/rendering/fixtures/default-block.js | 0 .../fixtures/empty-block-with-inline.js | 0 .../test}/rendering/fixtures/empty-block.js | 0 .../fixtures/nested-text-direction.js | 0 .../rendering/fixtures/text-direction.js | 0 .../slate-react/test}/rendering/index.js | 4 +- packages/slate-simulator/.npmignore | 7 + packages/slate-simulator/Readme.md | 4 + packages/slate-simulator/package.json | 39 + .../slate-simulator/src/index.js | 41 +- packages/slate-simulator/test/index.js | 0 packages/slate/.npmignore | 7 + packages/slate/Readme.md | 13 + .../benchmark/changes/delete-backward.js | 27 + .../slate/benchmark/changes/insert-text.js | 27 + packages/slate/benchmark/changes/normalize.js | 28 + .../slate/benchmark/changes/split-block.js | 27 + packages/slate/benchmark/index.js | 41 + packages/slate/benchmark/models/from-json.js | 48 + .../benchmark/models/get-blocks-at-range.js | 31 + packages/slate/benchmark/models/get-blocks.js | 24 + .../models/get-characters-at-range.js | 31 + .../slate/benchmark/models/get-characters.js | 24 + .../benchmark/models/get-inlines-at-range.js | 31 + .../slate/benchmark/models/get-inlines.js | 24 + .../benchmark/models/get-marks-at-range.js | 31 + packages/slate/benchmark/models/get-marks.js | 24 + packages/slate/benchmark/models/get-path.js | 31 + packages/slate/benchmark/models/get-ranges.js | 31 + .../benchmark/models/get-texts-at-range.js | 31 + packages/slate/benchmark/models/get-texts.js | 24 + packages/slate/benchmark/models/to-json.js | 24 + .../slate/benchmark/models/update-node.js | 34 + packages/slate/package.json | 63 + {src => packages/slate/src}/changes/Readme.md | 0 .../slate/src}/changes/at-current-range.js | 0 .../slate/src}/changes/at-range.js | 3 +- {src => packages/slate/src}/changes/by-key.js | 0 {src => packages/slate/src}/changes/index.js | 0 .../slate/src}/changes/normalize.js | 3 +- .../slate/src}/changes/on-history.js | 0 .../slate/src}/changes/on-selection.js | 7 +- .../slate/src}/changes/on-state.js | 0 .../slate/src}/constants/model-types.js | 0 {src => packages/slate/src}/index.js | 32 +- {src => packages/slate/src}/models/Readme.md | 0 {src => packages/slate/src}/models/block.js | 7 +- {src => packages/slate/src}/models/change.js | 7 +- .../slate/src}/models/character.js | 7 +- {src => packages/slate/src}/models/data.js | 0 .../slate/src}/models/document.js | 5 +- {src => packages/slate/src}/models/history.js | 3 +- {src => packages/slate/src}/models/inline.js | 5 +- {src => packages/slate/src}/models/mark.js | 5 +- {src => packages/slate/src}/models/node.js | 9 +- {src => packages/slate/src}/models/range.js | 5 +- {src => packages/slate/src}/models/schema.js | 7 +- .../slate/src}/models/selection.js | 7 +- {src => packages/slate/src}/models/stack.js | 35 +- {src => packages/slate/src}/models/state.js | 7 +- {src => packages/slate/src}/models/text.js | 7 +- .../slate/src}/operations/Readme.md | 0 .../slate/src}/operations/apply.js | 3 +- .../slate/src}/operations/index.js | 0 .../slate/src}/operations/invert.js | 0 {src => packages/slate/src}/schemas/Readme.md | 0 {src => packages/slate/src}/schemas/core.js | 3 +- {src => packages/slate/src}/utils/Readme.md | 0 .../slate/src}/utils/generate-key.js | 0 .../slate/src}/utils/is-index-in-range.js | 0 .../slate/src}/utils/is-react-component.js | 0 {src => packages/slate/src}/utils/memoize.js | 13 +- {src => packages/slate/src}/utils/string.js | 0 .../add-mark/across-blocks.js | 0 .../add-mark/across-inlines.js | 0 .../add-mark/collapsed-selection.js | 0 .../add-mark/existing-marks.js | 0 .../add-mark/first-character.js | 0 .../add-mark/last-character.js | 0 .../add-mark/middle-character.js | 0 .../at-current-range/add-mark/whole-word.js | 0 .../add-mark/with-mark-object.js | 0 .../add-mark/with-plain-object.js | 0 .../delete-backward/empty-after-void-block.js | 0 .../delete-backward/first-character.js | 0 .../delete-backward/inline-after.js | 0 .../delete-backward/inline-before.js | 0 .../delete-backward/inline-end.js | 0 .../delete-backward/inline-inside.js | 0 .../join-blocks-with-inline-void.js | 0 .../join-blocks-with-inline.js | 0 .../delete-backward/join-blocks.js | 0 .../delete-backward/join-nested-blocks.js | 0 .../delete-backward/last-character.js | 0 .../delete-backward/middle-character.js | 0 .../delete-backward/multiple-characters.js | 0 .../delete-backward/single-non-void-block.js | 0 .../delete-backward/single-void-block.js | 0 .../delete-backward/start-of-document.js | 0 .../inline-after-emoji.js | 0 .../delete-char-backward/inline-end-emoji.js | 0 .../inline-inside-emoji.js | 0 .../delete-char-backward/inline-only-emoji.js | 0 .../delete-char-backward/text-end.js | 0 .../delete-char-backward/text-middle.js | 0 .../delete-char-backward/text-start.js | 0 .../inline-before-emoji.js | 0 .../inline-middle-emoji.js | 0 .../delete-char-forward/inline-start-emoji.js | 0 .../delete-char-forward/text-last.js | 0 .../delete-char-forward/text-middle.js | 0 .../delete-char-forward/text-start.js | 0 .../delete-forward/before-inline-sibling.js | 0 .../delete-forward/empty-before-void-block.js | 0 .../delete-forward/end-of-document.js | 0 .../delete-forward/first-character.js | 0 .../delete-forward/inside-inline-sibling.js | 0 .../join-blocks-with-inline-void.js | 0 .../delete-forward/join-blocks-with-inline.js | 0 .../delete-forward/join-blocks.js | 0 .../delete-forward/join-nested-blocks.js | 0 .../delete-forward/last-character.js | 0 .../delete-forward/middle-character.js | 0 .../delete-forward/multiple-characters.js | 0 .../delete-forward/single-non-void-block.js | 0 .../delete-forward/single-void-block.js | 0 .../start-text-middle-inline.js | 0 .../inline-after-emoji.js | 0 .../inline-middle-emoji.js | 0 .../delete-word-backward/text-end.js | 0 .../delete-word-backward/word-middle.js | 0 .../delete-word-forward/inline-after-emoji.js | 0 .../inline-middle-emoji.js | 0 .../delete-word-forward/word-middle.js | 0 .../delete-word-forward/word-start.js | 0 .../delete/across-blocks-inlines.js | 0 .../at-current-range/delete/across-depths.js | 0 .../delete/across-nested-blocks.js | 0 .../delete/across-texts-and-inlines.js | 0 .../delete/before-inline-sibling.js | 0 .../delete/first-character.js | 0 .../hanging-selection-multiple-blocks.js | 0 .../delete/hanging-selection-single-block.js | 0 .../delete/inside-inline-sibling.js | 0 .../delete/join-blocks-and-trim.js | 0 .../delete/join-blocks-with-inlines.js | 0 .../at-current-range/delete/join-blocks.js | 0 .../delete/join-double-nested-blocks.js | 0 .../delete/join-nested-blocks.js | 0 .../at-current-range/delete/last-character.js | 0 .../delete/middle-character.js | 0 .../at-current-range/delete/nested-block.js | 0 ...-first-with-void-siblings-only-non-void.js | 0 ...tially-non-void-and-up-to-start-of-void.js | 0 ...id-siblings-partially-non-void-and-void.js | 0 ...t-with-void-siblings-partially-non-void.js | 0 ...ock-as-first-with-non-void-siblings-all.js | 0 ...on-void-siblings-backward-selection-all.js | 0 ...-first-with-non-void-siblings-only-void.js | 0 ...void-siblings-select-void-and-next-word.js | 0 ...-siblings-select-void-end-and-next-word.js | 0 .../delete/void-block-as-only.js | 0 ...-with-non-void-siblings-only-first-void.js | 0 ...first-with-non-void-siblings-only-voids.js | 0 ...nline-as-first-with-non-void-block-next.js | 0 ...d-inline-as-first-with-non-void-sibling.js | 0 ...whole-block-with-other-block-type-below.js | 0 .../at-current-range/delete/whole-inline.js | 0 .../at-current-range/delete/whole-word.js | 0 .../insert-block/block-end.js | 0 .../insert-block/block-middle.js | 0 .../insert-block/block-start.js | 0 .../at-current-range/insert-block/is-empty.js | 0 .../insert-block/is-void-end.js | 0 .../insert-block/is-void-start.js | 0 .../insert-block/with-block.js | 0 .../insert-block/with-object.js | 0 .../end-block-multiple-blocks.js | 0 .../insert-fragment/end-block.js | 0 .../insert-fragment/end-inline.js | 0 .../fragment-multiple-blocks.js | 0 .../insert-fragment/fragment-nested-blocks.js | 0 .../insert-fragment/middle-block.js | 0 .../middle-inline-fragment-inline.js | 0 .../insert-fragment/middle-inline.js | 0 .../nested-block-fragment-nested-blocks.js | 0 .../start-block-multiple-blocks.js | 0 .../insert-fragment/start-block.js | 0 .../insert-fragment/start-inline.js | 0 .../insert-fragment/start-second-block.js | 0 .../with-delete-across-blocks.js | 0 .../insert-inline/block-end.js | 0 .../insert-inline/block-middle.js | 0 .../insert-inline/block-start.js | 0 .../insert-inline/inline-middle.js | 0 .../insert-inline/is-empty.js | 0 .../at-current-range/insert-inline/is-void.js | 0 .../insert-inline/with-inline.js | 0 .../insert-text/after-mark.js | 0 .../insert-text/before-mark.js | 0 .../insert-text/during-mark.js | 0 .../insert-text/first-character.js | 0 .../insert-text/first-space.js | 0 .../insert-text/first-words.js | 0 .../insert-text/inside-void.js | 0 .../insert-text/last-character.js | 0 .../insert-text/last-space.js | 0 .../insert-text/last-words.js | 0 .../insert-text/middle-character.js | 0 .../insert-text/middle-space.js | 0 .../insert-text/middle-words.js | 0 .../insert-text/with-marks.js | 0 .../remove-mark/across-blocks.js | 0 .../remove-mark/across-inlines.js | 0 .../remove-mark/collapsed-selection.js | 0 .../remove-mark/existing-marks.js | 0 .../remove-mark/first-character.js | 0 .../remove-mark/last-character.js | 0 .../remove-mark/middle-character.js | 0 .../remove-mark/whole-word.js | 0 .../remove-mark/with-mark-object.js | 0 .../remove-mark/with-plain-object.js | 0 .../set-block/across-blocks.js | 0 .../set-block/across-inlines.js | 0 .../at-current-range/set-block/data-only.js | 0 .../set-block/nested-block.js | 0 .../single-block-string-shorthand.js | 0 .../set-block/single-block.js | 0 .../set-block/with-data-as-map.js | 0 .../set-block/with-data-as-object.js | 0 .../set-block/with-is-void.js | 0 .../set-inline/across-inlines.js | 0 .../at-current-range/set-inline/data-only.js | 0 .../set-inline/nested-inline.js | 0 .../single-inline-string-shorthand.js | 0 .../set-inline/single-inline.js | 0 .../set-inline/with-data-object.js | 0 .../at-current-range/set-inline/with-data.js | 0 .../set-inline/with-is-void.js | 0 .../split-block/after-inline-void.js | 0 .../split-block/after-inline.js | 0 .../split-block/before-inline.js | 0 .../at-current-range/split-block/block-end.js | 0 .../split-block/block-middle.js | 0 .../split-block/block-start.js | 0 .../at-current-range/split-block/depth.js | 0 .../with-delete-across-blocks-and-inlines.js | 0 .../split-block/with-delete-across-blocks.js | 0 .../split-block/with-delete.js | 0 .../split-block/with-inline.js | 0 .../split-inline/block-end.js | 0 .../split-inline/block-middle.js | 0 .../split-inline/block-start.js | 0 .../at-current-range/split-inline/depth.js | 0 .../split-inline/with-delete.js | 0 .../split-inline/with-marks.js | 0 .../toggle-mark/add-across-blocks.js | 0 .../toggle-mark/add-across-inlines.js | 0 .../add-collapsed-selection-beginning.js | 0 .../toggle-mark/add-collapsed-selection.js | 0 .../add-existing-marks-partially-marked.js | 0 .../toggle-mark/add-existing-marks.js | 0 .../toggle-mark/add-first-character.js | 0 .../toggle-mark/add-last-character.js | 0 .../toggle-mark/add-middle-character.js | 0 .../toggle-mark/add-partially-marked.js | 0 .../toggle-mark/add-whole-word.js | 0 .../toggle-mark/add-with-mark-object.js | 0 .../toggle-mark/add-with-plain-object.js | 0 .../toggle-mark/remove-across-blocks.js | 0 .../toggle-mark/remove-across-inlines.js | 0 .../remove-collapsed-selection-beginning.js | 0 .../toggle-mark/remove-collapsed-selection.js | 0 .../toggle-mark/remove-existing-marks.js | 0 .../toggle-mark/remove-first-character.js | 0 .../toggle-mark/remove-last-character.js | 0 .../toggle-mark/remove-middle-character.js | 0 .../toggle-mark/remove-whole-word.js | 0 .../toggle-mark/remove-with-mark-object.js | 0 .../toggle-mark/remove-with-plain-object.js | 0 .../unwrap-block/across-blocks.js | 0 .../unwrap-block/across-inlines.js | 0 .../unwrap-block/ending-child-blocks.js | 0 .../unwrap-block/middle-child-blocks.js | 0 .../unwrap-block/nested-block.js | 0 .../unwrap-block/single-block.js | 0 .../unwrap-block/starting-child-blocks.js | 0 .../unwrap-block/with-object.js | 0 .../unwrap-inline/across-blocks.js | 0 .../unwrap-inline/across-inlines-and-text.js | 0 .../unwrap-inline/across-inlines.js | 0 .../unwrap-inline/nested-block.js | 0 .../unwrap-inline/only-one.js | 0 .../unwrap-inline/single-block.js | 0 .../unwrap-inline/with-object.js | 0 .../wrap-block/across-blocks.js | 0 .../wrap-block/across-inlines.js | 0 .../wrap-block/nested-block.js | 0 .../wrap-block/single-block.js | 0 .../wrap-block/with-object.js | 0 .../wrap-inline/across-blocks.js | 0 .../wrap-inline/across-inlines.js | 0 .../wrap-inline/inline-void.js | 0 .../wrap-inline/nested-block.js | 0 .../wrap-inline/single-block.js | 0 .../at-current-range/wrap-inline/twice.js | 0 .../wrap-inline/whole-block.js | 0 .../wrap-inline/with-object.js | 0 .../wrap-text/across-blocks.js | 0 .../wrap-text/across-inlines.js | 0 .../wrap-text/backwards-selection.js | 0 .../at-current-range/wrap-text/empty-block.js | 0 .../wrap-text/end-of-block.js | 0 .../wrap-text/middle-of-block.js | 0 .../wrap-text/start-of-block.js | 0 .../at-current-range/wrap-text/whole-block.js | 0 .../wrap-text/without-suffix.js | 0 .../insert-fragment-by-key/end-of-target.js | 0 .../middle-of-target.js | 0 .../insert-fragment-by-key/start-of-target.js | 0 .../by-key/insert-node-by-key/block.js | 0 .../by-key/insert-node-by-key/duplicate.js | 0 .../by-key/insert-node-by-key/inline.js | 0 .../insert-text-by-key/selection-after.js | 0 .../insert-text-by-key/selection-before.js | 0 .../insert-text-by-key/selection-end.js | 0 .../insert-text-by-key/selection-middle.js | 0 .../insert-text-by-key/selection-start.js | 0 .../by-key/insert-text-by-key/start-text.js | 0 .../by-key/insert-text-by-key/text-end.js | 0 .../text-middle-with-marks.js | 0 .../by-key/insert-text-by-key/text-middle.js | 0 .../changes/by-key/merge-node-by-key/block.js | 0 .../changes/by-key/move-node-by-key/block.js | 0 .../changes/by-key/move-node-by-key/inline.js | 0 .../changes/by-key/move-node-by-key/text.js | 0 .../by-key/move-node-by-key/to-sibling.js | 0 .../by-key/remove-node-by-key/block.js | 0 .../by-key/remove-node-by-key/inline.js | 0 .../remove-node-by-key/selection-inside.js | 0 .../changes/by-key/remove-node-by-key/text.js | 0 .../adjacent-non-void-inlines.js | 0 .../inline-last-character.js | 0 .../inline-nested-last-character.js | 0 .../by-key/remove-text-by-key/inline-void.js | 0 .../by-key/remove-text-by-key/inline.js | 0 .../remove-text-by-key/next-void-inline.js | 0 .../previous-void-inline.js | 0 .../remove-text-by-key/selection-after.js | 0 .../remove-text-by-key/selection-before.js | 0 .../remove-text-by-key/selection-middle.js | 0 .../remove-text-by-key/selection-start.js | 0 .../changes/by-key/remove-text-by-key/text.js | 0 .../by-key/set-mark-by-key/with-data.js | 0 .../changes/by-key/set-node-by-key/block.js | 0 .../set-node-by-key/inline-with-is-void.js | 0 .../set-node-by-key/string-shorthand.js | 0 .../block-with-selection.js | 0 .../by-key/split-descendants-by-key/block.js | 0 .../split-node-by-key/block-with-selection.js | 0 .../changes/by-key/split-node-by-key/block.js | 0 .../unwrap-block-by-key/single-block.js | 0 .../unwrap-inline-by-key/single-block.js | 0 .../by-key/unwrap-node-by-key/block.js | 0 .../by-key/unwrap-node-by-key/first-block.js | 0 .../by-key/unwrap-node-by-key/last-block.js | 0 .../by-key/unwrap-node-by-key/middle-block.js | 0 .../changes/by-key/wrap-block-by-key/block.js | 0 .../changes/by-key/wrap-block-by-key/text.js | 0 .../changes/general/call/call-no-arguments.js | 0 .../general/call/call-with-arguments.js | 0 .../slate/test}/changes/index.js | 4 +- .../test}/changes/on-selection/blur/basic.js | 0 .../collapse-to-anchor/already-collapsed.js | 0 .../on-selection/collapse-to-anchor/basic.js | 0 .../collapse-to-end/already-collapsed.js | 0 .../on-selection/collapse-to-end/basic.js | 0 .../on-selection/collapse-to-end/void.js | 0 .../collapse-to-focus/already-collapsed.js | 0 .../on-selection/collapse-to-focus/basic.js | 0 .../collapse-to-start/already-collapsed.js | 0 .../on-selection/collapse-to-start/basic.js | 2 +- .../on-selection/collapse-to-start/void.js | 0 .../test}/changes/on-selection/focus/basic.js | 0 .../on-selection/move-to/with-object.js | 0 .../on-selection/move-to/with-selection.js | 0 .../changes/on-selection/select-all/basic.js | 0 .../test}/changes/on-state/set-data/simple.js | 0 packages/slate/test/helpers/h.js | 43 + .../slate/test}/history/index.js | 0 .../history/undo/add-mark-across-blocks.js | 0 .../history/undo/add-mark-across-marks.js | 0 .../history/undo/add-mark-across-same-mark.js | 0 .../slate/test}/history/undo/add-mark.js | 0 .../history/undo/delete-across-blocks.js | 0 .../history/undo/delete-across-inlines.js | 0 .../test}/history/undo/delete-across-marks.js | 0 .../slate/test}/history/undo/delete.js | 0 .../slate/test}/history/undo/insert-block.js | 0 .../history/undo/insert-text-contiguous.js | 0 .../undo/insert-text-not-contiguous.js | 0 .../slate/test}/history/undo/insert-text.js | 0 .../test}/history/undo/move-node-by-key.js | 0 .../slate/test}/history/undo/remove-mark.js | 0 .../test}/history/undo/remove-node-by-key.js | 0 .../history/undo/set-node-by-key-with-data.js | 0 .../history/undo/split-node-by-key-block.js | 0 .../test}/history/undo/unwrap-node-by-key.js | 0 packages/slate/test/index.js | 31 + .../test}/schemas/core/block-create-text.js | 0 .../core/document-no-inline-children.js | 0 .../schemas/core/document-no-text-children.js | 0 .../schemas/core/inline-no-block-children.js | 0 .../test}/schemas/core/inline-text-around.js | 0 .../test}/schemas/core/remove-empty-inline.js | 0 .../slate/test}/schemas/index.js | 0 packages/slate/test/serializers/index.js | 43 + .../raw/deserialize/block-nested.js | 0 .../raw/deserialize/block-with-data.js | 0 .../raw/deserialize/block-with-is-void.js | 0 .../serializers/raw/deserialize/block.js | 0 .../raw/deserialize/inline-nested.js | 0 .../raw/deserialize/inline-with-data.js | 0 .../raw/deserialize/inline-with-is-void.js | 0 .../serializers/raw/deserialize/inline.js | 0 .../raw/deserialize/range-with-mark.js | 0 .../serializers/raw/serialize/block-nested.js | 0 .../raw/serialize/block-with-data.js | 0 .../raw/serialize/block-with-is-void.js | 0 .../test}/serializers/raw/serialize/block.js | 0 .../raw/serialize/inline-nested.js | 0 .../raw/serialize/inline-with-data.js | 0 .../raw/serialize/inline-with-is-void.js | 0 .../test}/serializers/raw/serialize/inline.js | 0 .../raw/serialize/preserve-keys.js | 0 .../serialize/preserve-selection-and-keys.js | 0 .../raw/serialize/preserve-selection.js | 0 .../raw/serialize/preserve-state-data.js | 0 .../raw/serialize/range-with-mark.js | 0 src/Readme.md | 14 - src/constants/Readme.md | 2 - src/constants/is-dev.js | 20 - src/serializers/Readme.md | 2 - src/serializers/raw.js | 684 -------- .../benchmark-compare.js | 0 .../benchmark-reporter.js | 0 test-migration.js | 132 -- test/Readme.md | 12 - test/helpers/strip-dynamic.js | 23 - test/index.js | 27 - test/serializers/index.js | 114 -- yarn.lock | 1411 +++++++++-------- 687 files changed, 3337 insertions(+), 15035 deletions(-) delete mode 100644 benchmark/fixtures/models/get-blocks-at-range/index.js delete mode 100644 benchmark/fixtures/models/get-blocks-at-range/input.yaml delete mode 100644 benchmark/fixtures/models/get-blocks/index.js delete mode 100644 benchmark/fixtures/models/get-blocks/input.yaml delete mode 100644 benchmark/fixtures/models/get-characters-at-range/index.js delete mode 100644 benchmark/fixtures/models/get-characters-at-range/input.yaml delete mode 100644 benchmark/fixtures/models/get-characters/index.js delete mode 100644 benchmark/fixtures/models/get-characters/input.yaml delete mode 100644 benchmark/fixtures/models/get-inlines-at-range/index.js delete mode 100644 benchmark/fixtures/models/get-inlines-at-range/input.yaml delete mode 100644 benchmark/fixtures/models/get-inlines/index.js delete mode 100644 benchmark/fixtures/models/get-inlines/input.yaml delete mode 100644 benchmark/fixtures/models/get-marks-at-range/index.js delete mode 100644 benchmark/fixtures/models/get-marks-at-range/input.yaml delete mode 100644 benchmark/fixtures/models/get-marks/index.js delete mode 100644 benchmark/fixtures/models/get-marks/input.yaml delete mode 100644 benchmark/fixtures/models/get-path/index.js delete mode 100644 benchmark/fixtures/models/get-path/input.yaml delete mode 100644 benchmark/fixtures/models/get-ranges/index.js delete mode 100644 benchmark/fixtures/models/get-ranges/input.yaml delete mode 100644 benchmark/fixtures/models/get-texts-at-range/index.js delete mode 100644 benchmark/fixtures/models/get-texts-at-range/input.yaml delete mode 100644 benchmark/fixtures/models/get-texts/index.js delete mode 100644 benchmark/fixtures/models/get-texts/input.yaml delete mode 100644 benchmark/fixtures/models/update-node/index.js delete mode 100644 benchmark/fixtures/models/update-node/input.yaml delete mode 100644 benchmark/fixtures/rendering/normal/index.js delete mode 100644 benchmark/fixtures/rendering/normal/input.yaml delete mode 100644 benchmark/fixtures/serializers/raw-deserialize/index.js delete mode 100644 benchmark/fixtures/serializers/raw-deserialize/input.yaml delete mode 100644 benchmark/fixtures/serializers/raw-serialize/index.js delete mode 100644 benchmark/fixtures/serializers/raw-serialize/input.yaml delete mode 100644 benchmark/fixtures/transforms/delete-backward/index.js delete mode 100644 benchmark/fixtures/transforms/delete-backward/input.yaml delete mode 100644 benchmark/fixtures/transforms/insert-text/index.js delete mode 100644 benchmark/fixtures/transforms/insert-text/input.yaml delete mode 100644 benchmark/fixtures/transforms/normalize/index.js delete mode 100644 benchmark/fixtures/transforms/normalize/input.yaml delete mode 100644 benchmark/fixtures/transforms/split-block/index.js delete mode 100644 benchmark/fixtures/transforms/split-block/input.yaml delete mode 100644 benchmark/index.js create mode 100644 docs/Introduction.md delete mode 100644 docs/Summary.md delete mode 100644 docs/reference/Readme.md rename docs/reference/{serializers/html.md => slate-html-serializer/index.md} (75%) create mode 100644 docs/reference/slate-hyperscript/index.md rename docs/reference/{serializers/plain.md => slate-plain-serializer/index.md} (64%) create mode 100644 docs/reference/slate-prop-types/index.md rename docs/reference/{plugins/core.md => slate-react/core-plugin.md} (97%) rename docs/reference/{components/custom.md => slate-react/custom-nodes.md} (79%) rename docs/reference/{components => slate-react}/editor.md (94%) rename docs/reference/{components => slate-react}/placeholder.md (97%) rename docs/reference/{plugins/plugin.md => slate-react/plugins.md} (94%) create mode 100644 docs/reference/slate-react/utils.md create mode 100644 docs/reference/slate-simulator/index.md rename docs/reference/{models => slate}/block.md (100%) rename docs/reference/{models => slate}/change.md (100%) rename docs/reference/{models => slate}/character.md (100%) rename docs/reference/{models => slate}/data.md (100%) rename docs/reference/{models => slate}/document.md (100%) rename docs/reference/{models => slate}/inline.md (100%) rename docs/reference/{models => slate}/mark.md (100%) rename docs/reference/{models => slate}/node.md (100%) rename docs/reference/{models => slate}/schema.md (100%) rename docs/reference/{models => slate}/selection.md (100%) rename docs/reference/{models => slate}/state.md (98%) rename docs/reference/{models => slate}/text.md (100%) rename docs/reference/{utils => slate}/utils.md (75%) create mode 100644 lerna.json create mode 100644 packages/Readme.md create mode 100644 packages/slate-base64-serializer/.npmignore create mode 100644 packages/slate-base64-serializer/Readme.md create mode 100644 packages/slate-base64-serializer/package.json rename src/serializers/base-64.js => packages/slate-base64-serializer/src/index.js (94%) create mode 100644 packages/slate-base64-serializer/test/index.js create mode 100644 packages/slate-html-serializer/.npmignore create mode 100644 packages/slate-html-serializer/Readme.md create mode 100644 packages/slate-html-serializer/package.json rename src/serializers/html.js => packages/slate-html-serializer/src/index.js (98%) rename {test/serializers/html => packages/slate-html-serializer/test}/deserialize/block-nested.js (95%) rename {test/serializers/html => packages/slate-html-serializer/test}/deserialize/block-no-children.js (93%) rename {test/serializers/html => packages/slate-html-serializer/test}/deserialize/block-with-data.js (94%) rename {test/serializers/html => packages/slate-html-serializer/test}/deserialize/block-with-is-void.js (92%) rename {test/serializers/html => packages/slate-html-serializer/test}/deserialize/block.js (93%) rename {test/serializers/html => packages/slate-html-serializer/test}/deserialize/default-block.js (95%) rename {test/serializers/html => packages/slate-html-serializer/test}/deserialize/empty-string.js (82%) rename {test/serializers/html => packages/slate-html-serializer/test}/deserialize/html-comment.js (93%) rename {test/serializers/html => packages/slate-html-serializer/test}/deserialize/inline-nested.js (96%) rename {test/serializers/html => packages/slate-html-serializer/test}/deserialize/inline-no-children.js (95%) rename {test/serializers/html => packages/slate-html-serializer/test}/deserialize/inline-with-data.js (95%) rename {test/serializers/html => packages/slate-html-serializer/test}/deserialize/inline-with-is-void.js (95%) rename {test/serializers/html => packages/slate-html-serializer/test}/deserialize/inline.js (95%) rename {test/serializers/html => packages/slate-html-serializer/test}/deserialize/mark-adjacent.js (96%) rename {test/serializers/html => packages/slate-html-serializer/test}/deserialize/mark-nested.js (96%) rename {test/serializers/html => packages/slate-html-serializer/test}/deserialize/mark-with-data.js (95%) rename {test/serializers/html => packages/slate-html-serializer/test}/deserialize/mark.js (95%) rename {test/serializers/html => packages/slate-html-serializer/test}/deserialize/multiple-matching-rules.js (92%) rename {test/serializers/html => packages/slate-html-serializer/test}/deserialize/no-next.js (93%) rename {test/serializers/html => packages/slate-html-serializer/test}/deserialize/skip-element.js (95%) rename {test/serializers/html => packages/slate-html-serializer/test}/deserialize/to-json.js (100%) rename {test => packages/slate-html-serializer/test}/helpers/h.js (89%) create mode 100644 packages/slate-html-serializer/test/index.js rename {test/serializers/html => packages/slate-html-serializer/test}/serialize/block-nested.js (94%) rename {test/serializers/html => packages/slate-html-serializer/test}/serialize/block-with-data.js (93%) rename {test/serializers/html => packages/slate-html-serializer/test}/serialize/block-with-is-void.js (91%) rename {test/serializers/html => packages/slate-html-serializer/test}/serialize/block-with-mark.js (94%) rename {test/serializers/html => packages/slate-html-serializer/test}/serialize/block.js (92%) rename {test/serializers/html => packages/slate-html-serializer/test}/serialize/inline-nested.js (95%) rename {test/serializers/html => packages/slate-html-serializer/test}/serialize/inline-with-data.js (94%) rename {test/serializers/html => packages/slate-html-serializer/test}/serialize/inline-with-is-void.js (93%) rename {test/serializers/html => packages/slate-html-serializer/test}/serialize/inline-with-mark.js (95%) rename {test/serializers/html => packages/slate-html-serializer/test}/serialize/inline.js (94%) rename {test/serializers/html => packages/slate-html-serializer/test}/serialize/multiple-rules.js (92%) create mode 100644 packages/slate-hyperscript/.npmignore create mode 100644 packages/slate-hyperscript/Readme.md create mode 100644 packages/slate-hyperscript/package.json rename src/utils/hyperscript.js => packages/slate-hyperscript/src/index.js (96%) create mode 100644 packages/slate-hyperscript/test/index.js create mode 100644 packages/slate-logger/.npmignore create mode 100644 packages/slate-logger/Readme.md create mode 100644 packages/slate-logger/package.json rename src/utils/logger.js => packages/slate-logger/src/index.js (84%) create mode 100644 packages/slate-logger/test/index.js create mode 100644 packages/slate-plain-serializer/.npmignore create mode 100644 packages/slate-plain-serializer/Readme.md create mode 100644 packages/slate-plain-serializer/package.json rename src/serializers/plain.js => packages/slate-plain-serializer/src/index.js (91%) rename {test/serializers/plain => packages/slate-plain-serializer/test}/deserialize/line-multiple.js (85%) rename {test/serializers/plain => packages/slate-plain-serializer/test}/deserialize/line.js (82%) rename {test/serializers/plain => packages/slate-plain-serializer/test}/deserialize/to-json.js (100%) create mode 100644 packages/slate-plain-serializer/test/helpers/h.js create mode 100644 packages/slate-plain-serializer/test/index.js rename {test/serializers/plain => packages/slate-plain-serializer/test}/serialize/block-multiple-empty.js (88%) rename {test/serializers/plain => packages/slate-plain-serializer/test}/serialize/block-multiple.js (89%) rename {test/serializers/plain => packages/slate-plain-serializer/test}/serialize/block-nested-multiple-empty.js (91%) rename {test/serializers/plain => packages/slate-plain-serializer/test}/serialize/block-nested-multiple.js (92%) rename {test/serializers/plain => packages/slate-plain-serializer/test}/serialize/block-nested-nested-multiple.js (93%) rename {test/serializers/plain => packages/slate-plain-serializer/test}/serialize/block-nested-with-inline-nested.js (91%) rename {test/serializers/plain => packages/slate-plain-serializer/test}/serialize/block-nested-with-inlines.js (90%) rename {test/serializers/plain => packages/slate-plain-serializer/test}/serialize/block-with-data.js (84%) rename {test/serializers/plain => packages/slate-plain-serializer/test}/serialize/block-with-is-void.js (79%) rename {test/serializers/plain => packages/slate-plain-serializer/test}/serialize/block-with-mark.js (84%) rename {test/serializers/plain => packages/slate-plain-serializer/test}/serialize/block.js (83%) rename {test/serializers/plain => packages/slate-plain-serializer/test}/serialize/inline-nested.js (87%) rename {test/serializers/plain => packages/slate-plain-serializer/test}/serialize/inline-with-data.js (86%) rename {test/serializers/plain => packages/slate-plain-serializer/test}/serialize/inline-with-is-void.js (83%) rename {test/serializers/plain => packages/slate-plain-serializer/test}/serialize/inline-with-mark.js (86%) rename {test/serializers/plain => packages/slate-plain-serializer/test}/serialize/inline.js (85%) create mode 100644 packages/slate-prop-types/.npmignore create mode 100644 packages/slate-prop-types/Readme.md create mode 100644 packages/slate-prop-types/package.json rename src/utils/prop-types.js => packages/slate-prop-types/src/index.js (79%) create mode 100644 packages/slate-prop-types/test/index.js create mode 100644 packages/slate-react/.npmignore create mode 100644 packages/slate-react/Readme.md create mode 100644 packages/slate-react/benchmark/index.js create mode 100644 packages/slate-react/benchmark/rendering/normal.js create mode 100644 packages/slate-react/package.json rename {src => packages/slate-react/src}/components/Readme.md (100%) rename {src => packages/slate-react/src}/components/content.js (99%) rename {src => packages/slate-react/src}/components/editor.js (83%) rename {src => packages/slate-react/src}/components/leaf.js (98%) rename {src => packages/slate-react/src}/components/node.js (99%) rename {src => packages/slate-react/src}/components/placeholder.js (98%) rename {src => packages/slate-react/src}/components/void.js (98%) rename {src => packages/slate-react/src}/constants/environment.js (100%) rename {src => packages/slate-react/src}/constants/transfer-types.js (100%) create mode 100644 packages/slate-react/src/index.js rename {src => packages/slate-react/src}/plugins/Readme.md (100%) rename {src => packages/slate-react/src}/plugins/core.js (99%) rename {src => packages/slate-react/src}/utils/extend-selection.js (100%) rename {src => packages/slate-react/src}/utils/find-closest-node.js (100%) rename {src => packages/slate-react/src}/utils/find-deepest-node.js (100%) rename {src => packages/slate-react/src}/utils/find-dom-node.js (100%) rename {src => packages/slate-react/src}/utils/get-caret-position.js (99%) rename {src => packages/slate-react/src}/utils/get-html-from-native-paste.js (100%) rename {src => packages/slate-react/src}/utils/get-point.js (100%) rename {src => packages/slate-react/src}/utils/get-transfer-data.js (98%) rename {src => packages/slate-react/src}/utils/noop.js (100%) rename {src => packages/slate-react/src}/utils/normalize-node-and-offset.js (100%) rename {src => packages/slate-react/src}/utils/offset-key.js (100%) rename {src => packages/slate-react/src}/utils/scroll-to-selection.js (100%) rename {src => packages/slate-react/src}/utils/set-transfer-data.js (100%) rename {test => packages/slate-react/test}/helpers/clean.js (92%) create mode 100644 packages/slate-react/test/helpers/h.js create mode 100644 packages/slate-react/test/index.js rename {test => packages/slate-react/test}/plugins/core/on-blur/blur-selection.js (100%) rename {test => packages/slate-react/test}/plugins/core/on-key-down/split-empty-block.js (100%) rename {test => packages/slate-react/test}/plugins/core/on-select/move-selection.js (93%) rename {test => packages/slate-react/test}/plugins/index.js (73%) rename {test => packages/slate-react/test}/rendering/fixtures/custom-block-multiple.js (100%) rename {test => packages/slate-react/test}/rendering/fixtures/custom-block-void.js (100%) rename {test => packages/slate-react/test}/rendering/fixtures/custom-block.js (100%) rename {test => packages/slate-react/test}/rendering/fixtures/custom-decorator.js (96%) rename {test => packages/slate-react/test}/rendering/fixtures/custom-inline-multiple.js (100%) rename {test => packages/slate-react/test}/rendering/fixtures/custom-inline-void.js (100%) rename {test => packages/slate-react/test}/rendering/fixtures/custom-inline.js (100%) rename {test => packages/slate-react/test}/rendering/fixtures/custom-mark-as-component.js (100%) rename {test => packages/slate-react/test}/rendering/fixtures/custom-mark-as-function.js (100%) rename {test => packages/slate-react/test}/rendering/fixtures/custom-mark-as-object.js (100%) rename {test => packages/slate-react/test}/rendering/fixtures/custom-mark-as-string.js (100%) rename {test => packages/slate-react/test}/rendering/fixtures/default-block-with-inline.js (100%) rename {test => packages/slate-react/test}/rendering/fixtures/default-block.js (100%) rename {test => packages/slate-react/test}/rendering/fixtures/empty-block-with-inline.js (100%) rename {test => packages/slate-react/test}/rendering/fixtures/empty-block.js (100%) rename {test => packages/slate-react/test}/rendering/fixtures/nested-text-direction.js (100%) rename {test => packages/slate-react/test}/rendering/fixtures/text-direction.js (100%) rename {test => packages/slate-react/test}/rendering/index.js (84%) create mode 100644 packages/slate-simulator/.npmignore create mode 100644 packages/slate-simulator/Readme.md create mode 100644 packages/slate-simulator/package.json rename test/helpers/simulator.js => packages/slate-simulator/src/index.js (74%) create mode 100644 packages/slate-simulator/test/index.js create mode 100644 packages/slate/.npmignore create mode 100644 packages/slate/Readme.md create mode 100644 packages/slate/benchmark/changes/delete-backward.js create mode 100644 packages/slate/benchmark/changes/insert-text.js create mode 100644 packages/slate/benchmark/changes/normalize.js create mode 100644 packages/slate/benchmark/changes/split-block.js create mode 100644 packages/slate/benchmark/index.js create mode 100644 packages/slate/benchmark/models/from-json.js create mode 100644 packages/slate/benchmark/models/get-blocks-at-range.js create mode 100644 packages/slate/benchmark/models/get-blocks.js create mode 100644 packages/slate/benchmark/models/get-characters-at-range.js create mode 100644 packages/slate/benchmark/models/get-characters.js create mode 100644 packages/slate/benchmark/models/get-inlines-at-range.js create mode 100644 packages/slate/benchmark/models/get-inlines.js create mode 100644 packages/slate/benchmark/models/get-marks-at-range.js create mode 100644 packages/slate/benchmark/models/get-marks.js create mode 100644 packages/slate/benchmark/models/get-path.js create mode 100644 packages/slate/benchmark/models/get-ranges.js create mode 100644 packages/slate/benchmark/models/get-texts-at-range.js create mode 100644 packages/slate/benchmark/models/get-texts.js create mode 100644 packages/slate/benchmark/models/to-json.js create mode 100644 packages/slate/benchmark/models/update-node.js create mode 100644 packages/slate/package.json rename {src => packages/slate/src}/changes/Readme.md (100%) rename {src => packages/slate/src}/changes/at-current-range.js (100%) rename {src => packages/slate/src}/changes/at-range.js (99%) rename {src => packages/slate/src}/changes/by-key.js (100%) rename {src => packages/slate/src}/changes/index.js (100%) rename {src => packages/slate/src}/changes/normalize.js (99%) rename {src => packages/slate/src}/changes/on-history.js (100%) rename {src => packages/slate/src}/changes/on-selection.js (99%) rename {src => packages/slate/src}/changes/on-state.js (100%) rename {src => packages/slate/src}/constants/model-types.js (100%) rename {src => packages/slate/src}/index.js (71%) rename {src => packages/slate/src}/models/Readme.md (100%) rename {src => packages/slate/src}/models/block.js (99%) rename {src => packages/slate/src}/models/change.js (99%) rename {src => packages/slate/src}/models/character.js (98%) rename {src => packages/slate/src}/models/data.js (100%) rename {src => packages/slate/src}/models/document.js (99%) rename {src => packages/slate/src}/models/history.js (99%) rename {src => packages/slate/src}/models/inline.js (99%) rename {src => packages/slate/src}/models/mark.js (99%) rename {src => packages/slate/src}/models/node.js (99%) rename {src => packages/slate/src}/models/range.js (99%) rename {src => packages/slate/src}/models/schema.js (99%) rename {src => packages/slate/src}/models/selection.js (99%) rename {src => packages/slate/src}/models/stack.js (80%) rename {src => packages/slate/src}/models/state.js (99%) rename {src => packages/slate/src}/models/text.js (99%) rename {src => packages/slate/src}/operations/Readme.md (100%) rename {src => packages/slate/src}/operations/apply.js (99%) rename {src => packages/slate/src}/operations/index.js (100%) rename {src => packages/slate/src}/operations/invert.js (100%) rename {src => packages/slate/src}/schemas/Readme.md (100%) rename {src => packages/slate/src}/schemas/core.js (99%) rename {src => packages/slate/src}/utils/Readme.md (100%) rename {src => packages/slate/src}/utils/generate-key.js (100%) rename {src => packages/slate/src}/utils/is-index-in-range.js (100%) rename {src => packages/slate/src}/utils/is-react-component.js (100%) rename {src => packages/slate/src}/utils/memoize.js (95%) rename {src => packages/slate/src}/utils/string.js (100%) rename {test => packages/slate/test}/changes/at-current-range/add-mark/across-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/add-mark/across-inlines.js (100%) rename {test => packages/slate/test}/changes/at-current-range/add-mark/collapsed-selection.js (100%) rename {test => packages/slate/test}/changes/at-current-range/add-mark/existing-marks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/add-mark/first-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/add-mark/last-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/add-mark/middle-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/add-mark/whole-word.js (100%) rename {test => packages/slate/test}/changes/at-current-range/add-mark/with-mark-object.js (100%) rename {test => packages/slate/test}/changes/at-current-range/add-mark/with-plain-object.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-backward/empty-after-void-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-backward/first-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-backward/inline-after.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-backward/inline-before.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-backward/inline-end.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-backward/inline-inside.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-backward/join-blocks-with-inline-void.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-backward/join-blocks-with-inline.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-backward/join-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-backward/join-nested-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-backward/last-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-backward/middle-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-backward/multiple-characters.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-backward/single-non-void-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-backward/single-void-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-backward/start-of-document.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-char-backward/inline-after-emoji.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-char-backward/inline-end-emoji.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-char-backward/inline-inside-emoji.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-char-backward/inline-only-emoji.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-char-backward/text-end.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-char-backward/text-middle.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-char-backward/text-start.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-char-forward/inline-before-emoji.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-char-forward/inline-middle-emoji.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-char-forward/inline-start-emoji.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-char-forward/text-last.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-char-forward/text-middle.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-char-forward/text-start.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-forward/before-inline-sibling.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-forward/empty-before-void-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-forward/end-of-document.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-forward/first-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-forward/inside-inline-sibling.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-forward/join-blocks-with-inline-void.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-forward/join-blocks-with-inline.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-forward/join-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-forward/join-nested-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-forward/last-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-forward/middle-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-forward/multiple-characters.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-forward/single-non-void-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-forward/single-void-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-forward/start-text-middle-inline.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-word-backward/inline-after-emoji.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-word-backward/inline-middle-emoji.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-word-backward/text-end.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-word-backward/word-middle.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-word-forward/inline-after-emoji.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-word-forward/inline-middle-emoji.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-word-forward/word-middle.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete-word-forward/word-start.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/across-blocks-inlines.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/across-depths.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/across-nested-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/across-texts-and-inlines.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/before-inline-sibling.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/first-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/hanging-selection-multiple-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/hanging-selection-single-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/inside-inline-sibling.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/join-blocks-and-trim.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/join-blocks-with-inlines.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/join-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/join-double-nested-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/join-nested-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/last-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/middle-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/nested-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/non-void-block-as-first-with-void-siblings-only-non-void.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/non-void-block-as-first-with-void-siblings-partially-non-void-and-up-to-start-of-void.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/non-void-block-as-first-with-void-siblings-partially-non-void-and-void.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/non-void-block-as-first-with-void-siblings-partially-non-void.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/void-block-as-first-with-non-void-siblings-all.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/void-block-as-first-with-non-void-siblings-backward-selection-all.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/void-block-as-first-with-non-void-siblings-only-void.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/void-block-as-first-with-non-void-siblings-select-void-and-next-word.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/void-block-as-first-with-non-void-siblings-select-void-end-and-next-word.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/void-block-as-only.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/void-blocks-as-first-with-non-void-siblings-only-first-void.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/void-blocks-as-first-with-non-void-siblings-only-voids.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/void-inline-as-first-with-non-void-block-next.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/void-inline-as-first-with-non-void-sibling.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/whole-block-with-other-block-type-below.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/whole-inline.js (100%) rename {test => packages/slate/test}/changes/at-current-range/delete/whole-word.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-block/block-end.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-block/block-middle.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-block/block-start.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-block/is-empty.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-block/is-void-end.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-block/is-void-start.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-block/with-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-block/with-object.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-fragment/end-block-multiple-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-fragment/end-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-fragment/end-inline.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-fragment/fragment-multiple-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-fragment/fragment-nested-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-fragment/middle-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-fragment/middle-inline-fragment-inline.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-fragment/middle-inline.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-fragment/nested-block-fragment-nested-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-fragment/start-block-multiple-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-fragment/start-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-fragment/start-inline.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-fragment/start-second-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-fragment/with-delete-across-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-inline/block-end.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-inline/block-middle.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-inline/block-start.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-inline/inline-middle.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-inline/is-empty.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-inline/is-void.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-inline/with-inline.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-text/after-mark.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-text/before-mark.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-text/during-mark.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-text/first-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-text/first-space.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-text/first-words.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-text/inside-void.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-text/last-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-text/last-space.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-text/last-words.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-text/middle-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-text/middle-space.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-text/middle-words.js (100%) rename {test => packages/slate/test}/changes/at-current-range/insert-text/with-marks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/remove-mark/across-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/remove-mark/across-inlines.js (100%) rename {test => packages/slate/test}/changes/at-current-range/remove-mark/collapsed-selection.js (100%) rename {test => packages/slate/test}/changes/at-current-range/remove-mark/existing-marks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/remove-mark/first-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/remove-mark/last-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/remove-mark/middle-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/remove-mark/whole-word.js (100%) rename {test => packages/slate/test}/changes/at-current-range/remove-mark/with-mark-object.js (100%) rename {test => packages/slate/test}/changes/at-current-range/remove-mark/with-plain-object.js (100%) rename {test => packages/slate/test}/changes/at-current-range/set-block/across-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/set-block/across-inlines.js (100%) rename {test => packages/slate/test}/changes/at-current-range/set-block/data-only.js (100%) rename {test => packages/slate/test}/changes/at-current-range/set-block/nested-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/set-block/single-block-string-shorthand.js (100%) rename {test => packages/slate/test}/changes/at-current-range/set-block/single-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/set-block/with-data-as-map.js (100%) rename {test => packages/slate/test}/changes/at-current-range/set-block/with-data-as-object.js (100%) rename {test => packages/slate/test}/changes/at-current-range/set-block/with-is-void.js (100%) rename {test => packages/slate/test}/changes/at-current-range/set-inline/across-inlines.js (100%) rename {test => packages/slate/test}/changes/at-current-range/set-inline/data-only.js (100%) rename {test => packages/slate/test}/changes/at-current-range/set-inline/nested-inline.js (100%) rename {test => packages/slate/test}/changes/at-current-range/set-inline/single-inline-string-shorthand.js (100%) rename {test => packages/slate/test}/changes/at-current-range/set-inline/single-inline.js (100%) rename {test => packages/slate/test}/changes/at-current-range/set-inline/with-data-object.js (100%) rename {test => packages/slate/test}/changes/at-current-range/set-inline/with-data.js (100%) rename {test => packages/slate/test}/changes/at-current-range/set-inline/with-is-void.js (100%) rename {test => packages/slate/test}/changes/at-current-range/split-block/after-inline-void.js (100%) rename {test => packages/slate/test}/changes/at-current-range/split-block/after-inline.js (100%) rename {test => packages/slate/test}/changes/at-current-range/split-block/before-inline.js (100%) rename {test => packages/slate/test}/changes/at-current-range/split-block/block-end.js (100%) rename {test => packages/slate/test}/changes/at-current-range/split-block/block-middle.js (100%) rename {test => packages/slate/test}/changes/at-current-range/split-block/block-start.js (100%) rename {test => packages/slate/test}/changes/at-current-range/split-block/depth.js (100%) rename {test => packages/slate/test}/changes/at-current-range/split-block/with-delete-across-blocks-and-inlines.js (100%) rename {test => packages/slate/test}/changes/at-current-range/split-block/with-delete-across-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/split-block/with-delete.js (100%) rename {test => packages/slate/test}/changes/at-current-range/split-block/with-inline.js (100%) rename {test => packages/slate/test}/changes/at-current-range/split-inline/block-end.js (100%) rename {test => packages/slate/test}/changes/at-current-range/split-inline/block-middle.js (100%) rename {test => packages/slate/test}/changes/at-current-range/split-inline/block-start.js (100%) rename {test => packages/slate/test}/changes/at-current-range/split-inline/depth.js (100%) rename {test => packages/slate/test}/changes/at-current-range/split-inline/with-delete.js (100%) rename {test => packages/slate/test}/changes/at-current-range/split-inline/with-marks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/add-across-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/add-across-inlines.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/add-collapsed-selection-beginning.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/add-collapsed-selection.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/add-existing-marks-partially-marked.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/add-existing-marks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/add-first-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/add-last-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/add-middle-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/add-partially-marked.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/add-whole-word.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/add-with-mark-object.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/add-with-plain-object.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/remove-across-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/remove-across-inlines.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/remove-collapsed-selection-beginning.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/remove-collapsed-selection.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/remove-existing-marks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/remove-first-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/remove-last-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/remove-middle-character.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/remove-whole-word.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/remove-with-mark-object.js (100%) rename {test => packages/slate/test}/changes/at-current-range/toggle-mark/remove-with-plain-object.js (100%) rename {test => packages/slate/test}/changes/at-current-range/unwrap-block/across-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/unwrap-block/across-inlines.js (100%) rename {test => packages/slate/test}/changes/at-current-range/unwrap-block/ending-child-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/unwrap-block/middle-child-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/unwrap-block/nested-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/unwrap-block/single-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/unwrap-block/starting-child-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/unwrap-block/with-object.js (100%) rename {test => packages/slate/test}/changes/at-current-range/unwrap-inline/across-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/unwrap-inline/across-inlines-and-text.js (100%) rename {test => packages/slate/test}/changes/at-current-range/unwrap-inline/across-inlines.js (100%) rename {test => packages/slate/test}/changes/at-current-range/unwrap-inline/nested-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/unwrap-inline/only-one.js (100%) rename {test => packages/slate/test}/changes/at-current-range/unwrap-inline/single-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/unwrap-inline/with-object.js (100%) rename {test => packages/slate/test}/changes/at-current-range/wrap-block/across-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/wrap-block/across-inlines.js (100%) rename {test => packages/slate/test}/changes/at-current-range/wrap-block/nested-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/wrap-block/single-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/wrap-block/with-object.js (100%) rename {test => packages/slate/test}/changes/at-current-range/wrap-inline/across-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/wrap-inline/across-inlines.js (100%) rename {test => packages/slate/test}/changes/at-current-range/wrap-inline/inline-void.js (100%) rename {test => packages/slate/test}/changes/at-current-range/wrap-inline/nested-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/wrap-inline/single-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/wrap-inline/twice.js (100%) rename {test => packages/slate/test}/changes/at-current-range/wrap-inline/whole-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/wrap-inline/with-object.js (100%) rename {test => packages/slate/test}/changes/at-current-range/wrap-text/across-blocks.js (100%) rename {test => packages/slate/test}/changes/at-current-range/wrap-text/across-inlines.js (100%) rename {test => packages/slate/test}/changes/at-current-range/wrap-text/backwards-selection.js (100%) rename {test => packages/slate/test}/changes/at-current-range/wrap-text/empty-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/wrap-text/end-of-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/wrap-text/middle-of-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/wrap-text/start-of-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/wrap-text/whole-block.js (100%) rename {test => packages/slate/test}/changes/at-current-range/wrap-text/without-suffix.js (100%) rename {test => packages/slate/test}/changes/by-key/insert-fragment-by-key/end-of-target.js (100%) rename {test => packages/slate/test}/changes/by-key/insert-fragment-by-key/middle-of-target.js (100%) rename {test => packages/slate/test}/changes/by-key/insert-fragment-by-key/start-of-target.js (100%) rename {test => packages/slate/test}/changes/by-key/insert-node-by-key/block.js (100%) rename {test => packages/slate/test}/changes/by-key/insert-node-by-key/duplicate.js (100%) rename {test => packages/slate/test}/changes/by-key/insert-node-by-key/inline.js (100%) rename {test => packages/slate/test}/changes/by-key/insert-text-by-key/selection-after.js (100%) rename {test => packages/slate/test}/changes/by-key/insert-text-by-key/selection-before.js (100%) rename {test => packages/slate/test}/changes/by-key/insert-text-by-key/selection-end.js (100%) rename {test => packages/slate/test}/changes/by-key/insert-text-by-key/selection-middle.js (100%) rename {test => packages/slate/test}/changes/by-key/insert-text-by-key/selection-start.js (100%) rename {test => packages/slate/test}/changes/by-key/insert-text-by-key/start-text.js (100%) rename {test => packages/slate/test}/changes/by-key/insert-text-by-key/text-end.js (100%) rename {test => packages/slate/test}/changes/by-key/insert-text-by-key/text-middle-with-marks.js (100%) rename {test => packages/slate/test}/changes/by-key/insert-text-by-key/text-middle.js (100%) rename {test => packages/slate/test}/changes/by-key/merge-node-by-key/block.js (100%) rename {test => packages/slate/test}/changes/by-key/move-node-by-key/block.js (100%) rename {test => packages/slate/test}/changes/by-key/move-node-by-key/inline.js (100%) rename {test => packages/slate/test}/changes/by-key/move-node-by-key/text.js (100%) rename {test => packages/slate/test}/changes/by-key/move-node-by-key/to-sibling.js (100%) rename {test => packages/slate/test}/changes/by-key/remove-node-by-key/block.js (100%) rename {test => packages/slate/test}/changes/by-key/remove-node-by-key/inline.js (100%) rename {test => packages/slate/test}/changes/by-key/remove-node-by-key/selection-inside.js (100%) rename {test => packages/slate/test}/changes/by-key/remove-node-by-key/text.js (100%) rename {test => packages/slate/test}/changes/by-key/remove-text-by-key/adjacent-non-void-inlines.js (100%) rename {test => packages/slate/test}/changes/by-key/remove-text-by-key/inline-last-character.js (100%) rename {test => packages/slate/test}/changes/by-key/remove-text-by-key/inline-nested-last-character.js (100%) rename {test => packages/slate/test}/changes/by-key/remove-text-by-key/inline-void.js (100%) rename {test => packages/slate/test}/changes/by-key/remove-text-by-key/inline.js (100%) rename {test => packages/slate/test}/changes/by-key/remove-text-by-key/next-void-inline.js (100%) rename {test => packages/slate/test}/changes/by-key/remove-text-by-key/previous-void-inline.js (100%) rename {test => packages/slate/test}/changes/by-key/remove-text-by-key/selection-after.js (100%) rename {test => packages/slate/test}/changes/by-key/remove-text-by-key/selection-before.js (100%) rename {test => packages/slate/test}/changes/by-key/remove-text-by-key/selection-middle.js (100%) rename {test => packages/slate/test}/changes/by-key/remove-text-by-key/selection-start.js (100%) rename {test => packages/slate/test}/changes/by-key/remove-text-by-key/text.js (100%) rename {test => packages/slate/test}/changes/by-key/set-mark-by-key/with-data.js (100%) rename {test => packages/slate/test}/changes/by-key/set-node-by-key/block.js (100%) rename {test => packages/slate/test}/changes/by-key/set-node-by-key/inline-with-is-void.js (100%) rename {test => packages/slate/test}/changes/by-key/set-node-by-key/string-shorthand.js (100%) rename {test => packages/slate/test}/changes/by-key/split-descendants-by-key/block-with-selection.js (100%) rename {test => packages/slate/test}/changes/by-key/split-descendants-by-key/block.js (100%) rename {test => packages/slate/test}/changes/by-key/split-node-by-key/block-with-selection.js (100%) rename {test => packages/slate/test}/changes/by-key/split-node-by-key/block.js (100%) rename {test => packages/slate/test}/changes/by-key/unwrap-block-by-key/single-block.js (100%) rename {test => packages/slate/test}/changes/by-key/unwrap-inline-by-key/single-block.js (100%) rename {test => packages/slate/test}/changes/by-key/unwrap-node-by-key/block.js (100%) rename {test => packages/slate/test}/changes/by-key/unwrap-node-by-key/first-block.js (100%) rename {test => packages/slate/test}/changes/by-key/unwrap-node-by-key/last-block.js (100%) rename {test => packages/slate/test}/changes/by-key/unwrap-node-by-key/middle-block.js (100%) rename {test => packages/slate/test}/changes/by-key/wrap-block-by-key/block.js (100%) rename {test => packages/slate/test}/changes/by-key/wrap-block-by-key/text.js (100%) rename {test => packages/slate/test}/changes/general/call/call-no-arguments.js (100%) rename {test => packages/slate/test}/changes/general/call/call-with-arguments.js (100%) rename {test => packages/slate/test}/changes/index.js (87%) rename {test => packages/slate/test}/changes/on-selection/blur/basic.js (100%) rename {test => packages/slate/test}/changes/on-selection/collapse-to-anchor/already-collapsed.js (100%) rename {test => packages/slate/test}/changes/on-selection/collapse-to-anchor/basic.js (100%) rename {test => packages/slate/test}/changes/on-selection/collapse-to-end/already-collapsed.js (100%) rename {test => packages/slate/test}/changes/on-selection/collapse-to-end/basic.js (100%) rename {test => packages/slate/test}/changes/on-selection/collapse-to-end/void.js (100%) rename {test => packages/slate/test}/changes/on-selection/collapse-to-focus/already-collapsed.js (100%) rename {test => packages/slate/test}/changes/on-selection/collapse-to-focus/basic.js (100%) rename {test => packages/slate/test}/changes/on-selection/collapse-to-start/already-collapsed.js (100%) rename {test => packages/slate/test}/changes/on-selection/collapse-to-start/basic.js (92%) rename {test => packages/slate/test}/changes/on-selection/collapse-to-start/void.js (100%) rename {test => packages/slate/test}/changes/on-selection/focus/basic.js (100%) rename {test => packages/slate/test}/changes/on-selection/move-to/with-object.js (100%) rename {test => packages/slate/test}/changes/on-selection/move-to/with-selection.js (100%) rename {test => packages/slate/test}/changes/on-selection/select-all/basic.js (100%) rename {test => packages/slate/test}/changes/on-state/set-data/simple.js (100%) create mode 100644 packages/slate/test/helpers/h.js rename {test => packages/slate/test}/history/index.js (100%) rename {test => packages/slate/test}/history/undo/add-mark-across-blocks.js (100%) rename {test => packages/slate/test}/history/undo/add-mark-across-marks.js (100%) rename {test => packages/slate/test}/history/undo/add-mark-across-same-mark.js (100%) rename {test => packages/slate/test}/history/undo/add-mark.js (100%) rename {test => packages/slate/test}/history/undo/delete-across-blocks.js (100%) rename {test => packages/slate/test}/history/undo/delete-across-inlines.js (100%) rename {test => packages/slate/test}/history/undo/delete-across-marks.js (100%) rename {test => packages/slate/test}/history/undo/delete.js (100%) rename {test => packages/slate/test}/history/undo/insert-block.js (100%) rename {test => packages/slate/test}/history/undo/insert-text-contiguous.js (100%) rename {test => packages/slate/test}/history/undo/insert-text-not-contiguous.js (100%) rename {test => packages/slate/test}/history/undo/insert-text.js (100%) rename {test => packages/slate/test}/history/undo/move-node-by-key.js (100%) rename {test => packages/slate/test}/history/undo/remove-mark.js (100%) rename {test => packages/slate/test}/history/undo/remove-node-by-key.js (100%) rename {test => packages/slate/test}/history/undo/set-node-by-key-with-data.js (100%) rename {test => packages/slate/test}/history/undo/split-node-by-key-block.js (100%) rename {test => packages/slate/test}/history/undo/unwrap-node-by-key.js (100%) create mode 100644 packages/slate/test/index.js rename {test => packages/slate/test}/schemas/core/block-create-text.js (100%) rename {test => packages/slate/test}/schemas/core/document-no-inline-children.js (100%) rename {test => packages/slate/test}/schemas/core/document-no-text-children.js (100%) rename {test => packages/slate/test}/schemas/core/inline-no-block-children.js (100%) rename {test => packages/slate/test}/schemas/core/inline-text-around.js (100%) rename {test => packages/slate/test}/schemas/core/remove-empty-inline.js (100%) rename {test => packages/slate/test}/schemas/index.js (100%) create mode 100644 packages/slate/test/serializers/index.js rename {test => packages/slate/test}/serializers/raw/deserialize/block-nested.js (100%) rename {test => packages/slate/test}/serializers/raw/deserialize/block-with-data.js (100%) rename {test => packages/slate/test}/serializers/raw/deserialize/block-with-is-void.js (100%) rename {test => packages/slate/test}/serializers/raw/deserialize/block.js (100%) rename {test => packages/slate/test}/serializers/raw/deserialize/inline-nested.js (100%) rename {test => packages/slate/test}/serializers/raw/deserialize/inline-with-data.js (100%) rename {test => packages/slate/test}/serializers/raw/deserialize/inline-with-is-void.js (100%) rename {test => packages/slate/test}/serializers/raw/deserialize/inline.js (100%) rename {test => packages/slate/test}/serializers/raw/deserialize/range-with-mark.js (100%) rename {test => packages/slate/test}/serializers/raw/serialize/block-nested.js (100%) rename {test => packages/slate/test}/serializers/raw/serialize/block-with-data.js (100%) rename {test => packages/slate/test}/serializers/raw/serialize/block-with-is-void.js (100%) rename {test => packages/slate/test}/serializers/raw/serialize/block.js (100%) rename {test => packages/slate/test}/serializers/raw/serialize/inline-nested.js (100%) rename {test => packages/slate/test}/serializers/raw/serialize/inline-with-data.js (100%) rename {test => packages/slate/test}/serializers/raw/serialize/inline-with-is-void.js (100%) rename {test => packages/slate/test}/serializers/raw/serialize/inline.js (100%) rename {test => packages/slate/test}/serializers/raw/serialize/preserve-keys.js (100%) rename {test => packages/slate/test}/serializers/raw/serialize/preserve-selection-and-keys.js (100%) rename {test => packages/slate/test}/serializers/raw/serialize/preserve-selection.js (100%) rename {test => packages/slate/test}/serializers/raw/serialize/preserve-state-data.js (100%) rename {test => packages/slate/test}/serializers/raw/serialize/range-with-mark.js (100%) delete mode 100644 src/Readme.md delete mode 100644 src/constants/Readme.md delete mode 100644 src/constants/is-dev.js delete mode 100644 src/serializers/Readme.md delete mode 100644 src/serializers/raw.js rename benchmark/compare.js => support/benchmark-compare.js (100%) rename benchmark/reporter.js => support/benchmark-reporter.js (100%) delete mode 100644 test-migration.js delete mode 100644 test/Readme.md delete mode 100644 test/helpers/strip-dynamic.js delete mode 100644 test/index.js delete mode 100644 test/serializers/index.js diff --git a/.babelrc b/.babelrc index 04d0ec0b3..3c45d7307 100644 --- a/.babelrc +++ b/.babelrc @@ -1,7 +1,7 @@ { "presets": [ - "react", "es2015", + "react", "stage-0" ] } diff --git a/.eslintrc b/.eslintrc index 51500e589..864afbfef 100644 --- a/.eslintrc +++ b/.eslintrc @@ -39,7 +39,7 @@ "import/namespace": "error", "import/newline-after-import": "error", "import/no-deprecated": "error", - "import/no-extraneous-dependencies": "error", + "import/no-extraneous-dependencies": ["error", { "peerDependencies": true }], "import/no-mutable-exports": "error", "import/no-named-as-default": "error", "import/no-named-as-default-member": "error", diff --git a/.gitignore b/.gitignore index b6af211e9..0a37c292f 100644 --- a/.gitignore +++ b/.gitignore @@ -12,9 +12,11 @@ tmp _book # Package files. +lerna-debug.log node_modules npm-debug.log yarn-error.log +packages/*/yarn.lock # OS files. .DS_Store diff --git a/.npmignore b/.npmignore index 55428cfb4..dbbb39dfc 100644 --- a/.npmignore +++ b/.npmignore @@ -1,7 +1,7 @@ +.babelrc benchmark docs examples src test tmp -.babelrc diff --git a/.travis.yml b/.travis.yml index 3dc4d816d..4d5e44cb7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,25 +1,28 @@ + language: node_js -env: - matrix: - - TEST_TYPE=test - - TEST_TYPE=lint -script: - - | - if [ "$TEST_TYPE" = test ]; then - npm run test - elif [ "$TEST_TYPE" = lint ]; then - npm run lint - fi -# Slate is compiled with babel and run in the browser -node_js: - - "node" -# Compiling package microtime requires C++11 compiler. Benchmarks will -# automatically use microtime if installed. -addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-4.8 +node_js: [node] + before_install: + # Download and export yarn. + - curl -o- -L https://yarnpkg.com/install.sh | bash -s -- --version 1.0.1 + - export PATH=$HOME/.yarn/bin:$PATH + # Export the C++11 compiler. - if [[ $TRAVIS_OS_NAME == "linux" ]]; then export CXX=g++-4.8; fi + +cache: + # Cache yarn packages. + yarn: true + +env: + # Do two runs, one for testing and one for linting. + matrix: + - TEST_TYPE=test + - TEST_TYPE=lint + +script: + # Run bootstrap first so that the proper workspaces links are created. + - yarn run bootstrap + # Build all of the packages so they are resolvable by each other. + - yarn run build + # Run testing or linting depending on the environment. + - yarn run $TEST_TYPE diff --git a/Changelog.md b/Changelog.md index 238d854ef..025990b9b 100644 --- a/Changelog.md +++ b/Changelog.md @@ -6,6 +6,7 @@ This document maintains a list of changes to Slate with each new version. Until --- + ### `0.23.0` — September 10, 2017 ###### BREAKING diff --git a/Contributing.md b/Contributing.md index 078faa221..53e7e8f26 100644 --- a/Contributing.md +++ b/Contributing.md @@ -6,8 +6,9 @@ Want to contribute to Slate? That would be awesome! - [Reporting Bugs](#reporting-bugs) - [Asking Questions](#asking-questions) - [Submitting Pull Requests](#submitting-pull-requests) -- [Running Tests](#running-tests) - [Running Examples](#running-examples) +- [Running Tests](#running-tests) +- [Running Benchmarks](#running-benchmarks) - [Adding Browser Support](#adding-browser-support) - [Testing Input Methods](#testing-input-methods) @@ -43,34 +44,58 @@ All pull requests are super welcomed and greatly appreciated! Easy issues are ma Please include tests and docs with every pull request! -## Running Tests - -To run the examples, you need to have the Slate repository cloned to your computer. After that, you need to `cd` into the directory where you cloned it, and install the dependencies from `npm`. - -``` -npm install -``` - -Which will also compile the source files. Then run the tests with: - -``` -npm run tests -``` - -If you need to debug something, you can add a `debugger` line to the source, and then run `npm run tests debug`. Or, if you only want to run a specific test or tests, you can run `npm run tests -- --fgrep "match this string"` flag which will filter the tests being run. - -To keep the source rebuilding on every file change, you need to run an additional watching command: - -``` -npm run watch -``` - - ## Running Examples Check out the [Examples readme](./examples) to see how to get the examples running locally! +## Running Tests + +To run the tests, you need to have the Slate repository cloned to your computer. After that, you need to `cd` into the directory where you cloned it, and install the dependencies with `yarn` and bootstrap the monorepo: + +``` +yarn install +yarn run bootstrap +``` + +Then run the tests with: + +``` +yarn run test +``` + +To keep the source rebuilding on every file change, you need to run an additional watching command in a separate process: + +``` +yarn run watch +``` + +If you need to debug something, you can add a `debugger` line to the source, and then run `yarn run test debug`. + +If you only want to run a specific test or tests, you can run `yarn run test --fgrep="slate-react rendering"` flag which will filter the tests being run by grepping for the string in each test. + + +## Running Benchmarks + +To run the benchmarks, first make some changes to the source that you want to benchmark. Now that you're ready, you need to save a "baseline" for what the performance was before you made you change. + +To do that, stash your changes and save the benchmarks: + +``` +git stash +yarn run benchmark:save +``` + +Then once the reference has been saved, unstash your changes and run the benchmarks to see a comparison: + +``` +git stash pop +yarn run benchmark +``` + +There will be some subtle changes in iteration speed always, but the comparison reporter will highlight any changes that seem meaningful. You can run `benchmark` multiple times to ensure the speed up persists. + + ## Adding Browser Support Slate aims to targeted all of the modern browsers, and eventually the modern mobile platforms. Right now browser support is limited to the latest versions of [Chrome](https://www.google.com/chrome/browser/desktop/), [Firefox](https://www.mozilla.org/en-US/firefox/new/), and [Safari](http://www.apple.com/safari/), but if you are interested in adding support for another modern platform, that is welcomed! @@ -80,6 +105,7 @@ Slate aims to targeted all of the modern browsers, and eventually the modern mob [Here's a helpful page](https://github.com/Microsoft/vscode/wiki/IME-Test) detailing how to test various input scenarios on Windows, Mac and Linux. + ## Debugging Slate methods Slate makes use of [debug](https://github.com/visionmedia/debug) to log information about various methods. You can [enable the logger in the browser](https://github.com/visionmedia/debug#browser-support) by setting `localStorage.debug = "*"` (to log methods on all modules) or to a single namespace (e.g. `slate:editor`). Look for `const debug = Debug('')` to get the namespace of various modules. diff --git a/License.md b/License.md index dee82d0ff..c0734d1b1 100644 --- a/License.md +++ b/License.md @@ -3,7 +3,7 @@ The MIT License -Copyright © 2016, [Ian Storm Taylor](https://ianstormtaylor.com) +Copyright © 2016–2017, [Ian Storm Taylor](https://ianstormtaylor.com) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/benchmark/fixtures/models/get-blocks-at-range/index.js b/benchmark/fixtures/models/get-blocks-at-range/index.js deleted file mode 100644 index bb9a37bb7..000000000 --- a/benchmark/fixtures/models/get-blocks-at-range/index.js +++ /dev/null @@ -1,17 +0,0 @@ - -import { __clear } from '../../../../lib/utils/memoize' - -export default function ({ state, range }) { - state.document.getBlocksAtRange(range) -} - -export function before(state) { - return { - state, - range: state.selection.moveToRangeOf(state.document), - } -} - -export function after() { - __clear() -} diff --git a/benchmark/fixtures/models/get-blocks-at-range/input.yaml b/benchmark/fixtures/models/get-blocks-at-range/input.yaml deleted file mode 100644 index b510137eb..000000000 --- a/benchmark/fixtures/models/get-blocks-at-range/input.yaml +++ /dev/null @@ -1,683 +0,0 @@ -nodes: -- kind: block - type: paragraph - nodes: - - kind: block - type: paragraph - nodes: - - kind: block - type: paragraph - nodes: - - kind: text - ranges: - - text: 'This is editable ' - - text: 'rich' - marks: - - type: bold - - text: ' text, ' - - kind: block - type: paragraph - nodes: - - kind: text - ranges: - - text: 'much' - marks: - - type: italic - - text: ' better than a ' - - text: '