jodit-pro 4.9.4 → 4.9.15

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 (329) hide show
  1. package/CHANGELOG.md +44 -2
  2. package/config.js +1 -0
  3. package/es2015/jodit.css +1 -1
  4. package/es2015/jodit.fat.min.css +1 -1
  5. package/es2015/jodit.fat.min.js +26 -26
  6. package/es2015/jodit.js +5 -3
  7. package/es2015/jodit.min.js +2 -2
  8. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  9. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.js +10 -4
  10. package/es2015/plugins/ai-assistant-pro/ai-assistant-pro.min.js +6 -6
  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/keyboard/keyboard.css +1 -1
  43. package/es2015/plugins/keyboard/keyboard.js +1 -1
  44. package/es2015/plugins/keyboard/keyboard.min.js +1 -1
  45. package/es2015/plugins/mobile-view/mobile-view.js +1 -1
  46. package/es2015/plugins/mobile-view/mobile-view.min.js +1 -1
  47. package/es2015/plugins/page-break/page-break.js +1 -1
  48. package/es2015/plugins/page-break/page-break.min.js +1 -1
  49. package/es2015/plugins/paste-code/paste-code.css +1 -1
  50. package/es2015/plugins/paste-code/paste-code.js +1 -1
  51. package/es2015/plugins/paste-code/paste-code.min.js +1 -1
  52. package/es2015/plugins/paste-from-word/paste-from-word.js +1 -1
  53. package/es2015/plugins/paste-from-word/paste-from-word.min.js +1 -1
  54. package/es2015/plugins/show-blocks/show-blocks.js +1 -1
  55. package/es2015/plugins/show-blocks/show-blocks.min.js +1 -1
  56. package/es2015/plugins/style/style.css +79 -0
  57. package/es2015/plugins/style/style.js +395 -0
  58. package/es2015/plugins/style/style.min.css +1 -0
  59. package/es2015/plugins/style/style.min.js +8 -0
  60. package/es2015/plugins/todo-list/todo-list.css +1 -1
  61. package/es2015/plugins/todo-list/todo-list.js +1 -1
  62. package/es2015/plugins/todo-list/todo-list.min.js +1 -1
  63. package/es2015/plugins/translate/translate.css +1 -1
  64. package/es2015/plugins/translate/translate.js +1 -1
  65. package/es2015/plugins/translate/translate.min.js +1 -1
  66. package/es2015/plugins/tune-block/tune-block.css +1 -1
  67. package/es2015/plugins/tune-block/tune-block.js +1 -1
  68. package/es2015/plugins/tune-block/tune-block.min.js +1 -1
  69. package/es2018/jodit.fat.min.css +1 -1
  70. package/es2018/jodit.fat.min.js +15 -15
  71. package/es2018/jodit.min.js +2 -2
  72. package/es2018/plugins/ai-assistant-pro/ai-assistant-pro.min.js +7 -7
  73. package/es2018/plugins/autocomplete/autocomplete.min.js +1 -1
  74. package/es2018/plugins/backup/backup.min.js +1 -1
  75. package/es2018/plugins/button-generator/button-generator.min.js +1 -1
  76. package/es2018/plugins/change-case/change-case.min.js +1 -1
  77. package/es2018/plugins/color-picker/color-picker.min.js +1 -1
  78. package/es2018/plugins/emoji/emoji.min.js +1 -1
  79. package/es2018/plugins/export-docs/export-docs.min.js +1 -1
  80. package/es2018/plugins/finder/finder.min.js +1 -1
  81. package/es2018/plugins/google-maps/google-maps.min.js +1 -1
  82. package/es2018/plugins/google-search/google-search.min.js +1 -1
  83. package/es2018/plugins/highlight-signature/highlight-signature.min.js +1 -1
  84. package/es2018/plugins/iframe-editor/iframe-editor.min.js +1 -1
  85. package/es2018/plugins/keyboard/keyboard.min.js +1 -1
  86. package/es2018/plugins/mobile-view/mobile-view.min.js +1 -1
  87. package/es2018/plugins/page-break/page-break.min.js +1 -1
  88. package/es2018/plugins/paste-code/paste-code.min.js +1 -1
  89. package/es2018/plugins/paste-from-word/paste-from-word.min.js +1 -1
  90. package/es2018/plugins/show-blocks/show-blocks.min.js +1 -1
  91. package/es2018/plugins/style/style.min.css +1 -0
  92. package/es2018/plugins/style/style.min.js +8 -0
  93. package/es2018/plugins/todo-list/todo-list.min.js +1 -1
  94. package/es2018/plugins/translate/translate.min.js +1 -1
  95. package/es2018/plugins/tune-block/tune-block.min.js +1 -1
  96. package/es2021/jodit.css +1 -1
  97. package/es2021/jodit.fat.min.css +1 -1
  98. package/es2021/jodit.fat.min.js +16 -16
  99. package/es2021/jodit.js +5 -3
  100. package/es2021/jodit.min.js +2 -2
  101. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  102. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.js +9 -4
  103. package/es2021/plugins/ai-assistant-pro/ai-assistant-pro.min.js +28 -28
  104. package/es2021/plugins/autocomplete/autocomplete.js +1 -1
  105. package/es2021/plugins/autocomplete/autocomplete.min.js +1 -1
  106. package/es2021/plugins/backup/backup.css +1 -1
  107. package/es2021/plugins/backup/backup.js +1 -1
  108. package/es2021/plugins/backup/backup.min.js +1 -1
  109. package/es2021/plugins/button-generator/button-generator.css +1 -1
  110. package/es2021/plugins/button-generator/button-generator.js +1 -1
  111. package/es2021/plugins/button-generator/button-generator.min.js +1 -1
  112. package/es2021/plugins/change-case/change-case.js +1 -1
  113. package/es2021/plugins/change-case/change-case.min.js +1 -1
  114. package/es2021/plugins/color-picker/color-picker.css +1 -1
  115. package/es2021/plugins/color-picker/color-picker.js +1 -1
  116. package/es2021/plugins/color-picker/color-picker.min.js +1 -1
  117. package/es2021/plugins/emoji/emoji.css +1 -1
  118. package/es2021/plugins/emoji/emoji.js +1 -1
  119. package/es2021/plugins/emoji/emoji.min.js +1 -1
  120. package/es2021/plugins/export-docs/export-docs.js +1 -1
  121. package/es2021/plugins/export-docs/export-docs.min.js +1 -1
  122. package/es2021/plugins/finder/finder.css +1 -1
  123. package/es2021/plugins/finder/finder.js +1 -1
  124. package/es2021/plugins/finder/finder.min.js +1 -1
  125. package/es2021/plugins/google-maps/google-maps.css +1 -1
  126. package/es2021/plugins/google-maps/google-maps.js +1 -1
  127. package/es2021/plugins/google-maps/google-maps.min.js +1 -1
  128. package/es2021/plugins/google-search/google-search.js +1 -1
  129. package/es2021/plugins/google-search/google-search.min.js +1 -1
  130. package/es2021/plugins/highlight-signature/highlight-signature.js +1 -1
  131. package/es2021/plugins/highlight-signature/highlight-signature.min.js +1 -1
  132. package/es2021/plugins/iframe-editor/iframe-editor.css +1 -1
  133. package/es2021/plugins/iframe-editor/iframe-editor.js +1 -1
  134. package/es2021/plugins/iframe-editor/iframe-editor.min.js +1 -1
  135. package/es2021/plugins/keyboard/keyboard.css +1 -1
  136. package/es2021/plugins/keyboard/keyboard.js +1 -1
  137. package/es2021/plugins/keyboard/keyboard.min.js +1 -1
  138. package/es2021/plugins/mobile-view/mobile-view.js +1 -1
  139. package/es2021/plugins/mobile-view/mobile-view.min.js +1 -1
  140. package/es2021/plugins/page-break/page-break.js +1 -1
  141. package/es2021/plugins/page-break/page-break.min.js +1 -1
  142. package/es2021/plugins/paste-code/paste-code.css +1 -1
  143. package/es2021/plugins/paste-code/paste-code.js +1 -1
  144. package/es2021/plugins/paste-code/paste-code.min.js +1 -1
  145. package/es2021/plugins/paste-from-word/paste-from-word.js +1 -1
  146. package/es2021/plugins/paste-from-word/paste-from-word.min.js +1 -1
  147. package/es2021/plugins/show-blocks/show-blocks.js +1 -1
  148. package/es2021/plugins/show-blocks/show-blocks.min.js +1 -1
  149. package/es2021/plugins/style/style.css +79 -0
  150. package/es2021/plugins/style/style.js +395 -0
  151. package/es2021/plugins/style/style.min.css +1 -0
  152. package/es2021/plugins/style/style.min.js +8 -0
  153. package/es2021/plugins/todo-list/todo-list.css +1 -1
  154. package/es2021/plugins/todo-list/todo-list.js +1 -1
  155. package/es2021/plugins/todo-list/todo-list.min.js +1 -1
  156. package/es2021/plugins/translate/translate.css +1 -1
  157. package/es2021/plugins/translate/translate.js +1 -1
  158. package/es2021/plugins/translate/translate.min.js +1 -1
  159. package/es2021/plugins/tune-block/tune-block.css +1 -1
  160. package/es2021/plugins/tune-block/tune-block.js +1 -1
  161. package/es2021/plugins/tune-block/tune-block.min.js +1 -1
  162. package/es2021.en/jodit.css +1 -1
  163. package/es2021.en/jodit.fat.min.css +1 -1
  164. package/es2021.en/jodit.fat.min.js +14 -14
  165. package/es2021.en/jodit.js +5 -3
  166. package/es2021.en/jodit.min.js +2 -2
  167. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  168. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.js +9 -4
  169. package/es2021.en/plugins/ai-assistant-pro/ai-assistant-pro.min.js +7 -7
  170. package/es2021.en/plugins/autocomplete/autocomplete.js +1 -1
  171. package/es2021.en/plugins/autocomplete/autocomplete.min.js +1 -1
  172. package/es2021.en/plugins/backup/backup.css +1 -1
  173. package/es2021.en/plugins/backup/backup.js +1 -1
  174. package/es2021.en/plugins/backup/backup.min.js +1 -1
  175. package/es2021.en/plugins/button-generator/button-generator.css +1 -1
  176. package/es2021.en/plugins/button-generator/button-generator.js +1 -1
  177. package/es2021.en/plugins/button-generator/button-generator.min.js +1 -1
  178. package/es2021.en/plugins/change-case/change-case.js +1 -1
  179. package/es2021.en/plugins/change-case/change-case.min.js +1 -1
  180. package/es2021.en/plugins/color-picker/color-picker.css +1 -1
  181. package/es2021.en/plugins/color-picker/color-picker.js +1 -1
  182. package/es2021.en/plugins/color-picker/color-picker.min.js +1 -1
  183. package/es2021.en/plugins/emoji/emoji.css +1 -1
  184. package/es2021.en/plugins/emoji/emoji.js +1 -1
  185. package/es2021.en/plugins/emoji/emoji.min.js +1 -1
  186. package/es2021.en/plugins/export-docs/export-docs.js +1 -1
  187. package/es2021.en/plugins/export-docs/export-docs.min.js +1 -1
  188. package/es2021.en/plugins/finder/finder.css +1 -1
  189. package/es2021.en/plugins/finder/finder.js +1 -1
  190. package/es2021.en/plugins/finder/finder.min.js +1 -1
  191. package/es2021.en/plugins/google-maps/google-maps.css +1 -1
  192. package/es2021.en/plugins/google-maps/google-maps.js +1 -1
  193. package/es2021.en/plugins/google-maps/google-maps.min.js +1 -1
  194. package/es2021.en/plugins/google-search/google-search.js +1 -1
  195. package/es2021.en/plugins/google-search/google-search.min.js +1 -1
  196. package/es2021.en/plugins/highlight-signature/highlight-signature.js +1 -1
  197. package/es2021.en/plugins/highlight-signature/highlight-signature.min.js +1 -1
  198. package/es2021.en/plugins/iframe-editor/iframe-editor.css +1 -1
  199. package/es2021.en/plugins/iframe-editor/iframe-editor.js +1 -1
  200. package/es2021.en/plugins/iframe-editor/iframe-editor.min.js +1 -1
  201. package/es2021.en/plugins/keyboard/keyboard.css +1 -1
  202. package/es2021.en/plugins/keyboard/keyboard.js +1 -1
  203. package/es2021.en/plugins/keyboard/keyboard.min.js +1 -1
  204. package/es2021.en/plugins/mobile-view/mobile-view.js +1 -1
  205. package/es2021.en/plugins/mobile-view/mobile-view.min.js +1 -1
  206. package/es2021.en/plugins/page-break/page-break.js +1 -1
  207. package/es2021.en/plugins/page-break/page-break.min.js +1 -1
  208. package/es2021.en/plugins/paste-code/paste-code.css +1 -1
  209. package/es2021.en/plugins/paste-code/paste-code.js +1 -1
  210. package/es2021.en/plugins/paste-code/paste-code.min.js +1 -1
  211. package/es2021.en/plugins/paste-from-word/paste-from-word.js +1 -1
  212. package/es2021.en/plugins/paste-from-word/paste-from-word.min.js +1 -1
  213. package/es2021.en/plugins/show-blocks/show-blocks.js +1 -1
  214. package/es2021.en/plugins/show-blocks/show-blocks.min.js +1 -1
  215. package/es2021.en/plugins/style/style.css +79 -0
  216. package/es2021.en/plugins/style/style.js +395 -0
  217. package/es2021.en/plugins/style/style.min.css +1 -0
  218. package/es2021.en/plugins/style/style.min.js +8 -0
  219. package/es2021.en/plugins/todo-list/todo-list.css +1 -1
  220. package/es2021.en/plugins/todo-list/todo-list.js +1 -1
  221. package/es2021.en/plugins/todo-list/todo-list.min.js +1 -1
  222. package/es2021.en/plugins/translate/translate.css +1 -1
  223. package/es2021.en/plugins/translate/translate.js +1 -1
  224. package/es2021.en/plugins/translate/translate.min.js +1 -1
  225. package/es2021.en/plugins/tune-block/tune-block.css +1 -1
  226. package/es2021.en/plugins/tune-block/tune-block.js +1 -1
  227. package/es2021.en/plugins/tune-block/tune-block.min.js +1 -1
  228. package/es5/jodit.css +2 -2
  229. package/es5/jodit.fat.min.css +1 -1
  230. package/es5/jodit.fat.min.js +2 -2
  231. package/es5/jodit.js +5 -3
  232. package/es5/jodit.min.css +2 -2
  233. package/es5/jodit.min.js +2 -2
  234. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.css +1 -1
  235. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.js +11 -5
  236. package/es5/plugins/ai-assistant-pro/ai-assistant-pro.min.js +2 -2
  237. package/es5/plugins/autocomplete/autocomplete.js +1 -1
  238. package/es5/plugins/autocomplete/autocomplete.min.js +1 -1
  239. package/es5/plugins/backup/backup.css +1 -1
  240. package/es5/plugins/backup/backup.js +1 -1
  241. package/es5/plugins/backup/backup.min.js +1 -1
  242. package/es5/plugins/button-generator/button-generator.css +1 -1
  243. package/es5/plugins/button-generator/button-generator.js +1 -1
  244. package/es5/plugins/button-generator/button-generator.min.js +1 -1
  245. package/es5/plugins/change-case/change-case.js +1 -1
  246. package/es5/plugins/change-case/change-case.min.js +1 -1
  247. package/es5/plugins/color-picker/color-picker.css +1 -1
  248. package/es5/plugins/color-picker/color-picker.js +1 -1
  249. package/es5/plugins/color-picker/color-picker.min.js +1 -1
  250. package/es5/plugins/emoji/emoji.css +1 -1
  251. package/es5/plugins/emoji/emoji.js +1 -1
  252. package/es5/plugins/emoji/emoji.min.js +1 -1
  253. package/es5/plugins/export-docs/export-docs.js +1 -1
  254. package/es5/plugins/export-docs/export-docs.min.js +1 -1
  255. package/es5/plugins/finder/finder.css +1 -1
  256. package/es5/plugins/finder/finder.js +1 -1
  257. package/es5/plugins/finder/finder.min.js +1 -1
  258. package/es5/plugins/google-maps/google-maps.css +1 -1
  259. package/es5/plugins/google-maps/google-maps.js +1 -1
  260. package/es5/plugins/google-maps/google-maps.min.js +1 -1
  261. package/es5/plugins/google-search/google-search.js +1 -1
  262. package/es5/plugins/google-search/google-search.min.js +1 -1
  263. package/es5/plugins/highlight-signature/highlight-signature.js +1 -1
  264. package/es5/plugins/highlight-signature/highlight-signature.min.js +1 -1
  265. package/es5/plugins/iframe-editor/iframe-editor.css +1 -1
  266. package/es5/plugins/iframe-editor/iframe-editor.js +1 -1
  267. package/es5/plugins/iframe-editor/iframe-editor.min.js +1 -1
  268. package/es5/plugins/keyboard/keyboard.css +1 -1
  269. package/es5/plugins/keyboard/keyboard.js +1 -1
  270. package/es5/plugins/keyboard/keyboard.min.js +1 -1
  271. package/es5/plugins/mobile-view/mobile-view.js +1 -1
  272. package/es5/plugins/mobile-view/mobile-view.min.js +1 -1
  273. package/es5/plugins/page-break/page-break.js +1 -1
  274. package/es5/plugins/page-break/page-break.min.js +1 -1
  275. package/es5/plugins/paste-code/paste-code.css +1 -1
  276. package/es5/plugins/paste-code/paste-code.js +1 -1
  277. package/es5/plugins/paste-code/paste-code.min.js +1 -1
  278. package/es5/plugins/paste-from-word/paste-from-word.js +1 -1
  279. package/es5/plugins/paste-from-word/paste-from-word.min.js +1 -1
  280. package/es5/plugins/show-blocks/show-blocks.js +1 -1
  281. package/es5/plugins/show-blocks/show-blocks.min.js +1 -1
  282. package/es5/plugins/style/style.css +79 -0
  283. package/es5/plugins/style/style.js +524 -0
  284. package/es5/plugins/style/style.min.css +1 -0
  285. package/es5/plugins/style/style.min.js +8 -0
  286. package/es5/plugins/todo-list/todo-list.css +1 -1
  287. package/es5/plugins/todo-list/todo-list.js +1 -1
  288. package/es5/plugins/todo-list/todo-list.min.js +1 -1
  289. package/es5/plugins/translate/translate.css +1 -1
  290. package/es5/plugins/translate/translate.js +1 -1
  291. package/es5/plugins/translate/translate.min.js +1 -1
  292. package/es5/plugins/tune-block/tune-block.css +1 -1
  293. package/es5/plugins/tune-block/tune-block.js +1 -1
  294. package/es5/plugins/tune-block/tune-block.min.js +1 -1
  295. package/es5/polyfills.fat.min.js +1 -1
  296. package/es5/polyfills.js +1 -1
  297. package/es5/polyfills.min.js +1 -1
  298. package/esm/config.d.ts +6 -0
  299. package/esm/plugins/ai-assistant-pro/ai-assistant-pro.js +2 -2
  300. package/esm/plugins/ai-assistant-pro/core/ai-response-handler.js +1 -1
  301. package/esm/plugins/ai-assistant-pro/core/panel-resize.js +1 -1
  302. package/esm/plugins/ai-assistant-pro/helpers/api-client.js +1 -1
  303. package/esm/plugins/all.js +1 -1
  304. package/esm/plugins/style/config.d.ts +13 -0
  305. package/esm/plugins/style/config.js +1 -0
  306. package/esm/plugins/style/helpers/apply-style.d.ts +8 -0
  307. package/esm/plugins/style/helpers/apply-style.js +1 -0
  308. package/esm/plugins/style/helpers/classify-definitions.d.ts +7 -0
  309. package/esm/plugins/style/helpers/classify-definitions.js +1 -0
  310. package/esm/plugins/style/helpers/detect-active-style.d.ts +8 -0
  311. package/esm/plugins/style/helpers/detect-active-style.js +1 -0
  312. package/esm/plugins/style/icon.svg.js +1 -0
  313. package/esm/plugins/style/interface.d.ts +15 -0
  314. package/esm/plugins/style/interface.js +0 -0
  315. package/esm/plugins/style/style.d.ts +18 -0
  316. package/esm/plugins/style/style.js +1 -0
  317. package/esm/plugins/style/ui/style-popup.d.ts +8 -0
  318. package/esm/plugins/style/ui/style-popup.js +1 -0
  319. package/examples/assets/app.js +2 -1
  320. package/examples/style-plugin.html +508 -0
  321. package/package.json +1 -1
  322. package/types/config.d.ts +6 -0
  323. package/types/plugins/style/config.d.ts +13 -0
  324. package/types/plugins/style/helpers/apply-style.d.ts +8 -0
  325. package/types/plugins/style/helpers/classify-definitions.d.ts +7 -0
  326. package/types/plugins/style/helpers/detect-active-style.d.ts +8 -0
  327. package/types/plugins/style/interface.d.ts +15 -0
  328. package/types/plugins/style/style.d.ts +18 -0
  329. package/types/plugins/style/ui/style-popup.d.ts +8 -0
