mirror of
https://github.com/ianstormtaylor/slate.git
synced 2025-08-29 09:59:48 +02:00
Custom TypeScript Types (#3835)
This PR adds better TypeScript types into Slate and is based on the proposal here: https://github.com/ianstormtaylor/slate/issues/3725
* Extend Slate's types like Element and Text
* Supports type discrimination (ie. if an element has type === "table" then we get a reduced set of properties)
* added custom types
* files
* more extensions
* files
* changed fixtures
* changes eslint file
* changed element.children to descendant
* updated types
* more type changes
* changed a lot of typing, still getting building errors
* extended text type in slate-react
* removed type assertions
* Clean up of custom types and a couple uneeded comments.
* Rename headingElement-true.tsx.tsx to headingElement-true.tsx
* moved basetext and baselement
* Update packages/slate/src/interfaces/text.ts
Co-authored-by: Brent Farese <25846953+BrentFarese@users.noreply.github.com>
* Fix some type issues with core functions.
* Clean up text and element files.
* Convert other types to extended types.
* Change the type of editor.marks to the appropriate type.
* Add version 100.0.0 to package.json
* Revert "Add version 100.0.0 to package.json"
This reverts commit 329e44e43d
.
* added custom types
* files
* more extensions
* files
* changed fixtures
* changes eslint file
* changed element.children to descendant
* updated types
* more type changes
* changed a lot of typing, still getting building errors
* extended text type in slate-react
* removed type assertions
* Clean up of custom types and a couple uneeded comments.
* Rename headingElement-true.tsx.tsx to headingElement-true.tsx
* moved basetext and baselement
* Update packages/slate/src/interfaces/text.ts
Co-authored-by: Brent Farese <25846953+BrentFarese@users.noreply.github.com>
* Fix some type issues with core functions.
* Clean up text and element files.
* Convert other types to extended types.
* Change the type of editor.marks to the appropriate type.
* Run linter.
* Remove key:string uknown from the base types.
* Clean up types after removing key:string unknown.
* Lint and prettier fixes.
* Implement custom-types
Co-authored-by: mdmjg <mdj308@nyu.edu>
* added custom types to examples
* reset yarn lock
* added ts to fixtures
* examples custom types
* Working fix
* ts-thesunny-try
* Extract interface types.
* Fix minor return type in create-editor.
* Fix the typing issue with Location having compile time CustomTypes
* Extract types for Transforms.
* Update README.
* Fix dependency on slate-history in slate-react
Co-authored-by: mdmjg <mdj308@nyu.edu>
Co-authored-by: Brent Farese <brentfarese@gmail.com>
Co-authored-by: Brent Farese <25846953+BrentFarese@users.noreply.github.com>
Co-authored-by: Tim Buckley <timothypbuckley@gmail.com>
This commit is contained in:
@@ -16,10 +16,9 @@ _Note, if you'd rather use a pre-bundled version of Slate, you can `yarn add sla
|
||||
|
||||
Once you've installed Slate, you'll need to import it.
|
||||
|
||||
|
||||
```jsx
|
||||
// Import React dependencies.
|
||||
import React, { useEffect, useMemo, useState } from "react";
|
||||
import React, { useEffect, useMemo, useState } from 'react'
|
||||
// Import the Slate editor factory.
|
||||
import { createEditor } from 'slate'
|
||||
|
||||
@@ -70,7 +69,11 @@ const App = () => {
|
||||
const [value, setValue] = useState([])
|
||||
// Render the Slate context.
|
||||
return (
|
||||
<Slate editor={editor} value={value} onChange={newValue => setValue(newValue)} />
|
||||
<Slate
|
||||
editor={editor}
|
||||
value={value}
|
||||
onChange={newValue => setValue(newValue)}
|
||||
/>
|
||||
)
|
||||
}
|
||||
```
|
||||
@@ -89,7 +92,11 @@ const App = () => {
|
||||
const [value, setValue] = useState([])
|
||||
return (
|
||||
// Add the editable component inside the context.
|
||||
<Slate editor={editor} value={value} onChange={newValue => setValue(newValue)}>
|
||||
<Slate
|
||||
editor={editor}
|
||||
value={value}
|
||||
onChange={newValue => setValue(newValue)}
|
||||
>
|
||||
<Editable />
|
||||
</Slate>
|
||||
)
|
||||
@@ -114,7 +121,11 @@ const App = () => {
|
||||
])
|
||||
|
||||
return (
|
||||
<Slate editor={editor} value={value} onChange={newValue => setValue(newValue)}>
|
||||
<Slate
|
||||
editor={editor}
|
||||
value={value}
|
||||
onChange={newValue => setValue(newValue)}
|
||||
>
|
||||
<Editable />
|
||||
</Slate>
|
||||
)
|
||||
|
@@ -75,7 +75,7 @@ const App = () => {
|
||||
// Prevent the ampersand character from being inserted.
|
||||
event.preventDefault()
|
||||
// Execute the `insertText` method when the event occurs.
|
||||
editor.insertText("and")
|
||||
editor.insertText('and')
|
||||
}
|
||||
}}
|
||||
/>
|
||||
|
@@ -22,7 +22,7 @@ const App = () => {
|
||||
onKeyDown={event => {
|
||||
if (event.key === '&') {
|
||||
event.preventDefault()
|
||||
editor.insertText("and")
|
||||
editor.insertText('and')
|
||||
}
|
||||
}}
|
||||
/>
|
||||
@@ -93,7 +93,7 @@ const App = () => {
|
||||
onKeyDown={event => {
|
||||
if (event.key === '&') {
|
||||
event.preventDefault()
|
||||
editor.insertText("and")
|
||||
editor.insertText('and')
|
||||
}
|
||||
}}
|
||||
/>
|
||||
|
Reference in New Issue
Block a user