1
0
mirror of https://github.com/ianstormtaylor/slate.git synced 2025-02-24 17:23:07 +01:00

693 Commits

Author SHA1 Message Date
Ian Storm Taylor
a220cd5ae1
remove leaves (#2715)
* first stab at removing leaves with tests passing

* add deprecation warning for creating texts with leaves

* fixes

* update examples
2019-04-30 12:15:22 -07:00
Ian Storm Taylor
a431576e73 Publish
- slate-react@0.21.22
2019-04-29 14:55:16 -07:00
Yonah Forst
31a4bf4fa9 Improve performance on large documents with many nodes (#2710)
* don't evaluate expensive debug payloads unless debugging is actually enabled

* fix for linter
2019-04-26 14:20:57 -07:00
Ian Storm Taylor
62ca870304 Publish
- slate-base64-serializer@0.2.100
 - slate-html-serializer@0.7.39
 - slate-hyperscript@0.11.30
 - slate-plain-serializer@0.6.39
 - slate-prop-types@0.5.30
 - slate-react-placeholder@0.1.18
 - slate-react@0.21.21
 - slate@0.45.1
2019-04-24 17:33:49 -07:00
Ian Storm Taylor
16850869d4 fix missing changelog entry 2019-04-24 17:28:36 -07:00
Sunny Hirai
662f584d4d Support decorations without path (#2697)
* Add support with warning for decorations without paths

* Fix linting

* Update text.js

* Update text.js
2019-04-24 17:27:50 -07:00
Stan Gurenkov
feaad7e7cd Fix selection being reset incorrectly after combination of events (#2686)
* Fix selection being reset incorrectly after combination of events

If mouseDown happens inside editor container and mouseUp outside it,
then programmatically calling editor.focus() after that will mess up
the selection

* Update after.js
2019-04-24 17:24:15 -07:00
robinrutten
7855783b2d removed ie/edge condition that causes "node of undefined" TypeError if editor is empty (#2689) 2019-04-24 17:24:01 -07:00
Arrizal Amin
8b27e7e184 fix get marks from previous text on method getMarksAtPosition (#2688) 2019-04-24 17:17:28 -07:00
Velten Heyn
4cb13ee5ca Add path to Range Points (#2537)
* Add path to Range Points

Otherwise 5d0f53da3f/packages/slate-react/src/components/text.js (L122) crashes

* Make prettier happy

* prettier knows what prettier knows

So shut up and delete the fucking whitespace ;)
2019-04-24 17:16:41 -07:00
Jinxuan Zhu
ad15260993 Allow immutable 4.0.0-rc (#2695) 2019-04-24 16:56:16 -07:00
Sunny Hirai
02130902a1
Revert "Switched Map to fromJS in order to convert the whole js object (also nested data structures) to immutable (#2619)" (#2687)
This reverts commit b8c372df93ac94b3d0449e0c496cdf8bec9af0fc.
2019-04-18 21:16:13 -07:00
Ian Storm Taylor
b6a59c69a4 Publish
- slate-base64-serializer@0.2.99
 - slate-html-serializer@0.7.38
 - slate-hyperscript@0.11.29
 - slate-plain-serializer@0.6.38
 - slate-prop-types@0.5.29
 - slate-react-placeholder@0.1.17
 - slate-react@0.21.20
 - slate@0.45.0
2019-04-02 06:42:58 -07:00
Bryan Haakman
bb5d6beffa Make all ops invertible and remove value from ops (#2225) 2019-04-02 06:34:06 -07:00
Ian Storm Taylor
f0e37810a2 Publish
- slate-base64-serializer@0.2.98
 - slate-html-serializer@0.7.37
 - slate-hyperscript@0.11.28
 - slate-plain-serializer@0.6.37
 - slate-prop-types@0.5.28
 - slate-react-placeholder@0.1.16
 - slate-react@0.21.19
 - slate@0.44.13
2019-04-02 06:29:12 -07:00
Arek Mytych
594e891c32 Make use of clientX and clientY in getEventRange (#2675)
Fixes #2570
2019-04-02 06:24:38 -07:00
Hanna Greaves
c688ad7c72 Allow custom placeholder styles (#2667)
* Allow custom placeholder styles

* lint fixes

* review feedback

* lint
2019-04-02 06:23:50 -07:00
Yoel
02f4850930 Convert remaining Node.get* methods to use paths (#2557)
* tests

* faster getSelectionIndeces by passing path during render

* rename var

* fix variables

* revert node component changes

* revert changes to content

* changes to element and path-utils

* fix point normalize

* cleanup

* more cleanup, clearer getDescendant
2019-03-25 19:54:00 -07:00
delijah
b8c372df93 Switched Map to fromJS in order to convert the whole js object (also nested data structures) to immutable (#2619)
Looks like a worthwhile improvement to me @delijah and thanks for contributing the PR. Given that nested data structures are permissible this improved the ease of use.
2019-03-10 21:32:36 -07:00
Ian Storm Taylor
5347fe1f3a Publish
- slate-base64-serializer@0.2.97
 - slate-html-serializer@0.7.36
 - slate-hyperscript@0.11.27
 - slate-plain-serializer@0.6.36
 - slate-prop-types@0.5.27
 - slate-react-placeholder@0.1.15
 - slate-react@0.21.18
 - slate@0.44.12
2019-03-08 13:43:26 -08:00
Sunny Hirai
89adf63e1f
Android 8 and 9 Support (#2565)
* Allow the dev server to work for non localhost host

* Refactored set-selection-from-dom into utils as prep for Android support

* Show debug onInput at start if triggered

* Added and refactored to use set-text-from-dom-node with improved set selection after input

* Remove unnecessary console.log in set-text-from-dom-node

* Fixes to pass linter

* Adds basic composition to Android API27 including fixing one bug where compositionStart does not fire

* Fix some of the enter handling in API 27 and 28

* Add fixes for API 25

* Add debug for slate:update instead of separate render and updateSelection

* Add API 26 fix for ignoring all but Enter in onKeyDown

* Fix enter on Android 26 and 27

* Revert onSelect bug. Editor API 26 and 27 stable-ish

* Fix enter at beginning and end of word in API 26 and 27

* Fix enter handling at end of line API 26 and 27

* Fix reversion of enter bug when not at end of line

* Rename enter to linefeed which is more accurate

* Fix backspace on Android 27 and 28

* Fix enter at end of line then backspace then enter bug in API 26 and 27

* Refactor to simplify reading code

* Refactor to use executor and fix the suggestion problem

* Fix multi point edit in API 27/28

* Update Android documentation on enter handling

* Fix enter in API 26/27 and document 4 different enter cases

* Refactor partial into SlateSnapshot

* Complete SlateSnapshot refactor

* Remove unnecessary plugin comments

* Add smoke tests

* Rename smoke tests to composition in exmaples

* Fix API28 split join and insertion

* Fix space then backspace in middle of word bug in API 28

* Add text for middle word space and backspace bug

* Add note that the space backspace bug does not exist on API 27

* Fix 'It me. No.' bug in API 26/27

* Fix comments

* Update comments to fit Slate style guide

* Move a debug statement

* Fix zero-width selection placement bug.

* Fix 'it is' then enter in middle of 'it' bug

* Partial fix of enter, backspace, enter in word

* Add and fix comments. Fix selection in zero-width for API26-27

* Fix linting

* Fix documentation

* Remove snapback from packages

* Remove snapback from yarn.lock

* Rename SlateSnapshot to DomSnapshot

* Remove guard on DomSnapshot apply method

* Remove debug plugin from plugins/dom

* Remove unnecessary comment in content.js componentDidUpdate

* Remove closest and add function into dom-snapshot directly

* Remove unused DebugPlugin

* Move Android detection related code into slate-dev-environment

* Capitalize to Number in JSDoc

* Add API version and Input Events Level 2 for Android

* Add input events level 2 for android without matching api version

* Fix line failures
2019-03-08 10:14:52 -08:00
Yoel
9f2edf9512 Fix move_node dirtyPath and PathUtils.transform calculations (#2593)
* test and changes to test runner for move-node edge case

* fix dirtyPaths calculation for move_node

* prettier

* remove commented out code, remove needless toArray call

* remove test assertion

* more lint fixes

* possibly correct test for deleting all nested blocks

* pretty test

* fix PathUtils.transform edge case with move_node

* tests for PathUtils.transform for some move_node cases

* prettier

* element moveNode also uses PathUtils.transform, fix sibling edge case

* refactor for ease of comprehension

* new edge case test, fix move_node invert

* prettier

* revert last move_node transform case for clarity
2019-03-07 18:08:15 -05:00
Jason Staten
4d0ccc8e81 Fix Edge positioning with newlines (#2622)
* Fix Edge positioning with newlines

Edge has a [bug][1] where `Range.prototype.toString()` will convert `\n`
into `\r\n`. The bug causes a loop when slate-react attempts to
reposition its cursor to match the native position.

This change avoids calling `Range.prototype.toString()` by cloning the
content nodes and measuring `textContent` on those instead.

[1]: https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10291116/

* Add COMPAT message
2019-03-07 18:01:59 -05:00
Ian Storm Taylor
bc8de50d99 Publish
- slate-base64-serializer@0.2.96
 - slate-dev-environment@0.2.2
 - slate-hotkeys@0.2.9
 - slate-html-serializer@0.7.35
 - slate-hyperscript@0.11.26
 - slate-plain-serializer@0.6.35
 - slate-prop-types@0.5.26
 - slate-react-placeholder@0.1.14
 - slate-react@0.21.17
 - slate@0.44.11
2019-03-06 14:30:06 -08:00
Sunny Hirai
bc256e027a Add API version and Input Events Level 2 for Android (#2618)
* Add API version and Input Events Level 2 for Android

* Add input events level 2 for android without matching api version
2019-03-06 17:13:57 -05:00
Dominic Amato
3dce916074 Use strict equality except for null/undefined for improved performance and behavior (#2514)
* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* undo strict null checking

* remove added semicolons

* Prettier Formatting Changes

* Update .eslintrc

add smart strict equality rule

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert Non-strict to strict equality checking
Convert non-strict equality checking, using `==`, to the strict version, using `===`.

* Convert files to use strict equality

* fix prettier eslint errors

* fix remaining prettier complaints

* use strict null equality in serializer
2019-03-06 16:48:41 -05:00
Yoel
2740907b7f fix insert fragment with void children (#2624) 2019-03-06 16:41:39 -05:00
Yoel
9dc53c5d82 Fix insert-node-by-key benchmark, add normalize and insert-fragment benchmarks (#2587)
* fix insert-node-by-key benchmark, add normalize-with-problems

* add benchmark for insertFragment

* more fragment benchmarks
2019-03-06 16:35:12 -05:00
Stefan
9c852b7367 Remove reference to deprecated slate-simulator package (#2591) 2019-02-28 12:20:47 -08:00
Ian Storm Taylor
6302b2d9d2 Publish
- slate-base64-serializer@0.2.95
 - slate-dev-benchmark@0.0.5
 - slate-html-serializer@0.7.34
 - slate-hyperscript@0.11.25
 - slate-plain-serializer@0.6.34
 - slate-prop-types@0.5.25
 - slate-react-placeholder@0.1.13
 - slate-react@0.21.16
 - slate@0.44.10
2019-01-30 16:19:34 -08:00
Yoel
8a0baac696 Fix benchmarks that use value.change (#2569)
* benchmark for large with selection

* inputer -> inputter

* value.change -> editor for slate benchmarks

* use editor in slate-react benchmarks

* prettier

* fix decorations benchmark
2019-01-30 12:10:34 -08:00
Stefan
f677f76559 Improve slate-react-placeholder component. (#2460)
* Improve slate-react-placeholder component.
Now there can be multiple placeholders that do not interfere with each other.
No developer facing changes.

* Fix lint issue

* Unique placeholder marks based on key, not type.
2019-01-29 16:19:43 -08:00
Brendan
861ba522b8 Prevent default browser scroll on content focus (#2526) 2019-01-29 16:13:46 -08:00
Jason Staten
83e45ac054 Fix mouse refocus in IE 11 (#2535)
* Fix mouse focus in IE 11

In IE11, refocusing by click would cause the editor to immediately lose focus.

Fixes #2364

* Skip delect onFocus for EDGE
2019-01-29 16:11:18 -08:00
Charley DAVID
1564c3a031 Fix dirty path normalization on move_node (#2536)
* Add failing tests on undo nested node merge

* Fix PathUtils transform on move_node operations
2019-01-29 16:10:35 -08:00
phy
1ce7c7cc89 fix(at-range): correct findInsertionNode method throw a type error when there arg is a Text node (#2498) 2019-01-29 16:09:18 -08:00
Yoel
91d46b3529 move_node tests and code clean up (#2555)
* tests

* refactor moveNodeByPath

* refactor element.move_node

* refactor invert.move_node
2019-01-29 16:08:17 -08:00
Ian Storm Taylor
391e2cba67
Revert "Android 8.0, 8.1 and 9.0 Support (#2553)" (#2562)
This reverts commit 17cdeae858b4c8a88b408fe743e6d8f2bdcbb72b.
2019-01-28 19:18:03 -08:00
Sunny Hirai
17cdeae858
Android 8.0, 8.1 and 9.0 Support (#2553)
* Allow the dev server to work for non localhost host

* Refactored set-selection-from-dom into utils as prep for Android support

* Show debug onInput at start if triggered

* Added and refactored to use set-text-from-dom-node with improved set selection after input

* Remove unnecessary console.log in set-text-from-dom-node

* Fixes to pass linter

* Adds basic composition to Android API27 including fixing one bug where compositionStart does not fire

* Fix some of the enter handling in API 27 and 28

* Add fixes for API 25

* Add debug for slate:update instead of separate render and updateSelection

* Add API 26 fix for ignoring all but Enter in onKeyDown

* Fix enter on Android 26 and 27

* Revert onSelect bug. Editor API 26 and 27 stable-ish

* Fix enter at beginning and end of word in API 26 and 27

* Fix enter handling at end of line API 26 and 27

* Fix reversion of enter bug when not at end of line

* Rename enter to linefeed which is more accurate

* Fix backspace on Android 27 and 28

* Fix enter at end of line then backspace then enter bug in API 26 and 27

* Refactor to simplify reading code

* Refactor to use executor and fix the suggestion problem

* Fix multi point edit in API 27/28

* Update Android documentation on enter handling

* Fix enter in API 26/27 and document 4 different enter cases

* Refactor partial into SlateSnapshot

* Complete SlateSnapshot refactor

* Remove unnecessary plugin comments

* Add smoke tests

* Rename smoke tests to composition in exmaples

* Fix API28 split join and insertion

* Fix space then backspace in middle of word bug in API 28

* Add text for middle word space and backspace bug

* Add note that the space backspace bug does not exist on API 27

* Fix 'It me. No.' bug in API 26/27

* Fix comments

* Update comments to fit Slate style guide

* Move a debug statement

* Fix zero-width selection placement bug.

* Fix 'it is' then enter in middle of 'it' bug

* Partial fix of enter, backspace, enter in word

* Add and fix comments. Fix selection in zero-width for API26-27

* Fix linting

* Fix documentation

* Remove snapback from packages

* Remove snapback from yarn.lock
2019-01-28 12:30:48 -08:00
Jinxuan Zhu
44e47d7ffe Refactor duplicate code in mixin (#2529)
* Refactor duplicate code in mixin

* Remove debugger
2019-01-09 19:48:17 -08:00
Akumatus
09db2c93b6 fix unwrapBlockAtRange disorder (#2512) 2019-01-07 10:05:03 -08:00
Sunny Hirai
92c1ffbcd3
Refactor to utils (#2522)
* Refactored set-selection-from-dom into utils as prep for Android support

* Added and refactored to use set-text-from-dom-node with improved set selection after input
2019-01-04 12:02:33 -08:00
Ian Storm Taylor
d9cc247d45 Publish
- slate-base64-serializer@0.2.94
 - slate-html-serializer@0.7.33
 - slate-hyperscript@0.11.24
 - slate-plain-serializer@0.6.33
 - slate-prop-types@0.5.24
 - slate-react-placeholder@0.1.12
 - slate-react@0.21.15
 - slate@0.44.9
2018-12-11 13:23:21 -08:00
David Gertmenian-Wong
2ad73d73e5 Update Placeholder to be compatible with older versions of React (#2491)
* Make `placeholder` element compatible with older versions of React

`React.Fragment` is only available in react >= 16.2, which does not
meet the dependency requirements specified by the package (react >=
0.14.0). Updates from `React.Fragment` -> `span` to provide coverage
for older versions of react.

* Update `slate-react` placeholder test case
2018-12-11 12:54:26 -08:00
Jinxuan Zhu
c2a3609a09 Use weakmap to prevent memory leak and remove indirect __cache__key (#2471)
* Use global weakmap

* Remove redudant ?:

* Use local Weakmap for objects

* Code refactor

* Annotation refactor

* Annotation refactor

* Annotation refactor

* Fix annotation
2018-12-11 12:04:18 -08:00
Akumatus
fb60d4dfb7 fix(schema): previous node and child node may be exactly the same (#2493) 2018-12-11 11:32:06 -08:00
Dundercover
76a88a649a Add editor.HasCommand and editor.HasQuery (#2438)
* Add `editor.hasCommand` method

* Add `editor.hasQuery` method

* Rename directories `hasCommand` and `hasQuery` to kebab case

* Add tests for `editor.hasCommand` of React component

* Add tests for `editor.hasQuery` of React component
2018-12-11 11:25:53 -08:00
Ian Storm Taylor
37fcaf348c Publish
- slate-base64-serializer@0.2.93
 - slate-dev-environment@0.2.1
 - slate-hotkeys@0.2.8
 - slate-html-serializer@0.7.32
 - slate-hyperscript@0.11.23
 - slate-plain-serializer@0.6.32
 - slate-prop-types@0.5.23
 - slate-react-placeholder@0.1.11
 - slate-react@0.21.14
 - slate@0.44.8
2018-12-04 11:14:33 -08:00
Espen Hovlandsdal
73b4cb423e fix InputEvent global check (#2469) 2018-12-04 11:12:13 -08:00
CameronAckermanSEL
5395931680 undo and redo operations are now wrapped with withoutNormalizing call to prevent normalizing occuring in between application or reversal of batched operations (#2462) 2018-12-04 11:11:22 -08:00