* Defined conditions to always split nodes
Those conditions are:
- When the anchor does not lie at the start of a node.
- When the focus does not lie at the end of a node.
* prev variable now points to correct updated node.
Previously, in the case the previous node gets merged in last iteration,
prev pointer could be pointing to the wrong node.
That posed problems, especially when normalizing empty text nodes.
So, now in every iteration, we get a copy of updated node structure,
and take value of prev from that.
* Test to check splitting and normalization logic.
- In this, since anchor and focus bleeds on both sides, splits happen.
- Empty text nodes are introduced on either side.
- New properties are set in the new node selection.
- Normalization happens and takes care of those empty text nodes.
* Create two-lies-appear.md
* Update two-lies-appear.md
Co-authored-by: Ian Storm Taylor <ian@ianstormtaylor.com>
* Save some remove_text calls if the text is zero length.
* Remove unnecessary !text check - text is always string, and add similar check to 'insert_text' as well
* Create giant-adults-matter.md
Co-authored-by: Ian Storm Taylor <ian@ianstormtaylor.com>
* Use null instead of undefined as the old value for set_node operations that add a property
* Changelog
* Omit undefined values from `set_node` operations completely. Delete missing property values in `Transforms.apply()` instead.
* Add tests for removing set_node properties with null and undefined
* fix ime double when apply mark
* add changeset
* refactor to use auto-incrementing key and add comments for it
* Update lovely-walls-knock.md
* Update lovely-walls-knock.md
Co-authored-by: Ian Storm Taylor <ian@ianstormtaylor.com>
* feat: sync selection to extractly dom selection
* revert mistakenly modified files
* add changeset
* toSlatePoint will throw error again when not extractMatch
* Fix misspellings, rename extractMatch to exactMatch
* rename option to match code style
* Update four-poets-move.md
Co-authored-by: Ian Storm Taylor <ian@ianstormtaylor.com>
* fix(react-editor): text node spacer can be non-existant if editor is in readonly mode
* v0.59.1
* Revert "v0.59.1"
This reverts commit 58cb7f1d61e81788e0257bace9be59bc47be8851.
* Update react-editor.ts
* Update react-editor.ts
* Create rude-lemons-crash.md
Co-authored-by: Ian Storm Taylor <ian@ianstormtaylor.com>
* fix DOM selection can not be updated when use composition input on Safari #3196
* Update editable.tsx
* Create dry-deers-applaud.md
Co-authored-by: Ian Storm Taylor <ian@ianstormtaylor.com>
* Fixed an issue with controlled value messing up editor.selection
* Create fifty-ducks-sip.md
Co-authored-by: Ian Storm Taylor <ian@ianstormtaylor.com>
* add guard checks for value and editor in <Slate />
* adding tiny-invariant to slate-react; refactoring errors
* import Editor for guard check
* Create fuzzy-yaks-drive.md
Co-authored-by: Cameron Ackerman <cameron_ackerman@selinc.com>
Co-authored-by: Ian Storm Taylor <ian@ianstormtaylor.com>
* getDirtyPaths can now be customized by Slate users (#4012)
* Moved getDirtyPaths() into the editor object so it can be customized via plugin
* docs: Update document in Chinese (#4017)
Co-authored-by: liuchengshuai001 <liuchengshuai001@ke.com>
* Removed unused import
* Use shadowRoot if available
* Removed optional chaining
* Added workaround for chrom bug in ShadowDOM
* Added shadow DOM example
* Add a shadow DOM example
Shadow DOM brings different behaviours for selection and active
elements. This adds an example where the editor is found within a shadow
DOM, in fact, the editor is two levels deep in nested shadow DOMs.
The handling of selections means that this editor doesn't work properly
so Slate will need to be made aware of the shadow DOM in order to fix
this.
* User DocumentOrShadowRoot for selection and active elements
If the editor is within a ShadowDom, the selections and active element
APIs are implemented on the ShadowRoot for Chrome. Other browsers still
use the Document's version of these APIs for the shadow DOM.
Instead of defaulting to `window.document`, find the appropriate root to
use for the editor in question.
* Add compatibility for Chrome's isCollapsed bug
Chrome will always return true for isCollapsed on a selection from the
shadow DOM. Work around this by instead computing this property on
Chrome.
https://bugs.chromium.org/p/chromium/issues/detail?id=447523
* Removed duplicated example
* Fixed possible null value
* Use existing PlainTextExample
* Re-added local Editor to have clear initialValue
* Optimize shadowRoot checkup
* Remove getDocumentOrShadowRoot util in favor of findDocumentOrShadowRoot
* Re-added getDocumentOrShadowRoot
* Put selectionchange listener on window.document
* Resetted changes from main branch
* Create tiny-walls-deliver.md
* Update tiny-walls-deliver.md
* Update tiny-walls-deliver.md
Co-authored-by: Tommy Dong <contact@tomdong.io>
Co-authored-by: Jacob <40483898+jacob-lcs@users.noreply.github.com>
Co-authored-by: liuchengshuai001 <liuchengshuai001@ke.com>
Co-authored-by: Andrew Scull <andrew.scull@live.com>
Co-authored-by: Ian Storm Taylor <ian@ianstormtaylor.com>