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/es2021/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
  */
@@ -2057,7 +2057,96 @@ __webpack_require__.r(__webpack_exports__);
2057
2057
 
2058
2058
  let ConfigPrototype = {};
2059
2059
  /**
2060
- * Default Editor's Configuration
2060
+ * Default Editor's Configuration.
2061
+ *
2062
+ * This class holds all default option values for the Jodit editor.
2063
+ * It uses a **private constructor** and a **lazy singleton** pattern — the single instance
2064
+ * is created on the first access to {@link Config.defaultOptions} (also available as `Jodit.defaultOptions`).
2065
+ *
2066
+ * ## How options are resolved
2067
+ *
2068
+ * When you create an editor with `Jodit.make('#editor', userOptions)`, the library
2069
+ * calls {@link ConfigProto}(userOptions, Config.defaultOptions). `ConfigProto` does
2070
+ * **not** deep-clone the defaults. Instead it creates a new object whose JavaScript
2071
+ * prototype is `Config.defaultOptions`:
2072
+ *
2073
+ * ```
2074
+ * userOptions ──[[Prototype]]──► Config.defaultOptions
2075
+ * ```
2076
+ *
2077
+ * Any key present in `userOptions` shadows the default;
2078
+ * any key **not** present falls through to `Config.defaultOptions` via the prototype chain.
2079
+ * Nested plain objects are recursively prototyped in the same way, so partial overrides
2080
+ * of nested options work automatically:
2081
+ *
2082
+ * ```js
2083
+ * // Only override `dialogWidth`; all other `image.*` defaults are still available
2084
+ * Jodit.make('#editor', {
2085
+ * image: { dialogWidth: 500 }
2086
+ * });
2087
+ * ```
2088
+ *
2089
+ * ## How plugins extend the config
2090
+ *
2091
+ * Each plugin adds its own defaults by assigning to `Config.prototype` and augmenting
2092
+ * the TypeScript type with `declare module`:
2093
+ *
2094
+ * ```ts
2095
+ * // 1. Type augmentation (compile-time)
2096
+ * declare module 'jodit/config' {
2097
+ * interface Config {
2098
+ * toolbarSticky: boolean;
2099
+ * }
2100
+ * }
2101
+ *
2102
+ * // 2. Runtime default
2103
+ * Config.prototype.toolbarSticky = true;
2104
+ * ```
2105
+ *
2106
+ * Because the constructor runs `Object.assign(this, ConfigPrototype)` (where
2107
+ * `ConfigPrototype` is captured as `Config.prototype` after the class definition),
2108
+ * all prototype-level values — including those added by plugins — are materialized
2109
+ * as own properties on the singleton. This means `Config.defaultOptions` always
2110
+ * contains every registered option as an own, enumerable property.
2111
+ *
2112
+ * ## Changing global defaults
2113
+ *
2114
+ * You can modify `Jodit.defaultOptions` **before** creating editors to change
2115
+ * defaults globally:
2116
+ *
2117
+ * ```js
2118
+ * Jodit.defaultOptions.language = 'de';
2119
+ * Jodit.defaultOptions.theme = 'dark';
2120
+ *
2121
+ * // Both editors inherit the new defaults
2122
+ * Jodit.make('#editor1');
2123
+ * Jodit.make('#editor2');
2124
+ * ```
2125
+ *
2126
+ * ## `Jodit.atom` — preventing deep merge
2127
+ *
2128
+ * By default, `ConfigProto` deep-merges nested plain objects and arrays.
2129
+ * Wrap a value with `Jodit.atom(value)` to make it **atomic** — it will completely
2130
+ * replace the default instead of being merged:
2131
+ *
2132
+ * ```js
2133
+ * Jodit.make('#editor', {
2134
+ * controls: {
2135
+ * fontsize: {
2136
+ * // Replace the entire list rather than merging with the default one
2137
+ * list: Jodit.atom([8, 9, 10])
2138
+ * }
2139
+ * }
2140
+ * });
2141
+ * ```
2142
+ *
2143
+ * `Jodit.atom` calls {@link markAsAtomic}, which sets a non-enumerable
2144
+ * `isAtom` flag on the object. `ConfigProto` checks this flag and skips
2145
+ * recursive merging when it is present. Note: top-level arrays (depth 0)
2146
+ * are always treated as atomic — they replace rather than merge.
2147
+ *
2148
+ * @see {@link ConfigProto} for the full merge algorithm
2149
+ * @see {@link markAsAtomic} / {@link isAtom} for the atom marker implementation
2061
2150
  */ class Config {
2062
2151
  static get defaultOptions() {
2063
2152
  if (!Config.__defaultOptions) {
@@ -2067,31 +2156,32 @@ let ConfigPrototype = {};
2067
2156
  }
2068
2157
  constructor(){
2069
2158
  /**
2070
- * Use cache for heavy methods
2159
+ * When enabled, the editor caches the results of expensive computations (e.g. toolbar rebuilds)
2160
+ * to improve performance. Disable for debugging or when options change frequently at runtime.
2071
2161
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "cache", true);
2072
2162
  /**
2073
2163
  * Timeout of all asynchronous methods
2074
2164
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "defaultTimeout", 100);
2075
- (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "namespace", '');
2165
+ /**
2166
+ * Prefix used for CSS class names and local-storage keys to avoid collisions
2167
+ * when multiple editor instances or applications share the same page.
2168
+ */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "namespace", '');
2076
2169
  /**
2077
2170
  * Editor loads completely without plugins. Useful when debugging your own plugin.
2078
2171
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "safeMode", false);
2079
2172
  /**
2080
2173
  * Editor's width
2081
2174
  *
2082
- * @example
2083
2175
  * ```javascript
2084
2176
  * Jodit.make('.editor', {
2085
2177
  * width: '100%',
2086
2178
  * })
2087
2179
  * ```
2088
- * @example
2089
2180
  * ```javascript
2090
2181
  * Jodit.make('.editor', {
2091
2182
  * width: 600, // equivalent for '600px'
2092
2183
  * })
2093
2184
  * ```
2094
- * @example
2095
2185
  * ```javascript
2096
2186
  * Jodit.make('.editor', {
2097
2187
  * width: 'auto', // autosize
@@ -2101,19 +2191,16 @@ let ConfigPrototype = {};
2101
2191
  /**
2102
2192
  * Editor's height
2103
2193
  *
2104
- * @example
2105
2194
  * ```javascript
2106
2195
  * Jodit.make('.editor', {
2107
2196
  * height: '100%',
2108
2197
  * })
2109
2198
  * ```
2110
- * @example
2111
2199
  * ```javascript
2112
2200
  * Jodit.make('.editor', {
2113
2201
  * height: 600, // equivalent for '600px'
2114
2202
  * })
2115
2203
  * ```
2116
- * @example
2117
2204
  * ```javascript
2118
2205
  * Jodit.make('.editor', {
2119
2206
  * height: 'auto', // default - autosize
@@ -2151,7 +2238,32 @@ let ConfigPrototype = {};
2151
2238
  * });
2152
2239
  * ```
2153
2240
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "preset", 'custom');
2154
- (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "presets", {
2241
+ /**
2242
+ * Dictionary of named configuration presets. Each key is a preset name and the value
2243
+ * is a partial options object that will be merged into the editor config when
2244
+ * {@link Config.preset} matches the key.
2245
+ *
2246
+ * ```javascript
2247
+ * // Use a built-in preset
2248
+ * Jodit.make('#editor', {
2249
+ * preset: 'inline'
2250
+ * });
2251
+ * ```
2252
+ *
2253
+ * ```javascript
2254
+ * // Define and use a custom preset
2255
+ * Jodit.defaultOptions.presets.myCompact = {
2256
+ * toolbarButtonSize: 'small',
2257
+ * showCharsCounter: false,
2258
+ * showWordsCounter: false,
2259
+ * showXPathInStatusbar: false
2260
+ * };
2261
+ *
2262
+ * Jodit.make('#editor', {
2263
+ * preset: 'myCompact'
2264
+ * });
2265
+ * ```
2266
+ */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "presets", {
2155
2267
  inline: {
2156
2268
  inline: true,
2157
2269
  toolbar: false,
@@ -2163,7 +2275,10 @@ let ConfigPrototype = {};
2163
2275
  showPlaceholder: false
2164
2276
  }
2165
2277
  });
2166
- (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "ownerDocument", jodit_core_constants__WEBPACK_IMPORTED_MODULE_1__.globalDocument);
2278
+ /**
2279
+ * The Document object the editor operates within. Defaults to the current `document`.
2280
+ * Override when the editor is created inside an iframe or a different browsing context.
2281
+ */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "ownerDocument", jodit_core_constants__WEBPACK_IMPORTED_MODULE_1__.globalDocument);
2167
2282
  /**
2168
2283
  * Allows you to specify the window in which the editor will be created. Default - window
2169
2284
  * This is necessary if you are creating the editor inside an iframe but the code is running in the parent window
@@ -2194,7 +2309,9 @@ let ConfigPrototype = {};
2194
2309
  * ```
2195
2310
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "shadowRoot", null);
2196
2311
  /**
2197
- * z-index For editor
2312
+ * Base CSS `z-index` for the editor UI (toolbar, popups, dialogs).
2313
+ * Set to a higher value when other page elements overlap the editor.
2314
+ * `0` means no explicit z-index is applied.
2198
2315
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "zIndex", 0);
2199
2316
  /**
2200
2317
  * Change the read-only state of the editor
@@ -2230,7 +2347,6 @@ let ConfigPrototype = {};
2230
2347
  /**
2231
2348
  * Size of icons in the toolbar (can be "small", "middle", "large")
2232
2349
  *
2233
- * @example
2234
2350
  * ```javascript
2235
2351
  * const editor = Jodit.make(".dark_editor", {
2236
2352
  * toolbarButtonSize: "small"
@@ -2241,11 +2357,13 @@ let ConfigPrototype = {};
2241
2357
  * Allow navigation in the toolbar of the editor by Tab key
2242
2358
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "allowTabNavigation", false);
2243
2359
  /**
2244
- * Inline editing mode
2360
+ * When enabled, the editor renders without its own container chrome (toolbar, borders, statusbar).
2361
+ * The editable area becomes the element itself. Typically combined with
2362
+ * `toolbarInline: true` so a floating toolbar appears on selection.
2245
2363
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "inline", false);
2246
2364
  /**
2247
2365
  * Theme (can be "dark")
2248
- * @example
2366
+ *
2249
2367
  * ```javascript
2250
2368
  * const editor = Jodit.make(".dark_editor", {
2251
2369
  * theme: "dark"
@@ -2258,10 +2376,9 @@ let ConfigPrototype = {};
2258
2376
  /**
2259
2377
  * Class name that can be appended to the editable area
2260
2378
  *
2261
- * @see [[Config.iframeCSSLinks]]
2262
- * @see [[Config.iframeStyle]]
2379
+ * @see {@link Config.iframeCSSLinks}
2380
+ * @see {@link Config.iframeStyle}
2263
2381
  *
2264
- * @example
2265
2382
  * ```javascript
2266
2383
  * Jodit.make('#editor', {
2267
2384
  * editorClassName: 'some_my_class'
@@ -2277,7 +2394,7 @@ let ConfigPrototype = {};
2277
2394
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "editorClassName", false);
2278
2395
  /**
2279
2396
  * Class name that can be appended to the main editor container
2280
- * @example
2397
+ *
2281
2398
  * ```javascript
2282
2399
  * const jodit = Jodit.make('#editor', {
2283
2400
  * className: 'some_my_class'
@@ -2297,7 +2414,7 @@ let ConfigPrototype = {};
2297
2414
  /**
2298
2415
  * The internal styles of the editable area. They are intended to change
2299
2416
  * not the appearance of the editor, but to change the appearance of the content.
2300
- * @example
2417
+ *
2301
2418
  * ```javascript
2302
2419
  * Jodit.make('#editor', {
2303
2420
  * style: {
@@ -2308,13 +2425,14 @@ let ConfigPrototype = {};
2308
2425
  * ```
2309
2426
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "style", false);
2310
2427
  /**
2428
+ * Inline CSS styles applied to the outer editor container element.
2429
+ * Use this to style the editor wrapper (borders, background, etc.) without affecting content.
2311
2430
  *
2312
- * @example
2313
2431
  * ```javascript
2314
2432
  * Jodit.make('#editor', {
2315
- * editorStyle: {
2316
- * font: '12px Arial',
2317
- * color: '#0c0c0c'
2433
+ * containerStyle: {
2434
+ * border: '1px solid #ccc',
2435
+ * background: '#f9f9f9'
2318
2436
  * }
2319
2437
  * });
2320
2438
  * ```
@@ -2323,7 +2441,6 @@ let ConfigPrototype = {};
2323
2441
  * Dictionary of variable values in css, a complete list can be found here
2324
2442
  * https://github.com/xdan/jodit/blob/main/src/styles/variables.less#L25
2325
2443
  *
2326
- * @example
2327
2444
  * ```js
2328
2445
  * const editor = Jodit.make('#editor', {
2329
2446
  * styleValues: {
@@ -2335,9 +2452,9 @@ let ConfigPrototype = {};
2335
2452
  * ```
2336
2453
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "styleValues", {});
2337
2454
  /**
2338
- * After all, changes in editors for textarea will call change trigger
2455
+ * When enabled, the editor dispatches a native `change` event on the original
2456
+ * `<textarea>` element whenever the content changes, so standard DOM listeners work.
2339
2457
  *
2340
- * @example
2341
2458
  * ```javascript
2342
2459
  * const editor = Jodit.make('#editor');
2343
2460
  * document.getElementById('editor').addEventListener('change', function () {
@@ -2351,7 +2468,6 @@ let ConfigPrototype = {};
2351
2468
  * the page element direction. 'ltr' – Indicates a Left-To-Right text direction (like in English).
2352
2469
  * 'rtl' – Indicates a Right-To-Left text direction (like in Arabic).
2353
2470
  *
2354
- * @example
2355
2471
  * ```javascript
2356
2472
  * Jodit.make('.editor', {
2357
2473
  * direction: 'rtl'
@@ -2363,7 +2479,6 @@ let ConfigPrototype = {};
2363
2479
  * (navigator.language && navigator.language.substr(0, 2)) ||
2364
2480
  * (navigator.browserLanguage && navigator.browserLanguage.substr(0, 2)) || 'en'
2365
2481
  *
2366
- * @example
2367
2482
  * ```html
2368
2483
  * <!-- include in you page lang file -->
2369
2484
  * <script src="jodit/lang/de.js"></script>
@@ -2377,7 +2492,6 @@ let ConfigPrototype = {};
2377
2492
  /**
2378
2493
  * if true all Lang.i18n(key) return `{key}`
2379
2494
  *
2380
- * @example
2381
2495
  * ```html
2382
2496
  * <script>
2383
2497
  * var editor = Jodit.make('.editor', {
@@ -2391,7 +2505,6 @@ let ConfigPrototype = {};
2391
2505
  /**
2392
2506
  * Collection of language pack data `{en: {'Type something': 'Type something', ...}}`
2393
2507
  *
2394
- * @example
2395
2508
  * ```javascript
2396
2509
  * const editor = Jodit.make('#editor', {
2397
2510
  * language: 'ru',
@@ -2423,11 +2536,11 @@ let ConfigPrototype = {};
2423
2536
  * Delay before show tooltip
2424
2537
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "showTooltipDelay", 200);
2425
2538
  /**
2426
- * Instead of create custop tooltip - use native title tooltips
2539
+ * Instead of creating a custom tooltip, use the browser's native title tooltips
2427
2540
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "useNativeTooltip", false);
2428
2541
  /**
2429
- * Default insert method
2430
- * @default insert_as_html
2542
+ * How pasted content is inserted into the editor by default.
2543
+ * Possible values: `insert_as_html`, `insert_as_text`, `insert_only_text`, `insert_clear_html`.
2431
2544
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "defaultActionOnPaste", jodit_core_constants__WEBPACK_IMPORTED_MODULE_1__.INSERT_AS_HTML);
2432
2545
  // TODO
2433
2546
  // autosave: false, // false or url
@@ -2440,7 +2553,6 @@ let ConfigPrototype = {};
2440
2553
  /**
2441
2554
  * When this option is enabled, the editor's content will be placed in an iframe and isolated from the rest of the page.
2442
2555
  *
2443
- * @example
2444
2556
  * ```javascript
2445
2557
  * Jodit.make('#editor', {
2446
2558
  * iframe: true,
@@ -2452,7 +2564,7 @@ let ConfigPrototype = {};
2452
2564
  /**
2453
2565
  * Allow editing the entire HTML document(html, head)
2454
2566
  * \> Works together with the iframe option.
2455
- * @example
2567
+ *
2456
2568
  * ```js
2457
2569
  * const editor = Jodit.make('#editor', {
2458
2570
  * iframe: true,
@@ -2471,7 +2583,7 @@ let ConfigPrototype = {};
2471
2583
  /**
2472
2584
  * Jodit.MODE_WYSIWYG The HTML editor allows you to write like MSWord,
2473
2585
  * Jodit.MODE_SOURCE syntax highlighting source editor
2474
- * @example
2586
+ *
2475
2587
  * ```javascript
2476
2588
  * var editor = Jodit.make('#editor', {
2477
2589
  * defaultMode: Jodit.MODE_SPLIT
@@ -2480,11 +2592,11 @@ let ConfigPrototype = {};
2480
2592
  * ```
2481
2593
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "defaultMode", jodit_core_constants__WEBPACK_IMPORTED_MODULE_1__.MODE_WYSIWYG);
2482
2594
  /**
2483
- * Use split mode
2595
+ * When enabled, the editor displays both the WYSIWYG view and the source-code view side by side.
2484
2596
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "useSplitMode", false);
2485
2597
  /**
2486
2598
  * The colors in HEX representation to select a color for the background and for the text in colorpicker
2487
- * @example
2599
+ *
2488
2600
  * ```javascript
2489
2601
  * Jodit.make('#editor', {
2490
2602
  * colors: ['#ff0000', '#00ff00', '#0000ff']
@@ -2580,7 +2692,7 @@ let ConfigPrototype = {};
2580
2692
  });
2581
2693
  /**
2582
2694
  * The default tab color picker
2583
- * @example
2695
+ *
2584
2696
  * ```javascript
2585
2697
  * Jodit.make('#editor2', {
2586
2698
  * colorPickerDefaultTab: 'color'
@@ -2588,11 +2700,11 @@ let ConfigPrototype = {};
2588
2700
  * ```
2589
2701
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "colorPickerDefaultTab", 'background');
2590
2702
  /**
2591
- * Image size defaults to a larger image
2703
+ * Default width (in pixels) applied to images inserted into the editor
2592
2704
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "imageDefaultWidth", 300);
2593
2705
  /**
2594
2706
  * Do not display these buttons that are on the list
2595
- * @example
2707
+ *
2596
2708
  * ```javascript
2597
2709
  * Jodit.make('#editor2', {
2598
2710
  * removeButtons: ['hr', 'source']
@@ -2601,7 +2713,7 @@ let ConfigPrototype = {};
2601
2713
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "removeButtons", []);
2602
2714
  /**
2603
2715
  * Do not init these plugins
2604
- * @example
2716
+ *
2605
2717
  * ```typescript
2606
2718
  * var editor = Jodit.make('.editor', {
2607
2719
  * disablePlugins: 'table,iframe'
@@ -2614,7 +2726,7 @@ let ConfigPrototype = {};
2614
2726
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "disablePlugins", []);
2615
2727
  /**
2616
2728
  * Init and download extra plugins
2617
- * @example
2729
+ *
2618
2730
  * ```typescript
2619
2731
  * var editor = Jodit.make('.editor', {
2620
2732
  * extraPlugins: ['emoji']
@@ -2626,14 +2738,13 @@ let ConfigPrototype = {};
2626
2738
  * Base path for download extra plugins
2627
2739
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "basePath", void 0);
2628
2740
  /**
2629
- * These buttons list will be added to the option. Buttons
2741
+ * Additional buttons appended to the {@link Config.buttons} list
2630
2742
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "extraButtons", []);
2631
2743
  /**
2632
2744
  * By default, you can only install an icon from the Jodit suite.
2633
2745
  * You can add your icon to the set using the `Jodit.modules.Icon.set (name, svg Code)` method.
2634
2746
  * But for a declarative declaration, you can use this option.
2635
2747
  *
2636
- * @example
2637
2748
  * ```js
2638
2749
  * Jodit.modules.Icon.set('someIcon', '<svg><path.../></svg>');
2639
2750
  * const editor = Jodit.make({
@@ -2642,8 +2753,9 @@ let ConfigPrototype = {};
2642
2753
  * icon: 'someIcon'
2643
2754
  * }]
2644
2755
  * });
2756
+ * ```
2645
2757
  *
2646
- * @example
2758
+ * ```js
2647
2759
  * const editor = Jodit.make({
2648
2760
  * extraIcons: {
2649
2761
  * someIcon: '<svg><path.../></svg>'
@@ -2654,7 +2766,7 @@ let ConfigPrototype = {};
2654
2766
  * }]
2655
2767
  * });
2656
2768
  * ```
2657
- * @example
2769
+ *
2658
2770
  * ```js
2659
2771
  * const editor = Jodit.make({
2660
2772
  * extraButtons: [{
@@ -2666,7 +2778,7 @@ let ConfigPrototype = {};
2666
2778
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "extraIcons", {});
2667
2779
  /**
2668
2780
  * Default attributes for created inside editor elements
2669
- * @example
2781
+ *
2670
2782
  * ```js
2671
2783
  * const editor2 = Jodit.make('#editor', {
2672
2784
  * createAttributes: {
@@ -2686,7 +2798,7 @@ let ConfigPrototype = {};
2686
2798
  * expect(ul.className).equals('ui-test');
2687
2799
  * ```
2688
2800
  * Or JSX in React
2689
- * @example
2801
+ *
2690
2802
  * ```jsx
2691
2803
  * import React, {useState, useRef} from 'react';
2692
2804
  * import JoditEditor from "jodit-react";
@@ -2718,7 +2830,7 @@ let ConfigPrototype = {};
2718
2830
  /**
2719
2831
  * The list of buttons that appear in the editor's toolbar on large places (≥ options.sizeLG).
2720
2832
  * Note - this is not the width of the device, the width of the editor
2721
- * @example
2833
+ *
2722
2834
  * ```javascript
2723
2835
  * Jodit.make('#editor', {
2724
2836
  * buttons: ['bold', 'italic', 'source'],
@@ -2726,7 +2838,7 @@ let ConfigPrototype = {};
2726
2838
  * buttonsXS: ['bold', 'fullsize'],
2727
2839
  * });
2728
2840
  * ```
2729
- * @example
2841
+ *
2730
2842
  * ```javascript
2731
2843
  * Jodit.make('#editor2', {
2732
2844
  * buttons: [{
@@ -2750,7 +2862,7 @@ let ConfigPrototype = {};
2750
2862
  * }]
2751
2863
  * });
2752
2864
  * ```
2753
- * @example
2865
+ *
2754
2866
  * ```javascript
2755
2867
  * Jodit.make('#editor2', {
2756
2868
  * buttons: Jodit.defaultOptions.buttons.concat([{
@@ -2846,7 +2958,8 @@ let ConfigPrototype = {};
2846
2958
  }
2847
2959
  ]);
2848
2960
  /**
2849
- * Behavior for buttons
2961
+ * Map of toolbar button names to their control definitions (icon, tooltip, exec handler, etc.).
2962
+ * Plugins extend this object with their own button definitions via `Config.prototype.controls`.
2850
2963
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "controls", void 0);
2851
2964
  /**
2852
2965
  * Some events are called when the editor is initialized, for example, the `afterInit` event.
@@ -2874,7 +2987,7 @@ let ConfigPrototype = {};
2874
2987
  * ```
2875
2988
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "events", {});
2876
2989
  /**
2877
- * Buttons in toolbat without SVG - only texts
2990
+ * Buttons in toolbar without SVG - only texts
2878
2991
  */ (0,_swc_helpers_define_property__WEBPACK_IMPORTED_MODULE_0__._)(this, "textIcons", false);
