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
package/es2015/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.9.9
4
+ * Version: v4.9.11
5
5
  * Url: https://xdsoft.net/jodit/
6
6
  * License(s): MIT
7
7
  */
@@ -2075,7 +2075,96 @@ __webpack_require__.r(__webpack_exports__);
2075
2075
 
2076
2076
  let ConfigPrototype = {};
2077
2077
  /**
2078
- * Default Editor's Configuration
2078
+ * Default Editor's Configuration.
2079
+ *
2080
+ * This class holds all default option values for the Jodit editor.
2081
+ * It uses a **private constructor** and a **lazy singleton** pattern — the single instance
2082
+ * is created on the first access to {@link Config.defaultOptions} (also available as `Jodit.defaultOptions`).
2083
+ *
2084
+ * ## How options are resolved
2085
+ *
2086
+ * When you create an editor with `Jodit.make('#editor', userOptions)`, the library
2087
+ * calls {@link ConfigProto}(userOptions, Config.defaultOptions). `ConfigProto` does
2088
+ * **not** deep-clone the defaults. Instead it creates a new object whose JavaScript
2089
+ * prototype is `Config.defaultOptions`:
2090
+ *
2091
+ * ```
2092
+ * userOptions ──[[Prototype]]──► Config.defaultOptions
2093
+ * ```
2094
+ *
2095
+ * Any key present in `userOptions` shadows the default;
2096
+ * any key **not** present falls through to `Config.defaultOptions` via the prototype chain.
2097
+ * Nested plain objects are recursively prototyped in the same way, so partial overrides
2098
+ * of nested options work automatically:
2099
+ *
2100
+ * ```js
2101
+ * // Only override `dialogWidth`; all other `image.*` defaults are still available
2102
+ * Jodit.make('#editor', {
2103
+ * image: { dialogWidth: 500 }
2104
+ * });
2105
+ * ```
2106
+ *
2107
+ * ## How plugins extend the config
2108
+ *
2109
+ * Each plugin adds its own defaults by assigning to `Config.prototype` and augmenting
2110
+ * the TypeScript type with `declare module`:
2111
+ *
2112
+ * ```ts
2113
+ * // 1. Type augmentation (compile-time)
2114
+ * declare module 'jodit/config' {
2115
+ * interface Config {
2116
+ * toolbarSticky: boolean;
2117
+ * }
2118
+ * }
2119
+ *
2120
+ * // 2. Runtime default
2121
+ * Config.prototype.toolbarSticky = true;
2122
+ * ```
2123
+ *
2124
+ * Because the constructor runs `Object.assign(this, ConfigPrototype)` (where
2125
+ * `ConfigPrototype` is captured as `Config.prototype` after the class definition),
2126
+ * all prototype-level values — including those added by plugins — are materialized
2127
+ * as own properties on the singleton. This means `Config.defaultOptions` always
2128
+ * contains every registered option as an own, enumerable property.
2129
+ *
2130
+ * ## Changing global defaults
2131
+ *
2132
+ * You can modify `Jodit.defaultOptions` **before** creating editors to change
2133
+ * defaults globally:
2134
+ *
2135
+ * ```js
2136
+ * Jodit.defaultOptions.language = 'de';
2137
+ * Jodit.defaultOptions.theme = 'dark';
2138
+ *
2139
+ * // Both editors inherit the new defaults
2140
+ * Jodit.make('#editor1');
2141
+ * Jodit.make('#editor2');
2142
+ * ```
2143
+ *
2144
+ * ## `Jodit.atom` — preventing deep merge
2145
+ *
2146
+ * By default, `ConfigProto` deep-merges nested plain objects and arrays.
2147
+ * Wrap a value with `Jodit.atom(value)` to make it **atomic** — it will completely
2148
+ * replace the default instead of being merged:
2149
+ *
2150
+ * ```js
2151
+ * Jodit.make('#editor', {
2152
+ * controls: {
2153
+ * fontsize: {
2154
+ * // Replace the entire list rather than merging with the default one
2155
+ * list: Jodit.atom([8, 9, 10])
2156
+ * }
2157
+ * }
2158
+ * });
2159
+ * ```
2160
+ *
2161
+ * `Jodit.atom` calls {@link markAsAtomic}, which sets a non-enumerable
2162
+ * `isAtom` flag on the object. `ConfigProto` checks this flag and skips
2163
+ * recursive merging when it is present. Note: top-level arrays (depth 0)
2164
+ * are always treated as atomic — they replace rather than merge.
2165
+ *
2166
+ * @see {@link ConfigProto} for the full merge algorithm
2167
+ * @see {@link markAsAtomic} / {@link isAtom} for the atom marker implementation
2079
2168
  */ class Config {
2080
2169
  static get defaultOptions() {
2081
2170
  if (!Config.__defaultOptions) {
@@ -2085,31 +2174,32 @@ let ConfigPrototype = {};
2085
2174
  }
2086
2175
  constructor(){
2087
2176
  /**
2088
- * Use cache for heavy methods
2177
+ * When enabled, the editor caches the results of expensive computations (e.g. toolbar rebuilds)
2178
+ * to improve performance. Disable for debugging or when options change frequently at runtime.
2089
2179
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "cache", true);
2090
2180
  /**
2091
2181
  * Timeout of all asynchronous methods
2092
2182
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "defaultTimeout", 100);
2093
- (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "namespace", '');
2183
+ /**
2184
+ * Prefix used for CSS class names and local-storage keys to avoid collisions
2185
+ * when multiple editor instances or applications share the same page.
2186
+ */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "namespace", '');
2094
2187
  /**
2095
2188
  * Editor loads completely without plugins. Useful when debugging your own plugin.
2096
2189
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "safeMode", false);
2097
2190
  /**
2098
2191
  * Editor's width
2099
2192
  *
2100
- * @example
2101
2193
  * ```javascript
2102
2194
  * Jodit.make('.editor', {
2103
2195
  * width: '100%',
2104
2196
  * })
2105
2197
  * ```
2106
- * @example
2107
2198
  * ```javascript
2108
2199
  * Jodit.make('.editor', {
2109
2200
  * width: 600, // equivalent for '600px'
2110
2201
  * })
2111
2202
  * ```
2112
- * @example
2113
2203
  * ```javascript
2114
2204
  * Jodit.make('.editor', {
2115
2205
  * width: 'auto', // autosize
@@ -2119,19 +2209,16 @@ let ConfigPrototype = {};
2119
2209
  /**
2120
2210
  * Editor's height
2121
2211
  *
2122
- * @example
2123
2212
  * ```javascript
2124
2213
  * Jodit.make('.editor', {
2125
2214
  * height: '100%',
2126
2215
  * })
2127
2216
  * ```
2128
- * @example
2129
2217
  * ```javascript
2130
2218
  * Jodit.make('.editor', {
2131
2219
  * height: 600, // equivalent for '600px'
2132
2220
  * })
2133
2221
  * ```
2134
- * @example
2135
2222
  * ```javascript
2136
2223
  * Jodit.make('.editor', {
2137
2224
  * height: 'auto', // default - autosize
@@ -2169,7 +2256,32 @@ let ConfigPrototype = {};
2169
2256
  * });
2170
2257
  * ```
2171
2258
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "preset", 'custom');
2172
- (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "presets", {
2259
+ /**
2260
+ * Dictionary of named configuration presets. Each key is a preset name and the value
2261
+ * is a partial options object that will be merged into the editor config when
2262
+ * {@link Config.preset} matches the key.
2263
+ *
2264
+ * ```javascript
2265
+ * // Use a built-in preset
2266
+ * Jodit.make('#editor', {
2267
+ * preset: 'inline'
2268
+ * });
2269
+ * ```
2270
+ *
2271
+ * ```javascript
2272
+ * // Define and use a custom preset
2273
+ * Jodit.defaultOptions.presets.myCompact = {
2274
+ * toolbarButtonSize: 'small',
2275
+ * showCharsCounter: false,
2276
+ * showWordsCounter: false,
2277
+ * showXPathInStatusbar: false
2278
+ * };
2279
+ *
2280
+ * Jodit.make('#editor', {
2281
+ * preset: 'myCompact'
2282
+ * });
2283
+ * ```
2284
+ */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "presets", {
2173
2285
  inline: {
2174
2286
  inline: true,
2175
2287
  toolbar: false,
@@ -2181,7 +2293,10 @@ let ConfigPrototype = {};
2181
2293
  showPlaceholder: false
2182
2294
  }
2183
2295
  });
2184
- (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "ownerDocument", jodit_core_constants__WEBPACK_IMPORTED_MODULE_1__.globalDocument);
2296
+ /**
2297
+ * The Document object the editor operates within. Defaults to the current `document`.
2298
+ * Override when the editor is created inside an iframe or a different browsing context.
2299
+ */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "ownerDocument", jodit_core_constants__WEBPACK_IMPORTED_MODULE_1__.globalDocument);
2185
2300
  /**
2186
2301
  * Allows you to specify the window in which the editor will be created. Default - window
2187
2302
  * This is necessary if you are creating the editor inside an iframe but the code is running in the parent window
@@ -2212,7 +2327,9 @@ let ConfigPrototype = {};
2212
2327
  * ```
2213
2328
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "shadowRoot", null);
2214
2329
  /**
2215
- * z-index For editor
2330
+ * Base CSS `z-index` for the editor UI (toolbar, popups, dialogs).
2331
+ * Set to a higher value when other page elements overlap the editor.
2332
+ * `0` means no explicit z-index is applied.
2216
2333
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "zIndex", 0);
2217
2334
  /**
2218
2335
  * Change the read-only state of the editor
@@ -2248,7 +2365,6 @@ let ConfigPrototype = {};
2248
2365
  /**
2249
2366
  * Size of icons in the toolbar (can be "small", "middle", "large")
2250
2367
  *
2251
- * @example
2252
2368
  * ```javascript
2253
2369
  * const editor = Jodit.make(".dark_editor", {
2254
2370
  * toolbarButtonSize: "small"
@@ -2259,11 +2375,13 @@ let ConfigPrototype = {};
2259
2375
  * Allow navigation in the toolbar of the editor by Tab key
2260
2376
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "allowTabNavigation", false);
2261
2377
  /**
2262
- * Inline editing mode
2378
+ * When enabled, the editor renders without its own container chrome (toolbar, borders, statusbar).
2379
+ * The editable area becomes the element itself. Typically combined with
2380
+ * `toolbarInline: true` so a floating toolbar appears on selection.
2263
2381
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "inline", false);
2264
2382
  /**
2265
2383
  * Theme (can be "dark")
2266
- * @example
2384
+ *
2267
2385
  * ```javascript
2268
2386
  * const editor = Jodit.make(".dark_editor", {
2269
2387
  * theme: "dark"
@@ -2276,10 +2394,9 @@ let ConfigPrototype = {};
2276
2394
  /**
2277
2395
  * Class name that can be appended to the editable area
2278
2396
  *
2279
- * @see [[Config.iframeCSSLinks]]
2280
- * @see [[Config.iframeStyle]]
2397
+ * @see {@link Config.iframeCSSLinks}
2398
+ * @see {@link Config.iframeStyle}
2281
2399
  *
2282
- * @example
2283
2400
  * ```javascript
2284
2401
  * Jodit.make('#editor', {
2285
2402
  * editorClassName: 'some_my_class'
@@ -2295,7 +2412,7 @@ let ConfigPrototype = {};
2295
2412
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "editorClassName", false);
2296
2413
  /**
2297
2414
  * Class name that can be appended to the main editor container
2298
- * @example
2415
+ *
2299
2416
  * ```javascript
2300
2417
  * const jodit = Jodit.make('#editor', {
2301
2418
  * className: 'some_my_class'
@@ -2315,7 +2432,7 @@ let ConfigPrototype = {};
2315
2432
  /**
2316
2433
  * The internal styles of the editable area. They are intended to change
2317
2434
  * not the appearance of the editor, but to change the appearance of the content.
2318
- * @example
2435
+ *
2319
2436
  * ```javascript
2320
2437
  * Jodit.make('#editor', {
2321
2438
  * style: {
@@ -2326,13 +2443,14 @@ let ConfigPrototype = {};
2326
2443
  * ```
2327
2444
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "style", false);
2328
2445
  /**
2446
+ * Inline CSS styles applied to the outer editor container element.
2447
+ * Use this to style the editor wrapper (borders, background, etc.) without affecting content.
2329
2448
  *
2330
- * @example
2331
2449
  * ```javascript
2332
2450
  * Jodit.make('#editor', {
2333
- * editorStyle: {
2334
- * font: '12px Arial',
2335
- * color: '#0c0c0c'
2451
+ * containerStyle: {
2452
+ * border: '1px solid #ccc',
2453
+ * background: '#f9f9f9'
2336
2454
  * }
2337
2455
  * });
2338
2456
  * ```
@@ -2341,7 +2459,6 @@ let ConfigPrototype = {};
2341
2459
  * Dictionary of variable values in css, a complete list can be found here
2342
2460
  * https://github.com/xdan/jodit/blob/main/src/styles/variables.less#L25
2343
2461
  *
2344
- * @example
2345
2462
  * ```js
2346
2463
  * const editor = Jodit.make('#editor', {
2347
2464
  * styleValues: {
@@ -2353,9 +2470,9 @@ let ConfigPrototype = {};
2353
2470
  * ```
2354
2471
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "styleValues", {});
2355
2472
  /**
2356
- * After all, changes in editors for textarea will call change trigger
2473
+ * When enabled, the editor dispatches a native `change` event on the original
2474
+ * `<textarea>` element whenever the content changes, so standard DOM listeners work.
2357
2475
  *
2358
- * @example
2359
2476
  * ```javascript
2360
2477
  * const editor = Jodit.make('#editor');
2361
2478
  * document.getElementById('editor').addEventListener('change', function () {
@@ -2369,7 +2486,6 @@ let ConfigPrototype = {};
2369
2486
  * the page element direction. 'ltr' – Indicates a Left-To-Right text direction (like in English).
2370
2487
  * 'rtl' – Indicates a Right-To-Left text direction (like in Arabic).
2371
2488
  *
2372
- * @example
2373
2489
  * ```javascript
2374
2490
  * Jodit.make('.editor', {
2375
2491
  * direction: 'rtl'
@@ -2381,7 +2497,6 @@ let ConfigPrototype = {};
2381
2497
  * (navigator.language && navigator.language.substr(0, 2)) ||
2382
2498
  * (navigator.browserLanguage && navigator.browserLanguage.substr(0, 2)) || 'en'
2383
2499
  *
2384
- * @example
2385
2500
  * ```html
2386
2501
  * <!-- include in you page lang file -->
2387
2502
  * <script src="jodit/lang/de.js"></script>
@@ -2395,7 +2510,6 @@ let ConfigPrototype = {};
2395
2510
  /**
2396
2511
  * if true all Lang.i18n(key) return `{key}`
2397
2512
  *
2398
- * @example
2399
2513
  * ```html
2400
2514
  * <script>
2401
2515
  * var editor = Jodit.make('.editor', {
@@ -2409,7 +2523,6 @@ let ConfigPrototype = {};
2409
2523
  /**
2410
2524
  * Collection of language pack data `{en: {'Type something': 'Type something', ...}}`
2411
2525
  *
2412
- * @example
2413
2526
  * ```javascript
2414
2527
  * const editor = Jodit.make('#editor', {
2415
2528
  * language: 'ru',
@@ -2441,11 +2554,11 @@ let ConfigPrototype = {};
2441
2554
  * Delay before show tooltip
2442
2555
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "showTooltipDelay", 200);
2443
2556
  /**
2444
- * Instead of create custop tooltip - use native title tooltips
2557
+ * Instead of creating a custom tooltip, use the browser's native title tooltips
2445
2558
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "useNativeTooltip", false);
2446
2559
  /**
2447
- * Default insert method
2448
- * @default insert_as_html
2560
+ * How pasted content is inserted into the editor by default.
2561
+ * Possible values: `insert_as_html`, `insert_as_text`, `insert_only_text`, `insert_clear_html`.
2449
2562
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "defaultActionOnPaste", jodit_core_constants__WEBPACK_IMPORTED_MODULE_1__.INSERT_AS_HTML);
2450
2563
  // TODO
2451
2564
  // autosave: false, // false or url
@@ -2458,7 +2571,6 @@ let ConfigPrototype = {};
2458
2571
  /**
2459
2572
  * When this option is enabled, the editor's content will be placed in an iframe and isolated from the rest of the page.
2460
2573
  *
2461
- * @example
2462
2574
  * ```javascript
2463
2575
  * Jodit.make('#editor', {
2464
2576
  * iframe: true,
@@ -2470,7 +2582,7 @@ let ConfigPrototype = {};
2470
2582
  /**
2471
2583
  * Allow editing the entire HTML document(html, head)
2472
2584
  * \> Works together with the iframe option.
2473
- * @example
2585
+ *
2474
2586
  * ```js
2475
2587
  * const editor = Jodit.make('#editor', {
2476
2588
  * iframe: true,
@@ -2489,7 +2601,7 @@ let ConfigPrototype = {};
2489
2601
  /**
2490
2602
  * Jodit.MODE_WYSIWYG The HTML editor allows you to write like MSWord,
2491
2603
  * Jodit.MODE_SOURCE syntax highlighting source editor
2492
- * @example
2604
+ *
2493
2605
  * ```javascript
2494
2606
  * var editor = Jodit.make('#editor', {
2495
2607
  * defaultMode: Jodit.MODE_SPLIT
@@ -2498,11 +2610,11 @@ let ConfigPrototype = {};
2498
2610
  * ```
2499
2611
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "defaultMode", jodit_core_constants__WEBPACK_IMPORTED_MODULE_1__.MODE_WYSIWYG);
2500
2612
  /**
2501
- * Use split mode
2613
+ * When enabled, the editor displays both the WYSIWYG view and the source-code view side by side.
2502
2614
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "useSplitMode", false);
2503
2615
  /**
2504
2616
  * The colors in HEX representation to select a color for the background and for the text in colorpicker
2505
- * @example
2617
+ *
2506
2618
  * ```javascript
2507
2619
  * Jodit.make('#editor', {
2508
2620
  * colors: ['#ff0000', '#00ff00', '#0000ff']
@@ -2598,7 +2710,7 @@ let ConfigPrototype = {};
2598
2710
  });
2599
2711
  /**
2600
2712
  * The default tab color picker
2601
- * @example
2713
+ *
2602
2714
  * ```javascript
2603
2715
  * Jodit.make('#editor2', {
2604
2716
  * colorPickerDefaultTab: 'color'
@@ -2606,11 +2718,11 @@ let ConfigPrototype = {};
2606
2718
  * ```
2607
2719
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "colorPickerDefaultTab", 'background');
2608
2720
  /**
2609
- * Image size defaults to a larger image
2721
+ * Default width (in pixels) applied to images inserted into the editor
2610
2722
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "imageDefaultWidth", 300);
2611
2723
  /**
2612
2724
  * Do not display these buttons that are on the list
2613
- * @example
2725
+ *
2614
2726
  * ```javascript
2615
2727
  * Jodit.make('#editor2', {
2616
2728
  * removeButtons: ['hr', 'source']
@@ -2619,7 +2731,7 @@ let ConfigPrototype = {};
2619
2731
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "removeButtons", []);
2620
2732
  /**
2621
2733
  * Do not init these plugins
2622
- * @example
2734
+ *
2623
2735
  * ```typescript
2624
2736
  * var editor = Jodit.make('.editor', {
2625
2737
  * disablePlugins: 'table,iframe'
@@ -2632,7 +2744,7 @@ let ConfigPrototype = {};
2632
2744
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "disablePlugins", []);
2633
2745
  /**
2634
2746
  * Init and download extra plugins
2635
- * @example
2747
+ *
2636
2748
  * ```typescript
2637
2749
  * var editor = Jodit.make('.editor', {
2638
2750
  * extraPlugins: ['emoji']
@@ -2644,14 +2756,13 @@ let ConfigPrototype = {};
2644
2756
  * Base path for download extra plugins
2645
2757
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "basePath", void 0);
2646
2758
  /**
2647
- * These buttons list will be added to the option. Buttons
2759
+ * Additional buttons appended to the {@link Config.buttons} list
2648
2760
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "extraButtons", []);
2649
2761
  /**
2650
2762
  * By default, you can only install an icon from the Jodit suite.
2651
2763
  * You can add your icon to the set using the `Jodit.modules.Icon.set (name, svg Code)` method.
2652
2764
  * But for a declarative declaration, you can use this option.
2653
2765
  *
2654
- * @example
2655
2766
  * ```js
2656
2767
  * Jodit.modules.Icon.set('someIcon', '<svg><path.../></svg>');
2657
2768
  * const editor = Jodit.make({
@@ -2660,8 +2771,9 @@ let ConfigPrototype = {};
2660
2771
  * icon: 'someIcon'
2661
2772
  * }]
2662
2773
  * });
2774
+ * ```
2663
2775
  *
2664
- * @example
2776
+ * ```js
2665
2777
  * const editor = Jodit.make({
2666
2778
  * extraIcons: {
2667
2779
  * someIcon: '<svg><path.../></svg>'
@@ -2672,7 +2784,7 @@ let ConfigPrototype = {};
2672
2784
  * }]
2673
2785
  * });
2674
2786
  * ```
2675
- * @example
2787
+ *
2676
2788
  * ```js
2677
2789
  * const editor = Jodit.make({
2678
2790
  * extraButtons: [{
@@ -2684,7 +2796,7 @@ let ConfigPrototype = {};
2684
2796
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "extraIcons", {});
2685
2797
  /**
2686
2798
  * Default attributes for created inside editor elements
2687
- * @example
2799
+ *
2688
2800
  * ```js
2689
2801
  * const editor2 = Jodit.make('#editor', {
2690
2802
  * createAttributes: {
@@ -2704,7 +2816,7 @@ let ConfigPrototype = {};
2704
2816
  * expect(ul.className).equals('ui-test');
2705
2817
  * ```
2706
2818
  * Or JSX in React
2707
- * @example
2819
+ *
2708
2820
  * ```jsx
2709
2821
  * import React, {useState, useRef} from 'react';
2710
2822
  * import JoditEditor from "jodit-react";
@@ -2736,7 +2848,7 @@ let ConfigPrototype = {};
2736
2848
  /**
2737
2849
  * The list of buttons that appear in the editor's toolbar on large places (≥ options.sizeLG).
2738
2850
  * Note - this is not the width of the device, the width of the editor
2739
- * @example
2851
+ *
2740
2852
  * ```javascript
2741
2853
  * Jodit.make('#editor', {
2742
2854
  * buttons: ['bold', 'italic', 'source'],
@@ -2744,7 +2856,7 @@ let ConfigPrototype = {};
2744
2856
  * buttonsXS: ['bold', 'fullsize'],
2745
2857
  * });
2746
2858
  * ```
2747
- * @example
2859
+ *
2748
2860
  * ```javascript
2749
2861
  * Jodit.make('#editor2', {
2750
2862
  * buttons: [{
@@ -2768,7 +2880,7 @@ let ConfigPrototype = {};
2768
2880
  * }]
2769
2881
  * });
2770
2882
  * ```
2771
- * @example
2883
+ *
2772
2884
  * ```javascript
2773
2885
  * Jodit.make('#editor2', {
2774
2886
  * buttons: Jodit.defaultOptions.buttons.concat([{
@@ -2864,7 +2976,8 @@ let ConfigPrototype = {};
2864
2976
  }
2865
2977
  ]);
2866
2978
  /**
2867
- * Behavior for buttons
2979
+ * Map of toolbar button names to their control definitions (icon, tooltip, exec handler, etc.).
2980
+ * Plugins extend this object with their own button definitions via `Config.prototype.controls`.
2868
2981
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "controls", void 0);
2869
2982
  /**
2870
2983
  * Some events are called when the editor is initialized, for example, the `afterInit` event.
@@ -2892,7 +3005,7 @@ let ConfigPrototype = {};
2892
3005
  * ```
2893
3006
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "events", {});
2894
3007
  /**
2895
- * Buttons in toolbat without SVG - only texts
3008
+ * Buttons in toolbar without SVG - only texts
2896
3009
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "textIcons", false);
2897
3010
  /**
2898
3011
  * Element for dialog container
@@ -3783,7 +3896,13 @@ jodit_core_global__WEBPACK_IMPORTED_MODULE_0__.pluginSystem.add('table', table);
3783
3896
  /* harmony import */ var _engines_local_storage_provider__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(59807);
