jodit-pro 4.12.26 → 4.12.32

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 (346) hide show
  1. package/es2015/jodit.css +1 -1
  2. package/es2015/jodit.fat.min.css +1 -1
  3. package/es2015/jodit.fat.min.js +16 -14
  4. package/es2015/jodit.js +419 -122
  5. package/es2015/jodit.min.js +11 -11
  6. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  7. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  8. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  9. package/es2015/plugins/autocomplete/autocomplete.css +62 -0
  10. package/es2015/plugins/autocomplete/autocomplete.js +29 -2
  11. package/es2015/plugins/autocomplete/autocomplete.min.css +1 -0
  12. package/es2015/plugins/autocomplete/autocomplete.min.js +2 -2
  13. package/es2015/plugins/backup/backup.css +1 -1
  14. package/es2015/plugins/backup/backup.js +1 -1
  15. package/es2015/plugins/backup/backup.min.js +1 -1
  16. package/es2015/plugins/button-generator/button-generator.css +1 -1
  17. package/es2015/plugins/button-generator/button-generator.js +1 -1
  18. package/es2015/plugins/button-generator/button-generator.min.js +1 -1
  19. package/es2015/plugins/change-case/change-case.js +1 -1
  20. package/es2015/plugins/change-case/change-case.min.js +1 -1
  21. package/es2015/plugins/color-picker/color-picker.css +1 -1
  22. package/es2015/plugins/color-picker/color-picker.js +1 -1
  23. package/es2015/plugins/color-picker/color-picker.min.js +1 -1
  24. package/es2015/plugins/emoji/emoji.css +1 -1
  25. package/es2015/plugins/emoji/emoji.js +1 -1
  26. package/es2015/plugins/emoji/emoji.min.js +1 -1
  27. package/es2015/plugins/export-docs/export-docs.js +1 -1
  28. package/es2015/plugins/export-docs/export-docs.min.js +1 -1
  29. package/es2015/plugins/finder/finder.css +1 -1
  30. package/es2015/plugins/finder/finder.js +1 -1
  31. package/es2015/plugins/finder/finder.min.js +1 -1
  32. package/es2015/plugins/google-maps/google-maps.css +1 -1
  33. package/es2015/plugins/google-maps/google-maps.js +1 -1
  34. package/es2015/plugins/google-maps/google-maps.min.js +1 -1
  35. package/es2015/plugins/google-search/google-search.js +1 -1
  36. package/es2015/plugins/google-search/google-search.min.js +1 -1
  37. package/es2015/plugins/highlight-signature/highlight-signature.js +1 -1
  38. package/es2015/plugins/highlight-signature/highlight-signature.min.js +1 -1
  39. package/es2015/plugins/iframe-editor/iframe-editor.css +1 -1
  40. package/es2015/plugins/iframe-editor/iframe-editor.js +1 -1
  41. package/es2015/plugins/iframe-editor/iframe-editor.min.js +1 -1
  42. package/es2015/plugins/keyboard/keyboard.css +1 -1
  43. package/es2015/plugins/keyboard/keyboard.js +1 -1
  44. package/es2015/plugins/keyboard/keyboard.min.js +1 -1
  45. package/es2015/plugins/mobile-view/mobile-view.js +1 -1
  46. package/es2015/plugins/mobile-view/mobile-view.min.js +1 -1
  47. package/es2015/plugins/page-break/page-break.js +23 -2
  48. package/es2015/plugins/page-break/page-break.min.js +2 -2
  49. package/es2015/plugins/paste-code/paste-code.css +28 -1
  50. package/es2015/plugins/paste-code/paste-code.js +489 -64
  51. package/es2015/plugins/paste-code/paste-code.min.css +1 -1
  52. package/es2015/plugins/paste-code/paste-code.min.js +4 -2
  53. package/es2015/plugins/paste-from-word/paste-from-word.js +1 -1
  54. package/es2015/plugins/paste-from-word/paste-from-word.min.js +1 -1
  55. package/es2015/plugins/show-blocks/show-blocks.js +1 -1
  56. package/es2015/plugins/show-blocks/show-blocks.min.js +1 -1
  57. package/es2015/plugins/style/style.css +1 -1
  58. package/es2015/plugins/style/style.js +1 -1
  59. package/es2015/plugins/style/style.min.js +1 -1
  60. package/es2015/plugins/templates/templates.css +1 -1
  61. package/es2015/plugins/templates/templates.js +1 -1
  62. package/es2015/plugins/templates/templates.min.js +1 -1
  63. package/es2015/plugins/todo-list/todo-list.css +1 -1
  64. package/es2015/plugins/todo-list/todo-list.js +9 -1
  65. package/es2015/plugins/todo-list/todo-list.min.js +2 -2
  66. package/es2015/plugins/translate/translate.css +1 -1
  67. package/es2015/plugins/translate/translate.js +1 -1
  68. package/es2015/plugins/translate/translate.min.js +1 -1
  69. package/es2015/plugins/tune-block/tune-block.css +1 -1
  70. package/es2015/plugins/tune-block/tune-block.js +1 -1
  71. package/es2015/plugins/tune-block/tune-block.min.js +1 -1
  72. package/es2018/jodit.fat.min.css +1 -1
  73. package/es2018/jodit.fat.min.js +16 -14
  74. package/es2018/jodit.min.js +11 -11
  75. package/es2018/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  76. package/es2018/plugins/autocomplete/autocomplete.min.css +1 -0
  77. package/es2018/plugins/autocomplete/autocomplete.min.js +2 -2
  78. package/es2018/plugins/backup/backup.min.js +1 -1
  79. package/es2018/plugins/button-generator/button-generator.min.js +1 -1
  80. package/es2018/plugins/change-case/change-case.min.js +1 -1
  81. package/es2018/plugins/color-picker/color-picker.min.js +1 -1
  82. package/es2018/plugins/emoji/emoji.min.js +1 -1
  83. package/es2018/plugins/export-docs/export-docs.min.js +1 -1
  84. package/es2018/plugins/finder/finder.min.js +1 -1
  85. package/es2018/plugins/google-maps/google-maps.min.js +1 -1
  86. package/es2018/plugins/google-search/google-search.min.js +1 -1
  87. package/es2018/plugins/highlight-signature/highlight-signature.min.js +1 -1
  88. package/es2018/plugins/iframe-editor/iframe-editor.min.js +1 -1
  89. package/es2018/plugins/keyboard/keyboard.min.js +1 -1
  90. package/es2018/plugins/mobile-view/mobile-view.min.js +1 -1
  91. package/es2018/plugins/page-break/page-break.min.js +2 -2
  92. package/es2018/plugins/paste-code/paste-code.min.css +1 -1
  93. package/es2018/plugins/paste-code/paste-code.min.js +4 -2
  94. package/es2018/plugins/paste-from-word/paste-from-word.min.js +1 -1
  95. package/es2018/plugins/show-blocks/show-blocks.min.js +1 -1
  96. package/es2018/plugins/style/style.min.js +1 -1
  97. package/es2018/plugins/templates/templates.min.js +1 -1
  98. package/es2018/plugins/todo-list/todo-list.min.js +2 -2
  99. package/es2018/plugins/translate/translate.min.js +1 -1
  100. package/es2018/plugins/tune-block/tune-block.min.js +1 -1
  101. package/es2021/jodit.css +1 -1
  102. package/es2021/jodit.fat.min.css +1 -1
  103. package/es2021/jodit.fat.min.js +19 -17
  104. package/es2021/jodit.js +418 -121
  105. package/es2021/jodit.min.js +14 -14
  106. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  107. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  108. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  109. package/es2021/plugins/autocomplete/autocomplete.css +62 -0
  110. package/es2021/plugins/autocomplete/autocomplete.js +29 -2
  111. package/es2021/plugins/autocomplete/autocomplete.min.css +1 -0
  112. package/es2021/plugins/autocomplete/autocomplete.min.js +2 -2
  113. package/es2021/plugins/backup/backup.css +1 -1
  114. package/es2021/plugins/backup/backup.js +1 -1
  115. package/es2021/plugins/backup/backup.min.js +1 -1
  116. package/es2021/plugins/button-generator/button-generator.css +1 -1
  117. package/es2021/plugins/button-generator/button-generator.js +1 -1
  118. package/es2021/plugins/button-generator/button-generator.min.js +1 -1
  119. package/es2021/plugins/change-case/change-case.js +1 -1
  120. package/es2021/plugins/change-case/change-case.min.js +1 -1
  121. package/es2021/plugins/color-picker/color-picker.css +1 -1
  122. package/es2021/plugins/color-picker/color-picker.js +1 -1
  123. package/es2021/plugins/color-picker/color-picker.min.js +1 -1
  124. package/es2021/plugins/emoji/emoji.css +1 -1
  125. package/es2021/plugins/emoji/emoji.js +1 -1
  126. package/es2021/plugins/emoji/emoji.min.js +1 -1
  127. package/es2021/plugins/export-docs/export-docs.js +1 -1
  128. package/es2021/plugins/export-docs/export-docs.min.js +1 -1
  129. package/es2021/plugins/finder/finder.css +1 -1
  130. package/es2021/plugins/finder/finder.js +1 -1
  131. package/es2021/plugins/finder/finder.min.js +1 -1
  132. package/es2021/plugins/google-maps/google-maps.css +1 -1
  133. package/es2021/plugins/google-maps/google-maps.js +1 -1
  134. package/es2021/plugins/google-maps/google-maps.min.js +1 -1
  135. package/es2021/plugins/google-search/google-search.js +1 -1
  136. package/es2021/plugins/google-search/google-search.min.js +1 -1
  137. package/es2021/plugins/highlight-signature/highlight-signature.js +1 -1
  138. package/es2021/plugins/highlight-signature/highlight-signature.min.js +1 -1
  139. package/es2021/plugins/iframe-editor/iframe-editor.css +1 -1
  140. package/es2021/plugins/iframe-editor/iframe-editor.js +1 -1
  141. package/es2021/plugins/iframe-editor/iframe-editor.min.js +1 -1
  142. package/es2021/plugins/keyboard/keyboard.css +1 -1
  143. package/es2021/plugins/keyboard/keyboard.js +1 -1
  144. package/es2021/plugins/keyboard/keyboard.min.js +1 -1
  145. package/es2021/plugins/mobile-view/mobile-view.js +1 -1
  146. package/es2021/plugins/mobile-view/mobile-view.min.js +1 -1
  147. package/es2021/plugins/page-break/page-break.js +23 -2
  148. package/es2021/plugins/page-break/page-break.min.js +2 -2
  149. package/es2021/plugins/paste-code/paste-code.css +28 -1
  150. package/es2021/plugins/paste-code/paste-code.js +488 -64
  151. package/es2021/plugins/paste-code/paste-code.min.css +1 -1
  152. package/es2021/plugins/paste-code/paste-code.min.js +4 -2
  153. package/es2021/plugins/paste-from-word/paste-from-word.js +1 -1
  154. package/es2021/plugins/paste-from-word/paste-from-word.min.js +1 -1
  155. package/es2021/plugins/show-blocks/show-blocks.js +1 -1
  156. package/es2021/plugins/show-blocks/show-blocks.min.js +1 -1
  157. package/es2021/plugins/style/style.css +1 -1
  158. package/es2021/plugins/style/style.js +1 -1
  159. package/es2021/plugins/style/style.min.js +1 -1
  160. package/es2021/plugins/templates/templates.css +1 -1
  161. package/es2021/plugins/templates/templates.js +1 -1
  162. package/es2021/plugins/templates/templates.min.js +1 -1
  163. package/es2021/plugins/todo-list/todo-list.css +1 -1
  164. package/es2021/plugins/todo-list/todo-list.js +9 -1
  165. package/es2021/plugins/todo-list/todo-list.min.js +2 -2
  166. package/es2021/plugins/translate/translate.css +1 -1
  167. package/es2021/plugins/translate/translate.js +1 -1
  168. package/es2021/plugins/translate/translate.min.js +1 -1
  169. package/es2021/plugins/tune-block/tune-block.css +1 -1
  170. package/es2021/plugins/tune-block/tune-block.js +1 -1
  171. package/es2021/plugins/tune-block/tune-block.min.js +1 -1
  172. package/es2021.en/jodit.css +1 -1
  173. package/es2021.en/jodit.fat.min.css +1 -1
  174. package/es2021.en/jodit.fat.min.js +31 -29
  175. package/es2021.en/jodit.js +418 -121
  176. package/es2021.en/jodit.min.js +14 -14
  177. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  178. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  179. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  180. package/es2021.en/plugins/autocomplete/autocomplete.css +62 -0
  181. package/es2021.en/plugins/autocomplete/autocomplete.js +29 -2
  182. package/es2021.en/plugins/autocomplete/autocomplete.min.css +1 -0
  183. package/es2021.en/plugins/autocomplete/autocomplete.min.js +2 -2
  184. package/es2021.en/plugins/backup/backup.css +1 -1
  185. package/es2021.en/plugins/backup/backup.js +1 -1
  186. package/es2021.en/plugins/backup/backup.min.js +1 -1
  187. package/es2021.en/plugins/button-generator/button-generator.css +1 -1
  188. package/es2021.en/plugins/button-generator/button-generator.js +1 -1
  189. package/es2021.en/plugins/button-generator/button-generator.min.js +1 -1
  190. package/es2021.en/plugins/change-case/change-case.js +1 -1
  191. package/es2021.en/plugins/change-case/change-case.min.js +1 -1
  192. package/es2021.en/plugins/color-picker/color-picker.css +1 -1
  193. package/es2021.en/plugins/color-picker/color-picker.js +1 -1
  194. package/es2021.en/plugins/color-picker/color-picker.min.js +1 -1
  195. package/es2021.en/plugins/emoji/emoji.css +1 -1
  196. package/es2021.en/plugins/emoji/emoji.js +1 -1
  197. package/es2021.en/plugins/emoji/emoji.min.js +1 -1
  198. package/es2021.en/plugins/export-docs/export-docs.js +1 -1
  199. package/es2021.en/plugins/export-docs/export-docs.min.js +1 -1
  200. package/es2021.en/plugins/finder/finder.css +1 -1
  201. package/es2021.en/plugins/finder/finder.js +1 -1
  202. package/es2021.en/plugins/finder/finder.min.js +1 -1
  203. package/es2021.en/plugins/google-maps/google-maps.css +1 -1
  204. package/es2021.en/plugins/google-maps/google-maps.js +1 -1
  205. package/es2021.en/plugins/google-maps/google-maps.min.js +1 -1
  206. package/es2021.en/plugins/google-search/google-search.js +1 -1
  207. package/es2021.en/plugins/google-search/google-search.min.js +1 -1
  208. package/es2021.en/plugins/highlight-signature/highlight-signature.js +1 -1
  209. package/es2021.en/plugins/highlight-signature/highlight-signature.min.js +1 -1
  210. package/es2021.en/plugins/iframe-editor/iframe-editor.css +1 -1
  211. package/es2021.en/plugins/iframe-editor/iframe-editor.js +1 -1
  212. package/es2021.en/plugins/iframe-editor/iframe-editor.min.js +1 -1
  213. package/es2021.en/plugins/keyboard/keyboard.css +1 -1
  214. package/es2021.en/plugins/keyboard/keyboard.js +1 -1
  215. package/es2021.en/plugins/keyboard/keyboard.min.js +1 -1
  216. package/es2021.en/plugins/mobile-view/mobile-view.js +1 -1
  217. package/es2021.en/plugins/mobile-view/mobile-view.min.js +1 -1
  218. package/es2021.en/plugins/page-break/page-break.js +23 -2
  219. package/es2021.en/plugins/page-break/page-break.min.js +2 -2
  220. package/es2021.en/plugins/paste-code/paste-code.css +28 -1
  221. package/es2021.en/plugins/paste-code/paste-code.js +488 -64
  222. package/es2021.en/plugins/paste-code/paste-code.min.css +1 -1
  223. package/es2021.en/plugins/paste-code/paste-code.min.js +4 -2
  224. package/es2021.en/plugins/paste-from-word/paste-from-word.js +1 -1
  225. package/es2021.en/plugins/paste-from-word/paste-from-word.min.js +1 -1
  226. package/es2021.en/plugins/show-blocks/show-blocks.js +1 -1
  227. package/es2021.en/plugins/show-blocks/show-blocks.min.js +1 -1
  228. package/es2021.en/plugins/style/style.css +1 -1
  229. package/es2021.en/plugins/style/style.js +1 -1
  230. package/es2021.en/plugins/style/style.min.js +1 -1
  231. package/es2021.en/plugins/templates/templates.css +1 -1
  232. package/es2021.en/plugins/templates/templates.js +1 -1
  233. package/es2021.en/plugins/templates/templates.min.js +1 -1
  234. package/es2021.en/plugins/todo-list/todo-list.css +1 -1
  235. package/es2021.en/plugins/todo-list/todo-list.js +9 -1
  236. package/es2021.en/plugins/todo-list/todo-list.min.js +2 -2
  237. package/es2021.en/plugins/translate/translate.css +1 -1
  238. package/es2021.en/plugins/translate/translate.js +1 -1
  239. package/es2021.en/plugins/translate/translate.min.js +1 -1
  240. package/es2021.en/plugins/tune-block/tune-block.css +1 -1
  241. package/es2021.en/plugins/tune-block/tune-block.js +1 -1
  242. package/es2021.en/plugins/tune-block/tune-block.min.js +1 -1
  243. package/es5/jodit.css +2 -2
  244. package/es5/jodit.fat.min.css +1 -1
  245. package/es5/jodit.fat.min.js +2 -2
  246. package/es5/jodit.js +565 -157
  247. package/es5/jodit.min.css +2 -2
  248. package/es5/jodit.min.js +2 -2
  249. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  250. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  251. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  252. package/es5/plugins/autocomplete/autocomplete.css +62 -0
  253. package/es5/plugins/autocomplete/autocomplete.js +29 -2
  254. package/es5/plugins/autocomplete/autocomplete.min.css +1 -0
  255. package/es5/plugins/autocomplete/autocomplete.min.js +2 -2
  256. package/es5/plugins/backup/backup.css +1 -1
  257. package/es5/plugins/backup/backup.js +1 -1
  258. package/es5/plugins/backup/backup.min.js +1 -1
  259. package/es5/plugins/button-generator/button-generator.css +1 -1
  260. package/es5/plugins/button-generator/button-generator.js +1 -1
  261. package/es5/plugins/button-generator/button-generator.min.js +1 -1
  262. package/es5/plugins/change-case/change-case.js +1 -1
  263. package/es5/plugins/change-case/change-case.min.js +1 -1
  264. package/es5/plugins/color-picker/color-picker.css +1 -1
  265. package/es5/plugins/color-picker/color-picker.js +1 -1
  266. package/es5/plugins/color-picker/color-picker.min.js +1 -1
  267. package/es5/plugins/emoji/emoji.css +1 -1
  268. package/es5/plugins/emoji/emoji.js +1 -1
  269. package/es5/plugins/emoji/emoji.min.js +1 -1
  270. package/es5/plugins/export-docs/export-docs.js +1 -1
  271. package/es5/plugins/export-docs/export-docs.min.js +1 -1
  272. package/es5/plugins/finder/finder.css +1 -1
  273. package/es5/plugins/finder/finder.js +1 -1
  274. package/es5/plugins/finder/finder.min.js +1 -1
  275. package/es5/plugins/google-maps/google-maps.css +1 -1
  276. package/es5/plugins/google-maps/google-maps.js +1 -1
  277. package/es5/plugins/google-maps/google-maps.min.js +1 -1
  278. package/es5/plugins/google-search/google-search.js +1 -1
  279. package/es5/plugins/google-search/google-search.min.js +1 -1
  280. package/es5/plugins/highlight-signature/highlight-signature.js +1 -1
  281. package/es5/plugins/highlight-signature/highlight-signature.min.js +1 -1
  282. package/es5/plugins/iframe-editor/iframe-editor.css +1 -1
  283. package/es5/plugins/iframe-editor/iframe-editor.js +1 -1
  284. package/es5/plugins/iframe-editor/iframe-editor.min.js +1 -1
  285. package/es5/plugins/keyboard/keyboard.css +1 -1
  286. package/es5/plugins/keyboard/keyboard.js +1 -1
  287. package/es5/plugins/keyboard/keyboard.min.js +1 -1
  288. package/es5/plugins/mobile-view/mobile-view.js +1 -1
  289. package/es5/plugins/mobile-view/mobile-view.min.js +1 -1
  290. package/es5/plugins/page-break/page-break.js +23 -2
  291. package/es5/plugins/page-break/page-break.min.js +2 -2
  292. package/es5/plugins/paste-code/paste-code.css +28 -1
  293. package/es5/plugins/paste-code/paste-code.js +586 -66
  294. package/es5/plugins/paste-code/paste-code.min.css +1 -1
  295. package/es5/plugins/paste-code/paste-code.min.js +2 -2
  296. package/es5/plugins/paste-from-word/paste-from-word.js +1 -1
  297. package/es5/plugins/paste-from-word/paste-from-word.min.js +1 -1
  298. package/es5/plugins/show-blocks/show-blocks.js +1 -1
  299. package/es5/plugins/show-blocks/show-blocks.min.js +1 -1
  300. package/es5/plugins/style/style.css +1 -1
  301. package/es5/plugins/style/style.js +1 -1
  302. package/es5/plugins/style/style.min.js +1 -1
  303. package/es5/plugins/templates/templates.css +1 -1
  304. package/es5/plugins/templates/templates.js +1 -1
  305. package/es5/plugins/templates/templates.min.js +1 -1
  306. package/es5/plugins/todo-list/todo-list.css +1 -1
  307. package/es5/plugins/todo-list/todo-list.js +9 -1
  308. package/es5/plugins/todo-list/todo-list.min.js +2 -2
  309. package/es5/plugins/translate/translate.css +1 -1
  310. package/es5/plugins/translate/translate.js +1 -1
  311. package/es5/plugins/translate/translate.min.js +1 -1
  312. package/es5/plugins/tune-block/tune-block.css +1 -1
  313. package/es5/plugins/tune-block/tune-block.js +1 -1
  314. package/es5/plugins/tune-block/tune-block.min.js +1 -1
  315. package/es5/polyfills.fat.min.js +1 -1
  316. package/es5/polyfills.js +1 -1
  317. package/es5/polyfills.min.js +1 -1
  318. package/esm/config.d.ts +6 -1
  319. package/esm/plugins/all.d.ts +1 -1
  320. package/esm/plugins/all.js +1 -1
  321. package/esm/plugins/autocomplete/autocomplete.d.ts +2 -26
  322. package/esm/plugins/autocomplete/autocomplete.impl.d.ts +31 -0
  323. package/esm/plugins/autocomplete/autocomplete.impl.js +1 -0
  324. package/esm/plugins/autocomplete/autocomplete.js +1 -1
  325. package/esm/plugins/index.d.ts +1 -1
  326. package/esm/plugins/index.js +1 -1
  327. package/esm/plugins/page-break/page-break.js +1 -1
  328. package/esm/plugins/paste-code/config.d.ts +6 -1
  329. package/esm/plugins/paste-code/config.js +1 -1
  330. package/esm/plugins/paste-code/helpers.d.ts +25 -0
  331. package/esm/plugins/paste-code/helpers.js +1 -0
  332. package/esm/plugins/paste-code/paste-code.d.ts +9 -0
  333. package/esm/plugins/paste-code/paste-code.js +1 -1
  334. package/esm/plugins/paste-code/ui/code-tuner/code-tuner.d.ts +87 -0
  335. package/esm/plugins/paste-code/ui/code-tuner/code-tuner.js +3 -0
  336. package/esm/plugins/paste-code/ui/code-tuner/drag.svg.js +1 -0
  337. package/esm/plugins/todo-list/todo-list.js +1 -1
  338. package/package.json +1 -1
  339. package/types/config.d.ts +6 -1
  340. package/types/plugins/autocomplete/autocomplete.d.ts +2 -26
  341. package/types/plugins/autocomplete/autocomplete.impl.d.ts +31 -0
  342. package/types/plugins/index.d.ts +1 -1
  343. package/types/plugins/paste-code/config.d.ts +6 -1
  344. package/types/plugins/paste-code/helpers.d.ts +25 -0
  345. package/types/plugins/paste-code/paste-code.d.ts +9 -0
  346. package/types/plugins/paste-code/ui/code-tuner/code-tuner.d.ts +87 -0
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.12.26
4
+ * Version: v4.12.32
5
5
  * Url: https://xdsoft.net/jodit/pro/
