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,111 @@
1
+ # 国际化
2
+
3
+ ## 使用方式
4
+
5
+ ```javascript
6
+ import Editor from "@hufe921/canvas-editor"
7
+
8
+ const instance = new Editor(container, <IElement[]>data, options)
9
+
10
+ // 注册
11
+ instance.register.langMap(locale: string, lang: ILang)
12
+
13
+ // 设置
14
+ instance.command.executeSetLocale(locale)
15
+ ```
16
+
17
+ ## ILang
18
+
19
+ ```typescript
20
+ interface ILang {
21
+ contextmenu: {
22
+ global: {
23
+ cut: string
24
+ copy: string
25
+ paste: string
26
+ selectAll: string
27
+ print: string
28
+ }
29
+ control: {
30
+ delete: string
31
+ }
32
+ hyperlink: {
33
+ delete: string
34
+ cancel: string
35
+ edit: string
36
+ }
37
+ image: {
38
+ change: string
39
+ saveAs: string
40
+ textWrap: string
41
+ textWrapType: {
42
+ embed: string
43
+ upDown: string
44
+ surround: string
45
+ floatTop: string
46
+ floatBottom: string
47
+ }
48
+ table: {
49
+ insertRowCol: string
50
+ insertTopRow: string
51
+ insertBottomRow: string
52
+ insertLeftCol: string
53
+ insertRightCol: string
54
+ deleteRowCol: string
55
+ deleteRow: string
56
+ deleteCol: string
57
+ deleteTable: string
58
+ mergeCell: string
59
+ mergeCancelCell: string
60
+ verticalAlign: string
61
+ verticalAlignTop: string
62
+ verticalAlignMiddle: string
63
+ verticalAlignBottom: string
64
+ border: string
65
+ borderAll: string
66
+ borderEmpty: string
67
+ borderDash: string
68
+ borderExternal: string
69
+ borderInternal: string
70
+ borderTd: string
71
+ borderTdTop: string
72
+ borderTdRight: string
73
+ borderTdBottom: string
74
+ borderTdLeft: string
75
+ borderTdForward: string
76
+ borderTdBack: string
77
+ }
78
+ }
79
+ datePicker: {
80
+ now: string
81
+ confirm: string
82
+ return: string
83
+ timeSelect: string
84
+ weeks: {
85
+ sun: string
86
+ mon: string
87
+ tue: string
88
+ wed: string
89
+ thu: string
90
+ fri: string
91
+ sat: string
92
+ }
93
+ year: string
94
+ month: string
95
+ hour: string
96
+ minute: string
97
+ second: string
98
+ }
99
+ frame: {
100
+ header: string
101
+ footer: string
102
+ }
103
+ pageBreak: {
104
+ displayName: string
105
+ }
106
+ zone: {
107
+ headerTip: string
108
+ footerTip: string
109
+ }
110
+ }
111
+ ```
@@ -0,0 +1,126 @@
1
+ # 事件监听(listener)
2
+
3
+ ::: warning
4
+ listener 只能响应一个方法,后续不再添加新监听方法,推荐使用 eventBus 进行事件监听。
5
+ :::
6
+
7
+ ## 使用方式
8
+
9
+ ```javascript
10
+ import Editor from "@hufe921/canvas-editor"
11
+
12
+ const instance = new Editor(container, <IElement[]>data, options)
13
+ instance.listener.eventName = ()=>{}
14
+ ```
15
+
16
+ ## rangeStyleChange
17
+
18
+ 功能:选区样式发生改变
19
+
20
+ 用法:
21
+
22
+ ```javascript
23
+ instance.listener.rangeStyleChange = (payload: IRangeStyle) => {}
24
+ ```
25
+
26
+ ## visiblePageNoListChange
27
+
28
+ 功能:可见页发生改变
29
+
30
+ 用法:
31
+
32
+ ```javascript
33
+ instance.listener.visiblePageNoListChange = (payload: number[]) => {}
34
+ ```
35
+
36
+ ## intersectionPageNoChange
37
+
38
+ 功能:当前页发生改变
39
+
40
+ 用法:
41
+
42
+ ```javascript
43
+ instance.listener.intersectionPageNoChange = (payload: number) => {}
44
+ ```
45
+
46
+ ## pageSizeChange
47
+
48
+ 功能:当前页数发生改变
49
+
50
+ 用法:
51
+
52
+ ```javascript
53
+ instance.listener.pageSizeChange = (payload: number) => {}
54
+ ```
55
+
56
+ ## pageScaleChange
57
+
58
+ 功能:当前页面缩放比例发生改变
59
+
60
+ 用法:
61
+
62
+ ```javascript
63
+ instance.listener.pageScaleChange = (payload: number) => {}
64
+ ```
65
+
66
+ ## contentChange
67
+
68
+ 功能:当前内容发生改变
69
+
70
+ 用法:
71
+
72
+ ```javascript
73
+ instance.listener.contentChange = () => {}
74
+ ```
75
+
76
+ ## controlChange
77
+
78
+ 功能:当前光标所在控件发生改变
79
+
80
+ 用法:
81
+
82
+ ```javascript
83
+ instance.listener.controlChange = (payload: IControlChangeResult) => {}
84
+ ```
85
+
86
+ ## controlContentChange
87
+
88
+ 功能:控件内容发生改变
89
+
90
+ 用法:
91
+
92
+ ```javascript
93
+ instance.listener.controlContentChange = (
94
+ payload: IControlContentChangeResult
95
+ ) => {}
96
+ ```
97
+
98
+ ## pageModeChange
99
+
100
+ 功能:页面模式发生改变
101
+
102
+ 用法:
103
+
104
+ ```javascript
105
+ instance.listener.pageModeChange = (payload: PageMode) => {}
106
+ ```
107
+
108
+ ## saved
109
+
110
+ 功能:文档执行保存
111
+
112
+ 用法:
113
+
114
+ ```javascript
115
+ instance.listener.saved = (payload: IEditorResult) => {}
116
+ ```
117
+
118
+ ## zoneChange
119
+
120
+ 功能:区域发生改变
121
+
122
+ 用法:
123
+
124
+ ```javascript
125
+ instance.listener.zoneChange = (payload: EditorZone) => {}
126
+ ```
@@ -0,0 +1,214 @@
1
+ # 配置
2
+
3
+ ## 使用方式
4
+
5
+ ```javascript
6
+ import Editor from "@hufe921/canvas-editor"
7
+
8
+ new Editor(container, IEditorData | IElement[], {
9
+ // 配置项
10
+ })
11
+ ```
12
+
13
+ ## 完整配置
14
+
15
+ ```typescript
16
+ interface IEditorOption {
17
+ mode?: EditorMode // 编辑器模式:编辑、清洁(不显示视觉辅助元素。如:分页符)、只读、表单(仅控件内可编辑)、打印(不显示辅助元素、未书写控件及前后括号)、设计模式(不可删除、只读等配置不控制)、涂鸦模式(屏蔽选区、允许长按移动绘制线条)。默认:编辑
18
+ locale?: string // 多语言类型。默认:zhCN
19
+ defaultType?: string // 默认元素类型。默认:TEXT
20
+ defaultColor?: string // 默认字体颜色。默认:#000000
21
+ defaultFont?: string // 默认字体。默认:Microsoft YaHei
22
+ defaultSize?: number // 默认字号。默认:16
23
+ minSize?: number // 最小字号。默认:5
24
+ maxSize?: number // 最大字号。默认:72
25
+ defaultBasicRowMarginHeight?: number // 默认行高。默认:8
26
+ defaultRowMargin?: number // 默认行间距。默认:1
27
+ defaultTabWidth?: number // 默认tab宽度。默认:32
28
+ width?: number // 纸张宽度。默认:794
29
+ height?: number // 纸张高度。默认:1123
30
+ scale?: number // 缩放比例。默认:1
31
+ pageGap?: number // 纸张间隔。默认:20
32
+ underlineColor?: string // 下划线颜色。默认:#000000
33
+ strikeoutColor?: string // 删除线颜色。默认:#FF0000
34
+ rangeColor?: string // 选区颜色。默认:#AECBFA
35
+ rangeAlpha?: number // 选区透明度。默认:0.6
36
+ rangeMinWidth?: number // 选区最小宽度。默认:5
37
+ searchMatchColor?: string // 搜索高亮颜色。默认:#FFFF00
38
+ searchNavigateMatchColor?: string // 搜索导航高亮颜色。默认:#AAD280
39
+ searchMatchAlpha?: number // 搜索高亮透明度。默认:0.6
40
+ highlightAlpha?: number // 高亮元素透明度。默认:0.6
41
+ highlightMarginHeight?: number // 高亮元素边距高度。默认:8
42
+ resizerColor?: string // 图片尺寸器颜色。默认:#4182D9
43
+ resizerSize?: number // 图片尺寸器大小。默认:5
44
+ marginIndicatorSize?: number // 页边距指示器长度。默认:35
45
+ marginIndicatorColor?: string // 页边距指示器颜色。默认:#BABABA
46
+ margins?: IMargin // 页面边距。默认:[100, 120, 100, 120]
47
+ pageMode?: PageMode // 纸张模式:连页、分页。默认:分页
48
+ renderMode?: RenderMode // 渲染模式:极速(多个字组合渲染)、兼容(逐字渲染:避免浏览器字体等环境差异)。默认:极速
49
+ defaultHyperlinkColor?: string // 默认超链接颜色。默认:#0000FF
50
+ table?: ITableOption // 表格配置。{tdPadding?:IPadding; defaultTrMinHeight?:number; defaultColMinWidth?:number}
51
+ header?: IHeader // 页眉信息。{top?:number; maxHeightRadio?:MaxHeightRatio;}
52
+ footer?: IFooter // 页脚信息。{bottom?:number; maxHeightRadio?:MaxHeightRatio;}
53
+ pageNumber?: IPageNumber // 页码信息。{bottom:number; size:number; font:string; color:string; rowFlex:RowFlex; format:string; numberType:NumberType;}
54
+ paperDirection?: PaperDirection // 纸张方向:纵向、横向
55
+ inactiveAlpha?: number // 正文内容失焦时透明度。默认值:0.6
56
+ historyMaxRecordCount?: number // 历史(撤销重做)最大记录次数。默认:100次
57
+ printPixelRatio?: number // 打印像素比率(值越大越清晰,但尺寸越大)。默认:3
58
+ maskMargin?: IMargin // 编辑器上的遮盖边距(如悬浮到编辑器上的菜单栏、底部工具栏)。默认:[0, 0, 0, 0]
59
+ letterClass?: string[] // 排版支持的字母类。默认:a-zA-Z。内置可选择的字母表类:LETTER_CLASS
60
+ contextMenuDisableKeys?: string[] // 禁用的右键菜单。默认:[]
61
+ shortcutDisableKeys?: string[] // 禁用的快捷键。默认:[]
62
+ scrollContainerSelector?: string // 滚动区域选择器。默认:document
63
+ pageOuterSelectionDisable?: boolean // 鼠标移出页面时选区禁用。默认:false
64
+ wordBreak?: WordBreak // 单词与标点断行:BREAK_WORD首行不出现标点&单词不拆分、BREAK_ALL按字符宽度撑满后折行。默认:BREAK_WORD
65
+ watermark?: IWatermark // 水印信息。{data:string; color?:string; opacity?:number; size?:number; font?:string; numberType:NumberType;}
66
+ control?: IControlOption // 控件信息。 {placeholderColor?:string; bracketColor?:string; prefix?:string; postfix?:string; borderWidth?: number; borderColor?: string; activeBackgroundColor?: string; disabledBackgroundColor?: string; existValueBackgroundColor?: string; noValueBackgroundColor?: string;}
67
+ checkbox?: ICheckboxOption // 复选框信息。{width?:number; height?:number; gap?:number; lineWidth?:number; fillStyle?:string; strokeStyle?: string; verticalAlign?: VerticalAlign;}
68
+ radio?: IRadioOption // 单选框信息。{width?:number; height?:number; gap?:number; lineWidth?:number; fillStyle?:string; strokeStyle?: string; verticalAlign?: VerticalAlign;}
69
+ cursor?: ICursorOption // 光标样式。{width?: number; color?: string; dragWidth?: number; dragColor?: string; dragFloatImageDisabled?: boolean;}
70
+ title?: ITitleOption // 标题配置。{ defaultFirstSize?: number; defaultSecondSize?: number; defaultThirdSize?: number defaultFourthSize?: number; defaultFifthSize?: number; defaultSixthSize?: number;}
71
+ placeholder?: IPlaceholder // 编辑器空白占位文本
72
+ group?: IGroup // 成组配置。{opacity?:number; backgroundColor?:string; activeOpacity?:number; activeBackgroundColor?:string; disabled?:boolean; deletable?:boolean;}
73
+ pageBreak?: IPageBreak // 分页符配置。{font?:string; fontSize?:number; lineDash?:number[];}
74
+ zone?: IZoneOption // 编辑器区域配置。{tipDisabled?:boolean;}
75
+ background?: IBackgroundOption // 背景配置。{color?:string; image?:string; size?:BackgroundSize; repeat?:BackgroundRepeat; applyPageNumbers?:number[]}。默认:{color: '#FFFFFF'}
76
+ lineBreak?: ILineBreakOption // 换行符配置。{disabled?:boolean; color?:string; lineWidth?:number;}
77
+ whiteSpace?: IWhiteSpaceOption // 空格符配置。{disabled?:boolean; color?:string; radius?:number;}
78
+ separator?: ISeparatorOption // 分隔符配置。{lineWidth?:number; strokeStyle?:string;}
79
+ lineNumber?: ILineNumberOption // 行号配置。{size?:number; font?:string; color?:string; disabled?:boolean; right?:number}
80
+ pageBorder?: IPageBorderOption // 页面边框配置。{color?:string; lineWidth:number; padding?:IPadding; disabled?:boolean;}
81
+ badge?: IBadgeOption // 徽章配置。{top?:number; left?:number}
82
+ modeRule?: IModeRule // 编辑器模式规则配置。{print:{imagePreviewerDisabled?: boolean;backgroundDisabled?: boolean;}; readonly:{imagePreviewerDisabled?: boolean}; form:{controlDeletableDisabled?: boolean}}
83
+ graffiti?: IGraffitiOption // 涂鸦模式配置。{defaultLineWidth?: number; defaultLineColor?: string}
84
+ label?: ILabelOption // 标签配置。{defaultColor?:string; defaultBackgroundColor?:string; defaultBorderRadius?:number; defaultPadding?:IPadding}
85
+ imgCaption?: IImgCaptionOption // 图片题注配置。{color?:string; font?:string; size?:number; top?:number}
86
+ list?: IListOption // 列表配置。{inheritStyle?:boolean}
87
+ }
88
+ ```
89
+
90
+ ## 表格配置
91
+
92
+ ```typescript
93
+ interface ITableOption {
94
+ tdPadding?: IPadding // 单元格内边距。默认:[0, 5, 5, 5]
95
+ defaultTrMinHeight?: number // 默认表格行最小高度。默认:42
96
+ defaultColMinWidth?: number // 默认表格列最小宽度(整体宽度足够时应用,否则会按比例缩小)。默认:40
97
+ overflow?: boolean // 是否允许表格超出正文区域。默认:true
98
+ }
99
+ ```
100
+
101
+ ## 页眉配置
102
+
103
+ ```typescript
104
+ interface IHeader {
105
+ top?: number // 距离页面顶部大小。默认:30
106
+ inactiveAlpha?: number // 失活时透明度。默认:1
107
+ maxHeightRadio?: MaxHeightRatio // 占页面最大高度比。默认:HALF
108
+ disabled?: boolean // 是否禁用
109
+ editable?: boolean // 禁止编辑标题内容
110
+ }
111
+ ```
112
+
113
+ ## 页脚配置
114
+
115
+ ```typescript
116
+ interface IFooter {
117
+ bottom?: number // 距离页面底部大小。默认:30
118
+ inactiveAlpha?: number // 失活时透明度。默认:1
119
+ maxHeightRadio?: MaxHeightRatio // 占页面最大高度比。默认:HALF
120
+ disabled?: boolean // 是否禁用
121
+ editable?: boolean // 禁止编辑页脚内容
122
+ }
123
+ ```
124
+
125
+ ## 页码配置
126
+
127
+ ```typescript
128
+ interface IPageNumber {
129
+ bottom?: number // 距离页面底部大小。默认:60
130
+ size?: number // 字体大小。默认:12
131
+ font?: string // 字体。默认:Microsoft YaHei
132
+ color?: string // 字体颜色。默认:#000000
133
+ rowFlex?: RowFlex // 行对齐方式。默认:CENTER
134
+ format?: string // 页码格式。默认:{pageNo}。示例:第{pageNo}页/共{pageCount}页
135
+ numberType?: NumberType // 数字类型。默认:ARABIC
136
+ disabled?: boolean // 是否禁用
137
+ startPageNo?: number // 起始页码。默认:1
138
+ fromPageNo?: number // 从第几页开始出现页码。默认:0
139
+ maxPageNo?: number | null // 最大页码(从0开始)。默认:null
140
+ }
141
+ ```
142
+
143
+ ## 水印配置
144
+
145
+ ```typescript
146
+ interface IWatermark {
147
+ data: string // 文本。
148
+ type?: WatermarkType
149
+ width?: number
150
+ height?: number
151
+ color?: string // 颜色。默认:#AEB5C0
152
+ opacity?: number // 透明度。默认:0.3
153
+ size?: number // 字体大小。默认:200
154
+ font?: string // 字体。默认:Microsoft YaHei
155
+ repeat?: boolean // 重复水印。默认:false
156
+ gap?: [horizontal: number, vertical: number] // 水印间距。默认:[10,10]
157
+ numberType: NumberType.ARABIC // 页码格式。默认:{pageNo}。示例:第{pageNo}页/共{pageCount}页
158
+ }
159
+ ```
160
+
161
+ ## 占位文本配置
162
+
163
+ ```typescript
164
+ interface IPlaceholder {
165
+ data: string // 文本。
166
+ color?: string // 颜色。默认:#DCDFE6
167
+ opacity?: number // 透明度。默认:1
168
+ size?: number // 字体大小。默认:16
169
+ font?: string // 字体。默认:Microsoft YaHei
170
+ }
171
+ ```
172
+
173
+ ## 行号配置
174
+
175
+ ```typescript
176
+ interface ILineNumberOption {
177
+ size?: number // 字体大小。默认:12
178
+ font?: string // 字体。默认:Microsoft YaHei
179
+ color?: string // 颜色。默认:#000000
180
+ disabled?: boolean // 是否禁用。默认:true
181
+ right?: number // 距离正文距离。默认:20
182
+ type?: LineNumberType // 编号类型(每页重新编号、连续编号)。默认:连续编号
183
+ }
184
+ ```
185
+
186
+ ## 页面边框配置
187
+
188
+ ```typescript
189
+ interface IPageBorderOption {
190
+ color?: string // 颜色。默认:#000000
191
+ lineWidth?: number // 宽度。默认:1
192
+ padding?: IPadding // 距离正文内边距。默认:[0, 5, 0, 5]
193
+ disabled?: boolean // 是否禁用。默认:true
194
+ }
195
+ ```
196
+
197
+ ## 标签配置
198
+
199
+ ```typescript
200
+ interface ILabelOption {
201
+ defaultColor?: string // 默认标签文本颜色
202
+ defaultBackgroundColor?: string // 默认标签背景颜色
203
+ defaultBorderRadius?: number // 默认标签边框半径
204
+ defaultPadding?: IPadding // 默认标签内边距
205
+ }
206
+ ```
207
+
208
+ ## 列表配置
209
+
210
+ ```typescript
211
+ interface IListOption {
212
+ inheritStyle?: boolean // 是否让列表序号继承文字样式。默认:false
213
+ }
214
+ ```
@@ -0,0 +1,57 @@
1
+ # 重写方法
2
+
3
+ ## 使用方式
4
+
5
+ ```javascript
6
+ import Editor from "@hufe921/canvas-editor"
7
+
8
+ const instance = new Editor(container, <IElement[]>data, options)
9
+
10
+ instance.override.overrideFunction = () => unknown | IOverrideResult
11
+ ```
12
+
13
+ ```typescript
14
+ interface IOverrideResult {
15
+ preventDefault?: boolean // 阻止执行内部默认方法。默认阻止
16
+ }
17
+ ```
18
+
19
+ ## paste
20
+
21
+ 功能:重写粘贴方法
22
+
23
+ 用法:
24
+
25
+ ```javascript
26
+ instance.override.paste = (evt?: ClipboardEvent) => unknown | IOverrideResult
27
+ ```
28
+
29
+ ## pasteImage
30
+
31
+ 功能:重写粘贴图片方法
32
+
33
+ 用法:
34
+
35
+ ```javascript
36
+ instance.override.pasteImage = (file: File | Blob) => unknown | IOverrideResult
37
+ ```
38
+
39
+ ## copy
40
+
41
+ 功能:重写复制方法
42
+
43
+ 用法:
44
+
45
+ ```javascript
46
+ instance.override.copy = () => unknown | IOverrideResult
47
+ ```
48
+
49
+ ## drop
50
+
51
+ 功能:重写拖放方法
52
+
53
+ 用法:
54
+
55
+ ```javascript
56
+ instance.override.drop = (evt: DragEvent) => unknown | IOverrideResult
57
+ ```
@@ -0,0 +1,25 @@
1
+ # 自定义插件
2
+
3
+ ::: tip
4
+ 官方维护插件仓库:https://github.com/Hufe921/canvas-editor-plugin
5
+ :::
6
+
7
+ ## 开发插件
8
+
9
+ ```javascript
10
+ export function myPlugin(editor: Editor, options?: Option) {
11
+ // 1. 修改方法,详见:src/plugins/copy
12
+ editor.command.updateFunction = () => {}
13
+
14
+ // 2. 增加方法,详见:src/plugins/markdown
15
+ editor.command.addFunction = () => {}
16
+
17
+ // 3. 事件监听、快捷键、右键菜单、重写方法等组合处理
18
+ }
19
+ ```
20
+
21
+ ## 使用插件
22
+
23
+ ```javascript
24
+ instance.use(myPlugin, options?: Option)
25
+ ```
@@ -0,0 +1,125 @@
1
+ # 官方插件
2
+
3
+ ::: tip
4
+ 官方维护插件仓库:https://github.com/Hufe921/canvas-editor-plugin
5
+
6
+ 官方维护插件演示地址:https://hufe.club/canvas-editor-plugin
7
+ :::
8
+
9
+ ## 条形码
10
+
11
+ ```javascript
12
+ import Editor from "@hufe921/canvas-editor"
13
+ import barcode1DPlugin from "@hufe921/canvas-editor-plugin-barcode1d"
14
+
15
+ const instance = new Editor()
16
+ instance.use(barcode1DPlugin)
17
+
18
+ instance.executeInsertBarcode1D(
19
+ content: string,
20
+ width: number,
21
+ height: number,
22
+ options?: JsBarcode.Options
23
+ )
24
+ ```
25
+
26
+ ## 二维码
27
+
28
+ ```javascript
29
+ import Editor from "@hufe921/canvas-editor"
30
+ import barcode2DPlugin from "@hufe921/canvas-editor-plugin-barcode2d"
31
+
32
+ const instance = new Editor()
33
+ instance.use(barcode2DPlugin, options?: IBarcode2DOption)
34
+
35
+ instance.executeInsertBarcode2D(
36
+ content: string,
37
+ width: number,
38
+ height: number,
39
+ hints?: Map<EncodeHintType, any>
40
+ )
41
+ ```
42
+
43
+ ## 代码块
44
+
45
+ ```javascript
46
+ import Editor from "@hufe921/canvas-editor"
47
+ import codeblockPlugin from "@hufe921/canvas-editor-plugin-codeblock"
48
+
49
+ const instance = new Editor()
50
+ instance.use(codeblockPlugin)
51
+
52
+ instance.executeInsertCodeblock(content: string)
53
+ ```
54
+
55
+ ## Word
56
+
57
+ ```javascript
58
+ import Editor from '@hufe921/canvas-editor'
59
+ import docxPlugin from '@hufe921/canvas-editor-plugin-docx'
60
+
61
+ const instance = new Editor()
62
+ instance.use(docxPlugin)
63
+
64
+ command.executeImportDocx({
65
+ arrayBuffer: buffer
66
+ })
67
+
68
+ instance.executeExportDocx({
69
+ fileName: string
70
+ })
71
+ ```
72
+
73
+ ## Excel
74
+
75
+ ```javascript
76
+ import Editor from '@hufe921/canvas-editor'
77
+ import excelPlugin from '@hufe921/canvas-editor-plugin-excel'
78
+
79
+ const instance = new Editor()
80
+ instance.use(excelPlugin)
81
+
82
+ command.executeImportExcel({
83
+ arrayBuffer: buffer
84
+ })
85
+ ```
86
+
87
+ ## 悬浮工具
88
+
89
+ ```javascript
90
+ import Editor from '@hufe921/canvas-editor'
91
+ import floatingToolbarPlugin from '@hufe921/canvas-editor-plugin-floating-toolbar'
92
+
93
+ const instance = new Editor()
94
+ instance.use(floatingToolbarPlugin)
95
+ ```
96
+
97
+ ## 流程图
98
+
99
+ ```javascript
100
+ import Editor from '@hufe921/canvas-editor'
101
+ import diagramPlugin from '@hufe921/canvas-editor-plugin-diagram'
102
+
103
+ const instance = new Editor()
104
+ instance.use(diagramPlugin)
105
+
106
+ command.executeLoadDiagram({
107
+ lang?: Lang
108
+ data?: string
109
+ onDestroy?: (message?: any) => void
110
+ })
111
+ ```
112
+
113
+ ## 大小写转换
114
+
115
+ ```javascript
116
+ import Editor from '@hufe921/canvas-editor'
117
+ import casePlugin from '@hufe921/canvas-editor-plugin-case'
118
+
119
+ const instance = new Editor()
120
+ instance.use(casePlugin)
121
+
122
+ command.executeUpperCase()
123
+
124
+ command.executeLowerCase()
125
+ ```