suneditor 3.0.0-rc.4 → 3.0.0

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 (171) hide show
  1. package/README.md +4 -3
  2. package/dist/suneditor-contents.min.css +1 -1
  3. package/dist/suneditor.min.css +1 -1
  4. package/dist/suneditor.min.js +1 -1
  5. package/package.json +10 -6
  6. package/src/assets/design/color.css +14 -2
  7. package/src/assets/design/typography.css +5 -0
  8. package/src/assets/icons/defaultIcons.js +22 -4
  9. package/src/assets/suneditor-contents.css +1 -1
  10. package/src/assets/suneditor.css +312 -18
  11. package/src/core/config/eventManager.js +6 -9
  12. package/src/core/editor.js +1 -1
  13. package/src/core/event/actions/index.js +5 -0
  14. package/src/core/event/effects/keydown.registry.js +25 -0
  15. package/src/core/event/eventOrchestrator.js +69 -2
  16. package/src/core/event/handlers/handler_ww_mouse.js +1 -0
  17. package/src/core/event/rules/keydown.rule.backspace.js +9 -1
  18. package/src/core/kernel/coreKernel.js +4 -0
  19. package/src/core/kernel/store.js +2 -0
  20. package/src/core/logic/dom/char.js +11 -0
  21. package/src/core/logic/dom/format.js +22 -0
  22. package/src/core/logic/dom/html.js +126 -11
  23. package/src/core/logic/dom/nodeTransform.js +13 -0
  24. package/src/core/logic/dom/offset.js +100 -37
  25. package/src/core/logic/dom/selection.js +54 -22
  26. package/src/core/logic/panel/finder.js +982 -0
  27. package/src/core/logic/panel/menu.js +8 -6
  28. package/src/core/logic/panel/toolbar.js +112 -19
  29. package/src/core/logic/panel/viewer.js +214 -43
  30. package/src/core/logic/shell/_commandExecutor.js +7 -1
  31. package/src/core/logic/shell/commandDispatcher.js +1 -1
  32. package/src/core/logic/shell/component.js +5 -7
  33. package/src/core/logic/shell/history.js +24 -0
  34. package/src/core/logic/shell/shortcuts.js +3 -3
  35. package/src/core/logic/shell/ui.js +25 -26
  36. package/src/core/schema/frameContext.js +15 -1
  37. package/src/core/schema/options.js +180 -39
  38. package/src/core/section/constructor.js +61 -20
  39. package/src/core/section/documentType.js +2 -2
  40. package/src/events.js +12 -0
  41. package/src/helper/clipboard.js +1 -1
  42. package/src/helper/converter.js +15 -0
  43. package/src/helper/dom/domQuery.js +12 -0
  44. package/src/helper/dom/domUtils.js +26 -14
  45. package/src/helper/index.js +3 -0
  46. package/src/helper/markdown.js +876 -0
  47. package/src/interfaces/plugins.js +7 -5
  48. package/src/langs/ckb.js +9 -0
  49. package/src/langs/cs.js +9 -0
  50. package/src/langs/da.js +9 -0
  51. package/src/langs/de.js +9 -0
  52. package/src/langs/en.js +9 -0
  53. package/src/langs/es.js +9 -0
  54. package/src/langs/fa.js +9 -0
  55. package/src/langs/fr.js +9 -0
  56. package/src/langs/he.js +9 -0
  57. package/src/langs/hu.js +9 -0
  58. package/src/langs/it.js +9 -0
  59. package/src/langs/ja.js +9 -0
  60. package/src/langs/km.js +9 -0
  61. package/src/langs/ko.js +9 -0
  62. package/src/langs/lv.js +9 -0
  63. package/src/langs/nl.js +9 -0
  64. package/src/langs/pl.js +9 -0
  65. package/src/langs/pt_br.js +9 -0
  66. package/src/langs/ro.js +9 -0
  67. package/src/langs/ru.js +9 -0
  68. package/src/langs/se.js +9 -0
  69. package/src/langs/tr.js +9 -0
  70. package/src/langs/uk.js +9 -0
  71. package/src/langs/ur.js +9 -0
  72. package/src/langs/zh_cn.js +9 -0
  73. package/src/modules/contract/Browser.js +31 -1
  74. package/src/modules/contract/ColorPicker.js +6 -0
  75. package/src/modules/contract/Controller.js +77 -39
  76. package/src/modules/contract/Figure.js +57 -0
  77. package/src/modules/contract/Modal.js +6 -0
  78. package/src/modules/manager/ApiManager.js +53 -4
  79. package/src/modules/manager/FileManager.js +18 -1
  80. package/src/modules/ui/ModalAnchorEditor.js +35 -2
  81. package/src/modules/ui/SelectMenu.js +44 -12
  82. package/src/plugins/browser/fileBrowser.js +5 -2
  83. package/src/plugins/command/codeBlock.js +324 -0
  84. package/src/plugins/command/exportPDF.js +15 -3
  85. package/src/plugins/command/fileUpload.js +4 -1
  86. package/src/plugins/dropdown/backgroundColor.js +5 -1
  87. package/src/plugins/dropdown/blockStyle.js +8 -2
  88. package/src/plugins/dropdown/fontColor.js +5 -1
  89. package/src/plugins/dropdown/hr.js +6 -0
  90. package/src/plugins/dropdown/layout.js +4 -1
  91. package/src/plugins/dropdown/lineHeight.js +3 -0
  92. package/src/plugins/dropdown/paragraphStyle.js +5 -5
  93. package/src/plugins/dropdown/table/index.js +4 -1
  94. package/src/plugins/dropdown/table/render/table.html.js +1 -1
  95. package/src/plugins/dropdown/table/services/table.grid.js +16 -8
  96. package/src/plugins/dropdown/table/services/table.style.js +5 -9
  97. package/src/plugins/dropdown/template.js +3 -0
  98. package/src/plugins/dropdown/textStyle.js +5 -1
  99. package/src/plugins/field/mention.js +5 -1
  100. package/src/plugins/index.js +3 -0
  101. package/src/plugins/input/fontSize.js +10 -3
  102. package/src/plugins/modal/audio.js +7 -3
  103. package/src/plugins/modal/embed.js +23 -20
  104. package/src/plugins/modal/image/index.js +5 -1
  105. package/src/plugins/modal/math.js +7 -2
  106. package/src/plugins/modal/video/index.js +21 -4
  107. package/src/themes/cobalt.css +13 -4
  108. package/src/themes/cream.css +11 -2
  109. package/src/themes/dark.css +13 -4
  110. package/src/themes/midnight.css +13 -4
  111. package/src/typedef.js +4 -4
  112. package/types/assets/icons/defaultIcons.d.ts +12 -1
  113. package/types/assets/suneditor.css.d.ts +1 -1
  114. package/types/core/config/eventManager.d.ts +6 -8
  115. package/types/core/event/actions/index.d.ts +1 -0
  116. package/types/core/event/effects/keydown.registry.d.ts +2 -0
  117. package/types/core/event/eventOrchestrator.d.ts +2 -1
  118. package/types/core/kernel/coreKernel.d.ts +5 -0
  119. package/types/core/kernel/store.d.ts +5 -0
  120. package/types/core/logic/dom/char.d.ts +11 -0
  121. package/types/core/logic/dom/format.d.ts +22 -0
  122. package/types/core/logic/dom/html.d.ts +16 -0
  123. package/types/core/logic/dom/nodeTransform.d.ts +13 -0
  124. package/types/core/logic/dom/offset.d.ts +23 -2
  125. package/types/core/logic/dom/selection.d.ts +9 -3
  126. package/types/core/logic/panel/finder.d.ts +83 -0
  127. package/types/core/logic/panel/toolbar.d.ts +14 -1
  128. package/types/core/logic/panel/viewer.d.ts +22 -2
  129. package/types/core/logic/shell/shortcuts.d.ts +1 -1
  130. package/types/core/schema/frameContext.d.ts +22 -0
  131. package/types/core/schema/options.d.ts +362 -79
  132. package/types/events.d.ts +11 -0
  133. package/types/helper/converter.d.ts +15 -0
  134. package/types/helper/dom/domQuery.d.ts +12 -0
  135. package/types/helper/dom/domUtils.d.ts +23 -2
  136. package/types/helper/index.d.ts +5 -0
  137. package/types/helper/markdown.d.ts +27 -0
  138. package/types/interfaces/plugins.d.ts +7 -5
  139. package/types/langs/_Lang.d.ts +9 -0
  140. package/types/modules/contract/Browser.d.ts +36 -2
  141. package/types/modules/contract/ColorPicker.d.ts +6 -0
  142. package/types/modules/contract/Controller.d.ts +35 -1
  143. package/types/modules/contract/Figure.d.ts +57 -0
  144. package/types/modules/contract/Modal.d.ts +6 -0
  145. package/types/modules/manager/ApiManager.d.ts +26 -0
  146. package/types/modules/manager/FileManager.d.ts +17 -0
  147. package/types/modules/ui/ModalAnchorEditor.d.ts +41 -4
  148. package/types/modules/ui/SelectMenu.d.ts +40 -2
  149. package/types/plugins/browser/fileBrowser.d.ts +10 -4
  150. package/types/plugins/command/codeBlock.d.ts +53 -0
  151. package/types/plugins/command/fileUpload.d.ts +8 -2
  152. package/types/plugins/dropdown/backgroundColor.d.ts +10 -2
  153. package/types/plugins/dropdown/blockStyle.d.ts +14 -2
  154. package/types/plugins/dropdown/fontColor.d.ts +10 -2
  155. package/types/plugins/dropdown/hr.d.ts +12 -0
  156. package/types/plugins/dropdown/layout.d.ts +8 -2
  157. package/types/plugins/dropdown/lineHeight.d.ts +6 -0
  158. package/types/plugins/dropdown/paragraphStyle.d.ts +14 -3
  159. package/types/plugins/dropdown/table/index.d.ts +9 -3
  160. package/types/plugins/dropdown/template.d.ts +6 -0
  161. package/types/plugins/dropdown/textStyle.d.ts +10 -2
  162. package/types/plugins/field/mention.d.ts +10 -2
  163. package/types/plugins/index.d.ts +3 -0
  164. package/types/plugins/input/fontSize.d.ts +18 -4
  165. package/types/plugins/modal/audio.d.ts +14 -6
  166. package/types/plugins/modal/embed.d.ts +44 -38
  167. package/types/plugins/modal/image/index.d.ts +9 -1
  168. package/types/plugins/modal/link.d.ts +6 -2
  169. package/types/plugins/modal/math.d.ts +23 -5
  170. package/types/plugins/modal/video/index.d.ts +49 -9
  171. package/types/typedef.d.ts +5 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "suneditor",
