jodit 4.9.9 → 4.9.11

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.
Files changed (124) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/es2015/jodit.css +1 -1
  3. package/es2015/jodit.fat.min.js +5 -5
  4. package/es2015/jodit.js +217 -71
  5. package/es2015/jodit.min.js +5 -5
  6. package/es2015/plugins/debug/debug.css +1 -1
  7. package/es2015/plugins/debug/debug.js +1 -1
  8. package/es2015/plugins/debug/debug.min.js +1 -1
  9. package/es2015/plugins/speech-recognize/speech-recognize.css +1 -1
  10. package/es2015/plugins/speech-recognize/speech-recognize.js +1 -1
  11. package/es2015/plugins/speech-recognize/speech-recognize.min.js +1 -1
  12. package/es2018/jodit.fat.min.js +5 -5
  13. package/es2018/jodit.min.js +5 -5
  14. package/es2018/plugins/debug/debug.min.js +1 -1
  15. package/es2018/plugins/speech-recognize/speech-recognize.min.js +1 -1
  16. package/es2021/jodit.css +1 -1
  17. package/es2021/jodit.fat.min.js +5 -5
  18. package/es2021/jodit.js +217 -71
  19. package/es2021/jodit.min.js +5 -5
  20. package/es2021/plugins/debug/debug.css +1 -1
  21. package/es2021/plugins/debug/debug.js +1 -1
  22. package/es2021/plugins/debug/debug.min.js +1 -1
  23. package/es2021/plugins/speech-recognize/speech-recognize.css +1 -1
  24. package/es2021/plugins/speech-recognize/speech-recognize.js +1 -1
  25. package/es2021/plugins/speech-recognize/speech-recognize.min.js +1 -1
  26. package/es2021.en/jodit.css +1 -1
  27. package/es2021.en/jodit.fat.min.js +5 -5
  28. package/es2021.en/jodit.js +217 -71
  29. package/es2021.en/jodit.min.js +5 -5
  30. package/es2021.en/plugins/debug/debug.css +1 -1
  31. package/es2021.en/plugins/debug/debug.js +1 -1
  32. package/es2021.en/plugins/debug/debug.min.js +1 -1
  33. package/es2021.en/plugins/speech-recognize/speech-recognize.css +1 -1
  34. package/es2021.en/plugins/speech-recognize/speech-recognize.js +1 -1
  35. package/es2021.en/plugins/speech-recognize/speech-recognize.min.js +1 -1
  36. package/es5/jodit.css +2 -2
  37. package/es5/jodit.fat.min.js +2 -2
  38. package/es5/jodit.js +226 -71
  39. package/es5/jodit.min.css +2 -2
  40. package/es5/jodit.min.js +2 -2
  41. package/es5/plugins/debug/debug.css +1 -1
  42. package/es5/plugins/debug/debug.js +1 -1
  43. package/es5/plugins/debug/debug.min.js +1 -1
  44. package/es5/plugins/speech-recognize/speech-recognize.css +1 -1
  45. package/es5/plugins/speech-recognize/speech-recognize.js +1 -1
  46. package/es5/plugins/speech-recognize/speech-recognize.min.js +1 -1
  47. package/es5/polyfills.fat.min.js +1 -1
  48. package/es5/polyfills.js +1 -1
  49. package/es5/polyfills.min.js +1 -1
  50. package/esm/config.d.ts +268 -88
  51. package/esm/config.js +166 -51
  52. package/esm/core/constants.js +1 -1
  53. package/esm/core/decorators/autobind/autobind.d.ts +0 -5
  54. package/esm/core/decorators/autobind/autobind.js +1 -1
  55. package/esm/core/decorators/component/component.d.ts +1 -1
  56. package/esm/core/event-emitter/global.d.ts +8 -0
  57. package/esm/core/event-emitter/global.js +8 -0
  58. package/esm/core/storage/async-storage.d.ts +8 -0
  59. package/esm/core/storage/async-storage.js +5 -0
  60. package/esm/core/ui/element.d.ts +1 -0
  61. package/esm/core/ui/element.js +6 -0
  62. package/esm/core/ui/group/group.d.ts +1 -0
  63. package/esm/core/ui/group/group.js +3 -0
  64. package/esm/modules/file-browser/builders/utils.d.ts +8 -0
  65. package/esm/modules/file-browser/builders/utils.js +5 -0
  66. package/esm/modules/toolbar/button/button.d.ts +1 -0
  67. package/esm/modules/toolbar/button/button.js +3 -1
  68. package/esm/plugins/add-new-line/config.d.ts +4 -3
  69. package/esm/plugins/backspace/config.d.ts +3 -0
  70. package/esm/plugins/clean-html/config.d.ts +2 -3
  71. package/esm/plugins/fullsize/config.d.ts +2 -2
  72. package/esm/plugins/hotkeys/config.d.ts +0 -1
  73. package/esm/plugins/iframe/config.d.ts +2 -5
  74. package/esm/plugins/image-processor/config.d.ts +3 -0
  75. package/esm/plugins/image-properties/config.d.ts +4 -0
  76. package/esm/plugins/inline-popup/config/config.d.ts +16 -0
  77. package/esm/plugins/limit/config.d.ts +3 -3
  78. package/esm/plugins/placeholder/config.d.ts +3 -3
  79. package/esm/plugins/resize-cells/config.d.ts +3 -0
  80. package/esm/plugins/resize-handler/config.d.ts +6 -0
  81. package/esm/plugins/resizer/config.d.ts +1 -1
  82. package/esm/plugins/select/config.d.ts +0 -1
  83. package/esm/plugins/select-cells/config.d.ts +3 -0
  84. package/esm/plugins/size/config.js +1 -2
  85. package/esm/plugins/source/config.d.ts +6 -2
  86. package/esm/plugins/stat/config.d.ts +12 -0
  87. package/esm/plugins/sticky/config.d.ts +5 -2
  88. package/esm/plugins/symbols/config.d.ts +6 -0
  89. package/esm/plugins/table/config.d.ts +3 -0
  90. package/esm/plugins/xpath/config.d.ts +3 -0
  91. package/esm/types/ui.d.ts +1 -0
  92. package/package.json +1 -1
  93. package/types/config.d.ts +268 -88
  94. package/types/core/decorators/autobind/autobind.d.ts +0 -5
  95. package/types/core/decorators/component/component.d.ts +1 -1
  96. package/types/core/event-emitter/global.d.ts +8 -0
  97. package/types/core/storage/async-storage.d.ts +8 -0
  98. package/types/core/ui/element.d.ts +1 -0
  99. package/types/core/ui/group/group.d.ts +1 -0
  100. package/types/modules/file-browser/builders/utils.d.ts +8 -0
  101. package/types/modules/toolbar/button/button.d.ts +1 -0
  102. package/types/plugins/add-new-line/config.d.ts +4 -3
  103. package/types/plugins/backspace/config.d.ts +3 -0
  104. package/types/plugins/clean-html/config.d.ts +2 -3
  105. package/types/plugins/fullsize/config.d.ts +2 -2
  106. package/types/plugins/hotkeys/config.d.ts +0 -1
  107. package/types/plugins/iframe/config.d.ts +2 -5
  108. package/types/plugins/image-processor/config.d.ts +3 -0
  109. package/types/plugins/image-properties/config.d.ts +4 -0
  110. package/types/plugins/inline-popup/config/config.d.ts +16 -0
  111. package/types/plugins/limit/config.d.ts +3 -3
  112. package/types/plugins/placeholder/config.d.ts +3 -3
  113. package/types/plugins/resize-cells/config.d.ts +3 -0
  114. package/types/plugins/resize-handler/config.d.ts +6 -0
  115. package/types/plugins/resizer/config.d.ts +1 -1
  116. package/types/plugins/select/config.d.ts +0 -1
  117. package/types/plugins/select-cells/config.d.ts +3 -0
  118. package/types/plugins/source/config.d.ts +6 -2
  119. package/types/plugins/stat/config.d.ts +12 -0
  120. package/types/plugins/sticky/config.d.ts +5 -2
  121. package/types/plugins/symbols/config.d.ts +6 -0
  122. package/types/plugins/table/config.d.ts +3 -0
  123. package/types/plugins/xpath/config.d.ts +3 -0
  124. package/types/types/ui.d.ts +1 -0
