Open
Conversation
Vendor `slate@0.120.0`, `slate-dom@0.119.0`, and `slate-react@0.120.0` source from github.com/ianstormtaylor/slate (tag: slate@0.120.0). Pure copy of src/ directories — no modifications, no git history. packages/editor/src/slate/ — 118 files (slate core) packages/editor/src/slate-dom/ — 14 files (DOM integration) packages/editor/src/slate-react/ — 40 files (React bindings)
Rewire all bare 'slate', 'slate-dom', 'slate-react' imports to relative paths. Fix module augmentation (declare module '../slate/index' instead of 'slate'). Remove slate/slate-dom/slate-react npm dependencies, add their transitive deps (direction, is-hotkey, lodash, etc.). Fix 583 TypeScript errors from vendored source hitting PTE's strict tsconfig (@sanity/tsconfig strictest): Structural fixes: - Widen DOMEditor/ReactEditor params to Editor (resolves CustomTypes) - withDOM/withReact generic: <T extends BaseEditor> → <T extends Editor> - Remove vendored CustomTypes augmentation (PTE's types/slate.ts is source) - Convert enum to const object (erasableSyntaxOnly) - Cast create-editor.ts delegates through any (incremental object build) Mechanical fixes: - verbatimModuleSyntax: type-only re-exports (biome --fix) - erasableSyntaxOnly: angle bracket → as assertions, import aliases - noUncheckedIndexedAccess: non-null assertions on bounded array access - Unused variables prefixed with _ - override keyword on React lifecycle methods - JSX namespace imports for React 19 - React 19 ref types (RefObject<T | null>, useRef(undefined)) Lint fixes: - Rename String component to SlateString (no shadow global) - Block statements for single-line ifs - Explicit types for uninitialized let declarations - biome-ignore for Slate upstream patterns (hooks in conditionals, assignment in expressions, non-null after optional chain) All 317 unit tests pass. Zero type errors. Zero lint errors.
The vendored Slate source files are now raw TypeScript compiled alongside PTE, which means the React Compiler babel plugin transforms them. Slate's components use manual React.memo with custom equality functions that the React Compiler interferes with, causing incorrect re-render optimization (skipping renders that should happen). Exclude src/slate/, src/slate-dom/, and src/slate-react/ from @vitejs/plugin-react so the React Compiler doesn't process them. esbuild still handles JSX transformation for these files.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
d05b55e to
6b09f9f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.