6
6
  * License(s): SEE LICENSE IN LICENSE.md
7
7
  */
@@ -2130,6 +2130,14 @@ var ViewComponent = /*#__PURE__*/ function(Component) {
2130
2130
  */ key: "setParentView",
2131
2131
  value: function setParentView(jodit) {
2132
2132
  this.jodit = jodit;
2133
+ // Inherit the owner window from the parent view — for an editor
2134
+ // created with a custom `ownerWindow` (e.g. inside an iframe) the
2135
+ // component default (the global `window`) is wrong: outside-click
2136
+ // handlers of dropdowns/popups listened to the wrong window. See
2137
+ // https://github.com/xdan/jodit/issues/965
2138
+ if (jodit.ow) {
2139
+ this.ownerWindow = jodit.ow;
2140
+ }
2133
2141
  jodit.components.add(this);
2134
2142
  return this;
2135
2143
  }
@@ -2258,7 +2266,7 @@ function _unsupported_iterable_to_array(o, minLen) {
2258
2266
  if (n === "Map" || n === "Set") return Array.from(n);
2259
2267
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
2260
2268
  }
2261
- var APP_VERSION = "4.12.26";
2269
+ var APP_VERSION = "4.12.32";
2262
2270
  // prettier-ignore
2263
2271
  var ES = "es5";
2264
2272
  var IS_ES_MODERN = false;
@@ -6777,9 +6785,15 @@ function isFastEqual(a, b) {
6777
6785
  */ /**
6778
6786
  * @module helpers/checker
6779
6787
  */ /**
6780
- * Detect if string is HTML from MS Word or Excel
6788
+ * Detect if string is HTML from MS Word, Excel or LibreOffice/OpenOffice
6781
6789
  */ function isHtmlFromWord(data) {
6782
- return data.search(/<meta.*?Microsoft Excel\s[\d].*?>/) !== -1 || data.search(/<meta.*?Microsoft Word\s[\d].*?>/) !== -1 || data.search(/style="[^"]*mso-/) !== -1 && data.search(/<font/) !== -1;
6790
+ return data.search(/<meta.*?Microsoft Excel\s[\d].*?>/) !== -1 || data.search(/<meta.*?Microsoft Word\s[\d].*?>/) !== -1 || // `<meta name=ProgId content=Word.Document>` attribute values are
6791
+ // unquoted in the raw Word clipboard fragment
6792
+ data.search(/<meta[^>]*?ProgId[^>]*?(Word|Excel)\./i) !== -1 || // LibreOffice/OpenOffice Writer & Calc
6793
+ data.search(/<meta[^>]*?(LibreOffice|OpenOffice)/i) !== -1 || // Office namespaces on the root element of the clipboard fragment
6794
+ data.search(/urn:schemas-microsoft-com:office:(word|excel)/) !== -1 || // `class=MsoNormal` and friends (unquoted/quoted)
6795
+ data.search(/<\w[^>]*\sclass=("|')?Mso/) !== -1 || // the raw Word clipboard uses SINGLE quotes: style='mso-…'
6796
+ data.search(/style='[^']*mso-/) !== -1 || data.search(/style="[^"]*mso-/) !== -1 && data.search(/<font/) !== -1;
6783
6797
  }
6784
6798
 
6785
6799
 
@@ -7887,6 +7901,7 @@ __webpack_require__.r(__webpack_exports__);
7887
7901
  /* harmony export */ LimitedStack: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.LimitedStack; },
