Added icons to callout render
Added **selection** of current block on *editor.path*
Deserializer for images in markdown
More video embed types (Loom & Wistia)
Added Email-Builder by @yoopta/email-builder
Email export: accordion component by
Feature/email builder resend integration
Feature: email video export and thumbnail
Add email export, implement export for paragraph and headings
Added supporting highlight colors when serialize/deserialize html
Fixed searching in Action Menu List
Fixed triggering Action Menu List by slash command
Fixed
catastrophic backtrackingfor regex url checking. Replaced it with validator-js
Reducing size of
@yoopta/exports``Fixed searching by shortcuts in Action Menu List
Fixed styles for depth when serialize/deserialize html
Fixed example with Medium toolbar
- Changed API for
editor.on('change', changeHandler);
// before
editor.on('change', (value: YooptaChildrenValue) => {
setValue(value);
});
// now
editor.on('change', (options: YooptaEventChangePayload) => {
const { value, operations } = options;
setValue(value);
});
// [!!!But I highly recommend start to use new `onChange` prop in <YooptaEditor value={value} onChange={newValue => setValue(newValue)} />;
Undo/redo now available!
- New Editor API methods for history:
editor.undo: ({ scroll?: boolean }?: UndoRedoOptions) => void
editor.redo: ({ scroll?: boolean }?: UndoRedoOptions) => void
editor.historyStack: Record
editor.withoutSavingHistory: (fn: () => void): void
editor.withSavingHistory: (fn: () => void): void
editor.isSavingHistory: (): boolean | undefined
editor.withoutMergingHistory: (fn: () => void): void
editor.withMergingHistory: (fn: () => void): void
editor.isMergingHistory: (): boolean | undefined
New powerful
editor.applyTransforms
method andoperations API.
Now, every time the content is changed, the corresponding operation is called, which passes through theeditor.applyTransforms
editor.path: YooptaPath
editor.setPath: (path: YooptaPath) => void;
Blocks.getBlock: (editor: YooEditor, options: GetBlockOptions) => YooptaBlockData
Blocks.getBlockSlate: (editor: YooEditor, options: GetBlockSlateOptions) => SlateEditor
Blocks.buildBlockData: (block?: BuildBlockDataOptions) => YooptaBlockData
Blocks.mergeBlock: () => void
export type YooptaPath = {
current: YooptaPathIndex, // current selected block
selected?: number[] | null, // array of selected blocks
};
editor.toggleBlock
-fixed toggling between complex block elementseditor.splitBlock
- fixed split between complex block elementsonChange
now does not fire during initializationeditor.duplicateBlock
- fixed for Code block- Fixed moving up/down cursor in list plugins
- Fixed trigger of "/" for
ActionMenu
- Editor API changes:
editor.applyChanges
- removededitor.selection
- removed (changed toeditor.path
)editor.setSelection
- removed (changed toeditor.setPath
)editor.setBlockSelected
- removed (changed toeditor.setPath
)editor.insertBlocks
- removededitor.deleteBlocks
- removededitor.createBlock
- removed. Useeditor.insertBlock
instead
- Added new example for
operations
API - Added new example for
undo/redo
- Updated UI for HTML exports
- Updated UI for Markdown exports