suneditor 3.0.0-alpha.9 → 3.0.0-beta.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 (315) hide show
  1. package/CONTRIBUTING.md +170 -22
  2. package/{LICENSE.txt → LICENSE} +9 -9
  3. package/README.md +168 -30
  4. package/dist/suneditor.min.css +1 -1
  5. package/dist/suneditor.min.js +1 -1
  6. package/package.json +47 -21
  7. package/src/assets/design/color.css +121 -0
  8. package/src/assets/design/index.css +3 -0
  9. package/src/assets/design/size.css +35 -0
  10. package/src/assets/design/typography.css +37 -0
  11. package/src/assets/icons/defaultIcons.js +232 -0
  12. package/src/assets/suneditor-contents.css +181 -46
  13. package/src/assets/suneditor.css +1403 -650
  14. package/src/core/base/eventHandlers/handler_toolbar.js +35 -14
  15. package/src/core/base/eventHandlers/handler_ww_clipboard.js +23 -4
  16. package/src/core/base/eventHandlers/handler_ww_dragDrop.js +49 -10
  17. package/src/core/base/eventHandlers/handler_ww_key_input.js +422 -224
  18. package/src/core/base/eventHandlers/handler_ww_mouse.js +83 -36
  19. package/src/core/base/eventManager.js +520 -179
  20. package/src/core/base/history.js +95 -41
  21. package/src/core/class/char.js +26 -11
  22. package/src/core/class/component.js +345 -137
  23. package/src/core/class/format.js +683 -519
  24. package/src/core/class/html.js +485 -305
  25. package/src/core/class/menu.js +133 -47
  26. package/src/core/class/nodeTransform.js +90 -71
  27. package/src/core/class/offset.js +408 -92
  28. package/src/core/class/selection.js +216 -106
  29. package/src/core/class/shortcuts.js +68 -8
  30. package/src/core/class/toolbar.js +106 -116
  31. package/src/core/class/ui.js +422 -0
  32. package/src/core/class/viewer.js +178 -74
  33. package/src/core/editor.js +496 -389
  34. package/src/core/section/actives.js +123 -27
  35. package/src/core/section/constructor.js +615 -206
  36. package/src/core/section/context.js +28 -23
  37. package/src/core/section/documentType.js +561 -0
  38. package/src/editorInjector/_classes.js +19 -5
  39. package/src/editorInjector/_core.js +71 -7
  40. package/src/editorInjector/index.js +63 -1
  41. package/src/events.js +622 -0
  42. package/src/helper/clipboard.js +59 -0
  43. package/src/helper/converter.js +202 -26
  44. package/src/helper/dom/domCheck.js +304 -0
  45. package/src/helper/dom/domQuery.js +669 -0
  46. package/src/helper/dom/domUtils.js +557 -0
  47. package/src/helper/dom/index.js +12 -0
  48. package/src/helper/env.js +46 -56
  49. package/src/helper/index.js +10 -4
  50. package/src/helper/keyCodeMap.js +183 -0
  51. package/src/helper/numbers.js +12 -8
  52. package/src/helper/unicode.js +9 -5
  53. package/src/langs/ckb.js +74 -4
  54. package/src/langs/cs.js +72 -2
  55. package/src/langs/da.js +73 -3
  56. package/src/langs/de.js +73 -4
  57. package/src/langs/en.js +23 -3
  58. package/src/langs/es.js +73 -4
  59. package/src/langs/fa.js +75 -3
  60. package/src/langs/fr.js +73 -3
  61. package/src/langs/he.js +73 -4
  62. package/src/langs/hu.js +230 -0
  63. package/src/langs/index.js +7 -3
  64. package/src/langs/it.js +70 -1
  65. package/src/langs/ja.js +72 -4
  66. package/src/langs/km.js +230 -0
  67. package/src/langs/ko.js +22 -2
  68. package/src/langs/lv.js +74 -5
  69. package/src/langs/nl.js +73 -4
  70. package/src/langs/pl.js +73 -4
  71. package/src/langs/pt_br.js +70 -1
  72. package/src/langs/ro.js +74 -5
  73. package/src/langs/ru.js +73 -4
  74. package/src/langs/se.js +73 -4
  75. package/src/langs/tr.js +73 -1
  76. package/src/langs/{ua.js → uk.js} +75 -6
  77. package/src/langs/ur.js +77 -8
  78. package/src/langs/zh_cn.js +74 -5
  79. package/src/modules/ApiManager.js +77 -54
  80. package/src/modules/Browser.js +667 -0
  81. package/src/modules/ColorPicker.js +162 -102
  82. package/src/modules/Controller.js +273 -142
  83. package/src/modules/Figure.js +925 -484
  84. package/src/modules/FileManager.js +121 -69
  85. package/src/modules/HueSlider.js +113 -61
  86. package/src/modules/Modal.js +291 -122
  87. package/src/modules/ModalAnchorEditor.js +383 -234
  88. package/src/modules/SelectMenu.js +270 -168
  89. package/src/modules/_DragHandle.js +2 -1
  90. package/src/modules/index.js +3 -3
  91. package/src/plugins/browser/audioGallery.js +83 -0
  92. package/src/plugins/browser/fileBrowser.js +103 -0
  93. package/src/plugins/browser/fileGallery.js +83 -0
  94. package/src/plugins/browser/imageGallery.js +81 -0
  95. package/src/plugins/browser/videoGallery.js +103 -0
  96. package/src/plugins/command/blockquote.js +40 -27
  97. package/src/plugins/command/exportPDF.js +134 -0
  98. package/src/plugins/command/fileUpload.js +229 -162
  99. package/src/plugins/command/list_bulleted.js +83 -47
  100. package/src/plugins/command/list_numbered.js +83 -47
  101. package/src/plugins/dropdown/align.js +66 -54
  102. package/src/plugins/dropdown/backgroundColor.js +63 -49
  103. package/src/plugins/dropdown/font.js +71 -47
  104. package/src/plugins/dropdown/fontColor.js +63 -48
  105. package/src/plugins/dropdown/formatBlock.js +70 -33
  106. package/src/plugins/dropdown/hr.js +92 -51
  107. package/src/plugins/dropdown/layout.js +37 -26
  108. package/src/plugins/dropdown/lineHeight.js +54 -38
  109. package/src/plugins/dropdown/list.js +60 -45
  110. package/src/plugins/dropdown/paragraphStyle.js +51 -30
  111. package/src/plugins/dropdown/table.js +2003 -813
  112. package/src/plugins/dropdown/template.js +38 -26
  113. package/src/plugins/dropdown/textStyle.js +43 -31
  114. package/src/plugins/field/mention.js +147 -86
  115. package/src/plugins/index.js +32 -6
  116. package/src/plugins/input/fontSize.js +161 -108
  117. package/src/plugins/input/pageNavigator.js +70 -0
  118. package/src/plugins/modal/audio.js +358 -173
  119. package/src/plugins/modal/drawing.js +531 -0
  120. package/src/plugins/modal/embed.js +886 -0
  121. package/src/plugins/modal/image.js +674 -362
  122. package/src/plugins/modal/link.js +100 -71
  123. package/src/plugins/modal/math.js +367 -167
  124. package/src/plugins/modal/video.js +691 -335
  125. package/src/plugins/popup/anchor.js +222 -0
  126. package/src/suneditor.js +50 -13
  127. package/src/themes/dark.css +122 -0
  128. package/src/typedef.js +130 -0
  129. package/types/assets/icons/defaultIcons.d.ts +153 -0
  130. package/types/core/base/eventHandlers/handler_toolbar.d.ts +41 -0
  131. package/types/core/base/eventHandlers/handler_ww_clipboard.d.ts +40 -0
  132. package/types/core/base/eventHandlers/handler_ww_dragDrop.d.ts +35 -0
  133. package/types/core/base/eventHandlers/handler_ww_key_input.d.ts +45 -0
  134. package/types/core/base/eventHandlers/handler_ww_mouse.d.ts +39 -0
  135. package/types/core/base/eventManager.d.ts +385 -0
  136. package/types/core/base/history.d.ts +81 -0
  137. package/types/core/class/char.d.ts +60 -0
  138. package/types/core/class/component.d.ts +212 -0
  139. package/types/core/class/format.d.ts +616 -0
  140. package/types/core/class/html.d.ts +422 -0
  141. package/types/core/class/menu.d.ts +126 -0
  142. package/types/core/class/nodeTransform.d.ts +93 -0
  143. package/types/core/class/offset.d.ts +522 -0
  144. package/types/core/class/selection.d.ts +188 -0
  145. package/types/core/class/shortcuts.d.ts +142 -0
  146. package/types/core/class/toolbar.d.ts +189 -0
  147. package/types/core/class/ui.d.ts +164 -0
  148. package/types/core/class/viewer.d.ts +140 -0
  149. package/types/core/editor.d.ts +610 -0
  150. package/types/core/section/actives.d.ts +46 -0
  151. package/types/core/section/constructor.d.ts +777 -0
  152. package/types/core/section/context.d.ts +45 -0
  153. package/types/core/section/documentType.d.ts +178 -0
  154. package/types/editorInjector/_classes.d.ts +41 -0
  155. package/types/editorInjector/_core.d.ts +92 -0
  156. package/types/editorInjector/index.d.ts +71 -0
  157. package/types/events.d.ts +273 -0
  158. package/types/helper/clipboard.d.ts +12 -0
  159. package/types/helper/converter.d.ts +197 -0
  160. package/types/helper/dom/domCheck.d.ts +189 -0
  161. package/types/helper/dom/domQuery.d.ts +223 -0
  162. package/types/helper/dom/domUtils.d.ts +226 -0
  163. package/types/helper/dom/index.d.ts +9 -0
  164. package/types/helper/env.d.ts +132 -0
  165. package/types/helper/index.d.ts +174 -0
  166. package/types/helper/keyCodeMap.d.ts +110 -0
  167. package/types/helper/numbers.d.ts +46 -0
  168. package/types/helper/unicode.d.ts +28 -0
  169. package/types/index.d.ts +120 -0
  170. package/{typings/Lang.d.ts → types/langs/_Lang.d.ts} +173 -103
  171. package/types/langs/ckb.d.ts +3 -0
  172. package/types/langs/cs.d.ts +3 -0
  173. package/types/langs/da.d.ts +3 -0
  174. package/types/langs/de.d.ts +3 -0
  175. package/types/langs/en.d.ts +3 -0
  176. package/types/langs/es.d.ts +3 -0
  177. package/types/langs/fa.d.ts +3 -0
  178. package/types/langs/fr.d.ts +3 -0
  179. package/types/langs/he.d.ts +3 -0
  180. package/types/langs/hu.d.ts +3 -0
  181. package/types/langs/index.d.ts +54 -0
  182. package/types/langs/it.d.ts +3 -0
  183. package/types/langs/ja.d.ts +3 -0
  184. package/types/langs/km.d.ts +3 -0
  185. package/types/langs/ko.d.ts +3 -0
  186. package/types/langs/lv.d.ts +3 -0
  187. package/types/langs/nl.d.ts +3 -0
  188. package/types/langs/pl.d.ts +3 -0
  189. package/types/langs/pt_br.d.ts +3 -0
  190. package/types/langs/ro.d.ts +3 -0
  191. package/types/langs/ru.d.ts +3 -0
  192. package/types/langs/se.d.ts +3 -0
  193. package/types/langs/tr.d.ts +3 -0
  194. package/types/langs/uk.d.ts +3 -0
  195. package/types/langs/ur.d.ts +3 -0
  196. package/types/langs/zh_cn.d.ts +3 -0
  197. package/types/modules/ApiManager.d.ts +125 -0
  198. package/types/modules/Browser.d.ts +326 -0
  199. package/types/modules/ColorPicker.d.ts +131 -0
  200. package/types/modules/Controller.d.ts +251 -0
  201. package/types/modules/Figure.d.ts +517 -0
  202. package/types/modules/FileManager.d.ts +202 -0
  203. package/types/modules/HueSlider.d.ts +136 -0
  204. package/types/modules/Modal.d.ts +111 -0
  205. package/types/modules/ModalAnchorEditor.d.ts +236 -0
  206. package/types/modules/SelectMenu.d.ts +194 -0
  207. package/types/modules/_DragHandle.d.ts +7 -0
  208. package/types/modules/index.d.ts +26 -0
  209. package/types/plugins/browser/audioGallery.d.ts +55 -0
  210. package/types/plugins/browser/fileBrowser.d.ts +64 -0
  211. package/types/plugins/browser/fileGallery.d.ts +55 -0
  212. package/types/plugins/browser/imageGallery.d.ts +51 -0
  213. package/types/plugins/browser/videoGallery.d.ts +57 -0
  214. package/types/plugins/command/blockquote.d.ts +28 -0
  215. package/types/plugins/command/exportPDF.d.ts +46 -0
  216. package/types/plugins/command/fileUpload.d.ts +156 -0
  217. package/types/plugins/command/list_bulleted.d.ts +46 -0
  218. package/types/plugins/command/list_numbered.d.ts +46 -0
  219. package/types/plugins/dropdown/align.d.ts +60 -0
  220. package/types/plugins/dropdown/backgroundColor.d.ts +63 -0
  221. package/types/plugins/dropdown/font.d.ts +54 -0
  222. package/types/plugins/dropdown/fontColor.d.ts +63 -0
  223. package/types/plugins/dropdown/formatBlock.d.ts +54 -0
  224. package/types/plugins/dropdown/hr.d.ts +71 -0
  225. package/types/plugins/dropdown/layout.d.ts +40 -0
  226. package/types/plugins/dropdown/lineHeight.d.ts +50 -0
  227. package/types/plugins/dropdown/list.d.ts +39 -0
  228. package/types/plugins/dropdown/paragraphStyle.d.ts +54 -0
  229. package/types/plugins/dropdown/table.d.ts +627 -0
  230. package/types/plugins/dropdown/template.d.ts +40 -0
  231. package/types/plugins/dropdown/textStyle.d.ts +41 -0
  232. package/types/plugins/field/mention.d.ts +102 -0
  233. package/types/plugins/index.d.ts +107 -0
  234. package/types/plugins/input/fontSize.d.ts +170 -0
  235. package/types/plugins/input/pageNavigator.d.ts +28 -0
  236. package/types/plugins/modal/audio.d.ts +269 -0
  237. package/types/plugins/modal/drawing.d.ts +246 -0
  238. package/types/plugins/modal/embed.d.ts +387 -0
  239. package/types/plugins/modal/image.d.ts +451 -0
  240. package/types/plugins/modal/link.d.ts +128 -0
  241. package/types/plugins/modal/math.d.ts +193 -0
  242. package/types/plugins/modal/video.d.ts +485 -0
  243. package/types/plugins/popup/anchor.d.ts +56 -0
  244. package/types/suneditor.d.ts +51 -0
  245. package/types/typedef.d.ts +233 -0
  246. package/.eslintignore +0 -7
  247. package/.eslintrc.json +0 -64
  248. package/src/assets/icons/_default.js +0 -194
  249. package/src/core/base/events.js +0 -320
  250. package/src/core/class/notice.js +0 -42
  251. package/src/helper/domUtils.js +0 -1177
  252. package/src/modules/FileBrowser.js +0 -271
  253. package/src/plugins/command/exportPdf.js +0 -168
  254. package/src/plugins/fileBrowser/imageGallery.js +0 -81
  255. package/src/themes/test.css +0 -61
  256. package/typings/CommandPlugin.d.ts +0 -8
  257. package/typings/DialogPlugin.d.ts +0 -20
  258. package/typings/FileBrowserPlugin.d.ts +0 -30
  259. package/typings/Module.d.ts +0 -15
  260. package/typings/Plugin.d.ts +0 -42
  261. package/typings/SubmenuPlugin.d.ts +0 -8
  262. package/typings/_classes.d.ts +0 -17
  263. package/typings/_colorPicker.d.ts +0 -60
  264. package/typings/_core.d.ts +0 -55
  265. package/typings/align.d.ts +0 -5
  266. package/typings/audio.d.ts +0 -5
  267. package/typings/backgroundColor.d.ts +0 -5
  268. package/typings/blockquote.d.ts +0 -5
  269. package/typings/char.d.ts +0 -39
  270. package/typings/component.d.ts +0 -38
  271. package/typings/context.d.ts +0 -39
  272. package/typings/converter.d.ts +0 -33
  273. package/typings/dialog.d.ts +0 -28
  274. package/typings/domUtils.d.ts +0 -361
  275. package/typings/editor.d.ts +0 -7
  276. package/typings/editor.ts +0 -542
  277. package/typings/env.d.ts +0 -70
  278. package/typings/eventManager.d.ts +0 -37
  279. package/typings/events.d.ts +0 -262
  280. package/typings/fileBrowser.d.ts +0 -42
  281. package/typings/fileManager.d.ts +0 -67
  282. package/typings/font.d.ts +0 -5
  283. package/typings/fontColor.d.ts +0 -5
  284. package/typings/fontSize.d.ts +0 -5
  285. package/typings/format.d.ts +0 -191
  286. package/typings/formatBlock.d.ts +0 -5
  287. package/typings/history.d.ts +0 -48
  288. package/typings/horizontalRule.d.ts +0 -5
  289. package/typings/image.d.ts +0 -5
  290. package/typings/imageGallery.d.ts +0 -5
  291. package/typings/index.d.ts +0 -21
  292. package/typings/index.modules.d.ts +0 -11
  293. package/typings/index.plugins.d.ts +0 -58
  294. package/typings/lineHeight.d.ts +0 -5
  295. package/typings/link.d.ts +0 -5
  296. package/typings/list.d.ts +0 -5
  297. package/typings/math.d.ts +0 -5
  298. package/typings/mediaContainer.d.ts +0 -25
  299. package/typings/mention.d.ts +0 -5
  300. package/typings/node.d.ts +0 -57
  301. package/typings/notice.d.ts +0 -16
  302. package/typings/numbers.d.ts +0 -29
  303. package/typings/offset.d.ts +0 -24
  304. package/typings/options.d.ts +0 -589
  305. package/typings/paragraphStyle.d.ts +0 -5
  306. package/typings/resizing.d.ts +0 -141
  307. package/typings/selection.d.ts +0 -94
  308. package/typings/shortcuts.d.ts +0 -13
  309. package/typings/suneditor.d.ts +0 -9
  310. package/typings/table.d.ts +0 -5
  311. package/typings/template.d.ts +0 -5
  312. package/typings/textStyle.d.ts +0 -5
  313. package/typings/toolbar.d.ts +0 -32
  314. package/typings/unicode.d.ts +0 -25
  315. package/typings/video.d.ts +0 -5