@@ -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.9.9
4
+ * Version: v4.9.11
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
@@ -1917,7 +1917,96 @@ __webpack_require__.r(__webpack_exports__);
1917
1917
 
1918
1918
  let ConfigPrototype = {};
1919
1919
  /**
1920
- * Default Editor's Configuration
1920
+ * Default Editor's Configuration.
1921
+ *
1922
+ * This class holds all default option values for the Jodit editor.
1923
+ * It uses a **private constructor** and a **lazy singleton** pattern — the single instance
1924
+ * is created on the first access to {@link Config.defaultOptions} (also available as `Jodit.defaultOptions`).
1925
+ *
1926
+ * ## How options are resolved
1927
+ *
1928
+ * When you create an editor with `Jodit.make('#editor', userOptions)`, the library
1929
+ * calls {@link ConfigProto}(userOptions, Config.defaultOptions). `ConfigProto` does
1930
+ * **not** deep-clone the defaults. Instead it creates a new object whose JavaScript
1931
+ * prototype is `Config.defaultOptions`:
1932
+ *
1933
+ * ```
1934
+ * userOptions ──[[Prototype]]──► Config.defaultOptions
1935
+ * ```
1936
+ *
1937
+ * Any key present in `userOptions` shadows the default;
1938
+ * any key **not** present falls through to `Config.defaultOptions` via the prototype chain.
1939
+ * Nested plain objects are recursively prototyped in the same way, so partial overrides
1940
+ * of nested options work automatically:
1941
+ *
1942
+ * ```js
1943
+ * // Only override `dialogWidth`; all other `image.*` defaults are still available
1944
+ * Jodit.make('#editor', {
1945
+ * image: { dialogWidth: 500 }
1946
+ * });
1947
+ * ```
1948
+ *
1949
+ * ## How plugins extend the config
1950
+ *
1951
+ * Each plugin adds its own defaults by assigning to `Config.prototype` and augmenting
1952
+ * the TypeScript type with `declare module`:
1953
+ *
1954
+ * ```ts
1955
+ * // 1. Type augmentation (compile-time)
1956
+ * declare module 'jodit/config' {
1957
+ * interface Config {
1958
+ * toolbarSticky: boolean;
1959
+ * }
1960
+ * }
1961
+ *
1962
+ * // 2. Runtime default
1963
+ * Config.prototype.toolbarSticky = true;
1964
+ * ```
1965
+ *
1966
+ * Because the constructor runs `Object.assign(this, ConfigPrototype)` (where
1967
+ * `ConfigPrototype` is captured as `Config.prototype` after the class definition),
1968
+ * all prototype-level values — including those added by plugins — are materialized
1969
+ * as own properties on the singleton. This means `Config.defaultOptions` always
1970
+ * contains every registered option as an own, enumerable property.
1971
+ *
1972
+ * ## Changing global defaults
1973
+ *
1974
+ * You can modify `Jodit.defaultOptions` **before** creating editors to change
1975
+ * defaults globally:
1976
+ *
1977
+ * ```js
1978
+ * Jodit.defaultOptions.language = 'de';
1979
+ * Jodit.defaultOptions.theme = 'dark';
1980
+ *
1981
+ * // Both editors inherit the new defaults
1982
+ * Jodit.make('#editor1');
1983
+ * Jodit.make('#editor2');
1984
+ * ```
1985
+ *
1986
+ * ## `Jodit.atom` — preventing deep merge
1987
+ *
1988
+ * By default, `ConfigProto` deep-merges nested plain objects and arrays.
1989
+ * Wrap a value with `Jodit.atom(value)` to make it **atomic** — it will completely
1990
+ * replace the default instead of being merged:
1991
+ *
1992
+ * ```js
1993
+ * Jodit.make('#editor', {
1994
+ * controls: {
1995
+ * fontsize: {
1996
+ * // Replace the entire list rather than merging with the default one
1997
+ * list: Jodit.atom([8, 9, 10])
1998
+ * }
1999
+ * }
2000
+ * });
2001
+ * ```
2002
+ *
2003
+ * `Jodit.atom` calls {@link markAsAtomic}, which sets a non-enumerable
2004
+ * `isAtom` flag on the object. `ConfigProto` checks this flag and skips
2005
+ * recursive merging when it is present. Note: top-level arrays (depth 0)
2006
+ * are always treated as atomic — they replace rather than merge.
2007
+ *
2008
+ * @see {@link ConfigProto} for the full merge algorithm
2009
+ * @see {@link markAsAtomic} / {@link isAtom} for the atom marker implementation
1921
2010
  */ class Config {
1922
2011
  static get defaultOptions() {
1923
2012
  if (!Config.__defaultOptions) {
@@ -1927,31 +2016,32 @@ let ConfigPrototype = {};
1927
2016
  }
1928
2017
  constructor(){
1929
2018
  /**
1930
- * Use cache for heavy methods
2019
+ * When enabled, the editor caches the results of expensive computations (e.g. toolbar rebuilds)
2020
+ * to improve performance. Disable for debugging or when options change frequently at runtime.
1931
2021
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "cache", true);
1932
2022
  /**
1933
2023
  * Timeout of all asynchronous methods
1934
2024
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "defaultTimeout", 100);
1935
- (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "namespace", '');
2025
+ /**
2026
+ * Prefix used for CSS class names and local-storage keys to avoid collisions
2027
+ * when multiple editor instances or applications share the same page.
2028
+ */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "namespace", '');
1936
2029
  /**
1937
2030
  * Editor loads completely without plugins. Useful when debugging your own plugin.
1938
2031
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "safeMode", false);
1939
2032
  /**
1940
2033
  * Editor's width
1941
2034
  *
1942
- * @example
1943
2035
  * ```javascript
1944
2036
  * Jodit.make('.editor', {
1945
2037
  * width: '100%',
1946
2038
  * })
1947
2039
  * ```
1948
- * @example
1949
2040
  * ```javascript
1950
2041
  * Jodit.make('.editor', {
1951
2042
  * width: 600, // equivalent for '600px'
1952
2043
  * })
1953
2044
  * ```
1954
- * @example
1955
2045
  * ```javascript
1956
2046
  * Jodit.make('.editor', {
1957
2047
  * width: 'auto', // autosize
@@ -1961,19 +2051,16 @@ let ConfigPrototype = {};
1961
2051
  /**
1962
2052
  * Editor's height
1963
2053
  *
1964
- * @example
1965
2054
  * ```javascript
1966
2055
  * Jodit.make('.editor', {
1967
2056
  * height: '100%',
1968
2057
  * })
1969
2058
  * ```
1970
- * @example
1971
2059
  * ```javascript
1972
2060
  * Jodit.make('.editor', {
1973
2061
  * height: 600, // equivalent for '600px'
1974
2062
  * })
1975
2063
  * ```
1976
- * @example
1977
2064
  * ```javascript
1978
2065
  * Jodit.make('.editor', {
1979
2066
  * height: 'auto', // default - autosize
@@ -2011,7 +2098,32 @@ let ConfigPrototype = {};
2011
2098
  * });
2012
2099
  * ```
2013
2100
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "preset", 'custom');
2014
- (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "presets", {
2101
+ /**
2102
+ * Dictionary of named configuration presets. Each key is a preset name and the value
2103
+ * is a partial options object that will be merged into the editor config when
2104
+ * {@link Config.preset} matches the key.
2105
+ *
2106
+ * ```javascript
2107
+ * // Use a built-in preset
2108
+ * Jodit.make('#editor', {
2109
+ * preset: 'inline'
2110
+ * });
2111
+ * ```
2112
+ *
2113
+ * ```javascript
2114
+ * // Define and use a custom preset
2115
+ * Jodit.defaultOptions.presets.myCompact = {
2116
+ * toolbarButtonSize: 'small',
2117
+ * showCharsCounter: false,
2118
+ * showWordsCounter: false,
2119
+ * showXPathInStatusbar: false
2120
+ * };
2121
+ *
2122
+ * Jodit.make('#editor', {
2123
+ * preset: 'myCompact'
2124
+ * });
2125
+ * ```
2126
+ */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "presets", {
2015
2127
  inline: {
2016
2128
  inline: true,
2017
2129
  toolbar: false,
@@ -2023,7 +2135,10 @@ let ConfigPrototype = {};
2023
2135
  showPlaceholder: false
2024
2136
  }
2025
2137
  });
2026
- (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "ownerDocument", jodit_core_constants__WEBPACK_IMPORTED_MODULE_1__.globalDocument);
2138
+ /**
2139
+ * The Document object the editor operates within. Defaults to the current `document`.
2140
+ * Override when the editor is created inside an iframe or a different browsing context.
2141
+ */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "ownerDocument", jodit_core_constants__WEBPACK_IMPORTED_MODULE_1__.globalDocument);
2027
2142
  /**
2028
2143
  * Allows you to specify the window in which the editor will be created. Default - window
2029
2144
  * This is necessary if you are creating the editor inside an iframe but the code is running in the parent window
@@ -2054,7 +2169,9 @@ let ConfigPrototype = {};
2054
2169
  * ```
2055
2170
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "shadowRoot", null);
2056
2171
  /**
2057
- * z-index For editor
2172
+ * Base CSS `z-index` for the editor UI (toolbar, popups, dialogs).
2173
+ * Set to a higher value when other page elements overlap the editor.
2174
+ * `0` means no explicit z-index is applied.
2058
2175
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "zIndex", 0);
2059
2176
  /**
2060
2177
  * Change the read-only state of the editor
@@ -2090,7 +2207,6 @@ let ConfigPrototype = {};
2090
2207
  /**
2091
2208
  * Size of icons in the toolbar (can be "small", "middle", "large")
2092
2209
  *
2093
- * @example
2094
2210
  * ```javascript
2095
2211
  * const editor = Jodit.make(".dark_editor", {
2096
2212
  * toolbarButtonSize: "small"
@@ -2101,11 +2217,13 @@ let ConfigPrototype = {};
2101
2217
  * Allow navigation in the toolbar of the editor by Tab key
2102
2218
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "allowTabNavigation", false);
2103
2219
  /**
2104
- * Inline editing mode
2220
+ * When enabled, the editor renders without its own container chrome (toolbar, borders, statusbar).
2221
+ * The editable area becomes the element itself. Typically combined with
2222
+ * `toolbarInline: true` so a floating toolbar appears on selection.
2105
2223
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "inline", false);
2106
2224
  /**
2107
2225
  * Theme (can be "dark")
2108
- * @example
2226
+ *
2109
2227
  * ```javascript
2110
2228
  * const editor = Jodit.make(".dark_editor", {
2111
2229
  * theme: "dark"
@@ -2118,10 +2236,9 @@ let ConfigPrototype = {};
2118
2236
  /**
2119
2237
  * Class name that can be appended to the editable area
2120
2238
  *
2121
- * @see [[Config.iframeCSSLinks]]
2122
- * @see [[Config.iframeStyle]]
2239
+ * @see {@link Config.iframeCSSLinks}
2240
+ * @see {@link Config.iframeStyle}
2123
2241
  *
2124
- * @example
2125
2242
  * ```javascript
2126
2243
  * Jodit.make('#editor', {
2127
2244
  * editorClassName: 'some_my_class'
@@ -2137,7 +2254,7 @@ let ConfigPrototype = {};
2137
2254
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "editorClassName", false);
2138
2255
  /**
2139
2256
  * Class name that can be appended to the main editor container
2140
- * @example
2257
+ *
2141
2258
  * ```javascript
2142
2259
  * const jodit = Jodit.make('#editor', {
2143
2260
  * className: 'some_my_class'
@@ -2157,7 +2274,7 @@ let ConfigPrototype = {};
2157
2274
  /**
2158
2275
  * The internal styles of the editable area. They are intended to change
2159
2276
  * not the appearance of the editor, but to change the appearance of the content.
2160
- * @example
2277
+ *
2161
2278
  * ```javascript
2162
2279
  * Jodit.make('#editor', {
2163
2280
  * style: {
@@ -2168,13 +2285,14 @@ let ConfigPrototype = {};
2168
2285
  * ```
2169
2286
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "style", false);
2170
2287
  /**
2288
+ * Inline CSS styles applied to the outer editor container element.
2289
+ * Use this to style the editor wrapper (borders, background, etc.) without affecting content.
2171
2290
  *
2172
- * @example
2173
2291
  * ```javascript
2174
2292
  * Jodit.make('#editor', {
2175
- * editorStyle: {
2176
- * font: '12px Arial',
2177
- * color: '#0c0c0c'
2293
+ * containerStyle: {
2294
+ * border: '1px solid #ccc',
2295
+ * background: '#f9f9f9'
2178
2296
  * }
2179
2297
  * });
2180
2298
  * ```
@@ -2183,7 +2301,6 @@ let ConfigPrototype = {};
2183
2301
  * Dictionary of variable values in css, a complete list can be found here
2184
2302
  * https://github.com/xdan/jodit/blob/main/src/styles/variables.less#L25
2185
2303
  *
2186
- * @example
2187
2304
  * ```js
2188
2305
  * const editor = Jodit.make('#editor', {
2189
2306
  * styleValues: {
@@ -2195,9 +2312,9 @@ let ConfigPrototype = {};
2195
2312
  * ```
2196
2313
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "styleValues", {});
2197
2314
  /**
2198
- * After all, changes in editors for textarea will call change trigger
2315
+ * When enabled, the editor dispatches a native `change` event on the original
2316
+ * `<textarea>` element whenever the content changes, so standard DOM listeners work.
2199
2317
  *
2200
- * @example
2201
2318
  * ```javascript
2202
2319
  * const editor = Jodit.make('#editor');
2203
2320
  * document.getElementById('editor').addEventListener('change', function () {
@@ -2211,7 +2328,6 @@ let ConfigPrototype = {};
2211
2328
  * the page element direction. 'ltr' – Indicates a Left-To-Right text direction (like in English).
2212
2329
  * 'rtl' – Indicates a Right-To-Left text direction (like in Arabic).
2213
2330
  *
2214
- * @example
2215
2331
  * ```javascript
2216
2332
  * Jodit.make('.editor', {
2217
2333
  * direction: 'rtl'
@@ -2223,7 +2339,6 @@ let ConfigPrototype = {};
2223
2339
  * (navigator.language && navigator.language.substr(0, 2)) ||
2224
2340
  * (navigator.browserLanguage && navigator.browserLanguage.substr(0, 2)) || 'en'
2225
2341
  *
2226
- * @example
2227
2342
  * ```html
2228
2343
  * <!-- include in you page lang file -->
2229
2344
  * <script src="jodit/lang/de.js"></script>
@@ -2237,7 +2352,6 @@ let ConfigPrototype = {};
2237
2352
  /**
2238
2353
  * if true all Lang.i18n(key) return `{key}`
2239
2354
  *
2240
- * @example
2241
2355
  * ```html
2242
2356
  * <script>
2243
2357
  * var editor = Jodit.make('.editor', {
@@ -2251,7 +2365,6 @@ let ConfigPrototype = {};
2251
2365
  /**
2252
2366
  * Collection of language pack data `{en: {'Type something': 'Type something', ...}}`
2253
2367
  *
2254
- * @example
2255
2368
  * ```javascript
2256
2369
  * const editor = Jodit.make('#editor', {
2257
2370
  * language: 'ru',
@@ -2283,11 +2396,11 @@ let ConfigPrototype = {};
2283
2396
  * Delay before show tooltip
2284
2397
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "showTooltipDelay", 200);
2285
2398
  /**
2286
- * Instead of create custop tooltip - use native title tooltips
2399
+ * Instead of creating a custom tooltip, use the browser's native title tooltips
2287
2400
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "useNativeTooltip", false);
2288
2401
  /**
2289
- * Default insert method
2290
- * @default insert_as_html
2402
+ * How pasted content is inserted into the editor by default.
2403
+ * Possible values: `insert_as_html`, `insert_as_text`, `insert_only_text`, `insert_clear_html`.
2291
2404
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "defaultActionOnPaste", jodit_core_constants__WEBPACK_IMPORTED_MODULE_1__.INSERT_AS_HTML);
2292
2405
  // TODO
2293
2406
  // autosave: false, // false or url
@@ -2300,7 +2413,6 @@ let ConfigPrototype = {};
2300
2413
  /**
2301
2414
  * When this option is enabled, the editor's content will be placed in an iframe and isolated from the rest of the page.
2302
2415
  *
2303
- * @example
2304
2416
  * ```javascript
2305
2417
  * Jodit.make('#editor', {
2306
2418
  * iframe: true,
@@ -2312,7 +2424,7 @@ let ConfigPrototype = {};
2312
2424
  /**
2313
2425
  * Allow editing the entire HTML document(html, head)
2314
2426
  * \> Works together with the iframe option.
2315
- * @example
2427
+ *
2316
2428
  * ```js
2317
2429
  * const editor = Jodit.make('#editor', {
2318
2430
  * iframe: true,
@@ -2331,7 +2443,7 @@ let ConfigPrototype = {};
2331
2443
  /**
2332
2444
  * Jodit.MODE_WYSIWYG The HTML editor allows you to write like MSWord,
2333
2445
  * Jodit.MODE_SOURCE syntax highlighting source editor
2334
- * @example
2446
+ *
2335
2447
  * ```javascript
2336
2448
  * var editor = Jodit.make('#editor', {
2337
2449
  * defaultMode: Jodit.MODE_SPLIT
@@ -2340,11 +2452,11 @@ let ConfigPrototype = {};
2340
2452
  * ```
2341
2453
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "defaultMode", jodit_core_constants__WEBPACK_IMPORTED_MODULE_1__.MODE_WYSIWYG);
2342
2454
  /**
2343
- * Use split mode
2455
+ * When enabled, the editor displays both the WYSIWYG view and the source-code view side by side.
2344
2456
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "useSplitMode", false);
2345
2457
  /**
2346
2458
  * The colors in HEX representation to select a color for the background and for the text in colorpicker
2347
- * @example
2459
+ *
2348
2460
  * ```javascript
2349
2461
  * Jodit.make('#editor', {
2350
2462
  * colors: ['#ff0000', '#00ff00', '#0000ff']
@@ -2440,7 +2552,7 @@ let ConfigPrototype = {};
2440
2552
  });
2441
2553
  /**
2442
2554
  * The default tab color picker
2443
- * @example
2555
+ *
2444
2556
  * ```javascript
2445
2557
  * Jodit.make('#editor2', {
2446
2558
  * colorPickerDefaultTab: 'color'
@@ -2448,11 +2560,11 @@ let ConfigPrototype = {};
2448
2560
  * ```
2449
2561
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "colorPickerDefaultTab", 'background');
2450
2562
  /**
2451
- * Image size defaults to a larger image
2563
+ * Default width (in pixels) applied to images inserted into the editor
2452
2564
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "imageDefaultWidth", 300);
2453
2565
  /**
2454
2566
  * Do not display these buttons that are on the list
2455
- * @example
2567
+ *
2456
2568
  * ```javascript
2457
2569
  * Jodit.make('#editor2', {
2458
2570
  * removeButtons: ['hr', 'source']
@@ -2461,7 +2573,7 @@ let ConfigPrototype = {};
2461
2573
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "removeButtons", []);
2462
2574
  /**
2463
2575
  * Do not init these plugins
2464
- * @example
2576
+ *
2465
2577
  * ```typescript
2466
2578
  * var editor = Jodit.make('.editor', {
2467
2579
  * disablePlugins: 'table,iframe'
@@ -2474,7 +2586,7 @@ let ConfigPrototype = {};
2474
2586
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "disablePlugins", []);
2475
2587
  /**
2476
2588
  * Init and download extra plugins
2477
- * @example
2589
+ *
2478
2590
  * ```typescript
2479
2591
  * var editor = Jodit.make('.editor', {
2480
2592
  * extraPlugins: ['emoji']
@@ -2486,14 +2598,13 @@ let ConfigPrototype = {};
2486
2598
  * Base path for download extra plugins
2487
2599
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "basePath", void 0);
2488
2600
  /**
2489
- * These buttons list will be added to the option. Buttons
2601
+ * Additional buttons appended to the {@link Config.buttons} list
2490
2602
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "extraButtons", []);
2491
2603
  /**
2492
2604
  * By default, you can only install an icon from the Jodit suite.
2493
2605
  * You can add your icon to the set using the `Jodit.modules.Icon.set (name, svg Code)` method.
2494
2606
  * But for a declarative declaration, you can use this option.
2495
2607
  *
2496
- * @example
2497
2608
  * ```js
2498
2609
  * Jodit.modules.Icon.set('someIcon', '<svg><path.../></svg>');
2499
2610
  * const editor = Jodit.make({
@@ -2502,8 +2613,9 @@ let ConfigPrototype = {};
2502
2613
  * icon: 'someIcon'
2503
2614
  * }]
2504
2615
  * });
2616
+ * ```
2505
2617
  *
2506
- * @example
2618
+ * ```js
2507
2619
  * const editor = Jodit.make({
2508
2620
  * extraIcons: {
2509
2621
  * someIcon: '<svg><path.../></svg>'
@@ -2514,7 +2626,7 @@ let ConfigPrototype = {};
2514
2626
  * }]
2515
2627
  * });
2516
2628
  * ```
2517
- * @example
2629
+ *
2518
2630
  * ```js
2519
2631
  * const editor = Jodit.make({
2520
2632
  * extraButtons: [{
@@ -2526,7 +2638,7 @@ let ConfigPrototype = {};
2526
2638
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "extraIcons", {});
2527
2639
  /**
2528
2640
  * Default attributes for created inside editor elements
2529
- * @example
2641
+ *
2530
2642
  * ```js
2531
2643
  * const editor2 = Jodit.make('#editor', {
2532
2644
  * createAttributes: {
@@ -2546,7 +2658,7 @@ let ConfigPrototype = {};
2546
2658
  * expect(ul.className).equals('ui-test');
2547
2659
  * ```
2548
2660
  * Or JSX in React
2549
- * @example
2661
+ *
2550
2662
  * ```jsx
2551
2663
  * import React, {useState, useRef} from 'react';
2552
2664
  * import JoditEditor from "jodit-react";
@@ -2578,7 +2690,7 @@ let ConfigPrototype = {};
2578
2690
  /**
2579
2691
  * The list of buttons that appear in the editor's toolbar on large places (≥ options.sizeLG).
2580
2692
  * Note - this is not the width of the device, the width of the editor
2581
- * @example
2693
+ *
2582
2694
  * ```javascript
2583
2695
  * Jodit.make('#editor', {
2584
2696
  * buttons: ['bold', 'italic', 'source'],
@@ -2586,7 +2698,7 @@ let ConfigPrototype = {};
2586
2698
  * buttonsXS: ['bold', 'fullsize'],
2587
2699
  * });
2588
2700
  * ```
2589
- * @example
2701
+ *
2590
2702
  * ```javascript
2591
2703
  * Jodit.make('#editor2', {
2592
2704
  * buttons: [{
@@ -2610,7 +2722,7 @@ let ConfigPrototype = {};
2610
2722
  * }]
2611
2723
  * });
2612
2724
  * ```
2613
- * @example
2725
+ *
2614
2726
  * ```javascript
2615
2727
  * Jodit.make('#editor2', {
2616
2728
  * buttons: Jodit.defaultOptions.buttons.concat([{
@@ -2706,7 +2818,8 @@ let ConfigPrototype = {};
2706
2818
  }
2707
2819
  ]);
2708
2820
  /**
2709
- * Behavior for buttons
2821
+ * Map of toolbar button names to their control definitions (icon, tooltip, exec handler, etc.).
2822
+ * Plugins extend this object with their own button definitions via `Config.prototype.controls`.
2710
2823
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "controls", void 0);
2711
2824
  /**
2712
2825
  * Some events are called when the editor is initialized, for example, the `afterInit` event.
@@ -2734,7 +2847,7 @@ let ConfigPrototype = {};
2734
2847
  * ```
2735
2848
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "events", {});
2736
2849
  /**
2737
- * Buttons in toolbat without SVG - only texts
2850
+ * Buttons in toolbar without SVG - only texts
2738
2851
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "textIcons", false);
2739
2852
  /**
2740
2853
  * Element for dialog container
@@ -3616,7 +3729,13 @@ jodit_core_global__WEBPACK_IMPORTED_MODULE_0__.pluginSystem.add('table', table);
3616
3729
  /* harmony import */ var _engines_local_storage_provider__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(59807);
