jodit 3.10.2 → 3.12.2

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 (843) hide show
  1. package/.github/workflows/docs.yml +16 -0
  2. package/.github/workflows/tests.yml +1 -2
  3. package/.idea/dictionaries/v_chupurnov.xml +1 -0
  4. package/.idea/workspace.xml +303 -269
  5. package/CHANGELOG.MD +63 -7
  6. package/LICENSE.txt +1 -1
  7. package/README.md +6 -4
  8. package/build/jodit.css +85 -85
  9. package/build/jodit.es2018.css +74 -74
  10. package/build/jodit.es2018.en.css +74 -74
  11. package/build/jodit.es2018.en.js +2933 -2707
  12. package/build/jodit.es2018.en.min.css +1 -1
  13. package/build/jodit.es2018.en.min.js +1 -1
  14. package/build/jodit.es2018.js +2807 -2581
  15. package/build/jodit.es2018.min.css +1 -1
  16. package/build/jodit.es2018.min.js +1 -1
  17. package/build/jodit.js +3864 -3537
  18. package/build/jodit.min.css +2 -2
  19. package/build/jodit.min.js +1 -1
  20. package/index.d.ts +1 -1
  21. package/package.json +14 -2
  22. package/src/README.md +55 -0
  23. package/src/config.ts +5 -1
  24. package/src/core/async/README.md +147 -0
  25. package/src/core/{async.ts → async/async.ts} +16 -7
  26. package/src/core/async/index.ts +11 -0
  27. package/src/core/component/README.md +110 -0
  28. package/src/core/component/component.ts +7 -1
  29. package/src/core/component/index.ts +5 -1
  30. package/src/core/component/statuses.ts +5 -1
  31. package/src/core/component/view-component.ts +5 -1
  32. package/src/core/constants.ts +5 -1
  33. package/src/core/create/README.md +57 -0
  34. package/src/core/{create.ts → create/create.ts} +11 -5
  35. package/src/core/create/index.ts +11 -0
  36. package/src/core/decorators/README.md +4 -0
  37. package/src/core/decorators/cache/README.md +17 -0
  38. package/src/core/decorators/{cache.ts → cache/cache.ts} +9 -3
  39. package/src/core/decorators/component/README.md +65 -0
  40. package/src/core/decorators/{component.ts → component/component.ts} +8 -2
  41. package/src/core/decorators/debounce/README.md +44 -0
  42. package/src/core/decorators/{debounce.ts → debounce/debounce.ts} +11 -8
  43. package/src/core/decorators/hook/README.md +16 -0
  44. package/src/core/decorators/{hook.ts → hook/hook.ts} +11 -4
  45. package/src/core/decorators/idle/README.md +1 -0
  46. package/src/core/decorators/{idle.ts → idle/idle.ts} +11 -7
  47. package/src/core/decorators/index.ts +16 -10
  48. package/src/core/decorators/nonenumerable/README.md +15 -0
  49. package/src/core/decorators/{nonenumerable.ts → nonenumerable/nonenumerable.ts} +5 -2
  50. package/src/core/decorators/persistent/README.md +23 -0
  51. package/src/core/decorators/{persistent.ts → persistent/persistent.ts} +9 -6
  52. package/src/core/decorators/wait/README.md +20 -0
  53. package/src/core/decorators/{wait.ts → wait/wait.ts} +9 -6
  54. package/src/core/decorators/watch/README.md +125 -0
  55. package/src/core/decorators/{watch.ts → watch/watch.ts} +16 -14
  56. package/src/core/dom/README.md +13 -0
  57. package/src/core/{dom.ts → dom/dom.ts} +31 -10
  58. package/src/core/dom/index.ts +11 -0
  59. package/src/core/event-emitter/README.md +39 -0
  60. package/src/core/{events → event-emitter}/event-emitter.ts +9 -9
  61. package/src/core/{events → event-emitter}/index.ts +5 -1
  62. package/src/core/{events → event-emitter}/observe-object.ts +17 -8
  63. package/src/core/{events → event-emitter}/store.ts +5 -1
  64. package/src/core/global.ts +12 -12
  65. package/src/core/helpers/README.md +1 -0
  66. package/src/core/helpers/array/as-array.ts +5 -1
  67. package/src/core/helpers/array/index.ts +5 -1
  68. package/src/core/helpers/array/split-array.ts +5 -1
  69. package/src/core/helpers/array/to-array.ts +5 -1
  70. package/src/core/helpers/async/index.ts +5 -1
  71. package/src/core/helpers/async/set-timeout.ts +5 -1
  72. package/src/core/helpers/checker/has-browser-color-picker.ts +5 -1
  73. package/src/core/helpers/checker/index.ts +5 -1
  74. package/src/core/helpers/checker/is-array.ts +5 -1
  75. package/src/core/helpers/checker/is-boolean.ts +5 -1
  76. package/src/core/helpers/checker/is-equal.ts +5 -1
  77. package/src/core/helpers/checker/is-function.ts +5 -1
  78. package/src/core/helpers/checker/is-html-from-word.ts +5 -1
  79. package/src/core/helpers/checker/is-html.ts +5 -1
  80. package/src/core/helpers/checker/is-imp-interface.ts +5 -1
  81. package/src/core/helpers/checker/is-int.ts +5 -1
  82. package/src/core/helpers/checker/is-jodit-object.ts +5 -1
  83. package/src/core/helpers/checker/is-license.ts +5 -1
  84. package/src/core/helpers/checker/is-native-function.ts +5 -1
  85. package/src/core/helpers/checker/is-number.ts +5 -1
  86. package/src/core/helpers/checker/is-numeric.ts +5 -1
  87. package/src/core/helpers/checker/is-plain-object.ts +5 -1
  88. package/src/core/helpers/checker/is-promise.ts +5 -1
  89. package/src/core/helpers/checker/is-string.ts +5 -1
  90. package/src/core/helpers/checker/is-url.ts +5 -1
  91. package/src/core/helpers/checker/is-valid-name.ts +5 -1
  92. package/src/core/helpers/checker/is-void.ts +5 -1
  93. package/src/core/helpers/checker/is-window.ts +5 -1
  94. package/src/core/helpers/color/color-to-hex.ts +5 -1
  95. package/src/core/helpers/color/index.ts +5 -1
  96. package/src/core/helpers/html/apply-styles.ts +6 -2
  97. package/src/core/helpers/html/clean-from-word.ts +5 -1
  98. package/src/core/helpers/html/htmlspecialchars.ts +5 -1
  99. package/src/core/helpers/html/index.ts +5 -1
  100. package/src/core/helpers/html/nl2br.ts +6 -2
  101. package/src/core/helpers/html/strip-tags.ts +6 -2
  102. package/src/core/helpers/index.ts +7 -22
  103. package/src/core/helpers/normalize/index.ts +5 -1
  104. package/src/core/helpers/normalize/normalize-color.ts +5 -1
  105. package/src/core/helpers/normalize/normalize-css-value.ts +5 -1
  106. package/src/core/helpers/normalize/normalize-key-aliases.ts +5 -1
  107. package/src/core/helpers/normalize/normalize-license.ts +5 -1
  108. package/src/core/helpers/normalize/normalize-node.ts +5 -1
  109. package/src/core/helpers/normalize/normalize-path.ts +5 -1
  110. package/src/core/helpers/normalize/normalize-relative-path.ts +5 -1
  111. package/src/core/helpers/normalize/normalize-size.ts +5 -1
  112. package/src/core/helpers/normalize/normalize-url.ts +5 -1
  113. package/src/core/helpers/size/get-content-width.ts +3 -2
  114. package/src/core/helpers/size/get-scroll-parent.ts +11 -5
  115. package/src/core/helpers/size/index.ts +5 -1
  116. package/src/core/helpers/size/inner-width.ts +5 -1
  117. package/src/core/helpers/size/object-size.ts +5 -1
  118. package/src/core/helpers/size/offset.ts +5 -1
  119. package/src/core/helpers/size/position.ts +5 -1
  120. package/src/core/helpers/string/camel-case.ts +5 -1
  121. package/src/core/helpers/string/i18n.ts +6 -2
  122. package/src/core/helpers/string/index.ts +5 -1
  123. package/src/core/helpers/string/kebab-case.ts +5 -1
  124. package/src/core/helpers/string/stringify.ts +5 -1
  125. package/src/core/helpers/string/trim.ts +5 -1
  126. package/src/core/helpers/string/ucfirst.ts +5 -1
  127. package/src/core/helpers/{append-script.ts → utils/append-script.ts} +7 -3
  128. package/src/core/helpers/{browser.ts → utils/browser.ts} +5 -1
  129. package/src/core/helpers/{build-query.ts → utils/build-query.ts} +7 -3
  130. package/src/core/helpers/{complete-url.ts → utils/complete-url.ts} +5 -1
  131. package/src/core/helpers/{config-proto.ts → utils/config-proto.ts} +8 -4
  132. package/src/core/helpers/{convert-media-url-to-video-embed.ts → utils/convert-media-url-to-video-embed.ts} +6 -2
  133. package/src/core/helpers/{css.ts → utils/css.ts} +9 -5
  134. package/src/core/helpers/{ctrl-key.ts → utils/ctrl-key.ts} +5 -1
  135. package/src/core/helpers/{data-bind.ts → utils/data-bind.ts} +8 -4
  136. package/src/core/helpers/{default-language.ts → utils/default-language.ts} +6 -2
  137. package/src/core/helpers/{type.ts → utils/error.ts} +5 -1
  138. package/src/core/helpers/{extend.ts → utils/extend.ts} +6 -2
  139. package/src/core/helpers/utils/get-class-name.ts +5 -1
  140. package/src/core/helpers/utils/get.ts +5 -1
  141. package/src/core/helpers/{human-size-to-bytes.ts → utils/human-size-to-bytes.ts} +5 -1
  142. package/src/core/helpers/utils/index.ts +22 -1
  143. package/src/core/helpers/utils/mark-deprecated.ts +5 -1
  144. package/src/core/helpers/{parse-query.ts → utils/parse-query.ts} +6 -2
  145. package/src/core/helpers/{scroll-into-view.ts → utils/scroll-into-view.ts} +5 -1
  146. package/src/core/helpers/{selector.ts → utils/selector.ts} +13 -9
  147. package/src/core/helpers/utils/set.ts +5 -1
  148. package/src/core/helpers/utils/stack.ts +6 -1
  149. package/src/core/helpers/utils/utils.ts +7 -3
  150. package/src/core/helpers/{val.ts → utils/val.ts} +5 -1
  151. package/src/core/plugin/README.md +133 -0
  152. package/src/core/plugin/index.ts +12 -0
  153. package/src/core/{plugin-system.ts → plugin/plugin-system.ts} +7 -3
  154. package/src/core/{plugin.ts → plugin/plugin.ts} +11 -5
  155. package/src/core/request/README.md +11 -0
  156. package/src/core/request/ajax.ts +23 -14
  157. package/src/core/request/config.ts +5 -1
  158. package/src/core/request/index.ts +5 -1
  159. package/src/core/request/response.ts +13 -5
  160. package/src/core/selection/README.md +20 -0
  161. package/src/core/selection/index.ts +5 -1
  162. package/src/core/selection/select.ts +8 -2
  163. package/src/core/selection/style/api/element-has-same-style.ts +2 -1
  164. package/src/core/selection/style/api/extract.ts +2 -1
  165. package/src/core/selection/style/api/finite-state-machine.ts +1 -1
  166. package/src/core/selection/style/api/get-suit-child.ts +2 -1
  167. package/src/core/selection/style/api/get-suit-parent.ts +2 -1
  168. package/src/core/selection/style/api/index.ts +1 -1
  169. package/src/core/selection/style/api/is-inside-invisible-element.ts +2 -1
  170. package/src/core/selection/style/api/is-normal-node.ts +2 -1
  171. package/src/core/selection/style/api/is-suit-element.ts +2 -1
  172. package/src/core/selection/style/api/toggle/toggle-css.ts +3 -2
  173. package/src/core/selection/style/api/toggle/toggle-ordered-list.ts +2 -1
  174. package/src/core/selection/style/api/toggle-commit-styles.ts +2 -1
  175. package/src/core/selection/style/api/unwrap-children.ts +2 -1
  176. package/src/core/selection/style/api/wrap-and-commit-style.ts +2 -1
  177. package/src/core/selection/style/api/wrap-ordered-list.ts +2 -1
  178. package/src/core/selection/style/api/wrap-unwrapped-text.ts +2 -1
  179. package/src/core/selection/style/apply-style.ts +5 -1
  180. package/src/core/selection/style/commit-style.ts +5 -1
  181. package/src/core/storage/README.md +13 -0
  182. package/src/core/storage/engines/local-storage-provider.ts +5 -1
  183. package/src/core/storage/engines/memory-storage-provider.ts +5 -1
  184. package/src/core/storage/index.ts +5 -1
  185. package/src/core/storage/storage.ts +7 -1
  186. package/src/core/traits/elms.ts +5 -1
  187. package/src/core/traits/index.ts +5 -1
  188. package/src/core/traits/mods.ts +5 -1
  189. package/src/core/ui/README.md +51 -0
  190. package/src/core/ui/button/README.md +3 -0
  191. package/src/core/ui/button/button/button.less +1 -1
  192. package/src/core/ui/button/button/button.ts +6 -2
  193. package/src/core/ui/button/group/group.ts +6 -2
  194. package/src/core/ui/button/index.ts +7 -1
  195. package/src/core/ui/element.ts +5 -1
  196. package/src/core/ui/form/README.md +22 -0
  197. package/src/core/ui/form/block/block.ts +6 -2
  198. package/src/core/ui/form/form.ts +8 -2
  199. package/src/core/ui/form/index.ts +5 -1
  200. package/src/core/ui/form/inputs/area/area.ts +5 -1
  201. package/src/core/ui/form/inputs/checkbox/checkbox.ts +5 -1
  202. package/src/core/ui/form/inputs/file/file.ts +5 -1
  203. package/src/core/ui/form/inputs/index.ts +5 -1
  204. package/src/core/ui/form/inputs/input/input.ts +5 -1
  205. package/src/core/ui/form/inputs/select/select.ts +5 -1
  206. package/src/core/ui/form/validators/index.ts +5 -1
  207. package/src/core/ui/form/validators/input.ts +5 -1
  208. package/src/core/ui/form/validators/select.ts +5 -1
  209. package/src/core/ui/group/README.md +1 -0
  210. package/src/core/ui/{list → group}/group.less +1 -1
  211. package/src/core/ui/{list → group}/group.ts +7 -1
  212. package/src/core/ui/{list → group}/index.ts +5 -1
  213. package/src/core/ui/{list → group}/list.less +1 -1
  214. package/src/core/ui/{list → group}/list.ts +5 -1
  215. package/src/core/ui/{list → group}/separator.ts +5 -1
  216. package/src/core/ui/{list → group}/spacer.ts +5 -1
  217. package/src/core/ui/helpers/buttons.ts +5 -1
  218. package/src/core/ui/helpers/get-control-type.ts +5 -1
  219. package/src/core/ui/helpers/get-strong-control-types.ts +5 -1
  220. package/src/core/ui/icon.ts +6 -2
  221. package/src/core/ui/index.ts +8 -2
  222. package/src/core/ui/popup/README.md +15 -0
  223. package/src/core/ui/popup/index.ts +5 -1
  224. package/src/core/ui/popup/popup.less +1 -1
  225. package/src/core/ui/popup/popup.ts +13 -3
  226. package/src/core/ui/progress-bar/README.md +1 -0
  227. package/src/core/ui/progress-bar/progress-bar.less +1 -1
  228. package/src/core/ui/progress-bar/progress-bar.ts +7 -1
  229. package/src/core/view/README.md +24 -0
  230. package/src/core/view/view-with-toolbar.less +1 -1
  231. package/src/core/view/view-with-toolbar.ts +5 -1
  232. package/src/core/view/view.ts +11 -4
  233. package/src/header.js +1 -1
  234. package/src/index.ts +7 -1
  235. package/src/jodit.ts +7 -1
  236. package/src/langs/README.md +1 -0
  237. package/src/langs/ar.js +1 -1
  238. package/src/langs/cs_cz.js +1 -1
  239. package/src/langs/de.js +1 -1
  240. package/src/langs/en.js +1 -1
  241. package/src/langs/es.js +1 -1
  242. package/src/langs/fa.js +1 -1
  243. package/src/langs/fr.js +1 -1
  244. package/src/langs/he.js +1 -1
  245. package/src/langs/hu.js +1 -1
  246. package/src/langs/id.js +1 -1
  247. package/src/langs/index.ts +8 -1
  248. package/src/langs/it.js +1 -1
  249. package/src/langs/ja.js +1 -1
  250. package/src/langs/ko.js +1 -1
  251. package/src/langs/nl.js +1 -1
  252. package/src/langs/pl.js +1 -1
  253. package/src/langs/pt_br.js +1 -1
  254. package/src/langs/ru.js +1 -1
  255. package/src/langs/tr.js +1 -1
  256. package/src/langs/zh_cn.js +1 -1
  257. package/src/langs/zh_tw.js +1 -1
  258. package/src/modules/README.md +1 -0
  259. package/src/modules/context-menu/README.md +1 -0
  260. package/src/modules/context-menu/context-menu.less +1 -1
  261. package/src/modules/context-menu/context-menu.ts +7 -1
  262. package/src/modules/dialog/README.md +45 -0
  263. package/src/modules/dialog/alert.ts +5 -1
  264. package/src/modules/dialog/confirm.ts +5 -1
  265. package/src/modules/dialog/dialog.less +1 -1
  266. package/src/modules/dialog/dialog.ts +5 -1
  267. package/src/modules/dialog/index.ts +7 -1
  268. package/src/modules/dialog/prompt.ts +5 -1
  269. package/src/modules/file-browser/{README.MD → README.md} +173 -63
  270. package/src/modules/file-browser/builders/context-menu.ts +7 -3
  271. package/src/modules/file-browser/builders/item.ts +5 -1
  272. package/src/modules/file-browser/config.ts +5 -1
  273. package/src/modules/file-browser/data-provider.ts +5 -1
  274. package/src/modules/file-browser/factories.ts +5 -1
  275. package/src/modules/file-browser/file-browser.ts +36 -17
  276. package/src/modules/file-browser/index.ts +13 -0
  277. package/src/modules/file-browser/listeners/native-listeners.ts +8 -4
  278. package/src/modules/file-browser/listeners/self-listeners.ts +7 -4
  279. package/src/modules/file-browser/listeners/state-listeners.ts +7 -4
  280. package/src/modules/file-browser/styles/file-browser.less +1 -1
  281. package/src/modules/file-browser/styles/index.less +1 -1
  282. package/src/modules/file-browser/styles/preview.less +1 -1
  283. package/src/modules/file-browser/ui/files/files.ts +1 -1
  284. package/src/modules/file-browser/ui/index.ts +5 -1
  285. package/src/modules/file-browser/ui/tree/tree.ts +1 -1
  286. package/src/modules/image-editor/README.md +1 -0
  287. package/src/modules/image-editor/image-editor.less +1 -1
  288. package/src/modules/image-editor/image-editor.ts +12 -11
  289. package/src/modules/image-editor/templates/form.ts +5 -1
  290. package/src/modules/index.ts +12 -6
  291. package/src/modules/observer/README.md +0 -0
  292. package/src/modules/observer/command.ts +5 -1
  293. package/src/modules/observer/observer.ts +7 -1
  294. package/src/modules/observer/snapshot.ts +5 -1
  295. package/src/modules/observer/stack.ts +5 -1
  296. package/src/modules/status-bar/README.md +1 -0
  297. package/src/modules/status-bar/status-bar.less +1 -1
  298. package/src/modules/status-bar/status-bar.ts +7 -1
  299. package/src/modules/table/README.md +3 -0
  300. package/src/modules/{table.ts → table/table.ts} +20 -13
  301. package/src/modules/toolbar/README.md +1 -0
  302. package/src/modules/toolbar/button/README.md +1 -0
  303. package/src/modules/toolbar/button/button.less +1 -1
  304. package/src/modules/toolbar/button/button.ts +7 -1
  305. package/src/modules/toolbar/button/content.less +1 -1
  306. package/src/modules/toolbar/button/content.ts +5 -1
  307. package/src/modules/toolbar/button/index.ts +5 -1
  308. package/src/modules/toolbar/collection/README.md +1 -0
  309. package/src/modules/toolbar/collection/collection.less +2 -2
  310. package/src/modules/toolbar/collection/collection.ts +7 -1
  311. package/src/modules/toolbar/collection/editor-collection.ts +5 -1
  312. package/src/modules/toolbar/factory.ts +7 -1
  313. package/src/modules/uploader/README.md +1 -0
  314. package/src/modules/uploader/uploader.less +1 -1
  315. package/src/modules/uploader/uploader.ts +7 -1
  316. package/src/modules/widget/README.md +1 -0
  317. package/src/modules/widget/color-picker/README.md +1 -0
  318. package/src/modules/widget/color-picker/color-picker.less +1 -1
  319. package/src/modules/widget/color-picker/color-picker.ts +7 -1
  320. package/src/modules/widget/file-selector/README.md +1 -0
  321. package/src/modules/widget/file-selector/file-selector.ts +7 -1
  322. package/src/modules/widget/index.ts +7 -1
  323. package/src/modules/widget/tabs/README.md +1 -0
  324. package/src/modules/widget/tabs/tabs.less +1 -1
  325. package/src/modules/widget/tabs/tabs.ts +7 -1
  326. package/src/modules/widget/widget.less +1 -1
  327. package/src/plugins/README.md +3 -0
  328. package/src/plugins/about/about.less +1 -1
  329. package/src/plugins/about/about.ts +5 -1
  330. package/src/plugins/add-new-line/README.md +6 -0
  331. package/src/plugins/add-new-line/add-new-line.less +1 -1
  332. package/src/plugins/add-new-line/add-new-line.ts +13 -1
  333. package/src/plugins/{bold.ts → bold/bold.ts} +9 -5
  334. package/src/plugins/class-span/class-span.ts +5 -1
  335. package/src/plugins/clipboard/clipboard.ts +5 -1
  336. package/src/plugins/clipboard/config.ts +5 -1
  337. package/src/plugins/clipboard/copy-format.ts +5 -1
  338. package/src/plugins/clipboard/drag-and-drop-element.ts +5 -1
  339. package/src/plugins/clipboard/drag-and-drop.ts +7 -8
  340. package/src/plugins/clipboard/index.ts +5 -1
  341. package/src/plugins/clipboard/paste/helpers.ts +5 -1
  342. package/src/plugins/clipboard/paste/paste.ts +5 -1
  343. package/src/plugins/clipboard/paste-storage/paste-storage.less +1 -1
  344. package/src/plugins/clipboard/paste-storage/paste-storage.ts +5 -1
  345. package/src/plugins/{color.ts → color/color.ts} +10 -6
  346. package/src/plugins/error-messages/error-messages.ts +5 -1
  347. package/src/plugins/error-messages/errors-messages.less +1 -1
  348. package/src/plugins/fix/clean-html.ts +5 -1
  349. package/src/plugins/fix/wrap-text-nodes.ts +5 -1
  350. package/src/plugins/focus/README.md +3 -0
  351. package/src/plugins/{focus.ts → focus/focus.ts} +11 -8
  352. package/src/plugins/{font.ts → font/font.ts} +10 -6
  353. package/src/plugins/{format-block.ts → format-block/format-block.ts} +14 -5
  354. package/src/plugins/fullsize/fullsize.less +1 -1
  355. package/src/plugins/fullsize/fullsize.ts +5 -1
  356. package/src/plugins/{iframe.ts → iframe/iframe.ts} +11 -7
  357. package/src/plugins/image/helpers.ts +5 -1
  358. package/src/plugins/image/image-processor.ts +5 -1
  359. package/src/plugins/image/image-properties/image-properties.less +1 -1
  360. package/src/plugins/image/image-properties/image-properties.ts +5 -1
  361. package/src/plugins/image/image-properties/templates/form.ts +5 -1
  362. package/src/plugins/image/image-properties/templates/index.ts +7 -3
  363. package/src/plugins/image/image-properties/templates/{mainTab.ts → main-tab.ts} +5 -1
  364. package/src/plugins/image/image-properties/templates/{positionTab.ts → position-tab.ts} +5 -1
  365. package/src/plugins/image/image.ts +5 -1
  366. package/src/plugins/image/index.ts +5 -1
  367. package/src/plugins/{indent.ts → indent/indent.ts} +11 -7
  368. package/src/plugins/index.ts +23 -17
  369. package/src/plugins/inline-popup/config/config.ts +5 -1
  370. package/src/plugins/inline-popup/config/items/a.ts +5 -1
  371. package/src/plugins/inline-popup/config/items/cells.ts +5 -1
  372. package/src/plugins/inline-popup/config/items/iframe.ts +5 -1
  373. package/src/plugins/inline-popup/config/items/img.ts +5 -1
  374. package/src/plugins/inline-popup/config/items/toolbar.ts +5 -1
  375. package/src/plugins/inline-popup/inline-popup.less +1 -1
  376. package/src/plugins/inline-popup/inline-popup.ts +5 -1
  377. package/src/plugins/insert/hr.ts +5 -1
  378. package/src/plugins/insert/index.ts +5 -1
  379. package/src/plugins/{justify.ts → justify/justify.ts} +9 -5
  380. package/src/plugins/keyboard/backspace/backspace.ts +187 -0
  381. package/src/plugins/keyboard/backspace/cases/check-join-neighbors.ts +117 -0
  382. package/src/plugins/keyboard/backspace/cases/check-join-two-lists.ts +56 -0
  383. package/src/plugins/keyboard/backspace/cases/check-not-collapsed.ts +28 -0
  384. package/src/plugins/keyboard/backspace/cases/check-remove-char.ts +192 -0
  385. package/src/plugins/keyboard/backspace/cases/check-remove-content-not-editable.ts +47 -0
  386. package/src/plugins/keyboard/backspace/cases/check-remove-empty-neighbor.ts +44 -0
  387. package/src/plugins/keyboard/backspace/cases/check-remove-empty-parent.ts +82 -0
  388. package/src/plugins/keyboard/backspace/cases/check-remove-unbreakable-element.ts +48 -0
  389. package/src/plugins/keyboard/backspace/cases/check-table-cell.ts +32 -0
  390. package/src/plugins/keyboard/backspace/cases/check-unwrap-first-list-item.ts +59 -0
  391. package/src/plugins/keyboard/backspace/cases/index.ts +27 -0
  392. package/src/plugins/keyboard/backspace/config.ts +37 -0
  393. package/src/plugins/keyboard/backspace/interface.d.ts +11 -0
  394. package/src/plugins/keyboard/enter.ts +5 -1
  395. package/src/plugins/keyboard/helpers.ts +13 -4
  396. package/src/plugins/keyboard/hotkeys.ts +5 -1
  397. package/src/plugins/keyboard/key-arrow-outside.ts +6 -1
  398. package/src/plugins/{limit.ts → limit/limit.ts} +12 -8
  399. package/src/plugins/link/link.ts +5 -1
  400. package/src/plugins/link/template.ts +5 -1
  401. package/src/plugins/media/file.ts +5 -1
  402. package/src/plugins/media/index.ts +5 -1
  403. package/src/plugins/media/media.ts +5 -1
  404. package/src/plugins/media/video/config.ts +5 -1
  405. package/src/plugins/media/video/index.ts +5 -1
  406. package/src/plugins/{mobile.ts → mobile/mobile.ts} +14 -10
  407. package/src/plugins/{ordered-list.ts → ordered-list/ordered-list.ts} +11 -7
  408. package/src/plugins/placeholder/placeholder.less +1 -1
  409. package/src/plugins/placeholder/placeholder.ts +5 -1
  410. package/src/plugins/{powered-by-jodit.ts → powered-by-jodit/powered-by-jodit.ts} +10 -3
  411. package/src/plugins/print/index.ts +5 -1
  412. package/src/plugins/print/preview.ts +5 -1
  413. package/src/plugins/print/print.ts +5 -1
  414. package/src/plugins/{redo-undo.ts → redo-undo/redo-undo.ts} +9 -5
  415. package/src/plugins/resizer/resizer.less +1 -1
  416. package/src/plugins/resizer/resizer.ts +12 -3
  417. package/src/plugins/search/search.less +1 -1
  418. package/src/plugins/search/search.ts +5 -1
  419. package/src/plugins/{select.ts → select/select.ts} +11 -8
  420. package/src/plugins/size/config.ts +6 -1
  421. package/src/plugins/size/index.ts +5 -1
  422. package/src/plugins/size/resize-handler.ts +5 -1
  423. package/src/plugins/size/size.less +1 -1
  424. package/src/plugins/size/size.ts +5 -1
  425. package/src/plugins/source/README.md +60 -0
  426. package/src/plugins/source/config.ts +18 -3
  427. package/src/plugins/source/const.ts +5 -1
  428. package/src/plugins/source/editor/engines/ace.ts +5 -1
  429. package/src/plugins/source/editor/engines/area.ts +5 -1
  430. package/src/plugins/source/editor/engines/custom.ts +5 -1
  431. package/src/plugins/source/editor/engines/index.ts +5 -1
  432. package/src/plugins/source/editor/factory.ts +25 -16
  433. package/src/plugins/source/editor/sourceEditor.ts +5 -1
  434. package/src/plugins/source/index.ts +7 -1
  435. package/src/plugins/source/source.less +1 -1
  436. package/src/plugins/source/source.ts +5 -1
  437. package/src/plugins/{stat.ts → stat/stat.ts} +11 -7
  438. package/src/plugins/sticky/sticky.less +1 -1
  439. package/src/plugins/sticky/sticky.ts +5 -1
  440. package/src/plugins/symbols/config.ts +5 -1
  441. package/src/plugins/symbols/symbols.less +1 -1
  442. package/src/plugins/symbols/symbols.ts +5 -1
  443. package/src/plugins/table/config.ts +5 -1
  444. package/src/plugins/table/index.ts +5 -1
  445. package/src/plugins/table/resize-cells.ts +5 -1
  446. package/src/plugins/table/select-cells.ts +6 -2
  447. package/src/plugins/table/table-keyboard-navigation.ts +5 -1
  448. package/src/plugins/table/table.less +1 -1
  449. package/src/plugins/table/table.ts +5 -1
  450. package/src/plugins/tooltip/tooltip.less +1 -1
  451. package/src/plugins/tooltip/tooltip.ts +5 -1
  452. package/src/plugins/xpath/xpath.less +1 -1
  453. package/src/plugins/xpath/xpath.ts +5 -1
  454. package/src/polyfills.ts +1 -1
  455. package/src/styles/form.less +1 -1
  456. package/src/styles/icons/README.md +1 -0
  457. package/src/styles/icons/index.ts +7 -1
  458. package/src/styles/index.less +1 -1
  459. package/src/styles/jodit.less +1 -1
  460. package/src/styles/mixins.less +1 -1
  461. package/src/styles/modules/button-group.less +1 -1
  462. package/src/styles/modules/grid.less +1 -1
  463. package/src/styles/modules/icon.less +1 -1
  464. package/src/styles/modules/texticons.less +1 -1
  465. package/src/styles/reset.less +1 -1
  466. package/src/styles/themes/dark.less +1 -1
  467. package/src/styles/variables.less +1 -1
  468. package/src/types/ajax.d.ts +8 -1
  469. package/src/types/async.d.ts +7 -1
  470. package/src/types/context.d.ts +5 -1
  471. package/src/types/core.ts +5 -1
  472. package/src/types/create.d.ts +5 -1
  473. package/src/types/dialog.d.ts +5 -1
  474. package/src/types/events.d.ts +9 -5
  475. package/src/types/file-browser.d.ts +21 -5
  476. package/src/types/form.d.ts +5 -1
  477. package/src/types/index.d.ts +6 -2
  478. package/src/types/jodit.d.ts +5 -1
  479. package/src/types/{observe.d.ts → observer.d.ts} +7 -5
  480. package/src/types/plugin.d.ts +5 -1
  481. package/src/types/popup.d.ts +5 -1
  482. package/src/types/select.d.ts +5 -1
  483. package/src/types/source.d.ts +5 -1
  484. package/src/types/storage.ts +5 -1
  485. package/src/types/style.d.ts +5 -1
  486. package/src/types/toolbar.d.ts +5 -1
  487. package/src/types/traits.d.ts +5 -1
  488. package/src/types/types.d.ts +5 -1
  489. package/src/types/ui.d.ts +5 -1
  490. package/src/types/uploader.d.ts +4 -2
  491. package/src/types/view.d.ts +5 -1
  492. package/src/typings.d.ts +5 -1
  493. package/tsdoc.json +20 -0
  494. package/types/config.d.ts +4 -1
  495. package/types/core/{async.d.ts → async/async.d.ts} +11 -6
  496. package/types/core/async/index.d.ts +9 -0
  497. package/types/core/component/component.d.ts +6 -1
  498. package/types/core/component/index.d.ts +4 -1
  499. package/types/core/component/statuses.d.ts +4 -1
  500. package/types/core/component/view-component.d.ts +4 -1
  501. package/types/core/constants.d.ts +4 -1
  502. package/types/core/{create.d.ts → create/create.d.ts} +7 -2
  503. package/types/core/create/index.d.ts +9 -0
  504. package/types/core/decorators/{cache.d.ts → cache/cache.d.ts} +1 -1
  505. package/types/core/decorators/{component.d.ts → component/component.d.ts} +1 -1
  506. package/types/core/decorators/{debounce.d.ts → debounce/debounce.d.ts} +5 -3
  507. package/types/core/decorators/{hook.d.ts → hook/hook.d.ts} +8 -3
  508. package/types/core/decorators/{idle.d.ts → idle/idle.d.ts} +5 -3
  509. package/types/core/decorators/index.d.ts +15 -10
  510. package/types/core/decorators/{nonenumerable.d.ts → nonenumerable/nonenumerable.d.ts} +4 -2
  511. package/types/core/decorators/{persistent.d.ts → persistent/persistent.d.ts} +5 -3
  512. package/types/core/decorators/{wait.d.ts → wait/wait.d.ts} +5 -3
  513. package/types/core/decorators/{watch.d.ts → watch/watch.d.ts} +7 -2
  514. package/types/core/{dom.d.ts → dom/dom.d.ts} +12 -3
  515. package/types/core/dom/index.d.ts +9 -0
  516. package/types/core/{events → event-emitter}/event-emitter.d.ts +7 -7
  517. package/types/core/{events → event-emitter}/index.d.ts +4 -1
  518. package/types/core/{events → event-emitter}/observe-object.d.ts +7 -4
  519. package/types/core/{events → event-emitter}/store.d.ts +4 -1
  520. package/types/core/global.d.ts +7 -4
  521. package/types/core/helpers/array/as-array.d.ts +1 -1
  522. package/types/core/helpers/array/index.d.ts +4 -1
  523. package/types/core/helpers/array/split-array.d.ts +1 -1
  524. package/types/core/helpers/array/to-array.d.ts +1 -1
  525. package/types/core/helpers/async/index.d.ts +4 -1
  526. package/types/core/helpers/async/set-timeout.d.ts +4 -1
  527. package/types/core/helpers/checker/has-browser-color-picker.d.ts +4 -1
  528. package/types/core/helpers/checker/index.d.ts +4 -1
  529. package/types/core/helpers/checker/is-array.d.ts +4 -1
  530. package/types/core/helpers/checker/is-boolean.d.ts +4 -1
  531. package/types/core/helpers/checker/is-equal.d.ts +1 -1
  532. package/types/core/helpers/checker/is-function.d.ts +4 -1
  533. package/types/core/helpers/checker/is-html-from-word.d.ts +4 -1
  534. package/types/core/helpers/checker/is-html.d.ts +1 -1
  535. package/types/core/helpers/checker/is-imp-interface.d.ts +4 -1
  536. package/types/core/helpers/checker/is-int.d.ts +1 -1
  537. package/types/core/helpers/checker/is-jodit-object.d.ts +4 -1
  538. package/types/core/helpers/checker/is-license.d.ts +1 -1
  539. package/types/core/helpers/checker/is-native-function.d.ts +4 -1
  540. package/types/core/helpers/checker/is-number.d.ts +4 -1
  541. package/types/core/helpers/checker/is-numeric.d.ts +1 -1
  542. package/types/core/helpers/checker/is-plain-object.d.ts +4 -1
  543. package/types/core/helpers/checker/is-promise.d.ts +4 -1
  544. package/types/core/helpers/checker/is-string.d.ts +4 -1
  545. package/types/core/helpers/checker/is-url.d.ts +4 -1
  546. package/types/core/helpers/checker/is-valid-name.d.ts +4 -1
  547. package/types/core/helpers/checker/is-void.d.ts +4 -1
  548. package/types/core/helpers/checker/is-window.d.ts +4 -1
  549. package/types/core/helpers/color/color-to-hex.d.ts +4 -1
  550. package/types/core/helpers/color/index.d.ts +4 -1
  551. package/types/core/helpers/html/apply-styles.d.ts +1 -1
  552. package/types/core/helpers/html/clean-from-word.d.ts +1 -1
  553. package/types/core/helpers/html/htmlspecialchars.d.ts +4 -1
  554. package/types/core/helpers/html/index.d.ts +4 -1
  555. package/types/core/helpers/html/nl2br.d.ts +4 -1
  556. package/types/core/helpers/html/strip-tags.d.ts +1 -1
  557. package/types/core/helpers/index.d.ts +6 -19
  558. package/types/core/helpers/normalize/index.d.ts +4 -1
  559. package/types/core/helpers/normalize/normalize-color.d.ts +1 -1
  560. package/types/core/helpers/normalize/normalize-css-value.d.ts +1 -1
  561. package/types/core/helpers/normalize/normalize-key-aliases.d.ts +1 -1
  562. package/types/core/helpers/normalize/normalize-license.d.ts +4 -1
  563. package/types/core/helpers/normalize/normalize-node.d.ts +1 -1
  564. package/types/core/helpers/normalize/normalize-path.d.ts +1 -1
  565. package/types/core/helpers/normalize/normalize-relative-path.d.ts +4 -1
  566. package/types/core/helpers/normalize/normalize-size.d.ts +4 -1
  567. package/types/core/helpers/normalize/normalize-url.d.ts +4 -1
  568. package/types/core/helpers/size/get-content-width.d.ts +2 -2
  569. package/types/core/helpers/size/get-scroll-parent.d.ts +4 -1
  570. package/types/core/helpers/size/index.d.ts +4 -1
  571. package/types/core/helpers/size/inner-width.d.ts +4 -1
  572. package/types/core/helpers/size/object-size.d.ts +1 -1
  573. package/types/core/helpers/size/offset.d.ts +4 -1
  574. package/types/core/helpers/size/position.d.ts +4 -1
  575. package/types/core/helpers/string/camel-case.d.ts +4 -1
  576. package/types/core/helpers/string/i18n.d.ts +4 -1
  577. package/types/core/helpers/string/index.d.ts +4 -1
  578. package/types/core/helpers/string/kebab-case.d.ts +4 -1
  579. package/types/core/helpers/string/stringify.d.ts +1 -1
  580. package/types/core/helpers/string/trim.d.ts +1 -1
  581. package/types/core/helpers/string/ucfirst.d.ts +4 -1
  582. package/types/core/helpers/{append-script.d.ts → utils/append-script.d.ts} +5 -2
  583. package/types/core/helpers/{browser.d.ts → utils/browser.d.ts} +4 -1
  584. package/types/core/helpers/{build-query.d.ts → utils/build-query.d.ts} +5 -2
  585. package/types/core/helpers/{complete-url.d.ts → utils/complete-url.d.ts} +4 -1
  586. package/types/core/helpers/{config-proto.d.ts → utils/config-proto.d.ts} +5 -2
  587. package/types/core/helpers/{convert-media-url-to-video-embed.d.ts → utils/convert-media-url-to-video-embed.d.ts} +1 -1
  588. package/types/core/helpers/{css.d.ts → utils/css.d.ts} +5 -2
  589. package/types/core/helpers/{ctrl-key.d.ts → utils/ctrl-key.d.ts} +4 -1
  590. package/types/core/helpers/{data-bind.d.ts → utils/data-bind.d.ts} +5 -2
  591. package/types/core/helpers/{default-language.d.ts → utils/default-language.d.ts} +1 -1
  592. package/types/core/helpers/{type.d.ts → utils/error.d.ts} +4 -1
  593. package/types/core/helpers/{extend.d.ts → utils/extend.d.ts} +1 -1
  594. package/types/core/helpers/utils/get-class-name.d.ts +4 -1
  595. package/types/core/helpers/utils/get.d.ts +4 -1
  596. package/types/core/helpers/{human-size-to-bytes.d.ts → utils/human-size-to-bytes.d.ts} +4 -1
  597. package/types/core/helpers/utils/index.d.ts +21 -1
  598. package/types/core/helpers/utils/mark-deprecated.d.ts +4 -1
  599. package/types/core/helpers/{parse-query.d.ts → utils/parse-query.d.ts} +5 -2
  600. package/types/core/helpers/{scroll-into-view.d.ts → utils/scroll-into-view.d.ts} +4 -1
  601. package/types/core/helpers/{selector.d.ts → utils/selector.d.ts} +5 -2
  602. package/types/core/helpers/utils/set.d.ts +4 -1
  603. package/types/core/helpers/utils/stack.d.ts +4 -1
  604. package/types/core/helpers/utils/utils.d.ts +4 -1
  605. package/types/core/helpers/{val.d.ts → utils/val.d.ts} +4 -1
  606. package/types/core/plugin/index.d.ts +10 -0
  607. package/types/core/{plugin-system.d.ts → plugin/plugin-system.d.ts} +5 -2
  608. package/types/core/{plugin.d.ts → plugin/plugin.d.ts} +8 -3
  609. package/types/core/request/ajax.d.ts +7 -2
  610. package/types/core/request/config.d.ts +4 -1
  611. package/types/core/request/index.d.ts +4 -1
  612. package/types/core/request/response.d.ts +6 -2
  613. package/types/core/selection/index.d.ts +4 -1
  614. package/types/core/selection/select.d.ts +6 -1
  615. package/types/core/selection/style/api/element-has-same-style.d.ts +2 -1
  616. package/types/core/selection/style/api/extract.d.ts +2 -1
  617. package/types/core/selection/style/api/finite-state-machine.d.ts +1 -1
  618. package/types/core/selection/style/api/get-suit-child.d.ts +2 -1
  619. package/types/core/selection/style/api/get-suit-parent.d.ts +2 -1
  620. package/types/core/selection/style/api/index.d.ts +1 -1
  621. package/types/core/selection/style/api/is-inside-invisible-element.d.ts +2 -1
  622. package/types/core/selection/style/api/is-normal-node.d.ts +2 -1
  623. package/types/core/selection/style/api/is-suit-element.d.ts +2 -1
  624. package/types/core/selection/style/api/toggle/toggle-css.d.ts +2 -1
  625. package/types/core/selection/style/api/toggle/toggle-ordered-list.d.ts +2 -1
  626. package/types/core/selection/style/api/toggle-commit-styles.d.ts +2 -1
  627. package/types/core/selection/style/api/unwrap-children.d.ts +2 -1
  628. package/types/core/selection/style/api/wrap-and-commit-style.d.ts +2 -1
  629. package/types/core/selection/style/api/wrap-ordered-list.d.ts +2 -1
  630. package/types/core/selection/style/api/wrap-unwrapped-text.d.ts +2 -1
  631. package/types/core/selection/style/apply-style.d.ts +4 -1
  632. package/types/core/selection/style/commit-style.d.ts +4 -1
  633. package/types/core/storage/engines/local-storage-provider.d.ts +4 -1
  634. package/types/core/storage/engines/memory-storage-provider.d.ts +4 -1
  635. package/types/core/storage/index.d.ts +4 -1
  636. package/types/core/storage/storage.d.ts +6 -1
  637. package/types/core/traits/elms.d.ts +4 -1
  638. package/types/core/traits/index.d.ts +4 -1
  639. package/types/core/traits/mods.d.ts +4 -1
  640. package/types/core/ui/button/button/button.d.ts +4 -1
  641. package/types/core/ui/button/group/group.d.ts +5 -2
  642. package/types/core/ui/button/index.d.ts +6 -1
  643. package/types/core/ui/element.d.ts +4 -1
  644. package/types/core/ui/form/block/block.d.ts +5 -2
  645. package/types/core/ui/form/form.d.ts +7 -2
  646. package/types/core/ui/form/index.d.ts +4 -1
  647. package/types/core/ui/form/inputs/area/area.d.ts +4 -1
  648. package/types/core/ui/form/inputs/checkbox/checkbox.d.ts +4 -1
  649. package/types/core/ui/form/inputs/file/file.d.ts +4 -1
  650. package/types/core/ui/form/inputs/index.d.ts +4 -1
  651. package/types/core/ui/form/inputs/input/input.d.ts +4 -1
  652. package/types/core/ui/form/inputs/select/select.d.ts +4 -1
  653. package/types/core/ui/form/validators/index.d.ts +4 -1
  654. package/types/core/ui/form/validators/input.d.ts +4 -1
  655. package/types/core/ui/form/validators/select.d.ts +4 -1
  656. package/types/core/ui/{list → group}/group.d.ts +6 -1
  657. package/types/core/ui/{list → group}/index.d.ts +4 -1
  658. package/types/core/ui/{list → group}/list.d.ts +4 -1
  659. package/types/core/ui/{list → group}/separator.d.ts +4 -1
  660. package/types/core/ui/{list → group}/spacer.d.ts +4 -1
  661. package/types/core/ui/helpers/buttons.d.ts +4 -1
  662. package/types/core/ui/helpers/get-control-type.d.ts +4 -1
  663. package/types/core/ui/helpers/get-strong-control-types.d.ts +4 -1
  664. package/types/core/ui/icon.d.ts +4 -1
  665. package/types/core/ui/index.d.ts +7 -2
  666. package/types/core/ui/popup/index.d.ts +4 -1
  667. package/types/core/ui/popup/popup.d.ts +6 -1
  668. package/types/core/ui/progress-bar/progress-bar.d.ts +6 -1
  669. package/types/core/view/view-with-toolbar.d.ts +4 -1
  670. package/types/core/view/view.d.ts +9 -4
  671. package/types/index.d.ts +6 -1
  672. package/types/jodit.d.ts +6 -1
  673. package/types/langs/index.d.ts +6 -1
  674. package/types/modules/context-menu/context-menu.d.ts +6 -1
  675. package/types/modules/dialog/alert.d.ts +4 -1
  676. package/types/modules/dialog/confirm.d.ts +4 -1
  677. package/types/modules/dialog/dialog.d.ts +4 -1
  678. package/types/modules/dialog/index.d.ts +6 -1
  679. package/types/modules/dialog/prompt.d.ts +4 -1
  680. package/types/modules/file-browser/builders/context-menu.d.ts +6 -3
  681. package/types/modules/file-browser/builders/item.d.ts +4 -1
  682. package/types/modules/file-browser/config.d.ts +1 -1
  683. package/types/modules/file-browser/data-provider.d.ts +4 -1
  684. package/types/modules/file-browser/factories.d.ts +4 -1
  685. package/types/modules/file-browser/file-browser.d.ts +10 -4
  686. package/types/modules/file-browser/index.d.ts +11 -0
  687. package/types/modules/file-browser/listeners/native-listeners.d.ts +6 -4
  688. package/types/modules/file-browser/listeners/self-listeners.d.ts +6 -3
  689. package/types/modules/file-browser/listeners/state-listeners.d.ts +6 -3
  690. package/types/modules/file-browser/ui/files/files.d.ts +1 -1
  691. package/types/modules/file-browser/ui/index.d.ts +4 -1
  692. package/types/modules/file-browser/ui/tree/tree.d.ts +1 -1
  693. package/types/modules/image-editor/image-editor.d.ts +12 -10
  694. package/types/modules/image-editor/templates/form.d.ts +4 -1
  695. package/types/modules/index.d.ts +11 -6
  696. package/types/modules/observer/command.d.ts +4 -1
  697. package/types/modules/observer/observer.d.ts +6 -1
  698. package/types/modules/observer/snapshot.d.ts +4 -1
  699. package/types/modules/observer/stack.d.ts +4 -1
  700. package/types/modules/status-bar/status-bar.d.ts +6 -1
  701. package/types/modules/{table.d.ts → table/table.d.ts} +7 -7
  702. package/types/modules/toolbar/button/button.d.ts +6 -1
  703. package/types/modules/toolbar/button/content.d.ts +4 -1
  704. package/types/modules/toolbar/button/index.d.ts +4 -1
  705. package/types/modules/toolbar/collection/collection.d.ts +6 -1
  706. package/types/modules/toolbar/collection/editor-collection.d.ts +4 -1
  707. package/types/modules/toolbar/factory.d.ts +6 -1
  708. package/types/modules/uploader/uploader.d.ts +6 -1
  709. package/types/modules/widget/color-picker/color-picker.d.ts +6 -1
  710. package/types/modules/widget/file-selector/file-selector.d.ts +6 -1
  711. package/types/modules/widget/index.d.ts +6 -1
  712. package/types/modules/widget/tabs/tabs.d.ts +6 -1
  713. package/types/plugins/about/about.d.ts +4 -1
  714. package/types/plugins/add-new-line/add-new-line.d.ts +12 -1
  715. package/types/plugins/{bold.d.ts → bold/bold.d.ts} +6 -3
  716. package/types/plugins/class-span/class-span.d.ts +4 -1
  717. package/types/plugins/clipboard/clipboard.d.ts +4 -1
  718. package/types/plugins/clipboard/config.d.ts +1 -1
  719. package/types/plugins/clipboard/copy-format.d.ts +4 -1
  720. package/types/plugins/clipboard/drag-and-drop-element.d.ts +1 -1
  721. package/types/plugins/clipboard/drag-and-drop.d.ts +1 -1
  722. package/types/plugins/clipboard/index.d.ts +4 -1
  723. package/types/plugins/clipboard/paste/helpers.d.ts +4 -1
  724. package/types/plugins/clipboard/paste/paste.d.ts +4 -1
  725. package/types/plugins/clipboard/paste-storage/paste-storage.d.ts +4 -1
  726. package/types/plugins/{color.d.ts → color/color.d.ts} +5 -2
  727. package/types/plugins/error-messages/error-messages.d.ts +4 -1
  728. package/types/plugins/fix/clean-html.d.ts +4 -1
  729. package/types/plugins/fix/wrap-text-nodes.d.ts +4 -1
  730. package/types/plugins/{focus.d.ts → focus/focus.d.ts} +8 -6
  731. package/types/plugins/{font.d.ts → font/font.d.ts} +6 -3
  732. package/types/plugins/{format-block.d.ts → format-block/format-block.d.ts} +5 -2
  733. package/types/plugins/fullsize/fullsize.d.ts +4 -1
  734. package/types/plugins/{iframe.d.ts → iframe/iframe.d.ts} +6 -3
  735. package/types/plugins/image/helpers.d.ts +1 -1
  736. package/types/plugins/image/image-processor.d.ts +4 -1
  737. package/types/plugins/image/image-properties/image-properties.d.ts +4 -1
  738. package/types/plugins/image/image-properties/templates/form.d.ts +4 -1
  739. package/types/plugins/image/image-properties/templates/index.d.ts +6 -3
  740. package/types/plugins/image/image-properties/templates/{mainTab.d.ts → main-tab.d.ts} +4 -1
  741. package/types/plugins/image/image-properties/templates/{positionTab.d.ts → position-tab.d.ts} +4 -1
  742. package/types/plugins/image/image.d.ts +4 -1
  743. package/types/plugins/image/index.d.ts +4 -1
  744. package/types/plugins/{indent.d.ts → indent/indent.d.ts} +6 -3
  745. package/types/plugins/index.d.ts +22 -17
  746. package/types/plugins/inline-popup/config/config.d.ts +4 -1
  747. package/types/plugins/inline-popup/inline-popup.d.ts +4 -1
  748. package/types/plugins/insert/hr.d.ts +4 -1
  749. package/types/plugins/insert/index.d.ts +4 -1
  750. package/types/plugins/{justify.d.ts → justify/justify.d.ts} +5 -2
  751. package/types/plugins/keyboard/backspace/backspace.d.ts +31 -0
  752. package/types/plugins/keyboard/backspace/cases/check-join-neighbors.d.ts +10 -0
  753. package/types/plugins/keyboard/backspace/cases/check-join-two-lists.d.ts +20 -0
  754. package/types/plugins/keyboard/backspace/cases/check-not-collapsed.d.ts +20 -0
  755. package/types/plugins/keyboard/backspace/cases/check-remove-char.d.ts +21 -0
  756. package/types/plugins/keyboard/backspace/cases/check-remove-content-not-editable.d.ts +11 -0
  757. package/types/plugins/keyboard/backspace/cases/check-remove-empty-neighbor.d.ts +20 -0
  758. package/types/plugins/keyboard/backspace/cases/check-remove-empty-parent.d.ts +21 -0
  759. package/types/plugins/keyboard/backspace/cases/check-remove-unbreakable-element.d.ts +21 -0
  760. package/types/plugins/keyboard/backspace/cases/check-table-cell.d.ts +21 -0
  761. package/types/plugins/keyboard/backspace/cases/check-unwrap-first-list-item.d.ts +21 -0
  762. package/types/plugins/keyboard/backspace/cases/index.d.ts +8 -0
  763. package/types/plugins/keyboard/backspace/config.d.ts +20 -0
  764. package/types/plugins/keyboard/enter.d.ts +4 -1
  765. package/types/plugins/keyboard/helpers.d.ts +6 -3
  766. package/types/plugins/keyboard/hotkeys.d.ts +4 -1
  767. package/types/plugins/keyboard/key-arrow-outside.d.ts +4 -1
  768. package/types/plugins/{limit.d.ts → limit/limit.d.ts} +7 -4
  769. package/types/plugins/link/link.d.ts +4 -1
  770. package/types/plugins/link/template.d.ts +4 -1
  771. package/types/plugins/media/file.d.ts +4 -1
  772. package/types/plugins/media/index.d.ts +4 -1
  773. package/types/plugins/media/media.d.ts +4 -1
  774. package/types/plugins/media/video/config.d.ts +1 -1
  775. package/types/plugins/media/video/index.d.ts +4 -1
  776. package/types/plugins/{mobile.d.ts → mobile/mobile.d.ts} +6 -3
  777. package/types/plugins/{ordered-list.d.ts → ordered-list/ordered-list.d.ts} +6 -3
  778. package/types/plugins/placeholder/placeholder.d.ts +4 -1
  779. package/types/plugins/{powered-by-jodit.d.ts → powered-by-jodit/powered-by-jodit.d.ts} +9 -3
  780. package/types/plugins/print/index.d.ts +4 -1
  781. package/types/plugins/print/preview.d.ts +4 -1
  782. package/types/plugins/print/print.d.ts +4 -1
  783. package/types/plugins/{redo-undo.d.ts → redo-undo/redo-undo.d.ts} +6 -3
  784. package/types/plugins/resizer/resizer.d.ts +4 -1
  785. package/types/plugins/search/search.d.ts +4 -1
  786. package/types/plugins/{select.d.ts → select/select.d.ts} +6 -4
  787. package/types/plugins/size/config.d.ts +5 -0
  788. package/types/plugins/size/index.d.ts +4 -1
  789. package/types/plugins/size/resize-handler.d.ts +4 -1
  790. package/types/plugins/size/size.d.ts +4 -1
  791. package/types/plugins/source/config.d.ts +16 -3
  792. package/types/plugins/source/const.d.ts +4 -1
  793. package/types/plugins/source/editor/engines/ace.d.ts +4 -1
  794. package/types/plugins/source/editor/engines/area.d.ts +4 -1
  795. package/types/plugins/source/editor/engines/index.d.ts +4 -1
  796. package/types/plugins/source/editor/factory.d.ts +5 -2
  797. package/types/plugins/source/editor/sourceEditor.d.ts +4 -1
  798. package/types/plugins/source/index.d.ts +6 -1
  799. package/types/plugins/source/source.d.ts +4 -1
  800. package/types/plugins/{stat.d.ts → stat/stat.d.ts} +3 -3
  801. package/types/plugins/sticky/sticky.d.ts +4 -1
  802. package/types/plugins/symbols/config.d.ts +1 -1
  803. package/types/plugins/symbols/symbols.d.ts +4 -1
  804. package/types/plugins/table/config.d.ts +1 -1
  805. package/types/plugins/table/index.d.ts +4 -1
  806. package/types/plugins/table/resize-cells.d.ts +4 -1
  807. package/types/plugins/table/select-cells.d.ts +4 -1
  808. package/types/plugins/table/table-keyboard-navigation.d.ts +4 -1
  809. package/types/plugins/table/table.d.ts +4 -1
  810. package/types/plugins/tooltip/tooltip.d.ts +4 -1
  811. package/types/plugins/xpath/xpath.d.ts +4 -1
  812. package/types/styles/icons/index.d.ts +6 -1
  813. package/types/types/core.d.ts +4 -1
  814. package/types/types/storage.d.ts +4 -1
  815. package/types/types/types/ajax.d.ts +8 -1
  816. package/types/types/types/async.d.ts +7 -1
  817. package/types/types/types/context.d.ts +5 -1
  818. package/types/types/types/core.ts +5 -1
  819. package/types/types/types/create.d.ts +5 -1
  820. package/types/types/types/dialog.d.ts +5 -1
  821. package/types/types/types/events.d.ts +9 -5
  822. package/types/types/types/file-browser.d.ts +21 -5
  823. package/types/types/types/form.d.ts +5 -1
  824. package/types/types/types/index.d.ts +6 -2
  825. package/types/types/types/jodit.d.ts +5 -1
  826. package/types/types/types/{observe.d.ts → observer.d.ts} +7 -5
  827. package/types/types/types/plugin.d.ts +5 -1
  828. package/types/types/types/popup.d.ts +5 -1
  829. package/types/types/types/select.d.ts +5 -1
  830. package/types/types/types/source.d.ts +5 -1
  831. package/types/types/types/storage.ts +5 -1
  832. package/types/types/types/style.d.ts +5 -1
  833. package/types/types/types/toolbar.d.ts +5 -1
  834. package/types/types/types/traits.d.ts +5 -1
  835. package/types/types/types/types.d.ts +5 -1
  836. package/types/types/types/ui.d.ts +5 -1
  837. package/types/types/types/uploader.d.ts +4 -2
  838. package/types/types/types/view.d.ts +5 -1
  839. package/src/core/decorators/spy.ts +0 -55
  840. package/src/core/helpers/each.ts +0 -61
  841. package/src/plugins/keyboard/delete.ts +0 -768
  842. package/types/core/helpers/each.d.ts +0 -20
  843. package/types/plugins/keyboard/delete.d.ts +0 -163
