gitextract_zkoi7y8v/ ├── .changeset/ │ ├── README.md │ ├── config.json │ ├── early-suns-judge.md │ ├── modern-crabs-try.md │ ├── olive-planes-work.md │ └── popular-games-sip.md ├── .editorconfig ├── .eslintignore ├── .eslintrc.json ├── .gitattributes ├── .gitbook.yaml ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug-core.md │ │ ├── bug-platform.md │ │ ├── config.yml │ │ ├── request-feature.md │ │ └── request-improvement.md │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows/ │ ├── ci.yml │ ├── codeql.yml │ ├── comment.yml │ └── release.yml ├── .gitignore ├── .markdownlint.json ├── .prettierignore ├── .prettierrc ├── .vscode/ │ ├── extensions.json │ ├── launch.json │ └── settings.json ├── .yarn/ │ └── releases/ │ └── yarn-4.0.2.cjs ├── .yarnrc.yml ├── License.md ├── Readme.md ├── babel.config.js ├── config/ │ ├── babel/ │ │ └── register.cjs │ ├── rollup/ │ │ └── rollup.config.js │ └── typescript/ │ └── tsconfig.json ├── docs/ │ ├── Introduction.md │ ├── Summary.md │ ├── api/ │ │ ├── locations/ │ │ │ ├── README.md │ │ │ ├── location.md │ │ │ ├── path-ref.md │ │ │ ├── path.md │ │ │ ├── point-entry.md │ │ │ ├── point-ref.md │ │ │ ├── point.md │ │ │ ├── range-ref.md │ │ │ ├── range.md │ │ │ └── span.md │ │ ├── nodes/ │ │ │ ├── README.md │ │ │ ├── editor.md │ │ │ ├── element.md │ │ │ ├── node-entry.md │ │ │ ├── node.md │ │ │ └── text.md │ │ ├── operations/ │ │ │ ├── README.md │ │ │ └── operation.md │ │ ├── scrubber.md │ │ └── transforms.md │ ├── concepts/ │ │ ├── 01-interfaces.md │ │ ├── 02-nodes.md │ │ ├── 03-locations.md │ │ ├── 04-transforms.md │ │ ├── 05-operations.md │ │ ├── 06-commands.md │ │ ├── 07-editor.md │ │ ├── 08-plugins.md │ │ ├── 09-rendering.md │ │ ├── 10-serializing.md │ │ ├── 11-normalizing.md │ │ ├── 12-typescript.md │ │ └── xx-migrating.md │ ├── general/ │ │ ├── changelog.md │ │ ├── contributing.md │ │ ├── faq.md │ │ └── resources.md │ ├── images/ │ │ └── logo.sketch │ ├── libraries/ │ │ ├── slate-history/ │ │ │ ├── README.md │ │ │ ├── history-editor.md │ │ │ ├── history.md │ │ │ └── with-history.md │ │ ├── slate-hyperscript.md │ │ └── slate-react/ │ │ ├── README.md │ │ ├── editable.md │ │ ├── event-handling.md │ │ ├── hooks.md │ │ ├── react-editor.md │ │ ├── slate.md │ │ └── with-react.md │ └── walkthroughs/ │ ├── 01-installing-slate.md │ ├── 02-adding-event-handlers.md │ ├── 03-defining-custom-elements.md │ ├── 04-applying-custom-formatting.md │ ├── 05-executing-commands.md │ ├── 06-saving-to-a-database.md │ ├── 07-enabling-collaborative-editing.md │ ├── 08-using-the-bundled-source.md │ └── 09-performance.md ├── jest.config.js ├── lerna.json ├── now.json ├── package.json ├── packages/ │ ├── slate/ │ │ ├── CHANGELOG.md │ │ ├── Readme.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── core/ │ │ │ │ ├── apply.ts │ │ │ │ ├── batch-dirty-paths.ts │ │ │ │ ├── get-dirty-paths.ts │ │ │ │ ├── get-fragment.ts │ │ │ │ ├── index.ts │ │ │ │ ├── normalize-node.ts │ │ │ │ ├── should-normalize.ts │ │ │ │ └── update-dirty-paths.ts │ │ │ ├── create-editor.ts │ │ │ ├── editor/ │ │ │ │ ├── above.ts │ │ │ │ ├── add-mark.ts │ │ │ │ ├── after.ts │ │ │ │ ├── before.ts │ │ │ │ ├── delete-backward.ts │ │ │ │ ├── delete-forward.ts │ │ │ │ ├── delete-fragment.ts │ │ │ │ ├── edges.ts │ │ │ │ ├── element-read-only.ts │ │ │ │ ├── end.ts │ │ │ │ ├── first.ts │ │ │ │ ├── fragment.ts │ │ │ │ ├── get-void.ts │ │ │ │ ├── has-blocks.ts │ │ │ │ ├── has-inlines.ts │ │ │ │ ├── has-path.ts │ │ │ │ ├── has-texts.ts │ │ │ │ ├── index.ts │ │ │ │ ├── insert-break.ts │ │ │ │ ├── insert-node.ts │ │ │ │ ├── insert-soft-break.ts │ │ │ │ ├── insert-text.ts │ │ │ │ ├── is-block.ts │ │ │ │ ├── is-edge.ts │ │ │ │ ├── is-editor.ts │ │ │ │ ├── is-empty.ts │ │ │ │ ├── is-end.ts │ │ │ │ ├── is-normalizing.ts │ │ │ │ ├── is-start.ts │ │ │ │ ├── last.ts │ │ │ │ ├── leaf.ts │ │ │ │ ├── levels.ts │ │ │ │ ├── marks.ts │ │ │ │ ├── next.ts │ │ │ │ ├── node.ts │ │ │ │ ├── nodes.ts │ │ │ │ ├── normalize.ts │ │ │ │ ├── parent.ts │ │ │ │ ├── path-ref.ts │ │ │ │ ├── path-refs.ts │ │ │ │ ├── path.ts │ │ │ │ ├── point-ref.ts │ │ │ │ ├── point-refs.ts │ │ │ │ ├── point.ts │ │ │ │ ├── positions.ts │ │ │ │ ├── previous.ts │ │ │ │ ├── range-ref.ts │ │ │ │ ├── range-refs.ts │ │ │ │ ├── range.ts │ │ │ │ ├── remove-mark.ts │ │ │ │ ├── set-normalizing.ts │ │ │ │ ├── should-merge-nodes-remove-prev-node.ts │ │ │ │ ├── start.ts │ │ │ │ ├── string.ts │ │ │ │ ├── unhang-range.ts │ │ │ │ └── without-normalizing.ts │ │ │ ├── index.ts │ │ │ ├── interfaces/ │ │ │ │ ├── editor.ts │ │ │ │ ├── element.ts │ │ │ │ ├── index.ts │ │ │ │ ├── location.ts │ │ │ │ ├── node.ts │ │ │ │ ├── operation.ts │ │ │ │ ├── path-ref.ts │ │ │ │ ├── path.ts │ │ │ │ ├── point-ref.ts │ │ │ │ ├── point.ts │ │ │ │ ├── range-ref.ts │ │ │ │ ├── range.ts │ │ │ │ ├── scrubber.ts │ │ │ │ ├── text.ts │ │ │ │ └── transforms/ │ │ │ │ ├── general.ts │ │ │ │ ├── index.ts │ │ │ │ ├── node.ts │ │ │ │ ├── selection.ts │ │ │ │ └── text.ts │ │ │ ├── transforms-node/ │ │ │ │ ├── index.ts │ │ │ │ ├── insert-nodes.ts │ │ │ │ ├── lift-nodes.ts │ │ │ │ ├── merge-nodes.ts │ │ │ │ ├── move-nodes.ts │ │ │ │ ├── remove-nodes.ts │ │ │ │ ├── set-nodes.ts │ │ │ │ ├── split-nodes.ts │ │ │ │ ├── unset-nodes.ts │ │ │ │ ├── unwrap-nodes.ts │ │ │ │ └── wrap-nodes.ts │ │ │ ├── transforms-selection/ │ │ │ │ ├── collapse.ts │ │ │ │ ├── deselect.ts │ │ │ │ ├── index.ts │ │ │ │ ├── move.ts │ │ │ │ ├── select.ts │ │ │ │ ├── set-point.ts │ │ │ │ └── set-selection.ts │ │ │ ├── transforms-text/ │ │ │ │ ├── delete-text.ts │ │ │ │ ├── index.ts │ │ │ │ └── insert-fragment.ts │ │ │ ├── types/ │ │ │ │ ├── custom-types.ts │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ │ └── utils/ │ │ │ ├── deep-equal.ts │ │ │ ├── get-default-insert-location.ts │ │ │ ├── index.ts │ │ │ ├── is-object.ts │ │ │ ├── match-path.ts │ │ │ ├── modify.ts │ │ │ ├── string.ts │ │ │ ├── types.ts │ │ │ └── weak-maps.ts │ │ ├── test/ │ │ │ ├── index.js │ │ │ ├── interfaces/ │ │ │ │ ├── CustomTypes/ │ │ │ │ │ ├── boldText-false.tsx │ │ │ │ │ ├── boldText-true.tsx │ │ │ │ │ ├── custom-types.ts │ │ │ │ │ ├── customOperation-false.tsx │ │ │ │ │ ├── customOperation-true.tsx │ │ │ │ │ ├── customText-false.tsx │ │ │ │ │ ├── customText-true.tsx │ │ │ │ │ ├── headingElement-false.tsx │ │ │ │ │ ├── headingElement-true.tsx │ │ │ │ │ └── type-guards.ts │ │ │ │ ├── Editor/ │ │ │ │ │ ├── above/ │ │ │ │ │ │ ├── block-highest.tsx │ │ │ │ │ │ ├── block-lowest.tsx │ │ │ │ │ │ ├── inline.tsx │ │ │ │ │ │ ├── point.tsx │ │ │ │ │ │ ├── potential-parent.tsx │ │ │ │ │ │ └── range.tsx │ │ │ │ │ ├── after/ │ │ │ │ │ │ ├── end.tsx │ │ │ │ │ │ ├── non-selectable-block-last.tsx │ │ │ │ │ │ ├── non-selectable-block.tsx │ │ │ │ │ │ ├── non-selectable-inline-last.tsx │ │ │ │ │ │ ├── non-selectable-inline-void.tsx │ │ │ │ │ │ ├── non-selectable-inline.tsx │ │ │ │ │ │ ├── path-void.tsx │ │ │ │ │ │ ├── path.tsx │ │ │ │ │ │ ├── point-void.tsx │ │ │ │ │ │ ├── point.tsx │ │ │ │ │ │ ├── range-void.tsx │ │ │ │ │ │ └── range.tsx │ │ │ │ │ ├── before/ │ │ │ │ │ │ ├── non-selectable-block-first.tsx │ │ │ │ │ │ ├── non-selectable-block.tsx │ │ │ │ │ │ ├── non-selectable-inline-first.tsx │ │ │ │ │ │ ├── non-selectable-inline.tsx │ │ │ │ │ │ ├── path-void.tsx │ │ │ │ │ │ ├── path.tsx │ │ │ │ │ │ ├── point-void.tsx │ │ │ │ │ │ ├── point.tsx │ │ │ │ │ │ ├── range-void.tsx │ │ │ │ │ │ ├── range.tsx │ │ │ │ │ │ └── start.tsx │ │ │ │ │ ├── edges/ │ │ │ │ │ │ ├── path.tsx │ │ │ │ │ │ ├── point.tsx │ │ │ │ │ │ └── range.tsx │ │ │ │ │ ├── end/ │ │ │ │ │ │ ├── path.tsx │ │ │ │ │ │ ├── point.tsx │ │ │ │ │ │ └── range.tsx │ │ │ │ │ ├── hasBlocks/ │ │ │ │ │ │ ├── block-nested.tsx │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ ├── inline-nested.tsx │ │ │ │ │ │ └── inline.tsx │ │ │ │ │ ├── hasInlines/ │ │ │ │ │ │ ├── block-nested.tsx │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ ├── inline-nested.tsx │ │ │ │ │ │ └── inline.tsx │ │ │ │ │ ├── hasTexts/ │ │ │ │ │ │ ├── block-nested.tsx │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ ├── inline-nested.tsx │ │ │ │ │ │ └── inline.tsx │ │ │ │ │ ├── isBlock/ │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ └── inline.tsx │ │ │ │ │ ├── isEdge/ │ │ │ │ │ │ ├── path-end.tsx │ │ │ │ │ │ ├── path-middle.tsx │ │ │ │ │ │ └── path-start.tsx │ │ │ │ │ ├── isEmpty/ │ │ │ │ │ │ ├── block-blank.tsx │ │ │ │ │ │ ├── block-empty.tsx │ │ │ │ │ │ ├── block-full.tsx │ │ │ │ │ │ ├── block-void.tsx │ │ │ │ │ │ ├── inline-blank.tsx │ │ │ │ │ │ ├── inline-empty.tsx │ │ │ │ │ │ ├── inline-full.tsx │ │ │ │ │ │ └── inline-void.tsx │ │ │ │ │ ├── isEnd/ │ │ │ │ │ │ ├── path-end.tsx │ │ │ │ │ │ ├── path-middle.tsx │ │ │ │ │ │ └── path-start.tsx │ │ │ │ │ ├── isInline/ │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ └── inline.tsx │ │ │ │ │ ├── isStart/ │ │ │ │ │ │ ├── path-end.tsx │ │ │ │ │ │ ├── path-middle.tsx │ │ │ │ │ │ └── path-start.tsx │ │ │ │ │ ├── isVoid/ │ │ │ │ │ │ ├── block-void.tsx │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ ├── inline-void.tsx │ │ │ │ │ │ └── inline.tsx │ │ │ │ │ ├── levels/ │ │ │ │ │ │ ├── match.tsx │ │ │ │ │ │ ├── reverse.tsx │ │ │ │ │ │ ├── success.tsx │ │ │ │ │ │ ├── voids-false.tsx │ │ │ │ │ │ └── voids-true.tsx │ │ │ │ │ ├── marks/ │ │ │ │ │ │ ├── firefox-double-click.tsx │ │ │ │ │ │ ├── focus-block-end.tsx │ │ │ │ │ │ ├── markable-void-collapsed.tsx │ │ │ │ │ │ ├── markable-voids-mixed.tsx │ │ │ │ │ │ ├── mixed-text.tsx │ │ │ │ │ │ └── text-collapsed.tsx │ │ │ │ │ ├── next/ │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ ├── default.tsx │ │ │ │ │ │ └── text.tsx │ │ │ │ │ ├── node/ │ │ │ │ │ │ ├── path.tsx │ │ │ │ │ │ ├── point.tsx │ │ │ │ │ │ ├── range-end.tsx │ │ │ │ │ │ ├── range-start.tsx │ │ │ │ │ │ └── range.tsx │ │ │ │ │ ├── nodes/ │ │ │ │ │ │ ├── match-function/ │ │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ │ ├── editor.tsx │ │ │ │ │ │ │ └── inline.tsx │ │ │ │ │ │ ├── mode-all/ │ │ │ │ │ │ │ └── block.tsx │ │ │ │ │ │ ├── mode-highest/ │ │ │ │ │ │ │ └── block.tsx │ │ │ │ │ │ ├── mode-lowest/ │ │ │ │ │ │ │ └── block.tsx │ │ │ │ │ │ ├── mode-universal/ │ │ │ │ │ │ │ ├── all-nested.tsx │ │ │ │ │ │ │ ├── all.tsx │ │ │ │ │ │ │ ├── branch-nested.tsx │ │ │ │ │ │ │ ├── none-nested.tsx │ │ │ │ │ │ │ ├── none.tsx │ │ │ │ │ │ │ ├── some-nested.tsx │ │ │ │ │ │ │ └── some.tsx │ │ │ │ │ │ ├── no-match/ │ │ │ │ │ │ │ ├── block-multiple.tsx │ │ │ │ │ │ │ ├── block-nested.tsx │ │ │ │ │ │ │ ├── block-reverse.tsx │ │ │ │ │ │ │ ├── block-void.tsx │ │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ │ ├── inline-multiple.tsx │ │ │ │ │ │ │ ├── inline-nested.tsx │ │ │ │ │ │ │ ├── inline-reverse.tsx │ │ │ │ │ │ │ ├── inline-void.tsx │ │ │ │ │ │ │ └── inline.tsx │ │ │ │ │ │ ├── pass/ │ │ │ │ │ │ │ └── block.tsx │ │ │ │ │ │ └── voids-true/ │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ └── inline.tsx │ │ │ │ │ ├── parent/ │ │ │ │ │ │ ├── path.tsx │ │ │ │ │ │ ├── point.tsx │ │ │ │ │ │ ├── range-end.tsx │ │ │ │ │ │ ├── range-start.tsx │ │ │ │ │ │ └── range.tsx │ │ │ │ │ ├── path/ │ │ │ │ │ │ ├── path.tsx │ │ │ │ │ │ ├── point.tsx │ │ │ │ │ │ ├── range-end.tsx │ │ │ │ │ │ ├── range-start.tsx │ │ │ │ │ │ └── range.tsx │ │ │ │ │ ├── point/ │ │ │ │ │ │ ├── path-end.tsx │ │ │ │ │ │ ├── path-start.tsx │ │ │ │ │ │ ├── path.tsx │ │ │ │ │ │ ├── point.tsx │ │ │ │ │ │ ├── range-end.tsx │ │ │ │ │ │ ├── range-start.tsx │ │ │ │ │ │ └── range.tsx │ │ │ │ │ ├── positions/ │ │ │ │ │ │ ├── all/ │ │ │ │ │ │ │ ├── block-multiple-reverse.tsx │ │ │ │ │ │ │ ├── block-multiple.tsx │ │ │ │ │ │ │ ├── block-nested.tsx │ │ │ │ │ │ │ ├── block-reverse.tsx │ │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ │ ├── inline-fragmentation-empty-text.tsx │ │ │ │ │ │ │ ├── inline-fragmentation-reverse.tsx │ │ │ │ │ │ │ ├── inline-fragmentation.tsx │ │ │ │ │ │ │ ├── inline-multiple.tsx │ │ │ │ │ │ │ ├── inline-nested.tsx │ │ │ │ │ │ │ ├── inline-normalized.tsx │ │ │ │ │ │ │ ├── inline-reverse.tsx │ │ │ │ │ │ │ ├── inline.tsx │ │ │ │ │ │ │ ├── unit-block-reverse.tsx │ │ │ │ │ │ │ ├── unit-block.tsx │ │ │ │ │ │ │ ├── unit-character-inline-fragmentation-multibyte.tsx │ │ │ │ │ │ │ ├── unit-character-inline-fragmentation-reverse.tsx │ │ │ │ │ │ │ ├── unit-character-inline-fragmentation.tsx │ │ │ │ │ │ │ ├── unit-character-reverse.tsx │ │ │ │ │ │ │ ├── unit-character.tsx │ │ │ │ │ │ │ ├── unit-line-inline-fragmentation-reverse.tsx │ │ │ │ │ │ │ ├── unit-line-inline-fragmentation.tsx │ │ │ │ │ │ │ ├── unit-line-reverse.tsx │ │ │ │ │ │ │ ├── unit-line.tsx │ │ │ │ │ │ │ ├── unit-word-inline-fragmentation.tsx │ │ │ │ │ │ │ ├── unit-word-reverse.tsx │ │ │ │ │ │ │ └── unit-word.tsx │ │ │ │ │ │ ├── path/ │ │ │ │ │ │ │ ├── block-nested.tsx │ │ │ │ │ │ │ ├── block-reverse.tsx │ │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ │ ├── inline-nested.tsx │ │ │ │ │ │ │ ├── inline-reverse.tsx │ │ │ │ │ │ │ └── inline.tsx │ │ │ │ │ │ ├── range/ │ │ │ │ │ │ │ ├── block-reverse.tsx │ │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ │ └── inline.tsx │ │ │ │ │ │ └── voids-true/ │ │ │ │ │ │ ├── block-all-reverse.tsx │ │ │ │ │ │ ├── block-all.tsx │ │ │ │ │ │ ├── inline-all-reverse.tsx │ │ │ │ │ │ └── inline-all.tsx │ │ │ │ │ ├── previous/ │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ ├── default.tsx │ │ │ │ │ │ └── text.tsx │ │ │ │ │ ├── range/ │ │ │ │ │ │ ├── path.tsx │ │ │ │ │ │ ├── point.tsx │ │ │ │ │ │ ├── range-backward.tsx │ │ │ │ │ │ └── range.tsx │ │ │ │ │ ├── start/ │ │ │ │ │ │ ├── path.tsx │ │ │ │ │ │ ├── point.tsx │ │ │ │ │ │ └── range.tsx │ │ │ │ │ ├── string/ │ │ │ │ │ │ ├── block-across.tsx │ │ │ │ │ │ ├── block-void.tsx │ │ │ │ │ │ ├── block-voids-true.tsx │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ ├── inline.tsx │ │ │ │ │ │ └── text.tsx │ │ │ │ │ └── unhangRange/ │ │ │ │ │ ├── block-hanging-over-non-empty-void-with-voids-option.tsx │ │ │ │ │ ├── block-hanging-over-void-with-voids-option.tsx │ │ │ │ │ ├── block-hanging-over-void.tsx │ │ │ │ │ ├── block-hanging.tsx │ │ │ │ │ ├── collapsed.tsx │ │ │ │ │ ├── inline-at-end.tsx │ │ │ │ │ ├── inline-range-normal.tsx │ │ │ │ │ ├── multi-block-inline-at-end.tsx │ │ │ │ │ ├── not-hanging-inline-at-end.tsx │ │ │ │ │ ├── not-hanging-multi-block-inline-at-end.tsx │ │ │ │ │ ├── text-hanging.tsx │ │ │ │ │ ├── void-hanging-with-voids-option.tsx │ │ │ │ │ └── void-hanging.tsx │ │ │ │ ├── Element/ │ │ │ │ │ ├── isElement/ │ │ │ │ │ │ ├── boolean.tsx │ │ │ │ │ │ ├── custom-property.tsx │ │ │ │ │ │ ├── editor.tsx │ │ │ │ │ │ ├── element.tsx │ │ │ │ │ │ ├── isElementDiscriminant.tsx │ │ │ │ │ │ ├── isElementDiscriminantFalse.tsx │ │ │ │ │ │ ├── isElementType.tsx │ │ │ │ │ │ ├── isElementTypeFalse.tsx │ │ │ │ │ │ ├── nodes-full.tsx │ │ │ │ │ │ ├── object.tsx │ │ │ │ │ │ └── text.tsx │ │ │ │ │ ├── isElementList/ │ │ │ │ │ │ ├── boolean.tsx │ │ │ │ │ │ ├── element.tsx │ │ │ │ │ │ ├── empty.tsx │ │ │ │ │ │ ├── full-editor.tsx │ │ │ │ │ │ ├── full-element.tsx │ │ │ │ │ │ ├── full-text.tsx │ │ │ │ │ │ └── not-full-element.tsx │ │ │ │ │ └── matches/ │ │ │ │ │ ├── custom-prop-match.tsx │ │ │ │ │ ├── custom-prop-not-match.tsx │ │ │ │ │ └── empty-match.tsx │ │ │ │ ├── Location/ │ │ │ │ │ ├── isPath/ │ │ │ │ │ │ ├── customPoint.tsx │ │ │ │ │ │ ├── customRange.tsx │ │ │ │ │ │ ├── emptyPath.tsx │ │ │ │ │ │ ├── path.tsx │ │ │ │ │ │ ├── point.tsx │ │ │ │ │ │ └── range.tsx │ │ │ │ │ ├── isPoint/ │ │ │ │ │ │ ├── customPoint.tsx │ │ │ │ │ │ ├── customRange.tsx │ │ │ │ │ │ ├── emptyPath.tsx │ │ │ │ │ │ ├── path.tsx │ │ │ │ │ │ ├── point.tsx │ │ │ │ │ │ └── range.tsx │ │ │ │ │ ├── isRange/ │ │ │ │ │ │ ├── customPoint.tsx │ │ │ │ │ │ ├── customRange.tsx │ │ │ │ │ │ ├── emptyPath.tsx │ │ │ │ │ │ ├── path.tsx │ │ │ │ │ │ ├── point.tsx │ │ │ │ │ │ └── range.tsx │ │ │ │ │ └── isSpan/ │ │ │ │ │ ├── customPoint.tsx │ │ │ │ │ ├── customRange.tsx │ │ │ │ │ ├── emptyPath.tsx │ │ │ │ │ ├── path.tsx │ │ │ │ │ ├── point.tsx │ │ │ │ │ ├── range.tsx │ │ │ │ │ └── span.tsx │ │ │ │ ├── Node/ │ │ │ │ │ ├── ancestor/ │ │ │ │ │ │ └── success.tsx │ │ │ │ │ ├── ancestors/ │ │ │ │ │ │ ├── reverse.tsx │ │ │ │ │ │ └── success.tsx │ │ │ │ │ ├── child/ │ │ │ │ │ │ └── success.tsx │ │ │ │ │ ├── children/ │ │ │ │ │ │ ├── all.tsx │ │ │ │ │ │ └── reverse.tsx │ │ │ │ │ ├── descendant/ │ │ │ │ │ │ └── success.tsx │ │ │ │ │ ├── descendants/ │ │ │ │ │ │ ├── all.tsx │ │ │ │ │ │ ├── from.tsx │ │ │ │ │ │ ├── reverse.tsx │ │ │ │ │ │ └── to.tsx │ │ │ │ │ ├── elements/ │ │ │ │ │ │ ├── all.tsx │ │ │ │ │ │ ├── path.tsx │ │ │ │ │ │ ├── range.tsx │ │ │ │ │ │ └── reverse.tsx │ │ │ │ │ ├── first/ │ │ │ │ │ │ └── success.tsx │ │ │ │ │ ├── get/ │ │ │ │ │ │ ├── root.tsx │ │ │ │ │ │ └── success.tsx │ │ │ │ │ ├── getIf/ │ │ │ │ │ │ ├── proto.tsx │ │ │ │ │ │ ├── root.tsx │ │ │ │ │ │ ├── success.tsx │ │ │ │ │ │ └── undefined.tsx │ │ │ │ │ ├── isNode/ │ │ │ │ │ │ ├── boolean.tsx │ │ │ │ │ │ ├── custom-property.tsx │ │ │ │ │ │ ├── element.tsx │ │ │ │ │ │ ├── object.tsx │ │ │ │ │ │ ├── text.tsx │ │ │ │ │ │ └── value.tsx │ │ │ │ │ ├── isNodeList/ │ │ │ │ │ │ ├── boolean.tsx │ │ │ │ │ │ ├── element.tsx │ │ │ │ │ │ ├── empty.tsx │ │ │ │ │ │ ├── full-element.tsx │ │ │ │ │ │ ├── full-text.tsx │ │ │ │ │ │ ├── full-value.tsx │ │ │ │ │ │ └── not-full-node.tsx │ │ │ │ │ ├── leaf/ │ │ │ │ │ │ └── success.tsx │ │ │ │ │ ├── levels/ │ │ │ │ │ │ ├── reverse.tsx │ │ │ │ │ │ └── success.tsx │ │ │ │ │ ├── nodes/ │ │ │ │ │ │ ├── all.tsx │ │ │ │ │ │ ├── multiple-elements.tsx │ │ │ │ │ │ ├── nested-elements.tsx │ │ │ │ │ │ ├── pass.tsx │ │ │ │ │ │ └── to.tsx │ │ │ │ │ ├── parent/ │ │ │ │ │ │ └── success.tsx │ │ │ │ │ ├── string/ │ │ │ │ │ │ ├── across-elements.tsx │ │ │ │ │ │ ├── element.tsx │ │ │ │ │ │ └── text.tsx │ │ │ │ │ └── texts/ │ │ │ │ │ ├── all.tsx │ │ │ │ │ ├── from.tsx │ │ │ │ │ ├── multiple-elements.tsx │ │ │ │ │ ├── reverse.tsx │ │ │ │ │ └── to.tsx │ │ │ │ ├── Operation/ │ │ │ │ │ ├── inverse/ │ │ │ │ │ │ └── moveNode/ │ │ │ │ │ │ ├── backward-in-parent.tsx │ │ │ │ │ │ ├── child-to-ends-after-parent.tsx │ │ │ │ │ │ ├── child-to-ends-before-parent.tsx │ │ │ │ │ │ ├── child-to-parent.tsx │ │ │ │ │ │ ├── ends-after-parent-to-child.tsx │ │ │ │ │ │ ├── ends-before-parent-to-child.tsx │ │ │ │ │ │ ├── forward-in-parent.tsx │ │ │ │ │ │ └── non-sibling.tsx │ │ │ │ │ ├── isOperation/ │ │ │ │ │ │ ├── boolean.tsx │ │ │ │ │ │ ├── custom-property.tsx │ │ │ │ │ │ ├── insert_node.tsx │ │ │ │ │ │ ├── insert_text.tsx │ │ │ │ │ │ ├── merge_node.tsx │ │ │ │ │ │ ├── move_node.tsx │ │ │ │ │ │ ├── object.tsx │ │ │ │ │ │ ├── remove_node.tsx │ │ │ │ │ │ ├── remove_text.tsx │ │ │ │ │ │ ├── set_node.tsx │ │ │ │ │ │ ├── set_selection.tsx │ │ │ │ │ │ ├── split_node.tsx │ │ │ │ │ │ └── without-type.tsx │ │ │ │ │ └── isOperationList/ │ │ │ │ │ ├── boolean.tsx │ │ │ │ │ ├── empty.tsx │ │ │ │ │ ├── full.tsx │ │ │ │ │ ├── not-full-operaion.tsx │ │ │ │ │ └── operation.tsx │ │ │ │ ├── Path/ │ │ │ │ │ ├── ancestors/ │ │ │ │ │ │ ├── reverse.tsx │ │ │ │ │ │ └── success.tsx │ │ │ │ │ ├── common/ │ │ │ │ │ │ ├── equal.tsx │ │ │ │ │ │ ├── root.tsx │ │ │ │ │ │ └── success.tsx │ │ │ │ │ ├── compare/ │ │ │ │ │ │ ├── above.tsx │ │ │ │ │ │ ├── after.tsx │ │ │ │ │ │ ├── before.tsx │ │ │ │ │ │ ├── below.tsx │ │ │ │ │ │ ├── equal.tsx │ │ │ │ │ │ └── root.tsx │ │ │ │ │ ├── endsAfter/ │ │ │ │ │ │ ├── above.tsx │ │ │ │ │ │ ├── after.tsx │ │ │ │ │ │ ├── before.tsx │ │ │ │ │ │ ├── below.tsx │ │ │ │ │ │ ├── ends-after.tsx │ │ │ │ │ │ ├── ends-at.tsx │ │ │ │ │ │ ├── ends-before.tsx │ │ │ │ │ │ ├── equal.tsx │ │ │ │ │ │ └── root.tsx │ │ │ │ │ ├── endsAt/ │ │ │ │ │ │ ├── above.tsx │ │ │ │ │ │ ├── after.tsx │ │ │ │ │ │ ├── before.tsx │ │ │ │ │ │ ├── ends-after.tsx │ │ │ │ │ │ ├── ends-at.tsx │ │ │ │ │ │ ├── ends-before.tsx │ │ │ │ │ │ ├── equal.tsx │ │ │ │ │ │ └── root.tsx │ │ │ │ │ ├── endsBefore/ │ │ │ │ │ │ ├── above.tsx │ │ │ │ │ │ ├── after.tsx │ │ │ │ │ │ ├── before.tsx │ │ │ │ │ │ ├── below.tsx │ │ │ │ │ │ ├── ends-after.tsx │ │ │ │ │ │ ├── ends-at.tsx │ │ │ │ │ │ ├── ends-before.tsx │ │ │ │ │ │ ├── equal.tsx │ │ │ │ │ │ └── root.tsx │ │ │ │ │ ├── equals/ │ │ │ │ │ │ ├── above.tsx │ │ │ │ │ │ ├── after.tsx │ │ │ │ │ │ ├── before.tsx │ │ │ │ │ │ ├── below.tsx │ │ │ │ │ │ ├── equal.tsx │ │ │ │ │ │ └── root.tsx │ │ │ │ │ ├── hasPrevious/ │ │ │ │ │ │ ├── root.tsx │ │ │ │ │ │ └── success.tsx │ │ │ │ │ ├── isAfter/ │ │ │ │ │ │ ├── above.tsx │ │ │ │ │ │ ├── after.tsx │ │ │ │ │ │ ├── before.tsx │ │ │ │ │ │ ├── below.tsx │ │ │ │ │ │ └── equal.tsx │ │ │ │ │ ├── isAncestor/ │ │ │ │ │ │ ├── above-grandparent.tsx │ │ │ │ │ │ ├── above-parent.tsx │ │ │ │ │ │ ├── after.tsx │ │ │ │ │ │ ├── before.js │ │ │ │ │ │ ├── before.tsx │ │ │ │ │ │ ├── below.tsx │ │ │ │ │ │ └── equal.tsx │ │ │ │ │ ├── isBefore/ │ │ │ │ │ │ ├── above.tsx │ │ │ │ │ │ ├── after.tsx │ │ │ │ │ │ ├── before.tsx │ │ │ │ │ │ ├── below.tsx │ │ │ │ │ │ └── equal.tsx │ │ │ │ │ ├── isChild/ │ │ │ │ │ │ ├── above.tsx │ │ │ │ │ │ ├── after.tsx │ │ │ │ │ │ ├── before.js │ │ │ │ │ │ ├── before.tsx │ │ │ │ │ │ ├── below-child.tsx │ │ │ │ │ │ ├── below-grandchild.tsx │ │ │ │ │ │ └── equal.tsx │ │ │ │ │ ├── isDescendant/ │ │ │ │ │ │ ├── above.tsx │ │ │ │ │ │ ├── after.tsx │ │ │ │ │ │ ├── before.tsx │ │ │ │ │ │ ├── below-child.tsx │ │ │ │ │ │ ├── below-grandchild.tsx │ │ │ │ │ │ └── equal.tsx │ │ │ │ │ ├── isParent/ │ │ │ │ │ │ ├── above-grandparent.tsx │ │ │ │ │ │ ├── above-parent.tsx │ │ │ │ │ │ ├── after.tsx │ │ │ │ │ │ ├── before.tsx │ │ │ │ │ │ ├── below.tsx │ │ │ │ │ │ └── equal.tsx │ │ │ │ │ ├── isPath/ │ │ │ │ │ │ ├── boolean.tsx │ │ │ │ │ │ ├── empty.tsx │ │ │ │ │ │ ├── full.tsx │ │ │ │ │ │ ├── mixed.tsx │ │ │ │ │ │ └── strings.tsx │ │ │ │ │ ├── isSibling/ │ │ │ │ │ │ ├── above.tsx │ │ │ │ │ │ ├── after-sibling.tsx │ │ │ │ │ │ ├── after.tsx │ │ │ │ │ │ ├── before-sibling.tsx │ │ │ │ │ │ ├── before.tsx │ │ │ │ │ │ ├── below.tsx │ │ │ │ │ │ └── equal.tsx │ │ │ │ │ ├── levels/ │ │ │ │ │ │ ├── reverse.tsx │ │ │ │ │ │ └── success.tsx │ │ │ │ │ ├── next/ │ │ │ │ │ │ └── success.tsx │ │ │ │ │ ├── parent/ │ │ │ │ │ │ └── success.tsx │ │ │ │ │ ├── previous/ │ │ │ │ │ │ └── success.tsx │ │ │ │ │ ├── relative/ │ │ │ │ │ │ ├── grandparent.tsx │ │ │ │ │ │ ├── parent.tsx │ │ │ │ │ │ └── root.tsx │ │ │ │ │ └── transform/ │ │ │ │ │ └── move_node/ │ │ │ │ │ ├── ancestor-sibling-ends-after-to-ancestor.tsx │ │ │ │ │ ├── ancestor-sibling-ends-after-to-ends-after.tsx │ │ │ │ │ ├── ancestor-sibling-ends-before-to-ancestor.tsx │ │ │ │ │ ├── ancestor-sibling-ends-before-to-ends-after.tsx │ │ │ │ │ ├── ancestor-to-ends-after.tsx │ │ │ │ │ ├── ancestor-to-ends-before.tsx │ │ │ │ │ ├── ends-after-to-no-relation.tsx │ │ │ │ │ ├── ends-before-to-no-relation.tsx │ │ │ │ │ ├── equal-to-ends-after.tsx │ │ │ │ │ ├── equal-to-ends-before.js │ │ │ │ │ ├── equal-to-ends-before.tsx │ │ │ │ │ ├── no-relation-to-ends-after.tsx │ │ │ │ │ ├── no-relation-to-ends-before.tsx │ │ │ │ │ ├── parent-to-ends-after.tsx │ │ │ │ │ ├── parent-to-ends-before.tsx │ │ │ │ │ ├── sibling-ends-after-to-ends-equal.tsx │ │ │ │ │ ├── sibling-ends-after-to-sibling-ends-before.tsx │ │ │ │ │ ├── sibling-ends-before-to-ends-equal.tsx │ │ │ │ │ └── sibling-ends-before-to-sibling-ends-after.tsx │ │ │ │ ├── Point/ │ │ │ │ │ ├── compare/ │ │ │ │ │ │ ├── path-after-offset-after.tsx │ │ │ │ │ │ ├── path-after-offset-before.tsx │ │ │ │ │ │ ├── path-after-offset-equal.tsx │ │ │ │ │ │ ├── path-before-offset-after.tsx │ │ │ │ │ │ ├── path-before-offset-before.tsx │ │ │ │ │ │ ├── path-before-offset-equal.tsx │ │ │ │ │ │ ├── path-equal-offset-after.tsx │ │ │ │ │ │ ├── path-equal-offset-before.tsx │ │ │ │ │ │ └── path-equal-offset-equal.tsx │ │ │ │ │ ├── equals/ │ │ │ │ │ │ ├── path-after-offset-after.tsx │ │ │ │ │ │ ├── path-after-offset-before.tsx │ │ │ │ │ │ ├── path-after-offset-equal.tsx │ │ │ │ │ │ ├── path-before-offset-after.tsx │ │ │ │ │ │ ├── path-before-offset-before.tsx │ │ │ │ │ │ ├── path-before-offset-equal.tsx │ │ │ │ │ │ ├── path-equal-offset-after.tsx │ │ │ │ │ │ ├── path-equal-offset-before.tsx │ │ │ │ │ │ └── path-equal-offset-equal.tsx │ │ │ │ │ ├── isAfter/ │ │ │ │ │ │ ├── path-after-offset-after.tsx │ │ │ │ │ │ ├── path-after-offset-before.tsx │ │ │ │ │ │ ├── path-after-offset-equal.tsx │ │ │ │ │ │ ├── path-before-offset-after.tsx │ │ │ │ │ │ ├── path-before-offset-before.tsx │ │ │ │ │ │ ├── path-before-offset-equal.tsx │ │ │ │ │ │ ├── path-equal-offset-after.tsx │ │ │ │ │ │ ├── path-equal-offset-before.tsx │ │ │ │ │ │ └── path-equal-offset-equal.tsx │ │ │ │ │ ├── isBefore/ │ │ │ │ │ │ ├── path-after-offset-after.tsx │ │ │ │ │ │ ├── path-after-offset-before.tsx │ │ │ │ │ │ ├── path-after-offset-equal.tsx │ │ │ │ │ │ ├── path-before-offset-after.tsx │ │ │ │ │ │ ├── path-before-offset-before.tsx │ │ │ │ │ │ ├── path-before-offset-equal.tsx │ │ │ │ │ │ ├── path-equal-offset-after.tsx │ │ │ │ │ │ ├── path-equal-offset-before.tsx │ │ │ │ │ │ └── path-equal-offset-equal.tsx │ │ │ │ │ ├── isPoint/ │ │ │ │ │ │ ├── boolean.tsx │ │ │ │ │ │ ├── custom-property.tsx │ │ │ │ │ │ ├── object.tsx │ │ │ │ │ │ ├── offset.tsx │ │ │ │ │ │ ├── path.tsx │ │ │ │ │ │ ├── point.tsx │ │ │ │ │ │ ├── without-offset.tsx │ │ │ │ │ │ └── without-path.tsx │ │ │ │ │ └── transform/ │ │ │ │ │ ├── backward-insert-text-after-point.tsx │ │ │ │ │ ├── backward-insert-text-at-point.tsx │ │ │ │ │ ├── backward-insert-text-before-point.tsx │ │ │ │ │ ├── forward-insert-text-after-point.tsx │ │ │ │ │ ├── forward-insert-text-at-point.tsx │ │ │ │ │ └── forward-insert-text-before-point.tsx │ │ │ │ ├── Range/ │ │ │ │ │ ├── edges/ │ │ │ │ │ │ └── collapsed.tsx │ │ │ │ │ ├── equals/ │ │ │ │ │ │ ├── equal.tsx │ │ │ │ │ │ └── not-equal.tsx │ │ │ │ │ ├── includes/ │ │ │ │ │ │ ├── path-after.tsx │ │ │ │ │ │ ├── path-before.tsx │ │ │ │ │ │ ├── path-end.tsx │ │ │ │ │ │ ├── path-inside.tsx │ │ │ │ │ │ ├── path-start.tsx │ │ │ │ │ │ ├── point-inside.tsx │ │ │ │ │ │ ├── point-offset-before.tsx │ │ │ │ │ │ ├── point-path-after.tsx │ │ │ │ │ │ ├── point-path-before.tsx │ │ │ │ │ │ └── point-start.tsx │ │ │ │ │ ├── isBackward/ │ │ │ │ │ │ ├── backward.tsx │ │ │ │ │ │ ├── collapsed.tsx │ │ │ │ │ │ └── forward.tsx │ │ │ │ │ ├── isCollapsed/ │ │ │ │ │ │ ├── collapsed.tsx │ │ │ │ │ │ └── expanded.tsx │ │ │ │ │ ├── isExpanded/ │ │ │ │ │ │ ├── collapsed.tsx │ │ │ │ │ │ └── expanded.tsx │ │ │ │ │ ├── isForward/ │ │ │ │ │ │ ├── backward.tsx │ │ │ │ │ │ ├── collapsed.tsx │ │ │ │ │ │ └── forward.tsx │ │ │ │ │ ├── isRange/ │ │ │ │ │ │ ├── boolean.tsx │ │ │ │ │ │ ├── custom-property.tsx │ │ │ │ │ │ ├── object.tsx │ │ │ │ │ │ ├── range.tsx │ │ │ │ │ │ ├── without-anchor.tsx │ │ │ │ │ │ └── without-focus.tsx │ │ │ │ │ ├── points/ │ │ │ │ │ │ └── full-selection.tsx │ │ │ │ │ └── transform/ │ │ │ │ │ ├── inward-collapsed.tsx │ │ │ │ │ └── outward-collapsed.tsx │ │ │ │ ├── Scrubber/ │ │ │ │ │ └── scrubber.ts │ │ │ │ └── Text/ │ │ │ │ ├── decorations/ │ │ │ │ │ ├── adjacent.js │ │ │ │ │ ├── collapse.js │ │ │ │ │ ├── end.tsx │ │ │ │ │ ├── intersect.js │ │ │ │ │ ├── merge.ts │ │ │ │ │ ├── middle.tsx │ │ │ │ │ ├── overlapping.tsx │ │ │ │ │ └── start.tsx │ │ │ │ ├── equals/ │ │ │ │ │ ├── complex-exact-equals.js │ │ │ │ │ ├── complex-exact-not-equal.js │ │ │ │ │ ├── complex-loose-equals.js │ │ │ │ │ ├── complex-loose-not-equal.js │ │ │ │ │ ├── exact-equals.js │ │ │ │ │ ├── exact-not-equal.js │ │ │ │ │ ├── loose-equals.js │ │ │ │ │ └── loose-not-equal.js │ │ │ │ ├── isText/ │ │ │ │ │ ├── boolean.tsx │ │ │ │ │ ├── custom-property.tsx │ │ │ │ │ ├── object.tsx │ │ │ │ │ ├── text-full.tsx │ │ │ │ │ ├── text.tsx │ │ │ │ │ └── without-text.tsx │ │ │ │ ├── isTextList/ │ │ │ │ │ ├── boolean.tsx │ │ │ │ │ ├── empty.tsx │ │ │ │ │ ├── full-element.tsx │ │ │ │ │ ├── full-text.tsx │ │ │ │ │ ├── full-value.tsx │ │ │ │ │ ├── not-full-text.tsx │ │ │ │ │ └── text.tsx │ │ │ │ └── matches/ │ │ │ │ ├── empty-true.tsx │ │ │ │ ├── match-false.tsx │ │ │ │ ├── match-true.tsx │ │ │ │ ├── partial-false.tsx │ │ │ │ ├── partial-true.tsx │ │ │ │ ├── undefined-false.js │ │ │ │ └── undefined-true.js │ │ │ ├── jsx.d.ts │ │ │ ├── normalization/ │ │ │ │ ├── block/ │ │ │ │ │ ├── insert-custom-block.tsx │ │ │ │ │ ├── insert-text.tsx │ │ │ │ │ ├── remove-block.tsx │ │ │ │ │ ├── remove-inline-with-wrapping.tsx │ │ │ │ │ └── remove-inline.tsx │ │ │ │ ├── editor/ │ │ │ │ │ ├── remove-inline-with-wrapping.tsx │ │ │ │ │ ├── remove-inline.tsx │ │ │ │ │ ├── remove-text-with-wrapping.tsx │ │ │ │ │ └── remove-text.tsx │ │ │ │ ├── inline/ │ │ │ │ │ ├── insert-adjacent-text.tsx │ │ │ │ │ └── remove-block.tsx │ │ │ │ ├── text/ │ │ │ │ │ ├── merge-adjacent-empty-after-nested.tsx │ │ │ │ │ ├── merge-adjacent-empty-after.tsx │ │ │ │ │ ├── merge-adjacent-empty-before-inline.tsx │ │ │ │ │ ├── merge-adjacent-empty.tsx │ │ │ │ │ ├── merge-adjacent-match-empty.tsx │ │ │ │ │ └── merge-adjacent-match.tsx │ │ │ │ └── void/ │ │ │ │ ├── block-insert-text.tsx │ │ │ │ └── inline-insert-text.tsx │ │ │ ├── operations/ │ │ │ │ ├── move_node/ │ │ │ │ │ ├── path-equals-new-path.tsx │ │ │ │ │ └── path-not-equals-new-path.tsx │ │ │ │ ├── remove_node/ │ │ │ │ │ ├── cursor-aunt-text-after.tsx │ │ │ │ │ ├── cursor-aunt-text-before.tsx │ │ │ │ │ ├── cursor-nested.tsx │ │ │ │ │ ├── cursor-sibling-inline-after.tsx │ │ │ │ │ ├── cursor-sibling-inline-before-text-after.tsx │ │ │ │ │ ├── cursor-sibling-inline-before.tsx │ │ │ │ │ ├── cursor-sibling-text-after.tsx │ │ │ │ │ ├── cursor-sibling-text-before-inline-after.tsx │ │ │ │ │ ├── cursor-sibling-text-before.tsx │ │ │ │ │ ├── cursor-sibling-text-both-sides.tsx │ │ │ │ │ └── cursor.tsx │ │ │ │ ├── remove_text/ │ │ │ │ │ ├── anchor-after.tsx │ │ │ │ │ ├── anchor-before.tsx │ │ │ │ │ ├── anchor-middle.tsx │ │ │ │ │ ├── cursor-after.tsx │ │ │ │ │ ├── cursor-before.tsx │ │ │ │ │ ├── cursor-middle.tsx │ │ │ │ │ ├── focus-after.tsx │ │ │ │ │ ├── focus-before.tsx │ │ │ │ │ └── focus-middle.tsx │ │ │ │ ├── set_node/ │ │ │ │ │ ├── remove-null.tsx │ │ │ │ │ ├── remove-omit.tsx │ │ │ │ │ └── remove-undefined.tsx │ │ │ │ ├── set_selection/ │ │ │ │ │ ├── custom-props.tsx │ │ │ │ │ └── remove.tsx │ │ │ │ └── split_node/ │ │ │ │ ├── element-empty-properties.tsx │ │ │ │ ├── element.tsx │ │ │ │ ├── text-empty-properties.tsx │ │ │ │ └── text.tsx │ │ │ ├── transforms/ │ │ │ │ ├── delete/ │ │ │ │ │ ├── emojis/ │ │ │ │ │ │ ├── inline-end-reverse.tsx │ │ │ │ │ │ ├── inline-middle-reverse.tsx │ │ │ │ │ │ ├── inline-middle.tsx │ │ │ │ │ │ ├── inline-only-reverse.tsx │ │ │ │ │ │ ├── inline-start.tsx │ │ │ │ │ │ ├── text-end-reverse.tsx │ │ │ │ │ │ └── text-start.tsx │ │ │ │ │ ├── path/ │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ ├── inline.tsx │ │ │ │ │ │ ├── selection-inside.tsx │ │ │ │ │ │ └── text.tsx │ │ │ │ │ ├── point/ │ │ │ │ │ │ ├── basic-reverse.tsx │ │ │ │ │ │ ├── basic.tsx │ │ │ │ │ │ ├── depths-reverse.tsx │ │ │ │ │ │ ├── inline-before-reverse.tsx │ │ │ │ │ │ ├── inline-before.tsx │ │ │ │ │ │ ├── inline-end.tsx │ │ │ │ │ │ ├── inline-inside-reverse.tsx │ │ │ │ │ │ ├── inline-void-reverse.tsx │ │ │ │ │ │ ├── inline-void.tsx │ │ │ │ │ │ ├── inline.tsx │ │ │ │ │ │ ├── nested-reverse.tsx │ │ │ │ │ │ └── nested.tsx │ │ │ │ │ ├── selection/ │ │ │ │ │ │ ├── block-across-multiple.tsx │ │ │ │ │ │ ├── block-across-nested.tsx │ │ │ │ │ │ ├── block-across.tsx │ │ │ │ │ │ ├── block-depths-nested.tsx │ │ │ │ │ │ ├── block-depths.tsx │ │ │ │ │ │ ├── block-hanging-multiple.tsx │ │ │ │ │ │ ├── block-hanging-single.tsx │ │ │ │ │ │ ├── block-inline-across.tsx │ │ │ │ │ │ ├── block-inline-over.tsx │ │ │ │ │ │ ├── block-join-edges.tsx │ │ │ │ │ │ ├── block-join-inline.tsx │ │ │ │ │ │ ├── block-join-nested.tsx │ │ │ │ │ │ ├── block-middle.tsx │ │ │ │ │ │ ├── block-nested.tsx │ │ │ │ │ │ ├── block-void-end-hanging.tsx │ │ │ │ │ │ ├── block-void-end.tsx │ │ │ │ │ │ ├── character-end.tsx │ │ │ │ │ │ ├── character-middle.tsx │ │ │ │ │ │ ├── character-start.tsx │ │ │ │ │ │ ├── inline-after.tsx │ │ │ │ │ │ ├── inline-inside.tsx │ │ │ │ │ │ ├── inline-over.tsx │ │ │ │ │ │ ├── inline-whole.tsx │ │ │ │ │ │ └── word.tsx │ │ │ │ │ ├── unit-character/ │ │ │ │ │ │ ├── document-end.tsx │ │ │ │ │ │ ├── document-start-reverse.tsx │ │ │ │ │ │ ├── empty-reverse.tsx │ │ │ │ │ │ ├── empty.tsx │ │ │ │ │ │ ├── end.tsx │ │ │ │ │ │ ├── first-reverse.tsx │ │ │ │ │ │ ├── first.tsx │ │ │ │ │ │ ├── inline-after-reverse.tsx │ │ │ │ │ │ ├── inline-after.tsx │ │ │ │ │ │ ├── inline-before-reverse.tsx │ │ │ │ │ │ ├── inline-before.tsx │ │ │ │ │ │ ├── inline-end-reverse.tsx │ │ │ │ │ │ ├── inline-inside-reverse.tsx │ │ │ │ │ │ ├── inline-inside.tsx │ │ │ │ │ │ ├── last.tsx │ │ │ │ │ │ ├── middle-reverse.tsx │ │ │ │ │ │ ├── middle.tsx │ │ │ │ │ │ ├── multiple-reverse.tsx │ │ │ │ │ │ ├── multiple.tsx │ │ │ │ │ │ ├── thai-multiple-reverse.tsx │ │ │ │ │ │ └── thai-reverse.tsx │ │ │ │ │ ├── unit-line/ │ │ │ │ │ │ ├── text-end-reverse.tsx │ │ │ │ │ │ ├── text-end.tsx │ │ │ │ │ │ ├── text-middle-reverse.tsx │ │ │ │ │ │ ├── text-middle.tsx │ │ │ │ │ │ ├── text-start-reverse.tsx │ │ │ │ │ │ └── text-start.tsx │ │ │ │ │ ├── unit-word/ │ │ │ │ │ │ ├── block-join-reverse.tsx │ │ │ │ │ │ ├── block-join.tsx │ │ │ │ │ │ ├── text-end-reverse.tsx │ │ │ │ │ │ ├── text-middle-reverse.tsx │ │ │ │ │ │ ├── text-middle.tsx │ │ │ │ │ │ └── text-start.tsx │ │ │ │ │ ├── voids-false/ │ │ │ │ │ │ ├── block-across-backward.tsx │ │ │ │ │ │ ├── block-after-reverse.tsx │ │ │ │ │ │ ├── block-before.tsx │ │ │ │ │ │ ├── block-both.tsx │ │ │ │ │ │ ├── block-end.tsx │ │ │ │ │ │ ├── block-hanging-from.tsx │ │ │ │ │ │ ├── block-hanging-into.tsx │ │ │ │ │ │ ├── block-only.tsx │ │ │ │ │ │ ├── block-start-multiple.tsx │ │ │ │ │ │ ├── block-start.tsx │ │ │ │ │ │ ├── inline-after-reverse.tsx │ │ │ │ │ │ ├── inline-before.tsx │ │ │ │ │ │ ├── inline-into.tsx │ │ │ │ │ │ ├── inline-over.tsx │ │ │ │ │ │ ├── inline-start-across.tsx │ │ │ │ │ │ ├── inline-start.tsx │ │ │ │ │ │ ├── read-only-inline-after-reverse.tsx │ │ │ │ │ │ └── read-only-inline-within.tsx │ │ │ │ │ └── voids-true/ │ │ │ │ │ ├── across-blocks.tsx │ │ │ │ │ └── path.tsx │ │ │ │ ├── deselect/ │ │ │ │ │ └── basic.tsx │ │ │ │ ├── general/ │ │ │ │ │ └── invalid-insert_node.tsx │ │ │ │ ├── insertFragment/ │ │ │ │ │ ├── of-blocks/ │ │ │ │ │ │ ├── block-empty.tsx │ │ │ │ │ │ ├── block-end.tsx │ │ │ │ │ │ ├── block-hanging.tsx │ │ │ │ │ │ ├── block-middle-3.tsx │ │ │ │ │ │ ├── block-nested.tsx │ │ │ │ │ │ ├── block-start.tsx │ │ │ │ │ │ ├── blocks-middle-1.tsx │ │ │ │ │ │ ├── blocks-middle-2.tsx │ │ │ │ │ │ └── with-inline.tsx │ │ │ │ │ ├── of-inlines/ │ │ │ │ │ │ ├── block-empty.tsx │ │ │ │ │ │ ├── block-end.tsx │ │ │ │ │ │ ├── block-middle.tsx │ │ │ │ │ │ ├── block-start.tsx │ │ │ │ │ │ ├── inline-empty.tsx │ │ │ │ │ │ ├── inline-middle.tsx │ │ │ │ │ │ ├── with-multiple.tsx │ │ │ │ │ │ └── with-text.tsx │ │ │ │ │ ├── of-lists/ │ │ │ │ │ │ └── merge-lists.tsx │ │ │ │ │ ├── of-mixed/ │ │ │ │ │ │ ├── block-empty.tsx │ │ │ │ │ │ ├── block-empty2.tsx │ │ │ │ │ │ ├── block-empty3.tsx │ │ │ │ │ │ ├── block-end.tsx │ │ │ │ │ │ ├── block-end2.tsx │ │ │ │ │ │ ├── block-middle.tsx │ │ │ │ │ │ ├── block-start.tsx │ │ │ │ │ │ └── block-start2.tsx │ │ │ │ │ ├── of-tables/ │ │ │ │ │ │ ├── merge-cells-with-nested-blocks.tsx │ │ │ │ │ │ ├── merge-into-empty-cells.tsx │ │ │ │ │ │ └── merge-into-full-cells.tsx │ │ │ │ │ ├── of-texts/ │ │ │ │ │ │ ├── block-across.tsx │ │ │ │ │ │ ├── block-empty.tsx │ │ │ │ │ │ ├── block-end.tsx │ │ │ │ │ │ ├── block-middle.tsx │ │ │ │ │ │ ├── block-start.tsx │ │ │ │ │ │ ├── inline-empty.tsx │ │ │ │ │ │ ├── inline-middle.tsx │ │ │ │ │ │ └── with-multiple.tsx │ │ │ │ │ ├── voids-false/ │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ └── inline.tsx │ │ │ │ │ └── voids-true/ │ │ │ │ │ ├── block.tsx │ │ │ │ │ └── inline.tsx │ │ │ │ ├── insertNodes/ │ │ │ │ │ ├── block/ │ │ │ │ │ │ ├── block-empty.tsx │ │ │ │ │ │ ├── block-middle.tsx │ │ │ │ │ │ ├── block-void.tsx │ │ │ │ │ │ └── inline-void.tsx │ │ │ │ │ ├── inline/ │ │ │ │ │ │ ├── block-empty.tsx │ │ │ │ │ │ ├── block-end.tsx │ │ │ │ │ │ ├── block-middle.tsx │ │ │ │ │ │ ├── block-start.tsx │ │ │ │ │ │ ├── block-void.tsx │ │ │ │ │ │ └── inline-middle.tsx │ │ │ │ │ ├── path/ │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ ├── inline.tsx │ │ │ │ │ │ ├── multiple-inline-not-end.tsx │ │ │ │ │ │ ├── multiple-inline.tsx │ │ │ │ │ │ ├── multiple.tsx │ │ │ │ │ │ └── text.tsx │ │ │ │ │ ├── select-true/ │ │ │ │ │ │ └── block.tsx │ │ │ │ │ ├── selection/ │ │ │ │ │ │ ├── none-empty.tsx │ │ │ │ │ │ └── none-end.tsx │ │ │ │ │ ├── void/ │ │ │ │ │ │ ├── at-path.tsx │ │ │ │ │ │ ├── block-nested.tsx │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ └── inline.tsx │ │ │ │ │ └── voids-true/ │ │ │ │ │ ├── block.tsx │ │ │ │ │ └── inline.tsx │ │ │ │ ├── insertText/ │ │ │ │ │ ├── path/ │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ └── text.tsx │ │ │ │ │ ├── point/ │ │ │ │ │ │ ├── selection-after.tsx │ │ │ │ │ │ ├── selection-before.tsx │ │ │ │ │ │ ├── selection-end.tsx │ │ │ │ │ │ ├── selection-middle.tsx │ │ │ │ │ │ ├── selection-start.tsx │ │ │ │ │ │ ├── text-end.tsx │ │ │ │ │ │ ├── text-middle.tsx │ │ │ │ │ │ └── text-start.tsx │ │ │ │ │ ├── selection/ │ │ │ │ │ │ ├── block-across-inline-wold.tsx │ │ │ │ │ │ ├── block-across.tsx │ │ │ │ │ │ ├── block-end-words.tsx │ │ │ │ │ │ ├── block-end.tsx │ │ │ │ │ │ ├── block-hanging-across.tsx │ │ │ │ │ │ ├── block-hanging.tsx │ │ │ │ │ │ ├── block-middle-words.tsx │ │ │ │ │ │ ├── block-middle.tsx │ │ │ │ │ │ ├── block-start-words.tsx │ │ │ │ │ │ ├── block-start.tsx │ │ │ │ │ │ ├── block-void.tsx │ │ │ │ │ │ └── inline-end.tsx │ │ │ │ │ ├── voids-false/ │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ ├── read-only-inline.tsx │ │ │ │ │ │ └── text.tsx │ │ │ │ │ └── voids-true/ │ │ │ │ │ ├── block.tsx │ │ │ │ │ └── text.tsx │ │ │ │ ├── liftNodes/ │ │ │ │ │ ├── path/ │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ ├── first-block.tsx │ │ │ │ │ │ ├── last-block.tsx │ │ │ │ │ │ └── middle-block.tsx │ │ │ │ │ ├── selection/ │ │ │ │ │ │ ├── block-full.tsx │ │ │ │ │ │ └── block-nested.tsx │ │ │ │ │ └── voids-true/ │ │ │ │ │ └── block.tsx │ │ │ │ ├── mergeNodes/ │ │ │ │ │ ├── depth-block/ │ │ │ │ │ │ ├── block-nested-multi-child.tsx │ │ │ │ │ │ ├── block-nested-only-child.tsx │ │ │ │ │ │ └── block.tsx │ │ │ │ │ ├── path/ │ │ │ │ │ │ ├── block-nested.tsx │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ ├── text-across.tsx │ │ │ │ │ │ ├── text-hanging-nested.tsx │ │ │ │ │ │ └── text-hanging.tsx │ │ │ │ │ └── voids-true/ │ │ │ │ │ └── block.tsx │ │ │ │ ├── move/ │ │ │ │ │ ├── anchor/ │ │ │ │ │ │ ├── backward.tsx │ │ │ │ │ │ ├── basic.tsx │ │ │ │ │ │ ├── collapsed.tsx │ │ │ │ │ │ ├── distance.tsx │ │ │ │ │ │ ├── reverse-backward.tsx │ │ │ │ │ │ ├── reverse-basic.tsx │ │ │ │ │ │ └── reverse-distance.tsx │ │ │ │ │ ├── both/ │ │ │ │ │ │ ├── backward-reverse.tsx │ │ │ │ │ │ ├── backward.tsx │ │ │ │ │ │ ├── basic-reverse.tsx │ │ │ │ │ │ ├── collapsed.tsx │ │ │ │ │ │ ├── distance-reverse.tsx │ │ │ │ │ │ ├── distance.tsx │ │ │ │ │ │ ├── expanded-reverse.tsx │ │ │ │ │ │ ├── expanded.tsx │ │ │ │ │ │ ├── unit-word-reverse.tsx │ │ │ │ │ │ └── unit-word.tsx │ │ │ │ │ ├── emojis/ │ │ │ │ │ │ ├── keycap-reverse.tsx │ │ │ │ │ │ ├── keycap.tsx │ │ │ │ │ │ ├── ri-reverse.tsx │ │ │ │ │ │ ├── ri.tsx │ │ │ │ │ │ ├── tag-reverse.tsx │ │ │ │ │ │ ├── tag.tsx │ │ │ │ │ │ ├── zwj-reverse.tsx │ │ │ │ │ │ └── zwj.tsx │ │ │ │ │ ├── end/ │ │ │ │ │ │ ├── backward-reverse.tsx │ │ │ │ │ │ ├── backward.tsx │ │ │ │ │ │ ├── collapsed-reverse.tsx │ │ │ │ │ │ ├── distance-reverse.tsx │ │ │ │ │ │ ├── distance.tsx │ │ │ │ │ │ ├── expanded-reverse.tsx │ │ │ │ │ │ ├── expanded.tsx │ │ │ │ │ │ ├── from-backward-reverse.tsx │ │ │ │ │ │ └── to-backward-reverse.tsx │ │ │ │ │ ├── focus/ │ │ │ │ │ │ ├── backward.tsx │ │ │ │ │ │ ├── collapsed-reverse.tsx │ │ │ │ │ │ ├── distance-reverse.tsx │ │ │ │ │ │ ├── distance.tsx │ │ │ │ │ │ ├── expanded-reverse.tsx │ │ │ │ │ │ ├── expanded.tsx │ │ │ │ │ │ └── to-backward-reverse.tsx │ │ │ │ │ └── start/ │ │ │ │ │ ├── backward-reverse.tsx │ │ │ │ │ ├── backward.tsx │ │ │ │ │ ├── distance-reverse.tsx │ │ │ │ │ ├── distance.tsx │ │ │ │ │ ├── expanded-reverse.tsx │ │ │ │ │ ├── expanded.tsx │ │ │ │ │ ├── from-backward.tsx │ │ │ │ │ └── to-backward.tsx │ │ │ │ ├── moveNodes/ │ │ │ │ │ ├── path/ │ │ │ │ │ │ ├── inside-next.tsx │ │ │ │ │ │ ├── nested.tsx │ │ │ │ │ │ ├── noop-equal.tsx │ │ │ │ │ │ ├── text-nodes.tsx │ │ │ │ │ │ ├── text.tsx │ │ │ │ │ │ └── to-sibling.tsx │ │ │ │ │ ├── selection/ │ │ │ │ │ │ ├── block-nested-after.tsx │ │ │ │ │ │ ├── block-nested-before.tsx │ │ │ │ │ │ ├── block-siblings-after.tsx │ │ │ │ │ │ ├── block-siblings-before.tsx │ │ │ │ │ │ └── block.tsx │ │ │ │ │ └── voids-true/ │ │ │ │ │ ├── block.tsx │ │ │ │ │ └── inline.tsx │ │ │ │ ├── normalization/ │ │ │ │ │ ├── move_node.tsx │ │ │ │ │ ├── set_node.tsx │ │ │ │ │ └── split_node-and-insert_node.tsx │ │ │ │ ├── removeNodes/ │ │ │ │ │ ├── path/ │ │ │ │ │ │ ├── block-nested.tsx │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ ├── inline.tsx │ │ │ │ │ │ └── text.tsx │ │ │ │ │ ├── select/ │ │ │ │ │ │ ├── block-only-void.tsx │ │ │ │ │ │ ├── block-void-multiple-texts.tsx │ │ │ │ │ │ └── block-void.tsx │ │ │ │ │ ├── selection/ │ │ │ │ │ │ ├── block-across.tsx │ │ │ │ │ │ └── block-all.tsx │ │ │ │ │ └── voids-true/ │ │ │ │ │ ├── block.tsx │ │ │ │ │ └── inline.tsx │ │ │ │ ├── select/ │ │ │ │ │ ├── path.tsx │ │ │ │ │ ├── point.tsx │ │ │ │ │ └── range.tsx │ │ │ │ ├── setNodes/ │ │ │ │ │ ├── basic-structure/ │ │ │ │ │ │ ├── can-be-serialized.tsx │ │ │ │ │ │ └── invert-after-serialization.tsx │ │ │ │ │ ├── block/ │ │ │ │ │ │ ├── block-across.tsx │ │ │ │ │ │ ├── block-hanging.tsx │ │ │ │ │ │ ├── block-nested.tsx │ │ │ │ │ │ ├── block-void.tsx │ │ │ │ │ │ └── block.tsx │ │ │ │ │ ├── inline/ │ │ │ │ │ │ ├── inline-across.tsx │ │ │ │ │ │ ├── inline-block-hanging.tsx │ │ │ │ │ │ ├── inline-hanging.tsx │ │ │ │ │ │ ├── inline-nested.tsx │ │ │ │ │ │ ├── inline-void-2.tsx │ │ │ │ │ │ ├── inline-void.tsx │ │ │ │ │ │ └── inline.tsx │ │ │ │ │ ├── marks/ │ │ │ │ │ │ ├── mark-across-range.tsx │ │ │ │ │ │ ├── mark-void-collapsed.tsx │ │ │ │ │ │ ├── mark-void-range-hanging.tsx │ │ │ │ │ │ └── mark-void-range.tsx │ │ │ │ │ ├── merge/ │ │ │ │ │ │ └── text.tsx │ │ │ │ │ ├── path/ │ │ │ │ │ │ ├── block.tsx │ │ │ │ │ │ ├── inline.tsx │ │ │ │ │ │ └── text.tsx │ │ │ │ │ ├── split/ │ │ │ │ │ │ ├── noop-collapsed.tsx │ │ │ │ │ │ ├── text-remove.tsx │ │ │ │ │ │ └── text.tsx │ │ │ │ │ ├── text/ │ │ │ │ │ │ ├── block-across.tsx │ │ │ │ │ │ ├── merge-across.tsx │ │ │ │ │ │ └── text.tsx │ │ │ │ │ └── voids-true/ │ │ │ │ │ └── block.tsx │ │ │ │ ├── setPoint/ │ │ │ │ │ └── offset.tsx │ │ │ │ ├── splitNodes/ │ │ │ │ │ ├── always/ │ │ │ │ │ │ ├── after-inline-void.tsx │ │ │ │ │ │ ├── after-inline.tsx │ │ │ │ │ │ ├── before-inline.tsx │ │ │ │ │ │ ├── block-end.tsx │ │ │ │ │ │ └── block-start.tsx │ │ │ │ │ ├── match-any/ │ │ │ │ │ │ └── zero.tsx │ │ │ │ │ ├── match-block/ │ │ │ │ │ │ ├── block-middle-multiple-texts.tsx │ │ │ │ │ │ ├── block-middle.tsx │ │ │ │ │ │ └── inline-middle.tsx │ │ │ │ │ ├── match-inline/ │ │ │ │ │ │ └── inline-middle.js │ │ │ │ │ ├── path/ │ │ │ │ │ │ ├── block-inline.tsx │ │ │ │ │ │ ├── block-nested-void.tsx │ │ │ │ │ │ ├── block-nested.tsx │ │ │ │ │ │ ├── block-void.tsx │ │ │ │ │ │ ├── block-with-attributes.tsx │ │ │ │ │ │ ├── inline-void.tsx │ │ │ │ │ │ └── inline.tsx │ │ │ │ │ ├── point/ │ │ │ │ │ │ ├── block-void.tsx │ │ │ │ │ │ ├── inline-void.tsx │ │ │ │ │ │ ├── inline.tsx │ │ │ │ │ │ └── text-with-marks.tsx │ │ │ │ │ ├── selection/ │ │ │ │ │ │ ├── block-across.tsx │ │ │ │ │ │ ├── block-expanded.tsx │ │ │ │ │ │ ├── block-hanging.tsx │ │ │ │ │ │ ├── block-nested-void.tsx │ │ │ │ │ │ ├── block-void-end.tsx │ │ │ │ │ │ ├── block-void-middle.tsx │ │ │ │ │ │ ├── block-void-start.tsx │ │ │ │ │ │ ├── inline-across.tsx │ │ │ │ │ │ ├── inline-expanded.tsx │ │ │ │ │ │ ├── inline-void-end.tsx │ │ │ │ │ │ └── inline-void.tsx │ │ │ │ │ └── voids-true/ │ │ │ │ │ ├── block.tsx │ │ │ │ │ └── inline.tsx │ │ │ │ ├── unsetNodes/ │ │ │ │ │ ├── operation-contents-check.tsx │ │ │ │ │ └── text.tsx │ │ │ │ ├── unwrapNodes/ │ │ │ │ │ ├── match-block/ │ │ │ │ │ │ ├── block-across.tsx │ │ │ │ │ │ ├── block-end.tsx │ │ │ │ │ │ ├── block-inline.tsx │ │ │ │ │ │ ├── block-middle.tsx │ │ │ │ │ │ ├── block-nested.tsx │ │ │ │ │ │ ├── block-start.tsx │ │ │ │ │ │ └── block.tsx │ │ │ │ │ ├── match-inline/ │ │ │ │ │ │ ├── block-nested.tsx │ │ │ │ │ │ ├── inline-across.tsx │ │ │ │ │ │ ├── inline-over.tsx │ │ │ │ │ │ └── inline.tsx │ │ │ │ │ ├── mode-all/ │ │ │ │ │ │ ├── match-ancestors.tsx │ │ │ │ │ │ ├── match-siblings-and-parent.tsx │ │ │ │ │ │ ├── match-siblings.tsx │ │ │ │ │ │ ├── match-some-siblings-and-parent-split.tsx │ │ │ │ │ │ ├── match-some-siblings-and-parent.tsx │ │ │ │ │ │ └── match-some-siblings.tsx │ │ │ │ │ ├── path/ │ │ │ │ │ │ ├── block-multiple.tsx │ │ │ │ │ │ └── block.tsx │ │ │ │ │ └── split-block/ │ │ │ │ │ ├── block-all-nested.tsx │ │ │ │ │ ├── block-all.tsx │ │ │ │ │ ├── block-end.tsx │ │ │ │ │ ├── block-middle.tsx │ │ │ │ │ ├── block-nested.tsx │ │ │ │ │ ├── block-start.tsx │ │ │ │ │ └── block.tsx │ │ │ │ └── wrapNodes/ │ │ │ │ ├── block/ │ │ │ │ │ ├── block-across-nested.tsx │ │ │ │ │ ├── block-across-uneven.tsx │ │ │ │ │ ├── block-across.tsx │ │ │ │ │ ├── block-end.tsx │ │ │ │ │ ├── block-nested.tsx │ │ │ │ │ ├── block.tsx │ │ │ │ │ ├── inline-across.tsx │ │ │ │ │ ├── omit-all.tsx │ │ │ │ │ └── omit-nodes.tsx │ │ │ │ ├── inline/ │ │ │ │ │ ├── inline-across-nested.tsx │ │ │ │ │ ├── inline-across.tsx │ │ │ │ │ ├── inline.tsx │ │ │ │ │ └── text.tsx │ │ │ │ ├── path/ │ │ │ │ │ └── block.tsx │ │ │ │ ├── selection/ │ │ │ │ │ └── depth-text.tsx │ │ │ │ ├── split-block/ │ │ │ │ │ ├── block-across.tsx │ │ │ │ │ ├── block-end.tsx │ │ │ │ │ ├── block-mark.tsx │ │ │ │ │ ├── block-middle.tsx │ │ │ │ │ ├── block-nested.tsx │ │ │ │ │ ├── block-start.tsx │ │ │ │ │ └── block.tsx │ │ │ │ ├── split-inline/ │ │ │ │ │ ├── inline-mark.tsx │ │ │ │ │ └── inline.tsx │ │ │ │ └── voids-true/ │ │ │ │ └── block.tsx │ │ │ └── utils/ │ │ │ ├── deep-equal/ │ │ │ │ ├── deep-equals-with-array.js │ │ │ │ ├── deep-equals.js │ │ │ │ ├── deep-not-equal-multiple-objects.js │ │ │ │ ├── deep-not-equal-nested-undefined.js │ │ │ │ ├── deep-not-equal.js │ │ │ │ ├── deep-not-equals-with-array.js │ │ │ │ ├── simple-equals.js │ │ │ │ ├── simple-not-equal.js │ │ │ │ ├── undefined-key-equal-backward.js │ │ │ │ └── undefined-key-equal-forward.js │ │ │ └── string.ts │ │ └── tsconfig.json │ ├── slate-dom/ │ │ ├── CHANGELOG.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── custom-types.ts │ │ │ ├── index.ts │ │ │ ├── plugin/ │ │ │ │ ├── dom-editor.ts │ │ │ │ └── with-dom.ts │ │ │ └── utils/ │ │ │ ├── constants.ts │ │ │ ├── diff-text.ts │ │ │ ├── dom.ts │ │ │ ├── environment.ts │ │ │ ├── hotkeys.ts │ │ │ ├── key.ts │ │ │ ├── lines.ts │ │ │ ├── range-list.ts │ │ │ ├── types.ts │ │ │ └── weak-maps.ts │ │ └── tsconfig.json │ ├── slate-history/ │ │ ├── CHANGELOG.md │ │ ├── Readme.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── history-editor.ts │ │ │ ├── history.ts │ │ │ ├── index.ts │ │ │ └── with-history.ts │ │ ├── test/ │ │ │ ├── index.js │ │ │ ├── isHistory/ │ │ │ │ ├── after-edit.js │ │ │ │ ├── after-redo.js │ │ │ │ ├── after-undo.js │ │ │ │ └── before-edit.js │ │ │ ├── jsx.d.ts │ │ │ └── undo/ │ │ │ ├── cursor/ │ │ │ │ └── keep_after_focus_and_remove_text_undo.js │ │ │ ├── delete_backward/ │ │ │ │ ├── block-join-reverse.tsx │ │ │ │ ├── block-nested-reverse.tsx │ │ │ │ ├── block-text.tsx │ │ │ │ ├── custom-prop.tsx │ │ │ │ └── inline-across.tsx │ │ │ ├── insert_break/ │ │ │ │ └── basic.tsx │ │ │ ├── insert_fragment/ │ │ │ │ └── basic.tsx │ │ │ └── insert_text/ │ │ │ ├── basic.tsx │ │ │ ├── contiguous.tsx │ │ │ └── non-contiguous.tsx │ │ └── tsconfig.json │ ├── slate-hyperscript/ │ │ ├── CHANGELOG.md │ │ ├── Readme.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── creators.ts │ │ │ ├── hyperscript.ts │ │ │ ├── index.ts │ │ │ └── tokens.ts │ │ ├── test/ │ │ │ ├── fixtures/ │ │ │ │ ├── cursor-across-element.tsx │ │ │ │ ├── cursor-across-elements-empty.tsx │ │ │ │ ├── cursor-across-elements-end.tsx │ │ │ │ ├── cursor-across-elements-middle.tsx │ │ │ │ ├── cursor-across-elements-start.tsx │ │ │ │ ├── cursor-element-empty.tsx │ │ │ │ ├── cursor-element-end.tsx │ │ │ │ ├── cursor-element-middle.tsx │ │ │ │ ├── cursor-element-nested-end.tsx │ │ │ │ ├── cursor-element-nested-middle.tsx │ │ │ │ ├── cursor-element-nested-start.tsx │ │ │ │ ├── cursor-element-start.tsx │ │ │ │ ├── cursor-text-empty.tsx │ │ │ │ ├── element-custom.tsx │ │ │ │ ├── element-empty.tsx │ │ │ │ ├── element-nested-empty.tsx │ │ │ │ ├── element-nested-string.tsx │ │ │ │ ├── element-string.tsx │ │ │ │ ├── element-text-empty.tsx │ │ │ │ ├── element-text-string.tsx │ │ │ │ ├── fragment-element.tsx │ │ │ │ ├── fragment-empty.tsx │ │ │ │ ├── fragment-string.tsx │ │ │ │ ├── selection-offset-start.tsx │ │ │ │ ├── selection.tsx │ │ │ │ ├── text-empty.tsx │ │ │ │ ├── text-full.tsx │ │ │ │ ├── text-nested.tsx │ │ │ │ └── value-empty.tsx │ │ │ ├── index.js │ │ │ └── jsx.d.ts │ │ └── tsconfig.json │ └── slate-react/ │ ├── CHANGELOG.md │ ├── Readme.md │ ├── package.json │ ├── src/ │ │ ├── @types/ │ │ │ └── direction.d.ts │ │ ├── chunking/ │ │ │ ├── children-helper.ts │ │ │ ├── chunk-tree-helper.ts │ │ │ ├── get-chunk-tree-for-node.ts │ │ │ ├── index.ts │ │ │ ├── reconcile-children.ts │ │ │ └── types.ts │ │ ├── components/ │ │ │ ├── chunk-tree.tsx │ │ │ ├── editable.tsx │ │ │ ├── element.tsx │ │ │ ├── leaf.tsx │ │ │ ├── restore-dom/ │ │ │ │ ├── restore-dom-manager.ts │ │ │ │ └── restore-dom.tsx │ │ │ ├── slate.tsx │ │ │ ├── string.tsx │ │ │ └── text.tsx │ │ ├── custom-types.ts │ │ ├── hooks/ │ │ │ ├── android-input-manager/ │ │ │ │ ├── android-input-manager.ts │ │ │ │ └── use-android-input-manager.ts │ │ │ ├── use-children.tsx │ │ │ ├── use-composing.ts │ │ │ ├── use-decorations.ts │ │ │ ├── use-editor.tsx │ │ │ ├── use-element.ts │ │ │ ├── use-focused.ts │ │ │ ├── use-generic-selector.tsx │ │ │ ├── use-is-mounted.tsx │ │ │ ├── use-isomorphic-layout-effect.ts │ │ │ ├── use-mutation-observer.ts │ │ │ ├── use-read-only.ts │ │ │ ├── use-selected.ts │ │ │ ├── use-slate-selection.tsx │ │ │ ├── use-slate-selector.tsx │ │ │ ├── use-slate-static.tsx │ │ │ ├── use-slate.tsx │ │ │ └── use-track-user-input.ts │ │ ├── index.ts │ │ ├── plugin/ │ │ │ ├── react-editor.ts │ │ │ └── with-react.ts │ │ └── utils/ │ │ └── environment.ts │ ├── test/ │ │ ├── chunking.spec.ts │ │ ├── decorations.spec.tsx │ │ ├── editable.spec.tsx │ │ ├── react-editor.spec.tsx │ │ ├── tsconfig.json │ │ ├── use-selected.spec.tsx │ │ ├── use-slate-selector.spec.tsx │ │ └── use-slate.spec.tsx │ └── tsconfig.json ├── playwright/ │ ├── docker/ │ │ ├── Dockerfile │ │ ├── docker-compose.yml │ │ ├── entrypoint.sh │ │ ├── playwright.config.docker.ts │ │ └── run-tests.sh │ ├── integration/ │ │ └── examples/ │ │ ├── check-lists.test.ts │ │ ├── code-highlighting.test.ts │ │ ├── editable-voids.test.ts │ │ ├── embeds.test.ts │ │ ├── forced-layout.test.ts │ │ ├── hovering-toolbar.test.ts │ │ ├── huge-document.test.ts │ │ ├── iframe.test.ts │ │ ├── images.test.ts │ │ ├── inlines.test.ts │ │ ├── markdown-preview.test.ts │ │ ├── markdown-shortcuts.test.ts │ │ ├── mentions.test.ts │ │ ├── paste-html.test.ts │ │ ├── placeholder.test.ts │ │ ├── plaintext.test.ts │ │ ├── read-only.test.ts │ │ ├── richtext.test.ts │ │ ├── search-highlighting.test.ts │ │ ├── select.test.ts │ │ ├── shadow-dom.test.ts │ │ ├── styling.test.ts │ │ └── tables.test.ts │ └── tsconfig.json ├── playwright.config.ts ├── site/ │ ├── components/ │ │ ├── ComponentLoader.tsx │ │ └── ExampleLayout.tsx │ ├── constants/ │ │ └── examples.ts │ ├── examples/ │ │ ├── Readme.md │ │ ├── js/ │ │ │ ├── android-tests.jsx │ │ │ ├── check-lists.jsx │ │ │ ├── code-highlighting.jsx │ │ │ ├── components/ │ │ │ │ └── index.jsx │ │ │ ├── custom-placeholder.jsx │ │ │ ├── editable-voids.jsx │ │ │ ├── embeds.jsx │ │ │ ├── forced-layout.jsx │ │ │ ├── hovering-toolbar.jsx │ │ │ ├── huge-document.jsx │ │ │ ├── iframe.jsx │ │ │ ├── images.jsx │ │ │ ├── inlines.jsx │ │ │ ├── markdown-preview.jsx │ │ │ ├── markdown-shortcuts.jsx │ │ │ ├── mentions.jsx │ │ │ ├── paste-html.jsx │ │ │ ├── plaintext.jsx │ │ │ ├── read-only.jsx │ │ │ ├── richtext.jsx │ │ │ ├── scroll-into-view.jsx │ │ │ ├── search-highlighting.jsx │ │ │ ├── shadow-dom.jsx │ │ │ ├── styling.jsx │ │ │ ├── tables.jsx │ │ │ └── utils/ │ │ │ ├── environment.js │ │ │ └── normalize-tokens.js │ │ └── ts/ │ │ ├── android-tests.tsx │ │ ├── check-lists.tsx │ │ ├── code-highlighting.tsx │ │ ├── components/ │ │ │ └── index.tsx │ │ ├── custom-placeholder.tsx │ │ ├── custom-types.d.ts │ │ ├── editable-voids.tsx │ │ ├── embeds.tsx │ │ ├── forced-layout.tsx │ │ ├── hovering-toolbar.tsx │ │ ├── huge-document.tsx │ │ ├── iframe.tsx │ │ ├── images.tsx │ │ ├── inlines.tsx │ │ ├── markdown-preview.tsx │ │ ├── markdown-shortcuts.tsx │ │ ├── mentions.tsx │ │ ├── paste-html.tsx │ │ ├── plaintext.tsx │ │ ├── read-only.tsx │ │ ├── richtext.tsx │ │ ├── scroll-into-view.tsx │ │ ├── search-highlighting.tsx │ │ ├── shadow-dom.tsx │ │ ├── styling.tsx │ │ ├── tables.tsx │ │ └── utils/ │ │ ├── environment.ts │ │ └── normalize-tokens.ts │ ├── next-env.d.ts │ ├── next.config.js │ ├── pages/ │ │ ├── _app.tsx │ │ ├── _document.tsx │ │ ├── api/ │ │ │ └── index.ts │ │ ├── examples/ │ │ │ ├── [example].tsx │ │ │ └── index.tsx │ │ └── index.tsx │ ├── public/ │ │ ├── CNAME │ │ └── index.css │ ├── tsconfig.example.json │ └── tsconfig.json ├── support/ │ └── fixtures.js └── tsconfig.json