🚀 New Feature
- AsyncStorage:
AsyncStorage.makeStorage(persistentOrStrategy, suffix, options?)now accepts a thirdoptionsargument with adefaultProviderfield that overrides which provider backs the storage —'local'(localStorage),'memory', or a customIAsyncStorageimplementation. When omitted the behaviour is unchanged (persistent IndexedDB with an in-memory fallback). The same option is exposed on the editor as theasyncStorageconfig option (Jodit.make('#editor', { asyncStorage: { defaultProvider: 'local' } })), sojodit.asyncStoragecan be pointed at localStorage, memory, or your own backend without subclassing. - Slots: a new
aboveworkplace 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 everytoolbarContaineraccess; it now keeps itself below any container children flagged with thedata-jodit-above-toolbarattribute (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 samerootKey/suffix) instead of just the requested key —deletebehaved identically toclear. It now reads the JSON blob, drops only that key and writes the rest back. AffectsJodit.modules.Storage/buffer/storageand the@persistentdecorator when a single key is deleted.
🏠 Internal
- Selection:
Select.wrapInTagGenno longer relies on the browser'sdocument.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 deprecatedexecCommandAPI and makes selection wrapping (commitStyle, bold/italic/font/color,wrapInTag) behave identically across Chrome and Firefox. No public API or output change; covered by newwrapInTagtests.