@@ -0,0 +1,65 @@
1
+ Any UI component inherited from [[UIElement]] must have a component decorator
2
+ This decorator calls `setStatus('ready')` after the `new UI()` operation
3
+ All other decorators start their work only when the component is ready to work.
4
+
5
+ ```typescript
6
+ @component()
7
+ class UIHeight extends UIElement {
8
+ public state = {
9
+ height: 10
10
+ }
11
+
12
+ @watch('state.height')
13
+ protected onChangeHeight() {
14
+ this.container.style.height = this.state.height + 'px'
15
+ }
16
+ }
17
+
18
+ @component()
19
+ class UIWidth extends UIHeight {
20
+ public state = {
21
+ height: 10,
22
+ width: 10
23
+ }
24
+
25
+ @watch('state.width')
26
+ protected onChangeWidth() {
27
+ this.container.style.width = this.state.width + 'px'
28
+ }
29
+
30
+ constructor(jodit: IJodit) {
31
+ super(jodit);
32
+ console.log(this.componentStatus) // beforeReady
33
+ }
34
+ }
35
+
36
+ const elm = new UIWidth(jodit);
37
+ console.log(elm.componentStatus); // ready
38
+ elm.state.width = 100;
39
+ ```
40
+
41
+ You can choose not to use a decorator when you need to independently manage the readiness of a component to work.
42
+ ```ts
43
+ class UIData extends UIElement {
44
+ public state = {
45
+ data: {},
46
+ }
47
+
48
+ @watch('state.data')
49
+ protected onChangeWidth() {
50
+ this.container.innerText = this.state.data.content;
51
+ }
52
+
53
+ @hook('ready')
54
+ protected onReady() {
55
+ alert("I'm ready")
56
+ }
57
+ }
58
+
59
+ const elm = new UIData(jodit);
60
+
61
+ fetch('index.php').then((resp) => {
62
+ elm.state.data = resp.json();
63
+ elm.setStatus('ready')
64
+ })
65
+ ```
@@ -1,10 +1,16 @@
1
1
  /*!
2
2
  * Jodit Editor (https://xdsoft.net/jodit/)
3
3
  * Released under MIT see LICENSE.txt in the project root for license information.
4
- * Copyright (c) 2013-2021 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
4
+ * Copyright (c) 2013-2022 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
5
5
  */
