jodit-pro 4.9.21 → 4.9.25

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 (299) hide show
  1. package/CHANGELOG.md +63 -1
  2. package/es2015/jodit.css +1 -1
  3. package/es2015/jodit.fat.min.js +43 -43
  4. package/es2015/jodit.js +238 -87
  5. package/es2015/jodit.min.js +6 -6
  6. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  7. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.js +193 -161
  8. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.min.js +30 -30
  9. package/es2015/plugins/autocomplete/autocomplete.js +1 -1
  10. package/es2015/plugins/autocomplete/autocomplete.min.js +1 -1
  11. package/es2015/plugins/backup/backup.css +1 -1
  12. package/es2015/plugins/backup/backup.js +1 -1
  13. package/es2015/plugins/backup/backup.min.js +1 -1
  14. package/es2015/plugins/button-generator/button-generator.css +1 -1
  15. package/es2015/plugins/button-generator/button-generator.js +1 -1
  16. package/es2015/plugins/button-generator/button-generator.min.js +1 -1
  17. package/es2015/plugins/change-case/change-case.js +1 -1
  18. package/es2015/plugins/change-case/change-case.min.js +1 -1
  19. package/es2015/plugins/color-picker/color-picker.css +1 -1
  20. package/es2015/plugins/color-picker/color-picker.js +1 -1
  21. package/es2015/plugins/color-picker/color-picker.min.js +1 -1
  22. package/es2015/plugins/emoji/emoji.css +1 -1
  23. package/es2015/plugins/emoji/emoji.js +1 -1
  24. package/es2015/plugins/emoji/emoji.min.js +1 -1
  25. package/es2015/plugins/export-docs/export-docs.js +1 -1
  26. package/es2015/plugins/export-docs/export-docs.min.js +1 -1
  27. package/es2015/plugins/finder/finder.css +1 -1
  28. package/es2015/plugins/finder/finder.js +1 -1
  29. package/es2015/plugins/finder/finder.min.js +1 -1
  30. package/es2015/plugins/google-maps/google-maps.css +1 -1
  31. package/es2015/plugins/google-maps/google-maps.js +1 -1
  32. package/es2015/plugins/google-maps/google-maps.min.js +1 -1
  33. package/es2015/plugins/google-search/google-search.js +1 -1
  34. package/es2015/plugins/google-search/google-search.min.js +1 -1
  35. package/es2015/plugins/highlight-signature/highlight-signature.js +1 -1
  36. package/es2015/plugins/highlight-signature/highlight-signature.min.js +1 -1
  37. package/es2015/plugins/iframe-editor/iframe-editor.css +1 -1
  38. package/es2015/plugins/iframe-editor/iframe-editor.js +1 -1
  39. package/es2015/plugins/iframe-editor/iframe-editor.min.js +1 -1
  40. package/es2015/plugins/keyboard/keyboard.css +1 -1
  41. package/es2015/plugins/keyboard/keyboard.js +1 -1
  42. package/es2015/plugins/keyboard/keyboard.min.js +1 -1
  43. package/es2015/plugins/mobile-view/mobile-view.js +1 -1
  44. package/es2015/plugins/mobile-view/mobile-view.min.js +1 -1
  45. package/es2015/plugins/page-break/page-break.js +1 -1
  46. package/es2015/plugins/page-break/page-break.min.js +1 -1
  47. package/es2015/plugins/paste-code/paste-code.css +1 -1
  48. package/es2015/plugins/paste-code/paste-code.js +1 -1
  49. package/es2015/plugins/paste-code/paste-code.min.js +1 -1
  50. package/es2015/plugins/paste-from-word/paste-from-word.js +1 -1
  51. package/es2015/plugins/paste-from-word/paste-from-word.min.js +1 -1
  52. package/es2015/plugins/show-blocks/show-blocks.js +1 -1
  53. package/es2015/plugins/show-blocks/show-blocks.min.js +1 -1
  54. package/es2015/plugins/style/style.css +1 -1
  55. package/es2015/plugins/style/style.js +1 -1
  56. package/es2015/plugins/style/style.min.js +1 -1
  57. package/es2015/plugins/todo-list/todo-list.css +1 -1
  58. package/es2015/plugins/todo-list/todo-list.js +1 -1
  59. package/es2015/plugins/todo-list/todo-list.min.js +1 -1
  60. package/es2015/plugins/translate/translate.css +1 -1
  61. package/es2015/plugins/translate/translate.js +1 -1
  62. package/es2015/plugins/translate/translate.min.js +1 -1
  63. package/es2015/plugins/tune-block/tune-block.css +1 -1
  64. package/es2015/plugins/tune-block/tune-block.js +1 -1
  65. package/es2015/plugins/tune-block/tune-block.min.js +1 -1
  66. package/es2018/jodit.fat.min.js +28 -28
  67. package/es2018/jodit.min.js +6 -6
  68. package/es2018/plugins/ai-assistant-pro/ai-assistant-pro.min.js +20 -20
  69. package/es2018/plugins/autocomplete/autocomplete.min.js +1 -1
  70. package/es2018/plugins/backup/backup.min.js +1 -1
  71. package/es2018/plugins/button-generator/button-generator.min.js +1 -1
  72. package/es2018/plugins/change-case/change-case.min.js +1 -1
  73. package/es2018/plugins/color-picker/color-picker.min.js +1 -1
  74. package/es2018/plugins/emoji/emoji.min.js +1 -1
  75. package/es2018/plugins/export-docs/export-docs.min.js +1 -1
  76. package/es2018/plugins/finder/finder.min.js +1 -1
  77. package/es2018/plugins/google-maps/google-maps.min.js +1 -1
  78. package/es2018/plugins/google-search/google-search.min.js +1 -1
  79. package/es2018/plugins/highlight-signature/highlight-signature.min.js +1 -1
  80. package/es2018/plugins/iframe-editor/iframe-editor.min.js +1 -1
  81. package/es2018/plugins/keyboard/keyboard.min.js +1 -1
  82. package/es2018/plugins/mobile-view/mobile-view.min.js +1 -1
  83. package/es2018/plugins/page-break/page-break.min.js +1 -1
  84. package/es2018/plugins/paste-code/paste-code.min.js +1 -1
  85. package/es2018/plugins/paste-from-word/paste-from-word.min.js +1 -1
  86. package/es2018/plugins/show-blocks/show-blocks.min.js +1 -1
  87. package/es2018/plugins/style/style.min.js +1 -1
  88. package/es2018/plugins/todo-list/todo-list.min.js +1 -1
  89. package/es2018/plugins/translate/translate.min.js +1 -1
  90. package/es2018/plugins/tune-block/tune-block.min.js +1 -1
  91. package/es2021/jodit.css +1 -1
  92. package/es2021/jodit.fat.min.js +29 -29
  93. package/es2021/jodit.js +238 -87
  94. package/es2021/jodit.min.js +8 -8
  95. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  96. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.js +194 -162
  97. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.js +20 -20
  98. package/es2021/plugins/autocomplete/autocomplete.js +1 -1
  99. package/es2021/plugins/autocomplete/autocomplete.min.js +1 -1
  100. package/es2021/plugins/backup/backup.css +1 -1
  101. package/es2021/plugins/backup/backup.js +1 -1
  102. package/es2021/plugins/backup/backup.min.js +1 -1
  103. package/es2021/plugins/button-generator/button-generator.css +1 -1
  104. package/es2021/plugins/button-generator/button-generator.js +1 -1
  105. package/es2021/plugins/button-generator/button-generator.min.js +1 -1
  106. package/es2021/plugins/change-case/change-case.js +1 -1
  107. package/es2021/plugins/change-case/change-case.min.js +1 -1
  108. package/es2021/plugins/color-picker/color-picker.css +1 -1
  109. package/es2021/plugins/color-picker/color-picker.js +1 -1
  110. package/es2021/plugins/color-picker/color-picker.min.js +1 -1
  111. package/es2021/plugins/emoji/emoji.css +1 -1
  112. package/es2021/plugins/emoji/emoji.js +1 -1
  113. package/es2021/plugins/emoji/emoji.min.js +1 -1
  114. package/es2021/plugins/export-docs/export-docs.js +1 -1
  115. package/es2021/plugins/export-docs/export-docs.min.js +1 -1
  116. package/es2021/plugins/finder/finder.css +1 -1
  117. package/es2021/plugins/finder/finder.js +1 -1
  118. package/es2021/plugins/finder/finder.min.js +1 -1
  119. package/es2021/plugins/google-maps/google-maps.css +1 -1
  120. package/es2021/plugins/google-maps/google-maps.js +1 -1
  121. package/es2021/plugins/google-maps/google-maps.min.js +1 -1
  122. package/es2021/plugins/google-search/google-search.js +1 -1
  123. package/es2021/plugins/google-search/google-search.min.js +1 -1
  124. package/es2021/plugins/highlight-signature/highlight-signature.js +1 -1
  125. package/es2021/plugins/highlight-signature/highlight-signature.min.js +1 -1
  126. package/es2021/plugins/iframe-editor/iframe-editor.css +1 -1
  127. package/es2021/plugins/iframe-editor/iframe-editor.js +1 -1
  128. package/es2021/plugins/iframe-editor/iframe-editor.min.js +1 -1
  129. package/es2021/plugins/keyboard/keyboard.css +1 -1
  130. package/es2021/plugins/keyboard/keyboard.js +1 -1
  131. package/es2021/plugins/keyboard/keyboard.min.js +1 -1
  132. package/es2021/plugins/mobile-view/mobile-view.js +1 -1
  133. package/es2021/plugins/mobile-view/mobile-view.min.js +1 -1
  134. package/es2021/plugins/page-break/page-break.js +1 -1
  135. package/es2021/plugins/page-break/page-break.min.js +1 -1
  136. package/es2021/plugins/paste-code/paste-code.css +1 -1
  137. package/es2021/plugins/paste-code/paste-code.js +1 -1
  138. package/es2021/plugins/paste-code/paste-code.min.js +1 -1
  139. package/es2021/plugins/paste-from-word/paste-from-word.js +1 -1
  140. package/es2021/plugins/paste-from-word/paste-from-word.min.js +1 -1
  141. package/es2021/plugins/show-blocks/show-blocks.js +1 -1
  142. package/es2021/plugins/show-blocks/show-blocks.min.js +1 -1
  143. package/es2021/plugins/style/style.css +1 -1
  144. package/es2021/plugins/style/style.js +1 -1
  145. package/es2021/plugins/style/style.min.js +1 -1
  146. package/es2021/plugins/todo-list/todo-list.css +1 -1
  147. package/es2021/plugins/todo-list/todo-list.js +1 -1
  148. package/es2021/plugins/todo-list/todo-list.min.js +1 -1
  149. package/es2021/plugins/translate/translate.css +1 -1
  150. package/es2021/plugins/translate/translate.js +1 -1
  151. package/es2021/plugins/translate/translate.min.js +1 -1
  152. package/es2021/plugins/tune-block/tune-block.css +1 -1
  153. package/es2021/plugins/tune-block/tune-block.js +1 -1
  154. package/es2021/plugins/tune-block/tune-block.min.js +1 -1
  155. package/es2021.en/jodit.css +1 -1
  156. package/es2021.en/jodit.fat.min.js +83 -83
  157. package/es2021.en/jodit.js +238 -87
  158. package/es2021.en/jodit.min.js +8 -8
  159. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  160. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.js +194 -162
  161. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.js +20 -20
  162. package/es2021.en/plugins/autocomplete/autocomplete.js +1 -1
  163. package/es2021.en/plugins/autocomplete/autocomplete.min.js +1 -1
  164. package/es2021.en/plugins/backup/backup.css +1 -1
  165. package/es2021.en/plugins/backup/backup.js +1 -1
  166. package/es2021.en/plugins/backup/backup.min.js +1 -1
  167. package/es2021.en/plugins/button-generator/button-generator.css +1 -1
  168. package/es2021.en/plugins/button-generator/button-generator.js +1 -1
  169. package/es2021.en/plugins/button-generator/button-generator.min.js +1 -1
  170. package/es2021.en/plugins/change-case/change-case.js +1 -1
  171. package/es2021.en/plugins/change-case/change-case.min.js +1 -1
  172. package/es2021.en/plugins/color-picker/color-picker.css +1 -1
  173. package/es2021.en/plugins/color-picker/color-picker.js +1 -1
  174. package/es2021.en/plugins/color-picker/color-picker.min.js +1 -1
  175. package/es2021.en/plugins/emoji/emoji.css +1 -1
  176. package/es2021.en/plugins/emoji/emoji.js +1 -1
  177. package/es2021.en/plugins/emoji/emoji.min.js +1 -1
  178. package/es2021.en/plugins/export-docs/export-docs.js +1 -1
  179. package/es2021.en/plugins/export-docs/export-docs.min.js +1 -1
  180. package/es2021.en/plugins/finder/finder.css +1 -1
  181. package/es2021.en/plugins/finder/finder.js +1 -1
  182. package/es2021.en/plugins/finder/finder.min.js +1 -1
  183. package/es2021.en/plugins/google-maps/google-maps.css +1 -1
  184. package/es2021.en/plugins/google-maps/google-maps.js +1 -1
  185. package/es2021.en/plugins/google-maps/google-maps.min.js +1 -1
  186. package/es2021.en/plugins/google-search/google-search.js +1 -1
  187. package/es2021.en/plugins/google-search/google-search.min.js +1 -1
  188. package/es2021.en/plugins/highlight-signature/highlight-signature.js +1 -1
  189. package/es2021.en/plugins/highlight-signature/highlight-signature.min.js +1 -1
  190. package/es2021.en/plugins/iframe-editor/iframe-editor.css +1 -1
  191. package/es2021.en/plugins/iframe-editor/iframe-editor.js +1 -1
  192. package/es2021.en/plugins/iframe-editor/iframe-editor.min.js +1 -1
  193. package/es2021.en/plugins/keyboard/keyboard.css +1 -1
  194. package/es2021.en/plugins/keyboard/keyboard.js +1 -1
  195. package/es2021.en/plugins/keyboard/keyboard.min.js +1 -1
  196. package/es2021.en/plugins/mobile-view/mobile-view.js +1 -1
  197. package/es2021.en/plugins/mobile-view/mobile-view.min.js +1 -1
  198. package/es2021.en/plugins/page-break/page-break.js +1 -1
  199. package/es2021.en/plugins/page-break/page-break.min.js +1 -1
  200. package/es2021.en/plugins/paste-code/paste-code.css +1 -1
  201. package/es2021.en/plugins/paste-code/paste-code.js +1 -1
  202. package/es2021.en/plugins/paste-code/paste-code.min.js +1 -1
  203. package/es2021.en/plugins/paste-from-word/paste-from-word.js +1 -1
  204. package/es2021.en/plugins/paste-from-word/paste-from-word.min.js +1 -1
  205. package/es2021.en/plugins/show-blocks/show-blocks.js +1 -1
  206. package/es2021.en/plugins/show-blocks/show-blocks.min.js +1 -1
  207. package/es2021.en/plugins/style/style.css +1 -1
  208. package/es2021.en/plugins/style/style.js +1 -1
  209. package/es2021.en/plugins/style/style.min.js +1 -1
  210. package/es2021.en/plugins/todo-list/todo-list.css +1 -1
  211. package/es2021.en/plugins/todo-list/todo-list.js +1 -1
  212. package/es2021.en/plugins/todo-list/todo-list.min.js +1 -1
  213. package/es2021.en/plugins/translate/translate.css +1 -1
  214. package/es2021.en/plugins/translate/translate.js +1 -1
  215. package/es2021.en/plugins/translate/translate.min.js +1 -1
  216. package/es2021.en/plugins/tune-block/tune-block.css +1 -1
  217. package/es2021.en/plugins/tune-block/tune-block.js +1 -1
  218. package/es2021.en/plugins/tune-block/tune-block.min.js +1 -1
  219. package/es5/jodit.css +2 -2
  220. package/es5/jodit.fat.min.js +2 -2
  221. package/es5/jodit.js +256 -87
  222. package/es5/jodit.min.css +2 -2
  223. package/es5/jodit.min.js +2 -2
  224. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  225. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.js +221 -174
  226. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.js +2 -2
  227. package/es5/plugins/autocomplete/autocomplete.js +1 -1
  228. package/es5/plugins/autocomplete/autocomplete.min.js +1 -1
  229. package/es5/plugins/backup/backup.css +1 -1
  230. package/es5/plugins/backup/backup.js +1 -1
  231. package/es5/plugins/backup/backup.min.js +1 -1
  232. package/es5/plugins/button-generator/button-generator.css +1 -1
  233. package/es5/plugins/button-generator/button-generator.js +1 -1
  234. package/es5/plugins/button-generator/button-generator.min.js +1 -1
  235. package/es5/plugins/change-case/change-case.js +1 -1
  236. package/es5/plugins/change-case/change-case.min.js +1 -1
  237. package/es5/plugins/color-picker/color-picker.css +1 -1
  238. package/es5/plugins/color-picker/color-picker.js +1 -1
  239. package/es5/plugins/color-picker/color-picker.min.js +1 -1
  240. package/es5/plugins/emoji/emoji.css +1 -1
  241. package/es5/plugins/emoji/emoji.js +1 -1
  242. package/es5/plugins/emoji/emoji.min.js +1 -1
  243. package/es5/plugins/export-docs/export-docs.js +1 -1
  244. package/es5/plugins/export-docs/export-docs.min.js +1 -1
  245. package/es5/plugins/finder/finder.css +1 -1
  246. package/es5/plugins/finder/finder.js +1 -1
  247. package/es5/plugins/finder/finder.min.js +1 -1
  248. package/es5/plugins/google-maps/google-maps.css +1 -1
  249. package/es5/plugins/google-maps/google-maps.js +1 -1
  250. package/es5/plugins/google-maps/google-maps.min.js +1 -1
  251. package/es5/plugins/google-search/google-search.js +1 -1
  252. package/es5/plugins/google-search/google-search.min.js +1 -1
  253. package/es5/plugins/highlight-signature/highlight-signature.js +1 -1
  254. package/es5/plugins/highlight-signature/highlight-signature.min.js +1 -1
  255. package/es5/plugins/iframe-editor/iframe-editor.css +1 -1
  256. package/es5/plugins/iframe-editor/iframe-editor.js +1 -1
  257. package/es5/plugins/iframe-editor/iframe-editor.min.js +1 -1
  258. package/es5/plugins/keyboard/keyboard.css +1 -1
  259. package/es5/plugins/keyboard/keyboard.js +1 -1
  260. package/es5/plugins/keyboard/keyboard.min.js +1 -1
  261. package/es5/plugins/mobile-view/mobile-view.js +1 -1
  262. package/es5/plugins/mobile-view/mobile-view.min.js +1 -1
  263. package/es5/plugins/page-break/page-break.js +1 -1
  264. package/es5/plugins/page-break/page-break.min.js +1 -1
  265. package/es5/plugins/paste-code/paste-code.css +1 -1
  266. package/es5/plugins/paste-code/paste-code.js +1 -1
  267. package/es5/plugins/paste-code/paste-code.min.js +1 -1
  268. package/es5/plugins/paste-from-word/paste-from-word.js +1 -1
  269. package/es5/plugins/paste-from-word/paste-from-word.min.js +1 -1
  270. package/es5/plugins/show-blocks/show-blocks.js +1 -1
  271. package/es5/plugins/show-blocks/show-blocks.min.js +1 -1
  272. package/es5/plugins/style/style.css +1 -1
  273. package/es5/plugins/style/style.js +1 -1
  274. package/es5/plugins/style/style.min.js +1 -1
  275. package/es5/plugins/todo-list/todo-list.css +1 -1
  276. package/es5/plugins/todo-list/todo-list.js +1 -1
  277. package/es5/plugins/todo-list/todo-list.min.js +1 -1
  278. package/es5/plugins/translate/translate.css +1 -1
  279. package/es5/plugins/translate/translate.js +1 -1
  280. package/es5/plugins/translate/translate.min.js +1 -1
  281. package/es5/plugins/tune-block/tune-block.css +1 -1
  282. package/es5/plugins/tune-block/tune-block.js +1 -1
  283. package/es5/plugins/tune-block/tune-block.min.js +1 -1
  284. package/es5/polyfills.fat.min.js +1 -1
  285. package/es5/polyfills.js +1 -1
  286. package/es5/polyfills.min.js +1 -1
  287. package/esm/plugins/ai-assistant-pro/ui/input-area/input-area.d.ts +5 -1
  288. package/esm/plugins/ai-assistant-pro/ui/main-panel/main-panel.d.ts +1 -1
  289. package/esm/plugins/ai-assistant-pro/ui/settings-button/settings-button.d.ts +7 -1
  290. package/esm/plugins/ai-assistant-pro/ui/settings-popup/dialog-settings.d.ts +3 -1
  291. package/esm/plugins/ai-assistant-pro/ui/settings-popup/global-settings.d.ts +5 -1
  292. package/esm/plugins/ai-assistant-pro/ui/settings-popup/settings-popup.d.ts +7 -1
  293. package/package.json +1 -1
  294. package/types/plugins/ai-assistant-pro/ui/input-area/input-area.d.ts +5 -1
  295. package/types/plugins/ai-assistant-pro/ui/main-panel/main-panel.d.ts +1 -1
  296. package/types/plugins/ai-assistant-pro/ui/settings-button/settings-button.d.ts +7 -1
  297. package/types/plugins/ai-assistant-pro/ui/settings-popup/dialog-settings.d.ts +3 -1
  298. package/types/plugins/ai-assistant-pro/ui/settings-popup/global-settings.d.ts +5 -1
  299. package/types/plugins/ai-assistant-pro/ui/settings-popup/settings-popup.d.ts +7 -1
