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.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@udecode/[email protected]
Major Changes
createAlignPlugin
->AlignPlugin
setAlign
: removekey
option@udecode/[email protected]
Major Changes
createAutoformatPlugin
->AutoformatPlugin
@udecode/[email protected]
Major Changes
createBasicElementPlugins
->BasicElementsPlugin
createBlockquotePlugin
->BlockquotePlugin
createCodeBlockPlugin
->CodeBlockPlugin
createHeadingPlugin
->HeadingPlugin
@udecode/plate-core
@udecode/[email protected]
Major Changes
createBasicMarksPlugins
->BasicMarksPlugin
createBoldPlugin
->BoldPlugin
createCodePlugin
->CodePlugin
createItalicPlugin
->ItalicPlugin
createStrikethroughPlugin
->StrikethroughPlugin
createSubscriptPlugin
->SubscriptPlugin
createSuperscriptPlugin
->SuperscriptPlugin
createUnderlinePlugin
->UnderlinePlugin
hotkey
option. Useplugin.shortcuts
instead (see plate-core)@udecode/[email protected]
Major Changes
createBlockquotePlugin
->BlockquotePlugin
@udecode/[email protected]
Major Changes
createSoftBreakPlugin
->SoftBreakPlugin
createExitBreakPlugin
->ExitBreakPlugin
createSingleLinePlugin
->SingleLinePlugin
@udecode/[email protected]
Major Changes
createCaptionPlugin
->CaptionPlugin
CaptionPlugin
options:pluginKeys
toplugins
focusEndCaptionPath
tofocusEndPath
focusStartCaptionPath
tofocusStartPath
showCaptionId
tovisibleId
isShow
toisVisible
captionGlobalStore
toCaptionPlugin
@udecode/[email protected]
Major Changes
createCloudPlugin
->CloudPlugin
@udecode/[email protected]
Major Changes
createCodeBlockPlugin
->CodeBlockPlugin
CodeLinePlugin
CodeSyntaxPlugin
getCodeLineType
, useeditor.getType(CodeLinePlugin)
instead@udecode/[email protected]
Major Changes
@udecode/plate-combobox
and@udecode/plate-combobox/react
.@udecode/[email protected]
Major Changes
createCommentsPlugin
->CommentsPlugin
commentsStore
toCommentsPlugin
CommentsProvider
and its hooksuseCommentsStates
(replaced by direct option access)useCommentsSelectors
(replaced by option selectors)useCommentsActions
(replaced by api methods)useUpdateComment
withapi.comment.updateComment
useAddRawComment
withapi.comment.addRawComment
useAddComment
withapi.comment.addComment
useRemoveComment
withapi.comment.removeComment
useResetNewCommentValue
withapi.comment.resetNewCommentValue
useNewCommentText
withoptions.newText
useMyUser
withoptions.myUser
useUserById
withoptions.userById
useCommentById
withoptions.commentById
useActiveComment
withoptions.activeComment
useAddCommentMark
withinsert.comment
@udecode/[email protected]
Major Changes
@udecode/plate-common
and@udecode/plate-common/react
./react
exports@udecode/react-hotkeys
@udecode/[email protected]
Major Changes
#3420 by @zbeyens – Plugin System:
Decoupling React in all packages:
@udecode/plate-core
and@udecode/plate-core/react
SlatePlugin
as the foundation for all pluginsPlatePlugin
extendsSlatePlugin
with React-specific plugin featuresPlugin Creation:
createPluginFactory
createSlatePlugin
: vanillacreateTSlatePlugin
: vanilla explicitly typedcreatePlatePlugin
: ReactcreateTPlatePlugin
: React explicitly typedtoPlatePlugin
: extend a vanilla plugin into a React plugintoTPlatePlugin
: extend a vanilla plugin into a React plugin explicitly typedcreateNamePlugin()
toNamePlugin
Before:
After:
Plugin Configuration:
NamePlugin
option types, useNameConfig
instead.NameConfig
as the new naming convention for plugin configurations.Before:
After:
toggleParagraph
is now a shortcut foreditor.tf.toggle.block({ type: 'p' })
for the given keysshortcuts.toggleParagraph = null
Key
Plugin Properties:
Rename
SlatePlugin
/PlatePlugin
properties:type
->node.type
isElement
->node.isElement
isLeaf
->node.isLeaf
isInline
->node.isInline
isMarkableVoid
->node.isMarkableVoid
isVoid
->node.isVoid
component
->node.component
orrender.node
props
->node.props
overrideByKey
->override.plugins
renderAboveEditable
->render.aboveEditable
renderAboveSlate
->render.aboveSlate
renderAfterEditable
->render.afterEditable
renderBeforeEditable
->render.beforeEditable
inject.props
->inject.nodeProps
inject.props.validTypes
->inject.targetPlugins
inject.aboveComponent
->render.aboveNodes
inject.belowComponent
->render.belowNodes
inject.pluginsByKey
->inject.plugins
editor.insertData
->parser
parser.format
now supportsstring[]
parser.mimeTypes: string[]
deserializeHtml
->parsers.html.deserializer
deserializeHtml.getNode
->parsers.html.deserializer.parse
serializeHtml
->parsers.htmlReact.serializer
withOverride
->extendEditor
SlatePluginContext<C>
orPlatePluginContext<C>
, in addition to the method specific options. Some of the affected methods are:decorate
handlers
, includingonChange
. Returns({ event, ...ctx }) => void
instead of(editor, plugin) => (event) => void
handlers.onChange
:({ value, ...ctx }) => void
instead of(editor, plugin) => (value) => void
normalizeInitialValue
editor.insertData.preInsert
editor.insertData.transformData
editor.insertData.transformFragment
deserializeHtml.getNode
deserializeHtml.query
inject.props.query
inject.props.transformProps
useHooks
withOverrides
NEW
SlatePlugin
properties:api
: API methods provided by this plugindependencies
: An array of plugin keys that this plugin depends onnode
: Node-specific configuration for this pluginparsers
: Now acceptstring
keys to add custom parserspriority
: Plugin priority for registration and execution ordershortcuts
: Plugin-specific hotkeysinject.targetPluginToInject
: Function to inject plugin config into other plugins specified byinject.targetPlugins
Before:
After:
Plugin Shortcuts:
shortcuts
to add custom hotkeys to a plugin.hotkey
option from all pluginsBefore:
After:
Shortcuts API:
handler
is called with the editor, event, and event details.keys
is an array of keys to trigger the shortcut.priority
is the priority of the shortcut over other shortcuts....HotkeysOptions
from@udecode/react-hotkeys
Plugin Types:
SlatePlugin
,PlatePlugin
generics.P, V, E
->C extends AnyPluginConfig = PluginConfig
PluginOptions
PlatePluginKey
HotkeyPlugin
,ToggleMarkPlugin
in favor ofplugin.shortcuts
WithPlatePlugin
->EditorPlugin
,EditorPlatePlugin
PlatePluginComponent
->NodeComponent
InjectComponent*
->NodeWrapperComponent*
PlatePluginInsertData
->Parser
PlatePluginProps
->NodeProps
RenderAfterEditable
->EditableSiblingComponent
WithOverride
->ExtendEditor
SerializeHtml
->HtmlReactSerializer
Plugin Store:
plugin.optionsStore
andplugin.useOptionsStore
editor
has many methods to get, set and subscribe to plugin optionsPlugin Methods:
then
, useextend
insteadextend
method to deep merge a plugin configurationconfigure
method to configure the properties of existing plugins. The difference withextend
is thatconfigure
with not add new properties to the plugin, it will only modify existing ones.extendPlugin
method to extend a nested plugin configuration.configurePlugin
method to configure the properties of a nested plugin.extendApi
method to extend the plugin API. The API is then merged intoeditor.api[plugin.key]
.extendTransforms
method to extend the plugin transforms. The transforms is then merged intoeditor.transforms[plugin.key]
.extendEditorApi
method to extend the editor API. The API is then merged intoeditor.api
. Use this to add or override top-level methods to the editor.extendEditorTransforms
method to extend the editor transforms. The transforms is then merged intoeditor.transforms
.extendOptions
method to extend the plugin options with selectors. Useeditor.useOption(plugin, 'optionKey')
to subscribe to an (extended) option.withComponent
to replaceplugin.node.component
Plugin Context
Each plugin method now receive the plugin context created with
getEditorPlugin(editor, plugin)
as parameter:api
editor
getOption
getOptions
plugin
setOption
setOptions
tf
type
useOption
Core Plugins:
ParagraphPlugin
is now part ofcore
DebugPlugin
is now part ofcore
api.debug.log
,api.debug.info
,api.debug.warn
,api.debug.error
methodsoptions.isProduction
to control logging in production environmentsoptions.logLevel
to set the minimum log leveloptions.logger
to customize logging behavioroptions.throwErrors
to control error throwing behavior, by default aPlateError
will be thrown onapi.debug.error
editor.plugins
. Last plugin wins.createDeserializeHtmlPlugin
->HtmlPlugin
api.html.deserialize
createEventEditorPlugin
->EventEditorPlugin
eventEditorStore
->EventEditorStore
createDeserializeAstPlugin
->AstPlugin
createEditorProtocolPlugin
->SlateNextPlugin
editor.tf.toggle.block
editor.tf.toggle.mark
createNodeFactoryPlugin
, included inSlateNextPlugin
.createPrevSelectionPlugin
, included inSlateNextPlugin
.createHistoryPlugin
->HistoryPlugin
createInlineVoidPlugin
->InlineVoidPlugin
createInsertDataPlugin
->ParserPlugin
createLengthPlugin
->LengthPlugin
createReactPlugin
->ReactPlugin
Editor Creation:
NEW
withSlate
:rootPlugin
option for configuring the root pluginNEW
withPlate
:withSlate
with React-specific enhancementsuseOptions
anduseOption
methods to the editorNEW
createSlateEditor
:createPlateEditor
:Plugin replacement mechanism: using
plugins
, any plugin with the same key that a previous plugin will replace it. That means you can now override core plugins that way, likeReactPlugin
root
plugin is now created fromcreatePlateEditor
option as a quicker way to configure the editor than passingplugins
. Since plugins can have nested plugins (think as a recursive tree),plugins
option will be passed toroot
pluginplugins
option.Centralized editor resolution. Before, both
createPlateEditor
andPlate
component were resolving the editor. Now, onlycreatePlateEditor
takes care of that. That meansid
,value
, and other options are now controlled bycreatePlateEditor
.Remove
createPlugins
, pass plugins directly:components
->override.components
overrideByKey
->override.plugins
createPlateEditor
options:normalizeInitialValue
option toshouldNormalizeEditor
components
tooverride.components
to override components by keyoverrideByKey
tooverride.plugins
to override plugins by keydisableCorePlugins
, useoverride.enabled
insteadvalue
to set the initial value of the editor.autoSelect?: 'end' | 'start' | boolean
to auto select the start of end of the editor. This is decoupled fromautoFocus
.selection
to control the initial selection.override.enabled
to disable plugins by keyrootPlugin?: (plugin: AnyPlatePlugin) => AnyPlatePlugin
to configure the root plugin. From here, you can for example callconfigurePlugin
to configure any plugin.api
,decorate
,extendEditor
,handlers
,inject
,normalizeInitialValue
,options
,override
,priority
,render
,shortcuts
,transforms
,useHooks
. These options will be passed to the very firstrootPlugin
.NEW
usePlateEditor()
hook to create aPlateEditor
in a React component:createPlateEditor
anduseMemo
to avoid re-creating the editor on every render.id
option is always used as dependency.Editor Methods:
editor: PlateEditor
:redecorate
toeditor.api.redecorate
reset
toeditor.api.reset
plate.set
toeditor.setPlateState
blockFactory
toeditor.api.create.block
childrenFactory
toeditor.api.create.value
plugins
topluginList
pluginsByKey
toplugins
getApi()
to get the editor APIgetTransforms()
to get the editor transformsgetPlugin(editor, key)
, useeditor.getPlugin(plugin) or editor.getPlugin({ key })
getPluginType
, useeditor.getType(plugin)
to get node typegetPluginInjectProps(editor, key)
, useeditor.getPlugin(plugin).inject.props
getOptionsStore()
to get a plugin options storegetPluginOptions
, usegetOptions()
getOption()
to get a plugin optionsetOption()
to set a plugin optionsetOptions()
to set multiple plugin options. Pass a function to use Immer. Pass an object to merge the options.useOption
to subscribe to a plugin option in a React componentuseOptions
to subscribe to a plugin options store in a React componentgetPlugins
, useeditor.pluginList
getPluginsByKey
, useeditor.plugins
mapInjectPropsToPlugin
Editor Types:
The new generic types are:
V extends Value = Value
,P extends AnyPluginConfig = PlateCorePlugin
key
options
api
transforms
createTPlateEditor
for explicit typing.Plate Component
PlateProps
:editor
is now required. Ifnull
,Plate
will not render anything. As before,Plate
remounts onid
change.id
,plugins
,maxLength
, pass these tocreatePlateEditor
insteadinitialValue
,value
, passvalue
tocreatePlateEditor
insteadeditorRef
disableCorePlugins
, overrideplugins
increatePlateEditor
insteadUtils:
useReplaceEditor
sinceeditor
is now always controlleduseEditorPlugin
to get the editor and the plugin context.Types:
PlateRenderElementProps
,PlateRenderLeafProps
generics:V, N
->N, C
Plate Store:
plugins
andrawPlugins
, useuseEditorRef().plugins
instead, or listen to plugin changes witheditor.useOption(plugin, <optionKey>)
value
, useuseEditorValue()
insteadeditorRef
, useuseEditorRef()
insteadMiscellaneous Changes
slate >=0.103.0
peer dependencyslate-react >=0.108.0
peer dependency@udecode/react-hotkeys
ELEMENT_
,MARK_
andKEY_
constants. UseNamePlugin.key
instead.ELEMENT_DEFAULT
withParagraphPlugin.key
.getTEditor
withTReact
towithPlateReact
withTHistory
towithPlateHistory
usePlateId
touseEditorId
usePlateSelectors().id()
,usePlateSelectors().value()
,usePlateSelectors().plugins()
, use insteaduseEditorRef().<key>
toggleNodeType
totoggleBlock
toggleBlock
options:activeType
totype
inactiveType
todefaultType
react-hotkeys-hook
re-exports. Use@udecode/react-hotkeys
instead.Types:
TEditableProps
,TRenderElementProps
to@udecode/slate-react
<V extends Value>
generic in all functions where not usedPlatePluginKey
OverrideByKey
PlateId
@udecode/[email protected]
Major Changes
createDeserializeCsvPlugin
->CsvPlugin
@udecode/[email protected]
Major Changes
createCursorPlugin
->CursorPlugin
@udecode/[email protected]
Major Changes
createDatePlugin
->DatePlugin
@udecode/[email protected]
Major Changes
createDiffPlugin
->DiffPlugin
@udecode/[email protected]
Major Changes
createDndPlugin
->DndPlugin
editor.isDragging
, useeditor.getOptions(DndPlugin).isDragging
insteaddndStore
toDndPlugin
@udecode/[email protected]
Major Changes
createDeserializeDocxPlugin
->DocxPlugin
@udecode/[email protected]
Major Changes
createEmojiPlugin
->EmojiPlugin
EmojiInputPlugin
@udecode/[email protected]
Major Changes
createExcalidrawPlugin
->ExcalidrawPlugin
insertExcalidraw
removekey
option@udecode/[email protected]
Major Changes
createFindReplacePlugin
->FindReplacePlugin
@udecode/[email protected]
Major Changes
@udecode/[email protected]
Major Changes
createFontBackgroundColorPlugin
->FontBackgroundColorPlugin
createFontColorPlugin
->FontColorPlugin
createFontSizePlugin
->FontSizePlugin
createFontFamilyPlugin
->FontFamilyPlugin
createFontWeightPlugin
->FontWeightPlugin
@udecode/[email protected]
Major Changes
createHeadingPlugin
->HeadingPlugin
ELEMENT_H1
withHEADING_KEYS.H1
KEYS_HEADING
withHEADING_LEVELS
@udecode/[email protected]
Major Changes
createHighlightPlugin
->HighlightPlugin
@udecode/[email protected]
Major Changes
createHorizontalRulePlugin
->HorizontalRulePlugin
@udecode/[email protected]
Major Changes
createDeserializeHtmlPlugin
->HtmlPlugin
deserializeHtml
plugin tohtml
deserializeHtml.getNode
toparse
@udecode/[email protected]
Major Changes
createIndentPlugin
->IndentPlugin
@udecode/[email protected]
Major Changes
createIndentListPlugin
->IndentListPlugin
injectIndentListComponent
torenderIndentListBelowNodes
normalizeIndentList
withwithNormalizeIndentList
deleteBackwardIndentList
withwithDeleteBackwardIndentList
insertBreakIndentList
withwithInsertBreakIndentList
LiFC
(usePlateRenderElementProps
),MarkerFC
(useOmit<PlateRenderElementProps, 'children'>
)@udecode/[email protected]
Major Changes
createJuicePlugin
->JuicePlugin
@udecode/[email protected]
Major Changes
createKbdPlugin
->KbdPlugin
@udecode/[email protected]
Major Changes
createColumnPlugin
->ColumnPlugin
ColumnItemPlugin
@udecode/[email protected]
Major Changes
createLineHeightPlugin
->LineHeightPlugin
@udecode/[email protected]
Major Changes
createLinkPlugin
->LinkPlugin
floatingLinkStore
toLinkPlugin
@udecode/[email protected]
Major Changes
createListPlugin
->ListPlugin
BulletedListPlugin
NumberedListPlugin
ListItemPlugin
ListItemContentPlugin
toggle.list
,toggle.bulletedList
,toggle.numberedList
getListItemType
,getUnorderedListType
,getOrderedListType
,getListItemContentType
insertBreakList(editor)
withwithInsertBreakList(ctx)
insertFragmentList(editor)
withwithInsertFragmentList(ctx)
insertBreakTodoList(editor)
withwithInsertBreakTodoList(ctx)
deleteForwardList(editor)
withwithdeleteForwardList(ctx)
deleteBackwardList(editor)
withwithdeleteBackwardList(ctx)
ul
andol
tolist
plugintoggleList
options are now{ type: string }
@udecode/[email protected]
Major Changes
createDeserializeMdPlugin
->MarkdownPlugin
@udecode/[email protected]
Major Changes
createMathPlugin
->MathPlugin
@udecode/[email protected]
Major Changes
createMediaPlugin
->MediaPlugin
FloatingMediaUrlInput
,submitFloatingMedia
rename optionpluginKey
->plugin
insertMediaEmbed
removekey
option@udecode/[email protected]
Major Changes
createMentionPlugin
->MentionPlugin
MentionInputPlugin
createMentionNode
option, overrideapi.insert.mention
instead@udecode/[email protected]
Major Changes
createNodeIdPlugin
->NodeIdPlugin
@udecode/[email protected]
Major Changes
createNormalizersPlugin
->NormalizersPlugin
@udecode/[email protected]
Major Changes
@udecode/plate-layout
/react
exports@udecode/react-hotkeys
@udecode/plate
and@udecode/plate/react
.@udecode/plate-paragraph
@udecode/[email protected]
Major Changes
onKeyDownToggleElement
, use shortcuts instead.onKeyDownToggleMark
, use shortcuts instead.@udecode/[email protected]
Major Changes
@udecode/[email protected]
Major Changes
createResetNodePlugin
->ResetNodePlugin
@udecode/[email protected]
Major Changes
@udecode/[email protected]
Major Changes
createSelectOnBackspacePlugin
->SelectOnBackspacePlugin
createDeletePlugin
->DeletePlugin
@udecode/[email protected]
Major Changes
createSelectionPlugin
toBlockSelectionPlugin
isNodeBlockSelected
,isBlockSelected
,hasBlockSelected
,useBlockSelected
functionseditor.getOptions(BlockSelectionPlugin)
oreditor.useOptions(BlockSelectionPlugin)
insteadaddSelectedRow
functioneditor.api.blockSelection.addSelectedRow
insteadwithSelection
HOConCloseBlockSelection
toonChangeBlockSelection
blockSelectionStore
toBlockSelectionPlugin
blockContextMenuStore
toBlockContextMenuPlugin
BlockStartArea
andBlockSelectionArea
componentsareaOptions
inBlockSelectionPlugin
for configuration instead@viselect/vanilla
packageBlockContextMenuPlugin
, which is now used byBlockSelectionPlugin
@udecode/[email protected]
Major Changes
createSlashPlugin
->SlashPlugin
SlashInputPlugin
@udecode/[email protected]
Major Changes
#3420 by @zbeyens –
createTEditor
:slate-react
andslate-history
increateTEditor
noop
function to provide default implementations for unimplemented editor methodsTypes:
ReactEditor
andHistoryEditor
interfaces intoTEditor
, removingTReactEditor
andTHistoryEditor
Value
generic type parameter from function signatures and type definitionsV extends Value
withE extends TEditor
for improved type inferenceTEditor<V>
toTEditor
in many placesE extends TEditor
in all cases:EElement<V>
toElementOf<E>
EText<V>
toTextOf<E>
ENode<V>
toNodeOf<E>
EDescendant<V>
toDescendantOf<E>
EAncestor<V>
toAncestorOf<E>
EElementOrText<V>
toElementOrTextOf<E>
TNodeEntry
related types:ENodeEntry<V>
toNodeEntryOf<E>
EElementEntry<V>
toElementEntryOf<E>
ETextEntry<V>
toTextEntryOf<E>
EAncestorEntry<V>
toAncestorEntryOf<E>
EDescendantEntry<V>
toDescendantEntryOf<E>
EElementEntry<V>
ETextEntry<V>
EDescendantEntry<V>
@udecode/[email protected]
Major Changes
#3420 by @zbeyens – Types:
TReactEditor
type, as it's now integrated into the mainTEditor
type in@udecode/slate
. UseTEditor
instead.V extends Value
withE extends TEditor
for improved type inferenceTEditableProps
,TRenderElementProps
@udecode/[email protected]
Major Changes
#3420 by @zbeyens – Types:
V extends Value
withE extends TEditor
for improved type inference@udecode/[email protected]
Major Changes
createSuggestionPlugin
->SuggestionPlugin
suggestionStore
toSuggestionPlugin
SuggestionProvider
and its hooksuseSuggestionStates
(replaced by direct option access)useSuggestionSelectors
(replaced by option selectors)useSuggestionActions
(replaced by api methods)useUpdateSuggestion
withapi.suggestion.updateSuggestion
useAddSuggestion
withapi.suggestion.addSuggestion
useRemoveSuggestion
withapi.suggestion.removeSuggestion
useSuggestionById
withoptions.suggestionById
useSuggestionUserById
withoptions.suggestionUserById
useCurrentSuggestionUser
withoptions.currentSuggestionUser
editor.activeSuggestionId
, use plugin optionuseSetIsSuggesting
, useeditor.setOption
useSetActiveSuggestionId
, useeditor.setOption
editor.isSuggesting
, use plugin optionSuggestionEditorProps
type@udecode/[email protected]
Major Changes
createTabbablePlugin
->TabbablePlugin
TabbablePlugin
optionisTabbable
: remove firsteditor
parameter@udecode/[email protected]
Major Changes
createTablePlugin
->TablePlugin
TableRowPlugin
,TableCellPlugin
,TableCellHeaderPlugin
insertTableColumn
witheditor.insert.tableColumn
insertTableRow
witheditor.insert.tableRow
cellFactory
option tocreate.cell
apigetCellChildren
option totable.getCellChildren
api@udecode/[email protected]
Major Changes
createTogglePlugin
->TogglePlugin
toggleControllerStore
toTogglePlugin
setOpenIds
optionisToggleOpen
with optionisOpen
injectToggle
torenderToggleAboveNodes
@udecode/[email protected]
Major Changes
createTrailingBlockPlugin
->TrailingBlockPlugin
@udecode/[email protected]
Major Changes
createYjsPlugin
->YjsPlugin
yjsStore
toYjsPlugin
editor.yjs.provider
tooptions.provider
RenderAboveEditableYjs
toYjsAboveEditable
@udecode/[email protected]
Minor Changes
react-hotkeys-hook
@udecode/[email protected]
Minor Changes
#3420 by @zbeyens –
bindFirst
Types:
OmitFirst
,PartialExcept
@udecode/[email protected]
Patch Changes
@udecode/[email protected]
@udecode/[email protected]
@udecode/[email protected]