package/CONTRIBUTING.md CHANGED
@@ -1,36 +1,184 @@
1
- # Guidelines For Contributing
1
+ # 🌞 Guidelines For Contributing
2
2
 
3
- Coded based on Nodejs@v20 and written in "prototype" syntax.
4
- Nodejs version14 or higher is required to build or test this project.
3
+ ---
5
4
 
6
- ## Before submitting an issue
5
+ ## 📘 Introduction
7
6
 
8
- - If you're not using the latest master to generate API clients or server stubs, please give it another try by pulling the latest master as the issue may have already been addressed. Ref: [Getting Started]()
9
- - Search the [open issue](https://github.com/jihong88/suneditor/issues) and [closed issue](https://github.com/jihong88/suneditor/issues?q=is%3Aissue+is%3Aclosed) to ensure no one else has reported something similar before.
10
- - File an [issue ticket](https://github.com/jihong88/suneditor/issues/new) by providing all the required information.
7
+ The codebase is written in **JavaScript (ES2020)**, using **JSDoc** for type definitions.
8
+ Node.js **v14 or higher** is required to build and test.
11
9
 
12
- ## Before submitting a PR
10
+ ### 📝 Notes
13
11
 
14
- - Search the [open issue](https://github.com/swagger-api/swagger-codegen/issues) to ensure no one else has reported something similar and no one is actively working on similar proposed change.
15
- - If no one has suggested something similar, open an ["issue"](https://github.com/swagger-api/swagger-codegen/issues) with your suggestion to gather feedback from the community.
16
- - It's recommended to **create a new git branch** for the change so that the merge commit message looks nicer in the commit history.
12
+ - Uses modern syntax including:
13
+ - Optional chaining (`?.`)
14
+ - Nullish coalescing (`??`)
15
+ - Private class fields (`#myField`)
16
+ - Polyfills are **not included** – make sure your target environment supports these features.
17
17
 
18
- ## How to contribute
18
+ ---
19
19
 
20
- ### code architecture
20
+ ## 🐛 Before Submitting an Issue
21
21
 
22
- ### source formatter
22
+ - Make sure you're using the latest `master` branch. Your issue may already be fixed.
23
+ - Search the [open issues](https://github.com/jihong88/suneditor/issues) and [closed issues](https://github.com/jihong88/suneditor/issues?q=is%3Aissue+is%3Aclosed) to avoid duplicates.
24
+ - If your issue is new, [file a ticket](https://github.com/jihong88/suneditor/issues/new) with detailed info, including reproduction steps if possible.
23
25
 
24
- ### about css
26
+ ---
25
27
 
26
- ### Framework guide
28
+ ## Before Submitting a PR
27
29
 
28
- Code change should conform to the programming style guide of the respective languages:
30
+ - Check that no one is working on the same thing in [open issues](https://github.com/jihong88/suneditor/issues).
31
+ - For new features or major changes, please open an issue first to gather feedback.
32
+ - Use a **feature branch** (not `master`) for your pull request.
33
+ - Make sure your code passes tests and doesn’t break existing functionality.
29
34
 
30
- - Vue: https://suneditor.com/framework-guide/vue
31
- - React: https://suneditor.com/framework-guide/react
32
- - Angular: https://suneditor.com/framework-guide/angular
35
+ ---
33
36
 
34
- For other languages, feel free to suggest.
37
+ ## 🤝 How to Contribute
35
38
 
36
- You may find the current code base not 100% conform to the coding style and we welcome contributions to fix those.
39
+ We welcome code contributions, bug reports, documentation improvements, or plugin ideas!
40
+
41
+ ### 🧹 Code Formatting
42
+
43
+ - Use the provided **ESLint** configuration.
44
+ - 4-space indentation
45
+ - Single quotes (`'`) for strings
46
+
47
+ ---
48
+
49
+ ## 🧩 Plugin Development
50
+
51
+ SunEditor allows custom plugins using a flexible API.
52
+
53
+ 📘 Start from the [Plugin API Reference](https://suneditor.com/api/plugins)
54
+ 🔍 Or explore the `src/plugins/` folder to see real examples.
55
+
56
+ ---
57
+
58
+ ## 🔁 CI/CD
59
+
60
+ 📦 The `dist/` folder is **not included** in the git repository.
61
+ ⚙️ It is automatically built and deployed via **GitHub Actions** after changes are pushed to the `release` branch.
62
+ 🛑 **Do not build or commit `dist/` files manually** – this may cause merge conflicts.
63
+ ✅ The CI/CD pipeline ensures clean and consistent builds for every release.
64
+
65
+ ---
66
+
67
+ ## ⚙️ Framework Guide
68
+
69
+ If you're contributing to framework integrations:
70
+
71
+ - React: [suneditor-react](https://github.com/JiHong88/suneditor-react)
72
+ - Vue: [suneditor-vue](https://github.com/JiHong88/suneditor-vue)
73
+
74
+ 💡 Feel free to propose wrappers for other frameworks too!
75
+
76
+ ---
77
+
78
+ ## 🤖 AI Plugin Helper
79
+
80
+ Need real-time help?
81
+
82
+ Check out **[SunEditor Devs AI](https://chatgpt.com/g/g-JViNPCrkD-suneditor-devs)** –
83
+
84
+ > 💡 Just paste your code or describe your plugin idea – and get instant support.
85
+
86
+ ---
87
+
88
+ ## 🗂️ Code Architecture
89
+
90
+ A quick overview of the `src/` directory:
91
+
92
+ ### `/core/` – 🧠 Editor Core Logic
93
+
94
+ - `editor.js`: Defines the main Editor class, managing lifecycle, commands, and overall orchestration
95
+ - `section/`: Context management and document setup
96
+ - `class/`: Core classes like toolbars, selections, HTML parsing, etc.
97
+ - `base/`: Undo/redo history, event manager, and shared core logic
98
+
99
+ ### `/helper/` – 🛠️ Utility Functions
100
+
101
+ - String converters, clipboard helpers, DOM queries
102
+ - `helper/dom/`: Low-level DOM operations
103
+
104
+ ### `/modules/` – 🧩 Reusable UI Modules
105
+
106
+ - Functional components like:
107
+ - `Modal`, `ColorPicker`, `SelectMenu`, `FileManager`, etc.
108
+ - Useful for building consistent plugin UIs
109
+
110
+ ### `/editorInjector/` – 🧬 Plugin Integration Point
111
+
112
+ - Wraps and initializes the core editor
113
+ - Plugins must inherit from this to register correctly
114
+
115
+ ### `/plugins/` – ✨ Feature Extensions
116
+
117
+ - Modular plugins organized by type:
118
+ - Examples: `image`, `video`, `link`, `blockquote`, etc.
119
+ - Each plugin is isolated and optional
120
+
121
+ ### `/langs/` – 🌍 i18n Support
122
+
123
+ - Language packs in separate JS files
124
+
125
+ ### `/assets/` – 🎨 Styles & Icons
126
+
127
+ - CSS for editor layout and themes
128
+ - SVG icon sets (`icons/defaultIcons.js`)
129
+
130
+ ### `/themes/` – 🧪 Theme Stylesheets
131
+
132
+ - Includes variants like `dark.css`
133
+
134
+ ### `suneditor.js` – 🚪 Main Entry Point
135
+
136
+ - Bootstraps and exports the editor instance
137
+
138
+ ---
139
+
140
+ ## 🚀 Useful Commands
141
+
142
+ ```bash
143
+ # Start local dev server
144
+ npm run dev
145
+
146
+ # Build for development
147
+ npm run build:dev
148
+
149
+ # Build for production
150
+ npm run build:prod
151
+
152
+ # lint
153
+ npm run lint
154
+
155
+ # Auto-fix JavaScript issues
156
+ npm run lint:fix-js
157
+
158
+ # Auto-fix TypeScript issues
159
+ npm run lint:fix-ts
160
+
161
+ # ✅ Run before committing!
162
+ # Fix all lint issues (JS + TS)
163
+ npm run lint:fix-all
164
+
165
+ # Build types and update barrels
166
+ npm run ts-build
167
+
168
+ # Sync language files (base: en.js)
169
+ npm run i18n-build
170
+
171
+ # test
172
+ npm run test
173
+ ```
174
+
175
+ > [scripts/README](https://github.com/JiHong88/suneditor/blob/develop/scripts/README.md)
176
+
177
+ ---
178
+
179
+ Thanks for contributing 💛
180
+ You're helping make SunEditor better for everyone!
181
+
182
+ ```
183
+
184
+ ```
@@ -1,13 +1,13 @@
1
- The MIT License (MIT)
1
+ MIT License
2
2
 
3
- Copyright (c) 2017 ~ Yi JiHong
3
+ Copyright (c) 2017-2025 Yi JiHong
4
4
 
5
- Permission is hereby granted, free of charge, to any person obtaining a copy of
6
- this software and associated documentation files (the "Software"), to deal in
7
- the Software without restriction, including without limitation the rights to
8
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
9
- of the Software, and to permit persons to whom the Software is furnished to do
10
- so, subject to the following conditions:
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
11
 
12
12
  The above copyright notice and this permission notice shall be included in all
13
13
  copies or substantial portions of the Software.
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,42 +1,180 @@
1
- # SunEditor
2
- Vanilla javscript based WYSIWYG web editor.
3
- SunEditor supports all modern browsers except IE without any dependencies and polyfills.
1
+ <p align="center">
2
+ <a href="https://suneditor.com" target="_blank">
3
+ <img src="https://suneditor-files.s3.ap-northeast-2.amazonaws.com/docs/se3_logo_title_flat.svg" alt="SunEditor" width="280" />
4
+ </a>
5
+ </p>
4
6
 
5
- #### 🌤 Demo : <a href="http://suneditor.com" target="_blank">suneditor.com</a> 🌤
7
+ <p align="center"><em>A lightweight and powerful WYSIWYG editor built with vanilla JavaScript</em></p>
6
8
 
7
- If you would like to contribute, please refer to [guidelines](/CONTRIBUTING.md) and a list of [open tasks](https://github.com/jihong88/suneditor/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22).⭐
9
+ <p align="center">
10
+ <a href="https://github.com/JiHong88/SunEditor/blob/master/LICENSE" title="MIT License"><img src="https://img.shields.io/github/license/jihong88/suneditor.svg?style=flat-square" alt="GitHub License"></a>
11
+ <a href="https://www.npmjs.com/package/suneditor" title="npm release"><img src="https://img.shields.io/npm/v/suneditor.svg?style=flat-square" alt="npm"></a>
12
+ <a href="https://www.npmjs.com/package/suneditor" title="npm month downloads"><img src="https://img.shields.io/npm/dm/suneditor.svg?logo=npm&style=flat-square" alt="npm weekly downloads"></a>
13
+ <a href="https://www.jsdelivr.com/package/npm/suneditor" title="jsDelivr CDN month downloads"><img src="https://img.shields.io/jsdelivr/npm/hm/suneditor?label=CDN&style=flat-square" alt="jsDelivr CDN" /></a>
14
+ </p>
8
15
 
9
- [![GitHub](https://img.shields.io/github/license/jihong88/suneditor.svg?style=flat-square)](https://github.com/JiHong88/SunEditor/blob/master/LICENSE.txt)
10
- [![GitHub release](https://img.shields.io/github/release/jihong88/suneditor.svg?style=flat-square)](https://github.com/JiHong88/SunEditor/releases)
11
- [![npm version](https://img.shields.io/npm/v/suneditor.svg?style=flat-square)](https://www.npmjs.com/package/suneditor)
12
- [![](https://data.jsdelivr.com/v1/package/npm/suneditor/badge)](https://www.jsdelivr.com/package/npm/suneditor)
13
- [![npm](https://img.shields.io/npm/dt/suneditor.svg?style=flat-square)](https://www.npmjs.com/package/suneditor)
14
- ![npm bundle size (minified + gzip)](https://img.shields.io/bundlephobia/minzip/suneditor.svg?style=flat-square)
16
+ #
15
17
 
16
- ![WYSIWYG HTML Editor](http://suneditor.com/docs/screen-main-w.png?v=2700)
18
+ SunEditor supports all modern browsers without dependencies or polyfills.
17
19
 
18
- #### Browser Support
20
+ ## 🌟 Why SunEditor?
19
21
 
20
- | <img src="http://suneditor.com/docs/chrome-64.png" alt="Chrome" width="16px" height="16px" /> Chrome | <img src="http://suneditor.com/docs/mozilla-64.png" alt="Firefox" width="16px" height="16px" /> Firefox | <img src="http://suneditor.com/docs/opera-64.png" alt="Opera" width="16px" height="16px" /> Opera | <img src="http://suneditor.com/docs/safari-64.png" alt="Safari" width="16px" height="16px" /> Safari | <img src="http://suneditor.com/docs/edge-64.png" alt="Edge" width="16px" height="16px" /> Edge |
21
- |:---:|:---:|:---:|:---:|:---:|
22
- | Yes | Yes | Yes | Yes | Yes |
22
+ SunEditor is a lightweight, fast, and extensible WYSIWYG editor written in pure JavaScript.
23
+ It's easy to integrate, highly customizable, and built for modern web applications.
23
24
 
24
- ## Install
25
- #### Npm
26
- ``` sh
27
- $ npm install suneditor --save
25
+ ### Key Features
26
+
27
+ - ⚡ **No dependencies** — Optimized for speed and simplicity
28
+ - 🧩 **Modular architecture** Enable only the plugins you need
29
+ - 📱 **Responsive UI** — Works smoothly on all modern devices
30
+ - 🔌 **Framework-friendly** — Easy to use with React, Vue, Svelte, etc.
31
+ - 💼 **Feature-rich plugin ecosystem**, including:
32
+ - 🏷 @Mentions with autocomplete
33
+ - 🎨 Advanced table editing & custom layouts
34
+ - 🧮 Math (LaTeX), drawing, and code block support
35
+ - 📂 Built-in media galleries (image, video, audio, file)
36
+ - 📄 PDF export, templates, and embedded content (audio/video/iframe)
37
+
38
+ 🌤 **[Explore all plugins](https://suneditor.com/plugins)**
39
+
40
+ ⭐ **Contributions welcome!** Please refer to [Contribution Guidelines](/CONTRIBUTING.md) and check out our [open tasks](https://github.com/jihong88/suneditor/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22). ⭐
41
+
42
+ ---
43
+
44
+ ## 🌍 Browser Support
45
+
46
+ | Browser | Since | Version ≥ |
47
+ | ----------------------------------------------------------------------------------------------------------------------------------- | -------- | --------- |
48
+ | ![Chrome](https://img.shields.io/badge/-Chrome-4285F4?logo=GoogleChrome&logoColor=white&style=flat-square) | Feb 2020 | 80 |
49
+ | ![Firefox](https://img.shields.io/badge/-Firefox-FF7139?logo=FirefoxBrowser&logoColor=white&style=flat-square) | Mar 2020 | 74 |
50
+ | ![Safari](https://img.shields.io/badge/-Safari-0D96F6?logo=Safari&logoColor=white&style=flat-square) | Mar 2020 | 13.1 |
51
+ | ![Edge](https://img.shields.io/badge/-Edge-0078D7?logo=MicrosoftEdge&logoColor=white&style=flat-square) | Jan 2020 | 80 |
52
+ | ![Opera](https://img.shields.io/badge/-Opera-FF1B2D?logo=Opera&logoColor=white&style=flat-square) | Feb 2020 | 67 |
53
+ | ![iOS Safari](https://img.shields.io/badge/-iOS%20Safari-000000?logo=apple&logoColor=white&style=flat-square) | Mar 2020 | 13.4 |
54
+ | ![Android WebView](https://img.shields.io/badge/-Android%20WebView-3DDC84?logo=android&logoColor=white&style=flat-square) | Feb 2020 | 80 |
55
+ | ![Samsung Internet](https://img.shields.io/badge/-Samsung%20Internet-1428A0?logo=samsunginternet&logoColor=white&style=flat-square) | Apr 2020 | 11.1 |
56
+
57
+ ❌ Not Supported : IE, Legacy Edge
58
+
59
+ ---
60
+
61
+ ## 📦 Legacy Version (v2-legacy)
62
+
63
+ > **SunEditor v3 is the latest version.**
64
+ > This section refers to the **previous stable version, SunEditor v2**.
65
+
66
+ The `v2-legacy` branch is no longer actively maintained,
67
+ but still available for compatibility with older projects.
68
+
69
+ 👉 [`v2-legacy` branch](https://github.com/JiHong88/SunEditor/tree/v2-legacy)
70
+
71
+ ---
72
+
73
+ ## 🚀 Install & Quick Start
74
+
75
+ > 💡 **Want to see it in action?**
76
+ > Check out the 🌤 [**Live Demo**](https://suneditor.com) 🌤 with full options and examples.
77
+
78
+ ### NPM
79
+
80
+ ```bash
81
+ npm install suneditor --save
82
+ ```
83
+
84
+ ```js
85
+ import 'suneditor/dist/suneditor.min.css';
86
+ import suneditor from 'suneditor';
87
+
88
+ // HTML: <div id="editor"></div> or <textarea id="editor"></textarea>
89
+ suneditor.create(document.querySelector('#editor'), {
90
+ buttonList: [
91
+ ['undo', 'redo'],
92
+ '|',
93
+ ['bold', 'underline', 'italic', 'strike', '|', 'subscript', 'superscript'],
94
+ '|',
95
+ ['removeFormat'],
96
+ '|',
97
+ ['outdent', 'indent'],
98
+ '|',
99
+ ['fullScreen', 'showBlocks', 'codeView'],
100
+ '|',
101
+ ['preview', 'print', 'copy']
102
+ ],
103
+ height: 'auto'
104
+ });
28
105
  ```
29
- #### CDN
30
- ``` html
31
- <link href="https://cdn.jsdelivr.net/npm/suneditor@latest/dist/css/suneditor.min.css" rel="stylesheet">
32
- <!-- <link href="https://cdn.jsdelivr.net/npm/suneditor@latest/assets/suneditor.css" rel="stylesheet"> -->
33
- <!-- <link href="https://cdn.jsdelivr.net/npm/suneditor@latest/assets/suneditor-contents.css" rel="stylesheet"> -->
106
+
107
+ ### CDN ([jsDelivr](https://www.jsdelivr.com/package/npm/suneditor))
108
+
109
+ ```html
34
110
  <script src="https://cdn.jsdelivr.net/npm/suneditor@latest/dist/suneditor.min.js"></script>
35
- <!-- languages (Basic Language: English/en) -->
36
- <script src="https://cdn.jsdelivr.net/npm/suneditor@latest/src/langs/ko.js"></script>
111
+ <link href="https://cdn.jsdelivr.net/npm/suneditor@latest/dist/suneditor.min.css" rel="stylesheet" />
112
+ <!-- Optional language (default is English): e.g., Korean (ko) -->
113
+ <!-- <script src="https://cdn.jsdelivr.net/npm/suneditor@latest/src/langs/ko.js"></script> -->
114
+
115
+ <div id="editor"></div>
116
+ <!-- or <textarea id="editor"></textarea> -->
117
+
118
+ <script>
119
+ SUNEDITOR.create(document.querySelector('#editor'), {
120
+ buttonList: [
121
+ ['undo', 'redo'],
122
+ '|',
123
+ ['bold', 'underline', 'italic', 'strike', '|', 'subscript', 'superscript'],
124
+ '|',
125
+ ['removeFormat'],
126
+ '|',
127
+ ['outdent', 'indent'],
128
+ '|',
129
+ ['fullScreen', 'showBlocks', 'codeView'],
130
+ '|',
131
+ ['preview', 'print', 'copy']
132
+ ],
133
+ height: 'auto'
134
+ });
135
+ </script>
37
136
  ```
38
- [jsdelivr/suneditor](https://www.jsdelivr.com/package/npm/suneditor)
39
137
 
138
+ ---
139
+
140
+ ## 🔧 Framework Integration
141
+
142
+ You can use the official wrappers for easier integration:
143
+
144
+ React – [suneditor-react](https://github.com/JiHong88/suneditor-react)\
145
+ Vue – [suneditor-vue](https://github.com/JiHong88/suneditor-vue)
146
+
147
+ ---
148
+
149
+ ## 📦 Plugins
150
+
151
+ SunEditor supports a plugin-based architecture.\
152
+ You can enable only the plugins you need or even create your own custom ones.
153
+
154
+ ```js
155
+ suneditor.create('#editor', {
156
+ plugins: ['font', 'image', 'video'],
157
+ image: {
158
+ uploadUrl: 'https://upload.image'
159
+ }
160
+ });
161
+ ```
162
+
163
+ 📘 [Learn how to build your own plugin →](https://suneditor.com/plugins)
164
+
165
+ 🤖 Want to build plugins? Get real-time help from [SunEditor Devs AI](https://chatgpt.com/g/g-JViNPCrkD-suneditor-devs).\
166
+ See [Contribution Guide](./CONTRIBUTING.md#ai-plugin-helper) for tips and examples.
167
+
168
+ ---
169
+
170
+ ## ✨ Contributors
171
+
172
+ <a href="https://github.com/jihong88/suneditor/graphs/contributors">
173
+ <img src="https://contrib.rocks/image?repo=jihong88/suneditor" alt="contributors"/>
174
+ </a>
175
+
176
+ ---
177
+
178
+ ## 📄 License
40
179
 
41
- ## License
42
- Suneditor may be freely distributed under the MIT license.
180
+ SunEditor is an open-source project available under the [MIT License](./LICENSE).