3617
3730
  /* harmony import */ var _engines_memory_storage_provider__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(9505);
3618
3731
  /* harmony import */ var _storage__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(24475);
3619
-
3732
+ /*!
3733
+ * Jodit Editor (https://xdsoft.net/jodit/)
3734
+ * Released under MIT see LICENSE.txt in the project root for license information.
3735
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
3736
+ */ /**
3737
+ * @module storage
3738
+ */
3620
3739
 
3621
3740
 
3622
3741
 
@@ -9115,6 +9234,9 @@ class ToolbarButton extends jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_18__.U
9115
9234
  className() {
9116
9235
  return 'ToolbarButton';
9117
9236
  }
9237
+ getRole() {
9238
+ return 'listitem';
9239
+ }
9118
9240
  /**
9119
9241
  * Get parent toolbar
9120
9242
  */ get toolbar() {
@@ -9179,7 +9301,6 @@ class ToolbarButton extends jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_18__.U
9179
9301
  const cn = this.componentName;
9180
9302
  const container = this.j.c.span(cn);
9181
9303
  const button = super.createContainer();
9182
- (0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_16__.attr)(container, 'role', 'listitem');
9183
9304
  button.classList.remove(cn);
9184
9305
  button.classList.add(cn + '__button');
9185
9306
  Object.defineProperty(button, 'component', {
@@ -17066,7 +17187,13 @@ ToolbarCollection = (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__d
17066
17187
  /* harmony export */ eventEmitter: function() { return /* binding */ eventEmitter; }
17067
17188
  /* harmony export */ });
17068
17189
  /* harmony import */ var _event_emitter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(93747);
17069
-
17190
+ /*!
17191
+ * Jodit Editor (https://xdsoft.net/jodit/)
17192
+ * Released under MIT see LICENSE.txt in the project root for license information.
17193
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
17194
+ */ /**
17195
+ * @module event-emitter
17196
+ */
17070
17197
  const eventEmitter = new _event_emitter__WEBPACK_IMPORTED_MODULE_0__.EventEmitter();
17071
17198
 
17072
17199
 
@@ -19909,12 +20036,12 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.video = {
19909
20036
  * Jodit Editor (https://xdsoft.net/jodit/)
19910
20037
  * Released under MIT see LICENSE.txt in the project root for license information.
19911
20038
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
19912
- */
19913
- /**
20039
+ */ /**
19914
20040
  * [[include:core/decorators/autobind/README.md]]
19915
20041
  * @packageDocumentation
19916
20042
  * @module decorators/autobind
19917
- */ /**
20043
+ */
20044
+ /**
19918
20045
  * Decorator that automatically binds a method to its class instance.
19919
20046
  * This is useful when passing methods as callbacks to preserve the correct `this` context.
19920
20047
  *
@@ -25012,6 +25139,9 @@ class UIGroup extends jodit_core_ui_element__WEBPACK_IMPORTED_MODULE_6__.UIEleme
25012
25139
  className() {
25013
25140
  return 'UIGroup';
25014
25141
  }
25142
+ getRole() {
25143
+ return 'list';
25144
+ }
25015
25145
  /**
25016
25146
  * All group children
25017
25147
  */ get allChildren() {
@@ -26155,7 +26285,13 @@ __webpack_require__.r(__webpack_exports__);
26155
26285
  /* harmony export */ getItem: function() { return /* binding */ getItem; }
26156
26286
  /* harmony export */ });
26157
26287
  /* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23211);
26158
-
26288
+ /*!
26289
+ * Jodit Editor (https://xdsoft.net/jodit/)
26290
+ * Released under MIT see LICENSE.txt in the project root for license information.
26291
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
26292
+ */ /**
26293
+ * @module modules/file-browser
26294
+ */
26159
26295
  /**
26160
26296
  * @private
26161
26297
  */ const getItem = (node, root, tag = 'a')=>jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(node, (elm)=>jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(elm, tag), root);
@@ -32260,13 +32396,12 @@ jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.maxWidth = '100%';
32260
32396
  /**
32261
32397
  * Editor's min-height
32262
32398
  *
32263
- * @example
32264
32399
  * ```javascript
32265
32400
  * Jodit.make('.editor', {
32266
32401
  * minHeight: '30%' //min-height: 30%
32267
32402
  * })
32268
32403
  * ```
32269
- * @example
32404
+ *
32270
32405
  * ```javascript
32271
32406
  * Jodit.make('.editor', {
32272
32407
  * minHeight: 200 //min-height: 200px
@@ -33274,7 +33409,7 @@ __webpack_require__.r(__webpack_exports__);
33274
33409
  * ```
33275
33410
  * @packageDocumentation
33276
33411
  * @module constants
33277
- */ const APP_VERSION = "4.9.9";
33412
+ */ const APP_VERSION = "4.9.11";
33278
33413
  // prettier-ignore
33279
33414
  const ES = "es2021";
33280
33415
  const IS_ES_MODERN = true;
@@ -36474,6 +36609,10 @@ __webpack_require__.r(__webpack_exports__);
36474
36609
  * Jodit Editor (https://xdsoft.net/jodit/)
36475
36610
  * Released under MIT see LICENSE.txt in the project root for license information.
36476
36611
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
36612
+ */ /**
36613
+ * [[include:core/decorators/component/README.md]]
36614
+ * @packageDocumentation
36615
+ * @module decorators/component
36477
36616
  */
36478
36617
 
36479
36618
  const componentRegistry = new Map();
@@ -38535,9 +38674,10 @@ function elementsEqualAttributes(elm1, elm2) {
38535
38674
  /* harmony import */ var jodit_core_decorators_derive_derive__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24968);
38536
38675
  /* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(23211);
38537
38676
  /* harmony import */ var jodit_core_helpers_checker_is_string__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(85932);
38538
- /* harmony import */ var jodit_core_traits_elms__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(23183);
38539
- /* harmony import */ var jodit_core_traits_mods__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(81987);
38540
- /* harmony import */ var jodit_core_ui_icon__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(29434);
38677
+ /* harmony import */ var jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7909);
38678
+ /* harmony import */ var jodit_core_traits_elms__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(23183);
38679
+ /* harmony import */ var jodit_core_traits_mods__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(81987);
38680
+ /* harmony import */ var jodit_core_ui_icon__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(29434);
38541
38681
  /*!
38542
38682
  * Jodit Editor (https://xdsoft.net/jodit/)
38543
38683
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -38553,7 +38693,11 @@ function elementsEqualAttributes(elm1, elm2) {
38553
38693
 
38554
38694
 
38555
38695
 
38696
+
38556
38697
  class UIElement extends jodit_core_component__WEBPACK_IMPORTED_MODULE_2__.ViewComponent {
38698
+ getRole() {
38699
+ return '';
38700
+ }
38557
38701
  get parentElement() {
38558
38702
  return this.__parentElement;
38559
38703
  }
@@ -38641,7 +38785,7 @@ class UIElement extends jodit_core_component__WEBPACK_IMPORTED_MODULE_2__.ViewCo
38641
38785
  return result;
38642
38786
  }
38643
38787
  parseTemplate(result) {
38644
- return this.j.c.fromHTML(result.replace(/\*([^*]+?)\*/g, (_, name)=>jodit_core_ui_icon__WEBPACK_IMPORTED_MODULE_8__.Icon.get(name) || '').replace(/&_/g, this.componentName + '_').replace(/~([^~]+?)~/g, (_, s)=>this.i18n(s)));
38788
+ return this.j.c.fromHTML(result.replace(/\*([^*]+?)\*/g, (_, name)=>jodit_core_ui_icon__WEBPACK_IMPORTED_MODULE_9__.Icon.get(name) || '').replace(/&_/g, this.componentName + '_').replace(/~([^~]+?)~/g, (_, s)=>this.i18n(s)));
38645
38789
  }
