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
package/README.md CHANGED
@@ -1,16 +1,17 @@
1
1
  <p align="center">
2
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" />
3
+ <img src="https://suneditor-files.s3.ap-northeast-2.amazonaws.com/docs/se3_logo_title_flat.svg?v=1" alt="SunEditor" width="280" />
4
4
  </a>
5
5
  </p>
6
6
 
7
7
  <p align="center"><em>A lightweight and powerful WYSIWYG editor built with vanilla JavaScript</em></p>
8
8
 
9
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>
10
+ <a href="https://github.com/JiHong88/SunEditor/blob/master/LICENSE.txt" title="MIT License"><img src="https://img.shields.io/github/license/jihong88/suneditor.svg?style=flat-square" alt="GitHub License"></a>
11
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
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
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
+ <a href="https://codecov.io/gh/jihong88/suneditor" title="Test coverage"><img src="https://codecov.io/gh/jihong88/suneditor/branch/develop/graph/badge.svg" alt="Test coverage" /></a>
14
15
  </p>
15
16
 
16
17
  #
@@ -24,18 +25,24 @@ It's easy to integrate, highly customizable, and built for modern web applicatio
24
25
 
25
26
  ### Key Features
26
27
 
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)
28
+ - ⚡ **No dependencies** — Optimized for speed and simplicity
29
+ - 🧩 **Modular architecture** — Enable only the plugins you need
30
+ - 📱 **Responsive UI** — Works smoothly on all modern devices
31
+ - 🔌 **Framework-friendly** — Easy to use with React, Vue, Svelte, etc.
32
+ - 💼 **Feature-rich plugin ecosystem**, including:
33
+ - 🏷 @Mentions with autocomplete
34
+ - 🎨 Advanced table editing & custom layouts
35
+ - 🧮 Math (LaTeX), drawing, and code block support
36
+ - 📂 Built-in media galleries (image, video, audio, file)
37
+ - 📄 PDF export, templates, and embedded content (audio/video/iframe)
37
38
 
