jodit 4.17.6 → 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 +10 -0
- package/es2015/jodit.css +87 -3
- package/es2015/jodit.fat.min.css +1 -1
- package/es2015/jodit.fat.min.js +8 -8
- package/es2015/jodit.js +789 -130
- 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 +8 -8
- package/es2018/jodit.min.css +1 -1
- package/es2018/jodit.min.js +8 -8
- 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 +14 -14
- package/es2021/jodit.js +769 -130
- package/es2021/jodit.min.css +1 -1
- package/es2021/jodit.min.js +14 -14
- 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 +12 -12
- package/es2021.en/jodit.js +769 -130
- package/es2021.en/jodit.min.css +1 -1
- package/es2021.en/jodit.min.js +12 -12
- 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 +1054 -190
- 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 +3 -3
- 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/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/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/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:
|
|
@@ -11522,9 +11647,9 @@ class Selection {
|
|
|
11522
11647
|
if (styles && typeof styles === 'object') {
|
|
11523
11648
|
(0,jodit_core_helpers__WEBPACK_IMPORTED_MODULE_5__.css)(image, styles);
|
|
11524
11649
|
}
|
|
11525
|
-
const { imageDefaultAlign
|
|
11650
|
+
const { imageDefaultAlign } = this.j.o;
|
|
11526
11651
|
if (imageDefaultAlign && imageDefaultAlign !== 'normal') {
|
|
11527
|
-
(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));
|
|
11528
11653
|
}
|
|
11529
11654
|
const onload = ()=>{
|
|
11530
11655
|
if (image.naturalHeight < image.offsetHeight || image.naturalWidth < image.offsetWidth) {
|
|
@@ -24552,6 +24677,7 @@ const INPUT_TAGS = new Set([
|
|
|
24552
24677
|
'textarea',
|
|
24553
24678
|
'select'
|
|
24554
24679
|
]);
|
|
24680
|
+
const TYPE_AHEAD_TIMEOUT = 1000;
|
|
24555
24681
|
const FOCUSABLE_SELECTOR = [
|
|
24556
24682
|
'button:not([disabled])',
|
|
24557
24683
|
'a[href]',
|
|
@@ -24809,11 +24935,55 @@ class ToolbarButton extends jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_19__.U
|
|
|
24809
24935
|
items[(index + 1) % items.length].focus();
|
|
24810
24936
|
break;
|
|
24811
24937
|
default:
|
|
24812
|
-
|
|
24938
|
+
if (!this.control.list || !this.__typeAhead(e.key, items, index)) {
|
|
24939
|
+
return;
|
|
24940
|
+
}
|
|
24813
24941
|
}
|
|
24814
24942
|
e.preventDefault();
|
|
24815
24943
|
e.stopPropagation();
|
|
24816
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
|
+
}
|
|
24817
24987
|
/**
|
|
24818
24988
|
* Visible controls of the opened dropdown that can take the focus
|
|
24819
24989
|
*/ __popupFocusables() {
|
|
@@ -24829,8 +24999,12 @@ class ToolbarButton extends jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_19__.U
|
|
|
24829
24999
|
const controls = this.jodit.options.controls ?? {}, getControl = (key)=>(0,jodit_core_ui_helpers_get_control_type__WEBPACK_IMPORTED_MODULE_20__.findControlType)(key, controls);
|
|
24830
25000
|
const list = control.list;
|
|
24831
25001
|
const menu = this.openPopup();
|
|
24832
|
-
const toolbar = (0,_factory__WEBPACK_IMPORTED_MODULE_23__.makeCollection)(this.j);
|
|
24833
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);
|
|
24834
25008
|
toolbar.parentElement = menu;
|
|
24835
25009
|
toolbar.mode = 'vertical';
|
|
24836
25010
|
const isListItem = (key)=>(0,jodit_core_helpers_checker_is_plain_object__WEBPACK_IMPORTED_MODULE_12__.isPlainObject)(key) && 'title' in key && 'value' in key;
|
|
@@ -24878,7 +25052,10 @@ class ToolbarButton extends jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_19__.U
|
|
|
24878
25052
|
return childControl;
|
|
24879
25053
|
};
|
|
24880
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);
|
|
24881
|
-
|
|
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);
|
|
24882
25059
|
this.state.activated = true;
|
|
24883
25060
|
}
|
|
24884
25061
|
onOutsideClick(e) {
|
|
@@ -24892,7 +25069,7 @@ class ToolbarButton extends jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_19__.U
|
|
|
24892
25069
|
openPopup() {
|
|
24893
25070
|
this.__closePopup();
|
|
24894
25071
|
this.openedPopup = new jodit_core_ui_popup_popup__WEBPACK_IMPORTED_MODULE_22__.Popup(this.j, false);
|
|
24895
|
-
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);
|
|
24896
25073
|
return this.openedPopup;
|
|
24897
25074
|
}
|
|
24898
25075
|
__closePopup() {
|
|
@@ -24907,7 +25084,7 @@ class ToolbarButton extends jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_19__.U
|
|
|
24907
25084
|
// popup while the outer `removeChild` is still running and Chrome
|
|
24908
25085
|
// throws NotFoundError. See #1458
|
|
24909
25086
|
this.openedPopup = null;
|
|
24910
|
-
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);
|
|
24911
25088
|
// The keyboard brought the focus into the dropdown: give it back to
|
|
24912
25089
|
// the button, otherwise it would fall out to the document
|
|
24913
25090
|
const { activeElement } = this.od, hadFocus = activeElement && jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_8__.Dom.isOrContains(popup.container, activeElement);
|
|
@@ -24962,12 +25139,12 @@ class ToolbarButton extends jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_19__.U
|
|
|
24962
25139
|
return super.destruct();
|
|
24963
25140
|
}
|
|
24964
25141
|
constructor(jodit, control, target = null){
|
|
24965
|
-
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 = {
|
|
24966
25143
|
...(0,jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_19__.UIButtonState)(),
|
|
24967
25144
|
theme: 'toolbar',
|
|
24968
25145
|
currentValue: '',
|
|
24969
25146
|
hasTrigger: false
|
|
24970
|
-
}, this.openedPopup = null;
|
|
25147
|
+
}, this.__typed = '', this.__typedAt = 0, this.__typedTo = null, this.openedPopup = null;
|
|
24971
25148
|
const button = this.getElm('button');
|
|
24972
25149
|
(0,jodit_core_helpers_utils_assert__WEBPACK_IMPORTED_MODULE_16__.assert)(button, 'Element button should exists');
|
|
24973
25150
|
this.button = button;
|
|
@@ -25016,6 +25193,9 @@ class ToolbarButton extends jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_19__.U
|
|
|
25016
25193
|
(0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
|
|
25017
25194
|
jodit_core_decorators_autobind_autobind__WEBPACK_IMPORTED_MODULE_4__.autobind
|
|
25018
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);
|
|
25019
25199
|
(0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
|
|
25020
25200
|
jodit_core_decorators_autobind_autobind__WEBPACK_IMPORTED_MODULE_4__.autobind
|
|
25021
25201
|
], ToolbarButton.prototype, "onOutsideClick", null);
|
|
@@ -32045,14 +32225,16 @@ jodit_core_global__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('focus', focus);
|
|
|
32045
32225
|
|
|
32046
32226
|
"use strict";
|
|
32047
32227
|
/* harmony import */ var jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(27795);
|
|
32048
|
-
/* harmony import */ var
|
|
32049
|
-
/* harmony import */ var
|
|
32050
|
-
/* harmony import */ var
|
|
32051
|
-
/* harmony import */ var
|
|
32052
|
-
/* harmony import */ var
|
|
32053
|
-
/* harmony import */ var
|
|
32054
|
-
/* harmony import */ var
|
|
32055
|
-
/* 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);
|
|
32056
32238
|
/*!
|
|
32057
32239
|
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
32058
32240
|
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
@@ -32066,11 +32248,18 @@ jodit_core_global__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('focus', focus);
|
|
|
32066
32248
|
|
|
32067
32249
|
|
|
32068
32250
|
|
|
32251
|
+
|
|
32252
|
+
|
|
32069
32253
|
/**
|
|
32070
32254
|
* Default font-size points
|
|
32071
|
-
*/
|
|
32072
|
-
|
|
32073
|
-
|
|
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 = {
|
|
32074
32263
|
command: 'fontsize',
|
|
32075
32264
|
data: {
|
|
32076
32265
|
cssRule: 'font-size',
|
|
@@ -32115,7 +32304,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.fontsize = {
|
|
|
32115
32304
|
}
|
|
32116
32305
|
const control = button.control;
|
|
32117
32306
|
const cssKey = control.data?.cssRule || 'font-size';
|
|
32118
|
-
const value = (0,
|
|
32307
|
+
const value = (0,jodit_core_helpers_utils_css__WEBPACK_IMPORTED_MODULE_3__.css)(box, cssKey);
|
|
32119
32308
|
if (cssKey === 'font-size') {
|
|
32120
32309
|
const numValue = parseFloat(value.toString());
|
|
32121
32310
|
if (editor.o.defaultFontSizePoints === 'pt') {
|
|
@@ -32145,12 +32334,13 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.fontsize = {
|
|
|
32145
32334
|
return keySet.has(normalize(value.toString()));
|
|
32146
32335
|
}
|
|
32147
32336
|
};
|
|
32148
|
-
|
|
32149
|
-
|
|
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,
|
|
32150
32340
|
command: 'fontname',
|
|
32151
32341
|
textTemplate: (j, value)=>{
|
|
32152
32342
|
const [first] = value.split(',');
|
|
32153
|
-
return (0,
|
|
32343
|
+
return (0,jodit_core_helpers_string_trim__WEBPACK_IMPORTED_MODULE_2__.trimChars)(first, '"\'');
|
|
32154
32344
|
},
|
|
32155
32345
|
list: {
|
|
32156
32346
|
'': 'Default',
|
|
@@ -32172,6 +32362,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = {
|
|
|
32172
32362
|
} catch {}
|
|
32173
32363
|
return `<span data-style="${key}" style="${isAvailable ? `font-family: ${key}!important;` : ''}">${value}</span>`;
|
|
32174
32364
|
},
|
|
32365
|
+
popup: (editor, current, close, button)=>editor.o.font.googleFonts.url ? new _font_picker__WEBPACK_IMPORTED_MODULE_8__.UIFontPicker(editor, button, close) : false,
|
|
32175
32366
|
data: {
|
|
32176
32367
|
cssRule: 'font-family',
|
|
32177
32368
|
normalize: (v)=>{
|
|
@@ -32180,19 +32371,19 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = {
|
|
|
32180
32371
|
},
|
|
32181
32372
|
// When no font is explicitly set, the computed font-family equals the
|
|
32182
32373
|
// editor's own default (e.g. `-apple-system, …`). Return '' so the
|
|
32183
|
-
// button shows the `Default`
|
|
32184
|
-
// See #1370
|
|
32185
|
-
value: (editor)=>{
|
|
32186
|
-
const current = editor.s.current();
|
|
32187
|
-
|
|
32188
|
-
|
|
32189
|
-
|
|
32190
|
-
|
|
32191
|
-
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)) {
|
|
32192
32383
|
return;
|
|
32193
32384
|
}
|
|
32194
|
-
const value = (0,
|
|
32195
|
-
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 ?? {}))) {
|
|
32196
32387
|
return '';
|
|
32197
32388
|
}
|
|
32198
32389
|
return value;
|
|
@@ -32201,6 +32392,254 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = {
|
|
|
32201
32392
|
};
|
|
32202
32393
|
|
|
32203
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
|
+
|
|
32204
32643
|
/***/ }),
|
|
32205
32644
|
|
|
32206
32645
|
/***/ 50294:
|
|
@@ -32211,6 +32650,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = {
|
|
|
32211
32650
|
/* harmony import */ var jodit_core_global__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(28077);
|
|
32212
32651
|
/* harmony import */ var jodit_core_helpers___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65946);
|
|
32213
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);
|
|
32214
32654
|
/*!
|
|
32215
32655
|
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
32216
32656
|
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
@@ -32222,6 +32662,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = {
|
|
|
32222
32662
|
*/
|
|
32223
32663
|
|
|
32224
32664
|
|
|
32665
|
+
|
|
32225
32666
|
/**
|
|
32226
32667
|
* Process commands `fontsize` and `fontname`
|
|
32227
32668
|
*/ function font(editor) {
|
|
@@ -32232,6 +32673,18 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = {
|
|
|
32232
32673
|
name: 'fontsize',
|
|
32233
32674
|
group: 'font'
|
|
32234
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
|
+
});
|
|
32235
32688
|
const callback = (command, second, third)=>{
|
|
32236
32689
|
switch(command){
|
|
32237
32690
|
case 'fontsize':
|
|
@@ -32261,6 +32714,160 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = {
|
|
|
32261
32714
|
jodit_core_global__WEBPACK_IMPORTED_MODULE_0__.pluginSystem.add('font', font);
|
|
32262
32715
|
|
|
32263
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
|
+
|
|
32264
32871
|
/***/ }),
|
|
32265
32872
|
|
|
32266
32873
|
/***/ 96863:
|
|
@@ -33513,12 +34120,13 @@ jodit_core_global__WEBPACK_IMPORTED_MODULE_4__.pluginSystem.add('imageProperties
|
|
|
33513
34120
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
33514
34121
|
/* harmony export */ readValuesFromImage: function() { return /* binding */ readValuesFromImage; }
|
|
33515
34122
|
/* harmony export */ });
|
|
33516
|
-
/* harmony import */ var
|
|
33517
|
-
/* harmony import */ var
|
|
33518
|
-
/* harmony import */ var
|
|
33519
|
-
/* harmony import */ var
|
|
33520
|
-
/* harmony import */ var
|
|
33521
|
-
/* 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);
|
|
33522
34130
|
/*!
|
|
33523
34131
|
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
33524
34132
|
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
@@ -33531,32 +34139,33 @@ jodit_core_global__WEBPACK_IMPORTED_MODULE_4__.pluginSystem.add('imageProperties
|
|
|
33531
34139
|
|
|
33532
34140
|
|
|
33533
34141
|
|
|
34142
|
+
|
|
33534
34143
|
/**
|
|
33535
34144
|
* Read values from image and set it to state
|
|
33536
34145
|
* @private
|
|
33537
34146
|
*/ async function readValuesFromImage(j, state) {
|
|
33538
34147
|
const { sourceImage: image, values } = state;
|
|
33539
|
-
(0,
|
|
34148
|
+
(0,_align__WEBPACK_IMPORTED_MODULE_3__.readAlign)(image, values, (0,jodit_core_helpers_utils_align__WEBPACK_IMPORTED_MODULE_0__.getAlignClasses)(j, image));
|
|
33540
34149
|
// Border radius
|
|
33541
|
-
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;
|
|
33542
34151
|
// Id
|
|
33543
|
-
values.id = (0,
|
|
34152
|
+
values.id = (0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_1__.attr)(image, 'id') || '';
|
|
33544
34153
|
// Title
|
|
33545
|
-
values.imageTitle = (0,
|
|
34154
|
+
values.imageTitle = (0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_1__.attr)(image, 'title') || '';
|
|
33546
34155
|
// Alt
|
|
33547
|
-
values.imageAlt = (0,
|
|
34156
|
+
values.imageAlt = (0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_1__.attr)(image, 'alt') || '';
|
|
33548
34157
|
// Style
|
|
33549
|
-
values.style = (0,
|
|
34158
|
+
values.style = (0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_1__.attr)(image, 'style') || '';
|
|
33550
34159
|
// Classes
|
|
33551
|
-
values.classes = ((0,
|
|
34160
|
+
values.classes = ((0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_1__.attr)(image, 'class') || '').replace(/jodit_focused_image[\s]*/, '');
|
|
33552
34161
|
// Margins
|
|
33553
|
-
(0,
|
|
34162
|
+
(0,_margin__WEBPACK_IMPORTED_MODULE_5__.readMargins)(image, values, state);
|
|
33554
34163
|
// Link
|
|
33555
|
-
(0,
|
|
34164
|
+
(0,_link__WEBPACK_IMPORTED_MODULE_4__.readLink)(state, j, values);
|
|
33556
34165
|
// Src
|
|
33557
|
-
values.imageSrc = (0,
|
|
34166
|
+
values.imageSrc = (0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_1__.attr)(image, 'src') || '';
|
|
33558
34167
|
// Image size
|
|
33559
|
-
return (0,
|
|
34168
|
+
return (0,_size__WEBPACK_IMPORTED_MODULE_6__.readSizes)(image, values, state);
|
|
33560
34169
|
}
|
|
33561
34170
|
|
|
33562
34171
|
|
|
@@ -34577,7 +35186,7 @@ UIImagePositionTab = (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__
|
|
|
34577
35186
|
(0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_1__.attr)(image, 'id', id || null);
|
|
34578
35187
|
}
|
|
34579
35188
|
if (opt.image.editAlign) {
|
|
34580
|
-
(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));
|
|
34581
35190
|
}
|
|
34582
35191
|
}
|
|
34583
35192
|
|
|
@@ -35407,6 +36016,7 @@ const cmd = (control)=>control.args && (0,jodit_core_helpers_checker__WEBPACK_IM
|
|
|
35407
36016
|
/* harmony import */ var jodit_core_helpers_checker_is_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(85932);
|
|
35408
36017
|
/* harmony import */ var jodit_core_helpers_utils_align__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(16849);
|
|
35409
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);
|
|
35410
36020
|
/*!
|
|
35411
36021
|
* Jodit Editor (https://xdsoft.net/jodit/)
|
|
35412
36022
|
* Released under MIT see LICENSE.txt in the project root for license information.
|
|
@@ -35417,9 +36027,7 @@ const cmd = (control)=>control.args && (0,jodit_core_helpers_checker__WEBPACK_IM
|
|
|
35417
36027
|
|
|
35418
36028
|
|
|
35419
36029
|
|
|
35420
|
-
|
|
35421
|
-
// keep inline styles
|
|
35422
|
-
const alignClasses = (editor, elm)=>jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(elm, 'img') ? editor.o.imageAlignClasses : null;
|
|
36030
|
+
|
|
35423
36031
|
// A Normal image sits where the text of its line is aligned (#1531)
|
|
35424
36032
|
const lineAlign = (editor, elm)=>{
|
|
35425
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;
|
|
@@ -35440,7 +36048,7 @@ const lineAlign = (editor, elm)=>{
|
|
|
35440
36048
|
return 'left';
|
|
35441
36049
|
}
|
|
35442
36050
|
};
|
|
35443
|
-
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';
|
|
35444
36052
|
const align = {
|
|
35445
36053
|
name: 'left',
|
|
35446
36054
|
childTemplate: (_, __, value)=>value,
|
|
@@ -35460,23 +36068,25 @@ const align = {
|
|
|
35460
36068
|
return (0,jodit_core_helpers_checker_is_string__WEBPACK_IMPORTED_MODULE_1__.isString)(value) && currentAlign(editor, button.target) === value.toLowerCase();
|
|
35461
36069
|
},
|
|
35462
36070
|
exec: (editor, elm, { control })=>{
|
|
35463
|
-
|
|
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([
|
|
35464
36073
|
'img',
|
|
35465
36074
|
'jodit',
|
|
35466
36075
|
'jodit-media'
|
|
35467
|
-
]))) {
|
|
36076
|
+
])) && (0,jodit_core_helpers_utils_media_wrapper__WEBPACK_IMPORTED_MODULE_4__.getMediaWrapper)(editor, elm) !== elm) {
|
|
35468
36077
|
return;
|
|
35469
36078
|
}
|
|
35470
36079
|
const command = control.args && (0,jodit_core_helpers_checker_is_string__WEBPACK_IMPORTED_MODULE_1__.isString)(control.args[0]) ? control.args[0].toLowerCase() : '';
|
|
35471
36080
|
if (!command) {
|
|
35472
36081
|
return false;
|
|
35473
36082
|
}
|
|
35474
|
-
;(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));
|
|
35475
36084
|
if (jodit_core_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(elm, new Set([
|
|
35476
36085
|
'jodit',
|
|
35477
36086
|
'jodit-media'
|
|
35478
36087
|
])) && elm.firstElementChild) {
|
|
35479
|
-
|
|
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));
|
|
35480
36090
|
}
|
|
35481
36091
|
editor.synchronizeValues();
|
|
35482
36092
|
editor.e.fire('recalcPositionPopup');
|
|
@@ -35628,9 +36238,11 @@ const align = {
|
|
|
35628
36238
|
return (0,jodit_modules_toolbar_factory__WEBPACK_IMPORTED_MODULE_9__.makeCollection)(this.jodit, this.popup);
|
|
35629
36239
|
}
|
|
35630
36240
|
onClick(node) {
|
|
35631
|
-
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);
|
|
35632
|
-
|
|
35633
|
-
|
|
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);
|
|
35634
36246
|
return false;
|
|
35635
36247
|
}
|
|
35636
36248
|
}
|
|
@@ -35813,7 +36425,11 @@ const align = {
|
|
|
35813
36425
|
this.removeListenersForElements();
|
|
35814
36426
|
}
|
|
35815
36427
|
_eventsList() {
|
|
35816
|
-
|
|
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
|
+
];
|
|
35817
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(' ');
|
|
35818
36434
|
}
|
|
35819
36435
|
addListenersForElements() {
|
|
@@ -36985,6 +37601,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.mediaBlocks = [
|
|
|
36985
37601
|
'video',
|
|
36986
37602
|
'audio'
|
|
36987
37603
|
];
|
|
37604
|
+
jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.mediaWrappers = {};
|
|
36988
37605
|
|
|
36989
37606
|
|
|
36990
37607
|
/***/ }),
|
|
@@ -37018,11 +37635,13 @@ jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.mediaBlocks = [
|
|
|
37018
37635
|
* Process `video` and `audio`
|
|
37019
37636
|
*/ function media(editor) {
|
|
37020
37637
|
const keyFake = 'jodit_fake_wrapper';
|
|
37021
|
-
const { mediaFakeTag, mediaBlocks, mediaInFakeBlock } = editor.options;
|
|
37638
|
+
const { mediaFakeTag, mediaBlocks, mediaInFakeBlock, mediaWrappers } = editor.options;
|
|
37022
37639
|
const wrap = (element)=>{
|
|
37023
37640
|
if (element.parentNode && (0,jodit_core_helpers_utils__WEBPACK_IMPORTED_MODULE_3__.attr)(element.parentNode, 'data-jodit_iframe_wrapper')) {
|
|
37024
37641
|
element = element.parentNode;
|
|
37025
|
-
} 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) {
|
|
37026
37645
|
const wrapper = editor.createInside.element(mediaFakeTag, {
|
|
37027
37646
|
'data-jodit-temp': 1,
|
|
37028
37647
|
contenteditable: false,
|
|
@@ -37040,12 +37659,14 @@ jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.mediaBlocks = [
|
|
|
37040
37659
|
}
|
|
37041
37660
|
jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_1__.Dom.append(wrapper, element);
|
|
37042
37661
|
element = wrapper;
|
|
37662
|
+
} else {
|
|
37663
|
+
return;
|
|
37043
37664
|
}
|
|
37044
37665
|
editor.e.off(element, 'mousedown.select touchstart.select').on(element, 'mousedown.select touchstart.select', ()=>{
|
|
37045
37666
|
editor.s.setCursorAfter(element);
|
|
37046
37667
|
});
|
|
37047
37668
|
};
|
|
37048
|
-
if (mediaInFakeBlock) {
|
|
37669
|
+
if (mediaInFakeBlock || Object.keys(mediaWrappers).length) {
|
|
37049
37670
|
editor.e.on('afterGetValueFromEditor', (data)=>{
|
|
37050
37671
|
const rxp = new RegExp(`<${mediaFakeTag}[^>]+data-${keyFake}[^>]+>([^]+?)</${mediaFakeTag}>`, 'ig');
|
|
37051
37672
|
if (rxp.test(data.value)) {
|
|
@@ -43969,14 +44590,32 @@ jodit_core_global__WEBPACK_IMPORTED_MODULE_5__.pluginSystem.add('toolbarNavigati
|
|
|
43969
44590
|
|
|
43970
44591
|
|
|
43971
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
|
+
}
|
|
43972
44603
|
function insertVideos(data) {
|
|
43973
44604
|
data.files?.forEach((file)=>{
|
|
43974
|
-
this.s.insertNode(this.createInside.element('video', {
|
|
44605
|
+
this.s.insertNode(prepareMedia(this, this.createInside.element('video', {
|
|
43975
44606
|
controls: '',
|
|
43976
44607
|
src: data.baseurl + file
|
|
43977
|
-
}));
|
|
44608
|
+
})));
|
|
43978
44609
|
});
|
|
43979
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
|
+
}
|
|
43980
44619
|
jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.video = {
|
|
43981
44620
|
parseUrlToVideoEmbed: jodit_core_helpers__WEBPACK_IMPORTED_MODULE_0__.convertMediaUrlToVideoEmbed,
|
|
43982
44621
|
defaultWidth: 400,
|
|
@@ -44014,7 +44653,7 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.video = {
|
|
|
44014
44653
|
])
|
|
44015
44654
|
]), tabs = [], insertCode = (code)=>{
|
|
44016
44655
|
jodit.s.restore();
|
|
44017
|
-
jodit.s.insertHTML(code);
|
|
44656
|
+
jodit.s.insertHTML(prepareEmbedCode(jodit, code));
|
|
44018
44657
|
close();
|
|
44019
44658
|
};
|
|
44020
44659
|
jodit.s.save();
|