Skip to content

Commit 3680963

Browse files
committed
incremental upgrade to React 18, TS 4.9, etc.
1 parent 0bdff51 commit 3680963

File tree

14 files changed

+1069
-993
lines changed

14 files changed

+1069
-993
lines changed

.yarn/releases/yarn-3.3.1.cjs

Lines changed: 0 additions & 823 deletions
This file was deleted.

.yarn/releases/yarn-3.6.4.cjs

Lines changed: 874 additions & 0 deletions
Large diffs are not rendered by default.

docs/libraries/slate-react/editable.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Editable component
22

3-
## `Editable(props: EditableProps): JSX.Element`
3+
## `Editable(props: EditableProps): ReactElement | null`
44

55
The `Editable` component is the main editing component. Note that it must be inside a `Slate` component.
66

@@ -16,9 +16,9 @@ type EditableProps = {
1616
readOnly?: boolean
1717
role?: string
1818
style?: React.CSSProperties
19-
renderElement?: (props: RenderElementProps) => JSX.Element
20-
renderLeaf?: (props: RenderLeafProps) => JSX.Element
21-
renderPlaceholder?: (props: RenderPlaceholderProps) => JSX.Element
19+
renderElement?: (props: RenderElementProps) => ReactElement | null
20+
renderLeaf?: (props: RenderLeafProps) => ReactElement | null
21+
renderPlaceholder?: (props: RenderPlaceholderProps) => ReactElement | null
2222
scrollSelectionIntoView?: (editor: ReactEditor, domRange: DOMRange) => void
2323
as?: React.ElementType
2424
disableDefaultStyles?: boolean
@@ -39,7 +39,7 @@ If this prop is omitted or set to false, the editor remains in the default "edit
3939
4040
This prop is particularly useful when you want to display text or rich media content without allowing users to edit it, such as when displaying published content or a preview of the user's input.
4141
42-
#### `renderElement?: (props: RenderElementProps) => JSX.Element`
42+
#### `renderElement?: (props: RenderElementProps) => ReactElement | null`
4343
4444
The `renderElement` prop is a function used to render a custom component for a specific type of Element node in the Slate.js document model.
4545
@@ -108,7 +108,7 @@ const DefaultElement = props => {
108108
}
109109
```
110110

111-
#### `renderLeaf?: (props: RenderLeafProps) => JSX.Element`
111+
#### `renderLeaf?: (props: RenderLeafProps) => ReactElement | null`
112112

113113
The `renderLeaf` prop allows you to customize the rendering of leaf nodes in the document tree of your Slate editor. A "leaf" in Slate is the smallest chunk of text and its associated formatting attributes.
114114

@@ -142,7 +142,7 @@ Example usage:
142142
/>
143143
```
144144

145-
#### `renderPlaceholder?: (props: RenderPlaceholderProps) => JSX.Element`
145+
#### `renderPlaceholder?: (props: RenderPlaceholderProps) => ReactElement | null`
146146

147147
The `renderPlaceholder` prop allows you to customize how the placeholder of the Slate.js `Editable` component is rendered when the editor is empty. The placeholder will only be shown when the editor's content is empty.
148148

docs/libraries/slate-react/slate.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Slate Component
22

3-
## `Slate(props: SlateProps): JSX.Element`
3+
## `Slate(props: SlateProps): ReactElement | null`
44

55
The `Slate` component must include somewhere in its `children` the `Editable` component.
66

package.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@
6161
"@types/mocha": "^5.2.7",
6262
"@types/node": "^16.11.26",
6363
"@types/prismjs": "^1.26.0",
64-
"@types/react": "^16.9.13",
65-
"@types/react-dom": "^16.9.4",
64+
"@types/react": "^16.14.49",
65+
"@types/react-dom": "^16.9.20",
6666
"@typescript-eslint/eslint-plugin": "^5.30.5",
6767
"@typescript-eslint/parser": "^5.30.5",
6868
"babel-eslint": "^10.0.3",
@@ -89,11 +89,11 @@
8989
"playwright": "^1.29.1",
9090
"prettier": "^1.19.1",
9191
"prismjs": "^1.29.0",
92-
"react": "^16.12.0",
93-
"react-dom": "^16.12.0",
94-
"react-error-boundary": "^1.2.5",
95-
"react-router-dom": "^5.1.2",
96-
"react-values": "^0.3.0",
92+
"react": "^18.2.0",
93+
"react-dom": "^18.2.0",
94+
"react-error-boundary": "^4.0.11",
95+
"react-router-dom": "^5.3.4",
96+
"react-values": "^0.3.3",
9797
"rimraf": "^3.0.2",
9898
"rollup": "^2.26.6",
9999
"rollup-plugin-babel": "^4.3.3",
@@ -113,7 +113,7 @@
113113
"slate-react": "workspace:*",
114114
"source-map-loader": "^4.0.0",
115115
"ts-jest": "^27.1.3",
116-
"typescript": "4.0.5"
116+
"typescript": "4.9.5"
117117
},
118118
"simple-git-hooks": {
119119
"pre-commit": "yarn lint-staged"
@@ -124,5 +124,5 @@
124124
"eslint --fix"
125125
]
126126
},
127-
"packageManager": "yarn@3.3.1"
127+
"packageManager": "yarn@3.6.4"
128128
}

