jodit-pro 4.17.6 → 4.17.8

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 (316) hide show
  1. package/es2015/jodit.css +1 -1
  2. package/es2015/jodit.fat.min.js +5 -5
  3. package/es2015/jodit.js +129 -32
  4. package/es2015/jodit.min.js +6 -6
  5. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  6. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  7. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  8. package/es2015/plugins/autocomplete/autocomplete.css +1 -1
  9. package/es2015/plugins/autocomplete/autocomplete.js +1 -1
  10. package/es2015/plugins/autocomplete/autocomplete.min.js +1 -1
  11. package/es2015/plugins/backup/backup.css +1 -1
  12. package/es2015/plugins/backup/backup.js +1 -1
  13. package/es2015/plugins/backup/backup.min.js +1 -1
  14. package/es2015/plugins/button-generator/button-generator.css +1 -1
  15. package/es2015/plugins/button-generator/button-generator.js +1 -1
  16. package/es2015/plugins/button-generator/button-generator.min.js +1 -1
  17. package/es2015/plugins/change-case/change-case.js +1 -1
  18. package/es2015/plugins/change-case/change-case.min.js +1 -1
  19. package/es2015/plugins/color-picker/color-picker.css +1 -1
  20. package/es2015/plugins/color-picker/color-picker.js +1 -1
  21. package/es2015/plugins/color-picker/color-picker.min.js +1 -1
  22. package/es2015/plugins/emoji/emoji.css +1 -1
  23. package/es2015/plugins/emoji/emoji.js +1 -1
  24. package/es2015/plugins/emoji/emoji.min.js +1 -1
  25. package/es2015/plugins/export-docs/export-docs.js +1 -1
  26. package/es2015/plugins/export-docs/export-docs.min.js +1 -1
  27. package/es2015/plugins/finder/finder.css +1 -1
  28. package/es2015/plugins/finder/finder.js +1 -1
  29. package/es2015/plugins/finder/finder.min.js +1 -1
  30. package/es2015/plugins/google-maps/google-maps.css +1 -1
  31. package/es2015/plugins/google-maps/google-maps.js +1 -1
  32. package/es2015/plugins/google-maps/google-maps.min.js +1 -1
  33. package/es2015/plugins/google-search/google-search.js +1 -1
  34. package/es2015/plugins/google-search/google-search.min.js +1 -1
  35. package/es2015/plugins/highlight-signature/highlight-signature.js +1 -1
  36. package/es2015/plugins/highlight-signature/highlight-signature.min.js +1 -1
  37. package/es2015/plugins/iframe-editor/iframe-editor.css +1 -1
  38. package/es2015/plugins/iframe-editor/iframe-editor.js +1 -1
  39. package/es2015/plugins/iframe-editor/iframe-editor.min.js +1 -1
  40. package/es2015/plugins/image-editor-pro/image-editor-pro.css +1 -1
  41. package/es2015/plugins/image-editor-pro/image-editor-pro.js +1 -1
  42. package/es2015/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  43. package/es2015/plugins/keyboard/keyboard.css +1 -1
  44. package/es2015/plugins/keyboard/keyboard.js +1 -1
  45. package/es2015/plugins/keyboard/keyboard.min.js +1 -1
  46. package/es2015/plugins/mobile-view/mobile-view.js +1 -1
  47. package/es2015/plugins/mobile-view/mobile-view.min.js +1 -1
  48. package/es2015/plugins/page-break/page-break.js +1 -1
  49. package/es2015/plugins/page-break/page-break.min.js +1 -1
  50. package/es2015/plugins/paste-code/paste-code.css +1 -1
  51. package/es2015/plugins/paste-code/paste-code.js +1 -1
  52. package/es2015/plugins/paste-code/paste-code.min.js +1 -1
  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 +1 -1
  65. package/es2015/plugins/todo-list/todo-list.min.js +1 -1
  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.js +5 -5
  73. package/es2018/jodit.min.js +9 -9
  74. package/es2018/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  75. package/es2018/plugins/autocomplete/autocomplete.min.js +1 -1
  76. package/es2018/plugins/backup/backup.min.js +1 -1
  77. package/es2018/plugins/button-generator/button-generator.min.js +1 -1
  78. package/es2018/plugins/change-case/change-case.min.js +1 -1
  79. package/es2018/plugins/color-picker/color-picker.min.js +1 -1
  80. package/es2018/plugins/emoji/emoji.min.js +1 -1
  81. package/es2018/plugins/export-docs/export-docs.min.js +1 -1
  82. package/es2018/plugins/finder/finder.min.js +1 -1
  83. package/es2018/plugins/google-maps/google-maps.min.js +1 -1
  84. package/es2018/plugins/google-search/google-search.min.js +1 -1
  85. package/es2018/plugins/highlight-signature/highlight-signature.min.js +1 -1
  86. package/es2018/plugins/iframe-editor/iframe-editor.min.js +1 -1
  87. package/es2018/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  88. package/es2018/plugins/keyboard/keyboard.min.js +1 -1
  89. package/es2018/plugins/mobile-view/mobile-view.min.js +1 -1
  90. package/es2018/plugins/page-break/page-break.min.js +1 -1
  91. package/es2018/plugins/paste-code/paste-code.min.js +1 -1
  92. package/es2018/plugins/paste-from-word/paste-from-word.min.js +1 -1
  93. package/es2018/plugins/show-blocks/show-blocks.min.js +1 -1
  94. package/es2018/plugins/style/style.min.js +1 -1
  95. package/es2018/plugins/templates/templates.min.js +1 -1
  96. package/es2018/plugins/todo-list/todo-list.min.js +1 -1
  97. package/es2018/plugins/translate/translate.min.js +1 -1
  98. package/es2018/plugins/tune-block/tune-block.min.js +1 -1
  99. package/es2021/jodit.css +1 -1
  100. package/es2021/jodit.fat.min.js +7 -7
  101. package/es2021/jodit.js +129 -32
  102. package/es2021/jodit.min.js +13 -13
  103. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  104. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  105. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  106. package/es2021/plugins/autocomplete/autocomplete.css +1 -1
  107. package/es2021/plugins/autocomplete/autocomplete.js +1 -1
  108. package/es2021/plugins/autocomplete/autocomplete.min.js +1 -1
  109. package/es2021/plugins/backup/backup.css +1 -1
  110. package/es2021/plugins/backup/backup.js +1 -1
  111. package/es2021/plugins/backup/backup.min.js +1 -1
  112. package/es2021/plugins/button-generator/button-generator.css +1 -1
  113. package/es2021/plugins/button-generator/button-generator.js +1 -1
  114. package/es2021/plugins/button-generator/button-generator.min.js +1 -1
  115. package/es2021/plugins/change-case/change-case.js +1 -1
  116. package/es2021/plugins/change-case/change-case.min.js +1 -1
  117. package/es2021/plugins/color-picker/color-picker.css +1 -1
  118. package/es2021/plugins/color-picker/color-picker.js +1 -1
  119. package/es2021/plugins/color-picker/color-picker.min.js +1 -1
  120. package/es2021/plugins/emoji/emoji.css +1 -1
  121. package/es2021/plugins/emoji/emoji.js +1 -1
  122. package/es2021/plugins/emoji/emoji.min.js +1 -1
  123. package/es2021/plugins/export-docs/export-docs.js +1 -1
  124. package/es2021/plugins/export-docs/export-docs.min.js +1 -1
  125. package/es2021/plugins/finder/finder.css +1 -1
  126. package/es2021/plugins/finder/finder.js +1 -1
  127. package/es2021/plugins/finder/finder.min.js +1 -1
  128. package/es2021/plugins/google-maps/google-maps.css +1 -1
  129. package/es2021/plugins/google-maps/google-maps.js +1 -1
  130. package/es2021/plugins/google-maps/google-maps.min.js +1 -1
  131. package/es2021/plugins/google-search/google-search.js +1 -1
  132. package/es2021/plugins/google-search/google-search.min.js +1 -1
  133. package/es2021/plugins/highlight-signature/highlight-signature.js +1 -1
  134. package/es2021/plugins/highlight-signature/highlight-signature.min.js +1 -1
  135. package/es2021/plugins/iframe-editor/iframe-editor.css +1 -1
  136. package/es2021/plugins/iframe-editor/iframe-editor.js +1 -1
  137. package/es2021/plugins/iframe-editor/iframe-editor.min.js +1 -1
  138. package/es2021/plugins/image-editor-pro/image-editor-pro.css +1 -1
  139. package/es2021/plugins/image-editor-pro/image-editor-pro.js +1 -1
  140. package/es2021/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  141. package/es2021/plugins/keyboard/keyboard.css +1 -1
  142. package/es2021/plugins/keyboard/keyboard.js +1 -1
  143. package/es2021/plugins/keyboard/keyboard.min.js +1 -1
  144. package/es2021/plugins/mobile-view/mobile-view.js +1 -1
  145. package/es2021/plugins/mobile-view/mobile-view.min.js +1 -1
  146. package/es2021/plugins/page-break/page-break.js +1 -1
  147. package/es2021/plugins/page-break/page-break.min.js +1 -1
  148. package/es2021/plugins/paste-code/paste-code.css +1 -1
  149. package/es2021/plugins/paste-code/paste-code.js +1 -1
  150. package/es2021/plugins/paste-code/paste-code.min.js +1 -1
  151. package/es2021/plugins/paste-from-word/paste-from-word.js +1 -1
  152. package/es2021/plugins/paste-from-word/paste-from-word.min.js +1 -1
  153. package/es2021/plugins/show-blocks/show-blocks.js +1 -1
  154. package/es2021/plugins/show-blocks/show-blocks.min.js +1 -1
  155. package/es2021/plugins/style/style.css +1 -1
  156. package/es2021/plugins/style/style.js +1 -1
  157. package/es2021/plugins/style/style.min.js +1 -1
  158. package/es2021/plugins/templates/templates.css +1 -1
  159. package/es2021/plugins/templates/templates.js +1 -1
  160. package/es2021/plugins/templates/templates.min.js +1 -1
  161. package/es2021/plugins/todo-list/todo-list.css +1 -1
  162. package/es2021/plugins/todo-list/todo-list.js +1 -1
  163. package/es2021/plugins/todo-list/todo-list.min.js +1 -1
  164. package/es2021/plugins/translate/translate.css +1 -1
  165. package/es2021/plugins/translate/translate.js +1 -1
  166. package/es2021/plugins/translate/translate.min.js +1 -1
  167. package/es2021/plugins/tune-block/tune-block.css +1 -1
  168. package/es2021/plugins/tune-block/tune-block.js +1 -1
  169. package/es2021/plugins/tune-block/tune-block.min.js +1 -1
  170. package/es2021.en/jodit.css +1 -1
  171. package/es2021.en/jodit.fat.min.js +7 -7
  172. package/es2021.en/jodit.js +129 -32
  173. package/es2021.en/jodit.min.js +7 -7
  174. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  175. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  176. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  177. package/es2021.en/plugins/autocomplete/autocomplete.css +1 -1
  178. package/es2021.en/plugins/autocomplete/autocomplete.js +1 -1
  179. package/es2021.en/plugins/autocomplete/autocomplete.min.js +1 -1
  180. package/es2021.en/plugins/backup/backup.css +1 -1
  181. package/es2021.en/plugins/backup/backup.js +1 -1
  182. package/es2021.en/plugins/backup/backup.min.js +1 -1
  183. package/es2021.en/plugins/button-generator/button-generator.css +1 -1
  184. package/es2021.en/plugins/button-generator/button-generator.js +1 -1
  185. package/es2021.en/plugins/button-generator/button-generator.min.js +1 -1
  186. package/es2021.en/plugins/change-case/change-case.js +1 -1
  187. package/es2021.en/plugins/change-case/change-case.min.js +1 -1
  188. package/es2021.en/plugins/color-picker/color-picker.css +1 -1
  189. package/es2021.en/plugins/color-picker/color-picker.js +1 -1
  190. package/es2021.en/plugins/color-picker/color-picker.min.js +1 -1
  191. package/es2021.en/plugins/emoji/emoji.css +1 -1
  192. package/es2021.en/plugins/emoji/emoji.js +1 -1
  193. package/es2021.en/plugins/emoji/emoji.min.js +1 -1
  194. package/es2021.en/plugins/export-docs/export-docs.js +1 -1
  195. package/es2021.en/plugins/export-docs/export-docs.min.js +1 -1
  196. package/es2021.en/plugins/finder/finder.css +1 -1
  197. package/es2021.en/plugins/finder/finder.js +1 -1
  198. package/es2021.en/plugins/finder/finder.min.js +1 -1
  199. package/es2021.en/plugins/google-maps/google-maps.css +1 -1
  200. package/es2021.en/plugins/google-maps/google-maps.js +1 -1
  201. package/es2021.en/plugins/google-maps/google-maps.min.js +1 -1
  202. package/es2021.en/plugins/google-search/google-search.js +1 -1
  203. package/es2021.en/plugins/google-search/google-search.min.js +1 -1
  204. package/es2021.en/plugins/highlight-signature/highlight-signature.js +1 -1
  205. package/es2021.en/plugins/highlight-signature/highlight-signature.min.js +1 -1
  206. package/es2021.en/plugins/iframe-editor/iframe-editor.css +1 -1
  207. package/es2021.en/plugins/iframe-editor/iframe-editor.js +1 -1
  208. package/es2021.en/plugins/iframe-editor/iframe-editor.min.js +1 -1
  209. package/es2021.en/plugins/image-editor-pro/image-editor-pro.css +1 -1
  210. package/es2021.en/plugins/image-editor-pro/image-editor-pro.js +1 -1
  211. package/es2021.en/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  212. package/es2021.en/plugins/keyboard/keyboard.css +1 -1
  213. package/es2021.en/plugins/keyboard/keyboard.js +1 -1
  214. package/es2021.en/plugins/keyboard/keyboard.min.js +1 -1
  215. package/es2021.en/plugins/mobile-view/mobile-view.js +1 -1
  216. package/es2021.en/plugins/mobile-view/mobile-view.min.js +1 -1
  217. package/es2021.en/plugins/page-break/page-break.js +1 -1
  218. package/es2021.en/plugins/page-break/page-break.min.js +1 -1
  219. package/es2021.en/plugins/paste-code/paste-code.css +1 -1
  220. package/es2021.en/plugins/paste-code/paste-code.js +1 -1
  221. package/es2021.en/plugins/paste-code/paste-code.min.js +1 -1
  222. package/es2021.en/plugins/paste-from-word/paste-from-word.js +1 -1
  223. package/es2021.en/plugins/paste-from-word/paste-from-word.min.js +1 -1
  224. package/es2021.en/plugins/show-blocks/show-blocks.js +1 -1
  225. package/es2021.en/plugins/show-blocks/show-blocks.min.js +1 -1
  226. package/es2021.en/plugins/style/style.css +1 -1
  227. package/es2021.en/plugins/style/style.js +1 -1
  228. package/es2021.en/plugins/style/style.min.js +1 -1
  229. package/es2021.en/plugins/templates/templates.css +1 -1
  230. package/es2021.en/plugins/templates/templates.js +1 -1
  231. package/es2021.en/plugins/templates/templates.min.js +1 -1
  232. package/es2021.en/plugins/todo-list/todo-list.css +1 -1
  233. package/es2021.en/plugins/todo-list/todo-list.js +1 -1
  234. package/es2021.en/plugins/todo-list/todo-list.min.js +1 -1
  235. package/es2021.en/plugins/translate/translate.css +1 -1
  236. package/es2021.en/plugins/translate/translate.js +1 -1
  237. package/es2021.en/plugins/translate/translate.min.js +1 -1
  238. package/es2021.en/plugins/tune-block/tune-block.css +1 -1
  239. package/es2021.en/plugins/tune-block/tune-block.js +1 -1
  240. package/es2021.en/plugins/tune-block/tune-block.min.js +1 -1
  241. package/es5/jodit.css +2 -2
  242. package/es5/jodit.fat.min.js +2 -2
  243. package/es5/jodit.js +138 -32
  244. package/es5/jodit.min.css +2 -2
  245. package/es5/jodit.min.js +2 -2
  246. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  247. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  248. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  249. package/es5/plugins/autocomplete/autocomplete.css +1 -1
  250. package/es5/plugins/autocomplete/autocomplete.js +1 -1
  251. package/es5/plugins/autocomplete/autocomplete.min.js +1 -1
  252. package/es5/plugins/backup/backup.css +1 -1
  253. package/es5/plugins/backup/backup.js +1 -1
  254. package/es5/plugins/backup/backup.min.js +1 -1
  255. package/es5/plugins/button-generator/button-generator.css +1 -1
  256. package/es5/plugins/button-generator/button-generator.js +1 -1
  257. package/es5/plugins/button-generator/button-generator.min.js +1 -1
  258. package/es5/plugins/change-case/change-case.js +1 -1
  259. package/es5/plugins/change-case/change-case.min.js +1 -1
  260. package/es5/plugins/color-picker/color-picker.css +1 -1
  261. package/es5/plugins/color-picker/color-picker.js +1 -1
  262. package/es5/plugins/color-picker/color-picker.min.js +1 -1
  263. package/es5/plugins/emoji/emoji.css +1 -1
  264. package/es5/plugins/emoji/emoji.js +1 -1
  265. package/es5/plugins/emoji/emoji.min.js +1 -1
  266. package/es5/plugins/export-docs/export-docs.js +1 -1
  267. package/es5/plugins/export-docs/export-docs.min.js +1 -1
  268. package/es5/plugins/finder/finder.css +1 -1
  269. package/es5/plugins/finder/finder.js +1 -1
  270. package/es5/plugins/finder/finder.min.js +1 -1
  271. package/es5/plugins/google-maps/google-maps.css +1 -1
  272. package/es5/plugins/google-maps/google-maps.js +1 -1
  273. package/es5/plugins/google-maps/google-maps.min.js +1 -1
  274. package/es5/plugins/google-search/google-search.js +1 -1
  275. package/es5/plugins/google-search/google-search.min.js +1 -1
  276. package/es5/plugins/highlight-signature/highlight-signature.js +1 -1
  277. package/es5/plugins/highlight-signature/highlight-signature.min.js +1 -1
  278. package/es5/plugins/iframe-editor/iframe-editor.css +1 -1
  279. package/es5/plugins/iframe-editor/iframe-editor.js +1 -1
  280. package/es5/plugins/iframe-editor/iframe-editor.min.js +1 -1
  281. package/es5/plugins/image-editor-pro/image-editor-pro.css +1 -1
  282. package/es5/plugins/image-editor-pro/image-editor-pro.js +1 -1
  283. package/es5/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  284. package/es5/plugins/keyboard/keyboard.css +1 -1
  285. package/es5/plugins/keyboard/keyboard.js +1 -1
  286. package/es5/plugins/keyboard/keyboard.min.js +1 -1
  287. package/es5/plugins/mobile-view/mobile-view.js +1 -1
  288. package/es5/plugins/mobile-view/mobile-view.min.js +1 -1
  289. package/es5/plugins/page-break/page-break.js +1 -1
  290. package/es5/plugins/page-break/page-break.min.js +1 -1
  291. package/es5/plugins/paste-code/paste-code.css +1 -1
  292. package/es5/plugins/paste-code/paste-code.js +1 -1
  293. package/es5/plugins/paste-code/paste-code.min.js +1 -1
  294. package/es5/plugins/paste-from-word/paste-from-word.js +1 -1
  295. package/es5/plugins/paste-from-word/paste-from-word.min.js +1 -1
  296. package/es5/plugins/show-blocks/show-blocks.js +1 -1
  297. package/es5/plugins/show-blocks/show-blocks.min.js +1 -1
  298. package/es5/plugins/style/style.css +1 -1
  299. package/es5/plugins/style/style.js +1 -1
  300. package/es5/plugins/style/style.min.js +1 -1
  301. package/es5/plugins/templates/templates.css +1 -1
  302. package/es5/plugins/templates/templates.js +1 -1
  303. package/es5/plugins/templates/templates.min.js +1 -1
  304. package/es5/plugins/todo-list/todo-list.css +1 -1
  305. package/es5/plugins/todo-list/todo-list.js +1 -1
  306. package/es5/plugins/todo-list/todo-list.min.js +1 -1
  307. package/es5/plugins/translate/translate.css +1 -1
  308. package/es5/plugins/translate/translate.js +1 -1
  309. package/es5/plugins/translate/translate.min.js +1 -1
  310. package/es5/plugins/tune-block/tune-block.css +1 -1
  311. package/es5/plugins/tune-block/tune-block.js +1 -1
  312. package/es5/plugins/tune-block/tune-block.min.js +1 -1
  313. package/es5/polyfills.fat.min.js +1 -1
  314. package/es5/polyfills.js +1 -1
  315. package/es5/polyfills.min.js +1 -1
  316. package/package.json +1 -1
