1
0
mirror of https://github.com/ianstormtaylor/slate.git synced 2025-02-25 01:33:37 +01:00

469 Commits

Author SHA1 Message Date
Sunny Hirai
f15538d6a5
Normalize target node in debug mutations (#2845)
* Normalize target node in debug mutations

* Added comments and fixed linting
2019-05-30 16:07:04 -07:00
Sunny Hirai
d2f9b4167c
Improve debug mutations plugin (#2844) 2019-05-29 18:03:42 -07:00
Sunny Hirai
78264cf117
Hook debug-mutations into lifecycle events (#2841) 2019-05-28 18:10:50 -07:00
Sunny Hirai
2265240c04
Removed pseudo-event object from lifecycle events (#2840) 2019-05-28 17:48:40 -07:00
Sunny Hirai
2634c58e32
Add render event for plugins (#2834) 2019-05-27 18:34:00 -07:00
Sunny Hirai
2ec21e7fc4
Add 3 lifecycle event handlers (#2833) 2019-05-27 15:04:59 -07:00
Sunny Hirai
80212943cc
Fix Hot Module Reload for plugins (#2825)
* Fix HMR for plugins

* Use TheReactPlugin in resolveController argument inside method
2019-05-22 18:57:29 -07:00
Sunny Hirai
96cb419ccb
Second attempt at Debug Mutations (#2823)
* Add debug-mutations

* Fix linting

* Add debug-mutations to o core plugins

* Fix debug output

* Add comment about debug statement

* Add comment explaining the building of debug output object
2019-05-22 18:21:20 -07:00
Sunny Hirai
8311767108
Add noop plugin as detached plugin (#2824) 2019-05-22 17:57:58 -07:00
Sunny Hirai
b73632d42f
Add editor to plugin options (#2821) 2019-05-22 12:07:24 -07:00
Sunny Hirai
accba53f56 Add div to editor as editor.el (#2820) 2019-05-22 11:26:11 -07:00
Ian Storm Taylor
1639e8da49
Revert "Add noop plugin (#2814)" (#2817)
This reverts commit b71fdbbb3d14f77ad77d280bc27dc556d70a5f6f.
2019-05-21 23:22:38 -07:00
Ian Storm Taylor
0837db7ce0
Revert "Debug mutations (#2815)" (#2816)
This reverts commit 5948738092e3c04ed0198d066472d05c10c515d6.
2019-05-21 23:21:50 -07:00
Sunny Hirai
5948738092
Debug mutations (#2815)
* Add noop plugin

* Add debug mutations
2019-05-21 17:34:22 -07:00
Sunny Hirai
b71fdbbb3d
Add noop plugin (#2814) 2019-05-21 17:24:00 -07:00
Ian Storm Taylor
fd31269c29 Publish
- slate-base64-serializer@0.2.106
 - slate-html-serializer@0.8.5
 - slate-hyperscript@0.13.3
 - slate-plain-serializer@0.7.5
 - slate-prop-types@0.5.36
 - slate-react-placeholder@0.2.3
 - slate-react@0.22.3
 - slate@0.47.3
2019-05-21 13:26:57 -07:00
Ian Storm Taylor
d2bd71b3d9 Merge branch 'master' of github.com:ianstormtaylor/slate 2019-05-21 13:24:02 -07:00
Cary Dunn
3c013c567a fallback findPath query to find closest element with a data-key (#2794)
* fallback findPath query to find closest element with a data-key

* lint

* move example to findEventRange query

* lint
2019-05-20 14:41:40 -07:00
adjourn
4eff9b5a06 Fix leaf memoization bug (#2766)
* Fix leaf memoization bug

* Update leaf.js
2019-05-20 14:37:31 -07:00
Cary Dunn
7adf56ffd1 gracefully handle null content ref in findDOMNode query (#2774) 2019-05-20 13:34:16 -07:00
Justin Weiss
09f4662d31 Use relative path to find a node's text nodes (#2799)
When `block.texts()` is passed a path, it treats that path as relative
to itself. `findSelection` passes it the selection path, which is
relative to the document.

In order to find the correct text nodes, we must convert the selection
path to a path relative to the block we found. Then, when a new path
is returned, we need to convert that new block-relative path back to a
document-relative path.
2019-05-20 13:17:28 -07:00
Sunny Hirai
b9cdaeb6a5
Add debug plugins (#2803)
* Add debug plugins

* Fix lint errors
2019-05-17 18:08:19 -07:00
Sunny Hirai
cf4bf38aca
Reconcile node (#2802)
* Add reconcileNode command

* Fix lint errors

* Remove node.path shortcut as path is not a property anymore
2019-05-17 16:28:32 -07:00
Sunny Hirai
79a2d21571
Reconcile dom node (#2801)
* Add reconcileDOMNode command fixes set-text-from-dom-node

* Fix linting and cleanup unused files

* Removed unnecessary console log
2019-05-17 15:26:48 -07:00
Sunny Hirai
48eb6700b7
Add error boundary to save Slate from a crash on corrupt DOM (#2792)
* Working version of restore dom

* Fix linting errors

* Add button to corrupt DOM

* Added error boundary that fixes DOM on render error

* Fix linting errors

* Fix debug output for componentDidCatch

* Improve example by adding a separate restoreDOM button

* Remove key change from error boundary which is not necessary

* Fix linting error
2019-05-16 16:26:13 -07:00
Sunny Hirai
d24f3b16ec
Restore dom (#2782)
* Working version of restore dom

* Fix linting errors
2019-05-16 10:59:51 -07:00
adjourn
d21cb09a12 Destructure texts iterable (#2764) 2019-05-11 20:29:11 -07:00
Ian Storm Taylor
2902899c72 Publish
- slate-base64-serializer@0.2.105
 - slate-html-serializer@0.8.4
 - slate-hyperscript@0.13.2
 - slate-plain-serializer@0.7.4
 - slate-prop-types@0.5.35
 - slate-react-placeholder@0.2.2
 - slate-react@0.22.2
 - slate@0.47.2
2019-05-09 14:43:28 -07:00
Ian Storm Taylor
7845c9534f Publish
- slate-base64-serializer@0.2.104
 - slate-html-serializer@0.8.3
 - slate-hyperscript@0.13.1
 - slate-plain-serializer@0.7.3
 - slate-prop-types@0.5.34
 - slate-react-placeholder@0.2.1
 - slate-react@0.22.1
 - slate@0.47.1
2019-05-08 20:44:55 -07:00
Ian Storm Taylor
5bdcbc4d83 Publish
- slate-base64-serializer@0.2.103
 - slate-html-serializer@0.8.2
 - slate-hyperscript@0.13.0
 - slate-plain-serializer@0.7.2
 - slate-prop-types@0.5.33
 - slate-react-placeholder@0.2.0
 - slate-react@0.22.0
 - slate@0.47.0
2019-05-08 20:36:13 -07:00
Ian Storm Taylor
d00f47256e update changelogs and peer dependencies 2019-05-08 20:33:00 -07:00
Ian Storm Taylor
a5a25f97dd
Introduce annotations (#2747)
* first stab at removing leaves with tests passing

* fixes

* add iterables to the element interface

* use iterables in more places

* update examples to use iterables

* update naming

* fix tests

* convert more key-based logic to paths

* add range support to iterables

* refactor many methods to use iterables, deprecate cruft

* clean up existing iterables

* more cleanup

* more cleaning

* fix word count example

* work

* split decoration and annotations

* update examples for `renderNode` useage

* deprecate old DOM-based helpers, update examples

* make formats first class, refactor leaf rendering

* fix examples, fix isAtomic checking

* deprecate leaf model

* convert Text and Leaf to functional components

* fix lint and tests
2019-05-08 20:26:08 -07:00
Ian Storm Taylor
dbf6237caf Publish
- slate-base64-serializer@0.2.102
 - slate-html-serializer@0.8.1
 - slate-hyperscript@0.12.1
 - slate-plain-serializer@0.7.1
 - slate-prop-types@0.5.32
 - slate-react-placeholder@0.1.20
 - slate-react@0.21.24
 - slate@0.46.1
2019-05-01 19:57:28 -07:00
Ian Storm Taylor
b448a19b8c Publish
- slate-base64-serializer@0.2.101
 - slate-html-serializer@0.8.0
 - slate-hyperscript@0.12.0
 - slate-plain-serializer@0.7.0
 - slate-prop-types@0.5.31
 - slate-react-placeholder@0.1.19
 - slate-react@0.21.23
 - slate@0.46.0
2019-05-01 19:54:33 -07:00
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
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
Jinxuan Zhu
ad15260993 Allow immutable 4.0.0-rc (#2695) 2019-04-24 16:56:16 -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
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
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
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
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