2879
2992
  /**
2880
2993
  * Element for dialog container
@@ -3756,7 +3869,13 @@ jodit_core_global__WEBPACK_IMPORTED_MODULE_0__.pluginSystem.add('table', table);
3756
3869
  /* harmony import */ var _engines_local_storage_provider__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(59807);
3757
3870
  /* harmony import */ var _engines_memory_storage_provider__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(9505);
3758
3871
  /* harmony import */ var _storage__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(24475);
3759
-
3872
+ /*!
3873
+ * Jodit Editor (https://xdsoft.net/jodit/)
3874
+ * Released under MIT see LICENSE.txt in the project root for license information.
3875
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
3876
+ */ /**
3877
+ * @module storage
3878
+ */
3760
3879
 
3761
3880
 
3762
3881
 
@@ -9465,6 +9584,9 @@ class ToolbarButton extends jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_18__.U
9465
9584
  className() {
9466
9585
  return 'ToolbarButton';
9467
9586
  }
9587
+ getRole() {
9588
+ return 'listitem';
9589
+ }
9468
9590
  /**
9469
9591
  * Get parent toolbar
9470
9592
  */ get toolbar() {
@@ -9529,7 +9651,6 @@ class ToolbarButton extends jodit_core_ui_button__WEBPACK_IMPORTED_MODULE_18__.U
9529
9651
  const cn = this.componentName;
9530
9652
  const container = this.j.c.span(cn);
9531
9653
  const button = super.createContainer();
9532
- (0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_16__.attr)(container, 'role', 'listitem');
9533
9654
  button.classList.remove(cn);
9534
9655
  button.classList.add(cn + '__button');
9535
9656
  Object.defineProperty(button, 'component', {
@@ -17801,7 +17922,13 @@ ToolbarCollection = (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__d
17801
17922
  /* harmony export */ eventEmitter: function() { return /* binding */ eventEmitter; }
17802
17923
  /* harmony export */ });
17803
17924
  /* harmony import */ var _event_emitter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(93747);
17804
-
17925
+ /*!
17926
+ * Jodit Editor (https://xdsoft.net/jodit/)
17927
+ * Released under MIT see LICENSE.txt in the project root for license information.
17928
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
17929
+ */ /**
17930
+ * @module event-emitter
17931
+ */
17805
17932
  const eventEmitter = new _event_emitter__WEBPACK_IMPORTED_MODULE_0__.EventEmitter();
17806
17933
 
17807
17934
 
@@ -20735,12 +20862,12 @@ jodit_config__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.video = {
20735
20862
  * Jodit Editor (https://xdsoft.net/jodit/)
20736
20863
  * Released under MIT see LICENSE.txt in the project root for license information.
20737
20864
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
20738
- */
20739
- /**
20865
+ */ /**
20740
20866
  * [[include:core/decorators/autobind/README.md]]
20741
20867
  * @packageDocumentation
20742
20868
  * @module decorators/autobind
20743
- */ /**
20869
+ */
20870
+ /**
20744
20871
  * Decorator that automatically binds a method to its class instance.
20745
20872
  * This is useful when passing methods as callbacks to preserve the correct `this` context.
20746
20873
  *
@@ -26055,6 +26182,9 @@ class UIGroup extends jodit_core_ui_element__WEBPACK_IMPORTED_MODULE_6__.UIEleme
26055
26182
  className() {
26056
26183
  return 'UIGroup';
26057
26184
  }
26185
+ getRole() {
26186
+ return 'list';
26187
+ }
26058
26188
  /**
26059
26189
  * All group children
26060
26190
  */ get allChildren() {
@@ -27240,7 +27370,13 @@ __webpack_require__.r(__webpack_exports__);
27240
27370
  /* harmony export */ getItem: function() { return /* binding */ getItem; }
27241
27371
  /* harmony export */ });
27242
27372
  /* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23211);
27243
-
27373
+ /*!
27374
+ * Jodit Editor (https://xdsoft.net/jodit/)
27375
+ * Released under MIT see LICENSE.txt in the project root for license information.
27376
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
27377
+ */ /**
27378
+ * @module modules/file-browser
27379
+ */
27244
27380
  /**
27245
27381
  * @private
27246
27382
  */ 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);
@@ -33478,13 +33614,12 @@ jodit_config__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.maxWidth = '100%';
33478
33614
  /**
33479
33615
  * Editor's min-height
33480
33616
  *
33481
- * @example
33482
33617
  * ```javascript
33483
33618
  * Jodit.make('.editor', {
33484
33619
  * minHeight: '30%' //min-height: 30%
33485
33620
  * })
33486
33621
  * ```
33487
- * @example
33622
+ *
33488
33623
  * ```javascript
33489
33624
  * Jodit.make('.editor', {
33490
33625
  * minHeight: 200 //min-height: 200px
@@ -34527,7 +34662,7 @@ __webpack_require__.r(__webpack_exports__);
34527
34662
  * ```
34528
34663
  * @packageDocumentation
34529
34664
  * @module constants
34530
- */ const APP_VERSION = "4.9.9";
34665
+ */ const APP_VERSION = "4.9.11";
34531
34666
  // prettier-ignore
34532
34667
  const ES = "es2021";
34533
34668
  const IS_ES_MODERN = true;
@@ -37950,6 +38085,10 @@ __webpack_require__.r(__webpack_exports__);
37950
38085
  * Jodit Editor (https://xdsoft.net/jodit/)
37951
38086
  * Released under MIT see LICENSE.txt in the project root for license information.
37952
38087
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
38088
+ */ /**
38089
+ * [[include:core/decorators/component/README.md]]
38090
+ * @packageDocumentation
38091
+ * @module decorators/component
37953
38092
  */
37954
38093
 
37955
38094
  const componentRegistry = new Map();
@@ -40074,9 +40213,10 @@ function elementsEqualAttributes(elm1, elm2) {
40074
40213
  /* harmony import */ var jodit_core_decorators_derive_derive__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24968);
40075
40214
  /* harmony import */ var jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(23211);
40076
40215
  /* harmony import */ var jodit_core_helpers_checker_is_string__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(85932);
40077
- /* harmony import */ var jodit_core_traits_elms__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(23183);
40078
- /* harmony import */ var jodit_core_traits_mods__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(81987);
40079
- /* harmony import */ var jodit_core_ui_icon__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(29434);
40216
+ /* harmony import */ var jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7909);
40217
+ /* harmony import */ var jodit_core_traits_elms__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(23183);
40218
+ /* harmony import */ var jodit_core_traits_mods__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(81987);
40219
+ /* harmony import */ var jodit_core_ui_icon__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(29434);
40080
40220
  /*!
40081
40221
  * Jodit Editor (https://xdsoft.net/jodit/)
40082
40222
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -40092,7 +40232,11 @@ function elementsEqualAttributes(elm1, elm2) {
40092
40232
 
40093
40233
 
40094
40234
 
40235
+
40095
40236
  class UIElement extends jodit_core_component__WEBPACK_IMPORTED_MODULE_2__.ViewComponent {
40237
+ getRole() {
40238
+ return '';
40239
+ }
40096
40240
  get parentElement() {
40097
40241
  return this.__parentElement;
40098
40242
  }
@@ -40180,7 +40324,7 @@ class UIElement extends jodit_core_component__WEBPACK_IMPORTED_MODULE_2__.ViewCo
40180
40324
  return result;
40181
40325
  }
40182
40326
  parseTemplate(result) {
40183
- 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)));
40327
+ 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)));
40184
40328
  }
40185
40329
  /** @override */ destruct() {
40186
40330
  jodit_core_dom_dom__WEBPACK_IMPORTED_MODULE_4__.Dom.safeRemove(this.container);
@@ -40190,6 +40334,8 @@ class UIElement extends jodit_core_component__WEBPACK_IMPORTED_MODULE_2__.ViewCo
40190
40334
  /** @override */ constructor(jodit, options){
40191
40335
  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", {});
40192
40336
  this.container = this.createContainer(options);
40337
+ const role = this.getRole();
40338
+ role && (0,jodit_core_helpers_utils_attr__WEBPACK_IMPORTED_MODULE_6__.attr)(this.container, 'role', role);
40193
40339
  Object.defineProperty(this.container, 'component', {
40194
40340
  value: this,
40195
40341
  configurable: true
@@ -40197,7 +40343,7 @@ class UIElement extends jodit_core_component__WEBPACK_IMPORTED_MODULE_2__.ViewCo
40197
40343
  }
40198
40344
  }
40199
40345
  UIElement = (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_1__.__decorate)([
40200
- (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)
40346
+ (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)
40201
40347
  ], UIElement);
40202
40348
 
40203
40349