@@ -0,0 +1,508 @@
1
+ <!DOCTYPE html>
2
+ <!--
3
+ * Jodit Editor PRO (https://xdsoft.net/jodit/)
4
+ * See LICENSE.md in the project root for license information.
5
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/
6
+ -->
7
+ <html>
8
+ <head>
9
+ <meta charset="UTF-8" />
10
+ <meta
11
+ name="viewport"
12
+ content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"
13
+ />
14
+ <meta http-equiv="X-UA-Compatible" content="ie=edge" />
15
+ <title>Jodit Pro — Style Plugin</title>
16
+ <link rel="icon" type="image/png" href="assets/icon.png" />
17
+ <style>
18
+ /* ===== Custom style definitions CSS ===== */
19
+
20
+ /* --- Block styles --- */
21
+
22
+ .document-title {
23
+ font-family: 'Oswald', 'Impact', Arial Narrow, sans-serif;
24
+ font-size: 2.8em;
25
+ font-weight: 700;
26
+ line-height: 1.1;
27
+ text-transform: uppercase;
28
+ color: #1a1a2e;
29
+ margin: 0 0 0.2em;
30
+ padding: 0;
31
+ }
32
+
33
+ .document-subtitle {
34
+ font-family: 'Source Sans Pro', 'Helvetica Neue', sans-serif;
35
+ font-size: 1.35em;
36
+ font-weight: 300;
37
+ line-height: 1.4;
38
+ color: #6c757d;
39
+ margin: 0 0 0.8em;
40
+ padding: 0;
41
+ }
42
+
43
+ .category-header {
44
+ font-family: 'Oswald', 'Impact', Arial Narrow, sans-serif;
45
+ font-size: 0.75em;
46
+ font-weight: 400;
47
+ letter-spacing: 0.3em;
48
+ text-transform: uppercase;
49
+ color: #999;
50
+ margin: 0 0 0.4em;
51
+ padding: 0;
52
+ }
53
+
54
+ .info-box {
55
+ position: relative;
56
+ padding: 1.2em 1.5em;
57
+ border-left: 5px solid #e8436a;
58
+ border-radius: 0 8px 8px 0;
59
+ background: linear-gradient(135deg, #fef8f9 0%, #fff5f7 100%);
60
+ margin: 1.5em 0;
61
+ }
62
+
63
+ .info-box::before {
64
+ content: '';
65
+ position: absolute;
66
+ top: -6px;
67
+ right: -6px;
68
+ width: 0;
69
+ height: 0;
70
+ border-style: solid;
71
+ border-width: 0 24px 24px 0;
72
+ border-color: transparent #e8436a transparent transparent;
73
+ border-radius: 0 8px 0 0;
74
+ }
75
+
76
+ .side-quote {
77
+ position: relative;
78
+ padding: 1.5em 2em;
79
+ border: none;
80
+ background: none;
81
+ margin: 1.5em 0;
82
+ font-style: normal;
83
+ }
84
+
85
+ .side-quote::before {
86
+ content: '\201C';
87
+ position: absolute;
88
+ top: -0.2em;
89
+ left: 0;
90
+ font-family: Georgia, serif;
91
+ font-size: 5em;
92
+ font-weight: 700;
93
+ line-height: 1;
94
+ color: #e8436a;
95
+ opacity: 0.3;
96
+ }
97
+
98
+ .side-quote p:first-child {
99
+ font-family: 'Oswald', 'Impact', Arial Narrow, sans-serif;
100
+ font-size: 1.4em;
101
+ font-weight: 700;
102
+ line-height: 1.3;
103
+ text-transform: uppercase;
104
+ color: #1a1a2e;
105
+ }
106
+
107
+ .side-quote p:last-child {
108
+ font-family: 'Oswald', 'Impact', Arial Narrow, sans-serif;
109
+ font-size: 0.75em;
110
+ font-weight: 400;
111
+ letter-spacing: 0.2em;
112
+ text-align: right;
113
+ text-transform: uppercase;
114
+ color: #999;
115
+ margin-top: 0.5em;
116
+ }
117
+
118
+ .fancy-code {
119
+ position: relative;
120
+ padding: 2em 1.5em 1.5em;
121
+ border-radius: 12px;
122
+ margin: 1.5em 0;
123
+ font-family: 'SF Mono', 'Fira Code', 'Fira Mono', Menlo, Consolas, monospace;
124
+ font-size: 0.9em;
125
+ line-height: 1.6;
126
+ overflow-x: auto;
127
+ }
128
+
129
+ .fancy-code::before {
130
+ content: '';
131
+ position: absolute;
132
+ top: 12px;
133
+ left: 16px;
134
+ width: 12px;
135
+ height: 12px;
136
+ border-radius: 50%;
137
+ background: #ff5f57;
138
+ box-shadow:
139
+ 20px 0 0 #ffbd2e,
140
+ 40px 0 0 #28c840;
141
+ }
142
+
143
+ .fancy-code-bright {
144
+ background: #f5f5f5;
145
+ border: 1px solid #e0e0e0;
146
+ color: #333;
147
+ }
148
+
149
+ .fancy-code-bright::after {
150
+ content: 'JavaScript';
151
+ position: absolute;
152
+ top: 8px;
153
+ right: 16px;
154
+ font-family: 'Source Sans Pro', sans-serif;
155
+ font-size: 0.75em;
156
+ color: #999;
157
+ }
158
+
159
+ .fancy-code-dark {
160
+ background: #1e1e2e;
161
+ color: #cdd6f4;
162
+ }
163
+
164
+ .fancy-code-dark::after {
165
+ content: 'JavaScript';
166
+ position: absolute;
167
+ top: 8px;
168
+ right: 16px;
169
+ font-family: 'Source Sans Pro', sans-serif;
170
+ font-size: 0.75em;
171
+ color: #585b70;
172
+ }
173
+
174
+ /* --- Text / Inline styles --- */
175
+
176
+ .marker {
177
+ background-color: #fdfd77;
178
+ padding: 0.05em 0.2em;
179
+ }
180
+
181
+ .marker-green {
182
+ background-color: #62f962;
183
+ padding: 0.05em 0.2em;
184
+ }
185
+
186
+ .marker-pink {
187
+ background-color: #fc7999;
188
+ padding: 0.05em 0.2em;
189
+ color: #fff;
190
+ }
191
+
192
+ .pen-red {
193
+ color: #e8436a;
194
+ }
195
+
196
+ .pen-green {
197
+ color: #118c4f;
198
+ }
199
+
200
+ .spoiler {
201
+ background-color: #1a1a2e;
202
+ color: #1a1a2e;
203
+ padding: 0.05em 0.2em;
204
+ border-radius: 3px;
205
+ transition: color 0.3s;
206
+ cursor: pointer;
207
+ }
208
+
209
+ .spoiler:hover {
210
+ color: #fff;
211
+ }
212
+
213
+ .typewriter {
214
+ font-family: 'SF Mono', 'Fira Code', Menlo, Consolas, monospace;
215
+ font-size: 0.92em;
216
+ background: #f0f0f0;
217
+ padding: 0.1em 0.4em;
218
+ border-radius: 4px;
219
+ border: 1px solid #ddd;
220
+ }
221
+
222
+ .uppercase-badge {
223
+ font-family: 'Oswald', 'Impact', Arial Narrow, sans-serif;
224
+ font-size: 0.7em;
225
+ font-weight: 600;
226
+ letter-spacing: 0.15em;
227
+ text-transform: uppercase;
228
+ background: #1a1a2e;
229
+ color: #fff;
230
+ padding: 0.2em 0.6em;
231
+ border-radius: 3px;
232
+ vertical-align: middle;
233
+ }
234
+ </style>
235
+ </head>
236
+ <body>
237
+ <header>
238
+ <nav>
239
+ <ul class="container">
240
+ <li>
241
+ <a href="https://xdsoft.net/jodit/">Jodit homepage</a>
242
+ </li>
243
+ <li>
244
+ <a href="https://xdsoft.net/jodit/play.html">Playground</a>
245
+ </li>
246
+ <li>
247
+ <a href="https://xdsoft.net/jodit/docs/">Documentation</a>
248
+ </li>
249
+ <li><a href="https://github.com/xdan/jodit/">Github</a></li>
250
+ <li>
251
+ <a href="https://github.com/xdan/jodit/blob/main/CHANGELOG.md">Changelog</a>
252
+ </li>
253
+ <li>
254
+ <a href="#examples">Examples</a>
255
+ <ul id="examples">
256
+ <!-- see app.js-->
257
+ </ul>
258
+ </li>
259
+ <li style="float: right">
260
+ <a href="https://github.com/xdan/jodit/releases/latest">Download</a>
261
+ </li>
262
+ </ul>
263
+ </nav>
264
+ </header>
265
+ <div id="main_container" class="container">
266
+ <h1>Style Plugin Demo</h1>
267
+ <p>
268
+ The <strong>Style</strong> plugin lets you apply predefined CSS
269
+ classes to block and inline elements. Click the
270
+ <strong>Styles</strong> button in the toolbar to see all
271
+ available styles grouped by type.
272
+ </p>
273
+ <div id="introduction">
274
+ <h3>JavaScript</h3>
275
+ <pre><code class="language-javascript">
276
+ Jodit.make('#editor', {
277
+ customStyles: {
278
+ definitions: [
279
+ // Block styles
280
+ { name: 'Document title', element: 'h2', classes: ['document-title'] },
281
+ { name: 'Subtitle', element: 'h3', classes: ['document-subtitle'] },
282
+ { name: 'Category header', element: 'p', classes: ['category-header'] },
283
+ { name: 'Info box', element: 'p', classes: ['info-box'] },
284
+ { name: 'Side quote', element: 'blockquote', classes: ['side-quote'] },
285
+ { name: 'Code (bright)', element: 'pre', classes: ['fancy-code', 'fancy-code-bright'] },
286
+ { name: 'Code (dark)', element: 'pre', classes: ['fancy-code', 'fancy-code-dark'] },
287
+ // Text styles
288
+ { name: 'Marker', element: 'span', classes: ['marker'] },
289
+ { name: 'Marker (green)', element: 'span', classes: ['marker-green'] },
290
+ { name: 'Marker (pink)', element: 'span', classes: ['marker-pink'] },
291
+ { name: 'Pen (red)', element: 'span', classes: ['pen-red'] },
292
+ { name: 'Pen (green)', element: 'span', classes: ['pen-green'] },
293
+ { name: 'Spoiler', element: 'span', classes: ['spoiler'] },
294
+ { name: 'Typewriter', element: 'span', classes: ['typewriter'] },
295
+ { name: 'Badge', element: 'span', classes: ['uppercase-badge'] },
296
+ ]
297
+ }
298
+ });
299
+ </code></pre>
300
+ </div>
301
+ <div class="result">
302
+ <textarea id="area_editor"></textarea>
303
+ </div>
304
+ </div>
305
+ <footer>
306
+ <nav>
307
+ <ul class="container">
308
+ <li>
309
+ <a href="https://xdsoft.net/jodit/">Jodit homepage</a>
310
+ </li>
311
+ <li>
312
+ <a href="https://xdsoft.net/jodit/play.html">Playground</a>
313
+ </li>
314
+ <li>
315
+ <a href="https://xdsoft.net/jodit/docs/">Documentation</a>
316
+ </li>
317
+ <li><a href="https://github.com/xdan/jodit/">Github</a></li>
318
+ <li>
319
+ <a href="https://github.com/xdan/jodit/blob/main/CHANGELOG.md">Changelog</a>
320
+ </li>
321
+ <li style="float: right">
322
+ <a href="https://github.com/xdan/jodit/releases/latest">Download</a>
323
+ </li>
324
+ </ul>
325
+ </nav>
326
+ </footer>
327
+ </body>
328
+ <link rel="stylesheet" href="./es2021/jodit.fat.min.css" />
329
+ <link rel="stylesheet" href="assets/app.css" />
330
+ <link
331
+ href="https://fonts.googleapis.com/css2?family=Oswald:wght@400;700&family=Source+Sans+Pro:wght@300;400;700&display=swap"
332
+ rel="stylesheet"
333
+ />
334
+
335
+ <script src="./es2021/jodit.fat.min.js"></script>
336
+ <script src="assets/prism.js"></script>
337
+ <script src="assets/app.js"></script>
338
+ <script>
339
+ const editor = Jodit.make('#area_editor', {
340
+ height: 600,
341
+ buttons: [
342
+ 'source',
343
+ '|',
344
+ 'bold',
345
+ 'italic',
346
+ 'underline',
347
+ 'strikethrough',
348
+ '|',
349
+ 'style',
350
+ '|',
351
+ 'ul',
352
+ 'ol',
353
+ '|',
354
+ 'font',
355
+ 'fontsize',
356
+ 'brush',
357
+ 'paragraph',
358
+ '|',
359
+ 'image',
360
+ 'table',
361
+ 'link',
362
+ '|',
363
+ 'align',
364
+ '|',
365
+ 'undo',
366
+ 'redo',
367
+ '|',
368
+ 'hr',
369
+ 'eraser',
370
+ 'fullsize'
371
+ ],
372
+ customStyles: {
373
+ definitions: [
374
+ // Block styles
375
+ {
376
+ name: 'Document title',
377
+ element: 'h2',
378
+ classes: ['document-title']
379
+ },
380
+ {
381
+ name: 'Subtitle',
382
+ element: 'h3',
383
+ classes: ['document-subtitle']
384
+ },
385
+ {
386
+ name: 'Category header',
387
+ element: 'p',
388
+ classes: ['category-header']
389
+ },
390
+ {
391
+ name: 'Info box',
392
+ element: 'p',
393
+ classes: ['info-box']
394
+ },
395
+ {
396
+ name: 'Side quote',
397
+ element: 'blockquote',
398
+ classes: ['side-quote']
399
+ },
400
+ {
401
+ name: 'Code (bright)',
402
+ element: 'pre',
403
+ classes: ['fancy-code', 'fancy-code-bright']
404
+ },
405
+ {
406
+ name: 'Code (dark)',
407
+ element: 'pre',
408
+ classes: ['fancy-code', 'fancy-code-dark']
409
+ },
410
+ // Text styles
411
+ {
412
+ name: 'Marker',
413
+ element: 'span',
414
+ classes: ['marker']
415
+ },
416
+ {
417
+ name: 'Marker (green)',
418
+ element: 'span',
419
+ classes: ['marker-green']
420
+ },
421
+ {
422
+ name: 'Marker (pink)',
423
+ element: 'span',
424
+ classes: ['marker-pink']
425
+ },
426
+ {
427
+ name: 'Pen (red)',
428
+ element: 'span',
429
+ classes: ['pen-red']
430
+ },
431
+ {
432
+ name: 'Pen (green)',
433
+ element: 'span',
434
+ classes: ['pen-green']
435
+ },
436
+ {
437
+ name: 'Spoiler',
438
+ element: 'span',
439
+ classes: ['spoiler']
440
+ },
441
+ {
442
+ name: 'Typewriter',
443
+ element: 'span',
444
+ classes: ['typewriter']
445
+ },
446
+ {
447
+ name: 'Badge',
448
+ element: 'span',
449
+ classes: ['uppercase-badge']
450
+ }
451
+ ]
452
+ }
453
+ });
454
+
455
+ editor.value = `
456
+ <p class="category-header">Deep Dive</p>
457
+ <h2 class="document-title">The lost art of slow reading</h2>
458
+ <h3 class="document-subtitle">Why the way we consume text has fundamentally changed — and what we can do about it</h3>
459
+ <hr>
460
+ <blockquote class="side-quote">
461
+ <p>We are drowning in information but starving for knowledge.</p>
462
+ <p>Rutherford D. Rogers</p>
463
+ </blockquote>
464
+ <p>There was a time when reading a book meant <span class="marker">sitting with it for hours</span>, letting sentences settle into the mind like tea steeping in hot water. Today, most of us read the way we drive on a highway — scanning signs, changing lanes, barely noticing the scenery.</p>
465
+ <p>The average person now spends roughly <span class="pen-red">eight hours a day</span> looking at screens. That's more time than most of us sleep. And the vast majority of that time is spent skimming: headlines, notifications, feeds, threads. We scroll past ten thousand words before lunch and remember <span class="spoiler">almost none of them</span>.</p>
466
+ <p class="info-box">A 2023 study at the University of Valencia found that people who read long-form text on screens comprehend 29% less than those who read the same text on paper. The effect was strongest for <strong>informational</strong> texts and nearly disappeared for narrative fiction.</p>
467
+ <hr>
468
+ <h4>The F-shaped pattern</h4>
469
+ <p>Eye-tracking research by the Nielsen Norman Group revealed something called the <span class="typewriter">F-shaped reading pattern</span>. Users read the first few lines almost fully, then scan progressively less and less as they move down the page, creating a shape that looks like the letter F.</p>
470
+ <p>This isn't laziness — it's <span class="pen-green">adaptation</span>. When you encounter hundreds of articles per day, your brain develops shortcuts. The problem is that these shortcuts are <span class="marker-pink">terrible</span> for deep comprehension.</p>
471
+ <pre class="fancy-code fancy-code-bright"><code>// How your brain reads the web:
472
+ read(firstLine); // 100% attention
473
+ read(secondLine); // 80% attention
474
+ scan(thirdLine); // 40% attention
475
+ skip(everythingElse); // 5% attention
476
+ scrollToComments(); // 200% attention</code></pre>
477
+ <h4>Three techniques for deeper reading</h4>
478
+ <p><span class="uppercase-badge">First</span> Try the <strong>Pomodoro method</strong> for reading: 25 minutes of focused reading, then a 5-minute break. No phone, no tabs, no multitasking. Just you and the text.</p>
479
+ <p><span class="uppercase-badge">Second</span> Annotate as you go. <span class="marker-green">Highlighting passages</span> forces your brain to evaluate what's important, creating a secondary layer of engagement with the material.</p>
480
+ <p><span class="uppercase-badge">Third</span> After finishing a chapter or article, close your eyes and try to summarize what you just read in three sentences. If you can't, go back. This is called <span class="typewriter">retrieval practice</span> and it's one of the most effective learning strategies known to cognitive science.</p>
481
+ <pre class="fancy-code fancy-code-dark"><code>// A simple reading tracker
482
+ const session = {
483
+ started: new Date(),
484
+ pages: 0,
485
+ notes: [],
486
+ addNote(text) {
487
+ this.notes.push({
488
+ text,
489
+ time: new Date(),
490
+ page: this.pages
491
+ });
492
+ },
493
+ summary() {
494
+ const mins = (Date.now() - this.started) / 60000;
495
+ return \`Read \${this.pages} pages in \${mins.toFixed(0)} min\`;
496
+ }
497
+ };</code></pre>
498
+ <h4>The paradox of choice</h4>
499
+ <p>We have access to more written material than any generation in history. The Library of Alexandria held roughly <span class="pen-red">400,000 scrolls</span>. Today, the internet adds an estimated 2.5 million new blog posts <em>every single day</em>.</p>
500
+ <p>Yet for all this abundance, most people read <span class="marker">fewer books per year</span> than their grandparents did. The sheer volume of available content creates a kind of paralysis — there's always something <span class="spoiler">newer, shorter, more urgent</span> competing for attention.</p>
501
+ <blockquote class="side-quote">
502
+ <p>A reader lives a thousand lives before he dies. The man who never reads lives only one.</p>
503
+ <p>George R.R. Martin</p>
504
+ </blockquote>
505
+ <p>The solution isn't to read <em>more</em> — it's to read <span class="pen-green">better</span>. Choose fewer things, read them more carefully, and give yourself permission to <span class="marker-pink">sit with an idea</span> before rushing to the next one.</p>
506
+ `;
507
+ </script>
508
+ </html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jodit-pro",
3
- "version": "4.9.4",
3
+ "version": "4.9.15",
4
4
  "author": "Chupurnov Valerii <chupurnov@gmail.com>",
5
5
  "homepage": "https://xdsoft.net/jodit/pro/",
6
6
  "bugs": {
package/types/config.d.ts CHANGED
@@ -19,6 +19,7 @@ import type { ButtonGroup } from "jodit/esm/types/index";
19
19
  import type { ILayoutKeys } from "./plugins/keyboard/interface";
20
20
  import type { CanPromise } from "jodit/esm/types/index";
21
21
  import type { IUIOption } from "jodit/esm/types/index";
22
+ import type { IStyleDefinition } from "./plugins/style/interface";
22
23
  import type { ITranslateProviderFactory } from "./plugins/translate/interface";
23
24
  import type { IGoogleTranslateProviderOptions } from "./plugins/translate/interface";
24
25
  import type { IControlType } from "jodit/esm/types/index";
@@ -192,6 +193,11 @@ interface Config {
192
193
  tagList: string[];
193
194
  };
194
195
  }
196
+ interface Config {
197
+ customStyles: {
198
+ definitions: IStyleDefinition[];
199
+ };
200
+ }
195
201
  interface Config {
196
202
  todoList: {
197
203
  className: string;
@@ -0,0 +1,13 @@
1
+ /*!
2
+ * Jodit Editor PRO (https://xdsoft.net/jodit/)
3
+ * See LICENSE.md in the project root for license information.
4
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/
5
+ */
6
+ import type { IStyleDefinition } from "./interface";
7
+ declare module 'jodit/esm/config' {
8
+ interface Config {
9
+ customStyles: {
10
+ definitions: IStyleDefinition[];
11
+ };
12
+ }
13
+ }
@@ -0,0 +1,8 @@
1
+ /*!
2
+ * Jodit Editor PRO (https://xdsoft.net/jodit/)
3
+ * See LICENSE.md in the project root for license information.
4
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/
5
+ */
6
+ import type { IJodit } from "jodit/esm/types/index";
7
+ import type { IStyleDefinition } from "../interface";
8
+ export declare function applyStyle(editor: IJodit, def: IStyleDefinition, definitions: IStyleDefinition[]): void;
@@ -0,0 +1,7 @@
1
+ /*!
2
+ * Jodit Editor PRO (https://xdsoft.net/jodit/)
3
+ * See LICENSE.md in the project root for license information.
4
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/
5
+ */
6
+ import type { IStyleDefinition, IStyleGroup } from "../interface";
7
+ export declare function classifyDefinitions(definitions: IStyleDefinition[]): IStyleGroup[];
@@ -0,0 +1,8 @@
1
+ /*!
2
+ * Jodit Editor PRO (https://xdsoft.net/jodit/)
3
+ * See LICENSE.md in the project root for license information.
4
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/
5
+ */
6
+ import type { IJodit } from "jodit/esm/types/index";
7
+ import type { IStyleDefinition } from "../interface";
8
+ export declare function detectActiveStyle(editor: IJodit, definitions: IStyleDefinition[]): IStyleDefinition | null;
@@ -0,0 +1,15 @@
1
+ /*!
2
+ * Jodit Editor PRO (https://xdsoft.net/jodit/)
3
+ * See LICENSE.md in the project root for license information.
4
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/
5
+ */
6
+ import type { HTMLTagNames } from "jodit/esm/types/index";
7
+ export interface IStyleDefinition {
8
+ name: string;
9
+ element: HTMLTagNames;
10
+ classes: string[];
11
+ }
12
+ export interface IStyleGroup {
13
+ title: string;
14
+ definitions: IStyleDefinition[];
15
+ }
@@ -0,0 +1,18 @@
1
+ /*!
2
+ * Jodit Editor PRO (https://xdsoft.net/jodit/)
3
+ * See LICENSE.md in the project root for license information.
4
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/
5
+ */
6
+ import type { IJodit } from "jodit/esm/types/index";
7
+ import "./config";
8
+ import { Plugin } from "jodit/esm/core/plugin/index";
9
+ export declare class style extends Plugin {
10
+ /** @override */
11
+ static requires: string[];
12
+ /** @override */
13
+ buttons: Plugin['buttons'];
14
+ /** @override */
15
+ protected afterInit(_jodit: IJodit): void;
16
+ /** @override */
17
+ protected beforeDestruct(_jodit: IJodit): void;
18
+ }
@@ -0,0 +1,8 @@
1
+ /*!
2
+ * Jodit Editor PRO (https://xdsoft.net/jodit/)
3
+ * See LICENSE.md in the project root for license information.
4
+ * Copyright (c) 2013-2026 Valerii Chupurnov. All rights reserved. https://xdsoft.net/jodit/pro/
5
+ */
6
+ import type { IJodit } from "jodit/esm/types/index";
7
+ import type { IStyleDefinition } from "../interface";
8
+ export declare function buildStylePopup(editor: IJodit, definitions: IStyleDefinition[], close: () => void): HTMLElement;