7888
7902
  /* harmony export */ NUMBER_FIELDS_REG: function() { return /* reexport safe */ _normalize_index_js__WEBPACK_IMPORTED_MODULE_5__.NUMBER_FIELDS_REG; },
7889
7903
  /* harmony export */ OptionsError: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.OptionsError; },
7904
+ /* harmony export */ UNSAFE_PROTO_KEYS: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.UNSAFE_PROTO_KEYS; },
7890
7905
  /* harmony export */ abort: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.abort; },
7891
7906
  /* harmony export */ alignElement: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.alignElement; },
7892
7907
  /* harmony export */ alreadyLoadedList: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.alreadyLoadedList; },
@@ -7959,6 +7974,7 @@ __webpack_require__.r(__webpack_exports__);
7959
7974
  /* harmony export */ isString: function() { return /* reexport safe */ _checker_index_js__WEBPACK_IMPORTED_MODULE_2__.isString; },
7960
7975
  /* harmony export */ isStringArray: function() { return /* reexport safe */ _checker_index_js__WEBPACK_IMPORTED_MODULE_2__.isStringArray; },
7961
7976
  /* harmony export */ isURL: function() { return /* reexport safe */ _checker_index_js__WEBPACK_IMPORTED_MODULE_2__.isURL; },
7977
+ /* harmony export */ isUnsafeProtoKey: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.isUnsafeProtoKey; },
7962
7978
  /* harmony export */ isValidName: function() { return /* reexport safe */ _checker_index_js__WEBPACK_IMPORTED_MODULE_2__.isValidName; },
7963
7979
  /* harmony export */ isViewObject: function() { return /* reexport safe */ _checker_index_js__WEBPACK_IMPORTED_MODULE_2__.isViewObject; },
7964
7980
  /* harmony export */ isVoid: function() { return /* reexport safe */ _checker_index_js__WEBPACK_IMPORTED_MODULE_2__.isVoid; },
@@ -9517,7 +9533,8 @@ var completeUrl = function completeUrl(url) {
9517
9533
  /* harmony import */ var _checker_is_void_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(86068);
9518
9534
  /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6441);
9519
9535
  /* harmony import */ var _extend_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(97735);
9520
- /* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(37790);
9536
+ /* harmony import */ var _is_unsafe_proto_key_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(69175);
9537
+ /* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(37790);
9521
9538
  function _array_like_to_array(arr, len) {
9522
9539
  if (len == null || len > arr.length) len = arr.length;
9523
9540
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -9554,18 +9571,7 @@ function _unsupported_iterable_to_array(o, minLen) {
9554
9571
 
9555
9572
 
9556
9573
 
9557
- /**
9558
- * Keys that must never be copied from a (potentially untrusted) config object —
9559
- * assigning them during a recursive merge can reach and mutate
9560
- * `Object.prototype` (prototype pollution, CWE-1321).
9561
- */ var UNSAFE_PROTO_KEYS = [
9562
- '__proto__',
9563
- 'constructor',
9564
- 'prototype'
9565
- ];
9566
- function isUnsafeProtoKey(key) {
9567
- return UNSAFE_PROTO_KEYS.indexOf(key) !== -1;
9568
- }
9574
+
9569
9575
  /**
9570
9576
  * @example
9571
9577
  * ```js
@@ -9615,7 +9621,7 @@ function isUnsafeProtoKey(key) {
9615
9621
  }
9616
9622
  var newOpt = {};
9617
9623
  Object.keys(options).forEach(function(key) {
9618
- if (isUnsafeProtoKey(key)) {
9624
+ if ((0,_is_unsafe_proto_key_js__WEBPACK_IMPORTED_MODULE_6__.isUnsafeProtoKey)(key)) {
9619
9625
  return;
9620
9626
  }
9621
9627
  var opt = options[key], protoKey = proto ? proto[key] : null;
@@ -9634,7 +9640,7 @@ function isUnsafeProtoKey(key) {
9634
9640
  return newOpt;
9635
9641
  }
9636
9642
  function ConfigFlatten(obj) {
9637
- return (0,_utils_js__WEBPACK_IMPORTED_MODULE_6__.keys)(obj, false).reduce(function(app, key) {
9643
+ return (0,_utils_js__WEBPACK_IMPORTED_MODULE_7__.keys)(obj, false).reduce(function(app, key) {
9638
9644
  app[key] = obj[key];
9639
9645
  return app;
9640
9646
  }, {});
@@ -9676,7 +9682,7 @@ function ConfigFlatten(obj) {
9676
9682
  * @see {@link ConfigProto} for the prototype-chain variant used at editor creation time
9677
9683
  */ function ConfigMerge(target, source) {
9678
9684
  Object.keys(source).forEach(function(key) {
9679
- if (isUnsafeProtoKey(key)) {
9685
+ if ((0,_is_unsafe_proto_key_js__WEBPACK_IMPORTED_MODULE_6__.isUnsafeProtoKey)(key)) {
9680
9686
  return;
9681
9687
  }
9682
9688
  var srcVal = source[key];
@@ -9689,7 +9695,7 @@ function ConfigFlatten(obj) {
9689
9695
  });
9690
9696
  }
9691
9697
  function ConfigDeepFlatten(obj) {
9692
- return (0,_utils_js__WEBPACK_IMPORTED_MODULE_6__.keys)(obj, false).reduce(function(app, key) {
9698
+ return (0,_utils_js__WEBPACK_IMPORTED_MODULE_7__.keys)(obj, false).reduce(function(app, key) {
9693
9699
  app[key] = (0,_checker_is_plain_object_js__WEBPACK_IMPORTED_MODULE_1__.isPlainObject)(obj[key]) ? ConfigDeepFlatten(obj[key]) : obj[key];
9694
9700
  return app;
9695
9701
  }, {});
@@ -10511,14 +10517,15 @@ var getClassName = function getClassName(obj) {
10511
10517
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
10512
10518
 
10513
10519
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
10514
- /* harmony export */ $$: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_23__.$$; },
10520
+ /* harmony export */ $$: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_24__.$$; },
10515
10521
  /* harmony export */ ConfigDeepFlatten: function() { return /* reexport safe */ _config_proto_js__WEBPACK_IMPORTED_MODULE_7__.ConfigDeepFlatten; },
10516
10522
  /* harmony export */ ConfigFlatten: function() { return /* reexport safe */ _config_proto_js__WEBPACK_IMPORTED_MODULE_7__.ConfigFlatten; },
10517
10523
  /* harmony export */ ConfigMerge: function() { return /* reexport safe */ _config_proto_js__WEBPACK_IMPORTED_MODULE_7__.ConfigMerge; },
10518
10524
  /* harmony export */ ConfigProto: function() { return /* reexport safe */ _config_proto_js__WEBPACK_IMPORTED_MODULE_7__.ConfigProto; },
10519
10525
  /* harmony export */ ConnectionError: function() { return /* reexport safe */ _error_index_js__WEBPACK_IMPORTED_MODULE_13__.ConnectionError; },
10520
- /* harmony export */ LimitedStack: function() { return /* reexport safe */ _stack_js__WEBPACK_IMPORTED_MODULE_25__.LimitedStack; },
10526
+ /* harmony export */ LimitedStack: function() { return /* reexport safe */ _stack_js__WEBPACK_IMPORTED_MODULE_26__.LimitedStack; },
10521
10527
  /* harmony export */ OptionsError: function() { return /* reexport safe */ _error_index_js__WEBPACK_IMPORTED_MODULE_13__.OptionsError; },
10528
+ /* harmony export */ UNSAFE_PROTO_KEYS: function() { return /* reexport safe */ _is_unsafe_proto_key_js__WEBPACK_IMPORTED_MODULE_18__.UNSAFE_PROTO_KEYS; },
10522
10529
  /* harmony export */ abort: function() { return /* reexport safe */ _error_index_js__WEBPACK_IMPORTED_MODULE_13__.abort; },
10523
10530
  /* harmony export */ alignElement: function() { return /* reexport safe */ _align_js__WEBPACK_IMPORTED_MODULE_0__.alignElement; },
10524
10531
  /* harmony export */ alreadyLoadedList: function() { return /* reexport safe */ _append_script_js__WEBPACK_IMPORTED_MODULE_1__.alreadyLoadedList; },
@@ -10528,17 +10535,17 @@ var getClassName = function getClassName(obj) {
10528
10535
  /* harmony export */ attr: function() { return /* reexport safe */ _attr_js__WEBPACK_IMPORTED_MODULE_3__.attr; },
10529
10536
  /* harmony export */ browser: function() { return /* reexport safe */ _browser_js__WEBPACK_IMPORTED_MODULE_4__.browser; },
10530
10537
  /* harmony export */ buildQuery: function() { return /* reexport safe */ _build_query_js__WEBPACK_IMPORTED_MODULE_5__.buildQuery; },
10531
- /* harmony export */ call: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_26__.call; },
10532
- /* harmony export */ callPromise: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_26__.callPromise; },
10533
- /* harmony export */ callThis: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_26__.callThis; },
10538
+ /* harmony export */ call: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_27__.call; },
10539
+ /* harmony export */ callPromise: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_27__.callPromise; },
10540
+ /* harmony export */ callThis: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_27__.callThis; },
10534
10541
  /* harmony export */ clearAlign: function() { return /* reexport safe */ _align_js__WEBPACK_IMPORTED_MODULE_0__.clearAlign; },
