jodit-pro 4.17.8 → 4.18.1

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 (325) hide show
  1. package/es2015/jodit.css +2 -2
  2. package/es2015/jodit.fat.min.css +1 -1
  3. package/es2015/jodit.fat.min.js +6 -6
  4. package/es2015/jodit.js +810 -130
  5. package/es2015/jodit.min.css +1 -1
  6. package/es2015/jodit.min.js +10 -10
  7. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  8. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  9. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  10. package/es2015/plugins/autocomplete/autocomplete.css +1 -1
  11. package/es2015/plugins/autocomplete/autocomplete.js +1 -1
  12. package/es2015/plugins/autocomplete/autocomplete.min.js +1 -1
  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/image-editor-pro/image-editor-pro.css +1 -1
  43. package/es2015/plugins/image-editor-pro/image-editor-pro.js +1 -1
  44. package/es2015/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  45. package/es2015/plugins/keyboard/keyboard.css +1 -1
  46. package/es2015/plugins/keyboard/keyboard.js +1 -1
  47. package/es2015/plugins/keyboard/keyboard.min.js +1 -1
  48. package/es2015/plugins/mobile-view/mobile-view.js +1 -1
  49. package/es2015/plugins/mobile-view/mobile-view.min.js +1 -1
  50. package/es2015/plugins/page-break/page-break.js +1 -1
  51. package/es2015/plugins/page-break/page-break.min.js +1 -1
  52. package/es2015/plugins/paste-code/paste-code.css +1 -1
  53. package/es2015/plugins/paste-code/paste-code.js +1 -1
  54. package/es2015/plugins/paste-code/paste-code.min.js +1 -1
  55. package/es2015/plugins/paste-from-word/paste-from-word.js +1 -1
  56. package/es2015/plugins/paste-from-word/paste-from-word.min.js +1 -1
  57. package/es2015/plugins/show-blocks/show-blocks.js +1 -1
  58. package/es2015/plugins/show-blocks/show-blocks.min.js +1 -1
  59. package/es2015/plugins/style/style.css +1 -1
  60. package/es2015/plugins/style/style.js +1 -1
  61. package/es2015/plugins/style/style.min.js +1 -1
  62. package/es2015/plugins/templates/templates.css +1 -1
  63. package/es2015/plugins/templates/templates.js +1 -1
  64. package/es2015/plugins/templates/templates.min.js +1 -1
  65. package/es2015/plugins/todo-list/todo-list.css +1 -1
  66. package/es2015/plugins/todo-list/todo-list.js +1 -1
  67. package/es2015/plugins/todo-list/todo-list.min.js +1 -1
  68. package/es2015/plugins/translate/translate.css +1 -1
  69. package/es2015/plugins/translate/translate.js +1 -1
  70. package/es2015/plugins/translate/translate.min.js +1 -1
  71. package/es2015/plugins/tune-block/tune-block.css +1 -1
  72. package/es2015/plugins/tune-block/tune-block.js +1 -1
  73. package/es2015/plugins/tune-block/tune-block.min.js +1 -1
  74. package/es2018/jodit.fat.min.css +1 -1
  75. package/es2018/jodit.fat.min.js +9 -9
  76. package/es2018/jodit.min.css +1 -1
  77. package/es2018/jodit.min.js +9 -9
  78. package/es2018/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  79. package/es2018/plugins/autocomplete/autocomplete.min.js +1 -1
  80. package/es2018/plugins/backup/backup.min.js +1 -1
  81. package/es2018/plugins/button-generator/button-generator.min.js +1 -1
  82. package/es2018/plugins/change-case/change-case.min.js +1 -1
  83. package/es2018/plugins/color-picker/color-picker.min.js +1 -1
  84. package/es2018/plugins/emoji/emoji.min.js +1 -1
  85. package/es2018/plugins/export-docs/export-docs.min.js +1 -1
  86. package/es2018/plugins/finder/finder.min.js +1 -1
  87. package/es2018/plugins/google-maps/google-maps.min.js +1 -1
  88. package/es2018/plugins/google-search/google-search.min.js +1 -1
  89. package/es2018/plugins/highlight-signature/highlight-signature.min.js +1 -1
  90. package/es2018/plugins/iframe-editor/iframe-editor.min.js +1 -1
  91. package/es2018/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  92. package/es2018/plugins/keyboard/keyboard.min.js +1 -1
  93. package/es2018/plugins/mobile-view/mobile-view.min.js +1 -1
  94. package/es2018/plugins/page-break/page-break.min.js +1 -1
  95. package/es2018/plugins/paste-code/paste-code.min.js +1 -1
  96. package/es2018/plugins/paste-from-word/paste-from-word.min.js +1 -1
  97. package/es2018/plugins/show-blocks/show-blocks.min.js +1 -1
  98. package/es2018/plugins/style/style.min.js +1 -1
  99. package/es2018/plugins/templates/templates.min.js +1 -1
  100. package/es2018/plugins/todo-list/todo-list.min.js +1 -1
  101. package/es2018/plugins/translate/translate.min.js +1 -1
  102. package/es2018/plugins/tune-block/tune-block.min.js +1 -1
  103. package/es2021/jodit.css +2 -2
  104. package/es2021/jodit.fat.min.css +1 -1
  105. package/es2021/jodit.fat.min.js +16 -16
  106. package/es2021/jodit.js +811 -131
  107. package/es2021/jodit.min.css +1 -1
  108. package/es2021/jodit.min.js +16 -16
  109. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  110. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  111. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  112. package/es2021/plugins/autocomplete/autocomplete.css +1 -1
  113. package/es2021/plugins/autocomplete/autocomplete.js +1 -1
  114. package/es2021/plugins/autocomplete/autocomplete.min.js +1 -1
  115. package/es2021/plugins/backup/backup.css +1 -1
  116. package/es2021/plugins/backup/backup.js +1 -1
  117. package/es2021/plugins/backup/backup.min.js +1 -1
  118. package/es2021/plugins/button-generator/button-generator.css +1 -1
  119. package/es2021/plugins/button-generator/button-generator.js +1 -1
  120. package/es2021/plugins/button-generator/button-generator.min.js +1 -1
  121. package/es2021/plugins/change-case/change-case.js +1 -1
  122. package/es2021/plugins/change-case/change-case.min.js +1 -1
  123. package/es2021/plugins/color-picker/color-picker.css +1 -1
  124. package/es2021/plugins/color-picker/color-picker.js +1 -1
  125. package/es2021/plugins/color-picker/color-picker.min.js +1 -1
  126. package/es2021/plugins/emoji/emoji.css +1 -1
  127. package/es2021/plugins/emoji/emoji.js +1 -1
  128. package/es2021/plugins/emoji/emoji.min.js +1 -1
  129. package/es2021/plugins/export-docs/export-docs.js +1 -1
  130. package/es2021/plugins/export-docs/export-docs.min.js +1 -1
  131. package/es2021/plugins/finder/finder.css +1 -1
  132. package/es2021/plugins/finder/finder.js +1 -1
  133. package/es2021/plugins/finder/finder.min.js +1 -1
  134. package/es2021/plugins/google-maps/google-maps.css +1 -1
  135. package/es2021/plugins/google-maps/google-maps.js +1 -1
  136. package/es2021/plugins/google-maps/google-maps.min.js +1 -1
  137. package/es2021/plugins/google-search/google-search.js +1 -1
  138. package/es2021/plugins/google-search/google-search.min.js +1 -1
  139. package/es2021/plugins/highlight-signature/highlight-signature.js +1 -1
  140. package/es2021/plugins/highlight-signature/highlight-signature.min.js +1 -1
  141. package/es2021/plugins/iframe-editor/iframe-editor.css +1 -1
  142. package/es2021/plugins/iframe-editor/iframe-editor.js +1 -1
  143. package/es2021/plugins/iframe-editor/iframe-editor.min.js +1 -1
  144. package/es2021/plugins/image-editor-pro/image-editor-pro.css +1 -1
  145. package/es2021/plugins/image-editor-pro/image-editor-pro.js +1 -1
  146. package/es2021/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  147. package/es2021/plugins/keyboard/keyboard.css +1 -1
  148. package/es2021/plugins/keyboard/keyboard.js +1 -1
  149. package/es2021/plugins/keyboard/keyboard.min.js +1 -1
  150. package/es2021/plugins/mobile-view/mobile-view.js +1 -1
  151. package/es2021/plugins/mobile-view/mobile-view.min.js +1 -1
  152. package/es2021/plugins/page-break/page-break.js +1 -1
  153. package/es2021/plugins/page-break/page-break.min.js +1 -1
  154. package/es2021/plugins/paste-code/paste-code.css +1 -1
  155. package/es2021/plugins/paste-code/paste-code.js +1 -1
  156. package/es2021/plugins/paste-code/paste-code.min.js +1 -1
  157. package/es2021/plugins/paste-from-word/paste-from-word.js +1 -1
  158. package/es2021/plugins/paste-from-word/paste-from-word.min.js +1 -1
  159. package/es2021/plugins/show-blocks/show-blocks.js +1 -1
  160. package/es2021/plugins/show-blocks/show-blocks.min.js +1 -1
  161. package/es2021/plugins/style/style.css +1 -1
  162. package/es2021/plugins/style/style.js +1 -1
  163. package/es2021/plugins/style/style.min.js +1 -1
  164. package/es2021/plugins/templates/templates.css +1 -1
  165. package/es2021/plugins/templates/templates.js +1 -1
  166. package/es2021/plugins/templates/templates.min.js +1 -1
  167. package/es2021/plugins/todo-list/todo-list.css +1 -1
  168. package/es2021/plugins/todo-list/todo-list.js +1 -1
  169. package/es2021/plugins/todo-list/todo-list.min.js +1 -1
  170. package/es2021/plugins/translate/translate.css +1 -1
  171. package/es2021/plugins/translate/translate.js +1 -1
  172. package/es2021/plugins/translate/translate.min.js +1 -1
  173. package/es2021/plugins/tune-block/tune-block.css +1 -1
  174. package/es2021/plugins/tune-block/tune-block.js +1 -1
  175. package/es2021/plugins/tune-block/tune-block.min.js +1 -1
  176. package/es2021.en/jodit.css +2 -2
  177. package/es2021.en/jodit.fat.min.css +1 -1
  178. package/es2021.en/jodit.fat.min.js +15 -15
  179. package/es2021.en/jodit.js +811 -131
  180. package/es2021.en/jodit.min.css +1 -1
  181. package/es2021.en/jodit.min.js +15 -15
  182. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  183. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  184. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  185. package/es2021.en/plugins/autocomplete/autocomplete.css +1 -1
  186. package/es2021.en/plugins/autocomplete/autocomplete.js +1 -1
  187. package/es2021.en/plugins/autocomplete/autocomplete.min.js +1 -1
  188. package/es2021.en/plugins/backup/backup.css +1 -1
  189. package/es2021.en/plugins/backup/backup.js +1 -1
  190. package/es2021.en/plugins/backup/backup.min.js +1 -1
  191. package/es2021.en/plugins/button-generator/button-generator.css +1 -1
  192. package/es2021.en/plugins/button-generator/button-generator.js +1 -1
  193. package/es2021.en/plugins/button-generator/button-generator.min.js +1 -1
  194. package/es2021.en/plugins/change-case/change-case.js +1 -1
  195. package/es2021.en/plugins/change-case/change-case.min.js +1 -1
  196. package/es2021.en/plugins/color-picker/color-picker.css +1 -1
  197. package/es2021.en/plugins/color-picker/color-picker.js +1 -1
  198. package/es2021.en/plugins/color-picker/color-picker.min.js +1 -1
  199. package/es2021.en/plugins/emoji/emoji.css +1 -1
  200. package/es2021.en/plugins/emoji/emoji.js +1 -1
  201. package/es2021.en/plugins/emoji/emoji.min.js +1 -1
  202. package/es2021.en/plugins/export-docs/export-docs.js +1 -1
  203. package/es2021.en/plugins/export-docs/export-docs.min.js +1 -1
  204. package/es2021.en/plugins/finder/finder.css +1 -1
  205. package/es2021.en/plugins/finder/finder.js +1 -1
  206. package/es2021.en/plugins/finder/finder.min.js +1 -1
  207. package/es2021.en/plugins/google-maps/google-maps.css +1 -1
  208. package/es2021.en/plugins/google-maps/google-maps.js +1 -1
  209. package/es2021.en/plugins/google-maps/google-maps.min.js +1 -1
  210. package/es2021.en/plugins/google-search/google-search.js +1 -1
  211. package/es2021.en/plugins/google-search/google-search.min.js +1 -1
  212. package/es2021.en/plugins/highlight-signature/highlight-signature.js +1 -1
  213. package/es2021.en/plugins/highlight-signature/highlight-signature.min.js +1 -1
  214. package/es2021.en/plugins/iframe-editor/iframe-editor.css +1 -1
  215. package/es2021.en/plugins/iframe-editor/iframe-editor.js +1 -1
  216. package/es2021.en/plugins/iframe-editor/iframe-editor.min.js +1 -1
  217. package/es2021.en/plugins/image-editor-pro/image-editor-pro.css +1 -1
  218. package/es2021.en/plugins/image-editor-pro/image-editor-pro.js +1 -1
  219. package/es2021.en/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  220. package/es2021.en/plugins/keyboard/keyboard.css +1 -1
  221. package/es2021.en/plugins/keyboard/keyboard.js +1 -1
  222. package/es2021.en/plugins/keyboard/keyboard.min.js +1 -1
  223. package/es2021.en/plugins/mobile-view/mobile-view.js +1 -1
  224. package/es2021.en/plugins/mobile-view/mobile-view.min.js +1 -1
  225. package/es2021.en/plugins/page-break/page-break.js +1 -1
  226. package/es2021.en/plugins/page-break/page-break.min.js +1 -1
  227. package/es2021.en/plugins/paste-code/paste-code.css +1 -1
  228. package/es2021.en/plugins/paste-code/paste-code.js +1 -1
  229. package/es2021.en/plugins/paste-code/paste-code.min.js +1 -1
  230. package/es2021.en/plugins/paste-from-word/paste-from-word.js +1 -1
  231. package/es2021.en/plugins/paste-from-word/paste-from-word.min.js +1 -1
  232. package/es2021.en/plugins/show-blocks/show-blocks.js +1 -1
  233. package/es2021.en/plugins/show-blocks/show-blocks.min.js +1 -1
  234. package/es2021.en/plugins/style/style.css +1 -1
  235. package/es2021.en/plugins/style/style.js +1 -1
  236. package/es2021.en/plugins/style/style.min.js +1 -1
  237. package/es2021.en/plugins/templates/templates.css +1 -1
  238. package/es2021.en/plugins/templates/templates.js +1 -1
  239. package/es2021.en/plugins/templates/templates.min.js +1 -1
  240. package/es2021.en/plugins/todo-list/todo-list.css +1 -1
  241. package/es2021.en/plugins/todo-list/todo-list.js +1 -1
  242. package/es2021.en/plugins/todo-list/todo-list.min.js +1 -1
  243. package/es2021.en/plugins/translate/translate.css +1 -1
  244. package/es2021.en/plugins/translate/translate.js +1 -1
  245. package/es2021.en/plugins/translate/translate.min.js +1 -1
  246. package/es2021.en/plugins/tune-block/tune-block.css +1 -1
  247. package/es2021.en/plugins/tune-block/tune-block.js +1 -1
  248. package/es2021.en/plugins/tune-block/tune-block.min.js +1 -1
  249. package/es5/jodit.css +3 -3
  250. package/es5/jodit.fat.min.css +1 -1
  251. package/es5/jodit.fat.min.js +2 -2
  252. package/es5/jodit.js +1319 -134
  253. package/es5/jodit.min.css +3 -3
  254. package/es5/jodit.min.js +2 -2
  255. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  256. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.js +1 -1
  257. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.js +1 -1
  258. package/es5/plugins/autocomplete/autocomplete.css +1 -1
  259. package/es5/plugins/autocomplete/autocomplete.js +1 -1
  260. package/es5/plugins/autocomplete/autocomplete.min.js +1 -1
  261. package/es5/plugins/backup/backup.css +1 -1
  262. package/es5/plugins/backup/backup.js +1 -1
  263. package/es5/plugins/backup/backup.min.js +1 -1
  264. package/es5/plugins/button-generator/button-generator.css +1 -1
  265. package/es5/plugins/button-generator/button-generator.js +1 -1
  266. package/es5/plugins/button-generator/button-generator.min.js +1 -1
  267. package/es5/plugins/change-case/change-case.js +1 -1
  268. package/es5/plugins/change-case/change-case.min.js +1 -1
  269. package/es5/plugins/color-picker/color-picker.css +1 -1
  270. package/es5/plugins/color-picker/color-picker.js +1 -1
  271. package/es5/plugins/color-picker/color-picker.min.js +1 -1
  272. package/es5/plugins/emoji/emoji.css +1 -1
  273. package/es5/plugins/emoji/emoji.js +1 -1
  274. package/es5/plugins/emoji/emoji.min.js +1 -1
  275. package/es5/plugins/export-docs/export-docs.js +1 -1
  276. package/es5/plugins/export-docs/export-docs.min.js +1 -1
  277. package/es5/plugins/finder/finder.css +1 -1
  278. package/es5/plugins/finder/finder.js +1 -1
  279. package/es5/plugins/finder/finder.min.js +1 -1
  280. package/es5/plugins/google-maps/google-maps.css +1 -1
  281. package/es5/plugins/google-maps/google-maps.js +1 -1
  282. package/es5/plugins/google-maps/google-maps.min.js +1 -1
  283. package/es5/plugins/google-search/google-search.js +1 -1
  284. package/es5/plugins/google-search/google-search.min.js +1 -1
  285. package/es5/plugins/highlight-signature/highlight-signature.js +1 -1
  286. package/es5/plugins/highlight-signature/highlight-signature.min.js +1 -1
  287. package/es5/plugins/iframe-editor/iframe-editor.css +1 -1
  288. package/es5/plugins/iframe-editor/iframe-editor.js +1 -1
  289. package/es5/plugins/iframe-editor/iframe-editor.min.js +1 -1
  290. package/es5/plugins/image-editor-pro/image-editor-pro.css +1 -1
  291. package/es5/plugins/image-editor-pro/image-editor-pro.js +1 -1
  292. package/es5/plugins/image-editor-pro/image-editor-pro.min.js +1 -1
  293. package/es5/plugins/keyboard/keyboard.css +1 -1
  294. package/es5/plugins/keyboard/keyboard.js +1 -1
  295. package/es5/plugins/keyboard/keyboard.min.js +1 -1
  296. package/es5/plugins/mobile-view/mobile-view.js +1 -1
  297. package/es5/plugins/mobile-view/mobile-view.min.js +1 -1
  298. package/es5/plugins/page-break/page-break.js +1 -1
  299. package/es5/plugins/page-break/page-break.min.js +1 -1
  300. package/es5/plugins/paste-code/paste-code.css +1 -1
  301. package/es5/plugins/paste-code/paste-code.js +1 -1
  302. package/es5/plugins/paste-code/paste-code.min.js +1 -1
  303. package/es5/plugins/paste-from-word/paste-from-word.js +1 -1
  304. package/es5/plugins/paste-from-word/paste-from-word.min.js +1 -1
  305. package/es5/plugins/show-blocks/show-blocks.js +1 -1
  306. package/es5/plugins/show-blocks/show-blocks.min.js +1 -1
  307. package/es5/plugins/style/style.css +1 -1
  308. package/es5/plugins/style/style.js +1 -1
  309. package/es5/plugins/style/style.min.js +1 -1
  310. package/es5/plugins/templates/templates.css +1 -1
  311. package/es5/plugins/templates/templates.js +1 -1
  312. package/es5/plugins/templates/templates.min.js +1 -1
  313. package/es5/plugins/todo-list/todo-list.css +1 -1
  314. package/es5/plugins/todo-list/todo-list.js +1 -1
  315. package/es5/plugins/todo-list/todo-list.min.js +1 -1
  316. package/es5/plugins/translate/translate.css +1 -1
  317. package/es5/plugins/translate/translate.js +1 -1
  318. package/es5/plugins/translate/translate.min.js +1 -1
  319. package/es5/plugins/tune-block/tune-block.css +1 -1
  320. package/es5/plugins/tune-block/tune-block.js +1 -1
  321. package/es5/plugins/tune-block/tune-block.min.js +1 -1
  322. package/es5/polyfills.fat.min.js +1 -1
  323. package/es5/polyfills.js +1 -1
  324. package/es5/polyfills.min.js +1 -1
  325. package/package.json +1 -1
