jodit-pro 4.12.22 → 4.12.24
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 +1 -1
- package/es2015/jodit.fat.min.js +7 -7
- package/es2015/jodit.js +337 -79
- package/es2015/jodit.min.js +7 -7
- 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.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/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.js +9 -9
- package/es2018/jodit.min.js +7 -7
- 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/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 +1 -1
- package/es2021/jodit.fat.min.js +12 -12
- package/es2021/jodit.js +337 -79
- package/es2021/jodit.min.js +9 -9
- 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.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/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 +1 -1
- package/es2021.en/jodit.fat.min.js +9 -9
- package/es2021.en/jodit.js +337 -79
- package/es2021.en/jodit.min.js +9 -9
- 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.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/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 +2 -2
- package/es5/jodit.fat.min.js +2 -2
- package/es5/jodit.js +366 -85
- package/es5/jodit.min.css +2 -2
- 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.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/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.12.
|
|
4
|
+
* Version: v4.12.24
|
|
5
5
|
* Url: https://xdsoft.net/jodit/pro/
|
|
6
6
|
* License(s): SEE LICENSE IN LICENSE.md
|
|
7
7
|
*/
|
|
@@ -1797,7 +1797,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1797
1797
|
* ```
|
|
1798
1798
|
* @packageDocumentation
|
|
1799
1799
|
* @module constants
|
|
1800
|
-
*/ const APP_VERSION = "4.12.
|
|
1800
|
+
*/ const APP_VERSION = "4.12.24";
|
|
1801
1801
|
// prettier-ignore
|
|
1802
1802
|
const ES = "es2015";
|
|
1803
1803
|
const IS_ES_MODERN = true;
|
|
@@ -5648,6 +5648,16 @@ function normalizeCSS(s) {
|
|
|
5648
5648
|
iframeDoc.open();
|
|
5649
5649
|
iframeDoc.write(html);
|
|
5650
5650
|
iframeDoc.close();
|
|
5651
|
+
// Word marks its auto-generated list markers (the literal
|
|
5652
|
+
// bullet/number, e.g. `1.` or `·`) with `mso-list:Ignore`.
|
|
5653
|
+
// They are display-only and must not be imported, otherwise
|
|
5654
|
+
// the marker text leaks into the content. Drop them before any
|
|
5655
|
+
// style normalization strips the `mso-list` hint. See #948
|
|
5656
|
+
_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.each(iframeDoc.body, (node)=>{
|
|
5657
|
+
if (_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isElement(node) && /mso-list:\s*ignore/i.test(node.getAttribute('style') || '')) {
|
|
5658
|
+
_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(node);
|
|
5659
|
+
}
|
|
5660
|
+
});
|
|
5651
5661
|
try {
|
|
5652
5662
|
for(let i = 0; i < iframeDoc.styleSheets.length; i += 1){
|
|
5653
5663
|
const rules = iframeDoc.styleSheets[i].cssRules;
|
|
@@ -5744,6 +5754,15 @@ function normalizeCSS(s) {
|
|
|
5744
5754
|
_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.unwrap(node);
|
|
5745
5755
|
break;
|
|
5746
5756
|
default:
|
|
5757
|
+
// Word marks its auto-generated list markers
|
|
5758
|
+
// (the literal bullet/number, e.g. `1.` or `·`)
|
|
5759
|
+
// with `mso-list:Ignore`. They are display-only
|
|
5760
|
+
// and must not be imported, otherwise the marker
|
|
5761
|
+
// text leaks into the content. See #948
|
|
5762
|
+
if (/mso-list:\s*ignore/i.test(node.getAttribute('style') || '')) {
|
|
5763
|
+
marks.push(node);
|
|
5764
|
+
break;
|
|
5765
|
+
}
|
|
5747
5766
|
(0,_array_to_array_js__WEBPACK_IMPORTED_MODULE_2__.toArray)(node.attributes).forEach((attr)=>{
|
|
5748
5767
|
if ([
|
|
5749
5768
|
'src',
|
|
@@ -5881,20 +5900,20 @@ function normalizeCSS(s) {
|
|
|
5881
5900
|
return;
|
|
5882
5901
|
}
|
|
5883
5902
|
const removeEvents = (_a = options.removeEventAttributes) !== null && _a !== void 0 ? _a : options.removeOnError;
|
|
5884
|
-
|
|
5885
|
-
|
|
5886
|
-
|
|
5887
|
-
|
|
5888
|
-
|
|
5889
|
-
(
|
|
5890
|
-
|
|
5891
|
-
|
|
5892
|
-
|
|
5893
|
-
|
|
5894
|
-
|
|
5895
|
-
|
|
5896
|
-
(
|
|
5897
|
-
const rel =
|
|
5903
|
+
// Single synchronous traversal of the subtree. Besides removing event
|
|
5904
|
+
// handlers and `javascript:` links, `sanitizeHTMLElement` neutralises
|
|
5905
|
+
// executable `iframe[srcdoc]`, `data:text/html` / SVG `data:` document
|
|
5906
|
+
// sources and dangerous schemes in every URL-bearing attribute.
|
|
5907
|
+
const process = (node)=>{
|
|
5908
|
+
if (!_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement(node)) {
|
|
5909
|
+
return;
|
|
5910
|
+
}
|
|
5911
|
+
if (removeEvents) {
|
|
5912
|
+
removeAllEventAttributes(node);
|
|
5913
|
+
}
|
|
5914
|
+
sanitizeHTMLElement(node, options);
|
|
5915
|
+
if (options.safeLinksTarget && node.nodeName === 'A' && node.getAttribute('target') === '_blank') {
|
|
5916
|
+
const rel = node.getAttribute('rel') || '';
|
|
5898
5917
|
const parts = rel.split(/\s+/).filter(Boolean);
|
|
5899
5918
|
if (!parts.includes('noopener')) {
|
|
5900
5919
|
parts.push('noopener');
|
|
@@ -5902,9 +5921,11 @@ function normalizeCSS(s) {
|
|
|
5902
5921
|
if (!parts.includes('noreferrer')) {
|
|
5903
5922
|
parts.push('noreferrer');
|
|
5904
5923
|
}
|
|
5905
|
-
(0,_utils_index_js__WEBPACK_IMPORTED_MODULE_1__.attr)(
|
|
5906
|
-
}
|
|
5907
|
-
}
|
|
5924
|
+
(0,_utils_index_js__WEBPACK_IMPORTED_MODULE_1__.attr)(node, 'rel', parts.join(' '));
|
|
5925
|
+
}
|
|
5926
|
+
};
|
|
5927
|
+
process(box);
|
|
5928
|
+
_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.each(box, process);
|
|
5908
5929
|
}
|
|
5909
5930
|
/**
|
|
5910
5931
|
* Remove all on* event handler attributes from an element
|
|
@@ -5925,6 +5946,41 @@ function normalizeCSS(s) {
|
|
|
5925
5946
|
}
|
|
5926
5947
|
return effected;
|
|
5927
5948
|
}
|
|
5949
|
+
/**
|
|
5950
|
+
* URL-bearing attributes (besides `href`) that can load or execute content.
|
|
5951
|
+
*/ const URL_ATTRIBUTES = [
|
|
5952
|
+
'src',
|
|
5953
|
+
'data',
|
|
5954
|
+
'action',
|
|
5955
|
+
'formaction',
|
|
5956
|
+
'poster',
|
|
5957
|
+
'background',
|
|
5958
|
+
'xlink:href'
|
|
5959
|
+
];
|
|
5960
|
+
/**
|
|
5961
|
+
* Tags that load their URL as a *document* (scripts inside run). An SVG data
|
|
5962
|
+
* URL is only an XSS vector here — as an `<img>` source it renders inertly.
|
|
5963
|
+
*/ const DOCUMENT_EMBED_TAGS = new Set([
|
|
5964
|
+
'iframe',
|
|
5965
|
+
'frame',
|
|
5966
|
+
'object',
|
|
5967
|
+
'embed'
|
|
5968
|
+
]);
|
|
5969
|
+
/**
|
|
5970
|
+
* Detects executable / script-bearing URL schemes. The attribute value is
|
|
5971
|
+
* already HTML-entity-decoded by `getAttribute`, so only whitespace and
|
|
5972
|
+
* control characters (which browsers ignore inside a scheme) need stripping.
|
|
5973
|
+
*/ function isDangerousUrl(value, tagName) {
|
|
5974
|
+
// eslint-disable-next-line no-control-regex
|
|
5975
|
+
const normalized = value.replace(/[\u0000-\u0020]+/g, '').toLowerCase();
|
|
5976
|
+
if (/^(?:javascript|vbscript|livescript|mocha):/.test(normalized)) {
|
|
5977
|
+
return true;
|
|
5978
|
+
}
|
|
5979
|
+
if (/^data:(?:text\/html|application\/xhtml)/.test(normalized)) {
|
|
5980
|
+
return true;
|
|
5981
|
+
}
|
|
5982
|
+
return /^data:image\/svg/.test(normalized) && DOCUMENT_EMBED_TAGS.has(tagName);
|
|
5983
|
+
}
|
|
5928
5984
|
function sanitizeHTMLElement(elm, { safeJavaScriptLink, removeOnError } = {
|
|
5929
5985
|
safeJavaScriptLink: true,
|
|
5930
5986
|
removeOnError: true
|
|
@@ -5942,6 +5998,22 @@ function sanitizeHTMLElement(elm, { safeJavaScriptLink, removeOnError } = {
|
|
|
5942
5998
|
(0,_utils_index_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'href', location.protocol + '//' + href);
|
|
5943
5999
|
effected = true;
|
|
5944
6000
|
}
|
|
6001
|
+
if (safeJavaScriptLink) {
|
|
6002
|
+
// `srcdoc` runs its content as a full HTML document — drop it entirely.
|
|
6003
|
+
if (elm.hasAttribute('srcdoc')) {
|
|
6004
|
+
(0,_utils_index_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'srcdoc', null);
|
|
6005
|
+
effected = true;
|
|
6006
|
+
}
|
|
6007
|
+
// Strip executable schemes from any other URL-bearing attribute.
|
|
6008
|
+
const tagName = elm.nodeName.toLowerCase();
|
|
6009
|
+
for (const name of URL_ATTRIBUTES){
|
|
6010
|
+
const value = elm.getAttribute(name);
|
|
6011
|
+
if (value && isDangerousUrl(value, tagName)) {
|
|
6012
|
+
(0,_utils_index_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, name, null);
|
|
6013
|
+
effected = true;
|
|
6014
|
+
}
|
|
6015
|
+
}
|
|
6016
|
+
}
|
|
5945
6017
|
return effected;
|
|
5946
6018
|
}
|
|
5947
6019
|
|
|
@@ -5989,7 +6061,7 @@ const ALONE_TAGS = new Set([
|
|
|
5989
6061
|
]);
|
|
5990
6062
|
/**
|
|
5991
6063
|
* Extract plain text from HTML text
|
|
5992
|
-
*/ function stripTags(html, doc = document, exclude = null) {
|
|
6064
|
+
*/ function stripTags(html, doc = document, exclude = null, blockBr = false) {
|
|
5993
6065
|
const tmp = doc.createElement('div');
|
|
5994
6066
|
if ((0,_checker_is_string_js__WEBPACK_IMPORTED_MODULE_1__.isString)(html)) {
|
|
5995
6067
|
tmp.innerHTML = html;
|
|
@@ -6003,7 +6075,7 @@ const ALONE_TAGS = new Set([
|
|
|
6003
6075
|
}
|
|
6004
6076
|
if (exclude && _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(p, exclude)) {
|
|
6005
6077
|
const tag = p.nodeName.toLowerCase();
|
|
6006
|
-
const text = !_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(p, ALONE_TAGS) ? `%%%jodit-${tag}%%%${stripTags(p.innerHTML, doc, exclude)}%%%/jodit-${tag}%%%` : `%%%jodit-single-${tag}%%%`;
|
|
6078
|
+
const text = !_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(p, ALONE_TAGS) ? `%%%jodit-${tag}%%%${stripTags(p.innerHTML, doc, exclude, blockBr)}%%%/jodit-${tag}%%%` : `%%%jodit-single-${tag}%%%`;
|
|
6007
6079
|
_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.before(p, doc.createTextNode(text));
|
|
6008
6080
|
_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(p);
|
|
6009
6081
|
return;
|
|
@@ -6020,7 +6092,11 @@ const ALONE_TAGS = new Set([
|
|
|
6020
6092
|
return;
|
|
6021
6093
|
}
|
|
6022
6094
|
if (nx) {
|
|
6023
|
-
|
|
6095
|
+
// By default blocks are joined with a single space (single-line
|
|
6096
|
+
// plain text). When `blockBr` is set, separate them with a line
|
|
6097
|
+
// break instead, so paragraph structure survives — e.g. the
|
|
6098
|
+
// "Insert only Text" paste option. See #1232
|
|
6099
|
+
pr.insertBefore(doc.createTextNode(blockBr ? '%%%jodit-single-br%%%' : ' '), nx);
|
|
6024
6100
|
}
|
|
6025
6101
|
});
|
|
6026
6102
|
return restoreTags((0,_string_trim_js__WEBPACK_IMPORTED_MODULE_2__.trim)(tmp.innerText));
|
|
@@ -7537,6 +7613,18 @@ const completeUrl = (url)=>{
|
|
|
7537
7613
|
|
|
7538
7614
|
|
|
7539
7615
|
|
|
7616
|
+
/**
|
|
7617
|
+
* Keys that must never be copied from a (potentially untrusted) config object —
|
|
7618
|
+
* assigning them during a recursive merge can reach and mutate
|
|
7619
|
+
* `Object.prototype` (prototype pollution, CWE-1321).
|
|
7620
|
+
*/ const UNSAFE_PROTO_KEYS = [
|
|
7621
|
+
'__proto__',
|
|
7622
|
+
'constructor',
|
|
7623
|
+
'prototype'
|
|
7624
|
+
];
|
|
7625
|
+
function isUnsafeProtoKey(key) {
|
|
7626
|
+
return UNSAFE_PROTO_KEYS.indexOf(key) !== -1;
|
|
7627
|
+
}
|
|
7540
7628
|
/**
|
|
7541
7629
|
* @example
|
|
7542
7630
|
* ```js
|
|
@@ -7585,6 +7673,9 @@ const completeUrl = (url)=>{
|
|
|
7585
7673
|
}
|
|
7586
7674
|
const newOpt = {};
|
|
7587
7675
|
Object.keys(options).forEach((key)=>{
|
|
7676
|
+
if (isUnsafeProtoKey(key)) {
|
|
7677
|
+
return;
|
|
7678
|
+
}
|
|
7588
7679
|
const opt = options[key], protoKey = proto ? proto[key] : null;
|
|
7589
7680
|
if ((0,_checker_is_plain_object_js__WEBPACK_IMPORTED_MODULE_1__.isPlainObject)(opt) && (0,_checker_is_plain_object_js__WEBPACK_IMPORTED_MODULE_1__.isPlainObject)(protoKey) && !(0,_extend_js__WEBPACK_IMPORTED_MODULE_5__.isAtom)(opt)) {
|
|
7590
7681
|
newOpt[key] = ConfigProto(opt, protoKey, deep + 1);
|
|
@@ -7646,6 +7737,9 @@ function ConfigFlatten(obj) {
|
|
|
7646
7737
|
* @see {@link ConfigProto} for the prototype-chain variant used at editor creation time
|
|
7647
7738
|
*/ function ConfigMerge(target, source) {
|
|
7648
7739
|
Object.keys(source).forEach((key)=>{
|
|
7740
|
+
if (isUnsafeProtoKey(key)) {
|
|
7741
|
+
return;
|
|
7742
|
+
}
|
|
7649
7743
|
const srcVal = source[key];
|
|
7650
7744
|
const tgtVal = target[key];
|
|
7651
7745
|
if ((0,_checker_is_plain_object_js__WEBPACK_IMPORTED_MODULE_1__.isPlainObject)(srcVal) && (0,_checker_is_plain_object_js__WEBPACK_IMPORTED_MODULE_1__.isPlainObject)(tgtVal) && !(0,_extend_js__WEBPACK_IMPORTED_MODULE_5__.isAtom)(srcVal)) {
|
|
@@ -7690,7 +7784,6 @@ function ConfigDeepFlatten(obj) {
|
|
|
7690
7784
|
return url;
|
|
7691
7785
|
}
|
|
7692
7786
|
const parser = _constants_js__WEBPACK_IMPORTED_MODULE_0__.globalDocument.createElement('a');
|
|
7693
|
-
const pattern1 = /(?:http?s?:\/\/)?(?:www\.)?(?:vimeo\.com)\/?(.+)/g;
|
|
7694
7787
|
parser.href = url;
|
|
7695
7788
|
if (!width) {
|
|
7696
7789
|
width = 400;
|
|
@@ -7702,19 +7795,41 @@ function ConfigDeepFlatten(obj) {
|
|
|
7702
7795
|
switch(parser.hostname){
|
|
7703
7796
|
case 'www.vimeo.com':
|
|
7704
7797
|
case 'vimeo.com':
|
|
7705
|
-
|
|
7798
|
+
{
|
|
7799
|
+
// The numeric video id can be preceded by `channels/<name>/` or
|
|
7800
|
+
// `groups/<name>/videos/` and followed by tracking params (e.g.
|
|
7801
|
+
// `?share=copy`). Unlisted videos keep a hash right after the id
|
|
7802
|
+
// (`vimeo.com/<id>/<hash>`). Extract the id (+ hash) from the path
|
|
7803
|
+
// so all of those forms produce a valid embed. See #1209
|
|
7804
|
+
const segments = parser.pathname.split('/').filter(Boolean);
|
|
7805
|
+
const idIndex = segments.findIndex((s)=>/^\d+$/.test(s));
|
|
7806
|
+
if (idIndex === -1) {
|
|
7807
|
+
return url;
|
|
7808
|
+
}
|
|
7809
|
+
let path = segments[idIndex];
|
|
7810
|
+
const hash = segments[idIndex + 1];
|
|
7811
|
+
if (hash && idIndex === 0) {
|
|
7812
|
+
path += '/' + hash;
|
|
7813
|
+
}
|
|
7814
|
+
return '<iframe width="' + width + '" height="' + height + '" src="' + protocol + '//player.vimeo.com/video/' + path + '" frameborder="0" allowfullscreen></iframe>';
|
|
7815
|
+
}
|
|
7706
7816
|
case 'youtube.com':
|
|
7707
7817
|
case 'www.youtube.com':
|
|
7818
|
+
case 'm.youtube.com':
|
|
7819
|
+
case 'music.youtube.com':
|
|
7708
7820
|
case 'youtu.be':
|
|
7709
7821
|
case 'www.youtu.be':
|
|
7710
7822
|
{
|
|
7711
|
-
const query = parser.search ? (0,_parse_query_js__WEBPACK_IMPORTED_MODULE_2__.parseQuery)(parser.search) : {
|
|
7712
|
-
|
|
7713
|
-
|
|
7714
|
-
|
|
7715
|
-
|
|
7716
|
-
|
|
7717
|
-
|
|
7823
|
+
const query = parser.search ? (0,_parse_query_js__WEBPACK_IMPORTED_MODULE_2__.parseQuery)(parser.search) : {};
|
|
7824
|
+
// `youtube.com/watch` keeps the video id in the `v` query
|
|
7825
|
+
// parameter, while the short `youtu.be/<id>` links and the
|
|
7826
|
+
// `/embed/`, `/shorts/`, `/live/` paths keep it in the pathname.
|
|
7827
|
+
// Modern share urls add tracking params (e.g. `?si=`, `?t=`), so
|
|
7828
|
+
// the pathname must still be used as a fallback when there is no
|
|
7829
|
+
// `v`. See #1209
|
|
7830
|
+
let v = query.v || parser.pathname.substring(1);
|
|
7831
|
+
v = v.replace(/^(watch|embed|shorts|live|v)\//, '').replace(/\/$/, '');
|
|
7832
|
+
return v ? '<iframe width="' + width + '" height="' + height + '" src="' + protocol + '//www.youtube.com/embed/' + v + '" frameborder="0" allowfullscreen></iframe>' : url;
|
|
7718
7833
|
}
|
|
7719
7834
|
}
|
|
7720
7835
|
return url;
|
|
@@ -18126,6 +18241,23 @@ let Jodit = Jodit_1 = class Jodit extends _modules_index_js__WEBPACK_IMPORTED_MO
|
|
|
18126
18241
|
}
|
|
18127
18242
|
this.synchronizeValues();
|
|
18128
18243
|
}
|
|
18244
|
+
}).on(this.ow, 'mouseup', (event)=>{
|
|
18245
|
+
if (this.o.readonly || this.__isSilentChange) {
|
|
18246
|
+
return;
|
|
18247
|
+
}
|
|
18248
|
+
// When a selection is started inside the editor and the
|
|
18249
|
+
// mouse button is released outside of it, the editable
|
|
18250
|
+
// area never receives the `mouseup` event, so the toolbar
|
|
18251
|
+
// state (active buttons) is not recalculated. Re-fire the
|
|
18252
|
+
// event manually for that case while the selection still
|
|
18253
|
+
// belongs to the editor. See #1251
|
|
18254
|
+
const target = event.target;
|
|
18255
|
+
const insideEditor = Boolean(target && (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.isNumber)(target.nodeType) && editor.contains(target));
|
|
18256
|
+
if (insideEditor || !this.s.isInsideArea) {
|
|
18257
|
+
return;
|
|
18258
|
+
}
|
|
18259
|
+
this.e.fire('changeSelection');
|
|
18260
|
+
this.synchronizeValues();
|
|
18129
18261
|
});
|
|
18130
18262
|
}
|
|
18131
18263
|
fetch(url, options) {
|
|
@@ -29832,9 +29964,14 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.uploader = {
|
|
|
29832
29964
|
insertImageAsBase64URI: false,
|
|
29833
29965
|
imagesExtensions: [
|
|
29834
29966
|
'jpg',
|
|
29835
|
-
'png',
|
|
29836
29967
|
'jpeg',
|
|
29837
|
-
'
|
|
29968
|
+
'png',
|
|
29969
|
+
'gif',
|
|
29970
|
+
'webp',
|
|
29971
|
+
'bmp',
|
|
29972
|
+
'svg',
|
|
29973
|
+
'tiff',
|
|
29974
|
+
'avif'
|
|
29838
29975
|
],
|
|
29839
29976
|
headers: null,
|
|
29840
29977
|
data: null,
|
|
@@ -33942,7 +34079,11 @@ function filterStyleProperties(style, allowed) {
|
|
|
33942
34079
|
if (!jodit.o.cleanHTML.removeEmptyElements) {
|
|
33943
34080
|
return false;
|
|
33944
34081
|
}
|
|
33945
|
-
|
|
34082
|
+
// Never drop an empty inline element that currently holds the caret — it is
|
|
34083
|
+
// a pending-format marker the user is about to type into (#1291). `current`
|
|
34084
|
+
// is captured before a click moves the caret, so also check the live caret.
|
|
34085
|
+
const liveCaret = jodit.s.isCollapsed() ? jodit.s.range.startContainer : null;
|
|
34086
|
+
return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isElement(node) && node.nodeName.match(_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_INLINE) != null && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTemporary(node) && (0,_core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_2__.trimInv)(node.innerHTML).length === 0 && (current == null || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isOrContains(node, current)) && (liveCaret == null || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isOrContains(node, liveCaret));
|
|
33946
34087
|
}
|
|
33947
34088
|
|
|
33948
34089
|
|
|
@@ -34264,8 +34405,9 @@ _config_js__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.controls.brush = {
|
|
|
34264
34405
|
const update = (key, value)=>{
|
|
34265
34406
|
if (value && value !== (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.css)(editor.editor, key).toString()) {
|
|
34266
34407
|
button.state.icon.fill = value;
|
|
34267
|
-
return;
|
|
34408
|
+
return true;
|
|
34268
34409
|
}
|
|
34410
|
+
return false;
|
|
34269
34411
|
};
|
|
34270
34412
|
if (color) {
|
|
34271
34413
|
const mode = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.dataBind)(button, 'color');
|
|
@@ -34275,8 +34417,16 @@ _config_js__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.controls.brush = {
|
|
|
34275
34417
|
const current = editor.s.current();
|
|
34276
34418
|
if (current && !button.state.disabled) {
|
|
34277
34419
|
const currentBpx = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(current, _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement, editor.editor) || editor.editor;
|
|
34278
|
-
|
|
34279
|
-
|
|
34420
|
+
// The icon's fill mirrors the current text/background color so the
|
|
34421
|
+
// button reflects the formatting under the caret. Both calls run so
|
|
34422
|
+
// that a background color (the second call) wins over the text color
|
|
34423
|
+
// when both are set. Keep the computed fill instead of resetting it
|
|
34424
|
+
// below. See #195, #182
|
|
34425
|
+
const hasColor = update('color', (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.css)(currentBpx, 'color').toString());
|
|
34426
|
+
const hasBackground = update('background-color', (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.css)(currentBpx, 'background-color').toString());
|
|
34427
|
+
if (hasColor || hasBackground) {
|
|
34428
|
+
return;
|
|
34429
|
+
}
|
|
34280
34430
|
}
|
|
34281
34431
|
button.state.icon.fill = '';
|
|
34282
34432
|
button.state.activated = false;
|
|
@@ -35075,11 +35225,33 @@ var DragState;
|
|
|
35075
35225
|
*/ class dragAndDropElement extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__.Plugin {
|
|
35076
35226
|
/** @override */ afterInit() {
|
|
35077
35227
|
this.dragList = this.j.o.draggableTags ? (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.splitArray)(this.j.o.draggableTags).filter(Boolean).map((item)=>item.toLowerCase()) : [];
|
|
35228
|
+
// Allow another plugin (e.g. a drag handle/anchor) to start dragging
|
|
35229
|
+
// an element programmatically, regardless of the `draggableTags` list.
|
|
35230
|
+
this.j.e.on('startDragElement', this.onStartDragElement);
|
|
35078
35231
|
if (!this.dragList.length) {
|
|
35079
35232
|
return;
|
|
35080
35233
|
}
|
|
35081
35234
|
this.j.e.on('mousedown dragstart', this.onDragStart);
|
|
35082
35235
|
}
|
|
35236
|
+
/**
|
|
35237
|
+
* Start dragging a specific element programmatically.
|
|
35238
|
+
*
|
|
35239
|
+
* Allows a separate UI element (for example a drag handle/anchor shown next
|
|
35240
|
+
* to a block) to initiate the drag without the user pressing directly on the
|
|
35241
|
+
* draggable element itself.
|
|
35242
|
+
*
|
|
35243
|
+
* @example
|
|
35244
|
+
* ```js
|
|
35245
|
+
* handle.addEventListener('mousedown', e => {
|
|
35246
|
+
* editor.e.fire('startDragElement', preBlock, e);
|
|
35247
|
+
* });
|
|
35248
|
+
* ```
|
|
35249
|
+
*/ onStartDragElement(element, event) {
|
|
35250
|
+
if (this.isInDestruct || this.state > DragState.IDLE || !element) {
|
|
35251
|
+
return;
|
|
35252
|
+
}
|
|
35253
|
+
this.startDragging(element, event);
|
|
35254
|
+
}
|
|
35083
35255
|
/**
|
|
35084
35256
|
* Drag start handler
|
|
35085
35257
|
*/ onDragStart(event) {
|
|
@@ -35101,11 +35273,18 @@ var DragState;
|
|
|
35101
35273
|
if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(lastTarget.parentElement, 'a') && lastTarget.parentElement.firstChild === lastTarget && lastTarget.parentElement.lastChild === lastTarget) {
|
|
35102
35274
|
lastTarget = lastTarget.parentElement;
|
|
35103
35275
|
}
|
|
35276
|
+
this.startDragging(lastTarget, event);
|
|
35277
|
+
}
|
|
35278
|
+
/**
|
|
35279
|
+
* Prepare the ghost element and switch to the waiting state.
|
|
35280
|
+
* Shared by the native mousedown handler and the programmatic
|
|
35281
|
+
* `startDragElement` event handler.
|
|
35282
|
+
*/ startDragging(target, event) {
|
|
35104
35283
|
this.startX = event.clientX;
|
|
35105
35284
|
this.startY = event.clientY;
|
|
35106
35285
|
this.isCopyMode = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.ctrlKey)(event); // we can move only element from editor
|
|
35107
|
-
this.draggable =
|
|
35108
|
-
(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.dataBind)(this.draggable, 'target',
|
|
35286
|
+
this.draggable = target.cloneNode(true);
|
|
35287
|
+
(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.dataBind)(this.draggable, 'target', target);
|
|
35109
35288
|
this.state = DragState.WAIT_DRAGGING;
|
|
35110
35289
|
this.addDragListeners();
|
|
35111
35290
|
}
|
|
@@ -35175,6 +35354,18 @@ var DragState;
|
|
|
35175
35354
|
}
|
|
35176
35355
|
const { parentElement } = fragment;
|
|
35177
35356
|
this.j.s.insertNode(fragment, true, false);
|
|
35357
|
+
// Dropping a non-editable block (e.g. a `<pre>` code sample) can leave an
|
|
35358
|
+
// invisible filler text node beside it. Remove it so the drop does not
|
|
35359
|
+
// introduce a stray empty line (which clean-html would otherwise strip
|
|
35360
|
+
// later, causing a flash).
|
|
35361
|
+
[
|
|
35362
|
+
fragment.previousSibling,
|
|
35363
|
+
fragment.nextSibling
|
|
35364
|
+
].forEach((node)=>{
|
|
35365
|
+
if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isEmptyTextNode(node)) {
|
|
35366
|
+
_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(node);
|
|
35367
|
+
}
|
|
35368
|
+
});
|
|
35178
35369
|
if (parentElement && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isEmpty(parentElement) && !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isCell(parentElement)) {
|
|
35179
35370
|
_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(parentElement);
|
|
35180
35371
|
}
|
|
@@ -35201,7 +35392,7 @@ var DragState;
|
|
|
35201
35392
|
}
|
|
35202
35393
|
/** @override */ beforeDestruct() {
|
|
35203
35394
|
this.onDragEnd();
|
|
35204
|
-
this.j.e.off('mousedown dragstart', this.onDragStart);
|
|
35395
|
+
this.j.e.off('mousedown dragstart', this.onDragStart).off('startDragElement', this.onStartDragElement);
|
|
35205
35396
|
this.removeDragListeners();
|
|
35206
35397
|
}
|
|
35207
35398
|
constructor(){
|
|
@@ -35217,6 +35408,9 @@ var DragState;
|
|
|
35217
35408
|
this.state = DragState.IDLE;
|
|
35218
35409
|
}
|
|
35219
35410
|
}
|
|
35411
|
+
__decorate([
|
|
35412
|
+
_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.autobind
|
|
35413
|
+
], dragAndDropElement.prototype, "onStartDragElement", null);
|
|
35220
35414
|
__decorate([
|
|
35221
35415
|
_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.autobind
|
|
35222
35416
|
], dragAndDropElement.prototype, "onDragStart", null);
|
|
@@ -35703,12 +35897,17 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('dtd', dtd);
|
|
|
35703
35897
|
if (beforeEnter !== undefined) {
|
|
35704
35898
|
return beforeEnter;
|
|
35705
35899
|
}
|
|
35706
|
-
|
|
35707
|
-
|
|
35708
|
-
|
|
35709
|
-
editor.
|
|
35710
|
-
|
|
35711
|
-
|
|
35900
|
+
// Delete-of-selection + new block must be a single history step,
|
|
35901
|
+
// otherwise pressing Enter over a selection needs two Ctrl+Z to undo
|
|
35902
|
+
// (the first only reverts to the intermediate empty state). #1292
|
|
35903
|
+
editor.history.snapshot.transaction(()=>{
|
|
35904
|
+
if (!editor.s.isCollapsed()) {
|
|
35905
|
+
editor.execCommand('Delete');
|
|
35906
|
+
}
|
|
35907
|
+
editor.s.focus();
|
|
35908
|
+
this.onEnter(event);
|
|
35909
|
+
editor.e.fire('afterEnter', event);
|
|
35910
|
+
});
|
|
35712
35911
|
editor.synchronizeValues(); // fire change
|
|
35713
35912
|
return false;
|
|
35714
35913
|
}
|
|
@@ -36840,7 +37039,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.commandToHotkeys = {
|
|
|
36840
37039
|
'cmd+shift+7'
|
|
36841
37040
|
],
|
|
36842
37041
|
insertUnorderedList: [
|
|
36843
|
-
'ctrl+shift+8,
|
|
37042
|
+
'ctrl+shift+8',
|
|
37043
|
+
'cmd+shift+8'
|
|
36844
37044
|
],
|
|
36845
37045
|
selectall: [
|
|
36846
37046
|
'ctrl+a',
|
|
@@ -39238,14 +39438,31 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.controls.indent = {
|
|
|
39238
39438
|
};
|
|
39239
39439
|
_config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.controls.outdent = {
|
|
39240
39440
|
isDisabled: (editor)=>{
|
|
39441
|
+
var _a;
|
|
39241
39442
|
const current = editor.s.current();
|
|
39242
|
-
if (current) {
|
|
39243
|
-
|
|
39244
|
-
|
|
39245
|
-
|
|
39246
|
-
|
|
39443
|
+
if (!current) {
|
|
39444
|
+
return true;
|
|
39445
|
+
}
|
|
39446
|
+
// A list item whose list is nested inside another list item can be
|
|
39447
|
+
// outdented (un-nested) by the `tab` plugin, even without an inline
|
|
39448
|
+
// indent margin. Keep the button enabled in that case. See #1247
|
|
39449
|
+
if ((_a = editor.o.tab) === null || _a === void 0 ? void 0 : _a.tabInsideLiInsertNewList) {
|
|
39450
|
+
const li = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(current, 'li', editor.editor);
|
|
39451
|
+
if (li) {
|
|
39452
|
+
const list = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(li, [
|
|
39453
|
+
'ul',
|
|
39454
|
+
'ol'
|
|
39455
|
+
], editor.editor);
|
|
39456
|
+
if (list && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(list, 'li', editor.editor)) {
|
|
39457
|
+
return false;
|
|
39458
|
+
}
|
|
39247
39459
|
}
|
|
39248
39460
|
}
|
|
39461
|
+
const currentBox = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(current, _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock, editor.editor);
|
|
39462
|
+
if (currentBox) {
|
|
39463
|
+
const arrow = (0,_helpers_js__WEBPACK_IMPORTED_MODULE_5__.getKey)(editor.o.direction, currentBox);
|
|
39464
|
+
return !currentBox.style[arrow] || parseInt(currentBox.style[arrow], 10) <= 0;
|
|
39465
|
+
}
|
|
39249
39466
|
return true;
|
|
39250
39467
|
},
|
|
39251
39468
|
tooltip: 'Decrease Indent'
|
|
@@ -42100,7 +42317,7 @@ class pasteFromWord extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__.P
|
|
|
42100
42317
|
}
|
|
42101
42318
|
case _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INSERT_ONLY_TEXT:
|
|
42102
42319
|
{
|
|
42103
|
-
html = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.stripTags)((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.cleanFromWord)(html));
|
|
42320
|
+
html = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.stripTags)((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.cleanFromWord)(html), this.j.ed, new Set(this.j.o.pasteExcludeStripTags), this.j.o.nl2brInPlainText);
|
|
42104
42321
|
break;
|
|
42105
42322
|
}
|
|
42106
42323
|
}
|
|
@@ -42679,10 +42896,15 @@ _config_js__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.controls.paste = {
|
|
|
42679
42896
|
html = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.cleanFromWord)(html);
|
|
42680
42897
|
break;
|
|
42681
42898
|
case _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INSERT_ONLY_TEXT:
|
|
42682
|
-
html = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.stripTags)(html, this.j.ed, new Set(this.j.o.pasteExcludeStripTags));
|
|
42899
|
+
html = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.stripTags)(html, this.j.ed, new Set(this.j.o.pasteExcludeStripTags), this.j.o.nl2brInPlainText);
|
|
42683
42900
|
break;
|
|
42684
42901
|
case _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INSERT_AS_TEXT:
|
|
42685
42902
|
html = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.htmlspecialchars)(html);
|
|
42903
|
+
// Keep the source line breaks instead of letting the raw
|
|
42904
|
+
// newlines collapse into spaces when rendered. See #1093
|
|
42905
|
+
if (this.j.o.nl2brInPlainText) {
|
|
42906
|
+
html = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.nl2br)(html);
|
|
42907
|
+
}
|
|
42686
42908
|
break;
|
|
42687
42909
|
default:
|
|
42688
42910
|
{
|
|
@@ -45479,13 +45701,14 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
|
|
|
45479
45701
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
45480
45702
|
|
|
45481
45703
|
/* unused harmony export select */
|
|
45482
|
-
/* harmony import */ var
|
|
45483
|
-
/* harmony import */ var
|
|
45484
|
-
/* harmony import */ var
|
|
45485
|
-
/* harmony import */ var
|
|
45486
|
-
/* harmony import */ var
|
|
45487
|
-
/* harmony import */ var
|
|
45488
|
-
/* harmony import */ var
|
|
45704
|
+
/* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
|
|
45705
|
+
/* harmony import */ var _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65478);
|
|
45706
|
+
/* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2748);
|
|
45707
|
+
/* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(580);
|
|
45708
|
+
/* harmony import */ var _core_helpers_string_camel_case_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(87058);
|
|
45709
|
+
/* harmony import */ var _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(50911);
|
|
45710
|
+
/* harmony import */ var _core_ui_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(67510);
|
|
45711
|
+
/* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(67215);
|
|
45489
45712
|
/*!
|
|
45490
45713
|
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
45491
45714
|
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
@@ -45503,6 +45726,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
|
|
|
45503
45726
|
|
|
45504
45727
|
|
|
45505
45728
|
|
|
45729
|
+
|
|
45506
45730
|
/**
|
|
45507
45731
|
* A utility plugin that allows you to subscribe to a click/mousedown/touchstart/mouseup on an element in DOM order
|
|
45508
45732
|
*
|
|
@@ -45513,7 +45737,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
|
|
|
45513
45737
|
* console.log(img.src);
|
|
45514
45738
|
* })
|
|
45515
45739
|
* ```
|
|
45516
|
-
*/ class select extends
|
|
45740
|
+
*/ class select extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_5__.Plugin {
|
|
45517
45741
|
afterInit(jodit) {
|
|
45518
45742
|
this.proxyEventsList.forEach((eventName)=>{
|
|
45519
45743
|
jodit.e.on(eventName + '.select', this.onStartSelection);
|
|
@@ -45528,7 +45752,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
|
|
|
45528
45752
|
const { j } = this;
|
|
45529
45753
|
let result, target = e.target;
|
|
45530
45754
|
while(result === undefined && target && target !== j.editor){
|
|
45531
|
-
result = j.e.fire((0,
|
|
45755
|
+
result = j.e.fire((0,_core_helpers_string_camel_case_js__WEBPACK_IMPORTED_MODULE_4__.camelCase)(e.type + '_' + target.nodeName.toLowerCase()), target, e);
|
|
45532
45756
|
target = target.parentElement;
|
|
45533
45757
|
}
|
|
45534
45758
|
if (e.type === 'click' && result === undefined && target === j.editor) {
|
|
@@ -45539,10 +45763,10 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
|
|
|
45539
45763
|
* @event outsideClick(e) - when user clicked on the outside of editor
|
|
45540
45764
|
*/ onOutsideClick(e) {
|
|
45541
45765
|
const node = e.target;
|
|
45542
|
-
if (
|
|
45766
|
+
if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.up(node, (elm)=>elm === this.j.editor)) {
|
|
45543
45767
|
return;
|
|
45544
45768
|
}
|
|
45545
|
-
const box =
|
|
45769
|
+
const box = _core_ui_index_js__WEBPACK_IMPORTED_MODULE_6__.UIElement.closestElement(node, _core_ui_index_js__WEBPACK_IMPORTED_MODULE_6__.Popup);
|
|
45546
45770
|
if (!box) {
|
|
45547
45771
|
this.j.e.fire('outsideClick', e);
|
|
45548
45772
|
}
|
|
@@ -45551,7 +45775,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
|
|
|
45551
45775
|
const { s } = this.j;
|
|
45552
45776
|
if (!s.isCollapsed()) {
|
|
45553
45777
|
const current = s.current();
|
|
45554
|
-
if (current &&
|
|
45778
|
+
if (current && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isOrContains(this.j.editor, current)) {
|
|
45555
45779
|
this.onCopyNormalizeSelectionBound();
|
|
45556
45780
|
}
|
|
45557
45781
|
}
|
|
@@ -45570,14 +45794,14 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
|
|
|
45570
45794
|
*/ onClickRightOfNestedListItem(e) {
|
|
45571
45795
|
const { s } = this.j;
|
|
45572
45796
|
const range = s.range;
|
|
45573
|
-
if (!range.collapsed || range.startOffset !== 0 || !
|
|
45797
|
+
if (!range.collapsed || range.startOffset !== 0 || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isText(range.startContainer)) {
|
|
45574
45798
|
return;
|
|
45575
45799
|
}
|
|
45576
45800
|
const text = range.startContainer;
|
|
45577
45801
|
const li = text.parentNode;
|
|
45578
45802
|
// The text must be the direct content of a list item that has a nested
|
|
45579
45803
|
// list (the last level has no nested list and behaves correctly).
|
|
45580
|
-
if (!
|
|
45804
|
+
if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isTag(li, 'li') || !(li.querySelector('ul') || li.querySelector('ol'))) {
|
|
45581
45805
|
return;
|
|
45582
45806
|
}
|
|
45583
45807
|
const measure = this.j.ed.createRange();
|
|
@@ -45588,6 +45812,35 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
|
|
|
45588
45812
|
s.setCursorAfter(text);
|
|
45589
45813
|
}
|
|
45590
45814
|
}
|
|
45815
|
+
/**
|
|
45816
|
+
* Keep pending inline formatting after a click. Toggling Bold/Italic/etc. on
|
|
45817
|
+
* a collapsed cursor leaves empty marker elements with the caret inside; a
|
|
45818
|
+
* click puts the caret right before them (outside), so they get cleaned up
|
|
45819
|
+
* and the formatting is lost. Move the caret back into the innermost marker
|
|
45820
|
+
* so the next typed character keeps every pending format (#1291).
|
|
45821
|
+
*/ onClickKeepPendingFormat() {
|
|
45822
|
+
var _a, _b;
|
|
45823
|
+
const { s } = this.j;
|
|
45824
|
+
const range = s.range;
|
|
45825
|
+
if (!range.collapsed || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isText(range.startContainer)) {
|
|
45826
|
+
return;
|
|
45827
|
+
}
|
|
45828
|
+
const text = range.startContainer;
|
|
45829
|
+
// Caret must sit at the very end of the text, right before the markers.
|
|
45830
|
+
if (range.startOffset !== ((_b = (_a = text.nodeValue) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0)) {
|
|
45831
|
+
return;
|
|
45832
|
+
}
|
|
45833
|
+
const marker = text.nextSibling;
|
|
45834
|
+
if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isElement(marker) || !marker.nodeName.match(_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_INLINE) || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isEmpty(marker)) {
|
|
45835
|
+
return;
|
|
45836
|
+
}
|
|
45837
|
+
let inner = marker;
|
|
45838
|
+
// Descend into the innermost empty formatting marker.
|
|
45839
|
+
while(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isElement(inner.firstElementChild) && inner.firstElementChild.nodeName.match(_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_INLINE)){
|
|
45840
|
+
inner = inner.firstElementChild;
|
|
45841
|
+
}
|
|
45842
|
+
s.setCursorIn(inner);
|
|
45843
|
+
}
|
|
45591
45844
|
/**
|
|
45592
45845
|
* Normalize selection after triple click
|
|
45593
45846
|
*/ onTripleClickNormalizeSelection(e) {
|
|
@@ -45596,8 +45849,8 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
|
|
|
45596
45849
|
}
|
|
45597
45850
|
const { s } = this.j;
|
|
45598
45851
|
const { startContainer, startOffset } = s.range;
|
|
45599
|
-
if (startOffset === 0 &&
|
|
45600
|
-
s.select(
|
|
45852
|
+
if (startOffset === 0 && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isText(startContainer)) {
|
|
45853
|
+
s.select(_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(startContainer, _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isBlock, this.j.editor) || startContainer, true);
|
|
45601
45854
|
}
|
|
45602
45855
|
}
|
|
45603
45856
|
onCopyNormalizeSelectionBound(e) {
|
|
@@ -45605,7 +45858,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
|
|
|
45605
45858
|
if (!o.select.normalizeSelectionBeforeCutAndCopy || s.isCollapsed()) {
|
|
45606
45859
|
return;
|
|
45607
45860
|
}
|
|
45608
|
-
if (e && (!e.isTrusted || !
|
|
45861
|
+
if (e && (!e.isTrusted || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isNode(e.target) || !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isOrContains(editor, e.target))) {
|
|
45609
45862
|
return;
|
|
45610
45863
|
}
|
|
45611
45864
|
this.jodit.s.expandSelection();
|
|
@@ -45622,38 +45875,43 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
|
|
|
45622
45875
|
}
|
|
45623
45876
|
}
|
|
45624
45877
|
__decorate([
|
|
45625
|
-
|
|
45878
|
+
_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
|
|
45626
45879
|
], select.prototype, "onStartSelection", null);
|
|
45627
45880
|
__decorate([
|
|
45628
|
-
(0,
|
|
45881
|
+
(0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)('ow:click')
|
|
45629
45882
|
], select.prototype, "onOutsideClick", null);
|
|
45630
45883
|
__decorate([
|
|
45631
|
-
(0,
|
|
45884
|
+
(0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)([
|
|
45632
45885
|
':beforeCommandCut'
|
|
45633
45886
|
])
|
|
45634
45887
|
], select.prototype, "beforeCommandCut", null);
|
|
45635
45888
|
__decorate([
|
|
45636
|
-
(0,
|
|
45889
|
+
(0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)([
|
|
45637
45890
|
':beforeCommandSelectall'
|
|
45638
45891
|
])
|
|
45639
45892
|
], select.prototype, "beforeCommandSelectAll", null);
|
|
45640
45893
|
__decorate([
|
|
45641
|
-
(0,
|
|
45894
|
+
(0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)([
|
|
45642
45895
|
':click'
|
|
45643
45896
|
])
|
|
45644
45897
|
], select.prototype, "onClickRightOfNestedListItem", null);
|
|
45645
45898
|
__decorate([
|
|
45646
|
-
(0,
|
|
45899
|
+
(0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)([
|
|
45900
|
+
':click'
|
|
45901
|
+
])
|
|
45902
|
+
], select.prototype, "onClickKeepPendingFormat", null);
|
|
45903
|
+
__decorate([
|
|
45904
|
+
(0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)([
|
|
45647
45905
|
':click'
|
|
45648
45906
|
])
|
|
45649
45907
|
], select.prototype, "onTripleClickNormalizeSelection", null);
|
|
45650
45908
|
__decorate([
|
|
45651
|
-
(0,
|
|
45909
|
+
(0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)([
|
|
45652
45910
|
':copy',
|
|
45653
45911
|
':cut'
|
|
45654
45912
|
])
|
|
45655
45913
|
], select.prototype, "onCopyNormalizeSelectionBound", null);
|
|
45656
|
-
|
|
45914
|
+
_core_global_js__WEBPACK_IMPORTED_MODULE_3__.pluginSystem.add('select', select);
|
|
45657
45915
|
|
|
45658
45916
|
|
|
45659
45917
|
/***/ }),
|