jodit-pro 4.9.22 → 4.9.27

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 +44 -44
  4. package/es2015/jodit.js +229 -101
  5. package/es2015/jodit.min.js +7 -7
  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 +30 -30
  67. package/es2018/jodit.min.js +16 -16
  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 +32 -32
  93. package/es2021/jodit.js +229 -101
  94. package/es2021/jodit.min.js +24 -24
  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 +229 -101
  158. package/es2021.en/jodit.min.js +10 -10
  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 +249 -105
  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/es2021/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.22
4
+ * Version: v4.9.27
5
5
  * Url: https://xdsoft.net/jodit/pro/
6
6
  * License(s): SEE LICENSE IN LICENSE.md
7
7
  */
@@ -3395,7 +3395,7 @@ class JoditPro extends jodit_esm_index__WEBPACK_IMPORTED_MODULE_3__.Jodit {
3395
3395
  }
3396
3396
  /**
3397
3397
  * Get temporary list
3398
- * @deprecated
3398
+ * @deprecated Just do not use it, it is not needed anymore
3399
3399
  */ static temporaryList(root) {
3400
3400
  return (0,_helpers_array_to_array_js__WEBPACK_IMPORTED_MODULE_1__.toArray)(root.querySelectorAll(`[${_constants_js__WEBPACK_IMPORTED_MODULE_0__.TEMP_ATTR}]`));
3401
3401
  }
@@ -6922,7 +6922,7 @@ let UIButton = class UIButton extends _element_js__WEBPACK_IMPORTED_MODULE_9__.U
6922
6922
  }
6923
6923
  onChangeText() {
6924
6924
  this.text.textContent = this.jodit.i18n(this.state.text);
6925
- this.__updateAriaLabel();
6925
+ this.updateAriaLabel();
6926
6926
  }
6927
6927
  onChangeTextSetMode() {
6928
6928
  this.setMod('text-icons', Boolean(this.state.text.trim().length));
@@ -6945,9 +6945,9 @@ let UIButton = class UIButton extends _element_js__WEBPACK_IMPORTED_MODULE_9__.U
6945
6945
  (0,_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_8__.attr)(this.container, 'title', i8nTooltip);
6946
6946
  }
6947
6947
  (0,_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_8__.attr)(this.container, 'aria-label', i8nTooltip);
6948
- this.__updateAriaLabel();
6948
+ this.updateAriaLabel();
6949
6949
  }