38
- 🌤 **[Explore all plugins](https://suneditor.com/plugins)**
39
+ ### 📝 Content Editing Approach
40
+
41
+ SunEditor is optimized for **structured content** (articles, documentation, emails) rather than arbitrary HTML editing. Content is validated and auto-corrected to maintain consistency.
42
+
43
+ > For raw HTML editing needs, see [`strictMode` configuration](./ARCHITECTURE.md#content-filtering-strictmode) in the Architecture Guide.
44
+
45
+ 🌤 **[Try all plugins in Playground](https://suneditor.com/playground)**
39
46
 
40
47
  ⭐ **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
48
 
@@ -43,23 +50,37 @@ It's easy to integrate, highly customizable, and built for modern web applicatio
43
50
 
44
51
  ## 🌍 Browser Support
45
52
 
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 |
53
+ SunEditor is built to take advantage of modern browser capabilities.
54
+ It does not ship with polyfills by default, but you can add them if your project requires broader compatibility.
55
+
56
+ > Works correctly on the following versions or newer.
57
+
58
+ | Browser | Version |
59
+ | ----------------------------------------------------------------------------------------------------------------------------------- | --------------- |
60
+ | ![Chrome](https://img.shields.io/badge/-Chrome-4285F4?logo=GoogleChrome&logoColor=white&style=flat-square) | 119 (Oct 2023) |
61
+ | ![Edge](https://img.shields.io/badge/-Edge-0078D7?logo=MicrosoftEdge&logoColor=white&style=flat-square) | 119 (Nov 2023) |
62
+ | ![Firefox](https://img.shields.io/badge/-Firefox-FF7139?logo=FirefoxBrowser&logoColor=white&style=flat-square) | 121 (Dec 2023) |
63
+ | ![Safari (macOS, iOS)](https://img.shields.io/badge/-Safari-0D96F6?logo=Safari&logoColor=white&style=flat-square) | 17.0 (Sep 2023) |
64
+ | ![Opera](https://img.shields.io/badge/-Opera-FF1B2D?logo=Opera&logoColor=white&style=flat-square) | 105 (Nov 2023) |
65
+ | ![Android WebView](https://img.shields.io/badge/-Android%20WebView-3DDC84?logo=android&logoColor=white&style=flat-square) | 119 (Oct 2023) |
66
+ | ![Samsung Internet](https://img.shields.io/badge/-Samsung%20Internet-1428A0?logo=samsunginternet&logoColor=white&style=flat-square) | 23.0 (Oct 2023) |
67
+ | ![Firefox ESR](https://img.shields.io/badge/-FirefoxESR-FF7139?logo=FirefoxBrowser&logoColor=white&style=flat-square) | 128 (Jul 2024) |
56
68
 
57
69
  ❌ Not Supported : IE, Legacy Edge
58
70
 
71
+ ### 📌 Why This Baseline? (Late 2023)
72
+
73
+ - This is based on features commonly supported by modern browsers.
74
+ - Most modern web APIs and CSS features are supported reliably in versions after this point.
75
+ - Unless specific compatibility issues arise, you can use it out of the box without additional polyfills.
76
+ - If you need support for older browsers, you can extend it by adding your own polyfills.
77
+
59
78
  ---
60
79
 
61
80
  ## 📦 Legacy Version (v2-legacy)
62
81
 
82
+ \* Supported IE11
83
+
63
84
  > **SunEditor v3 is the latest version.**
64
85
  > This section refers to the **previous stable version, SunEditor v2**.
65
86
 
@@ -82,25 +103,13 @@ npm install suneditor --save
82
103
  ```
83
104
 
84
105
  ```js
85
- import 'suneditor/dist/suneditor.min.css';
106
+ import 'suneditor/css'; // Editor UI
107
+ import 'suneditor/css/contents'; // For displaying HTML
86
108
  import suneditor from 'suneditor';
87
109
 
88
110
  // HTML: <div id="editor"></div> or <textarea id="editor"></textarea>
89
111
  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'
112
+ // options
104
113
  });
105
114
  ```
106
115
 
@@ -117,20 +126,7 @@ suneditor.create(document.querySelector('#editor'), {
117
126
 
118
127
  <script>
119
128
  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'
129
+ // options
134
130
  });
135
131
  </script>
136
132
  ```
@@ -155,15 +151,15 @@ You can enable only the plugins you need or even create your own custom ones.
155
151
  suneditor.create('#editor', {
156
152
  plugins: ['font', 'image', 'video'],
157
153
  image: {
158
- uploadUrl: 'https://upload.image'
159
- }
154
+ uploadUrl: 'https://upload.image',
155
+ },
160
156
  });
161
157
  ```
162
158
 
163
- 📘 [Learn how to build your own plugin →](https://suneditor.com/plugins)
159
+ 📘 [Learn how to build your own plugin →](https://suneditor.com/plugin-guide)
164
160
 
165
161
  🤖 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.
162
+ See [Contribution Guide](./CONTRIBUTING.md#-ai-plugin-helper) for tips and examples.
167
163
 
168
164
  ---
169
165
 
@@ -175,6 +171,18 @@ See [Contribution Guide](./CONTRIBUTING.md#ai-plugin-helper) for tips and exampl
175
171
 
176
172
  ---
177
173
 
174
+ ## 💎 Sponsors
175
+
176
+ ### Backers
177
+
178
+ [![Backers on Open Collective](https://opencollective.com/suneditor/backers.svg?width=890&avatarHeight=64&button=false)](https://opencollective.com/suneditor)
179
+
180
+ ### Sponsors
181
+
182
+ [![Sponsors on Open Collective](https://opencollective.com/suneditor/sponsors.svg?width=890&avatarHeight=64&button=false)](https://opencollective.com/suneditor)
183
+
184
+ ---
185
+
178
186
  ## 📄 License
179
187
 
180
- SunEditor is an open-source project available under the [MIT License](./LICENSE).
188
+ SunEditor is an open-source project available under the [MIT License](./LICENSE.txt).
@@ -0,0 +1 @@
1
+ .sun-editor,.sun-editor-editable{--se-caret-color:#333;--se-placeholder-color:#bbb;--se-edit-font-color:#333;--se-edit-font-pre:#666;--se-edit-font-quote:#999;--se-edit-background-color:#fff;--se-edit-background-pre:#f9f9f9;--se-edit-border-light:#e1e1e1;--se-edit-border-dark:#b1b1b1;--se-edit-border-dark-n1:#c1c1c1;--se-edit-border-dark-n2:#d1d1d1;--se-edit-border-table:#cecece;--se-edit-anchor:#0056b3;--se-edit-anchor-on-back:#e8f7ff;--se-edit-anchor-on-font:#0093ff;--se-edit-hr-color:#333;--se-edit-hr-on-back:#c7deff;--se-edit-active:#4592ff;--se-edit-hover:#e0f4ff;--se-edit-outline:#9e9e9e;--se-main-out-color:#dadada;--se-main-color:#000;--se-main-color-lighter:#4c4c4d;--se-main-background-color:#fff;--se-code-view-color:#f5f5f5;--se-main-font-color:#333;--se-code-view-background-color:#222;--se-main-divider-color:#e1e1e1;--se-main-border-color:#d1d1d1;--se-main-outline-color:#b1b1b1;--se-main-shadow-color:#ececec;--se-statusbar-font-color:#666;--se-overlay-background-color:#222;--se-hover-color:#000;--se-hover-dark-color:#ccc;--se-hover-dark2-color:#bfbfbf;--se-hover-dark3-color:#b0b0b0;--se-hover-light-color:#e1e1e1;--se-hover-light2-color:#e6e6e6;--se-hover-light3-color:#d9d9d9;--se-active-color:#5cd2e6;--se-active-hover-color:#2964b7;--se-active-dark-color:#80bdff;--se-active-dark2-color:#407dd1;--se-active-dark3-color:#4592ff;--se-active-dark4-color:#3f9dff;--se-active-dark5-color:#1275ff;--se-active-light-color:#e6f2ff;--se-active-light2-color:#eaf3ff;--se-active-light3-color:#d0e3ff;--se-active-light4-color:#dbeaff;--se-active-light5-color:#c4ddff;--se-active-light6-color:#b7ccf2;--se-shadow-layer-color:#00000040;--se-drag-over-color:#f0c20a;--se-modal-background-color:#fff;--se-modal-color:#333;--se-modal-border-color:#e5e5e5;--se-modal-anchor-color:#004cff;--se-modal-preview-color:#666;--se-modal-file-input-background-color:#f9f9f9;--se-modal-input-disabled-color:#999;--se-modal-input-disabled-background-color:#f3f3f3;--se-dropdown-font-color:#555;--se-controller-border-color:#999;--se-controller-background-color:#fff;--se-controller-color:#333;--se-shadow-controller-color:#0003;--se-input-btn-border-color:#ccc;--se-input-btn-disabled-color:#bdbdbd;--se-table-picker-color:#f5f5f5;--se-table-picker-border-color:#ddd;--se-table-picker-highlight-color:#cce0ff;--se-table-picker-highlight-border-color:#90b5e2;--se-success-color:green;--se-success-dark-color:#628562;--se-success-dark2-color:#419c41;--se-success-dark3-color:#006c00;--se-success-light-color:#dff4e6;--se-success-light2-color:#d5f3e0;--se-success-light3-color:#c1f4d3;--se-success-light4-color:#769c76;--se-success-light5-color:#89b589;--se-error-color:#b94a48;--se-error-dark-color:#e1a6a2;--se-error-dark2-color:#db8d8c;--se-error-dark3-color:#d17872;--se-error-light-color:#f5d0c8;--se-error-light2-color:#eed3d7;--se-error-light3-color:#f2dede;--se-error-light4-color:#f7deda;--se-error-light5-color:#f8e3e1;--se-doc-background:#f2f5fa;--se-doc-info-page-font-color:#f5f5f5;--se-doc-info-page-background-color:#b1b1b1;--se-doc-info-font-color:#4c4c4c;--se-doc-info-active-color:#4a32ff;--se-loading-color:#07d;--se-show-blocks-color:#3f9dff;--se-show-blocks-li-color:#d539ff;--se-show-blocks-pre-color:#34c38f;--se-show-blocks-component-color:#f4b124;--se-edit-inner-padding:1.5em 1.5em;--se-edit-inner-padding-doc-type:2.5rem 2.5rem;--se-edit-scroll-margin:3em;--se-border-radius:2px;--se-min-height:65px;--se-scroll-padding:2em;--se-modal-input-width:70px;--se-input-btn-size:32px;--se-doc-min-padding:1rem;--se-doc-max-padding:1.5rem;--se-doc-padding-factor:0.5;--se-doc-info-width:18%;--se-doc-info-min-width:16ch;--se-doc-info-inner-padding:2ch;--se-doc-info-inner-line-padding:0.5ch;--se-doc-info-page-width:16px;--se-doc-info-inner-line-indent-h1:0em;--se-doc-info-inner-line-indent-h2:0.4em;--se-doc-info-inner-line-indent-h3:0.8em;--se-doc-info-inner-line-indent-h4:1.2em;--se-doc-info-inner-line-indent-h5:1.6em;--se-doc-info-inner-line-indent-h6:2em;--se-edit-font-size:13px;--se-edit-line-height:1.5em;--se-main-font-family:Helvetica Neue;--se-main-font-size:13px;--se-btn-font-size:12px;--se-statusbar-font-size:10px;--se-modal-title-font-size:15px;--se-modal-input-font-size:14px;--se-browser-title-font-size:16px;--se-controller-font-size:14px;--se-doc-info-font-size:14px;--se-doc-info-inner-line-weight-h1:700;--se-doc-info-inner-line-weight-h2:500;--se-doc-info-inner-line-weight-h3:400;--se-doc-info-inner-line-weight-h4:300;--se-doc-info-inner-line-weight-h5:300;--se-doc-info-inner-line-weight-h6:300}.sun-editor-editable{background-color:var(--se-edit-background-color);box-sizing:border-box;color:var(--se-edit-font-color);font-family:Helvetica Neue;font-size:var(--se-edit-font-size);word-break:normal;word-wrap:break-word;margin:0;padding:var(--se-edit-inner-padding)}.sun-editor-editable *{box-sizing:border-box;color:inherit;font-family:inherit;font-size:inherit;line-height:var(--se-edit-line-height)}.sun-editor-editable.se-document-page-mirror-a4,.sun-editor-editable.se-type-document-editable-a4{padding:var(--se-edit-inner-padding-doc-type);width:21cm!important}.sun-editor-editable.se-rtl,.sun-editor-editable.se-rtl *{direction:rtl}.sun-editor-editable .se-component>figure{direction:ltr}.sun-editor-editable .se-component>figure>*{margin:0}.sun-editor-editable .se-component>figure>blockquote{margin:0;min-height:100px;position:relative}.sun-editor-editable .se-component>figure>blockquote:before{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite;border:3px solid #f3f3f3;border-radius:50%;border-top-color:#3498db;content:"";display:block;height:30px;left:50%;position:absolute;top:50%;width:30px}@-webkit-keyframes spin{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}@keyframes spin{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}.sun-editor-editable audio,.sun-editor-editable figcaption,.sun-editor-editable figure,.sun-editor-editable iframe,.sun-editor-editable img,.sun-editor-editable td,.sun-editor-editable th,.sun-editor-editable video{position:relative}.sun-editor-editable span{display:inline;margin:0;padding:0;vertical-align:initial}.sun-editor-editable span.se-math{display:inline-block}.sun-editor-editable span.se-math *{direction:ltr}.sun-editor-editable span>.MathJax{margin:.5em 0!important}.sun-editor-editable a{color:var(--se-edit-anchor);text-decoration:none;white-space:nowrap}.sun-editor-editable span[style~="color:"] a{color:inherit}.sun-editor-editable a:focus,.sun-editor-editable a:hover{color:var(--se-edit-anchor-on-font);cursor:pointer;text-decoration:underline}.sun-editor-editable a.on{background-color:var(--se-edit-anchor-on-back);color:var(--se-edit-anchor-on-font)}.sun-editor-editable a[data-se-anchor]{background:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgdmlld0JveD0iMCAwIDIwIDIwIj48cGF0aCBkPSJNMTQuMTY4IDE1IDEwIDEzLjE4NCA1LjgzMiAxNVY0LjE2OGg4LjMzNm0wLTEuNjY4SDUuODMyYy0uOTE4IDAtMS42NjQuNzQ2LTEuNjY0IDEuNjY4VjE3LjVMMTAgMTVsNS44MzIgMi41VjQuMTY4YzAtLjkyNi0uNzUtMS42NjgtMS42NjQtMS42NjhtMCAwIiBzdHlsZT0ic3Ryb2tlOm5vbmU7ZmlsbC1ydWxlOm5vbnplcm87ZmlsbDojMDAwO2ZpbGwtb3BhY2l0eToxIi8+PC9zdmc+) no-repeat;cursor:default;display:inline-block;height:20px;padding:0 10px;vertical-align:bottom;width:20px}.sun-editor-editable pre{background-color:var(--se-edit-background-pre);border:1px solid var(--se-edit-border-light);border-radius:2px;color:var(--se-edit-font-pre);display:block;font-family:monospace;line-height:1.45;margin:0 0 10px;padding:8px;white-space:pre-wrap!important;word-wrap:break-word;overflow:visible}.sun-editor-editable ol{list-style-type:decimal}.sun-editor-editable ol,.sun-editor-editable ul{display:block;list-style-position:outside;-webkit-margin-before:1em;margin-block-start:1em;-webkit-margin-after:1em;margin-block-end:1em;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0;margin-inline-end:0;-webkit-padding-start:40px;padding-inline-start:40px}.sun-editor-editable ul{list-style-type:disc}.sun-editor-editable li{display:list-item;margin-bottom:5px;text-align:-webkit-match-parent}.sun-editor-editable ol ol,.sun-editor-editable ol ul,.sun-editor-editable ul ol,.sun-editor-editable ul ul{margin:0}.sun-editor-editable ol ol,.sun-editor-editable ul ol{list-style-type:lower-alpha}.sun-editor-editable ol ol ol,.sun-editor-editable ul ol ol,.sun-editor-editable ul ul ol{list-style-type:upper-roman}.sun-editor-editable ol ul,.sun-editor-editable ul ul{list-style-type:circle}.sun-editor-editable ol ol ul,.sun-editor-editable ol ul ul,.sun-editor-editable ul ul ul{list-style-type:square}.sun-editor-editable sub,.sun-editor-editable sup{font-size:75%;line-height:0}.sun-editor-editable sub{vertical-align:sub}.sun-editor-editable sup{vertical-align:super}.sun-editor-editable p{display:block;margin:0 0 10px}.sun-editor-editable div{display:block;margin:0;padding:0}.sun-editor-editable blockquote{color:var(--se-edit-font-quote);display:block;font-family:inherit;font-size:inherit;-webkit-margin-before:1em;margin-block-start:1em;-webkit-margin-after:1em;margin-block-end:1em;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0;border-color:var(--se-edit-border-dark);border-style:solid;border-width:0 0 0 5px;margin-inline-end:0;padding:0 5px 0 20px}.sun-editor-editable blockquote blockquote{border-color:var(--se-edit-border-dark-n1)}.sun-editor-editable blockquote blockquote blockquote{border-color:var(--se-edit-border-dark-n2)}.sun-editor-editable blockquote blockquote blockquote blockquote{border-color:var(--se-edit-border-light)}.sun-editor-editable.se-rtl blockquote{border-left-width:0;border-right-width:5px;padding-left:5px;padding-right:20px}.sun-editor-editable h1{display:block;font-size:2em;-webkit-margin-before:.67em;margin-block-start:.67em;-webkit-margin-after:.67em;margin-block-end:.67em;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0;font-weight:700;margin-inline-end:0}.sun-editor-editable h2{display:block;font-size:1.5em;-webkit-margin-before:.83em;margin-block-start:.83em;-webkit-margin-after:.83em;margin-block-end:.83em;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0;font-weight:700;margin-inline-end:0}.sun-editor-editable h3{display:block;font-size:1.17em;-webkit-margin-before:1em;margin-block-start:1em;-webkit-margin-after:1em;margin-block-end:1em;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0;font-weight:700;margin-inline-end:0}.sun-editor-editable h4{display:block;font-size:1em;-webkit-margin-before:1.33em;margin-block-start:1.33em;-webkit-margin-after:1.33em;margin-block-end:1.33em;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0;font-weight:700;margin-inline-end:0}.sun-editor-editable h5{display:block;font-size:.83em;-webkit-margin-before:1.67em;margin-block-start:1.67em;-webkit-margin-after:1.67em;margin-block-end:1.67em;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0;font-weight:700;margin-inline-end:0}.sun-editor-editable h6{display:block;font-size:.67em;-webkit-margin-before:2.33em;margin-block-start:2.33em;-webkit-margin-after:2.33em;margin-block-end:2.33em;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:0;font-weight:700;margin-inline-end:0}.sun-editor-editable hr{border-color:var(--se-edit-hr-color);-o-border-image:initial;border-image:initial;border-width:1px 0 0;display:flex;height:20px;margin-bottom:0;margin-top:20px}.sun-editor-editable hr.__se__solid{border-style:solid none none}.sun-editor-editable hr.__se__dotted{border-style:dotted none none}.sun-editor-editable hr.__se__dashed{border-style:dashed none none}.sun-editor-editable hr.on{border-color:var(--se-edit-active);box-shadow:0 0 0 .1rem var(--se-edit-hr-on-back)}.sun-editor-editable table{background-color:var(--se-edit-background-color);border-collapse:collapse;border-color:var(--se-edit-border-table);border-spacing:0;border-style:solid;border-width:1px;display:table;margin:0;max-width:100%;table-layout:auto!important;width:100%}.sun-editor-editable.se-rtl table{background-color:var(--se-edit-background-color);margin:0 0 10px auto}.sun-editor-editable table caption{background-color:var(--se-edit-background-pre);border:1px solid var(--se-edit-border-table);caption-side:top;margin:0;outline:none;padding:.5em;text-align:unset}.sun-editor-editable table caption.se-table-caption-top{border-bottom:0;caption-side:top}.sun-editor-editable table caption.se-table-caption-bottom{border-top:0;caption-side:bottom}.sun-editor-editable table thead{border-bottom:2px solid var(--se-edit-font-color)}.sun-editor-editable table tr{box-sizing:border-box;position:relative}.sun-editor-editable table th{background-color:#f3f3f3}.sun-editor-editable table td,.sun-editor-editable table th{background-clip:padding-box;background-color:inherit;border-color:var(--se-edit-border-table);border-style:solid;border-width:1px;min-width:2em;padding:.4em;vertical-align:middle}.sun-editor-editable table.se-table-layout-fixed{table-layout:fixed!important}.sun-editor-editable.se-disabled *{user-select:none;-o-user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-ms-user-select:none}.sun-editor-editable .se-component:not(.se-input-component),.sun-editor-editable hr{-webkit-user-modify:read-only;-moz-user-modify:read-only;-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all}.sun-editor-editable figure figcaption{-webkit-user-modify:read-write;-moz-user-modify:read-write;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.sun-editor-editable .se-component{background-color:inherit;display:flex;margin:0 0 10px;padding:1px}.sun-editor-editable .se-component.se-file-figure>figure{outline:1px solid #bbb;padding:1em}.sun-editor-editable .se-component.se-file-figure>figure>a[data-se-file-download]{color:var(--se-edit-font-color);margin:0 4px}.sun-editor-editable .se-component.se-file-figure>figure>a:before{content:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTIwIDE4SDRWOGgxNm0wLTJoLThsLTItMkg0Yy0xLjExIDAtMiAuODktMiAydjEyYTIgMiAwIDAgMCAyIDJoMTZhMiAyIDAgMCAwIDItMlY4YTIgMiAwIDAgMC0yLTIiLz48L3N2Zz4=);display:inline-block;height:auto;vertical-align:middle;width:1.5em}.sun-editor-editable .__se__float-left{float:left;margin-right:4px}.sun-editor-editable .__se__float-right{float:right;margin-left:4px}.sun-editor-editable .__se__float-center{float:center}.sun-editor-editable .__se__float-none{float:none}.sun-editor-editable audio,.sun-editor-editable iframe,.sun-editor-editable img,.sun-editor-editable video{cursor:default;display:block;height:auto;margin:0;max-width:100%;padding:0;width:auto}.sun-editor-editable .se-image-container,.sun-editor-editable .se-video-container{height:auto;max-width:100%;width:auto}.sun-editor-editable figure{display:block;margin:0;min-width:20px;outline:none;padding:0}.sun-editor-editable .se-component figure{padding:0}.sun-editor-editable .se-flex-component{margin:0 0 10px;max-width:100%;min-width:auto;width:100%}.sun-editor-editable figure.se-flex-component{width:max-content}.sun-editor-editable .se-inline-component{display:inline-block;margin:0;max-width:100%;min-width:-webkit-min-content;min-width:-moz-min-content;min-width:min-content;padding:0;width:auto}.sun-editor-editable figure.se-scroll-figure-x{overflow-x:auto;padding:0 1px}.sun-editor-editable figure.se-scroll-figure-y{overflow-y:auto;padding:1px 0}.sun-editor-editable figure.se-scroll-figure-xy{overflow-x:auto;overflow-y:auto;padding:1px}.sun-editor-editable .__se__float-center figure,.sun-editor-editable .__se__float-left figure,.sun-editor-editable .__se__float-right figure{margin:auto!important}.sun-editor-editable figure figcaption{background-color:var(--se-edit-background-pre);margin:0;outline:none;padding:1em .5em}.sun-editor-editable figure figcaption p{line-height:2;margin:0}.sun-editor-editable .se-image-container a img{margin:1px;outline:1px solid var(--se-edit-active);padding:1px}.sun-editor-editable .se-video-container iframe,.sun-editor-editable .se-video-container video{border:0;height:100%;left:0;outline:1px solid var(--se-edit-outline);position:absolute;top:0;width:100%}.sun-editor-editable .se-video-container figure{left:0;max-width:100%;width:100%}.sun-editor-editable audio{height:54px;width:300px}.sun-editor-editable .se-page-break{visibility:hidden;page-break-before:always;margin:0;padding:0}.sun-editor .__se__p-bordered,.sun-editor-editable .__se__p-bordered{border-bottom:1px solid #b1b1b1;border-top:1px solid #b1b1b1;padding:4px 0}.sun-editor .__se__p-spaced,.sun-editor-editable .__se__p-spaced{letter-spacing:1px}.sun-editor .__se__p-neon,.sun-editor-editable .__se__p-neon{-webkit-animation:neonFlicker 1.5s infinite alternate;animation:neonFlicker 1.5s infinite alternate;background:#000;border:2px solid #fff;border-radius:6px;color:#fff;font-style:italic;font-weight:200;padding:6px 4px;text-transform:uppercase}@-webkit-keyframes neonFlicker{0%,19%,21%,23%,25%,54%,56%,to{box-shadow:0 0 .5px #fff,inset 0 0 .5px #fff,0 0 2px #08f,inset 0 0 2px #08f,0 0 4px #08f,inset 0 0 4px #08f;text-shadow:-.2rem -.2rem 1rem #fff,.2rem .2rem 1rem #fff,0 0 2px #f40,0 0 4px #f40,0 0 6px #f40,0 0 8px #f40,0 0 10px #f40}20%,24%,55%{box-shadow:none;text-shadow:none}}@keyframes neonFlicker{0%,19%,21%,23%,25%,54%,56%,to{box-shadow:0 0 .5px #fff,inset 0 0 .5px #fff,0 0 2px #08f,inset 0 0 2px #08f,0 0 4px #08f,inset 0 0 4px #08f;text-shadow:-.2rem -.2rem 1rem #fff,.2rem .2rem 1rem #fff,0 0 2px #f40,0 0 4px #f40,0 0 6px #f40,0 0 8px #f40,0 0 10px #f40}20%,24%,55%{box-shadow:none;text-shadow:none}}.sun-editor .__se__t-shadow,.sun-editor-editable .__se__t-shadow{text-shadow:-.2rem -.2rem 1rem #fff,.2rem .2rem 1rem #fff,0 0 .2rem #999,0 0 .4rem #888,0 0 .6rem #777,0 0 .8rem #666,0 0 1rem #555}.sun-editor .__se__t-code,.sun-editor-editable .__se__t-code{background-color:#1b1f230d;border-radius:6px;color:#666;font-family:monospace;padding:.2em .4em}