package/es5/jodit.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /*!
2
2
  * jodit-pro - PRO Version of Jodit Editor
3
3
  * Author: Chupurnov Valerii <chupurnov@gmail.com>
4
- * Version: v4.17.8
4
+ * Version: v4.18.1
5
5
  * Url: https://xdsoft.net/jodit/pro/
6
6
  * License(s): SEE LICENSE IN LICENSE.md
7
7
  */
@@ -745,18 +745,43 @@ var ConfigPrototype = {};
745
745
  /**
746
746
  * Class names to align images with, instead of an inline `float` or
747
747
  * `margin`. Aligning an image removes every class listed here and adds the
748
- * chosen alignment's, which can be several separated by spaces.
748
+ * chosen alignment's, which can be several separated by spaces. An
749
+ * alignment can also list several such sets, to recognise each of them;
750
+ * aligning writes the first. `alignClasses.img` takes its place when set.
749
751
  *
750
752
  * ```javascript
751
753
  * Jodit.make('#editor', {
752
754
  * imageAlignClasses: {
753
755
  * left: 'align-left',
754
756
  * right: 'align-right',
755
- * center: 'align-center'
757
+ * center: ['align-center', 'centered']
756
758
  * }
757
759
  * });
758
760
  * ```
759
761
  */ this.imageAlignClasses = null;
762
+ /**
763
+ * Class names to align elements with, by tag name, as `imageAlignClasses`
764
+ * does for images: `img`, and `video`, `audio` and `iframe` in the media
765
+ * popup. A media wrapper (see `mediaWrappers`), and Jodit's own `jodit` and
766
+ * `jodit-media` wrappers, are aligned with the classes for the media in
767
+ * them.
768
+ *
769
+ * ```javascript
770
+ * const media = {
771
+ * left: 'media-left',
772
+ * right: 'media-right',
773
+ * center: 'media-center'
774
+ * };
775
+ *
776
+ * Jodit.make('#editor', {
777
+ * alignClasses: { video: media, iframe: media }
778
+ * });
779
+ * ```
780
+ */ this.alignClasses = {};
781
+ /**
782
+ * Alignment given to the media the video popup inserts. `'normal'` leaves
783
+ * them unaligned
784
+ */ this.mediaDefaultAlign = 'normal';
760
785
  /**
761
786
  * Do not display these buttons that are on the list
762
787
  *
@@ -2308,7 +2333,7 @@ function _unsupported_iterable_to_array(o, minLen) {
2308
2333
  if (n === "Map" || n === "Set") return Array.from(n);
2309
2334
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
2310
2335
  }
2311
- var APP_VERSION = "4.17.8";
2336
+ var APP_VERSION = "4.18.1";
2312
2337
  // prettier-ignore
2313
2338
  var ES = "es5";
2314
2339
  var IS_ES_MODERN = false;
@@ -8129,6 +8154,7 @@ __webpack_require__.r(__webpack_exports__);
8129
8154
  /* harmony export */ completeUrl: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.completeUrl; },
8130
8155
  /* harmony export */ connection: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.connection; },
8131
8156
  /* harmony export */ convertMediaUrlToVideoEmbed: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.convertMediaUrlToVideoEmbed; },
8157
+ /* harmony export */ createMediaWrapper: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.createMediaWrapper; },
8132
8158
  /* harmony export */ css: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.css; },
8133
8159
  /* harmony export */ cssInline: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.cssInline; },
8134
8160
  /* harmony export */ cssPath: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.cssPath; },
@@ -8139,13 +8165,16 @@ __webpack_require__.r(__webpack_exports__);
8139
8165
  /* harmony export */ fastClone: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.fastClone; },
8140
8166
  /* harmony export */ fuzzySearchIndex: function() { return /* reexport safe */ _string_index_js__WEBPACK_IMPORTED_MODULE_7__.fuzzySearchIndex; },
8141
8167
  /* harmony export */ get: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.get; },
8168
+ /* harmony export */ getAlignClasses: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.getAlignClasses; },
8142
8169
  /* harmony export */ getClassName: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.getClassName; },
8143
8170
  /* harmony export */ getContentWidth: function() { return /* reexport safe */ _size_index_js__WEBPACK_IMPORTED_MODULE_6__.getContentWidth; },
8144
8171
  /* harmony export */ getDataTransfer: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.getDataTransfer; },
8145
8172
  /* harmony export */ getFixedPositionOffset: function() { return /* reexport safe */ _size_index_js__WEBPACK_IMPORTED_MODULE_6__.getFixedPositionOffset; },
8146
8173
  /* harmony export */ getHAlign: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.getHAlign; },
8174
+ /* harmony export */ getMediaWrapper: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.getMediaWrapper; },
8147
8175
  /* harmony export */ getPropertyDescriptor: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.getPropertyDescriptor; },
8148
8176
  /* harmony export */ getScrollParent: function() { return /* reexport safe */ _size_index_js__WEBPACK_IMPORTED_MODULE_6__.getScrollParent; },
8177
+ /* harmony export */ getWrappedMedia: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.getWrappedMedia; },
8149
8178
  /* harmony export */ getXPathByElement: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.getXPathByElement; },
8150
8179
  /* harmony export */ hAlignElement: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.hAlignElement; },
8151
8180
  /* harmony export */ hasBrowserColorPicker: function() { return /* reexport safe */ _checker_index_js__WEBPACK_IMPORTED_MODULE_2__.hasBrowserColorPicker; },
@@ -8226,7 +8255,8 @@ __webpack_require__.r(__webpack_exports__);
8226
8255
  /* harmony export */ trim: function() { return /* reexport safe */ _string_index_js__WEBPACK_IMPORTED_MODULE_7__.trim; },
8227
8256
  /* harmony export */ trimChars: function() { return /* reexport safe */ _string_index_js__WEBPACK_IMPORTED_MODULE_7__.trimChars; },
8228
8257
  /* harmony export */ trimInv: function() { return /* reexport safe */ _string_index_js__WEBPACK_IMPORTED_MODULE_7__.trimInv; },
8229
- /* harmony export */ ucfirst: function() { return /* reexport safe */ _string_index_js__WEBPACK_IMPORTED_MODULE_7__.ucfirst; }
8258
+ /* harmony export */ ucfirst: function() { return /* reexport safe */ _string_index_js__WEBPACK_IMPORTED_MODULE_7__.ucfirst; },
8259
+ /* harmony export */ wrapMedia: function() { return /* reexport safe */ _utils_index_js__WEBPACK_IMPORTED_MODULE_8__.wrapMedia; }
8230
8260
  /* harmony export */ });
8231
8261
  /* harmony import */ var _array_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(76855);
8232
8262
  /* harmony import */ var _async_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(91898);
@@ -9248,12 +9278,15 @@ function trimChars(value, chars) {
9248
9278
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
9249
9279
  /* harmony export */ alignElement: function() { return /* binding */ alignElement; },
9250
9280
  /* harmony export */ clearAlign: function() { return /* binding */ clearAlign; },
9281
+ /* harmony export */ getAlignClasses: function() { return /* binding */ getAlignClasses; },
9251
9282
  /* harmony export */ getHAlign: function() { return /* binding */ getHAlign; },
9252
9283
  /* harmony export */ hAlignElement: function() { return /* binding */ hAlignElement; }
9253
9284
  /* harmony export */ });
9254
9285
  /* harmony import */ var _dom_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22732);