6950
- __updateAriaLabel() {
6950
+ updateAriaLabel() {
6951
6951
  const hasText = this.state.text.trim().length > 0;
6952
6952
  const i8nTooltip = this.state.tooltip ? this.jodit.i18n(this.state.tooltip) : null;
6953
6953
  (0,_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_8__.attr)(this.container, 'aria-label', i8nTooltip);
@@ -7430,6 +7430,9 @@ let ToolbarCollection = class ToolbarCollection extends _core_ui_group_list_js__
7430
7430
  className() {
7431
7431
  return 'ToolbarCollection';
7432
7432
  }
7433
+ getRole() {
7434
+ return 'toolbar';
7435
+ }
7433
7436
  /**
7434
7437
  * First button in a list
7435
7438
  */ get firstButton() {
@@ -7531,14 +7534,30 @@ ToolbarCollection = __decorate([
7531
7534
  /* harmony export */ "default": function() { return /* binding */ DataProvider; }
7532
7535
  /* harmony export */ });
7533
7536
  /* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
7534
- /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21537);
7535
- /* harmony import */ var _core_request_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41601);
7536
- /* harmony import */ var _builders_item_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(159);
7537
+ /* harmony import */ var _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(45219);
7538
+ /* harmony import */ var _core_helpers_checker_is_function_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23282);
7539
+ /* harmony import */ var _core_helpers_normalize_normalize_relative_path_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(70091);
7540
+ /* harmony import */ var _core_helpers_utils_config_proto_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(68934);
7541
+ /* harmony import */ var _core_helpers_utils_error_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(89890);
7542
+ /* harmony import */ var _core_helpers_utils_set_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(3703);
7543
+ /* harmony import */ var _core_request_ajax_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(54079);
7544
+ /* harmony import */ var _builders_item_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(159);
7537
7545
  /*!
7538
7546
  * Jodit Editor (https://xdsoft.net/jodit/)
7539
7547
  * Released under MIT see LICENSE.txt in the project root for license information.
7540
7548
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
7541
- */
7549
+ */ var __decorate = undefined && undefined.__decorate || function(decorators, target, key, desc) {
7550
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
7551
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7552
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
7553
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7554
+ };
7555
+
7556
+
7557
+
7558
+
7559
+
7560
+
7542
7561
 
7543
7562
 
7544
7563
 
@@ -7571,13 +7590,13 @@ class DataProvider {
7571
7590
  ajax === null || ajax === void 0 ? void 0 : ajax.abort();
7572
7591
  instances.delete(name);
7573
7592
  }
7574
- const opts = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.ConfigProto)(this.options[name] !== undefined ? this.options[name] : {}, (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.ConfigProto)({
7593
+ const opts = (0,_core_helpers_utils_config_proto_js__WEBPACK_IMPORTED_MODULE_4__.ConfigProto)(this.options[name] !== undefined ? this.options[name] : {}, (0,_core_helpers_utils_config_proto_js__WEBPACK_IMPORTED_MODULE_4__.ConfigProto)({
7575
7594
  onProgress: this.progressHandler
7576
7595
  }, this.o.ajax));
7577
7596
  if (opts.prepareData) {
7578
7597
  opts.data = opts.prepareData.call(this, opts.data);
7579
7598
  }
7580
- const ajax = new _core_request_index_js__WEBPACK_IMPORTED_MODULE_2__.Ajax(opts);
7599
+ const ajax = new _core_request_ajax_js__WEBPACK_IMPORTED_MODULE_7__.Ajax(opts);
7581
7600
  instances.set(name, ajax);
7582
7601
  const promise = ajax.send();
7583
7602
  promise.finally(()=>{
@@ -7606,7 +7625,7 @@ class DataProvider {
7606
7625
  if (this.o.permissions.url) {
7607
7626
  return this.get('permissions').then((resp)=>{
7608
7627
  if (this.parent.isInDestruct) {
7609
- throw (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.abort)();
7628
+ throw (0,_core_helpers_utils_error_index_js__WEBPACK_IMPORTED_MODULE_5__.abort)();
7610
7629
  }
7611
7630
  let process = this.o.permissions.process;
7612
7631
  if (!process) {
@@ -7628,7 +7647,7 @@ class DataProvider {
7628
7647
  const rule = 'allow' + action;
7629
7648
  if (!_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_PROD) {
7630
7649
  if (!possibleRules.has(rule)) {
7631
- throw (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.error)('Wrong action ' + action);
7650
+ throw (0,_core_helpers_utils_error_index_js__WEBPACK_IMPORTED_MODULE_5__.error)('Wrong action ' + action);
7632
7651
  }
7633
7652
  }
7634
7653
  const presetValue = this.o.permissionsPresets[rule];
@@ -7659,18 +7678,18 @@ class DataProvider {
7659
7678
  /**
7660
7679
  * Load items list by path and source
7661
7680
  */ items(path, source, mods = {}) {
7662
- return this.__items(path, source, mods, (resp)=>this.generateItemsList(resp.data.sources, mods));
7681
+ return this.__items(path, source, mods, (resp)=>this.__generateItemsList(resp.data.sources, mods));
7663
7682
  }
7664
7683
  /**
7665
7684
  * Load items list by path and source
7666
7685
  */ itemsEx(path, source, mods = {}) {
7667
7686
  const calcTotal = (sources)=>sources.reduce((acc, source)=>acc + source.files.length, 0);
7668
7687
  return this.__items(path, source, mods, (resp)=>({
7669
- items: this.generateItemsList(resp.data.sources, mods),
7688
+ items: this.__generateItemsList(resp.data.sources, mods),
7670
7689
  loadedTotal: calcTotal(resp.data.sources)
7671
7690
  }));
7672
7691
  }
7673
- generateItemsList(sources, mods = {}) {
7692
+ __generateItemsList(sources, mods = {}) {
7674
7693
  const elements = [];
7675
7694
  const canBeFile = (item)=>item.type === 'folder' || !mods.onlyImages || item.isImage === undefined || item.isImage;
7676
7695
  const inFilter = (item)=>{
@@ -7680,12 +7699,12 @@ class DataProvider {
7680
7699
  sources.forEach((source)=>{
7681
7700
  if (source.files && source.files.length) {
7682
7701
  const { sort } = this.o;
7683
- if ((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.isFunction)(sort) && mods.sortBy) {
7702
+ if ((0,_core_helpers_checker_is_function_js__WEBPACK_IMPORTED_MODULE_2__.isFunction)(sort) && mods.sortBy) {
7684
7703
  source.files.sort((a, b)=>sort(a, b, mods.sortBy));
7685
7704
  }
7686
7705
  source.files.forEach((item)=>{
7687
7706
  if (inFilter(item) && canBeFile(item)) {
7688
- elements.push(_builders_item_js__WEBPACK_IMPORTED_MODULE_3__.FileBrowserItem.create({
7707
+ elements.push(_builders_item_js__WEBPACK_IMPORTED_MODULE_8__.FileBrowserItem.create({
7689
7708
  ...item,
7690
7709
  sourceName: source.name,
7691
7710
  source
@@ -7697,7 +7716,7 @@ class DataProvider {
7697
7716
  return elements;
7698
7717
  }
7699
7718
  async tree(path, source) {
7700
- path = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.normalizeRelativePath)(path);
7719
+ path = (0,_core_helpers_normalize_normalize_relative_path_js__WEBPACK_IMPORTED_MODULE_3__.normalizeRelativePath)(path);
7701
7720
  if (!this.o.folder) {
7702
7721
  return Promise.reject(Error('Set Folder Api options'));
7703
7722
  }
@@ -7718,12 +7737,12 @@ class DataProvider {
7718
7737
  /**
7719
7738
  * Get path by url. You can use this method in another modules
7720
7739
  */ getPathByUrl(url) {
7721
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.set)('options.getLocalFileByUrl.data.url', url, this);
7740
+ (0,_core_helpers_utils_set_js__WEBPACK_IMPORTED_MODULE_6__.set)('options.getLocalFileByUrl.data.url', url, this);
7722
7741
  return this.get('getLocalFileByUrl').then((resp)=>{
7723
7742
  if (this.isSuccess(resp)) {
7724
7743
  return resp.data;
7725
7744
  }
7726
- throw (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.error)(this.getMessage(resp));
7745
+ throw (0,_core_helpers_utils_error_index_js__WEBPACK_IMPORTED_MODULE_5__.error)(this.getMessage(resp));
7727
7746
  });
7728
7747
  }
7729
7748
  /**
@@ -7735,7 +7754,7 @@ class DataProvider {
7735
7754
  */ createFolder(name, path, source) {
7736
7755
  const { create } = this.o;
7737
7756
  if (!create) {
7738
- throw (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.error)('Set Create api options');
7757
+ throw (0,_core_helpers_utils_error_index_js__WEBPACK_IMPORTED_MODULE_5__.error)('Set Create api options');
7739
7758
  }
7740
7759
  create.data.source = source;
7741
7760
  create.data.path = path;
@@ -7744,7 +7763,7 @@ class DataProvider {
7744
7763
  if (this.isSuccess(resp)) {
7745
7764
  return true;
7746
7765
  }
7747
- throw (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.error)(this.getMessage(resp));
7766
+ throw (0,_core_helpers_utils_error_index_js__WEBPACK_IMPORTED_MODULE_5__.error)(this.getMessage(resp));
7748
7767
  });
7749
7768
  }
7750
7769
  /**
@@ -7756,7 +7775,7 @@ class DataProvider {
7756
7775
  const mode = isFile ? 'fileMove' : 'folderMove';
7757
7776
  const option = this.options[mode];
7758
7777
  if (!option) {
7759
- throw (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.error)('Set Move api options');
7778
+ throw (0,_core_helpers_utils_error_index_js__WEBPACK_IMPORTED_MODULE_5__.error)('Set Move api options');
7760
7779
  }
7761
7780
  option.data.from = filepath;
7762
7781
  option.data.path = path;
@@ -7765,7 +7784,7 @@ class DataProvider {
7765
7784
  if (this.isSuccess(resp)) {
7766
7785
  return true;
7767
7786
  }
7768
- throw (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.error)(this.getMessage(resp));
7787
+ throw (0,_core_helpers_utils_error_index_js__WEBPACK_IMPORTED_MODULE_5__.error)(this.getMessage(resp));
7769
7788
  });
7770
7789
  }
7771
7790
  /**
@@ -7774,10 +7793,10 @@ class DataProvider {
7774
7793
  * @param path - Relative path
7775
7794
  * @param file - The filename
7776
7795
  * @param source - Source
7777
- */ remove(action, path, file, source) {
7796
+ */ __remove(action, path, file, source) {
7778
7797
  const fr = this.o[action];
7779
7798
  if (!fr) {
7780
- throw (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.error)(`Set "${action}" api options`);
7799
+ throw (0,_core_helpers_utils_error_index_js__WEBPACK_IMPORTED_MODULE_5__.error)(`Set "${action}" api options`);
7781
7800
  }
7782
7801
  fr.data.path = path;
7783
7802
  fr.data.name = file;
@@ -7796,7 +7815,7 @@ class DataProvider {
7796
7815
  * @param file - The filename
7797
7816
  * @param source - Source
7798
7817
  */ fileRemove(path, file, source) {
7799
- return this.remove('fileRemove', path, file, source);
7818
+ return this.__remove('fileRemove', path, file, source);
7800
7819
  }
7801
7820
  /**
7802
7821
  * Deleting a folder
@@ -7805,7 +7824,7 @@ class DataProvider {
7805
7824
  * @param file - The filename
7806
7825
  * @param source - Source
7807
7826
  */ folderRemove(path, file, source) {
7808
- return this.remove('folderRemove', path, file, source);
7827
+ return this.__remove('folderRemove', path, file, source);
7809
7828
  }
7810
7829
  /**
7811
7830
  * Rename action
@@ -7814,10 +7833,10 @@ class DataProvider {
7814
7833
  * @param name - Old name
7815
7834
  * @param newname - New name
7816
7835
  * @param source - Source
7817
- */ rename(action, path, name, newname, source) {
7836
+ */ __rename(action, path, name, newname, source) {
7818
7837
  const fr = this.o[action];
7819
7838
  if (!fr) {
7820
- throw (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.error)(`Set "${action}" api options`);
7839
+ throw (0,_core_helpers_utils_error_index_js__WEBPACK_IMPORTED_MODULE_5__.error)(`Set "${action}" api options`);
7821
7840
  }
7822
7841
  fr.data.path = path;
7823
7842
  fr.data.name = name;
@@ -7833,14 +7852,14 @@ class DataProvider {
7833
7852
  /**
7834
7853
  * Rename folder
7835
7854
  */ folderRename(path, name, newname, source) {
7836
- return this.rename('folderRename', path, name, newname, source);
7855
+ return this.__rename('folderRename', path, name, newname, source);
7837
7856
  }
7838
7857
  /**
7839
7858
  * Rename file
7840
7859
  */ fileRename(path, name, newname, source) {
7841
- return this.rename('fileRename', path, name, newname, source);
7860
+ return this.__rename('fileRename', path, name, newname, source);
7842
7861
  }
7843
- changeImage(type, path, source, name, newname, box) {
7862
+ __changeImage(type, path, source, name, newname, box) {
7844
7863
  if (!this.o[type]) {
7845
7864
  this.o[type] = {
7846
7865
  data: {}
@@ -7866,12 +7885,12 @@ class DataProvider {
7866
7885
  /**
7867
7886
  * Send command to server to crop image
7868
7887
  */ crop(path, source, name, newname, box) {
7869
- return this.changeImage('crop', path, source, name, newname, box);
7888
+ return this.__changeImage('crop', path, source, name, newname, box);
7870
7889
  }
7871
7890
  /**
7872
7891
  * Send command to server to resize image
7873
7892
  */ resize(path, source, name, newname, box) {
7874
- return this.changeImage('resize', path, source, name, newname, box);
7893
+ return this.__changeImage('resize', path, source, name, newname, box);
7875
7894
  }
7876
7895
  getMessage(resp) {
7877
7896
  return this.options.getMessage(resp);
@@ -7892,6 +7911,60 @@ class DataProvider {
7892
7911
  }
7893
7912
  }
7894
7913
 
7914
+ __decorate([
7915
+ _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_1__.autobind
7916
+ ], DataProvider.prototype, "onProgress", null);
7917
+ __decorate([
7918
+ _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_1__.autobind
7919
+ ], DataProvider.prototype, "permissions", null);
7920
+ __decorate([
7921
+ _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_1__.autobind
7922
+ ], DataProvider.prototype, "canI", null);
7923
+ __decorate([
7924
+ _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_1__.autobind
7925
+ ], DataProvider.prototype, "items", null);
7926
+ __decorate([
7927
+ _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_1__.autobind
7928
+ ], DataProvider.prototype, "itemsEx", null);
7929
+ __decorate([
7930
+ _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_1__.autobind
7931
+ ], DataProvider.prototype, "tree", null);
7932
+ __decorate([
7933
+ _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_1__.autobind
7934
+ ], DataProvider.prototype, "getPathByUrl", null);
7935
+ __decorate([
7936
+ _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_1__.autobind
7937
+ ], DataProvider.prototype, "createFolder", null);
7938
+ __decorate([
7939
+ _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_1__.autobind
7940
+ ], DataProvider.prototype, "move", null);
7941
+ __decorate([
7942
+ _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_1__.autobind
7943
+ ], DataProvider.prototype, "fileRemove", null);
7944
+ __decorate([
7945
+ _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_1__.autobind
7946
+ ], DataProvider.prototype, "folderRemove", null);
7947
+ __decorate([
7948
+ _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_1__.autobind
7949
+ ], DataProvider.prototype, "folderRename", null);
7950
+ __decorate([
7951
+ _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_1__.autobind
7952
+ ], DataProvider.prototype, "fileRename", null);
7953
+ __decorate([
7954
+ _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_1__.autobind
7955
+ ], DataProvider.prototype, "crop", null);
7956
+ __decorate([
7957
+ _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_1__.autobind
7958
+ ], DataProvider.prototype, "resize", null);
7959
+ __decorate([
7960
+ _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_1__.autobind
7961
+ ], DataProvider.prototype, "getMessage", null);
7962
+ __decorate([
7963
+ _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_1__.autobind
7964
+ ], DataProvider.prototype, "isSuccess", null);
7965
+ __decorate([
7966
+ _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_1__.autobind
7967
+ ], DataProvider.prototype, "destruct", null);
7895
7968
 
7896
7969
 
7897
7970
  /***/ }),
@@ -12103,6 +12176,7 @@ __webpack_require__.r(__webpack_exports__);
12103
12176
  /* harmony export */ buildQuery: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.buildQuery; },
12104
12177
  /* harmony export */ call: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.call; },
12105
12178
  /* harmony export */ callPromise: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.callPromise; },
12179
+ /* harmony export */ callThis: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.callThis; },
12106
12180
  /* harmony export */ camelCase: function() { return /* reexport safe */ _string_index_js__WEBPACK_IMPORTED_MODULE_7__.camelCase; },
12107
12181
  /* harmony export */ cleanFromWord: function() { return /* reexport safe */ _html_index_js__WEBPACK_IMPORTED_MODULE_4__.cleanFromWord; },
12108
12182
  /* harmony export */ clearAlign: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.clearAlign; },
@@ -13370,16 +13444,21 @@ _config_js__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.popup = {
13370
13444
 
13371
13445
 
13372
13446
  let UIList = class UIList extends _group_js__WEBPACK_IMPORTED_MODULE_6__.UIGroup {
13373
- /** @override */ className() {
13447
+ className() {
13374
13448
  return 'UIList';
13375
13449
  }
13450
+ getRole() {
13451
+ return 'list';
13452
+ }
13376
13453
  __onChangeMode() {
13377
13454
  this.setMod('mode', this.mode);
13378
13455
  }
13379
13456
  /**
13380
13457
  * Make new group and append it in list of elements
13381
- */ makeGroup() {
13382
- return new _group_js__WEBPACK_IMPORTED_MODULE_6__.UIGroup(this.jodit);
13458
+ */ makeGroup(role) {
13459
+ return new _group_js__WEBPACK_IMPORTED_MODULE_6__.UIGroup(this.jodit, [], role ? {
13460
+ role
13461
+ } : undefined);
13383
13462
  }
13384
13463
  /**
13385
13464
  * All buttons from list
@@ -13399,7 +13478,7 @@ let UIList = class UIList extends _group_js__WEBPACK_IMPORTED_MODULE_6__.UIGroup
13399
13478
  items = (0,_helpers_array_split_array_js__WEBPACK_IMPORTED_MODULE_4__.splitArray)(items);
13400
13479
  this.clear();
13401
13480
  let lastBtnSeparator = false;
13402
- let line = this.makeGroup();
13481
+ let line = this.makeGroup('group');
13403
13482
  this.append(line);
13404
13483
  line.setMod('line', true);
13405
13484
  let group;
@@ -13407,7 +13486,7 @@ let UIList = class UIList extends _group_js__WEBPACK_IMPORTED_MODULE_6__.UIGroup
13407
13486
  let elm = null;
13408
13487
  switch(control.name){
13409
13488
  case '\n':
13410
- line = this.makeGroup();
13489
+ line = this.makeGroup('group');
13411
13490
  line.setMod('line', true);
13412
13491
  group = this.makeGroup();
13413
13492
  line.append(group);
@@ -20455,6 +20534,7 @@ let ToolbarEditorCollection = class ToolbarEditorCollection extends _collection_
20455
20534
  * @see https://github.com/jodit/jodit-react/issues/138
20456
20535
  */ prependInvisibleInput(container) {
20457
20536
  const input = this.j.create.element('input', {
20537
+ name: 'jodit-toolbar-focus-helper_' + this.j.id,
20458
20538
  tabIndex: -1,
20459
20539
  disabled: true,
20460
20540
  style: 'width: 0; height:0; position: absolute; visibility: hidden;'
@@ -20759,6 +20839,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.controls.dots = {
20759
20839
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
20760
20840
  /* harmony export */ call: function() { return /* binding */ call; },
20761
20841
  /* harmony export */ callPromise: function() { return /* binding */ callPromise; },
20842
+ /* harmony export */ callThis: function() { return /* binding */ callThis; },
20762
20843
  /* harmony export */ getDataTransfer: function() { return /* binding */ getDataTransfer; },
20763
20844
  /* harmony export */ getPropertyDescriptor: function() { return /* binding */ getPropertyDescriptor; },
20764
20845
  /* harmony export */ keys: function() { return /* binding */ keys; },
@@ -20789,6 +20870,17 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.controls.dots = {
20789
20870
  */ function call(func, ...args) {
20790
20871
  return func(...args);
20791
20872
  }
20873
+ /**
20874
+ * Call function with parameters
20875
+ *
20876
+ * @example
20877
+ * ```js
20878
+ * const f = Math.random();
20879
+ * Jodit.modules.Helpers.call(f > 0.5 ? Math.ceil : Math.floor, f);
20880
+ * ```
20881
+ */ function callThis(func, thisArg, ...args) {
20882
+ return func.apply(thisArg, args);
20883
+ }
20792
20884
  /**
20793
20885
  * Mark element for debugging
20794
20886
  */ function markOwner(jodit, elm) {
@@ -23355,6 +23447,7 @@ __webpack_require__.r(__webpack_exports__);
23355
23447
  /* harmony export */ buildQuery: function() { return /* reexport safe */ _build_query_js__WEBPACK_IMPORTED_MODULE_5__.buildQuery; },
23356
23448
  /* harmony export */ call: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_26__.call; },
23357
23449
  /* harmony export */ callPromise: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_26__.callPromise; },
23450
+ /* harmony export */ callThis: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_26__.callThis; },
23358
23451
  /* harmony export */ clearAlign: function() { return /* reexport safe */ _align_js__WEBPACK_IMPORTED_MODULE_0__.clearAlign; },
23359
23452
  /* harmony export */ clearCenterAlign: function() { return /* reexport safe */ _css_js__WEBPACK_IMPORTED_MODULE_9__.clearCenterAlign; },
23360
23453
  /* harmony export */ cns: function() { return /* reexport safe */ _mark_deprecated_js__WEBPACK_IMPORTED_MODULE_18__.cns; },
@@ -25242,7 +25335,8 @@ var UIElement_1;
25242
25335
 
25243
25336
  let UIElement = UIElement_1 = class UIElement extends _component_index_js__WEBPACK_IMPORTED_MODULE_0__.ViewComponent {
25244
25337
  getRole() {
25245
- return '';
25338
+ var _a;
25339
+ return ((_a = this.options) === null || _a === void 0 ? void 0 : _a.role) || '';
25246
25340
  }
25247
25341
  get parentElement() {
25248
25342
  return this.__parentElement;
@@ -25339,11 +25433,12 @@ let UIElement = UIElement_1 = class UIElement extends _component_index_js__WEBPA
25339
25433
  this.parentElement = null;
25340
25434
  return super.destruct();
25341
25435
  }
25342
- /** @override */ constructor(jodit, options){
25436
+ constructor(jodit, options){
25343
25437
  super(jodit);
25344
25438
  this.name = '';
25345
25439
  this.__parentElement = null;
25346
25440
  this.mods = {};
25441
+ this.options = options;
25347
25442
  this.container = this.createContainer(options);
25348
25443
  const role = this.getRole();
25349
25444
  role && (0,_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__.attr)(this.container, 'role', role);
@@ -25600,11 +25695,16 @@ __webpack_require__.r(__webpack_exports__);
25600
25695
  /* harmony import */ var _core_component_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(91907);
25601
25696
  /* harmony import */ var _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65478);
25602
25697
  /* harmony import */ var _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(22732);
25603
- /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21537);
25604
- /* harmony import */ var _core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(62843);
25605
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(6441);
25606
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(62489);
25607
- /* harmony import */ var _templates_form_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(22461);
25698
+ /* harmony import */ var _core_helpers_array_to_array_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4510);
25699
+ /* harmony import */ var _core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(49055);
25700
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(29960);
25701
+ /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(41180);
25702
+ /* harmony import */ var _core_helpers_utils_selector_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(76078);
25703
+ /* harmony import */ var _core_helpers_utils_utils_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(37790);
25704
+ /* harmony import */ var _core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(62843);
25705
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(6441);
25706
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(62489);
25707
+ /* harmony import */ var _templates_form_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(22461);
25608
25708
  /*!
25609
25709
  * Jodit Editor (https://xdsoft.net/jodit/)
25610
25710
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -25624,6 +25724,11 @@ var ImageEditor_1;
25624
25724
 
25625
25725
 
25626
25726
 
25727
+
25728
+
25729
+
25730
+
25731
+
25627
25732
  const jie = 'jodit-image-editor';
25628
25733
  const TABS = {
25629
25734
  resize: 'resize',
@@ -25671,9 +25776,9 @@ const TABS = {
25671
25776
  return this.j.async.promise((resolve)=>{
25672
25777
  const timestamp = new Date().getTime();
25673
25778
  this.image = this.j.c.element('img');
25674
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.$$)('img,.jodit-icon_loader', this.resize_box).forEach(_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove);
25675
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.$$)('img,.jodit-icon_loader', this.crop_box).forEach(_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove);
25676
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.css)(this.cropHandler, 'background', 'transparent');
25779
+ (0,_core_helpers_utils_selector_js__WEBPACK_IMPORTED_MODULE_7__.$$)('img,.jodit-icon_loader', this.resize_box).forEach(_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove);
25780
+ (0,_core_helpers_utils_selector_js__WEBPACK_IMPORTED_MODULE_7__.$$)('img,.jodit-icon_loader', this.crop_box).forEach(_core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove);
25781
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(this.cropHandler, 'background', 'transparent');
25677
25782
  this.onSave = save;
25678
25783
  this.resize_box.appendChild(this.j.c.element('i', {
25679
25784
  class: 'jodit-icon_loader'
@@ -25688,7 +25793,7 @@ const TABS = {
25688
25793
  }
25689
25794
  this.image.setAttribute('src', url);
25690
25795
  this._dialog.open();
25691
- const { widthInput, heightInput } = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.refs)(this.editor);
25796
+ const { widthInput, heightInput } = (0,_core_helpers_utils_selector_js__WEBPACK_IMPORTED_MODULE_7__.refs)(this.editor);
25692
25797
  const onload = ()=>{
25693
25798
  if (this.isDestructed) {
25694
25799
  return;
@@ -25702,7 +25807,7 @@ const TABS = {
25702
25807
  this.resize_box.appendChild(this.image);
25703
25808
  this.cropImage = this.image.cloneNode(true);
25704
25809
  this.crop_box.appendChild(this.cropImage);
25705
- _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove.apply(null, (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.$$)('.jodit-icon_loader', this.editor));
25810
+ _core_dom_index_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove.apply(null, (0,_core_helpers_utils_selector_js__WEBPACK_IMPORTED_MODULE_7__.$$)('.jodit-icon_loader', this.editor));
25706
25811
  if (this.activeTab === TABS.crop) {
25707
25812
  this.showCrop();
25708
25813
  }
@@ -25724,9 +25829,9 @@ const TABS = {
25724
25829
  if (!slide) {
25725
25830
  return;
25726
25831
  }
25727
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.$$)(`.${jie}__slider,.${jie}__area`, self.editor).forEach((elm)=>elm.classList.remove(`${jie}_active`));
25832
+ (0,_core_helpers_utils_selector_js__WEBPACK_IMPORTED_MODULE_7__.$$)(`.${jie}__slider,.${jie}__area`, self.editor).forEach((elm)=>elm.classList.remove(`${jie}_active`));
25728
25833
  slide.classList.add(`${jie}_active`);
25729
- this.activeTab = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(slide, '-area') || TABS.resize;
25834
+ this.activeTab = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__.attr)(slide, '-area') || TABS.resize;
25730
25835
  const tab = self.editor.querySelector(`.${jie}__area.${jie}__area_` + self.activeTab);
25731
25836
  if (tab) {
25732
25837
  tab.classList.add(`${jie}_active`);
@@ -25736,14 +25841,14 @@ const TABS = {
25736
25841
  }
25737
25842
  }
25738
25843
  onChangeSizeInput(e) {
25739
- const self = this, input = e.target, { widthInput, heightInput } = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.refs)(this.editor), isWidth = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(input, 'data-ref') === 'widthInput', x = parseInt(input.value, 10), minX = isWidth ? self.o.min_width : self.o.min_height, minY = !isWidth ? self.o.min_width : self.o.min_height;
25844
+ const self = this, input = e.target, { widthInput, heightInput } = (0,_core_helpers_utils_selector_js__WEBPACK_IMPORTED_MODULE_7__.refs)(this.editor), isWidth = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__.attr)(input, 'data-ref') === 'widthInput', x = parseInt(input.value, 10), minX = isWidth ? self.o.min_width : self.o.min_height, minY = !isWidth ? self.o.min_width : self.o.min_height;
25740
25845
  let y;
25741
25846
  if (x > minX) {
25742
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.css)(self.image, isWidth ? 'width' : 'height', x);
25847
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(self.image, isWidth ? 'width' : 'height', x);
25743
25848
  if (self.resizeUseRatio) {
25744
25849
  y = isWidth ? Math.round(x / self.ratio) : Math.round(x * self.ratio);
25745
25850
  if (y > minY) {
25746
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.css)(self.image, !isWidth ? 'width' : 'height', y);
25851
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(self.image, !isWidth ? 'width' : 'height', y);
25747
25852
  if (isWidth) {
25748
25853
  heightInput.value = y.toString();
25749
25854
  } else {
@@ -25763,8 +25868,8 @@ const TABS = {
25763
25868
  self.start_x = e.clientX;
25764
25869
  self.start_y = e.clientY;
25765
25870
  if (self.activeTab === TABS.crop) {
25766
- self.top_x = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.css)(self.cropHandler, 'left');
25767
- self.top_y = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.css)(self.cropHandler, 'top');
25871
+ self.top_x = (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(self.cropHandler, 'left');
25872
+ self.top_y = (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(self.cropHandler, 'top');
25768
25873
  self.width = self.cropHandler.offsetWidth;
25769
25874
  self.height = self.cropHandler.offsetHeight;
25770
25875
  } else {
@@ -25785,7 +25890,7 @@ const TABS = {
25785
25890
  if (!self.clicked) {
25786
25891
  return;
25787
25892
  }
25788
- const { widthInput, heightInput } = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.refs)(this.editor);
25893
+ const { widthInput, heightInput } = (0,_core_helpers_utils_selector_js__WEBPACK_IMPORTED_MODULE_7__.refs)(this.editor);
25789
25894
  self.diff_x = e.clientX - self.start_x;
25790
25895
  self.diff_y = e.clientY - self.start_y;
25791
25896
  if (self.activeTab === TABS.resize && self.resizeUseRatio || self.activeTab === TABS.crop && self.cropUseRatio) {
@@ -25802,11 +25907,11 @@ const TABS = {
25802
25907
  }
25803
25908
  if (self.activeTab === TABS.resize) {
25804
25909
  if (self.new_w > self.o.resizeMinWidth) {
25805
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.css)(self.image, 'width', self.new_w + 'px');
25910
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(self.image, 'width', self.new_w + 'px');
25806
25911
  widthInput.value = self.new_w.toString();
25807
25912
  }
25808
25913
  if (self.new_h > self.o.resizeMinHeight) {
25809
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.css)(self.image, 'height', self.new_h + 'px');
25914
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(self.image, 'height', self.new_h + 'px');
25810
25915
  heightInput.value = self.new_h.toString();
25811
25916
  }
25812
25917
  this.j.e.fire(self.resizeHandler, 'updatesize');
@@ -25818,7 +25923,7 @@ const TABS = {
25818
25923
  if (self.top_y + self.new_h > self.cropImage.offsetHeight) {
25819
25924
  self.new_h = self.cropImage.offsetHeight - self.top_y;
25820
25925
  }
25821
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.css)(self.cropHandler, {
25926
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(self.cropHandler, {
25822
25927
  width: self.new_w,
25823
25928
  height: self.new_h
25824
25929
  });
@@ -25826,11 +25931,11 @@ const TABS = {
25826
25931
  if (self.top_x + self.diff_x + self.cropHandler.offsetWidth > self.cropImage.offsetWidth) {
25827
25932
  self.diff_x = self.cropImage.offsetWidth - self.top_x - self.cropHandler.offsetWidth;
25828
25933
  }
25829
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.css)(self.cropHandler, 'left', self.top_x + self.diff_x);
25934
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(self.cropHandler, 'left', self.top_x + self.diff_x);
25830
25935
  if (self.top_y + self.diff_y + self.cropHandler.offsetHeight > self.cropImage.offsetHeight) {
25831
25936
  self.diff_y = self.cropImage.offsetHeight - self.top_y - self.cropHandler.offsetHeight;
25832
25937
  }
25833
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.css)(self.cropHandler, 'top', self.top_y + self.diff_y);
25938
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(self.cropHandler, 'top', self.top_y + self.diff_y);
25834
25939
  }
25835
25940
  this.j.e.fire(self.cropHandler, 'updatesize');
25836
25941
  }
@@ -25891,7 +25996,7 @@ const TABS = {
25891
25996
  wn = nw * (h / nh);
25892
25997
  hn = h;
25893
25998
  }
25894
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.css)(this.crop_box, {
25999
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(this.crop_box, {
25895
26000
  width: wn,
25896
26001
  height: hn
25897
26002
  });
@@ -25909,8 +26014,8 @@ const TABS = {
25909
26014
  } else {
25910
26015
  this.new_h = ImageEditor_1.calcValueByPercent(h, this.o.cropDefaultHeight);
25911
26016
  }
25912
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.css)(this.cropHandler, {
25913
- backgroundImage: 'url(' + (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(this.cropImage, 'src') + ')',
26017
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(this.cropHandler, {
26018
+ backgroundImage: 'url(' + (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__.attr)(this.cropImage, 'src') + ')',
25914
26019
  width: this.new_w,
25915
26020
  height: this.new_h,
25916
26021
  left: w / 2 - this.new_w / 2,
@@ -25923,8 +26028,8 @@ const TABS = {
25923
26028
  return;
25924
26029
  }
25925
26030
  const ratioX = this.cropImage.offsetWidth / this.naturalWidth, ratioY = this.cropImage.offsetHeight / this.naturalHeight;
25926
- this.cropBox.x = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.css)(this.cropHandler, 'left') / ratioX;
25927
- this.cropBox.y = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.css)(this.cropHandler, 'top') / ratioY;
26031
+ this.cropBox.x = (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(this.cropHandler, 'left') / ratioX;
26032
+ this.cropBox.y = (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(this.cropHandler, 'top') / ratioY;
25928
26033
  this.cropBox.w = this.cropHandler.offsetWidth / ratioX;
25929
26034
  this.cropBox.h = this.cropHandler.offsetHeight / ratioY;
25930
26035
  this.sizes.textContent = this.cropBox.w.toFixed(0) + 'x' + this.cropBox.h.toFixed(0);
@@ -25935,7 +26040,7 @@ const TABS = {
25935
26040
  };
25936
26041
  this.setHandlers = ()=>{
25937
26042
  const self = this;
25938
- const { widthInput, heightInput } = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.refs)(this.editor);
26043
+ const { widthInput, heightInput } = (0,_core_helpers_utils_selector_js__WEBPACK_IMPORTED_MODULE_7__.refs)(this.editor);
25939
26044
  self.j.e.on([
25940
26045
  self.editor.querySelector('.jodit_bottomright'),
25941
26046
  self.cropHandler
@@ -25944,11 +26049,11 @@ const TABS = {
25944
26049
  self.showCrop();
25945
26050
  this.j.e.fire(self.cropHandler, 'updatesize');
25946
26051
  });
25947
- self.j.e.on((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.toArray)(this.editor.querySelectorAll(`.${jie}__slider-title`)), 'click', this.onTitleModeClick).on([
26052
+ self.j.e.on((0,_core_helpers_array_to_array_js__WEBPACK_IMPORTED_MODULE_3__.toArray)(this.editor.querySelectorAll(`.${jie}__slider-title`)), 'click', this.onTitleModeClick).on([
25948
26053
  widthInput,
25949
26054
  heightInput
25950
26055
  ], 'input', this.onChangeSizeInput);
25951
- const { keepAspectRatioResize, keepAspectRatioCrop } = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.refs)(this.editor);
26056
+ const { keepAspectRatioResize, keepAspectRatioCrop } = (0,_core_helpers_utils_selector_js__WEBPACK_IMPORTED_MODULE_7__.refs)(this.editor);
25952
26057
  if (keepAspectRatioResize) {
25953
26058
  keepAspectRatioResize.addEventListener('change', ()=>{
25954
26059
  this.resizeUseRatio = keepAspectRatioResize.checked;
@@ -25960,7 +26065,7 @@ const TABS = {
25960
26065
  });
25961
26066
  }
25962
26067
  self.j.e.on(self.resizeHandler, 'updatesize', ()=>{
25963
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.css)(self.resizeHandler, {
26068
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(self.resizeHandler, {
25964
26069
  top: 0,
25965
26070
  left: 0,
25966
26071
  width: self.image.offsetWidth || self.naturalWidth,
@@ -25971,7 +26076,7 @@ const TABS = {
25971
26076
  if (!self.cropImage) {
25972
26077
  return;
25973
26078
  }
25974
- let new_x = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.css)(self.cropHandler, 'left'), new_y = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.css)(self.cropHandler, 'top'), new_width = self.cropHandler.offsetWidth, new_height = self.cropHandler.offsetHeight;
26079
+ let new_x = (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(self.cropHandler, 'left'), new_y = (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(self.cropHandler, 'top'), new_width = self.cropHandler.offsetWidth, new_height = self.cropHandler.offsetHeight;
25975
26080
  if (new_x < 0) {
25976
26081
  new_x = 0;
25977
26082
  }
@@ -25990,7 +26095,7 @@ const TABS = {
25990
26095
  new_width = new_height * self.ratio;
25991
26096
  }
25992
26097
  }
25993
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.css)(self.cropHandler, {
26098
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(self.cropHandler, {
25994
26099
  width: new_width,
25995
26100
  height: new_height,
25996
26101
  left: new_x,
@@ -26009,7 +26114,7 @@ const TABS = {
26009
26114
  switch(button){
26010
26115
  case self.buttons.saveas:
26011
26116
  self.j.prompt('Enter new name', 'Save in new file', (name)=>{
26012
- if (!(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.trim)(name)) {
26117
+ if (!(0,_core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_4__.trim)(name)) {
26013
26118
  self.j.alert('The name should not be empty');
26014
26119
  return false;
26015
26120
  }
@@ -26025,7 +26130,7 @@ const TABS = {
26025
26130
  break;
26026
26131
  case self.buttons.reset:
26027
26132
  if (self.activeTab === TABS.resize) {
26028
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.css)(self.image, {
26133
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(self.image, {
26029
26134
  width: null,
26030
26135
  height: null
26031
26136
  });
@@ -26040,18 +26145,24 @@ const TABS = {
26040
26145
  });
26041
26146
  });
26042
26147
  };
26043
- this.options = editor && editor.o && editor.o.imageeditor ? editor.o.imageeditor : _config_js__WEBPACK_IMPORTED_MODULE_5__.Config.defaultOptions.imageeditor;
26148
+ this.options = editor && editor.o && editor.o.imageeditor ? editor.o.imageeditor : _config_js__WEBPACK_IMPORTED_MODULE_10__.Config.defaultOptions.imageeditor;
26044
26149
  const o = this.options;
26045
26150
  this.resizeUseRatio = o.resizeUseRatio;
26046
26151
  this.cropUseRatio = o.cropUseRatio;
26047
26152
  this.buttons = {
26048
- reset: (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_4__.Button)(this.j, 'update', 'Reset'),
26049
- save: (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_4__.Button)(this.j, 'save', 'Save'),
26050
- saveas: (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_4__.Button)(this.j, 'save', 'Save as ...')
26153
+ reset: (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_9__.Button)(this.j, 'update', 'Reset'),
26154
+ save: (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_9__.Button)(this.j, 'save', 'Save'),
26155
+ saveas: (0,_core_ui_button_index_js__WEBPACK_IMPORTED_MODULE_9__.Button)(this.j, {
26156
+ icon: {
26157
+ name: 'save'
26158
+ },
26159
+ name: 'save-as',
26160
+ text: 'Save as ...'
26161
+ })
26051
26162
  };
26052
26163
  this.activeTab = o.resize ? TABS.resize : TABS.crop;
26053
- this.editor = (0,_templates_form_js__WEBPACK_IMPORTED_MODULE_7__.form)(this.j, this.options);
26054
- const { resizeBox, cropBox } = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.refs)(this.editor);
26164
+ this.editor = (0,_templates_form_js__WEBPACK_IMPORTED_MODULE_12__.form)(this.j, this.options);
26165
+ const { resizeBox, cropBox } = (0,_core_helpers_utils_selector_js__WEBPACK_IMPORTED_MODULE_7__.refs)(this.editor);
26055
26166
  this.resize_box = resizeBox;
26056
26167
  this.crop_box = cropBox;
26057
26168
  this.sizes = this.editor.querySelector(`.${jie}__area.${jie}__area_crop .jodit-image-editor__sizes`);
@@ -26116,7 +26227,7 @@ ImageEditor = ImageEditor_1 = __decorate([
26116
26227
  /**
26117
26228
  * Open Image Editor
26118
26229
  */ function openImageEditor(href, name, path, source, onSuccess, onFailed) {
26119
- return this.getInstance('ImageEditor', this.o).open(href, (newname, box, success, failed)=>(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.call)(box.action === 'resize' ? this.dataProvider.resize : this.dataProvider.crop, path, source, name, newname, box.box).then((ok)=>{
26230
+ return this.getInstance('ImageEditor', this.o).open(href, (newname, box, success, failed)=>(0,_core_helpers_utils_utils_js__WEBPACK_IMPORTED_MODULE_8__.call)(box.action === 'resize' ? this.dataProvider.resize : this.dataProvider.crop, path, source, name, newname, box.box).then((ok)=>{
26120
26231
  if (ok) {
26121
26232
  success();
26122
26233
  if (onSuccess) {
@@ -32646,7 +32757,8 @@ let UIGroup = UIGroup_1 = class UIGroup extends _element_js__WEBPACK_IMPORTED_MO
32646
32757
  return 'UIGroup';
32647
32758
  }
32648
32759
  getRole() {
32649
- return 'list';
32760
+ var _a;
32761
+ return ((_a = this.options) === null || _a === void 0 ? void 0 : _a.role) || 'list';
32650
32762
  }
32651
32763
  /**
32652
32764
  * All group children
@@ -40393,6 +40505,13 @@ let ToolbarButton = class ToolbarButton extends _core_ui_button_index_js__WEBPAC
40393
40505
  getRole() {
40394
40506
  return 'listitem';
40395
40507
  }
40508
+ updateAriaLabel() {
40509
+ super.updateAriaLabel();
40510
+ if (this.trigger) {
40511
+ const i8nTooltip = this.state.tooltip ? this.jodit.i18n(this.state.tooltip) : null;
40512
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_14__.attr)(this.trigger, 'aria-label', i8nTooltip);
40513
+ }
40514
+ }
40396
40515
  /**
40397
40516
  * Get parent toolbar
40398
40517
  */ get toolbar() {
@@ -40466,7 +40585,7 @@ let ToolbarButton = class ToolbarButton extends _core_ui_button_index_js__WEBPAC
40466
40585
  value: this
40467
40586
  });
40468
40587
  container.appendChild(button);
40469
- const trigger = this.j.c.fromHTML(`<span role="trigger" class="${cn}__trigger">${_core_ui_icon_js__WEBPACK_IMPORTED_MODULE_18__.Icon.get('chevron')}</span>`);
40588
+ const trigger = this.j.c.fromHTML(`<span role="button" aria-haspopup="true" aria-expanded="false" class="${cn}__trigger">${_core_ui_icon_js__WEBPACK_IMPORTED_MODULE_18__.Icon.get('chevron')}</span>`);
40470
40589
  // For caching
40471
40590
  button.appendChild(trigger);
40472
40591
  return container;
@@ -40525,6 +40644,7 @@ let ToolbarButton = class ToolbarButton extends _core_ui_button_index_js__WEBPAC
40525
40644
  return;
40526
40645
  }
40527
40646
  const { control: ctr } = this;
40647
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_14__.attr)(this.trigger, 'aria-expanded', true);
40528
40648
  e.buffer = {
40529
40649
  actionTrigger: this
40530
40650
  };
@@ -40638,6 +40758,9 @@ let ToolbarButton = class ToolbarButton extends _core_ui_button_index_js__WEBPAC
40638
40758
  this.openedPopup.close();
40639
40759
  this.openedPopup.destruct();
40640
40760
  this.openedPopup = null;
40761
+ if (this.trigger) {
40762
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_14__.attr)(this.trigger, 'aria-expanded', false);
40763
+ }
40641
40764
  }
40642
40765
  }
40643
40766
  /**
@@ -44455,7 +44578,7 @@ __webpack_require__.r(__webpack_exports__);
44455
44578
  * ```
44456
44579
  * @packageDocumentation
44457
44580
  * @module constants
44458
- */ const APP_VERSION = "4.9.22";
44581
+ */ const APP_VERSION = "4.9.27";
44459
44582
  // prettier-ignore
44460
44583
  const ES = "es2021";
44461
44584
  const IS_ES_MODERN = true;
@@ -45106,11 +45229,13 @@ ToolbarSelect = __decorate([
45106
45229
  /* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
45107
45230
  /* harmony import */ var _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(22732);
45108
45231
  /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(580);
45109
- /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21537);
45110
- /* harmony import */ var _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(50911);
45111
- /* harmony import */ var _modules_context_menu_context_menu_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(80870);
45112
- /* harmony import */ var _modules_toolbar_factory_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(21491);
45113
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(86012);
45232
+ /* harmony import */ var _core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(49055);
45233
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(29960);
45234
+ /* harmony import */ var _core_helpers_utils_selector_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(76078);
45235
+ /* harmony import */ var _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(50911);
45236
+ /* harmony import */ var _modules_context_menu_context_menu_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(80870);
45237
+ /* harmony import */ var _modules_toolbar_factory_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(21491);
45238
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(86012);
45114
45239
  /*!
45115
45240
  * Jodit Editor (https://xdsoft.net/jodit/)
45116
45241
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -45123,12 +45248,15 @@ ToolbarSelect = __decorate([
45123
45248
 
45124
45249
 
45125
45250
 
45251
+
45252
+
45126
45253
  /**
45127
45254
  * Show a path to a current element in status bar
45128
- */ class xpath extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__.Plugin {
45255
+ */ class xpath extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_6__.Plugin {
45129
45256
  afterInit() {
45130
45257
  if (this.j.o.showXPathInStatusbar) {
45131
45258
  this.container = this.j.c.div('jodit-xpath');
45259
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__.attr)(this.container, 'role', 'list');
45132
45260
  const init = ()=>{
45133
45261
  if (!this.j.o.showXPathInStatusbar || !this.container) {
45134
45262
  return;
@@ -45143,7 +45271,7 @@ ToolbarSelect = __decorate([
45143
45271
  this.appendSelectAll();
45144
45272
  }
45145
45273
  };
45146
- this.j.e.off('.xpath').on('mouseup.xpath change.xpath keydown.xpath changeSelection.xpath', this.calcPath).on('afterSetMode.xpath afterInit.xpath changePlace.xpath', init);
45274
+ this.j.e.off('.xpath').on('pointerup.xpath change.xpath keydown.xpath changeSelection.xpath', this.calcPath).on('afterSetMode.xpath afterInit.xpath changePlace.xpath', init);
45147
45275
  init();
45148
45276
  this.calcPath();
45149
45277
  }
@@ -45162,7 +45290,7 @@ ToolbarSelect = __decorate([
45162
45290
  super(...arguments);
45163
45291
  this.onContext = (bindElement, event)=>{
45164
45292
  if (!this.menu) {
45165
- this.menu = new _modules_context_menu_context_menu_js__WEBPACK_IMPORTED_MODULE_5__.ContextMenu(this.j);
45293
+ this.menu = new _modules_context_menu_context_menu_js__WEBPACK_IMPORTED_MODULE_7__.ContextMenu(this.j);
45166
45294
  }
45167
45295
  this.menu.show(event.clientX, event.clientY, [
45168
45296
  {
@@ -45189,7 +45317,7 @@ ToolbarSelect = __decorate([
45189
45317
  };
45190
45318
  this.onSelectPath = (bindElement, event)=>{
45191
45319
  this.j.s.focus();
45192
- const path = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(event.target, '-path') || '/';
45320
+ const path = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_4__.attr)(event.target, '-path') || '/';
45193
45321
  if (path === '/') {
45194
45322
  this.j.execCommand('selectall');
45195
45323
  return false;
@@ -45205,7 +45333,7 @@ ToolbarSelect = __decorate([
45205
45333
  return false;
45206
45334
  };
45207
45335
  this.tpl = (bindElement, path, name, title)=>{
45208
- const item = this.j.c.fromHTML(`<span class="jodit-xpath__item"><a role="button" data-path="${path}" title="${title}" tabindex="-1"'>${(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.trim)(name)}</a></span>`);
45336
+ const item = this.j.c.fromHTML(`<span class="jodit-xpath__item"><a role="button" data-path="${path}" title="${title}" tabindex="-1"'>${(0,_core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_3__.trim)(name)}</a></span>`);
45209
45337
  const a = item.firstChild;
45210
45338
  this.j.e.on(a, 'click', this.onSelectPath.bind(this, bindElement)).on(a, 'contextmenu', this.onContext.bind(this, bindElement));
45211
45339
  return item;
@@ -45218,7 +45346,7 @@ ToolbarSelect = __decorate([
45218
45346
  };
45219
45347
  this.appendSelectAll = ()=>{
45220
45348
  this.removeSelectAll();
45221
- this.selectAllButton = (0,_modules_toolbar_factory_js__WEBPACK_IMPORTED_MODULE_6__.makeButton)(this.j, {
45349
+ this.selectAllButton = (0,_modules_toolbar_factory_js__WEBPACK_IMPORTED_MODULE_8__.makeButton)(this.j, {
45222
45350
  name: 'selectall',
45223
45351
  ...this.j.o.controls.selectall
45224
45352
  });
@@ -45238,7 +45366,7 @@ ToolbarSelect = __decorate([
45238
45366
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.up(current, (elm)=>{
45239
45367
  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)) {
45240
45368
  name = elm.nodeName.toLowerCase();
45241
- xpth = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.getXPathByElement)(elm, this.j.editor).replace(/^\//, '');
45369
+ xpth = (0,_core_helpers_utils_selector_js__WEBPACK_IMPORTED_MODULE_5__.getXPathByElement)(elm, this.j.editor).replace(/^\//, '');
45242
45370
  li = this.tpl(elm, xpth, name, this.j.i18n('Select %s', name));
45243
45371
  this.container && this.container.insertBefore(li, this.container.firstChild);
45244
45372
  }