suneditor 3.0.0-alpha.2 → 3.0.0-alpha.20

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 (306) hide show
  1. package/.eslintrc.json +4 -3
  2. package/CONTRIBUTING.md +4 -2
  3. package/README.md +19 -11
  4. package/README_V3_TEMP.md +705 -0
  5. package/dist/suneditor.min.css +1 -0
  6. package/dist/suneditor.min.js +1 -0
  7. package/example.md +587 -0
  8. package/package.json +15 -9
  9. package/src/assets/icons/_default.js +166 -131
  10. package/src/assets/{suneditor-content.css → suneditor-contents.css} +182 -45
  11. package/src/assets/suneditor.css +1195 -556
  12. package/src/assets/variables.css +138 -0
  13. package/src/core/base/eventHandlers/handler_toolbar.js +35 -14
  14. package/src/core/base/eventHandlers/handler_ww_clipboard.js +29 -4
  15. package/src/core/base/eventHandlers/handler_ww_dragDrop.js +59 -15
  16. package/src/core/base/eventHandlers/handler_ww_key_input.js +426 -212
  17. package/src/core/base/eventHandlers/handler_ww_mouse.js +108 -32
  18. package/src/core/base/eventManager.js +540 -209
  19. package/src/core/base/events.js +616 -320
  20. package/src/core/base/history.js +93 -39
  21. package/src/core/class/char.js +29 -13
  22. package/src/core/class/component.js +332 -145
  23. package/src/core/class/format.js +671 -509
  24. package/src/core/class/html.js +504 -290
  25. package/src/core/class/menu.js +114 -47
  26. package/src/core/class/nodeTransform.js +111 -66
  27. package/src/core/class/offset.js +409 -105
  28. package/src/core/class/selection.js +220 -108
  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 +330 -0
  32. package/src/core/class/viewer.js +178 -74
  33. package/src/core/editor.js +489 -384
  34. package/src/core/section/actives.js +118 -22
  35. package/src/core/section/constructor.js +504 -170
  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/helper/converter.js +137 -19
  42. package/src/helper/dom/domCheck.js +294 -0
  43. package/src/helper/dom/domQuery.js +609 -0
  44. package/src/helper/dom/domUtils.js +533 -0
  45. package/src/helper/dom/index.js +12 -0
  46. package/src/helper/env.js +42 -19
  47. package/src/helper/index.js +7 -4
  48. package/src/helper/keyCodeMap.js +183 -0
  49. package/src/helper/numbers.js +8 -8
  50. package/src/helper/unicode.js +5 -5
  51. package/src/langs/ckb.js +69 -3
  52. package/src/langs/cs.js +67 -1
  53. package/src/langs/da.js +68 -2
  54. package/src/langs/de.js +68 -3
  55. package/src/langs/en.js +29 -1
  56. package/src/langs/es.js +68 -3
  57. package/src/langs/fa.js +70 -2
  58. package/src/langs/fr.js +68 -2
  59. package/src/langs/he.js +68 -3
  60. package/src/langs/hu.js +226 -0
  61. package/src/langs/index.js +3 -2
  62. package/src/langs/it.js +65 -0
  63. package/src/langs/ja.js +68 -3
  64. package/src/langs/ko.js +66 -1
  65. package/src/langs/lv.js +68 -3
  66. package/src/langs/nl.js +68 -3
  67. package/src/langs/pl.js +68 -3
  68. package/src/langs/pt_br.js +65 -0
  69. package/src/langs/ro.js +69 -4
  70. package/src/langs/ru.js +68 -3
  71. package/src/langs/se.js +68 -3
  72. package/src/langs/tr.js +68 -0
  73. package/src/langs/ua.js +68 -3
  74. package/src/langs/ur.js +71 -6
  75. package/src/langs/zh_cn.js +69 -4
  76. package/src/modules/ApiManager.js +77 -54
  77. package/src/modules/Browser.js +667 -0
  78. package/src/modules/ColorPicker.js +162 -102
  79. package/src/modules/Controller.js +233 -136
  80. package/src/modules/Figure.js +913 -489
  81. package/src/modules/FileManager.js +141 -72
  82. package/src/modules/HueSlider.js +113 -61
  83. package/src/modules/Modal.js +292 -113
  84. package/src/modules/ModalAnchorEditor.js +380 -230
  85. package/src/modules/SelectMenu.js +270 -168
  86. package/src/modules/_DragHandle.js +2 -1
  87. package/src/modules/index.js +3 -3
  88. package/src/plugins/browser/audioGallery.js +83 -0
  89. package/src/plugins/browser/fileBrowser.js +103 -0
  90. package/src/plugins/browser/fileGallery.js +83 -0
  91. package/src/plugins/browser/imageGallery.js +81 -0
  92. package/src/plugins/browser/videoGallery.js +103 -0
  93. package/src/plugins/command/blockquote.js +40 -27
  94. package/src/plugins/command/exportPDF.js +134 -0
  95. package/src/plugins/command/fileUpload.js +226 -158
  96. package/src/plugins/command/list_bulleted.js +93 -47
  97. package/src/plugins/command/list_numbered.js +93 -47
  98. package/src/plugins/dropdown/align.js +66 -54
  99. package/src/plugins/dropdown/backgroundColor.js +76 -45
  100. package/src/plugins/dropdown/font.js +71 -47
  101. package/src/plugins/dropdown/fontColor.js +78 -46
  102. package/src/plugins/dropdown/formatBlock.js +74 -33
  103. package/src/plugins/dropdown/hr.js +102 -51
  104. package/src/plugins/dropdown/layout.js +37 -26
  105. package/src/plugins/dropdown/lineHeight.js +54 -38
  106. package/src/plugins/dropdown/list.js +60 -45
  107. package/src/plugins/dropdown/paragraphStyle.js +51 -30
  108. package/src/plugins/dropdown/table.js +1269 -777
  109. package/src/plugins/dropdown/template.js +38 -26
  110. package/src/plugins/dropdown/textStyle.js +43 -31
  111. package/src/plugins/field/mention.js +144 -82
  112. package/src/plugins/index.js +32 -6
  113. package/src/plugins/input/fontSize.js +161 -108
  114. package/src/plugins/input/pageNavigator.js +70 -0
  115. package/src/plugins/modal/audio.js +341 -169
  116. package/src/plugins/modal/drawing.js +530 -0
  117. package/src/plugins/modal/embed.js +886 -0
  118. package/src/plugins/modal/image.js +673 -358
  119. package/src/plugins/modal/link.js +100 -71
  120. package/src/plugins/modal/math.js +384 -168
  121. package/src/plugins/modal/video.js +693 -336
  122. package/src/plugins/popup/anchor.js +222 -0
  123. package/src/suneditor.js +54 -12
  124. package/src/themes/dark.css +85 -0
  125. package/src/typedef.js +86 -0
  126. package/types/assets/icons/_default.d.ts +152 -0
  127. package/types/core/base/eventHandlers/handler_toolbar.d.ts +41 -0
  128. package/types/core/base/eventHandlers/handler_ww_clipboard.d.ts +40 -0
  129. package/types/core/base/eventHandlers/handler_ww_dragDrop.d.ts +35 -0
  130. package/types/core/base/eventHandlers/handler_ww_key_input.d.ts +45 -0
  131. package/types/core/base/eventHandlers/handler_ww_mouse.d.ts +39 -0
  132. package/types/core/base/eventManager.d.ts +377 -0
  133. package/types/core/base/events.d.ts +297 -0
  134. package/types/core/base/history.d.ts +81 -0
  135. package/types/core/class/char.d.ts +60 -0
  136. package/types/core/class/component.d.ts +259 -0
  137. package/types/core/class/format.d.ts +615 -0
  138. package/types/core/class/html.d.ts +377 -0
  139. package/types/core/class/menu.d.ts +118 -0
  140. package/types/core/class/nodeTransform.d.ts +93 -0
  141. package/types/core/class/offset.d.ts +512 -0
  142. package/types/core/class/selection.d.ts +188 -0
  143. package/types/core/class/shortcuts.d.ts +142 -0
  144. package/types/core/class/toolbar.d.ts +189 -0
  145. package/types/core/class/ui.d.ts +144 -0
  146. package/types/core/class/viewer.d.ts +140 -0
  147. package/types/core/editor.d.ts +606 -0
  148. package/types/core/section/actives.d.ts +46 -0
  149. package/types/core/section/constructor.d.ts +748 -0
  150. package/types/core/section/context.d.ts +45 -0
  151. package/types/core/section/documentType.d.ts +178 -0
  152. package/types/editorInjector/_classes.d.ts +41 -0
  153. package/types/editorInjector/_core.d.ts +92 -0
  154. package/types/editorInjector/index.d.ts +71 -0
  155. package/types/helper/converter.d.ts +150 -0
  156. package/types/helper/dom/domCheck.d.ts +182 -0
  157. package/types/helper/dom/domQuery.d.ts +214 -0
  158. package/types/helper/dom/domUtils.d.ts +211 -0
  159. package/types/helper/dom/index.d.ts +9 -0
  160. package/types/helper/env.d.ts +149 -0
  161. package/types/helper/index.d.ts +163 -0
  162. package/types/helper/keyCodeMap.d.ts +110 -0
  163. package/types/helper/numbers.d.ts +43 -0
  164. package/types/helper/unicode.d.ts +28 -0
  165. package/types/index.d.ts +0 -0
  166. package/{typings/Lang.d.ts → types/langs/_Lang.d.ts} +170 -103
  167. package/types/langs/ckb.d.ts +384 -0
  168. package/types/langs/cs.d.ts +384 -0
  169. package/types/langs/da.d.ts +384 -0
  170. package/types/langs/de.d.ts +384 -0
  171. package/types/langs/en.d.ts +384 -0
  172. package/types/langs/es.d.ts +384 -0
  173. package/types/langs/fa.d.ts +384 -0
  174. package/types/langs/fr.d.ts +384 -0
  175. package/types/langs/he.d.ts +384 -0
  176. package/types/langs/hu.d.ts +384 -0
  177. package/types/langs/index.d.ts +48 -0
  178. package/types/langs/it.d.ts +384 -0
  179. package/types/langs/ja.d.ts +384 -0
  180. package/types/langs/ko.d.ts +384 -0
  181. package/types/langs/lv.d.ts +384 -0
  182. package/types/langs/nl.d.ts +384 -0
  183. package/types/langs/pl.d.ts +384 -0
  184. package/types/langs/pt_br.d.ts +384 -0
  185. package/types/langs/ro.d.ts +384 -0
  186. package/types/langs/ru.d.ts +384 -0
  187. package/types/langs/se.d.ts +384 -0
  188. package/types/langs/tr.d.ts +384 -0
  189. package/types/langs/ua.d.ts +384 -0
  190. package/types/langs/ur.d.ts +384 -0
  191. package/types/langs/zh_cn.d.ts +384 -0
  192. package/types/modules/ApiManager.d.ts +125 -0
  193. package/types/modules/Browser.d.ts +326 -0
  194. package/types/modules/ColorPicker.d.ts +131 -0
  195. package/types/modules/Controller.d.ts +231 -0
  196. package/types/modules/Figure.d.ts +504 -0
  197. package/types/modules/FileManager.d.ts +202 -0
  198. package/types/modules/HueSlider.d.ts +136 -0
  199. package/types/modules/Modal.d.ts +117 -0
  200. package/types/modules/ModalAnchorEditor.d.ts +236 -0
  201. package/types/modules/SelectMenu.d.ts +194 -0
  202. package/types/modules/_DragHandle.d.ts +7 -0
  203. package/types/modules/index.d.ts +26 -0
  204. package/types/plugins/browser/audioGallery.d.ts +55 -0
  205. package/types/plugins/browser/fileBrowser.d.ts +64 -0
  206. package/types/plugins/browser/fileGallery.d.ts +55 -0
  207. package/types/plugins/browser/imageGallery.d.ts +51 -0
  208. package/types/plugins/browser/videoGallery.d.ts +57 -0
  209. package/types/plugins/command/blockquote.d.ts +28 -0
  210. package/types/plugins/command/exportPDF.d.ts +46 -0
  211. package/types/plugins/command/fileUpload.d.ts +156 -0
  212. package/types/plugins/command/list_bulleted.d.ts +56 -0
  213. package/types/plugins/command/list_numbered.d.ts +56 -0
  214. package/types/plugins/dropdown/align.d.ts +60 -0
  215. package/types/plugins/dropdown/backgroundColor.d.ts +63 -0
  216. package/types/plugins/dropdown/font.d.ts +54 -0
  217. package/types/plugins/dropdown/fontColor.d.ts +63 -0
  218. package/types/plugins/dropdown/formatBlock.d.ts +58 -0
  219. package/types/plugins/dropdown/hr.d.ts +81 -0
  220. package/types/plugins/dropdown/layout.d.ts +40 -0
  221. package/types/plugins/dropdown/lineHeight.d.ts +50 -0
  222. package/types/plugins/dropdown/list.d.ts +39 -0
  223. package/types/plugins/dropdown/paragraphStyle.d.ts +54 -0
  224. package/types/plugins/dropdown/table.d.ts +579 -0
  225. package/types/plugins/dropdown/template.d.ts +40 -0
  226. package/types/plugins/dropdown/textStyle.d.ts +41 -0
  227. package/types/plugins/field/mention.d.ts +102 -0
  228. package/types/plugins/index.d.ts +107 -0
  229. package/types/plugins/input/fontSize.d.ts +170 -0
  230. package/types/plugins/input/pageNavigator.d.ts +28 -0
  231. package/types/plugins/modal/audio.d.ts +269 -0
  232. package/types/plugins/modal/drawing.d.ts +246 -0
  233. package/types/plugins/modal/embed.d.ts +387 -0
  234. package/types/plugins/modal/image.d.ts +451 -0
  235. package/types/plugins/modal/link.d.ts +128 -0
  236. package/types/plugins/modal/math.d.ts +193 -0
  237. package/types/plugins/modal/video.d.ts +485 -0
  238. package/types/plugins/popup/anchor.d.ts +56 -0
  239. package/types/suneditor.d.ts +51 -0
  240. package/types/typedef-global.d.ts +144 -0
  241. package/src/core/class/notice.js +0 -42
  242. package/src/helper/domUtils.js +0 -1177
  243. package/src/modules/FileBrowser.js +0 -271
  244. package/src/plugins/command/exportPdf.js +0 -168
  245. package/src/plugins/fileBrowser/imageGallery.js +0 -81
  246. package/src/themes/test.css +0 -61
  247. package/typings/CommandPlugin.d.ts +0 -8
  248. package/typings/DialogPlugin.d.ts +0 -20
  249. package/typings/FileBrowserPlugin.d.ts +0 -30
  250. package/typings/Module.d.ts +0 -15
  251. package/typings/Plugin.d.ts +0 -42
  252. package/typings/SubmenuPlugin.d.ts +0 -8
  253. package/typings/_classes.d.ts +0 -17
  254. package/typings/_colorPicker.d.ts +0 -60
  255. package/typings/_core.d.ts +0 -55
  256. package/typings/align.d.ts +0 -5
  257. package/typings/audio.d.ts +0 -5
  258. package/typings/backgroundColor.d.ts +0 -5
  259. package/typings/blockquote.d.ts +0 -5
  260. package/typings/char.d.ts +0 -39
  261. package/typings/component.d.ts +0 -38
  262. package/typings/context.d.ts +0 -39
  263. package/typings/converter.d.ts +0 -33
  264. package/typings/dialog.d.ts +0 -28
  265. package/typings/domUtils.d.ts +0 -361
  266. package/typings/editor.d.ts +0 -7
  267. package/typings/editor.ts +0 -542
  268. package/typings/env.d.ts +0 -70
  269. package/typings/eventManager.d.ts +0 -37
  270. package/typings/events.d.ts +0 -262
  271. package/typings/fileBrowser.d.ts +0 -42
  272. package/typings/fileManager.d.ts +0 -67
  273. package/typings/font.d.ts +0 -5
  274. package/typings/fontColor.d.ts +0 -5
  275. package/typings/fontSize.d.ts +0 -5
  276. package/typings/format.d.ts +0 -191
  277. package/typings/formatBlock.d.ts +0 -5
  278. package/typings/history.d.ts +0 -48
  279. package/typings/horizontalRule.d.ts +0 -5
  280. package/typings/image.d.ts +0 -5
  281. package/typings/imageGallery.d.ts +0 -5
  282. package/typings/index.d.ts +0 -21
  283. package/typings/index.modules.d.ts +0 -11
  284. package/typings/index.plugins.d.ts +0 -58
  285. package/typings/lineHeight.d.ts +0 -5
  286. package/typings/link.d.ts +0 -5
  287. package/typings/list.d.ts +0 -5
  288. package/typings/math.d.ts +0 -5
  289. package/typings/mediaContainer.d.ts +0 -25
  290. package/typings/mention.d.ts +0 -5
  291. package/typings/node.d.ts +0 -57
  292. package/typings/notice.d.ts +0 -16
  293. package/typings/numbers.d.ts +0 -29
  294. package/typings/offset.d.ts +0 -24
  295. package/typings/options.d.ts +0 -589
  296. package/typings/paragraphStyle.d.ts +0 -5
  297. package/typings/resizing.d.ts +0 -141
  298. package/typings/selection.d.ts +0 -94
  299. package/typings/shortcuts.d.ts +0 -13
  300. package/typings/suneditor.d.ts +0 -9
  301. package/typings/table.d.ts +0 -5
  302. package/typings/template.d.ts +0 -5
  303. package/typings/textStyle.d.ts +0 -5
  304. package/typings/toolbar.d.ts +0 -32
  305. package/typings/unicode.d.ts +0 -25
  306. package/typings/video.d.ts +0 -5