3
- "version": "3.0.0-rc.4",
3
+ "version": "3.0.0",
4
4
  "description": "Vanilla JavaScript based WYSIWYG web editor",
5
5
  "author": "Yi JiHong",
6
6
  "license": "MIT",
@@ -23,7 +23,7 @@
23
23
  "types": "./types/langs/*.d.ts",
24
24
  "default": "./src/langs/*.js"
25
25
  },
26
- "./css": {
26
+ "./css/editor": {
27
27
  "types": "./types/assets/suneditor.css.d.ts",
28
28
  "default": "./src/assets/suneditor.css"
29
29
  },
@@ -35,11 +35,16 @@
35
35
  "types": "./types/interfaces/index.d.ts",
36
36
  "default": "./src/interfaces/index.js"
37
37
  },
38
- "./src/*": "./src/*",
38
+ "./src/*.css": "./src/*.css",
39
+ "./src/*.js": {
40
+ "types": "./types/*.d.ts",
41
+ "default": "./src/*"
42
+ },
39
43
  "./package.json": "./package.json"
40
44
  },
41
45
  "sideEffects": [
42
- "./src/assets/*.css"
46
+ "./src/assets/*.css",
47
+ "./src/themes/*.css"
43
48
  ],
44
49
  "engines": {
45
50
  "node": ">=14.0.0"
@@ -89,7 +94,6 @@
89
94
  "babel-jest": "^30.2.0",
90
95
  "babel-loader": "^10.0.0",
91
96
  "barrelsby": "^2.8.1",
92
- "baseline-browser-mapping": "^2.9.19",
93
97
  "clean-webpack-plugin": "^4.0.0",
94
98
  "codemirror": "^6.65.7",
95
99
  "cross-env": "^7.0.3",
@@ -127,7 +131,7 @@
127
131
  "chrome >= 119",
128
132
  "edge >= 119",
129
133
  "firefox >= 121",
130
- "safari >= 17",
134
+ "safari >= 17.2",
131
135
  "opera >= 105",
132
136
  "samsung >= 23",
133
137
  "Firefox ESR",
@@ -3,6 +3,7 @@
3
3
  /** --------------------------- content - [colors] ----------- */
4
4
  /* caret and placeholder */
5
5
  --se-caret-color: #333;
6
+ --se-drag-caret-color: #4592ff;
6
7
  --se-placeholder-color: #bbb;
7
8
 
8
9
  /* editable text tones */
@@ -39,9 +40,15 @@
39
40
  --se-main-color: #000;
40
41
  --se-main-color-lighter: #4c4c4d;
41
42
  --se-main-background-color: #fff;
42
- --se-code-view-color: #f5f5f5;
43
+ --se-code-view-color: #24292f;
43
44
  --se-main-font-color: #333;
44
- --se-code-view-background-color: #222;
45
+ --se-code-view-background-color: #fff;
46
+ --se-code-view-line-color: #57606a;
47
+ --se-code-view-line-background-color: #f6f8fa;
48
+ --se-markdown-view-color: #24292f;
49
+ --se-markdown-view-background-color: #fff;
50
+ --se-markdown-view-line-color: #57606a;
51
+ --se-markdown-view-line-background-color: #f6f8fa;
45
52
  --se-main-divider-color: #e1e1e1;
46
53
  --se-main-border-color: #d1d1d1;
47
54
  --se-main-outline-color: #b1b1b1;
@@ -49,6 +56,11 @@
49
56
  --se-statusbar-font-color: #666;
50
57
  --se-overlay-background-color: #222;
51
58
 
59
+ /* finder */
60
+ --se-find-match-color: rgba(255, 213, 0, 0.4);
61
+ --se-find-current-color: rgba(255, 150, 50, 0.7);
62
+ --se-find-no-match-color: rgba(255, 80, 80, 0.12);
63
+
52
64
  /* hover states */
53
65
  --se-hover-color: #000;
54
66
  --se-hover-dark-color: #cccccc;
@@ -7,8 +7,13 @@
7
7
  /** --------------------------- layout - [typography] ----------- */
8
8
  /* main */
9
9
  --se-main-font-family: Helvetica Neue;
10
+ --se-content-font-family: Helvetica Neue;
10
11
  --se-main-font-size: 13px;
11
12
 
13
+ /* codeview, markdown font */
14
+ --se-markdown-font-family: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace;
15
+ --se-codeview-font-family: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace;
16
+
12
17
  /* button */
13
18
  --se-btn-font-size: 12px;
14
19
 
@@ -18,8 +18,11 @@ export default {
18
18
  outdent: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M11,13H21V11H11M11,9H21V7H11M3,3V5H21V3M3,21H21V19H3M3,12L7,16V8M11,17H21V15H11V17Z" /></svg>',
19
19
  expansion: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10,21V19H6.41L10.91,14.5L9.5,13.09L5,17.59V14H3V21H10M14.5,10.91L19,6.41V10H21V3H14V5H17.59L13.09,9.5L14.5,10.91Z" /></svg>',
20
20
  reduction: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19.5,3.09L15,7.59V4H13V11H20V9H16.41L20.91,4.5L19.5,3.09M4,13V15H7.59L3.09,19.5L4.5,20.91L9,16.41V20H11V13H4Z" /></svg>',
21
+ code_block:
22
+ '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M5.59 3.41L7 4.82L3.82 8L7 11.18L5.59 12.6L1 8L5.59 3.41M11.41 3.41L16 8L11.41 12.6L10 11.18L13.18 8L10 4.82L11.41 3.41M22 6V18C22 19.11 21.11 20 20 20H4C2.9 20 2 19.11 2 18V14H4V18H20V6H17.03V4H20C21.11 4 22 4.89 22 6Z" /></svg>',
21
23
  code_view:
22
24
  '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12.89,3L14.85,3.4L11.11,21L9.15,20.6L12.89,3M19.59,12L16,8.41V5.58L22.42,12L16,18.41V15.58L19.59,12M1.58,12L8,5.58V8.41L4.41,12L8,15.58V18.41L1.58,12Z" /></svg>',
25
+ markdown_view: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M2,16V8H4.73L7,11.19L9.27,8H12V16H10V10.6L7,14.05L4,10.6V16H2M16,8L20,12H17V16H15V12H12L16,8Z" /></svg>',
23
26
  preview:
24
27
  '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12,9A3,3 0 0,1 15,12A3,3 0 0,1 12,15A3,3 0 0,1 9,12A3,3 0 0,1 12,9M12,4.5C17,4.5 21.27,7.61 23,12C21.27,16.39 17,19.5 12,19.5C7,19.5 2.73,16.39 1,12C2.73,7.61 7,4.5 12,4.5M3.18,12C4.83,15.36 8.24,17.5 12,17.5C15.76,17.5 19.17,15.36 20.82,12C19.17,8.64 15.76,6.5 12,6.5C8.24,6.5 4.83,8.64 3.18,12Z" /></svg>',
25
28
  print: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18,3H6V7H18M19,12A1,1 0 0,1 18,11A1,1 0 0,1 19,10A1,1 0 0,1 20,11A1,1 0 0,1 19,12M16,19H8V14H16M19,8H5A3,3 0 0,0 2,11V17H6V21H18V17H22V11A3,3 0 0,0 19,8Z" /></svg>',
@@ -30,7 +33,7 @@ export default {
30
33
  select_all:
31
34
  '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9,9H15V15H9M7,17H17V7H7M15,5H17V3H15M15,21H17V19H15M19,17H21V15H19M19,9H21V7H19M19,21A2,2 0 0,0 21,19H19M19,13H21V11H19M11,21H13V19H11M9,3H7V5H9M3,17H5V15H3M5,21V19H3A2,2 0 0,0 5,21M19,3V5H21A2,2 0 0,0 19,3M13,3H11V5H13M3,9H5V7H3M7,21H9V19H7M3,13H5V11H3M3,5H5V3A2,2 0 0,0 3,5Z" /></svg>',
32
35
  line_height: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 22H3V20H21V22M21 4H3V2H21V4M10 13.7H14L12 8.3L10 13.7M11.2 6H12.9L17.6 18H15.6L14.7 15.4H9.4L8.5 18H6.5L11.2 6Z" /></svg>',
33
- paragraph_style: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10,11A4,4 0 0,1 6,7A4,4 0 0,1 10,3H18V5H16V21H14V5H12V21H10V11Z" /></svg>',
36
+ paragraph_style: '<svg class="se-ci" xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="M360-160v-240q-83 0-141.5-58.5T160-600q0-83 58.5-141.5T360-800h360v80h-80v560h-80v-560H440v560h-80Z"/></svg>',
34
37
  text_style: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3,3H16V6H11V18H8V6H3V3M12,7H14V9H12V7M15,7H17V9H15V7M18,7H20V9H18V7M12,10H14V12H12V10M12,13H14V15H12V13M12,16H14V18H12V16M12,19H14V21H12V19Z" /></svg>',
35
38
  save: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15,9H5V5H15M12,19A3,3 0 0,1 9,16A3,3 0 0,1 12,13A3,3 0 0,1 15,16A3,3 0 0,1 12,19M17,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V7L17,3Z" /></svg>',
36
39
  blockquote:
@@ -94,7 +97,7 @@ export default {
94
97
  '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15,5H17V3H15M15,13H17V11H15M15,21H17V19H15M11,5H13V3H11M19,5H21V3H19M11,9H13V7H11M19,9H21V7H19M19,21H21V19H19M19,13H21V11H19M19,17H21V15H19M11,13H13V11H11M3,5H5V3H3M3,9H5V7H3M3,13H5V11H3M3,17H5V15H3M3,21H5V19H3M11,21H13V19H11M11,17H13V15H11M7,21H9V19H7M7,13H9V11H7M7,5H9V3H7V5Z" /></svg>',
95
98
  horizontal_line: '<svg class="se-ci" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 15.74 2.24"><g><path d="M20.15,12.75V10.51H4.41v2.24H20.15Z" transform="translate(-4.41 -10.51)"/></g></svg>',
96
99
  show_blocks:
97
- '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M5 3C3.9 3 3 3.9 3 5S2.1 7 1 7V9C2.1 9 3 9.9 3 11S3.9 13 5 13H7V11H5V10C5 8.9 4.1 8 3 8C4.1 8 5 7.1 5 6V5H7V3M11 3C12.1 3 13 3.9 13 5S13.9 7 15 7V9C13.9 9 13 9.9 13 11S12.1 13 11 13H9V11H11V10C11 8.9 11.9 8 13 8C11.9 8 11 7.1 11 6V5H9V3H11M22 6V18C22 19.11 21.11 20 20 20H4C2.9 20 2 19.11 2 18V15H4V18H20V6H17.03V4H20C21.11 4 22 4.89 22 6Z" /></svg>',
100
+ '<svg class="se-ci" xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="M40-40v-240h80v-400H40v-240h240v80h400v-80h240v240h-80v400h80v240H680v-80H280v80H40Zm240-160h400v-80h80v-400h-80v-80H280v80h-80v400h80v80Zm32-120 136-360h64l136 360h-62l-32-92H408l-32 92h-64Zm114-144h108l-52-150h-4l-52 150ZM120-760h80v-80h-80v80Zm640 0h80v-80h-80v80Zm0 640h80v-80h-80v80Zm-640 0h80v-80h-80v80Zm80-640Zm560 0Zm0 560Zm-560 0Z"/></svg>',
98
101
  cancel: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z" /></svg>',
99
102
  selection_remove:
100
103
  '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 20V17H22V20C22 21.11 21.1 22 20 22H17V20H20M2 20V17H4V20H7V22H4C2.9 22 2 21.1 2 20M10 20H14V22H10V20M14.59 8L12 10.59L9.41 8L8 9.41L10.59 12L8 14.59L9.41 16L12 13.41L14.59 16L16 14.59L13.41 12L16 9.41L14.59 8M20 10H22V14H20V10M2 10H4V14H2V10M2 4C2 2.89 2.9 2 4 2H7V4H4V7H2V4M22 4V7H20V4H17V2H20C21.1 2 22 2.9 22 4M10 2H14V4H10V2Z" /></svg>',
@@ -178,8 +181,6 @@ export default {
178
181
  cut: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19,3L13,9L15,11L22,4V3M12,12.5A0.5,0.5 0 0,1 11.5,12A0.5,0.5 0 0,1 12,11.5A0.5,0.5 0 0,1 12.5,12A0.5,0.5 0 0,1 12,12.5M6,20A2,2 0 0,1 4,18C4,16.89 4.9,16 6,16A2,2 0 0,1 8,18C8,19.11 7.1,20 6,20M6,8A2,2 0 0,1 4,6C4,4.89 4.9,4 6,4A2,2 0 0,1 8,6C8,7.11 7.1,8 6,8M9.64,7.64C9.87,7.14 10,6.59 10,6A4,4 0 0,0 6,2A4,4 0 0,0 2,6A4,4 0 0,0 6,10C6.59,10 7.14,9.87 7.64,9.64L10,12L7.64,14.36C7.14,14.13 6.59,14 6,14A4,4 0 0,0 2,18A4,4 0 0,0 6,22A4,4 0 0,0 10,18C10,17.41 9.87,16.86 9.64,16.36L12,14L19,21H22V20L9.64,7.64Z" /></svg>',
179
182
  PDF: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M9.5 11.5C9.5 12.3 8.8 13 8 13H7V15H5.5V9H8C8.8 9 9.5 9.7 9.5 10.5V11.5M14.5 13.5C14.5 14.3 13.8 15 13 15H10.5V9H13C13.8 9 14.5 9.7 14.5 10.5V13.5M18.5 10.5H17V11.5H18.5V13H17V15H15.5V9H18.5V10.5M12 10.5H13V13.5H12V10.5M7 10.5H8V11.5H7V10.5Z" /></svg>',
180
183
  format_paint: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18,4V3A1,1 0 0,0 17,2H5A1,1 0 0,0 4,3V7A1,1 0 0,0 5,8H17A1,1 0 0,0 18,7V6H19V10H9V21A1,1 0 0,0 10,22H12A1,1 0 0,0 13,21V12H21V4H18Z" /></svg>',
181
- find_replace:
182
- '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M11,6C12.38,6 13.63,6.56 14.54,7.46L12,10H18V4L15.95,6.05C14.68,4.78 12.93,4 11,4C7.47,4 4.57,6.61 4.08,10H6.1C6.56,7.72 8.58,6 11,6M16.64,15.14C17.3,14.24 17.76,13.17 17.92,12H15.9C15.44,14.28 13.42,16 11,16C9.62,16 8.37,15.44 7.46,14.54L10,12H4V18L6.05,15.95C7.32,17.22 9.07,18 11,18C12.55,18 14,17.5 15.14,16.64L20,21.5L21.5,20L16.64,15.14Z" /></svg>',
183
184
  drawing:
184
185
  '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.75 20.85C11.53 20.15 11.14 18.22 10.24 17C9.35 15.75 8.12 14.89 6.88 14.06C6 13.5 5.19 12.8 4.54 12C4.26 11.67 3.69 11.06 4.27 10.94C4.86 10.82 5.88 11.4 6.4 11.62C7.31 12 8.21 12.44 9.05 12.96L10.06 11.26C8.5 10.23 6.5 9.32 4.64 9.05C3.58 8.89 2.46 9.11 2.1 10.26C1.78 11.25 2.29 12.25 2.87 13.03C4.24 14.86 6.37 15.74 7.96 17.32C8.3 17.65 8.71 18.04 8.91 18.5C9.12 18.94 9.07 18.97 8.6 18.97C7.36 18.97 5.81 18 4.8 17.36L3.79 19.06C5.32 20 7.88 21.47 9.75 20.85M20.84 5.25C21.06 5.03 21.06 4.67 20.84 4.46L19.54 3.16C19.33 2.95 18.97 2.95 18.76 3.16L17.74 4.18L19.82 6.26M11 10.92V13H13.08L19.23 6.85L17.15 4.77L11 10.92Z" /></svg>',
185
186
  eraser: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15.14,3C14.63,3 14.12,3.2 13.73,3.59L2.59,14.73C1.81,15.5 1.81,16.77 2.59,17.56L5.03,20H12.69L21.41,11.27C22.2,10.5 22.2,9.23 21.41,8.44L16.56,3.59C16.17,3.2 15.65,3 15.14,3M17,18L15,20H22V18" /></svg>',
@@ -187,6 +188,21 @@ export default {
187
188
  selection_search:
188
189
  '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19.27 18.9C19.7 18.21 19.95 17.38 19.95 16.5C19.95 14 17.95 12 15.46 12S10.96 14 10.96 16.5 12.96 21 15.46 21C16.33 21 17.15 20.75 17.84 20.32L20.96 23.39L22.35 22L19.27 18.9M15.46 19C14.07 19 12.96 17.88 12.96 16.5S14.07 14 15.46 14 17.95 15.12 17.95 16.5 16.84 19 15.46 19M22 14H21.45C21.12 13.19 20.62 12.47 20 11.86V10H22V14M20 4H17V2H20C21.11 2 22 2.9 22 4V7H20V4M14 4H10V2H14V4M4 2H7V4H4V7H2V4C2 2.89 2.9 2 4 2M12 22H10V20C10.5 20.82 11.2 21.5 12 22M4 20H7V22H4C2.9 22 2 21.11 2 20V17H4V20M4 14H2V10H4V14Z" /></svg>',
189
190
  embed: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 19H15V21H19C20.1 21 21 20.1 21 19V15H19M19 3H15V5H19V9H21V5C21 3.9 20.1 3 19 3M5 5H9V3H5C3.9 3 3 3.9 3 5V9H5M5 15H3V19C3 20.1 3.9 21 5 21H9V19H5V15M7 11H9V13H7V11M11 11H13V13H11V11M15 11H17V13H15V11Z" /></svg>',
191
+ // finder
192
+ finder: '<svg class="se-ci" xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="M784-120 532-372q-30 24-69 38t-83 14q-109 0-184.5-75.5T120-580q0-109 75.5-184.5T380-840q109 0 184.5 75.5T640-580q0 44-14 83t-38 69l252 252-56 56ZM380-400q75 0 127.5-52.5T560-580q0-75-52.5-127.5T380-760q-75 0-127.5 52.5T200-580q0 75 52.5 127.5T380-400Z"/></svg>',
193
+ regex: '<svg class="se-ci" xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="M197-199q-56-57-86.5-130T80-482q0-80 30-153t87-130l57 57q-46 45-70 103.5T160-482q0 64 24.5 122.5T254-256l-57 57Zm140.5-58.5Q320-275 320-300t17.5-42.5Q355-360 380-360t42.5 17.5Q440-325 440-300t-17.5 42.5Q405-240 380-240t-42.5-17.5ZM519-440v-71l-61 36-40-70 61-35-61-35 40-70 61 36v-71h80v71l61-36 40 70-61 35 61 35-40 70-61-36v71h-80Zm244 241-57-57q46-45 70-103.5T800-482q0-64-24.5-122.5T706-708l57-57q56 57 86.5 130T880-482q0 80-30 153t-87 130Z"/></svg>',
194
+ match_case:
195
+ '<svg class="se-ci" xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="m131-252 165-440h79l165 440h-76l-39-112H247l-40 112h-76Zm139-176h131l-64-182h-4l-63 182Zm395 186q-51 0-81-27.5T554-342q0-44 34.5-72.5T677-443q23 0 45 4t38 11v-12q0-29-20.5-47T685-505q-23 0-42 9.5T610-468l-47-35q24-29 54.5-43t68.5-14q69 0 103 32.5t34 97.5v178h-63v-37h-4q-14 23-38 35t-53 12Zm12-54q35 0 59.5-24t24.5-56q-14-8-33.5-12.5T689-393q-32 0-50 14t-18 37q0 20 16 33t40 13Z"/></svg>',
196
+ whole_word:
197
+ '<svg class="se-ci" xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="M40-199v-200h80v120h720v-120h80v200H40Zm342-161v-34h-3q-13 20-35 31.5T294-351q-49 0-77-25.5T189-446q0-42 32.5-68.5T305-541q23 0 42.5 3.5T381-526v-14q0-27-18.5-43T312-599q-21 0-39.5 9T241-564l-43-32q19-27 48-41t67-14q62 0 95 29.5t33 85.5v176h-59Zm-66-134q-32 0-49 12.5T250-446q0 20 15 32.5t39 12.5q32 0 54.5-22.5T381-478q-14-8-32-12t-33-4Zm185 134v-401h62v113l-3 40h3q3-5 24-25.5t66-20.5q64 0 101 46t37 106q0 60-36.5 105.5T653-351q-41 0-62.5-18T563-397h-3v37h-59Zm143-238q-40 0-62 29.5T560-503q0 37 22 66t62 29q40 0 62.5-29t22.5-66q0-37-22.5-66T644-598Z"/></svg>',
198
+ swap_vert:
199
+ '<svg class="se-ci" xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="M320-440v-287L217-624l-57-56 200-200 200 200-57 56-103-103v287h-80ZM600-80 400-280l57-56 103 103v-287h80v287l103-103 57 56L600-80Z"/></svg>',
200
+ arrow_down_small: '<svg class="se-ci" xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="M480-344 240-584l56-56 184 184 184-184 56 56-240 240Z"/></svg>',
201
+ arrow_up_small: '<svg class="se-ci" xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="M480-528 296-344l-56-56 240-240 240 240-56 56-184-184Z"/></svg>',
202
+ replaceText:
203
+ '<svg class="se-ci" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16" ><g stroke-width="0"></g><g stroke-linecap="round" stroke-linejoin="round"></g><g><path fill-rule="evenodd" clip-rule="evenodd" d="M3.221 3.739l2.261 2.269L7.7 3.784l-.7-.7-1.012 1.007-.008-1.6a.523.523 0 0 1 .5-.526H8V1H6.48A1.482 1.482 0 0 0 5 2.489V4.1L3.927 3.033l-.706.706zm6.67 1.794h.01c.183.311.451.467.806.467.393 0 .706-.168.94-.503.236-.335.353-.78.353-1.333 0-.511-.1-.913-.301-1.207-.201-.295-.488-.442-.86-.442-.405 0-.718.194-.938.581h-.01V1H9v4.919h.89v-.386zm-.015-1.061v-.34c0-.248.058-.448.175-.601a.54.54 0 0 1 .445-.23.49.49 0 0 1 .436.233c.104.154.155.368.155.643 0 .33-.056.587-.169.768a.524.524 0 0 1-.47.27.495.495 0 0 1-.411-.211.853.853 0 0 1-.16-.532zM9 12.769c-.256.154-.625.231-1.108.231-.563 0-1.02-.178-1.369-.533-.349-.355-.523-.813-.523-1.374 0-.648.186-1.158.56-1.53.374-.376.875-.563 1.5-.563.433 0 .746.06.94.179v.998a1.26 1.26 0 0 0-.792-.276c-.325 0-.583.1-.774.298-.19.196-.283.468-.283.816 0 .338.09.603.272.797.182.191.431.287.749.287.282 0 .558-.092.828-.276v.946zM4 7L3 8v6l1 1h7l1-1V8l-1-1H4zm0 1h7v6H4V8z"></path></g></svg>',
204
+ relaceTextAll:
205
+ '<svg class="se-ci" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><g stroke-width="0"></g><g stroke-linecap="round" stroke-linejoin="round"></g><g><path fill-rule="evenodd" clip-rule="evenodd" d="M11.6 2.677c.147-.31.356-.465.626-.465.248 0 .44.118.573.353.134.236.201.557.201.966 0 .443-.078.798-.235 1.067-.156.268-.365.402-.627.402-.237 0-.416-.125-.537-.374h-.008v.31H11V1h.593v1.677h.008zm-.016 1.1a.78.78 0 0 0 .107.426c.071.113.163.169.274.169.136 0 .24-.072.314-.216.075-.145.113-.35.113-.615 0-.22-.035-.39-.104-.514-.067-.124-.164-.187-.29-.187-.12 0-.219.062-.297.185a.886.886 0 0 0-.117.48v.272zM4.12 7.695L2 5.568l.662-.662 1.006 1v-1.51A1.39 1.39 0 0 1 5.055 3H7.4v.905H5.055a.49.49 0 0 0-.468.493l.007 1.5.949-.944.656.656-2.08 2.085zM9.356 4.93H10V3.22C10 2.408 9.685 2 9.056 2c-.135 0-.285.024-.45.073a1.444 1.444 0 0 0-.388.167v.665c.237-.203.487-.304.75-.304.261 0 .392.156.392.469l-.6.103c-.506.086-.76.406-.76.961 0 .263.061.473.183.631A.61.61 0 0 0 8.69 5c.29 0 .509-.16.657-.48h.009v.41zm.004-1.355v.193a.75.75 0 0 1-.12.436.368.368 0 0 1-.313.17.276.276 0 0 1-.22-.095.38.38 0 0 1-.08-.248c0-.222.11-.351.332-.389l.4-.067zM7 12.93h-.644v-.41h-.009c-.148.32-.367.48-.657.48a.61.61 0 0 1-.507-.235c-.122-.158-.183-.368-.183-.63 0-.556.254-.876.76-.962l.6-.103c0-.313-.13-.47-.392-.47-.263 0-.513.102-.75.305v-.665c.095-.063.224-.119.388-.167.165-.049.315-.073.45-.073.63 0 .944.407.944 1.22v1.71zm-.64-1.162v-.193l-.4.068c-.222.037-.333.166-.333.388 0 .1.027.183.08.248a.276.276 0 0 0 .22.095.368.368 0 0 0 .312-.17c.08-.116.12-.26.12-.436zM9.262 13c.321 0 .568-.058.738-.173v-.71a.9.9 0 0 1-.552.207.619.619 0 0 1-.5-.215c-.12-.145-.181-.345-.181-.598 0-.26.063-.464.189-.612a.644.644 0 0 1 .516-.223c.194 0 .37.069.528.207v-.749c-.129-.09-.338-.134-.626-.134-.417 0-.751.14-1.001.422-.249.28-.373.662-.373 1.148 0 .42.116.764.349 1.03.232.267.537.4.913.4zM2 9l1-1h9l1 1v5l-1 1H3l-1-1V9zm1 0v5h9V9H3zm3-2l1-1h7l1 1v5l-1 1V7H6z"></path></g></svg>',
190
206
  // menu arrow
191
207
  menu_arrow_down: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7,10L12,15L17,10H7Z" /></svg>',
192
208
  menu_arrow_up: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7,15L12,10L17,15H7Z" /></svg>',
@@ -227,6 +243,8 @@ export default {
227
243
  '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16,12A2,2 0 0,1 18,10A2,2 0 0,1 20,12A2,2 0 0,1 18,14A2,2 0 0,1 16,12M10,12A2,2 0 0,1 12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12M4,12A2,2 0 0,1 6,10A2,2 0 0,1 8,12A2,2 0 0,1 6,14A2,2 0 0,1 4,12Z" /></svg>',
228
244
  more_vertical:
229
245
  '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12,16A2,2 0 0,1 14,18A2,2 0 0,1 12,20A2,2 0 0,1 10,18A2,2 0 0,1 12,16M12,10A2,2 0 0,1 14,12A2,2 0 0,1 12,14A2,2 0 0,1 10,12A2,2 0 0,1 12,10M12,4A2,2 0 0,1 14,6A2,2 0 0,1 12,8A2,2 0 0,1 10,6A2,2 0 0,1 12,4Z" /></svg>',
246
+ more_flag:
247
+ '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="M360-160q-19 0-36-8.5T296-192L80-480l216-288q11-15 28-23.5t36-8.5h440q33 0 56.5 23.5T880-720v480q0 33-23.5 56.5T800-160H360ZM180-480l180 240h440v-480H360L180-480Zm248.5 28.5Q440-463 440-480t-11.5-28.5Q417-520 400-520t-28.5 11.5Q360-497 360-480t11.5 28.5Q383-440 400-440t28.5-11.5Zm140 0Q580-463 580-480t-11.5-28.5Q557-520 540-520t-28.5 11.5Q500-497 500-480t11.5 28.5Q523-440 540-440t28.5-11.5Zm140 0Q720-463 720-480t-11.5-28.5Q697-520 680-520t-28.5 11.5Q640-497 640-480t11.5 28.5Q663-440 680-440t28.5-11.5ZM580-480Z"/></svg>',
230
248
  // as format
231
249
  as_inline: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M8,7L13,17H3L8,7M3,3H21V5H3V3M21,15V17H14V15H21M3,19H21V21H3V19Z" /></svg>',
232
250
  as_block: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12,7L17,17H7L12,7M3,3H21V5H3V3M3,19H21V21H3V19Z" /></svg>',
@@ -3,7 +3,7 @@
3
3
  /* suneditor content */
4
4
  .sun-editor-editable {
5
5
  box-sizing: border-box;
6
- font-family: Helvetica Neue;
6
+ font-family: var(--se-content-font-family);
7
7
  font-size: var(--se-edit-font-size);
8
8
  color: var(--se-edit-font-color);
9
9
  background-color: var(--se-edit-background-color);
@@ -545,7 +545,7 @@
545
545
  .sun-editor .se-btn:disabled,
546
546
  .sun-editor button:disabled,
547
547
  .sun-editor input:disabled {
548
- cursor: not-allowed;
548
+ cursor: default;
549
549
  color: var(--se-input-btn-disabled-color);
550
550
  }
551
551
 
@@ -851,7 +851,8 @@
851
851
  /** --- toolbar ---------------------------------------------------------- */
852
852
  .sun-editor .se-toolbar {
853
853
  display: block;
854
- position: relative;
854
+ position: sticky;
855
+ top: 0;
855
856
  height: auto;
856
857
  width: 100%;
857
858
  overflow: visible;
@@ -881,8 +882,6 @@
881
882
  .sun-editor .se-toolbar.se-toolbar-inline {
882
883
  display: none;
883
884
  position: absolute;
884
- box-shadow: 0 3px 9px var(--se-shadow-layer-color);
885
- -webkit-box-shadow: 0 3px 9px var(--se-shadow-layer-color);
886
885
  }
887
886
 
888
887
  /* balloon toolbar */
@@ -895,7 +894,13 @@
895
894
  -webkit-box-shadow: 0 3px 9px var(--se-shadow-layer-color);
896
895
  }
897
896
 
898
- /* sticky toolbar */
897
+ /* JS fallback: initial state — override CSS sticky */
898
+ .sun-editor .se-toolbar.se-toolbar-relative {
899
+ position: relative;
900
+ top: auto;
901
+ }
902
+
903
+ /* JS fallback: sticky active — overrides both default and relative */
899
904
  .sun-editor .se-toolbar.se-toolbar-sticky {
900
905
  position: fixed;
901
906
  top: 0px;
@@ -907,6 +912,36 @@
907
912
  z-index: -1;
908
913
  }
909
914
 
915
+ /* Bottom toolbar: sticky from bottom */
916
+ .sun-editor .se-toolbar.se-toolbar-bottom {
917
+ top: auto;
918
+ bottom: 0;
919
+ outline-offset: -1px;
920
+ }
921
+
922
+ /* Bottom toolbar: more layer opens above buttons */
923
+ .sun-editor .se-toolbar.se-toolbar-bottom .se-btn-tray {
924
+ display: flex;
925
+ flex-wrap: wrap;
926
+ }
927
+
928
+ .sun-editor .se-toolbar.se-toolbar-bottom .se-btn-tray > .se-toolbar-more-layer {
929
+ order: -1;
930
+ width: 100%;
931
+ border-top: none;
932
+ }
933
+
934
+ .sun-editor .se-toolbar.se-toolbar-bottom .se-toolbar-more-layer .se-more-layer {
935
+ border-top: none;
936
+ border-bottom: 1px solid var(--se-main-divider-color);
937
+ }
938
+
939
+ /* JS fallback sticky for bottom */
940
+ .sun-editor .se-toolbar.se-toolbar-sticky.se-toolbar-bottom {
941
+ top: auto;
942
+ bottom: 0px;
943
+ }
944
+
910
945
  /* toolbar arrow up */
911
946
  .sun-editor .se-toolbar .se-arrow.se-arrow-up {
912
947
  border-bottom-color: var(--se-main-divider-color);
@@ -1182,6 +1217,12 @@
1182
1217
  max-height: 300px;
1183
1218
  }
1184
1219
 
1220
+ /* dropdown layer - code block */
1221
+ .sun-editor .se-list-layer.se-list-code-block {
1222
+ min-width: 140px;
1223
+ max-height: 310px;
1224
+ }
1225
+
1185
1226
  /* dropdown layer - font family */
1186
1227
  .sun-editor .se-list-layer.se-list-font-family {
1187
1228
  min-width: 156px;
@@ -1538,14 +1579,12 @@
1538
1579
  position: relative;
1539
1580
  margin-top: 14px;
1540
1581
  height: 28px;
1541
- border-radius: 14px;
1542
1582
  outline: 2px solid #fff;
1543
1583
  }
1544
1584
 
1545
1585
  .sun-editor .se-hue-gradient-container .se-hue-gradient {
1546
1586
  cursor: pointer;
1547
1587
  height: 28px;
1548
- border-radius: 14px;
1549
1588
  background: linear-gradient(to right, #000, #fff);
1550
1589
  position: relative;
1551
1590
  }
@@ -1691,28 +1730,71 @@
1691
1730
 
1692
1731
  .sun-editor .se-wrapper .se-code-wrapper {
1693
1732
  width: 100%;
1733
+ overflow: hidden;
1694
1734
  }
1695
1735
  .sun-editor .se-wrapper .se-code-wrapper > div {
1696
- width: 100%;
1736
+ flex: 1;
1737
+ min-width: 0;
1697
1738
  }
1698
1739
  .sun-editor .se-wrapper .se-code-wrapper .se-code-view-line {
1699
- background-color: var(--se-code-view-color);
1700
- color: var(--se-code-view-background-color);
1740
+ background-color: var(--se-code-view-line-background-color);
1741
+ color: var(--se-code-view-line-color);
1701
1742
  text-align: right;
1702
1743
  width: 50px;
1703
1744
  font-size: var(--se-main-font-size);
1704
- padding-right: 6px;
1745
+ line-height: 1.5;
1746
+ padding: 4px 6px;
1705
1747
  overflow: hidden;
1748
+ resize: none !important;
1706
1749
  }
1707
1750
 
1708
1751
  .sun-editor .se-wrapper .se-code-viewer {
1752
+ flex: 1;
1753
+ min-width: 0;
1709
1754
  background-color: var(--se-code-view-background-color);
1710
1755
  color: var(--se-code-view-color);
1756
+ font-family: var(--se-codeview-font-family);
1711
1757
  font-size: var(--se-main-font-size);
1712
- word-break: break-all;
1758
+ line-height: 1.5;
1713
1759
  padding: 4px;
1714
1760
  margin: 0;
1761
+ tab-size: 4;
1715
1762
  resize: none !important;
1763
+ overflow-x: auto;
1764
+ white-space: pre;
1765
+ word-wrap: normal;
1766
+ }
1767
+
1768
+ .sun-editor .se-wrapper .se-markdown-wrapper {
1769
+ width: 100%;
1770
+ overflow: hidden;
1771
+ }
1772
+ .sun-editor .se-wrapper .se-markdown-wrapper .se-markdown-view-line {
1773
+ background-color: var(--se-markdown-view-line-background-color);
1774
+ color: var(--se-markdown-view-line-color);
1775
+ text-align: right;
1776
+ width: 50px;
1777
+ font-size: var(--se-main-font-size);
1778
+ line-height: 1.5;
1779
+ padding: 4px 6px;
1780
+ overflow: hidden;
1781
+ resize: none !important;
1782
+ }
1783
+ .sun-editor .se-wrapper .se-markdown-viewer {
1784
+ flex: 1;
1785
+ min-width: 0;
1786
+ background-color: var(--se-markdown-view-background-color);
1787
+ color: var(--se-markdown-view-color);
1788
+ font-size: var(--se-main-font-size);
1789
+ font-family: var(--se-markdown-font-family);
1790
+ line-height: 1.5;
1791
+ padding: 4px;
1792
+ margin: 0;
1793
+ tab-size: 4;
1794
+ resize: none !important;
1795
+ overflow-x: auto;
1796
+ white-space: pre;
1797
+ word-wrap: normal;
1716
1798
  }
1717
1799
 
1718
1800
  .sun-editor .se-wrapper .se-wrapper-wysiwyg {
@@ -1754,7 +1836,7 @@
1754
1836
  display: flex;
1755
1837
  width: auto;
1756
1838
  height: auto;
1757
- min-height: 16px;
1839
+ min-height: 18px;
1758
1840
  border-top: 1px solid var(--se-main-divider-color);
1759
1841
  padding: 0 4px;
1760
1842
  background-color: var(--se-main-background-color);
@@ -2881,6 +2963,7 @@
2881
2963
  margin: 0;
2882
2964
  }
2883
2965
 
2966
+ .sun-editor .se-select-menu .se-select-item.se-select-on,
2884
2967
  .sun-editor .se-select-menu .se-select-item *.se-select-on {
2885
2968
  color: var(--se-active-dark3-color);
2886
2969
  }
@@ -3090,7 +3173,7 @@
3090
3173
 
3091
3174
  .sun-editor .se-browser .se-browser-tags a {
3092
3175
  display: inline-block;
3093
- background-color: var(--se-code-view-color);
3176
+ background-color: var(--se-main-divider-color);
3094
3177
  padding: 6px 12px;
3095
3178
  margin: 8px 0 8px 8px;
3096
3179
  color: var(--se-main-font-color);
@@ -3573,6 +3656,204 @@
3573
3656
  z-index: 1;
3574
3657
  }
3575
3658
 
3659
+ /** --- pre code lang --- */
3660
+ /* ---pre - language label */
3661
+ .sun-editor-editable pre[data-se-lang] {
3662
+ position: relative;
3663
+ }
3664
+ .sun-editor-editable pre[data-se-lang]::before {
3665
+ content: attr(data-se-lang);
3666
+ position: absolute;
3667
+ top: 0;
3668
+ right: 0;
3669
+ padding: 2px 8px;
3670
+ font-size: 11px;
3671
+ color: var(--se-secondary-color);
3672
+ opacity: 0.7;
3673
+ pointer-events: none;
3674
+ }
3675
+ .sun-editor-editable[contenteditable='true'] pre.se-pre-code-focus {
3676
+ outline: 2px solid var(--se-active-color);
3677
+ outline-offset: -2px;
3678
+ }
3679
+ .sun-editor-editable pre[data-se-lang].se-pre-code-focus::before {
3680
+ display: none;
3681
+ }
3682
+ .sun-editor-editable.se-rtl pre[data-se-lang]::before {
3683
+ right: auto;
3684
+ left: 0;
3685
+ }
3686
+
3687
+ /* ---pre language selector */
3688
+ .sun-editor .se-code-lang {
3689
+ position: absolute;
3690
+ display: none;
3691
+ padding: 0;
3692
+ }
3693
+ .sun-editor .se-code-lang-button {
3694
+ display: inline-flex;
3695
+ align-items: center;
3696
+ gap: 4px;
3697
+ cursor: pointer;
3698
+ margin: 0;
3699
+ padding: 4px;
3700
+ font-size: 11px;
3701
+ font-family: monospace;
3702
+ line-height: 1.4;
3703
+ border-radius: var(--se-border-radius);
3704
+ background-color: var(--se-edit-background-pre, #f9f9f9);
3705
+ border: 1px solid var(--se-border-color);
3706
+ color: var(--se-edit-font-pre, #666);
3707
+ opacity: 0.75;
3708
+ transition: opacity 0.15s;
3709
+ white-space: nowrap;
3710
+ box-shadow: 0;
3711
+ }
3712
+ .sun-editor .se-code-lang-button:hover {
3713
+ opacity: 1;
3714
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
3715
+ }
3716
+ .sun-editor .se-code-lang-icon {
3717
+ font-weight: 700;
3718
+ font-size: 10px;
3719
+ opacity: 0.5;
3720
+ }
3721
+
3722
+ /* --- Finder ---------------------------------------------------------- */
3723
+ .sun-editor .se-find-replace {
3724
+ position: sticky;
3725
+ z-index: 6;
3726
+ display: none;
3727
+ flex-direction: column;
3728
+ margin-left: auto;
3729
+ width: fit-content;
3730
+ max-width: 100%;
3731
+ background-color: var(--se-main-background-color);
3732
+ border: 1px solid var(--se-main-border-color);
3733
+ border-top: none;
3734
+ border-right: none;
3735
+ border-radius: 0 0 0 var(--se-border-radius);
3736
+ box-shadow: -2px 2px 6px rgba(0, 0, 0, 0.1);
3737
+ padding: 6px 8px;
3738
+ gap: 4px;
3739
+ }
3740
+ .sun-editor .se-find-replace.se-find-replace-open {
3741
+ display: flex;
3742
+ }
3743
+
3744
+ .sun-editor .se-find-replace-row {
3745
+ display: flex;
3746
+ flex-wrap: wrap;
3747
+ justify-content: flex-end;
3748
+ align-items: center;
3749
+ gap: 4px;
3750
+ }
3751
+ .sun-editor .se-find-replace-row-replace {
3752
+ display: flex;
3753
+ justify-content: flex-start;
3754
+ }
3755
+
3756
+ /* Finder - input */
3757
+ .sun-editor .se-find-replace .se-find-input-wrapper {
3758
+ position: relative;
3759
+ flex: 1 1 180px;
3760
+ max-width: 420px;
3761
+ }
3762
+
3763
+ .sun-editor .se-find-replace .se-find-replace-input {
3764
+ width: 100%;
3765
+ height: 26px;
3766
+ padding: 2px 100px 2px 6px;
3767
+ border: 1px solid var(--se-main-border-color);
3768
+ border-radius: var(--se-border-radius);
3769
+ background-color: var(--se-main-background-color);
3770
+ color: var(--se-main-color);
3771
+ font-size: 13px;
3772
+ outline: none;
3773
+ box-sizing: border-box;
3774
+ }
3775
+ .sun-editor .se-find-replace .se-find-replace-input:focus {
3776
+ border-color: var(--se-active-color);
3777
+ box-shadow: 0 0 0 1px var(--se-active-color);
3778
+ }
3779
+ .sun-editor .se-find-replace .se-find-replace-input.se-find-no-match {
3780
+ background-color: var(--se-find-no-match-color, rgba(255, 80, 80, 0.12));
3781
+ }
3782
+
3783
+ /* Finder - toggle button group */
3784
+ .sun-editor .se-find-replace .se-find-replace-toggle {
3785
+ position: absolute;
3786
+ right: 1px;
3787
+ top: 50%;
3788
+ transform: translateY(-50%);
3789
+ font-size: 11px;
3790
+ color: var(--se-main-color-lighter);
3791
+ white-space: nowrap;
3792
+ background-color: transparent;
3793
+ }
3794
+ .sun-editor .se-find-replace .se-find-replace-toggle > * {
3795
+ display: flex;
3796
+ float: left;
3797
+ align-items: center;
3798
+ justify-content: center;
3799
+ height: 24px;
3800
+ margin: 0;
3801
+ }
3802
+ .sun-editor .se-find-replace .se-find-replace-toggle .se-find-replace-info {
3803
+ padding: 0 2px;
3804
+ }
3805
+ .sun-editor .se-find-replace .se-find-replace-toggle .se-find-replace-info .se-find-replace-count {
3806
+ color: var(--se-main-color-lighter);
3807
+ }
3808
+ .sun-editor .se-find-replace .se-find-replace-toggle > button.on {
3809
+ border: none;
3810
+ }
3811
+
3812
+ /* Finder - buttons */
3813
+ .sun-editor .se-find-replace .se-find-replace-buttons {
3814
+ display: flex;
3815
+ gap: 1px;
3816
+ flex-shrink: 0;
3817
+ }
3818
+
3819
+ .sun-editor .se-find-replace .se-find-replace-btn {
3820
+ display: flex;
3821
+ align-items: center;
3822
+ justify-content: center;
3823
+ width: 24px;
3824
+ height: 24px;
3825
+ border: 1px solid transparent;
3826
+ transition:
3827
+ opacity 0.15s,
3828
+ background-color 0.15s;
3829
+ font-size: 11px;
3830
+ }
3831
+
3832
+ .sun-editor .se-find-replace .se-find-replace-row .se-find-replace-btn {
3833
+ background-color: transparent;
3834
+ }
3835
+
3836
+ .sun-editor .se-find-replace .se-find-replace-btn svg {
3837
+ width: 16px;
3838
+ height: 16px;
3839
+ fill: currentColor;
3840
+ }
3841
+
3842
+ /* Finder - CSS Custom Highlight API: injected at runtime via JS (PostCSS cannot parse ::highlight) */
3843
+ /* Finter - Mark element fallback highlights */
3844
+ .sun-editor mark.se-find-mark,
3845
+ .sun-editor-editable mark.se-find-mark {
3846
+ background-color: var(--se-find-match-color, rgba(255, 213, 0, 0.4));
3847
+ color: inherit;
3848
+ padding: 0;
3849
+ margin: 0;
3850
+ border-radius: 1px;
3851
+ }
3852
+ .sun-editor mark.se-find-mark.se-find-current,
3853
+ .sun-editor-editable mark.se-find-mark.se-find-current {
3854
+ background-color: var(--se-find-current-color, rgba(255, 150, 50, 0.7));
3855
+ }
3856
+
3576
3857
  /** --- RTL start -------------------------------------------------------------------------------------------------------------------------------------------------- */
3577
3858
  /* icon */
3578
3859
  .sun-editor.se-rtl .se-icon-flip-rtl svg,
@@ -3588,6 +3869,19 @@
3588
3869
  margin: auto 1px;
3589
3870
  }
3590
3871
 
3872
+ /* Finder */
3873
+ .sun-editor.se-rtl .se-find-replace {
3874
+ margin-left: 0;
3875
+ margin-right: auto;
3876
+ border-right: 1px solid var(--se-main-border-color);
3877
+ border-left: none;
3878
+ border-radius: 0 0 var(--se-border-radius) 0;
3879
+ box-shadow: 2px 2px 6px rgba(0, 0, 0, 0.1);
3880
+ }
3881
+ .sun-editor.se-rtl .se-find-replace-row {
3882
+ justify-content: flex-start;
3883
+ }
3884
+
3591
3885
  /* statusbar */
3592
3886
  .sun-editor.se-rtl .se-status-bar .se-navigation {
3593
3887
  direction: rtl;
@@ -3959,12 +4253,12 @@
3959
4253
  float: right;
3960
4254
  }
3961
4255
 
3962
- /** document-type codeView --------------------------------------------- */
3963
- .sun-editor .se-wrapper.se-type-document.se-code-view-status {
4256
+ /** document-type codeView, markdownView --------------------------------------------- */
4257
+ .sun-editor .se-wrapper.se-type-document.se-source-view-status {
3964
4258
  padding: 0;
3965
4259
  }
3966
- .sun-editor .se-wrapper.se-type-document.se-code-view-status .se-document-lines,
3967
- .sun-editor .se-wrapper.se-type-document.se-code-view-status .se-document-pages {
4260
+ .sun-editor .se-wrapper.se-type-document.se-source-view-status .se-document-lines,
4261
+ .sun-editor .se-wrapper.se-type-document.se-source-view-status .se-document-pages {
3968
4262
  display: none;
3969
4263
  }
3970
4264