– Fix
– Fix the display of ‘Convert To’ near blocks that do not have the ‘conversionConfig.export’ rule specified
– Fix
– The Plus button does not appear when the editor is loaded in an iframe in Chrome
Fix
- Prevent inline toolbar from closing in nested instance of editor
– Fix
– Fix exported types
Fix
- Tool's exporting types added
Fix
– I18n in nested popover
Fix
– The onChange callback won't be fired when editor is initialized in the Read-Only modeFix
– Convert To supports i18n againFix
– Prevent form submit on inline tool click
Fix
– Remove fake selection after multiple "convert to" inline tool toggles
New
– Block Tunes now supports nesting itemsNew
– Block Tunes now supports separator itemsNew
– Menu Config – New item type – HTML –New
– Menu Config – Default and HTML items now support hintsNew
– Inline Toolbar has new look 💅New
– Inline Tool'srender()
now supports Menu Config formatNew
– ToolsAPI – All installed block tools now accessible via ToolsAPIgetBlockTools()
methodNew
– SelectionAPI – Exposed methodssave()
andrestore()
that allow to save selection to be able to temporally move focus away, methodssetFakeBackground()
andremoveFakeBackground()
that allow to immitate selection while focus moved awayNew
– BlocksAPI – ExposedgetBlockByElement()
method that helps find block by any child html elementNew
– "Convert to" control is now also available in Block TunesNew
— Editor.js now supports contenteditable placeholders out of the box. Just adddata-placeholder
ordata-placeholder-active
attribute to make it work. The first one will work like native placeholder while the second one will show placeholder only when block is current.Improvement
— Now Paragraph placeholder will be shown for the current paragraph, not only the first one.Improvment
- The APIblocks.update
now acceptstunes
data as optional third argument and makesdata
- block data as optional.Improvement
— The ability to merge blocks of different types (if both tools provide the conversionConfig)Improvement
- The APIblocks.convert()
now returns the new block APIImprovement
- The APIcaret.setToBlock()
now can accept either BlockAPI or block index or block idImpovement
– MenuConfig –TunesMenuConfig
type is deprecated, use theMenuConfig
instead –Improvement
— Types —BlockToolConstructorOptions
type improved,block
andconfig
are not optional anymoreImprovement
- The Plus button and Block Tunes toggler are now better aligned with large line-height blocks, such as HeadingsImprovement
— Creating links on Android devices: now the mobile keyboard will have an "Enter" key for accepting the inserted link.Improvement
— Placeholders will stay visible on inputs focus. –Refactoring
– Switched to Vite as Cypress bundlerFix
—onChange
will be called when removing the entire text within a descendant element of a block.Fix
- Unexpected new line on Enter press with selected block without caretFix
- Search input autofocus loosing after Block Tunes openingFix
- Block removing while Enter press on Block TunesFix
– Unwanted scroll on first typing on iOS devicesFix
- Unwanted soft line break on Enter press after period and space (". |") on iOS devicesFix
- Caret lost after block conversion on mobile devices.Fix
- Caret lost after Backspace at the start of block when previoius block is not convertable –Fix
— Deleting whitespaces at the start/end of the blockFix
— The problem caused by missed "import type" in block mutation event types resolved
Fix
— Toolbox wont be shown when Slash pressed with along with Shift or AltFix
— Toolbox will be opened when Slash pressed in non-US keyboard layout where there is no physical '/' key.
New
— Editor Config now has thestyle.nonce
attribute that could be used to allowlist editor style tag for Content Security Policy "style-src"New
— Toolbox now will be opened by '/' in empty Block instead of TabNew
— Block Tunes now will be opened by 'CMD+/' instead of Tab in non-empty blockNew
— Tab now will navigate through Blocks. In last block Tab will navigate to the next input on page.Fix
— Passing an empty array via initial data orblocks.render()
won't break the editorFix
— Layout did not shrink when a large document cleared in ChromeFix
— Multiple Tooltip elements creation fixedFix
— When the focusing Block is out of the viewport, the page will be scrolled.Fix
- Compiler error "This import is never used as a value and must use 'import type'..." fixedFix
—blocks.render()
won't lead theonChange
call in SafariFix
— Editor wrapper element growing on the Inline Toolbar closeFix
— Fix errors thrown by clicks on a document when the editor is being initializedFix
— Caret losing on Mobile Devices when adding a block via Toolbox or via Backspace at the beginning of a BlockImprovement
— Now you can set focus via arrows/Tab to "contentless" (decorative) blocks like Delimiter which have no inputs.Improvement
— Inline Toolbar sometimes opened in an incorrect position. Now it will be aligned by the left side of the selected text. And won't overflow the right side of the text column.Improvement
- Now thedata-mutation-free
supports deep nesting, so you can mark some element with it to prevent the onChange call caused by child element mutatingImprovement
- Now thedata-mutation-free
also allows to skip "characterData" mutations (eg. text content change)Refactoring
—ce-block--focused
class toggling removed as unused.
Fix
— Get rid of redundant logs from the build
Fix
— Some Block were be skipped on saving after pasting them as HTML
New
- Block ids now displayed in DOM via a data-id attribute. Could be useful for plugins that want to access a Block's element by id.New
- Theblocks.convert(blockId, newType)
API method was added. It allows to convert existing Block to a Block of another type.New
- Theblocks.insertMany()
API method added. It allows to insert several Blocks to the specified index.Improvement
- The Delete keydown at the end of the Block will now work opposite a Backspace at the start. Next Block will be removed (if empty) or merged with the current one.Improvement
- The Delete keydown will work like a Backspace when several Blocks are selected.Improvement
- If we have two empty Blocks, and press Backspace at the start of the second one, the previous will be removed instead of the current.Improvement
- Tools shortcuts could be used to convert one Block to another.Improvement
- Tools shortcuts displayed in the Conversion ToolbarImprovement
- Initialization Loader has been removed.Improvement
- Selection style won't override your custom style for::selection
outside the editor.Improvement
- Performance optimizations: initialization speed increased,blocks.render()
API method optimized. Big documents will be displayed faster.Improvement
- "Editor saving" log removedImprovement
- "I'm ready" log removedImprovement
- The stub-block style is simplified.Improvement
- If some Block's tool throws an error during construction, we will show Stub block instead of skipping it during renderImprovement
- Call ofblocks.clear()
now will trigger onChange with "block-removed" event for all removed blocks.Improvement
- Theblocks.clear()
now can be awaited.Improvement
-BlockMutationType
andBlockMutationEvent
types exportedImprovement
-blocks.update(id, data)
now can accept partial data object — it will update only passed properties, others will remain the same.Improvement
-blocks.update(id, data)
now will trigger onChange with onlyblock-change
event.Improvement
-blocks.update(id, data)
will return a promise with BlockAPI object of the changed block.
Fix
-onChange
won't be called when element with data-mutation-free changes some attribute
Fix
-onChange
will be called on removing the whole text in a block
New
— Toolbar API — Added a new method for toggling the toolbox.New
— Added types for block mutation eventsNew
— Batching added to theonChange
callback. Now the second argument can contain an array of CustomEvents as well as a single one. Multiple changes made in a short period of time will be batched under a singleonChange
call.Improvement
— Toolbox — Number ofclose()
method calls optimized.Improvement
— TheonChange
callback can be muted if all mutations contain nodes with thedata-mutation-free
attribute.Improvement
— Pressing "Enter" at the end of a Block won't lead to redundantblock-changed
event triggering. Onlyblock-added
event will be dispatched.Improvement
— The block mutation handler is now called on every block change (including background changes), instead of only when a block is focusedImprovement
— Number of caret saving method calls optimized for Block Tunes opening/closing.Improvement
— Package size reduced by removing redundant files.Refactoring
— Switched from Webpack to Vite as the build system.Refactoring
— Dependencies — Upgraded Cypress to v12 and related libraries to the latest versions.Refactoring
— Dependencies — Upgraded TypeScript to v5.Refactoring
—EventDispatcher
types improved. Now we can passEventsMap
via generic to specify a map of event names and their payloads that can be used in a particular EventDispatcher instance.Refactoring
— All events in common editor Event Bus now have own type declarations.Refactoring
— Removed the block mutation observer from blocks and attached a single observer to the editor's blocks wrapper element.Refactoring
— Removed the debounce from the block mutation handler and used batching instead.Refactoring
— Refactored the popover class for better performance and maintenance.Fix
— TheonChange
callback won't trigger when block tunes are opened or closed.Fix
— Resolved a compiler error caused by importing theBlockToolData
type.Fix
— Resolved a problem where the document would scroll to the beginning after moving a block above the viewport.Fix
- Fixed several bugs caused by browser extensions — Removed the search for a block's container in the DOM on saving and kept it in memory instead, updating it when the tool changes a container element.Fix
— ToolsAPI —pasteConfig
getter withfalse
value could be used to disable paste handling by Editor.js core. Could be useful if your tool has its own paste handler.CI
— Ubuntu container is now used for Edge tests runner.CI
— Node 16 is used for GitHib Actions.
Fix
— Types — Remove unnecessary import that creates a dependency on thecypress
.
Improvement
— Menu Config — Propertylabel
renamed totitle
.
Fix
— Paste Module — fix for a problem with specifying ofpasteConfig().tags
in upper case #2208.
Fix
— Menu Config — Installed tunes are rendered above default tunes again.
Improvement
— Menu Config — Now it becomes possible to create toggle groups.
New
— UI — Block Tunes became vertical just like the Toolbox 🤩New
— Block Tunes API — Nowrender()
method of a Block Tune can return config with just icon, label and callback instead of custom HTML. This improvement is a key to the new straightforward way of configuring tune's appearance in Block Tunes menu.New
— Tools API — As well asrender()
inTunes API
, Tool'srenderSettings()
now also supports new configuration format.New
— UI — Meet the new icons from CodeX Icons pack 🛍 💝New
— BlocksAPI — theblocks.insert()
method now also have the optionalid
param. If passed, this id will be used instead of the generated one.Deprecated
— Styles API — CSS classes.cdx-settings-button
and.cdx-settings-button--active
are not recommended to use. Consider configuring your block settings with new JSON API instead.Fix
— Wrong element not highlighted anymore when popover opened.Fix
— When Tunes Menu open keydown events can not be handled inside plugins.Fix
— If a Tool specifies some tags to substitute on paste, all attributes of that tags will be removed before passing them to the tool. Possible XSS vulnerability fixed.Fix
— Pasting from Microsoft Word to Chrome (Mac OS) fixed. Now if there are no image-tools connected, regular text content will be pasted.Fix
— Workaround for the HTMLJanitor bug with Tables (guardian/html-janitor#3) addedFix
— Toolbox shortcuts appearance and execution fixed #2112Fix
— Inline Tools click handling on mobile devices improvedImprovement
— Tools API —pasteConfig().tags
now support sanitizing configuration. It allows you to leave some explicitly specified attributes for pasted content.Improvement
— CodeStyle — CodeX ESLint Config has bee updated. All ESLint/Spelling issues resolvedImprovement
— ToolsAPI — Theicon
property of thetoolbox
getter became optional.
New
— Tools API — Introducing new feature — toolbox now can have multiple entries for one tool!
Due to that API changes: tool'stoolbox
getter now can return either a single config item or an array of config itemsNew
— Blocks API —composeBlockData()
method was added.
Fix
— Keyboard selection by word #2045
Fix
— Issue with toolbox preventing text selection fixed
Fix
— Scrolling issue when opening toolbox on mobile fixedFix
— Typo in toolbox empty placeholder fixedFix
— The issue with scroll jumping on block hovering have fixed 2036Improvement
— Dev Example Page - Add popup example pageImprovement
— UI - The Toolbox will restore the internal scroll on every opening
— Fix
— The I18n of Tools` titles at the Toolbox now works correctly #2030
New
— UI — The Toolbox became vertical 🥳Improvement
— UI — the Plus button will always be shown (previously, it appears only for empty blocks)Improvement
— Dev Example Page - Server added to allow opening example page on other devices in network.Fix
—UI
— the Toolbar won't move on hover at mobile viewports. Resolves #1972Fix
—OnChange
event invocation after block insertion. #1997Fix
—ReadOnly
— thereadonly.isEnabled
API getter now works correctly afterreadonly.toggle()
calling. Resolves #1822Fix
—Paste
— the inline HTML tags now will be preserved on pasting. #1686
— Fix
— Crash on initialization in the read-only mode #1968
— Fix
— Incorrect release tag fixed
Improvement
— EditorConfig — TheonChange
callback now accepts two arguments: EditorJS API and the CustomEvent withtype
anddetail
allowing to determine what happened with a BlockNew
— Block API — The newdispatchChange()
method allows to manually trigger the 'onChange' callback. Useful when Tool made a state mutation that is invisible for editor core.Improvement
— UI — Block Tunes toggler moved to the leftImprovement
— UI — Block Actions (BT toggler + Plus Button) will appear on block hovering instead of clickImprovement
— UI — Block Tunes toggler icon and Plus button icon updatedImprovement
— Dev Example Page — The menu with helpful buttons added to the bottom of the screenImprovement
— Dev Example Page — The 'dark' theme added. Now we can code at night more comfortably.Improvement
— Rectangle Selection — paint optimizedFix
— Rectangle Selection — the first click after RS was not clear selection state. Now does.Improvement
— Blocks API — toolbar moving logic removed fromblocks.move()
andblocks.swap()
methods. Instead, you should use Toolbar API (it was used by MoveUp and MoveDown tunes, they were updated).New
— Blocks API — ThegetBlockIndex()
method addedNew
— Blocks API — theinsert()
method now has thereplace: boolean
parameterNew
— Blocks API — theinsert()
method now returns the insertedBlock API
New
— Listeners API — theon()
method now returns the listener id.New
— Listeners API — the newoffById()
method addedNew
—API
— The newUiApi
section was added. It allows accessing some editor UI nodes and methods.Refactoring
— Toolbox became a standalone class instead of a Module. It can be accessed only through the Toolbar module.Refactoring
— CI flow optimized.Fix
- Recognize asynconPaste
handlers in tools #1803.Fix
— Fire onChange event for native inputs #1750
Fix
— Tool config is passed toprepare
method editor-js/embed#68
Improvement
— Inline Toolbar might be used for any contenteditable element inside Editor.js zoneImprovement
Tunes API - Tunes now can provide sanitize configurationFix
Tunes API - Tune config now passed to constructor underconfig
propertyFix
Types - Add common type for internal and external Tools configurationFix
— Block's destroy method is called on block deletionFix
- Fix jump to the button of editor zone on CBS
Fix
— I18n for internal Block Tunes #1661
New
-onChange
callback now receive Block API object of affected blockNew
- API methodblocks.update(id, data)
added.
New
- Blocks now have unique ids #873
Fix
— Append default Tunes if user tunes are provided for Block Tool #1640Fix
- Prevent the leak of codex-tooltip when Editor.js is destroyed #1475.Refactoring
- Notifier module now is a util.
Fix
- Create a new block when clicked at the bottom #1588.Fix
— Fix sanitization problem with Inline Tools #1631Fix
— Fix copy in FireFox 1625Refactoring
- The Sanitizer module is util now.Refactoring
- Tooltip module is util now.Refactoring
— Refactoring based on LGTM #1577.Refactoring
— Refactoring based on ESLint #1636.
New
— Block Tunes API added
Fix
— Ignore error raised by Shortcut module
New
-toolbar.toggleBlockSettings()
API method added #1442.Improvements
- A generic type for Tool config added #1516Improvements
- Remove unusedforce
option inCaret.navigateNext()
andCaret.navigatePrevious()
#857.Improvements
- Remove bundles from the repo #1541.Improvements
- Document will be scrolled when blocks are selected withSHIFT+UP
orSHIFT+DOWN
#1447Improvements
- The caret will be set on editor copy/paste #1470Improvements
- Added generic types to OutputBlockData #1551.Fix
- Fix BlockManager.setCurrentBlockByChildNode() with multiple Editor.js instances #1503.Fix
- Fix an unstable block cut process #1489.Fix
- Type definition of the Sanitizer config: the sanitize function now contains param definition #1491.Fix
- Fix unexpected behavior on an empty link pasting #1348.Fix
- Fix SanitizerConfig type definition #1513Refactoring
- The Listeners module now is a util.Refactoring
- The Events module now is a util.Fix
- Editor Config now immutable #1552.Refactoring
- Shortcuts module is util now.Fix
- Fix bubbling on BlockManagers' listener #1433.
Improvements
- The Cypress was integrated as the end-to-end testing frameworkImprovements
- Nativetypeof
replaced with custom utils methodsImprovements
- Bind shortcuts listeners on the editor wrapper instead of document #1391Fix
- The problem with destroy() method #1380.Fix
- add getter keyword toblock.mergeable
method #1415.Fix
— Fix problem with entering to Editor.js by Tab key #1393Fix
- Sanitize pasted block data #1396.Fix
- Unnecessary block creation after arrow navigation at last non-default block#1414
New
- Read-only mode 🥳 #837New
- RTL mode added #670New
- Allows users to provide commoninlineToolbar
property which will be used for all tools whoseinlineToolbar
property is set totrue
. It can be overridden by the tool's owninlineToolbar
property. Also, inline tools will be ordered according to the order of the inline tools in array provided in theinlineToolbar
property. #1056New
- Tool'sreset
static method added to the API to clean up any data added by Tool on initializationImprovements
- TheinitialBlock
property of Editor config is deprecated. Use thedefaultBlock
instead. #993Improvements
- BlockAPIcall()
method now returns the result of calling method, thus allowing it to expose arbitrary data as needed #1205Improvements
- Useless log about missed i18n section has been removed #1269Improvements
- Allowed to setfalse
astoolbox
config in order to hide Toolbox button #1221Fix
— Fix problem with types usage #1183Fix
- Fixed issue with Spam clicking the "Click to tune" button duplicates the icons on FireFox. #1273Fix
- Fixed issue witheditor.blocks.delete(index)
method which throws an error when Editor.js is not focused, even after providing a valid index. #1182Fix
- Fixed the issue of toolbar not disappearing on entering input in Chinese, Hindi and some other languages. #1196Fix
- Do not stop events propagation if not needed (essential for React synthetic events) #1051 #946Fix
- Tool'sdestroy
method is not invoked wheneditor.destroy()
is called. #1047Fix
- Fixed issue with enter key in inputs and textareas #920Fix
- blocks.getBlockByIndex() API method now returns void for indexes out of range #1270Fix
- Fixed theTab
key behavior when the caret is not set inside contenteditable element, but the block is selected #1302.Fix
- Fixed theonChange
callback issue. This method didn't be called for native inputs before some contenteditable element changed #843Fix
- Fixed theonChange
callback issue. This method didn't be called after the callback throws an exception #1339Fix
- The internalshortcut
getter of Tools classes will work now.Deprecated
— The Inline Toolclear()
method is deprecated because the new instance of Inline Tools will be created on every showing of the Inline Toolbar
New
I18n API — Ability to provide internalization for Editor.js core and tools. #751New
— Block API that allows you to access certain Block properties and methodsImprovements
- TSLint (deprecated) replaced with ESLint, old config changed to CodeX ESLint Config.Improvements
- Fix many code-style issues, add missed annotations.Improvements
- Adjusted GitHub action for ESLint.Improvements
- Blocks API: ifblocks.delete
method is called, but no Block is selected, show warning instead of throwing an error #1102Improvements
- Blocks API: allow deletion of blocks by specifying block index viablocks.delete(index)
.Improvements
- UX: Navigate next Block from the last non-initial one creates new initial Block now #1103Improvements
- Improve performance of DOM traversing at theisEmpty()
method #1095Improvements
- CODE OF CONDUCT addedImprovements
- Disabled useCapture flag for a block keydown handling. That will allow plugins to override keydown and stop event propagation, for example, to make own Tab behavior.Improvements
- All modules now might havedestroy
method called on Editor.js destroyImprovements
- Block settings can contain text inputs, focus will be restored after settings closed #1090Fix
- Editor's styles won't be appended to the<head>
when another instance have already do that #1079Fix
- Fixed wrong toolbar icon centering in Firefox #1120Fix
- Toolbox: Tool's order in Toolbox now saved in accordance withtools
object keys order #1073Fix
- Settingautofocus
config property totrue
cause adding.ce-block--focused
for the autofocused block #1073Fix
- Public gettershortcut
now works for Inline Tools #1132Fix
-CMD+A
handler removed after Editor.js destroy #1133
Breaking changes
blocks.getBlockByIndex
method now returns BlockAPI object. To access old value, use BlockAPI.holder property
Improvements
- Editor's onchange callback now accepts an API as a parameterFix
- Some mistakes are fixed in installation.mdFix
- Fixed multiple paste callback triggering in a case when several editors are instantiated #1011Fix
- Fixed inline toolbar flipper activation on closing conversion toolbar #995Improvements
- New window tab is opened by clicking on anchor with ctrl #1057Fix
- Fix block-tune buttons alignment in some CSS-resetors that forcesbox-sizing: border-box
rule #1003Improvements
- New style of a Block Settings button. Focused block background removed.New
— Add in-house copy-paste support throughapplication/x-editor-js
mime-typeNew
Block lifecycle hookmoved
Deprecated
—blocks.swap(fromIndex, toIndex)
method is deprecated. Useblocks.move(toIndex, fromIndex)
instead.Fix
— Improve plain text paste #1012Fix
— Fix multiline paste #1015
Fix
— Fix Firefox bug with incorrect height and cursor position of empty content editable elements #947 #876 #608 #876Fix
— Set initial hidden Inline Toolbar position #979Fix
— Fix issue with CodeX.Tooltips TypeScript definitions #978Fix
— Fix some issues with Inline and Tunes toolbars.Fix
- FixminHeight
option with zero-value issue #724Improvements
— Disable Conversion Toolbar if there are no Tools to convert #984
Improvements
— Inline Toolbar design improvedImprovements
— Conversion Toolbar now included in the Inline Toolbar #853Improvements
— All buttons now have beautiful Tooltips provided by CodeX TooltipsNew
— new Tooltips API for displaying tooltips near your custom elementsNew
API — Block lifecycle hooksNew
Inline Tools API — Ability to specify Tool's title viatitle
static getter.Fix
— On selection from end to start backspace is working as expected now #869Fix
— Fix flipper with empty dom iterator #926Fix
— Normalize node before walking through children atisEmpty
method #943Fix
— Fixed Grammarly conflict #779Improvements
— Module Listeners now correctly removes events with options #904Improvements
— Styles API:.cdx-block
default vertical margins decreased from 0.7 to 0.4 ems.Fix
— FixedgetRangeCount
call if range count is 0 #938New
— Log levels now available to suppress Editor.js console messages #962Fix
— Fixed wrong navigation on block deletion
Refactoring
— Constants of tools settings separated by internal and external to correspond APIRefactoring
— Created universal Flipper class that responses for navigation by keyboard inside of any ToolbarsFix
— First CMD+A on block with now uses default behaviour. Fixed problem with second CMD+A after selection clearing #827Improvements
— Style of inline selection and selected blocks improvedFix
- Fixed problem when property 'observer' in modificationObserver is not defined
New
— Newblocks.insert()
API method #715.New
Conversion Toolbar — Ability to convert one block to another #704New
Cross-block selection — Ability to select multiple blocks by mouse and with SHIFT+ARROWS #703Deprecated
—blocks.insertNewBlock()
method is deprecated. Useblocks.insert()
instead.Improvements
— Inline Toolbar now works on mobile devices #706Improvements
— Toolbar looks better on mobile devices #706Improvements
— NowpasteConfig
can returnfalse
to disable paste handling on your Tool #801Fix
— EditorConfig'sonChange
callback now fires when native inputs` content has been changed #794Fix
— Resolve bug with deleting leading new lines #726Fix
— Fix inline link Tool to support different link types likemailto
andtel
#809Fix
— Addedtypeof
util method to check exact object type #805Fix
— Remove internalenableLineBreaks
option from external Tool settings type description #825
Fix
Config — User config now has higher priority than internal settings #771New
— Ability to work with Block Actions and Inline Toolbar from the keyboard by Tab. #705Fix
— Fix error thrown by click on the empty editor afterblocks.clear()
method calling #761Fix
— Fix placeholder property appearance. Now you can assign it viaplaceholder
property of EditorConfig. #714Fix
— Add API shorthands to TS types #788
Improvements
BlockSelection — Block Selection allows to select single editable element via CMD+ANew
API — Added API methods to open and close inline toolbar #665New
Config - Added new property in EditorConfigholder
, use this property for append Editor insteadholderId
.holder
property now support reference on dom element. #696Deprecated
Config -holderId
property now is deprecated and will removed in next major release. Useholder
instead.Fix
Types — Fixed error withcodex-notifier
package #713Improvements
— Close inline toolbar after creating a new link.New
Config — OptionminHeight
for customizing Editor's bottom zone height added.
Improvements
— CodeX.Shortcuts version updated to the v1.1 #684Fix
— Do not start multi-block selection on Toolbox and Inline Toolbar #646Fix
— Minor fixes of caret behaviour #663Fix
— Fix inline-link icon position in Firefox #674
Fix
— Make Toolbox tooltip position font-size independent
- New Inline Tools — pass tool settings from configuration to Tool constructor
Fix
— Fix processingcolor-mod
function in styles
New
API - newblocks
API methodrenderFromHTML
New
— Add ability to pass configuration for internal Tools
Fix
- Fix editor view on mobile devices
Fix
- Fix inline toolbar buttons margin. Update dependencies list. Update tools for example page.
Fix
— Block tunes margins now better works with more than 3 buttons
Fix
Paste — Fix pasting into non-initial Blocks
Fix
Paste — Polyfill for Microsoft Edge
Fix
RectangleSelection — Redesign of the scrolling zones
Fix
- Clear focus when click is outside the Editor instance
Fix
— Fix CMD+A Selection on multiple Editor instances
Improvements
— Docs updated and common enhancements
Fix
RectangleSelection — Selection is available only for the main mouse button
New
— Add API methods shorthands
New
— Rename from CodeX Editor to Editor.js
New
— Toolbox now have beautiful helpers with Tool names and shortcuts
Improvements
— Prevent navigating back on Firefox when Block is removing by backspace
Fix
— Handle paste only on initial Block
New
— Blocks selected with Rectangle Selection can be also removed, copied or cut
Improvements
— Migrate frompostcss-cssnext
topostcss-preset-env
and disablepostcss-custom-properties
which conflicts withpostcss-preset-env
New
RectangleSelection — Ability to select Block or several Blocks with mouse
Fix
Caret — Fix "History back" call on backspace in Firefox
Improvements
API — Added API methods to manage caret position
Improvements
Types — TypeScript types sre updated
Fix
— Caret now goes through elements withouttype
attribute
Fix
— Fixed selection behavior when text has modifiers form Inline Toolbar
Fix
— cmd+x works only for custom selection now
New
Tools Validation is added.
New
Mobile view — Editor now adopted for mobile devicesNew
Narrow mode — Editor now adopted for narrow containers
Improvements
Caret — Improvements of the caret behaviour: arrows, backspace and enter keys better handling.
New
Autofocus — Now you can set focus at Editor after page has been loaded
Improvements
Paste handling — minor paste handling improvements
New
Shortcuts — copy and cut Blocks selected by CMD+A
New
Sanitize API — Sanitize Config ofBlock Tools
now automatically extends by tags ofInline Tools
that is enabled by current Tool byinlineToolbar
option. You don't need more to specifya, b, mark, code
manually. This feature will be added to fields that supports inline markup.New
Block Selection — Ability to select Block byCMD+A
, and the whole Editor by doubleCMD+A
. After that, you can copy (CMD+C
), remove (Backspace
) or clear (Enter
) selected Blocks.New
Styles API — Addedbutton
class for stylization of any buttons provided by Tools with one unified style.New
Notifier API — methods for showing user notifications: on success, errors, warnings, etc.New
Block Tool — Table constructor 💪New
If one of the Tools is unavailable on Editor initialization, its Blocks will be rendered with Dummy Block, describing that user can not edit content of this Block. Dummy Blocks can be moved, removed and saved as normal Blocks. So saved data won't be lost if one of the Tools is failedNew
Public TS-types are presented.Changes
Tools API — optionsirreplaceable
andcontentless
was removed.Changes
Tools API — Paste API: tags, patterns and mime-types now should be specified by Tool'spasteConfig
static property. Custom Paste Event should be handled byonPaste(event)
that should not be static from now.Changes
Tools API — optionsdisplayInToolbox
andtoolboxIcon
was removed. Usetoolbox
instead, that should return object withicon
andtitle
field, orfalse
if Tool should not be placed at the Toolbox. Also, there are a way to overridetoolbox {icon, title}
settings provided by Tool with you own settings at the Initial Config.Improvements
— All Projects code now on TypeScriptImprovements
— NPM package size decreased from 1300kb to 422kbImprovements
— Bundle size decreased from 438kb to 252kbImprovements
—Inline Toolbar
: when you add a Link to the selected fragment, Editor will highlight this fragment even when Caret is placed into the URL-input.Improvements
— Block Settings won't be shown near empty Blocks ofinitialType
by default. You should click on them instead.Improvements
—onChange
-callback now will be fired even with children attributes changing.Improvements
— HTMLJanitor package was updated due to found vulnerabilityImprovements
— Logging improved: now all Editor's logs will be preceded by beautiful label with current Editor version.Improvements
— InternalisEmpty
checking was improved for Blocks with many children nodes (200 and more)Improvements
— Paste improvements: tags that can be substituted by Tool now will matched even on deep-level of pasted DOM three.Improvements
— There is no more «unavailable» sound on copying Block byCMD+C
on macOSImprovements
— Dozens of bugfixes and small improvements
See a whole Changelog
New
Tools API — support pasted content via drag-n-drop or from the Buffer. See documentation and example at the Simple Image Tool.New
Tools API — newsanitize
getter for Tools for automatic HTML sanitizing of returned data. See documentation and example at the Paragraph ToolNew
AddedonChange
-callback, fired after any modifications at the Editor. See documentation.New
New Inline Tool example — MarkerNew
New Inline Tool example — CodeNew
New Editor.js PHP — example of server-side implementation with HTML purifying and data validation.Improvements
- Improvements of Toolbar's position calculation.Improvements
— Improved zero-configuration initialization.- and many little improvements.