suneditor 3.0.0-beta.9 → 3.0.0-rc.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 (380) hide show
  1. package/README.md +65 -57
  2. package/dist/suneditor-contents.min.css +1 -0
  3. package/dist/suneditor.min.css +1 -1
  4. package/dist/suneditor.min.js +1 -1
  5. package/package.json +110 -61
  6. package/src/assets/design/color.css +36 -17
  7. package/src/assets/design/size.css +2 -0
  8. package/src/assets/icons/defaultIcons.js +17 -2
  9. package/src/assets/suneditor-contents.css +51 -16
  10. package/src/assets/suneditor.css +116 -43
  11. package/src/core/config/contextProvider.js +288 -0
  12. package/src/core/config/eventManager.js +188 -0
  13. package/src/core/config/instanceCheck.js +59 -0
  14. package/src/core/config/optionProvider.js +452 -0
  15. package/src/core/editor.js +166 -1637
  16. package/src/core/event/actions/index.js +229 -0
  17. package/src/core/event/effects/common.registry.js +74 -0
  18. package/src/core/event/effects/keydown.registry.js +573 -0
  19. package/src/core/event/effects/ruleHelpers.js +148 -0
  20. package/src/core/event/eventOrchestrator.js +944 -0
  21. package/src/core/event/executor.js +27 -0
  22. package/src/core/{base/eventHandlers → event/handlers}/handler_toolbar.js +27 -28
  23. package/src/core/{base/eventHandlers → event/handlers}/handler_ww_clipboard.js +10 -8
  24. package/src/core/{base/eventHandlers → event/handlers}/handler_ww_dragDrop.js +22 -23
  25. package/src/core/event/handlers/handler_ww_input.js +75 -0
  26. package/src/core/event/handlers/handler_ww_key.js +228 -0
  27. package/src/core/event/handlers/handler_ww_mouse.js +166 -0
  28. package/src/core/event/ports.js +211 -0
  29. package/src/core/event/reducers/keydown.reducer.js +97 -0
  30. package/src/core/event/rules/keydown.rule.arrow.js +63 -0
  31. package/src/core/event/rules/keydown.rule.backspace.js +208 -0
  32. package/src/core/event/rules/keydown.rule.delete.js +132 -0
  33. package/src/core/event/rules/keydown.rule.enter.js +150 -0
  34. package/src/core/event/rules/keydown.rule.tab.js +35 -0
  35. package/src/core/event/support/defaultLineManager.js +136 -0
  36. package/src/core/event/support/selectionState.js +204 -0
  37. package/src/core/kernel/coreKernel.js +320 -0
  38. package/src/core/kernel/kernelInjector.js +19 -0
  39. package/src/core/kernel/store.js +173 -0
  40. package/src/core/{class → logic/dom}/char.js +42 -45
  41. package/src/core/logic/dom/format.js +1075 -0
  42. package/src/core/{class → logic/dom}/html.js +743 -624
  43. package/src/core/logic/dom/inline.js +1847 -0
  44. package/src/core/logic/dom/listFormat.js +601 -0
  45. package/src/core/{class → logic/dom}/nodeTransform.js +92 -72
  46. package/src/core/{class → logic/dom}/offset.js +254 -317
  47. package/src/core/logic/dom/selection.js +754 -0
  48. package/src/core/logic/panel/menu.js +389 -0
  49. package/src/core/logic/panel/toolbar.js +449 -0
  50. package/src/core/logic/panel/viewer.js +761 -0
  51. package/src/core/logic/shell/_commandExecutor.js +380 -0
  52. package/src/core/logic/shell/commandDispatcher.js +241 -0
  53. package/src/core/logic/shell/component.js +970 -0
  54. package/src/core/logic/shell/focusManager.js +110 -0
  55. package/src/core/{base → logic/shell}/history.js +110 -60
  56. package/src/core/logic/shell/pluginManager.js +363 -0
  57. package/src/core/logic/shell/shortcuts.js +130 -0
  58. package/src/core/logic/shell/ui.js +904 -0
  59. package/src/core/schema/context.js +66 -0
  60. package/src/core/schema/frameContext.js +160 -0
  61. package/src/core/schema/options.js +628 -0
  62. package/src/core/section/constructor.js +194 -500
  63. package/src/core/section/documentType.js +297 -222
  64. package/src/events.js +808 -543
  65. package/src/helper/clipboard.js +27 -16
  66. package/src/helper/converter.js +100 -78
  67. package/src/helper/dom/domCheck.js +56 -30
  68. package/src/helper/dom/domQuery.js +159 -89
  69. package/src/helper/dom/domUtils.js +114 -49
  70. package/src/helper/dom/index.js +5 -1
  71. package/src/helper/env.js +26 -26
  72. package/src/helper/index.js +1 -1
  73. package/src/helper/keyCodeMap.js +25 -28
  74. package/src/helper/numbers.js +4 -8
  75. package/src/helper/unicode.js +4 -8
  76. package/src/hooks/base.js +307 -0
  77. package/src/hooks/params.js +130 -0
  78. package/src/interfaces/contracts.js +227 -0
  79. package/src/interfaces/index.js +7 -0
  80. package/src/interfaces/plugins.js +239 -0
  81. package/src/langs/ckb.js +4 -4
  82. package/src/langs/cs.js +4 -4
  83. package/src/langs/da.js +4 -4
  84. package/src/langs/de.js +4 -4
  85. package/src/langs/en.js +4 -4
  86. package/src/langs/es.js +4 -4
  87. package/src/langs/fa.js +4 -4
  88. package/src/langs/fr.js +4 -4
  89. package/src/langs/he.js +4 -4
  90. package/src/langs/hu.js +4 -4
  91. package/src/langs/it.js +4 -4
  92. package/src/langs/ja.js +4 -4
  93. package/src/langs/km.js +4 -4
  94. package/src/langs/ko.js +4 -4
  95. package/src/langs/lv.js +4 -4
  96. package/src/langs/nl.js +4 -4
  97. package/src/langs/pl.js +4 -4
  98. package/src/langs/pt_br.js +13 -13
  99. package/src/langs/ro.js +4 -4
  100. package/src/langs/ru.js +4 -4
  101. package/src/langs/se.js +4 -4
  102. package/src/langs/tr.js +4 -4
  103. package/src/langs/uk.js +4 -4
  104. package/src/langs/ur.js +4 -4
  105. package/src/langs/zh_cn.js +4 -4
  106. package/src/modules/{Browser.js → contract/Browser.js} +119 -128
  107. package/src/modules/{ColorPicker.js → contract/ColorPicker.js} +132 -142
  108. package/src/modules/contract/Controller.js +589 -0
  109. package/src/modules/{Figure.js → contract/Figure.js} +591 -411
  110. package/src/modules/{HueSlider.js → contract/HueSlider.js} +125 -86
  111. package/src/modules/contract/Modal.js +357 -0
  112. package/src/modules/contract/index.js +9 -0
  113. package/src/modules/manager/ApiManager.js +197 -0
  114. package/src/modules/{FileManager.js → manager/FileManager.js} +128 -160
  115. package/src/modules/manager/index.js +5 -0
  116. package/src/modules/{ModalAnchorEditor.js → ui/ModalAnchorEditor.js} +108 -138
  117. package/src/modules/{SelectMenu.js → ui/SelectMenu.js} +119 -120
  118. package/src/modules/{_DragHandle.js → ui/_DragHandle.js} +1 -1
  119. package/src/modules/ui/index.js +6 -0
  120. package/src/plugins/browser/audioGallery.js +23 -26
  121. package/src/plugins/browser/fileBrowser.js +25 -28
  122. package/src/plugins/browser/fileGallery.js +20 -23
  123. package/src/plugins/browser/imageGallery.js +24 -23
  124. package/src/plugins/browser/videoGallery.js +27 -29
  125. package/src/plugins/command/blockquote.js +11 -17
  126. package/src/plugins/command/exportPDF.js +26 -26
  127. package/src/plugins/command/fileUpload.js +138 -133
  128. package/src/plugins/command/list_bulleted.js +48 -44
  129. package/src/plugins/command/list_numbered.js +48 -44
  130. package/src/plugins/dropdown/align.js +64 -50
  131. package/src/plugins/dropdown/backgroundColor.js +34 -35
  132. package/src/plugins/dropdown/{formatBlock.js → blockStyle.js} +43 -37
  133. package/src/plugins/dropdown/font.js +50 -36
  134. package/src/plugins/dropdown/fontColor.js +34 -35
  135. package/src/plugins/dropdown/hr.js +55 -50
  136. package/src/plugins/dropdown/layout.js +20 -15
  137. package/src/plugins/dropdown/lineHeight.js +46 -30
  138. package/src/plugins/dropdown/list.js +32 -33
  139. package/src/plugins/dropdown/paragraphStyle.js +40 -34
  140. package/src/plugins/dropdown/table/index.js +915 -0
  141. package/src/plugins/dropdown/table/render/table.html.js +308 -0
  142. package/src/plugins/dropdown/table/render/table.menu.js +121 -0
  143. package/src/plugins/dropdown/table/services/table.cell.js +465 -0
  144. package/src/plugins/dropdown/table/services/table.clipboard.js +414 -0
  145. package/src/plugins/dropdown/table/services/table.grid.js +504 -0
  146. package/src/plugins/dropdown/table/services/table.resize.js +463 -0
  147. package/src/plugins/dropdown/table/services/table.selection.js +466 -0
  148. package/src/plugins/dropdown/table/services/table.style.js +844 -0
  149. package/src/plugins/dropdown/table/shared/table.constants.js +109 -0
  150. package/src/plugins/dropdown/table/shared/table.utils.js +219 -0
  151. package/src/plugins/dropdown/template.js +20 -15
  152. package/src/plugins/dropdown/textStyle.js +28 -22
  153. package/src/plugins/field/mention.js +54 -49
  154. package/src/plugins/index.js +5 -5
  155. package/src/plugins/input/fontSize.js +100 -97
  156. package/src/plugins/input/pageNavigator.js +13 -10
  157. package/src/plugins/modal/audio.js +208 -219
  158. package/src/plugins/modal/drawing.js +99 -104
  159. package/src/plugins/modal/embed.js +323 -312
  160. package/src/plugins/modal/image/index.js +942 -0
  161. package/src/plugins/modal/image/render/image.html.js +150 -0
  162. package/src/plugins/modal/image/services/image.size.js +198 -0
  163. package/src/plugins/modal/image/services/image.upload.js +216 -0
  164. package/src/plugins/modal/image/shared/image.constants.js +20 -0
  165. package/src/plugins/modal/link.js +74 -54
  166. package/src/plugins/modal/math.js +126 -119
  167. package/src/plugins/modal/video/index.js +858 -0
  168. package/src/plugins/modal/video/render/video.html.js +131 -0
  169. package/src/plugins/modal/video/services/video.size.js +281 -0
  170. package/src/plugins/modal/video/services/video.upload.js +92 -0
  171. package/src/plugins/popup/anchor.js +57 -49
  172. package/src/suneditor.js +73 -61
  173. package/src/themes/cobalt.css +155 -0
  174. package/src/themes/dark.css +143 -120
  175. package/src/typedef.js +214 -63
  176. package/types/assets/icons/defaultIcons.d.ts +8 -0
  177. package/types/assets/suneditor-contents.css.d.ts +1 -0
  178. package/types/assets/suneditor.css.d.ts +1 -0
  179. package/types/core/config/contextProvider.d.ts +148 -0
  180. package/types/core/config/eventManager.d.ts +68 -0
  181. package/types/core/config/instanceCheck.d.ts +33 -0
  182. package/types/core/config/optionProvider.d.ts +147 -0
  183. package/types/core/editor.d.ts +27 -586
  184. package/types/core/event/actions/index.d.ts +50 -0
  185. package/types/core/event/effects/common.registry.d.ts +56 -0
  186. package/types/core/event/effects/keydown.registry.d.ts +80 -0
  187. package/types/core/event/effects/ruleHelpers.d.ts +36 -0
  188. package/types/core/event/eventOrchestrator.d.ts +191 -0
  189. package/types/core/event/executor.d.ts +13 -0
  190. package/types/core/event/handlers/handler_toolbar.d.ts +38 -0
  191. package/types/core/event/handlers/handler_ww_clipboard.d.ts +36 -0
  192. package/types/core/event/handlers/handler_ww_dragDrop.d.ts +26 -0
  193. package/types/core/event/handlers/handler_ww_input.d.ts +38 -0
  194. package/types/core/event/handlers/handler_ww_key.d.ts +40 -0
  195. package/types/core/event/handlers/handler_ww_mouse.d.ts +47 -0
  196. package/types/core/event/ports.d.ts +256 -0
  197. package/types/core/event/reducers/keydown.reducer.d.ts +84 -0
  198. package/types/core/event/rules/keydown.rule.arrow.d.ts +19 -0
  199. package/types/core/event/rules/keydown.rule.backspace.d.ts +18 -0
  200. package/types/core/event/rules/keydown.rule.delete.d.ts +18 -0
  201. package/types/core/event/rules/keydown.rule.enter.d.ts +18 -0
  202. package/types/core/event/rules/keydown.rule.tab.d.ts +18 -0
  203. package/types/core/event/support/defaultLineManager.d.ts +22 -0
  204. package/types/core/event/support/selectionState.d.ts +29 -0
  205. package/types/core/kernel/coreKernel.d.ts +219 -0
  206. package/types/core/kernel/kernelInjector.d.ts +16 -0
  207. package/types/core/kernel/store.d.ts +170 -0
  208. package/types/core/logic/dom/char.d.ts +46 -0
  209. package/types/core/logic/dom/format.d.ts +234 -0
  210. package/types/core/logic/dom/html.d.ts +290 -0
  211. package/types/core/logic/dom/inline.d.ts +93 -0
  212. package/types/core/logic/dom/listFormat.d.ts +101 -0
  213. package/types/core/logic/dom/nodeTransform.d.ts +110 -0
  214. package/types/core/logic/dom/offset.d.ts +335 -0
  215. package/types/core/logic/dom/selection.d.ts +165 -0
  216. package/types/core/logic/panel/menu.d.ts +93 -0
  217. package/types/core/logic/panel/toolbar.d.ts +128 -0
  218. package/types/core/logic/panel/viewer.d.ts +89 -0
  219. package/types/core/logic/shell/_commandExecutor.d.ts +18 -0
  220. package/types/core/logic/shell/commandDispatcher.d.ts +65 -0
  221. package/types/core/logic/shell/component.d.ts +182 -0
  222. package/types/core/logic/shell/focusManager.d.ts +31 -0
  223. package/types/core/{base → logic/shell}/history.d.ts +13 -12
  224. package/types/core/logic/shell/pluginManager.d.ts +115 -0
  225. package/types/core/logic/shell/shortcuts.d.ts +131 -0
  226. package/types/core/logic/shell/ui.d.ts +261 -0
  227. package/types/core/schema/context.d.ts +104 -0
  228. package/types/core/schema/frameContext.d.ts +320 -0
  229. package/types/core/schema/options.d.ts +1241 -0
  230. package/types/core/section/constructor.d.ts +117 -652
  231. package/types/core/section/documentType.d.ts +43 -61
  232. package/types/events.d.ts +796 -65
  233. package/types/helper/clipboard.d.ts +5 -4
  234. package/types/helper/converter.d.ts +55 -43
  235. package/types/helper/dom/domCheck.d.ts +27 -19
  236. package/types/helper/dom/domQuery.d.ts +76 -57
  237. package/types/helper/dom/domUtils.d.ts +62 -39
  238. package/types/helper/dom/index.d.ts +87 -1
  239. package/types/helper/env.d.ts +16 -13
  240. package/types/helper/index.d.ts +8 -2
  241. package/types/helper/keyCodeMap.d.ts +24 -23
  242. package/types/helper/numbers.d.ts +4 -6
  243. package/types/helper/unicode.d.ts +4 -3
  244. package/types/hooks/base.d.ts +239 -0
  245. package/types/hooks/params.d.ts +65 -0
  246. package/types/index.d.ts +20 -117
  247. package/types/interfaces/contracts.d.ts +183 -0
  248. package/types/interfaces/index.d.ts +3 -0
  249. package/types/interfaces/plugins.d.ts +168 -0
  250. package/types/langs/_Lang.d.ts +2 -2
  251. package/types/langs/index.d.ts +2 -2
  252. package/types/modules/contract/Browser.d.ts +262 -0
  253. package/types/modules/contract/ColorPicker.d.ts +99 -0
  254. package/types/modules/contract/Controller.d.ts +204 -0
  255. package/types/modules/contract/Figure.d.ts +529 -0
  256. package/types/modules/{HueSlider.d.ts → contract/HueSlider.d.ts} +39 -28
  257. package/types/modules/contract/Modal.d.ts +62 -0
  258. package/types/modules/contract/index.d.ts +7 -0
  259. package/types/modules/manager/ApiManager.d.ts +106 -0
  260. package/types/modules/manager/FileManager.d.ts +124 -0
  261. package/types/modules/manager/index.d.ts +3 -0
  262. package/types/modules/ui/ModalAnchorEditor.d.ts +152 -0
  263. package/types/modules/ui/SelectMenu.d.ts +107 -0
  264. package/types/modules/{_DragHandle.d.ts → ui/_DragHandle.d.ts} +1 -0
  265. package/types/modules/ui/index.d.ts +4 -0
  266. package/types/plugins/browser/audioGallery.d.ts +33 -41
  267. package/types/plugins/browser/fileBrowser.d.ts +42 -50
  268. package/types/plugins/browser/fileGallery.d.ts +33 -41
  269. package/types/plugins/browser/imageGallery.d.ts +30 -37
  270. package/types/plugins/browser/videoGallery.d.ts +33 -41
  271. package/types/plugins/command/blockquote.d.ts +4 -21
  272. package/types/plugins/command/exportPDF.d.ts +23 -33
  273. package/types/plugins/command/fileUpload.d.ts +80 -100
  274. package/types/plugins/command/list_bulleted.d.ts +9 -35
  275. package/types/plugins/command/list_numbered.d.ts +9 -35
  276. package/types/plugins/dropdown/align.d.ts +23 -46
  277. package/types/plugins/dropdown/backgroundColor.d.ts +35 -53
  278. package/types/plugins/dropdown/blockStyle.d.ts +45 -0
  279. package/types/plugins/dropdown/font.d.ts +18 -41
  280. package/types/plugins/dropdown/fontColor.d.ts +35 -53
  281. package/types/plugins/dropdown/hr.d.ts +26 -52
  282. package/types/plugins/dropdown/layout.d.ts +19 -25
  283. package/types/plugins/dropdown/lineHeight.d.ts +21 -39
  284. package/types/plugins/dropdown/list.d.ts +6 -34
  285. package/types/plugins/dropdown/paragraphStyle.d.ts +34 -45
  286. package/types/plugins/dropdown/table/index.d.ts +158 -0
  287. package/types/plugins/dropdown/table/render/table.html.d.ts +71 -0
  288. package/types/plugins/dropdown/table/render/table.menu.d.ts +59 -0
  289. package/types/plugins/dropdown/table/services/table.cell.d.ts +76 -0
  290. package/types/plugins/dropdown/table/services/table.clipboard.d.ts +26 -0
  291. package/types/plugins/dropdown/table/services/table.grid.d.ts +77 -0
  292. package/types/plugins/dropdown/table/services/table.resize.d.ts +72 -0
  293. package/types/plugins/dropdown/table/services/table.selection.d.ts +59 -0
  294. package/types/plugins/dropdown/table/services/table.style.d.ts +162 -0
  295. package/types/plugins/dropdown/table/shared/table.constants.d.ts +134 -0
  296. package/types/plugins/dropdown/table/shared/table.utils.d.ts +91 -0
  297. package/types/plugins/dropdown/template.d.ts +19 -25
  298. package/types/plugins/dropdown/textStyle.d.ts +23 -30
  299. package/types/plugins/field/mention.d.ts +66 -72
  300. package/types/plugins/index.d.ts +41 -40
  301. package/types/plugins/input/fontSize.d.ts +57 -96
  302. package/types/plugins/input/pageNavigator.d.ts +5 -8
  303. package/types/plugins/modal/audio.d.ts +60 -153
  304. package/types/plugins/modal/drawing.d.ts +16 -118
  305. package/types/plugins/modal/embed.d.ts +46 -166
  306. package/types/plugins/modal/image/index.d.ts +281 -0
  307. package/types/plugins/modal/image/render/image.html.d.ts +45 -0
  308. package/types/plugins/modal/image/services/image.size.d.ts +55 -0
  309. package/types/plugins/modal/image/services/image.upload.d.ts +24 -0
  310. package/types/plugins/modal/image/shared/image.constants.d.ts +17 -0
  311. package/types/plugins/modal/link.d.ts +46 -66
  312. package/types/plugins/modal/math.d.ts +17 -86
  313. package/types/plugins/modal/{video.d.ts → video/index.d.ts} +89 -221
  314. package/types/plugins/modal/video/render/video.html.d.ts +37 -0
  315. package/types/plugins/modal/video/services/video.size.d.ts +74 -0
  316. package/types/plugins/modal/video/services/video.upload.d.ts +19 -0
  317. package/types/plugins/popup/anchor.d.ts +8 -38
  318. package/types/suneditor.d.ts +55 -24
  319. package/types/typedef.d.ts +344 -228
  320. package/CONTRIBUTING.md +0 -186
  321. package/src/core/base/eventHandlers/handler_ww_key_input.js +0 -1200
  322. package/src/core/base/eventHandlers/handler_ww_mouse.js +0 -194
  323. package/src/core/base/eventManager.js +0 -1523
  324. package/src/core/class/component.js +0 -856
  325. package/src/core/class/format.js +0 -3433
  326. package/src/core/class/menu.js +0 -346
  327. package/src/core/class/selection.js +0 -610
  328. package/src/core/class/shortcuts.js +0 -98
  329. package/src/core/class/toolbar.js +0 -431
  330. package/src/core/class/ui.js +0 -424
  331. package/src/core/class/viewer.js +0 -750
  332. package/src/core/section/actives.js +0 -266
  333. package/src/core/section/context.js +0 -102
  334. package/src/editorInjector/_classes.js +0 -36
  335. package/src/editorInjector/_core.js +0 -87
  336. package/src/editorInjector/index.js +0 -73
  337. package/src/modules/ApiManager.js +0 -191
  338. package/src/modules/Controller.js +0 -474
  339. package/src/modules/Modal.js +0 -346
  340. package/src/modules/index.js +0 -14
  341. package/src/plugins/dropdown/table.js +0 -4034
  342. package/src/plugins/modal/image.js +0 -1376
  343. package/src/plugins/modal/video.js +0 -1226
  344. package/types/core/base/eventHandlers/handler_toolbar.d.ts +0 -41
  345. package/types/core/base/eventHandlers/handler_ww_clipboard.d.ts +0 -40
  346. package/types/core/base/eventHandlers/handler_ww_dragDrop.d.ts +0 -35
  347. package/types/core/base/eventHandlers/handler_ww_key_input.d.ts +0 -45
  348. package/types/core/base/eventHandlers/handler_ww_mouse.d.ts +0 -39
  349. package/types/core/base/eventManager.d.ts +0 -401
  350. package/types/core/class/char.d.ts +0 -61
  351. package/types/core/class/component.d.ts +0 -213
  352. package/types/core/class/format.d.ts +0 -623
  353. package/types/core/class/html.d.ts +0 -430
  354. package/types/core/class/menu.d.ts +0 -126
  355. package/types/core/class/nodeTransform.d.ts +0 -93
  356. package/types/core/class/offset.d.ts +0 -522
  357. package/types/core/class/selection.d.ts +0 -188
  358. package/types/core/class/shortcuts.d.ts +0 -142
  359. package/types/core/class/toolbar.d.ts +0 -189
  360. package/types/core/class/ui.d.ts +0 -164
  361. package/types/core/class/viewer.d.ts +0 -140
  362. package/types/core/section/actives.d.ts +0 -46
  363. package/types/core/section/context.d.ts +0 -45
  364. package/types/editorInjector/_classes.d.ts +0 -41
  365. package/types/editorInjector/_core.d.ts +0 -87
  366. package/types/editorInjector/index.d.ts +0 -69
  367. package/types/modules/ApiManager.d.ts +0 -125
  368. package/types/modules/Browser.d.ts +0 -326
  369. package/types/modules/ColorPicker.d.ts +0 -135
  370. package/types/modules/Controller.d.ts +0 -251
  371. package/types/modules/Figure.d.ts +0 -517
  372. package/types/modules/FileManager.d.ts +0 -202
  373. package/types/modules/Modal.d.ts +0 -111
  374. package/types/modules/ModalAnchorEditor.d.ts +0 -236
  375. package/types/modules/SelectMenu.d.ts +0 -194
  376. package/types/modules/index.d.ts +0 -26
  377. package/types/plugins/dropdown/formatBlock.d.ts +0 -55
  378. package/types/plugins/dropdown/table.d.ts +0 -627
  379. package/types/plugins/modal/image.d.ts +0 -451
  380. /package/{LICENSE → LICENSE.txt} +0 -0