10535
10542
  /* harmony export */ clearCenterAlign: function() { return /* reexport safe */ _css_js__WEBPACK_IMPORTED_MODULE_9__.clearCenterAlign; },
10536
- /* harmony export */ cns: function() { return /* reexport safe */ _mark_deprecated_js__WEBPACK_IMPORTED_MODULE_18__.cns; },
10543
+ /* harmony export */ cns: function() { return /* reexport safe */ _mark_deprecated_js__WEBPACK_IMPORTED_MODULE_19__.cns; },
10537
10544
  /* harmony export */ completeUrl: function() { return /* reexport safe */ _complete_url_js__WEBPACK_IMPORTED_MODULE_6__.completeUrl; },
10538
10545
  /* harmony export */ connection: function() { return /* reexport safe */ _error_index_js__WEBPACK_IMPORTED_MODULE_13__.connection; },
10539
10546
  /* harmony export */ convertMediaUrlToVideoEmbed: function() { return /* reexport safe */ _convert_media_url_to_video_embed_js__WEBPACK_IMPORTED_MODULE_8__.convertMediaUrlToVideoEmbed; },
10540
10547
  /* harmony export */ css: function() { return /* reexport safe */ _css_js__WEBPACK_IMPORTED_MODULE_9__.css; },
10541
- /* harmony export */ cssPath: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_23__.cssPath; },
10548
+ /* harmony export */ cssPath: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_24__.cssPath; },
10542
10549
  /* harmony export */ ctrlKey: function() { return /* reexport safe */ _ctrl_key_js__WEBPACK_IMPORTED_MODULE_10__.ctrlKey; },
10543
10550
  /* harmony export */ dataBind: function() { return /* reexport safe */ _data_bind_js__WEBPACK_IMPORTED_MODULE_11__.dataBind; },
10544
10551
  /* harmony export */ defaultLanguage: function() { return /* reexport safe */ _default_language_js__WEBPACK_IMPORTED_MODULE_12__.defaultLanguage; },
@@ -10546,30 +10553,31 @@ var getClassName = function getClassName(obj) {
10546
10553
  /* harmony export */ fastClone: function() { return /* reexport safe */ _extend_js__WEBPACK_IMPORTED_MODULE_14__.fastClone; },
10547
10554
  /* harmony export */ get: function() { return /* reexport safe */ _get_js__WEBPACK_IMPORTED_MODULE_15__.get; },
10548
10555
  /* harmony export */ getClassName: function() { return /* reexport safe */ _get_class_name_js__WEBPACK_IMPORTED_MODULE_16__.getClassName; },
10549
- /* harmony export */ getDataTransfer: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_26__.getDataTransfer; },
10550
- /* harmony export */ getPropertyDescriptor: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_26__.getPropertyDescriptor; },
10551
- /* harmony export */ getXPathByElement: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_23__.getXPathByElement; },
10556
+ /* harmony export */ getDataTransfer: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_27__.getDataTransfer; },
10557
+ /* harmony export */ getPropertyDescriptor: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_27__.getPropertyDescriptor; },
10558
+ /* harmony export */ getXPathByElement: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_24__.getXPathByElement; },
10552
10559
  /* harmony export */ hAlignElement: function() { return /* reexport safe */ _align_js__WEBPACK_IMPORTED_MODULE_0__.hAlignElement; },
10553
10560
  /* harmony export */ humanSizeToBytes: function() { return /* reexport safe */ _human_size_to_bytes_js__WEBPACK_IMPORTED_MODULE_17__.humanSizeToBytes; },
10554
- /* harmony export */ inView: function() { return /* reexport safe */ _scroll_into_view_js__WEBPACK_IMPORTED_MODULE_22__.inView; },
10561
+ /* harmony export */ inView: function() { return /* reexport safe */ _scroll_into_view_js__WEBPACK_IMPORTED_MODULE_23__.inView; },
10555
10562
  /* harmony export */ isAtom: function() { return /* reexport safe */ _extend_js__WEBPACK_IMPORTED_MODULE_14__.isAtom; },
10563
+ /* harmony export */ isUnsafeProtoKey: function() { return /* reexport safe */ _is_unsafe_proto_key_js__WEBPACK_IMPORTED_MODULE_18__.isUnsafeProtoKey; },
10556
10564
  /* harmony export */ keepNames: function() { return /* reexport safe */ _get_class_name_js__WEBPACK_IMPORTED_MODULE_16__.keepNames; },
10557
- /* harmony export */ keys: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_26__.keys; },
10558
- /* harmony export */ loadImage: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_26__.loadImage; },
10565
+ /* harmony export */ keys: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_27__.keys; },
10566
+ /* harmony export */ loadImage: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_27__.loadImage; },
10559
10567
  /* harmony export */ loadNext: function() { return /* reexport safe */ _append_script_js__WEBPACK_IMPORTED_MODULE_1__.loadNext; },
10560
10568
  /* harmony export */ loadNextStyle: function() { return /* reexport safe */ _append_script_js__WEBPACK_IMPORTED_MODULE_1__.loadNextStyle; },
10561
10569
  /* harmony export */ markAsAtomic: function() { return /* reexport safe */ _extend_js__WEBPACK_IMPORTED_MODULE_14__.markAsAtomic; },
10562
- /* harmony export */ markDeprecated: function() { return /* reexport safe */ _mark_deprecated_js__WEBPACK_IMPORTED_MODULE_18__.markDeprecated; },
10563
- /* harmony export */ markOwner: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_26__.markOwner; },
10564
- /* harmony export */ memorizeExec: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_26__.memorizeExec; },
10570
+ /* harmony export */ markDeprecated: function() { return /* reexport safe */ _mark_deprecated_js__WEBPACK_IMPORTED_MODULE_19__.markDeprecated; },
10571
+ /* harmony export */ markOwner: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_27__.markOwner; },
10572
+ /* harmony export */ memorizeExec: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_27__.memorizeExec; },
10565
10573
  /* harmony export */ options: function() { return /* reexport safe */ _error_index_js__WEBPACK_IMPORTED_MODULE_13__.options; },
10566
- /* harmony export */ parseQuery: function() { return /* reexport safe */ _parse_query_js__WEBPACK_IMPORTED_MODULE_19__.parseQuery; },
10567
- /* harmony export */ previewBox: function() { return /* reexport safe */ _print_js__WEBPACK_IMPORTED_MODULE_20__.previewBox; },
10568
- /* harmony export */ refs: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_23__.refs; },
10569
- /* harmony export */ reset: function() { return /* reexport safe */ _reset_js__WEBPACK_IMPORTED_MODULE_21__.reset; },
10570
- /* harmony export */ resolveElement: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_23__.resolveElement; },
10571
- /* harmony export */ scrollIntoViewIfNeeded: function() { return /* reexport safe */ _scroll_into_view_js__WEBPACK_IMPORTED_MODULE_22__.scrollIntoViewIfNeeded; },
10572
- /* harmony export */ set: function() { return /* reexport safe */ _set_js__WEBPACK_IMPORTED_MODULE_24__.set; }
10574
+ /* harmony export */ parseQuery: function() { return /* reexport safe */ _parse_query_js__WEBPACK_IMPORTED_MODULE_20__.parseQuery; },
10575
+ /* harmony export */ previewBox: function() { return /* reexport safe */ _print_js__WEBPACK_IMPORTED_MODULE_21__.previewBox; },
10576
+ /* harmony export */ refs: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_24__.refs; },
10577
+ /* harmony export */ reset: function() { return /* reexport safe */ _reset_js__WEBPACK_IMPORTED_MODULE_22__.reset; },
10578
+ /* harmony export */ resolveElement: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_24__.resolveElement; },
10579
+ /* harmony export */ scrollIntoViewIfNeeded: function() { return /* reexport safe */ _scroll_into_view_js__WEBPACK_IMPORTED_MODULE_23__.scrollIntoViewIfNeeded; },
10580
+ /* harmony export */ set: function() { return /* reexport safe */ _set_js__WEBPACK_IMPORTED_MODULE_25__.set; }
10573
10581
  /* harmony export */ });
10574
10582
  /* harmony import */ var _align_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25726);
10575
10583
  /* harmony import */ var _append_script_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(63799);
@@ -10589,15 +10597,16 @@ var getClassName = function getClassName(obj) {
10589
10597
  /* harmony import */ var _get_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(94643);
10590
10598
  /* harmony import */ var _get_class_name_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(80568);
10591
10599
  /* harmony import */ var _human_size_to_bytes_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(38420);
10592
- /* harmony import */ var _mark_deprecated_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(95942);
10593
- /* harmony import */ var _parse_query_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(82501);
10594
- /* harmony import */ var _print_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(11628);
10595
- /* harmony import */ var _reset_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(58844);
10596
- /* harmony import */ var _scroll_into_view_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(26395);
10597
- /* harmony import */ var _selector_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(76078);
10598
- /* harmony import */ var _set_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(3703);
10599
- /* harmony import */ var _stack_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(50535);
10600
- /* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(37790);
10600
+ /* harmony import */ var _is_unsafe_proto_key_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(69175);
10601
+ /* harmony import */ var _mark_deprecated_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(95942);
10602
+ /* harmony import */ var _parse_query_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(82501);
10603
+ /* harmony import */ var _print_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(11628);
10604
+ /* harmony import */ var _reset_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(58844);
10605
+ /* harmony import */ var _scroll_into_view_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(26395);
10606
+ /* harmony import */ var _selector_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(76078);
10607
+ /* harmony import */ var _set_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(3703);
10608
+ /* harmony import */ var _stack_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(50535);
10609
+ /* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(37790);
10601
10610
  /*!
10602
10611
  * Jodit Editor (https://xdsoft.net/jodit/)
10603
10612
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -10631,6 +10640,38 @@ var getClassName = function getClassName(obj) {
10631
10640
 
10632
10641
 
10633
10642
 
10643
+
10644
+
10645
+
10646
+ /***/ }),
10647
+
10648
+ /***/ 69175:
10649
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
10650
+
10651
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
10652
+ /* harmony export */ UNSAFE_PROTO_KEYS: function() { return /* binding */ UNSAFE_PROTO_KEYS; },
10653
+ /* harmony export */ isUnsafeProtoKey: function() { return /* binding */ isUnsafeProtoKey; }
10654
+ /* harmony export */ });
10655
+ /*!
10656
+ * Jodit Editor (https://xdsoft.net/jodit/)
10657
+ * Released under MIT see LICENSE.txt in the project root for license information.
10658
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
10659
+ */ /**
10660
+ * @module helpers/utils
10661
+ */ /**
10662
+ * Keys that must never be written from a (potentially untrusted) source —
10663
+ * assigning them while walking/merging an object can reach and mutate
10664
+ * `Object.prototype` (prototype pollution, CWE-1321).
10665
+ */ var UNSAFE_PROTO_KEYS = [
10666
+ '__proto__',
10667
+ 'constructor',
10668
+ 'prototype'
10669
+ ];
10670
+ /**
10671
+ * Check whether a key can be used to pollute the prototype chain.
10672
+ */ function isUnsafeProtoKey(key) {
10673
+ return UNSAFE_PROTO_KEYS.indexOf(key) !== -1;
10674
+ }
10634
10675
 
10635
10676
 
10636
10677
  /***/ }),
@@ -11148,6 +11189,7 @@ var $$temp = function $$temp() {
11148
11189
  /* harmony import */ var _checker_is_numeric_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29807);
11149
11190
  /* harmony import */ var _checker_is_plain_object_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(72430);
11150
11191
  /* harmony import */ var _checker_is_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(70799);
