github xdan/jodit 4.13.3

14 hours ago

🚀 New Feature

  • AsyncStorage: AsyncStorage.makeStorage(persistentOrStrategy, suffix, options?) now accepts a third options argument with a defaultProvider field that overrides which provider backs the storage — 'local' (localStorage), 'memory', or a custom IAsyncStorage implementation. When omitted the behaviour is unchanged (persistent IndexedDB with an in-memory fallback). The same option is exposed on the editor as the asyncStorage config option (Jodit.make('#editor', { asyncStorage: { defaultProvider: 'local' } })), so jodit.asyncStorage can be pointed at localStorage, memory, or your own backend without subclassing.
  • Slots: a new above workplace slot (editor.currentPlace.slots.above) that always stays above the toolbar — the spot Google-Docs-style presence bars and banners live in. The toolbar box used to re-pin itself as the container's first child on every toolbarContainer access; it now keeps itself below any container children flagged with the data-jodit-above-toolbar attribute (the new slot carries the flag). The slot renders as nothing while empty and gets the standard border-bottom once filled, like the other slots.

🐛 Bug Fix

  • Storage: LocalStorageProvider.delete(key) removed the entire storage scope (every key sharing the same rootKey/suffix) instead of just the requested key — delete behaved identically to clear. It now reads the JSON blob, drops only that key and writes the rest back. Affects Jodit.modules.Storage/buffer/storage and the @persistent decorator when a single key is deleted.

🏠 Internal

  • Selection: Select.wrapInTagGen no longer relies on the browser's document.execCommand('fontSize', false, '7') to split a non-collapsed selection into wrappable inline fragments. It now uses a pure-DOM implementation that splits the boundary text nodes and wraps every contiguous run of selected inline content (grouped per block) into a <font> element. This removes one more dependency on the deprecated execCommand API and makes selection wrapping (commitStyle, bold/italic/font/color, wrapInTag) behave identically across Chrome and Firefox. No public API or output change; covered by new wrapInTag tests.

Don't miss a new jodit release

NewReleases is sending notifications on new releases.