@@ -1,44 +1,42 @@
1
- import EditorInjector from '../../editorInjector';
2
- import { Browser } from '../../modules';
1
+ import { PluginBrowser } from '../../interfaces';
2
+ import { Browser } from '../../modules/contract';
3
3
 
4
4
  /**
5
- * @typedef {import('../../modules/Browser').BrowserFile} BrowserFile_fileBrowser
5
+ * @typedef {Object} FileBrowserPluginOptions
6
+ * @property {Object<string, *>|Array<*>} [data] - Direct data without server calls
7
+ * @property {string} [url] - Server request URL
8
+ * @property {Object<string, string>} [headers] - Server request headers
9
+ * @property {string|((item: SunEditor.Module.Browser.File) => string)} [thumbnail] - Default thumbnail
10
+ * @property {Array<string>} [props] - Additional tag names
6
11
  */
7
12
 
8
13
  /**
9
14
  * @class
10
- * @extends EditorInjector
11
15
  * @description File browser plugin. Can contain any media type.
12
16
  */
13
- class FileBrowser extends EditorInjector {
17
+ class FileBrowser extends PluginBrowser {
14
18
  static key = 'fileBrowser';
15
- static type = 'browser';
16
19
  static className = '';
17
20
 
18
21
  /**
19
22
  * @constructor
20
- * @param {__se__EditorCore} editor - The root editor instance
21
- * @param {Object} pluginOptions
22
- * @param {Object<string, *>|Array<*>=} pluginOptions.data - direct data without server calls
23
- * @param {string} pluginOptions.url - server request url
24
- * @param {Object<string, string>=} pluginOptions.headers - server request headers
25
- * @param {string|((item: BrowserFile_fileBrowser) => string)} pluginOptions.thumbnail - default thumbnail
26
- * @param {Array<string>} pluginOptions.props - additional tag names
23
+ * @param {SunEditor.Kernel} editor - The core kernel
24
+ * @param {FileBrowserPluginOptions} pluginOptions
27
25
  */
28
26
  constructor(editor, pluginOptions) {
29
27
  // plugin bisic properties
30
28
  super(editor);
31
- this.title = this.lang.fileBrowser;
29
+ this.title = this.$.lang.fileBrowser;
32
30
  this.icon = 'file_browser';
33
31
 
34
32
  // members
35
33
  this.onSelectfunction = null;
36
34
 
37
35
  // modules
38
- const thumbnail = { video: this.icons.video_thumbnail, audio: this.icons.audio_thumbnail, file: this.icons.file_thumbnail };
39
- const defaultThumbnail = this.icons.file_thumbnail;
40
- this.browser = new Browser(this, {
41
- title: this.lang.fileBrowser,
36
+ const thumbnail = { video: this.$.icons.video_thumbnail, audio: this.$.icons.audio_thumbnail, file: this.$.icons.file_thumbnail };
37
+ const defaultThumbnail = this.$.icons.file_thumbnail;
38
+ this.browser = new Browser(this, this.$, {
39
+ title: this.$.lang.fileBrowser,
42
40
  data: pluginOptions.data,
43
41
  url: pluginOptions.url,
44
42
  headers: pluginOptions.headers,
@@ -46,14 +44,13 @@ class FileBrowser extends EditorInjector {
46
44
  columnSize: 4,
47
45
  className: 'se-file-browser',
48
46
  thumbnail: typeof pluginOptions.thumbnail === 'function' ? pluginOptions.thumbnail : (item) => thumbnail[item.type] || defaultThumbnail,
49
- props: [...new Set((pluginOptions.props ?? []).concat(['frame']))]
47
+ props: [...new Set((pluginOptions.props ?? []).concat(['frame']))],
50
48
  });
51
49
  }
52
50
 
53
51
  /**
54
- * @editorMethod Modules.Browser
55
- * @description Executes the method that is called when a "Browser" module's is opened.
56
- * @param {?(targe: Node) => *=} onSelectfunction method to be executed after selecting an item in the gallery
52
+ * @override
53
+ * @type {PluginBrowser['open']}
57
54
  */
58
55
  open(onSelectfunction) {
59
56
  this.onSelectfunction = onSelectfunction;
@@ -61,8 +58,8 @@ class FileBrowser extends EditorInjector {
61
58
  }
62
59
 
63
60
  /**
64
- * @editorMethod Modules.Browser
65
- * @description Executes the method that is called when a "Browser" module's is closed.
61
+ * @override
62
+ * @type {PluginBrowser['close']}
66
63
  */
67
64
  close() {
68
65
  this.onSelectfunction = null;
@@ -80,19 +77,19 @@ class FileBrowser extends EditorInjector {
80
77
  const type = target.getAttribute('data-type');
81
78
  switch (type) {
82
79
  case 'image': {
83
- this.plugins.imageGallery.browser.selectorHandler(target);
80
+ this.$.plugins.imageGallery.browser.selectorHandler(target);
84
81
  break;
85
82
  }
86
83
  case 'video': {
87
- this.plugins.videoGallery.browser.selectorHandler(target);
84
+ this.$.plugins.videoGallery.browser.selectorHandler(target);
88
85
  break;
89
86
  }
90
87
  case 'audio': {
91
- this.plugins.audioGallery.browser.selectorHandler(target);
88
+ this.$.plugins.audioGallery.browser.selectorHandler(target);
92
89
  break;
93
90
  }
94
91
  case 'file': {
95
- this.plugins.fileGallery.browser.selectorHandler(target);
92
+ this.$.plugins.fileGallery.browser.selectorHandler(target);
96
93
  break;
97
94
  }
98
95
  }
@@ -1,56 +1,53 @@
1
- import EditorInjector from '../../editorInjector';
2
- import { Browser } from '../../modules';
1
+ import { PluginBrowser } from '../../interfaces';
2
+ import { Browser } from '../../modules/contract';
3
3
 
4
4
  /**
5
- * @typedef {import('../../modules/Browser').BrowserFile} BrowserFile_fileGallery
5
+ * @typedef {Object} FileGalleryPluginOptions
6
+ * @property {Array<SunEditor.Module.Browser.File>} [data] - Direct data without server calls
7
+ * @property {string} [url] - Server request URL
8
+ * @property {Object<string, string>} [headers] - Server request headers
9
+ * @property {string|((item: SunEditor.Module.Browser.File) => string)} [thumbnail] - Default thumbnail
6
10
  */
7
11
 
8
12
  /**
9
13
  * @class
10
- * @extends EditorInjector
11
14
  * @description File gallery plugin
12
15
  */
13
- class FileGallery extends EditorInjector {
16
+ class FileGallery extends PluginBrowser {
14
17
  static key = 'fileGallery';
15
- static type = 'browser';
16
18
  static className = '';
17
19
 
18
20
  /**
19
21
  * @constructor
20
- * @param {__se__EditorCore} editor - The root editor instance
21
- * @param {Object} pluginOptions
22
- * @param {Array<*>=} pluginOptions.data - direct data without server calls
23
- * @param {string} pluginOptions.url - server request url
24
- * @param {Object<string, string>=} pluginOptions.headers - server request headers
25
- * @param {string|((item: BrowserFile_fileGallery) => string)} pluginOptions.thumbnail - default thumbnail
22
+ * @param {SunEditor.Kernel} editor - The core kernel
23
+ * @param {FileGalleryPluginOptions} pluginOptions
26
24
  */
27
25
  constructor(editor, pluginOptions) {
28
26
  // plugin bisic properties
29
27
  super(editor);
30
- this.title = this.lang.fileGallery;
28
+ this.title = this.$.lang.fileGallery;
31
29
  this.icon = 'file_gallery';
32
30
 
33
31
  // members
34
32
  this.onSelectfunction = null;
35
33
 
36
34
  // modules
37
- const thumbnail = typeof pluginOptions.thumbnail === 'string' ? pluginOptions.thumbnail : this.icons.file_thumbnail;
38
- this.browser = new Browser(this, {
39
- title: this.lang.fileGallery,
35
+ const thumbnail = typeof pluginOptions.thumbnail === 'string' ? pluginOptions.thumbnail : this.$.icons.file_thumbnail;
36
+ this.browser = new Browser(this, this.$, {
37
+ title: this.$.lang.fileGallery,
40
38
  data: pluginOptions.data,
41
39
  url: pluginOptions.url,
42
40
  headers: pluginOptions.headers,
43
41
  selectorHandler: this.#SetItem.bind(this),
44
42
  columnSize: 4,
45
43
  className: 'se-file-gallery',
46
- thumbnail: typeof pluginOptions.thumbnail === 'function' ? pluginOptions.thumbnail : () => thumbnail
44
+ thumbnail: typeof pluginOptions.thumbnail === 'function' ? pluginOptions.thumbnail : () => thumbnail,
47
45
  });
48
46
  }
49
47
 
50
48
  /**
51
- * @editorMethod Modules.Browser
52
- * @description Executes the method that is called when a "Browser" module's is opened.
53
- * @param {?(targe: Node) => *=} onSelectfunction method to be executed after selecting an item in the gallery
49
+ * @override
50
+ * @type {PluginBrowser['open']}
54
51
  */
55
52
  open(onSelectfunction) {
56
53
  this.onSelectfunction = onSelectfunction;
@@ -58,8 +55,8 @@ class FileGallery extends EditorInjector {
58
55
  }
59
56
 
60
57
  /**
61
- * @editorMethod Modules.Browser
62
- * @description Executes the method that is called when a "Browser" module's is closed.
58
+ * @override
59
+ * @type {PluginBrowser['close']}
63
60
  */
64
61
  close() {
65
62
  this.onSelectfunction = null;
@@ -75,7 +72,7 @@ class FileGallery extends EditorInjector {
75
72
  this.onSelectfunction(target);
76
73
  } else {
77
74
  const file = { name: target.getAttribute('data-name'), size: 0 };
78
- this.plugins.fileUpload.create(target.getAttribute('data-command'), file, true);
75
+ this.$.plugins.fileUpload.create(target.getAttribute('data-command'), file, true);
79
76
  }
80
77
  }
81
78
  }
@@ -1,53 +1,54 @@
1
- import EditorInjector from '../../editorInjector';
2
- import { Browser } from '../../modules';
1
+ import { PluginBrowser } from '../../interfaces';
2
+ import { Browser } from '../../modules/contract';
3
+
4
+ /**
5
+ * @typedef ImageGalleryPluginOptions
6
+ * @property {Array<*>} [data] - Direct data without server calls
7
+ * @property {string} [url] - Server request URL
8
+ * @property {Object<string, string>} [headers] - Server request headers
9
+ */
3
10
 
4
11
  /**
5
12
  * @class
6
- * @extends EditorInjector
7
13
  * @description Image gallery plugin
8
14
  */
9
- class ImageGallery extends EditorInjector {
15
+ class ImageGallery extends PluginBrowser {
10
16
  static key = 'imageGallery';
11
- static type = 'browser';
12
17
  static className = '';
13
18
 
14
19
  /**
15
20
  * @constructor
16
- * @param {__se__EditorCore} editor - The root editor instance
17
- * @param {Object} pluginOptions
18
- * @param {Array<*>=} pluginOptions.data - direct data without server calls
19
- * @param {string=} pluginOptions.url - server request url
20
- * @param {Object<string, string>=} pluginOptions.headers - server request headers
21
+ * @param {SunEditor.Kernel} editor - The core kernel
22
+ * @param {ImageGalleryPluginOptions} pluginOptions
21
23
  */
22
24
  constructor(editor, pluginOptions) {
23
25
  // plugin bisic properties
24
26
  super(editor);
25
- this.title = this.lang.imageGallery;
27
+ this.title = this.$.lang.imageGallery;
26
28
  this.icon = 'image_gallery';
27
29
 
28
30
  // members
29
31
  this.onSelectfunction = null;
30
32
 
31
33
  // modules
32
- this.browser = new Browser(this, {
33
- title: this.lang.imageGallery,
34
+ this.browser = new Browser(this, this.$, {
35
+ title: this.$.lang.imageGallery,
34
36
  data: pluginOptions.data,
35
37
  url: pluginOptions.url,
36
38
  headers: pluginOptions.headers,
37
39
  selectorHandler: this.#SetItem.bind(this),
38
40
  columnSize: 4,
39
- className: 'se-image-gallery'
41
+ className: 'se-image-gallery',
40
42
  });
41
43
 
42
44
  // members
43
- this.width = this.plugins.image.pluginOptions.defaultWidth === 'auto' ? '' : this.plugins.image.pluginOptions.defaultWidth;
44
- this.height = this.plugins.image.pluginOptions.defaultHeight === 'auto' ? '' : this.plugins.image.pluginOptions.defaultHeight;
45
+ this.width = this.$.plugins.image.pluginOptions.defaultWidth === 'auto' ? '' : this.$.plugins.image.pluginOptions.defaultWidth;
46
+ this.height = this.$.plugins.image.pluginOptions.defaultHeight === 'auto' ? '' : this.$.plugins.image.pluginOptions.defaultHeight;
45
47
  }
46
48
 
47
49
  /**
48
- * @editorMethod Modules.Browser
49
- * @description Executes the method that is called when a "Browser" module's is opened.
50
- * @param {?(targe: Node) => *=} onSelectfunction method to be executed after selecting an item in the gallery
50
+ * @override
51
+ * @type {PluginBrowser['open']}
51
52
  */
52
53
  open(onSelectfunction) {
53
54
  this.onSelectfunction = onSelectfunction;
@@ -55,8 +56,8 @@ class ImageGallery extends EditorInjector {
55
56
  }
56
57
 
57
58
  /**
58
- * @editorMethod Modules.Browser
59
- * @description Executes the method that is called when a "Browser" module's is closed.
59
+ * @override
60
+ * @type {PluginBrowser['close']}
60
61
  */
61
62
  close() {
62
63
  this.onSelectfunction = null;
@@ -72,8 +73,8 @@ class ImageGallery extends EditorInjector {
72
73
  this.onSelectfunction(target);
73
74
  } else {
74
75
  const file = { name: target.getAttribute('data-name'), size: 0 };
75
- this.plugins.image.init();
76
- this.plugins.image.create(target.getAttribute('data-command'), null, this.width, this.height, 'none', file, target.alt);
76
+ this.$.plugins.image.modalInit();
77
+ this.$.plugins.image.create(target.getAttribute('data-command'), null, this.width, this.height, 'none', file, target.alt, true);
77
78
  }
78
79
  }
79
80
  }
@@ -1,42 +1,40 @@
1
- import EditorInjector from '../../editorInjector';
2
- import { Browser } from '../../modules';
1
+ import { PluginBrowser } from '../../interfaces';
2
+ import { Browser } from '../../modules/contract';
3
3
 
4
4
  /**
5
- * @typedef {import('../../modules/Browser').BrowserFile} BrowserFile_videoGallery
5
+ * @typedef {Object} VideoGalleryPluginOptions
6
+ * @property {Array<SunEditor.Module.Browser.File>} [data] - Direct data without server calls
7
+ * @property {string} [url] - Server request URL
8
+ * @property {Object<string, string>} [headers] - Server request headers
9
+ * @property {string|((item: SunEditor.Module.Browser.File) => string)} [thumbnail] - Default thumbnail
6
10
  */
7
11
 
8
12
  /**
9
13
  * @class
10
- * @extends EditorInjector
11
14
  * @description Video gallery plugin
12
15
  */
13
- class VideoGallery extends EditorInjector {
16
+ class VideoGallery extends PluginBrowser {
14
17
  static key = 'videoGallery';
15
- static type = 'browser';
16
18
  static className = '';
17
19
 
18
20
  /**
19
21
  * @constructor
20
- * @param {__se__EditorCore} editor - The root editor instance
21
- * @param {Object} pluginOptions
22
- * @param {Array<*>=} pluginOptions.data - direct data without server calls
23
- * @param {string=} pluginOptions.url - server request url
24
- * @param {Object<string, string>=} pluginOptions.headers - server request headers
25
- * @param {string|((item: BrowserFile_videoGallery) => string)} pluginOptions.thumbnail - default thumbnail
22
+ * @param {SunEditor.Kernel} editor - The core kernel
23
+ * @param {VideoGalleryPluginOptions} pluginOptions
26
24
  */
27
25
  constructor(editor, pluginOptions) {
28
26
  // plugin bisic properties
29
27
  super(editor);
30
- this.title = this.lang.videoGallery;
28
+ this.title = this.$.lang.videoGallery;
31
29
  this.icon = 'video_gallery';
32
30
 
33
31
  // members
34
32
  this.onSelectfunction = null;
35
33
 
36
34
  // modules
37
- const thumbnail = typeof pluginOptions.thumbnail === 'string' ? pluginOptions.thumbnail : this.icons.video_thumbnail;
38
- this.browser = new Browser(this, {
39
- title: this.lang.videoGallery,
35
+ const thumbnail = typeof pluginOptions.thumbnail === 'string' ? pluginOptions.thumbnail : this.$.icons.video_thumbnail;
36
+ this.browser = new Browser(this, this.$, {
37
+ title: this.$.lang.videoGallery,
40
38
  data: pluginOptions.data,
41
39
  url: pluginOptions.url,
42
40
  headers: pluginOptions.headers,
@@ -44,18 +42,17 @@ class VideoGallery extends EditorInjector {
44
42
  columnSize: 4,
45
43
  className: 'se-video-gallery',
46
44
  thumbnail: typeof pluginOptions.thumbnail === 'function' ? pluginOptions.thumbnail : () => thumbnail,
47
- props: ['frame']
45
+ props: ['frame'],
48
46
  });
49
47
 
50
48
  // members
51
- this.width = this.plugins.video.pluginOptions.defaultWidth === 'auto' ? '' : this.plugins.video.pluginOptions.defaultWidth;
52
- this.height = this.plugins.video.pluginOptions.defaultHeight === 'auto' ? '' : this.plugins.video.pluginOptions.defaultHeight;
49
+ this.width = this.$.plugins.video.pluginOptions.defaultWidth === 'auto' ? '' : this.$.plugins.video.pluginOptions.defaultWidth;
50
+ this.height = this.$.plugins.video.pluginOptions.defaultHeight === 'auto' ? '' : this.$.plugins.video.pluginOptions.defaultHeight;
53
51
  }
54
52
 
55
53
  /**
56
- * @editorMethod Modules.Browser
57
- * @description Executes the method that is called when a "Browser" module's is opened.
58
- * @param {?(targe: Node) => *=} onSelectfunction method to be executed after selecting an item in the gallery
54
+ * @override
55
+ * @type {PluginBrowser['open']}
59
56
  */
60
57
  open(onSelectfunction) {
61
58
  this.onSelectfunction = onSelectfunction;
@@ -63,8 +60,8 @@ class VideoGallery extends EditorInjector {
63
60
  }
64
61
 
65
62
  /**
66
- * @editorMethod Modules.Browser
67
- * @description Executes the method that is called when a "Browser" module's is closed.
63
+ * @override
64
+ * @type {PluginBrowser['close']}
68
65
  */
69
66
  close() {
70
67
  this.onSelectfunction = null;
@@ -80,21 +77,22 @@ class VideoGallery extends EditorInjector {
80
77
  this.onSelectfunction(target);
81
78
  } else {
82
79
  let url = target.getAttribute('data-command');
83
- const processUrl = this.plugins.video.findProcessUrl(url);
80
+ const processUrl = this.$.plugins.video.findProcessUrl(url);
84
81
  if (processUrl) {
85
82
  url = processUrl.url;
86
83
  }
87
84
 
88
85
  const file = { name: target.getAttribute('data-name'), size: 0 };
89
- this.plugins.video.init();
90
- this.plugins.video.create(
91
- this.plugins.video[target.getAttribute('data-frame') === 'iframe' ? 'createIframeTag' : 'createVideoTag']({ poster: target.getAttribute('data-thumbnail') }),
86
+ this.$.plugins.video.modalInit();
87
+ this.$.plugins.video.create(
88
+ this.$.plugins.video[target.getAttribute('data-frame') === 'iframe' ? 'createIframeTag' : 'createVideoTag']({ poster: target.getAttribute('data-thumbnail') }),
92
89
  url,
93
90
  null,
94
91
  this.width,
95
92
  this.height,
96
93
  false,
97
- file
94
+ file,
95
+ true,
98
96
  );
99
97
  }
100
98
  }
@@ -1,23 +1,22 @@
1
- import EditorInjector from '../../editorInjector';
1
+ import { PluginCommand } from '../../interfaces';
2
2
  import { dom } from '../../helper';
3
3
 
4
4
  /**
5
5
  * @class
6
6
  * @description Blockquote plugin
7
7
  */
8
- class Blockquote extends EditorInjector {
8
+ class Blockquote extends PluginCommand {
9
9
  static key = 'blockquote';
10
- static type = 'command';
11
10
  static className = '';
12
11
 
13
12
  /**
14
13
  * @constructor
15
- * @param {__se__EditorCore} editor - The root editor instance
14
+ * @param {SunEditor.Kernel} editor - The core kernel
16
15
  */
17
16
  constructor(editor) {
18
17
  super(editor);
19
18
  // plugin basic properties
20
- this.title = this.lang.tag_blockquote;
19
+ this.title = this.$.lang.tag_blockquote;
21
20
  this.icon = 'blockquote';
22
21
 
23
22
  // members
@@ -25,12 +24,8 @@ class Blockquote extends EditorInjector {
25
24
  }
26
25
 
27
26
  /**
28
- * @editorMethod Editor.EventManager
29
- * @description Executes the method that is called whenever the cursor position changes.
30
- * @param {?HTMLElement=} element - Node element where the cursor is currently located
31
- * @param {?HTMLElement=} target - The plugin's toolbar button element
32
- * @returns {boolean} - Whether the plugin is active
33
- * - If it returns "undefined", it will no longer be called in this scope.
27
+ * @hook Editor.EventManager
28
+ * @type {SunEditor.Hook.Event.Active}
34
29
  */
35
30
  active(element, target) {
36
31
  if (/blockquote/i.test(element?.nodeName)) {
@@ -43,17 +38,16 @@ class Blockquote extends EditorInjector {
43
38
  }
44
39
 
45
40
  /**
46
- * @editorMethod Editor.core
47
- * @description Executes the main execution method of the plugin.
48
- * - It is executed by clicking a toolbar "command" button or calling an API.
41
+ * @override
42
+ * @type {PluginCommand['action']}
49
43
  */
50
44
  action() {
51
- const currentBlockquote = dom.query.getParentElement(this.selection.getNode(), 'blockquote');
45
+ const currentBlockquote = dom.query.getParentElement(this.$.selection.getNode(), 'blockquote');
52
46
 
53
47
  if (currentBlockquote) {
54
- this.format.removeBlock(currentBlockquote, { selectedFormats: null, newBlockElement: null, shouldDelete: false, skipHistory: false });
48
+ this.$.format.removeBlock(currentBlockquote, { selectedFormats: null, newBlockElement: null, shouldDelete: false, skipHistory: false });
55
49
  } else {
56
- this.format.applyBlock(this.quoteTag.cloneNode(false));
50
+ this.$.format.applyBlock(this.quoteTag.cloneNode(false));
57
51
  }
58
52
  }
59
53
  }
@@ -1,29 +1,32 @@
1
- import EditorInjector from '../../editorInjector';
1
+ import { PluginCommand } from '../../interfaces';
2
2
  import { dom, env } from '../../helper';
3
- import { ApiManager } from '../../modules';
3
+ import { ApiManager } from '../../modules/manager';
4
4
 
5
5
  const { _w, _d } = env;
6
6
 
7
+ /**
8
+ * @typedef ExportPDFPluginOptions
9
+ * @property {string} apiUrl - Server request URL for PDF generation
10
+ * @property {string} [fileName="suneditor-pdf"] - Name of the generated PDF file
11
+ */
12
+
7
13
  /**
8
14
  * @class
9
15
  * @description Export PDF plugin
10
16
  */
11
- class ExportPDF extends EditorInjector {
17
+ class ExportPDF extends PluginCommand {
12
18
  static key = 'exportPDF';
13
- static type = 'command';
14
19
  static className = 'se-component-enabled';
15
20
 
16
21
  /**
17
22
  * @constructor
18
- * @param {__se__EditorCore} editor - The root editor instance
19
- * @param {Object} pluginOptions - plugin options
20
- * @param {string} pluginOptions.apiUrl - server request url
21
- * @param {string} pluginOptions.fileName - file name
23
+ * @param {SunEditor.Kernel} editor - The core kernel
24
+ * @param {ExportPDFPluginOptions} pluginOptions - plugin options
22
25
  */
23
26
  constructor(editor, pluginOptions) {
24
27
  super(editor);
25
28
  // plugin basic properties
26
- this.title = this.lang.exportPDF;
29
+ this.title = this.$.lang.exportPDF;
27
30
  this.icon = 'PDF';
28
31
 
29
32
  // plugin options
@@ -34,22 +37,20 @@ class ExportPDF extends EditorInjector {
34
37
  if (!this.apiUrl) {
35
38
  console.warn('[SUNEDITOR.plugins.exportPDF.error] Requires exportPDF."apiUrl" options.');
36
39
  } else {
37
- this.apiManager = new ApiManager(this, {
40
+ this.apiManager = new ApiManager(this, this.$, {
38
41
  method: 'POST',
39
42
  url: this.apiUrl,
40
43
  headers: {
41
- 'Content-Type': 'application/json'
44
+ 'Content-Type': 'application/json',
42
45
  },
43
- responseType: 'blob'
46
+ responseType: 'blob',
44
47
  });
45
48
  }
46
49
  }
47
50
 
48
51
  /**
49
- * @editorMethod Editor.core
50
- * @description Executes the main execution method of the plugin.
51
- * - It is executed by clicking a toolbar "command" button or calling an API.
52
- * @returns {Promise<void>}
52
+ * @override
53
+ * @type {PluginCommand['action']}
53
54
  */
54
55
  async action() {
55
56
  if (!this.apiUrl) {
@@ -57,16 +58,16 @@ class ExportPDF extends EditorInjector {
57
58
  return;
58
59
  }
59
60
 
60
- this.ui.showLoading();
61
+ this.$.ui.showLoading();
61
62
  let ww = null;
62
63
 
63
64
  try {
64
- const standardWW = this.editor.frameContext.get('documentTypePageMirror') || this.editor.frameContext.get('wysiwygFrame');
65
+ const standardWW = this.$.frameContext.get('documentTypePageMirror') || this.$.frameContext.get('wysiwygFrame');
65
66
  const editableDiv = dom.utils.createElement('div', { class: standardWW.className }, standardWW.innerHTML);
66
67
  ww = dom.utils.createElement('div', { style: `position: absolute; top: -10000px; left: -10000px; width: 21cm; columns: 21cm; height: auto;` }, editableDiv);
67
68
 
68
- const innerPadding = this._w.getComputedStyle(standardWW).padding;
69
- const inlineWW = dom.utils.applyInlineStylesAll(editableDiv, true, this.options.get('allUsedStyles'));
69
+ const innerPadding = _w.getComputedStyle(standardWW).padding;
70
+ const inlineWW = dom.utils.applyInlineStylesAll(editableDiv, true, this.$.options.get('allUsedStyles'));
70
71
  inlineWW.style.padding = inlineWW.style.paddingTop = inlineWW.style.paddingBottom = inlineWW.style.paddingLeft = inlineWW.style.paddingRight = '0';
71
72
  ww.innerHTML = `
72
73
  <style>
@@ -80,30 +81,29 @@ class ExportPDF extends EditorInjector {
80
81
  _d.body.appendChild(ww);
81
82
 
82
83
  // before event
83
- if ((await this.triggerEvent('onExportPDFBefore', { target: ww })) === false) return;
84
+ if ((await this.$.eventManager.triggerEvent('onExportPDFBefore', { target: ww })) === false) return;
84
85
 
85
86
  // at server
86
- await this._createByServer(ww);
87
+ await this.#createByServer(ww);
87
88
  return;
88
89
  } catch (error) {
89
90
  console.error('[SUNEDITOR.plugins.exportPDF.error]', error.message);
90
91
  } finally {
91
92
  dom.utils.removeItem(ww);
92
- this.ui.hideLoading();
93
+ this.$.ui.hideLoading();
93
94
  }
94
95
  }
95
96
 
96
97
  /**
97
- * @private
98
98
  * @description Sends the editor content to the server for PDF generation.
99
99
  * @param {HTMLElement} ww - A temporary container holding the formatted editor content.
100
100
  * @returns {Promise<void>} Resolves when the PDF file is successfully downloaded.
101
101
  * @throws {Error} Throws an error if the server response indicates a failure.
102
102
  */
103
- async _createByServer(ww) {
103
+ async #createByServer(ww) {
104
104
  const data = {
105
105
  fileName: this.fileName,
106
- htmlContent: ww.innerHTML
106
+ htmlContent: ww.innerHTML,
107
107
  };
108
108
 
109
109
  const xhr = await this.apiManager.asyncCall({ data: JSON.stringify(data) });