6
6
 
7
- import { isFunction } from '../helpers';
7
+ /**
8
+ * [[include:core/decorators/component/README.md]]
9
+ * @packageDocumentation
10
+ * @module decorators/component
11
+ */
12
+
13
+ import { isFunction } from '../../helpers';
8
14
 
9
15
  interface ComponentCompatible {
10
16
  className?: () => string;
@@ -0,0 +1,44 @@
1
+ Wraps a component method in [[Async.debounce]]. This makes it possible to reduce the load on 'heavy' functions.
2
+ For example:
3
+
4
+ ```typescript
5
+ import { component, watch, debounce } from 'jodit/src/core/decorators';
6
+ import { Dom } from 'jodit/src/core/dom';
7
+
8
+ @component()
9
+ class UIInputSuggestion extends UIElement {
10
+ override render(): string {
11
+ return `<div>
12
+ <input class="&__inputElement" type="text"/>
13
+ <div class="&__suggestions"></div>
14
+ </div>`; // container
15
+ }
16
+
17
+ state = {
18
+ suggestions: []
19
+ };
20
+
21
+ // adds a listener for the container to the `input` event
22
+ @watch(':inputElement.input')
23
+ @debounce(100)
24
+ protected onInputQuery(): void {
25
+ fetch('search.php?q=' + encodeURIComponent(this.container.value)).then(
26
+ resp => {
27
+ this.state.suggestions = resp.json();
28
+ }
29
+ );
30
+ }
31
+
32
+ @watch('state.suggestions') // react on change `state.suggestions`
33
+ @debounce(100)
34
+ protected onChangeSuggestions(): void {
35
+ Dom.detach(this.getElm('suggestions')); // clear liist
36
+
37
+ this.state.suggestions.forEach(item => {
38
+ const elm = this.jodit.ci.div();
39
+ elm.innerText = item.title;
40
+ this.getElm('suggestions').appendChild(div);
41
+ });
42
+ }
43
+ }
44
+ ```
@@ -1,7 +1,13 @@
1
1
  /*!
2
2
  * Jodit Editor (https://xdsoft.net/jodit/)
3
3
  * Released under MIT see LICENSE.txt in the project root for license information.
4
- * Copyright (c) 2013-2021 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
4
+ * Copyright (c) 2013-2022 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
5
+ */
6
+
7
+ /**
8
+ * [[include:core/decorators/debounce/README.md]]
9
+ * @packageDocumentation
10
+ * @module decorators/debounce
5
11
  */
6
12
 
7
13
  import type {
@@ -10,19 +16,16 @@ import type {
10
16
  IViewComponent,
11
17
  IAsyncParams,
12
18
  DecoratorHandler
13
- } from '../../types';
19
+ } from '../../../types';
14
20
  import {
15
- error,
16
21
  isFunction,
17
22
  isNumber,
18
23
  isPlainObject,
19
24
  isViewObject
20
- } from '../helpers';
21
- import { Component, STATUSES } from '../component';
25
+ } from '../../helpers/checker';
26
+ import { Component, STATUSES } from '../../component';
27
+ import { error } from '../../helpers/utils/error';
22
28
 