package/es5/jodit.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit-pro - PRO Version of Jodit Editor
3
3
  * Author: Chupurnov Valerii <chupurnov@gmail.com>
4
- * Version: v4.9.21
4
+ * Version: v4.9.25
5
5
  * Url: https://xdsoft.net/jodit/pro/
6
6
  * License(s): SEE LICENSE IN LICENSE.md
7
7
  */
@@ -5571,7 +5571,7 @@ function _ts_values(o) {
5571
5571
  key: "temporaryList",
5572
5572
  value: /**
5573
5573
  * Get temporary list
5574
- * @deprecated
5574
+ * @deprecated Just do not use it, it is not needed anymore
5575
5575
  */ function temporaryList(root) {
5576
5576
  return (0,_helpers_array_to_array_js__WEBPACK_IMPORTED_MODULE_1__.toArray)(root.querySelectorAll("[".concat(_constants_js__WEBPACK_IMPORTED_MODULE_0__.TEMP_ATTR, "]")));
5577
5577
  }
@@ -7679,37 +7679,127 @@ function _create_class(Constructor, protoProps, staticProps) {
7679
7679
 
7680
7680
  var ConfigPrototype = {};
7681
7681
  /**
7682
- * Default Editor's Configuration
7682
+ * Default Editor's Configuration.
7683
+ *
7684
+ * This class holds all default option values for the Jodit editor.
7685
+ * It uses a **private constructor** and a **lazy singleton** pattern — the single instance
7686
+ * is created on the first access to {@link Config.defaultOptions} (also available as `Jodit.defaultOptions`).
7687
+ *
7688
+ * ## How options are resolved
7689
+ *
7690
+ * When you create an editor with `Jodit.make('#editor', userOptions)`, the library
7691
+ * calls {@link ConfigProto}(userOptions, Config.defaultOptions). `ConfigProto` does
7692
+ * **not** deep-clone the defaults. Instead it creates a new object whose JavaScript
7693
+ * prototype is `Config.defaultOptions`:
7694
+ *
7695
+ * ```
7696
+ * userOptions ──[[Prototype]]──► Config.defaultOptions
7697
+ * ```
7698
+ *
7699
+ * Any key present in `userOptions` shadows the default;
7700
+ * any key **not** present falls through to `Config.defaultOptions` via the prototype chain.
7701
+ * Nested plain objects are recursively prototyped in the same way, so partial overrides
7702
+ * of nested options work automatically:
7703
+ *
7704
+ * ```js
7705
+ * // Only override `dialogWidth`; all other `image.*` defaults are still available
7706
+ * Jodit.make('#editor', {
7707
+ * image: { dialogWidth: 500 }
7708
+ * });
7709
+ * ```
7710
+ *
7711
+ * ## How plugins extend the config
7712
+ *
7713
+ * Each plugin adds its own defaults by assigning to `Config.prototype` and augmenting
7714
+ * the TypeScript type with `declare module`:
7715
+ *
7716
+ * ```ts
7717
+ * // 1. Type augmentation (compile-time)
7718
+ * declare module 'jodit/config' {
7719
+ * interface Config {
7720
+ * toolbarSticky: boolean;
7721
+ * }
7722
+ * }
7723
+ *
7724
+ * // 2. Runtime default
7725
+ * Config.prototype.toolbarSticky = true;
7726
+ * ```
7727
+ *
7728
+ * Because the constructor runs `Object.assign(this, ConfigPrototype)` (where
7729
+ * `ConfigPrototype` is captured as `Config.prototype` after the class definition),
7730
+ * all prototype-level values — including those added by plugins — are materialized
7731
+ * as own properties on the singleton. This means `Config.defaultOptions` always
7732
+ * contains every registered option as an own, enumerable property.
7733
+ *
7734
+ * ## Changing global defaults
7735
+ *
7736
+ * You can modify `Jodit.defaultOptions` **before** creating editors to change
7737
+ * defaults globally:
7738
+ *
7739
+ * ```js
7740
+ * Jodit.defaultOptions.language = 'de';
7741
+ * Jodit.defaultOptions.theme = 'dark';
7742
+ *
7743
+ * // Both editors inherit the new defaults
7744
+ * Jodit.make('#editor1');
7745
+ * Jodit.make('#editor2');
7746
+ * ```
7747
+ *
7748
+ * ## `Jodit.atom` — preventing deep merge
7749
+ *
7750
+ * By default, `ConfigProto` deep-merges nested plain objects and arrays.
7751
+ * Wrap a value with `Jodit.atom(value)` to make it **atomic** — it will completely
7752
+ * replace the default instead of being merged:
7753
+ *
7754
+ * ```js
7755
+ * Jodit.make('#editor', {
7756
+ * controls: {
7757
+ * fontsize: {
7758
+ * // Replace the entire list rather than merging with the default one
7759
+ * list: Jodit.atom([8, 9, 10])
7760
+ * }
7761
+ * }
7762
+ * });
7763
+ * ```
7764
+ *
7765
+ * `Jodit.atom` calls {@link markAsAtomic}, which sets a non-enumerable
7766
+ * `isAtom` flag on the object. `ConfigProto` checks this flag and skips
7767
+ * recursive merging when it is present. Note: top-level arrays (depth 0)
7768
+ * are always treated as atomic — they replace rather than merge.
7769
+ *
7770
+ * @see {@link ConfigProto} for the full merge algorithm
7771
+ * @see {@link markAsAtomic} / {@link isAtom} for the atom marker implementation
7683
7772
  */ var Config = /*#__PURE__*/ function() {
7684
7773
  "use strict";
7685
7774
  function Config() {
7686
7775
  _class_call_check(this, Config);
7687
7776
  /**
7688
- * Use cache for heavy methods
7777
+ * When enabled, the editor caches the results of expensive computations (e.g. toolbar rebuilds)
7778
+ * to improve performance. Disable for debugging or when options change frequently at runtime.
7689
7779
  */ this.cache = true;
7690
7780
  /**
7691
7781
  * Timeout of all asynchronous methods
7692
7782
  */ this.defaultTimeout = 100;
7693
- this.namespace = '';
7783
+ /**
7784
+ * Prefix used for CSS class names and local-storage keys to avoid collisions
7785
+ * when multiple editor instances or applications share the same page.
7786
+ */ this.namespace = '';
7694
7787
  /**
7695
7788
  * Editor loads completely without plugins. Useful when debugging your own plugin.
7696
7789
  */ this.safeMode = false;
7697
7790
  /**
7698
7791
  * Editor's width
7699
7792
  *
7700
- * @example
7701
7793
  * ```javascript
7702
7794
  * Jodit.make('.editor', {
7703
7795
  * width: '100%',
7704
7796
  * })
7705
7797
  * ```
7706
- * @example
7707
7798
  * ```javascript
7708
7799
  * Jodit.make('.editor', {
7709
7800
  * width: 600, // equivalent for '600px'
7710
7801
  * })
7711
7802
  * ```
7712
- * @example
7713
7803
  * ```javascript
7714
7804
  * Jodit.make('.editor', {
7715
7805
  * width: 'auto', // autosize
@@ -7719,19 +7809,16 @@ var ConfigPrototype = {};
7719
7809
  /**
7720
7810
  * Editor's height
7721
7811
  *
7722
- * @example
7723
7812
  * ```javascript
7724
7813
  * Jodit.make('.editor', {
7725
7814
  * height: '100%',
7726
7815
  * })
7727
7816
  * ```
7728
- * @example
7729
7817
  * ```javascript
7730
7818
  * Jodit.make('.editor', {
7731
7819
  * height: 600, // equivalent for '600px'
7732
7820
  * })
7733
7821
  * ```
7734
- * @example
7735
7822
  * ```javascript
7736
7823
  * Jodit.make('.editor', {
7737
7824
  * height: 'auto', // default - autosize
@@ -7768,7 +7855,32 @@ var ConfigPrototype = {};
7768
7855
  * });
7769
7856
  * ```
7770
7857
  */ this.preset = 'custom';
7771
- this.presets = {
7858
+ /**
7859
+ * Dictionary of named configuration presets. Each key is a preset name and the value
7860
+ * is a partial options object that will be merged into the editor config when
7861
+ * {@link Config.preset} matches the key.
7862
+ *
7863
+ * ```javascript
7864
+ * // Use a built-in preset
7865
+ * Jodit.make('#editor', {
7866
+ * preset: 'inline'
7867
+ * });
7868
+ * ```
7869
+ *
7870
+ * ```javascript
7871
+ * // Define and use a custom preset
7872
+ * Jodit.defaultOptions.presets.myCompact = {
7873
+ * toolbarButtonSize: 'small',
7874
+ * showCharsCounter: false,
7875
+ * showWordsCounter: false,
7876
+ * showXPathInStatusbar: false
7877
+ * };
7878
+ *
7879
+ * Jodit.make('#editor', {
7880
+ * preset: 'myCompact'
7881
+ * });
7882
+ * ```
7883
+ */ this.presets = {
7772
7884
  inline: {
7773
7885
  inline: true,
7774
7886
  toolbar: false,
@@ -7780,7 +7892,10 @@ var ConfigPrototype = {};
7780
7892
  showPlaceholder: false
7781
7893
  }
7782
7894
  };
7783
- this.ownerDocument = _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.globalDocument;
7895
+ /**
7896
+ * The Document object the editor operates within. Defaults to the current `document`.
7897
+ * Override when the editor is created inside an iframe or a different browsing context.
7898
+ */ this.ownerDocument = _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.globalDocument;
7784
7899
  /**
7785
7900
  * Allows you to specify the window in which the editor will be created. Default - window
7786
7901
  * This is necessary if you are creating the editor inside an iframe but the code is running in the parent window
@@ -7811,7 +7926,9 @@ var ConfigPrototype = {};
7811
7926
  * ```
7812
7927
  */ this.shadowRoot = null;
7813
7928
  /**
7814
- * z-index For editor
7929
+ * Base CSS `z-index` for the editor UI (toolbar, popups, dialogs).
7930
+ * Set to a higher value when other page elements overlap the editor.
7931
+ * `0` means no explicit z-index is applied.
7815
7932
  */ this.zIndex = 0;
7816
7933
  /**
7817
7934
  * Change the read-only state of the editor
@@ -7847,7 +7964,6 @@ var ConfigPrototype = {};
7847
7964
  /**
7848
7965
  * Size of icons in the toolbar (can be "small", "middle", "large")
7849
7966
  *
7850
- * @example
7851
7967
  * ```javascript
7852
7968
  * const editor = Jodit.make(".dark_editor", {
7853
7969
  * toolbarButtonSize: "small"
@@ -7858,11 +7974,13 @@ var ConfigPrototype = {};
7858
7974
  * Allow navigation in the toolbar of the editor by Tab key
7859
7975
  */ this.allowTabNavigation = false;
7860
7976
  /**
7861
- * Inline editing mode
7977
+ * When enabled, the editor renders without its own container chrome (toolbar, borders, statusbar).
7978
+ * The editable area becomes the element itself. Typically combined with
7979
+ * `toolbarInline: true` so a floating toolbar appears on selection.
7862
7980
  */ this.inline = false;
7863
7981
  /**
7864
7982
  * Theme (can be "dark")
7865
- * @example
7983
+ *
7866
7984
  * ```javascript
7867
7985
  * const editor = Jodit.make(".dark_editor", {
7868
7986
  * theme: "dark"
@@ -7875,10 +7993,9 @@ var ConfigPrototype = {};
7875
7993
  /**
7876
7994
  * Class name that can be appended to the editable area
7877
7995
  *
7878
- * @see [[Config.iframeCSSLinks]]
7879
- * @see [[Config.iframeStyle]]
7996
+ * @see {@link Config.iframeCSSLinks}
7997
+ * @see {@link Config.iframeStyle}
7880
7998
  *
7881
- * @example
7882
7999
  * ```javascript
7883
8000
  * Jodit.make('#editor', {
7884
8001
  * editorClassName: 'some_my_class'
@@ -7894,7 +8011,7 @@ var ConfigPrototype = {};
7894
8011
  */ this.editorClassName = false;
7895
8012
  /**
7896
8013
  * Class name that can be appended to the main editor container
7897
- * @example
8014
+ *
7898
8015
  * ```javascript
7899
8016
  * const jodit = Jodit.make('#editor', {
7900
8017
  * className: 'some_my_class'
@@ -7914,7 +8031,7 @@ var ConfigPrototype = {};
7914
8031
  /**
7915
8032
  * The internal styles of the editable area. They are intended to change
7916
8033
  * not the appearance of the editor, but to change the appearance of the content.
7917
- * @example
8034
+ *
7918
8035
  * ```javascript
7919
8036
  * Jodit.make('#editor', {
7920
8037
  * style: {
@@ -7925,13 +8042,14 @@ var ConfigPrototype = {};
7925
8042
  * ```
7926
8043
  */ this.style = false;
7927
8044
  /**
8045
+ * Inline CSS styles applied to the outer editor container element.
8046
+ * Use this to style the editor wrapper (borders, background, etc.) without affecting content.
7928
8047
  *
7929
- * @example
7930
8048
  * ```javascript
7931
8049
  * Jodit.make('#editor', {
7932
- * editorStyle: {
7933
- * font: '12px Arial',
7934
- * color: '#0c0c0c'
8050
+ * containerStyle: {
8051
+ * border: '1px solid #ccc',
8052
+ * background: '#f9f9f9'
7935
8053
  * }
7936
8054
  * });
7937
8055
  * ```
@@ -7940,7 +8058,6 @@ var ConfigPrototype = {};
7940
8058
  * Dictionary of variable values in css, a complete list can be found here
7941
8059
  * https://github.com/xdan/jodit/blob/main/src/styles/variables.less#L25
7942
8060
  *
7943
- * @example
7944
8061
  * ```js
7945
8062
  * const editor = Jodit.make('#editor', {
7946
8063
  * styleValues: {
@@ -7952,9 +8069,9 @@ var ConfigPrototype = {};
7952
8069
  * ```
7953
8070
  */ this.styleValues = {};
7954
8071
  /**
7955
- * After all, changes in editors for textarea will call change trigger
8072
+ * When enabled, the editor dispatches a native `change` event on the original
8073
+ * `<textarea>` element whenever the content changes, so standard DOM listeners work.
7956
8074
  *
7957
- * @example
7958
8075
  * ```javascript
7959
8076
  * const editor = Jodit.make('#editor');
7960
8077
  * document.getElementById('editor').addEventListener('change', function () {
@@ -7968,7 +8085,6 @@ var ConfigPrototype = {};
7968
8085
  * the page element direction. 'ltr' – Indicates a Left-To-Right text direction (like in English).
7969
8086
  * 'rtl' – Indicates a Right-To-Left text direction (like in Arabic).
7970
8087
  *
7971
- * @example
7972
8088
  * ```javascript
7973
8089
  * Jodit.make('.editor', {
7974
8090
  * direction: 'rtl'
@@ -7980,7 +8096,6 @@ var ConfigPrototype = {};
7980
8096
  * (navigator.language && navigator.language.substr(0, 2)) ||
7981
8097
  * (navigator.browserLanguage && navigator.browserLanguage.substr(0, 2)) || 'en'
7982
8098
  *
7983
- * @example
7984
8099
  * ```html
7985
8100
  * <!-- include in you page lang file -->
7986
8101
  * <script src="jodit/lang/de.js"></script>
@@ -7994,7 +8109,6 @@ var ConfigPrototype = {};
7994
8109
  /**
7995
8110
  * if true all Lang.i18n(key) return `{key}`
7996
8111
  *
7997
- * @example
7998
8112
  * ```html
7999
8113
  * <script>
8000
8114
  * var editor = Jodit.make('.editor', {
@@ -8008,7 +8122,6 @@ var ConfigPrototype = {};
8008
8122
  /**
8009
8123
  * Collection of language pack data `{en: {'Type something': 'Type something', ...}}`
8010
8124
  *
8011
- * @example
8012
8125
  * ```javascript
8013
8126
  * const editor = Jodit.make('#editor', {
8014
8127
  * language: 'ru',
@@ -8040,11 +8153,11 @@ var ConfigPrototype = {};
8040
8153
  * Delay before show tooltip
8041
8154
  */ this.showTooltipDelay = 200;
8042
8155
  /**
8043
- * Instead of create custop tooltip - use native title tooltips
8156
+ * Instead of creating a custom tooltip, use the browser's native title tooltips
8044
8157
  */ this.useNativeTooltip = false;
8045
8158
  /**
8046
- * Default insert method
8047
- * @default insert_as_html
8159
+ * How pasted content is inserted into the editor by default.
8160
+ * Possible values: `insert_as_html`, `insert_as_text`, `insert_only_text`, `insert_clear_html`.
8048
8161
  */ this.defaultActionOnPaste = _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.INSERT_AS_HTML;
8049
8162
  // TODO
8050
8163
  // autosave: false, // false or url
@@ -8057,7 +8170,6 @@ var ConfigPrototype = {};
8057
8170
  /**
8058
8171
  * When this option is enabled, the editor's content will be placed in an iframe and isolated from the rest of the page.
8059
8172
  *
8060
- * @example
8061
8173
  * ```javascript
8062
8174
  * Jodit.make('#editor', {
8063
8175
  * iframe: true,
@@ -8069,7 +8181,7 @@ var ConfigPrototype = {};
8069
8181
  /**
8070
8182
  * Allow editing the entire HTML document(html, head)
8071
8183
  * \> Works together with the iframe option.
8072
- * @example
8184
+ *
8073
8185
  * ```js
8074
8186
  * const editor = Jodit.make('#editor', {
8075
8187
  * iframe: true,
@@ -8088,7 +8200,7 @@ var ConfigPrototype = {};
8088
8200
  /**
8089
8201
  * Jodit.MODE_WYSIWYG The HTML editor allows you to write like MSWord,
8090
8202
  * Jodit.MODE_SOURCE syntax highlighting source editor
8091
- * @example
8203
+ *
8092
8204
  * ```javascript
8093
8205
  * var editor = Jodit.make('#editor', {
8094
8206
  * defaultMode: Jodit.MODE_SPLIT
@@ -8097,11 +8209,11 @@ var ConfigPrototype = {};
8097
8209
  * ```
8098
8210
  */ this.defaultMode = _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.MODE_WYSIWYG;
8099
8211
  /**
8100
- * Use split mode
8212
+ * When enabled, the editor displays both the WYSIWYG view and the source-code view side by side.
8101
8213
  */ this.useSplitMode = false;
8102
8214
  /**
8103
8215
  * The colors in HEX representation to select a color for the background and for the text in colorpicker
8104
- * @example
8216
+ *
8105
8217
  * ```javascript
8106
8218
  * Jodit.make('#editor', {
8107
8219
  * colors: ['#ff0000', '#00ff00', '#0000ff']
@@ -8197,7 +8309,7 @@ var ConfigPrototype = {};
8197
8309
  };
8198
8310
  /**
8199
8311
  * The default tab color picker
8200
- * @example
8312
+ *
8201
8313
  * ```javascript
8202
8314
  * Jodit.make('#editor2', {
8203
8315
  * colorPickerDefaultTab: 'color'
@@ -8205,11 +8317,11 @@ var ConfigPrototype = {};
8205
8317
  * ```
8206
8318
  */ this.colorPickerDefaultTab = 'background';
8207
8319
  /**
8208
- * Image size defaults to a larger image
8320
+ * Default width (in pixels) applied to images inserted into the editor
8209
8321
  */ this.imageDefaultWidth = 300;
8210
8322
  /**
8211
8323
  * Do not display these buttons that are on the list
8212
- * @example
8324
+ *
8213
8325
  * ```javascript
8214
8326
  * Jodit.make('#editor2', {
8215
8327
  * removeButtons: ['hr', 'source']
@@ -8218,7 +8330,7 @@ var ConfigPrototype = {};
8218
8330
  */ this.removeButtons = [];
8219
8331
  /**
8220
8332
  * Do not init these plugins
8221
- * @example
8333
+ *
8222
8334
  * ```typescript
8223
8335
  * var editor = Jodit.make('.editor', {
8224
8336
  * disablePlugins: 'table,iframe'
@@ -8231,7 +8343,7 @@ var ConfigPrototype = {};
8231
8343
  */ this.disablePlugins = [];
8232
8344
  /**
8233
8345
  * Init and download extra plugins
8234
- * @example
8346
+ *
8235
8347
  * ```typescript
8236
8348
  * var editor = Jodit.make('.editor', {
8237
8349
  * extraPlugins: ['emoji']
@@ -8240,14 +8352,13 @@ var ConfigPrototype = {};
8240
8352
  * It will try load %SCRIPT_PATH%/plugins/emoji/emoji.js and after load will try init it
8241
8353
  */ this.extraPlugins = [];
8242
8354
  /**
8243
- * These buttons list will be added to the option. Buttons
8355
+ * Additional buttons appended to the {@link Config.buttons} list
8244
8356
  */ this.extraButtons = [];
8245
8357
  /**
8246
8358
  * By default, you can only install an icon from the Jodit suite.
8247
8359
  * You can add your icon to the set using the `Jodit.modules.Icon.set (name, svg Code)` method.
8248
8360
  * But for a declarative declaration, you can use this option.
8249
8361
  *
8250
- * @example
8251
8362
  * ```js
8252
8363
  * Jodit.modules.Icon.set('someIcon', '<svg><path.../></svg>');
8253
8364
  * const editor = Jodit.make({
@@ -8256,8 +8367,9 @@ var ConfigPrototype = {};
8256
8367
  * icon: 'someIcon'
8257
8368
  * }]
8258
8369
  * });
8370
+ * ```
8259
8371
  *
8260
- * @example
8372
+ * ```js
8261
8373
  * const editor = Jodit.make({
8262
8374
  * extraIcons: {
8263
8375
  * someIcon: '<svg><path.../></svg>'
@@ -8268,7 +8380,7 @@ var ConfigPrototype = {};
8268
8380
  * }]
8269
8381
  * });
8270
8382
  * ```
8271
- * @example
8383
+ *
8272
8384
  * ```js
8273
8385
  * const editor = Jodit.make({
8274
8386
  * extraButtons: [{
@@ -8280,7 +8392,7 @@ var ConfigPrototype = {};
8280
8392
  */ this.extraIcons = {};
8281
8393
  /**
8282
8394
  * Default attributes for created inside editor elements
8283
- * @example
8395
+ *
8284
8396
  * ```js
8285
8397
  * const editor2 = Jodit.make('#editor', {
8286
8398
  * createAttributes: {
@@ -8300,7 +8412,7 @@ var ConfigPrototype = {};
8300
8412
  * expect(ul.className).equals('ui-test');
8301
8413
  * ```
8302
8414
  * Or JSX in React
8303
- * @example
8415
+ *
8304
8416
  * ```jsx
8305
8417
  * import React, {useState, useRef} from 'react';
8306
8418
  * import JoditEditor from "jodit-react";
@@ -8332,7 +8444,7 @@ var ConfigPrototype = {};
8332
8444
  /**
8333
8445
  * The list of buttons that appear in the editor's toolbar on large places (≥ options.sizeLG).
8334
8446
  * Note - this is not the width of the device, the width of the editor
8335
- * @example
8447
+ *
8336
8448
  * ```javascript
8337
8449
  * Jodit.make('#editor', {
8338
8450
  * buttons: ['bold', 'italic', 'source'],
@@ -8340,7 +8452,7 @@ var ConfigPrototype = {};
8340
8452
  * buttonsXS: ['bold', 'fullsize'],
8341
8453
  * });
8342
8454
  * ```
8343
- * @example
8455
+ *
8344
8456
  * ```javascript
8345
8457
  * Jodit.make('#editor2', {
8346
8458
  * buttons: [{
@@ -8364,7 +8476,7 @@ var ConfigPrototype = {};
8364
8476
  * }]
8365
8477
  * });
8366
8478
  * ```
8367
- * @example
8479
+ *
8368
8480
  * ```javascript
8369
8481
  * Jodit.make('#editor2', {
8370
8482
  * buttons: Jodit.defaultOptions.buttons.concat([{
@@ -8485,7 +8597,7 @@ var ConfigPrototype = {};
8485
8597
  * ```
8486
8598
  */ this.events = {};
8487
8599
  /**
8488
- * Buttons in toolbat without SVG - only texts
8600
+ * Buttons in toolbar without SVG - only texts
8489
8601
  */ this.textIcons = false;
8490
8602
  /**
8491
8603
  * Element for dialog container
@@ -10944,7 +11056,7 @@ var UIButton = /*#__PURE__*/ function(UIElement) {
10944
11056
  key: "onChangeText",
10945
11057
  value: function onChangeText() {
10946
11058
  this.text.textContent = this.jodit.i18n(this.state.text);
10947
- this.__updateAriaLabel();
11059
+ this.updateAriaLabel();
10948
11060
  }
10949
11061
  },
10950
11062
  {
@@ -10982,12 +11094,12 @@ var UIButton = /*#__PURE__*/ function(UIElement) {
10982
11094
  (0,_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_8__.attr)(this.container, 'title', i8nTooltip);
10983
11095
  }
10984
11096
  (0,_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_8__.attr)(this.container, 'aria-label', i8nTooltip);
10985
- this.__updateAriaLabel();
11097
+ this.updateAriaLabel();
10986
11098
  }
10987
11099
  },
10988
11100
  {
10989
- key: "__updateAriaLabel",
10990
- value: function __updateAriaLabel() {
11101
+ key: "updateAriaLabel",
11102
+ value: function updateAriaLabel() {
10991
11103
  var hasText = this.state.text.trim().length > 0;
10992
11104
  var i8nTooltip = this.state.tooltip ? this.jodit.i18n(this.state.tooltip) : null;
10993
11105
  (0,_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_8__.attr)(this.container, 'aria-label', i8nTooltip);
@@ -11650,6 +11762,12 @@ var ToolbarCollection = /*#__PURE__*/ function(UIList) {
11650
11762
  return 'ToolbarCollection';
11651
11763
  }
11652
11764
  },
11765
+ {
11766
+ key: "getRole",
11767
+ value: function getRole() {
11768
+ return 'toolbar';
11769
+ }
11770
+ },
11653
11771
  {
11654
11772
  key: "firstButton",
11655
11773
  get: /**
@@ -20530,11 +20648,17 @@ var UIList = /*#__PURE__*/ function(UIGroup1) {
20530
20648
  }
20531
20649
  _create_class(UIList, [
20532
20650
  {
20533
- /** @override */ key: "className",
20651
+ key: "className",
20534
20652
  value: function className() {
20535
20653
  return 'UIList';
20536
20654
  }
20537
20655
  },
20656
+ {
20657
+ key: "getRole",
20658
+ value: function getRole() {
20659
+ return 'list';
20660
+ }
20661
+ },
20538
20662
  {
20539
20663
  key: "__onChangeMode",
20540
20664
  value: function __onChangeMode() {
@@ -20545,8 +20669,10 @@ var UIList = /*#__PURE__*/ function(UIGroup1) {
20545
20669
  /**
20546
20670
  * Make new group and append it in list of elements
20547
20671
  */ key: "makeGroup",
20548
- value: function makeGroup() {
20549
- return new _group_js__WEBPACK_IMPORTED_MODULE_6__.UIGroup(this.jodit);
20672
+ value: function makeGroup(role) {
20673
+ return new _group_js__WEBPACK_IMPORTED_MODULE_6__.UIGroup(this.jodit, [], role ? {
20674
+ role: role
20675
+ } : undefined);
20550
20676
  }
20551
20677
  },
20552
20678
  {
@@ -20586,7 +20712,7 @@ var UIList = /*#__PURE__*/ function(UIGroup1) {
20586
20712
  items = (0,_helpers_array_split_array_js__WEBPACK_IMPORTED_MODULE_4__.splitArray)(items);
20587
20713
  this.clear();
20588
20714
  var lastBtnSeparator = false;
20589
- var line = this.makeGroup();
20715
+ var line = this.makeGroup('group');
20590
20716
  this.append(line);
20591
20717
  line.setMod('line', true);
20592
20718
  var group;
@@ -20594,7 +20720,7 @@ var UIList = /*#__PURE__*/ function(UIGroup1) {
20594
20720
  var elm = null;
20595
20721
  switch(control.name){
20596
20722
  case '\n':
20597
- line = _this.makeGroup();
20723
+ line = _this.makeGroup('group');
20598
20724
  line.setMod('line', true);
20599
20725
  group = _this.makeGroup();
20600
20726
  line.append(group);
@@ -30331,6 +30457,7 @@ var ToolbarEditorCollection = /*#__PURE__*/ function(ToolbarCollection) {
30331
30457
  */ key: "prependInvisibleInput",
30332
30458
  value: function prependInvisibleInput(container) {
30333
30459
  var input = this.j.create.element('input', {
30460
+ name: 'jodit-toolbar-focus-helper_' + this.j.id,
30334
30461
  tabIndex: -1,
30335
30462
  disabled: true,
30336
30463
  style: 'width: 0; height:0; position: absolute; visibility: hidden;'
@@ -36764,9 +36891,10 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.toolbarStickyOffset = 0
36764
36891
  /* harmony import */ var _decorators_derive_derive_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(55153);
36765
36892
  /* harmony import */ var _dom_dom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2748);
36766
36893
  /* harmony import */ var _helpers_checker_is_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(70799);
36767
- /* harmony import */ var _traits_elms_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14316);
36768
- /* harmony import */ var _traits_mods_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(34176);
36769
- /* harmony import */ var _icon_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(12153);
36894
+ /* harmony import */ var _helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(29960);
36895
+ /* harmony import */ var _traits_elms_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(14316);
36896
+ /* harmony import */ var _traits_mods_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(34176);
36897
+ /* harmony import */ var _icon_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(12153);
36770
36898
  function _assert_this_initialized(self) {
36771
36899
  if (self === void 0) {
36772
36900
  throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
@@ -36881,6 +37009,7 @@ var UIElement_1;
36881
37009
 
36882
37010
 
36883
37011
 
37012
+
36884
37013
  var UIElement = UIElement_1 = /*#__PURE__*/ function(ViewComponent) {
36885
37014
  "use strict";
36886
37015
  _inherits(UIElement, ViewComponent);
@@ -36893,7 +37022,10 @@ var UIElement = UIElement_1 = /*#__PURE__*/ function(ViewComponent) {
36893
37022
  _this.name = '';
36894
37023
  _this.__parentElement = null;
36895
37024
  _this.mods = {};
37025
+ _this.options = options;
36896
37026
  _this.container = _this.createContainer(options);
37027
+ var role = _this.getRole();
37028
+ role && (0,_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__.attr)(_this.container, 'role', role);
36897
37029
  Object.defineProperty(_this.container, 'component', {
36898
37030
  value: _this,
36899
37031
  configurable: true
@@ -36901,6 +37033,13 @@ var UIElement = UIElement_1 = /*#__PURE__*/ function(ViewComponent) {
36901
37033
  return _this;
36902
37034
  }
36903
37035
  _create_class(UIElement, [
37036
+ {
37037
+ key: "getRole",
37038
+ value: function getRole() {
37039
+ var _a;
37040
+ return ((_a = this.options) === null || _a === void 0 ? void 0 : _a.role) || '';
37041
+ }
37042
+ },
36904
37043
  {
36905
37044
  key: "parentElement",
36906
37045
  get: function get() {
@@ -37018,7 +37157,7 @@ var UIElement = UIElement_1 = /*#__PURE__*/ function(ViewComponent) {
37018
37157
  value: function parseTemplate(result) {
37019
37158
  var _this = this;
37020
37159
  return this.j.c.fromHTML(result.replace(/\*([^*]+?)\*/g, function(_, name) {
37021
- return _icon_js__WEBPACK_IMPORTED_MODULE_6__.Icon.get(name) || '';
37160
+ return _icon_js__WEBPACK_IMPORTED_MODULE_7__.Icon.get(name) || '';
37022
37161
  }).replace(/&_/g, this.componentName + '_').replace(/~([^~]+?)~/g, function(_, s) {
37023
37162
  return _this.i18n(s);
37024
37163
  }));
@@ -37052,7 +37191,7 @@ var UIElement = UIElement_1 = /*#__PURE__*/ function(ViewComponent) {
37052
37191
  return UIElement;
37053
37192
  }(_component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewComponent);
37054
37193
  UIElement = UIElement_1 = __decorate([
37055
- (0,_decorators_derive_derive_js__WEBPACK_IMPORTED_MODULE_1__.derive)(_traits_mods_js__WEBPACK_IMPORTED_MODULE_5__.Mods, _traits_elms_js__WEBPACK_IMPORTED_MODULE_4__.Elms)
37194
+ (0,_decorators_derive_derive_js__WEBPACK_IMPORTED_MODULE_1__.derive)(_traits_mods_js__WEBPACK_IMPORTED_MODULE_6__.Mods, _traits_elms_js__WEBPACK_IMPORTED_MODULE_5__.Elms)
37056
37195
  ], UIElement);
37057
37196
 
37058
37197
 
@@ -47545,6 +47684,13 @@ var UIGroup = UIGroup_1 = /*#__PURE__*/ function(UIElement) {
47545
47684
  return 'UIGroup';
47546
47685
  }
47547
47686
  },
47687
+ {
47688
+ key: "getRole",
47689
+ value: function getRole() {
47690
+ var _a;
47691
+ return ((_a = this.options) === null || _a === void 0 ? void 0 : _a.role) || 'list';
47692
+ }
47693
+ },
47548
47694
  {
47549
47695
  key: "allChildren",
47550
47696
  get: /**
@@ -58027,6 +58173,22 @@ var ToolbarButton = /*#__PURE__*/ function(UIButton) {
58027
58173
  return 'ToolbarButton';
58028
58174
  }
58029
58175
  },
58176
+ {
58177
+ key: "getRole",
58178
+ value: function getRole() {
58179
+ return 'listitem';
58180
+ }
58181
+ },
58182
+ {
58183
+ key: "updateAriaLabel",
58184
+ value: function updateAriaLabel() {
58185
+ _get(_get_prototype_of(ToolbarButton.prototype), "updateAriaLabel", this).call(this);
58186
+ if (this.trigger) {
58187
+ var i8nTooltip = this.state.tooltip ? this.jodit.i18n(this.state.tooltip) : null;
58188
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_14__.attr)(this.trigger, 'aria-label', i8nTooltip);
58189
+ }
58190
+ }
58191
+ },
58030
58192
  {
58031
58193
  key: "toolbar",
58032
58194
  get: /**
@@ -58117,14 +58279,13 @@ var ToolbarButton = /*#__PURE__*/ function(UIButton) {
58117
58279
  var cn = this.componentName;
58118
58280
  var container = this.j.c.span(cn);
58119
58281
  var button = _get(_get_prototype_of(ToolbarButton.prototype), "createContainer", this).call(this);
58120
- (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_14__.attr)(container, 'role', 'listitem');
58121
58282
  button.classList.remove(cn);
58122
58283
  button.classList.add(cn + '__button');
58123
58284
  Object.defineProperty(button, 'component', {
58124
58285
  value: this
58125
58286
  });
58126
58287
  container.appendChild(button);
58127
- var trigger = this.j.c.fromHTML('<span role="trigger" class="'.concat(cn, '__trigger">').concat(_core_ui_icon_js__WEBPACK_IMPORTED_MODULE_18__.Icon.get('chevron'), "</span>"));
58288
+ var trigger = this.j.c.fromHTML('<span role="button" aria-haspopup="true" aria-expanded="false" class="'.concat(cn, '__trigger">').concat(_core_ui_icon_js__WEBPACK_IMPORTED_MODULE_18__.Icon.get('chevron'), "</span>"));
58128
58289
  // For caching
58129
58290
  button.appendChild(trigger);
58130
58291
  return container;
@@ -58199,6 +58360,7 @@ var ToolbarButton = /*#__PURE__*/ function(UIButton) {
58199
58360
  return;
58200
58361
  }
58201
58362
  var _this1 = this, ctr = _this1.control;
58363
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_14__.attr)(this.trigger, 'aria-expanded', true);
58202
58364
  e.buffer = {
58203
58365
  actionTrigger: this
58204
58366
  };
@@ -58332,6 +58494,9 @@ var ToolbarButton = /*#__PURE__*/ function(UIButton) {
58332
58494
  this.openedPopup.close();
58333
58495
  this.openedPopup.destruct();
58334
58496
  this.openedPopup = null;
58497
+ if (this.trigger) {
58498
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_14__.attr)(this.trigger, 'aria-expanded', false);
58499
+ }
58335
58500
  }
58336
58501
  }
58337
58502
  },
@@ -62788,13 +62953,12 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.maxWidth = '100%';
62788
62953
  /**
62789
62954
  * Editor's min-height
62790
62955
  *
62791
- * @example
62792
62956
  * ```javascript
62793
62957
  * Jodit.make('.editor', {
62794
62958
  * minHeight: '30%' //min-height: 30%
62795
62959
  * })
62796
62960
  * ```
62797
- * @example
62961
+ *
62798
62962
  * ```javascript
62799
62963
  * Jodit.make('.editor', {
62800
62964
  * minHeight: 200 //min-height: 200px
@@ -64171,7 +64335,7 @@ function _unsupported_iterable_to_array(o, minLen) {
64171
64335
  if (n === "Map" || n === "Set") return Array.from(n);
64172
64336
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
64173
64337
  }
64174
- var APP_VERSION = "4.9.21";
64338
+ var APP_VERSION = "4.9.25";
64175
64339
  // prettier-ignore
64176
64340
  var ES = "es5";
64177
64341
  var IS_ES_MODERN = false;
@@ -64946,11 +65110,13 @@ ToolbarSelect = __decorate([
64946
65110
  /* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
64947
65111
  /* harmony import */ var _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(22732);
64948
65112
  /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(580);
64949
- /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21537);
64950
- /* harmony import */ var _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(50911);
64951
- /* harmony import */ var _modules_context_menu_context_menu_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(80870);
64952
- /* harmony import */ var _modules_toolbar_factory_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(21491);
64953
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(86012);
65113
+ /* harmony import */ var _core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(49055);
65114
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(29960);
65115
+ /* harmony import */ var _core_helpers_utils_selector_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(76078);
65116
+ /* harmony import */ var _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(50911);
65117
+ /* harmony import */ var _modules_context_menu_context_menu_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(80870);
65118
+ /* harmony import */ var _modules_toolbar_factory_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(21491);
65119
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(86012);
64954
65120
  function _assert_this_initialized(self) {
64955
65121
  if (self === void 0) {
64956
65122
  throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
@@ -65110,6 +65276,8 @@ function _is_native_reflect_construct() {
65110
65276
 
65111
65277
 
65112
65278
 
65279
+
65280
+
65113
65281
  /**
65114
65282
  * Show a path to a current element in status bar
65115
65283
  */ var xpath = /*#__PURE__*/ function(Plugin) {
@@ -65121,7 +65289,7 @@ function _is_native_reflect_construct() {
65121
65289
  _this = _call_super(this, xpath, arguments);
65122
65290
  _this.onContext = function(bindElement, event) {
65123
65291
  if (!_this.menu) {
65124
- _this.menu = new _modules_context_menu_context_menu_js__WEBPACK_IMPORTED_MODULE_5__.ContextMenu(_this.j);
65292
+ _this.menu = new _modules_context_menu_context_menu_js__WEBPACK_IMPORTED_MODULE_7__.ContextMenu(_this.j);
65125
65293
  }
65126
65294
  _this.menu.show(event.clientX, event.clientY, [
65127
65295
  {
@@ -65148,7 +65316,7 @@ function _is_native_reflect_construct() {
65148
65316
  };
65149
65317
  _this.onSelectPath = function(bindElement, event) {
65150
65318
  _this.j.s.focus();
65151
- var path = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(event.target, '-path') || '/';
65319
+ var path = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__.attr)(event.target, '-path') || '/';
65152
65320
  if (path === '/') {
65153
65321
  _this.j.execCommand('selectall');
65154
65322
  return false;
@@ -65164,7 +65332,7 @@ function _is_native_reflect_construct() {
65164
65332
  return false;
65165
65333
  };
65166
65334
  _this.tpl = function(bindElement, path, name, title) {
65167
- var item = _this.j.c.fromHTML('<span class="jodit-xpath__item"><a role="button" data-path="'.concat(path, '" title="').concat(title, '" tabindex="-1"\'>').concat((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.trim)(name), "</a></span>"));
65335
+ var item = _this.j.c.fromHTML('<span class="jodit-xpath__item"><a role="button" data-path="'.concat(path, '" title="').concat(title, '" tabindex="-1"\'>').concat((0,_core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_3__.trim)(name), "</a></span>"));
65168
65336
  var a = item.firstChild;
65169
65337
  _this.j.e.on(a, 'click', _this.onSelectPath.bind(_this, bindElement)).on(a, 'contextmenu', _this.onContext.bind(_this, bindElement));
65170
65338
  return item;
@@ -65177,7 +65345,7 @@ function _is_native_reflect_construct() {
65177
65345
  };
65178
65346
  _this.appendSelectAll = function() {
65179
65347
  _this.removeSelectAll();
65180
- _this.selectAllButton = (0,_modules_toolbar_factory_js__WEBPACK_IMPORTED_MODULE_6__.makeButton)(_this.j, _object_spread({
65348
+ _this.selectAllButton = (0,_modules_toolbar_factory_js__WEBPACK_IMPORTED_MODULE_8__.makeButton)(_this.j, _object_spread({
65181
65349
  name: 'selectall'
65182
65350
  }, _this.j.o.controls.selectall));
65183
65351
  _this.selectAllButton.state.size = 'tiny';
@@ -65196,7 +65364,7 @@ function _is_native_reflect_construct() {
65196
65364
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.up(current, function(elm) {
65197
65365
  if (elm && _this.j.editor !== elm && !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isText(elm) && !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isComment(elm)) {
65198
65366
  name = elm.nodeName.toLowerCase();
65199
- xpth = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.getXPathByElement)(elm, _this.j.editor).replace(/^\//, '');
65367
+ xpth = (0,_core_helpers_utils_selector_js__WEBPACK_IMPORTED_MODULE_5__.getXPathByElement)(elm, _this.j.editor).replace(/^\//, '');
65200
65368
  li = _this.tpl(elm, xpth, name, _this.j.i18n('Select %s', name));
65201
65369
  _this.container && _this.container.insertBefore(li, _this.container.firstChild);
65202
65370
  }
@@ -65214,6 +65382,7 @@ function _is_native_reflect_construct() {
65214
65382
  var _this = this;
65215
65383
  if (this.j.o.showXPathInStatusbar) {
65216
65384
  this.container = this.j.c.div('jodit-xpath');
65385
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__.attr)(this.container, 'role', 'list');
65217
65386
  var init = function init() {
65218
65387
  if (!_this.j.o.showXPathInStatusbar || !_this.container) {
65219
65388
  return;
@@ -65228,7 +65397,7 @@ function _is_native_reflect_construct() {
65228
65397
  _this.appendSelectAll();
65229
65398
  }
65230
65399
  };
65231
- this.j.e.off('.xpath').on('mouseup.xpath change.xpath keydown.xpath changeSelection.xpath', this.calcPath).on('afterSetMode.xpath afterInit.xpath changePlace.xpath', init);
65400
+ this.j.e.off('.xpath').on('pointerup.xpath change.xpath keydown.xpath changeSelection.xpath', this.calcPath).on('afterSetMode.xpath afterInit.xpath changePlace.xpath', init);
65232
65401
  init();
65233
65402
  this.calcPath();
65234
65403
  }
@@ -65249,7 +65418,7 @@ function _is_native_reflect_construct() {
65249
65418
  }
65250
65419
  ]);
65251
65420
  return xpath;
65252
- }(_wrap_native_super(_core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__.Plugin));
65421
+ }(_wrap_native_super(_core_plugin_index_js__WEBPACK_IMPORTED_MODULE_6__.Plugin));
65253
65422
  _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('xpath', xpath);
65254
65423
 
65255
65424