@@ -0,0 +1,705 @@
1
+ SunEditor Version 3 - Temporary README
2
+
3
+ This is not a finished version and the option information below may be incorrect.
4
+
5
+ https://www.npmjs.com/package/suneditor?activeTab=versions
6
+
7
+ ### create
8
+ ```javascript
9
+ import suneditor from 'suneditor';
10
+ import langs, { ko } from 'suneditor/src/langs';
11
+ import plugins from 'suneditor/src/plugins';
12
+
13
+ // editor style
14
+ import 'suneditor/src/assets/suneditor.css';
15
+ // editable area style
16
+ import 'suneditor/src/assets/suneditor-contents.css';
17
+ // suneditor.css + suneditor-contents.css
18
+ import 'suneditor/dist/suneditor.min.css';
19
+
20
+ // single
21
+ suneditor.create(document.querySelector('#editor_1'), mainOptions)
22
+ // multi root
23
+ suneditor.create({
24
+ editor1: {
25
+ target: document.querySelector('#multi_editor_1'),
26
+ options: {} // Undefined options default to the "Min option".
27
+ },
28
+ editor2: {
29
+ target: document.querySelector('#multi_editor_2'),
30
+ options: {}
31
+ }
32
+ }, mainOptions)
33
+ ```
34
+ [Main options](#user-content-main-options)
35
+
36
+ [Multi Root frame apecific options](#user-content-multi-root-frame-apecific-options)
37
+
38
+ [Plugin options](#user-content-plugin-options)
39
+
40
+ #### Buttons
41
+ ```javascript
42
+ [
43
+ "bold",
44
+ "underline",
45
+ "italic",
46
+ "strike",
47
+ "subscript",
48
+ "superscript",
49
+ "removeFormat",
50
+ "copyFormat",
51
+ "indent",
52
+ "outdent",
53
+ "fullScreen",
54
+ "showBlocks",
55
+ "codeView",
56
+ "undo",
57
+ "redo",
58
+ "preview",
59
+ "print",
60
+ "dir",
61
+ "dir_ltr",
62
+ "dir_rtl",
63
+ "save",
64
+ "newDocument",
65
+ "selectAll",
66
+ "pageBreak",
67
+ "pageUp",
68
+ "pageDown",
69
+ "pageNavigator",
70
+ // [pluginName],
71
+ ]
72
+ ```
73
+
74
+ #### Main options
75
+ ```javascript
76
+ const DEFAULT_BUTTON_LIST = [
77
+ ['undo', 'redo'],
78
+ '|',
79
+ ['bold', 'underline', 'italic', 'strike', '|', 'subscript', 'superscript'],
80
+ '|',
81
+ ['removeFormat'],
82
+ '|',
83
+ ['outdent', 'indent'],
84
+ '|',
85
+ ['fullScreen', 'showBlocks', 'codeView'],
86
+ '|',
87
+ ['preview', 'print']
88
+ ];
89
+
90
+ const DEFAULT_ELEMENT_WHITELIST =
91
+ 'p|pre|blockquote|h1|h2|h3|h4|h5|h6|ol|ul|li|hr|figure|figcaption|img|iframe|audio|video|source|table|thead|tbody|tr|th|td|caption|a|b|strong|var|i|em|u|ins|s|span|strike|del|sub|sup|code|svg|path|details|summary';
92
+ const DEFAULT_TEXT_STYLE_TAGS = 'strong|span|font|b|var|i|em|u|ins|s|strike|del|sub|sup|mark|a|label|code|summary';
93
+ const DEFAULT_ATTRIBUTE_WHITELIST = 'contenteditable|target|href|title|download|rel|src|alt|class|type|controls|colspan|rowspan';
94
+
95
+ const DEFAULT_FORMAT_LINE = 'P|H[1-6]|LI|TH|TD|DETAILS';
96
+ const DEFAULT_FORMAT_BR_LINE = 'PRE';
97
+ const DEFAULT_FORMAT_CLOSURE_BR_LINE = '';
98
+ const DEFAULT_FORMAT_BLOCK = 'BLOCKQUOTE|OL|UL|FIGCAPTION|TABLE|THEAD|TBODY|TR|CAPTION|DETAILS';
99
+ const DEFAULT_FORMAT_CLOSURE_BLOCK = 'TH|TD';
100
+
101
+
102
+ const DEFAULT_CLASS_NAME = '^__se__|^se-|^katex|^MathJax';
103
+ const DEFAULT_EXTRA_TAG_MAP = { script: false, style: false, meta: false, link: false, '[a-z]+:[a-z]+': false };
104
+
105
+ const DEFAULT_TAG_STYLES = {
106
+ 'table|th|td': 'border|border-[a-z]+|background-color|text-align|float|font-weight|text-decoration|font-style',
107
+ 'ol|ul': 'list-style-type'
108
+ };
109
+ const DEFAULT_CONTENT_STYLES =
110
+ 'background|background-clip|background-color|' +
111
+ 'border|border-bottom|border-collapse|border-color|border-image|border-left-width|border-radius|border-right-width|border-spacing|border-style|border-top|border-width|' +
112
+ 'box-shadow|box-sizing|' +
113
+ 'caption-side|color|content|' +
114
+ 'direction|display|' +
115
+ 'float|font|font-family|font-size|font-style|font-weight|' +
116
+ 'height|' +
117
+ 'left|letter-spacing|line-height|list-style-position|list-style-type|' +
118
+ 'margin|margin-block-end|margin-block-start|margin-bottom|margin-inline-end|margin-inline-start|margin-left|margin-right|margin-top|max-width|min-width|' +
119
+ 'outline|overflow|' +
120
+ 'position|padding|padding-bottom|padding-inline-start|padding-left|padding-right|padding-top|' +
121
+ 'page-break-before|page-break-after|page-break-inside|' +
122
+ 'rotate|rotateX|rotateY|' +
123
+ 'table-layout|text-align|text-decoration|text-shadow|text-transform|top|' +
124
+ 'text-indent|text-rendering|' +
125
+ 'vertical-align|visibility|' +
126
+ 'white-space|width|word-break|word-wrap';
127
+
128
+ // Whitelist and blacklist are a combination of options and defaults.
129
+ // You can override the defaults by defining them with "__" in front of the list.
130
+ {
131
+ // [pluginName]: {} // plugin options
132
+ buttonList: DEFAULT_BUTTON_LIST, // List of buttons to display in the toolbar
133
+ toolbar_container: null, // Container for the toolbar (if any)
134
+ mode: 'classic', // Editor mode: classic, inline, balloon, or balloon-always
135
+ v2Migration: false, // Flag for version 2 migration
136
+ strictMode: {
137
+ // Strict mode settings
138
+ tagFilter: true,
139
+ formatFilter: true,
140
+ classFilter: true,
141
+ styleNodeFilter: true,
142
+ attrFilter: true,
143
+ styleFilter: true
144
+ },
145
+ __lineFormatFilter: true, // Line format filter
146
+ __pluginRetainFilter: true, // Plugin retain filter
147
+ type: '', // Document type: header, page (ex) 'document:header,page'
148
+ theme: '', // Theme for the editor
149
+ externalLibs: {}, // External libraries
150
+ /** (ex)
151
+ // math - katex
152
+ katex: {
153
+ src: Katex
154
+ },
155
+ // math - mathjax (Not supported if using the iframe option.)
156
+ mathjax: {
157
+ src: mathjax,
158
+ TeX,
159
+ CHTML,
160
+ browserAdaptor,
161
+ RegisterHTMLHandler
162
+ },
163
+ // exportPDF (Rather than using the library below, I recommend processing it on the server.)
164
+ html2canvas: html2canvas,
165
+ jsPDF: jsPDF
166
+ // codeMirror6
167
+ codeMirror: {
168
+ EditorView: EditorView,
169
+ extensions: [
170
+ basicSetup,
171
+ html({
172
+ matchClosingTags: true,
173
+ autoCloseTags: true
174
+ }),
175
+ javascript()
176
+ ],
177
+ minimalSetup: minimalSetup
178
+ },
179
+ // codeMirror5
180
+ codeMirror: {
181
+ src: Codemirror5
182
+ },
183
+ */
184
+ keepStyleOnDelete: false, // Keep style on delete
185
+ fontSizeUnits: ['px', 'pt', 'em', 'rem'], // Font size units
186
+ allowedClassName: DEFAULT_CLASS_NAME, // Allowed class names
187
+ closeModalOutsideClick: false, // Close modal on outside click
188
+ copyFormatKeepOn: false, // Keep format on copy
189
+ syncTabIndent: true, // Synchronize tab
190
+ autoLinkify: false, // Auto convert URLs to links on paste
191
+ autoStyleify: ['bold', 'underline', 'italic', 'strike'], // Auto apply styles on paste
192
+ scrollToOptions: { behavior: 'auto', block: 'nearest' }, // Scroll to options
193
+ componentScrollToOptions: { behavior: 'smooth', block: 'center' }, // Component scroll to options
194
+ retainStyleMode: 'repeat', // Retain style mode
195
+ allowedExtraTags: DEFAULT_EXTRA_TAG_MAP, // Allowed extra tags
196
+ events: {}, // Editor events
197
+ __textStyleTags: DEFAULT_TEXT_STYLE_TAGS, // Text style tags
198
+ textStyleTags: '', // Additional text style tags
199
+ convertTextTags: { bold: 'strong', underline: 'u', italic: 'em', strike: 'del', subscript: 'sub', superscript: 'sup' }, // Convert text tags
200
+ tagStyles: DEFAULT_TAG_STYLES, // Tag styles
201
+ spanStyles: '', // Span styles
202
+ lineStyles: '', // Line styles
203
+ textDirection: 'ltr', // Text direction
204
+ // Contains the names of the buttons that should be inverted.
205
+ // For example, a button like indent-outdent means that in RTL mode, the **indent** and **outdent** actions should be reversed.
206
+ reverseButtons: ['indent-outdent'], // Reverse buttons
207
+ historyStackDelayTime: 400, // History stack delay time
208
+ lineAttrReset: ['id'], // Line attribute reset
209
+ printClass: null, // Print class
210
+ defaultLine: 'p', // Default line element
211
+ elementWhitelist: '*', // Element whitelist
212
+ elementBlacklist: '', // Element blacklist
213
+ attributeWhitelist: null, // Attribute whitelist
214
+ attributeBlacklist: null, // Attribute blacklist
215
+ allowedEmptyTags: null, // Allowd empty tags ('.se-component, pre, blockquote, hr, li, table, img, iframe, video, audio, canvas, details')
216
+ formatClosureBrLine: DEFAULT_FORMAT_CLOSURE_BR_LINE, // Format closure BR line
217
+ formatBrLine: DEFAULT_FORMAT_BR_LINE, // Format BR line
218
+ formatLine: DEFAULT_FORMAT_LINE, // Format line
219
+ formatClosureBlock: DEFAULT_FORMAT_CLOSURE_BLOCK, // Format closure block
220
+ formatBlock: DEFAULT_FORMAT_BLOCK, // Format block
221
+ __defaultElementWhitelist: DEFAULT_ELEMENT_WHITELIST, // Default element whitelist
222
+ __defaultAttributeWhitelist: DEFAULT_ATTRIBUTE_WHITELIST, // Default attribute whitelist
223
+ toolbar_width: 'auto', // Toolbar width
224
+ toolbar_sticky: 0, // Toolbar sticky position
225
+ toolbar_hide: false, // Hide toolbar
226
+ subToolbar: null, // Sub toolbar
227
+ tabDisable: false, // Disable tab
228
+ shortcutsHint: true, // Show shortcuts hint
229
+ shortcutsDisable: false, // Disable shortcuts
230
+ /**
231
+ The array is divided into even units.
232
+ Input a command in the first value.
233
+ Input the character to be displayed in the tooltip in the second value. (ctrl, shift, etc. are automatically entered.)
234
+ How to enter a command
235
+ The key value of the object is the basic command or plugin name.
236
+ The "+" delimiter is required.
237
+ Starts with "c" or "!".
238
+
239
+ - Command shortcut
240
+ c = ctrl | command
241
+ s = shift
242
+ number = key code
243
+
244
+ - text shortcut
245
+ "!" = Valid when starting from the first of a paragraph.
246
+ The character following "!" is the key value.
247
+ "=" The shortcut key is executed when the key value character is completed without any other input.
248
+ It is executed when the space key is entered after the "_" character.
249
+ It is executed when the enter key is entered after the "/" character.
250
+
251
+ ---
252
+ -- Plugin method
253
+ "~methodName" The method name of the plugin to be executed.
254
+
255
+ -- Custom shortcut keys must start with "_".
256
+ "p~pluginName.pluginMethod" It is valid when the key value is not a plugin or a basic command. The plugin name and the method name of the plugin.
257
+
258
+ -- Registering a function directly
259
+ "$" If you put "$" as the last value, the function in the third value of the array will be executed.
260
+ - function arg ({ range, line, info, event, keyCode, editor: this.editor })
261
+ */
262
+ shortcuts: {
263
+ // default command
264
+ selectAll: ['c+65', 'A'],
265
+ bold: ['c+66', 'B'],
266
+ strike: ['c+s+83', 'S'],
267
+ underline: ['c+85', 'U'],
268
+ italic: ['c+73', 'I'],
269
+ redo: ['c+89', 'Y', 'c+s+90', 'Z'],
270
+ undo: ['c+90', 'Z'],
271
+ indent: ['c+221', ']'],
272
+ outdent: ['c+219', '['],
273
+ save: ['c+83', 'S'],
274
+ // plugins
275
+ link: ['c+75', 'K'],
276
+ hr: ['!+---+=+~shortcut', ''],
277
+ list_numbered: ['!+1.+_+~shortcut', ''],
278
+ list_bulleted: ['!+*.+_+~shortcut', ''],
279
+ // custom
280
+ _h1: ['c+s+49+p~formatBlock.createHeader', ''],
281
+ _h2: ['c+s+50+p~formatBlock.createHeader', ''],
282
+ _h3: ['c+s+51+p~formatBlock.createHeader', ''],
283
+ _h4: ['c+s+52+p~formatBlock.createHeader', ''],
284
+ _h5: ['c+s+53+p~formatBlock.createHeader', ''],
285
+ _h6: ['c+s+54+p~formatBlock.createHeader', '']
286
+ },
287
+ fullScreenOffset: 0, // Fullscreen offset
288
+ previewTemplate: null, // Preview template
289
+ printTemplate: null, // Print template
290
+ componentAutoSelect: false, // Component auto select
291
+ defaultUrlProtocol: null, // Default URL protocol
292
+ codeMirror: null, // CodeMirror settings
293
+ __listCommonStyle: ['fontSize', 'color', 'fontFamily', 'fontWeight', 'fontStyle'], // List of common styles
294
+ icons: '_icons', // Icons configuration
295
+ allUsedStyles: DEFAULT_CONTENT_STYLES, // All used styles
296
+ lang: '_defaultLang', // Language settings
297
+ value: null, // Initial value
298
+ statusbar_container: null // Statusbar container
299
+ }
300
+ ```
301
+
302
+ #### Multi Root frame apecific options
303
+ ```javascript
304
+ {
305
+ value: 'origin.value', // Initial content value for the editor
306
+ placeholder: 'origin.placeholder', // Placeholder text for the editor
307
+ editableFrameAttributes: 'origin.editableFrameAttributes', // Attributes for the editable frame
308
+ width: 'origin.width', // Width of the editor
309
+ minWidth: 'origin.minWidth', // Minimum width of the editor
310
+ maxWidth: 'origin.maxWidth', // Maximum width of the editor
311
+ height: 'origin.height', // Height of the editor
312
+ minHeight: 'origin.minHeight', // Minimum height of the editor
313
+ maxHeight: 'origin.maxHeight', // Maximum height of the editor
314
+ editorStyle: 'origin.editorStyle', // Style for the editor
315
+ iframe: 'origin.iframe', // Use iframe for the editor
316
+ iframe_fullPage: 'origin.iframe_fullPage', // Full page iframe for the editor
317
+ iframe_attributes: 'origin.iframe_attributes', // Attributes for the iframe
318
+ iframe_cssFileName: 'origin.iframe_cssFileName', // CSS file name for the iframe
319
+ statusbar: 'origin.statusbar', // Status bar for the editor
320
+ statusbar_showPathLabel: 'origin.statusbar_showPathLabel', // Show path label in the status bar
321
+ statusbar_resizeEnable: 'origin.statusbar_resizeEnable', // Enable resize in the status bar
322
+ charCounter: 'origin.charCounter', // Character counter for the editor
323
+ charCounter_max: 'origin.charCounter_max', // Maximum character count
324
+ charCounter_label: 'origin.charCounter_label', // Label for the character counter
325
+ charCounter_type: 'origin.charCounter_type' // Type of character counter
326
+ }
327
+ ```
328
+
329
+ #### Plugin options
330
+ ```javascript
331
+ {
332
+ // --------- command
333
+ blockquote: null, // no options.
334
+ exportPDF: {
335
+ apiUrl: null, // API URL for exporting PDF
336
+ fileName: 'suneditor-pdf', // Default file name for the exported PDF
337
+ jsPDFOptions: {}, // Default options for jsPDF
338
+ html2canvasOptions: {} // Default options for html2canvas
339
+ },
340
+ fileUpload: {
341
+ uploadUrl: null, // URL for file upload (required)
342
+ uploadHeaders: null, // Headers for file upload
343
+ uploadSizeLimit: null, // Upload size limit
344
+ uploadSingleSizeLimit: null, // Single file size limit
345
+ allowMultiple: false, // Allow multiple file uploads
346
+ acceptedFormats: '*', // Accepted file formats
347
+ as: 'box', // Upload mode (box or link)
348
+ controls: [['custom-as', 'edit', 'align', 'remove', 'custom-download']] // Figure controls
349
+ },
350
+ list_bulleted: null, // no options.
351
+ list_numbered: null, // no options.
352
+
353
+ // --------- dropdown
354
+ align: {
355
+ items: ['left', 'center', 'right', 'justify'] // Alignment options (defaults based on text direction)
356
+ },
357
+ backgroundColor: {
358
+ colorList: [], // List of background colors
359
+ splitNum: null, // Number of color splits
360
+ disableHEXInput: null, // Disable HEX color input
361
+ hueSliderOptions: {
362
+ controllerOptions: {
363
+ parents: ['menu'],
364
+ isOutsideForm: true
365
+ }
366
+ } // Options for hue slider
367
+ },
368
+ font: {
369
+ items: ['Arial', 'Comic Sans MS', 'Courier New', 'Impact', 'Georgia', 'tahoma', 'Trebuchet MS', 'Verdana'] // Default list of fonts
370
+ },
371
+ fontColor: {
372
+ colorList: [], // List of font colors
373
+ splitNum: null, // Number of color splits
374
+ disableHEXInput: null // Disable HEX color input
375
+ },
376
+ formatBlock: {
377
+ items: ['p', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'] // Default format block items
378
+ },
379
+ hr: {
380
+ items: [
381
+ {
382
+ name: 'Solid',
383
+ class: '__se__solid'
384
+ },
385
+ {
386
+ name: 'Dashed',
387
+ class: '__se__dashed'
388
+ },
389
+ {
390
+ name: 'Dotted',
391
+ class: '__se__dotted'
392
+ }
393
+ ] // Default items for horizontal rules
394
+ },
395
+ layout: {
396
+ items: null // Layout items (user must define this option)
397
+ },
398
+ lineHeight: {
399
+ items: [
400
+ { text: '1', value: 1 },
401
+ { text: '1.15', value: 1.15 },
402
+ { text: '1.5', value: 1.5 },
403
+ { text: '2', value: 2 }
404
+ ] // Default line height options
405
+ },
406
+ list: null, // no options
407
+ paragraphStyle: {
408
+ items: ['spaced', 'bordered', 'neon'] // Default paragraph styles
409
+ },
410
+ table: {
411
+ figureScrollList: ['se-scroll-figure-xy', 'se-scroll-figure-x', 'se-scroll-figure-y'], // Default figure scroll options
412
+ scrollType: 'x', // Default scroll type
413
+ captionPosition: 'top', // Default caption position
414
+ cellControllerPosition: 'table', // Default cell controller position
415
+ colorList: ['#b0dbb0', '#efef7e', '#f2acac', '#dcb0f6', '#99bdff', '#5dbd5d', '#e7c301', '#f64444', '#e57ff4', '#4387f1', '#27836a', '#f69915', '#ba0808', '#a90bed', '#134299', '#e4e4e4', '#B3B3B3', '#808080', '#4D4D4D', '#000000'] // Default color list for table plugin
416
+ },
417
+ template: {
418
+ items: null // template items (user must define this option)
419
+ },
420
+ textStyle: {
421
+ items: {
422
+ code: {
423
+ name: lang.menu_code,
424
+ class: '__se__t-code',
425
+ tag: 'code'
426
+ },
427
+ shadow: {
428
+ name: lang.menu_shadow,
429
+ class: '__se__t-shadow',
430
+ tag: 'span'
431
+ }
432
+ } // test style items
433
+ },
434
+
435
+ // --------- field
436
+ mention: {
437
+ triggerText: '@', // Trigger text for mentions
438
+ limitSize: 5, // Limit size for mentions
439
+ searchStartLength: 0, // Search start length for mentions
440
+ delayTime: 200, // Delay time for mention search
441
+ apiUrl: '', // API URL for mentions
442
+ apiHeaders: null, // API headers for mentions
443
+ useCachingData: true, // Use caching for mention data
444
+ useCachingFieldData: true // Use caching for mention field data
445
+ },
446
+
447
+ // --------- file browser
448
+ imageGallery: {
449
+ url: null, // URL for the image gallery file browser
450
+ headers: null, // Headers for the image gallery file browser
451
+ defaultWidth: '', // Default width for images in the gallery
452
+ defaultHeight: '' // Default height for images in the gallery
453
+ },
454
+
455
+ // --------- input
456
+ fontSize: {
457
+ unitMap: {
458
+ text: {
459
+ default: '13px',
460
+ list: [
461
+ { title: 'XX-Small', size: '8px' },
462
+ { title: 'X-Small', size: '10px' },
463
+ { title: 'Small', size: '13px' },
464
+ { title: 'Medium', size: '16px' },
465
+ { title: 'Large', size: '18px' },
466
+ { title: 'X-Large', size: '24px' },
467
+ { title: 'XX-Large', size: '32px' }
468
+ ]
469
+ },
470
+ px: {
471
+ default: 13,
472
+ inc: 1,
473
+ min: 8,
474
+ max: 72,
475
+ list: [8, 10, 13, 15, 18, 20, 22, 26, 28, 36, 48, 72]
476
+ },
477
+ pt: {
478
+ default: 10,
479
+ inc: 1,
480
+ min: 6,
481
+ max: 72,
482
+ list: [6, 8, 10, 12, 14, 18, 22, 26, 32]
483
+ },
484
+ em: {
485
+ default: 1,
486
+ inc: 0.1,
487
+ min: 0.5,
488
+ max: 5,
489
+ list: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.5, 3]
490
+ },
491
+ rem: {
492
+ default: 1,
493
+ inc: 0.1,
494
+ min: 0.5,
495
+ max: 5,
496
+ list: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 2.5, 3]
497
+ },
498
+ vw: {
499
+ inc: 0.1,
500
+ min: 0.5,
501
+ max: 10,
502
+ list: [2, 3.5, 4, 4.5, 6, 8]
503
+ },
504
+ vh: {
505
+ default: 1.5,
506
+ inc: 0.1,
507
+ min: 0.5,
508
+ max: 10,
509
+ list: [1, 1.5, 2, 2.5, 3, 3.5, 4]
510
+ },
511
+ '%': {
512
+ default: 100,
513
+ inc: 1,
514
+ min: 50,
515
+ max: 200,
516
+ list: [50, 70, 90, 100, 120, 140, 160, 180, 200]
517
+ }
518
+ }, // Unit map for font sizes
519
+ sizeUnit: 'text', // Size unit for font size (default 'text')
520
+ showDefaultSizeLabel: false, // Show default size label
521
+ showIncDecControls: false, // Show increment/decrement controls
522
+ disableInput: true // Disable input for font size
523
+ },
524
+ pageNavigator: null, // no options
525
+
526
+ // --------- modal
527
+ audio: {
528
+ defaultWidth: '', // Default width for audio player
529
+ defaultHeight: '', // Default height for audio player
530
+ createFileInput: false, // Create file input for audio
531
+ createUrlInput: true, // Create URL input for audio
532
+ uploadUrl: null, // URL for audio upload
533
+ uploadHeaders: null, // Headers for audio upload
534
+ uploadSizeLimit: null, // Upload size limit for audio
535
+ uploadSingleSizeLimit: null, // Single file upload size limit
536
+ allowMultiple: false, // Allow multiple audio uploads
537
+ acceptedFormats: 'audio/*', // Accepted audio formats
538
+ audioTagAttributes: null // Attributes for the audio tag
539
+ },
540
+ drawing: {
541
+ outputFormat: 'dataurl', // Output format for drawing (dataurl, svg)
542
+ useFormatType: false, // Use format type
543
+ defaultFormatType: 'block', // Default format type (block, inline)
544
+ keepFormatType: false, // Keep format type
545
+ lineWidth: 5, // Default line width
546
+ lineReconnect: false, // Line reconnect option
547
+ lineCap: 'round', // Line cap style (butt, round, square)
548
+ lineColor: '', // Default line color
549
+ formSize: {
550
+ width: '750px', // Form width
551
+ height: '50vh', // Form height
552
+ maxWidth: '', // Max form width
553
+ maxHeight: '', // Max form height
554
+ minWidth: '150px', // Min form width
555
+ minHeight: '100px' // Min form height
556
+ },
557
+ canResize: true, // Can resize the drawing area
558
+ maintainRatio: true // Maintain aspect ratio
559
+ },
560
+ image: {
561
+ canResize: true, // Can resize the image
562
+ showHeightInput: true, // Show height input
563
+ defaultWidth: 'auto', // Default width for the image
564
+ defaultHeight: 'auto', // Default height for the image
565
+ percentageOnlySize: false, // Use percentage only for size
566
+ createFileInput: true, // Create file input for image
567
+ createUrlInput: true, // Create URL input for image
568
+ uploadUrl: null, // URL for image upload
569
+ uploadHeaders: null, // Headers for image upload
570
+ uploadSizeLimit: null, // Upload size limit for image
571
+ uploadSingleSizeLimit: null, // Single file upload size limit
572
+ allowMultiple: false, // Allow multiple image uploads
573
+ acceptedFormats: 'image/*', // Accepted image formats
574
+ useFormatType: true, // Use format type for image
575
+ defaultFormatType: 'block', // Default format type (block, inline)
576
+ keepFormatType: false // Keep format type
577
+ },
578
+ link: {
579
+ textToDisplay: true, // Display text input field
580
+ title: true, // Display title input field
581
+ uploadUrl: null, // URL for file upload
582
+ uploadHeaders: null, // Headers for file upload
583
+ uploadSizeLimit: null, // Upload size limit
584
+ uploadSingleSizeLimit: null, // Single file upload size limit
585
+ acceptedFormats: null, // Accepted file formats
586
+ enableFileUpload: false, // Enable file upload
587
+ openNewWindow: false, // Open link in a new window
588
+ relList: [], // List of rel attribute values
589
+ defaultRel: {}, // Default rel attributes
590
+ noAutoPrefix: false // Disable automatic prefix for URLs
591
+ },
592
+ math: {
593
+ formSize: {
594
+ width: '460px', // Default form width
595
+ height: '14em', // Default form height
596
+ maxWidth: '', // Maximum form width
597
+ maxHeight: '', // Maximum form height
598
+ minWidth: '400px', // Minimum form width
599
+ minHeight: '40px' // Minimum form height
600
+ },
601
+ canResize: true, // Can resize the math input area
602
+ autoHeight: false, // Automatically adjust height
603
+ fontSizeList: [
604
+ // List of font sizes
605
+ { text: '1', value: '1em' },
606
+ { text: '1.5', value: '1.5em' },
607
+ { text: '2', value: '2em' },
608
+ { text: '2.5', value: '2.5em' }
609
+ ]
610
+ },
611
+ video: {
612
+ canResize: true, // Can resize the video
613
+ showHeightInput: true, // Show height input field
614
+ defaultWidth: '', // Default width for video
615
+ defaultHeight: '', // Default height for video
616
+ percentageOnlySize: false, // Use percentage only for size
617
+ createFileInput: false, // Create file input for video
618
+ createUrlInput: true, // Create URL input for video
619
+ uploadUrl: null, // URL for video upload
620
+ uploadHeaders: null, // Headers for video upload
621
+ uploadSizeLimit: null, // Upload size limit for video
622
+ uploadSingleSizeLimit: null, // Single file upload size limit
623
+ allowMultiple: false, // Allow multiple video uploads
624
+ acceptedFormats: 'video/*', // Accepted video formats
625
+ defaultRatio: 0.5625, // Default aspect ratio for video
626
+ showRatioOption: true, // Show aspect ratio option
627
+ ratioOptions: null, // Custom aspect ratio options
628
+ videoTagAttributes: null, // Attributes for the video tag
629
+ iframeTagAttributes: null, // Attributes for the iframe tag
630
+ query_youtube: '', // Query parameters for YouTube videos
631
+ query_vimeo: '', // Query parameters for Vimeo videos
632
+ embedQuery: {
633
+ youtube: {
634
+ pattern: /youtu\.?be/i,
635
+ action: (url) => {
636
+ url = this.convertUrlYoutube(url);
637
+ return converter.addUrlQuery(url, 'query_youtube');
638
+ },
639
+ tag: 'iframe'
640
+ },
641
+ vimeo: {
642
+ pattern: /vimeo\.com/i,
643
+ action: (url) => {
644
+ url = this.convertUrlVimeo(url);
645
+ return converter.addUrlQuery(url, 'query_vimeo');
646
+ },
647
+ tag: 'iframe'
648
+ }
649
+ }, // Query parameters for video
650
+ extensions: ['.mp4', '.avi', '.mov', '.webm', '.flv', '.mkv', '.m4v', '.ogv']
651
+ urlPatterns: [
652
+ /youtu\.?be/,
653
+ /vimeo\.com\//,
654
+ /dailymotion\.com\/video\//,
655
+ /facebook\.com\/.+\/videos\//,
656
+ /facebook\.com\/watch\/\?v=/,
657
+ /twitter\.com\/.+\/status\//,
658
+ /twitch\.tv\/videos\//,
659
+ /twitch\.tv\/[^/]+$/,
660
+ /tiktok\.com\/@[^/]+\/video\//,
661
+ /instagram\.com\/p\//,
662
+ /instagram\.com\/tv\//,
663
+ /instagram\.com\/reel\//,
664
+ /linkedin\.com\/posts\//,
665
+ /\.(wistia\.com|wi\.st)\/(medias|embed)\//,
666
+ /loom\.com\/share\//
667
+ ];
668
+ },
669
+ embed: {
670
+ urlPatterns: [
671
+ /dailymotion\.com\/embed\/video\//,
672
+ /facebook\.com\/plugins\/video\.php/,
673
+ /facebook\.com\/plugins\/post\.php/,
674
+ /twitter\.com\/i\/videos\//,
675
+ /player\.twitch\.tv\//,
676
+ /\.(wistia\.com|wi\.st)\/(medias|embed)\//,
677
+ /\.vidyard\.com\/embed\//,
678
+ /tiktok\.com\/embed\//,
679
+ /\.jumpshare\.com\/embed\//
680
+ ],
681
+ }
682
+
683
+ // --------- popup
684
+ anchor: null // no options
685
+ }
686
+ ```
687
+
688
+
689
+
690
+
691
+
692
+
693
+
694
+
695
+
696
+
697
+
698
+
699
+
700
+
701
+
702
+
703
+
704
+
705
+