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.
- package/CONTRIBUTING.md +170 -22
- package/{LICENSE.txt → LICENSE} +9 -9
- package/README.md +168 -30
- package/dist/suneditor.min.css +1 -1
- package/dist/suneditor.min.js +1 -1
- package/package.json +47 -21
- package/src/assets/design/color.css +121 -0
- package/src/assets/design/index.css +3 -0
- package/src/assets/design/size.css +35 -0
- package/src/assets/design/typography.css +37 -0
- package/src/assets/icons/defaultIcons.js +232 -0
- package/src/assets/suneditor-contents.css +181 -46
- package/src/assets/suneditor.css +1403 -650
- package/src/core/base/eventHandlers/handler_toolbar.js +35 -14
- package/src/core/base/eventHandlers/handler_ww_clipboard.js +23 -4
- package/src/core/base/eventHandlers/handler_ww_dragDrop.js +49 -10
- package/src/core/base/eventHandlers/handler_ww_key_input.js +422 -224
- package/src/core/base/eventHandlers/handler_ww_mouse.js +83 -36
- package/src/core/base/eventManager.js +520 -179
- package/src/core/base/history.js +95 -41
- package/src/core/class/char.js +26 -11
- package/src/core/class/component.js +345 -137
- package/src/core/class/format.js +683 -519
- package/src/core/class/html.js +485 -305
- package/src/core/class/menu.js +133 -47
- package/src/core/class/nodeTransform.js +90 -71
- package/src/core/class/offset.js +408 -92
- package/src/core/class/selection.js +216 -106
- package/src/core/class/shortcuts.js +68 -8
- package/src/core/class/toolbar.js +106 -116
- package/src/core/class/ui.js +422 -0
- package/src/core/class/viewer.js +178 -74
- package/src/core/editor.js +496 -389
- package/src/core/section/actives.js +123 -27
- package/src/core/section/constructor.js +615 -206
- package/src/core/section/context.js +28 -23
- package/src/core/section/documentType.js +561 -0
- package/src/editorInjector/_classes.js +19 -5
- package/src/editorInjector/_core.js +71 -7
- package/src/editorInjector/index.js +63 -1
- package/src/events.js +622 -0
- package/src/helper/clipboard.js +59 -0
- package/src/helper/converter.js +202 -26
- package/src/helper/dom/domCheck.js +304 -0
- package/src/helper/dom/domQuery.js +669 -0
- package/src/helper/dom/domUtils.js +557 -0
- package/src/helper/dom/index.js +12 -0
- package/src/helper/env.js +46 -56
- package/src/helper/index.js +10 -4
- package/src/helper/keyCodeMap.js +183 -0
- package/src/helper/numbers.js +12 -8
- package/src/helper/unicode.js +9 -5
- package/src/langs/ckb.js +74 -4
- package/src/langs/cs.js +72 -2
- package/src/langs/da.js +73 -3
- package/src/langs/de.js +73 -4
- package/src/langs/en.js +23 -3
- package/src/langs/es.js +73 -4
- package/src/langs/fa.js +75 -3
- package/src/langs/fr.js +73 -3
- package/src/langs/he.js +73 -4
- package/src/langs/hu.js +230 -0
- package/src/langs/index.js +7 -3
- package/src/langs/it.js +70 -1
- package/src/langs/ja.js +72 -4
- package/src/langs/km.js +230 -0
- package/src/langs/ko.js +22 -2
- package/src/langs/lv.js +74 -5
- package/src/langs/nl.js +73 -4
- package/src/langs/pl.js +73 -4
- package/src/langs/pt_br.js +70 -1
- package/src/langs/ro.js +74 -5
- package/src/langs/ru.js +73 -4
- package/src/langs/se.js +73 -4
- package/src/langs/tr.js +73 -1
- package/src/langs/{ua.js → uk.js} +75 -6
- package/src/langs/ur.js +77 -8
- package/src/langs/zh_cn.js +74 -5
- package/src/modules/ApiManager.js +77 -54
- package/src/modules/Browser.js +667 -0
- package/src/modules/ColorPicker.js +162 -102
- package/src/modules/Controller.js +273 -142
- package/src/modules/Figure.js +925 -484
- package/src/modules/FileManager.js +121 -69
- package/src/modules/HueSlider.js +113 -61
- package/src/modules/Modal.js +291 -122
- package/src/modules/ModalAnchorEditor.js +383 -234
- package/src/modules/SelectMenu.js +270 -168
- package/src/modules/_DragHandle.js +2 -1
- package/src/modules/index.js +3 -3
- package/src/plugins/browser/audioGallery.js +83 -0
- package/src/plugins/browser/fileBrowser.js +103 -0
- package/src/plugins/browser/fileGallery.js +83 -0
- package/src/plugins/browser/imageGallery.js +81 -0
- package/src/plugins/browser/videoGallery.js +103 -0
- package/src/plugins/command/blockquote.js +40 -27
- package/src/plugins/command/exportPDF.js +134 -0
- package/src/plugins/command/fileUpload.js +229 -162
- package/src/plugins/command/list_bulleted.js +83 -47
- package/src/plugins/command/list_numbered.js +83 -47
- package/src/plugins/dropdown/align.js +66 -54
- package/src/plugins/dropdown/backgroundColor.js +63 -49
- package/src/plugins/dropdown/font.js +71 -47
- package/src/plugins/dropdown/fontColor.js +63 -48
- package/src/plugins/dropdown/formatBlock.js +70 -33
- package/src/plugins/dropdown/hr.js +92 -51
- package/src/plugins/dropdown/layout.js +37 -26
- package/src/plugins/dropdown/lineHeight.js +54 -38
- package/src/plugins/dropdown/list.js +60 -45
- package/src/plugins/dropdown/paragraphStyle.js +51 -30
- package/src/plugins/dropdown/table.js +2003 -813
- package/src/plugins/dropdown/template.js +38 -26
- package/src/plugins/dropdown/textStyle.js +43 -31
- package/src/plugins/field/mention.js +147 -86
- package/src/plugins/index.js +32 -6
- package/src/plugins/input/fontSize.js +161 -108
- package/src/plugins/input/pageNavigator.js +70 -0
- package/src/plugins/modal/audio.js +358 -173
- package/src/plugins/modal/drawing.js +531 -0
- package/src/plugins/modal/embed.js +886 -0
- package/src/plugins/modal/image.js +674 -362
- package/src/plugins/modal/link.js +100 -71
- package/src/plugins/modal/math.js +367 -167
- package/src/plugins/modal/video.js +691 -335
- package/src/plugins/popup/anchor.js +222 -0
- package/src/suneditor.js +50 -13
- package/src/themes/dark.css +122 -0
- package/src/typedef.js +130 -0
- package/types/assets/icons/defaultIcons.d.ts +153 -0
- package/types/core/base/eventHandlers/handler_toolbar.d.ts +41 -0
- package/types/core/base/eventHandlers/handler_ww_clipboard.d.ts +40 -0
- package/types/core/base/eventHandlers/handler_ww_dragDrop.d.ts +35 -0
- package/types/core/base/eventHandlers/handler_ww_key_input.d.ts +45 -0
- package/types/core/base/eventHandlers/handler_ww_mouse.d.ts +39 -0
- package/types/core/base/eventManager.d.ts +385 -0
- package/types/core/base/history.d.ts +81 -0
- package/types/core/class/char.d.ts +60 -0
- package/types/core/class/component.d.ts +212 -0
- package/types/core/class/format.d.ts +616 -0
- package/types/core/class/html.d.ts +422 -0
- package/types/core/class/menu.d.ts +126 -0
- package/types/core/class/nodeTransform.d.ts +93 -0
- package/types/core/class/offset.d.ts +522 -0
- package/types/core/class/selection.d.ts +188 -0
- package/types/core/class/shortcuts.d.ts +142 -0
- package/types/core/class/toolbar.d.ts +189 -0
- package/types/core/class/ui.d.ts +164 -0
- package/types/core/class/viewer.d.ts +140 -0
- package/types/core/editor.d.ts +610 -0
- package/types/core/section/actives.d.ts +46 -0
- package/types/core/section/constructor.d.ts +777 -0
- package/types/core/section/context.d.ts +45 -0
- package/types/core/section/documentType.d.ts +178 -0
- package/types/editorInjector/_classes.d.ts +41 -0
- package/types/editorInjector/_core.d.ts +92 -0
- package/types/editorInjector/index.d.ts +71 -0
- package/types/events.d.ts +273 -0
- package/types/helper/clipboard.d.ts +12 -0
- package/types/helper/converter.d.ts +197 -0
- package/types/helper/dom/domCheck.d.ts +189 -0
- package/types/helper/dom/domQuery.d.ts +223 -0
- package/types/helper/dom/domUtils.d.ts +226 -0
- package/types/helper/dom/index.d.ts +9 -0
- package/types/helper/env.d.ts +132 -0
- package/types/helper/index.d.ts +174 -0
- package/types/helper/keyCodeMap.d.ts +110 -0
- package/types/helper/numbers.d.ts +46 -0
- package/types/helper/unicode.d.ts +28 -0
- package/types/index.d.ts +120 -0
- package/{typings/Lang.d.ts → types/langs/_Lang.d.ts} +173 -103
- package/types/langs/ckb.d.ts +3 -0
- package/types/langs/cs.d.ts +3 -0
- package/types/langs/da.d.ts +3 -0
- package/types/langs/de.d.ts +3 -0
- package/types/langs/en.d.ts +3 -0
- package/types/langs/es.d.ts +3 -0
- package/types/langs/fa.d.ts +3 -0
- package/types/langs/fr.d.ts +3 -0
- package/types/langs/he.d.ts +3 -0
- package/types/langs/hu.d.ts +3 -0
- package/types/langs/index.d.ts +54 -0
- package/types/langs/it.d.ts +3 -0
- package/types/langs/ja.d.ts +3 -0
- package/types/langs/km.d.ts +3 -0
- package/types/langs/ko.d.ts +3 -0
- package/types/langs/lv.d.ts +3 -0
- package/types/langs/nl.d.ts +3 -0
- package/types/langs/pl.d.ts +3 -0
- package/types/langs/pt_br.d.ts +3 -0
- package/types/langs/ro.d.ts +3 -0
- package/types/langs/ru.d.ts +3 -0
- package/types/langs/se.d.ts +3 -0
- package/types/langs/tr.d.ts +3 -0
- package/types/langs/uk.d.ts +3 -0
- package/types/langs/ur.d.ts +3 -0
- package/types/langs/zh_cn.d.ts +3 -0
- package/types/modules/ApiManager.d.ts +125 -0
- package/types/modules/Browser.d.ts +326 -0
- package/types/modules/ColorPicker.d.ts +131 -0
- package/types/modules/Controller.d.ts +251 -0
- package/types/modules/Figure.d.ts +517 -0
- package/types/modules/FileManager.d.ts +202 -0
- package/types/modules/HueSlider.d.ts +136 -0
- package/types/modules/Modal.d.ts +111 -0
- package/types/modules/ModalAnchorEditor.d.ts +236 -0
- package/types/modules/SelectMenu.d.ts +194 -0
- package/types/modules/_DragHandle.d.ts +7 -0
- package/types/modules/index.d.ts +26 -0
- package/types/plugins/browser/audioGallery.d.ts +55 -0
- package/types/plugins/browser/fileBrowser.d.ts +64 -0
- package/types/plugins/browser/fileGallery.d.ts +55 -0
- package/types/plugins/browser/imageGallery.d.ts +51 -0
- package/types/plugins/browser/videoGallery.d.ts +57 -0
- package/types/plugins/command/blockquote.d.ts +28 -0
- package/types/plugins/command/exportPDF.d.ts +46 -0
- package/types/plugins/command/fileUpload.d.ts +156 -0
- package/types/plugins/command/list_bulleted.d.ts +46 -0
- package/types/plugins/command/list_numbered.d.ts +46 -0
- package/types/plugins/dropdown/align.d.ts +60 -0
- package/types/plugins/dropdown/backgroundColor.d.ts +63 -0
- package/types/plugins/dropdown/font.d.ts +54 -0
- package/types/plugins/dropdown/fontColor.d.ts +63 -0
- package/types/plugins/dropdown/formatBlock.d.ts +54 -0
- package/types/plugins/dropdown/hr.d.ts +71 -0
- package/types/plugins/dropdown/layout.d.ts +40 -0
- package/types/plugins/dropdown/lineHeight.d.ts +50 -0
- package/types/plugins/dropdown/list.d.ts +39 -0
- package/types/plugins/dropdown/paragraphStyle.d.ts +54 -0
- package/types/plugins/dropdown/table.d.ts +627 -0
- package/types/plugins/dropdown/template.d.ts +40 -0
- package/types/plugins/dropdown/textStyle.d.ts +41 -0
- package/types/plugins/field/mention.d.ts +102 -0
- package/types/plugins/index.d.ts +107 -0
- package/types/plugins/input/fontSize.d.ts +170 -0
- package/types/plugins/input/pageNavigator.d.ts +28 -0
- package/types/plugins/modal/audio.d.ts +269 -0
- package/types/plugins/modal/drawing.d.ts +246 -0
- package/types/plugins/modal/embed.d.ts +387 -0
- package/types/plugins/modal/image.d.ts +451 -0
- package/types/plugins/modal/link.d.ts +128 -0
- package/types/plugins/modal/math.d.ts +193 -0
- package/types/plugins/modal/video.d.ts +485 -0
- package/types/plugins/popup/anchor.d.ts +56 -0
- package/types/suneditor.d.ts +51 -0
- package/types/typedef.d.ts +233 -0
- package/.eslintignore +0 -7
- package/.eslintrc.json +0 -64
- package/src/assets/icons/_default.js +0 -194
- package/src/core/base/events.js +0 -320
- package/src/core/class/notice.js +0 -42
- package/src/helper/domUtils.js +0 -1177
- package/src/modules/FileBrowser.js +0 -271
- package/src/plugins/command/exportPdf.js +0 -168
- package/src/plugins/fileBrowser/imageGallery.js +0 -81
- package/src/themes/test.css +0 -61
- package/typings/CommandPlugin.d.ts +0 -8
- package/typings/DialogPlugin.d.ts +0 -20
- package/typings/FileBrowserPlugin.d.ts +0 -30
- package/typings/Module.d.ts +0 -15
- package/typings/Plugin.d.ts +0 -42
- package/typings/SubmenuPlugin.d.ts +0 -8
- package/typings/_classes.d.ts +0 -17
- package/typings/_colorPicker.d.ts +0 -60
- package/typings/_core.d.ts +0 -55
- package/typings/align.d.ts +0 -5
- package/typings/audio.d.ts +0 -5
- package/typings/backgroundColor.d.ts +0 -5
- package/typings/blockquote.d.ts +0 -5
- package/typings/char.d.ts +0 -39
- package/typings/component.d.ts +0 -38
- package/typings/context.d.ts +0 -39
- package/typings/converter.d.ts +0 -33
- package/typings/dialog.d.ts +0 -28
- package/typings/domUtils.d.ts +0 -361
- package/typings/editor.d.ts +0 -7
- package/typings/editor.ts +0 -542
- package/typings/env.d.ts +0 -70
- package/typings/eventManager.d.ts +0 -37
- package/typings/events.d.ts +0 -262
- package/typings/fileBrowser.d.ts +0 -42
- package/typings/fileManager.d.ts +0 -67
- package/typings/font.d.ts +0 -5
- package/typings/fontColor.d.ts +0 -5
- package/typings/fontSize.d.ts +0 -5
- package/typings/format.d.ts +0 -191
- package/typings/formatBlock.d.ts +0 -5
- package/typings/history.d.ts +0 -48
- package/typings/horizontalRule.d.ts +0 -5
- package/typings/image.d.ts +0 -5
- package/typings/imageGallery.d.ts +0 -5
- package/typings/index.d.ts +0 -21
- package/typings/index.modules.d.ts +0 -11
- package/typings/index.plugins.d.ts +0 -58
- package/typings/lineHeight.d.ts +0 -5
- package/typings/link.d.ts +0 -5
- package/typings/list.d.ts +0 -5
- package/typings/math.d.ts +0 -5
- package/typings/mediaContainer.d.ts +0 -25
- package/typings/mention.d.ts +0 -5
- package/typings/node.d.ts +0 -57
- package/typings/notice.d.ts +0 -16
- package/typings/numbers.d.ts +0 -29
- package/typings/offset.d.ts +0 -24
- package/typings/options.d.ts +0 -589
- package/typings/paragraphStyle.d.ts +0 -5
- package/typings/resizing.d.ts +0 -141
- package/typings/selection.d.ts +0 -94
- package/typings/shortcuts.d.ts +0 -13
- package/typings/suneditor.d.ts +0 -9
- package/typings/table.d.ts +0 -5
- package/typings/template.d.ts +0 -5
- package/typings/textStyle.d.ts +0 -5
- package/typings/toolbar.d.ts +0 -32
- package/typings/unicode.d.ts +0 -25
- 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
|
-
|
|
4
|
-
Nodejs version14 or higher is required to build or test this project.
|
|
3
|
+
---
|
|
5
4
|
|
|
6
|
-
##
|
|
5
|
+
## 📘 Introduction
|
|
7
6
|
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
|
|
10
|
+
### 📝 Notes
|
|
13
11
|
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
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
|
-
|
|
18
|
+
---
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
## 🐛 Before Submitting an Issue
|
|
21
21
|
|
|
22
|
-
|
|
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
|
-
|
|
26
|
+
---
|
|
25
27
|
|
|
26
|
-
|
|
28
|
+
## ✅ Before Submitting a PR
|
|
27
29
|
|
|
28
|
-
|
|
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
|
-
|
|
31
|
-
- React: https://suneditor.com/framework-guide/react
|
|
32
|
-
- Angular: https://suneditor.com/framework-guide/angular
|
|
35
|
+
---
|
|
33
36
|
|
|
34
|
-
|
|
37
|
+
## 🤝 How to Contribute
|
|
35
38
|
|
|
36
|
-
|
|
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
|
+
```
|
package/{LICENSE.txt → LICENSE}
RENAMED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) 2017
|
|
3
|
+
Copyright (c) 2017-2025 Yi JiHong
|
|
4
4
|
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
the Software without restriction, including without limitation the rights
|
|
8
|
-
use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
of the Software, and to permit persons to whom the Software is
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
7
|
+
<p align="center"><em>A lightweight and powerful WYSIWYG editor built with vanilla JavaScript</em></p>
|
|
6
8
|
|
|
7
|
-
|
|
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
|
-
|
|
10
|
-
[](https://github.com/JiHong88/SunEditor/releases)
|
|
11
|
-
[](https://www.npmjs.com/package/suneditor)
|
|
12
|
-
[](https://www.jsdelivr.com/package/npm/suneditor)
|
|
13
|
-
[](https://www.npmjs.com/package/suneditor)
|
|
14
|
-

|
|
16
|
+
#
|
|
15
17
|
|
|
16
|
-
|
|
18
|
+
SunEditor supports all modern browsers without dependencies or polyfills.
|
|
17
19
|
|
|
18
|
-
|
|
20
|
+
## 🌟 Why SunEditor?
|
|
19
21
|
|
|
20
|
-
|
|
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
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
+
|  | Feb 2020 | 80 |
|
|
49
|
+
|  | Mar 2020 | 74 |
|
|
50
|
+
|  | Mar 2020 | 13.1 |
|
|
51
|
+
|  | Jan 2020 | 80 |
|
|
52
|
+
|  | Feb 2020 | 67 |
|
|
53
|
+
|  | Mar 2020 | 13.4 |
|
|
54
|
+
|  | Feb 2020 | 80 |
|
|
55
|
+
|  | 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
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
36
|
-
|
|
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
|
-
|
|
42
|
-
Suneditor may be freely distributed under the MIT license.
|
|
180
|
+
SunEditor is an open-source project available under the [MIT License](./LICENSE).
|