38646
38790
  /** @override */ destruct() {
38647
38791
  jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.safeRemove(this.container);
@@ -38651,6 +38795,8 @@ class UIElement extends jodit_core_component__WEBPACK_IMPORTED_MODULE_2__.ViewCo
38651
38795
  /** @override */ constructor(jodit, options){
38652
38796
  super(jodit), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "container", void 0), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "name", ''), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "__parentElement", null), (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "mods", {});
38653
38797
  this.container = this.createContainer(options);
38798
+ const role = this.getRole();
38799
+ role && (0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_6__.attr)(this.container, 'role', role);
38654
38800
  Object.defineProperty(this.container, 'component', {
38655
38801
  value: this,
38656
38802
  configurable: true
@@ -38658,7 +38804,7 @@ class UIElement extends jodit_core_component__WEBPACK_IMPORTED_MODULE_2__.ViewCo
38658
38804
  }
38659
38805
  }
38660
38806
  UIElement = (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
38661
- (0,jodit_core_decorators_derive_derive__WEBPACK_IMPORTED_MODULE_3__.derive)(jodit_core_traits_mods__WEBPACK_IMPORTED_MODULE_7__.Mods, jodit_core_traits_elms__WEBPACK_IMPORTED_MODULE_6__.Elms)
38807
+ (0,jodit_core_decorators_derive_derive__WEBPACK_IMPORTED_MODULE_3__.derive)(jodit_core_traits_mods__WEBPACK_IMPORTED_MODULE_8__.Mods, jodit_core_traits_elms__WEBPACK_IMPORTED_MODULE_7__.Elms)
38662
38808
  ], UIElement);
38663
38809
 
38664
38810