jodit-pro 4.13.15 → 4.13.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es2015/jodit.css +2 -2
- package/es2015/jodit.fat.min.css +1 -1
- package/es2015/jodit.fat.min.js +3 -3
- package/es2015/jodit.js +192 -20
- package/es2015/jodit.min.css +1 -1
- package/es2015/jodit.min.js +3 -3
- package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
- package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
- package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
- package/es2015/plugins/autocomplete/autocomplete.css +1 -1
- package/es2015/plugins/autocomplete/autocomplete.js +1 -1
- package/es2015/plugins/autocomplete/autocomplete.min.js +1 -1
- package/es2015/plugins/backup/backup.css +1 -1
- package/es2015/plugins/backup/backup.js +1 -1
- package/es2015/plugins/backup/backup.min.js +1 -1
- package/es2015/plugins/button-generator/button-generator.css +1 -1
- package/es2015/plugins/button-generator/button-generator.js +1 -1
- package/es2015/plugins/button-generator/button-generator.min.js +1 -1
- package/es2015/plugins/change-case/change-case.js +1 -1
- package/es2015/plugins/change-case/change-case.min.js +1 -1
- package/es2015/plugins/color-picker/color-picker.css +1 -1
- package/es2015/plugins/color-picker/color-picker.js +1 -1
- package/es2015/plugins/color-picker/color-picker.min.js +1 -1
- package/es2015/plugins/emoji/emoji.css +1 -1
- package/es2015/plugins/emoji/emoji.js +1 -1
- package/es2015/plugins/emoji/emoji.min.js +1 -1
- package/es2015/plugins/export-docs/export-docs.js +1 -1
- package/es2015/plugins/export-docs/export-docs.min.js +1 -1
- package/es2015/plugins/finder/finder.css +1 -1
- package/es2015/plugins/finder/finder.js +1 -1
- package/es2015/plugins/finder/finder.min.js +1 -1
- package/es2015/plugins/google-maps/google-maps.css +1 -1
- package/es2015/plugins/google-maps/google-maps.js +1 -1
- package/es2015/plugins/google-maps/google-maps.min.js +1 -1
- package/es2015/plugins/google-search/google-search.js +1 -1
- package/es2015/plugins/google-search/google-search.min.js +1 -1
- package/es2015/plugins/highlight-signature/highlight-signature.js +1 -1
- package/es2015/plugins/highlight-signature/highlight-signature.min.js +1 -1
- package/es2015/plugins/iframe-editor/iframe-editor.css +1 -1
- package/es2015/plugins/iframe-editor/iframe-editor.js +1 -1
- package/es2015/plugins/iframe-editor/iframe-editor.min.js +1 -1
- package/es2015/plugins/image-editor-pro/image-editor-pro.css +1 -1
- package/es2015/plugins/image-editor-pro/image-editor-pro.js +1 -1
- package/es2015/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
- package/es2015/plugins/keyboard/keyboard.css +1 -1
- package/es2015/plugins/keyboard/keyboard.js +1 -1
- package/es2015/plugins/keyboard/keyboard.min.js +1 -1
- package/es2015/plugins/mobile-view/mobile-view.js +1 -1
- package/es2015/plugins/mobile-view/mobile-view.min.js +1 -1
- package/es2015/plugins/page-break/page-break.js +1 -1
- package/es2015/plugins/page-break/page-break.min.js +1 -1
- package/es2015/plugins/paste-code/paste-code.css +1 -1
- package/es2015/plugins/paste-code/paste-code.js +1 -1
- package/es2015/plugins/paste-code/paste-code.min.js +1 -1
- package/es2015/plugins/paste-from-word/paste-from-word.js +1 -1
- package/es2015/plugins/paste-from-word/paste-from-word.min.js +1 -1
- package/es2015/plugins/show-blocks/show-blocks.js +1 -1
- package/es2015/plugins/show-blocks/show-blocks.min.js +1 -1
- package/es2015/plugins/style/style.css +1 -1
- package/es2015/plugins/style/style.js +1 -1
- package/es2015/plugins/style/style.min.js +1 -1
- package/es2015/plugins/templates/templates.css +1 -1
- package/es2015/plugins/templates/templates.js +1 -1
- package/es2015/plugins/templates/templates.min.js +1 -1
- package/es2015/plugins/todo-list/todo-list.css +1 -1
- package/es2015/plugins/todo-list/todo-list.js +1 -1
- package/es2015/plugins/todo-list/todo-list.min.js +1 -1
- package/es2015/plugins/translate/translate.css +1 -1
- package/es2015/plugins/translate/translate.js +1 -1
- package/es2015/plugins/translate/translate.min.js +1 -1
- package/es2015/plugins/tune-block/tune-block.css +1 -1
- package/es2015/plugins/tune-block/tune-block.js +1 -1
- package/es2015/plugins/tune-block/tune-block.min.js +1 -1
- package/es2018/jodit.fat.min.css +1 -1
- package/es2018/jodit.fat.min.js +18 -18
- package/es2018/jodit.min.css +1 -1
- package/es2018/jodit.min.js +3 -3
- package/es2018/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
- package/es2018/plugins/autocomplete/autocomplete.min.js +1 -1
- package/es2018/plugins/backup/backup.min.js +1 -1
- package/es2018/plugins/button-generator/button-generator.min.js +1 -1
- package/es2018/plugins/change-case/change-case.min.js +1 -1
- package/es2018/plugins/color-picker/color-picker.min.js +1 -1
- package/es2018/plugins/emoji/emoji.min.js +1 -1
- package/es2018/plugins/export-docs/export-docs.min.js +1 -1
- package/es2018/plugins/finder/finder.min.js +1 -1
- package/es2018/plugins/google-maps/google-maps.min.js +1 -1
- package/es2018/plugins/google-search/google-search.min.js +1 -1
- package/es2018/plugins/highlight-signature/highlight-signature.min.js +1 -1
- package/es2018/plugins/iframe-editor/iframe-editor.min.js +1 -1
- package/es2018/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
- package/es2018/plugins/keyboard/keyboard.min.js +1 -1
- package/es2018/plugins/mobile-view/mobile-view.min.js +1 -1
- package/es2018/plugins/page-break/page-break.min.js +1 -1
- package/es2018/plugins/paste-code/paste-code.min.js +1 -1
- package/es2018/plugins/paste-from-word/paste-from-word.min.js +1 -1
- package/es2018/plugins/show-blocks/show-blocks.min.js +1 -1
- package/es2018/plugins/style/style.min.js +1 -1
- package/es2018/plugins/templates/templates.min.js +1 -1
- package/es2018/plugins/todo-list/todo-list.min.js +1 -1
- package/es2018/plugins/translate/translate.min.js +1 -1
- package/es2018/plugins/tune-block/tune-block.min.js +1 -1
- package/es2021/jodit.css +2 -2
- package/es2021/jodit.fat.min.css +1 -1
- package/es2021/jodit.fat.min.js +5 -5
- package/es2021/jodit.js +192 -20
- package/es2021/jodit.min.css +1 -1
- package/es2021/jodit.min.js +5 -5
- package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
- package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
- package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
- package/es2021/plugins/autocomplete/autocomplete.css +1 -1
- package/es2021/plugins/autocomplete/autocomplete.js +1 -1
- package/es2021/plugins/autocomplete/autocomplete.min.js +1 -1
- package/es2021/plugins/backup/backup.css +1 -1
- package/es2021/plugins/backup/backup.js +1 -1
- package/es2021/plugins/backup/backup.min.js +1 -1
- package/es2021/plugins/button-generator/button-generator.css +1 -1
- package/es2021/plugins/button-generator/button-generator.js +1 -1
- package/es2021/plugins/button-generator/button-generator.min.js +1 -1
- package/es2021/plugins/change-case/change-case.js +1 -1
- package/es2021/plugins/change-case/change-case.min.js +1 -1
- package/es2021/plugins/color-picker/color-picker.css +1 -1
- package/es2021/plugins/color-picker/color-picker.js +1 -1
- package/es2021/plugins/color-picker/color-picker.min.js +1 -1
- package/es2021/plugins/emoji/emoji.css +1 -1
- package/es2021/plugins/emoji/emoji.js +1 -1
- package/es2021/plugins/emoji/emoji.min.js +1 -1
- package/es2021/plugins/export-docs/export-docs.js +1 -1
- package/es2021/plugins/export-docs/export-docs.min.js +1 -1
- package/es2021/plugins/finder/finder.css +1 -1
- package/es2021/plugins/finder/finder.js +1 -1
- package/es2021/plugins/finder/finder.min.js +1 -1
- package/es2021/plugins/google-maps/google-maps.css +1 -1
- package/es2021/plugins/google-maps/google-maps.js +1 -1
- package/es2021/plugins/google-maps/google-maps.min.js +1 -1
- package/es2021/plugins/google-search/google-search.js +1 -1
- package/es2021/plugins/google-search/google-search.min.js +1 -1
- package/es2021/plugins/highlight-signature/highlight-signature.js +1 -1
- package/es2021/plugins/highlight-signature/highlight-signature.min.js +1 -1
- package/es2021/plugins/iframe-editor/iframe-editor.css +1 -1
- package/es2021/plugins/iframe-editor/iframe-editor.js +1 -1
- package/es2021/plugins/iframe-editor/iframe-editor.min.js +1 -1
- package/es2021/plugins/image-editor-pro/image-editor-pro.css +1 -1
- package/es2021/plugins/image-editor-pro/image-editor-pro.js +1 -1
- package/es2021/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
- package/es2021/plugins/keyboard/keyboard.css +1 -1
- package/es2021/plugins/keyboard/keyboard.js +1 -1
- package/es2021/plugins/keyboard/keyboard.min.js +1 -1
- package/es2021/plugins/mobile-view/mobile-view.js +1 -1
- package/es2021/plugins/mobile-view/mobile-view.min.js +1 -1
- package/es2021/plugins/page-break/page-break.js +1 -1
- package/es2021/plugins/page-break/page-break.min.js +1 -1
- package/es2021/plugins/paste-code/paste-code.css +1 -1
- package/es2021/plugins/paste-code/paste-code.js +1 -1
- package/es2021/plugins/paste-code/paste-code.min.js +1 -1
- package/es2021/plugins/paste-from-word/paste-from-word.js +1 -1
- package/es2021/plugins/paste-from-word/paste-from-word.min.js +1 -1
- package/es2021/plugins/show-blocks/show-blocks.js +1 -1
- package/es2021/plugins/show-blocks/show-blocks.min.js +1 -1
- package/es2021/plugins/style/style.css +1 -1
- package/es2021/plugins/style/style.js +1 -1
- package/es2021/plugins/style/style.min.js +1 -1
- package/es2021/plugins/templates/templates.css +1 -1
- package/es2021/plugins/templates/templates.js +1 -1
- package/es2021/plugins/templates/templates.min.js +1 -1
- package/es2021/plugins/todo-list/todo-list.css +1 -1
- package/es2021/plugins/todo-list/todo-list.js +1 -1
- package/es2021/plugins/todo-list/todo-list.min.js +1 -1
- package/es2021/plugins/translate/translate.css +1 -1
- package/es2021/plugins/translate/translate.js +1 -1
- package/es2021/plugins/translate/translate.min.js +1 -1
- package/es2021/plugins/tune-block/tune-block.css +1 -1
- package/es2021/plugins/tune-block/tune-block.js +1 -1
- package/es2021/plugins/tune-block/tune-block.min.js +1 -1
- package/es2021.en/jodit.css +2 -2
- package/es2021.en/jodit.fat.min.css +1 -1
- package/es2021.en/jodit.fat.min.js +5 -5
- package/es2021.en/jodit.js +192 -20
- package/es2021.en/jodit.min.css +1 -1
- package/es2021.en/jodit.min.js +5 -5
- package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
- package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
- package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
- package/es2021.en/plugins/autocomplete/autocomplete.css +1 -1
- package/es2021.en/plugins/autocomplete/autocomplete.js +1 -1
- package/es2021.en/plugins/autocomplete/autocomplete.min.js +1 -1
- package/es2021.en/plugins/backup/backup.css +1 -1
- package/es2021.en/plugins/backup/backup.js +1 -1
- package/es2021.en/plugins/backup/backup.min.js +1 -1
- package/es2021.en/plugins/button-generator/button-generator.css +1 -1
- package/es2021.en/plugins/button-generator/button-generator.js +1 -1
- package/es2021.en/plugins/button-generator/button-generator.min.js +1 -1
- package/es2021.en/plugins/change-case/change-case.js +1 -1
- package/es2021.en/plugins/change-case/change-case.min.js +1 -1
- package/es2021.en/plugins/color-picker/color-picker.css +1 -1
- package/es2021.en/plugins/color-picker/color-picker.js +1 -1
- package/es2021.en/plugins/color-picker/color-picker.min.js +1 -1
- package/es2021.en/plugins/emoji/emoji.css +1 -1
- package/es2021.en/plugins/emoji/emoji.js +1 -1
- package/es2021.en/plugins/emoji/emoji.min.js +1 -1
- package/es2021.en/plugins/export-docs/export-docs.js +1 -1
- package/es2021.en/plugins/export-docs/export-docs.min.js +1 -1
- package/es2021.en/plugins/finder/finder.css +1 -1
- package/es2021.en/plugins/finder/finder.js +1 -1
- package/es2021.en/plugins/finder/finder.min.js +1 -1
- package/es2021.en/plugins/google-maps/google-maps.css +1 -1
- package/es2021.en/plugins/google-maps/google-maps.js +1 -1
- package/es2021.en/plugins/google-maps/google-maps.min.js +1 -1
- package/es2021.en/plugins/google-search/google-search.js +1 -1
- package/es2021.en/plugins/google-search/google-search.min.js +1 -1
- package/es2021.en/plugins/highlight-signature/highlight-signature.js +1 -1
- package/es2021.en/plugins/highlight-signature/highlight-signature.min.js +1 -1
- package/es2021.en/plugins/iframe-editor/iframe-editor.css +1 -1
- package/es2021.en/plugins/iframe-editor/iframe-editor.js +1 -1
- package/es2021.en/plugins/iframe-editor/iframe-editor.min.js +1 -1
- package/es2021.en/plugins/image-editor-pro/image-editor-pro.css +1 -1
- package/es2021.en/plugins/image-editor-pro/image-editor-pro.js +1 -1
- package/es2021.en/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
- package/es2021.en/plugins/keyboard/keyboard.css +1 -1
- package/es2021.en/plugins/keyboard/keyboard.js +1 -1
- package/es2021.en/plugins/keyboard/keyboard.min.js +1 -1
- package/es2021.en/plugins/mobile-view/mobile-view.js +1 -1
- package/es2021.en/plugins/mobile-view/mobile-view.min.js +1 -1
- package/es2021.en/plugins/page-break/page-break.js +1 -1
- package/es2021.en/plugins/page-break/page-break.min.js +1 -1
- package/es2021.en/plugins/paste-code/paste-code.css +1 -1
- package/es2021.en/plugins/paste-code/paste-code.js +1 -1
- package/es2021.en/plugins/paste-code/paste-code.min.js +1 -1
- package/es2021.en/plugins/paste-from-word/paste-from-word.js +1 -1
- package/es2021.en/plugins/paste-from-word/paste-from-word.min.js +1 -1
- package/es2021.en/plugins/show-blocks/show-blocks.js +1 -1
- package/es2021.en/plugins/show-blocks/show-blocks.min.js +1 -1
- package/es2021.en/plugins/style/style.css +1 -1
- package/es2021.en/plugins/style/style.js +1 -1
- package/es2021.en/plugins/style/style.min.js +1 -1
- package/es2021.en/plugins/templates/templates.css +1 -1
- package/es2021.en/plugins/templates/templates.js +1 -1
- package/es2021.en/plugins/templates/templates.min.js +1 -1
- package/es2021.en/plugins/todo-list/todo-list.css +1 -1
- package/es2021.en/plugins/todo-list/todo-list.js +1 -1
- package/es2021.en/plugins/todo-list/todo-list.min.js +1 -1
- package/es2021.en/plugins/translate/translate.css +1 -1
- package/es2021.en/plugins/translate/translate.js +1 -1
- package/es2021.en/plugins/translate/translate.min.js +1 -1
- package/es2021.en/plugins/tune-block/tune-block.css +1 -1
- package/es2021.en/plugins/tune-block/tune-block.js +1 -1
- package/es2021.en/plugins/tune-block/tune-block.min.js +1 -1
- package/es5/jodit.css +3 -3
- package/es5/jodit.fat.min.css +1 -1
- package/es5/jodit.fat.min.js +2 -2
- package/es5/jodit.js +228 -20
- package/es5/jodit.min.css +3 -3
- package/es5/jodit.min.js +2 -2
- package/es5/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
- package/es5/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
- package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
- package/es5/plugins/autocomplete/autocomplete.css +1 -1
- package/es5/plugins/autocomplete/autocomplete.js +1 -1
- package/es5/plugins/autocomplete/autocomplete.min.js +1 -1
- package/es5/plugins/backup/backup.css +1 -1
- package/es5/plugins/backup/backup.js +1 -1
- package/es5/plugins/backup/backup.min.js +1 -1
- package/es5/plugins/button-generator/button-generator.css +1 -1
- package/es5/plugins/button-generator/button-generator.js +1 -1
- package/es5/plugins/button-generator/button-generator.min.js +1 -1
- package/es5/plugins/change-case/change-case.js +1 -1
- package/es5/plugins/change-case/change-case.min.js +1 -1
- package/es5/plugins/color-picker/color-picker.css +1 -1
- package/es5/plugins/color-picker/color-picker.js +1 -1
- package/es5/plugins/color-picker/color-picker.min.js +1 -1
- package/es5/plugins/emoji/emoji.css +1 -1
- package/es5/plugins/emoji/emoji.js +1 -1
- package/es5/plugins/emoji/emoji.min.js +1 -1
- package/es5/plugins/export-docs/export-docs.js +1 -1
- package/es5/plugins/export-docs/export-docs.min.js +1 -1
- package/es5/plugins/finder/finder.css +1 -1
- package/es5/plugins/finder/finder.js +1 -1
- package/es5/plugins/finder/finder.min.js +1 -1
- package/es5/plugins/google-maps/google-maps.css +1 -1
- package/es5/plugins/google-maps/google-maps.js +1 -1
- package/es5/plugins/google-maps/google-maps.min.js +1 -1
- package/es5/plugins/google-search/google-search.js +1 -1
- package/es5/plugins/google-search/google-search.min.js +1 -1
- package/es5/plugins/highlight-signature/highlight-signature.js +1 -1
- package/es5/plugins/highlight-signature/highlight-signature.min.js +1 -1
- package/es5/plugins/iframe-editor/iframe-editor.css +1 -1
- package/es5/plugins/iframe-editor/iframe-editor.js +1 -1
- package/es5/plugins/iframe-editor/iframe-editor.min.js +1 -1
- package/es5/plugins/image-editor-pro/image-editor-pro.css +1 -1
- package/es5/plugins/image-editor-pro/image-editor-pro.js +1 -1
- package/es5/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
- package/es5/plugins/keyboard/keyboard.css +1 -1
- package/es5/plugins/keyboard/keyboard.js +1 -1
- package/es5/plugins/keyboard/keyboard.min.js +1 -1
- package/es5/plugins/mobile-view/mobile-view.js +1 -1
- package/es5/plugins/mobile-view/mobile-view.min.js +1 -1
- package/es5/plugins/page-break/page-break.js +1 -1
- package/es5/plugins/page-break/page-break.min.js +1 -1
- package/es5/plugins/paste-code/paste-code.css +1 -1
- package/es5/plugins/paste-code/paste-code.js +1 -1
- package/es5/plugins/paste-code/paste-code.min.js +1 -1
- package/es5/plugins/paste-from-word/paste-from-word.js +1 -1
- package/es5/plugins/paste-from-word/paste-from-word.min.js +1 -1
- package/es5/plugins/show-blocks/show-blocks.js +1 -1
- package/es5/plugins/show-blocks/show-blocks.min.js +1 -1
- package/es5/plugins/style/style.css +1 -1
- package/es5/plugins/style/style.js +1 -1
- package/es5/plugins/style/style.min.js +1 -1
- package/es5/plugins/templates/templates.css +1 -1
- package/es5/plugins/templates/templates.js +1 -1
- package/es5/plugins/templates/templates.min.js +1 -1
- package/es5/plugins/todo-list/todo-list.css +1 -1
- package/es5/plugins/todo-list/todo-list.js +1 -1
- package/es5/plugins/todo-list/todo-list.min.js +1 -1
- package/es5/plugins/translate/translate.css +1 -1
- package/es5/plugins/translate/translate.js +1 -1
- package/es5/plugins/translate/translate.min.js +1 -1
- package/es5/plugins/tune-block/tune-block.css +1 -1
- package/es5/plugins/tune-block/tune-block.js +1 -1
- package/es5/plugins/tune-block/tune-block.min.js +1 -1
- package/es5/polyfills.fat.min.js +1 -1
- package/es5/polyfills.js +1 -1
- package/es5/polyfills.min.js +1 -1
- package/package.json +1 -1
package/es2015/jodit.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* jodit-pro - PRO Version of Jodit Editor
|
|
3
3
|
* Author: Chupurnov Valerii <chupurnov@gmail.com>
|
|
4
|
-
* Version: v4.13.
|
|
4
|
+
* Version: v4.13.17
|
|
5
5
|
* Url: https://xdsoft.net/jodit/pro/
|
|
6
6
|
* License(s): SEE LICENSE IN LICENSE.md
|
|
7
7
|
*/
|
|
@@ -375,6 +375,26 @@ let ConfigPrototype = {};
|
|
|
375
375
|
/**
|
|
376
376
|
* if set true, then the current mode is saved in a cookie, and is restored after a reload of the page
|
|
377
377
|
*/ this.saveModeInStorage = false;
|
|
378
|
+
/**
|
|
379
|
+
* Configure the provider that backs {@link IViewBased.asyncStorage}.
|
|
380
|
+
*
|
|
381
|
+
* By default the editor's `asyncStorage` uses persistent `IndexedDB` (with an
|
|
382
|
+
* in-memory fallback when it is unavailable). Set `defaultProvider` to override it:
|
|
383
|
+
* - `'local'` — persist in `localStorage`;
|
|
384
|
+
* - `'memory'` — keep everything in memory (nothing survives a reload);
|
|
385
|
+
* - a custom {@link IAsyncStorage} implementation — plug in your own backend.
|
|
386
|
+
*
|
|
387
|
+
* ```javascript
|
|
388
|
+
* Jodit.make('#editor', {
|
|
389
|
+
* asyncStorage: { defaultProvider: 'local' }
|
|
390
|
+
* });
|
|
391
|
+
*
|
|
392
|
+
* // or a fully custom backend
|
|
393
|
+
* Jodit.make('#editor', {
|
|
394
|
+
* asyncStorage: { defaultProvider: myAsyncStorage }
|
|
395
|
+
* });
|
|
396
|
+
* ```
|
|
397
|
+
*/ this.asyncStorage = {};
|
|
378
398
|
/**
|
|
379
399
|
* Class name that can be appended to the editable area
|
|
380
400
|
*
|
|
@@ -1818,7 +1838,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1818
1838
|
* ```
|
|
1819
1839
|
* @packageDocumentation
|
|
1820
1840
|
* @module constants
|
|
1821
|
-
*/ const APP_VERSION = "4.13.
|
|
1841
|
+
*/ const APP_VERSION = "4.13.17";
|
|
1822
1842
|
// prettier-ignore
|
|
1823
1843
|
const ES = "es2015";
|
|
1824
1844
|
const IS_ES_MODERN = true;
|
|
@@ -11299,6 +11319,131 @@ class Selection {
|
|
|
11299
11319
|
}
|
|
11300
11320
|
return '';
|
|
11301
11321
|
}
|
|
11322
|
+
/**
|
|
11323
|
+
* Splits the boundaries of the current selection and wraps every
|
|
11324
|
+
* contiguous run of selected inline content (grouped by block) into a
|
|
11325
|
+
* `<font>` element, returning those wrappers in document order.
|
|
11326
|
+
*
|
|
11327
|
+
* This is a pure-DOM replacement for the old
|
|
11328
|
+
* `nativeExecCommand('fontsize', false, '7')` trick which relied on the
|
|
11329
|
+
* browser to split the selection into `<font size="7">` fragments.
|
|
11330
|
+
*/ __wrapSelectionFragments() {
|
|
11331
|
+
const range = this.range;
|
|
11332
|
+
this.__splitSelectionBoundaries(range);
|
|
11333
|
+
let root = range.commonAncestorContainer;
|
|
11334
|
+
if (_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isText(root)) {
|
|
11335
|
+
root = root.parentNode;
|
|
11336
|
+
}
|
|
11337
|
+
if (!root) {
|
|
11338
|
+
return [];
|
|
11339
|
+
}
|
|
11340
|
+
return this.__wrapSelectionRuns(this.__collectContainedNodes(root, range));
|
|
11341
|
+
}
|
|
11342
|
+
/**
|
|
11343
|
+
* Splits the text nodes at both ends of the range so that its boundaries
|
|
11344
|
+
* always fall between nodes. Afterwards every node inside the range is
|
|
11345
|
+
* fully (not partially) selected.
|
|
11346
|
+
*/ __splitSelectionBoundaries(range) {
|
|
11347
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
11348
|
+
let { startContainer, endContainer } = range;
|
|
11349
|
+
let { startOffset, endOffset } = range;
|
|
11350
|
+
if (_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isText(endContainer) && endOffset > 0 && endOffset < ((_b = (_a = endContainer.nodeValue) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0)) {
|
|
11351
|
+
endContainer.splitText(endOffset);
|
|
11352
|
+
endOffset = (_d = (_c = endContainer.nodeValue) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : endOffset;
|
|
11353
|
+
}
|
|
11354
|
+
if (_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isText(startContainer) && startOffset > 0 && startOffset < ((_f = (_e = startContainer.nodeValue) === null || _e === void 0 ? void 0 : _e.length) !== null && _f !== void 0 ? _f : 0)) {
|
|
11355
|
+
const middle = startContainer.splitText(startOffset);
|
|
11356
|
+
// Selection located inside a single text node - the tail we just
|
|
11357
|
+
// cut off is the actual selected fragment.
|
|
11358
|
+
if (startContainer === endContainer) {
|
|
11359
|
+
endContainer = middle;
|
|
11360
|
+
endOffset = (_h = (_g = middle.nodeValue) === null || _g === void 0 ? void 0 : _g.length) !== null && _h !== void 0 ? _h : 0;
|
|
11361
|
+
}
|
|
11362
|
+
startContainer = middle;
|
|
11363
|
+
startOffset = 0;
|
|
11364
|
+
}
|
|
11365
|
+
range.setStart(startContainer, startOffset);
|
|
11366
|
+
range.setEnd(endContainer, endOffset);
|
|
11367
|
+
// Normalize text-edge boundaries (e.g. `(text, 0)` or `(text, length)`)
|
|
11368
|
+
// to the element level so that containment checks based on
|
|
11369
|
+
// `selectNode()` treat a fully selected text node as contained.
|
|
11370
|
+
this.__normalizeRangeBoundary(range, true);
|
|
11371
|
+
this.__normalizeRangeBoundary(range, false);
|
|
11372
|
+
}
|
|
11373
|
+
__normalizeRangeBoundary(range, atStart) {
|
|
11374
|
+
var _a, _b;
|
|
11375
|
+
const container = atStart ? range.startContainer : range.endContainer;
|
|
11376
|
+
if (!_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isText(container)) {
|
|
11377
|
+
return;
|
|
11378
|
+
}
|
|
11379
|
+
const offset = atStart ? range.startOffset : range.endOffset;
|
|
11380
|
+
const length = (_b = (_a = container.nodeValue) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;
|
|
11381
|
+
if (offset === 0) {
|
|
11382
|
+
atStart ? range.setStartBefore(container) : range.setEndBefore(container);
|
|
11383
|
+
} else if (offset >= length) {
|
|
11384
|
+
atStart ? range.setStartAfter(container) : range.setEndAfter(container);
|
|
11385
|
+
}
|
|
11386
|
+
}
|
|
11387
|
+
/**
|
|
11388
|
+
* Collects the highest-level nodes that are completely inside the range,
|
|
11389
|
+
* descending into nodes that are only partially selected.
|
|
11390
|
+
*/ __collectContainedNodes(root, range) {
|
|
11391
|
+
const result = [];
|
|
11392
|
+
(0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.toArray)(root.childNodes).forEach((child)=>{
|
|
11393
|
+
if (this.__isFullyContained(range, child)) {
|
|
11394
|
+
result.push(child);
|
|
11395
|
+
} else if (child.childNodes.length && range.intersectsNode(child)) {
|
|
11396
|
+
result.push(...this.__collectContainedNodes(child, range));
|
|
11397
|
+
}
|
|
11398
|
+
});
|
|
11399
|
+
return result;
|
|
11400
|
+
}
|
|
11401
|
+
__isFullyContained(range, node) {
|
|
11402
|
+
const nodeRange = this.createRange();
|
|
11403
|
+
nodeRange.selectNode(node);
|
|
11404
|
+
return range.compareBoundaryPoints(Range.START_TO_START, nodeRange) <= 0 && range.compareBoundaryPoints(Range.END_TO_END, nodeRange) >= 0;
|
|
11405
|
+
}
|
|
11406
|
+
/**
|
|
11407
|
+
* Wraps every contiguous run of selected inline siblings into a `<font>`
|
|
11408
|
+
* element. Block-level nodes are never wrapped themselves - their inline
|
|
11409
|
+
* content is wrapped instead, keeping every `<font>` inside a single block.
|
|
11410
|
+
*/ __wrapSelectionRuns(nodes) {
|
|
11411
|
+
const fonts = [];
|
|
11412
|
+
let run = [];
|
|
11413
|
+
const flush = ()=>{
|
|
11414
|
+
if (run.length) {
|
|
11415
|
+
fonts.push(this.__wrapRunInFont(run));
|
|
11416
|
+
run = [];
|
|
11417
|
+
}
|
|
11418
|
+
};
|
|
11419
|
+
nodes.forEach((node)=>{
|
|
11420
|
+
if (_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isElement(node) && this.__isOrContainsBlock(node)) {
|
|
11421
|
+
flush();
|
|
11422
|
+
fonts.push(...this.__wrapSelectionRuns((0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.toArray)(node.childNodes)));
|
|
11423
|
+
} else {
|
|
11424
|
+
if (run.length && run[run.length - 1].parentNode !== node.parentNode) {
|
|
11425
|
+
flush();
|
|
11426
|
+
}
|
|
11427
|
+
run.push(node);
|
|
11428
|
+
}
|
|
11429
|
+
});
|
|
11430
|
+
flush();
|
|
11431
|
+
return fonts;
|
|
11432
|
+
}
|
|
11433
|
+
__isOrContainsBlock(node) {
|
|
11434
|
+
if (_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isBlock(node)) {
|
|
11435
|
+
return true;
|
|
11436
|
+
}
|
|
11437
|
+
return (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.toArray)(node.childNodes).some((child)=>this.__isOrContainsBlock(child));
|
|
11438
|
+
}
|
|
11439
|
+
__wrapRunInFont(run) {
|
|
11440
|
+
var _a;
|
|
11441
|
+
const font = this.j.createInside.element('font');
|
|
11442
|
+
const [first] = run;
|
|
11443
|
+
(_a = first.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(font, first);
|
|
11444
|
+
run.forEach((node)=>font.appendChild(node));
|
|
11445
|
+
return font;
|
|
11446
|
+
}
|
|
11302
11447
|
/**
|
|
11303
11448
|
* Wrap all selected fragments inside Tag or apply some callback
|
|
11304
11449
|
*/ *wrapInTagGen(fakes) {
|
|
@@ -11312,20 +11457,7 @@ class Selection {
|
|
|
11312
11457
|
_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.unwrap(font);
|
|
11313
11458
|
return;
|
|
11314
11459
|
}
|
|
11315
|
-
|
|
11316
|
-
(0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.$$)('*[style*=font-size]', this.area).forEach((elm)=>{
|
|
11317
|
-
(0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(elm, 'data-font-size', elm.style.fontSize.toString());
|
|
11318
|
-
elm.style.removeProperty('font-size');
|
|
11319
|
-
});
|
|
11320
|
-
this.j.nativeExecCommand('fontsize', false, '7');
|
|
11321
|
-
(0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.$$)('*[data-font-size]', this.area).forEach((elm)=>{
|
|
11322
|
-
const fontSize = (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(elm, 'data-font-size');
|
|
11323
|
-
if (fontSize) {
|
|
11324
|
-
elm.style.fontSize = fontSize;
|
|
11325
|
-
(0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(elm, 'data-font-size', null);
|
|
11326
|
-
}
|
|
11327
|
-
});
|
|
11328
|
-
const elms = (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.$$)('font[size="7"]', this.area);
|
|
11460
|
+
const elms = this.__wrapSelectionFragments();
|
|
11329
11461
|
for (const font of elms){
|
|
11330
11462
|
const { firstChild, lastChild } = font;
|
|
11331
11463
|
if (firstChild && firstChild === lastChild && (0,_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_4__.isMarker)(firstChild)) {
|
|
@@ -13071,9 +13203,23 @@ class AsyncStorage {
|
|
|
13071
13203
|
}
|
|
13072
13204
|
}).call(this);
|
|
13073
13205
|
}
|
|
13074
|
-
static makeStorage(persistentOrStrategy = false, suffix) {
|
|
13206
|
+
static makeStorage(persistentOrStrategy = false, suffix, options) {
|
|
13075
13207
|
let provider = undefined;
|
|
13076
13208
|
let storage = null;
|
|
13209
|
+
// An explicit `defaultProvider` overrides the strategy-based selection
|
|
13210
|
+
// below and decides which provider backs the storage.
|
|
13211
|
+
const defaultProvider = options === null || options === void 0 ? void 0 : options.defaultProvider;
|
|
13212
|
+
if (defaultProvider != null) {
|
|
13213
|
+
if (defaultProvider === 'local') {
|
|
13214
|
+
provider = (0,_engines_local_storage_provider_js__WEBPACK_IMPORTED_MODULE_2__.canUsePersistentStorage)('localStorage') ? new _engines_local_storage_provider_js__WEBPACK_IMPORTED_MODULE_2__.LocalStorageProvider(_storage_js__WEBPACK_IMPORTED_MODULE_4__.StorageKey + (suffix || '')) : new _engines_memory_storage_provider_js__WEBPACK_IMPORTED_MODULE_3__.MemoryStorageProvider();
|
|
13215
|
+
} else if (defaultProvider === 'memory') {
|
|
13216
|
+
provider = new _engines_memory_storage_provider_js__WEBPACK_IMPORTED_MODULE_3__.MemoryStorageProvider();
|
|
13217
|
+
} else {
|
|
13218
|
+
// A custom IAsyncStorage implementation, used as-is.
|
|
13219
|
+
provider = defaultProvider;
|
|
13220
|
+
}
|
|
13221
|
+
return new AsyncStorage(Promise.resolve(provider), suffix);
|
|
13222
|
+
}
|
|
13077
13223
|
if (persistentOrStrategy === 'localStorage' || persistentOrStrategy === 'sessionStorage') {
|
|
13078
13224
|
if ((0,_engines_local_storage_provider_js__WEBPACK_IMPORTED_MODULE_2__.canUsePersistentStorage)(persistentOrStrategy)) {
|
|
13079
13225
|
provider = new _engines_local_storage_provider_js__WEBPACK_IMPORTED_MODULE_2__.LocalStorageProvider(_storage_js__WEBPACK_IMPORTED_MODULE_4__.StorageKey + (suffix || ''), persistentOrStrategy);
|
|
@@ -13396,7 +13542,12 @@ function clearUseIndexedDBCache() {
|
|
|
13396
13542
|
}
|
|
13397
13543
|
delete(key) {
|
|
13398
13544
|
try {
|
|
13399
|
-
this.storage.
|
|
13545
|
+
const buffer = this.storage.getItem(this.rootKey);
|
|
13546
|
+
if (buffer) {
|
|
13547
|
+
const json = JSON.parse(buffer);
|
|
13548
|
+
delete json[key];
|
|
13549
|
+
this.storage.setItem(this.rootKey, JSON.stringify(json));
|
|
13550
|
+
}
|
|
13400
13551
|
} catch (_a) {}
|
|
13401
13552
|
return this;
|
|
13402
13553
|
}
|
|
@@ -16871,9 +17022,23 @@ class ViewWithToolbar extends _view_js__WEBPACK_IMPORTED_MODULE_9__.View {
|
|
|
16871
17022
|
if (!this.o.fullsize && ((0,_helpers_checker_is_string_js__WEBPACK_IMPORTED_MODULE_5__.isString)(this.o.toolbar) || _dom_dom_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isHTMLElement(this.o.toolbar))) {
|
|
16872
17023
|
return (0,_helpers_utils_selector_js__WEBPACK_IMPORTED_MODULE_6__.resolveElement)(this.o.toolbar, this.o.shadowRoot || this.od);
|
|
16873
17024
|
}
|
|
16874
|
-
this.o.toolbar &&
|
|
17025
|
+
this.o.toolbar && this.__appendToolbarBox();
|
|
16875
17026
|
return this.__defaultToolbarContainer;
|
|
16876
17027
|
}
|
|
17028
|
+
/**
|
|
17029
|
+
* Keep the toolbar box as the first child of the container, except that
|
|
17030
|
+
* children flagged with `data-jodit-above-toolbar` (e.g. the `above`
|
|
17031
|
+
* workplace slot used for presence bars and banners) stay above it.
|
|
17032
|
+
*/ __appendToolbarBox() {
|
|
17033
|
+
const box = this.__defaultToolbarContainer;
|
|
17034
|
+
let anchor = this.container.firstElementChild;
|
|
17035
|
+
while(anchor && anchor !== box && anchor.hasAttribute('data-jodit-above-toolbar')){
|
|
17036
|
+
anchor = anchor.nextElementSibling;
|
|
17037
|
+
}
|
|
17038
|
+
if (anchor !== box) {
|
|
17039
|
+
this.container.insertBefore(box, anchor);
|
|
17040
|
+
}
|
|
17041
|
+
}
|
|
16877
17042
|
/**
|
|
16878
17043
|
* Change panel container
|
|
16879
17044
|
*/ setPanel(element) {
|
|
@@ -17075,7 +17240,7 @@ let View = View_1 = class View extends _component_component_js__WEBPACK_IMPORTED
|
|
|
17075
17240
|
/**
|
|
17076
17241
|
* Container for persistent set/get value
|
|
17077
17242
|
*/ get asyncStorage() {
|
|
17078
|
-
return _storage_async_storage_js__WEBPACK_IMPORTED_MODULE_12__.AsyncStorage.makeStorage(true, this.id);
|
|
17243
|
+
return _storage_async_storage_js__WEBPACK_IMPORTED_MODULE_12__.AsyncStorage.makeStorage(true, this.id, this.o.asyncStorage);
|
|
17079
17244
|
}
|
|
17080
17245
|
/**
|
|
17081
17246
|
* Short alias for `create`
|
|
@@ -18269,6 +18434,12 @@ let Jodit = Jodit_1 = class Jodit extends _modules_index_js__WEBPACK_IMPORTED_MO
|
|
|
18269
18434
|
element.style.display = 'none';
|
|
18270
18435
|
}
|
|
18271
18436
|
const SLOT = 'workplace-slot';
|
|
18437
|
+
// A slot that always stays ABOVE the toolbar (presence bars, banners…).
|
|
18438
|
+
// The `data-jodit-above-toolbar` attribute tells ViewWithToolbar to keep
|
|
18439
|
+
// the toolbar box below it when (re)attaching the toolbar container.
|
|
18440
|
+
const aboveSlot = this.c.div(this.getFullElName(SLOT, 'above'), NOEDIT);
|
|
18441
|
+
aboveSlot.setAttribute('data-jodit-above-toolbar', '');
|
|
18442
|
+
_modules_index_js__WEBPACK_IMPORTED_MODULE_7__.Dom.appendChildFirst(container, aboveSlot);
|
|
18272
18443
|
const topSlot = this.c.div(this.getFullElName(SLOT, 'top'), NOEDIT);
|
|
18273
18444
|
container.appendChild(topSlot);
|
|
18274
18445
|
const centerSlot = this.c.div(this.getFullElName(SLOT, 'center'), NOEDIT);
|
|
@@ -18301,6 +18472,7 @@ let Jodit = Jodit_1 = class Jodit extends _modules_index_js__WEBPACK_IMPORTED_MO
|
|
|
18301
18472
|
container,
|
|
18302
18473
|
workplace,
|
|
18303
18474
|
slots: {
|
|
18475
|
+
above: aboveSlot,
|
|
18304
18476
|
top: topSlot,
|
|
18305
18477
|
bottom: bottomPanel,
|
|
18306
18478
|
center: centerSlot,
|