9255
- /* harmony import */ var _attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
9256
- /* harmony import */ var _css_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41180);
9286
+ /* harmony import */ var _checker_is_array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(68345);
9287
+ /* harmony import */ var _attr_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(29960);
9288
+ /* harmony import */ var _css_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(41180);
9289
+ /* harmony import */ var _media_wrapper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(61477);
9257
9290
  function _array_like_to_array(arr, len) {
9258
9291
  if (len == null || len > arr.length) len = arr.length;
9259
9292
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -9288,37 +9321,65 @@ function _unsupported_iterable_to_array(o, minLen) {
9288
9321
  */ ;
9289
9322
 
9290
9323
 
9291
- var classNames = function classNames(value) {
9292
- return (value !== null && value !== void 0 ? value : '').split(/\s+/).filter(Boolean);
9324
+
9325
+
9326
+ // The sets of class names an alignment lists, the first being the one to write
9327
+ var classSets = function classSets(value) {
9328
+ return ((0,_checker_is_array_js__WEBPACK_IMPORTED_MODULE_1__.isArray)(value) ? value : [
9329
+ value !== null && value !== void 0 ? value : ''
9330
+ ]).map(function(set) {
9331
+ return set.split(/\s+/).filter(Boolean);
9332
+ }).filter(function(set) {
9333
+ return set.length;
9334
+ });
9293
9335
  };
9294
9336
  /**
9295
- * Align image, with `classes` (see `imageAlignClasses`) instead of inline
9296
- * styles when they are given
9337
+ * The class names to align `elm` with: `alignClasses` for its tag, or for the
9338
+ * media in it when it wraps media (a `mediaWrappers` wrapper, `jodit` or
9339
+ * `jodit-media`), falling back to `imageAlignClasses` for an image
9340
+ */ function getAlignClasses(jodit, elm) {
9341
+ var _a, _b;
9342
+ if (!elm) {
9343
+ return null;
9344
+ }
9345
+ var media = _dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(elm, new Set([
9346
+ 'jodit',
9347
+ 'jodit-media'
9348
+ ])) ? elm.firstElementChild : (0,_media_wrapper_js__WEBPACK_IMPORTED_MODULE_4__.getWrappedMedia)(jodit, elm);
9349
+ var tag = (media !== null && media !== void 0 ? media : elm).nodeName.toLowerCase();
9350
+ return (_b = (_a = jodit.o.alignClasses) === null || _a === void 0 ? void 0 : _a[tag]) !== null && _b !== void 0 ? _b : tag === 'img' ? jodit.o.imageAlignClasses : null;
9351
+ }
9352
+ /**
9353
+ * Align image, with `classes` (see `alignClasses`) instead of inline styles
9354
+ * when they are given
9297
9355
  */ function hAlignElement(image, align, classes) {
9356
+ var _a;
9298
9357
  if (classes) {
9299
9358
  var _image_classList, _image_classList1;
9300
9359
  hAlignElement(image, 'normal');
9301
9360
  Object.values(classes).forEach(function(value) {
9302
- return (_image_classList = image.classList).remove.apply(_image_classList, _to_consumable_array(classNames(value)));
9361
+ return classSets(value).forEach(function(set) {
9362
+ return (_image_classList = image.classList).remove.apply(_image_classList, _to_consumable_array(set));
9363
+ });
9303
9364
  });
9304
- (_image_classList1 = image.classList).add.apply(_image_classList1, _to_consumable_array(classNames(classes[align || 'normal'])));
9365
+ (_image_classList1 = image.classList).add.apply(_image_classList1, _to_consumable_array((_a = classSets(classes[align || 'normal'])[0]) !== null && _a !== void 0 ? _a : []));
9305
9366
  [
9306
9367
  'class',
9307
9368
  'style'
9308
9369
  ].forEach(function(name) {
9309
9370
  var _a;
9310
- if (!((_a = (0,_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(image, name)) === null || _a === void 0 ? void 0 : _a.trim())) {
9311
- (0,_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(image, name, null);
9371
+ if (!((_a = (0,_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(image, name)) === null || _a === void 0 ? void 0 : _a.trim())) {
9372
+ (0,_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(image, name, null);
9312
9373
  }
9313
9374
  });
9314
9375
  return;
9315
9376
  }
9316
9377
  if (align && align !== 'normal') {
9317
9378
  if (align !== 'center') {
9318
- (0,_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(image, 'float', align);
9319
- (0,_css_js__WEBPACK_IMPORTED_MODULE_2__.clearCenterAlign)(image);
9379
+ (0,_css_js__WEBPACK_IMPORTED_MODULE_3__.css)(image, 'float', align);
9380
+ (0,_css_js__WEBPACK_IMPORTED_MODULE_3__.clearCenterAlign)(image);
9320
9381
  } else {
9321
- (0,_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(image, {
9382
+ (0,_css_js__WEBPACK_IMPORTED_MODULE_3__.css)(image, {
9322
9383
  float: '',
9323
9384
  display: 'block',
9324
9385
  marginLeft: 'auto',
@@ -9326,13 +9387,13 @@ var classNames = function classNames(value) {
9326
9387
  });
9327
9388
  }
9328
9389
  } else {
9329
- if ((0,_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(image, 'float') && [
9390
+ if ((0,_css_js__WEBPACK_IMPORTED_MODULE_3__.css)(image, 'float') && [
9330
9391
  'right',
9331
9392
  'left'
9332
- ].indexOf((0,_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(image, 'float').toString().toLowerCase()) !== -1) {
9333
- (0,_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(image, 'float', '');
9393
+ ].indexOf((0,_css_js__WEBPACK_IMPORTED_MODULE_3__.css)(image, 'float').toString().toLowerCase()) !== -1) {
9394
+ (0,_css_js__WEBPACK_IMPORTED_MODULE_3__.css)(image, 'float', '');
9334
9395
  }
9335
- ;(0,_css_js__WEBPACK_IMPORTED_MODULE_2__.clearCenterAlign)(image);
9396
+ ;(0,_css_js__WEBPACK_IMPORTED_MODULE_3__.clearCenterAlign)(image);
9336
9397
  }
9337
9398
  }
9338
9399
  /**
@@ -9346,19 +9407,20 @@ var classNames = function classNames(value) {
9346
9407
  'normal'
9347
9408
  ]; _i < _iter.length; _i++){
9348
9409
  var align = _iter[_i];
9349
- var names = classNames(classes[align]);
9350
- if (names.length && names.every(function(name) {
9351
- return elm.classList.contains(name);
9410
+ if (classSets(classes[align]).some(function(set) {
9411
+ return set.every(function(name) {
9412
+ return elm.classList.contains(name);
9413
+ });
9352
9414
  })) {
9353
9415
  return align;
9354
9416
  }
9355
9417
  }
9356
9418
  }
9357
- var float = (0,_css_js__WEBPACK_IMPORTED_MODULE_2__.cssInline)(elm, 'float').toLowerCase();
9419
+ var float = (0,_css_js__WEBPACK_IMPORTED_MODULE_3__.cssInline)(elm, 'float').toLowerCase();
9358
9420
  if (float === 'left' || float === 'right') {
9359
9421
  return float;
9360
9422
  }
9361
- if ((0,_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(elm, 'display') === 'block' && (0,_css_js__WEBPACK_IMPORTED_MODULE_2__.cssInline)(elm, 'margin-left') === 'auto' && (0,_css_js__WEBPACK_IMPORTED_MODULE_2__.cssInline)(elm, 'margin-right') === 'auto') {
9423
+ if ((0,_css_js__WEBPACK_IMPORTED_MODULE_3__.css)(elm, 'display') === 'block' && (0,_css_js__WEBPACK_IMPORTED_MODULE_3__.cssInline)(elm, 'margin-left') === 'auto' && (0,_css_js__WEBPACK_IMPORTED_MODULE_3__.cssInline)(elm, 'margin-right') === 'auto') {
9362
9424
  return 'center';
9363
9425
  }
9364
9426
  return 'normal';
@@ -9368,10 +9430,10 @@ var classNames = function classNames(value) {
9368
9430
  */ function clearAlign(node) {
9369
9431
  _dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.each(node, function(elm) {
9370
9432
  if (_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isHTMLElement(elm)) {
9371
- if ((0,_css_js__WEBPACK_IMPORTED_MODULE_2__.cssInline)(elm, 'textAlign')) {
9372
- (0,_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(elm, 'textAlign', '');
9373
- if (!((0,_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'style') || '').trim().length) {
9374
- (0,_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(elm, 'style', null);
9433
+ if ((0,_css_js__WEBPACK_IMPORTED_MODULE_3__.cssInline)(elm, 'textAlign')) {
9434
+ (0,_css_js__WEBPACK_IMPORTED_MODULE_3__.css)(elm, 'textAlign', '');
9435
+ if (!((0,_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(elm, 'style') || '').trim().length) {
9436
+ (0,_attr_js__WEBPACK_IMPORTED_MODULE_2__.attr)(elm, 'style', null);
9375
9437
  }
9376
9438
  }
9377
9439
  }
@@ -9402,7 +9464,7 @@ function alignElement(command, box) {
9402
9464
  clearAlign(box);
9403
9465
  var align = ALIGN_BY_COMMAND.get(command.toLowerCase());
9404
9466
  if (align) {
9405
- (0,_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(box, 'textAlign', align);
9467
+ (0,_css_js__WEBPACK_IMPORTED_MODULE_3__.css)(box, 'textAlign', align);
9406
9468
  }
9407
9469
  }
9408
9470
  }
@@ -10829,13 +10891,13 @@ var getClassName = function getClassName(obj) {
10829
10891
  /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
10830
10892
 
10831
10893
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
10832
- /* harmony export */ $$: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_24__.$$; },
10894
+ /* harmony export */ $$: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_25__.$$; },
10833
10895
  /* harmony export */ ConfigDeepFlatten: function() { return /* reexport safe */ _config_proto_js__WEBPACK_IMPORTED_MODULE_7__.ConfigDeepFlatten; },
10834
10896
  /* harmony export */ ConfigFlatten: function() { return /* reexport safe */ _config_proto_js__WEBPACK_IMPORTED_MODULE_7__.ConfigFlatten; },
10835
10897
  /* harmony export */ ConfigMerge: function() { return /* reexport safe */ _config_proto_js__WEBPACK_IMPORTED_MODULE_7__.ConfigMerge; },
10836
10898
  /* harmony export */ ConfigProto: function() { return /* reexport safe */ _config_proto_js__WEBPACK_IMPORTED_MODULE_7__.ConfigProto; },
10837
10899
  /* harmony export */ ConnectionError: function() { return /* reexport safe */ _error_index_js__WEBPACK_IMPORTED_MODULE_13__.ConnectionError; },
10838
- /* harmony export */ LimitedStack: function() { return /* reexport safe */ _stack_js__WEBPACK_IMPORTED_MODULE_26__.LimitedStack; },
10900
+ /* harmony export */ LimitedStack: function() { return /* reexport safe */ _stack_js__WEBPACK_IMPORTED_MODULE_27__.LimitedStack; },
10839
10901
  /* harmony export */ OptionsError: function() { return /* reexport safe */ _error_index_js__WEBPACK_IMPORTED_MODULE_13__.OptionsError; },
10840
10902
  /* harmony export */ UNSAFE_PROTO_KEYS: function() { return /* reexport safe */ _is_unsafe_proto_key_js__WEBPACK_IMPORTED_MODULE_18__.UNSAFE_PROTO_KEYS; },
10841
10903
  /* harmony export */ abort: function() { return /* reexport safe */ _error_index_js__WEBPACK_IMPORTED_MODULE_13__.abort; },
@@ -10848,51 +10910,56 @@ var getClassName = function getClassName(obj) {
10848
10910
  /* harmony export */ attrRaw: function() { return /* reexport safe */ _attr_js__WEBPACK_IMPORTED_MODULE_3__.attrRaw; },
10849
10911
  /* harmony export */ browser: function() { return /* reexport safe */ _browser_js__WEBPACK_IMPORTED_MODULE_4__.browser; },
10850
10912
  /* harmony export */ buildQuery: function() { return /* reexport safe */ _build_query_js__WEBPACK_IMPORTED_MODULE_5__.buildQuery; },
10851
- /* harmony export */ call: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_27__.call; },
10852
- /* harmony export */ callPromise: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_27__.callPromise; },
10853
- /* harmony export */ callThis: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_27__.callThis; },
10913
+ /* harmony export */ call: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_28__.call; },
10914
+ /* harmony export */ callPromise: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_28__.callPromise; },
10915
+ /* harmony export */ callThis: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_28__.callThis; },
10854
10916
  /* harmony export */ clearAlign: function() { return /* reexport safe */ _align_js__WEBPACK_IMPORTED_MODULE_0__.clearAlign; },
10855
10917
  /* harmony export */ clearCenterAlign: function() { return /* reexport safe */ _css_js__WEBPACK_IMPORTED_MODULE_9__.clearCenterAlign; },
10856
10918
  /* harmony export */ cns: function() { return /* reexport safe */ _mark_deprecated_js__WEBPACK_IMPORTED_MODULE_19__.cns; },
10857
10919
  /* harmony export */ completeUrl: function() { return /* reexport safe */ _complete_url_js__WEBPACK_IMPORTED_MODULE_6__.completeUrl; },
10858
10920
  /* harmony export */ connection: function() { return /* reexport safe */ _error_index_js__WEBPACK_IMPORTED_MODULE_13__.connection; },
10859
10921
  /* harmony export */ convertMediaUrlToVideoEmbed: function() { return /* reexport safe */ _convert_media_url_to_video_embed_js__WEBPACK_IMPORTED_MODULE_8__.convertMediaUrlToVideoEmbed; },
10922
+ /* harmony export */ createMediaWrapper: function() { return /* reexport safe */ _media_wrapper_js__WEBPACK_IMPORTED_MODULE_20__.createMediaWrapper; },
10860
10923
  /* harmony export */ css: function() { return /* reexport safe */ _css_js__WEBPACK_IMPORTED_MODULE_9__.css; },
10861
10924
  /* harmony export */ cssInline: function() { return /* reexport safe */ _css_js__WEBPACK_IMPORTED_MODULE_9__.cssInline; },
10862
- /* harmony export */ cssPath: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_24__.cssPath; },
10925
+ /* harmony export */ cssPath: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_25__.cssPath; },
10863
10926
  /* harmony export */ ctrlKey: function() { return /* reexport safe */ _ctrl_key_js__WEBPACK_IMPORTED_MODULE_10__.ctrlKey; },
10864
10927
  /* harmony export */ dataBind: function() { return /* reexport safe */ _data_bind_js__WEBPACK_IMPORTED_MODULE_11__.dataBind; },
10865
10928
  /* harmony export */ defaultLanguage: function() { return /* reexport safe */ _default_language_js__WEBPACK_IMPORTED_MODULE_12__.defaultLanguage; },
10866
10929
  /* harmony export */ error: function() { return /* reexport safe */ _error_index_js__WEBPACK_IMPORTED_MODULE_13__.error; },
10867
10930
  /* harmony export */ fastClone: function() { return /* reexport safe */ _extend_js__WEBPACK_IMPORTED_MODULE_14__.fastClone; },
10868
10931
  /* harmony export */ get: function() { return /* reexport safe */ _get_js__WEBPACK_IMPORTED_MODULE_15__.get; },
10932
+ /* harmony export */ getAlignClasses: function() { return /* reexport safe */ _align_js__WEBPACK_IMPORTED_MODULE_0__.getAlignClasses; },
10869
10933
  /* harmony export */ getClassName: function() { return /* reexport safe */ _get_class_name_js__WEBPACK_IMPORTED_MODULE_16__.getClassName; },
10870
- /* harmony export */ getDataTransfer: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_27__.getDataTransfer; },
10934
+ /* harmony export */ getDataTransfer: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_28__.getDataTransfer; },
10871
10935
  /* harmony export */ getHAlign: function() { return /* reexport safe */ _align_js__WEBPACK_IMPORTED_MODULE_0__.getHAlign; },
10872
- /* harmony export */ getPropertyDescriptor: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_27__.getPropertyDescriptor; },
10873
- /* harmony export */ getXPathByElement: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_24__.getXPathByElement; },
10936
+ /* harmony export */ getMediaWrapper: function() { return /* reexport safe */ _media_wrapper_js__WEBPACK_IMPORTED_MODULE_20__.getMediaWrapper; },
10937
+ /* harmony export */ getPropertyDescriptor: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_28__.getPropertyDescriptor; },
10938
+ /* harmony export */ getWrappedMedia: function() { return /* reexport safe */ _media_wrapper_js__WEBPACK_IMPORTED_MODULE_20__.getWrappedMedia; },
10939
+ /* harmony export */ getXPathByElement: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_25__.getXPathByElement; },
10874
10940
  /* harmony export */ hAlignElement: function() { return /* reexport safe */ _align_js__WEBPACK_IMPORTED_MODULE_0__.hAlignElement; },
10875
10941
  /* harmony export */ humanSizeToBytes: function() { return /* reexport safe */ _human_size_to_bytes_js__WEBPACK_IMPORTED_MODULE_17__.humanSizeToBytes; },
10876
- /* harmony export */ inView: function() { return /* reexport safe */ _scroll_into_view_js__WEBPACK_IMPORTED_MODULE_23__.inView; },
10942
+ /* harmony export */ inView: function() { return /* reexport safe */ _scroll_into_view_js__WEBPACK_IMPORTED_MODULE_24__.inView; },
10877
10943
  /* harmony export */ isAtom: function() { return /* reexport safe */ _extend_js__WEBPACK_IMPORTED_MODULE_14__.isAtom; },
10878
10944
  /* harmony export */ isUnsafeProtoKey: function() { return /* reexport safe */ _is_unsafe_proto_key_js__WEBPACK_IMPORTED_MODULE_18__.isUnsafeProtoKey; },
10879
10945
  /* harmony export */ keepNames: function() { return /* reexport safe */ _get_class_name_js__WEBPACK_IMPORTED_MODULE_16__.keepNames; },
10880
- /* harmony export */ keys: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_27__.keys; },
10881
- /* harmony export */ loadImage: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_27__.loadImage; },
10946
+ /* harmony export */ keys: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_28__.keys; },
10947
+ /* harmony export */ loadImage: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_28__.loadImage; },
10882
10948
  /* harmony export */ loadNext: function() { return /* reexport safe */ _append_script_js__WEBPACK_IMPORTED_MODULE_1__.loadNext; },
10883
10949
  /* harmony export */ loadNextStyle: function() { return /* reexport safe */ _append_script_js__WEBPACK_IMPORTED_MODULE_1__.loadNextStyle; },
10884
10950
  /* harmony export */ markAsAtomic: function() { return /* reexport safe */ _extend_js__WEBPACK_IMPORTED_MODULE_14__.markAsAtomic; },
10885
10951
  /* harmony export */ markDeprecated: function() { return /* reexport safe */ _mark_deprecated_js__WEBPACK_IMPORTED_MODULE_19__.markDeprecated; },
10886
- /* harmony export */ markOwner: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_27__.markOwner; },
10887
- /* harmony export */ memorizeExec: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_27__.memorizeExec; },
10952
+ /* harmony export */ markOwner: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_28__.markOwner; },
10953
+ /* harmony export */ memorizeExec: function() { return /* reexport safe */ _utils_js__WEBPACK_IMPORTED_MODULE_28__.memorizeExec; },
10888
10954
  /* harmony export */ options: function() { return /* reexport safe */ _error_index_js__WEBPACK_IMPORTED_MODULE_13__.options; },
10889
- /* harmony export */ parseQuery: function() { return /* reexport safe */ _parse_query_js__WEBPACK_IMPORTED_MODULE_20__.parseQuery; },
10890
- /* harmony export */ previewBox: function() { return /* reexport safe */ _print_js__WEBPACK_IMPORTED_MODULE_21__.previewBox; },
10891
- /* harmony export */ refs: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_24__.refs; },
10892
- /* harmony export */ reset: function() { return /* reexport safe */ _reset_js__WEBPACK_IMPORTED_MODULE_22__.reset; },
10893
- /* harmony export */ resolveElement: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_24__.resolveElement; },
10894
- /* harmony export */ scrollIntoViewIfNeeded: function() { return /* reexport safe */ _scroll_into_view_js__WEBPACK_IMPORTED_MODULE_23__.scrollIntoViewIfNeeded; },
10895
- /* harmony export */ set: function() { return /* reexport safe */ _set_js__WEBPACK_IMPORTED_MODULE_25__.set; }
10955
+ /* harmony export */ parseQuery: function() { return /* reexport safe */ _parse_query_js__WEBPACK_IMPORTED_MODULE_21__.parseQuery; },
10956
+ /* harmony export */ previewBox: function() { return /* reexport safe */ _print_js__WEBPACK_IMPORTED_MODULE_22__.previewBox; },
10957
+ /* harmony export */ refs: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_25__.refs; },
10958
+ /* harmony export */ reset: function() { return /* reexport safe */ _reset_js__WEBPACK_IMPORTED_MODULE_23__.reset; },
10959
+ /* harmony export */ resolveElement: function() { return /* reexport safe */ _selector_js__WEBPACK_IMPORTED_MODULE_25__.resolveElement; },
10960
+ /* harmony export */ scrollIntoViewIfNeeded: function() { return /* reexport safe */ _scroll_into_view_js__WEBPACK_IMPORTED_MODULE_24__.scrollIntoViewIfNeeded; },
10961
+ /* harmony export */ set: function() { return /* reexport safe */ _set_js__WEBPACK_IMPORTED_MODULE_26__.set; },
10962
+ /* harmony export */ wrapMedia: function() { return /* reexport safe */ _media_wrapper_js__WEBPACK_IMPORTED_MODULE_20__.wrapMedia; }
10896
10963
  /* harmony export */ });