package/es2021/jodit.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit-pro - PRO Version of Jodit Editor
3
3
  * Author: Chupurnov Valerii <chupurnov@gmail.com>
4
- * Version: v4.17.6
4
+ * Version: v4.17.8
5
5
  * Url: https://xdsoft.net/jodit/pro/
6
6
  * License(s): SEE LICENSE IN LICENSE.md
7
7
  */
@@ -1743,7 +1743,7 @@ __webpack_require__.r(__webpack_exports__);
1743
1743
  * ```
1744
1744
  * @packageDocumentation
1745
1745
  * @module constants
1746
- */ const APP_VERSION = "4.17.6";
1746
+ */ const APP_VERSION = "4.17.8";
1747
1747
  // prettier-ignore
1748
1748
  const ES = "es2021";
1749
1749
  const IS_ES_MODERN = true;
@@ -10594,6 +10594,12 @@ function findCorrectCurrentNode(node, range, rightMode, isCollapsed, checkChild,
10594
10594
 
10595
10595
 
10596
10596
 
10597
+ /**
10598
+ * A text node that is empty or holds only invisible caret placeholders.
10599
+ */ function isBlankTextNode(node) {
10600
+ var _a;
10601
+ return _dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isText(node) && ((_a = node.nodeValue) !== null && _a !== void 0 ? _a : '').replace(_constants_js__WEBPACK_IMPORTED_MODULE_0__.INVISIBLE_SPACE_REG_EXP(), '').length === 0;
10602
+ }
10597
10603
  class Selection {
10598
10604
  /**
10599
10605
  * Short alias for this.jodit
@@ -10706,6 +10712,17 @@ class Selection {
10706
10712
  }
10707
10713
  });
10708
10714
  }
10715
+ /**
10716
+ * How many ranges the browser's own selection holds right now, as opposed
10717
+ * to the composed view that [[sel]] may answer from.
10718
+ */ __nativeRangeCount() {
10719
+ var _a, _b, _c, _d;
10720
+ const { shadowRoot } = this.j.o;
10721
+ if (shadowRoot && (0,_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_4__.isFunction)(shadowRoot.getSelection)) {
10722
+ return (_b = (_a = shadowRoot.getSelection()) === null || _a === void 0 ? void 0 : _a.rangeCount) !== null && _b !== void 0 ? _b : 0;
10723
+ }
10724
+ return (_d = (_c = this.win.getSelection()) === null || _c === void 0 ? void 0 : _c.rangeCount) !== null && _d !== void 0 ? _d : 0;
10725
+ }
10709
10726
  /**
10710
10727
  * Return first selected range or create new
10711
10728
  */ get range() {
@@ -10814,6 +10831,7 @@ class Selection {
10814
10831
  /**
10815
10832
  * Create marker element
10816
10833
  */ marker(atStart = false, range) {
10834
+ var _a;
10817
10835
  let newRange = null;
10818
10836
  if (range) {
10819
10837
  newRange = range.cloneRange();
@@ -10830,10 +10848,21 @@ class Selection {
10830
10848
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(marker, this.j.createInside.text(_constants_js__WEBPACK_IMPORTED_MODULE_0__.INVISIBLE_SPACE));
10831
10849
  if (newRange) {
10832
10850
  if (_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isOrContains(this.area, atStart ? newRange.startContainer : newRange.endContainer)) {
10833
- // Here need do unsafe inserting
10834
- // Deny Dom.safeInsertNode(newRange, marker);
10835
- // Apply style -> Test Style module -> Base apply -> For selection <p><strong>|test|</strong></p> apply style {"element":"em","style":{"fontStyle":"italic"}}
10836
- newRange.insertNode(marker);
10851
+ const { startContainer: node, startOffset: offset } = newRange;
10852
+ // At either end of a text node the marker goes beside it. Splitting
10853
+ // the node there would leave the selection's boundary in an empty
10854
+ // text node, and WebKit neither repaints a selection that leaves one
10855
+ // nor moves a selection that follows one when it's removed.
10856
+ if (_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isText(node) && offset === 0) {
10857
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.before(node, marker);
10858
+ } else if (_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isText(node) && offset === ((_a = node.nodeValue) === null || _a === void 0 ? void 0 : _a.length)) {
10859
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.after(node, marker);
10860
+ } else {
10861
+ // Here need do unsafe inserting
10862
+ // Deny Dom.safeInsertNode(newRange, marker);
10863
+ // Apply style -> Test Style module -> Base apply -> For selection <p><strong>|test|</strong></p> apply style {"element":"em","style":{"fontStyle":"italic"}}
10864
+ newRange.insertNode(marker);
10865
+ }
10837
10866
  }
10838
10867
  }
10839
10868
  return marker;
@@ -11161,7 +11190,9 @@ class Selection {
11161
11190
  }
11162
11191
  ].forEach((getChildNode)=>{
11163
11192
  const childNode = getChildNode();
11164
- if (childNode && _dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isEmptyTextNode(childNode)) {
11193
+ // Only a text node left with nothing in it by the split
11194
+ // goes; one holding a space is content (`<b>a</b> |`).
11195
+ if (childNode && isBlankTextNode(childNode)) {
11165
11196
  _dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(childNode);
11166
11197
  }
11167
11198
  });
@@ -11510,6 +11541,16 @@ class Selection {
11510
11541
  if (backward && ranges.length === 1) {
11511
11542
  const range = ranges[0];
11512
11543
  sel.setBaseAndExtent(range.endContainer, range.endOffset, range.startContainer, range.startOffset);
11544
+ } else if (ranges.length === 1 && !this.__nativeRangeCount() && (0,_helpers_checker_index_js__WEBPACK_IMPORTED_MODULE_4__.isFunction)(sel.setBaseAndExtent)) {
11545
+ // `addRange` is specified to ignore a range whose root is not
11546
+ // the document, which is every range inside a shadow tree.
11547
+ // Chrome's `ShadowRoot.getSelection()` takes them anyway, but
11548
+ // Safari has only the window selection, so after
11549
+ // `removeAllRanges` the caret is simply gone: a character was
11550
+ // deleted and nothing was left to type into. `setBaseAndExtent`
11551
+ // does accept nodes inside a shadow tree.
11552
+ const range = ranges[0];
11553
+ sel.setBaseAndExtent(range.startContainer, range.startOffset, range.endContainer, range.endOffset);
11513
11554
  }
11514
11555
  }
11515
11556
  /**
@@ -27990,19 +28031,27 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.history = {
27990
28031
  * Update history stack
27991
28032
  */ updateStack(replace = false) {
27992
28033
  const newValue = this.snapshot.make();
27993
- if (!_snapshot_js__WEBPACK_IMPORTED_MODULE_4__.Snapshot.equal(newValue, this.startValue)) {
27994
- const newCommand = new _command_js__WEBPACK_IMPORTED_MODULE_3__.Command(this.startValue, newValue, this, this.updateTick);
27995
- if (replace) {
27996
- const command = this.__stack.current();
27997
- if (command && this.updateTick === command.tick) {
27998
- this.__stack.replace(newCommand);
27999
- }
28000
- } else {
28001
- this.__stack.push(newCommand);
28002
- }
28034
+ if (_snapshot_js__WEBPACK_IMPORTED_MODULE_4__.Snapshot.equal(newValue, this.startValue)) {
28035
+ return;
28036
+ }
28037
+ // Only the selection moved, for example when the selection markers
28038
+ // went in before a switch to the source view. There is nothing to
28039
+ // undo, but the next change has to start from this selection.
28040
+ if (newValue.html === this.startValue.html) {
28003
28041
  this.startValue = newValue;
28004
- this.fireChangeStack();
28042
+ return;
28005
28043
  }
28044
+ const newCommand = new _command_js__WEBPACK_IMPORTED_MODULE_3__.Command(this.startValue, newValue, this, this.updateTick);
28045
+ if (replace) {
28046
+ const command = this.__stack.current();
28047
+ if (command && this.updateTick === command.tick) {
28048
+ this.__stack.replace(newCommand);
28049
+ }
28050
+ } else {
28051
+ this.__stack.push(newCommand);
28052
+ }
28053
+ this.startValue = newValue;
28054
+ this.fireChangeStack();
28006
28055
  }
28007
28056
  fireChangeStack() {
28008
28057
  var _a;
@@ -42836,7 +42885,7 @@ class lineHeight extends _core_plugin_index_js__WEBPACK_IMPORTED_MODULE_4__.Plug
42836
42885
  try {
42837
42886
  if (s.isCollapsed()) {
42838
42887
  const fake = c.fake();
42839
- s.insertNode(fake, false, false);
42888
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeInsertNode(s.range, fake);
42840
42889
  apply(fake);
42841
42890
  _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(fake);
42842
42891
  } else {
@@ -44870,7 +44919,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.useInputsPlaceholder =
44870
44919
  this.placeholderElm.innerHTML = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__.attr)(editor.element, 'placeholder') || '';
44871
44920
  }
44872
44921
  editor.e.fire('placeholder', this.placeholderElm.innerHTML);
44873
- editor.e.off('.placeholder').on('changePlace.placeholder', this.addNativeListeners).on('change.placeholder focus.placeholder keyup.placeholder mouseup.placeholder keydown.placeholder ' + 'mousedown.placeholder afterSetMode.placeholder changePlace.placeholder ' + 'internalChange.placeholder', this.toggle).on(window, 'load', this.toggle);
44922
+ editor.e.off('.placeholder').on('changePlace.placeholder', this.addNativeListeners).on('change.placeholder focus.placeholder keyup.placeholder mouseup.placeholder keydown.placeholder ' + 'mousedown.placeholder afterSetMode.placeholder changePlace.placeholder ' + 'internalChange.placeholder afterCommand.placeholder', this.toggle).on(window, 'load', this.toggle);
44874
44923
  this.addNativeListeners();
44875
44924
  this.toggle();
44876
44925
  };
@@ -47555,13 +47604,22 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
47555
47604
  j.e.fire(e.type + 'Editor', target, e);
47556
47605
  }
47557
47606
  }
47607
+ onOutsidePress(e) {
47608
+ this.__pressTarget = e.target;
47609
+ }
47558
47610
  /**
47559
47611
  * @event outsideClick(e) - when user clicked on the outside of editor
47560
47612
  */ onOutsideClick(e) {
47561
- const node = e.target;
47613
+ const node = e.target, pressed = this.__pressTarget;
47614
+ this.__pressTarget = null;
47562
47615
  if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.up(node, (elm)=>elm === this.j.editor)) {
47563
47616
  return;
47564
47617
  }
47618
+ // Selecting the text of a popup input with the mouse and releasing
47619
+ // the button past the popup's edge is not a click outside of it.
47620
+ if (pressed && _core_ui_index_js__WEBPACK_IMPORTED_MODULE_6__.UIElement.closestElement(pressed, _core_ui_index_js__WEBPACK_IMPORTED_MODULE_6__.Popup)) {
47621
+ return;
47622
+ }
47565
47623
  const box = _core_ui_index_js__WEBPACK_IMPORTED_MODULE_6__.UIElement.closestElement(node, _core_ui_index_js__WEBPACK_IMPORTED_MODULE_6__.Popup);
47566
47624
  if (!box) {
47567
47625
  this.j.e.fire('outsideClick', e);
@@ -47668,11 +47726,22 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.select = {
47668
47726
  'mouseup',
47669
47727
  'touchend'
47670
47728
  ];
47729
+ /**
47730
+ * Where the last press started. Chrome reports a drag that begins in one
47731
+ * element and ends in another as a `click` on their common ancestor, so a
47732
+ * press inside a popup is remembered to tell such a drag from a real click.
47733
+ */ this.__pressTarget = null;
47671
47734
  }
47672
47735
  }
47673
47736
  __decorate([
47674
47737
  _core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.autobind
47675
47738
  ], select.prototype, "onStartSelection", null);
47739
+ __decorate([
47740
+ (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)([
47741
+ 'ow:mousedown',
47742
+ 'ow:touchstart'
47743
+ ])
47744
+ ], select.prototype, "onOutsidePress", null);
47676
47745
  __decorate([
47677
47746
  (0,_core_decorators_index_js__WEBPACK_IMPORTED_MODULE_1__.watch)('ow:click')
47678
47747
  ], select.prototype, "onOutsideClick", null);
@@ -48001,18 +48070,26 @@ _config_js__WEBPACK_IMPORTED_MODULE_2__.Config.prototype.controls.source = {
48001
48070
  /* harmony export */ AceEditor: function() { return /* binding */ AceEditor; }
48002
48071
  /* harmony export */ });
48003
48072
  /* harmony import */ var _core_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(82758);
48004
- /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2748);
48005
- /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21537);
48006
- /* harmony import */ var _sourceEditor_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23370);
48073
+ /* harmony import */ var _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(45219);
48074
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2748);
48075
+ /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21537);
48076
+ /* harmony import */ var _sourceEditor_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(23370);
48007
48077
  /*!
48008
48078
  * Jodit Editor (https://xdsoft.net/jodit/)
48009
48079
  * Released under MIT see LICENSE.txt in the project root for license information.
48010
48080
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
48011
- */
48081
+ */ var __decorate = undefined && undefined.__decorate || function(decorators, target, key, desc) {
48082
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
48083
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
48084
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
48085
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
48086
+ };
48087
+
48012
48088
 
48013
48089
 
48014
48090
 
48015
- class AceEditor extends _sourceEditor_js__WEBPACK_IMPORTED_MODULE_3__.SourceEditor {
48091
+
48092
+ class AceEditor extends _sourceEditor_js__WEBPACK_IMPORTED_MODULE_4__.SourceEditor {
48016
48093
  aceExists() {
48017
48094
  return this.j.ow.ace !== undefined;
48018
48095
  }
@@ -48070,7 +48147,7 @@ class AceEditor extends _sourceEditor_js__WEBPACK_IMPORTED_MODULE_3__.SourceEdit
48070
48147
  return;
48071
48148
  }
48072
48149
  const fakeMirror = this.j.c.div('jodit-source__mirror-fake');
48073
- _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(this.container, fakeMirror);
48150
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(this.container, fakeMirror);
48074
48151
  const ace = editor.ow.ace;
48075
48152
  this.instance = ace.edit(fakeMirror);
48076
48153
  if (editor.o.direction === 'rtl') {
@@ -48091,7 +48168,7 @@ class AceEditor extends _sourceEditor_js__WEBPACK_IMPORTED_MODULE_3__.SourceEdit
48091
48168
  this.instance.setOption('wrap', editor.o.sourceEditorNativeOptions.wrap);
48092
48169
  this.instance.getSession().setUseWorker(false);
48093
48170
  this.instance.$blockScrolling = Infinity;
48094
- this.instance.on('change', this.toWYSIWYG);
48171
+ this.instance.on('change', this.__onChange);
48095
48172
  this.instance.on('focus', this.proxyOnFocus);
48096
48173
  this.instance.on('mousedown', this.proxyOnMouseDown);
48097
48174
  this.instance.on('blur', this.proxyOnBlur);
@@ -48126,7 +48203,7 @@ class AceEditor extends _sourceEditor_js__WEBPACK_IMPORTED_MODULE_3__.SourceEdit
48126
48203
  if (!this.aceExists()) {
48127
48204
  if (!loading) {
48128
48205
  loading = true;
48129
- (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.loadNext)(editor, editor.o.sourceEditorCDNUrlsJS).then(initAceEditor).catch(()=>null);
48206
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.loadNext)(editor, editor.o.sourceEditorCDNUrlsJS).then(initAceEditor).catch(()=>null);
48130
48207
  }
48131
48208
  return;
48132
48209
  }
@@ -48139,7 +48216,7 @@ class AceEditor extends _sourceEditor_js__WEBPACK_IMPORTED_MODULE_3__.SourceEdit
48139
48216
  }
48140
48217
  destruct() {
48141
48218
  var _a, _b;
48142
- this.instance.off('change', this.toWYSIWYG);
48219
+ this.instance.off('change', this.__onChange);
48143
48220
  this.instance.off('focus', this.proxyOnFocus);
48144
48221
  this.instance.off('mousedown', this.proxyOnMouseDown);
48145
48222
  this.instance.destroy();
@@ -48148,13 +48225,29 @@ class AceEditor extends _sourceEditor_js__WEBPACK_IMPORTED_MODULE_3__.SourceEdit
48148
48225
  setValue(value) {
48149
48226
  if (!this.j.o.editHTMLDocumentMode && this.j.o.beautifyHTML) {
48150
48227
  const html = this.j.e.fire('beautifyHTML', value);
48151
- if ((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_2__.isString)(html)) {
48228
+ if ((0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.isString)(html)) {
48152
48229
  value = html;
48153
48230
  }
48154
48231
  }
48155
- this.instance.setValue(value);
48232
+ // ACE reports its own `setValue` as two changes, the removal of the
48233
+ // old text and the insertion of the new one. Fed back into the
48234
+ // editor they became two history entries, `content -> ''` and
48235
+ // `'' -> content`, so the first undo after a switch to the source
48236
+ // view and back emptied the editor. The text came from the editor
48237
+ // in the first place, so there is nothing to send back.
48238
+ this.__settingValue = true;
48239
+ try {
48240
+ this.instance.setValue(value);
48241
+ } finally{
48242
+ this.__settingValue = false;
48243
+ }
48156
48244
  this.instance.clearSelection();
48157
48245
  }
48246
+ __onChange() {
48247
+ if (!this.__settingValue) {
48248
+ this.toWYSIWYG();
48249
+ }
48250
+ }
48158
48251
  getValue() {
48159
48252
  return this.instance.getValue();
48160
48253
  }
@@ -48233,8 +48326,12 @@ class AceEditor extends _sourceEditor_js__WEBPACK_IMPORTED_MODULE_3__.SourceEdit
48233
48326
  this.proxyOnMouseDown = (e)=>{
48234
48327
  this.j.e.fire('mousedown', e);
48235
48328
  };
48329
+ this.__settingValue = false;
48236
48330
  }
48237
48331
  }
48332
+ __decorate([
48333
+ _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_1__.autobind
48334
+ ], AceEditor.prototype, "__onChange", null);
48238
48335
 
48239
48336
 
48240
48337
  /***/ }),