editor-svg 1.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 (472) hide show
  1. package/.editorconfig +9 -0
  2. package/.eslintrc +46 -0
  3. package/.prettierrc +8 -0
  4. package/AGENTS.md +186 -0
  5. package/CHANGELOG.md +2543 -0
  6. package/CLAUDE.md +110 -0
  7. package/LICENSE +21 -0
  8. package/README.md +110 -0
  9. package/cypress/e2e/control/checkbox.cy.ts +46 -0
  10. package/cypress/e2e/control/select.cy.ts +56 -0
  11. package/cypress/e2e/control/text.cy.ts +43 -0
  12. package/cypress/e2e/editor.cy.ts +67 -0
  13. package/cypress/e2e/menus/block.cy.ts +38 -0
  14. package/cypress/e2e/menus/checkbox.cy.ts +33 -0
  15. package/cypress/e2e/menus/codeblock.cy.ts +34 -0
  16. package/cypress/e2e/menus/date.cy.ts +28 -0
  17. package/cypress/e2e/menus/format.cy.ts +40 -0
  18. package/cypress/e2e/menus/hyperlink.cy.ts +39 -0
  19. package/cypress/e2e/menus/image.cy.ts +25 -0
  20. package/cypress/e2e/menus/latex.cy.ts +34 -0
  21. package/cypress/e2e/menus/pagebreak.cy.ts +21 -0
  22. package/cypress/e2e/menus/painter.cy.ts +53 -0
  23. package/cypress/e2e/menus/print.cy.ts +25 -0
  24. package/cypress/e2e/menus/row.cy.ts +103 -0
  25. package/cypress/e2e/menus/search.cy.ts +112 -0
  26. package/cypress/e2e/menus/separator.cy.ts +32 -0
  27. package/cypress/e2e/menus/table.cy.ts +25 -0
  28. package/cypress/e2e/menus/text.cy.ts +304 -0
  29. package/cypress/e2e/menus/title.cy.ts +43 -0
  30. package/cypress/e2e/menus/undoRedo.cy.ts +49 -0
  31. package/cypress/e2e/menus/watermark.cy.ts +64 -0
  32. package/cypress/fixtures/example.json +3 -0
  33. package/cypress/fixtures/test.png +0 -0
  34. package/cypress/global.d.ts +13 -0
  35. package/cypress/support/commands.ts +5 -0
  36. package/cypress/support/e2e.ts +1 -0
  37. package/cypress/tsconfig.json +21 -0
  38. package/cypress.config.ts +10 -0
  39. package/docs/.vitepress/config.ts +191 -0
  40. package/docs/.vitepress/theme/components/DeepWikiBadge.vue +21 -0
  41. package/docs/.vitepress/theme/components/ZreadBadge.vue +21 -0
  42. package/docs/.vitepress/theme/index.ts +27 -0
  43. package/docs/en/guide/api-common.md +49 -0
  44. package/docs/en/guide/api-instance.md +34 -0
  45. package/docs/en/guide/command-execute.md +1167 -0
  46. package/docs/en/guide/command-get.md +355 -0
  47. package/docs/en/guide/contextmenu-custom.md +44 -0
  48. package/docs/en/guide/contextmenu-internal.md +61 -0
  49. package/docs/en/guide/eventbus.md +260 -0
  50. package/docs/en/guide/i18n.md +112 -0
  51. package/docs/en/guide/listener.md +126 -0
  52. package/docs/en/guide/option.md +214 -0
  53. package/docs/en/guide/override.md +57 -0
  54. package/docs/en/guide/plugin-custom.md +25 -0
  55. package/docs/en/guide/plugin-internal.md +125 -0
  56. package/docs/en/guide/schema.md +237 -0
  57. package/docs/en/guide/shortcut-custom.md +22 -0
  58. package/docs/en/guide/shortcut-internal.md +189 -0
  59. package/docs/en/guide/start.md +97 -0
  60. package/docs/en/index.md +43 -0
  61. package/docs/guide/api-common.md +49 -0
  62. package/docs/guide/api-instance.md +34 -0
  63. package/docs/guide/command-execute.md +1157 -0
  64. package/docs/guide/command-get.md +353 -0
  65. package/docs/guide/contextmenu-custom.md +44 -0
  66. package/docs/guide/contextmenu-internal.md +61 -0
  67. package/docs/guide/eventbus.md +260 -0
  68. package/docs/guide/i18n.md +111 -0
  69. package/docs/guide/listener.md +126 -0
  70. package/docs/guide/option.md +214 -0
  71. package/docs/guide/override.md +57 -0
  72. package/docs/guide/plugin-custom.md +25 -0
  73. package/docs/guide/plugin-internal.md +125 -0
  74. package/docs/guide/schema.md +237 -0
  75. package/docs/guide/shortcut-custom.md +22 -0
  76. package/docs/guide/shortcut-internal.md +189 -0
  77. package/docs/guide/start.md +97 -0
  78. package/docs/index.md +43 -0
  79. package/docs/public/favicon.png +0 -0
  80. package/favicon.png +0 -0
  81. package/index.html +435 -0
  82. package/package.json +55 -0
  83. package/pnpm-lock.yaml +4113 -0
  84. package/scripts/release.js +41 -0
  85. package/scripts/verifyCommit.js +19 -0
  86. package/src/assets/images/alignment.svg +1 -0
  87. package/src/assets/images/arrow-left.svg +1 -0
  88. package/src/assets/images/arrow-right.svg +1 -0
  89. package/src/assets/images/block.svg +1 -0
  90. package/src/assets/images/bold.svg +1 -0
  91. package/src/assets/images/catalog.svg +1 -0
  92. package/src/assets/images/center.svg +1 -0
  93. package/src/assets/images/checkbox.svg +1 -0
  94. package/src/assets/images/close.svg +1 -0
  95. package/src/assets/images/codeblock.svg +1 -0
  96. package/src/assets/images/color.svg +1 -0
  97. package/src/assets/images/control.svg +1 -0
  98. package/src/assets/images/date.svg +1 -0
  99. package/src/assets/images/exit-fullscreen.svg +1 -0
  100. package/src/assets/images/format.svg +1 -0
  101. package/src/assets/images/highlight.svg +1 -0
  102. package/src/assets/images/hyperlink.svg +1 -0
  103. package/src/assets/images/image.svg +1 -0
  104. package/src/assets/images/italic.svg +1 -0
  105. package/src/assets/images/justify.svg +7 -0
  106. package/src/assets/images/latex.svg +1 -0
  107. package/src/assets/images/left.svg +1 -0
  108. package/src/assets/images/line-dash-dot-dot.svg +1 -0
  109. package/src/assets/images/line-dash-dot.svg +1 -0
  110. package/src/assets/images/line-dash-large-gap.svg +1 -0
  111. package/src/assets/images/line-dash-small-gap.svg +1 -0
  112. package/src/assets/images/line-dot.svg +1 -0
  113. package/src/assets/images/line-double.svg +1 -0
  114. package/src/assets/images/line-single.svg +1 -0
  115. package/src/assets/images/line-wavy.svg +1 -0
  116. package/src/assets/images/list.svg +1 -0
  117. package/src/assets/images/option.svg +1 -0
  118. package/src/assets/images/page-break.svg +1 -0
  119. package/src/assets/images/page-mode.svg +1 -0
  120. package/src/assets/images/page-scale-add.svg +1 -0
  121. package/src/assets/images/page-scale-minus.svg +1 -0
  122. package/src/assets/images/painter.svg +1 -0
  123. package/src/assets/images/paper-direction.svg +1 -0
  124. package/src/assets/images/paper-margin.svg +1 -0
  125. package/src/assets/images/paper-size.svg +1 -0
  126. package/src/assets/images/print.svg +1 -0
  127. package/src/assets/images/radio.svg +4 -0
  128. package/src/assets/images/redo.svg +1 -0
  129. package/src/assets/images/request-fullscreen.svg +1 -0
  130. package/src/assets/images/right.svg +1 -0
  131. package/src/assets/images/row-margin.svg +1 -0
  132. package/src/assets/images/search.svg +1 -0
  133. package/src/assets/images/separator.svg +1 -0
  134. package/src/assets/images/signature-undo.svg +1 -0
  135. package/src/assets/images/signature.svg +1 -0
  136. package/src/assets/images/size-add.svg +1 -0
  137. package/src/assets/images/size-minus.svg +1 -0
  138. package/src/assets/images/strikeout.svg +1 -0
  139. package/src/assets/images/subscript.svg +1 -0
  140. package/src/assets/images/superscript.svg +1 -0
  141. package/src/assets/images/table.svg +1 -0
  142. package/src/assets/images/title.svg +1 -0
  143. package/src/assets/images/trash.svg +1 -0
  144. package/src/assets/images/underline.svg +1 -0
  145. package/src/assets/images/undo.svg +1 -0
  146. package/src/assets/images/watermark.svg +1 -0
  147. package/src/assets/images/word-tool.svg +1 -0
  148. package/src/assets/snapshots/main_v0.2.1.png +0 -0
  149. package/src/assets/snapshots/main_v0.2.2.png +0 -0
  150. package/src/assets/snapshots/main_v0.3.0.png +0 -0
  151. package/src/assets/snapshots/main_v0.3.1.png +0 -0
  152. package/src/assets/snapshots/main_v0.5.0.png +0 -0
  153. package/src/assets/snapshots/main_v0.5.1.png +0 -0
  154. package/src/assets/snapshots/main_v0.6.0.png +0 -0
  155. package/src/assets/snapshots/main_v0.6.1.png +0 -0
  156. package/src/assets/snapshots/main_v0.7.0.png +0 -0
  157. package/src/assets/snapshots/main_v0.7.1.png +0 -0
  158. package/src/assets/snapshots/main_v0.7.2.png +0 -0
  159. package/src/assets/snapshots/main_v0.7.3.png +0 -0
  160. package/src/assets/snapshots/main_v0.7.4.png +0 -0
  161. package/src/assets/snapshots/main_v0.7.6.png +0 -0
  162. package/src/assets/snapshots/main_v0.7.7.png +0 -0
  163. package/src/assets/snapshots/main_v0.8.0.png +0 -0
  164. package/src/assets/snapshots/main_v0.8.5.png +0 -0
  165. package/src/assets/snapshots/main_v0.8.6.png +0 -0
  166. package/src/assets/snapshots/main_v0.8.7.png +0 -0
  167. package/src/assets/snapshots/main_v0.8.8.png +0 -0
  168. package/src/assets/snapshots/main_v0.9.0.png +0 -0
  169. package/src/assets/snapshots/main_v0.9.1.png +0 -0
  170. package/src/assets/snapshots/main_v0.9.2.png +0 -0
  171. package/src/assets/snapshots/main_v0.9.23.png +0 -0
  172. package/src/assets/snapshots/main_v0.9.28.png +0 -0
  173. package/src/assets/snapshots/main_v0.9.29.png +0 -0
  174. package/src/assets/snapshots/main_v0.9.3.png +0 -0
  175. package/src/assets/snapshots/main_v0.9.30.png +0 -0
  176. package/src/assets/snapshots/main_v0.9.32.png +0 -0
  177. package/src/assets/snapshots/main_v0.9.35.png +0 -0
  178. package/src/assets/snapshots/main_v0.9.4.png +0 -0
  179. package/src/assets/snapshots/main_v0.9.5.png +0 -0
  180. package/src/assets/snapshots/main_v0.9.6.png +0 -0
  181. package/src/assets/snapshots/main_v0.9.8.png +0 -0
  182. package/src/components/dialog/Dialog.ts +171 -0
  183. package/src/components/dialog/dialog.css +131 -0
  184. package/src/components/signature/Signature.ts +340 -0
  185. package/src/components/signature/signature.css +132 -0
  186. package/src/editor/assets/css/block/block.css +21 -0
  187. package/src/editor/assets/css/contextmenu/contextmenu.css +196 -0
  188. package/src/editor/assets/css/control/calculator.css +85 -0
  189. package/src/editor/assets/css/control/select.css +44 -0
  190. package/src/editor/assets/css/date/datePicker.css +233 -0
  191. package/src/editor/assets/css/hyperlink/hyperlink.css +26 -0
  192. package/src/editor/assets/css/index.css +78 -0
  193. package/src/editor/assets/css/previewer/previewer.css +122 -0
  194. package/src/editor/assets/css/resizer/resizer.css +74 -0
  195. package/src/editor/assets/css/table/table.css +155 -0
  196. package/src/editor/assets/css/zone/zone.css +61 -0
  197. package/src/editor/assets/images/close.svg +1 -0
  198. package/src/editor/assets/images/delete-col.svg +1 -0
  199. package/src/editor/assets/images/delete-row-col.svg +1 -0
  200. package/src/editor/assets/images/delete-row.svg +1 -0
  201. package/src/editor/assets/images/delete-table.svg +1 -0
  202. package/src/editor/assets/images/image-change.svg +1 -0
  203. package/src/editor/assets/images/image-download.svg +1 -0
  204. package/src/editor/assets/images/image-next.svg +1 -0
  205. package/src/editor/assets/images/image-pre.svg +1 -0
  206. package/src/editor/assets/images/image.svg +1 -0
  207. package/src/editor/assets/images/insert-bottom-row.svg +1 -0
  208. package/src/editor/assets/images/insert-left-col.svg +1 -0
  209. package/src/editor/assets/images/insert-right-col.svg +1 -0
  210. package/src/editor/assets/images/insert-row-col.svg +1 -0
  211. package/src/editor/assets/images/insert-top-row.svg +1 -0
  212. package/src/editor/assets/images/merge-cancel-cell.svg +1 -0
  213. package/src/editor/assets/images/merge-cell.svg +1 -0
  214. package/src/editor/assets/images/original-size.svg +1 -0
  215. package/src/editor/assets/images/print.svg +1 -0
  216. package/src/editor/assets/images/rotate.svg +1 -0
  217. package/src/editor/assets/images/submenu-dropdown.svg +1 -0
  218. package/src/editor/assets/images/table-border-all.svg +1 -0
  219. package/src/editor/assets/images/table-border-dash.svg +1 -0
  220. package/src/editor/assets/images/table-border-empty.svg +1 -0
  221. package/src/editor/assets/images/table-border-external.svg +1 -0
  222. package/src/editor/assets/images/table-border-internal.svg +1 -0
  223. package/src/editor/assets/images/table-border-td-back.svg +1 -0
  224. package/src/editor/assets/images/table-border-td-bottom.svg +1 -0
  225. package/src/editor/assets/images/table-border-td-forward.svg +1 -0
  226. package/src/editor/assets/images/table-border-td-left.svg +1 -0
  227. package/src/editor/assets/images/table-border-td-right.svg +1 -0
  228. package/src/editor/assets/images/table-border-td-top.svg +1 -0
  229. package/src/editor/assets/images/table-border-td.svg +1 -0
  230. package/src/editor/assets/images/vertical-align-bottom.svg +1 -0
  231. package/src/editor/assets/images/vertical-align-middle.svg +1 -0
  232. package/src/editor/assets/images/vertical-align-top.svg +1 -0
  233. package/src/editor/assets/images/vertical-align.svg +1 -0
  234. package/src/editor/assets/images/zoom-in.svg +1 -0
  235. package/src/editor/assets/images/zoom-out.svg +1 -0
  236. package/src/editor/core/actuator/Actuator.ts +21 -0
  237. package/src/editor/core/actuator/handlers/positionContextChange.ts +13 -0
  238. package/src/editor/core/command/Command.ts +312 -0
  239. package/src/editor/core/command/CommandAdapt.ts +2733 -0
  240. package/src/editor/core/contextmenu/ContextMenu.ts +363 -0
  241. package/src/editor/core/contextmenu/menus/controlMenus.ts +25 -0
  242. package/src/editor/core/contextmenu/menus/globalMenus.ts +66 -0
  243. package/src/editor/core/contextmenu/menus/hyperlinkMenus.ts +58 -0
  244. package/src/editor/core/contextmenu/menus/imageMenus.ts +134 -0
  245. package/src/editor/core/contextmenu/menus/tableMenus.ts +331 -0
  246. package/src/editor/core/cursor/Cursor.ts +248 -0
  247. package/src/editor/core/cursor/CursorAgent.ts +75 -0
  248. package/src/editor/core/draw/Draw.ts +2934 -0
  249. package/src/editor/core/draw/control/Control.ts +1767 -0
  250. package/src/editor/core/draw/control/checkbox/CheckboxControl.ts +154 -0
  251. package/src/editor/core/draw/control/date/DateControl.ts +363 -0
  252. package/src/editor/core/draw/control/interactive/ControlSearch.ts +214 -0
  253. package/src/editor/core/draw/control/number/Calculator.ts +183 -0
  254. package/src/editor/core/draw/control/number/NumberControl.ts +183 -0
  255. package/src/editor/core/draw/control/radio/RadioControl.ts +68 -0
  256. package/src/editor/core/draw/control/richtext/Border.ts +52 -0
  257. package/src/editor/core/draw/control/select/SelectControl.ts +567 -0
  258. package/src/editor/core/draw/control/text/TextControl.ts +280 -0
  259. package/src/editor/core/draw/frame/Background.ts +117 -0
  260. package/src/editor/core/draw/frame/Badge.ts +88 -0
  261. package/src/editor/core/draw/frame/Footer.ts +155 -0
  262. package/src/editor/core/draw/frame/Header.ts +158 -0
  263. package/src/editor/core/draw/frame/LineNumber.ts +43 -0
  264. package/src/editor/core/draw/frame/Margin.ts +53 -0
  265. package/src/editor/core/draw/frame/PageBorder.ts +47 -0
  266. package/src/editor/core/draw/frame/PageNumber.ts +88 -0
  267. package/src/editor/core/draw/frame/Placeholder.ts +114 -0
  268. package/src/editor/core/draw/frame/Watermark.ts +188 -0
  269. package/src/editor/core/draw/graffiti/Graffiti.ts +125 -0
  270. package/src/editor/core/draw/interactive/Area.ts +312 -0
  271. package/src/editor/core/draw/interactive/Group.ts +198 -0
  272. package/src/editor/core/draw/interactive/Search.ts +527 -0
  273. package/src/editor/core/draw/particle/CheckboxParticle.ts +111 -0
  274. package/src/editor/core/draw/particle/HyperlinkParticle.ts +86 -0
  275. package/src/editor/core/draw/particle/ImageParticle.ts +280 -0
  276. package/src/editor/core/draw/particle/LabelParticle.ts +79 -0
  277. package/src/editor/core/draw/particle/LineBreakParticle.ts +55 -0
  278. package/src/editor/core/draw/particle/ListParticle.ts +255 -0
  279. package/src/editor/core/draw/particle/PageBreakParticle.ts +54 -0
  280. package/src/editor/core/draw/particle/RadioParticle.ts +99 -0
  281. package/src/editor/core/draw/particle/SeparatorParticle.ts +37 -0
  282. package/src/editor/core/draw/particle/SubscriptParticle.ts +23 -0
  283. package/src/editor/core/draw/particle/SuperscriptParticle.ts +23 -0
  284. package/src/editor/core/draw/particle/TextParticle.ts +174 -0
  285. package/src/editor/core/draw/particle/WhiteSpaceParticle.ts +32 -0
  286. package/src/editor/core/draw/particle/block/BlockParticle.ts +76 -0
  287. package/src/editor/core/draw/particle/block/modules/BaseBlock.ts +280 -0
  288. package/src/editor/core/draw/particle/block/modules/IFrameBlock.ts +47 -0
  289. package/src/editor/core/draw/particle/block/modules/VideoBlock.ts +61 -0
  290. package/src/editor/core/draw/particle/date/DateParticle.ts +111 -0
  291. package/src/editor/core/draw/particle/date/DatePicker.ts +577 -0
  292. package/src/editor/core/draw/particle/latex/LaTexParticle.ts +43 -0
  293. package/src/editor/core/draw/particle/latex/utils/LaTexUtils.ts +1196 -0
  294. package/src/editor/core/draw/particle/latex/utils/hershey.ts +1632 -0
  295. package/src/editor/core/draw/particle/latex/utils/symbols.ts +318 -0
  296. package/src/editor/core/draw/particle/previewer/Previewer.ts +582 -0
  297. package/src/editor/core/draw/particle/table/TableOperate.ts +988 -0
  298. package/src/editor/core/draw/particle/table/TableParticle.ts +558 -0
  299. package/src/editor/core/draw/particle/table/TableTool.ts +551 -0
  300. package/src/editor/core/draw/richtext/AbstractRichText.ts +59 -0
  301. package/src/editor/core/draw/richtext/Highlight.ts +24 -0
  302. package/src/editor/core/draw/richtext/Strikeout.ts +28 -0
  303. package/src/editor/core/draw/richtext/Underline.ts +106 -0
  304. package/src/editor/core/event/CanvasEvent.ts +215 -0
  305. package/src/editor/core/event/GlobalEvent.ts +173 -0
  306. package/src/editor/core/event/eventbus/EventBus.ts +50 -0
  307. package/src/editor/core/event/handlers/click.ts +234 -0
  308. package/src/editor/core/event/handlers/composition.ts +45 -0
  309. package/src/editor/core/event/handlers/copy.ts +72 -0
  310. package/src/editor/core/event/handlers/cut.ts +47 -0
  311. package/src/editor/core/event/handlers/drag.ts +66 -0
  312. package/src/editor/core/event/handlers/drop.ts +28 -0
  313. package/src/editor/core/event/handlers/input.ts +129 -0
  314. package/src/editor/core/event/handlers/keydown/backspace.ts +161 -0
  315. package/src/editor/core/event/handlers/keydown/delete.ts +119 -0
  316. package/src/editor/core/event/handlers/keydown/end.ts +69 -0
  317. package/src/editor/core/event/handlers/keydown/enter.ts +126 -0
  318. package/src/editor/core/event/handlers/keydown/home.ts +69 -0
  319. package/src/editor/core/event/handlers/keydown/index.ts +85 -0
  320. package/src/editor/core/event/handlers/keydown/left.ts +162 -0
  321. package/src/editor/core/event/handlers/keydown/right.ts +178 -0
  322. package/src/editor/core/event/handlers/keydown/tab.ts +41 -0
  323. package/src/editor/core/event/handlers/keydown/updown.ts +342 -0
  324. package/src/editor/core/event/handlers/mousedown.ts +262 -0
  325. package/src/editor/core/event/handlers/mouseleave.ts +14 -0
  326. package/src/editor/core/event/handlers/mousemove.ts +133 -0
  327. package/src/editor/core/event/handlers/mouseup.ts +341 -0
  328. package/src/editor/core/event/handlers/paste.ts +231 -0
  329. package/src/editor/core/history/HistoryManager.ts +61 -0
  330. package/src/editor/core/i18n/I18n.ts +51 -0
  331. package/src/editor/core/i18n/lang/en.json +92 -0
  332. package/src/editor/core/i18n/lang/zh-CN.json +92 -0
  333. package/src/editor/core/listener/Listener.ts +41 -0
  334. package/src/editor/core/observer/ImageObserver.ts +19 -0
  335. package/src/editor/core/observer/MouseObserver.ts +56 -0
  336. package/src/editor/core/observer/ScrollObserver.ts +88 -0
  337. package/src/editor/core/observer/SelectionObserver.ts +143 -0
  338. package/src/editor/core/override/Override.ts +14 -0
  339. package/src/editor/core/plugin/Plugin.ts +17 -0
  340. package/src/editor/core/position/Position.ts +870 -0
  341. package/src/editor/core/range/RangeManager.ts +723 -0
  342. package/src/editor/core/register/Register.ts +28 -0
  343. package/src/editor/core/shortcut/Shortcut.ts +80 -0
  344. package/src/editor/core/shortcut/keys/listKeys.ts +22 -0
  345. package/src/editor/core/shortcut/keys/richtextKeys.ts +102 -0
  346. package/src/editor/core/shortcut/keys/titleKeys.ts +62 -0
  347. package/src/editor/core/worker/WorkerManager.ts +96 -0
  348. package/src/editor/core/worker/works/catalog.ts +189 -0
  349. package/src/editor/core/worker/works/group.ts +34 -0
  350. package/src/editor/core/worker/works/value.ts +32 -0
  351. package/src/editor/core/worker/works/wordCount.ts +132 -0
  352. package/src/editor/core/zone/Zone.ts +183 -0
  353. package/src/editor/core/zone/ZoneTip.ts +108 -0
  354. package/src/editor/dataset/constant/Background.ts +10 -0
  355. package/src/editor/dataset/constant/Badge.ts +6 -0
  356. package/src/editor/dataset/constant/Checkbox.ts +12 -0
  357. package/src/editor/dataset/constant/Common.ts +44 -0
  358. package/src/editor/dataset/constant/ContextMenu.ts +61 -0
  359. package/src/editor/dataset/constant/Control.ts +14 -0
  360. package/src/editor/dataset/constant/Cursor.ts +11 -0
  361. package/src/editor/dataset/constant/Editor.ts +19 -0
  362. package/src/editor/dataset/constant/Element.ts +173 -0
  363. package/src/editor/dataset/constant/Footer.ts +10 -0
  364. package/src/editor/dataset/constant/Graffiti.ts +6 -0
  365. package/src/editor/dataset/constant/Group.ts +10 -0
  366. package/src/editor/dataset/constant/Header.ts +10 -0
  367. package/src/editor/dataset/constant/ImgCaption.ts +8 -0
  368. package/src/editor/dataset/constant/Label.ts +8 -0
  369. package/src/editor/dataset/constant/LineBreak.ts +7 -0
  370. package/src/editor/dataset/constant/LineNumber.ts +11 -0
  371. package/src/editor/dataset/constant/List.ts +26 -0
  372. package/src/editor/dataset/constant/PageBorder.ts +8 -0
  373. package/src/editor/dataset/constant/PageBreak.ts +7 -0
  374. package/src/editor/dataset/constant/PageNumber.ts +22 -0
  375. package/src/editor/dataset/constant/Placeholder.ts +9 -0
  376. package/src/editor/dataset/constant/Radio.ts +12 -0
  377. package/src/editor/dataset/constant/Regular.ts +23 -0
  378. package/src/editor/dataset/constant/Separator.ts +6 -0
  379. package/src/editor/dataset/constant/Shortcut.ts +3 -0
  380. package/src/editor/dataset/constant/Table.ts +9 -0
  381. package/src/editor/dataset/constant/Title.ts +38 -0
  382. package/src/editor/dataset/constant/Watermark.ts +17 -0
  383. package/src/editor/dataset/constant/WhiteSpace.ts +7 -0
  384. package/src/editor/dataset/constant/Zone.ts +5 -0
  385. package/src/editor/dataset/enum/Area.ts +5 -0
  386. package/src/editor/dataset/enum/Background.ts +11 -0
  387. package/src/editor/dataset/enum/Block.ts +4 -0
  388. package/src/editor/dataset/enum/Common.ts +30 -0
  389. package/src/editor/dataset/enum/Control.ts +39 -0
  390. package/src/editor/dataset/enum/Editor.ts +51 -0
  391. package/src/editor/dataset/enum/Element.ts +21 -0
  392. package/src/editor/dataset/enum/ElementStyle.ts +12 -0
  393. package/src/editor/dataset/enum/Event.ts +5 -0
  394. package/src/editor/dataset/enum/KeyMap.ts +85 -0
  395. package/src/editor/dataset/enum/LineNumber.ts +4 -0
  396. package/src/editor/dataset/enum/List.ts +23 -0
  397. package/src/editor/dataset/enum/Observer.ts +6 -0
  398. package/src/editor/dataset/enum/Row.ts +7 -0
  399. package/src/editor/dataset/enum/Text.ts +13 -0
  400. package/src/editor/dataset/enum/Title.ts +8 -0
  401. package/src/editor/dataset/enum/VerticalAlign.ts +5 -0
  402. package/src/editor/dataset/enum/Watermark.ts +4 -0
  403. package/src/editor/dataset/enum/table/Table.ts +19 -0
  404. package/src/editor/dataset/enum/table/TableTool.ts +4 -0
  405. package/src/editor/index.ts +241 -0
  406. package/src/editor/interface/Area.ts +68 -0
  407. package/src/editor/interface/Background.ts +9 -0
  408. package/src/editor/interface/Badge.ts +17 -0
  409. package/src/editor/interface/Block.ts +18 -0
  410. package/src/editor/interface/Catalog.ts +11 -0
  411. package/src/editor/interface/Checkbox.ts +17 -0
  412. package/src/editor/interface/Command.ts +3 -0
  413. package/src/editor/interface/Common.ts +43 -0
  414. package/src/editor/interface/Control.ts +250 -0
  415. package/src/editor/interface/Cursor.ts +7 -0
  416. package/src/editor/interface/Draw.ts +86 -0
  417. package/src/editor/interface/Editor.ts +172 -0
  418. package/src/editor/interface/Element.ts +273 -0
  419. package/src/editor/interface/Event.ts +27 -0
  420. package/src/editor/interface/EventBus.ts +46 -0
  421. package/src/editor/interface/Footer.ts +9 -0
  422. package/src/editor/interface/Graffiti.ts +15 -0
  423. package/src/editor/interface/Group.ts +8 -0
  424. package/src/editor/interface/Header.ts +9 -0
  425. package/src/editor/interface/Label.ts +8 -0
  426. package/src/editor/interface/LineBreak.ts +5 -0
  427. package/src/editor/interface/LineNumber.ts +10 -0
  428. package/src/editor/interface/Listener.ts +88 -0
  429. package/src/editor/interface/Margin.ts +1 -0
  430. package/src/editor/interface/PageBorder.ts +8 -0
  431. package/src/editor/interface/PageBreak.ts +5 -0
  432. package/src/editor/interface/PageNumber.ts +16 -0
  433. package/src/editor/interface/Placeholder.ts +7 -0
  434. package/src/editor/interface/Plugin.ts +8 -0
  435. package/src/editor/interface/Position.ts +113 -0
  436. package/src/editor/interface/Previewer.ts +15 -0
  437. package/src/editor/interface/Radio.ts +17 -0
  438. package/src/editor/interface/Range.ts +61 -0
  439. package/src/editor/interface/Row.ts +25 -0
  440. package/src/editor/interface/Search.ts +36 -0
  441. package/src/editor/interface/Separator.ts +4 -0
  442. package/src/editor/interface/Text.ts +15 -0
  443. package/src/editor/interface/Title.ts +32 -0
  444. package/src/editor/interface/Watermark.ts +16 -0
  445. package/src/editor/interface/WhiteSpace.ts +5 -0
  446. package/src/editor/interface/Zone.ts +3 -0
  447. package/src/editor/interface/contextmenu/ContextMenu.ts +76 -0
  448. package/src/editor/interface/i18n/I18n.ts +7 -0
  449. package/src/editor/interface/shortcut/Shortcut.ts +14 -0
  450. package/src/editor/interface/table/Colgroup.ts +4 -0
  451. package/src/editor/interface/table/Table.ts +9 -0
  452. package/src/editor/interface/table/Td.ts +36 -0
  453. package/src/editor/interface/table/Tr.ts +11 -0
  454. package/src/editor/types/index.d.ts +5 -0
  455. package/src/editor/utils/clipboard.ts +94 -0
  456. package/src/editor/utils/element.ts +1877 -0
  457. package/src/editor/utils/hotkey.ts +5 -0
  458. package/src/editor/utils/index.ts +445 -0
  459. package/src/editor/utils/option.ts +253 -0
  460. package/src/editor/utils/paragraph.ts +28 -0
  461. package/src/editor/utils/print.ts +99 -0
  462. package/src/editor/utils/ua.ts +13 -0
  463. package/src/main.ts +2053 -0
  464. package/src/mock.ts +611 -0
  465. package/src/plugins/copy/index.ts +30 -0
  466. package/src/plugins/markdown/index.ts +118 -0
  467. package/src/style.css +1079 -0
  468. package/src/utils/index.ts +45 -0
  469. package/src/utils/prism.ts +89 -0
  470. package/src/vite-env.d.ts +1 -0
  471. package/tsconfig.json +25 -0
  472. package/vite.config.ts +46 -0