packages/slate-react/package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@
2828
"@babel/runtime": "^7.7.4",
2929
"@types/jest": "^27.4.1",
3030
"@types/jsdom": "^16.2.14",
31-
"@types/react": "^16.9.13",
32-
"@types/react-dom": "^16.9.4",
33-
"@types/react-test-renderer": "^16.8.0",
31+
"@types/react": "^16.14.49",
32+
"@types/react-dom": "^16.9.20",
33+
"@types/react-test-renderer": "^16.9.8",
3434
"@types/resize-observer-browser": "^0.1.7",
35-
"react": ">=16.8.0",
36-
"react-dom": ">=16.8.0",
37-
"react-test-renderer": ">=16.8.0",
35+
"react": "^18.2.0",
36+
"react-dom": "^18.2.0",
37+
"react-test-renderer": "^18.2.0",
3838
"slate": "^0.94.0",
3939
"slate-hyperscript": "^0.81.3",
4040
"source-map-loader": "^4.0.0"

packages/slate-react/src/components/editable.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import getDirection from 'direction'
22
import debounce from 'lodash/debounce'
33
import throttle from 'lodash/throttle'
44
import React, {
5+
ReactElement,
56
useCallback,
67
useEffect,
78
useMemo,
@@ -115,9 +116,9 @@ export type EditableProps = {
115116
readOnly?: boolean
116117
role?: string
117118
style?: React.CSSProperties
118-
renderElement?: (props: RenderElementProps) => JSX.Element
119-
renderLeaf?: (props: RenderLeafProps) => JSX.Element
120-
renderPlaceholder?: (props: RenderPlaceholderProps) => JSX.Element
119+
renderElement?: (props: RenderElementProps) => ReactElement
120+
renderLeaf?: (props: RenderLeafProps) => ReactElement
121+
renderPlaceholder?: (props: RenderPlaceholderProps) => ReactElement
121122
scrollSelectionIntoView?: (editor: ReactEditor, domRange: DOMRange) => void
122123
as?: React.ElementType
123124
disableDefaultStyles?: boolean

packages/slate-react/src/components/element.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import getDirection from 'direction'
2-
import React, { useCallback } from 'react'
2+
import React, { ReactElement, useCallback } from 'react'
33
import { Editor, Element as SlateElement, Node, Range } from 'slate'
44
import { ReactEditor, useReadOnly, useSlateStatic } from '..'
55
import useChildren from '../hooks/use-children'
@@ -26,9 +26,9 @@ import Text from './text'
2626
const Element = (props: {
2727
decorations: Range[]
2828
element: SlateElement
29-
renderElement?: (props: RenderElementProps) => JSX.Element
30-
renderPlaceholder: (props: RenderPlaceholderProps) => JSX.Element
31-
renderLeaf?: (props: RenderLeafProps) => JSX.Element
29+
renderElement?: (props: RenderElementProps) => ReactElement
30+
renderPlaceholder: (props: RenderPlaceholderProps) => ReactElement
31+
renderLeaf?: (props: RenderLeafProps) => ReactElement
3232
selection: Range | null
3333
}) => {
3434
const {

packages/slate-react/src/custom-types.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,29 @@ declare module 'slate' {
1414
}
1515
}
1616
}
17+
18+
declare global {
19+
20+
interface Window {
21+
MSStream: boolean;
22+
}
23+
interface DocumentOrShadowRoot {
24+
getSelection(): Selection | null;
25+
}
26+
27+
interface CaretPosition {
28+
readonly offsetNode: Node;
29+
readonly offset: number;
30+
getClientRect(): DOMRect | null;
31+
}
32+
33+
interface Document {
34+
caretPositionFromPoint(x: number, y: number): CaretPosition | null;
35+
}
36+
37+
interface Node {
38+
getRootNode(options?: GetRootNodeOptions): Document | ShadowRoot;
39+
}
40+
}
41+
42+
export {};

packages/slate-react/src/hooks/use-slate-selector.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,11 @@ export function useSlateSelector<T>(
9090
// is re-rendered, the selectors are called again, and
9191
// will throw again, if neither props nor store state
9292
// changed
93-
latestSubscriptionCallbackError.current = err
93+
if (err instanceof Error) {
94+
latestSubscriptionCallbackError.current = err
95+
} else {
96+
latestSubscriptionCallbackError.current = new Error(String(err));
97+
}
9498
}
9599

96100
forceRender()

packages/slate-react/src/plugin/react-editor.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,7 @@ export const ReactEditor: ReactEditorInterface = {
450450
: target.parentElement) as HTMLElement
451451
} catch (err) {
452452
if (
453-
!err.message.includes('Permission denied to access property "nodeType"')
453+
(err instanceof Error) && !err.message.includes('Permission denied to access property "nodeType"')
454454
) {
455455
throw err
456456
}

site/components.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ export const Menu = React.forwardRef(
167167
)
168168
)
169169

170-
export const Portal = ({ children }) => {
170+
export const Portal = ({ children }: {children?: any}) => {
171171
return typeof document === 'object'
172172
? ReactDOM.createPortal(children, document.body)
173173
: null

site/tsconfig.json

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
{
22
"compilerOptions": {
33
"target": "es5",
4-
"lib": ["dom", "dom.iterable", "esnext"],
4+
"lib": [
5+
"dom",
6+
"dom.iterable",
7+
"esnext"
8+
],
59
"allowJs": true,
610
"skipLibCheck": true,
711
"strict": false,
@@ -13,8 +17,15 @@
1317
"moduleResolution": "node",
1418
"resolveJsonModule": true,
1519
"isolatedModules": true,
16-
"jsx": "preserve"
20+
"jsx": "preserve",
21+
"incremental": true
1722
},
18-
"exclude": ["node_modules"],
19-
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx"]
23+
"exclude": [
24+
"node_modules"
25+
],
26+
"include": [
27+
"next-env.d.ts",
28+
"**/*.ts",
29+
"**/*.tsx"
30+
]
2031
}

0 commit comments

Comments
 (0)