jodit 4.18.1 → 4.18.3
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/CHANGELOG.md +30 -0
- package/es2015/jodit.css +7 -6
- package/es2015/jodit.fat.min.js +10 -10
- package/es2015/jodit.js +492 -189
- package/es2015/jodit.min.js +10 -10
- package/es2015/plugins/debug/debug.css +1 -1
- package/es2015/plugins/debug/debug.js +1 -1
- package/es2015/plugins/debug/debug.min.js +1 -1
- package/es2015/plugins/speech-recognize/speech-recognize.css +1 -1
- package/es2015/plugins/speech-recognize/speech-recognize.js +1 -1
- package/es2015/plugins/speech-recognize/speech-recognize.min.js +1 -1
- package/es2018/jodit.fat.min.js +9 -9
- package/es2018/jodit.min.js +9 -9
- package/es2018/plugins/debug/debug.min.js +1 -1
- package/es2018/plugins/speech-recognize/speech-recognize.min.js +1 -1
- package/es2021/jodit.css +7 -6
- package/es2021/jodit.fat.min.js +16 -16
- package/es2021/jodit.js +432 -135
- package/es2021/jodit.min.js +16 -16
- package/es2021/plugins/debug/debug.css +1 -1
- package/es2021/plugins/debug/debug.js +1 -1
- package/es2021/plugins/debug/debug.min.js +1 -1
- package/es2021/plugins/speech-recognize/speech-recognize.css +1 -1
- package/es2021/plugins/speech-recognize/speech-recognize.js +1 -1
- package/es2021/plugins/speech-recognize/speech-recognize.min.js +1 -1
- package/es2021.en/jodit.css +7 -6
- package/es2021.en/jodit.fat.min.js +16 -16
- package/es2021.en/jodit.js +432 -135
- package/es2021.en/jodit.min.js +16 -16
- package/es2021.en/plugins/debug/debug.css +1 -1
- package/es2021.en/plugins/debug/debug.js +1 -1
- package/es2021.en/plugins/debug/debug.min.js +1 -1
- package/es2021.en/plugins/speech-recognize/speech-recognize.css +1 -1
- package/es2021.en/plugins/speech-recognize/speech-recognize.js +1 -1
- package/es2021.en/plugins/speech-recognize/speech-recognize.min.js +1 -1
- package/es5/jodit.css +8 -7
- package/es5/jodit.fat.min.js +2 -2
- package/es5/jodit.js +555 -215
- package/es5/jodit.min.css +2 -2
- package/es5/jodit.min.js +2 -2
- package/es5/plugins/debug/debug.css +1 -1
- package/es5/plugins/debug/debug.js +1 -1
- package/es5/plugins/debug/debug.min.js +1 -1
- package/es5/plugins/speech-recognize/speech-recognize.css +1 -1
- package/es5/plugins/speech-recognize/speech-recognize.js +1 -1
- package/es5/plugins/speech-recognize/speech-recognize.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/esm/config.d.ts +4 -2
- package/esm/core/constants.js +1 -1
- package/esm/core/helpers/utils/index.d.ts +1 -0
- package/esm/core/helpers/utils/index.js +1 -0
- package/esm/core/helpers/utils/prepare-media.d.ts +19 -0
- package/esm/core/helpers/utils/prepare-media.js +31 -0
- package/esm/core/selection/style/api/wrap-unwrapped-text.js +3 -2
- package/esm/modules/history/history.d.ts +17 -2
- package/esm/modules/history/history.js +41 -19
- package/esm/modules/table/table.js +7 -2
- package/esm/modules/widget/file-selector/file-selector.js +2 -2
- package/esm/plugins/backspace/backspace.js +4 -0
- package/esm/plugins/clean-html/clean-html.d.ts +9 -1
- package/esm/plugins/clean-html/clean-html.js +41 -7
- package/esm/plugins/clean-html/helpers/visitor/filters/replace-old-tags.js +26 -1
- package/esm/plugins/dtd/before-insert/check-block-nesting.d.ts +2 -1
- package/esm/plugins/dtd/before-insert/check-block-nesting.js +26 -5
- package/esm/plugins/enter/helpers/move-cursor-out-from-specal-tags.js +8 -0
- package/esm/plugins/focus/focus.js +3 -0
- package/esm/plugins/hr/hr.js +21 -5
- package/esm/plugins/iframe/config.js +8 -3
- package/esm/plugins/inline-popup/inline-popup.d.ts +5 -0
- package/esm/plugins/inline-popup/inline-popup.js +26 -2
- package/esm/plugins/link/link.js +5 -2
- package/esm/plugins/media/config.d.ts +2 -1
- package/esm/plugins/media/media.js +21 -2
- package/esm/plugins/paste/helpers.d.ts +8 -0
- package/esm/plugins/paste/helpers.js +18 -1
- package/esm/plugins/paste/paste.js +2 -2
- package/esm/plugins/resizer/resizer.js +8 -3
- package/esm/plugins/select-cells/select-cells.d.ts +10 -0
- package/esm/plugins/select-cells/select-cells.js +54 -6
- package/esm/plugins/table/config.js +51 -1
- package/esm/plugins/table-keyboard-navigation/table-keyboard-navigation.js +1 -1
- package/esm/plugins/video/config.js +6 -22
- package/package.json +1 -1
- package/types/config.d.ts +4 -2
- package/types/core/helpers/utils/index.d.ts +1 -0
- package/types/core/helpers/utils/prepare-media.d.ts +19 -0
- package/types/modules/history/history.d.ts +17 -2
- package/types/plugins/clean-html/clean-html.d.ts +9 -1
- package/types/plugins/dtd/before-insert/check-block-nesting.d.ts +2 -1
- package/types/plugins/inline-popup/inline-popup.d.ts +5 -0
- package/types/plugins/media/config.d.ts +2 -1
- package/types/plugins/paste/helpers.d.ts +8 -0
- package/types/plugins/select-cells/select-cells.d.ts +10 -0
package/es2021.en/jodit.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* jodit - Jodit is an awesome and useful wysiwyg editor with filebrowser
|
|
3
3
|
* Author: Chupurnov <chupurnov@gmail.com> (https://xdsoft.net/jodit/)
|
|
4
|
-
* Version: v4.18.
|
|
4
|
+
* Version: v4.18.3
|
|
5
5
|
* Url: https://xdsoft.net/jodit/
|
|
6
6
|
* License(s): MIT
|
|
7
7
|
*/
|
|
@@ -1824,7 +1824,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1824
1824
|
* ```
|
|
1825
1825
|
* @packageDocumentation
|
|
1826
1826
|
* @module constants
|
|
1827
|
-
*/ const APP_VERSION = "4.18.
|
|
1827
|
+
*/ const APP_VERSION = "4.18.3";
|
|
1828
1828
|
// prettier-ignore
|
|
1829
1829
|
const ES = "es2021";
|
|
1830
1830
|
const IS_ES_MODERN = true;
|
|
@@ -8828,13 +8828,13 @@ const getClassName = (obj)=>{
|
|
|
8828
8828
|
"use strict";
|
|
8829
8829
|
__webpack_require__.r(__webpack_exports__);
|
|
8830
8830
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
8831
|
-
/* harmony export */ $$: function() { return /* reexport safe */
|
|
8831
|
+
/* harmony export */ $$: function() { return /* reexport safe */ _selector__WEBPACK_IMPORTED_MODULE_26__.$$; },
|
|
8832
8832
|
/* harmony export */ ConfigDeepFlatten: function() { return /* reexport safe */ _config_proto__WEBPACK_IMPORTED_MODULE_7__.ConfigDeepFlatten; },
|
|
8833
8833
|
/* harmony export */ ConfigFlatten: function() { return /* reexport safe */ _config_proto__WEBPACK_IMPORTED_MODULE_7__.ConfigFlatten; },
|
|
8834
8834
|
/* harmony export */ ConfigMerge: function() { return /* reexport safe */ _config_proto__WEBPACK_IMPORTED_MODULE_7__.ConfigMerge; },
|
|
8835
8835
|
/* harmony export */ ConfigProto: function() { return /* reexport safe */ _config_proto__WEBPACK_IMPORTED_MODULE_7__.ConfigProto; },
|
|
8836
8836
|
/* harmony export */ ConnectionError: function() { return /* reexport safe */ _error__WEBPACK_IMPORTED_MODULE_13__.ConnectionError; },
|
|
8837
|
-
/* harmony export */ LimitedStack: function() { return /* reexport safe */
|
|
8837
|
+
/* harmony export */ LimitedStack: function() { return /* reexport safe */ _stack__WEBPACK_IMPORTED_MODULE_28__.LimitedStack; },
|
|
8838
8838
|
/* harmony export */ OptionsError: function() { return /* reexport safe */ _error__WEBPACK_IMPORTED_MODULE_13__.OptionsError; },
|
|
8839
8839
|
/* harmony export */ UNSAFE_PROTO_KEYS: function() { return /* reexport safe */ _is_unsafe_proto_key__WEBPACK_IMPORTED_MODULE_18__.UNSAFE_PROTO_KEYS; },
|
|
8840
8840
|
/* harmony export */ abort: function() { return /* reexport safe */ _error__WEBPACK_IMPORTED_MODULE_13__.abort; },
|
|
@@ -8846,9 +8846,9 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
8846
8846
|
/* harmony export */ attrRaw: function() { return /* reexport safe */ _attr__WEBPACK_IMPORTED_MODULE_3__.attrRaw; },
|
|
8847
8847
|
/* harmony export */ browser: function() { return /* reexport safe */ _browser__WEBPACK_IMPORTED_MODULE_4__.browser; },
|
|
8848
8848
|
/* harmony export */ buildQuery: function() { return /* reexport safe */ _build_query__WEBPACK_IMPORTED_MODULE_5__.buildQuery; },
|
|
8849
|
-
/* harmony export */ call: function() { return /* reexport safe */
|
|
8850
|
-
/* harmony export */ callPromise: function() { return /* reexport safe */
|
|
8851
|
-
/* harmony export */ callThis: function() { return /* reexport safe */
|
|
8849
|
+
/* harmony export */ call: function() { return /* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_29__.call; },
|
|
8850
|
+
/* harmony export */ callPromise: function() { return /* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_29__.callPromise; },
|
|
8851
|
+
/* harmony export */ callThis: function() { return /* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_29__.callThis; },
|
|
8852
8852
|
/* harmony export */ clearAlign: function() { return /* reexport safe */ _align__WEBPACK_IMPORTED_MODULE_0__.clearAlign; },
|
|
8853
8853
|
/* harmony export */ clearCenterAlign: function() { return /* reexport safe */ _css__WEBPACK_IMPORTED_MODULE_9__.clearCenterAlign; },
|
|
8854
8854
|
/* harmony export */ cns: function() { return /* reexport safe */ _mark_deprecated__WEBPACK_IMPORTED_MODULE_19__.cns; },
|
|
@@ -8858,7 +8858,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
8858
8858
|
/* harmony export */ createMediaWrapper: function() { return /* reexport safe */ _media_wrapper__WEBPACK_IMPORTED_MODULE_20__.createMediaWrapper; },
|
|
8859
8859
|
/* harmony export */ css: function() { return /* reexport safe */ _css__WEBPACK_IMPORTED_MODULE_9__.css; },
|
|
8860
8860
|
/* harmony export */ cssInline: function() { return /* reexport safe */ _css__WEBPACK_IMPORTED_MODULE_9__.cssInline; },
|
|
8861
|
-
/* harmony export */ cssPath: function() { return /* reexport safe */
|
|
8861
|
+
/* harmony export */ cssPath: function() { return /* reexport safe */ _selector__WEBPACK_IMPORTED_MODULE_26__.cssPath; },
|
|
8862
8862
|
/* harmony export */ ctrlKey: function() { return /* reexport safe */ _ctrl_key__WEBPACK_IMPORTED_MODULE_10__.ctrlKey; },
|
|
8863
8863
|
/* harmony export */ dataBind: function() { return /* reexport safe */ _data_bind__WEBPACK_IMPORTED_MODULE_11__.dataBind; },
|
|
8864
8864
|
/* harmony export */ defaultLanguage: function() { return /* reexport safe */ _default_language__WEBPACK_IMPORTED_MODULE_12__.defaultLanguage; },
|
|
@@ -8867,34 +8867,36 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
8867
8867
|
/* harmony export */ get: function() { return /* reexport safe */ _get__WEBPACK_IMPORTED_MODULE_15__.get; },
|
|
8868
8868
|
/* harmony export */ getAlignClasses: function() { return /* reexport safe */ _align__WEBPACK_IMPORTED_MODULE_0__.getAlignClasses; },
|
|
8869
8869
|
/* harmony export */ getClassName: function() { return /* reexport safe */ _get_class_name__WEBPACK_IMPORTED_MODULE_16__.getClassName; },
|
|
8870
|
-
/* harmony export */ getDataTransfer: function() { return /* reexport safe */
|
|
8870
|
+
/* harmony export */ getDataTransfer: function() { return /* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_29__.getDataTransfer; },
|
|
8871
8871
|
/* harmony export */ getHAlign: function() { return /* reexport safe */ _align__WEBPACK_IMPORTED_MODULE_0__.getHAlign; },
|
|
8872
8872
|
/* harmony export */ getMediaWrapper: function() { return /* reexport safe */ _media_wrapper__WEBPACK_IMPORTED_MODULE_20__.getMediaWrapper; },
|
|
8873
|
-
/* harmony export */ getPropertyDescriptor: function() { return /* reexport safe */
|
|
8873
|
+
/* harmony export */ getPropertyDescriptor: function() { return /* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_29__.getPropertyDescriptor; },
|
|
8874
8874
|
/* harmony export */ getWrappedMedia: function() { return /* reexport safe */ _media_wrapper__WEBPACK_IMPORTED_MODULE_20__.getWrappedMedia; },
|
|
8875
|
-
/* harmony export */ getXPathByElement: function() { return /* reexport safe */
|
|
8875
|
+
/* harmony export */ getXPathByElement: function() { return /* reexport safe */ _selector__WEBPACK_IMPORTED_MODULE_26__.getXPathByElement; },
|
|
8876
8876
|
/* harmony export */ hAlignElement: function() { return /* reexport safe */ _align__WEBPACK_IMPORTED_MODULE_0__.hAlignElement; },
|
|
8877
8877
|
/* harmony export */ humanSizeToBytes: function() { return /* reexport safe */ _human_size_to_bytes__WEBPACK_IMPORTED_MODULE_17__.humanSizeToBytes; },
|
|
8878
|
-
/* harmony export */ inView: function() { return /* reexport safe */
|
|
8878
|
+
/* harmony export */ inView: function() { return /* reexport safe */ _scroll_into_view__WEBPACK_IMPORTED_MODULE_25__.inView; },
|
|
8879
8879
|
/* harmony export */ isAtom: function() { return /* reexport safe */ _extend__WEBPACK_IMPORTED_MODULE_14__.isAtom; },
|
|
8880
8880
|
/* harmony export */ isUnsafeProtoKey: function() { return /* reexport safe */ _is_unsafe_proto_key__WEBPACK_IMPORTED_MODULE_18__.isUnsafeProtoKey; },
|
|
8881
8881
|
/* harmony export */ keepNames: function() { return /* reexport safe */ _get_class_name__WEBPACK_IMPORTED_MODULE_16__.keepNames; },
|
|
8882
|
-
/* harmony export */ keys: function() { return /* reexport safe */
|
|
8883
|
-
/* harmony export */ loadImage: function() { return /* reexport safe */
|
|
8882
|
+
/* harmony export */ keys: function() { return /* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_29__.keys; },
|
|
8883
|
+
/* harmony export */ loadImage: function() { return /* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_29__.loadImage; },
|
|
8884
8884
|
/* harmony export */ loadNext: function() { return /* reexport safe */ _append_script__WEBPACK_IMPORTED_MODULE_1__.loadNext; },
|
|
8885
8885
|
/* harmony export */ loadNextStyle: function() { return /* reexport safe */ _append_script__WEBPACK_IMPORTED_MODULE_1__.loadNextStyle; },
|
|
8886
8886
|
/* harmony export */ markAsAtomic: function() { return /* reexport safe */ _extend__WEBPACK_IMPORTED_MODULE_14__.markAsAtomic; },
|
|
8887
8887
|
/* harmony export */ markDeprecated: function() { return /* reexport safe */ _mark_deprecated__WEBPACK_IMPORTED_MODULE_19__.markDeprecated; },
|
|
8888
|
-
/* harmony export */ markOwner: function() { return /* reexport safe */
|
|
8889
|
-
/* harmony export */ memorizeExec: function() { return /* reexport safe */
|
|
8888
|
+
/* harmony export */ markOwner: function() { return /* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_29__.markOwner; },
|
|
8889
|
+
/* harmony export */ memorizeExec: function() { return /* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_29__.memorizeExec; },
|
|
8890
8890
|
/* harmony export */ options: function() { return /* reexport safe */ _error__WEBPACK_IMPORTED_MODULE_13__.options; },
|
|
8891
8891
|
/* harmony export */ parseQuery: function() { return /* reexport safe */ _parse_query__WEBPACK_IMPORTED_MODULE_21__.parseQuery; },
|
|
8892
|
-
/* harmony export */
|
|
8893
|
-
/* harmony export */
|
|
8894
|
-
/* harmony export */
|
|
8895
|
-
/* harmony export */
|
|
8896
|
-
/* harmony export */
|
|
8897
|
-
/* harmony export */
|
|
8892
|
+
/* harmony export */ prepareEmbedCode: function() { return /* reexport safe */ _prepare_media__WEBPACK_IMPORTED_MODULE_22__.prepareEmbedCode; },
|
|
8893
|
+
/* harmony export */ prepareMedia: function() { return /* reexport safe */ _prepare_media__WEBPACK_IMPORTED_MODULE_22__.prepareMedia; },
|
|
8894
|
+
/* harmony export */ previewBox: function() { return /* reexport safe */ _print__WEBPACK_IMPORTED_MODULE_23__.previewBox; },
|
|
8895
|
+
/* harmony export */ refs: function() { return /* reexport safe */ _selector__WEBPACK_IMPORTED_MODULE_26__.refs; },
|
|
8896
|
+
/* harmony export */ reset: function() { return /* reexport safe */ _reset__WEBPACK_IMPORTED_MODULE_24__.reset; },
|
|
8897
|
+
/* harmony export */ resolveElement: function() { return /* reexport safe */ _selector__WEBPACK_IMPORTED_MODULE_26__.resolveElement; },
|
|
8898
|
+
/* harmony export */ scrollIntoViewIfNeeded: function() { return /* reexport safe */ _scroll_into_view__WEBPACK_IMPORTED_MODULE_25__.scrollIntoViewIfNeeded; },
|
|
8899
|
+
/* harmony export */ set: function() { return /* reexport safe */ _set__WEBPACK_IMPORTED_MODULE_27__.set; },
|
|
8898
8900
|
/* harmony export */ wrapMedia: function() { return /* reexport safe */ _media_wrapper__WEBPACK_IMPORTED_MODULE_20__.wrapMedia; }
|
|
8899
8901
|
/* harmony export */ });
|
|
8900
8902
|
/* harmony import */ var _align__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16849);
|
|
@@ -8923,13 +8925,14 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
8923
8925
|
/* harmony import */ var _mark_deprecated__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(49385);
|
|
8924
8926
|
/* harmony import */ var _media_wrapper__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(83314);
|
|
8925
8927
|
/* harmony import */ var _parse_query__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(36310);
|
|
8926
|
-
/* harmony import */ var
|
|
8927
|
-
/* harmony import */ var
|
|
8928
|
-
/* harmony import */ var
|
|
8929
|
-
/* harmony import */ var
|
|
8930
|
-
/* harmony import */ var
|
|
8931
|
-
/* harmony import */ var
|
|
8932
|
-
/* harmony import */ var
|
|
8928
|
+
/* harmony import */ var _prepare_media__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(89214);
|
|
8929
|
+
/* harmony import */ var _print__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(57075);
|
|
8930
|
+
/* harmony import */ var _reset__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(43379);
|
|
8931
|
+
/* harmony import */ var _scroll_into_view__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(60898);
|
|
8932
|
+
/* harmony import */ var _selector__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(28723);
|
|
8933
|
+
/* harmony import */ var _set__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(52144);
|
|
8934
|
+
/* harmony import */ var _stack__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(42820);
|
|
8935
|
+
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(71125);
|
|
8933
8936
|
/*!
|
|
8934
8937
|
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
8935
8938
|
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
@@ -8965,6 +8968,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
8965
8968
|
|
|
8966
8969
|
|
|
8967
8970
|
|
|
8971
|
+
|
|
8968
8972
|
|
|
8969
8973
|
|
|
8970
8974
|
/***/ }),
|
|
@@ -9136,6 +9140,48 @@ const isWrapper = (node, wrapper)=>jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0
|
|
|
9136
9140
|
/* harmony export */ ]);
|
|
9137
9141
|
|
|
9138
9142
|
|
|
9143
|
+
/***/ }),
|
|
9144
|
+
|
|
9145
|
+
/***/ 89214:
|
|
9146
|
+
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
9147
|
+
|
|
9148
|
+
"use strict";
|
|
9149
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
9150
|
+
/* harmony export */ prepareEmbedCode: function() { return /* binding */ prepareEmbedCode; },
|
|
9151
|
+
/* harmony export */ prepareMedia: function() { return /* binding */ prepareMedia; }
|
|
9152
|
+
/* harmony export */ });
|
|
9153
|
+
/* harmony import */ var jodit_core_helpers_utils_align__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16849);
|
|
9154
|
+
/* harmony import */ var jodit_core_helpers_utils_media_wrapper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(83314);
|
|
9155
|
+
/*!
|
|
9156
|
+
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
9157
|
+
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
9158
|
+
* Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
|
|
9159
|
+
*/ /**
|
|
9160
|
+
* @module helpers/utils
|
|
9161
|
+
*/
|
|
9162
|
+
|
|
9163
|
+
/**
|
|
9164
|
+
* Puts new media in its wrapper (see `mediaWrappers`) and aligns it with
|
|
9165
|
+
* `mediaDefaultAlign`. Returns the wrapper, or `element` when there is none
|
|
9166
|
+
*/ function prepareMedia(jodit, element) {
|
|
9167
|
+
const media = (0,jodit_core_helpers_utils_media_wrapper__WEBPACK_IMPORTED_MODULE_1__.wrapMedia)(jodit, element);
|
|
9168
|
+
const { mediaDefaultAlign } = jodit.o;
|
|
9169
|
+
if (mediaDefaultAlign && mediaDefaultAlign !== 'normal') {
|
|
9170
|
+
(0,jodit_core_helpers_utils_align__WEBPACK_IMPORTED_MODULE_0__.hAlignElement)(media, mediaDefaultAlign, (0,jodit_core_helpers_utils_align__WEBPACK_IMPORTED_MODULE_0__.getAlignClasses)(jodit, media));
|
|
9171
|
+
}
|
|
9172
|
+
return media;
|
|
9173
|
+
}
|
|
9174
|
+
/**
|
|
9175
|
+
* Embed code that is one element is prepared as media (see `prepareMedia`);
|
|
9176
|
+
* other code is returned as it is
|
|
9177
|
+
*/ function prepareEmbedCode(jodit, code) {
|
|
9178
|
+
const box = jodit.createInside.div();
|
|
9179
|
+
box.innerHTML = code.trim();
|
|
9180
|
+
const element = box.firstElementChild;
|
|
9181
|
+
return element && box.childNodes.length === 1 ? prepareMedia(jodit, element) : code;
|
|
9182
|
+
}
|
|
9183
|
+
|
|
9184
|
+
|
|
9139
9185
|
/***/ }),
|
|
9140
9186
|
|
|
9141
9187
|
/***/ 57075:
|
|
@@ -13314,7 +13360,9 @@ function toggleAttribute(jodit, value, elm, key, dry, mode) {
|
|
|
13314
13360
|
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.append(wrapper, fragment);
|
|
13315
13361
|
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.safeInsertNode(range, wrapper);
|
|
13316
13362
|
if (style.elementIsBlock) {
|
|
13317
|
-
|
|
13363
|
+
// The wrapped content can bring its own `<br>` (an empty table
|
|
13364
|
+
// cell's), after or inside the temporary `<font>` around the selection
|
|
13365
|
+
if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(wrapper) && !wrapper.querySelector('br')) {
|
|
13318
13366
|
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.append(wrapper, ci.element('br'));
|
|
13319
13367
|
}
|
|
13320
13368
|
}
|
|
@@ -22344,13 +22392,11 @@ class Command {
|
|
|
22344
22392
|
/* harmony export */ History: function() { return /* binding */ History; }
|
|
22345
22393
|
/* harmony export */ });
|
|
22346
22394
|
/* harmony import */ var _swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25045);
|
|
22347
|
-
/* harmony import */ var
|
|
22348
|
-
/* harmony import */ var
|
|
22349
|
-
/* harmony import */ var
|
|
22350
|
-
/* harmony import */ var
|
|
22351
|
-
/* harmony import */ var
|
|
22352
|
-
/* harmony import */ var _snapshot__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(46363);
|
|
22353
|
-
/* harmony import */ var _stack__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(33511);
|
|
22395
|
+
/* harmony import */ var jodit_core_component_view_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(59609);
|
|
22396
|
+
/* harmony import */ var jodit_config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5266);
|
|
22397
|
+
/* harmony import */ var _command__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(8838);
|
|
22398
|
+
/* harmony import */ var _snapshot__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(46363);
|
|
22399
|
+
/* harmony import */ var _stack__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(33511);
|
|
22354
22400
|
/*!
|
|
22355
22401
|
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
22356
22402
|
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
@@ -22365,43 +22411,45 @@ class Command {
|
|
|
22365
22411
|
|
|
22366
22412
|
|
|
22367
22413
|
|
|
22368
|
-
|
|
22369
|
-
|
|
22370
|
-
jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.history = {
|
|
22414
|
+
jodit_config__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.history = {
|
|
22371
22415
|
enable: true,
|
|
22372
22416
|
maxHistoryLength: Infinity,
|
|
22373
22417
|
timeout: 1000
|
|
22374
22418
|
};
|
|
22375
22419
|
/**
|
|
22376
22420
|
* The module monitors the status of the editor and creates / deletes the required number of Undo / Redo shots .
|
|
22377
|
-
*/ class History extends
|
|
22421
|
+
*/ class History extends jodit_core_component_view_component__WEBPACK_IMPORTED_MODULE_1__.ViewComponent {
|
|
22378
22422
|
/** @override */ className() {
|
|
22379
22423
|
return 'History';
|
|
22380
22424
|
}
|
|
22381
22425
|
/**
|
|
22382
22426
|
* Return state of the WYSIWYG editor to step back
|
|
22383
22427
|
*/ redo() {
|
|
22428
|
+
this.__processPendingChanges();
|
|
22384
22429
|
if (this.__stack.redo()) {
|
|
22385
22430
|
this.startValue = this.snapshot.make();
|
|
22386
22431
|
this.fireChangeStack();
|
|
22387
22432
|
}
|
|
22388
22433
|
}
|
|
22389
22434
|
canRedo() {
|
|
22390
|
-
return this.__stack.canRedo();
|
|
22435
|
+
return !this.__hasPendingChanges && this.__stack.canRedo();
|
|
22391
22436
|
}
|
|
22392
22437
|
/**
|
|
22393
22438
|
* Return the state of the WYSIWYG editor to step forward
|
|
22394
22439
|
*/ undo() {
|
|
22440
|
+
this.__processPendingChanges();
|
|
22395
22441
|
if (this.__stack.undo()) {
|
|
22396
22442
|
this.startValue = this.snapshot.make();
|
|
22397
22443
|
this.fireChangeStack();
|
|
22398
22444
|
}
|
|
22399
22445
|
}
|
|
22400
22446
|
canUndo() {
|
|
22401
|
-
return this.__stack.canUndo();
|
|
22447
|
+
return this.__hasPendingChanges || this.__stack.canUndo();
|
|
22402
22448
|
}
|
|
22403
22449
|
clear() {
|
|
22404
22450
|
this.startValue = this.snapshot.make();
|
|
22451
|
+
this.async.clearTimeout(this.__timer);
|
|
22452
|
+
this.__hasPendingChanges = false;
|
|
22405
22453
|
this.__stack.clear();
|
|
22406
22454
|
this.fireChangeStack();
|
|
22407
22455
|
}
|
|
@@ -22421,9 +22469,29 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.history = {
|
|
|
22421
22469
|
this.updateTick += 1;
|
|
22422
22470
|
}
|
|
22423
22471
|
/**
|
|
22424
|
-
* Push new command in stack on some changes
|
|
22472
|
+
* Push new command in stack on some changes. The first change opens a
|
|
22473
|
+
* step, and later ones join it until `history.timeout` has passed,
|
|
22474
|
+
* however close together they come.
|
|
22425
22475
|
*/ onChange() {
|
|
22426
|
-
|
|
22476
|
+
// A transaction is over by the time the step is recorded, so it is
|
|
22477
|
+
// checked now
|
|
22478
|
+
if (this.snapshot.isBlocked || this.__hasPendingChanges) {
|
|
22479
|
+
return;
|
|
22480
|
+
}
|
|
22481
|
+
this.__hasPendingChanges = true;
|
|
22482
|
+
this.__timer = this.async.setTimeout(()=>this.__processPendingChanges(), this.j.o.history.timeout);
|
|
22483
|
+
// With a timeout of 0 the step is already recorded. Otherwise
|
|
22484
|
+
// canUndo and canRedo count it from now
|
|
22485
|
+
if (this.__hasPendingChanges) {
|
|
22486
|
+
this.fireChangeStack();
|
|
22487
|
+
}
|
|
22488
|
+
}
|
|
22489
|
+
/**
|
|
22490
|
+
* Push the open step's changes now
|
|
22491
|
+
*/ __processPendingChanges() {
|
|
22492
|
+
if (this.__hasPendingChanges) {
|
|
22493
|
+
this.__processChanges();
|
|
22494
|
+
}
|
|
22427
22495
|
}
|
|
22428
22496
|
/**
|
|
22429
22497
|
* @internal
|
|
@@ -22431,13 +22499,15 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.history = {
|
|
|
22431
22499
|
if (this.snapshot.isBlocked || !this.j.o.history.enable) {
|
|
22432
22500
|
return;
|
|
22433
22501
|
}
|
|
22502
|
+
this.async.clearTimeout(this.__timer);
|
|
22503
|
+
this.__hasPendingChanges = false;
|
|
22434
22504
|
this.updateStack();
|
|
22435
22505
|
}
|
|
22436
22506
|
/**
|
|
22437
22507
|
* Update history stack
|
|
22438
22508
|
*/ updateStack(replace = false) {
|
|
22439
22509
|
const newValue = this.snapshot.make();
|
|
22440
|
-
if (
|
|
22510
|
+
if (_snapshot__WEBPACK_IMPORTED_MODULE_4__.Snapshot.equal(newValue, this.startValue)) {
|
|
22441
22511
|
return;
|
|
22442
22512
|
}
|
|
22443
22513
|
// Only the selection moved, for example when the selection markers
|
|
@@ -22447,7 +22517,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.history = {
|
|
|
22447
22517
|
this.startValue = newValue;
|
|
22448
22518
|
return;
|
|
22449
22519
|
}
|
|
22450
|
-
const newCommand = new
|
|
22520
|
+
const newCommand = new _command__WEBPACK_IMPORTED_MODULE_3__.Command(this.startValue, newValue, this, this.updateTick);
|
|
22451
22521
|
if (replace) {
|
|
22452
22522
|
const command = this.__stack.current();
|
|
22453
22523
|
if (command && this.updateTick === command.tick) {
|
|
@@ -22472,8 +22542,12 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.history = {
|
|
|
22472
22542
|
this.snapshot.destruct();
|
|
22473
22543
|
super.destruct();
|
|
22474
22544
|
}
|
|
22475
|
-
constructor(editor, stack = new
|
|
22476
|
-
super(editor), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__startValue", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__stack", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "snapshot", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "updateTick", 0)
|
|
22545
|
+
constructor(editor, stack = new _stack__WEBPACK_IMPORTED_MODULE_5__.Stack(editor.o.history.maxHistoryLength), snapshot = new _snapshot__WEBPACK_IMPORTED_MODULE_4__.Snapshot(editor)){
|
|
22546
|
+
super(editor), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__startValue", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__stack", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "snapshot", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "updateTick", 0), /**
|
|
22547
|
+
* A step is open: changes have come in that are not in the stack yet
|
|
22548
|
+
*/ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__hasPendingChanges", false), /**
|
|
22549
|
+
* Records the open step `history.timeout` after its first change
|
|
22550
|
+
*/ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__timer", 0);
|
|
22477
22551
|
this.__stack = stack;
|
|
22478
22552
|
this.snapshot = snapshot;
|
|
22479
22553
|
if (editor.o.history.enable) {
|
|
@@ -22484,6 +22558,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.history = {
|
|
|
22484
22558
|
this.startValue = this.snapshot.make();
|
|
22485
22559
|
editor.events// save selection
|
|
22486
22560
|
.on('internalChange internalUpdate', ()=>{
|
|
22561
|
+
this.__processPendingChanges();
|
|
22487
22562
|
this.startValue = this.snapshot.make();
|
|
22488
22563
|
}).on(editor.editor, [
|
|
22489
22564
|
'changeSelection',
|
|
@@ -22497,14 +22572,11 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.history = {
|
|
|
22497
22572
|
if (this.startValue.html === this.j.getNativeEditorValue()) {
|
|
22498
22573
|
this.startValue = this.snapshot.make();
|
|
22499
22574
|
}
|
|
22500
|
-
}).on(this, 'change.history', this.onChange);
|
|
22575
|
+
}).on(this, 'change.history', ()=>this.onChange());
|
|
22501
22576
|
});
|
|
22502
22577
|
}
|
|
22503
22578
|
}
|
|
22504
22579
|
}
|
|
22505
|
-
;(0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
|
|
22506
|
-
(0,jodit_core_decorators_debounce_debounce__WEBPACK_IMPORTED_MODULE_3__.debounce)()
|
|
22507
|
-
], History.prototype, "onChange", null);
|
|
22508
22580
|
|
|
22509
22581
|
|
|
22510
22582
|
/***/ }),
|
|
@@ -24103,7 +24175,9 @@ class Table extends jodit_core_component__WEBPACK_IMPORTED_MODULE_2__.ViewCompon
|
|
|
24103
24175
|
const columnsCount = Table.__getColumnsCount(table);
|
|
24104
24176
|
row = create.element('tr');
|
|
24105
24177
|
for(let j = 0; j < columnsCount; j += 1){
|
|
24106
|
-
|
|
24178
|
+
const cell = create.element('td');
|
|
24179
|
+
jodit_core_dom__WEBPACK_IMPORTED_MODULE_5__.Dom.append(cell, create.element('br'));
|
|
24180
|
+
jodit_core_dom__WEBPACK_IMPORTED_MODULE_5__.Dom.append(row, cell);
|
|
24107
24181
|
}
|
|
24108
24182
|
} else {
|
|
24109
24183
|
row = line.cloneNode(true);
|
|
@@ -24120,6 +24194,7 @@ class Table extends jodit_core_component__WEBPACK_IMPORTED_MODULE_2__.ViewCompon
|
|
|
24120
24194
|
jodit_core_dom__WEBPACK_IMPORTED_MODULE_5__.Dom.each(row, (cell)=>{
|
|
24121
24195
|
if (jodit_core_dom__WEBPACK_IMPORTED_MODULE_5__.Dom.isCell(cell)) {
|
|
24122
24196
|
jodit_core_dom__WEBPACK_IMPORTED_MODULE_5__.Dom.detach(cell);
|
|
24197
|
+
jodit_core_dom__WEBPACK_IMPORTED_MODULE_5__.Dom.append(cell, create.element('br'));
|
|
24123
24198
|
}
|
|
24124
24199
|
});
|
|
24125
24200
|
}
|
|
@@ -24208,6 +24283,7 @@ class Table extends jodit_core_component__WEBPACK_IMPORTED_MODULE_2__.ViewCompon
|
|
|
24208
24283
|
const cells = box[i];
|
|
24209
24284
|
if (cells[columnIndex] !== cells[newColumnIndex] || columnIndex === newColumnIndex) {
|
|
24210
24285
|
const cell = this.j.createInside.element('td');
|
|
24286
|
+
jodit_core_dom__WEBPACK_IMPORTED_MODULE_5__.Dom.append(cell, this.j.createInside.element('br'));
|
|
24211
24287
|
if (insertAfter) {
|
|
24212
24288
|
jodit_core_dom__WEBPACK_IMPORTED_MODULE_5__.Dom.after(cells[columnIndex], cell);
|
|
24213
24289
|
} else {
|
|
@@ -24431,7 +24507,7 @@ class Table extends jodit_core_component__WEBPACK_IMPORTED_MODULE_2__.ViewCompon
|
|
|
24431
24507
|
Table.__setColumnWidthByDelta(table, first_j, 0, true, __marked);
|
|
24432
24508
|
}
|
|
24433
24509
|
}
|
|
24434
|
-
first.innerHTML = html.join('<br/>');
|
|
24510
|
+
first.innerHTML = html.join('<br/>') || '<br/>';
|
|
24435
24511
|
instance(jodit).addSelection(first);
|
|
24436
24512
|
alreadyMerged.delete(first);
|
|
24437
24513
|
Table.__unmark(__marked);
|
|
@@ -26663,8 +26739,8 @@ jodit_core_ui__WEBPACK_IMPORTED_MODULE_2__.Icon.set('palette', (_palette_svg__WE
|
|
|
26663
26739
|
const box = (0,jodit_modules_widget_tabs_tabs__WEBPACK_IMPORTED_MODULE_3__.TabsWidget)(editor, tabs);
|
|
26664
26740
|
// Marks this popup so its tabs auto-size to their labels (see
|
|
26665
26741
|
// `.jodit-file-selector` in tabs.less) — long localized tab captions are no
|
|
26666
|
-
// longer clipped — while leaving other tab popups (link
|
|
26667
|
-
//
|
|
26742
|
+
// longer clipped — while leaving other tab popups (link …) untouched. The
|
|
26743
|
+
// video popup, which has an Upload tab too, uses it as well.
|
|
26668
26744
|
box.classList.add('jodit-file-selector');
|
|
26669
26745
|
return box;
|
|
26670
26746
|
};
|
|
@@ -27695,6 +27771,10 @@ class backspace extends jodit_core_plugin__WEBPACK_IMPORTED_MODULE_5__.Plugin {
|
|
|
27695
27771
|
if (!sel.isFocused()) {
|
|
27696
27772
|
sel.focus();
|
|
27697
27773
|
}
|
|
27774
|
+
// Focused with no range, as WebKit leaves it after a click on an embed
|
|
27775
|
+
if (!sel.isInsideArea) {
|
|
27776
|
+
return;
|
|
27777
|
+
}
|
|
27698
27778
|
if ((0,_cases_check_not_collapsed__WEBPACK_IMPORTED_MODULE_8__.checkNotCollapsed)(jodit)) {
|
|
27699
27779
|
jodit.e.fire('backSpaceAfterDelete', backspace);
|
|
27700
27780
|
return false;
|
|
@@ -28890,7 +28970,8 @@ jodit_core_ui_icon__WEBPACK_IMPORTED_MODULE_5__.Icon.set('class-span', (_class_s
|
|
|
28890
28970
|
/* harmony import */ var jodit_core_helpers_html_safe_html__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(48155);
|
|
28891
28971
|
/* harmony import */ var jodit_core_plugin_plugin__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(18855);
|
|
28892
28972
|
/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(11173);
|
|
28893
|
-
/* harmony import */ var
|
|
28973
|
+
/* harmony import */ var _helpers_visitor_filters_replace_old_tags__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(35104);
|
|
28974
|
+
/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(54053);
|
|
28894
28975
|
/*!
|
|
28895
28976
|
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
28896
28977
|
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
@@ -28909,11 +28990,16 @@ jodit_core_ui_icon__WEBPACK_IMPORTED_MODULE_5__.Icon.set('class-span', (_class_s
|
|
|
28909
28990
|
|
|
28910
28991
|
|
|
28911
28992
|
|
|
28993
|
+
|
|
28912
28994
|
/**
|
|
28913
28995
|
* Clean HTML after removeFormat and insertHorizontalRule command
|
|
28914
28996
|
*/ const TRAILING_BR_BLOCKS = 'p, div, li, td, th, h1, h2, h3, h4, h5, h6, blockquote';
|
|
28915
28997
|
class cleanHtml extends jodit_core_plugin_plugin__WEBPACK_IMPORTED_MODULE_7__.Plugin {
|
|
28916
|
-
/** @override */ afterInit(
|
|
28998
|
+
/** @override */ afterInit() {
|
|
28999
|
+
// The walker's own `:afterInit` watcher is bound on that very event,
|
|
29000
|
+
// so without this the first pass waited for the first key or click
|
|
29001
|
+
this.onChangeCleanHTML();
|
|
29002
|
+
}
|
|
28917
29003
|
get isEditMode() {
|
|
28918
29004
|
return !(this.j.isInDestruct || !this.j.isEditorMode() || this.j.getReadOnly());
|
|
28919
29005
|
}
|
|
@@ -28929,18 +29015,18 @@ class cleanHtml extends jodit_core_plugin_plugin__WEBPACK_IMPORTED_MODULE_7__.Pl
|
|
|
28929
29015
|
}
|
|
28930
29016
|
startWalker() {
|
|
28931
29017
|
const { jodit } = this;
|
|
28932
|
-
const allow = (0,
|
|
28933
|
-
const deny = (0,
|
|
28934
|
-
this.walker.on('visit', (node)=>(0,
|
|
29018
|
+
const allow = (0,_helpers__WEBPACK_IMPORTED_MODULE_10__.getHash)(this.j.o.cleanHTML.allowTags);
|
|
29019
|
+
const deny = (0,_helpers__WEBPACK_IMPORTED_MODULE_10__.getHash)(this.j.o.cleanHTML.denyTags);
|
|
29020
|
+
this.walker.on('visit', (node)=>(0,_helpers__WEBPACK_IMPORTED_MODULE_10__.visitNodeWalker)(jodit, node, allow, deny, this.currentSelectionNode)).on('end', (affected)=>{
|
|
28935
29021
|
this.j.e.fire(affected ? 'internalChange finishedCleanHTMLWorker' : 'finishedCleanHTMLWorker');
|
|
28936
29022
|
});
|
|
28937
29023
|
}
|
|
28938
29024
|
beforeCommand(command) {
|
|
28939
29025
|
if (command.toLowerCase() === 'removeformat') {
|
|
28940
29026
|
if (this.j.s.isCollapsed()) {
|
|
28941
|
-
(0,
|
|
29027
|
+
(0,_helpers__WEBPACK_IMPORTED_MODULE_10__.removeFormatForCollapsedSelection)(this.j);
|
|
28942
29028
|
} else {
|
|
28943
|
-
(0,
|
|
29029
|
+
(0,_helpers__WEBPACK_IMPORTED_MODULE_10__.removeFormatForSelection)(this.j);
|
|
28944
29030
|
}
|
|
28945
29031
|
return false;
|
|
28946
29032
|
}
|
|
@@ -28966,6 +29052,7 @@ class cleanHtml extends jodit_core_plugin_plugin__WEBPACK_IMPORTED_MODULE_7__.Pl
|
|
|
28966
29052
|
];
|
|
28967
29053
|
sandBox.innerHTML = data.value;
|
|
28968
29054
|
this.j.e.fire('safeHTML', sandBox);
|
|
29055
|
+
this.__replaceOldTags(sandBox);
|
|
28969
29056
|
data.value = sandBox.innerHTML;
|
|
28970
29057
|
(0,jodit_core_helpers_html_safe_html__WEBPACK_IMPORTED_MODULE_6__.safeHTML)(sandBox, {
|
|
28971
29058
|
safeJavaScriptLink: true,
|
|
@@ -28974,6 +29061,20 @@ class cleanHtml extends jodit_core_plugin_plugin__WEBPACK_IMPORTED_MODULE_7__.Pl
|
|
|
28974
29061
|
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_3__.Dom.safeRemove(iframe);
|
|
28975
29062
|
return false;
|
|
28976
29063
|
}
|
|
29064
|
+
/**
|
|
29065
|
+
* Replace old tags (`<b>` with `<strong>`, `<i>` with `<em>`) in an
|
|
29066
|
+
* assigned value straight away. The walker would get to them only after
|
|
29067
|
+
* every node before them, seconds later on a long document, and until
|
|
29068
|
+
* then Bold does not treat `<b>` as bold, and the swap can move the caret.
|
|
29069
|
+
*/ __replaceOldTags(box) {
|
|
29070
|
+
const { replaceOldTags: list, disableCleanFilter } = this.j.o.cleanHTML;
|
|
29071
|
+
if (!list || disableCleanFilter?.has('replaceOldTags')) {
|
|
29072
|
+
return;
|
|
29073
|
+
}
|
|
29074
|
+
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_3__.Dom.each(box, (node)=>{
|
|
29075
|
+
;(0,_helpers_visitor_filters_replace_old_tags__WEBPACK_IMPORTED_MODULE_9__.replaceOldTags)(this.j, node, false);
|
|
29076
|
+
});
|
|
29077
|
+
}
|
|
28977
29078
|
/**
|
|
28978
29079
|
* Collapse a value that holds only a single empty block (e.g.
|
|
28979
29080
|
* `<p><br></p>` left after deleting all content) to an empty string —
|
|
@@ -29051,10 +29152,11 @@ class cleanHtml extends jodit_core_plugin_plugin__WEBPACK_IMPORTED_MODULE_7__.Pl
|
|
|
29051
29152
|
;(0,jodit_core_helpers_html_safe_html__WEBPACK_IMPORTED_MODULE_6__.safeHTML)(sandBox, this.j.o.cleanHTML);
|
|
29052
29153
|
}
|
|
29053
29154
|
/** @override */ beforeDestruct() {
|
|
29155
|
+
this.j.e.off('safeHTML', this.onSafeHTML).off('beforeSetNativeEditorValue', this.onBeforeSetNativeEditorValue).off('afterSetNativeEditorValue', this.onAfterSetNativeEditorValue);
|
|
29054
29156
|
this.walker.destruct();
|
|
29055
29157
|
}
|
|
29056
|
-
constructor(
|
|
29057
|
-
super(
|
|
29158
|
+
constructor(jodit){
|
|
29159
|
+
super(jodit), /** @override */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "buttons", [
|
|
29058
29160
|
{
|
|
29059
29161
|
name: 'eraser',
|
|
29060
29162
|
group: 'font-style'
|
|
@@ -29062,6 +29164,12 @@ class cleanHtml extends jodit_core_plugin_plugin__WEBPACK_IMPORTED_MODULE_7__.Pl
|
|
|
29062
29164
|
]), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "currentSelectionNode", null), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "walker", new jodit_core_dom_lazy_walker__WEBPACK_IMPORTED_MODULE_4__.LazyWalker(this.j.async, {
|
|
29063
29165
|
timeout: this.j.o.cleanHTML.timeout
|
|
29064
29166
|
}));
|
|
29167
|
+
// `@watch` binds once the plugin is ready, which is after the initial
|
|
29168
|
+
// value has already gone into the editor. The handlers that keep
|
|
29169
|
+
// markup out of the live tree have to be there from the start, or
|
|
29170
|
+
// event handlers in a textarea's content run before anything
|
|
29171
|
+
// sanitises them.
|
|
29172
|
+
jodit.e.on('safeHTML', this.onSafeHTML).on('beforeSetNativeEditorValue', this.onBeforeSetNativeEditorValue).on('afterSetNativeEditorValue', this.onAfterSetNativeEditorValue);
|
|
29065
29173
|
}
|
|
29066
29174
|
}
|
|
29067
29175
|
;(0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
|
|
@@ -29080,16 +29188,16 @@ class cleanHtml extends jodit_core_plugin_plugin__WEBPACK_IMPORTED_MODULE_7__.Pl
|
|
|
29080
29188
|
(0,jodit_core_decorators__WEBPACK_IMPORTED_MODULE_2__.watch)(':beforeCommand')
|
|
29081
29189
|
], cleanHtml.prototype, "beforeCommand", null);
|
|
29082
29190
|
(0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
|
|
29083
|
-
|
|
29191
|
+
jodit_core_decorators__WEBPACK_IMPORTED_MODULE_2__.autobind
|
|
29084
29192
|
], cleanHtml.prototype, "onAfterSetNativeEditorValue", null);
|
|
29085
29193
|
(0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
|
|
29086
|
-
|
|
29194
|
+
jodit_core_decorators__WEBPACK_IMPORTED_MODULE_2__.autobind
|
|
29087
29195
|
], cleanHtml.prototype, "onBeforeSetNativeEditorValue", null);
|
|
29088
29196
|
(0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
|
|
29089
29197
|
(0,jodit_core_decorators__WEBPACK_IMPORTED_MODULE_2__.watch)(':afterGetValueFromEditor')
|
|
29090
29198
|
], cleanHtml.prototype, "onAfterGetValueFromEditor", null);
|
|
29091
29199
|
(0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
|
|
29092
|
-
|
|
29200
|
+
jodit_core_decorators__WEBPACK_IMPORTED_MODULE_2__.autobind
|
|
29093
29201
|
], cleanHtml.prototype, "onSafeHTML", null);
|
|
29094
29202
|
jodit_core_global__WEBPACK_IMPORTED_MODULE_5__.pluginSystem.add('cleanHtml', cleanHtml);
|
|
29095
29203
|
|
|
@@ -29699,10 +29807,33 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
29699
29807
|
}
|
|
29700
29808
|
const tagName = list[oldParent.nodeName.toLowerCase()] || list[oldParent.nodeName];
|
|
29701
29809
|
if (tagName) {
|
|
29702
|
-
|
|
29810
|
+
const restoreSelection = keepSelection(jodit, oldParent);
|
|
29811
|
+
const newParent = jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.replace(oldParent, tagName, jodit.createInside, true, false);
|
|
29812
|
+
restoreSelection?.(newParent);
|
|
29813
|
+
return newParent;
|
|
29703
29814
|
}
|
|
29704
29815
|
return oldParent;
|
|
29705
29816
|
}
|
|
29817
|
+
/**
|
|
29818
|
+
* Moving the children out of an element collapses a selection inside them to
|
|
29819
|
+
* where the element was, so the caret jumps to the start of the text being
|
|
29820
|
+
* typed. Returns a callback that puts the selection back on the same nodes.
|
|
29821
|
+
*
|
|
29822
|
+
* Like `removeEmptyTextNode`, it leaves the selection alone once focus has
|
|
29823
|
+
* left the editor, because selecting would take focus back.
|
|
29824
|
+
*/ function keepSelection(jodit, elm) {
|
|
29825
|
+
const { sel } = jodit.s;
|
|
29826
|
+
if (!sel?.anchorNode || !sel.focusNode || !jodit.s.isFocused()) {
|
|
29827
|
+
return null;
|
|
29828
|
+
}
|
|
29829
|
+
const { anchorNode, anchorOffset, focusNode, focusOffset } = sel;
|
|
29830
|
+
if (!jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isOrContains(elm, anchorNode) && !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isOrContains(elm, focusNode)) {
|
|
29831
|
+
return null;
|
|
29832
|
+
}
|
|
29833
|
+
return (newElm)=>{
|
|
29834
|
+
sel.setBaseAndExtent(anchorNode === elm ? newElm : anchorNode, anchorOffset, focusNode === elm ? newElm : focusNode, focusOffset);
|
|
29835
|
+
};
|
|
29836
|
+
}
|
|
29706
29837
|
|
|
29707
29838
|
|
|
29708
29839
|
/***/ }),
|
|
@@ -31341,9 +31472,31 @@ const brBoxes = new Set([
|
|
|
31341
31472
|
* @module plugins/dtd
|
|
31342
31473
|
* @internal
|
|
31343
31474
|
*/
|
|
31475
|
+
/**
|
|
31476
|
+
* Moves the cursor out of a block that can't hold the inserted block: before
|
|
31477
|
+
* or after it when the cursor is at its edge, or between its two halves when
|
|
31478
|
+
* the cursor is inside its content. An empty block is removed
|
|
31479
|
+
*/ function moveCursorOutOf(jodit, parent) {
|
|
31480
|
+
const { s } = jodit;
|
|
31481
|
+
if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(parent)) {
|
|
31482
|
+
s.setCursorAfter(parent);
|
|
31483
|
+
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(parent);
|
|
31484
|
+
return;
|
|
31485
|
+
}
|
|
31486
|
+
if (s.cursorOnTheRight(parent)) {
|
|
31487
|
+
s.setCursorAfter(parent);
|
|
31488
|
+
return;
|
|
31489
|
+
}
|
|
31490
|
+
if (s.cursorOnTheLeft(parent)) {
|
|
31491
|
+
s.setCursorBefore(parent);
|
|
31492
|
+
return;
|
|
31493
|
+
}
|
|
31494
|
+
s.setCursorAfter(s.splitSelection(parent) ?? parent);
|
|
31495
|
+
}
|
|
31344
31496
|
/**
|
|
31345
31497
|
* Checks whether the insertion of an element at the current location is allowed,
|
|
31346
|
-
* if it is not allowed, it deletes an empty block element
|
|
31498
|
+
* if it is not allowed, it deletes an empty block element, moves the cursor
|
|
31499
|
+
* before or after it, or splits it at the cursor
|
|
31347
31500
|
* @internal
|
|
31348
31501
|
*/ function checkBlockNesting(jodit, node) {
|
|
31349
31502
|
if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isFragment(node)) {
|
|
@@ -31371,10 +31524,7 @@ const brBoxes = new Set([
|
|
|
31371
31524
|
parent = current;
|
|
31372
31525
|
}
|
|
31373
31526
|
if (parent) {
|
|
31374
|
-
jodit
|
|
31375
|
-
if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(parent)) {
|
|
31376
|
-
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(parent);
|
|
31377
|
-
}
|
|
31527
|
+
moveCursorOutOf(jodit, parent);
|
|
31378
31528
|
}
|
|
31379
31529
|
}
|
|
31380
31530
|
}
|
|
@@ -31904,7 +32054,14 @@ function brBefore(start) {
|
|
|
31904
32054
|
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.after(link, fake);
|
|
31905
32055
|
} else if (s.cursorOnTheLeft(link, fake)) {
|
|
31906
32056
|
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.before(link, fake);
|
|
32057
|
+
} else {
|
|
32058
|
+
return;
|
|
31907
32059
|
}
|
|
32060
|
+
// The block is split at the caret, so the caret leaves the link too:
|
|
32061
|
+
// beside the fake, since Safari mislays a caret inside a removed node
|
|
32062
|
+
const range = s.createRange();
|
|
32063
|
+
range.setStartBefore(fake);
|
|
32064
|
+
s.selectRange(range);
|
|
31908
32065
|
}
|
|
31909
32066
|
}
|
|
31910
32067
|
|
|
@@ -32147,9 +32304,10 @@ jodit_core_global__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('file', file);
|
|
|
32147
32304
|
|
|
32148
32305
|
"use strict";
|
|
32149
32306
|
/* unused harmony export focus */
|
|
32150
|
-
/* harmony import */ var
|
|
32151
|
-
/* harmony import */ var
|
|
32152
|
-
/* harmony import */ var
|
|
32307
|
+
/* harmony import */ var jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81937);
|
|
32308
|
+
/* harmony import */ var jodit_core_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(27795);
|
|
32309
|
+
/* harmony import */ var jodit_core_global__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(28077);
|
|
32310
|
+
/* harmony import */ var jodit_config__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(5266);
|
|
32153
32311
|
/*!
|
|
32154
32312
|
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
32155
32313
|
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
@@ -32161,15 +32319,16 @@ jodit_core_global__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('file', file);
|
|
|
32161
32319
|
*/
|
|
32162
32320
|
|
|
32163
32321
|
|
|
32322
|
+
|
|
32164
32323
|
/**
|
|
32165
32324
|
* After loading the page into the editor once the focus is set
|
|
32166
|
-
*/
|
|
32325
|
+
*/ jodit_config__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.autofocus = false;
|
|
32167
32326
|
/**
|
|
32168
32327
|
* Cursor position after autofocus
|
|
32169
|
-
*/
|
|
32328
|
+
*/ jodit_config__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.cursorAfterAutofocus = 'end';
|
|
32170
32329
|
/**
|
|
32171
32330
|
* Save current selection on blur event
|
|
32172
|
-
*/
|
|
32331
|
+
*/ jodit_config__WEBPACK_IMPORTED_MODULE_3__.Config.prototype.saveSelectionOnBlur = true;
|
|
32173
32332
|
function focus(editor) {
|
|
32174
32333
|
if (editor.o.saveSelectionOnBlur) {
|
|
32175
32334
|
// A click that brings focus back places the caret itself, and Chrome
|
|
@@ -32201,10 +32360,10 @@ function focus(editor) {
|
|
|
32201
32360
|
let textNode = null;
|
|
32202
32361
|
switch(editor.o.cursorAfterAutofocus){
|
|
32203
32362
|
case 'start':
|
|
32204
|
-
textNode =
|
|
32363
|
+
textNode = jodit_core_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.first(editor.editor, (node)=>jodit_core_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isText(node));
|
|
32205
32364
|
break;
|
|
32206
32365
|
case 'end':
|
|
32207
|
-
textNode =
|
|
32366
|
+
textNode = jodit_core_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.last(editor.editor, (node)=>jodit_core_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isText(node));
|
|
32208
32367
|
break;
|
|
32209
32368
|
}
|
|
32210
32369
|
if (textNode) {
|
|
@@ -32222,7 +32381,8 @@ function focus(editor) {
|
|
|
32222
32381
|
});
|
|
32223
32382
|
editor.e.on('afterInit afterAddPlace', ()=>{
|
|
32224
32383
|
editor.e.off(editor.editor, 'mousedown.autofocus').on(editor.editor, 'mousedown.autofocus', (e)=>{
|
|
32225
|
-
|
|
32384
|
+
// An empty block takes the caret, but a video, say, can't hold one
|
|
32385
|
+
if (editor.isEditorMode() && e.target && jodit_core_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock(e.target) && !jodit_core_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(e.target, jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.INSEPARABLE_TAGS) && !e.target.childNodes.length) {
|
|
32226
32386
|
if (editor.editor === e.target) {
|
|
32227
32387
|
editor.s.focus();
|
|
32228
32388
|
} else {
|
|
@@ -32232,7 +32392,7 @@ function focus(editor) {
|
|
|
32232
32392
|
});
|
|
32233
32393
|
});
|
|
32234
32394
|
}
|
|
32235
|
-
|
|
32395
|
+
jodit_core_global__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('focus', focus);
|
|
32236
32396
|
|
|
32237
32397
|
|
|
32238
32398
|
/***/ }),
|
|
@@ -33393,15 +33553,25 @@ function hr(editor) {
|
|
|
33393
33553
|
const elm = editor.createInside.element('hr');
|
|
33394
33554
|
editor.s.insertNode(elm, false, false);
|
|
33395
33555
|
const block = jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(elm.parentElement, jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock, editor.editor);
|
|
33396
|
-
|
|
33556
|
+
// A block that holds other blocks, such as a list item or a table
|
|
33557
|
+
// cell, keeps the line
|
|
33558
|
+
if (block && jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(block) && block !== editor.editor && !editor.o.dtd?.blockLimits[block.nodeName.toLowerCase()]) {
|
|
33397
33559
|
jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.after(block, elm);
|
|
33398
33560
|
jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(block);
|
|
33399
33561
|
}
|
|
33400
|
-
|
|
33401
|
-
if (
|
|
33402
|
-
|
|
33403
|
-
|
|
33562
|
+
const next = jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.findNotEmptySibling(elm, false);
|
|
33563
|
+
if (jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(next)) {
|
|
33564
|
+
editor.s.setCursorIn(next, true);
|
|
33565
|
+
return false;
|
|
33566
|
+
}
|
|
33567
|
+
// In a list item or a table cell the text goes on after the line, as
|
|
33568
|
+
// it does with the browsers' own command
|
|
33569
|
+
if (next || elm.parentNode !== editor.editor && !jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.findNotEmptySibling(elm, true))) {
|
|
33570
|
+
editor.s.setCursorAfter(elm);
|
|
33571
|
+
return false;
|
|
33404
33572
|
}
|
|
33573
|
+
const p = editor.createInside.element(editor.o.enter);
|
|
33574
|
+
jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.after(elm, p);
|
|
33405
33575
|
editor.s.setCursorIn(p);
|
|
33406
33576
|
return false;
|
|
33407
33577
|
});
|
|
@@ -33427,7 +33597,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeBaseUrl = '';
|
|
|
33427
33597
|
jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeTitle = 'Jodit Editor';
|
|
33428
33598
|
jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeDoctype = '<!DOCTYPE html>';
|
|
33429
33599
|
jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeDefaultSrc = 'about:blank';
|
|
33430
|
-
jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeStyle = 'html{' + 'margin:0;' + 'padding:0;' + 'min-height: 100%;' + '}' + 'body{' + 'box-sizing:border-box;' + 'font-size:13px;' + 'line-height:1.6;' + 'padding:10px;' + 'margin:0;' + 'background:transparent;' + 'color:#000;' + 'position:' + 'relative;' + 'z-index:2;' + 'user-select:auto;' + 'margin:0px;' + 'overflow:auto;' + 'outline:none;' + '}' + 'table{' + 'width:100%;' + 'border:none;' + 'border-collapse:collapse;' + 'empty-cells: show;' + 'max-width: 100%;' + '}' + 'th,td{' + 'padding: 2px 5px;' + 'border:1px solid #ccc;' + '-webkit-user-select:text;' + '-moz-user-select:text;' + '-ms-user-select:text;' + 'user-select:text' + '}' + 'p{' + 'margin-top:0;' + '}' + '
|
|
33600
|
+
jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeStyle = 'html{' + 'margin:0;' + 'padding:0;' + 'min-height: 100%;' + '}' + 'body{' + 'box-sizing:border-box;' + 'font-size:13px;' + 'line-height:1.6;' + 'padding:10px;' + 'margin:0;' + 'background:transparent;' + 'color:#000;' + 'position:' + 'relative;' + 'z-index:2;' + 'user-select:auto;' + 'margin:0px;' + 'overflow:auto;' + 'outline:none;' + '}' + 'table{' + 'width:100%;' + 'border:none;' + 'border-collapse:collapse;' + 'empty-cells: show;' + 'max-width: 100%;' + '}' + 'th,td{' + 'padding: 2px 5px;' + 'border:1px solid #ccc;' + '-webkit-user-select:text;' + '-moz-user-select:text;' + '-ms-user-select:text;' + 'user-select:text' + '}' + 'p{' + 'margin-top:0;' + '}' + '[data-jodit_iframe_wrapper]{' + 'display: block;' + 'user-select: none;' + 'position: relative;' + '}' + '[data-jodit_iframe_wrapper] iframe{' + 'position: relative;' + '}' + '[data-jodit_iframe_wrapper]:after {' + 'position:absolute;' + 'content:"";' + 'z-index:1;' + 'top:0;' + 'left:0;' + 'right: 0;' + 'bottom: 0;' + 'cursor: pointer;' + 'display: block;' + 'background: rgba(0, 0, 0, 0);' + '} ' + '[data-jodit_iframe_wrapper][data-jodit-wrapper_active=true] iframe{' + 'z-index: 2;' + '}' + '.jodit-wysiwyg_image-selected::selection,' + '.jodit-wysiwyg_image-selected *:not(img)::selection{' + 'background:transparent' + '}' + '.jodit_disabled{' + 'user-select: none;' + '-o-user-select: none;' + '-moz-user-select: none;' + '-khtml-user-select: none;' + '-webkit-user-select: none;' + '-ms-user-select: none' + '}';
|
|
33431
33601
|
jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeCSSLinks = [];
|
|
33432
33602
|
jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.iframeSandbox = null;
|
|
33433
33603
|
|
|
@@ -36259,10 +36429,30 @@ const align = {
|
|
|
36259
36429
|
// A media wrapper kept in the content gets the media popup
|
|
36260
36430
|
const type = mediaWrapper ? 'jodit-media' : target?.nodeName.toLowerCase();
|
|
36261
36431
|
if (target && type && this.canShowPopupForType(type)) {
|
|
36262
|
-
|
|
36432
|
+
const isMedia = type === 'jodit-media';
|
|
36433
|
+
// Beside the media in a wrapper kept in the content, which can fill
|
|
36434
|
+
// the line
|
|
36435
|
+
const bound = mediaWrapper && (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.getWrappedMedia)(this.j, mediaWrapper) || target;
|
|
36436
|
+
this.showPopup(()=>this.__bound(bound, isMedia), type, target);
|
|
36263
36437
|
return false;
|
|
36264
36438
|
}
|
|
36265
36439
|
}
|
|
36440
|
+
/**
|
|
36441
|
+
* The box the popup opens beside: the target's, with room for the
|
|
36442
|
+
* resizer's handles when the target gets them, so it doesn't cover them
|
|
36443
|
+
*/ __bound(target, isMedia) {
|
|
36444
|
+
const bound = (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.position)(target, this.j);
|
|
36445
|
+
const resizable = this.j.o.allowResizeTags;
|
|
36446
|
+
if (!isMedia && !(resizable && jodit_core_dom__WEBPACK_IMPORTED_MODULE_3__.Dom.isTag(target, resizable))) {
|
|
36447
|
+
return bound;
|
|
36448
|
+
}
|
|
36449
|
+
const room = parseInt(this.j.ow.getComputedStyle(this.j.container).getPropertyValue('--jd-resizer-handle-size'), 10) / 2 || 0;
|
|
36450
|
+
return {
|
|
36451
|
+
...bound,
|
|
36452
|
+
top: bound.top - room,
|
|
36453
|
+
height: bound.height + room * 2
|
|
36454
|
+
};
|
|
36455
|
+
}
|
|
36266
36456
|
/**
|
|
36267
36457
|
* Show inline popup with some toolbar
|
|
36268
36458
|
*
|
|
@@ -37193,7 +37383,8 @@ jodit_config__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.controls.link = {
|
|
|
37193
37383
|
height: jodit.o.video?.defaultHeight
|
|
37194
37384
|
});
|
|
37195
37385
|
if (embed !== html) {
|
|
37196
|
-
|
|
37386
|
+
const media = (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.prepareEmbedCode)(jodit, embed);
|
|
37387
|
+
return (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.isString)(media) ? jodit.createInside.fromHTML(media) : media;
|
|
37197
37388
|
}
|
|
37198
37389
|
}
|
|
37199
37390
|
if (jodit.s.isCollapsed()) {
|
|
@@ -37679,10 +37870,27 @@ jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.mediaWrappers = {};
|
|
|
37679
37870
|
} else {
|
|
37680
37871
|
return;
|
|
37681
37872
|
}
|
|
37873
|
+
// Selected, as an image is, so Delete and Backspace remove it
|
|
37682
37874
|
editor.e.off(element, 'mousedown.select touchstart.select').on(element, 'mousedown.select touchstart.select', ()=>{
|
|
37683
|
-
editor.s.
|
|
37875
|
+
editor.s.select(element);
|
|
37684
37876
|
});
|
|
37685
37877
|
};
|
|
37878
|
+
// Media in a wrapper kept in the content let clicks through to it, as
|
|
37879
|
+
// jodit-media covers its media, so a click selects the media rather than
|
|
37880
|
+
// playing it. An inline wrapper holds it as an inline-block, unless its
|
|
37881
|
+
// classes or style give it a display of their own
|
|
37882
|
+
const wrappers = Object.values(mediaWrappers);
|
|
37883
|
+
if (wrappers.length) {
|
|
37884
|
+
editor.e.on('afterInit', ()=>{
|
|
37885
|
+
const selectors = (list)=>[
|
|
37886
|
+
...new Set(list)
|
|
37887
|
+
].join(',');
|
|
37888
|
+
const scoped = ({ tag, className })=>`.jodit-wysiwyg ${tag}.${className}`;
|
|
37889
|
+
const inline = selectors(wrappers.filter(({ tag })=>jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.IS_INLINE.test(tag)).map(scoped));
|
|
37890
|
+
const media = selectors(wrappers.flatMap((wrapper)=>mediaBlocks.map((tag)=>`${scoped(wrapper)}>${tag}`)));
|
|
37891
|
+
(0,jodit_core_global__WEBPACK_IMPORTED_MODULE_2__.getContainer)(editor, 'media-wrappers', 'style', true).innerHTML = (inline ? `:where(${inline}){display:inline-block}` : '') + `${media}{pointer-events:none}`;
|
|
37892
|
+
});
|
|
37893
|
+
}
|
|
37686
37894
|
if (mediaInFakeBlock || Object.keys(mediaWrappers).length) {
|
|
37687
37895
|
editor.e.on('afterGetValueFromEditor', (data)=>{
|
|
37688
37896
|
const rxp = new RegExp(`<${mediaFakeTag}[^>]+data-${keyFake}[^>]+>([^]+?)</${mediaFakeTag}>`, 'ig');
|
|
@@ -38573,12 +38781,14 @@ jodit_config__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.controls.paste = {
|
|
|
38573
38781
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
38574
38782
|
/* harmony export */ askInsertTypeDialog: function() { return /* binding */ askInsertTypeDialog; },
|
|
38575
38783
|
/* harmony export */ getAllTypes: function() { return /* binding */ getAllTypes; },
|
|
38576
|
-
/* harmony export */ pasteInsertHtml: function() { return /* binding */ pasteInsertHtml; }
|
|
38784
|
+
/* harmony export */ pasteInsertHtml: function() { return /* binding */ pasteInsertHtml; },
|
|
38785
|
+
/* harmony export */ removeGoogleDocsWrapper: function() { return /* binding */ removeGoogleDocsWrapper; }
|
|
38577
38786
|
/* harmony export */ });
|
|
38578
38787
|
/* harmony import */ var jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81937);
|
|
38579
38788
|
/* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23211);
|
|
38580
|
-
/* harmony import */ var
|
|
38581
|
-
/* harmony import */ var
|
|
38789
|
+
/* harmony import */ var jodit_core_helpers_array_to_array__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(88475);
|
|
38790
|
+
/* harmony import */ var jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(28686);
|
|
38791
|
+
/* harmony import */ var jodit_core_ui_button_button_button__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(53681);
|
|
38582
38792
|
/*!
|
|
38583
38793
|
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
38584
38794
|
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
@@ -38589,6 +38799,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.controls.paste = {
|
|
|
38589
38799
|
|
|
38590
38800
|
|
|
38591
38801
|
|
|
38802
|
+
|
|
38592
38803
|
/**
|
|
38593
38804
|
* Remove special HTML comments
|
|
38594
38805
|
* @private
|
|
@@ -38604,6 +38815,21 @@ jodit_config__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.controls.paste = {
|
|
|
38604
38815
|
}
|
|
38605
38816
|
return html;
|
|
38606
38817
|
}
|
|
38818
|
+
/**
|
|
38819
|
+
* Google Docs wraps the copied content in
|
|
38820
|
+
* `<b style="font-weight:normal;" id="docs-internal-guid-…">`. Kept, the
|
|
38821
|
+
* wrapper holds the pasted blocks, and without its style it makes the whole
|
|
38822
|
+
* paste bold
|
|
38823
|
+
* @private
|
|
38824
|
+
*/ function removeGoogleDocsWrapper(html) {
|
|
38825
|
+
if (!/<b\s[^>]*docs-internal-guid-/i.test(html)) {
|
|
38826
|
+
return html;
|
|
38827
|
+
}
|
|
38828
|
+
// An inert document: images don't load and handlers don't run
|
|
38829
|
+
const { body } = new DOMParser().parseFromString(html, 'text/html');
|
|
38830
|
+
(0,jodit_core_helpers_array_to_array__WEBPACK_IMPORTED_MODULE_2__.toArray)(body.querySelectorAll('b[id^="docs-internal-guid-"]')).forEach(jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.unwrap);
|
|
38831
|
+
return body.innerHTML;
|
|
38832
|
+
}
|
|
38607
38833
|
/**
|
|
38608
38834
|
* @private
|
|
38609
38835
|
*/ function isDragEvent(e) {
|
|
@@ -38620,11 +38846,11 @@ jodit_config__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.controls.paste = {
|
|
|
38620
38846
|
editor.s.insertCursorAtPoint(e.clientX, e.clientY);
|
|
38621
38847
|
}
|
|
38622
38848
|
const result = editor.e.fire('beforePasteInsert', html);
|
|
38623
|
-
if (!(0,
|
|
38849
|
+
if (!(0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_3__.isVoid)(result) && ((0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_3__.isString)(result) || (0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_3__.isNumber)(result) || jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isNode(result))) {
|
|
38624
38850
|
html = result;
|
|
38625
38851
|
}
|
|
38626
|
-
if ((0,
|
|
38627
|
-
html = removeExtraFragments(html);
|
|
38852
|
+
if ((0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_3__.isString)(html)) {
|
|
38853
|
+
html = removeExtraFragments(removeGoogleDocsWrapper(html));
|
|
38628
38854
|
}
|
|
38629
38855
|
editor.s.insertHTML(html);
|
|
38630
38856
|
}
|
|
@@ -38634,7 +38860,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.controls.paste = {
|
|
|
38634
38860
|
*/ function getAllTypes(dt) {
|
|
38635
38861
|
const types = dt.types;
|
|
38636
38862
|
let types_str = '';
|
|
38637
|
-
if ((0,
|
|
38863
|
+
if ((0,jodit_core_helpers_checker__WEBPACK_IMPORTED_MODULE_3__.isArray)(types) || ({}).toString.call(types) === '[object DOMStringList]') {
|
|
38638
38864
|
for(let i = 0; i < types.length; i += 1){
|
|
38639
38865
|
types_str += types[i] + ';';
|
|
38640
38866
|
}
|
|
@@ -38651,7 +38877,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.controls.paste = {
|
|
|
38651
38877
|
return;
|
|
38652
38878
|
}
|
|
38653
38879
|
const dialog = jodit.confirm(`<div style="word-break: normal; white-space: normal">${jodit.i18n(msg)}</div>`, jodit.i18n(title));
|
|
38654
|
-
const buttons = buttonList.map(({ text, value })=>(0,
|
|
38880
|
+
const buttons = buttonList.map(({ text, value })=>(0,jodit_core_ui_button_button_button__WEBPACK_IMPORTED_MODULE_4__.Button)(jodit, {
|
|
38655
38881
|
text,
|
|
38656
38882
|
name: text.toLowerCase(),
|
|
38657
38883
|
tabIndex: 0
|
|
@@ -38667,7 +38893,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.controls.paste = {
|
|
|
38667
38893
|
}
|
|
38668
38894
|
jodit.e.fire('afterClosePasteDialog', dialog);
|
|
38669
38895
|
});
|
|
38670
|
-
const cancel = (0,
|
|
38896
|
+
const cancel = (0,jodit_core_ui_button_button_button__WEBPACK_IMPORTED_MODULE_4__.Button)(jodit, {
|
|
38671
38897
|
text: 'Cancel',
|
|
38672
38898
|
tabIndex: 0
|
|
38673
38899
|
}).onAction(()=>{
|
|
@@ -38819,7 +39045,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.controls.paste = {
|
|
|
38819
39045
|
this.j.buffer.set(jodit_core_constants__WEBPACK_IMPORTED_MODULE_2__.CLIPBOARD_ID, html);
|
|
38820
39046
|
switch(action){
|
|
38821
39047
|
case jodit_core_constants__WEBPACK_IMPORTED_MODULE_2__.INSERT_CLEAR_HTML:
|
|
38822
|
-
html = (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_6__.cleanFromWord)(html);
|
|
39048
|
+
html = (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_6__.cleanFromWord)((0,_helpers__WEBPACK_IMPORTED_MODULE_9__.removeGoogleDocsWrapper)(html));
|
|
38823
39049
|
break;
|
|
38824
39050
|
case jodit_core_constants__WEBPACK_IMPORTED_MODULE_2__.INSERT_ONLY_TEXT:
|
|
38825
39051
|
html = (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_6__.stripTags)(html, this.j.ed, new Set(this.j.o.pasteExcludeStripTags), this.j.o.nl2brInPlainText);
|
|
@@ -39976,7 +40202,7 @@ const keyBInd = '__jodit-resizer_binded';
|
|
|
39976
40202
|
addEventListeners() {
|
|
39977
40203
|
const editor = this.j;
|
|
39978
40204
|
editor.e.off(editor.editor, '.resizer').off(editor.ow, '.resizer').on(editor.editor, 'keydown.resizer', (e)=>{
|
|
39979
|
-
if (this.isShown && e.key === jodit_core_constants__WEBPACK_IMPORTED_MODULE_2__.KEY_DELETE && this.element && !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.isTag(this.element, 'table')) {
|
|
40205
|
+
if (this.isShown && (e.key === jodit_core_constants__WEBPACK_IMPORTED_MODULE_2__.KEY_DELETE || e.key === jodit_core_constants__WEBPACK_IMPORTED_MODULE_2__.KEY_BACKSPACE) && this.element && !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.isTag(this.element, 'table')) {
|
|
39980
40206
|
this.onDelete(e);
|
|
39981
40207
|
}
|
|
39982
40208
|
}).on(editor.ow, 'resize.resizer', this.updateSize).on('resize.resizer', this.updateSize).on([
|
|
@@ -40183,8 +40409,12 @@ const keyBInd = '__jodit-resizer_binded';
|
|
|
40183
40409
|
this.j.e.off(element, 'mousedown.select touchstart.select').on(element, 'mousedown.select touchstart.select', ()=>{
|
|
40184
40410
|
this.j.s.select(element);
|
|
40185
40411
|
}).off(element, 'changesize').on(element, 'changesize', ()=>{
|
|
40186
|
-
|
|
40187
|
-
|
|
40412
|
+
// Only a resize sets the embed's size, and as the plain numbers
|
|
40413
|
+
// the attributes take, so a click leaves `width="100%"` alone
|
|
40414
|
+
if (this.isResizeMode) {
|
|
40415
|
+
(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_6__.attr)(iframe, 'width', element.offsetWidth);
|
|
40416
|
+
(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_6__.attr)(iframe, 'height', element.offsetHeight);
|
|
40417
|
+
}
|
|
40188
40418
|
});
|
|
40189
40419
|
}
|
|
40190
40420
|
this.j.e.on(element, 'dragstart', this.hide);
|
|
@@ -41535,15 +41765,23 @@ class selectCells extends jodit_core_plugin__WEBPACK_IMPORTED_MODULE_7__.Plugin
|
|
|
41535
41765
|
this.__tableModule.mergeSelected(table);
|
|
41536
41766
|
break;
|
|
41537
41767
|
case 'empty':
|
|
41538
|
-
cells.forEach((td)=>
|
|
41768
|
+
cells.forEach((td)=>{
|
|
41769
|
+
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.detach(td);
|
|
41770
|
+
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.append(td, this.j.createInside.element('br'));
|
|
41771
|
+
});
|
|
41539
41772
|
break;
|
|
41540
41773
|
case 'bin':
|
|
41541
|
-
|
|
41774
|
+
this.__removeTable(table);
|
|
41542
41775
|
break;
|
|
41543
41776
|
case 'binrow':
|
|
41544
|
-
|
|
41545
|
-
|
|
41546
|
-
|
|
41777
|
+
{
|
|
41778
|
+
const rows = new Set(cells.map((td)=>td.parentNode));
|
|
41779
|
+
const next = this.__nearestCell(table, cell, (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_6__.toArray)(rows).map((row)=>row.rowIndex), true);
|
|
41780
|
+
rows.forEach((row)=>{
|
|
41781
|
+
this.__tableModule.removeRow(table, row.rowIndex);
|
|
41782
|
+
});
|
|
41783
|
+
next && this.j.s.setCursorIn(next);
|
|
41784
|
+
}
|
|
41547
41785
|
break;
|
|
41548
41786
|
case 'bincolumn':
|
|
41549
41787
|
{
|
|
@@ -41556,9 +41794,11 @@ class selectCells extends jodit_core_plugin__WEBPACK_IMPORTED_MODULE_7__.Plugin
|
|
|
41556
41794
|
columnsSet.add(col);
|
|
41557
41795
|
}
|
|
41558
41796
|
});
|
|
41797
|
+
const next = this.__nearestCell(table, cell, columns, false);
|
|
41559
41798
|
columns.sort((a, b)=>b - a).forEach((col)=>{
|
|
41560
41799
|
this.__tableModule.removeColumn(table, col);
|
|
41561
41800
|
});
|
|
41801
|
+
next && this.j.s.setCursorIn(next);
|
|
41562
41802
|
}
|
|
41563
41803
|
break;
|
|
41564
41804
|
case 'addcolumnafter':
|
|
@@ -41570,10 +41810,36 @@ class selectCells extends jodit_core_plugin__WEBPACK_IMPORTED_MODULE_7__.Plugin
|
|
|
41570
41810
|
this.__tableModule.appendRow(table, cell.parentNode, command === 'addrowafter');
|
|
41571
41811
|
break;
|
|
41572
41812
|
}
|
|
41813
|
+
if (/^bin(row|column)$/.test(command) && !this.__tableModule.getColumnsCount(table)) {
|
|
41814
|
+
this.__removeTable(table);
|
|
41815
|
+
}
|
|
41573
41816
|
}
|
|
41574
41817
|
return false;
|
|
41575
41818
|
}
|
|
41576
41819
|
}
|
|
41820
|
+
/**
|
|
41821
|
+
* The cell that takes the caret when rows or columns are deleted: the next
|
|
41822
|
+
* one in the same column (or row) that is not deleted, else the previous one
|
|
41823
|
+
*/ __nearestCell(table, cell, deleted, isRow) {
|
|
41824
|
+
const box = this.__tableModule.formalMatrix(table);
|
|
41825
|
+
const [row, column] = this.__tableModule.formalCoordinate(table, cell);
|
|
41826
|
+
const start = isRow ? row : column;
|
|
41827
|
+
const count = isRow ? box.length : box[row].length;
|
|
41828
|
+
const find = (i)=>!deleted.includes(i) && (isRow ? box[i][column] : box[row][i]) || null;
|
|
41829
|
+
for(let i = start + 1; i < count; i += 1){
|
|
41830
|
+
const next = find(i);
|
|
41831
|
+
if (next) {
|
|
41832
|
+
return next;
|
|
41833
|
+
}
|
|
41834
|
+
}
|
|
41835
|
+
for(let i = start - 1; i >= 0; i -= 1){
|
|
41836
|
+
const prev = find(i);
|
|
41837
|
+
if (prev) {
|
|
41838
|
+
return prev;
|
|
41839
|
+
}
|
|
41840
|
+
}
|
|
41841
|
+
return null;
|
|
41842
|
+
}
|
|
41577
41843
|
/**
|
|
41578
41844
|
* Add some align after native command
|
|
41579
41845
|
*/ onAfterCommand(command) {
|
|
@@ -41581,6 +41847,14 @@ class selectCells extends jodit_core_plugin__WEBPACK_IMPORTED_MODULE_7__.Plugin
|
|
|
41581
41847
|
this.__tableModule.getAllSelectedCells().forEach((elm)=>(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_6__.alignElement)(command, elm));
|
|
41582
41848
|
}
|
|
41583
41849
|
}
|
|
41850
|
+
/**
|
|
41851
|
+
* Remove the table and put the caret where it stood: at the start of what
|
|
41852
|
+
* follows it, else at the end of what precedes it
|
|
41853
|
+
*/ __removeTable(table) {
|
|
41854
|
+
const parent = table.parentNode, next = jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.findNotEmptySibling(table, false), prev = jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.findNotEmptySibling(table, true);
|
|
41855
|
+
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.safeRemove(table);
|
|
41856
|
+
this.j.s.setCursorIn(next || prev || parent, Boolean(next));
|
|
41857
|
+
}
|
|
41584
41858
|
/** @override */ beforeDestruct(jodit) {
|
|
41585
41859
|
this.__onRemoveSelection();
|
|
41586
41860
|
jodit.e.off('.select-cells');
|
|
@@ -44159,7 +44433,7 @@ const WORK_KEYS = new Set([
|
|
|
44159
44433
|
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.append(next, first);
|
|
44160
44434
|
editor.s.setCursorBefore(first);
|
|
44161
44435
|
} else {
|
|
44162
|
-
if (key === jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.KEY_TAB) {
|
|
44436
|
+
if (key === jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.KEY_TAB && !jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isEmpty(next)) {
|
|
44163
44437
|
editor.s.select(next, true);
|
|
44164
44438
|
} else {
|
|
44165
44439
|
editor.s.setCursorIn(next, key === jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.KEY_RIGHT || key === jodit_core_constants__WEBPACK_IMPORTED_MODULE_0__.KEY_DOWN);
|
|
@@ -44227,6 +44501,36 @@ jodit_config__WEBPACK_IMPORTED_MODULE_5__.Config.prototype.table = {
|
|
|
44227
44501
|
useExtraClassesOptions: false
|
|
44228
44502
|
};
|
|
44229
44503
|
jodit_core_ui_icon__WEBPACK_IMPORTED_MODULE_4__.Icon.set('table', (_table_svg__WEBPACK_IMPORTED_MODULE_6___default()));
|
|
44504
|
+
/**
|
|
44505
|
+
* Elements in `dtd.blockLimits` that hold only rows, cells or list items, so
|
|
44506
|
+
* a table can't go directly inside them
|
|
44507
|
+
*/ const ROW_AND_ITEM_HOLDERS = new Set([
|
|
44508
|
+
'table',
|
|
44509
|
+
'thead',
|
|
44510
|
+
'tbody',
|
|
44511
|
+
'tfoot',
|
|
44512
|
+
'tr',
|
|
44513
|
+
'ul',
|
|
44514
|
+
'ol',
|
|
44515
|
+
'dl'
|
|
44516
|
+
]);
|
|
44517
|
+
/**
|
|
44518
|
+
* The nearest block around the cursor that can hold the new table: an element
|
|
44519
|
+
* in `dtd.blockLimits`, such as a table cell, a list item or a `<div>`. The
|
|
44520
|
+
* cursor's own block of the `enter` tag is a line, not a container, as in the
|
|
44521
|
+
* dtd plugin's `checkBlockNesting`
|
|
44522
|
+
*/ function findTableContainer(editor, current) {
|
|
44523
|
+
const line = jodit_core_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(current, jodit_core_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock, editor.editor);
|
|
44524
|
+
const container = jodit_core_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(current, (node)=>{
|
|
44525
|
+
if (!jodit_core_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isElement(node) || node === line && jodit_core_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(node, editor.o.enter)) {
|
|
44526
|
+
return false;
|
|
44527
|
+
}
|
|
44528
|
+
const tag = node.nodeName.toLowerCase();
|
|
44529
|
+
return Boolean(editor.o.dtd?.blockLimits[tag]) && !ROW_AND_ITEM_HOLDERS.has(tag);
|
|
44530
|
+
}, editor.editor);
|
|
44531
|
+
// With the cursor between two rows, `current` is the next row's text
|
|
44532
|
+
return container && jodit_core_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isOrContains(container, editor.s.range.startContainer) ? container : null;
|
|
44533
|
+
}
|
|
44230
44534
|
jodit_config__WEBPACK_IMPORTED_MODULE_5__.Config.prototype.controls.table = {
|
|
44231
44535
|
data: {
|
|
44232
44536
|
cols: 10,
|
|
@@ -44324,7 +44628,11 @@ jodit_config__WEBPACK_IMPORTED_MODULE_5__.Config.prototype.controls.table = {
|
|
|
44324
44628
|
editor.s.removeMarkers();
|
|
44325
44629
|
editor.editor.normalize();
|
|
44326
44630
|
editor.history.snapshot.restore(snapshot);
|
|
44327
|
-
const
|
|
44631
|
+
const current = editor.s.current();
|
|
44632
|
+
// The table goes into the cell, list item or box holding the
|
|
44633
|
+
// cursor, and only a block inside it is split
|
|
44634
|
+
const container = findTableContainer(editor, current);
|
|
44635
|
+
const block = container === current ? null : jodit_core_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.furthest(current, jodit_core_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isBlock, container ?? editor.editor);
|
|
44328
44636
|
if (block && jodit_core_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isEmpty(block)) {
|
|
44329
44637
|
jodit_core_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.replace(block, table, undefined, false, true);
|
|
44330
44638
|
} else {
|
|
@@ -44346,6 +44654,9 @@ jodit_config__WEBPACK_IMPORTED_MODULE_5__.Config.prototype.controls.table = {
|
|
|
44346
44654
|
jodit_core_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.after(block, table);
|
|
44347
44655
|
}
|
|
44348
44656
|
}
|
|
44657
|
+
} else if (container && !jodit_core_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.isEmpty(container) && !editor.o.table.splitBlockOnInsertTable) {
|
|
44658
|
+
// With no block to go after, the table goes after the text
|
|
44659
|
+
jodit_core_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.append(container, table);
|
|
44349
44660
|
} else {
|
|
44350
44661
|
editor.s.insertNode(table, false);
|
|
44351
44662
|
}
|
|
@@ -44607,32 +44918,14 @@ jodit_core_global__WEBPACK_IMPORTED_MODULE_5__.pluginSystem.add('toolbarNavigati
|
|
|
44607
44918
|
|
|
44608
44919
|
|
|
44609
44920
|
|
|
44610
|
-
// Media the popup inserts go in their wrapper (see `mediaWrappers`), aligned
|
|
44611
|
-
// with `mediaDefaultAlign`
|
|
44612
|
-
function prepareMedia(jodit, element) {
|
|
44613
|
-
const media = (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_0__.wrapMedia)(jodit, element);
|
|
44614
|
-
const { mediaDefaultAlign } = jodit.o;
|
|
44615
|
-
if (mediaDefaultAlign && mediaDefaultAlign !== 'normal') {
|
|
44616
|
-
(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_0__.hAlignElement)(media, mediaDefaultAlign, (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_0__.getAlignClasses)(jodit, media));
|
|
44617
|
-
}
|
|
44618
|
-
return media;
|
|
44619
|
-
}
|
|
44620
44921
|
function insertVideos(data) {
|
|
44621
44922
|
data.files?.forEach((file)=>{
|
|
44622
|
-
this.s.insertNode(prepareMedia(this, this.createInside.element('video', {
|
|
44923
|
+
this.s.insertNode((0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_0__.prepareMedia)(this, this.createInside.element('video', {
|
|
44623
44924
|
controls: '',
|
|
44624
44925
|
src: data.baseurl + file
|
|
44625
44926
|
})));
|
|
44626
44927
|
});
|
|
44627
44928
|
}
|
|
44628
|
-
// Embed code that is one element is prepared as media; other code goes in as
|
|
44629
|
-
// it is
|
|
44630
|
-
function prepareEmbedCode(jodit, code) {
|
|
44631
|
-
const box = jodit.createInside.div();
|
|
44632
|
-
box.innerHTML = code.trim();
|
|
44633
|
-
const element = box.firstElementChild;
|
|
44634
|
-
return element && box.childNodes.length === 1 ? prepareMedia(jodit, element) : code;
|
|
44635
|
-
}
|
|
44636
44929
|
jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.video = {
|
|
44637
44930
|
parseUrlToVideoEmbed: jodit_core_helpers__WEBPACK_IMPORTED_MODULE_0__.convertMediaUrlToVideoEmbed,
|
|
44638
44931
|
defaultWidth: 400,
|
|
@@ -44670,7 +44963,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.video = {
|
|
|
44670
44963
|
])
|
|
44671
44964
|
]), tabs = [], insertCode = (code)=>{
|
|
44672
44965
|
jodit.s.restore();
|
|
44673
|
-
jodit.s.insertHTML(prepareEmbedCode(jodit, code));
|
|
44966
|
+
jodit.s.insertHTML((0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_0__.prepareEmbedCode)(jodit, code));
|
|
44674
44967
|
close();
|
|
44675
44968
|
};
|
|
44676
44969
|
jodit.s.save();
|
|
@@ -44703,7 +44996,11 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.video = {
|
|
|
44703
44996
|
formCode.onSubmit((data)=>{
|
|
44704
44997
|
insertCode(data.code);
|
|
44705
44998
|
});
|
|
44706
|
-
|
|
44999
|
+
const box = (0,jodit_modules_widget__WEBPACK_IMPORTED_MODULE_5__.TabsWidget)(jodit, tabs);
|
|
45000
|
+
// Its tabs are sized to their labels, as the file selector's are, since
|
|
45001
|
+
// "Upload" doesn't fit a third of the popup
|
|
45002
|
+
box.classList.add('jodit-file-selector');
|
|
45003
|
+
return box;
|
|
44707
45004
|
},
|
|
44708
45005
|
tags: [
|
|
44709
45006
|
'iframe'
|