3784
3897
  /* harmony import */ var _engines_memory_storage_provider__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(9505);
3785
3898
  /* harmony import */ var _storage__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(24475);
3786
-
3899
+ /*!
3900
+ * Jodit Editor (https://xdsoft.net/jodit/)
3901
+ * Released under MIT see LICENSE.txt in the project root for license information.
3902
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
3903
+ */ /**
3904
+ * @module storage
3905
+ */
3787
3906
 
3788
3907
 
3789
3908
 
@@ -9583,6 +9702,9 @@ class ToolbarButton extends jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_20__.U
9583
9702
  className() {
9584
9703
  return 'ToolbarButton';
9585
9704
  }
9705
+ getRole() {
9706
+ return 'listitem';
9707
+ }
9586
9708
  /**
9587
9709
  * Get parent toolbar
9588
9710
  */ get toolbar() {
@@ -9650,7 +9772,6 @@ class ToolbarButton extends jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_20__.U
9650
9772
  const cn = this.componentName;
9651
9773
  const container = this.j.c.span(cn);
9652
9774
  const button = super.createContainer();
9653
- (0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_18__.attr)(container, 'role', 'listitem');
9654
9775
  button.classList.remove(cn);
9655
9776
  button.classList.add(cn + '__button');
9656
9777
  Object.defineProperty(button, 'component', {
@@ -18027,7 +18148,13 @@ ToolbarCollection = (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__d
18027
18148
  /* harmony export */ eventEmitter: function() { return /* binding */ eventEmitter; }
18028
18149
  /* harmony export */ });
18029
18150
  /* harmony import */ var _event_emitter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(93747);
18030
-
18151
+ /*!
18152
+ * Jodit Editor (https://xdsoft.net/jodit/)
18153
+ * Released under MIT see LICENSE.txt in the project root for license information.
18154
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
18155
+ */ /**
18156
+ * @module event-emitter
18157
+ */
18031
18158
  const eventEmitter = new _event_emitter__WEBPACK_IMPORTED_MODULE_0__.EventEmitter();
18032
18159
 
18033
18160
 
@@ -21012,12 +21139,12 @@ function _async_to_generator(fn) {
21012
21139
  * Jodit Editor (https://xdsoft.net/jodit/)
21013
21140
  * Released under MIT see LICENSE.txt in the project root for license information.
21014
21141
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
21015
- */
21016
- /**
21142
+ */ /**
21017
21143
  * [[include:core/decorators/autobind/README.md]]
21018
21144
  * @packageDocumentation
21019
21145
  * @module decorators/autobind
21020
- */ /**
21146
+ */
21147
+ /**
21021
21148
  * Decorator that automatically binds a method to its class instance.
21022
21149
  * This is useful when passing methods as callbacks to preserve the correct `this` context.
21023
21150
  *
@@ -26371,6 +26498,9 @@ class UIGroup extends jodit_core_ui_element__WEBPACK_IMPORTED_MODULE_6__.UIEleme
26371
26498
  className() {
26372
26499
  return 'UIGroup';
26373
26500
  }
26501
+ getRole() {
26502
+ return 'list';
26503
+ }
26374
26504
  /**
26375
26505
  * All group children
26376
26506
  */ get allChildren() {
@@ -27562,7 +27692,13 @@ __webpack_require__.r(__webpack_exports__);
27562
27692
  /* harmony export */ getItem: function() { return /* binding */ getItem; }
27563
27693
  /* harmony export */ });
27564
27694
  /* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23211);
27565
-
27695
+ /*!
27696
+ * Jodit Editor (https://xdsoft.net/jodit/)
27697
+ * Released under MIT see LICENSE.txt in the project root for license information.
27698
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
27699
+ */ /**
27700
+ * @module modules/file-browser
27701
+ */
27566
27702
  /**
27567
27703
  * @private
27568
27704
  */ 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);
@@ -33806,13 +33942,12 @@ jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.maxWidth = '100%';
33806
33942
  /**
33807
33943
  * Editor's min-height
33808
33944
  *
33809
- * @example
33810
33945
  * ```javascript
33811
33946
  * Jodit.make('.editor', {
33812
33947
  * minHeight: '30%' //min-height: 30%
33813
33948
  * })
33814
33949
  * ```
33815
- * @example
33950
+ *
33816
33951
  * ```javascript
33817
33952
  * Jodit.make('.editor', {
33818
33953
  * minHeight: 200 //min-height: 200px
@@ -34859,7 +34994,7 @@ __webpack_require__.r(__webpack_exports__);
34859
34994
  * ```
34860
34995
  * @packageDocumentation
34861
34996
  * @module constants
34862
- */ const APP_VERSION = "4.9.9";
34997
+ */ const APP_VERSION = "4.9.11";
34863
34998
  // prettier-ignore
34864
34999
  const ES = "es2015";
34865
35000
  const IS_ES_MODERN = true;
@@ -38320,6 +38455,10 @@ __webpack_require__.r(__webpack_exports__);
38320
38455
  * Jodit Editor (https://xdsoft.net/jodit/)
38321
38456
  * Released under MIT see LICENSE.txt in the project root for license information.
38322
38457
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
38458
+ */ /**
38459
+ * [[include:core/decorators/component/README.md]]
38460
+ * @packageDocumentation
38461
+ * @module decorators/component
38323
38462
  */
38324
38463
 
38325
38464
  const componentRegistry = new Map();
@@ -40448,9 +40587,10 @@ function elementsEqualAttributes(elm1, elm2) {
40448
40587
  /* harmony import */ var jodit_core_decorators_derive_derive__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24968);
40449
40588
  /* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(23211);
40450
40589
  /* harmony import */ var jodit_core_helpers_checker_is_string__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(85932);
40451
- /* harmony import */ var jodit_core_traits_elms__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(23183);
40452
- /* harmony import */ var jodit_core_traits_mods__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(81987);
40453
- /* harmony import */ var jodit_core_ui_icon__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(29434);
40590
+ /* harmony import */ var jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7909);
40591
+ /* harmony import */ var jodit_core_traits_elms__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(23183);
40592
+ /* harmony import */ var jodit_core_traits_mods__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(81987);
40593
+ /* harmony import */ var jodit_core_ui_icon__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(29434);
40454
40594
  /*!
40455
40595
  * Jodit Editor (https://xdsoft.net/jodit/)
40456
40596
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -40466,7 +40606,11 @@ function elementsEqualAttributes(elm1, elm2) {
40466
40606
 
40467
40607
 
40468
40608
 
40609
+
40469
40610
  class UIElement extends jodit_core_component__WEBPACK_IMPORTED_MODULE_2__.ViewComponent {
40611
+ getRole() {
40612
+ return '';
40613
+ }
40470
40614
  get parentElement() {
40471
40615
  return this.__parentElement;
40472
40616
  }
@@ -40555,7 +40699,7 @@ class UIElement extends jodit_core_component__WEBPACK_IMPORTED_MODULE_2__.ViewCo
40555
40699
  return result;
40556
40700
  }
40557
40701
  parseTemplate(result) {
40558
- 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)));
40702
+ 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)));
40559
40703
  }
40560
40704
  /** @override */ destruct() {
40561
40705
  jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.safeRemove(this.container);
@@ -40565,6 +40709,8 @@ class UIElement extends jodit_core_component__WEBPACK_IMPORTED_MODULE_2__.ViewCo
40565
40709
  /** @override */ constructor(jodit, options){
40566
40710
  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", {});
40567
40711
  this.container = this.createContainer(options);
40712
+ const role = this.getRole();
40713
+ role && (0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_6__.attr)(this.container, 'role', role);
40568
40714
  Object.defineProperty(this.container, 'component', {
40569
40715
  value: this,
40570
40716
  configurable: true
@@ -40572,7 +40718,7 @@ class UIElement extends jodit_core_component__WEBPACK_IMPORTED_MODULE_2__.ViewCo
40572
40718
  }
40573
40719
  }
40574
40720
  UIElement = (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
40575
- (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)
40721
+ (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)
40576
40722
  ], UIElement);
40577
40723
 
40578
40724