23
- /**
24
- * Wrap function in debounce wrapper
25
- */
26
29
  export function debounce<V = IViewComponent | IViewBased>(
27
30
  timeout?: number | ((ctx: V) => number | IAsyncParams) | IAsyncParams,
28
31
  firstCallImmediately: boolean = false,
@@ -0,0 +1,16 @@
1
+ Sets a handler for changing the component's status.
2
+
3
+ ```ts
4
+ import { component, hook } from 'jodit/src/core/decorators';
5
+ import { UIElement } from 'jodit/src/ui';
6
+
7
+ @component()
8
+ class UISomeElement extends UIElement {
9
+ @hook('ready')
10
+ protected onReadyHandler(): void {
11
+ alert('Component ise ready');
12
+ }
13
+ }
14
+ ```
15
+
16
+ Component statuses can be viewed in [[STATUSES]]
@@ -1,7 +1,13 @@
1
1
  /*!
2
2
  * Jodit Editor (https://xdsoft.net/jodit/)
3
3
  * Released under MIT see LICENSE.txt in the project root for license information.
4
- * Copyright (c) 2013-2021 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
4
+ * Copyright (c) 2013-2022 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
5
+ */
6
+
7
+ /**
8
+ * [[include:core/decorators/hook/README.md]]
9
+ * @packageDocumentation
10
+ * @module decorators/hook
5
11
  */
6
12
 
7
13
  import type {
@@ -9,9 +15,10 @@ import type {
9
15
  IDictionary,
10
16
  IViewBased,
11
17
  IViewComponent
12
- } from '../../types';
13
- import type { Component } from '../component';
14
- import { error, isFunction } from '../helpers';
18
+ } from '../../../types';
19
+ import type { Component } from '../../component';
20
+ import { isFunction } from '../../helpers/checker';
21
+ import { error } from '../../helpers/utils/error';
15
22
 
16
23
  /**
17
24
  * Call on some component status
@@ -0,0 +1 @@
1
+ Wrap function in [[Async.requestIdleCallback]] wrapper
@@ -1,20 +1,24 @@
1
1
  /*!
2
2
  * Jodit Editor (https://xdsoft.net/jodit/)
3
3
  * Released under MIT see LICENSE.txt in the project root for license information.
4
- * Copyright (c) 2013-2021 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
4
+ * Copyright (c) 2013-2022 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
5
5
  */
6
+
7
+ /**
8
+ * [[include:core/decorators/idle/README.md]]
9
+ * @packageDocumentation
10
+ * @module decorators/idle
11
+ */
12
+
6
13
  import type {
7
14
  DecoratorHandler,
8
15
  IDictionary,
9
16
  IViewBased,
10
17
  IViewComponent
11
- } from '../../types';
12
- import { Component, STATUSES } from '../component';
13
- import { error, isFunction, isViewObject } from '../helpers';
18
+ } from '../../../types';
19
+ import { Component, STATUSES } from '../../component';
20
+ import { error, isFunction, isViewObject } from '../../helpers';
14
21
 