11192
+ /* harmony import */ var _is_unsafe_proto_key_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(69175);
11151
11193
  /*!
11152
11194
  * Jodit Editor (https://xdsoft.net/jodit/)
11153
11195
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -11156,6 +11198,7 @@ var $$temp = function $$temp() {
11156
11198
 
11157
11199
 
11158
11200
 
11201
+
11159
11202
  /**
11160
11203
  * Safe access in tree object
11161
11204
  *
@@ -11173,6 +11216,9 @@ var $$temp = function $$temp() {
11173
11216
  return;
11174
11217
  }
11175
11218
  var parts = chain.split('.');
11219
+ if (parts.some(_is_unsafe_proto_key_js__WEBPACK_IMPORTED_MODULE_4__.isUnsafeProtoKey)) {
11220
+ return;
11221
+ }
11176
11222
  var result = obj, key = parts[0];
11177
11223
  for(var i = 0; i < parts.length - 1; i += 1){
11178
11224
  key = parts[i];
@@ -15852,8 +15898,9 @@ function toggleAttribute(jodit, value, elm, key, dry, mode) {
15852
15898
  /* harmony export */ });
15853
15899
  /* harmony import */ var _dom_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22732);
15854
15900
  /* harmony import */ var _helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
15855
- /* harmony import */ var _list_wrap_list_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(82515);
15856
- /* harmony import */ var _wrap_unwrapped_text_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(6980);
15901
+ /* harmony import */ var _helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41180);
15902
+ /* harmony import */ var _list_wrap_list_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(82515);
15903
+ /* harmony import */ var _wrap_unwrapped_text_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6980);
15857
15904
  /*!
15858
15905
  * Jodit Editor (https://xdsoft.net/jodit/)
15859
15906
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -15862,12 +15909,29 @@ function toggleAttribute(jodit, value, elm, key, dry, mode) {
15862
15909
 
15863
15910
 
15864
15911
 
15912
+
15865
15913
  /**
15866
15914
  * Replaces the parent tag with the applicable one, or wraps the text and also replaces the tag
15867
15915
  * @private
15868
15916
  */ function wrap(commitStyle, font, jodit) {
15869
15917
  var wrapper = findOrCreateWrapper(commitStyle, font, jodit);
15870
- return commitStyle.elementIsList ? (0,_list_wrap_list_js__WEBPACK_IMPORTED_MODULE_2__.wrapList)(commitStyle, wrapper, jodit) : _dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.replace(wrapper, commitStyle.element, jodit.createInside, true);
15918
+ if (commitStyle.elementIsList) {
15919
+ return (0,_list_wrap_list_js__WEBPACK_IMPORTED_MODULE_3__.wrapList)(commitStyle, wrapper, jodit);
15920
+ }
15921
+ var newWrapper = _dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.replace(wrapper, commitStyle.element, jodit.createInside, true);
15922
+ if (commitStyle.elementIsBlock) {
15923
+ // Inline font styles left over from pasted content visually override
15924
+ // the new block format — e.g. an h2 with `font-weight: normal;
15925
+ // font-size: 24px` does not look like a heading at all, so the
15926
+ // command seems to do nothing. See
15927
+ // https://github.com/xdan/jodit/issues/1063
15928
+ (0,_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(newWrapper, 'fontSize', null);
15929
+ (0,_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(newWrapper, 'fontWeight', null);
15930
+ if (!(0,_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(newWrapper, 'style')) {
15931
+ (0,_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(newWrapper, 'style', null);
15932
+ }
15933
+ }
15934
+ return newWrapper;
15871
15935
  }
15872
15936
  var WRAP_NODES = new Set([
15873
15937
  'td',
@@ -15890,7 +15954,7 @@ var WRAP_NODES = new Set([
15890
15954
  if (box) {
15891
15955
  return box;
15892
15956
  }
15893
- return (0,_wrap_unwrapped_text_js__WEBPACK_IMPORTED_MODULE_3__.wrapUnwrappedText)(commitStyle, font, jodit);
15957
+ return (0,_wrap_unwrapped_text_js__WEBPACK_IMPORTED_MODULE_4__.wrapUnwrappedText)(commitStyle, font, jodit);
15894
15958
  }
15895
15959
  (0,_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(font, 'size', null);
15896
15960
  return font;
@@ -23150,8 +23214,11 @@ var Popup = /*#__PURE__*/ function(UIGroup) {
23150
23214
  */ key: "getKeepBound",
23151
23215
  value: function getKeepBound(getBound) {
23152
23216
  var _this = this;
23217
+ var _a;
23153
23218
  var oldBound = getBound();
23154
- var elmUnderCursor = this.od.elementFromPoint(oldBound.left, oldBound.top);
23219
+ // Inside Shadow DOM `document.elementFromPoint` returns the shadow
23220
+ // host, so the lookup must start from the shadow root
23221
+ var elmUnderCursor = ((_a = this.j.o.shadowRoot) !== null && _a !== void 0 ? _a : this.od).elementFromPoint(oldBound.left, oldBound.top);
23155
23222
  if (!elmUnderCursor) {
23156
23223
  return getBound;
23157
23224
  }
@@ -25813,6 +25880,17 @@ var Jodit = Jodit_1 = /*#__PURE__*/ function(ViewWithToolbar) {
25813
25880
  var init = function init() {
25814
25881
  if (opt.enableDragAndDropFileToEditor && opt.uploader && (opt.uploader.url || opt.uploader.insertImageAsBase64URI)) {
25815
25882
  _this.uploader.bind(_this.editor);
25883
+ } else if (!opt.enableDragAndDropFileToEditor) {
25884
+ // Without a bound uploader nobody cancels a file drop, and
25885
+ // Firefox inserts the dropped image natively — the option
25886
+ // must mean "do nothing". See
25887
+ // https://github.com/xdan/jodit/issues/1077
25888
+ _this.e.on(editor, 'drop', function(e) {
25889
+ var _a, _b;
25890
+ if ((_b = (_a = e.dataTransfer) === null || _a === void 0 ? void 0 : _a.files) === null || _b === void 0 ? void 0 : _b.length) {
25891
+ e.preventDefault();
25892
+ }
25893
+ });
25816
25894
  }
25817
25895
  // in initEditor - the editor could change
25818
25896
  if (!_this.__elementToPlace.get(_this.editor)) {
@@ -37066,12 +37144,17 @@ var TABS = {
37066
37144
  self.j.alert('The name should not be empty');
37067
37145
  return false;
37068
37146
  }
37147
+ self.j.e.fire('afterImageEditorSave', data, name);
37069
37148
  self.onSave(name, data, self.hide, function(e) {
37070
37149
  self.j.alert(e.message);
37071
37150
  });
37072
37151
  });
37073
37152
  break;
37074
37153
  case self.buttons.save:
37154
+ // Notify listeners that a crop/resize was applied,
37155
+ // passing the action box (action + box dimensions).
37156
+ // See https://github.com/xdan/jodit/issues/820
37157
+ self.j.e.fire('afterImageEditorSave', data);
37075
37158
  self.onSave(undefined, data, self.hide, function(e) {
37076
37159
  self.j.alert(e.message);
37077
37160
  });
@@ -40020,14 +40103,42 @@ var ToolbarContent = /*#__PURE__*/ function(UIButton) {
40020
40103
  {
40021
40104
  /** @override */ key: "update",
40022
40105
  value: function update() {
40023
- var content = this.control.getContent(this.j, this);
40106
+ var _a, _b, _c;
40107
+ var control = this.control;
40108
+ var content = control.getContent(this.j, this);
40024
40109
  if ((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.isString)(content) || content.parentNode !== this.container) {
40025
40110
  _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.detach(this.container);
40026
40111
  this.container.appendChild((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.isString)(content) ? this.j.create.fromHTML(content) : content);
40027
40112
  }
40113
+ // Content controls never went through the ToolbarButton status
40114
+ // calculation, so `isDisabled`/`isActive`/`update` declared on the
40115
+ // control were silently ignored (e.g. the FileBrowser Upload button
40116
+ // ignored the backend permissions). See
40117
+ // https://github.com/xdan/jodit/issues/1094
40118
+ this.state.disabled = Boolean((_a = control.isDisabled) === null || _a === void 0 ? void 0 : _a.call(control, this.j, this));
40119
+ this.state.activated = Boolean((_b = control.isActive) === null || _b === void 0 ? void 0 : _b.call(control, this.j, this));
40120
+ (_c = control.update) === null || _c === void 0 ? void 0 : _c.call(control, this.j, this);
40121
+ // The first update() runs before the state watchers are attached, so
40122
+ // apply the calculated state explicitly (the calls are idempotent)
40123
+ this.onChangeDisabled();
40124
+ this.onChangeActivated();
40028
40125
  _get(_get_prototype_of(ToolbarContent.prototype), "update", this).call(this);
40029
40126
  }
40030
40127
  },
40128
+ {
40129
+ /**
40130
+ * The content is arbitrary HTML — propagate the disabled state to the
40131
+ * nested form controls (e.g. the file input of the Upload button),
40132
+ * otherwise they stay interactive.
40133
+ */ key: "onChangeDisabled",
40134
+ value: function onChangeDisabled() {
40135
+ var _this = this;
40136
+ _get(_get_prototype_of(ToolbarContent.prototype), "onChangeDisabled", this).call(this);
40137
+ this.container.querySelectorAll('input,button,select,textarea').forEach(function(elm) {
40138
+ return (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.attr)(elm, 'disabled', _this.state.disabled || null);
40139
+ });
40140
+ }
40141
+ },
40031
40142
  {
40032
40143
  /** @override */ key: "createContainer",
40033
40144
  value: function createContainer() {
@@ -41281,6 +41392,15 @@ function _unsupported_iterable_to_array(o, minLen) {
41281
41392
  if (!fileList.length) {
41282
41393
  return Promise.reject((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.error)('Need files'));
41283
41394
  }
41395
+ // Client-side validation hook — returning `false` aborts the upload.
41396
+ // See https://github.com/xdan/jodit/issues/1329
41397
+ if ((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.isFunction)(o.beforeUpload)) {
41398
+ if (o.beforeUpload.call(uploader, fileList) === false) {
41399
+ var err = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.error)('Upload canceled');
41400
+ (handlerError || o.defaultHandlerError).call(uploader, err);
41401
+ return Promise.reject(err);
41402
+ }
41403
+ }
41284
41404
  var promises = [];
41285
41405
  if (o.insertImageAsBase64URI) {
41286
41406
  readImagesWithReader(fileList, o.imagesExtensions, promises, uploader, handlerSuccess, o.defaultHandlerSuccess);
@@ -42523,8 +42643,11 @@ var ns = 'addnewline';
42523
42643
  {
42524
42644
  key: "__onMouseMove",
42525
42645
  value: function __onMouseMove(e) {
42646
+ var _a;
42526
42647
  var editor = this.j;
42527
- var currentElement = editor.ed.elementFromPoint(e.clientX, e.clientY);
42648
+ // Inside Shadow DOM `document.elementFromPoint` returns the shadow
42649
+ // host, so the lookup must start from the shadow root
42650
+ var currentElement = ((_a = editor.o.shadowRoot) !== null && _a !== void 0 ? _a : editor.ed).elementFromPoint(e.clientX, e.clientY);
42528
42651
  if (!_modules_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isHTMLElement(currentElement) || !_modules_index_js__WEBPACK_IMPORTED_MODULE_3__.Dom.isOrContains(editor.editor, currentElement)) {
42529
42652
  return;
42530
42653
  }
@@ -42966,7 +43089,13 @@ function _ts_generator(thisArg, body) {
42966
43089
  return new _ui_ui_ai_assistant_js__WEBPACK_IMPORTED_MODULE_6__.UiAiAssistant(jodit, {
42967
43090
  onInsertAfter: function onInsertAfter(html) {
42968
43091
  jodit.s.focus();
42969
- jodit.s.setCursorAfter(jodit.s.current());
43092
+ // `current()` returns a node of the selection START, so with
43093
+ // several selected paragraphs the result landed after the
43094
+ // first one — collapse the range to the END of the selection
43095
+ // instead. See https://github.com/xdan/jodit/issues/1263
43096
+ var range = jodit.s.range;
43097
+ range.collapse(false);
43098
+ jodit.s.selectRange(range);
42970
43099
  jodit.s.insertHTML(html);
42971
43100
  __dialog.close();
42972
43101
  },
@@ -43716,6 +43845,14 @@ UiAiAssistant = __decorate([
43716
43845
  /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(32496);
43717
43846
  /* harmony import */ var _cases_check_not_collapsed_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(11338);
43718
43847
  /* harmony import */ var _cases_index_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(14630);
43848
+ function _array_like_to_array(arr, len) {
43849
+ if (len == null || len > arr.length) len = arr.length;
43850
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
43851
+ return arr2;
43852
+ }
43853
+ function _array_with_holes(arr) {
43854
+ if (Array.isArray(arr)) return arr;
43855
+ }
43719
43856
  function _assert_this_initialized(self) {
43720
43857
  if (self === void 0) {
43721
43858
  throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
@@ -43784,6 +43921,33 @@ function _inherits(subClass, superClass) {
43784
43921
  function _is_native_function(fn) {
43785
43922
  return Function.toString.call(fn).indexOf("[native code]") !== -1;
43786
43923
  }
43924
+ function _iterable_to_array_limit(arr, i) {
43925
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
43926
+ if (_i == null) return;
43927
+ var _arr = [];
43928
+ var _n = true;
43929
+ var _d = false;
43930
+ var _s, _e;
43931
+ try {
43932
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
43933
+ _arr.push(_s.value);
43934
+ if (i && _arr.length === i) break;
43935
+ }
43936
+ } catch (err) {
43937
+ _d = true;
43938
+ _e = err;
43939
+ } finally{
43940
+ try {
43941
+ if (!_n && _i["return"] != null) _i["return"]();
43942
+ } finally{
43943
+ if (_d) throw _e;
43944
+ }
43945
+ }
43946
+ return _arr;
43947
+ }
43948
+ function _non_iterable_rest() {
43949
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
43950
+ }
43787
43951
  function _possible_constructor_return(self, call) {
43788
43952
  if (call && (_type_of(call) === "object" || typeof call === "function")) {
43789
43953
  return call;
@@ -43797,10 +43961,21 @@ function _set_prototype_of(o, p) {
43797
43961
  };
43798
43962
  return _set_prototype_of(o, p);
43799
43963
  }
43964
+ function _sliced_to_array(arr, i) {
43965
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
43966
+ }
43800
43967
  function _type_of(obj) {
43801
43968
  "@swc/helpers - typeof";
43802
43969
  return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
43803
43970
  }
43971
+ function _unsupported_iterable_to_array(o, minLen) {
43972
+ if (!o) return;
43973
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
43974
+ var n = Object.prototype.toString.call(o).slice(8, -1);
43975
+ if (n === "Object" && o.constructor) n = o.constructor.name;
43976
+ if (n === "Map" || n === "Set") return Array.from(n);
43977
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
43978
+ }
43804
43979
  function _wrap_native_super(Class) {
43805
43980
  var _cache = typeof Map === "function" ? new Map() : undefined;
43806
43981
  _wrap_native_super = function wrapNativeSuper(Class) {
@@ -43929,10 +44104,15 @@ var backspace = /*#__PURE__*/ function(Plugin) {
43929
44104
  return false;
43930
44105
  }
43931
44106
  (0,_core_selection_helpers_index_js__WEBPACK_IMPORTED_MODULE_5__.moveNodeInsideStart)(jodit, fakeNode, backspace);
43932
- if (_cases_index_js__WEBPACK_IMPORTED_MODULE_8__.cases.some(function(func) {
44107
+ var disabled = jodit.o.delete.disableCases;
44108
+ if (_cases_index_js__WEBPACK_IMPORTED_MODULE_8__.casesMap.some(function(param) {
44109
+ var _param = _sliced_to_array(param, 2), key = _param[0], func = _param[1];
44110
+ if (disabled && disabled.has(key)) {
44111
+ return;
44112
+ }
43933
44113
  if ((0,_core_helpers_checker_is_function_js__WEBPACK_IMPORTED_MODULE_3__.isFunction)(func) && func(jodit, fakeNode, backspace, mode)) {
43934
44114
  if (!_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_PROD) {
43935
- console.info('Remove case:', func.name);
44115
+ console.info('Remove case:', key);
43936
44116
  }
43937
44117
  return true;
43938
44118
  }
@@ -44025,13 +44205,26 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('backspace', backs
44025
44205
  jodit.s.setCursorBefore(fakeNode);
44026
44206
  return true;
44027
44207
  }
44028
- if (sibling && (checkMoveListContent(jodit, mainClosestBox, sibling, backspace) || moveContentAndRemoveEmpty(jodit, mainClosestBox, sibling, backspace))) {
44208
+ if (sibling && (checkMoveListContent(jodit, mainClosestBox, sibling, backspace) || moveContentAndRemoveEmpty(jodit, mainClosestBox, resolveTableSibling(sibling, backspace), backspace))) {
44029
44209
  jodit.s.setCursorBefore(fakeNode);
44030
44210
  return true;
44031
44211
  }
44032
44212
  }
44033
44213
  return false;
44034
44214
  }
44215
+ /**
44216
+ * Content cannot be merged into the `<table>` element itself — it would land
44217
+ * between the table sections (after `</tbody>`), which is invalid HTML and
44218
+ * gets foster-parented out of the table on the next parse. Merge into the
44219
+ * edge cell instead. See https://github.com/xdan/jodit/issues/1064
44220
+ * @private
44221
+ */ function resolveTableSibling(sibling, backspace) {
44222
+ if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(sibling, 'table')) {
44223
+ return sibling;
44224
+ }
44225
+ var cells = sibling.querySelectorAll('td,th');
44226
+ return cells.length ? cells[backspace ? cells.length - 1 : 0] : null;
44227
+ }
44035
44228
  function checkMoveListContent(jodit, mainClosestBox, sibling, backspace) {
44036
44229
  // Process UL/LI/OL cases
44037
44230
  var siblingIsList = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(sibling, _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.LIST_TAGS);
@@ -44591,8 +44784,9 @@ function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed
44591
44784
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
44592
44785
 
44593
44786
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
44594
- /* harmony export */ cases: function() { return /* binding */ cases; }
44787
+ /* harmony export */ casesMap: function() { return /* binding */ casesMap; }
44595
44788
  /* harmony export */ });
44789
+ /* unused harmony export cases */
44596
44790
  /* harmony import */ var _check_join_neighbors_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(62845);
44597
44791
  /* harmony import */ var _check_join_two_lists_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(91748);
44598
44792
  /* harmony import */ var _check_remove_char_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(73792);
@@ -44602,12 +44796,56 @@ function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed
44602
44796
  /* harmony import */ var _check_remove_unbreakable_element_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(56825);
44603
44797
  /* harmony import */ var _check_table_cell_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(90240);
44604
44798
  /* harmony import */ var _check_unwrap_first_list_item_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(68034);
44799
+ function _array_like_to_array(arr, len) {
44800
+ if (len == null || len > arr.length) len = arr.length;
44801
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
44802
+ return arr2;
44803
+ }
44804
+ function _array_with_holes(arr) {
44805
+ if (Array.isArray(arr)) return arr;
44806
+ }
44807
+ function _iterable_to_array_limit(arr, i) {
44808
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
44809
+ if (_i == null) return;
44810
+ var _arr = [];
44811
+ var _n = true;
44812
+ var _d = false;
44813
+ var _s, _e;
44814
+ try {
44815
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
44816
+ _arr.push(_s.value);
44817
+ if (i && _arr.length === i) break;
44818
+ }
44819
+ } catch (err) {
44820
+ _d = true;
44821
+ _e = err;
44822
+ } finally{
44823
+ try {
44824
+ if (!_n && _i["return"] != null) _i["return"]();
44825
+ } finally{
44826
+ if (_d) throw _e;
44827
+ }
44828
+ }
44829
+ return _arr;
44830
+ }
44831
+ function _non_iterable_rest() {
44832
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
44833
+ }
44834
+ function _sliced_to_array(arr, i) {
44835
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
44836
+ }
44837
+ function _unsupported_iterable_to_array(o, minLen) {
44838
+ if (!o) return;
44839
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
44840
+ var n = Object.prototype.toString.call(o).slice(8, -1);
44841
+ if (n === "Object" && o.constructor) n = o.constructor.name;
44842
+ if (n === "Map" || n === "Set") return Array.from(n);
44843
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
44844
+ }
44605
44845
  /*!
44606
44846
  * Jodit Editor (https://xdsoft.net/jodit/)
44607
44847
  * Released under MIT see LICENSE.txt in the project root for license information.
44608
44848
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
44609
- */ /**
44610
- * @module plugins/backspace
44611
44849
  */
44612
44850
 
44613
44851
 
@@ -44618,18 +44856,55 @@ function checkRepeatRemoveCharAction(backspace, sibling, fakeNode, mode, removed
44618
44856
 
44619
44857
 
44620
44858
  /**
44859
+ * Ordered delete/backspace cases with stable keys. The first one returning
44860
+ * `true` wins. The keys are stable across minified builds (function names are
44861
+ * mangled by terser) so they can be referenced by `delete.disableCases`.
44621
44862
  * @private
44622
- */ var cases = [
44623
- _check_remove_unbreakable_element_js__WEBPACK_IMPORTED_MODULE_6__.checkRemoveUnbreakableElement,
44624
- _check_remove_content_not_editable_js__WEBPACK_IMPORTED_MODULE_3__.checkRemoveContentNotEditable,
44625
- _check_remove_char_js__WEBPACK_IMPORTED_MODULE_2__.checkRemoveChar,
44626
- _check_table_cell_js__WEBPACK_IMPORTED_MODULE_7__.checkTableCell,
44627
- _check_remove_empty_parent_js__WEBPACK_IMPORTED_MODULE_5__.checkRemoveEmptyParent,
44628
- _check_remove_empty_neighbor_js__WEBPACK_IMPORTED_MODULE_4__.checkRemoveEmptyNeighbor,
44629
- _check_join_two_lists_js__WEBPACK_IMPORTED_MODULE_1__.checkJoinTwoLists,
44630
- _check_join_neighbors_js__WEBPACK_IMPORTED_MODULE_0__.checkJoinNeighbors,
44631
- _check_unwrap_first_list_item_js__WEBPACK_IMPORTED_MODULE_8__.checkUnwrapFirstListItem
44863
+ */ var casesMap = [
44864
+ [
44865
+ 'remove-unbreakable',
44866
+ _check_remove_unbreakable_element_js__WEBPACK_IMPORTED_MODULE_6__.checkRemoveUnbreakableElement
44867
+ ],
44868
+ [
44869
+ 'remove-not-editable',
44870
+ _check_remove_content_not_editable_js__WEBPACK_IMPORTED_MODULE_3__.checkRemoveContentNotEditable
44871
+ ],
44872
+ [
44873
+ 'remove-char',
44874
+ _check_remove_char_js__WEBPACK_IMPORTED_MODULE_2__.checkRemoveChar
44875
+ ],
44876
+ [
44877
+ 'table-cell',
44878
+ _check_table_cell_js__WEBPACK_IMPORTED_MODULE_7__.checkTableCell
44879
+ ],
44880
+ [
44881
+ 'remove-empty-parent',
44882
+ _check_remove_empty_parent_js__WEBPACK_IMPORTED_MODULE_5__.checkRemoveEmptyParent
44883
+ ],
44884
+ [
44885
+ 'remove-empty-neighbor',
44886
+ _check_remove_empty_neighbor_js__WEBPACK_IMPORTED_MODULE_4__.checkRemoveEmptyNeighbor
44887
+ ],
44888
+ [
44889
+ 'join-two-lists',
44890
+ _check_join_two_lists_js__WEBPACK_IMPORTED_MODULE_1__.checkJoinTwoLists
44891
+ ],
44892
+ [
44893
+ 'join-neighbors',
44894
+ _check_join_neighbors_js__WEBPACK_IMPORTED_MODULE_0__.checkJoinNeighbors
44895
+ ],
44896
+ [
44897
+ 'unwrap-first-list-item',
44898
+ _check_unwrap_first_list_item_js__WEBPACK_IMPORTED_MODULE_8__.checkUnwrapFirstListItem
44899
+ ]
44632
44900
  ];
44901
+ /**
44902
+ * @private
44903
+ * @deprecated Use `casesMap` to also get the stable case keys.
44904
+ */ var cases = casesMap.map(function(param) {
44905
+ var _param = _sliced_to_array(param, 2), fn = _param[1];
44906
+ return fn;
44907
+ });
44633
44908
 
44634
44909
 
44635
44910
  /***/ }),
@@ -45521,6 +45796,21 @@ function _is_native_reflect_construct() {
45521
45796
  return false;
45522
45797
  }
45523
45798
  },
45799
+ {
45800
+ /**
45801
+ * Collapse a value that holds only a single empty block (e.g.
45802
+ * `<p><br></p>` left after deleting all content) to an empty string —
45803
+ * opt-in via `cleanHTML.collapseEmptyValueToEmptyString`. See #1149
45804
+ */ key: "onAfterGetValueFromEditor",
45805
+ value: function onAfterGetValueFromEditor(data) {
45806
+ if (!this.j.o.cleanHTML.collapseEmptyValueToEmptyString) {
45807
+ return;
45808
+ }
45809
+ if (/^<([a-z][a-z0-9]*)\b[^>]*>(?:<br\/?>)?<\/\1>$/i.test(data.value.trim())) {
45810
+ data.value = '';
45811
+ }
45812
+ }
45813
+ },
45524
45814
  {
45525
45815
  key: "onSafeHTML",
45526
45816
  value: function onSafeHTML(sandBox) {
@@ -45558,6 +45848,9 @@ __decorate([
45558
45848
  __decorate([
45559
45849
  (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':beforeSetNativeEditorValue')
45560
45850
  ], cleanHtml.prototype, "onBeforeSetNativeEditorValue", null);
45851
+ __decorate([
45852
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':afterGetValueFromEditor')
45853
+ ], cleanHtml.prototype, "onAfterGetValueFromEditor", null);
45561
45854
  __decorate([
45562
45855
  (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_0__.watch)(':safeHTML')
45563
45856
  ], cleanHtml.prototype, "onSafeHTML", null);
@@ -45583,6 +45876,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.cleanHTML = {
45583
45876
  timeout: 300,
45584
45877
  removeEmptyElements: true,
45585
45878
  fillEmptyParagraph: true,
45879
+ collapseEmptyValueToEmptyString: false,
45586
45880
  replaceNBSP: true,
45587
45881
  replaceOldTags: {
45588
45882
  i: 'em',
@@ -46677,26 +46971,35 @@ _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_0__.Icon.set('copy', _icons_copy_svg_j
46677
46971
  group: 'color'
46678
46972
  });
46679
46973
  var callback = function callback(command, second, third) {
46974
+ var _a;
46680
46975
  var colorHEX = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__.normalizeColor)(third);
46681
- switch(command){
46682
- case 'background':
46683
- editor.s.commitStyle({
46684
- attributes: {
46685
- style: {
46686
- backgroundColor: !colorHEX ? '' : colorHEX
46687
- }
46688
- }
46689
- });
46690
- break;
46691
- case 'forecolor':
46976
+ var value = !colorHEX ? '' : colorHEX;
46977
+ var style = command === 'background' ? {
46978
+ backgroundColor: value
46979
+ } : {
46980
+ color: value
46981
+ };
46982
+ // Cells selected with the `select-cells` plugin drop or collapse the
46983
+ // native range, so `commitStyle` would paint a pending caret format
46984
+ // outside the table instead of the selection the user sees. Apply the
46985
+ // style to the content of every selected cell instead. See #1250
46986
+ var selectedCells = editor.getInstance('Table', editor.o).getAllSelectedCells();
46987
+ if (selectedCells.length && editor.s.isCollapsed()) {
46988
+ selectedCells.forEach(function(cell) {
46989
+ editor.s.select(cell, true);
46692
46990
  editor.s.commitStyle({
46693
46991
  attributes: {
46694
- style: {
46695
- color: !colorHEX ? '' : colorHEX
46696
- }
46992
+ style: style
46697
46993
  }
46698
46994
  });
46699
- break;
46995
+ });
46996
+ (_a = editor.s.sel) === null || _a === void 0 ? void 0 : _a.removeAllRanges();
46997
+ } else {
46998
+ editor.s.commitStyle({
46999
+ attributes: {
47000
+ style: style
47001
+ }
47002
+ });
46700
47003
  }
46701
47004
  editor.synchronizeValues();
46702
47005
  return false;
@@ -49935,6 +50238,25 @@ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = _object
49935
50238
  return v.toLowerCase().replace(/['"]+/g, '').replace(/[^a-z0-9-]+/g, ',');
49936
50239
  }
49937
50240
  },
50241
+ // When no font is explicitly set, the computed font-family equals the
50242
+ // editor's own default (e.g. `-apple-system, …`). Return '' so the
50243
+ // button shows the `Default` list entry instead of that raw stack.
50244
+ // See #1370
50245
+ value: function value(editor) {
50246
+ var current = editor.s.current();
50247
+ if (!current) {
50248
+ return;
50249
+ }
50250
+ var box = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(current, _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement, editor.editor);
50251
+ if (!box) {
50252
+ return;
50253
+ }
50254
+ var value = (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(box, 'font-family').toString();
50255
+ if (value === (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(editor.editor, 'font-family').toString()) {
50256
+ return '';
50257
+ }
50258
+ return value;
50259
+ },
49938
50260
  tooltip: 'Font family'
49939
50261
  });
49940
50262
 
@@ -55510,12 +55832,35 @@ function _is_native_reflect_construct() {
55510
55832
  var sel = _this.j.s.sel;
55511
55833
  if (sel && !sel.isCollapsed) {
55512
55834
  _this.showPopup(function() {
55513
- return _this.j.s.range.getBoundingClientRect();
55835
+ return _this.__selectionBound();
55514
55836
  }, 'selection');
55515
55837
  }
55516
55838
  }, 1);
55517
55839
  }
55518
55840
  },
55841
+ {
55842
+ /**
55843
+ * The selection rect comes from the editor document — in iframe mode its
55844
+ * coordinates are iframe-local, while the popup lives in the host
55845
+ * document, so the iframe offset must be added. See
55846
+ * https://github.com/xdan/jodit/issues/1058
55847
+ */ key: "__selectionBound",
55848
+ value: function __selectionBound() {
55849
+ var rect = this.j.s.range.getBoundingClientRect();
55850
+ var left = rect.left, top = rect.top;
55851
+ if (this.j.iframe) {
55852
+ var offset = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.position)(this.j.iframe, this.j, true);
55853
+ left += offset.left;
55854
+ top += offset.top;
55855
+ }
55856
+ return {
55857
+ left: left,
55858
+ top: top,
55859
+ width: rect.width,
55860
+ height: rect.height
55861
+ };
55862
+ }
55863
+ },
55519
55864
  {
55520
55865
  key: "onSelectionStart",
55521
55866
  value: function onSelectionStart() {
@@ -55539,6 +55884,7 @@ function _is_native_reflect_construct() {
55539
55884
  * Selection change handler
55540
55885
  */ key: "onSelectionChange",
55541
55886
  value: function onSelectionChange() {
55887
+ var _this = this;
55542
55888
  if (!this.j.o.toolbarInlineForSelection) {
55543
55889
  return;
55544
55890
  }
@@ -55556,7 +55902,7 @@ function _is_native_reflect_construct() {
55556
55902
  return;
55557
55903
  }
55558
55904
  this.showPopup(function() {
55559
- return range.getBoundingClientRect();
55905
+ return _this.__selectionBound();
55560
55906
  }, type);
55561
55907
  }
55562
55908
  },
@@ -57026,6 +57372,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.link = {
57026
57372
  noFollowCheckbox: true,
57027
57373
  openInNewTabCheckbox: true,
57028
57374
  openInNewTabCheckboxDefaultChecked: false,
57375
+ ariaLabelInput: false,
57029
57376
  modeClassName: 'input',
57030
57377
  selectMultipleClassName: true,
57031
57378
  preventReadOnlyNavigation: true,
@@ -57341,7 +57688,7 @@ function _is_native_reflect_construct() {
57341
57688
  var currentElement = current;
57342
57689
  var isImageContent = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isImage(currentElement);
57343
57690
  var content_input = elements.content_input;
57344
- var className_input = elements.className_input, className_select = elements.className_select;
57691
+ var className_input = elements.className_input, className_select = elements.className_select, aria_label_input = elements.aria_label_input;
57345
57692
  if (!content_input) {
57346
57693
  content_input = jodit.c.element('input', {
57347
57694
  type: 'hidden',
@@ -57366,6 +57713,9 @@ function _is_native_reflect_construct() {
57366
57713
  if (!isImageContent && current) {
57367
57714
  content_input.value = getSelectionText();
57368
57715
  }
57716
+ if (aria_label_input) {
57717
+ aria_label_input.value = _$link ? (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(_$link, 'aria-label') || '' : '';
57718
+ }
57369
57719
  if (_$link) {
57370
57720
  url_input.value = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(_$link, 'href') || '';
57371
57721
  if (modeClassName) {
@@ -57455,6 +57805,10 @@ function _is_native_reflect_construct() {
57455
57805
  }
57456
57806
  (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(a, 'rel', relParts.length ? relParts.join(' ') : null);
57457
57807
  }
57808
+ if (aria_label_input) {
57809
+ var ariaLabel = aria_label_input.value.trim();
57810
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(a, 'aria-label', ariaLabel || null);
57811
+ }
57458
57812
  jodit.e.fire('applyLink', jodit, a, form);
57459
57813
  });
57460
57814
  jodit.synchronizeValues();
@@ -57599,7 +57953,7 @@ function writeImage(a, content_input, textWasChanged, url_input) {
57599
57953
  */
57600
57954
 
57601
57955
  var formTemplate = function formTemplate(editor) {
57602
- var _editor_o_link = editor.o.link, openInNewTabCheckbox = _editor_o_link.openInNewTabCheckbox, noFollowCheckbox = _editor_o_link.noFollowCheckbox, modeClassName = _editor_o_link.modeClassName, selectSizeClassName = _editor_o_link.selectSizeClassName, selectMultipleClassName = _editor_o_link.selectMultipleClassName, selectOptionsClassName = _editor_o_link.selectOptionsClassName;
57956
+ var _editor_o_link = editor.o.link, openInNewTabCheckbox = _editor_o_link.openInNewTabCheckbox, noFollowCheckbox = _editor_o_link.noFollowCheckbox, ariaLabelInput = _editor_o_link.ariaLabelInput, modeClassName = _editor_o_link.modeClassName, selectSizeClassName = _editor_o_link.selectSizeClassName, selectMultipleClassName = _editor_o_link.selectMultipleClassName, selectOptionsClassName = _editor_o_link.selectOptionsClassName;
57603
57957
  return new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_1__.UIForm(editor, [
57604
57958
  new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_1__.UIBlock(editor, [
57605
57959
  new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_1__.UIInput(editor, {
@@ -57611,6 +57965,13 @@ var formTemplate = function formTemplate(editor) {
57611
57965
  required: true
57612
57966
  })
57613
57967
  ]),
57968
+ ariaLabelInput ? new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_1__.UIBlock(editor, [
57969
+ new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_1__.UIInput(editor, {
57970
+ name: 'ariaLabel',
57971
+ ref: 'aria_label_input',
57972
+ label: 'Aria label'
57973
+ })
57974
+ ]) : null,
57614
57975
  new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_1__.UIBlock(editor, [
57615
57976
  new _core_ui_form_index_js__WEBPACK_IMPORTED_MODULE_1__.UIInput(editor, {
57616
57977
  name: 'content',
@@ -59043,7 +59404,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.controls.paste = {
59043
59404
  tooltip: 'Paste from clipboard',
59044
59405
  exec: function exec(_0, _1, _2) {
59045
59406
  return _async_to_generator(function(editor, _, param) {
59046
- var control, text, error, items, textBlob, e, e1, value;
59407
+ var control, _a, text, error, items, item, type, textBlob, e, e1, value;
59047
59408
  return _ts_generator(this, function(_state) {
59048
59409
  switch(_state.label){
59049
59410
  case 0:
@@ -59078,9 +59439,15 @@ _config_js__WEBPACK_IMPORTED_MODULE_1__.Config.prototype.controls.paste = {
59078
59439
  3,
59079
59440
  5
59080
59441
  ];
59442
+ item = items[0];
59443
+ // Prefer the HTML flavor so the button behaves like the
59444
+ // Ctrl+V shortcut (which receives text/html from the
59445
+ // native paste event). See
59446
+ // https://github.com/xdan/jodit/issues/1061
59447
+ type = ((_a = item.types) === null || _a === void 0 ? void 0 : _a.includes(_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.TEXT_HTML)) ? _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.TEXT_HTML : _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.TEXT_PLAIN;
59081
59448
  return [
59082
59449
  4,
59083
- items[0].getType(_core_constants_js__WEBPACK_IMPORTED_MODULE_0__.TEXT_PLAIN)
59450
+ item.getType(type)
59084
59451
  ];
59085
59452
  case 3:
59086
59453
  textBlob = _state.sent();
@@ -63605,53 +63972,63 @@ var UISearch = /*#__PURE__*/ function(UIElement) {
63605
63972
  return false;
63606
63973
  }).on(_this.queryInput, 'input', function() {
63607
63974
  _this.setMod('empty-query', !(0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.trim)(_this.queryInput.value).length);
63608
- }).on(_this.queryInput, 'keydown', _this.j.async.debounce(function(e) {
63609
- return _async_to_generator(function() {
63610
- var _;
63611
- return _ts_generator(this, function(_state) {
63612
- switch(_state.label){
63613
- case 0:
63614
- _ = e.key;
63615
- switch(_){
63616
- case _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_ENTER:
63617
- return [
63618
- 3,
63619
- 1
63620
- ];
63621
- }
63622
- return [
63623
- 3,
63624
- 3
63625
- ];
63626
- case 1:
63627
- e.preventDefault();
63628
- e.stopImmediatePropagation();
63629
- return [
63630
- 4,
63631
- jodit.e.fire('searchNext')
63632
- ];
63633
- case 2:
63634
- if (_state.sent()) {
63635
- _this1.close();
63636
- }
63637
- return [
63638
- 3,
63639
- 4
63640
- ];
63641
- case 3:
63642
- jodit.e.fire(_this1, 'needUpdateCounters');
63643
- return [
63644
- 3,
63645
- 4
63646
- ];
63647
- case 4:
63648
- return [
63649
- 2
63650
- ];
63651
- }
63652
- });
63653
- })();
63654
- }, _this.j.defaultTimeout));
63975
+ }).on(_this.queryInput, 'keydown', function() {
63976
+ var debounced = _this.j.async.debounce(function(e) {
63977
+ return _async_to_generator(function() {
63978
+ var _;
63979
+ return _ts_generator(this, function(_state) {
63980
+ switch(_state.label){
63981
+ case 0:
63982
+ _ = e.key;
63983
+ switch(_){
63984
+ case _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_ENTER:
63985
+ return [
63986
+ 3,
63987
+ 1
63988
+ ];
63989
+ }
63990
+ return [
63991
+ 3,
63992
+ 3
63993
+ ];
63994
+ case 1:
63995
+ return [
63996
+ 4,
63997
+ jodit.e.fire('searchNext')
63998
+ ];
63999
+ case 2:
64000
+ if (_state.sent()) {
64001
+ _this1.close();
64002
+ }
64003
+ return [
64004
+ 3,
64005
+ 4
64006
+ ];
64007
+ case 3:
64008
+ jodit.e.fire(_this1, 'needUpdateCounters');
64009
+ return [
64010
+ 3,
64011
+ 4
64012
+ ];
64013
+ case 4:
64014
+ return [
64015
+ 2
64016
+ ];
64017
+ }
64018
+ });
64019
+ })();
64020
+ }, _this.j.defaultTimeout);
64021
+ return function(e) {
64022
+ // Must be canceled synchronously — inside the debounced
64023
+ // handler the browser has already submitted the parent
64024
+ // form. See https://github.com/xdan/jodit/issues/918
64025
+ if (e.key === _core_constants_js__WEBPACK_IMPORTED_MODULE_0__.KEY_ENTER) {
64026
+ e.preventDefault();
64027
+ e.stopImmediatePropagation();
64028
+ }
64029
+ debounced(e);
64030
+ };
64031
+ }());
63655
64032
  return _this;
63656
64033
  }
63657
64034
  _create_class(UISearch, [
@@ -64081,15 +64458,40 @@ var selectCells = /*#__PURE__*/ function(Plugin) {
64081
64458
  /**
64082
64459
  * Mouse click inside the table
64083
64460
  */ key: "onStartSelection",
64084
- value: function onStartSelection(cell) {
64461
+ value: function onStartSelection(cell, event) {
64462
+ var _this = this;
64463
+ var _a;
64085
64464
  if (this.j.o.readonly) {
64086
64465
  return;
64087
64466
  }
64467
+ var table = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(cell, 'table', this.j.editor);
64468
+ // Ctrl/Cmd + click toggles a single cell into the existing selection
64469
+ // instead of resetting it — non-contiguous multi-cell selection.
64470
+ // See https://github.com/xdan/jodit/issues/1163
64471
+ if (((event === null || event === void 0 ? void 0 : event.ctrlKey) || (event === null || event === void 0 ? void 0 : event.metaKey)) && cell !== this.j.editor && table && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isCell(cell)) {
64472
+ if (this.__tableModule.getAllSelectedCells().includes(cell)) {
64473
+ this.__tableModule.removeSelection(cell);
64474
+ } else {
64475
+ if (!cell.firstChild) {
64476
+ cell.appendChild(this.j.createInside.element('br'));
64477
+ }
64478
+ this.__tableModule.addSelection(cell);
64479
+ }
64480
+ this.__selectedCell = cell;
64481
+ (_a = this.j.s.sel) === null || _a === void 0 ? void 0 : _a.removeAllRanges();
64482
+ if (this.__tableModule.getAllSelectedCells().length) {
64483
+ this.j.e.fire('showPopup', table, function() {
64484
+ return (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_4__.position)(cell, _this.j);
64485
+ }, 'cells');
64486
+ } else {
64487
+ this.j.e.fire('hidePopup', 'cells');
64488
+ }
64489
+ return false;
64490
+ }
64088
64491
  this.unselectCells();
64089
64492
  if (cell === this.j.editor) {
64090
64493
  return;
64091
64494
  }
64092
- var table = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.closest(cell, 'table', this.j.editor);
64093
64495
  if (!cell || !table) {
64094
64496
  return;
64095
64497
  }
@@ -64128,14 +64530,16 @@ var selectCells = /*#__PURE__*/ function(Plugin) {
64128
64530
  */ key: "__onMove",
64129
64531
  value: function __onMove(table, e) {
64130
64532
  var _this = this;
64131
- var _a;
64533
+ var _a, _b;
64132
64534
  if (this.j.o.readonly && !this.j.isLocked) {
64133
64535
  return;
64134
64536
  }
64135
64537
  if (this.j.isLockedNotBy(key)) {
64136
64538
  return;
64137
64539
  }
64138
- var node = this.j.ed.elementFromPoint(e.clientX, e.clientY);
64540
+ // Inside Shadow DOM `document.elementFromPoint` returns the shadow
64541
+ // host, so the lookup must start from the shadow root
64542
+ var node = ((_a = this.j.o.shadowRoot) !== null && _a !== void 0 ? _a : this.j.ed).elementFromPoint(e.clientX, e.clientY);
64139
64543
  if (!node) {
64140
64544
  return;
64141
64545
  }
@@ -64161,7 +64565,7 @@ var selectCells = /*#__PURE__*/ function(Plugin) {
64161
64565
  }
64162
64566
  var cellsCount = this.__tableModule.getAllSelectedCells().length;
64163
64567
  if (cellsCount > 1) {
64164
- (_a = this.j.s.sel) === null || _a === void 0 ? void 0 : _a.removeAllRanges();
64568
+ (_b = this.j.s.sel) === null || _b === void 0 ? void 0 : _b.removeAllRanges();
64165
64569
  }
64166
64570
  this.j.e.fire('hidePopup');
64167
64571
  e.stopPropagation();
@@ -64198,13 +64602,15 @@ var selectCells = /*#__PURE__*/ function(Plugin) {
64198
64602
  */ key: "__onStopSelection",
64199
64603
  value: function __onStopSelection(table, e) {
64200
64604
  var _this = this;
64201
- var _a, _b;
64605
+ var _a, _b, _c;
64202
64606
  if (!this.__selectedCell) {
64203
64607
  return;
64204
64608
  }
64205
64609
  this.__isSelectionMode = false;
64206
64610
  this.j.unlock();
64207
- var node = this.j.ed.elementFromPoint(e.clientX, e.clientY);
64611
+ // Inside Shadow DOM `document.elementFromPoint` returns the shadow
64612
+ // host, so the lookup must start from the shadow root
64613
+ var node = ((_a = this.j.o.shadowRoot) !== null && _a !== void 0 ? _a : this.j.ed).elementFromPoint(e.clientX, e.clientY);
64208
64614
  if (!node) {
64209
64615
  return;
64210
64616
  }
@@ -64223,7 +64629,7 @@ var selectCells = /*#__PURE__*/ function(Plugin) {
64223
64629
  cell,
64224
64630
  this.__selectedCell
64225
64631
  ]), box = this.__tableModule.formalMatrix(table);
64226
- var max = (_a = box[bound[1][0]]) === null || _a === void 0 ? void 0 : _a[bound[1][1]], min = (_b = box[bound[0][0]]) === null || _b === void 0 ? void 0 : _b[bound[0][1]];
64632
+ var max = (_b = box[bound[1][0]]) === null || _b === void 0 ? void 0 : _b[bound[1][1]], min = (_c = box[bound[0][0]]) === null || _c === void 0 ? void 0 : _c[bound[0][1]];
64227
64633
  // `getSelectedBound` keeps its `Infinity` sentinel when none of the
64228
64634
  // selected cells belong to this table's matrix — e.g. after a
64229
64635
  // drag-and-drop that moved/removed the cells, leaving a stale anchor and
@@ -65210,7 +65616,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.sourceEditorNativeOptio
65210
65616
  */ highlightActiveLine: true
65211
65617
  };
65212
65618
  _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.sourceEditorCDNUrlsJS = [
65213
- 'https://cdnjs.cloudflare.com/ajax/libs/ace/1.4.2/ace.js'
65619
+ 'https://cdnjs.cloudflare.com/ajax/libs/ace/1.43.3/ace.js'
65214
65620
  ];
65215
65621
  _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.beautifyHTMLCDNUrlsJS = [
65216
65622
  'https://cdnjs.cloudflare.com/ajax/libs/js-beautify/1.14.4/beautify.min.js',
@@ -72200,10 +72606,9 @@ var JoditPro = /*#__PURE__*/ function(Jodit) {
72200
72606
 
72201
72607
  /***/ }),
72202
72608
 
72203
- /***/ 44864:
72609
+ /***/ 49934:
72204
72610
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
72205
72611
 
72206
- __webpack_require__.r(__webpack_exports__);
72207
72612
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
72208
72613
  /* harmony export */ autocomplete: function() { return /* binding */ autocomplete; }
72209
72614
  /* harmony export */ });
@@ -73036,7 +73441,7 @@ AutocompleteItem = (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_5__.__de
73036
73441
  /* harmony import */ var jodit_esm_plugins_all__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25187);
73037
73442
  /* harmony import */ var jodit_pro_plugins_paste_from_word_paste_from_word__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(58858);
73038
73443
  /* harmony import */ var jodit_pro_plugins_license_license__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21246);
73039
- /* harmony import */ var jodit_pro_plugins_autocomplete_autocomplete__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44864);
73444
+ /* harmony import */ var jodit_pro_plugins_autocomplete_autocomplete_impl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(49934);
73040
73445
  /* harmony import */ var jodit_esm_plugins_speech_recognize_speech_recognize__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3115);
73041
73446
  /*!
73042
73447
  * Jodit Editor PRO (https://xdsoft.net/jodit/)
@@ -73045,6 +73450,9 @@ AutocompleteItem = (0,_swc_helpers_ts_decorate__WEBPACK_IMPORTED_MODULE_5__.__de
73045
73450
  */
73046
73451
 
73047
73452
 
73453
+ // `.impl` (not the standalone entry) — the entry additionally carries the
73454
+ // standalone stylesheet that must stay OUT of the main bundle so webpack
73455
+ // emits plugins/autocomplete/autocomplete.min.css. See #1308
73048
73456
 
73049
73457
 
73050
73458