jodit 4.17.5 → 4.18.0
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 +20 -0
- package/es2015/jodit.css +87 -3
- package/es2015/jodit.fat.min.css +1 -1
- package/es2015/jodit.fat.min.js +9 -9
- package/es2015/jodit.js +873 -163
- package/es2015/jodit.min.css +1 -1
- package/es2015/jodit.min.js +16 -16
- 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.css +1 -1
- package/es2018/jodit.fat.min.js +9 -9
- package/es2018/jodit.min.css +1 -1
- 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 +87 -3
- package/es2021/jodit.fat.min.css +1 -1
- package/es2021/jodit.fat.min.js +16 -16
- package/es2021/jodit.js +851 -163
- package/es2021/jodit.min.css +1 -1
- 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 +87 -3
- package/es2021.en/jodit.fat.min.css +1 -1
- package/es2021.en/jodit.fat.min.js +15 -15
- package/es2021.en/jodit.js +851 -163
- package/es2021.en/jodit.min.css +1 -1
- package/es2021.en/jodit.min.js +15 -15
- 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 +92 -6
- package/es5/jodit.fat.min.css +1 -1
- package/es5/jodit.fat.min.js +2 -2
- package/es5/jodit.js +1141 -223
- package/es5/jodit.min.css +3 -3
- 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 +65 -2
- package/esm/config.js +29 -2
- package/esm/core/constants.js +1 -1
- package/esm/core/helpers/utils/align.d.ts +11 -5
- package/esm/core/helpers/utils/align.js +28 -8
- package/esm/core/helpers/utils/index.d.ts +1 -0
- package/esm/core/helpers/utils/index.js +1 -0
- package/esm/core/helpers/utils/media-wrapper.d.ts +29 -0
- package/esm/core/helpers/utils/media-wrapper.js +63 -0
- package/esm/core/selection/selection.js +34 -8
- package/esm/modules/history/history.js +20 -12
- package/esm/modules/toolbar/button/button.d.ts +18 -0
- package/esm/modules/toolbar/button/button.js +75 -5
- package/esm/plugins/font/config.d.ts +12 -0
- package/esm/plugins/font/config.js +25 -10
- package/esm/plugins/font/font-picker.d.ts +51 -0
- package/esm/plugins/font/font-picker.js +238 -0
- package/esm/plugins/font/font.js +12 -0
- package/esm/plugins/font/google-fonts.d.ts +65 -0
- package/esm/plugins/font/google-fonts.js +143 -0
- package/esm/plugins/image-properties/readers/index.js +2 -1
- package/esm/plugins/image-properties/writers/index.js +2 -2
- package/esm/plugins/inline-popup/config/items/img.js +10 -8
- package/esm/plugins/inline-popup/inline-popup.js +13 -6
- package/esm/plugins/line-height/line-height.js +1 -1
- package/esm/plugins/media/config.d.ts +26 -1
- package/esm/plugins/media/config.js +1 -3
- package/esm/plugins/media/media.js +12 -4
- package/esm/plugins/placeholder/placeholder.js +1 -1
- package/esm/plugins/source/editor/engines/ace.d.ts +2 -0
- package/esm/plugins/source/editor/engines/ace.js +35 -3
- package/esm/plugins/video/config.js +24 -4
- package/esm/types/toolbar.d.ts +2 -0
- package/esm/types/types.d.ts +13 -1
- package/package.json +1 -1
- package/types/config.d.ts +65 -2
- package/types/core/helpers/utils/align.d.ts +11 -5
- package/types/core/helpers/utils/index.d.ts +1 -0
- package/types/core/helpers/utils/media-wrapper.d.ts +29 -0
- package/types/modules/toolbar/button/button.d.ts +18 -0
- package/types/plugins/font/config.d.ts +12 -0
- package/types/plugins/font/font-picker.d.ts +51 -0
- package/types/plugins/font/google-fonts.d.ts +65 -0
- package/types/plugins/media/config.d.ts +26 -1
- package/types/plugins/source/editor/engines/ace.d.ts +2 -0
- package/types/types/toolbar.d.ts +2 -0
- package/types/types/types.d.ts +13 -1
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.
|
|
4
|
+
* Version: v4.18.0
|
|
5
5
|
* Url: https://xdsoft.net/jodit/
|
|
6
6
|
* License(s): MIT
|
|
7
7
|
*/
|
|
@@ -735,18 +735,43 @@ let ConfigPrototype = {};
|
|
|
735
735
|
/**
|
|
736
736
|
* Class names to align images with, instead of an inline `float` or
|
|
737
737
|
* `margin`. Aligning an image removes every class listed here and adds the
|
|
738
|
-
* chosen alignment's, which can be several separated by spaces.
|
|
738
|
+
* chosen alignment's, which can be several separated by spaces. An
|
|
739
|
+
* alignment can also list several such sets, to recognise each of them;
|
|
740
|
+
* aligning writes the first. `alignClasses.img` takes its place when set.
|
|
739
741
|
*
|
|
740
742
|
* ```javascript
|
|
741
743
|
* Jodit.make('#editor', {
|
|
742
744
|
* imageAlignClasses: {
|
|
743
745
|
* left: 'align-left',
|
|
744
746
|
* right: 'align-right',
|
|
745
|
-
* center: 'align-center'
|
|
747
|
+
* center: ['align-center', 'centered']
|
|
746
748
|
* }
|
|
747
749
|
* });
|
|
748
750
|
* ```
|
|
749
751
|
*/ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "imageAlignClasses", null);
|
|
752
|
+
/**
|
|
753
|
+
* Class names to align elements with, by tag name, as `imageAlignClasses`
|
|
754
|
+
* does for images: `img`, and `video`, `audio` and `iframe` in the media
|
|
755
|
+
* popup. A media wrapper (see `mediaWrappers`), and Jodit's own `jodit` and
|
|
756
|
+
* `jodit-media` wrappers, are aligned with the classes for the media in
|
|
757
|
+
* them.
|
|
758
|
+
*
|
|
759
|
+
* ```javascript
|
|
760
|
+
* const media = {
|
|
761
|
+
* left: 'media-left',
|
|
762
|
+
* right: 'media-right',
|
|
763
|
+
* center: 'media-center'
|
|
764
|
+
* };
|
|
765
|
+
*
|
|
766
|
+
* Jodit.make('#editor', {
|
|
767
|
+
* alignClasses: { video: media, iframe: media }
|
|
768
|
+
* });
|
|
769
|
+
* ```
|
|
770
|
+
*/ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "alignClasses", {});
|
|
771
|
+
/**
|
|
772
|
+
* Alignment given to the media the video popup inserts. `'normal'` leaves
|
|
773
|
+
* them unaligned
|
|
774
|
+
*/ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "mediaDefaultAlign", 'normal');
|
|
750
775
|
/**
|
|
751
776
|
* Do not display these buttons that are on the list
|
|
752
777
|
*
|
|
@@ -1799,7 +1824,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1799
1824
|
* ```
|
|
1800
1825
|
* @packageDocumentation
|
|
1801
1826
|
* @module constants
|
|
1802
|
-
*/ const APP_VERSION = "4.
|
|
1827
|
+
*/ const APP_VERSION = "4.18.0";
|
|
1803
1828
|
// prettier-ignore
|
|
1804
1829
|
const ES = "es2021";
|
|
1805
1830
|
const IS_ES_MODERN = true;
|
|
@@ -7576,12 +7601,15 @@ function trimChars(value, chars) {
|
|
|
7576
7601
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
7577
7602
|
/* harmony export */ alignElement: function() { return /* binding */ alignElement; },
|
|
7578
7603
|
/* harmony export */ clearAlign: function() { return /* binding */ clearAlign; },
|
|
7604
|
+
/* harmony export */ getAlignClasses: function() { return /* binding */ getAlignClasses; },
|
|
7579
7605
|
/* harmony export */ getHAlign: function() { return /* binding */ getHAlign; },
|
|
7580
7606
|
/* harmony export */ hAlignElement: function() { return /* binding */ hAlignElement; }
|
|
7581
7607
|
/* harmony export */ });
|
|
7582
7608
|
/* harmony import */ var jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(27795);
|
|
7583
|
-
/* harmony import */ var
|
|
7584
|
-
/* harmony import */ var
|
|
7609
|
+
/* harmony import */ var jodit_core_helpers_checker_is_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17312);
|
|
7610
|
+
/* harmony import */ var jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7909);
|
|
7611
|
+
/* harmony import */ var jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(80991);
|
|
7612
|
+
/* harmony import */ var jodit_core_helpers_utils_media_wrapper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(83314);
|
|
7585
7613
|
/*!
|
|
7586
7614
|
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
7587
7615
|
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
@@ -7591,31 +7619,51 @@ function trimChars(value, chars) {
|
|
|
7591
7619
|
*/
|
|
7592
7620
|
|
|
7593
7621
|
|
|
7594
|
-
|
|
7622
|
+
|
|
7623
|
+
|
|
7624
|
+
// The sets of class names an alignment lists, the first being the one to write
|
|
7625
|
+
const classSets = (value)=>((0,jodit_core_helpers_checker_is_array__WEBPACK_IMPORTED_MODULE_1__.isArray)(value) ? value : [
|
|
7626
|
+
value ?? ''
|
|
7627
|
+
]).map((set)=>set.split(/\s+/).filter(Boolean)).filter((set)=>set.length);
|
|
7628
|
+
/**
|
|
7629
|
+
* The class names to align `elm` with: `alignClasses` for its tag, or for the
|
|
7630
|
+
* media in it when it wraps media (a `mediaWrappers` wrapper, `jodit` or
|
|
7631
|
+
* `jodit-media`), falling back to `imageAlignClasses` for an image
|
|
7632
|
+
*/ function getAlignClasses(jodit, elm) {
|
|
7633
|
+
if (!elm) {
|
|
7634
|
+
return null;
|
|
7635
|
+
}
|
|
7636
|
+
const media = jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(elm, new Set([
|
|
7637
|
+
'jodit',
|
|
7638
|
+
'jodit-media'
|
|
7639
|
+
])) ? elm.firstElementChild : (0,jodit_core_helpers_utils_media_wrapper__WEBPACK_IMPORTED_MODULE_4__.getWrappedMedia)(jodit, elm);
|
|
7640
|
+
const tag = (media ?? elm).nodeName.toLowerCase();
|
|
7641
|
+
return jodit.o.alignClasses?.[tag] ?? (tag === 'img' ? jodit.o.imageAlignClasses : null);
|
|
7642
|
+
}
|
|
7595
7643
|
/**
|
|
7596
|
-
* Align image, with `classes` (see `
|
|
7597
|
-
*
|
|
7644
|
+
* Align image, with `classes` (see `alignClasses`) instead of inline styles
|
|
7645
|
+
* when they are given
|
|
7598
7646
|
*/ function hAlignElement(image, align, classes) {
|
|
7599
7647
|
if (classes) {
|
|
7600
7648
|
hAlignElement(image, 'normal');
|
|
7601
|
-
Object.values(classes).forEach((value)=>image.classList.remove(...
|
|
7602
|
-
image.classList.add(...
|
|
7649
|
+
Object.values(classes).forEach((value)=>classSets(value).forEach((set)=>image.classList.remove(...set)));
|
|
7650
|
+
image.classList.add(...classSets(classes[align || 'normal'])[0] ?? []);
|
|
7603
7651
|
[
|
|
7604
7652
|
'class',
|
|
7605
7653
|
'style'
|
|
7606
7654
|
].forEach((name)=>{
|
|
7607
|
-
if (!(0,
|
|
7608
|
-
(0,
|
|
7655
|
+
if (!(0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_2__.attr)(image, name)?.trim()) {
|
|
7656
|
+
(0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_2__.attr)(image, name, null);
|
|
7609
7657
|
}
|
|
7610
7658
|
});
|
|
7611
7659
|
return;
|
|
7612
7660
|
}
|
|
7613
7661
|
if (align && align !== 'normal') {
|
|
7614
7662
|
if (align !== 'center') {
|
|
7615
|
-
(0,
|
|
7616
|
-
(0,
|
|
7663
|
+
(0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_3__.css)(image, 'float', align);
|
|
7664
|
+
(0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_3__.clearCenterAlign)(image);
|
|
7617
7665
|
} else {
|
|
7618
|
-
(0,
|
|
7666
|
+
(0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_3__.css)(image, {
|
|
7619
7667
|
float: '',
|
|
7620
7668
|
display: 'block',
|
|
7621
7669
|
marginLeft: 'auto',
|
|
@@ -7623,13 +7671,13 @@ const classNames = (value)=>(value ?? '').split(/\s+/).filter(Boolean);
|
|
|
7623
7671
|
});
|
|
7624
7672
|
}
|
|
7625
7673
|
} else {
|
|
7626
|
-
if ((0,
|
|
7674
|
+
if ((0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_3__.css)(image, 'float') && [
|
|
7627
7675
|
'right',
|
|
7628
7676
|
'left'
|
|
7629
|
-
].indexOf((0,
|
|
7630
|
-
(0,
|
|
7677
|
+
].indexOf((0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_3__.css)(image, 'float').toString().toLowerCase()) !== -1) {
|
|
7678
|
+
(0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_3__.css)(image, 'float', '');
|
|
7631
7679
|
}
|
|
7632
|
-
;(0,
|
|
7680
|
+
;(0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_3__.clearCenterAlign)(image);
|
|
7633
7681
|
}
|
|
7634
7682
|
}
|
|
7635
7683
|
/**
|
|
@@ -7642,17 +7690,16 @@ const classNames = (value)=>(value ?? '').split(/\s+/).filter(Boolean);
|
|
|
7642
7690
|
'center',
|
|
7643
7691
|
'normal'
|
|
7644
7692
|
]){
|
|
7645
|
-
|
|
7646
|
-
if (names.length && names.every((name)=>elm.classList.contains(name))) {
|
|
7693
|
+
if (classSets(classes[align]).some((set)=>set.every((name)=>elm.classList.contains(name)))) {
|
|
7647
7694
|
return align;
|
|
7648
7695
|
}
|
|
7649
7696
|
}
|
|
7650
7697
|
}
|
|
7651
|
-
const float = (0,
|
|
7698
|
+
const float = (0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_3__.cssInline)(elm, 'float').toLowerCase();
|
|
7652
7699
|
if (float === 'left' || float === 'right') {
|
|
7653
7700
|
return float;
|
|
7654
7701
|
}
|
|
7655
|
-
if ((0,
|
|
7702
|
+
if ((0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_3__.css)(elm, 'display') === 'block' && (0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_3__.cssInline)(elm, 'margin-left') === 'auto' && (0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_3__.cssInline)(elm, 'margin-right') === 'auto') {
|
|
7656
7703
|
return 'center';
|
|
7657
7704
|
}
|
|
7658
7705
|
return 'normal';
|
|
@@ -7662,10 +7709,10 @@ const classNames = (value)=>(value ?? '').split(/\s+/).filter(Boolean);
|
|
|
7662
7709
|
*/ function clearAlign(node) {
|
|
7663
7710
|
jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.each(node, (elm)=>{
|
|
7664
7711
|
if (jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isHTMLElement(elm)) {
|
|
7665
|
-
if ((0,
|
|
7666
|
-
(0,
|
|
7667
|
-
if (!((0,
|
|
7668
|
-
(0,
|
|
7712
|
+
if ((0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_3__.cssInline)(elm, 'textAlign')) {
|
|
7713
|
+
(0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_3__.css)(elm, 'textAlign', '');
|
|
7714
|
+
if (!((0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_2__.attr)(elm, 'style') || '').trim().length) {
|
|
7715
|
+
(0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_2__.attr)(elm, 'style', null);
|
|
7669
7716
|
}
|
|
7670
7717
|
}
|
|
7671
7718
|
}
|
|
@@ -7696,7 +7743,7 @@ function alignElement(command, box) {
|
|
|
7696
7743
|
clearAlign(box);
|
|
7697
7744
|
const align = ALIGN_BY_COMMAND.get(command.toLowerCase());
|
|
7698
7745
|
if (align) {
|
|
7699
|
-
(0,
|
|
7746
|
+
(0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_3__.css)(box, 'textAlign', align);
|
|
7700
7747
|
}
|
|
7701
7748
|
}
|
|
7702
7749
|
}
|
|
@@ -8781,13 +8828,13 @@ const getClassName = (obj)=>{
|
|
|
8781
8828
|
"use strict";
|
|
8782
8829
|
__webpack_require__.r(__webpack_exports__);
|
|
8783
8830
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
8784
|
-
/* harmony export */ $$: function() { return /* reexport safe */
|
|
8831
|
+
/* harmony export */ $$: function() { return /* reexport safe */ _selector__WEBPACK_IMPORTED_MODULE_25__.$$; },
|
|
8785
8832
|
/* harmony export */ ConfigDeepFlatten: function() { return /* reexport safe */ _config_proto__WEBPACK_IMPORTED_MODULE_7__.ConfigDeepFlatten; },
|
|
8786
8833
|
/* harmony export */ ConfigFlatten: function() { return /* reexport safe */ _config_proto__WEBPACK_IMPORTED_MODULE_7__.ConfigFlatten; },
|
|
8787
8834
|
/* harmony export */ ConfigMerge: function() { return /* reexport safe */ _config_proto__WEBPACK_IMPORTED_MODULE_7__.ConfigMerge; },
|
|
8788
8835
|
/* harmony export */ ConfigProto: function() { return /* reexport safe */ _config_proto__WEBPACK_IMPORTED_MODULE_7__.ConfigProto; },
|
|
8789
8836
|
/* harmony export */ ConnectionError: function() { return /* reexport safe */ _error__WEBPACK_IMPORTED_MODULE_13__.ConnectionError; },
|
|
8790
|
-
/* harmony export */ LimitedStack: function() { return /* reexport safe */
|
|
8837
|
+
/* harmony export */ LimitedStack: function() { return /* reexport safe */ _stack__WEBPACK_IMPORTED_MODULE_27__.LimitedStack; },
|
|
8791
8838
|
/* harmony export */ OptionsError: function() { return /* reexport safe */ _error__WEBPACK_IMPORTED_MODULE_13__.OptionsError; },
|
|
8792
8839
|
/* harmony export */ UNSAFE_PROTO_KEYS: function() { return /* reexport safe */ _is_unsafe_proto_key__WEBPACK_IMPORTED_MODULE_18__.UNSAFE_PROTO_KEYS; },
|
|
8793
8840
|
/* harmony export */ abort: function() { return /* reexport safe */ _error__WEBPACK_IMPORTED_MODULE_13__.abort; },
|
|
@@ -8799,58 +8846,63 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
8799
8846
|
/* harmony export */ attrRaw: function() { return /* reexport safe */ _attr__WEBPACK_IMPORTED_MODULE_3__.attrRaw; },
|
|
8800
8847
|
/* harmony export */ browser: function() { return /* reexport safe */ _browser__WEBPACK_IMPORTED_MODULE_4__.browser; },
|
|
8801
8848
|
/* harmony export */ buildQuery: function() { return /* reexport safe */ _build_query__WEBPACK_IMPORTED_MODULE_5__.buildQuery; },
|
|
8802
|
-
/* harmony export */ call: function() { return /* reexport safe */
|
|
8803
|
-
/* harmony export */ callPromise: function() { return /* reexport safe */
|
|
8804
|
-
/* harmony export */ callThis: function() { return /* reexport safe */
|
|
8849
|
+
/* harmony export */ call: function() { return /* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_28__.call; },
|
|
8850
|
+
/* harmony export */ callPromise: function() { return /* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_28__.callPromise; },
|
|
8851
|
+
/* harmony export */ callThis: function() { return /* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_28__.callThis; },
|
|
8805
8852
|
/* harmony export */ clearAlign: function() { return /* reexport safe */ _align__WEBPACK_IMPORTED_MODULE_0__.clearAlign; },
|
|
8806
8853
|
/* harmony export */ clearCenterAlign: function() { return /* reexport safe */ _css__WEBPACK_IMPORTED_MODULE_9__.clearCenterAlign; },
|
|
8807
8854
|
/* harmony export */ cns: function() { return /* reexport safe */ _mark_deprecated__WEBPACK_IMPORTED_MODULE_19__.cns; },
|
|
8808
8855
|
/* harmony export */ completeUrl: function() { return /* reexport safe */ _complete_url__WEBPACK_IMPORTED_MODULE_6__.completeUrl; },
|
|
8809
8856
|
/* harmony export */ connection: function() { return /* reexport safe */ _error__WEBPACK_IMPORTED_MODULE_13__.connection; },
|
|
8810
8857
|
/* harmony export */ convertMediaUrlToVideoEmbed: function() { return /* reexport safe */ _convert_media_url_to_video_embed__WEBPACK_IMPORTED_MODULE_8__.convertMediaUrlToVideoEmbed; },
|
|
8858
|
+
/* harmony export */ createMediaWrapper: function() { return /* reexport safe */ _media_wrapper__WEBPACK_IMPORTED_MODULE_20__.createMediaWrapper; },
|
|
8811
8859
|
/* harmony export */ css: function() { return /* reexport safe */ _css__WEBPACK_IMPORTED_MODULE_9__.css; },
|
|
8812
8860
|
/* harmony export */ cssInline: function() { return /* reexport safe */ _css__WEBPACK_IMPORTED_MODULE_9__.cssInline; },
|
|
8813
|
-
/* harmony export */ cssPath: function() { return /* reexport safe */
|
|
8861
|
+
/* harmony export */ cssPath: function() { return /* reexport safe */ _selector__WEBPACK_IMPORTED_MODULE_25__.cssPath; },
|
|
8814
8862
|
/* harmony export */ ctrlKey: function() { return /* reexport safe */ _ctrl_key__WEBPACK_IMPORTED_MODULE_10__.ctrlKey; },
|
|
8815
8863
|
/* harmony export */ dataBind: function() { return /* reexport safe */ _data_bind__WEBPACK_IMPORTED_MODULE_11__.dataBind; },
|
|
8816
8864
|
/* harmony export */ defaultLanguage: function() { return /* reexport safe */ _default_language__WEBPACK_IMPORTED_MODULE_12__.defaultLanguage; },
|
|
8817
8865
|
/* harmony export */ error: function() { return /* reexport safe */ _error__WEBPACK_IMPORTED_MODULE_13__.error; },
|
|
8818
8866
|
/* harmony export */ fastClone: function() { return /* reexport safe */ _extend__WEBPACK_IMPORTED_MODULE_14__.fastClone; },
|
|
8819
8867
|
/* harmony export */ get: function() { return /* reexport safe */ _get__WEBPACK_IMPORTED_MODULE_15__.get; },
|
|
8868
|
+
/* harmony export */ getAlignClasses: function() { return /* reexport safe */ _align__WEBPACK_IMPORTED_MODULE_0__.getAlignClasses; },
|
|
8820
8869
|
/* harmony export */ getClassName: function() { return /* reexport safe */ _get_class_name__WEBPACK_IMPORTED_MODULE_16__.getClassName; },
|
|
8821
|
-
/* harmony export */ getDataTransfer: function() { return /* reexport safe */
|
|
8870
|
+
/* harmony export */ getDataTransfer: function() { return /* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_28__.getDataTransfer; },
|
|
8822
8871
|
/* harmony export */ getHAlign: function() { return /* reexport safe */ _align__WEBPACK_IMPORTED_MODULE_0__.getHAlign; },
|
|
8823
|
-
/* harmony export */
|
|
8824
|
-
/* harmony export */
|
|
8872
|
+
/* harmony export */ getMediaWrapper: function() { return /* reexport safe */ _media_wrapper__WEBPACK_IMPORTED_MODULE_20__.getMediaWrapper; },
|
|
8873
|
+
/* harmony export */ getPropertyDescriptor: function() { return /* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_28__.getPropertyDescriptor; },
|
|
8874
|
+
/* harmony export */ getWrappedMedia: function() { return /* reexport safe */ _media_wrapper__WEBPACK_IMPORTED_MODULE_20__.getWrappedMedia; },
|
|
8875
|
+
/* harmony export */ getXPathByElement: function() { return /* reexport safe */ _selector__WEBPACK_IMPORTED_MODULE_25__.getXPathByElement; },
|
|
8825
8876
|
/* harmony export */ hAlignElement: function() { return /* reexport safe */ _align__WEBPACK_IMPORTED_MODULE_0__.hAlignElement; },
|
|
8826
8877
|
/* harmony export */ humanSizeToBytes: function() { return /* reexport safe */ _human_size_to_bytes__WEBPACK_IMPORTED_MODULE_17__.humanSizeToBytes; },
|
|
8827
|
-
/* harmony export */ inView: function() { return /* reexport safe */
|
|
8878
|
+
/* harmony export */ inView: function() { return /* reexport safe */ _scroll_into_view__WEBPACK_IMPORTED_MODULE_24__.inView; },
|
|
8828
8879
|
/* harmony export */ isAtom: function() { return /* reexport safe */ _extend__WEBPACK_IMPORTED_MODULE_14__.isAtom; },
|
|
8829
8880
|
/* harmony export */ isUnsafeProtoKey: function() { return /* reexport safe */ _is_unsafe_proto_key__WEBPACK_IMPORTED_MODULE_18__.isUnsafeProtoKey; },
|
|
8830
8881
|
/* harmony export */ keepNames: function() { return /* reexport safe */ _get_class_name__WEBPACK_IMPORTED_MODULE_16__.keepNames; },
|
|
8831
|
-
/* harmony export */ keys: function() { return /* reexport safe */
|
|
8832
|
-
/* harmony export */ loadImage: function() { return /* reexport safe */
|
|
8882
|
+
/* harmony export */ keys: function() { return /* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_28__.keys; },
|
|
8883
|
+
/* harmony export */ loadImage: function() { return /* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_28__.loadImage; },
|
|
8833
8884
|
/* harmony export */ loadNext: function() { return /* reexport safe */ _append_script__WEBPACK_IMPORTED_MODULE_1__.loadNext; },
|
|
8834
8885
|
/* harmony export */ loadNextStyle: function() { return /* reexport safe */ _append_script__WEBPACK_IMPORTED_MODULE_1__.loadNextStyle; },
|
|
8835
8886
|
/* harmony export */ markAsAtomic: function() { return /* reexport safe */ _extend__WEBPACK_IMPORTED_MODULE_14__.markAsAtomic; },
|
|
8836
8887
|
/* harmony export */ markDeprecated: function() { return /* reexport safe */ _mark_deprecated__WEBPACK_IMPORTED_MODULE_19__.markDeprecated; },
|
|
8837
|
-
/* harmony export */ markOwner: function() { return /* reexport safe */
|
|
8838
|
-
/* harmony export */ memorizeExec: function() { return /* reexport safe */
|
|
8888
|
+
/* harmony export */ markOwner: function() { return /* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_28__.markOwner; },
|
|
8889
|
+
/* harmony export */ memorizeExec: function() { return /* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_28__.memorizeExec; },
|
|
8839
8890
|
/* harmony export */ options: function() { return /* reexport safe */ _error__WEBPACK_IMPORTED_MODULE_13__.options; },
|
|
8840
|
-
/* harmony export */ parseQuery: function() { return /* reexport safe */
|
|
8841
|
-
/* harmony export */ previewBox: function() { return /* reexport safe */
|
|
8842
|
-
/* harmony export */ refs: function() { return /* reexport safe */
|
|
8843
|
-
/* harmony export */ reset: function() { return /* reexport safe */
|
|
8844
|
-
/* harmony export */ resolveElement: function() { return /* reexport safe */
|
|
8845
|
-
/* harmony export */ scrollIntoViewIfNeeded: function() { return /* reexport safe */
|
|
8846
|
-
/* harmony export */ set: function() { return /* reexport safe */
|
|
8891
|
+
/* harmony export */ parseQuery: function() { return /* reexport safe */ _parse_query__WEBPACK_IMPORTED_MODULE_21__.parseQuery; },
|
|
8892
|
+
/* harmony export */ previewBox: function() { return /* reexport safe */ _print__WEBPACK_IMPORTED_MODULE_22__.previewBox; },
|
|
8893
|
+
/* harmony export */ refs: function() { return /* reexport safe */ _selector__WEBPACK_IMPORTED_MODULE_25__.refs; },
|
|
8894
|
+
/* harmony export */ reset: function() { return /* reexport safe */ _reset__WEBPACK_IMPORTED_MODULE_23__.reset; },
|
|
8895
|
+
/* harmony export */ resolveElement: function() { return /* reexport safe */ _selector__WEBPACK_IMPORTED_MODULE_25__.resolveElement; },
|
|
8896
|
+
/* harmony export */ scrollIntoViewIfNeeded: function() { return /* reexport safe */ _scroll_into_view__WEBPACK_IMPORTED_MODULE_24__.scrollIntoViewIfNeeded; },
|
|
8897
|
+
/* harmony export */ set: function() { return /* reexport safe */ _set__WEBPACK_IMPORTED_MODULE_26__.set; },
|
|
8898
|
+
/* harmony export */ wrapMedia: function() { return /* reexport safe */ _media_wrapper__WEBPACK_IMPORTED_MODULE_20__.wrapMedia; }
|
|
8847
8899
|
/* harmony export */ });
|
|
8848
8900
|
/* harmony import */ var _align__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16849);
|
|
8849
8901
|
/* harmony import */ var _append_script__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(47760);
|
|
8850
8902
|
/* harmony import */ var _assert__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(28712);
|
|
8851
8903
|
/* harmony import */ var _assert__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_assert__WEBPACK_IMPORTED_MODULE_2__);
|
|
8852
8904
|
/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};
|
|
8853
|
-
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _assert__WEBPACK_IMPORTED_MODULE_2__) if(["default","alignElement","clearAlign","getHAlign","hAlignElement","alreadyLoadedList","appendScriptAsync","appendStyleAsync","loadNext","loadNextStyle"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _assert__WEBPACK_IMPORTED_MODULE_2__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)
|
|
8905
|
+
/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _assert__WEBPACK_IMPORTED_MODULE_2__) if(["default","alignElement","clearAlign","getAlignClasses","getHAlign","hAlignElement","alreadyLoadedList","appendScriptAsync","appendStyleAsync","loadNext","loadNextStyle"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = function(key) { return _assert__WEBPACK_IMPORTED_MODULE_2__[key]; }.bind(0, __WEBPACK_IMPORT_KEY__)
|
|
8854
8906
|
/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);
|
|
8855
8907
|
/* harmony import */ var _attr__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7909);
|
|
8856
8908
|
/* harmony import */ var _browser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(26136);
|
|
@@ -8869,14 +8921,15 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
8869
8921
|
/* harmony import */ var _human_size_to_bytes__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(37427);
|
|
8870
8922
|
/* harmony import */ var _is_unsafe_proto_key__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(78048);
|
|
8871
8923
|
/* harmony import */ var _mark_deprecated__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(49385);
|
|
8872
|
-
/* harmony import */ var
|
|
8873
|
-
/* harmony import */ var
|
|
8874
|
-
/* harmony import */ var
|
|
8875
|
-
/* harmony import */ var
|
|
8876
|
-
/* harmony import */ var
|
|
8877
|
-
/* harmony import */ var
|
|
8878
|
-
/* harmony import */ var
|
|
8879
|
-
/* harmony import */ var
|
|
8924
|
+
/* harmony import */ var _media_wrapper__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(83314);
|
|
8925
|
+
/* harmony import */ var _parse_query__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(36310);
|
|
8926
|
+
/* harmony import */ var _print__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(57075);
|
|
8927
|
+
/* harmony import */ var _reset__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(43379);
|
|
8928
|
+
/* harmony import */ var _scroll_into_view__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(60898);
|
|
8929
|
+
/* harmony import */ var _selector__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(28723);
|
|
8930
|
+
/* harmony import */ var _set__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(52144);
|
|
8931
|
+
/* harmony import */ var _stack__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(42820);
|
|
8932
|
+
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(71125);
|
|
8880
8933
|
/*!
|
|
8881
8934
|
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
8882
8935
|
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
@@ -8911,6 +8964,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
8911
8964
|
|
|
8912
8965
|
|
|
8913
8966
|
|
|
8967
|
+
|
|
8914
8968
|
|
|
8915
8969
|
|
|
8916
8970
|
/***/ }),
|
|
@@ -8983,6 +9037,77 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
8983
9037
|
/* harmony export */ ]);
|
|
8984
9038
|
|
|
8985
9039
|
|
|
9040
|
+
/***/ }),
|
|
9041
|
+
|
|
9042
|
+
/***/ 83314:
|
|
9043
|
+
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
9044
|
+
|
|
9045
|
+
"use strict";
|
|
9046
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
9047
|
+
/* harmony export */ createMediaWrapper: function() { return /* binding */ createMediaWrapper; },
|
|
9048
|
+
/* harmony export */ getMediaWrapper: function() { return /* binding */ getMediaWrapper; },
|
|
9049
|
+
/* harmony export */ getWrappedMedia: function() { return /* binding */ getWrappedMedia; },
|
|
9050
|
+
/* harmony export */ wrapMedia: function() { return /* binding */ wrapMedia; }
|
|
9051
|
+
/* harmony export */ });
|
|
9052
|
+
/* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23211);
|
|
9053
|
+
/*!
|
|
9054
|
+
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
9055
|
+
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
9056
|
+
* Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
|
|
9057
|
+
*/ /**
|
|
9058
|
+
* @module helpers/utils
|
|
9059
|
+
*/
|
|
9060
|
+
const isWrapper = (node, wrapper)=>jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isHTMLElement(node) && node.nodeName.toLowerCase() === wrapper.tag.toLowerCase() && node.classList.contains(wrapper.className);
|
|
9061
|
+
/**
|
|
9062
|
+
* The media in `elm` when `elm` is a wrapper media keep in the content (see
|
|
9063
|
+
* `mediaWrappers`): an element of a type `elm` is the wrapper for
|
|
9064
|
+
*/ function getWrappedMedia(jodit, elm) {
|
|
9065
|
+
for (const [tag, wrapper] of Object.entries(jodit.o.mediaWrappers ?? {})){
|
|
9066
|
+
if (isWrapper(elm, wrapper)) {
|
|
9067
|
+
const media = elm.querySelector(tag);
|
|
9068
|
+
if (media) {
|
|
9069
|
+
return media;
|
|
9070
|
+
}
|
|
9071
|
+
}
|
|
9072
|
+
}
|
|
9073
|
+
return null;
|
|
9074
|
+
}
|
|
9075
|
+
/**
|
|
9076
|
+
* The wrapper media keep in the content (see `mediaWrappers`) that is or
|
|
9077
|
+
* holds `node`
|
|
9078
|
+
*/ function getMediaWrapper(jodit, node) {
|
|
9079
|
+
return jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(node, (elm)=>Boolean(getWrappedMedia(jodit, elm)), jodit.editor);
|
|
9080
|
+
}
|
|
9081
|
+
/**
|
|
9082
|
+
* An empty wrapper for media of type `tag` to keep in the content (see
|
|
9083
|
+
* `mediaWrappers`), or null when there is none for it
|
|
9084
|
+
*/ function createMediaWrapper(jodit, tag) {
|
|
9085
|
+
const wrapper = jodit.o.mediaWrappers?.[tag.toLowerCase()];
|
|
9086
|
+
if (!wrapper) {
|
|
9087
|
+
return null;
|
|
9088
|
+
}
|
|
9089
|
+
return jodit.createInside.element(wrapper.tag, {
|
|
9090
|
+
class: wrapper.className,
|
|
9091
|
+
contenteditable: false,
|
|
9092
|
+
draggable: true
|
|
9093
|
+
});
|
|
9094
|
+
}
|
|
9095
|
+
/**
|
|
9096
|
+
* Puts `element` in the wrapper for its type (see `mediaWrappers`), and
|
|
9097
|
+
* returns the wrapper, or `element` when there is none for it
|
|
9098
|
+
*/ function wrapMedia(jodit, element) {
|
|
9099
|
+
const wrapper = createMediaWrapper(jodit, element.nodeName);
|
|
9100
|
+
if (!wrapper) {
|
|
9101
|
+
return element;
|
|
9102
|
+
}
|
|
9103
|
+
if (element.parentNode) {
|
|
9104
|
+
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.before(element, wrapper);
|
|
9105
|
+
}
|
|
9106
|
+
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.append(wrapper, element);
|
|
9107
|
+
return wrapper;
|
|
9108
|
+
}
|
|
9109
|
+
|
|
9110
|
+
|
|
8986
9111
|
/***/ }),
|
|
8987
9112
|
|
|
8988
9113
|
/***/ 36310:
|
|
@@ -10845,6 +10970,11 @@ function findCorrectCurrentNode(node, range, rightMode, isCollapsed, checkChild,
|
|
|
10845
10970
|
|
|
10846
10971
|
|
|
10847
10972
|
|
|
10973
|
+
/**
|
|
10974
|
+
* A text node that is empty or holds only invisible caret placeholders.
|
|
10975
|
+
*/ function isBlankTextNode(node) {
|
|
10976
|
+
return jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.isText(node) && (node.nodeValue ?? '').replace(jodit_core_constants__WEBPACK_IMPORTED_MODULE_2__.INVISIBLE_SPACE_REG_EXP(), '').length === 0;
|
|
10977
|
+
}
|
|
10848
10978
|
class Selection {
|
|
10849
10979
|
/**
|
|
10850
10980
|
* Short alias for this.jodit
|
|
@@ -11089,10 +11219,21 @@ class Selection {
|
|
|
11089
11219
|
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.append(marker, this.j.createInside.text(jodit_core_constants__WEBPACK_IMPORTED_MODULE_2__.INVISIBLE_SPACE));
|
|
11090
11220
|
if (newRange) {
|
|
11091
11221
|
if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.isOrContains(this.area, atStart ? newRange.startContainer : newRange.endContainer)) {
|
|
11092
|
-
|
|
11093
|
-
//
|
|
11094
|
-
//
|
|
11095
|
-
|
|
11222
|
+
const { startContainer: node, startOffset: offset } = newRange;
|
|
11223
|
+
// At either end of a text node the marker goes beside it. Splitting
|
|
11224
|
+
// the node there would leave the selection's boundary in an empty
|
|
11225
|
+
// text node, and WebKit neither repaints a selection that leaves one
|
|
11226
|
+
// nor moves a selection that follows one when it's removed.
|
|
11227
|
+
if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.isText(node) && offset === 0) {
|
|
11228
|
+
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.before(node, marker);
|
|
11229
|
+
} else if (jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.isText(node) && offset === node.nodeValue?.length) {
|
|
11230
|
+
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.after(node, marker);
|
|
11231
|
+
} else {
|
|
11232
|
+
// Here need do unsafe inserting
|
|
11233
|
+
// Deny Dom.safeInsertNode(newRange, marker);
|
|
11234
|
+
// Apply style -> Test Style module -> Base apply -> For selection <p><strong>|test|</strong></p> apply style {"element":"em","style":{"fontStyle":"italic"}}
|
|
11235
|
+
newRange.insertNode(marker);
|
|
11236
|
+
}
|
|
11096
11237
|
}
|
|
11097
11238
|
}
|
|
11098
11239
|
return marker;
|
|
@@ -11414,7 +11555,9 @@ class Selection {
|
|
|
11414
11555
|
()=>firstChild?.previousSibling?.lastChild
|
|
11415
11556
|
].forEach((getChildNode)=>{
|
|
11416
11557
|
const childNode = getChildNode();
|
|
11417
|
-
|
|
11558
|
+
// Only a text node left with nothing in it by the split
|
|
11559
|
+
// goes; one holding a space is content (`<b>a</b> |`).
|
|
11560
|
+
if (childNode && isBlankTextNode(childNode)) {
|
|
11418
11561
|
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.safeRemove(childNode);
|
|
11419
11562
|
}
|
|
11420
11563
|
});
|
|
@@ -11504,9 +11647,9 @@ class Selection {
|
|
|
11504
11647
|
if (styles && typeof styles === 'object') {
|
|
11505
11648
|
(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.css)(image, styles);
|
|
11506
11649
|
}
|
|
11507
|
-
const { imageDefaultAlign
|
|
11650
|
+
const { imageDefaultAlign } = this.j.o;
|
|
11508
11651
|
if (imageDefaultAlign && imageDefaultAlign !== 'normal') {
|
|
11509
|
-
(0,jodit_core_helpers_utils_align__WEBPACK_IMPORTED_MODULE_7__.hAlignElement)(image, imageDefaultAlign,
|
|
11652
|
+
(0,jodit_core_helpers_utils_align__WEBPACK_IMPORTED_MODULE_7__.hAlignElement)(image, imageDefaultAlign, (0,jodit_core_helpers_utils_align__WEBPACK_IMPORTED_MODULE_7__.getAlignClasses)(this.j, image));
|
|
11510
11653
|
}
|
|
11511
11654
|
const onload = ()=>{
|
|
11512
11655
|
if (image.naturalHeight < image.offsetHeight || image.naturalWidth < image.offsetWidth) {
|
|
@@ -22294,19 +22437,27 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.history = {
|
|
|
22294
22437
|
* Update history stack
|
|
22295
22438
|
*/ updateStack(replace = false) {
|
|
22296
22439
|
const newValue = this.snapshot.make();
|
|
22297
|
-
if (
|
|
22298
|
-
|
|
22299
|
-
|
|
22300
|
-
|
|
22301
|
-
|
|
22302
|
-
|
|
22303
|
-
|
|
22304
|
-
} else {
|
|
22305
|
-
this.__stack.push(newCommand);
|
|
22306
|
-
}
|
|
22440
|
+
if (_snapshot__WEBPACK_IMPORTED_MODULE_6__.Snapshot.equal(newValue, this.startValue)) {
|
|
22441
|
+
return;
|
|
22442
|
+
}
|
|
22443
|
+
// Only the selection moved, for example when the selection markers
|
|
22444
|
+
// went in before a switch to the source view. There is nothing to
|
|
22445
|
+
// undo, but the next change has to start from this selection.
|
|
22446
|
+
if (newValue.html === this.startValue.html) {
|
|
22307
22447
|
this.startValue = newValue;
|
|
22308
|
-
|
|
22448
|
+
return;
|
|
22449
|
+
}
|
|
22450
|
+
const newCommand = new _command__WEBPACK_IMPORTED_MODULE_5__.Command(this.startValue, newValue, this, this.updateTick);
|
|
22451
|
+
if (replace) {
|
|
22452
|
+
const command = this.__stack.current();
|
|
22453
|
+
if (command && this.updateTick === command.tick) {
|
|
22454
|
+
this.__stack.replace(newCommand);
|
|
22455
|
+
}
|
|
22456
|
+
} else {
|
|
22457
|
+
this.__stack.push(newCommand);
|
|
22309
22458
|
}
|
|
22459
|
+
this.startValue = newValue;
|
|
22460
|
+
this.fireChangeStack();
|
|
22310
22461
|
}
|
|
22311
22462
|
fireChangeStack() {
|
|
22312
22463
|
this.j && !this.j.isInDestruct && this.j.events?.fire('changeStack');
|
|
@@ -24526,6 +24677,7 @@ const INPUT_TAGS = new Set([
|
|
|
24526
24677
|
'textarea',
|
|
24527
24678
|
'select'
|
|
24528
24679
|
]);
|
|
24680
|
+
const TYPE_AHEAD_TIMEOUT = 1000;
|
|
24529
24681
|
const FOCUSABLE_SELECTOR = [
|
|
24530
24682
|
'button:not([disabled])',
|
|
24531
24683
|
'a[href]',
|
|
@@ -24783,11 +24935,55 @@ class ToolbarButton extends jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_19__.U
|
|
|
24783
24935
|
items[(index + 1) % items.length].focus();
|
|
24784
24936
|
break;
|
|
24785
24937
|
default:
|
|
24786
|
-
|
|
24938
|
+
if (!this.control.list || !this.__typeAhead(e.key, items, index)) {
|
|
24939
|
+
return;
|
|
24940
|
+
}
|
|
24787
24941
|
}
|
|
24788
24942
|
e.preventDefault();
|
|
24789
24943
|
e.stopPropagation();
|
|
24790
24944
|
}
|
|
24945
|
+
/**
|
|
24946
|
+
* The mouse opens a dropdown without taking the focus out of the editor.
|
|
24947
|
+
* While a dropdown list is open, typing there searches the list, as in an
|
|
24948
|
+
* open `<select>`, instead of writing into the content
|
|
24949
|
+
*/ __onEditorKeyDown(e) {
|
|
24950
|
+
if (!this.openedPopup || !this.control.list || e.altKey || e.ctrlKey || e.metaKey || !this.__typeAhead(e.key, this.__popupFocusables(), -1)) {
|
|
24951
|
+
return;
|
|
24952
|
+
}
|
|
24953
|
+
e.preventDefault();
|
|
24954
|
+
return false;
|
|
24955
|
+
}
|
|
24956
|
+
/**
|
|
24957
|
+
* Typing in a dropdown list focuses the next item whose label starts with
|
|
24958
|
+
* the typed text, whatever their case and accents, and repeating one letter
|
|
24959
|
+
* cycles through the items that start with it, like the WAI-ARIA menu
|
|
24960
|
+
* pattern's type-ahead. The typed text starts again after a pause, or once
|
|
24961
|
+
* the focus has moved on
|
|
24962
|
+
*/ __typeAhead(key, items, index) {
|
|
24963
|
+
const now = Date.now();
|
|
24964
|
+
if (now - this.__typedAt > TYPE_AHEAD_TIMEOUT || items[index] !== this.__typedTo) {
|
|
24965
|
+
this.__typed = '';
|
|
24966
|
+
}
|
|
24967
|
+
if (key.length !== 1 || key === ' ' && !this.__typed) {
|
|
24968
|
+
return false;
|
|
24969
|
+
}
|
|
24970
|
+
this.__typedAt = now;
|
|
24971
|
+
this.__typed += key;
|
|
24972
|
+
this.__typedTo = items[index];
|
|
24973
|
+
const { compare } = new Intl.Collator(undefined, {
|
|
24974
|
+
usage: 'search',
|
|
24975
|
+
sensitivity: 'base'
|
|
24976
|
+
}), typed = this.__typed, cycle = Array.from(typed).every((char)=>compare(char, typed[0]) === 0), prefix = cycle ? typed[0] : typed, start = cycle ? index + 1 : Math.max(index, 0);
|
|
24977
|
+
for(let i = 0; i < items.length; i += 1){
|
|
24978
|
+
const item = items[(start + i) % items.length], label = item.textContent?.trim() ?? '';
|
|
24979
|
+
if (compare(label.slice(0, prefix.length), prefix) === 0) {
|
|
24980
|
+
item.focus();
|
|
24981
|
+
this.__typedTo = item;
|
|
24982
|
+
break;
|
|
24983
|
+
}
|
|
24984
|
+
}
|
|
24985
|
+
return true;
|
|
24986
|
+
}
|
|
24791
24987
|
/**
|
|
24792
24988
|
* Visible controls of the opened dropdown that can take the focus
|
|
24793
24989
|
*/ __popupFocusables() {
|
|
@@ -24803,8 +24999,12 @@ class ToolbarButton extends jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_19__.U
|
|
|
24803
24999
|
const controls = this.jodit.options.controls ?? {}, getControl = (key)=>(0,jodit_core_ui_helpers_get_control_type__WEBPACK_IMPORTED_MODULE_20__.findControlType)(key, controls);
|
|
24804
25000
|
const list = control.list;
|
|
24805
25001
|
const menu = this.openPopup();
|
|
24806
|
-
const toolbar = (0,_factory__WEBPACK_IMPORTED_MODULE_23__.makeCollection)(this.j);
|
|
24807
25002
|
menu.parentElement = this;
|
|
25003
|
+
const content = control.popup?.(this.j, this.toolbar?.getTarget(this) ?? this.target ?? null, this.__closePopup, this);
|
|
25004
|
+
if (content) {
|
|
25005
|
+
return this.__openMenu(menu, content);
|
|
25006
|
+
}
|
|
25007
|
+
const toolbar = (0,_factory__WEBPACK_IMPORTED_MODULE_23__.makeCollection)(this.j);
|
|
24808
25008
|
toolbar.parentElement = menu;
|
|
24809
25009
|
toolbar.mode = 'vertical';
|
|
24810
25010
|
const isListItem = (key)=>(0,jodit_core_helpers_checker_is_plain_object__WEBPACK_IMPORTED_MODULE_12__.isPlainObject)(key) && 'title' in key && 'value' in key;
|
|
@@ -24852,7 +25052,10 @@ class ToolbarButton extends jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_19__.U
|
|
|
24852
25052
|
return childControl;
|
|
24853
25053
|
};
|
|
24854
25054
|
toolbar.build((0,jodit_core_helpers_checker_is_array__WEBPACK_IMPORTED_MODULE_9__.isArray)(list) ? list.map(getButton) : (0,jodit_core_helpers_utils_utils__WEBPACK_IMPORTED_MODULE_18__.keys)(list, false).map((key)=>getButton(key, list[key])), this.target);
|
|
24855
|
-
|
|
25055
|
+
this.__openMenu(menu, toolbar);
|
|
25056
|
+
}
|
|
25057
|
+
__openMenu(menu, content) {
|
|
25058
|
+
menu.setContent(content).open(()=>(0,jodit_core_helpers_size__WEBPACK_IMPORTED_MODULE_14__.position)(this.container), false, this.j.o.allowTabNavigation ? this.container : undefined);
|
|
24856
25059
|
this.state.activated = true;
|
|
24857
25060
|
}
|
|
24858
25061
|
onOutsideClick(e) {
|
|
@@ -24866,7 +25069,7 @@ class ToolbarButton extends jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_19__.U
|
|
|
24866
25069
|
openPopup() {
|
|
24867
25070
|
this.__closePopup();
|
|
24868
25071
|
this.openedPopup = new jodit_core_ui_popup_popup__WEBPACK_IMPORTED_MODULE_22__.Popup(this.j, false);
|
|
24869
|
-
this.j.e.on(this.ow, 'mousedown touchstart', this.onOutsideClick).on('escape closeAllPopups', this.onOutsideClick).on(this.openedPopup.container, 'keydown', this.__onPopupKeyDown);
|
|
25072
|
+
this.j.e.on(this.ow, 'mousedown touchstart', this.onOutsideClick).on('escape closeAllPopups', this.onOutsideClick).on('keydown', this.__onEditorKeyDown).on(this.openedPopup.container, 'keydown', this.__onPopupKeyDown);
|
|
24870
25073
|
return this.openedPopup;
|
|
24871
25074
|
}
|
|
24872
25075
|
__closePopup() {
|
|
@@ -24881,7 +25084,7 @@ class ToolbarButton extends jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_19__.U
|
|
|
24881
25084
|
// popup while the outer `removeChild` is still running and Chrome
|
|
24882
25085
|
// throws NotFoundError. See #1458
|
|
24883
25086
|
this.openedPopup = null;
|
|
24884
|
-
this.j.e.off(this.ow, 'mousedown touchstart', this.onOutsideClick).off('escape closeAllPopups', this.onOutsideClick);
|
|
25087
|
+
this.j.e.off(this.ow, 'mousedown touchstart', this.onOutsideClick).off('escape closeAllPopups', this.onOutsideClick).off('keydown', this.__onEditorKeyDown);
|
|
24885
25088
|
// The keyboard brought the focus into the dropdown: give it back to
|
|
24886
25089
|
// the button, otherwise it would fall out to the document
|
|
24887
25090
|
const { activeElement } = this.od, hadFocus = activeElement && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_8__.Dom.isOrContains(popup.container, activeElement);
|
|
@@ -24936,12 +25139,12 @@ class ToolbarButton extends jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_19__.U
|
|
|
24936
25139
|
return super.destruct();
|
|
24937
25140
|
}
|
|
24938
25141
|
constructor(jodit, control, target = null){
|
|
24939
|
-
super(jodit), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "control", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "target", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "state", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "trigger", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "openedPopup", void 0), this.control = control, this.target = target, this.state = {
|
|
25142
|
+
super(jodit), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "control", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "target", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "state", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "trigger", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__typed", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__typedAt", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__typedTo", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "openedPopup", void 0), this.control = control, this.target = target, this.state = {
|
|
24940
25143
|
...(0,jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_19__.UIButtonState)(),
|
|
24941
25144
|
theme: 'toolbar',
|
|
24942
25145
|
currentValue: '',
|
|
24943
25146
|
hasTrigger: false
|
|
24944
|
-
}, this.openedPopup = null;
|
|
25147
|
+
}, this.__typed = '', this.__typedAt = 0, this.__typedTo = null, this.openedPopup = null;
|
|
24945
25148
|
const button = this.getElm('button');
|
|
24946
25149
|
(0,jodit_core_helpers_utils_assert__WEBPACK_IMPORTED_MODULE_16__.assert)(button, 'Element button should exists');
|
|
24947
25150
|
this.button = button;
|
|
@@ -24990,6 +25193,9 @@ class ToolbarButton extends jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_19__.U
|
|
|
24990
25193
|
(0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
|
|
24991
25194
|
jodit_core_decorators_autobind_autobind__WEBPACK_IMPORTED_MODULE_4__.autobind
|
|
24992
25195
|
], ToolbarButton.prototype, "__onPopupKeyDown", null);
|
|
25196
|
+
(0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
|
|
25197
|
+
jodit_core_decorators_autobind_autobind__WEBPACK_IMPORTED_MODULE_4__.autobind
|
|
25198
|
+
], ToolbarButton.prototype, "__onEditorKeyDown", null);
|
|
24993
25199
|
(0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
|
|
24994
25200
|
jodit_core_decorators_autobind_autobind__WEBPACK_IMPORTED_MODULE_4__.autobind
|
|
24995
25201
|
], ToolbarButton.prototype, "onOutsideClick", null);
|
|
@@ -32019,14 +32225,16 @@ jodit_core_global__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('focus', focus);
|
|
|
32019
32225
|
|
|
32020
32226
|
"use strict";
|
|
32021
32227
|
/* harmony import */ var jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(27795);
|
|
32022
|
-
/* harmony import */ var
|
|
32023
|
-
/* harmony import */ var
|
|
32024
|
-
/* harmony import */ var
|
|
32025
|
-
/* harmony import */ var
|
|
32026
|
-
/* harmony import */ var
|
|
32027
|
-
/* harmony import */ var
|
|
32028
|
-
/* harmony import */ var
|
|
32029
|
-
/* harmony import */ var
|
|
32228
|
+
/* harmony import */ var jodit_core_helpers_checker_is_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(17312);
|
|
32229
|
+
/* harmony import */ var jodit_core_helpers_string_trim__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4040);
|
|
32230
|
+
/* harmony import */ var jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(80991);
|
|
32231
|
+
/* harmony import */ var jodit_core_ui_icon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(29434);
|
|
32232
|
+
/* harmony import */ var jodit_config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(5266);
|
|
32233
|
+
/* harmony import */ var _icons_font_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(48842);
|
|
32234
|
+
/* harmony import */ var _icons_font_svg__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_icons_font_svg__WEBPACK_IMPORTED_MODULE_6__);
|
|
32235
|
+
/* harmony import */ var _icons_fontsize_svg__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(25501);
|
|
32236
|
+
/* harmony import */ var _icons_fontsize_svg__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_icons_fontsize_svg__WEBPACK_IMPORTED_MODULE_7__);
|
|
32237
|
+
/* harmony import */ var _font_picker__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(80045);
|
|
32030
32238
|
/*!
|
|
32031
32239
|
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
32032
32240
|
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
@@ -32040,11 +32248,18 @@ jodit_core_global__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('focus', focus);
|
|
|
32040
32248
|
|
|
32041
32249
|
|
|
32042
32250
|
|
|
32251
|
+
|
|
32252
|
+
|
|
32043
32253
|
/**
|
|
32044
32254
|
* Default font-size points
|
|
32045
|
-
*/
|
|
32046
|
-
|
|
32047
|
-
|
|
32255
|
+
*/ jodit_config__WEBPACK_IMPORTED_MODULE_5__.Config.prototype.defaultFontSizePoints = 'px';
|
|
32256
|
+
jodit_config__WEBPACK_IMPORTED_MODULE_5__.Config.prototype.font = {
|
|
32257
|
+
googleFonts: {
|
|
32258
|
+
url: ''
|
|
32259
|
+
}
|
|
32260
|
+
};
|
|
32261
|
+
jodit_core_ui_icon__WEBPACK_IMPORTED_MODULE_4__.Icon.set('font', (_icons_font_svg__WEBPACK_IMPORTED_MODULE_6___default())).set('fontsize', (_icons_fontsize_svg__WEBPACK_IMPORTED_MODULE_7___default()));
|
|
32262
|
+
jodit_config__WEBPACK_IMPORTED_MODULE_5__.Config.prototype.controls.fontsize = {
|
|
32048
32263
|
command: 'fontsize',
|
|
32049
32264
|
data: {
|
|
32050
32265
|
cssRule: 'font-size',
|
|
@@ -32089,7 +32304,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.fontsize = {
|
|
|
32089
32304
|
}
|
|
32090
32305
|
const control = button.control;
|
|
32091
32306
|
const cssKey = control.data?.cssRule || 'font-size';
|
|
32092
|
-
const value = (0,
|
|
32307
|
+
const value = (0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_3__.css)(box, cssKey);
|
|
32093
32308
|
if (cssKey === 'font-size') {
|
|
32094
32309
|
const numValue = parseFloat(value.toString());
|
|
32095
32310
|
if (editor.o.defaultFontSizePoints === 'pt') {
|
|
@@ -32119,12 +32334,13 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.fontsize = {
|
|
|
32119
32334
|
return keySet.has(normalize(value.toString()));
|
|
32120
32335
|
}
|
|
32121
32336
|
};
|
|
32122
|
-
|
|
32123
|
-
|
|
32337
|
+
const hadSelection = new WeakSet();
|
|
32338
|
+
jodit_config__WEBPACK_IMPORTED_MODULE_5__.Config.prototype.controls.font = {
|
|
32339
|
+
...jodit_config__WEBPACK_IMPORTED_MODULE_5__.Config.prototype.controls.fontsize,
|
|
32124
32340
|
command: 'fontname',
|
|
32125
32341
|
textTemplate: (j, value)=>{
|
|
32126
32342
|
const [first] = value.split(',');
|
|
32127
|
-
return (0,
|
|
32343
|
+
return (0,jodit_core_helpers_string_trim__WEBPACK_IMPORTED_MODULE_2__.trimChars)(first, '"\'');
|
|
32128
32344
|
},
|
|
32129
32345
|
list: {
|
|
32130
32346
|
'': 'Default',
|
|
@@ -32146,6 +32362,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = {
|
|
|
32146
32362
|
} catch {}
|
|
32147
32363
|
return `<span data-style="${key}" style="${isAvailable ? `font-family: ${key}!important;` : ''}">${value}</span>`;
|
|
32148
32364
|
},
|
|
32365
|
+
popup: (editor, current, close, button)=>editor.o.font.googleFonts.url ? new _font_picker__WEBPACK_IMPORTED_MODULE_8__.UIFontPicker(editor, button, close) : false,
|
|
32149
32366
|
data: {
|
|
32150
32367
|
cssRule: 'font-family',
|
|
32151
32368
|
normalize: (v)=>{
|
|
@@ -32154,19 +32371,19 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = {
|
|
|
32154
32371
|
},
|
|
32155
32372
|
// When no font is explicitly set, the computed font-family equals the
|
|
32156
32373
|
// editor's own default (e.g. `-apple-system, …`). Return '' so the
|
|
32157
|
-
// button shows the `Default`
|
|
32158
|
-
// See #1370
|
|
32159
|
-
value: (editor)=>{
|
|
32160
|
-
const current = editor.s.current();
|
|
32161
|
-
|
|
32162
|
-
|
|
32163
|
-
|
|
32164
|
-
|
|
32165
|
-
if (
|
|
32374
|
+
// button shows the list's `Default` entry, when it has one, instead of
|
|
32375
|
+
// that raw stack. See #1370
|
|
32376
|
+
value: (editor, button)=>{
|
|
32377
|
+
const current = editor.s.current(), box = current && jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(current, jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement, editor.editor);
|
|
32378
|
+
// Until there is a selection the button shows the editor's own font,
|
|
32379
|
+
// and afterwards the font of the last one
|
|
32380
|
+
if (box) {
|
|
32381
|
+
hadSelection.add(button);
|
|
32382
|
+
} else if (hadSelection.has(button)) {
|
|
32166
32383
|
return;
|
|
32167
32384
|
}
|
|
32168
|
-
const value = (0,
|
|
32169
|
-
if (value === (0,
|
|
32385
|
+
const value = (0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_3__.css)(box || editor.editor, 'font-family').toString(), { list } = button.control;
|
|
32386
|
+
if (value === (0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_3__.css)(editor.editor, 'font-family').toString() && ((0,jodit_core_helpers_checker_is_array__WEBPACK_IMPORTED_MODULE_1__.isArray)(list) ? list.includes('') : '' in (list ?? {}))) {
|
|
32170
32387
|
return '';
|
|
32171
32388
|
}
|
|
32172
32389
|
return value;
|
|
@@ -32175,6 +32392,254 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = {
|
|
|
32175
32392
|
};
|
|
32176
32393
|
|
|
32177
32394
|
|
|
32395
|
+
/***/ }),
|
|
32396
|
+
|
|
32397
|
+
/***/ 80045:
|
|
32398
|
+
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
32399
|
+
|
|
32400
|
+
"use strict";
|
|
32401
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
32402
|
+
/* harmony export */ UIFontPicker: function() { return /* binding */ UIFontPicker; }
|
|
32403
|
+
/* harmony export */ });
|
|
32404
|
+
/* harmony import */ var _swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25045);
|
|
32405
|
+
/* harmony import */ var _swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(31635);
|
|
32406
|
+
/* harmony import */ var jodit_core_decorators_component_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(91672);
|
|
32407
|
+
/* harmony import */ var jodit_core_decorators_watch_watch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(68616);
|
|
32408
|
+
/* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(23211);
|
|
32409
|
+
/* harmony import */ var jodit_core_global__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(28077);
|
|
32410
|
+
/* harmony import */ var jodit_core_helpers_checker_is_array__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(17312);
|
|
32411
|
+
/* harmony import */ var jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(7909);
|
|
32412
|
+
/* harmony import */ var jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(80991);
|
|
32413
|
+
/* harmony import */ var jodit_core_helpers_utils_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(71125);
|
|
32414
|
+
/* harmony import */ var jodit_core_ui_element__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(96007);
|
|
32415
|
+
/* harmony import */ var _google_fonts__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(24939);
|
|
32416
|
+
/*!
|
|
32417
|
+
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
32418
|
+
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
32419
|
+
* Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
|
|
32420
|
+
*/ /**
|
|
32421
|
+
* @module plugins/font
|
|
32422
|
+
*/
|
|
32423
|
+
|
|
32424
|
+
|
|
32425
|
+
|
|
32426
|
+
|
|
32427
|
+
|
|
32428
|
+
|
|
32429
|
+
|
|
32430
|
+
|
|
32431
|
+
|
|
32432
|
+
|
|
32433
|
+
|
|
32434
|
+
|
|
32435
|
+
const HEADINGS = [
|
|
32436
|
+
'h1',
|
|
32437
|
+
'h2',
|
|
32438
|
+
'h3',
|
|
32439
|
+
'h4',
|
|
32440
|
+
'h5',
|
|
32441
|
+
'h6'
|
|
32442
|
+
];
|
|
32443
|
+
const GENERIC_FAMILIES = new Set([
|
|
32444
|
+
'serif',
|
|
32445
|
+
'sans-serif',
|
|
32446
|
+
'monospace',
|
|
32447
|
+
'cursive',
|
|
32448
|
+
'fantasy',
|
|
32449
|
+
'system-ui',
|
|
32450
|
+
'ui-serif',
|
|
32451
|
+
'ui-sans-serif',
|
|
32452
|
+
'ui-monospace',
|
|
32453
|
+
'ui-rounded'
|
|
32454
|
+
]);
|
|
32455
|
+
/**
|
|
32456
|
+
* A family that names a font, not a generic family or a vendor keyword such
|
|
32457
|
+
* as `-apple-system`
|
|
32458
|
+
*/ function isFontName(family) {
|
|
32459
|
+
return Boolean(family) && !family.startsWith('-') && !GENERIC_FAMILIES.has(family);
|
|
32460
|
+
}
|
|
32461
|
+
class UIFontPicker extends jodit_core_ui_element__WEBPACK_IMPORTED_MODULE_10__.UIElement {
|
|
32462
|
+
className() {
|
|
32463
|
+
return 'UIFontPicker';
|
|
32464
|
+
}
|
|
32465
|
+
__render() {
|
|
32466
|
+
const { control } = this.__button, { list = {} } = control, listed = (0,jodit_core_helpers_checker_is_array__WEBPACK_IMPORTED_MODULE_6__.isArray)(list) ? list.map((key)=>({
|
|
32467
|
+
value: key.toString(),
|
|
32468
|
+
title: key.toString()
|
|
32469
|
+
})) : (0,jodit_core_helpers_utils_utils__WEBPACK_IMPORTED_MODULE_9__.keys)(list, false).map((key)=>({
|
|
32470
|
+
value: key,
|
|
32471
|
+
title: list[key].toString()
|
|
32472
|
+
})), google = Array.from(this.__googleFonts.fonts.values(), (font)=>({
|
|
32473
|
+
value: this.__googleFonts.value(font),
|
|
32474
|
+
title: font.family,
|
|
32475
|
+
font
|
|
32476
|
+
})), byFamily = new Map();
|
|
32477
|
+
[
|
|
32478
|
+
...google,
|
|
32479
|
+
...listed
|
|
32480
|
+
].forEach((entry)=>byFamily.set((0,_google_fonts__WEBPACK_IMPORTED_MODULE_11__.firstFamily)(entry.value), entry));
|
|
32481
|
+
const theme = new Map(), used = new Map();
|
|
32482
|
+
// The theme's own fonts are listed too, so its body font can be chosen
|
|
32483
|
+
// to take a font off
|
|
32484
|
+
this.__themeFonts().forEach((fontFamily)=>{
|
|
32485
|
+
const family = (0,_google_fonts__WEBPACK_IMPORTED_MODULE_11__.firstFamily)(fontFamily), title = fontFamily.split(',')[0].replace(/["']/g, '').trim(), entry = byFamily.get(family) ?? (isFontName(family) ? {
|
|
32486
|
+
value: fontFamily,
|
|
32487
|
+
title
|
|
32488
|
+
} : undefined);
|
|
32489
|
+
entry && !theme.has(family) && theme.set(family, entry);
|
|
32490
|
+
});
|
|
32491
|
+
this.__usedFonts().forEach((fontFamily)=>{
|
|
32492
|
+
const family = (0,_google_fonts__WEBPACK_IMPORTED_MODULE_11__.firstFamily)(fontFamily), entry = byFamily.get(family);
|
|
32493
|
+
entry && !theme.has(family) && used.set(family, entry);
|
|
32494
|
+
});
|
|
32495
|
+
const defaultEntry = listed.find((entry)=>entry.value === ''), current = (0,_google_fonts__WEBPACK_IMPORTED_MODULE_11__.firstFamily)(control.value?.(this.j, this.__button) ?? '');
|
|
32496
|
+
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.detach(this.container);
|
|
32497
|
+
this.__fonts.clear();
|
|
32498
|
+
defaultEntry && this.__append(current, [
|
|
32499
|
+
defaultEntry
|
|
32500
|
+
]);
|
|
32501
|
+
this.__append(current, [
|
|
32502
|
+
...theme.values()
|
|
32503
|
+
], 'Theme fonts');
|
|
32504
|
+
this.__append(current, [
|
|
32505
|
+
...used.values()
|
|
32506
|
+
], 'Used fonts');
|
|
32507
|
+
this.__append(current, listed.filter((entry)=>entry !== defaultEntry), 'System fonts');
|
|
32508
|
+
this.__append(current, google, 'Google Fonts');
|
|
32509
|
+
this.__observeGoogleFonts();
|
|
32510
|
+
}
|
|
32511
|
+
/**
|
|
32512
|
+
* The fonts the editor's styles give text and each heading
|
|
32513
|
+
*/ __themeFonts() {
|
|
32514
|
+
const { editor } = this.j, fonts = [
|
|
32515
|
+
(0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_8__.css)(editor, 'font-family').toString()
|
|
32516
|
+
];
|
|
32517
|
+
HEADINGS.forEach((tag)=>{
|
|
32518
|
+
const heading = this.j.createInside.element(tag, {
|
|
32519
|
+
style: 'display: none'
|
|
32520
|
+
});
|
|
32521
|
+
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.append(editor, heading);
|
|
32522
|
+
fonts.push((0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_8__.css)(heading, 'font-family').toString());
|
|
32523
|
+
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.safeRemove(heading);
|
|
32524
|
+
});
|
|
32525
|
+
return fonts;
|
|
32526
|
+
}
|
|
32527
|
+
/**
|
|
32528
|
+
* The fonts the content sets
|
|
32529
|
+
*/ __usedFonts() {
|
|
32530
|
+
return Array.from(this.j.editor.querySelectorAll('[style*="font-family"]'), (element)=>element.style.fontFamily);
|
|
32531
|
+
}
|
|
32532
|
+
__append(current, entries, heading) {
|
|
32533
|
+
if (!entries.length) {
|
|
32534
|
+
return;
|
|
32535
|
+
}
|
|
32536
|
+
const { control } = this.__button, group = this.j.c.div(this.getFullElName('group'));
|
|
32537
|
+
if (heading) {
|
|
32538
|
+
const title = this.j.c.div(this.getFullElName('heading'), {
|
|
32539
|
+
id: `${this.getFullElName('heading')}-${(0,jodit_core_global__WEBPACK_IMPORTED_MODULE_5__.uniqueUid)()}`
|
|
32540
|
+
});
|
|
32541
|
+
title.textContent = this.i18n(heading);
|
|
32542
|
+
(0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_7__.attr)(group, {
|
|
32543
|
+
role: 'group',
|
|
32544
|
+
'aria-labelledby': title.id
|
|
32545
|
+
});
|
|
32546
|
+
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.append(group, title);
|
|
32547
|
+
}
|
|
32548
|
+
entries.forEach((entry)=>{
|
|
32549
|
+
const item = this.j.c.element('button', {
|
|
32550
|
+
type: 'button',
|
|
32551
|
+
class: this.getFullElName('item'),
|
|
32552
|
+
'data-value': entry.value,
|
|
32553
|
+
'aria-pressed': (0,_google_fonts__WEBPACK_IMPORTED_MODULE_11__.firstFamily)(entry.value) === current
|
|
32554
|
+
});
|
|
32555
|
+
if (entry.font) {
|
|
32556
|
+
item.textContent = entry.title;
|
|
32557
|
+
this.__fonts.set(item, entry.font);
|
|
32558
|
+
} else {
|
|
32559
|
+
item.innerHTML = control.childTemplate?.(this.j, entry.value, entry.title, this.__button) ?? entry.title;
|
|
32560
|
+
}
|
|
32561
|
+
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.append(group, item);
|
|
32562
|
+
});
|
|
32563
|
+
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.append(this.container, group);
|
|
32564
|
+
}
|
|
32565
|
+
/**
|
|
32566
|
+
* Shows the names of the Google Fonts in view, and those just below it,
|
|
32567
|
+
* in their own fonts. Setting every item's font up front would have the
|
|
32568
|
+
* browser look for each of the library's families among the installed
|
|
32569
|
+
* fonts the first time the list opens
|
|
32570
|
+
*/ __observeGoogleFonts() {
|
|
32571
|
+
this.j.async.requestAnimationFrame(()=>{
|
|
32572
|
+
this.__observer?.disconnect();
|
|
32573
|
+
if (this.isDestructed || !this.__fonts.size) {
|
|
32574
|
+
return;
|
|
32575
|
+
}
|
|
32576
|
+
const observer = new IntersectionObserver((entries)=>{
|
|
32577
|
+
const fonts = [];
|
|
32578
|
+
entries.forEach(({ isIntersecting, target })=>{
|
|
32579
|
+
const font = this.__fonts.get(target);
|
|
32580
|
+
if (isIntersecting && font) {
|
|
32581
|
+
fonts.push(font);
|
|
32582
|
+
(0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_8__.css)(target, {
|
|
32583
|
+
fontFamily: this.__googleFonts.value(font)
|
|
32584
|
+
});
|
|
32585
|
+
observer.unobserve(target);
|
|
32586
|
+
}
|
|
32587
|
+
});
|
|
32588
|
+
this.__googleFonts.preview(fonts);
|
|
32589
|
+
}, {
|
|
32590
|
+
root: this.container.parentElement,
|
|
32591
|
+
rootMargin: '0px 0px 400px 0px'
|
|
32592
|
+
});
|
|
32593
|
+
this.__fonts.forEach((_, item)=>observer.observe(item));
|
|
32594
|
+
this.__observer = observer;
|
|
32595
|
+
});
|
|
32596
|
+
}
|
|
32597
|
+
/**
|
|
32598
|
+
* Keeps the editor's selection, as the toolbar buttons do
|
|
32599
|
+
*/ onMouseDown(e) {
|
|
32600
|
+
e.preventDefault();
|
|
32601
|
+
}
|
|
32602
|
+
onClick(e) {
|
|
32603
|
+
const item = jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.up(e.target, (node)=>jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.isHTMLElement(node) && node.hasAttribute('data-value'), this.container);
|
|
32604
|
+
if (!item) {
|
|
32605
|
+
return;
|
|
32606
|
+
}
|
|
32607
|
+
const value = (0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_7__.attr)(item, 'data-value') ?? '', font = this.__googleFonts.find(value), // The font the text has anyway is taken off rather than written
|
|
32608
|
+
inherited = (0,_google_fonts__WEBPACK_IMPORTED_MODULE_11__.firstFamily)(value) === (0,_google_fonts__WEBPACK_IMPORTED_MODULE_11__.firstFamily)(this.__blockFont());
|
|
32609
|
+
font && !inherited && this.__googleFonts.load(font);
|
|
32610
|
+
this.j.execCommand('fontname', false, inherited ? '' : value);
|
|
32611
|
+
this.__close();
|
|
32612
|
+
}
|
|
32613
|
+
/**
|
|
32614
|
+
* The font the selected text has without a font of its own: its block's
|
|
32615
|
+
*/ __blockFont() {
|
|
32616
|
+
const block = jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.up(this.j.s.current(), jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.isBlock, this.j.editor);
|
|
32617
|
+
return (0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_8__.css)(block ?? this.j.editor, 'font-family').toString();
|
|
32618
|
+
}
|
|
32619
|
+
destruct() {
|
|
32620
|
+
this.__observer?.disconnect();
|
|
32621
|
+
super.destruct();
|
|
32622
|
+
}
|
|
32623
|
+
constructor(jodit, __button, __close){
|
|
32624
|
+
super(jodit), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__button", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__close", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__googleFonts", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__fonts", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__observer", void 0), this.__button = __button, this.__close = __close, this.__fonts = new Map(), this.__observer = null;
|
|
32625
|
+
this.__googleFonts = jodit.getInstance(_google_fonts__WEBPACK_IMPORTED_MODULE_11__.GoogleFonts);
|
|
32626
|
+
this.__render();
|
|
32627
|
+
if (!this.__googleFonts.fonts.size) {
|
|
32628
|
+
this.__googleFonts.ready.then(()=>!this.isDestructed && this.__render());
|
|
32629
|
+
}
|
|
32630
|
+
}
|
|
32631
|
+
}
|
|
32632
|
+
;(0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
|
|
32633
|
+
(0,jodit_core_decorators_watch_watch__WEBPACK_IMPORTED_MODULE_3__.watch)('container:mousedown')
|
|
32634
|
+
], UIFontPicker.prototype, "onMouseDown", null);
|
|
32635
|
+
(0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
|
|
32636
|
+
(0,jodit_core_decorators_watch_watch__WEBPACK_IMPORTED_MODULE_3__.watch)('container:click')
|
|
32637
|
+
], UIFontPicker.prototype, "onClick", null);
|
|
32638
|
+
UIFontPicker = (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
|
|
32639
|
+
jodit_core_decorators_component_component__WEBPACK_IMPORTED_MODULE_2__.component
|
|
32640
|
+
], UIFontPicker);
|
|
32641
|
+
|
|
32642
|
+
|
|
32178
32643
|
/***/ }),
|
|
32179
32644
|
|
|
32180
32645
|
/***/ 50294:
|
|
@@ -32185,6 +32650,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = {
|
|
|
32185
32650
|
/* harmony import */ var jodit_core_global__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(28077);
|
|
32186
32651
|
/* harmony import */ var jodit_core_helpers___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65946);
|
|
32187
32652
|
/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7433);
|
|
32653
|
+
/* harmony import */ var _google_fonts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24939);
|
|
32188
32654
|
/*!
|
|
32189
32655
|
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
32190
32656
|
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
@@ -32196,6 +32662,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = {
|
|
|
32196
32662
|
*/
|
|
32197
32663
|
|
|
32198
32664
|
|
|
32665
|
+
|
|
32199
32666
|
/**
|
|
32200
32667
|
* Process commands `fontsize` and `fontname`
|
|
32201
32668
|
*/ function font(editor) {
|
|
@@ -32206,6 +32673,18 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = {
|
|
|
32206
32673
|
name: 'fontsize',
|
|
32207
32674
|
group: 'font'
|
|
32208
32675
|
});
|
|
32676
|
+
if (editor.o.font.googleFonts.url) {
|
|
32677
|
+
const googleFonts = editor.getInstance(_google_fonts__WEBPACK_IMPORTED_MODULE_3__.GoogleFonts), loadUsed = editor.async.debounce(()=>googleFonts.loadUsed(), editor.defaultTimeout);
|
|
32678
|
+
googleFonts.ready.then(loadUsed);
|
|
32679
|
+
editor.e.on('afterInit afterSetMode change', loadUsed);
|
|
32680
|
+
}
|
|
32681
|
+
// An iframe's stylesheets can arrive after the toolbar first shows the
|
|
32682
|
+
// editor's font
|
|
32683
|
+
editor.e.on('afterInit', ()=>{
|
|
32684
|
+
editor.iframe && editor.e.on(editor.ed, 'load', ()=>editor.e.fire('updateToolbar'), {
|
|
32685
|
+
capture: true
|
|
32686
|
+
});
|
|
32687
|
+
});
|
|
32209
32688
|
const callback = (command, second, third)=>{
|
|
32210
32689
|
switch(command){
|
|
32211
32690
|
case 'fontsize':
|
|
@@ -32235,6 +32714,160 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = {
|
|
|
32235
32714
|
jodit_core_global__WEBPACK_IMPORTED_MODULE_0__.pluginSystem.add('font', font);
|
|
32236
32715
|
|
|
32237
32716
|
|
|
32717
|
+
/***/ }),
|
|
32718
|
+
|
|
32719
|
+
/***/ 24939:
|
|
32720
|
+
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
32721
|
+
|
|
32722
|
+
"use strict";
|
|
32723
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
32724
|
+
/* harmony export */ GoogleFonts: function() { return /* binding */ GoogleFonts; },
|
|
32725
|
+
/* harmony export */ firstFamily: function() { return /* binding */ firstFamily; }
|
|
32726
|
+
/* harmony export */ });
|
|
32727
|
+
/* harmony import */ var _swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25045);
|
|
32728
|
+
/* harmony import */ var jodit_core_component_view_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(59609);
|
|
32729
|
+
/* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23211);
|
|
32730
|
+
/* harmony import */ var jodit_core_request_ajax__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(17338);
|
|
32731
|
+
/*!
|
|
32732
|
+
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
32733
|
+
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
32734
|
+
* Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
|
|
32735
|
+
*/ /**
|
|
32736
|
+
* @module plugins/font
|
|
32737
|
+
*/
|
|
32738
|
+
|
|
32739
|
+
|
|
32740
|
+
|
|
32741
|
+
const CSS_URL = 'https://fonts.googleapis.com/css2';
|
|
32742
|
+
// `cursive` and `fantasy` stand in badly for a handwriting or display font
|
|
32743
|
+
const GENERIC_FAMILIES = {
|
|
32744
|
+
serif: 'serif',
|
|
32745
|
+
monospace: 'monospace'
|
|
32746
|
+
};
|
|
32747
|
+
const libraries = new Map();
|
|
32748
|
+
/**
|
|
32749
|
+
* The fonts of the library at `url`, fetched once for every editor on the page
|
|
32750
|
+
*/ function library(jodit, url) {
|
|
32751
|
+
let fonts = libraries.get(url);
|
|
32752
|
+
if (!fonts) {
|
|
32753
|
+
const ajax = new jodit_core_request_ajax__WEBPACK_IMPORTED_MODULE_3__.Ajax({
|
|
32754
|
+
url,
|
|
32755
|
+
method: 'GET'
|
|
32756
|
+
}, jodit.o.defaultAjaxOptions);
|
|
32757
|
+
fonts = ajax.send().then((response)=>response.json())// A font without a regular style can't be asked for by its name alone
|
|
32758
|
+
.then(({ items })=>items.filter((font)=>font.variants.includes('regular'))).catch(()=>{
|
|
32759
|
+
libraries.delete(url);
|
|
32760
|
+
return [];
|
|
32761
|
+
}).finally(()=>ajax.destruct());
|
|
32762
|
+
libraries.set(url, fonts);
|
|
32763
|
+
}
|
|
32764
|
+
return fonts;
|
|
32765
|
+
}
|
|
32766
|
+
/**
|
|
32767
|
+
* The first family of a `font-family` value, unquoted and in lower case for
|
|
32768
|
+
* comparing
|
|
32769
|
+
*/ function firstFamily(fontFamily) {
|
|
32770
|
+
return fontFamily.split(',')[0].replace(/["']/g, '').trim().toLowerCase();
|
|
32771
|
+
}
|
|
32772
|
+
/**
|
|
32773
|
+
* Loads fonts from Google Fonts: the whole of each font the content uses into
|
|
32774
|
+
* the editor's document, and just the letters of its name for the font list
|
|
32775
|
+
*/ class GoogleFonts extends jodit_core_component_view_component__WEBPACK_IMPORTED_MODULE_1__.ViewComponent {
|
|
32776
|
+
className() {
|
|
32777
|
+
return 'GoogleFonts';
|
|
32778
|
+
}
|
|
32779
|
+
/**
|
|
32780
|
+
* The library's font named first in a `font-family` value
|
|
32781
|
+
*/ find(fontFamily) {
|
|
32782
|
+
return this.fonts.get(firstFamily(fontFamily));
|
|
32783
|
+
}
|
|
32784
|
+
/**
|
|
32785
|
+
* The `font-family` value that applies a font
|
|
32786
|
+
*/ value(font) {
|
|
32787
|
+
return `'${font.family}', ${GENERIC_FAMILIES[font.category] ?? 'sans-serif'}`;
|
|
32788
|
+
}
|
|
32789
|
+
/**
|
|
32790
|
+
* Loads the regular, italic, bold and bold italic styles that a font has
|
|
32791
|
+
* into the editor's document
|
|
32792
|
+
*/ load(font) {
|
|
32793
|
+
const loaded = this.__loadedInto(this.j.ed);
|
|
32794
|
+
if (loaded.has(font.family)) {
|
|
32795
|
+
return;
|
|
32796
|
+
}
|
|
32797
|
+
loaded.add(font.family);
|
|
32798
|
+
const styles = [
|
|
32799
|
+
[
|
|
32800
|
+
'regular',
|
|
32801
|
+
'0,400'
|
|
32802
|
+
],
|
|
32803
|
+
[
|
|
32804
|
+
'700',
|
|
32805
|
+
'0,700'
|
|
32806
|
+
],
|
|
32807
|
+
[
|
|
32808
|
+
'italic',
|
|
32809
|
+
'1,400'
|
|
32810
|
+
],
|
|
32811
|
+
[
|
|
32812
|
+
'700italic',
|
|
32813
|
+
'1,700'
|
|
32814
|
+
]
|
|
32815
|
+
].filter(([variant])=>font.variants.includes(variant)).map(([, style])=>style);
|
|
32816
|
+
this.__append(this.j.ed, `family=${this.__family(font)}:ital,wght@${styles.join(';')}`);
|
|
32817
|
+
}
|
|
32818
|
+
/**
|
|
32819
|
+
* Loads every font of the library that the content uses
|
|
32820
|
+
*/ loadUsed() {
|
|
32821
|
+
this.j.editor.querySelectorAll('[style*="font-family"]').forEach((element)=>{
|
|
32822
|
+
const font = this.find(element.style.fontFamily);
|
|
32823
|
+
font && this.load(font);
|
|
32824
|
+
});
|
|
32825
|
+
}
|
|
32826
|
+
/**
|
|
32827
|
+
* Loads into the page just the letters of each font's name, so the font
|
|
32828
|
+
* list can show the name in its font
|
|
32829
|
+
*/ preview(fonts) {
|
|
32830
|
+
const loaded = this.__loadedInto(this.j.od);
|
|
32831
|
+
fonts = fonts.filter((font)=>!this.__previewed.has(font.family) && !loaded.has(font.family));
|
|
32832
|
+
if (!fonts.length) {
|
|
32833
|
+
return;
|
|
32834
|
+
}
|
|
32835
|
+
fonts.forEach((font)=>this.__previewed.add(font.family));
|
|
32836
|
+
const families = fonts.map((font)=>`family=${this.__family(font)}`), letters = new Set(fonts.map((font)=>font.family).join(''));
|
|
32837
|
+
this.__append(this.j.od, `${families.join('&')}&text=${encodeURIComponent([
|
|
32838
|
+
...letters
|
|
32839
|
+
].join(''))}`);
|
|
32840
|
+
}
|
|
32841
|
+
__loadedInto(doc) {
|
|
32842
|
+
const loaded = this.__loaded.get(doc) ?? new Set();
|
|
32843
|
+
this.__loaded.set(doc, loaded);
|
|
32844
|
+
return loaded;
|
|
32845
|
+
}
|
|
32846
|
+
__family(font) {
|
|
32847
|
+
return encodeURIComponent(font.family).replace(/%20/g, '+');
|
|
32848
|
+
}
|
|
32849
|
+
__append(doc, query) {
|
|
32850
|
+
const link = doc.createElement('link');
|
|
32851
|
+
link.rel = 'stylesheet';
|
|
32852
|
+
link.href = `${CSS_URL}?${query}&display=swap`;
|
|
32853
|
+
doc.head.appendChild(link);
|
|
32854
|
+
this.__links.push(link);
|
|
32855
|
+
}
|
|
32856
|
+
destruct() {
|
|
32857
|
+
this.__links.forEach((link)=>jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(link));
|
|
32858
|
+
super.destruct();
|
|
32859
|
+
}
|
|
32860
|
+
constructor(jodit){
|
|
32861
|
+
super(jodit), /**
|
|
32862
|
+
* The library by lower-case family, empty until it arrives
|
|
32863
|
+
*/ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "fonts", new Map()), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "ready", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__links", []), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__loaded", new WeakMap()), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__previewed", new Set());
|
|
32864
|
+
this.ready = library(jodit, jodit.o.font.googleFonts.url).then((fonts)=>{
|
|
32865
|
+
fonts.forEach((font)=>this.fonts.set(font.family.toLowerCase(), font));
|
|
32866
|
+
});
|
|
32867
|
+
}
|
|
32868
|
+
}
|
|
32869
|
+
|
|
32870
|
+
|
|
32238
32871
|
/***/ }),
|
|
32239
32872
|
|
|
32240
32873
|
/***/ 96863:
|
|
@@ -33487,12 +34120,13 @@ jodit_core_global__WEBPACK_IMPORTED_MODULE_4__.pluginSystem.add('imageProperties
|
|
|
33487
34120
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
33488
34121
|
/* harmony export */ readValuesFromImage: function() { return /* binding */ readValuesFromImage; }
|
|
33489
34122
|
/* harmony export */ });
|
|
33490
|
-
/* harmony import */ var
|
|
33491
|
-
/* harmony import */ var
|
|
33492
|
-
/* harmony import */ var
|
|
33493
|
-
/* harmony import */ var
|
|
33494
|
-
/* harmony import */ var
|
|
33495
|
-
/* harmony import */ var
|
|
34123
|
+
/* harmony import */ var jodit_core_helpers_utils_align__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(16849);
|
|
34124
|
+
/* harmony import */ var jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7909);
|
|
34125
|
+
/* harmony import */ var jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(80991);
|
|
34126
|
+
/* harmony import */ var _align__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(26633);
|
|
34127
|
+
/* harmony import */ var _link__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(79310);
|
|
34128
|
+
/* harmony import */ var _margin__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(18380);
|
|
34129
|
+
/* harmony import */ var _size__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(57339);
|
|
33496
34130
|
/*!
|
|
33497
34131
|
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
33498
34132
|
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
@@ -33505,32 +34139,33 @@ jodit_core_global__WEBPACK_IMPORTED_MODULE_4__.pluginSystem.add('imageProperties
|
|
|
33505
34139
|
|
|
33506
34140
|
|
|
33507
34141
|
|
|
34142
|
+
|
|
33508
34143
|
/**
|
|
33509
34144
|
* Read values from image and set it to state
|
|
33510
34145
|
* @private
|
|
33511
34146
|
*/ async function readValuesFromImage(j, state) {
|
|
33512
34147
|
const { sourceImage: image, values } = state;
|
|
33513
|
-
(0,
|
|
34148
|
+
(0,_align__WEBPACK_IMPORTED_MODULE_3__.readAlign)(image, values, (0,jodit_core_helpers_utils_align__WEBPACK_IMPORTED_MODULE_0__.getAlignClasses)(j, image));
|
|
33514
34149
|
// Border radius
|
|
33515
|
-
values.borderRadius = parseInt((0,
|
|
34150
|
+
values.borderRadius = parseInt((0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_2__.cssInline)(image, 'border-radius') || '0', 10) || 0;
|
|
33516
34151
|
// Id
|
|
33517
|
-
values.id = (0,
|
|
34152
|
+
values.id = (0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_1__.attr)(image, 'id') || '';
|
|
33518
34153
|
// Title
|
|
33519
|
-
values.imageTitle = (0,
|
|
34154
|
+
values.imageTitle = (0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_1__.attr)(image, 'title') || '';
|
|
33520
34155
|
// Alt
|
|
33521
|
-
values.imageAlt = (0,
|
|
34156
|
+
values.imageAlt = (0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_1__.attr)(image, 'alt') || '';
|
|
33522
34157
|
// Style
|
|
33523
|
-
values.style = (0,
|
|
34158
|
+
values.style = (0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_1__.attr)(image, 'style') || '';
|
|
33524
34159
|
// Classes
|
|
33525
|
-
values.classes = ((0,
|
|
34160
|
+
values.classes = ((0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_1__.attr)(image, 'class') || '').replace(/jodit_focused_image[\s]*/, '');
|
|
33526
34161
|
// Margins
|
|
33527
|
-
(0,
|
|
34162
|
+
(0,_margin__WEBPACK_IMPORTED_MODULE_5__.readMargins)(image, values, state);
|
|
33528
34163
|
// Link
|
|
33529
|
-
(0,
|
|
34164
|
+
(0,_link__WEBPACK_IMPORTED_MODULE_4__.readLink)(state, j, values);
|
|
33530
34165
|
// Src
|
|
33531
|
-
values.imageSrc = (0,
|
|
34166
|
+
values.imageSrc = (0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_1__.attr)(image, 'src') || '';
|
|
33532
34167
|
// Image size
|
|
33533
|
-
return (0,
|
|
34168
|
+
return (0,_size__WEBPACK_IMPORTED_MODULE_6__.readSizes)(image, values, state);
|
|
33534
34169
|
}
|
|
33535
34170
|
|
|
33536
34171
|
|
|
@@ -34551,7 +35186,7 @@ UIImagePositionTab = (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__
|
|
|
34551
35186
|
(0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_1__.attr)(image, 'id', id || null);
|
|
34552
35187
|
}
|
|
34553
35188
|
if (opt.image.editAlign) {
|
|
34554
|
-
(0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_1__.hAlignElement)(image, align,
|
|
35189
|
+
(0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_1__.hAlignElement)(image, align, (0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_1__.getAlignClasses)(j, image));
|
|
34555
35190
|
}
|
|
34556
35191
|
}
|
|
34557
35192
|
|
|
@@ -35381,6 +36016,7 @@ const cmd = (control)=>control.args && (0,jodit_core_helpers_checker__WEBPACK_IM
|
|
|
35381
36016
|
/* harmony import */ var jodit_core_helpers_checker_is_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(85932);
|
|
35382
36017
|
/* harmony import */ var jodit_core_helpers_utils_align__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16849);
|
|
35383
36018
|
/* harmony import */ var jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(80991);
|
|
36019
|
+
/* harmony import */ var jodit_core_helpers_utils_media_wrapper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(83314);
|
|
35384
36020
|
/*!
|
|
35385
36021
|
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
35386
36022
|
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
@@ -35391,9 +36027,7 @@ const cmd = (control)=>control.args && (0,jodit_core_helpers_checker__WEBPACK_IM
|
|
|
35391
36027
|
|
|
35392
36028
|
|
|
35393
36029
|
|
|
35394
|
-
|
|
35395
|
-
// keep inline styles
|
|
35396
|
-
const alignClasses = (editor, elm)=>jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(elm, 'img') ? editor.o.imageAlignClasses : null;
|
|
36030
|
+
|
|
35397
36031
|
// A Normal image sits where the text of its line is aligned (#1531)
|
|
35398
36032
|
const lineAlign = (editor, elm)=>{
|
|
35399
36033
|
const block = elm && jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(elm, jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock, editor.editor) || editor.editor;
|
|
@@ -35414,7 +36048,7 @@ const lineAlign = (editor, elm)=>{
|
|
|
35414
36048
|
return 'left';
|
|
35415
36049
|
}
|
|
35416
36050
|
};
|
|
35417
|
-
const currentAlign = (editor, elm)=>elm ? (0,jodit_core_helpers_utils_align__WEBPACK_IMPORTED_MODULE_2__.getHAlign)(elm,
|
|
36051
|
+
const currentAlign = (editor, elm)=>elm ? (0,jodit_core_helpers_utils_align__WEBPACK_IMPORTED_MODULE_2__.getHAlign)(elm, (0,jodit_core_helpers_utils_align__WEBPACK_IMPORTED_MODULE_2__.getAlignClasses)(editor, elm)) : 'normal';
|
|
35418
36052
|
const align = {
|
|
35419
36053
|
name: 'left',
|
|
35420
36054
|
childTemplate: (_, __, value)=>value,
|
|
@@ -35434,23 +36068,25 @@ const align = {
|
|
|
35434
36068
|
return (0,jodit_core_helpers_checker_is_string__WEBPACK_IMPORTED_MODULE_1__.isString)(value) && currentAlign(editor, button.target) === value.toLowerCase();
|
|
35435
36069
|
},
|
|
35436
36070
|
exec: (editor, elm, { control })=>{
|
|
35437
|
-
|
|
36071
|
+
// A media wrapper kept in the content (`mediaWrappers`) is aligned itself
|
|
36072
|
+
if (!jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isHTMLElement(elm) || !jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(elm, new Set([
|
|
35438
36073
|
'img',
|
|
35439
36074
|
'jodit',
|
|
35440
36075
|
'jodit-media'
|
|
35441
|
-
]))) {
|
|
36076
|
+
])) && (0,jodit_core_helpers_utils_media_wrapper__WEBPACK_IMPORTED_MODULE_4__.getMediaWrapper)(editor, elm) !== elm) {
|
|
35442
36077
|
return;
|
|
35443
36078
|
}
|
|
35444
36079
|
const command = control.args && (0,jodit_core_helpers_checker_is_string__WEBPACK_IMPORTED_MODULE_1__.isString)(control.args[0]) ? control.args[0].toLowerCase() : '';
|
|
35445
36080
|
if (!command) {
|
|
35446
36081
|
return false;
|
|
35447
36082
|
}
|
|
35448
|
-
;(0,jodit_core_helpers_utils_align__WEBPACK_IMPORTED_MODULE_2__.hAlignElement)(elm, command,
|
|
36083
|
+
;(0,jodit_core_helpers_utils_align__WEBPACK_IMPORTED_MODULE_2__.hAlignElement)(elm, command, (0,jodit_core_helpers_utils_align__WEBPACK_IMPORTED_MODULE_2__.getAlignClasses)(editor, elm));
|
|
35449
36084
|
if (jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(elm, new Set([
|
|
35450
36085
|
'jodit',
|
|
35451
36086
|
'jodit-media'
|
|
35452
36087
|
])) && elm.firstElementChild) {
|
|
35453
|
-
|
|
36088
|
+
const media = elm.firstElementChild;
|
|
36089
|
+
(0,jodit_core_helpers_utils_align__WEBPACK_IMPORTED_MODULE_2__.hAlignElement)(media, command, (0,jodit_core_helpers_utils_align__WEBPACK_IMPORTED_MODULE_2__.getAlignClasses)(editor, media));
|
|
35454
36090
|
}
|
|
35455
36091
|
editor.synchronizeValues();
|
|
35456
36092
|
editor.e.fire('recalcPositionPopup');
|
|
@@ -35602,9 +36238,11 @@ const align = {
|
|
|
35602
36238
|
return (0,jodit_modules_toolbar_factory__WEBPACK_IMPORTED_MODULE_9__.makeCollection)(this.jodit, this.popup);
|
|
35603
36239
|
}
|
|
35604
36240
|
onClick(node) {
|
|
35605
|
-
const elements = this.elmsList, target = jodit_core_dom__WEBPACK_IMPORTED_MODULE_3__.Dom.isTag(node, 'img') ? node : jodit_core_dom__WEBPACK_IMPORTED_MODULE_3__.Dom.closest(node, elements, this.j.editor);
|
|
35606
|
-
|
|
35607
|
-
|
|
36241
|
+
const elements = this.elmsList, mediaWrapper = (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.getMediaWrapper)(this.j, node), target = mediaWrapper ?? (jodit_core_dom__WEBPACK_IMPORTED_MODULE_3__.Dom.isTag(node, 'img') ? node : jodit_core_dom__WEBPACK_IMPORTED_MODULE_3__.Dom.closest(node, elements, this.j.editor));
|
|
36242
|
+
// A media wrapper kept in the content gets the media popup
|
|
36243
|
+
const type = mediaWrapper ? 'jodit-media' : target?.nodeName.toLowerCase();
|
|
36244
|
+
if (target && type && this.canShowPopupForType(type)) {
|
|
36245
|
+
this.showPopup(()=>(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.position)(target, this.j), type, target);
|
|
35608
36246
|
return false;
|
|
35609
36247
|
}
|
|
35610
36248
|
}
|
|
@@ -35787,7 +36425,11 @@ const align = {
|
|
|
35787
36425
|
this.removeListenersForElements();
|
|
35788
36426
|
}
|
|
35789
36427
|
_eventsList() {
|
|
35790
|
-
|
|
36428
|
+
// Clicks on a media wrapper kept in the content (`mediaWrappers`)
|
|
36429
|
+
const wrapperTags = Object.values(this.j.o.mediaWrappers ?? {}).map(({ tag })=>tag.toLowerCase());
|
|
36430
|
+
const el = [
|
|
36431
|
+
...new Set(this.elmsList.concat(wrapperTags))
|
|
36432
|
+
];
|
|
35791
36433
|
return el.map((e)=>(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.camelCase)(`click_${e}`)).concat(el.map((e)=>(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.camelCase)(`touchstart_${e}`))).join(' ');
|
|
35792
36434
|
}
|
|
35793
36435
|
addListenersForElements() {
|
|
@@ -36346,7 +36988,7 @@ class lineHeight extends jodit_core_plugin__WEBPACK_IMPORTED_MODULE_6__.Plugin {
|
|
|
36346
36988
|
try {
|
|
36347
36989
|
if (s.isCollapsed()) {
|
|
36348
36990
|
const fake = c.fake();
|
|
36349
|
-
s.
|
|
36991
|
+
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_3__.Dom.safeInsertNode(s.range, fake);
|
|
36350
36992
|
apply(fake);
|
|
36351
36993
|
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_3__.Dom.safeRemove(fake);
|
|
36352
36994
|
} else {
|
|
@@ -36959,6 +37601,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.mediaBlocks = [
|
|
|
36959
37601
|
'video',
|
|
36960
37602
|
'audio'
|
|
36961
37603
|
];
|
|
37604
|
+
jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.mediaWrappers = {};
|
|
36962
37605
|
|
|
36963
37606
|
|
|
36964
37607
|
/***/ }),
|
|
@@ -36992,11 +37635,13 @@ jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.mediaBlocks = [
|
|
|
36992
37635
|
* Process `video` and `audio`
|
|
36993
37636
|
*/ function media(editor) {
|
|
36994
37637
|
const keyFake = 'jodit_fake_wrapper';
|
|
36995
|
-
const { mediaFakeTag, mediaBlocks, mediaInFakeBlock } = editor.options;
|
|
37638
|
+
const { mediaFakeTag, mediaBlocks, mediaInFakeBlock, mediaWrappers } = editor.options;
|
|
36996
37639
|
const wrap = (element)=>{
|
|
36997
37640
|
if (element.parentNode && (0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_3__.attr)(element.parentNode, 'data-jodit_iframe_wrapper')) {
|
|
36998
37641
|
element = element.parentNode;
|
|
36999
|
-
} else {
|
|
37642
|
+
} else if (mediaWrappers[element.nodeName.toLowerCase()]) {
|
|
37643
|
+
element = (0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_3__.getMediaWrapper)(editor, element) ?? (0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_3__.wrapMedia)(editor, element);
|
|
37644
|
+
} else if (mediaInFakeBlock) {
|
|
37000
37645
|
const wrapper = editor.createInside.element(mediaFakeTag, {
|
|
37001
37646
|
'data-jodit-temp': 1,
|
|
37002
37647
|
contenteditable: false,
|
|
@@ -37014,12 +37659,14 @@ jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.mediaBlocks = [
|
|
|
37014
37659
|
}
|
|
37015
37660
|
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.append(wrapper, element);
|
|
37016
37661
|
element = wrapper;
|
|
37662
|
+
} else {
|
|
37663
|
+
return;
|
|
37017
37664
|
}
|
|
37018
37665
|
editor.e.off(element, 'mousedown.select touchstart.select').on(element, 'mousedown.select touchstart.select', ()=>{
|
|
37019
37666
|
editor.s.setCursorAfter(element);
|
|
37020
37667
|
});
|
|
37021
37668
|
};
|
|
37022
|
-
if (mediaInFakeBlock) {
|
|
37669
|
+
if (mediaInFakeBlock || Object.keys(mediaWrappers).length) {
|
|
37023
37670
|
editor.e.on('afterGetValueFromEditor', (data)=>{
|
|
37024
37671
|
const rxp = new RegExp(`<${mediaFakeTag}[^>]+data-${keyFake}[^>]+>([^]+?)</${mediaFakeTag}>`, 'ig');
|
|
37025
37672
|
if (rxp.test(data.value)) {
|
|
@@ -38369,7 +39016,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.useInputsPlaceholder
|
|
|
38369
39016
|
this.placeholderElm.innerHTML = (0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_7__.attr)(editor.element, 'placeholder') || '';
|
|
38370
39017
|
}
|
|
38371
39018
|
editor.e.fire('placeholder', this.placeholderElm.innerHTML);
|
|
38372
|
-
editor.e.off('.placeholder').on('changePlace.placeholder', this.addNativeListeners).on('change.placeholder focus.placeholder keyup.placeholder mouseup.placeholder keydown.placeholder ' + 'mousedown.placeholder afterSetMode.placeholder changePlace.placeholder ' + 'internalChange.placeholder', this.toggle).on(window, 'load', this.toggle);
|
|
39019
|
+
editor.e.off('.placeholder').on('changePlace.placeholder', this.addNativeListeners).on('change.placeholder focus.placeholder keyup.placeholder mouseup.placeholder keydown.placeholder ' + 'mousedown.placeholder afterSetMode.placeholder changePlace.placeholder ' + 'internalChange.placeholder afterCommand.placeholder', this.toggle).on(window, 'load', this.toggle);
|
|
38373
39020
|
this.addNativeListeners();
|
|
38374
39021
|
this.toggle();
|
|
38375
39022
|
});
|
|
@@ -41514,10 +42161,12 @@ jodit_config__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.controls.source = {
|
|
|
41514
42161
|
/* harmony export */ AceEditor: function() { return /* binding */ AceEditor; }
|
|
41515
42162
|
/* harmony export */ });
|
|
41516
42163
|
/* harmony import */ var _swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25045);
|
|
41517
|
-
/* harmony import */ var
|
|
41518
|
-
/* harmony import */ var
|
|
41519
|
-
/* harmony import */ var
|
|
41520
|
-
/* harmony import */ var
|
|
42164
|
+
/* harmony import */ var _swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(31635);
|
|
42165
|
+
/* harmony import */ var jodit_core_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(81937);
|
|
42166
|
+
/* harmony import */ var jodit_core_decorators_autobind_autobind__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(49574);
|
|
42167
|
+
/* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(23211);
|
|
42168
|
+
/* harmony import */ var jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(65946);
|
|
42169
|
+
/* harmony import */ var jodit_plugins_source_editor_sourceEditor__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(94193);
|
|
41521
42170
|
/*!
|
|
41522
42171
|
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
41523
42172
|
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
@@ -41529,7 +42178,9 @@ jodit_config__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.controls.source = {
|
|
|
41529
42178
|
|
|
41530
42179
|
|
|
41531
42180
|
|
|
41532
|
-
|
|
42181
|
+
|
|
42182
|
+
|
|
42183
|
+
class AceEditor extends jodit_plugins_source_editor_sourceEditor__WEBPACK_IMPORTED_MODULE_6__.SourceEditor {
|
|
41533
42184
|
aceExists() {
|
|
41534
42185
|
return this.j.ow.ace !== undefined;
|
|
41535
42186
|
}
|
|
@@ -41587,7 +42238,7 @@ class AceEditor extends jodit_plugins_source_editor_sourceEditor__WEBPACK_IMPORT
|
|
|
41587
42238
|
return;
|
|
41588
42239
|
}
|
|
41589
42240
|
const fakeMirror = this.j.c.div('jodit-source__mirror-fake');
|
|
41590
|
-
|
|
42241
|
+
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.append(this.container, fakeMirror);
|
|
41591
42242
|
const ace = editor.ow.ace;
|
|
41592
42243
|
this.instance = ace.edit(fakeMirror);
|
|
41593
42244
|
if (editor.o.direction === 'rtl') {
|
|
@@ -41608,15 +42259,15 @@ class AceEditor extends jodit_plugins_source_editor_sourceEditor__WEBPACK_IMPORT
|
|
|
41608
42259
|
this.instance.setOption('wrap', editor.o.sourceEditorNativeOptions.wrap);
|
|
41609
42260
|
this.instance.getSession().setUseWorker(false);
|
|
41610
42261
|
this.instance.$blockScrolling = Infinity;
|
|
41611
|
-
this.instance.on('change', this.
|
|
42262
|
+
this.instance.on('change', this.__onChange);
|
|
41612
42263
|
this.instance.on('focus', this.proxyOnFocus);
|
|
41613
42264
|
this.instance.on('mousedown', this.proxyOnMouseDown);
|
|
41614
42265
|
this.instance.on('blur', this.proxyOnBlur);
|
|
41615
|
-
if (editor.getRealMode() !==
|
|
42266
|
+
if (editor.getRealMode() !== jodit_core_constants__WEBPACK_IMPORTED_MODULE_2__.MODE_WYSIWYG) {
|
|
41616
42267
|
this.setValue(this.getValue());
|
|
41617
42268
|
}
|
|
41618
42269
|
const onResize = this.j.async.throttle(()=>{
|
|
41619
|
-
if (editor.isInDestruct || editor.getMode() ===
|
|
42270
|
+
if (editor.isInDestruct || editor.getMode() === jodit_core_constants__WEBPACK_IMPORTED_MODULE_2__.MODE_WYSIWYG) {
|
|
41620
42271
|
return;
|
|
41621
42272
|
}
|
|
41622
42273
|
const hasFocus = this.instance.isFocused();
|
|
@@ -41634,7 +42285,7 @@ class AceEditor extends jodit_plugins_source_editor_sourceEditor__WEBPACK_IMPORT
|
|
|
41634
42285
|
};
|
|
41635
42286
|
let loading = false;
|
|
41636
42287
|
const initAceEditor = ()=>{
|
|
41637
|
-
if (editor.isInDestruct || editor.getRealMode() !==
|
|
42288
|
+
if (editor.isInDestruct || editor.getRealMode() !== jodit_core_constants__WEBPACK_IMPORTED_MODULE_2__.MODE_SOURCE && editor.getMode() !== jodit_core_constants__WEBPACK_IMPORTED_MODULE_2__.MODE_SPLIT) {
|
|
41638
42289
|
return;
|
|
41639
42290
|
}
|
|
41640
42291
|
// ACE (~400 KiB from the CDN) is only needed once the source view
|
|
@@ -41643,7 +42294,7 @@ class AceEditor extends jodit_plugins_source_editor_sourceEditor__WEBPACK_IMPORT
|
|
|
41643
42294
|
if (!this.aceExists()) {
|
|
41644
42295
|
if (!loading) {
|
|
41645
42296
|
loading = true;
|
|
41646
|
-
(0,
|
|
42297
|
+
(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.loadNext)(editor, editor.o.sourceEditorCDNUrlsJS).then(initAceEditor).catch(()=>null);
|
|
41647
42298
|
}
|
|
41648
42299
|
return;
|
|
41649
42300
|
}
|
|
@@ -41655,7 +42306,7 @@ class AceEditor extends jodit_plugins_source_editor_sourceEditor__WEBPACK_IMPORT
|
|
|
41655
42306
|
initAceEditor();
|
|
41656
42307
|
}
|
|
41657
42308
|
destruct() {
|
|
41658
|
-
this.instance.off('change', this.
|
|
42309
|
+
this.instance.off('change', this.__onChange);
|
|
41659
42310
|
this.instance.off('focus', this.proxyOnFocus);
|
|
41660
42311
|
this.instance.off('mousedown', this.proxyOnMouseDown);
|
|
41661
42312
|
this.instance.destroy();
|
|
@@ -41664,13 +42315,29 @@ class AceEditor extends jodit_plugins_source_editor_sourceEditor__WEBPACK_IMPORT
|
|
|
41664
42315
|
setValue(value) {
|
|
41665
42316
|
if (!this.j.o.editHTMLDocumentMode && this.j.o.beautifyHTML) {
|
|
41666
42317
|
const html = this.j.e.fire('beautifyHTML', value);
|
|
41667
|
-
if ((0,
|
|
42318
|
+
if ((0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.isString)(html)) {
|
|
41668
42319
|
value = html;
|
|
41669
42320
|
}
|
|
41670
42321
|
}
|
|
41671
|
-
|
|
42322
|
+
// ACE reports its own `setValue` as two changes, the removal of the
|
|
42323
|
+
// old text and the insertion of the new one. Fed back into the
|
|
42324
|
+
// editor they became two history entries, `content -> ''` and
|
|
42325
|
+
// `'' -> content`, so the first undo after a switch to the source
|
|
42326
|
+
// view and back emptied the editor. The text came from the editor
|
|
42327
|
+
// in the first place, so there is nothing to send back.
|
|
42328
|
+
this.__settingValue = true;
|
|
42329
|
+
try {
|
|
42330
|
+
this.instance.setValue(value);
|
|
42331
|
+
} finally{
|
|
42332
|
+
this.__settingValue = false;
|
|
42333
|
+
}
|
|
41672
42334
|
this.instance.clearSelection();
|
|
41673
42335
|
}
|
|
42336
|
+
__onChange() {
|
|
42337
|
+
if (!this.__settingValue) {
|
|
42338
|
+
this.toWYSIWYG();
|
|
42339
|
+
}
|
|
42340
|
+
}
|
|
41674
42341
|
getValue() {
|
|
41675
42342
|
return this.instance.getValue();
|
|
41676
42343
|
}
|
|
@@ -41744,9 +42411,12 @@ class AceEditor extends jodit_plugins_source_editor_sourceEditor__WEBPACK_IMPORT
|
|
|
41744
42411
|
this.j.e.fire('focus', e);
|
|
41745
42412
|
}), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "proxyOnMouseDown", (e)=>{
|
|
41746
42413
|
this.j.e.fire('mousedown', e);
|
|
41747
|
-
});
|
|
42414
|
+
}), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__settingValue", false);
|
|
41748
42415
|
}
|
|
41749
42416
|
}
|
|
42417
|
+
;(0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
|
|
42418
|
+
jodit_core_decorators_autobind_autobind__WEBPACK_IMPORTED_MODULE_3__.autobind
|
|
42419
|
+
], AceEditor.prototype, "__onChange", null);
|
|
41750
42420
|
|
|
41751
42421
|
|
|
41752
42422
|
/***/ }),
|
|
@@ -43920,14 +44590,32 @@ jodit_core_global__WEBPACK_IMPORTED_MODULE_5__.pluginSystem.add('toolbarNavigati
|
|
|
43920
44590
|
|
|
43921
44591
|
|
|
43922
44592
|
|
|
44593
|
+
// Media the popup inserts go in their wrapper (see `mediaWrappers`), aligned
|
|
44594
|
+
// with `mediaDefaultAlign`
|
|
44595
|
+
function prepareMedia(jodit, element) {
|
|
44596
|
+
const media = (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_0__.wrapMedia)(jodit, element);
|
|
44597
|
+
const { mediaDefaultAlign } = jodit.o;
|
|
44598
|
+
if (mediaDefaultAlign && mediaDefaultAlign !== 'normal') {
|
|
44599
|
+
(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_0__.hAlignElement)(media, mediaDefaultAlign, (0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_0__.getAlignClasses)(jodit, media));
|
|
44600
|
+
}
|
|
44601
|
+
return media;
|
|
44602
|
+
}
|
|
43923
44603
|
function insertVideos(data) {
|
|
43924
44604
|
data.files?.forEach((file)=>{
|
|
43925
|
-
this.s.insertNode(this.createInside.element('video', {
|
|
44605
|
+
this.s.insertNode(prepareMedia(this, this.createInside.element('video', {
|
|
43926
44606
|
controls: '',
|
|
43927
44607
|
src: data.baseurl + file
|
|
43928
|
-
}));
|
|
44608
|
+
})));
|
|
43929
44609
|
});
|
|
43930
44610
|
}
|
|
44611
|
+
// Embed code that is one element is prepared as media; other code goes in as
|
|
44612
|
+
// it is
|
|
44613
|
+
function prepareEmbedCode(jodit, code) {
|
|
44614
|
+
const box = jodit.createInside.div();
|
|
44615
|
+
box.innerHTML = code.trim();
|
|
44616
|
+
const element = box.firstElementChild;
|
|
44617
|
+
return element && box.childNodes.length === 1 ? prepareMedia(jodit, element) : code;
|
|
44618
|
+
}
|
|
43931
44619
|
jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.video = {
|
|
43932
44620
|
parseUrlToVideoEmbed: jodit_core_helpers__WEBPACK_IMPORTED_MODULE_0__.convertMediaUrlToVideoEmbed,
|
|
43933
44621
|
defaultWidth: 400,
|
|
@@ -43965,7 +44653,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.video = {
|
|
|
43965
44653
|
])
|
|
43966
44654
|
]), tabs = [], insertCode = (code)=>{
|
|
43967
44655
|
jodit.s.restore();
|
|
43968
|
-
jodit.s.insertHTML(code);
|
|
44656
|
+
jodit.s.insertHTML(prepareEmbedCode(jodit, code));
|
|
43969
44657
|
close();
|
|
43970
44658
|
};
|
|
43971
44659
|
jodit.s.save();
|