10897
10964
  /* harmony import */ var _align_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25726);
10898
10965
  /* harmony import */ var _append_script_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(63799);
@@ -10914,14 +10981,15 @@ var getClassName = function getClassName(obj) {
10914
10981
  /* harmony import */ var _human_size_to_bytes_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(38420);
10915
10982
  /* harmony import */ var _is_unsafe_proto_key_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(69175);
10916
10983
  /* harmony import */ var _mark_deprecated_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(95942);
10917
- /* harmony import */ var _parse_query_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(82501);
10918
- /* harmony import */ var _print_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(11628);
10919
- /* harmony import */ var _reset_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(58844);
10920
- /* harmony import */ var _scroll_into_view_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(26395);
10921
- /* harmony import */ var _selector_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(76078);
10922
- /* harmony import */ var _set_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(3703);
10923
- /* harmony import */ var _stack_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(50535);
10924
- /* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(37790);
10984
+ /* harmony import */ var _media_wrapper_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(61477);
10985
+ /* harmony import */ var _parse_query_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(82501);
10986
+ /* harmony import */ var _print_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(11628);
10987
+ /* harmony import */ var _reset_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(58844);
10988
+ /* harmony import */ var _scroll_into_view_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(26395);
10989
+ /* harmony import */ var _selector_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(76078);
10990
+ /* harmony import */ var _set_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(3703);
10991
+ /* harmony import */ var _stack_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(50535);
10992
+ /* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(37790);
10925
10993
  /*!
10926
10994
  * Jodit Editor (https://xdsoft.net/jodit/)
10927
10995
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -10956,6 +11024,7 @@ var getClassName = function getClassName(obj) {
10956
11024
 
10957
11025
 
10958
11026
 
11027
+
10959
11028
 
10960
11029
 
10961
11030
  /***/ }),
@@ -11054,6 +11123,143 @@ function _unsupported_iterable_to_array(o, minLen) {
11054
11123
  }
11055
11124
 
11056
11125
 
11126
+ /***/ }),
11127
+
11128
+ /***/ 61477:
11129
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
11130
+
11131
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
11132
+ /* harmony export */ createMediaWrapper: function() { return /* binding */ createMediaWrapper; },
11133
+ /* harmony export */ getMediaWrapper: function() { return /* binding */ getMediaWrapper; },
11134
+ /* harmony export */ getWrappedMedia: function() { return /* binding */ getWrappedMedia; },
11135
+ /* harmony export */ wrapMedia: function() { return /* binding */ wrapMedia; }
11136
+ /* harmony export */ });
11137
+ /* harmony import */ var _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2748);
11138
+ function _array_like_to_array(arr, len) {
11139
+ if (len == null || len > arr.length) len = arr.length;
11140
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
11141
+ return arr2;
11142
+ }
11143
+ function _array_with_holes(arr) {
11144
+ if (Array.isArray(arr)) return arr;
11145
+ }
11146
+ function _iterable_to_array_limit(arr, i) {
11147
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
11148
+ if (_i == null) return;
11149
+ var _arr = [];
11150
+ var _n = true;
11151
+ var _d = false;
11152
+ var _s, _e;
11153
+ try {
11154
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
11155
+ _arr.push(_s.value);
11156
+ if (i && _arr.length === i) break;
11157
+ }
11158
+ } catch (err) {
11159
+ _d = true;
11160
+ _e = err;
11161
+ } finally{
11162
+ try {
11163
+ if (!_n && _i["return"] != null) _i["return"]();
11164
+ } finally{
11165
+ if (_d) throw _e;
11166
+ }
11167
+ }
11168
+ return _arr;
11169
+ }
11170
+ function _non_iterable_rest() {
11171
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
11172
+ }
11173
+ function _sliced_to_array(arr, i) {
11174
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
11175
+ }
11176
+ function _unsupported_iterable_to_array(o, minLen) {
11177
+ if (!o) return;
11178
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
11179
+ var n = Object.prototype.toString.call(o).slice(8, -1);
11180
+ if (n === "Object" && o.constructor) n = o.constructor.name;
11181
+ if (n === "Map" || n === "Set") return Array.from(n);
11182
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
11183
+ }
11184
+ /*!
11185
+ * Jodit Editor (https://xdsoft.net/jodit/)
11186
+ * Released under MIT see LICENSE.txt in the project root for license information.
11187
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
11188
+ */ ;
11189
+ var isWrapper = function isWrapper(node, wrapper) {
11190
+ return _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isHTMLElement(node) && node.nodeName.toLowerCase() === wrapper.tag.toLowerCase() && node.classList.contains(wrapper.className);
11191
+ };
11192
+ /**
11193
+ * The media in `elm` when `elm` is a wrapper media keep in the content (see
11194
+ * `mediaWrappers`): an element of a type `elm` is the wrapper for
11195
+ */ function getWrappedMedia(jodit, elm) {
11196
+ var _a;
11197
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
11198
+ try {
11199
+ for(var _iterator = Object.entries((_a = jodit.o.mediaWrappers) !== null && _a !== void 0 ? _a : {})[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
11200
+ var _step_value = _sliced_to_array(_step.value, 2), tag = _step_value[0], wrapper = _step_value[1];
11201
+ if (isWrapper(elm, wrapper)) {
11202
+ var media = elm.querySelector(tag);
11203
+ if (media) {
11204
+ return media;
11205
+ }
11206
+ }
11207
+ }
11208
+ } catch (err) {
11209
+ _didIteratorError = true;
11210
+ _iteratorError = err;
11211
+ } finally{
11212
+ try {
11213
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
11214
+ _iterator.return();
11215
+ }
11216
+ } finally{
11217
+ if (_didIteratorError) {
11218
+ throw _iteratorError;
11219
+ }
11220
+ }
11221
+ }
11222
+ return null;
11223
+ }
11224
+ /**
11225
+ * The wrapper media keep in the content (see `mediaWrappers`) that is or
11226
+ * holds `node`
11227
+ */ function getMediaWrapper(jodit, node) {
11228
+ return _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(node, function(elm) {
11229
+ return Boolean(getWrappedMedia(jodit, elm));
11230
+ }, jodit.editor);
11231
+ }
11232
+ /**
11233
+ * An empty wrapper for media of type `tag` to keep in the content (see
11234
+ * `mediaWrappers`), or null when there is none for it
11235
+ */ function createMediaWrapper(jodit, tag) {
11236
+ var _a;
11237
+ var wrapper = (_a = jodit.o.mediaWrappers) === null || _a === void 0 ? void 0 : _a[tag.toLowerCase()];
11238
+ if (!wrapper) {
11239
+ return null;
11240
+ }
11241
+ return jodit.createInside.element(wrapper.tag, {
11242
+ class: wrapper.className,
11243
+ contenteditable: false,
11244
+ draggable: true
11245
+ });
11246
+ }
11247
+ /**
11248
+ * Puts `element` in the wrapper for its type (see `mediaWrappers`), and
11249
+ * returns the wrapper, or `element` when there is none for it
11250
+ */ function wrapMedia(jodit, element) {
11251
+ var wrapper = createMediaWrapper(jodit, element.nodeName);
11252
+ if (!wrapper) {
11253
+ return element;
11254
+ }
11255
+ if (element.parentNode) {
11256
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.before(element, wrapper);
11257
+ }
11258
+ _dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.append(wrapper, element);
11259
+ return wrapper;
11260
+ }
11261
+
11262
+
11057
11263
  /***/ }),
11058
11264
 
11059
11265
  /***/ 82501:
@@ -14904,9 +15110,9 @@ var Selection = /*#__PURE__*/ function() {
14904
15110
  if (styles && (typeof styles === "undefined" ? "undefined" : _type_of(styles)) === 'object') {
14905
15111
  (0,_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.css)(image, styles);
14906
15112
  }
14907
- var _this_j_o = this.j.o, imageDefaultAlign = _this_j_o.imageDefaultAlign, imageAlignClasses = _this_j_o.imageAlignClasses;
15113
+ var imageDefaultAlign = this.j.o.imageDefaultAlign;
14908
15114
  if (imageDefaultAlign && imageDefaultAlign !== 'normal') {
14909
- (0,_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_5__.hAlignElement)(image, imageDefaultAlign, imageAlignClasses);
15115
+ (0,_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_5__.hAlignElement)(image, imageDefaultAlign, (0,_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_5__.getAlignClasses)(this.j, image));
14910
15116
  }
14911
15117
  var onload = function onload1() {
14912
15118
  if (image.naturalHeight < image.offsetHeight || image.naturalWidth < image.offsetWidth) {
@@ -41476,6 +41682,7 @@ var INPUT_TAGS = new Set([
41476
41682
  'textarea',
41477
41683
  'select'
41478
41684
  ]);
41685
+ var TYPE_AHEAD_TIMEOUT = 1000;
41479
41686
  var FOCUSABLE_SELECTOR = [
41480
41687
  'button:not([disabled])',
41481
41688
  'a[href]',
@@ -41501,6 +41708,9 @@ var ToolbarButton = /*#__PURE__*/ function(UIButton) {
41501
41708
  currentValue: '',
41502
41709
  hasTrigger: false
41503
41710
  });
41711
+ _this.__typed = '';
41712
+ _this.__typedAt = 0;
41713
+ _this.__typedTo = null;
41504
41714
  _this.openedPopup = null;
41505
41715
  var button = _this.getElm('button');
41506
41716
  (0,_core_helpers_utils_assert_js__WEBPACK_IMPORTED_MODULE_14__.assert)(button, 'Element button should exists');
@@ -41852,7 +42062,9 @@ var ToolbarButton = /*#__PURE__*/ function(UIButton) {
41852
42062
  items[(index + 1) % items.length].focus();
41853
42063
  break;
41854
42064
  default:
41855
- return;
42065
+ if (!this.control.list || !this.__typeAhead(e.key, items, index)) {
42066
+ return;
42067
+ }
41856
42068
  }
41857
42069
  e.preventDefault();
41858
42070
  e.stopPropagation();
@@ -41860,6 +42072,57 @@ var ToolbarButton = /*#__PURE__*/ function(UIButton) {
41860
42072
  },
41861
42073
  {
41862
42074
  /**
42075
+ * The mouse opens a dropdown without taking the focus out of the editor.
42076
+ * While a dropdown list is open, typing there searches the list, as in an
42077
+ * open `<select>`, instead of writing into the content
42078
+ */ key: "__onEditorKeyDown",
42079
+ value: function __onEditorKeyDown(e) {
42080
+ if (!this.openedPopup || !this.control.list || e.altKey || e.ctrlKey || e.metaKey || !this.__typeAhead(e.key, this.__popupFocusables(), -1)) {
42081
+ return;
42082
+ }
42083
+ e.preventDefault();
42084
+ return false;
42085
+ }
42086
+ },
42087
+ {
42088
+ /**
42089
+ * Typing in a dropdown list focuses the next item whose label starts with
42090
+ * the typed text, whatever their case and accents, and repeating one letter
42091
+ * cycles through the items that start with it, like the WAI-ARIA menu
42092
+ * pattern's type-ahead. The typed text starts again after a pause, or once
42093
+ * the focus has moved on
42094
+ */ key: "__typeAhead",
42095
+ value: function __typeAhead(key, items, index) {
42096
+ var _a, _b;
42097
+ var now = Date.now();
42098
+ if (now - this.__typedAt > TYPE_AHEAD_TIMEOUT || items[index] !== this.__typedTo) {
42099
+ this.__typed = '';
42100
+ }
42101
+ if (key.length !== 1 || key === ' ' && !this.__typed) {
42102
+ return false;
42103
+ }
42104
+ this.__typedAt = now;
42105
+ this.__typed += key;
42106
+ this.__typedTo = items[index];
42107
+ var compare = new Intl.Collator(undefined, {
42108
+ usage: 'search',
42109
+ sensitivity: 'base'
42110
+ }).compare, typed = this.__typed, cycle = Array.from(typed).every(function(char) {
42111
+ return compare(char, typed[0]) === 0;
42112
+ }), prefix = cycle ? typed[0] : typed, start = cycle ? index + 1 : Math.max(index, 0);
42113
+ for(var i = 0; i < items.length; i += 1){
42114
+ var item = items[(start + i) % items.length], label = (_b = (_a = item.textContent) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : '';
42115
+ if (compare(label.slice(0, prefix.length), prefix) === 0) {
42116
+ item.focus();
42117
+ this.__typedTo = item;
42118
+ break;
42119
+ }
42120
+ }
42121
+ return true;
42122
+ }
42123
+ },
42124
+ {
42125
+ /**
41863
42126
  * Visible controls of the opened dropdown that can take the focus
41864
42127
  */ key: "__popupFocusables",
41865
42128
  value: function __popupFocusables() {
@@ -41878,14 +42141,18 @@ var ToolbarButton = /*#__PURE__*/ function(UIButton) {
41878
42141
  */ key: "__openControlList",
41879
42142
  value: function __openControlList(control) {
41880
42143
  var _this = this;
41881
- var _a;
42144
+ var _a, _b, _c, _d, _e;
41882
42145
  var controls = (_a = this.jodit.options.controls) !== null && _a !== void 0 ? _a : {}, getControl = function getControl(key) {
41883
42146
  return (0,_core_ui_helpers_get_control_type_js__WEBPACK_IMPORTED_MODULE_18__.findControlType)(key, controls);
41884
42147
  };
41885
42148
  var list = control.list;
41886
42149
  var menu = this.openPopup();
41887
- var toolbar = (0,_factory_js__WEBPACK_IMPORTED_MODULE_21__.makeCollection)(this.j);
41888
42150
  menu.parentElement = this;
42151
+ var content = (_b = control.popup) === null || _b === void 0 ? void 0 : _b.call(control, this.j, (_e = (_d = (_c = this.toolbar) === null || _c === void 0 ? void 0 : _c.getTarget(this)) !== null && _d !== void 0 ? _d : this.target) !== null && _e !== void 0 ? _e : null, this.__closePopup, this);
42152
+ if (content) {
42153
+ return this.__openMenu(menu, content);
42154
+ }
42155
+ var toolbar = (0,_factory_js__WEBPACK_IMPORTED_MODULE_21__.makeCollection)(this.j);
41889
42156
  toolbar.parentElement = menu;
41890
42157
  toolbar.mode = 'vertical';
41891
42158
  var isListItem = function isListItem(key) {
@@ -41937,7 +42204,14 @@ var ToolbarButton = /*#__PURE__*/ function(UIButton) {
41937
42204
  toolbar.build((0,_core_helpers_checker_is_array_js__WEBPACK_IMPORTED_MODULE_7__.isArray)(list) ? list.map(getButton) : (0,_core_helpers_utils_utils_js__WEBPACK_IMPORTED_MODULE_16__.keys)(list, false).map(function(key) {
41938
42205
  return getButton(key, list[key]);
41939
42206
  }), this.target);
41940
- menu.setContent(toolbar).open(function() {
42207
+ this.__openMenu(menu, toolbar);
42208
+ }
42209
+ },
42210
+ {
42211
+ key: "__openMenu",
42212
+ value: function __openMenu(menu, content) {
42213
+ var _this = this;
42214
+ menu.setContent(content).open(function() {
41941
42215
  return (0,_core_helpers_size_index_js__WEBPACK_IMPORTED_MODULE_12__.position)(_this.container);
41942
42216
  }, false, this.j.o.allowTabNavigation ? this.container : undefined);
41943
42217
  this.state.activated = true;
@@ -41959,7 +42233,7 @@ var ToolbarButton = /*#__PURE__*/ function(UIButton) {
41959
42233
  value: function openPopup() {
41960
42234
  this.__closePopup();
41961
42235
  this.openedPopup = new _core_ui_popup_popup_js__WEBPACK_IMPORTED_MODULE_20__.Popup(this.j, false);
41962
- this.j.e.on(this.ow, 'mousedown touchstart', this.onOutsideClick).on('escape closeAllPopups', this.onOutsideClick).on(this.openedPopup.container, 'keydown', this.__onPopupKeyDown);
42236
+ this.j.e.on(this.ow, 'mousedown touchstart', this.onOutsideClick).on('escape closeAllPopups', this.onOutsideClick).on('keydown', this.__onEditorKeyDown).on(this.openedPopup.container, 'keydown', this.__onPopupKeyDown);
41963
42237
  return this.openedPopup;
41964
42238
  }
41965
42239
  },
@@ -41977,7 +42251,7 @@ var ToolbarButton = /*#__PURE__*/ function(UIButton) {
41977
42251
  // popup while the outer `removeChild` is still running and Chrome
41978
42252
  // throws NotFoundError. See #1458
41979
42253
  this.openedPopup = null;
41980
- this.j.e.off(this.ow, 'mousedown touchstart', this.onOutsideClick).off('escape closeAllPopups', this.onOutsideClick);
42254
+ this.j.e.off(this.ow, 'mousedown touchstart', this.onOutsideClick).off('escape closeAllPopups', this.onOutsideClick).off('keydown', this.__onEditorKeyDown);
41981
42255
  // The keyboard brought the focus into the dropdown: give it back to
41982
42256
  // the button, otherwise it would fall out to the document
41983
42257
  var activeElement = this.od.activeElement, hadFocus = activeElement && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_6__.Dom.isOrContains(popup.container, activeElement);
@@ -42062,6 +42336,9 @@ __decorate([
42062
42336
  __decorate([
42063
42337
  _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_2__.autobind
42064
42338
  ], ToolbarButton.prototype, "__onPopupKeyDown", null);
42339
+ __decorate([
42340
+ _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_2__.autobind
42341
+ ], ToolbarButton.prototype, "__onEditorKeyDown", null);
42065
42342
  __decorate([
42066
42343
  _core_decorators_autobind_autobind_js__WEBPACK_IMPORTED_MODULE_2__.autobind
42067
42344
  ], ToolbarButton.prototype, "onOutsideClick", null);
@@ -51220,7 +51497,12 @@ var brBoxes = new Set([
51220
51497
  if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.findNotEmptySibling(br, false)) {
51221
51498
  return;
51222
51499
  }
51223
- jodit.s.setCursorBefore(br);
51500
+ // After a block is inserted the caret is already at the end of its
51501
+ // text; moving it before the `<br>` would put it on a line of its own
51502
+ // below the block (#1315)
51503
+ if (!_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isOrContains(node, jodit.s.range.startContainer)) {
51504
+ jodit.s.setCursorBefore(br);
51505
+ }
51224
51506
  _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.safeRemove(br);
51225
51507
  }
51226
51508
  }
@@ -51254,13 +51536,22 @@ var brBoxes = new Set([
51254
51536
  var current = (_b = (_a = jodit.s.current()) === null || _a === void 0 ? void 0 : _a.parentElement) !== null && _b !== void 0 ? _b : null;
51255
51537
  while(current && current !== jodit.editor){
51256
51538
  if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock(current)) {
51257
- if (jodit.o.dtd.blockLimits[current.nodeName.toLowerCase()]) {
51539
+ // In DIV mode the caret's own empty block is a line, like
51540
+ // `<p><br></p>`, not a container to insert into (#1315)
51541
+ var isEmptyLine = !parent && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(current, jodit.o.enter) && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(current);
51542
+ if (jodit.o.dtd.blockLimits[current.nodeName.toLowerCase()] && !isEmptyLine) {
51258
51543
  break;
51259
51544
  }
51260
51545
  parent = current;
51261
51546
  }
51262
51547
  current = current.parentElement;
51263
51548
  }
51549
+ // A list that is all of the inserted content adds its items to the
51550
+ // list of the item it goes into, as the browsers' own paste does
51551
+ if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isLeaf(current) && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isList(node) && _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isFragment(node.parentNode) && !_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.findNotEmptySibling(node, false)) {
51552
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.unwrap(node);
51553
+ parent = current;
51554
+ }
51264
51555
  if (parent) {
51265
51556
  jodit.s.setCursorAfter(parent);
51266
51557
  if (_core_dom_dom_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isEmpty(parent)) {
@@ -51311,10 +51602,12 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.dtd = {
51311
51602
  audio: 1,
51312
51603
  body: 1,
51313
51604
  caption: 1,
51605
+ dd: 1,
51314
51606
  details: 1,
51315
51607
  dir: 1,
51316
51608
  div: 1,
51317
51609
  dl: 1,
51610
+ dt: 1,
51318
51611
  fieldset: 1,
51319
51612
  figcaption: 1,
51320
51613
  figure: 1,
@@ -51322,6 +51615,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.dtd = {
51322
51615
  form: 1,
51323
51616
  header: 1,
51324
51617
  hgroup: 1,
51618
+ li: 1,
51325
51619
  main: 1,
51326
51620
  menu: 1,
51327
51621
  nav: 1,
@@ -52372,12 +52666,14 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_1__.pluginSystem.add('focus', focus);
52372
52666
  /***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) {
52373
52667
 
52374
52668
  /* harmony import */ var _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(22732);
52375
- /* harmony import */ var _core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(49055);
52376
- /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41180);
52377
- /* harmony import */ var _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12153);
52378
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(6441);
52379
- /* harmony import */ var _icons_font_svg_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(4104);
52380
- /* harmony import */ var _icons_fontsize_svg_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(83709);
52669
+ /* harmony import */ var _core_helpers_checker_is_array_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(68345);
52670
+ /* harmony import */ var _core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(49055);
52671
+ /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(41180);
52672
+ /* harmony import */ var _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(12153);
52673
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(6441);
52674
+ /* harmony import */ var _icons_font_svg_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(4104);
52675
+ /* harmony import */ var _icons_fontsize_svg_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(83709);
52676
+ /* harmony import */ var _font_picker_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(40222);
52381
52677
  function _array_like_to_array(arr, len) {
52382
52678
  if (len == null || len > arr.length) len = arr.length;
52383
52679
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -52484,11 +52780,18 @@ function _unsupported_iterable_to_array(o, minLen) {
52484
52780
 
52485
52781
 
52486
52782
 
52783
+
52784
+
52487
52785
  /**
52488
52786
  * Default font-size points
52489
- */ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.defaultFontSizePoints = 'px';
52490
- _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_3__.Icon.set('font', _icons_font_svg_js__WEBPACK_IMPORTED_MODULE_5__["default"]).set('fontsize', _icons_fontsize_svg_js__WEBPACK_IMPORTED_MODULE_6__["default"]);
52491
- _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.fontsize = {
52787
+ */ _config_js__WEBPACK_IMPORTED_MODULE_5__.Config.prototype.defaultFontSizePoints = 'px';
52788
+ _config_js__WEBPACK_IMPORTED_MODULE_5__.Config.prototype.font = {
52789
+ googleFonts: {
52790
+ url: ''
52791
+ }
52792
+ };
52793
+ _core_ui_icon_js__WEBPACK_IMPORTED_MODULE_4__.Icon.set('font', _icons_font_svg_js__WEBPACK_IMPORTED_MODULE_6__["default"]).set('fontsize', _icons_fontsize_svg_js__WEBPACK_IMPORTED_MODULE_7__["default"]);
52794
+ _config_js__WEBPACK_IMPORTED_MODULE_5__.Config.prototype.controls.fontsize = {
52492
52795
  command: 'fontsize',
52493
52796
  data: {
52494
52797
  cssRule: 'font-size',
@@ -52534,7 +52837,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.fontsize = {
52534
52837
  }
52535
52838
  var control = button.control;
52536
52839
  var cssKey = ((_a = control.data) === null || _a === void 0 ? void 0 : _a.cssRule) || 'font-size';
52537
- var value = (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(box, cssKey);
52840
+ var value = (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_3__.css)(box, cssKey);
52538
52841
  if (cssKey === 'font-size') {
52539
52842
  var numValue = parseFloat(value.toString());
52540
52843
  if (editor.o.defaultFontSizePoints === 'pt') {
@@ -52570,11 +52873,12 @@ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.fontsize = {
52570
52873
  return keySet.has(normalize(value.toString()));
52571
52874
  }
52572
52875
  };
52573
- _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = _object_spread_props(_object_spread({}, _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.fontsize), {
52876
+ var hadSelection = new WeakSet();
52877
+ _config_js__WEBPACK_IMPORTED_MODULE_5__.Config.prototype.controls.font = _object_spread_props(_object_spread({}, _config_js__WEBPACK_IMPORTED_MODULE_5__.Config.prototype.controls.fontsize), {
52574
52878
  command: 'fontname',
52575
52879
  textTemplate: function textTemplate(j, value) {
52576
52880
  var _value_split = _sliced_to_array(value.split(','), 1), first = _value_split[0];
52577
- return (0,_core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_1__.trimChars)(first, '"\'');
52881
+ return (0,_core_helpers_string_trim_js__WEBPACK_IMPORTED_MODULE_2__.trimChars)(first, '"\'');
52578
52882
  },
52579
52883
  list: {
52580
52884
  '': 'Default',
@@ -52596,6 +52900,9 @@ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = _object
52596
52900
  } catch (_a) {}
52597
52901
  return '<span data-style="'.concat(key, '" style="').concat(isAvailable ? "font-family: ".concat(key, "!important;") : '', '">').concat(value, "</span>");
52598
52902
  },
52903
+ popup: function popup(editor, current, close, button) {
52904
+ return editor.o.font.googleFonts.url ? new _font_picker_js__WEBPACK_IMPORTED_MODULE_8__.UIFontPicker(editor, button, close) : false;
52905
+ },
52599
52906
  data: {
52600
52907
  cssRule: 'font-family',
52601
52908
  normalize: function normalize(v) {
@@ -52604,19 +52911,19 @@ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = _object
52604
52911
  },
52605
52912
  // When no font is explicitly set, the computed font-family equals the
52606
52913
  // editor's own default (e.g. `-apple-system, …`). Return '' so the
52607
- // button shows the `Default` list entry instead of that raw stack.
52608
- // See #1370
52609
- value: function value(editor) {
52610
- var current = editor.s.current();
52611
- if (!current) {
52612
- return;
52613
- }
52614
- 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);
52615
- if (!box) {
52914
+ // button shows the list's `Default` entry, when it has one, instead of
52915
+ // that raw stack. See #1370
52916
+ value: function value(editor, button) {
52917
+ var current = editor.s.current(), box = current && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(current, _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isElement, editor.editor);
52918
+ // Until there is a selection the button shows the editor's own font,
52919
+ // and afterwards the font of the last one
52920
+ if (box) {
52921
+ hadSelection.add(button);
52922
+ } else if (hadSelection.has(button)) {
52616
52923
  return;
52617
52924
  }
52618
- var value = (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(box, 'font-family').toString();
52619
- if (value === (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.css)(editor.editor, 'font-family').toString()) {
52925
+ var value = (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_3__.css)(box || editor.editor, 'font-family').toString(), list = button.control.list;
52926
+ if (value === (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_3__.css)(editor.editor, 'font-family').toString() && ((0,_core_helpers_checker_is_array_js__WEBPACK_IMPORTED_MODULE_1__.isArray)(list) ? list.includes('') : '' in (list !== null && list !== void 0 ? list : {}))) {
52620
52927
  return '';
52621
52928
  }
52622
52929
  return value;
@@ -52625,6 +52932,439 @@ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = _object
52625
52932
  });
52626
52933
 
52627
52934
 
52935
+ /***/ }),
52936
+
52937
+ /***/ 40222:
52938
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
52939
+
52940
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
52941
+ /* harmony export */ UIFontPicker: function() { return /* binding */ UIFontPicker; }
52942
+ /* harmony export */ });
52943
+ /* harmony import */ var _core_decorators_component_component_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(87325);
52944
+ /* harmony import */ var _core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(37133);
52945
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(2748);
52946
+ /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(580);
52947
+ /* harmony import */ var _core_helpers_checker_is_array_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(68345);
52948
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(29960);
52949
+ /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(41180);
52950
+ /* harmony import */ var _core_helpers_utils_utils_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(37790);
52951
+ /* harmony import */ var _core_ui_element_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(48538);
52952
+ /* harmony import */ var _google_fonts_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(41870);
52953
+ function _array_like_to_array(arr, len) {
52954
+ if (len == null || len > arr.length) len = arr.length;
52955
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
52956
+ return arr2;
52957
+ }
52958
+ function _array_without_holes(arr) {
52959
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
52960
+ }
52961
+ function _assert_this_initialized(self) {
52962
+ if (self === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
52963
+ return self;
52964
+ }
52965
+ function _call_super(_this, derived, args) {
52966
+ derived = _get_prototype_of(derived);
52967
+ return _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));
52968
+ }
52969
+ function _class_call_check(instance, Constructor) {
52970
+ if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
52971
+ }
52972
+ function _defineProperties(target, props) {
52973
+ for(var i = 0; i < props.length; i++){
52974
+ var descriptor = props[i];
52975
+ descriptor.enumerable = descriptor.enumerable || false;
52976
+ descriptor.configurable = true;
52977
+ if ("value" in descriptor) descriptor.writable = true;
52978
+ Object.defineProperty(target, descriptor.key, descriptor);
52979
+ }
52980
+ }
52981
+ function _create_class(Constructor, protoProps, staticProps) {
52982
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
52983
+ if (staticProps) _defineProperties(Constructor, staticProps);
52984
+ return Constructor;
52985
+ }
52986
+ function _get(target, property, receiver) {
52987
+ if (typeof Reflect !== "undefined" && Reflect.get) _get = Reflect.get;
52988
+ else {
52989
+ _get = function get(target, property, receiver) {
52990
+ var base = _super_prop_base(target, property);
52991
+ if (!base) return;
52992
+ var desc = Object.getOwnPropertyDescriptor(base, property);
52993
+ if (desc.get) return desc.get.call(receiver || target);
52994
+ return desc.value;
52995
+ };
52996
+ }
52997
+ return _get(target, property, receiver || target);
52998
+ }
52999
+ function _get_prototype_of(o) {
53000
+ _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
53001
+ return o.__proto__ || Object.getPrototypeOf(o);
53002
+ };
53003
+ return _get_prototype_of(o);
53004
+ }
53005
+ function _inherits(subClass, superClass) {
53006
+ if (typeof superClass !== "function" && superClass !== null) {
53007
+ throw new TypeError("Super expression must either be null or a function");
53008
+ }
53009
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
53010
+ constructor: {
53011
+ value: subClass,
53012
+ writable: true,
53013
+ configurable: true
53014
+ }
53015
+ });
53016
+ if (superClass) _set_prototype_of(subClass, superClass);
53017
+ }
53018
+ function _is_native_reflect_construct() {
53019
+ try {
53020
+ var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
53021
+ } catch (_) {}
53022
+ return (_is_native_reflect_construct = function() {
53023
+ return !!result;
53024
+ })();
53025
+ }
53026
+ function _iterable_to_array(iter) {
53027
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) {
53028
+ return Array.from(iter);
53029
+ }
53030
+ }
53031
+ function _non_iterable_spread() {
53032
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
53033
+ }
53034
+ function _possible_constructor_return(self, call) {
53035
+ if (call && (_type_of(call) === "object" || typeof call === "function")) return call;
53036
+ return _assert_this_initialized(self);
53037
+ }
53038
+ function _set_prototype_of(o, p) {
53039
+ _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
53040
+ o.__proto__ = p;
53041
+ return o;
53042
+ };
53043
+ return _set_prototype_of(o, p);
53044
+ }
53045
+ function _super_prop_base(object, property) {
53046
+ while(!Object.prototype.hasOwnProperty.call(object, property)){
53047
+ object = _get_prototype_of(object);
53048
+ if (object === null) break;
53049
+ }
53050
+ return object;
53051
+ }
53052
+ function _to_consumable_array(arr) {
53053
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
53054
+ }
53055
+ function _type_of(obj) {
53056
+ "@swc/helpers - typeof";
53057
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
53058
+ }
53059
+ function _unsupported_iterable_to_array(o, minLen) {
53060
+ if (!o) return;
53061
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
53062
+ var n = Object.prototype.toString.call(o).slice(8, -1);
53063
+ if (n === "Object" && o.constructor) n = o.constructor.name;
53064
+ if (n === "Map" || n === "Set") return Array.from(n);
53065
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
53066
+ }
53067
+ /*!
53068
+ * Jodit Editor (https://xdsoft.net/jodit/)
53069
+ * Released under MIT see LICENSE.txt in the project root for license information.
53070
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
53071
+ */ var __decorate = undefined && undefined.__decorate || function(decorators, target, key, desc) {
53072
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
53073
+ if ((typeof Reflect === "undefined" ? "undefined" : _type_of(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
53074
+ 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;
53075
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
53076
+ };
53077
+
53078
+
53079
+
53080
+
53081
+
53082
+
53083
+
53084
+
53085
+
53086
+
53087
+ var HEADINGS = [
53088
+ 'h1',
53089
+ 'h2',
53090
+ 'h3',
53091
+ 'h4',
53092
+ 'h5',
53093
+ 'h6'
53094
+ ];
53095
+ var GENERIC_FAMILIES = new Set([
53096
+ 'serif',
53097
+ 'sans-serif',
53098
+ 'monospace',
53099
+ 'cursive',
53100
+ 'fantasy',
53101
+ 'system-ui',
53102
+ 'ui-serif',
53103
+ 'ui-sans-serif',
53104
+ 'ui-monospace',
53105
+ 'ui-rounded'
53106
+ ]);
53107
+ /**
53108
+ * A family that names a font, not a generic family or a vendor keyword such
53109
+ * as `-apple-system`
53110
+ */ function isFontName(family) {
53111
+ return Boolean(family) && !family.startsWith('-') && !GENERIC_FAMILIES.has(family);
53112
+ }
53113
+ /**
53114
+ * The font family dropdown with Google Fonts. Under their own headings it
53115
+ * lists the fonts the editor's styles give text and headings, the fonts the
53116
+ * content uses, the control's list and the Google Fonts library
53117
+ */ var UIFontPicker = /*#__PURE__*/ function(UIElement) {
53118
+ "use strict";
53119
+ _inherits(UIFontPicker, UIElement);
53120
+ function UIFontPicker(jodit, __button, __close) {
53121
+ _class_call_check(this, UIFontPicker);
53122
+ var _this;
53123
+ _this = _call_super(this, UIFontPicker, [
53124
+ jodit
53125
+ ]);
53126
+ _this.__button = __button;
53127
+ _this.__close = __close;
53128
+ _this.__fonts = new Map();
53129
+ _this.__observer = null;
53130
+ _this.__googleFonts = jodit.getInstance(_google_fonts_js__WEBPACK_IMPORTED_MODULE_9__.GoogleFonts);
53131
+ _this.__render();
53132
+ if (!_this.__googleFonts.fonts.size) {
53133
+ _this.__googleFonts.ready.then(function() {
53134
+ return !_this.isDestructed && _this.__render();
53135
+ });
53136
+ }
53137
+ return _this;
53138
+ }
53139
+ _create_class(UIFontPicker, [
53140
+ {
53141
+ key: "className",
53142
+ value: function className() {
53143
+ return 'UIFontPicker';
53144
+ }
53145
+ },
53146
+ {
53147
+ key: "__render",
53148
+ value: function __render() {
53149
+ var _this = this;
53150
+ var _a, _b;
53151
+ var control = this.__button.control, _control_list = control.list, list = _control_list === void 0 ? {} : _control_list, listed = (0,_core_helpers_checker_is_array_js__WEBPACK_IMPORTED_MODULE_4__.isArray)(list) ? list.map(function(key) {
53152
+ return {
53153
+ value: key.toString(),
53154
+ title: key.toString()
53155
+ };
53156
+ }) : (0,_core_helpers_utils_utils_js__WEBPACK_IMPORTED_MODULE_7__.keys)(list, false).map(function(key) {
53157
+ return {
53158
+ value: key,
53159
+ title: list[key].toString()
53160
+ };
53161
+ }), google = Array.from(this.__googleFonts.fonts.values(), function(font) {
53162
+ return {
53163
+ value: _this.__googleFonts.value(font),
53164
+ title: font.family,
53165
+ font: font
53166
+ };
53167
+ }), byFamily = new Map();
53168
+ _to_consumable_array(google).concat(_to_consumable_array(listed)).forEach(function(entry) {
53169
+ return byFamily.set((0,_google_fonts_js__WEBPACK_IMPORTED_MODULE_9__.firstFamily)(entry.value), entry);
53170
+ });
53171
+ var theme = new Map(), used = new Map();
53172
+ // The theme's own fonts are listed too, so its body font can be chosen
53173
+ // to take a font off
53174
+ this.__themeFonts().forEach(function(fontFamily) {
53175
+ var _a;
53176
+ var family = (0,_google_fonts_js__WEBPACK_IMPORTED_MODULE_9__.firstFamily)(fontFamily), title = fontFamily.split(',')[0].replace(/["']/g, '').trim(), entry = (_a = byFamily.get(family)) !== null && _a !== void 0 ? _a : isFontName(family) ? {
53177
+ value: fontFamily,
53178
+ title: title
53179
+ } : undefined;
53180
+ entry && !theme.has(family) && theme.set(family, entry);
53181
+ });
53182
+ this.__usedFonts().forEach(function(fontFamily) {
53183
+ var family = (0,_google_fonts_js__WEBPACK_IMPORTED_MODULE_9__.firstFamily)(fontFamily), entry = byFamily.get(family);
53184
+ entry && !theme.has(family) && used.set(family, entry);
53185
+ });
53186
+ var defaultEntry = listed.find(function(entry) {
53187
+ return entry.value === '';
53188
+ }), current = (0,_google_fonts_js__WEBPACK_IMPORTED_MODULE_9__.firstFamily)((_b = (_a = control.value) === null || _a === void 0 ? void 0 : _a.call(control, this.j, this.__button)) !== null && _b !== void 0 ? _b : '');
53189
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.detach(this.container);
53190
+ this.__fonts.clear();
53191
+ defaultEntry && this.__append(current, [
53192
+ defaultEntry
53193
+ ]);
53194
+ this.__append(current, _to_consumable_array(theme.values()), 'Theme fonts');
53195
+ this.__append(current, _to_consumable_array(used.values()), 'Used fonts');
53196
+ this.__append(current, listed.filter(function(entry) {
53197
+ return entry !== defaultEntry;
53198
+ }), 'System fonts');
53199
+ this.__append(current, google, 'Google Fonts');
53200
+ this.__observeGoogleFonts();
53201
+ }
53202
+ },
53203
+ {
53204
+ /**
53205
+ * The fonts the editor's styles give text and each heading
53206
+ */ key: "__themeFonts",
53207
+ value: function __themeFonts() {
53208
+ var _this = this;
53209
+ var editor = this.j.editor, fonts = [
53210
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(editor, 'font-family').toString()
53211
+ ];
53212
+ HEADINGS.forEach(function(tag) {
53213
+ var heading = _this.j.createInside.element(tag, {
53214
+ style: 'display: none'
53215
+ });
53216
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(editor, heading);
53217
+ fonts.push((0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(heading, 'font-family').toString());
53218
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.safeRemove(heading);
53219
+ });
53220
+ return fonts;
53221
+ }
53222
+ },
53223
+ {
53224
+ /**
53225
+ * The fonts the content sets
53226
+ */ key: "__usedFonts",
53227
+ value: function __usedFonts() {
53228
+ return Array.from(this.j.editor.querySelectorAll('[style*="font-family"]'), function(element) {
53229
+ return element.style.fontFamily;
53230
+ });
53231
+ }
53232
+ },
53233
+ {
53234
+ key: "__append",
53235
+ value: function __append(current, entries, heading) {
53236
+ var _this = this;
53237
+ if (!entries.length) {
53238
+ return;
53239
+ }
53240
+ var control = this.__button.control, group = this.j.c.div(this.getFullElName('group'));
53241
+ if (heading) {
53242
+ var title = this.j.c.div(this.getFullElName('heading'), {
53243
+ id: "".concat(this.getFullElName('heading'), "-").concat((0,_core_global_js__WEBPACK_IMPORTED_MODULE_3__.uniqueUid)())
53244
+ });
53245
+ title.textContent = this.i18n(heading);
53246
+ (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__.attr)(group, {
53247
+ role: 'group',
53248
+ 'aria-labelledby': title.id
53249
+ });
53250
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(group, title);
53251
+ }
53252
+ entries.forEach(function(entry) {
53253
+ var _a, _b;
53254
+ var item = _this.j.c.element('button', {
53255
+ type: 'button',
53256
+ class: _this.getFullElName('item'),
53257
+ 'data-value': entry.value,
53258
+ 'aria-pressed': (0,_google_fonts_js__WEBPACK_IMPORTED_MODULE_9__.firstFamily)(entry.value) === current
53259
+ });
53260
+ if (entry.font) {
53261
+ item.textContent = entry.title;
53262
+ _this.__fonts.set(item, entry.font);
53263
+ } else {
53264
+ item.innerHTML = (_b = (_a = control.childTemplate) === null || _a === void 0 ? void 0 : _a.call(control, _this.j, entry.value, entry.title, _this.__button)) !== null && _b !== void 0 ? _b : entry.title;
53265
+ }
53266
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(group, item);
53267
+ });
53268
+ _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.append(this.container, group);
53269
+ }
53270
+ },
53271
+ {
53272
+ /**
53273
+ * Shows the names of the Google Fonts in view, and those just below it,
53274
+ * in their own fonts. Setting every item's font up front would have the
53275
+ * browser look for each of the library's families among the installed
53276
+ * fonts the first time the list opens
53277
+ */ key: "__observeGoogleFonts",
53278
+ value: function __observeGoogleFonts() {
53279
+ var _this = this;
53280
+ this.j.async.requestAnimationFrame(function() {
53281
+ var _a;
53282
+ (_a = _this.__observer) === null || _a === void 0 ? void 0 : _a.disconnect();
53283
+ if (_this.isDestructed || !_this.__fonts.size) {
53284
+ return;
53285
+ }
53286
+ var observer = new IntersectionObserver(function(entries) {
53287
+ var fonts = [];
53288
+ entries.forEach(function(param) {
53289
+ var isIntersecting = param.isIntersecting, target = param.target;
53290
+ var font = _this.__fonts.get(target);
53291
+ if (isIntersecting && font) {
53292
+ fonts.push(font);
53293
+ (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(target, {
53294
+ fontFamily: _this.__googleFonts.value(font)
53295
+ });
53296
+ observer.unobserve(target);
53297
+ }
53298
+ });
53299
+ _this.__googleFonts.preview(fonts);
53300
+ }, {
53301
+ root: _this.container.parentElement,
53302
+ rootMargin: '0px 0px 400px 0px'
53303
+ });
53304
+ _this.__fonts.forEach(function(_, item) {
53305
+ return observer.observe(item);
53306
+ });
53307
+ _this.__observer = observer;
53308
+ });
53309
+ }
53310
+ },
53311
+ {
53312
+ /**
53313
+ * Keeps the editor's selection, as the toolbar buttons do
53314
+ */ key: "onMouseDown",
53315
+ value: function onMouseDown(e) {
53316
+ e.preventDefault();
53317
+ }
53318
+ },
53319
+ {
53320
+ key: "onClick",
53321
+ value: function onClick(e) {
53322
+ var _a;
53323
+ var item = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.up(e.target, function(node) {
53324
+ return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isHTMLElement(node) && node.hasAttribute('data-value');
53325
+ }, this.container);
53326
+ if (!item) {
53327
+ return;
53328
+ }
53329
+ var value = (_a = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_5__.attr)(item, 'data-value')) !== null && _a !== void 0 ? _a : '', font = this.__googleFonts.find(value), // The font the text has anyway is taken off rather than written
53330
+ inherited = (0,_google_fonts_js__WEBPACK_IMPORTED_MODULE_9__.firstFamily)(value) === (0,_google_fonts_js__WEBPACK_IMPORTED_MODULE_9__.firstFamily)(this.__blockFont());
53331
+ font && !inherited && this.__googleFonts.load(font);
53332
+ this.j.execCommand('fontname', false, inherited ? '' : value);
53333
+ this.__close();
53334
+ }
53335
+ },
53336
+ {
53337
+ /**
53338
+ * The font the selected text has without a font of its own: its block's
53339
+ */ key: "__blockFont",
53340
+ value: function __blockFont() {
53341
+ var block = _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.up(this.j.s.current(), _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_2__.Dom.isBlock, this.j.editor);
53342
+ return (0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_6__.css)(block !== null && block !== void 0 ? block : this.j.editor, 'font-family').toString();
53343
+ }
53344
+ },
53345
+ {
53346
+ key: "destruct",
53347
+ value: function destruct() {
53348
+ var _a;
53349
+ (_a = this.__observer) === null || _a === void 0 ? void 0 : _a.disconnect();
53350
+ _get(_get_prototype_of(UIFontPicker.prototype), "destruct", this).call(this);
53351
+ }
53352
+ }
53353
+ ]);
53354
+ return UIFontPicker;
53355
+ }(_core_ui_element_js__WEBPACK_IMPORTED_MODULE_8__.UIElement);
53356
+ __decorate([
53357
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_1__.watch)('container:mousedown')
53358
+ ], UIFontPicker.prototype, "onMouseDown", null);
53359
+ __decorate([
53360
+ (0,_core_decorators_watch_watch_js__WEBPACK_IMPORTED_MODULE_1__.watch)('container:click')
53361
+ ], UIFontPicker.prototype, "onClick", null);
53362
+ UIFontPicker = __decorate([
53363
+ _core_decorators_component_component_js__WEBPACK_IMPORTED_MODULE_0__.component
53364
+ ], UIFontPicker);
53365
+
53366
+
53367
+
52628
53368
  /***/ }),
52629
53369
 
52630
53370
  /***/ 23399:
@@ -52634,6 +53374,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = _object
52634
53374
  /* harmony import */ var _core_global_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(580);
52635
53375
  /* harmony import */ var _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21537);
52636
53376
  /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(28252);
53377
+ /* harmony import */ var _google_fonts_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(41870);
52637
53378
  /*!
52638
53379
  * Jodit Editor (https://xdsoft.net/jodit/)
52639
53380
  * Released under MIT see LICENSE.txt in the project root for license information.
@@ -52641,6 +53382,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = _object
52641
53382
  */
52642
53383
 
52643
53384
 
53385
+
52644
53386
  /**
52645
53387
  * Process commands `fontsize` and `fontname`
52646
53388
  */ function font(editor) {
@@ -52651,6 +53393,22 @@ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = _object
52651
53393
  name: 'fontsize',
52652
53394
  group: 'font'
52653
53395
  });
53396
+ if (editor.o.font.googleFonts.url) {
53397
+ var googleFonts = editor.getInstance(_google_fonts_js__WEBPACK_IMPORTED_MODULE_3__.GoogleFonts), loadUsed = editor.async.debounce(function() {
53398
+ return googleFonts.loadUsed();
53399
+ }, editor.defaultTimeout);
53400
+ googleFonts.ready.then(loadUsed);
53401
+ editor.e.on('afterInit afterSetMode change', loadUsed);
53402
+ }
53403
+ // An iframe's stylesheets can arrive after the toolbar first shows the
53404
+ // editor's font
53405
+ editor.e.on('afterInit', function() {
53406
+ editor.iframe && editor.e.on(editor.ed, 'load', function() {
53407
+ return editor.e.fire('updateToolbar');
53408
+ }, {
53409
+ capture: true
53410
+ });
53411
+ });
52654
53412
  var callback = function callback(command, second, third) {
52655
53413
  switch(command){
52656
53414
  case 'fontsize':
@@ -52680,6 +53438,375 @@ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.font = _object
52680
53438
  _core_global_js__WEBPACK_IMPORTED_MODULE_0__.pluginSystem.add('font', font);
52681
53439
 
52682
53440
 
53441
+ /***/ }),
53442
+
53443
+ /***/ 41870:
53444
+ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
53445
+
53446
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
53447
+ /* harmony export */ GoogleFonts: function() { return /* binding */ GoogleFonts; },
53448
+ /* harmony export */ firstFamily: function() { return /* binding */ firstFamily; }
53449
+ /* harmony export */ });
53450
+ /* harmony import */ var _core_component_view_component_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(80480);
53451
+ /* harmony import */ var _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2748);
53452
+ /* harmony import */ var _core_request_ajax_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(54079);
53453
+ function _array_like_to_array(arr, len) {
53454
+ if (len == null || len > arr.length) len = arr.length;
53455
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
53456
+ return arr2;
53457
+ }
53458
+ function _array_with_holes(arr) {
53459
+ if (Array.isArray(arr)) return arr;
53460
+ }
53461
+ function _array_without_holes(arr) {
53462
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
53463
+ }
53464
+ function _assert_this_initialized(self) {
53465
+ if (self === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
53466
+ return self;
53467
+ }
53468
+ function _call_super(_this, derived, args) {
53469
+ derived = _get_prototype_of(derived);
53470
+ return _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));
53471
+ }
53472
+ function _class_call_check(instance, Constructor) {
53473
+ if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
53474
+ }
53475
+ function _defineProperties(target, props) {
53476
+ for(var i = 0; i < props.length; i++){
53477
+ var descriptor = props[i];
53478
+ descriptor.enumerable = descriptor.enumerable || false;
53479
+ descriptor.configurable = true;
53480
+ if ("value" in descriptor) descriptor.writable = true;
53481
+ Object.defineProperty(target, descriptor.key, descriptor);
53482
+ }
53483
+ }
53484
+ function _create_class(Constructor, protoProps, staticProps) {
53485
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
53486
+ if (staticProps) _defineProperties(Constructor, staticProps);
53487
+ return Constructor;
53488
+ }
53489
+ function _get(target, property, receiver) {
53490
+ if (typeof Reflect !== "undefined" && Reflect.get) _get = Reflect.get;
53491
+ else {
53492
+ _get = function get(target, property, receiver) {
53493
+ var base = _super_prop_base(target, property);
53494
+ if (!base) return;
53495
+ var desc = Object.getOwnPropertyDescriptor(base, property);
53496
+ if (desc.get) return desc.get.call(receiver || target);
53497
+ return desc.value;
53498
+ };
53499
+ }
53500
+ return _get(target, property, receiver || target);
53501
+ }
53502
+ function _get_prototype_of(o) {
53503
+ _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
53504
+ return o.__proto__ || Object.getPrototypeOf(o);
53505
+ };
53506
+ return _get_prototype_of(o);
53507
+ }
53508
+ function _inherits(subClass, superClass) {
53509
+ if (typeof superClass !== "function" && superClass !== null) {
53510
+ throw new TypeError("Super expression must either be null or a function");
53511
+ }
53512
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
53513
+ constructor: {
53514
+ value: subClass,
53515
+ writable: true,
53516
+ configurable: true
53517
+ }
53518
+ });
53519
+ if (superClass) _set_prototype_of(subClass, superClass);
53520
+ }
53521
+ function _is_native_reflect_construct() {
53522
+ try {
53523
+ var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
53524
+ } catch (_) {}
53525
+ return (_is_native_reflect_construct = function() {
53526
+ return !!result;
53527
+ })();
53528
+ }
53529
+ function _iterable_to_array(iter) {
53530
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) {
53531
+ return Array.from(iter);
53532
+ }
53533
+ }
53534
+ function _iterable_to_array_limit(arr, i) {
53535
+ var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
53536
+ if (_i == null) return;
53537
+ var _arr = [];
53538
+ var _n = true;
53539
+ var _d = false;
53540
+ var _s, _e;
53541
+ try {
53542
+ for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
53543
+ _arr.push(_s.value);
53544
+ if (i && _arr.length === i) break;
53545
+ }
53546
+ } catch (err) {
53547
+ _d = true;
53548
+ _e = err;
53549
+ } finally{
53550
+ try {
53551
+ if (!_n && _i["return"] != null) _i["return"]();
53552
+ } finally{
53553
+ if (_d) throw _e;
53554
+ }
53555
+ }
53556
+ return _arr;
53557
+ }
53558
+ function _non_iterable_rest() {
53559
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
53560
+ }
53561
+ function _non_iterable_spread() {
53562
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
53563
+ }
53564
+ function _possible_constructor_return(self, call) {
53565
+ if (call && (_type_of(call) === "object" || typeof call === "function")) return call;
53566
+ return _assert_this_initialized(self);
53567
+ }
53568
+ function _set_prototype_of(o, p) {
53569
+ _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
53570
+ o.__proto__ = p;
53571
+ return o;
53572
+ };
53573
+ return _set_prototype_of(o, p);
53574
+ }
53575
+ function _sliced_to_array(arr, i) {
53576
+ return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
53577
+ }
53578
+ function _super_prop_base(object, property) {
53579
+ while(!Object.prototype.hasOwnProperty.call(object, property)){
53580
+ object = _get_prototype_of(object);
53581
+ if (object === null) break;
53582
+ }
53583
+ return object;
53584
+ }
53585
+ function _to_consumable_array(arr) {
53586
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
53587
+ }
53588
+ function _type_of(obj) {
53589
+ "@swc/helpers - typeof";
53590
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
53591
+ }
53592
+ function _unsupported_iterable_to_array(o, minLen) {
53593
+ if (!o) return;
53594
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
53595
+ var n = Object.prototype.toString.call(o).slice(8, -1);
53596
+ if (n === "Object" && o.constructor) n = o.constructor.name;
53597
+ if (n === "Map" || n === "Set") return Array.from(n);
53598
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
53599
+ }
53600
+ /*!
53601
+ * Jodit Editor (https://xdsoft.net/jodit/)
53602
+ * Released under MIT see LICENSE.txt in the project root for license information.
53603
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
53604
+ */ ;
53605
+
53606
+
53607
+ var CSS_URL = 'https://fonts.googleapis.com/css2';
53608
+ // `cursive` and `fantasy` stand in badly for a handwriting or display font
53609
+ var GENERIC_FAMILIES = {
53610
+ serif: 'serif',
53611
+ monospace: 'monospace'
53612
+ };
53613
+ var libraries = new Map();
53614
+ /**
53615
+ * The fonts of the library at `url`, fetched once for every editor on the page
53616
+ */ function library(jodit, url) {
53617
+ var fonts = libraries.get(url);
53618
+ if (!fonts) {
53619
+ var ajax = new _core_request_ajax_js__WEBPACK_IMPORTED_MODULE_2__.Ajax({
53620
+ url: url,
53621
+ method: 'GET'
53622
+ }, jodit.o.defaultAjaxOptions);
53623
+ fonts = ajax.send().then(function(response) {
53624
+ return response.json();
53625
+ })// A font without a regular style can't be asked for by its name alone
53626
+ .then(function(param) {
53627
+ var items = param.items;
53628
+ return items.filter(function(font) {
53629
+ return font.variants.includes('regular');
53630
+ });
53631
+ }).catch(function() {
53632
+ libraries.delete(url);
53633
+ return [];
53634
+ }).finally(function() {
53635
+ return ajax.destruct();
53636
+ });
53637
+ libraries.set(url, fonts);
53638
+ }
53639
+ return fonts;
53640
+ }
53641
+ /**
53642
+ * The first family of a `font-family` value, unquoted and in lower case for
53643
+ * comparing
53644
+ */ function firstFamily(fontFamily) {
53645
+ return fontFamily.split(',')[0].replace(/["']/g, '').trim().toLowerCase();
53646
+ }
53647
+ /**
53648
+ * Loads fonts from Google Fonts: the whole of each font the content uses into
53649
+ * the editor's document, and just the letters of its name for the font list
53650
+ */ var GoogleFonts = /*#__PURE__*/ function(ViewComponent) {
53651
+ "use strict";
53652
+ _inherits(GoogleFonts, ViewComponent);
53653
+ function GoogleFonts(jodit) {
53654
+ _class_call_check(this, GoogleFonts);
53655
+ var _this;
53656
+ _this = _call_super(this, GoogleFonts, [
53657
+ jodit
53658
+ ]);
53659
+ /**
53660
+ * The library by lower-case family, empty until it arrives
53661
+ */ _this.fonts = new Map();
53662
+ _this.__links = [];
53663
+ _this.__loaded = new WeakMap();
53664
+ _this.__previewed = new Set();
53665
+ _this.ready = library(jodit, jodit.o.font.googleFonts.url).then(function(fonts) {
53666
+ fonts.forEach(function(font) {
53667
+ return _this.fonts.set(font.family.toLowerCase(), font);
53668
+ });
53669
+ });
53670
+ return _this;
53671
+ }
53672
+ _create_class(GoogleFonts, [
53673
+ {
53674
+ key: "className",
53675
+ value: function className() {
53676
+ return 'GoogleFonts';
53677
+ }
53678
+ },
53679
+ {
53680
+ /**
53681
+ * The library's font named first in a `font-family` value
53682
+ */ key: "find",
53683
+ value: function find(fontFamily) {
53684
+ return this.fonts.get(firstFamily(fontFamily));
53685
+ }
53686
+ },
53687
+ {
53688
+ /**
53689
+ * The `font-family` value that applies a font
53690
+ */ key: "value",
53691
+ value: function value(font) {
53692
+ var _a;
53693
+ return "'".concat(font.family, "', ").concat((_a = GENERIC_FAMILIES[font.category]) !== null && _a !== void 0 ? _a : 'sans-serif');
53694
+ }
53695
+ },
53696
+ {
53697
+ /**
53698
+ * Loads the regular, italic, bold and bold italic styles that a font has
53699
+ * into the editor's document
53700
+ */ key: "load",
53701
+ value: function load(font) {
53702
+ var loaded = this.__loadedInto(this.j.ed);
53703
+ if (loaded.has(font.family)) {
53704
+ return;
53705
+ }
53706
+ loaded.add(font.family);
53707
+ var styles = [
53708
+ [
53709
+ 'regular',
53710
+ '0,400'
53711
+ ],
53712
+ [
53713
+ '700',
53714
+ '0,700'
53715
+ ],
53716
+ [
53717
+ 'italic',
53718
+ '1,400'
53719
+ ],
53720
+ [
53721
+ '700italic',
53722
+ '1,700'
53723
+ ]
53724
+ ].filter(function(param) {
53725
+ var _param = _sliced_to_array(param, 1), variant = _param[0];
53726
+ return font.variants.includes(variant);
53727
+ }).map(function(param) {
53728
+ var _param = _sliced_to_array(param, 2), style = _param[1];
53729
+ return style;
53730
+ });
53731
+ this.__append(this.j.ed, "family=".concat(this.__family(font), ":ital,wght@").concat(styles.join(';')));
53732
+ }
53733
+ },
53734
+ {
53735
+ /**
53736
+ * Loads every font of the library that the content uses
53737
+ */ key: "loadUsed",
53738
+ value: function loadUsed() {
53739
+ var _this = this;
53740
+ this.j.editor.querySelectorAll('[style*="font-family"]').forEach(function(element) {
53741
+ var font = _this.find(element.style.fontFamily);
53742
+ font && _this.load(font);
53743
+ });
53744
+ }
53745
+ },
53746
+ {
53747
+ /**
53748
+ * Loads into the page just the letters of each font's name, so the font
53749
+ * list can show the name in its font
53750
+ */ key: "preview",
53751
+ value: function preview(fonts) {
53752
+ var _this = this;
53753
+ var loaded = this.__loadedInto(this.j.od);
53754
+ fonts = fonts.filter(function(font) {
53755
+ return !_this.__previewed.has(font.family) && !loaded.has(font.family);
53756
+ });
53757
+ if (!fonts.length) {
53758
+ return;
53759
+ }
53760
+ fonts.forEach(function(font) {
53761
+ return _this.__previewed.add(font.family);
53762
+ });
53763
+ var families = fonts.map(function(font) {
53764
+ return "family=".concat(_this.__family(font));
53765
+ }), letters = new Set(fonts.map(function(font) {
53766
+ return font.family;
53767
+ }).join(''));
53768
+ this.__append(this.j.od, "".concat(families.join('&'), "&text=").concat(encodeURIComponent(_to_consumable_array(letters).join(''))));
53769
+ }
53770
+ },
53771
+ {
53772
+ key: "__loadedInto",
53773
+ value: function __loadedInto(doc) {
53774
+ var _a;
53775
+ var loaded = (_a = this.__loaded.get(doc)) !== null && _a !== void 0 ? _a : new Set();
53776
+ this.__loaded.set(doc, loaded);
53777
+ return loaded;
53778
+ }
53779
+ },
53780
+ {
53781
+ key: "__family",
53782
+ value: function __family(font) {
53783
+ return encodeURIComponent(font.family).replace(/%20/g, '+');
53784
+ }
53785
+ },
53786
+ {
53787
+ key: "__append",
53788
+ value: function __append(doc, query) {
53789
+ var link = doc.createElement('link');
53790
+ link.rel = 'stylesheet';
53791
+ link.href = "".concat(CSS_URL, "?").concat(query, "&display=swap");
53792
+ doc.head.appendChild(link);
53793
+ this.__links.push(link);
53794
+ }
53795
+ },
53796
+ {
53797
+ key: "destruct",
53798
+ value: function destruct() {
53799
+ this.__links.forEach(function(link) {
53800
+ return _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.safeRemove(link);
53801
+ });
53802
+ _get(_get_prototype_of(GoogleFonts.prototype), "destruct", this).call(this);
53803
+ }
53804
+ }
53805
+ ]);
53806
+ return GoogleFonts;
53807
+ }(_core_component_view_component_js__WEBPACK_IMPORTED_MODULE_0__.ViewComponent);
53808
+
53809
+
52683
53810
  /***/ }),
52684
53811
 
52685
53812
  /***/ 4104:
@@ -54716,12 +55843,13 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_2__.pluginSystem.add('imageProperties',
54716
55843
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
54717
55844
  /* harmony export */ readValuesFromImage: function() { return /* binding */ readValuesFromImage; }
54718
55845
  /* harmony export */ });
54719
- /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29960);
54720
- /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(41180);
54721
- /* harmony import */ var _align_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(51642);
54722
- /* harmony import */ var _link_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(75595);
54723
- /* harmony import */ var _margin_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(47749);
54724
- /* harmony import */ var _size_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(32566);
55846
+ /* harmony import */ var _core_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(25726);
55847
+ /* harmony import */ var _core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(29960);
55848
+ /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(41180);
55849
+ /* harmony import */ var _align_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(51642);
55850
+ /* harmony import */ var _link_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(75595);
55851
+ /* harmony import */ var _margin_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(47749);
55852
+ /* harmony import */ var _size_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(32566);
54725
55853
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
54726
55854
  try {
54727
55855
  var info = gen[key](arg);
@@ -54857,6 +55985,7 @@ function _ts_generator(thisArg, body) {
54857
55985
 
54858
55986
 
54859
55987
 
55988
+
54860
55989
  /**
54861
55990
  * Read values from image and set it to state
54862
55991
  * @private
@@ -54865,29 +55994,29 @@ function _ts_generator(thisArg, body) {
54865
55994
  var image, values;
54866
55995
  return _ts_generator(this, function(_state) {
54867
55996
  image = state.sourceImage, values = state.values;
54868
- (0,_align_js__WEBPACK_IMPORTED_MODULE_2__.readAlign)(image, values, j.o.imageAlignClasses);
55997
+ (0,_align_js__WEBPACK_IMPORTED_MODULE_3__.readAlign)(image, values, (0,_core_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_0__.getAlignClasses)(j, image));
54869
55998
  // Border radius
54870
- values.borderRadius = parseInt((0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_1__.cssInline)(image, 'border-radius') || '0', 10) || 0;
55999
+ values.borderRadius = parseInt((0,_core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_2__.cssInline)(image, 'border-radius') || '0', 10) || 0;
54871
56000
  // Id
54872
- values.id = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_0__.attr)(image, 'id') || '';
56001
+ values.id = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(image, 'id') || '';
54873
56002
  // Title
54874
- values.imageTitle = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_0__.attr)(image, 'title') || '';
56003
+ values.imageTitle = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(image, 'title') || '';
54875
56004
  // Alt
54876
- values.imageAlt = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_0__.attr)(image, 'alt') || '';
56005
+ values.imageAlt = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(image, 'alt') || '';
54877
56006
  // Style
54878
- values.style = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_0__.attr)(image, 'style') || '';
56007
+ values.style = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(image, 'style') || '';
54879
56008
  // Classes
54880
- values.classes = ((0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_0__.attr)(image, 'class') || '').replace(/jodit_focused_image[\s]*/, '');
56009
+ values.classes = ((0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(image, 'class') || '').replace(/jodit_focused_image[\s]*/, '');
54881
56010
  // Margins
54882
- (0,_margin_js__WEBPACK_IMPORTED_MODULE_4__.readMargins)(image, values, state);
56011
+ (0,_margin_js__WEBPACK_IMPORTED_MODULE_5__.readMargins)(image, values, state);
54883
56012
  // Link
54884
- (0,_link_js__WEBPACK_IMPORTED_MODULE_3__.readLink)(state, j, values);
56013
+ (0,_link_js__WEBPACK_IMPORTED_MODULE_4__.readLink)(state, j, values);
54885
56014
  // Src
54886
- values.imageSrc = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_0__.attr)(image, 'src') || '';
56015
+ values.imageSrc = (0,_core_helpers_utils_attr_js__WEBPACK_IMPORTED_MODULE_1__.attr)(image, 'src') || '';
54887
56016
  // Image size
54888
56017
  return [
54889
56018
  2,
54890
- (0,_size_js__WEBPACK_IMPORTED_MODULE_5__.readSizes)(image, values, state)
56019
+ (0,_size_js__WEBPACK_IMPORTED_MODULE_6__.readSizes)(image, values, state)
54891
56020
  ];
54892
56021
  });
54893
56022
  })();
@@ -56793,7 +57922,7 @@ function _ts_generator(thisArg, body) {
56793
57922
  (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_1__.attr)(image, 'id', id || null);
56794
57923
  }
56795
57924
  if (opt.image.editAlign) {
56796
- (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_1__.hAlignElement)(image, align, j.o.imageAlignClasses);
57925
+ (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_1__.hAlignElement)(image, align, (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_1__.getAlignClasses)(j, image));
56797
57926
  }
56798
57927
  }
56799
57928
 
@@ -57686,6 +58815,7 @@ var cmd = function cmd(control) {
57686
58815
  /* harmony import */ var _core_helpers_checker_is_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(70799);
57687
58816
  /* harmony import */ var _core_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(25726);
57688
58817
  /* harmony import */ var _core_helpers_utils_css_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(41180);
58818
+ /* harmony import */ var _core_helpers_utils_media_wrapper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(61477);
57689
58819
  function _array_like_to_array(arr, len) {
57690
58820
  if (len == null || len > arr.length) len = arr.length;
57691
58821
  for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
@@ -57740,11 +58870,7 @@ function _unsupported_iterable_to_array(o, minLen) {
57740
58870
 
57741
58871
 
57742
58872
 
57743
- // Images align with `imageAlignClasses`; the wrappers of iframes and media
57744
- // keep inline styles
57745
- var alignClasses = function alignClasses(editor, elm) {
57746
- return _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(elm, 'img') ? editor.o.imageAlignClasses : null;
57747
- };
58873
+
57748
58874
  // A Normal image sits where the text of its line is aligned (#1531)
57749
58875
  var lineAlign = function lineAlign(editor, elm) {
57750
58876
  var block = elm && _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.closest(elm, _core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isBlock, editor.editor) || editor.editor;
@@ -57766,7 +58892,7 @@ var lineAlign = function lineAlign(editor, elm) {
57766
58892
  }
57767
58893
  };
57768
58894
  var currentAlign = function currentAlign(editor, elm) {
57769
- return elm ? (0,_core_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_2__.getHAlign)(elm, alignClasses(editor, elm)) : 'normal';
58895
+ return elm ? (0,_core_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_2__.getHAlign)(elm, (0,_core_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_2__.getAlignClasses)(editor, elm)) : 'normal';
57770
58896
  };
57771
58897
  var align = {
57772
58898
  name: 'left',
@@ -57793,23 +58919,25 @@ var align = {
57793
58919
  },
57794
58920
  exec: function exec(editor, elm, param) {
57795
58921
  var control = param.control;
57796
- if (!_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(elm, new Set([
58922
+ // A media wrapper kept in the content (`mediaWrappers`) is aligned itself
58923
+ if (!_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isHTMLElement(elm) || !_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(elm, new Set([
57797
58924
  'img',
57798
58925
  'jodit',
57799
58926
  'jodit-media'
57800
- ]))) {
58927
+ ])) && (0,_core_helpers_utils_media_wrapper_js__WEBPACK_IMPORTED_MODULE_4__.getMediaWrapper)(editor, elm) !== elm) {
57801
58928
  return;
57802
58929
  }
57803
58930
  var command = control.args && (0,_core_helpers_checker_is_string_js__WEBPACK_IMPORTED_MODULE_1__.isString)(control.args[0]) ? control.args[0].toLowerCase() : '';
57804
58931
  if (!command) {
57805
58932
  return false;
57806
58933
  }
57807
- ;(0,_core_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_2__.hAlignElement)(elm, command, alignClasses(editor, elm));
58934
+ ;(0,_core_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_2__.hAlignElement)(elm, command, (0,_core_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_2__.getAlignClasses)(editor, elm));
57808
58935
  if (_core_dom_index_js__WEBPACK_IMPORTED_MODULE_0__.Dom.isTag(elm, new Set([
57809
58936
  'jodit',
57810
58937
  'jodit-media'
57811
58938
  ])) && elm.firstElementChild) {
57812
- (0,_core_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_2__.hAlignElement)(elm.firstElementChild, command);
58939
+ var media = elm.firstElementChild;
58940
+ (0,_core_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_2__.hAlignElement)(media, command, (0,_core_helpers_utils_align_js__WEBPACK_IMPORTED_MODULE_2__.getAlignClasses)(editor, media));
57813
58941
  }
57814
58942
  editor.synchronizeValues();
57815
58943
  editor.e.fire('recalcPositionPopup');
@@ -57980,6 +59108,14 @@ var align = {
57980
59108
  /* harmony import */ var _core_ui_popup_index_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(61259);
57981
59109
  /* harmony import */ var _modules_toolbar_factory_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(21491);
57982
59110
  /* harmony import */ var _config_config_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(24526);
59111
+ function _array_like_to_array(arr, len) {
59112
+ if (len == null || len > arr.length) len = arr.length;
59113
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
59114
+ return arr2;
59115
+ }
59116
+ function _array_without_holes(arr) {
59117
+ if (Array.isArray(arr)) return _array_like_to_array(arr);
59118
+ }
57983
59119
  function _assert_this_initialized(self) {
57984
59120
  if (self === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
57985
59121
  return self;
@@ -58051,6 +59187,14 @@ function _is_native_reflect_construct() {
58051
59187
  return !!result;
58052
59188
  })();
58053
59189
  }
59190
+ function _iterable_to_array(iter) {
59191
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) {
59192
+ return Array.from(iter);
59193
+ }
59194
+ }
59195
+ function _non_iterable_spread() {
59196
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
59197
+ }
58054
59198
  function _possible_constructor_return(self, call) {
58055
59199
  if (call && (_type_of(call) === "object" || typeof call === "function")) return call;
58056
59200
  return _assert_this_initialized(self);
@@ -58062,10 +59206,21 @@ function _set_prototype_of(o, p) {
58062
59206
  };
58063
59207
  return _set_prototype_of(o, p);
58064
59208
  }
59209
+ function _to_consumable_array(arr) {
59210
+ return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
59211
+ }
58065
59212
  function _type_of(obj) {
58066
59213
  "@swc/helpers - typeof";
58067
59214
  return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
58068
59215
  }
59216
+ function _unsupported_iterable_to_array(o, minLen) {
59217
+ if (!o) return;
59218
+ if (typeof o === "string") return _array_like_to_array(o, minLen);
59219
+ var n = Object.prototype.toString.call(o).slice(8, -1);
59220
+ if (n === "Object" && o.constructor) n = o.constructor.name;
59221
+ if (n === "Map" || n === "Set") return Array.from(n);
59222
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
59223
+ }
58069
59224
  function _wrap_native_super(Class) {
58070
59225
  var _cache = typeof Map === "function" ? new Map() : undefined;
58071
59226
  _wrap_native_super = function(Class) {
@@ -58147,11 +59302,13 @@ function _wrap_native_super(Class) {
58147
59302
  key: "onClick",
58148
59303
  value: function onClick(node) {
58149
59304
  var _this = this;
58150
- var elements = this.elmsList, target = _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(node, 'img') ? node : _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(node, elements, this.j.editor);
58151
- if (target && this.canShowPopupForType(target.nodeName.toLowerCase())) {
59305
+ var elements = this.elmsList, mediaWrapper = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.getMediaWrapper)(this.j, node), target = mediaWrapper !== null && mediaWrapper !== void 0 ? mediaWrapper : _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.isTag(node, 'img') ? node : _core_dom_index_js__WEBPACK_IMPORTED_MODULE_1__.Dom.closest(node, elements, this.j.editor);
59306
+ // A media wrapper kept in the content gets the media popup
59307
+ var type = mediaWrapper ? 'jodit-media' : target === null || target === void 0 ? void 0 : target.nodeName.toLowerCase();
59308
+ if (target && type && this.canShowPopupForType(type)) {
58152
59309
  this.showPopup(function() {
58153
59310
  return (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.position)(target, _this.j);
58154
- }, target.nodeName.toLowerCase(), target);
59311
+ }, type, target);
58155
59312
  return false;
58156
59313
  }
58157
59314
  }
@@ -58390,7 +59547,13 @@ function _wrap_native_super(Class) {
58390
59547
  {
58391
59548
  key: "_eventsList",
58392
59549
  value: function _eventsList() {
58393
- var el = this.elmsList;
59550
+ var _a;
59551
+ // Clicks on a media wrapper kept in the content (`mediaWrappers`)
59552
+ var wrapperTags = Object.values((_a = this.j.o.mediaWrappers) !== null && _a !== void 0 ? _a : {}).map(function(param) {
59553
+ var tag = param.tag;
59554
+ return tag.toLowerCase();
59555
+ });
59556
+ var el = _to_consumable_array(new Set(this.elmsList.concat(wrapperTags)));
58394
59557
  return el.map(function(e) {
58395
59558
  return (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_3__.camelCase)("click_".concat(e));
58396
59559
  }).concat(el.map(function(e) {
@@ -60515,8 +61678,6 @@ var formTemplate = function formTemplate(editor) {
60515
61678
  * Jodit Editor (https://xdsoft.net/jodit/)
60516
61679
  * Released under MIT see LICENSE.txt in the project root for license information.
60517
61680
  * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net
60518
- */ /**
60519
- * @module plugins/media
60520
61681
  */
60521
61682
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.mediaFakeTag = 'jodit-media';
60522
61683
  _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.mediaInFakeBlock = true;
@@ -60524,6 +61685,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.mediaBlocks = [
60524
61685
  'video',
60525
61686
  'audio'
60526
61687
  ];
61688
+ _config_js__WEBPACK_IMPORTED_MODULE_0__.Config.prototype.mediaWrappers = {};
60527
61689
 
60528
61690
 
60529
61691
  /***/ }),
@@ -60563,11 +61725,14 @@ function _define_property(obj, key, value) {
60563
61725
  * Process `video` and `audio`
60564
61726
  */ function media(editor) {
60565
61727
  var keyFake = 'jodit_fake_wrapper';
60566
- var _editor_options = editor.options, mediaFakeTag = _editor_options.mediaFakeTag, mediaBlocks = _editor_options.mediaBlocks, mediaInFakeBlock = _editor_options.mediaInFakeBlock;
61728
+ var _editor_options = editor.options, mediaFakeTag = _editor_options.mediaFakeTag, mediaBlocks = _editor_options.mediaBlocks, mediaInFakeBlock = _editor_options.mediaInFakeBlock, mediaWrappers = _editor_options.mediaWrappers;
60567
61729
  var wrap = function wrap(element) {
61730
+ var _a;
60568
61731
  if (element.parentNode && (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_3__.attr)(element.parentNode, 'data-jodit_iframe_wrapper')) {
60569
61732
  element = element.parentNode;
60570
- } else {
61733
+ } else if (mediaWrappers[element.nodeName.toLowerCase()]) {
61734
+ element = (_a = (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_3__.getMediaWrapper)(editor, element)) !== null && _a !== void 0 ? _a : (0,_core_helpers_utils_index_js__WEBPACK_IMPORTED_MODULE_3__.wrapMedia)(editor, element);
61735
+ } else if (mediaInFakeBlock) {
60571
61736
  var wrapper = editor.createInside.element(mediaFakeTag, _define_property({
60572
61737
  'data-jodit-temp': 1,
60573
61738
  contenteditable: false,
@@ -60584,12 +61749,14 @@ function _define_property(obj, key, value) {
60584
61749
  }
60585
61750
  _core_dom_dom_js__WEBPACK_IMPORTED_MODULE_1__.Dom.append(wrapper, element);
60586
61751
  element = wrapper;
61752
+ } else {
61753
+ return;
60587
61754
  }
60588
61755
  editor.e.off(element, 'mousedown.select touchstart.select').on(element, 'mousedown.select touchstart.select', function() {
60589
61756
  editor.s.setCursorAfter(element);
60590
61757
  });
60591
61758
  };
60592
- if (mediaInFakeBlock) {
61759
+ if (mediaInFakeBlock || Object.keys(mediaWrappers).length) {
60593
61760
  editor.e.on('afterGetValueFromEditor', function(data) {
60594
61761
  var rxp = new RegExp("<".concat(mediaFakeTag, "[^>]+data-").concat(keyFake, "[^>]+>([^]+?)</").concat(mediaFakeTag, ">"), 'ig');
60595
61762
  if (rxp.test(data.value)) {
@@ -74401,16 +75568,34 @@ _core_global_js__WEBPACK_IMPORTED_MODULE_4__.pluginSystem.add('toolbarNavigation
74401
75568
 
74402
75569
 
74403
75570
 
75571
+ // Media the popup inserts go in their wrapper (see `mediaWrappers`), aligned
75572
+ // with `mediaDefaultAlign`
75573
+ function prepareMedia(jodit, element) {
75574
+ var media = (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.wrapMedia)(jodit, element);
75575
+ var mediaDefaultAlign = jodit.o.mediaDefaultAlign;
75576
+ if (mediaDefaultAlign && mediaDefaultAlign !== 'normal') {
75577
+ (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.hAlignElement)(media, mediaDefaultAlign, (0,_core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.getAlignClasses)(jodit, media));
75578
+ }
75579
+ return media;
75580
+ }
74404
75581
  function insertVideos(data) {
74405
75582
  var _this = this;
74406
75583
  var _a;
74407
75584
  (_a = data.files) === null || _a === void 0 ? void 0 : _a.forEach(function(file) {
74408
- _this.s.insertNode(_this.createInside.element('video', {
75585
+ _this.s.insertNode(prepareMedia(_this, _this.createInside.element('video', {
74409
75586
  controls: '',
74410
75587
  src: data.baseurl + file
74411
- }));
75588
+ })));
74412
75589
  });
74413
75590
  }
75591
+ // Embed code that is one element is prepared as media; other code goes in as
75592
+ // it is
75593
+ function prepareEmbedCode(jodit, code) {
75594
+ var box = jodit.createInside.div();
75595
+ box.innerHTML = code.trim();
75596
+ var element = box.firstElementChild;
75597
+ return element && box.childNodes.length === 1 ? prepareMedia(jodit, element) : code;
75598
+ }
74414
75599
  _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.video = {
74415
75600
  parseUrlToVideoEmbed: _core_helpers_index_js__WEBPACK_IMPORTED_MODULE_0__.convertMediaUrlToVideoEmbed,
74416
75601
  defaultWidth: 400,
@@ -74452,7 +75637,7 @@ _config_js__WEBPACK_IMPORTED_MODULE_4__.Config.prototype.controls.video = {
74452
75637
  ])
74453
75638
  ]), tabs = [], insertCode = function insertCode(code) {
74454
75639
  jodit.s.restore();
74455
- jodit.s.insertHTML(code);
75640
+ jodit.s.insertHTML(prepareEmbedCode(jodit, code));
74456
75641
  close();
74457
75642
  };
74458
75643
  jodit.s.save();