11import { faker } from '@faker-js/faker'
2- import React , { useCallback , useEffect , useState } from 'react'
2+ import React , { StrictMode , useCallback , useEffect , useState } from 'react'
33import { createEditor as slateCreateEditor , Editor } from 'slate'
44import { Editable , Slate , withReact , useSelected } from 'slate-react'
55
@@ -41,6 +41,7 @@ const initialConfig = {
4141 'chunk'
4242 ) ,
4343 showSelectedHeadings : parseBoolean ( 'selected_headings' , false ) ,
44+ strictMode : parseBoolean ( 'strict' , false ) ,
4445}
4546const setSearchParams = config => {
4647 if ( searchParams ) {
@@ -54,6 +55,7 @@ const setSearchParams = config => {
5455 'selected_headings' ,
5556 config . showSelectedHeadings ? 'true' : 'false'
5657 )
58+ searchParams . set ( 'strict' , config . strictMode ? 'true' : 'false' )
5759 history . replaceState ( { } , '' , `?${ searchParams . toString ( ) } ` )
5860 }
5961}
@@ -129,6 +131,24 @@ const HugeDocumentExample = () => {
129131 ) ,
130132 [ config . contentVisibilityMode , config . chunkOutlines ]
131133 )
134+ const editable = rendering ? (
135+ < div > Rendering…</ div >
136+ ) : (
137+ < Slate key = { editorVersion } editor = { editor } initialValue = { initialValue } >
138+ < Editable
139+ placeholder = "Enter some text…"
140+ renderElement = { renderElement }
141+ renderChunk = { config . chunkDivs ? renderChunk : undefined }
142+ spellCheck
143+ autoFocus
144+ />
145+ </ Slate >
146+ )
147+ const editableWithStrictMode = config . strictMode ? (
148+ < StrictMode > { editable } </ StrictMode >
149+ ) : (
150+ editable
151+ )
132152 return (
133153 < >
134154 < PerformanceControls
@@ -137,19 +157,7 @@ const HugeDocumentExample = () => {
137157 setConfig = { setConfig }
138158 />
139159
140- { rendering ? (
141- < div > Rendering…</ div >
142- ) : (
143- < Slate key = { editorVersion } editor = { editor } initialValue = { initialValue } >
144- < Editable
145- placeholder = "Enter some text…"
146- renderElement = { renderElement }
147- renderChunk = { config . chunkDivs ? renderChunk : undefined }
148- spellCheck
149- autoFocus
150- />
151- </ Slate >
152- ) }
160+ { editableWithStrictMode }
153161 </ >
154162 )
155163}
@@ -394,6 +402,21 @@ const PerformanceControls = ({ editor, config, setConfig }) => {
394402 Call < code > useSelected</ code > in each heading
395403 </ label >
396404 </ p >
405+
406+ < p >
407+ < label >
408+ < input
409+ type = "checkbox"
410+ checked = { config . strictMode }
411+ onChange = { event =>
412+ setConfig ( {
413+ strictMode : event . target . checked ,
414+ } )
415+ }
416+ /> { ' ' }
417+ React strict mode (only works in localhost)
418+ </ label >
419+ </ p >
397420 </ details >
398421
399422 < details >
0 commit comments