15
- /**
16
- * Wrap function in requestIdleCallback wrapper*
17
- */
18
22
  export function idle<V = IViewComponent | IViewBased>(): DecoratorHandler {
19
23
  return <T extends Component & IDictionary>(
20
24
  target: IDictionary,
@@ -1,16 +1,22 @@
1
1
  /*!
2
2
  * Jodit Editor (https://xdsoft.net/jodit/)
3
3
  * Released under MIT see LICENSE.txt in the project root for license information.
4
- * Copyright (c) 2013-2021 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
4
+ * Copyright (c) 2013-2022 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
5
5
  */
6
6
 
7
- export * from './cache';
8
- export * from './component';
9
- export * from './debounce';
10
- export * from './idle';
11
- export * from './hook';
12
- export * from './nonenumerable';
13
- export * from './persistent';
14
- export * from './wait';
15
- export * from './watch';
7
+ /**
8
+ * [[include:core/decorators/README.md]]
9
+ * @packageDocumentation
10
+ * @module decorators
11
+ */
12
+
13
+ export * from './cache/cache';
14
+ export * from './component/component';
15
+ export * from './debounce/debounce';
16
+ export * from './idle/idle';
17
+ export * from './hook/hook';
18
+ export * from './nonenumerable/nonenumerable';
19
+ export * from './persistent/persistent';
20
+ export * from './wait/wait';
21
+ export * from './watch/watch';
16
22
  export { default as autobind } from 'autobind-decorator';
@@ -0,0 +1,15 @@
1
+ Decorator that sets the enumerable property of a class field to false.
2
+
3
+ ```ts
4
+ import { nonenumerable } from 'jodit/src/core/decorators';
5
+
6
+ class SomeComponent {
7
+ @nonenumerable
8
+ somePrivateProp: number = 1;
9
+
10
+ anotherPublicProp: number = 2;
11
+ }
12
+
13
+ const elm = new SomeComponent();
14
+ console.log(Object.keys(elm)); // ['anotherPublicProp']
15
+ ```
@@ -1,12 +1,15 @@
1
1
  /*!
2
2
  * Jodit Editor (https://xdsoft.net/jodit/)
3
3
  * Released under MIT see LICENSE.txt in the project root for license information.
4
- * Copyright (c) 2013-2021 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
4
+ * Copyright (c) 2013-2022 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
5
5
  */
6
6
 
7
7
  /**
8
- * Decorator that sets the enumerable property of a class field to false.
8
+ * [[include:core/decorators/nonenumerable/README.md]]
9
+ * @packageDocumentation
10
+ * @module decorators/nonenumerable
9
11
  */
12
+
10
13
  export const nonenumerable = (target: object, propertyKey: string): void => {
11
14
  const descriptor =
12
15
  Object.getOwnPropertyDescriptor(target, propertyKey) || {};
@@ -0,0 +1,23 @@
1
+ Allow save value inside persistent storage as set/get to property
2
+
3
+ ```typescript
4
+ import { component, persistent } from './src/core/decorators';
5
+
6
+ @component
7
+ class Item extends UIElement {
8
+ @persistent
9
+ options = {
10
+ some: true
11
+ };
12
+ }
13
+
14
+ const item = new Item(jodit);
15
+ console.log(item.options); // {some: true}
16
+
17
+ item.options = {
18
+ some: false
19
+ };
20
+
21
+ const item2 = new Item(jodit); // or reload page
22
+ console.log(item.options); // {some: false}
23
+ ```
@@ -1,16 +1,19 @@
1
1
  /*!
2
2
  * Jodit Editor (https://xdsoft.net/jodit/)
3
3
  * Released under MIT see LICENSE.txt in the project root for license information.
4
- * Copyright (c) 2013-2021 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
4
+ * Copyright (c) 2013-2022 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
5
5
  */
6
6
 
7
- import type { IComponent, IDictionary, IViewComponent } from '../../types';
8
- import { STATUSES } from '../component';
9
- import { isViewObject } from '../helpers';
10
-
11
7
  /**
12
- * Allow save value inside persistent storage as set/get to property
8
+ * [[include:core/decorators/persistent/README.md]]
9
+ * @packageDocumentation
10
+ * @module decorators/persistent
13
11
  */
12
+
13
+ import type { IComponent, IDictionary, IViewComponent } from '../../../types';
14
+ import { STATUSES } from '../../component';
15
+ import { isViewObject } from '../../helpers';
16
+
14
17
  export function persistent<T extends IComponent>(
15
18
  target: T,
16
19
  propertyKey: string
@@ -0,0 +1,20 @@
1
+ Wrap function in wait wrapper, it will be called after `condition` returns `true`
2
+
3
+ ```typescript
4
+ import { component, wait } from 'jodit/src/core/decorators';
5
+ import { UIElement } from 'jodit/src/ui';
6
+
7
+ @component()
8
+ class UISomeElement extends UIElement {
9
+ @wait(() => typeof jQuery !== 'undefined')
10
+ protected runOnLoadJQuery(html: string): void {
11
+ jQuery(this.container).html(html);
12
+ alert('Run');
13
+ }
14
+ }
15
+
16
+ const elm = new UISomeElement(jodit);
17
+ elm.runOnLoadJQuery('<h1>One</h1>'); // Do nothing
18
+ // jQuery is loaded
19
+ // alert
20
+ ```
@@ -1,16 +1,19 @@
1
1
  /*!
2
2
  * Jodit Editor (https://xdsoft.net/jodit/)
3
3
  * Released under MIT see LICENSE.txt in the project root for license information.
4
- * Copyright (c) 2013-2021 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
4
+ * Copyright (c) 2013-2022 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
5
5
  */
6
6
 
7
- import type { IViewBased, IViewComponent } from '../../types';
8
- import { error, isFunction, isViewObject } from '../helpers';
9
- import { STATUSES } from '../component';
10
-
11
7
  /**
12
- * Wrap function in wait wrapper, it will be called after `condition` returns `true`
8
+ * [[include:core/decorators/wait/README.md]]
9
+ * @packageDocumentation
10
+ * @module decorators/wait
13
11
  */
12
+
13
+ import type { IViewBased, IViewComponent } from '../../../types';
14
+ import { error, isFunction, isViewObject } from '../../helpers';
15
+ import { STATUSES } from '../../component';
16
+
14
17
  export function wait<T extends IViewBased>(
15
18
  condition: (ctx: T) => boolean
16
19
  ): Function;
@@ -0,0 +1,125 @@
1
+ The decorator allows you to hang handlers on changes to the internal fields of the component,
2
+ as well as on any events [[EventEmitter]]
3
+
4
+ For example, we will make a reactive component that will change its color when its field changes:
5
+
6
+ ```ts
7
+ import { component, watch, hook } from 'jodit/src/core/decorators';
8
+ import { UIElement } from 'jodit/src/ui';
9
+
10
+ @component()
11
+ class UISomeReactElement extends UIElement {
12
+ state = {
13
+ color: 'red'
14
+ }
15
+
16
+ render(): string {
17
+ return `<div>
18
+ This text must be colored
19
+ </div>`
20
+ }
21
+
22
+ @hook('ready')
23
+ @watch('state.color')
24
+ onChangeColor(): void {
25
+ this.container.style.color = this.state.color;
26
+ }
27
+ }
28
+
29
+ const elm = new UISomeReactElement(jodit);
30
+ elm.state.color = 'yellow';
31
+ ```
32
+
33
+ The decorator can also be used to hang event handlers [[EventEmitter]]
34
+
35
+ Then the call signature has its own syntax:
36
+ - `:{EVENT}`
37
+ - `{CONTEXT}:{EVENT}`
38
+ - `{CONTEXT}:{EVENT.NAMESPACE}`
39
+
40
+ For example, this is how you can hang a click handler on the component container:
41
+
42
+ ```ts
43
+ @component()
44
+ class UIButtonElement extends UIElement {
45
+ state = {
46
+ counter: 0
47
+ }
48
+
49
+ render(): string {
50
+ return `<button>text</button>`
51
+ }
52
+
53
+ @watch('container:click') // Same this.j.e(this.container, 'click', this.onClick.bind(this))
54
+ onClick(): void {
55
+ this.state.counter++;
56
+ }
57
+
58
+ @watch('state.counter')
59
+ onClick(): void {
60
+ this.container.innerText = `Clicked ` + this.state.counter
61
+ }
62
+ }
63
+ ```
64
+
65
+ The context can be specified as a path to an object, and even as the name of a BEM interface element
66
+
67
+ ```ts
68
+ @component()
69
+ class UICard extends UIElement {
70
+ state = {
71
+ counter: 0
72
+ }
73
+
74
+ render(): string {
75
+ return `<div>
76
+ Clicked <span class="&__counter"></span>
77
+ <button class="&__card-button">Click</button>
78
+ </div>`
79
+ }
80
+
81
+ @watch('card-button:click') // As this.j.e.on(this.getElm('card-button'), 'click', this.onClick.bind(this))
82
+ onClick(): void {
83
+ this.state.counter++;
84
+ }
85
+
86
+ @watch('jodit.editor:focus') // As this.j.e.on(this.j.editor, 'focus', this.onJoditEditorFocus.bind(this))
87
+ onJoditEditorFocus(): void {
88
+ alert('Focused')
89
+ }
90
+
91
+ @watch(':afterSetMode') // As this.j.e.on('afterSetMode', this.onAfterSetMode.bind(this))
92
+ onAfterSetMode(): void {
93
+ alert(this.jodit.mode)
94
+ }
95
+
96
+ @watch('state.counter')
97
+ onClick(): void {
98
+ this.getElm('counter').innerText = this.state.counter
99
+ }
100
+ }
101
+ ```
102
+
103
+ Also, the context can be set differently by setting it as the second parameter,
104
+ or by setting the function as the second parameter that will return the context
105
+
106
+ ```ts
107
+ @component()
108
+ class UICardExt extends UICard {
109
+ @watch(':click', (ctx) => ctx.getElm('card-button')) // As this.j.e.on(this.getElm('card-button'), 'click', this.onClick.bind(this))
110
+ onClick(): void {
111
+ this.state.counter++;
112
+ }
113
+ }
114
+ ```
115
+
116
+ The first argument can be an array:
117
+ ```ts
118
+ @component()
119
+ class UICardExt extends UICard {
120
+ @watch(['card-button:click','card-button:mouseup','card-button:mousedown'])
121
+ onMouseEvents(e): void {
122
+ e.preventDefault();
123
+ }
124
+ }
125
+ ```
@@ -1,7 +1,13 @@
1
1
  /*!
2
2
  * Jodit Editor (https://xdsoft.net/jodit/)
3
3
  * Released under MIT see LICENSE.txt in the project root for license information.
4
- * Copyright (c) 2013-2021 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
4
+ * Copyright (c) 2013-2022 Valeriy Chupurnov. All rights reserved. https://xdsoft.net
5
+ */
6
+
7
+ /**
8
+ * [[include:core/decorators/watch/README.md]]
9
+ * @packageDocumentation
10
+ * @module decorators/watch
5
11
  */
6
12
 
7
13
  import type {
@@ -10,16 +16,12 @@ import type {
10
16
  IComponent,
11
17
  IDictionary,
12
18
  IViewComponent
13
- } from '../../types';
14
- import {
15
- error,
16
- isFunction,
17
- isPlainObject,
18
- isViewObject,
19
- splitArray
20
- } from '../helpers';
21
- import { ObserveObject } from '../events';
22
- import { STATUSES } from '../component';
19
+ } from '../../../types';
20
+ import { isFunction, isPlainObject, isViewObject } from '../../helpers/checker';
21
+ import { ObservableObject } from '../../event-emitter';
22
+ import { STATUSES } from '../../component';
23
+ import { splitArray } from '../../helpers/array/split-array';
24
+ import { error } from '../../helpers/utils/error';
23
25
 
24
26
  export function getPropertyDescriptor(
25
27
  obj: unknown,
@@ -94,10 +96,10 @@ export function watch(
94
96
 
95
97
  let value: any = component[key];
96
98
 
97
- if (value instanceof ObserveObject) {
99
+ if (value instanceof ObservableObject) {
98
100
  value.on(`change.${field}`, callback);
99
101
  } else if (isPlainObject(value) && parts.length > 1) {
100
- const observe = ObserveObject.create(value, [key]);
102
+ const observe = ObservableObject.create(value, [key]);
101
103
  observe.on(`change.${field}`, callback);
102
104
  (component as any)[key] = observe;
103
105
  } else {
@@ -118,7 +120,7 @@ export function watch(
118
120
  }
119
121
 
120
122
  if (isPlainObject(value)) {
121
- value = ObserveObject.create(value, [key]);
123
+ value = ObservableObject.create(value, [key]);
122
124
  value.on('change.' + field, callback);
123
125
  }
124
126
 
@@ -0,0 +1,13 @@
1
+ A module for working with the DOM. All of its methods are static.
2
+ For example, you can insert an element in front of another element:
3
+
4
+ ```js
5
+ import { Dom } from "jodit/src/core/dom";
6
+
7
+ const elm = document.getElementById('root');
8
+ const div = document.createElement('div');
9
+
10
+ Dom.before(elm, div);
11
+ ```
12
+
13
+ The rest of the methods can be found in the [[Dom | documentation]]