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

3696 Commits

Author SHA1 Message Date
Jim Fisher
77d9f60ab5
Fix crash when a void node deletes itself on click (#4616)
* Fix crash when a void node deletes itself on click

Fixes https://github.com/ianstormtaylor/slate/issues/4240

* Add 'image delete' feature to example

My immediate motivation is to demonstrate the bug that this fixes. But
this is also a very common editor feature, and I think it's valuable
to show how to achieve it.

* add changeset

* fix:eslint

* revert changes to mentions.tsx
2021-10-24 07:31:00 -07:00
Eric Charles
b50a772136
Add missing insertFragmentData and insertTextData on the ReactEditor class (#4622) 2021-10-23 03:48:05 -07:00
Jim Fisher
f1b7d18f43
Official custom inlines example (#4615)
* Official custom inlines example

This generalizes the "links" example to an "inlines" example, adding
a new example of an inline: an "editable button".

Firstly, this is important to demonstrate that Slate really does allow
_custom_ elements, and not just "standard" ones like links that you'll
find in any editor.

Secondly, it's important to show an example of an inline where "offset"
movement should be used. With links, it's arguable that the cursor
positions <link>foo<cursor/></link> and <link>foo</link><cursor/>
should be considered the same, because they display in the same
position. But with the editable button, the cursor is clearly in a
different position, and so offset movement should be used.

* lint

* fix integration test

* update readme

* try again
2021-10-22 13:19:41 -07:00
Eric Charles
72160fac08
Add insertFragmentData and insertTextData to the ReactEditor API (#4614)
* Add insertFragmentData and insertTextData to the ReactEditor API

* Add patch changeset

* Docs for insertFragment and insertTextData
2021-10-22 06:44:56 -07:00
I Made Budi Surya Darma
b186d3ea12
Fix crash on drag and drop image on readOnly editable (#4617)
* Fix crash on drag and drop image on readOnly editable

* add changeset
2021-10-22 06:39:30 -07:00
Jim Fisher
67badb7dd0
Allow typing at the end of an inline element (#4578)
* Allow typing at the end of an inline

This fixes https://github.com/ianstormtaylor/slate/issues/4524

Steps to reproduce the buggy behavior:

* Create a page with an inline element, or go to
  https://codepen.io/jameshfisher/pen/xxrXvVO
* Put the cursor at the end of the inline code element
* Type something

Expected behavior: If the cursor is at the end of an inline, text
should be inserted at the end of the inline.

Actual behavior: Slate moves the cursor outside the inline before
inserting text.

This current behavior is explicitly coded. I nevertheless claim that
this is a bug, or at least a misfeature in core. My expected behavior
comes from:

* The fact that the cursor is inside the inline. For the user, the
  blinking cursor is visually inside the inline, not outside it. For the
  developer, the cursor (i.e. editor.selection) is inside the inline,
  not outside it. The definition of "the cursor" is "this is where your
  text will go when you type". To break that behavior is really jarring.
* Slate's principle that "all of its logic is implemented with a series
  of plugins". If the current behavior is actually desirable in some
  circumstance, it should be in a plugin, not core. It's harder and less
  elegant for me to remove the core behavior with my own plugin.
* Comparison with other editors. The following editors all insert text
  at the end of the inline, as expected: default contenteditable,
  Medium, Coda.io, Google Docs, OneNote, Evernote, QuillJS, TinyMCE,
  EditorJS, ProseMirror. Two editors with the current buggy behavior are
  Notion and Dropbox Paper, but I find it hard to imagine that their
  current behavior on this issue is actually designed, and not just
  accidental.
* Usability: how else is the user supposed to enter text at the end of
  the inline ..? The only way seems to be to insert text before the end
  of the inline, and then delete the rest of the inline. This is
  obviously horrible.

* add changeset

* Fix test: insert at the end of an inline should _not_ have special behavior

* The selection is no longer moved in insertText so we don't need this special case

* fix:prettier

* Revert "The selection is no longer moved in insertText so we don't need this special case"

This reverts commit f9f36cd43937ed44272294c1c3c19ca2f3302f2d.

* Explain the real reason for this special case - native browser bugs
2021-10-19 10:46:17 -07:00
Jim Fisher
cab8edea7b
Add "selected shadow" to link example (#4609)
Due to standard link CSS, the cursor at the end of the link looks the
same as the cursor immediately after the link, and the cursor at the
start of the link looks the same as the cursor immediately before the
link. However, these are semantically different locations. I've had
several problems with Slate misinterpreting these locations, and had
trouble showing these problems to others using the standard examples,
because the only example of an editable inline element is the link.

To fix this, I've added a box-shadow to the link when it's selected. It
should now be clear to the user whether the cursor is inside or
outside the element.
2021-10-19 06:48:03 -07:00
github-actions[bot]
3678590ccf
Version Packages (#4594)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
slate-react@0.67.0 slate-hyperscript@0.67.0
2021-10-18 14:05:11 -07:00
Jake Donham
87ab2efa41
defer native events within Editable to avoid bugs with Editor (#4605)
* defer native events internally to Editable

* add changeset

* suggestions to make DeferredOperation a closure instead of an object type

Co-authored-by: Nemanja Tosic <netosic90@gmail.com>

* fix misapplied suggestion

Co-authored-by: Nemanja Tosic <netosic90@gmail.com>
2021-10-18 13:05:16 -07:00
Dylan Schiemann
f1607da4ad
Revert "in examples, move withReact in front of withHistory (#4604)" (#4607)
This reverts commit 9cf2f4eea2878a7acce84273c3a65c09f0d0ea98.
2021-10-17 06:31:33 -07:00
Jake Donham
9cf2f4eea2
in examples, move withReact in front of withHistory (#4604) 2021-10-15 16:01:22 -07:00
Jim Fisher
08f67d9cbc
Fix typo (#4598) 2021-10-13 15:46:53 -07:00
Jim Fisher
f40e515dc7
Fix bug: setting selection from contentEditable:false element causes crash (#4584)
* Fix bug: setting selection from contentEditable:false element causes crash

Fixes https://github.com/ianstormtaylor/slate/issues/4583

When clicking some text in a `contentEditable:false` element, if the
handler for this sets the selection, Slate crashes. Slate tries to find
a Slate range for the text that was clicked on, but there is no such
range, because the text is inside a `contentEditable:false` element.
Slate seems to be making a bad assumption that the current DOM selection
necessarily corresponds to a Slate range, but this is not the case if
the user just clicked into an element with `contentEditable: false`.
To fix this, I changed `exactMatch: false` to `exactMatch: true`,
which seems to mean "fail gracefully if there is no exact match".

* changeset

* Revert "Fix bug: setting selection from contentEditable:false element causes crash"

This reverts commit 71234284cd454993b139ce065a9ab2db431abce8.

* Unconflate exactMatch flag: add suppressThrow flag for separate behavior

* Fix bug: setting selection from contentEditable:false element causes crash

Fixes #4583

When clicking some text in a `contentEditable:false` element, if the
handler for this sets the selection, Slate crashes. Slate tries to find
a Slate range for the text that was clicked on, but there is no such
range, because the text is inside a `contentEditable:false` element.
Slate seems to be making a bad assumption that the current DOM selection
necessarily corresponds to a Slate range, but this is not the case if
the user just clicked into an element with `contentEditable: false`.
2021-10-13 11:45:00 -07:00
Doug Reeder
43e740c88d
docs: clarifies not setting editor values directly & plugin order (#4571)
* Updates "Saving to a Database" example to distinguish actual content changes.

* Update docs/walkthroughs/06-saving-to-a-database.md

* Update docs/walkthroughs/06-saving-to-a-database.md

* Update docs/walkthroughs/06-saving-to-a-database.md

* Runs prettier

* docs: clarifies not setting editor values directly & plugin order

* Changes reccommended order of withReact & withHistory, to match current knowleged

Co-authored-by: Dylan Schiemann <dylan@dojotoolkit.org>
2021-10-11 17:40:38 -07:00
Jim Fisher
4b2e4000d6
Don't remove selection when hovering over a non-selectable DOM element (#4577)
* Don't remove selection when hovering over a non-selectable node

Fixes https://github.com/ianstormtaylor/slate/issues/4545

To reproduce the buggy behavior:

1. Create a page that renders a Slate element with a `contentEditable: false` element in it.
2. Start selecting some text with the mouse.
3. During the drag, mouseover the `contentEditable: false` element.

Expected behavior: After doing a drag-to-select with the mouse, from a valid anchor point on mousedown to a valid focus point on mouseup, the selection is set to those anchor and focus points.

Actual behavior: your selection is removed as soon as your mouse hits the `contentEditable: false` element. This is because the current behavior clears the selection if it is momentarily not a valid Slate location.

* Add changeset
2021-10-11 17:39:53 -07:00
Bryan Haakman
11ef83b47f
Only use Slate Provider's value prop as initial state (#4540)
* Only use value prop as initial state

* Add onChange call back

* add changeset
2021-10-11 17:38:02 -07:00
Bryan Haakman
c29eea022e
Allow passing custom editor creator to slate-hyperscript createEditor (#4555)
* Allow passing custom slate editor creator to slate-hyperscript createEditor()

Makes it easier to create your own testing setup

* run fix:prettier

* remove unused createEditor

* Add changeset

* fix lint and remove accidentally committed file
2021-10-11 17:33:52 -07:00
github-actions[bot]
b18dd40026
Version Packages (#4592)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
slate-react@0.66.7
2021-10-11 17:29:35 -07:00
Jim Fisher
c76f370826
Link to latest changelogs on main branch, not arbitrary snapshot from the past (#4593)
To see the problem, visit https://docs.slatejs.org/general/changelog and follow the links after "...each package will maintain its own individual changelog, which you can find here:"
2021-10-11 06:50:05 -07:00
Jake Donham
ae65ae5f71
revert #4455 / #4512; fix triple-click by unhanging range with void (#4588)
* revert #4455 / #4512; fix triple-click by unhanging range with void

* added changeset
2021-10-11 05:15:04 -07:00
Sunny Hirai
8e02c65184 docs: Fix lint maybe. 2021-10-10 21:22:32 -07:00
Sunny Hirai
8a81b0ea3d docs: updated concepts so Editor Interface matches API reference 2021-10-10 15:27:36 -07:00
Slapbox
528d92553b
Fixes broken changelog link (#4587)
Fixes #4586
2021-10-09 16:50:49 -07:00
Jas
a2558b37b0
Fix boolean not assignable to string typescript error (#4568) 2021-10-07 06:10:50 -07:00
github-actions[bot]
1ce3f4cf62
Version Packages (#4557)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
slate-react@0.66.6
2021-10-06 16:26:31 -04:00
Hadrien
81cb2ae659
Fix code sample (#4558)
It's an array of CutsomElement, TS complains about it
2021-09-29 06:08:09 -07:00
Jake Donham
b108491820
fix forced update in TextString in case of double render (#4556)
* fix forced update in TextString in case of double render

* added changeset
2021-09-28 10:19:47 -07:00
github-actions[bot]
f04cc58270
Version Packages (#4553)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
slate@0.66.5
2021-09-28 12:58:28 -04:00
Claudéric Demers
37d60c58b8
only apply Firefox toSlatePoint offset fix if ending in \n\n (#4552) 2021-09-27 10:14:07 -07:00
github-actions[bot]
ffac781086
Version Packages (#4551)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
slate-react@0.66.4
2021-09-27 09:20:26 -07:00
David Ruisinger
7ba486aa39
Do NOT use exact match when updating dom selection (#4304)
* Do NOT use exact match when updating dom selection

* Added changeset
2021-09-27 09:05:39 -07:00
github-actions[bot]
997fee8b5c
Version Packages (#4544)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
slate-react@0.66.3
2021-09-27 06:54:30 -07:00
Claudéric Demers
677da0ca87
Fix toSlatePoint when text node ends in \n in Firefox (#4547)
In Firefox, `range.cloneContents()` returns an extra trailing '\n', when the document ends with a new-line character. This results in the offset length being off by one, so we need to subtract one to account for this.
2021-09-26 08:07:14 -07:00
Nemanja Tosic
f9c41a569c
Fix deletion of expanded range (#4549) 2021-09-26 08:05:52 -07:00
Doug Reeder
95e13b0be1
Updates "Saving to a Database" example to distinguish content changes (#4497)
* Updates "Saving to a Database" example to distinguish actual content changes.

* Update docs/walkthroughs/06-saving-to-a-database.md

* Update docs/walkthroughs/06-saving-to-a-database.md

* Update docs/walkthroughs/06-saving-to-a-database.md

* Runs prettier

Co-authored-by: Dylan Schiemann <dylan@dojotoolkit.org>
2021-09-26 07:59:32 -07:00
Victor Baron
bc85497d58
Fix - delete selected inline void in chrome (#4526)
* Fix - delete selected inline void in chrome

* Add changeset

* Fix prettier on changeset

Co-authored-by: Dylan Schiemann <dylan@dojotoolkit.org>
2021-09-24 04:12:29 -07:00
github-actions[bot]
38717ad455
Version Packages (#4539)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
slate@0.66.2 slate-react@0.66.2
2021-09-23 12:28:47 -07:00
Steve Marquis
0da12c17dc
Fix setNodes when called with 'split' and a collapsed range (#4523)
* Fix setNodes when called with 'split' and a collapsed range

* Only bail if it's a non-empty text node

* Fix comment
2021-09-23 06:45:03 -07:00
Guilherme Samuel
15f8f866dd
docs: fix typo (#4538) 2021-09-19 13:44:28 -07:00
Nemanja Tosic
bd80a0b8dc
Fix erroneous text after native insert (#4529) 2021-09-19 13:43:29 -07:00
github-actions[bot]
35b722cadd
Version Packages (#4520)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
slate@0.66.1 slate-react@0.66.1
2021-09-14 01:20:36 -07:00
Dylan Schiemann
03226cea3e
fix release.yml (#4519) 2021-09-14 00:36:06 -07:00
Andrew Herron
6ec399d4db
Fixed nested object comparison when the second value doesn't have that key (#4518) 2021-09-14 00:32:47 -07:00
Dylan Schiemann
d528ad4008
Fix release versioning 3 (#4517)
* another attempt to fix the version packages release

* more work to fix automated changeset workflow
2021-09-13 15:09:59 -07:00
Dylan Schiemann
59ca7a8f51
Fix release versioning (#4516)
* correct immutability lockfile flag for yarn 3

* More experiments to re-enable the Version Packages action

* add changeset

* more work to fix automated changeset workflow
2021-09-13 14:09:00 -07:00
Dylan Schiemann
cd39284838
correct immutability lockfile flag for yarn 3 (#4515) 2021-09-13 13:27:39 -07:00
Dylan Schiemann
8b5dbc3dc7
add missing changeset (#4514)
* add missing changeset

* prettier
2021-09-13 11:12:33 -07:00
Trang Le
cc7cb623cf
fix(react-editor): reset focus offset when triple clicking (#4512)
* fix(react-editor): reset focus offset when triple clicking

* fix(react editor): remove commented-out code
2021-09-13 09:59:42 -07:00
Dylan Schiemann
2af6868d41
trigger changeset for 0.66 release (#4511) 2021-09-13 05:13:41 -07:00
Dylan Schiemann
91ca440723
Attempt fix the release process (#4510)
* Attempt fix the release process

* unbreak the release process
slate@0.66.0 slate-react@0.66.0 slate-hyperscript@0.66.0 slate-history@0.66.0
2021-09-13 04:48:09 -07:00