@@ -0,0 +1,250 @@
1
+ import { FlexDirection, LocationPosition } from '../dataset/enum/Common'
2
+ import {
3
+ ControlType,
4
+ ControlIndentation,
5
+ ControlState
6
+ } from '../dataset/enum/Control'
7
+ import { EditorZone } from '../dataset/enum/Editor'
8
+ import { MoveDirection } from '../dataset/enum/Observer'
9
+ import { RowFlex } from '../dataset/enum/Row'
10
+ import { IDrawOption } from './Draw'
11
+ import { IElement } from './Element'
12
+ import { IPositionContext } from './Position'
13
+ import { IRange } from './Range'
14
+ import { IRow, IRowElement } from './Row'
15
+
16
+ export interface IValueSet {
17
+ value: string
18
+ code: string
19
+ }
20
+
21
+ export interface IControlSelect {
22
+ code: string | null
23
+ valueSets: IValueSet[]
24
+ isMultiSelect?: boolean
25
+ multiSelectDelimiter?: string
26
+ selectExclusiveOptions?: {
27
+ inputAble?: boolean
28
+ }
29
+ }
30
+
31
+ export interface IControlCheckbox {
32
+ code: string | null
33
+ min?: number
34
+ max?: number
35
+ flexDirection: FlexDirection
36
+ valueSets: IValueSet[]
37
+ }
38
+
39
+ export interface IControlRadio {
40
+ code: string | null
41
+ flexDirection: FlexDirection
42
+ valueSets: IValueSet[]
43
+ }
44
+
45
+ export interface IControlDate {
46
+ dateFormat?: string
47
+ }
48
+
49
+ export interface IControlNumber {
50
+ numberExclusiveOptions?: {
51
+ calculatorDisabled?: boolean
52
+ }
53
+ }
54
+
55
+ export interface IControlHighlightRule {
56
+ keyword: string
57
+ alpha?: number
58
+ backgroundColor?: string
59
+ }
60
+
61
+ export interface IControlHighlight {
62
+ ruleList: IControlHighlightRule[]
63
+ id?: string
64
+ conceptId?: string
65
+ }
66
+
67
+ export interface IControlRule {
68
+ deletable?: boolean
69
+ disabled?: boolean
70
+ pasteDisabled?: boolean
71
+ hide?: boolean
72
+ }
73
+
74
+ export interface IControlBasic {
75
+ type: ControlType
76
+ value: IElement[] | null
77
+ placeholder?: string
78
+ conceptId?: string
79
+ groupId?: string
80
+ prefix?: string
81
+ postfix?: string
82
+ minWidth?: number
83
+ underline?: boolean
84
+ border?: boolean
85
+ extension?: unknown
86
+ indentation?: ControlIndentation
87
+ rowFlex?: RowFlex
88
+ preText?: string
89
+ postText?: string
90
+ }
91
+
92
+ export interface IControlStyle {
93
+ font?: string
94
+ size?: number
95
+ bold?: boolean
96
+ highlight?: string
97
+ italic?: boolean
98
+ strikeout?: boolean
99
+ }
100
+
101
+ export type IControl = IControlBasic &
102
+ IControlRule &
103
+ Partial<IControlStyle> &
104
+ Partial<IControlSelect> &
105
+ Partial<IControlCheckbox> &
106
+ Partial<IControlRadio> &
107
+ Partial<IControlDate> &
108
+ Partial<IControlNumber>
109
+
110
+ export interface IControlOption {
111
+ placeholderColor?: string
112
+ bracketColor?: string
113
+ prefix?: string
114
+ postfix?: string
115
+ borderWidth?: number
116
+ borderColor?: string
117
+ activeBackgroundColor?: string
118
+ disabledBackgroundColor?: string
119
+ existValueBackgroundColor?: string
120
+ noValueBackgroundColor?: string
121
+ }
122
+
123
+ export interface IControlInitOption {
124
+ index: number
125
+ isTable?: boolean
126
+ trIndex?: number
127
+ tdIndex?: number
128
+ tdValueIndex?: number
129
+ }
130
+
131
+ export interface IControlInitResult {
132
+ newIndex: number
133
+ }
134
+
135
+ export interface IControlInstance {
136
+ setElement(element: IElement): void
137
+ getElement(): IElement
138
+ getValue(context?: IControlContext): IElement[]
139
+ setValue(
140
+ data: IElement[],
141
+ context?: IControlContext,
142
+ options?: IControlRuleOption
143
+ ): number
144
+ keydown(evt: KeyboardEvent): number | null
145
+ cut(): number
146
+ }
147
+
148
+ export interface IControlContext {
149
+ range?: IRange
150
+ elementList?: IElement[]
151
+ }
152
+
153
+ export interface IControlRuleOption {
154
+ isIgnoreDisabledRule?: boolean // 忽略禁用校验规则
155
+ isIgnoreDeletedRule?: boolean // 忽略删除校验规则
156
+ isAddPlaceholder?: boolean // 是否添加占位符
157
+ }
158
+
159
+ export interface IGetControlValueOption {
160
+ id?: string
161
+ groupId?: string
162
+ conceptId?: string
163
+ areaId?: string
164
+ }
165
+
166
+ export type IGetControlValueResult = (Omit<IControl, 'value'> & {
167
+ value: string | null
168
+ innerText: string | null
169
+ zone: EditorZone
170
+ elementList?: IElement[]
171
+ })[]
172
+
173
+ export interface ISetControlValueOption {
174
+ id?: string
175
+ groupId?: string
176
+ conceptId?: string
177
+ areaId?: string
178
+ value: string | IElement[] | null
179
+ isSubmitHistory?: boolean
180
+ }
181
+
182
+ export interface ISetControlExtensionOption {
183
+ id?: string
184
+ groupId?: string
185
+ conceptId?: string
186
+ areaId?: string
187
+ extension: unknown
188
+ }
189
+
190
+ export type ISetControlHighlightOption = IControlHighlight[]
191
+
192
+ export type ISetControlProperties = {
193
+ id?: string
194
+ groupId?: string
195
+ conceptId?: string
196
+ areaId?: string
197
+ properties: Partial<Omit<IControl, 'value'>>
198
+ isSubmitHistory?: boolean
199
+ }
200
+
201
+ export type IRepaintControlOption = Pick<
202
+ IDrawOption,
203
+ 'curIndex' | 'isCompute' | 'isSubmitHistory' | 'isSetCursor'
204
+ >
205
+
206
+ export interface IControlChangeOption {
207
+ context?: IControlContext
208
+ controlElement?: IElement
209
+ controlValue?: IElement[]
210
+ }
211
+
212
+ export interface INextControlContext {
213
+ positionContext: IPositionContext
214
+ nextIndex: number
215
+ }
216
+
217
+ export interface IInitNextControlOption {
218
+ direction?: MoveDirection
219
+ }
220
+
221
+ export interface ILocationControlOption {
222
+ position: LocationPosition
223
+ }
224
+
225
+ export interface ISetControlRowFlexOption {
226
+ row: IRow
227
+ rowElement: IRowElement
228
+ availableWidth: number
229
+ controlRealWidth: number
230
+ }
231
+
232
+ export interface IControlChangeResult {
233
+ state: ControlState
234
+ control: IControl
235
+ controlId: string
236
+ }
237
+
238
+ export interface IControlContentChangeResult {
239
+ control: IControl
240
+ controlId: string
241
+ }
242
+
243
+ export interface IDestroyControlOption {
244
+ isEmitEvent?: boolean
245
+ }
246
+
247
+ export interface IRemoveControlOption {
248
+ id?: string
249
+ conceptId?: string
250
+ }
@@ -0,0 +1,7 @@
1
+ export interface ICursorOption {
2
+ width?: number
3
+ color?: string
4
+ dragWidth?: number
5
+ dragColor?: string
6
+ dragFloatImageDisabled?: boolean
7
+ }
@@ -0,0 +1,86 @@
1
+ import { ImageDisplay } from '../dataset/enum/Common'
2
+ import { EditorMode, EditorZone } from '../dataset/enum/Editor'
3
+ import { IElement, IElementPosition } from './Element'
4
+ import { IRow } from './Row'
5
+
6
+ export interface IDrawOption {
7
+ curIndex?: number
8
+ isSetCursor?: boolean
9
+ isSubmitHistory?: boolean
10
+ isCompute?: boolean
11
+ isLazy?: boolean
12
+ isInit?: boolean
13
+ isSourceHistory?: boolean
14
+ isFirstRender?: boolean
15
+ }
16
+
17
+ export interface IForceUpdateOption {
18
+ isSubmitHistory?: boolean
19
+ }
20
+
21
+ export interface IDrawImagePayload {
22
+ id?: string
23
+ conceptId?: string
24
+ width: number
25
+ height: number
26
+ value: string
27
+ imgDisplay?: ImageDisplay
28
+ extension?: unknown
29
+ }
30
+
31
+ export interface IDrawRowPayload {
32
+ elementList: IElement[]
33
+ positionList: IElementPosition[]
34
+ rowList: IRow[]
35
+ pageNo: number
36
+ startIndex: number
37
+ innerWidth: number
38
+ zone?: EditorZone
39
+ isDrawLineBreak?: boolean
40
+ isDrawWhiteSpace?: boolean
41
+ }
42
+
43
+ export interface IDrawFloatPayload {
44
+ pageNo: number
45
+ imgDisplays: ImageDisplay[]
46
+ }
47
+
48
+ export interface IDrawPagePayload {
49
+ elementList: IElement[]
50
+ positionList: IElementPosition[]
51
+ rowList: IRow[]
52
+ pageNo: number
53
+ }
54
+
55
+ export interface IPainterOption {
56
+ isDblclick: boolean
57
+ }
58
+
59
+ export interface IGetValueOption {
60
+ pageNo?: number
61
+ extraPickAttrs?: Array<keyof IElement>
62
+ }
63
+
64
+ export type IGetOriginValueOption = Omit<IGetValueOption, 'extraPickAttrs'>
65
+
66
+ export interface IAppendElementListOption {
67
+ isPrepend?: boolean
68
+ isSubmitHistory?: boolean
69
+ }
70
+
71
+ export interface IGetImageOption {
72
+ pixelRatio?: number
73
+ mode?: EditorMode
74
+ }
75
+
76
+ export interface IComputeRowListPayload {
77
+ innerWidth: number
78
+ elementList: IElement[]
79
+ startX?: number
80
+ startY?: number
81
+ isFromTable?: boolean
82
+ isPagingMode?: boolean
83
+ pageHeight?: number
84
+ mainOuterHeight?: number
85
+ surroundElementList?: IElement[]
86
+ }
@@ -0,0 +1,172 @@
1
+ import {
2
+ EditorMode,
3
+ PageMode,
4
+ PaperDirection,
5
+ RenderMode,
6
+ WordBreak
7
+ } from '../dataset/enum/Editor'
8
+ import { IBackgroundOption } from './Background'
9
+ import { ICheckboxOption } from './Checkbox'
10
+ import { IRadioOption } from './Radio'
11
+ import { IControlOption } from './Control'
12
+ import { ICursorOption } from './Cursor'
13
+ import { IFooter } from './Footer'
14
+ import { IGroup } from './Group'
15
+ import { IHeader } from './Header'
16
+ import { ILabelOption } from './Label'
17
+ import { IImgCaptionOption, IListOption } from './Element'
18
+ import { ILineBreakOption } from './LineBreak'
19
+ import { IMargin } from './Margin'
20
+ import { IPageBreak } from './PageBreak'
21
+ import { IPageNumber } from './PageNumber'
22
+ import { IPlaceholder } from './Placeholder'
23
+ import { ITitleOption } from './Title'
24
+ import { IWatermark } from './Watermark'
25
+ import { IZoneOption } from './Zone'
26
+ import { ISeparatorOption } from './Separator'
27
+ import { ITableOption } from './table/Table'
28
+ import { ILineNumberOption } from './LineNumber'
29
+ import { IPageBorderOption } from './PageBorder'
30
+ import { IBadgeOption } from './Badge'
31
+ import { IElement } from './Element'
32
+ import { LocationPosition } from '../dataset/enum/Common'
33
+ import { IRange } from './Range'
34
+ import { IGraffitiData, IGraffitiOption } from './Graffiti'
35
+ import { IWhiteSpaceOption } from './WhiteSpace'
36
+
37
+ export interface IEditorData {
38
+ header?: IElement[]
39
+ main: IElement[]
40
+ footer?: IElement[]
41
+ graffiti?: IGraffitiData[]
42
+ }
43
+
44
+ export interface IEditorOption {
45
+ mode?: EditorMode
46
+ locale?: string
47
+ defaultType?: string
48
+ defaultColor?: string
49
+ defaultFont?: string
50
+ defaultSize?: number
51
+ minSize?: number
52
+ maxSize?: number
53
+ defaultBasicRowMarginHeight?: number
54
+ defaultRowMargin?: number
55
+ defaultTabWidth?: number
56
+ width?: number
57
+ height?: number
58
+ scale?: number
59
+ pageGap?: number
60
+ underlineColor?: string
61
+ strikeoutColor?: string
62
+ rangeColor?: string
63
+ rangeAlpha?: number
64
+ rangeMinWidth?: number
65
+ searchMatchColor?: string
66
+ searchNavigateMatchColor?: string
67
+ searchMatchAlpha?: number
68
+ highlightAlpha?: number
69
+ highlightMarginHeight?: number
70
+ resizerColor?: string
71
+ resizerSize?: number
72
+ marginIndicatorSize?: number
73
+ marginIndicatorColor?: string
74
+ margins?: IMargin
75
+ pageMode?: PageMode
76
+ renderMode?: RenderMode
77
+ defaultHyperlinkColor?: string
78
+ paperDirection?: PaperDirection
79
+ inactiveAlpha?: number
80
+ historyMaxRecordCount?: number
81
+ printPixelRatio?: number
82
+ maskMargin?: IMargin
83
+ letterClass?: string[]
84
+ contextMenuDisableKeys?: string[]
85
+ shortcutDisableKeys?: string[]
86
+ scrollContainerSelector?: string
87
+ pageOuterSelectionDisable?: boolean
88
+ wordBreak?: WordBreak
89
+ table?: ITableOption
90
+ header?: IHeader
91
+ footer?: IFooter
92
+ pageNumber?: IPageNumber
93
+ watermark?: IWatermark
94
+ control?: IControlOption
95
+ checkbox?: ICheckboxOption
96
+ radio?: IRadioOption
97
+ cursor?: ICursorOption
98
+ title?: ITitleOption
99
+ placeholder?: IPlaceholder
100
+ group?: IGroup
101
+ pageBreak?: IPageBreak
102
+ zone?: IZoneOption
103
+ background?: IBackgroundOption
104
+ lineBreak?: ILineBreakOption
105
+ whiteSpace?: IWhiteSpaceOption
106
+ separator?: ISeparatorOption
107
+ lineNumber?: ILineNumberOption
108
+ pageBorder?: IPageBorderOption
109
+ badge?: IBadgeOption
110
+ modeRule?: IModeRule
111
+ graffiti?: IGraffitiOption
112
+ label?: ILabelOption
113
+ imgCaption?: IImgCaptionOption
114
+ list?: IListOption
115
+ }
116
+
117
+ export interface IEditorResult {
118
+ version: string
119
+ data: IEditorData
120
+ options: IEditorOption
121
+ }
122
+
123
+ export interface IEditorHTML {
124
+ header: string
125
+ main: string
126
+ footer: string
127
+ }
128
+
129
+ export type IEditorText = IEditorHTML
130
+
131
+ export type IUpdateOption = Omit<
132
+ IEditorOption,
133
+ | 'mode'
134
+ | 'width'
135
+ | 'height'
136
+ | 'scale'
137
+ | 'pageGap'
138
+ | 'pageMode'
139
+ | 'paperDirection'
140
+ | 'historyMaxRecordCount'
141
+ | 'scrollContainerSelector'
142
+ >
143
+
144
+ export interface ISetValueOption {
145
+ isSetCursor?: boolean
146
+ }
147
+
148
+ export interface IFocusOption {
149
+ rowNo?: number
150
+ range?: IRange
151
+ position?: LocationPosition
152
+ isMoveCursorToVisible?: boolean
153
+ }
154
+
155
+ export interface IPrintModeRule {
156
+ imagePreviewerDisabled?: boolean
157
+ backgroundDisabled?: boolean
158
+ }
159
+
160
+ export interface IReadonlyModeRule {
161
+ imagePreviewerDisabled?: boolean
162
+ }
163
+
164
+ export interface IFormModeRule {
165
+ controlDeletableDisabled?: boolean
166
+ }
167
+
168
+ export interface IModeRule {
169
+ [EditorMode.PRINT]?: IPrintModeRule
170
+ [EditorMode.READONLY]?: IReadonlyModeRule
171
+ [EditorMode.FORM]?: IFormModeRule
172
+ }