@seafile/seafile-editor 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (478) hide show
  1. package/dist/constants/event-types.js +16 -0
  2. package/dist/constants/hot-keys.js +43 -0
  3. package/dist/containers/article-info/index.js +57 -0
  4. package/dist/containers/custom/get-event-transfer.js +38 -0
  5. package/dist/containers/custom/set-event-transfer.js +36 -0
  6. package/dist/containers/hotkeys-helper/classify-hotkeys.js +39 -0
  7. package/dist/containers/hotkeys-helper/index.js +52 -0
  8. package/dist/containers/loading/index.js +33 -0
  9. package/dist/containers/outline/index.js +80 -0
  10. package/dist/containers/outline/outline-item.js +30 -0
  11. package/dist/editors/plain-markdown-editor/code-mirror.js +84 -0
  12. package/dist/editors/plain-markdown-editor/index.js +149 -0
  13. package/dist/editors/simple-slate-editor /index.js +90 -0
  14. package/dist/editors/simple-slate-editor /with-props-editor.js +18 -0
  15. package/dist/editors/slate-editor/editor-help/index.js +53 -0
  16. package/dist/editors/slate-editor/index.js +102 -0
  17. package/dist/editors/slate-editor/with-props-editor.js +18 -0
  18. package/dist/editors/slate-viewer/index.js +42 -0
  19. package/dist/extension/commons/element-popover/index.js +64 -0
  20. package/dist/extension/commons/index.js +26 -0
  21. package/dist/extension/commons/menu/index.js +21 -0
  22. package/dist/extension/commons/menu/menu-drop-down.js +104 -0
  23. package/dist/extension/commons/menu/menu-group.js +18 -0
  24. package/dist/extension/commons/menu/menu-item.js +54 -0
  25. package/dist/extension/commons/tooltip/index.js +26 -0
  26. package/dist/extension/constants/element-types.js +29 -0
  27. package/dist/extension/constants/index.js +46 -0
  28. package/dist/extension/constants/keyboard.js +33 -0
  29. package/dist/extension/constants/menus-config.js +121 -0
  30. package/dist/extension/core/index.js +38 -0
  31. package/dist/extension/core/queries/index.js +479 -0
  32. package/dist/extension/core/transforms/focus-editor.js +17 -0
  33. package/dist/extension/core/transforms/index.js +49 -0
  34. package/dist/extension/core/transforms/move-children.js +35 -0
  35. package/dist/extension/core/transforms/remove-node-children.js +31 -0
  36. package/dist/extension/core/transforms/replace-node-children.js +22 -0
  37. package/dist/extension/core/utils/index.js +103 -0
  38. package/dist/extension/editor.js +19 -0
  39. package/dist/extension/index.js +48 -0
  40. package/dist/extension/plugins/blockquote/helpers.js +77 -0
  41. package/dist/extension/plugins/blockquote/index.js +18 -0
  42. package/dist/extension/plugins/blockquote/menu/index.js +33 -0
  43. package/dist/extension/plugins/blockquote/plugin.js +70 -0
  44. package/dist/extension/plugins/blockquote/render-elem.js +18 -0
  45. package/dist/extension/plugins/check-list/helper.js +35 -0
  46. package/dist/extension/plugins/check-list/index.js +19 -0
  47. package/dist/extension/plugins/check-list/menu/index.js +40 -0
  48. package/dist/extension/plugins/check-list/plugin.js +50 -0
  49. package/dist/extension/plugins/check-list/render-elem.js +44 -0
  50. package/dist/extension/plugins/clear-format/helpers.js +65 -0
  51. package/dist/extension/plugins/clear-format/menu/index.js +34 -0
  52. package/dist/extension/plugins/code-block/helpers.js +175 -0
  53. package/dist/extension/plugins/code-block/index.js +20 -0
  54. package/dist/extension/plugins/code-block/menu/index.js +37 -0
  55. package/dist/extension/plugins/code-block/plugin.js +270 -0
  56. package/dist/extension/plugins/code-block/render-elem/constant.js +12 -0
  57. package/dist/extension/plugins/code-block/render-elem/index.js +62 -0
  58. package/dist/extension/plugins/code-block/render-elem/language-selector.js +39 -0
  59. package/dist/extension/plugins/formula/helper.js +74 -0
  60. package/dist/extension/plugins/formula/index.js +19 -0
  61. package/dist/extension/plugins/formula/menu/formula-modal.js +97 -0
  62. package/dist/extension/plugins/formula/menu/index.js +71 -0
  63. package/dist/extension/plugins/formula/plugin.js +18 -0
  64. package/dist/extension/plugins/formula/render-elem.js +48 -0
  65. package/dist/extension/plugins/header/helper.js +57 -0
  66. package/dist/extension/plugins/header/index.js +19 -0
  67. package/dist/extension/plugins/header/menu/index.js +110 -0
  68. package/dist/extension/plugins/header/plugin.js +146 -0
  69. package/dist/extension/plugins/header/render-elem.js +34 -0
  70. package/dist/extension/plugins/image/helper.js +62 -0
  71. package/dist/extension/plugins/image/index.js +19 -0
  72. package/dist/extension/plugins/image/menu/image-menu-dialog.js +79 -0
  73. package/dist/extension/plugins/image/menu/image-menu-popover.js +96 -0
  74. package/dist/extension/plugins/image/menu/index.js +58 -0
  75. package/dist/extension/plugins/image/plugin.js +24 -0
  76. package/dist/extension/plugins/image/render-element/image-previewer.js +78 -0
  77. package/dist/extension/plugins/image/render-element/index.js +122 -0
  78. package/dist/extension/plugins/index.js +95 -0
  79. package/dist/extension/plugins/link/helper.js +235 -0
  80. package/dist/extension/plugins/link/index.js +19 -0
  81. package/dist/extension/plugins/link/menu/index.js +98 -0
  82. package/dist/extension/plugins/link/menu/link-modal.js +163 -0
  83. package/dist/extension/plugins/link/plugin.js +104 -0
  84. package/dist/extension/plugins/link/render-elem/index.js +83 -0
  85. package/dist/extension/plugins/link/render-elem/link-popover.js +77 -0
  86. package/dist/extension/plugins/list/constant.js +8 -0
  87. package/dist/extension/plugins/list/helpers.js +78 -0
  88. package/dist/extension/plugins/list/index.js +19 -0
  89. package/dist/extension/plugins/list/menu/index.js +46 -0
  90. package/dist/extension/plugins/list/plugin/index.js +48 -0
  91. package/dist/extension/plugins/list/plugin/insert-break-list.js +28 -0
  92. package/dist/extension/plugins/list/plugin/insert-fragment-list.js +190 -0
  93. package/dist/extension/plugins/list/plugin/normalize-list.js +81 -0
  94. package/dist/extension/plugins/list/plugin/on-tab-handle.js +52 -0
  95. package/dist/extension/plugins/list/queries/index.js +51 -0
  96. package/dist/extension/plugins/list/render-elem/index.js +38 -0
  97. package/dist/extension/plugins/list/transforms/index.js +75 -0
  98. package/dist/extension/plugins/list/transforms/insert-list-item.js +100 -0
  99. package/dist/extension/plugins/list/transforms/move-list-item-down.js +51 -0
  100. package/dist/extension/plugins/list/transforms/move-list-item-up.js +124 -0
  101. package/dist/extension/plugins/list/transforms/move-list-items-to-list.js +62 -0
  102. package/dist/extension/plugins/list/transforms/move-list-items.js +73 -0
  103. package/dist/extension/plugins/list/transforms/normalize-list-item.js +125 -0
  104. package/dist/extension/plugins/list/transforms/normalize-nested-list.js +40 -0
  105. package/dist/extension/plugins/list/transforms/remove-first-list-item.js +24 -0
  106. package/dist/extension/plugins/list/transforms/transforms-to-list.js +148 -0
  107. package/dist/extension/plugins/list/transforms/unwrap-list.js +50 -0
  108. package/dist/extension/plugins/node-id/constants.js +24 -0
  109. package/dist/extension/plugins/node-id/helpers.js +69 -0
  110. package/dist/extension/plugins/node-id/index.js +12 -0
  111. package/dist/extension/plugins/node-id/with-node-id.js +39 -0
  112. package/dist/extension/plugins/paragraph/helper.js +16 -0
  113. package/dist/extension/plugins/paragraph/index.js +17 -0
  114. package/dist/extension/plugins/paragraph/plugin.js +47 -0
  115. package/dist/extension/plugins/paragraph/render-elem.js +18 -0
  116. package/dist/extension/plugins/table/constant.js +9 -0
  117. package/dist/extension/plugins/table/helper.js +232 -0
  118. package/dist/extension/plugins/table/index.js +21 -0
  119. package/dist/extension/plugins/table/menu/index.js +64 -0
  120. package/dist/extension/plugins/table/menu/table-operator.js +98 -0
  121. package/dist/extension/plugins/table/menu/table-size-selector.js +100 -0
  122. package/dist/extension/plugins/table/model.js +95 -0
  123. package/dist/extension/plugins/table/plugin.js +173 -0
  124. package/dist/extension/plugins/table/render-elem/context-menu.js +93 -0
  125. package/dist/extension/plugins/table/render-elem/index.js +189 -0
  126. package/dist/extension/plugins/table/table-operations.js +187 -0
  127. package/dist/extension/plugins/text-style/helpers.js +44 -0
  128. package/dist/extension/plugins/text-style/index.js +17 -0
  129. package/dist/extension/plugins/text-style/menu/index.js +34 -0
  130. package/dist/extension/plugins/text-style/plugin.js +36 -0
  131. package/dist/extension/plugins/text-style/render-elem.js +52 -0
  132. package/dist/extension/render/render-element.js +113 -0
  133. package/dist/extension/render/render-leaf.js +21 -0
  134. package/dist/extension/toolbar/header-toolbar/index.js +113 -0
  135. package/dist/extension/toolbar/index.js +13 -0
  136. package/dist/extension/toolbar/user-help/shortcut-dialog.js +141 -0
  137. package/dist/hooks/use-mathjax.js +51 -0
  138. package/dist/hooks/use-scroll-context.js +17 -0
  139. package/dist/hooks/use-selection-update.js +25 -0
  140. package/dist/index.js +80 -0
  141. package/dist/pages/markdown-editor.js +65 -0
  142. package/dist/pages/markdown-view.js +49 -0
  143. package/dist/pages/rich-markdown-editor.js +111 -0
  144. package/dist/pages/simple-editor.js +63 -0
  145. package/dist/slate-convert/html-to-slate/constants.js +40 -0
  146. package/dist/slate-convert/html-to-slate/helper.js +60 -0
  147. package/dist/slate-convert/html-to-slate/index.js +138 -0
  148. package/dist/slate-convert/html-to-slate/rules/blockquote.js +22 -0
  149. package/dist/slate-convert/html-to-slate/rules/check-list.js +25 -0
  150. package/dist/slate-convert/html-to-slate/rules/code-block.js +93 -0
  151. package/dist/slate-convert/html-to-slate/rules/header.js +22 -0
  152. package/dist/slate-convert/html-to-slate/rules/image.js +27 -0
  153. package/dist/slate-convert/html-to-slate/rules/index.js +18 -0
  154. package/dist/slate-convert/html-to-slate/rules/link.js +27 -0
  155. package/dist/slate-convert/html-to-slate/rules/list.js +55 -0
  156. package/dist/slate-convert/html-to-slate/rules/paragraph.js +22 -0
  157. package/dist/slate-convert/html-to-slate/rules/table.js +39 -0
  158. package/dist/slate-convert/html-to-slate/rules/text.js +61 -0
  159. package/dist/slate-convert/index.js +34 -0
  160. package/dist/slate-convert/md-to-html/index.js +53 -0
  161. package/dist/slate-convert/md-to-html/sanitize-schema.js +24 -0
  162. package/dist/slate-convert/md-to-slate/index.js +44 -0
  163. package/dist/slate-convert/md-to-slate/transform.js +326 -0
  164. package/dist/slate-convert/slate-to-md/index.js +43 -0
  165. package/dist/slate-convert/slate-to-md/transform.js +269 -0
  166. package/dist/utils/common.js +26 -0
  167. package/dist/utils/deserialize-html.js +260 -0
  168. package/dist/utils/dom-utils.js +51 -0
  169. package/dist/utils/event-bus.js +54 -0
  170. package/dist/utils/event-handler.js +40 -0
  171. package/dist/utils/object-utils.js +73 -0
  172. package/package.json +7 -2
  173. package/.babelrc +0 -5
  174. package/.eslintignore +0 -19
  175. package/.eslintrc.json +0 -52
  176. package/.github/workflows/nodejs.yml +0 -25
  177. package/.vscode/settings.json +0 -5
  178. package/config/config.common.js +0 -157
  179. package/config/config.dev.js +0 -53
  180. package/config/jest/cssTransform.js +0 -16
  181. package/config/jest/fileTransform.js +0 -40
  182. package/config/utils/theme.css.js +0 -103
  183. package/config.js +0 -61
  184. package/dev-server.js +0 -145
  185. package/jest.config.js +0 -16
  186. package/scripts/ejs.js +0 -16
  187. package/site/_i18n/index.js +0 -35
  188. package/site/api/index.js +0 -212
  189. package/site/app.js +0 -21
  190. package/site/assets/css/app.css +0 -47
  191. package/site/assets/css/seafile-editor.css +0 -33
  192. package/site/commons/loading/index.js +0 -14
  193. package/site/commons/switch/index.css +0 -14
  194. package/site/commons/switch/index.js +0 -37
  195. package/site/commons/toast/alert.js +0 -106
  196. package/site/commons/toast/index.js +0 -5
  197. package/site/commons/toast/toast.js +0 -195
  198. package/site/commons/toast/toastManager.js +0 -138
  199. package/site/commons/toast/toaster.js +0 -64
  200. package/site/index.html +0 -23
  201. package/site/index.js +0 -21
  202. package/site/pages/home.js +0 -21
  203. package/site/pages/plain-markdown-view.js +0 -6
  204. package/site/pages/rich-seafile-editor.js +0 -72
  205. package/site/pages/seafile-editor.js +0 -39
  206. package/site/pages/seafile-viewer.js +0 -45
  207. package/site/pages/simple-editor.js +0 -44
  208. package/site/pages/wiki-viewer.js +0 -7
  209. package/site/setting.js +0 -36
  210. package/site/setting.local.dist.js +0 -23
  211. package/src/constants/event-types.js +0 -11
  212. package/src/constants/hot-keys.js +0 -47
  213. package/src/containers/article-info/index.js +0 -49
  214. package/src/containers/custom/get-event-transfer.js +0 -28
  215. package/src/containers/custom/set-event-transfer.js +0 -32
  216. package/src/containers/hotkeys-helper/classify-hotkeys.js +0 -30
  217. package/src/containers/hotkeys-helper/index.js +0 -43
  218. package/src/containers/loading/index.js +0 -14
  219. package/src/containers/loading/style.css +0 -49
  220. package/src/containers/outline/index.js +0 -75
  221. package/src/containers/outline/outline-item.js +0 -28
  222. package/src/editors/plain-markdown-editor/code-mirror.js +0 -73
  223. package/src/editors/plain-markdown-editor/index.js +0 -136
  224. package/src/editors/simple-slate-editor /index.js +0 -71
  225. package/src/editors/simple-slate-editor /with-props-editor.js +0 -15
  226. package/src/editors/slate-editor/editor-help/index.js +0 -46
  227. package/src/editors/slate-editor/index.js +0 -77
  228. package/src/editors/slate-editor/with-props-editor.js +0 -15
  229. package/src/editors/slate-viewer/index.js +0 -35
  230. package/src/extension/commons/element-popover/index.js +0 -52
  231. package/src/extension/commons/index.js +0 -10
  232. package/src/extension/commons/menu/index.js +0 -9
  233. package/src/extension/commons/menu/menu-drop-down.js +0 -110
  234. package/src/extension/commons/menu/menu-group.js +0 -20
  235. package/src/extension/commons/menu/menu-item.js +0 -60
  236. package/src/extension/commons/tooltip/index.js +0 -26
  237. package/src/extension/constants/element-types.js +0 -23
  238. package/src/extension/constants/index.js +0 -37
  239. package/src/extension/constants/keyboard.js +0 -29
  240. package/src/extension/constants/menus-config.js +0 -149
  241. package/src/extension/core/index.js +0 -3
  242. package/src/extension/core/queries/index.js +0 -410
  243. package/src/extension/core/transforms/focus-editor.js +0 -12
  244. package/src/extension/core/transforms/index.js +0 -4
  245. package/src/extension/core/transforms/move-children.js +0 -23
  246. package/src/extension/core/transforms/remove-node-children.js +0 -8
  247. package/src/extension/core/transforms/replace-node-children.js +0 -14
  248. package/src/extension/core/utils/index.js +0 -76
  249. package/src/extension/editor.js +0 -14
  250. package/src/extension/index.js +0 -15
  251. package/src/extension/plugins/blockquote/helpers.js +0 -65
  252. package/src/extension/plugins/blockquote/index.js +0 -13
  253. package/src/extension/plugins/blockquote/menu/index.js +0 -31
  254. package/src/extension/plugins/blockquote/plugin.js +0 -64
  255. package/src/extension/plugins/blockquote/render-elem.js +0 -9
  256. package/src/extension/plugins/check-list/helper.js +0 -34
  257. package/src/extension/plugins/check-list/index.js +0 -14
  258. package/src/extension/plugins/check-list/menu/index.js +0 -44
  259. package/src/extension/plugins/check-list/plugin.js +0 -46
  260. package/src/extension/plugins/check-list/render-elem.js +0 -23
  261. package/src/extension/plugins/clear-format/helpers.js +0 -48
  262. package/src/extension/plugins/clear-format/menu/index.js +0 -39
  263. package/src/extension/plugins/code-block/helpers.js +0 -107
  264. package/src/extension/plugins/code-block/index.js +0 -14
  265. package/src/extension/plugins/code-block/menu/index.js +0 -40
  266. package/src/extension/plugins/code-block/plugin.js +0 -210
  267. package/src/extension/plugins/code-block/render-elem/constant.js +0 -17
  268. package/src/extension/plugins/code-block/render-elem/index.js +0 -55
  269. package/src/extension/plugins/code-block/render-elem/language-selector.js +0 -38
  270. package/src/extension/plugins/formula/helper.js +0 -68
  271. package/src/extension/plugins/formula/index.js +0 -14
  272. package/src/extension/plugins/formula/menu/formula-modal.js +0 -73
  273. package/src/extension/plugins/formula/menu/index.js +0 -63
  274. package/src/extension/plugins/formula/plugin.js +0 -18
  275. package/src/extension/plugins/formula/render-elem.js +0 -40
  276. package/src/extension/plugins/header/helper.js +0 -47
  277. package/src/extension/plugins/header/index.js +0 -14
  278. package/src/extension/plugins/header/menu/index.js +0 -114
  279. package/src/extension/plugins/header/plugin.js +0 -134
  280. package/src/extension/plugins/header/render-elem.js +0 -31
  281. package/src/extension/plugins/image/helper.js +0 -50
  282. package/src/extension/plugins/image/index.js +0 -14
  283. package/src/extension/plugins/image/menu/image-menu-dialog.js +0 -68
  284. package/src/extension/plugins/image/menu/image-menu-popover.js +0 -76
  285. package/src/extension/plugins/image/menu/index.js +0 -61
  286. package/src/extension/plugins/image/plugin.js +0 -23
  287. package/src/extension/plugins/image/render-element/image-previewer.js +0 -71
  288. package/src/extension/plugins/image/render-element/index.js +0 -94
  289. package/src/extension/plugins/index.js +0 -47
  290. package/src/extension/plugins/link/helper.js +0 -161
  291. package/src/extension/plugins/link/index.js +0 -14
  292. package/src/extension/plugins/link/menu/index.js +0 -82
  293. package/src/extension/plugins/link/menu/link-modal.js +0 -135
  294. package/src/extension/plugins/link/plugin.js +0 -85
  295. package/src/extension/plugins/link/render-elem/index.js +0 -69
  296. package/src/extension/plugins/link/render-elem/link-popover.js +0 -79
  297. package/src/extension/plugins/list/constant.js +0 -3
  298. package/src/extension/plugins/list/helpers.js +0 -53
  299. package/src/extension/plugins/list/index.js +0 -14
  300. package/src/extension/plugins/list/menu/index.js +0 -48
  301. package/src/extension/plugins/list/plugin/index.js +0 -48
  302. package/src/extension/plugins/list/plugin/insert-break-list.js +0 -25
  303. package/src/extension/plugins/list/plugin/insert-fragment-list.js +0 -162
  304. package/src/extension/plugins/list/plugin/normalize-list.js +0 -64
  305. package/src/extension/plugins/list/plugin/on-tab-handle.js +0 -34
  306. package/src/extension/plugins/list/queries/index.js +0 -39
  307. package/src/extension/plugins/list/render-elem/index.js +0 -26
  308. package/src/extension/plugins/list/transforms/index.js +0 -23
  309. package/src/extension/plugins/list/transforms/insert-list-item.js +0 -65
  310. package/src/extension/plugins/list/transforms/move-list-item-down.js +0 -40
  311. package/src/extension/plugins/list/transforms/move-list-item-up.js +0 -105
  312. package/src/extension/plugins/list/transforms/move-list-items-to-list.js +0 -58
  313. package/src/extension/plugins/list/transforms/move-list-items.js +0 -76
  314. package/src/extension/plugins/list/transforms/normalize-list-item.js +0 -92
  315. package/src/extension/plugins/list/transforms/normalize-nested-list.js +0 -31
  316. package/src/extension/plugins/list/transforms/remove-first-list-item.js +0 -11
  317. package/src/extension/plugins/list/transforms/transforms-to-list.js +0 -91
  318. package/src/extension/plugins/list/transforms/unwrap-list.js +0 -44
  319. package/src/extension/plugins/node-id/constants.js +0 -18
  320. package/src/extension/plugins/node-id/helpers.js +0 -61
  321. package/src/extension/plugins/node-id/index.js +0 -7
  322. package/src/extension/plugins/node-id/with-node-id.js +0 -37
  323. package/src/extension/plugins/paragraph/helper.js +0 -9
  324. package/src/extension/plugins/paragraph/index.js +0 -12
  325. package/src/extension/plugins/paragraph/plugin.js +0 -40
  326. package/src/extension/plugins/paragraph/render-elem.js +0 -11
  327. package/src/extension/plugins/table/constant.js +0 -3
  328. package/src/extension/plugins/table/helper.js +0 -175
  329. package/src/extension/plugins/table/index.js +0 -15
  330. package/src/extension/plugins/table/menu/index.js +0 -69
  331. package/src/extension/plugins/table/menu/table-operator.js +0 -101
  332. package/src/extension/plugins/table/menu/table-size-selector.js +0 -71
  333. package/src/extension/plugins/table/model.js +0 -69
  334. package/src/extension/plugins/table/plugin.js +0 -159
  335. package/src/extension/plugins/table/render-elem/context-menu.js +0 -78
  336. package/src/extension/plugins/table/render-elem/index.js +0 -157
  337. package/src/extension/plugins/table/table-operations.js +0 -162
  338. package/src/extension/plugins/text-style/helpers.js +0 -38
  339. package/src/extension/plugins/text-style/index.js +0 -12
  340. package/src/extension/plugins/text-style/menu/index.js +0 -41
  341. package/src/extension/plugins/text-style/plugin.js +0 -37
  342. package/src/extension/plugins/text-style/render-elem.js +0 -45
  343. package/src/extension/render/render-element.js +0 -82
  344. package/src/extension/render/render-leaf.js +0 -16
  345. package/src/extension/toolbar/header-toolbar/index.js +0 -129
  346. package/src/extension/toolbar/index.js +0 -5
  347. package/src/extension/toolbar/user-help/shortcut-dialog.js +0 -144
  348. package/src/hooks/use-mathjax.js +0 -44
  349. package/src/hooks/use-scroll-context.js +0 -14
  350. package/src/hooks/use-selection-update.js +0 -14
  351. package/src/index.js +0 -22
  352. package/src/pages/markdown-editor.js +0 -53
  353. package/src/pages/markdown-view.js +0 -36
  354. package/src/pages/rich-markdown-editor.js +0 -95
  355. package/src/pages/simple-editor.js +0 -52
  356. package/src/slate-convert/html-to-slate/constants.js +0 -54
  357. package/src/slate-convert/html-to-slate/helper.js +0 -22
  358. package/src/slate-convert/html-to-slate/index.js +0 -144
  359. package/src/slate-convert/html-to-slate/rules/blockquote.js +0 -16
  360. package/src/slate-convert/html-to-slate/rules/check-list.js +0 -22
  361. package/src/slate-convert/html-to-slate/rules/code-block.js +0 -91
  362. package/src/slate-convert/html-to-slate/rules/header.js +0 -18
  363. package/src/slate-convert/html-to-slate/rules/image.js +0 -18
  364. package/src/slate-convert/html-to-slate/rules/index.js +0 -23
  365. package/src/slate-convert/html-to-slate/rules/link.js +0 -24
  366. package/src/slate-convert/html-to-slate/rules/list.js +0 -52
  367. package/src/slate-convert/html-to-slate/rules/paragraph.js +0 -16
  368. package/src/slate-convert/html-to-slate/rules/table.js +0 -37
  369. package/src/slate-convert/html-to-slate/rules/text.js +0 -63
  370. package/src/slate-convert/index.js +0 -11
  371. package/src/slate-convert/md-to-html/index.js +0 -44
  372. package/src/slate-convert/md-to-html/sanitize-schema.js +0 -41
  373. package/src/slate-convert/md-to-slate/index.js +0 -42
  374. package/src/slate-convert/md-to-slate/transform.js +0 -336
  375. package/src/slate-convert/slate-to-md/index.js +0 -44
  376. package/src/slate-convert/slate-to-md/transform.js +0 -248
  377. package/src/utils/common.js +0 -30
  378. package/src/utils/deserialize-html.js +0 -174
  379. package/src/utils/dom-utils.js +0 -45
  380. package/src/utils/event-bus.js +0 -37
  381. package/src/utils/event-handler.js +0 -36
  382. package/src/utils/object-utils.js +0 -51
  383. package/tests/core/constants/index.js +0 -54
  384. package/tests/core/index.js +0 -11
  385. package/tests/core/jsx/index.js +0 -9
  386. package/tests/core/stub-editor/index.js +0 -26
  387. package/tests/core/utils.js +0 -58
  388. package/tests/extension/plugins/list/insert-block.test.js +0 -40
  389. package/tests/extension/plugins/list/insert-fragment-list.test.js +0 -392
  390. package/tests/extension/plugins/list/toggle-list.test.js +0 -160
  391. package/tests/extension/plugins/text/text.test.js +0 -29
  392. package/tests/extension/plugins/text-style/toggle-text-style.test.js +0 -148
  393. package/tests/slate-convert/html-to-slate/blockquote.test.js +0 -107
  394. package/tests/slate-convert/html-to-slate/code-block.test.js +0 -32
  395. package/tests/slate-convert/html-to-slate/header.test.js +0 -56
  396. package/tests/slate-convert/html-to-slate/link.test.js +0 -77
  397. package/tests/slate-convert/html-to-slate/list.test.js +0 -190
  398. package/tests/slate-convert/html-to-slate/paragraph.test.js +0 -40
  399. package/tests/slate-convert/html-to-slate/text.test.js +0 -131
  400. package/tests/slate-convert/md-to-html/blockquote.test.js +0 -110
  401. package/tests/slate-convert/md-to-html/check-list.test.js +0 -19
  402. package/tests/slate-convert/md-to-html/code-block.test.js +0 -19
  403. package/tests/slate-convert/md-to-html/header.test.js +0 -20
  404. package/tests/slate-convert/md-to-html/image.test.js +0 -17
  405. package/tests/slate-convert/md-to-html/image_reference.test.js +0 -17
  406. package/tests/slate-convert/md-to-html/link.test.js +0 -15
  407. package/tests/slate-convert/md-to-html/link_reference.test.js +0 -15
  408. package/tests/slate-convert/md-to-html/list-ordered.test.js +0 -22
  409. package/tests/slate-convert/md-to-html/list-unordered.test.js +0 -22
  410. package/tests/slate-convert/md-to-html/paragraph.test.js +0 -15
  411. package/tests/slate-convert/md-to-html/table.test.js +0 -29
  412. package/tests/slate-convert/md-to-html/text_base.test.js +0 -14
  413. package/tests/slate-convert/md-to-html/text_bold.test.js +0 -14
  414. package/tests/slate-convert/md-to-html/text_bold_italic.test.js +0 -15
  415. package/tests/slate-convert/md-to-html/text_code.test.js +0 -14
  416. package/tests/slate-convert/md-to-html/text_code_bold.test.js +0 -14
  417. package/tests/slate-convert/md-to-html/text_code_bold_italic.test.js +0 -14
  418. package/tests/slate-convert/md-to-html/text_code_italic.test.js +0 -14
  419. package/tests/slate-convert/md-to-html/text_italic.test.js +0 -14
  420. package/tests/slate-convert/md-to-slate/blockquote.test.js +0 -200
  421. package/tests/slate-convert/md-to-slate/check-list.test.js +0 -34
  422. package/tests/slate-convert/md-to-slate/code-block.test.js +0 -32
  423. package/tests/slate-convert/md-to-slate/header.test.js +0 -49
  424. package/tests/slate-convert/md-to-slate/image.test.js +0 -31
  425. package/tests/slate-convert/md-to-slate/link.test.js +0 -30
  426. package/tests/slate-convert/md-to-slate/list-ordered.test.js +0 -42
  427. package/tests/slate-convert/md-to-slate/list-unordered.test.js +0 -42
  428. package/tests/slate-convert/md-to-slate/paragraph.test.js +0 -19
  429. package/tests/slate-convert/md-to-slate/table.test.js +0 -34
  430. package/tests/slate-convert/md-to-slate/text_base.test.js +0 -19
  431. package/tests/slate-convert/md-to-slate/text_bold.test.js +0 -22
  432. package/tests/slate-convert/md-to-slate/text_bold_italic.test.js +0 -23
  433. package/tests/slate-convert/md-to-slate/text_code.test.js +0 -22
  434. package/tests/slate-convert/md-to-slate/text_code_bold.test.js +0 -23
  435. package/tests/slate-convert/md-to-slate/text_code_bold_italic.test.js +0 -24
  436. package/tests/slate-convert/md-to-slate/text_code_italic.test.js +0 -23
  437. package/tests/slate-convert/md-to-slate/text_italic.test.js +0 -22
  438. package/tests/slate-convert/slate-to-md/blockquote.test.js +0 -416
  439. package/tests/slate-convert/slate-to-md/check-list.test.js +0 -96
  440. package/tests/slate-convert/slate-to-md/code-block.test.js +0 -35
  441. package/tests/slate-convert/slate-to-md/formula.test.js +0 -26
  442. package/tests/slate-convert/slate-to-md/header.test.js +0 -109
  443. package/tests/slate-convert/slate-to-md/image.test.js +0 -98
  444. package/tests/slate-convert/slate-to-md/link.test.js +0 -52
  445. package/tests/slate-convert/slate-to-md/list-ordered.test.js +0 -87
  446. package/tests/slate-convert/slate-to-md/list-unordered.test.js +0 -81
  447. package/tests/slate-convert/slate-to-md/paragraph.test.js +0 -28
  448. package/tests/slate-convert/slate-to-md/table.test.js +0 -56
  449. package/tests/slate-convert/slate-to-md/text_base.test.js +0 -28
  450. package/tests/slate-convert/slate-to-md/text_bold.test.js +0 -36
  451. package/tests/slate-convert/slate-to-md/text_bold_italic.test.js +0 -42
  452. package/tests/slate-convert/slate-to-md/text_code.test.js +0 -31
  453. package/tests/slate-convert/slate-to-md/text_code_bold.test.js +0 -37
  454. package/tests/slate-convert/slate-to-md/text_code_bold_italic.test.js +0 -43
  455. package/tests/slate-convert/slate-to-md/text_code_italic.test.js +0 -37
  456. package/tests/slate-convert/slate-to-md/text_italic.test.js +0 -36
  457. /package/{src → dist}/assets/css/slate-editor.css +0 -0
  458. /package/{src → dist}/containers/article-info/style.css +0 -0
  459. /package/{src → dist}/containers/hotkeys-helper/style.css +0 -0
  460. /package/{site/commons → dist/containers}/loading/style.css +0 -0
  461. /package/{src → dist}/containers/outline/style.css +0 -0
  462. /package/{src → dist}/editors/plain-markdown-editor/code-mirror.css +0 -0
  463. /package/{src → dist}/editors/plain-markdown-editor/style.css +0 -0
  464. /package/{src → dist}/editors/slate-editor/editor-help/style.css +0 -0
  465. /package/{src → dist}/editors/slate-viewer/style.css +0 -0
  466. /package/{src → dist}/extension/commons/menu/menu.css +0 -0
  467. /package/{src → dist}/extension/commons/tooltip/index.css +0 -0
  468. /package/{src → dist}/extension/plugins/code-block/render-elem/style.css +0 -0
  469. /package/{src → dist}/extension/plugins/formula/formula.css +0 -0
  470. /package/{src → dist}/extension/plugins/header/menu/style.css +0 -0
  471. /package/{src → dist}/extension/plugins/image/menu/style.css +0 -0
  472. /package/{src → dist}/extension/plugins/image/render-element/style.css +0 -0
  473. /package/{src → dist}/extension/plugins/link/render-elem/style.css +0 -0
  474. /package/{src → dist}/extension/plugins/list/render-elem/style.css +0 -0
  475. /package/{src → dist}/extension/plugins/table/menu/style.css +0 -0
  476. /package/{src → dist}/extension/plugins/table/render-elem/style.css +0 -0
  477. /package/{src → dist}/extension/toolbar/header-toolbar/style.css +0 -0
  478. /package/{src → dist}/extension/toolbar/user-help/style.css +0 -0
@@ -1,61 +0,0 @@
1
- import deepCopy from 'deep-copy';
2
- import slugid from 'slugid';
3
- import * as OPERATION from './constants';
4
- import ObjectUtils from '../../../utils/object-utils';
5
-
6
- export const decorateOperation = (operation) => {
7
- let newOperation = deepCopy(operation);
8
- const { type } = newOperation;
9
- switch (type) {
10
- case OPERATION.INSERT_NODE: {
11
- let { node } = newOperation;
12
- if (!node.id) node.id = slugid.nice(); // generate an id for insert node
13
- break;
14
- }
15
- case OPERATION.SPLIT_NODE: {
16
- // child: split [7, 0] -> [[7, 0],[7, 1]]
17
- // parent: split [[7, 0], [7, 1]] -> [[7], [8]]
18
- const { properties = {} } = newOperation;
19
- // need generate a new id for new node
20
- properties.id = slugid.nice();
21
- break;
22
- }
23
- default: {
24
- break;
25
- }
26
- }
27
-
28
- return newOperation;
29
- };
30
-
31
- export const replaceNodeId = (node) => {
32
- if (!ObjectUtils.isObject(node)) return node;
33
- if (ObjectUtils.hasProperty(node, 'children')) {
34
- return {
35
- ...node,
36
- id: slugid.nice(),
37
- children: replacePastedDataId(node.children),
38
- };
39
- }
40
-
41
- return {
42
- ...node,
43
- id: slugid.nice(),
44
- };
45
- };
46
-
47
- export const replacePastedDataId = (pastedData) => {
48
- // If children is malformed, return a list of correct child nodes
49
- if (ObjectUtils.isObject(pastedData)) {
50
- return replaceNodeId(pastedData);
51
- }
52
-
53
- if (!Array.isArray(pastedData)) return [{ id: slugid.nice(), text: '' }];
54
- return pastedData.map(item => {
55
- item.id = slugid.nice();
56
- if (item.children) {
57
- item.children = replacePastedDataId(item.children);
58
- }
59
- return item;
60
- });
61
- };
@@ -1,7 +0,0 @@
1
- import withNodeId from './with-node-id';
2
-
3
- const NodeIdPlugin = {
4
- editorPlugin: withNodeId,
5
- };
6
-
7
- export default NodeIdPlugin;
@@ -1,37 +0,0 @@
1
- import { decorateOperation, replacePastedDataId } from './helpers';
2
-
3
- const catchSlateFragment = /data-slate-fragment="(.+?)"/m;
4
-
5
- const getSlateFragmentAttribute = (dataTransfer) => {
6
- const htmlData = dataTransfer.getData('text/html');
7
- const [, fragment] = htmlData.match(catchSlateFragment) || [];
8
- return fragment;
9
- };
10
-
11
- const withNodeId = (editor) => {
12
- const { apply } = editor;
13
- const newEditor = editor;
14
-
15
- newEditor.apply = (op) => {
16
- const newOp = decorateOperation(op);
17
- apply(newOp);
18
- };
19
-
20
- // rewrite insert fragment data
21
- newEditor.insertFragmentData = (data) => {
22
- const fragment = data.getData('application/x-slate-fragment') || getSlateFragmentAttribute(data);
23
-
24
- if (fragment) {
25
- const decoded = decodeURIComponent(window.atob(fragment));
26
- const parsed = JSON.parse(decoded);
27
- const newData = replacePastedDataId(parsed);
28
- newEditor.insertFragment(newData);
29
- return newEditor;
30
- }
31
- };
32
-
33
- return newEditor;
34
-
35
- };
36
-
37
- export default withNodeId;
@@ -1,9 +0,0 @@
1
- import { Transforms } from 'slate';
2
- import { PARAGRAPH } from '../../constants/element-types';
3
- import { focusEditor } from '../../core';
4
-
5
- export const transformToParagraph = (editor, focusLocation) => {
6
- if (!editor.selection) return;
7
- Transforms.setNodes(editor, { type: PARAGRAPH });
8
- focusEditor(editor, focusLocation);
9
- };
@@ -1,12 +0,0 @@
1
- import { PARAGRAPH } from '../../constants/element-types';
2
- import withParagraph from './plugin';
3
- import renderParagraph from './render-elem';
4
-
5
- const ParagraphPlugin = {
6
- type: PARAGRAPH,
7
- nodeType: 'element',
8
- editorPlugin: withParagraph,
9
- renderElements: [renderParagraph]
10
- };
11
-
12
- export default ParagraphPlugin;
@@ -1,40 +0,0 @@
1
- import { Editor, Node, Range, Transforms } from 'slate';
2
- import { getPrevNode, getSelectedNodeEntryByType, isStartPoint } from '../../core';
3
- import { CHECK_LIST_ITEM, PARAGRAPH } from '../../constants/element-types';
4
-
5
- const withParagraph = (editor) => {
6
- const { deleteBackward } = editor;
7
- const newEditor = editor;
8
-
9
- newEditor.deleteBackward = (unit) => {
10
- const { selection } = newEditor;
11
- if (!selection) {
12
- deleteBackward(unit);
13
- return;
14
- }
15
- const selectedParagraphNodeEntry = getSelectedNodeEntryByType(newEditor, PARAGRAPH);
16
- if (selectedParagraphNodeEntry) {
17
- const isCollapsed = Range.isCollapsed(selection);
18
- const isCursorAtStartOfLine = isStartPoint(editor, selection.anchor, selection);
19
- const previousNodeEntry = getPrevNode(newEditor);
20
- const isCheckListAtPrevious = previousNodeEntry && previousNodeEntry[0].type === CHECK_LIST_ITEM;
21
- // If cursor is at start of line and previous node is check list,remove the paragraph
22
- // instead of delete backward, which fix the bug that the check list will be removed when user
23
- // press backspace at start of line.
24
- if (isCollapsed && isCursorAtStartOfLine && isCheckListAtPrevious) {
25
- const focusPoint = Editor.end(newEditor, previousNodeEntry[1]);
26
- const selectedParagraphText = Node.string(selectedParagraphNodeEntry[0]);
27
- const checkListText = Node.string(previousNodeEntry[0]);
28
- const newCheckListText = checkListText + selectedParagraphText;
29
- Transforms.insertText(newEditor, newCheckListText, { at: previousNodeEntry[1] });
30
- Transforms.removeNodes(newEditor, { at: selectedParagraphNodeEntry[1] });
31
- Transforms.select(newEditor, focusPoint);
32
- return;
33
- }
34
- }
35
- return deleteBackward(unit);
36
- };
37
- return newEditor;
38
- };
39
-
40
- export default withParagraph;
@@ -1,11 +0,0 @@
1
- import React from 'react';
2
-
3
- const renderParagraph = ({ element, attributes, children }) => {
4
- return (
5
- <p data-id={element.id} data-root='true' {...attributes}>
6
- {children}
7
- </p>
8
- );
9
- };
10
-
11
- export default renderParagraph;
@@ -1,3 +0,0 @@
1
- export const TABLE_CELL_NODE_NAME = 'td';
2
- export const TABLE_ROW_NODE_NAME = 'tr';
3
- export const TABLE_BODY_NODE_NAME = 'tbody';
@@ -1,175 +0,0 @@
1
- import { Editor, Node, Path, Transforms, insertFragment } from 'slate';
2
- import { generateTable, generateTableRow } from './model';
3
- import { CODE_BLOCK, COLUMN, FORMULA, PARAGRAPH, TABLE, TABLE_CELL, TABLE_ROW } from '../../constants/element-types';
4
- import { focusEditor, generateElement } from '../../core';
5
- import getEventTransfer from '../../../containers/custom/get-event-transfer';
6
- import { htmlDeserializer } from '../../../utils/deserialize-html';
7
-
8
- export const isDisabled = (editor, readonly) => {
9
- const { selection } = editor;
10
- if (readonly || !selection) return true;
11
- const disableTypes = [TABLE, TABLE_ROW, TABLE_CELL, FORMULA, CODE_BLOCK, COLUMN];
12
- const [nodeEntry] = Editor.nodes(editor, {
13
- match: n => disableTypes.includes(n.type),
14
- mode: 'highest'
15
- });
16
- if (nodeEntry) return true;
17
- return false;
18
- };
19
-
20
- export const isInTable = (editor) => {
21
- const { selection } = editor;
22
- if (!selection) return false;
23
- const [nodeEntry] = getTableEntry(editor);
24
- if (!nodeEntry) return false;
25
- return true;
26
- };
27
-
28
- export const insertTable = (editor, rowNum, columnNum) => {
29
- const table = generateTable({ rowNum, columnNum });
30
- Editor.insertNode(editor, table);
31
- // Auto focus at the first cell in table
32
- const [nodeEntry] = Editor.nodes(editor, {
33
- match: node => node.id === table.id,
34
- mode: 'highest'
35
- });
36
- const focusPoint = Editor.start(editor, nodeEntry[1]);
37
- focusEditor(editor, focusPoint);
38
- };
39
-
40
- export const getTableFocusingInfos = (editor) => {
41
- if (!isInTable(editor)) return null;
42
- const nodeEntries = Editor.nodes(editor, {
43
- match: n => [TABLE, TABLE_ROW, TABLE_CELL].includes(n.type),
44
- });
45
- const nodeEntryList = Array.from(nodeEntries);
46
- const [tableEntry, rowEntry, cellEntry] = nodeEntryList;
47
- const columnIndex = cellEntry[1].at(-1);
48
- const rowIndex = cellEntry[1].at(-2);
49
- return { cellEntry, tableEntry, rowEntry, columnIndex, rowIndex };
50
- };
51
-
52
- export const selectCellByGrid = (editor, rowIndex, colIndex) => {
53
- const { tableEntry: [, tablePath] } = getTableFocusingInfos(editor);
54
- const selectRange = Editor.range(editor, tablePath.concat(rowIndex, colIndex));
55
- focusEditor(editor, selectRange);
56
- };
57
-
58
- export const getSelectedTableCells = (editor) => {
59
- const [tableEntry] = getTableEntry(editor);
60
- if (!tableEntry) return [];
61
-
62
- const [tableNode] = tableEntry;
63
- const tableRows = tableNode.children;
64
- const selectGrid = getSelectGrid(editor);
65
-
66
- const { startRowIndex, endRowIndex, startColIndex, endColIndex } = selectGrid;
67
-
68
- const selectedTableRows = [];
69
- for (let rowIndex = startRowIndex; rowIndex <= endRowIndex; rowIndex++) {
70
- const currentRow = tableRows[rowIndex];
71
- let selectedTableCells = [];
72
- for (let colIndex = startColIndex; colIndex <= endColIndex; colIndex++) {
73
- const currentCell = currentRow.children[colIndex];
74
- selectedTableCells.push(currentCell);
75
- }
76
-
77
- selectedTableRows.push(generateTableRow({ childrenOrText: selectedTableCells }));
78
- selectedTableCells = [];
79
- }
80
-
81
- return [generateTable({ childrenOrText: selectedTableRows })];
82
- };
83
-
84
- export const getSelectGrid = (editor) => {
85
- const [tableEntry] = getTableEntry(editor);
86
- if (!tableEntry) return null;
87
-
88
- const selectedTableCells = document.querySelectorAll('.selected-cell');
89
- if (selectedTableCells.length === 0) return null;
90
-
91
- const selectGrid = Array.from(selectedTableCells).reduce((grid, cell) => {
92
- const { startRowIndex, endRowIndex, startColIndex, endColIndex } = grid;
93
- const { cellIndex: colIndex } = cell;
94
- const { rowIndex } = cell.parentNode;
95
- if (endRowIndex === -1 || rowIndex > endRowIndex) grid.endRowIndex = rowIndex;
96
- if (startRowIndex === -1 || rowIndex < startRowIndex) grid.startRowIndex = rowIndex;
97
- if (endColIndex === -1 || colIndex > endColIndex) grid.endColIndex = colIndex;
98
- if (startColIndex === -1 || colIndex < startColIndex) grid.startColIndex = colIndex;
99
- return { ...grid };
100
- }, { startRowIndex: -1, endRowIndex: -1, startColIndex: -1, endColIndex: -1 });
101
-
102
- return selectGrid;
103
- };
104
-
105
- export const pasteContentIntoTable = (editor, content) => {
106
- const data = content;
107
- let { fragment, text, type, html } = getEventTransfer(data);
108
- const newText = text.replace(/\r\n|\n/g, ' ');
109
-
110
- if (!fragment && type === 'text') {
111
- Transforms.insertText(this.editor, newText);
112
- return;
113
- }
114
-
115
- if (type === 'html') {
116
- fragment = htmlDeserializer(html);
117
- }
118
-
119
- if (fragment.length === 1) {
120
- if (fragment[0].type === TABLE) {
121
- const clipboardTable = fragment[0];
122
- const {
123
- tableEntry: [tableNode, tablePath],
124
- rowEntry: [rowNode],
125
- rowIndex,
126
- columnIndex
127
- } = getTableFocusingInfos(editor);
128
- const tableWidth = rowNode.children.length;
129
- const tableHeight = tableNode.children.length;
130
- clipboardTable.children.some((clipRow, clipRowIndex) => {
131
- const currentInsertPath = tablePath.concat(rowIndex + clipRowIndex + rowIndex);
132
- // Out of table
133
- if (rowIndex + clipRowIndex >= tableHeight + 1) return true;
134
- clipRow.children.some((clipCol, clipColIndex) => {
135
- // Out of table
136
- if (columnIndex + clipColIndex >= tableWidth + 1) return true;
137
- const currentCellPath = currentInsertPath.concat(columnIndex + clipColIndex);
138
- const currentCellChildPath = currentCellPath.concat(0);
139
- Transforms.removeNodes(editor, { at: currentCellChildPath });
140
- if (clipCol.children.type !== PARAGRAPH) {
141
- const text = Node.string(clipCol);
142
- const newChild = generateElement(PARAGRAPH, { childrenOrText: text });
143
- Transforms.insertNodes(editor, newChild, { at: currentCellChildPath });
144
- } else {
145
- Transforms.insertNodes(editor, clipCol.children, { at: currentCellChildPath });
146
- }
147
- return false;
148
- });
149
- return false;
150
- });
151
- } else if (fragment[0].type === PARAGRAPH) {
152
- insertFragment(editor, fragment);
153
- } else {
154
- Transforms.insertText(editor, text.replace(/\r\n|\n/g, ' '));
155
- }
156
- }
157
- };
158
-
159
- export const jumpOutTableInEditor = (editor) => {
160
- const [tableEntry] = getTableEntry(editor);
161
- if (!tableEntry) return;
162
-
163
- const [, tablePath] = tableEntry;
164
- const tableParentPath = Path.parent(tablePath);
165
- const insertPath = tableParentPath.concat(tablePath.at(-1) + 1);
166
- Transforms.insertNodes(editor, generateElement(PARAGRAPH), { at: insertPath });
167
- Transforms.select(editor, { path: insertPath.concat(0), offset: 0 });
168
- };
169
-
170
- export const getTableEntry = (editor) => {
171
- return Editor.nodes(editor, {
172
- match: n => n.type === TABLE,
173
- mode: 'highest'
174
- });
175
- };
@@ -1,15 +0,0 @@
1
- import { TABLE } from '../../constants/element-types';
2
- import TableMenu from './menu';
3
- import { AlignmentDropDown, ColumnOperationDropDownList, RowOperationDropDownList, RemoveTableMenu } from './menu/table-operator';
4
- import withTable from './plugin';
5
- import RenderTableContainer, { RenderTableCell, RenderTableRow } from './render-elem';
6
-
7
- const TablePlugin = {
8
- type: TABLE,
9
- nodeType: 'element',
10
- editorMenus: [TableMenu, AlignmentDropDown, ColumnOperationDropDownList, RowOperationDropDownList, RemoveTableMenu],
11
- editorPlugin: withTable,
12
- renderElements: [RenderTableCell, RenderTableRow, RenderTableContainer],
13
- };
14
-
15
- export default TablePlugin;
@@ -1,69 +0,0 @@
1
- import React, { useCallback, useMemo, useState } from 'react';
2
- import PropTypes from 'prop-types';
3
- import MenuItem from '../../../commons/menu/menu-item';
4
- import { MENUS_CONFIG_MAP } from '../../../constants';
5
- import { TABLE } from '../../../constants/element-types';
6
- import { isDisabled, isInTable } from '../helper';
7
- import TableSizeSelector from './table-size-selector';
8
-
9
- import './style.css';
10
-
11
- const menuConfig = MENUS_CONFIG_MAP[TABLE];
12
- const propTypes = {
13
- editor: PropTypes.object.isRequired,
14
- readonly: PropTypes.bool.isRequired,
15
- className: PropTypes.string,
16
- isRichEditor: PropTypes.bool,
17
- };
18
-
19
- const TableMenu = ({ editor, readonly, className, isRichEditor }) => {
20
- const [isOpenTableSizeSelector, setIsOpenTableSizeSelector] = useState(false);
21
- // eslint-disable-next-line react-hooks/exhaustive-deps
22
- const disabled = useMemo(() => isDisabled(editor, readonly), [editor.selection, readonly]);
23
- const isActive = isInTable(editor);
24
-
25
- const onSelectorHide = useCallback(() => {
26
- setIsOpenTableSizeSelector(false);
27
- unregisterEvent();
28
- // eslint-disable-next-line react-hooks/exhaustive-deps
29
- }, [setIsOpenTableSizeSelector]);
30
-
31
- const registerEvent = useCallback(() => {
32
- document.addEventListener('click', onSelectorHide);
33
- // eslint-disable-next-line react-hooks/exhaustive-deps
34
- }, []);
35
-
36
- const unregisterEvent = useCallback(() => {
37
- document.removeEventListener('click', onSelectorHide);
38
- // eslint-disable-next-line react-hooks/exhaustive-deps
39
- }, []);
40
-
41
- const onMouseDown = useCallback((e) => {
42
- e.stopPropagation();
43
- e.preventDefault();
44
- setIsOpenTableSizeSelector(true);
45
- registerEvent();
46
- }, [setIsOpenTableSizeSelector, registerEvent]);
47
-
48
- return (
49
- <div className='sf-table-menu-item'>
50
- <MenuItem
51
- isRichEditor={isRichEditor}
52
- className={className}
53
- disabled={disabled}
54
- isActive={isActive}
55
- onMouseDown={onMouseDown}
56
- editor={editor}
57
- {...menuConfig}
58
- />
59
- {isOpenTableSizeSelector && (
60
- <TableSizeSelector
61
- editor={editor}
62
- />)}
63
- </div>
64
- );
65
- };
66
-
67
- TableMenu.propTypes = propTypes;
68
-
69
- export default TableMenu;
@@ -1,101 +0,0 @@
1
- import React, { useMemo } from 'react';
2
- import MenuDropDown from '../../../commons/menu/menu-drop-down';
3
- import { MENUS_CONFIG_MAP, TABLE_SUBMENU_MAP, TEXT_ALIGN } from '../../../constants';
4
- import MenuItem from '../../../commons/menu/menu-item';
5
- import { changeCellAlign, insertColumn, insertRow, removeColumn, removeRow, removeTable } from '../table-operations';
6
-
7
- const AlignmentDropDown = ({ editor, readonly }) => {
8
- const alignmentOperationDropDownList = useMemo(() => [
9
- {
10
- ...MENUS_CONFIG_MAP[TABLE_SUBMENU_MAP.TABLE_ALIGN_LEFT],
11
- handleClick: (item) => changeCellAlign(editor, TEXT_ALIGN.LEFT)
12
- },
13
- {
14
- ...MENUS_CONFIG_MAP[TABLE_SUBMENU_MAP.TABLE_ALIGN_CENTER],
15
- handleClick: (item) => changeCellAlign(editor, TEXT_ALIGN.CENTER)
16
- },
17
- {
18
- ...MENUS_CONFIG_MAP[TABLE_SUBMENU_MAP.TABLE_ALIGN_RIGHT],
19
- handleClick: (item) => changeCellAlign(editor, TEXT_ALIGN.RIGHT)
20
- },
21
- ], [editor]);
22
-
23
- return (
24
- <MenuDropDown
25
- editor={editor}
26
- readonly={readonly}
27
- isDisabled={false}
28
- dropDownList={alignmentOperationDropDownList}
29
- isShowListItemIcon={true}
30
- {...MENUS_CONFIG_MAP[TABLE_SUBMENU_MAP.TABLE_ALIGN_LEFT]}
31
- />
32
- );
33
- };
34
-
35
- const ColumnOperationDropDownList = ({ editor, readonly }) => {
36
- const columnOperationDropDownList = useMemo(() => [
37
- {
38
- ...MENUS_CONFIG_MAP[TABLE_SUBMENU_MAP.TABLE_INSERT_COLUMN],
39
- handleClick: (item) => insertColumn(editor)
40
- },
41
- {
42
- ...MENUS_CONFIG_MAP[TABLE_SUBMENU_MAP.TABLE_REMOVE_COLUMN],
43
- handleClick: (item) => removeColumn(editor)
44
- },
45
- ], [editor]);
46
-
47
- return (
48
- <MenuDropDown
49
- editor={editor}
50
- readonly={readonly}
51
- isDisabled={false}
52
- dropDownList={columnOperationDropDownList}
53
- {...MENUS_CONFIG_MAP[TABLE_SUBMENU_MAP.TABLE_INSERT_COLUMN]}
54
- />
55
- );
56
- };
57
-
58
- const RowOperationDropDownList = ({ editor, readonly }) => {
59
- const rowOperationDropDownList = useMemo(() => [
60
- {
61
- ...MENUS_CONFIG_MAP[TABLE_SUBMENU_MAP.TABLE_INSERT_ROW],
62
- handleClick: (item) => insertRow(editor)
63
- },
64
- {
65
- ...MENUS_CONFIG_MAP[TABLE_SUBMENU_MAP.TABLE_REMOVE_ROW],
66
- handleClick: (item) => removeRow(editor)
67
- },
68
- ], [editor]);
69
-
70
- return (
71
- <MenuDropDown
72
- editor={editor}
73
- readonly={readonly}
74
- isDisabled={false}
75
- dropDownList={rowOperationDropDownList}
76
- {...MENUS_CONFIG_MAP[TABLE_SUBMENU_MAP.TABLE_INSERT_ROW]}
77
- />
78
- );
79
- };
80
-
81
- const RemoveTableMenu = ({ editor, readonly, className, isRichEditor }) => {
82
- return (
83
- <MenuItem
84
- isRichEditor={isRichEditor}
85
- className={className}
86
- disabled={false}
87
- isActive={false}
88
- onMouseDown={() => removeTable(editor)}
89
- editor={editor}
90
-
91
- {...MENUS_CONFIG_MAP[TABLE_SUBMENU_MAP.TABLE_DELETE_TABLE]}
92
- />
93
- );
94
- };
95
-
96
- export {
97
- AlignmentDropDown,
98
- ColumnOperationDropDownList,
99
- RowOperationDropDownList,
100
- RemoveTableMenu
101
- };
@@ -1,71 +0,0 @@
1
- import React, { useCallback, useMemo, useState } from 'react';
2
- import propType from 'prop-types';
3
- import classNames from 'classnames';
4
- import { insertTable } from '../helper';
5
-
6
- import './style.css';
7
-
8
- const TableSizeSelector = ({ editor }) => {
9
- const [selectedGridInfo, setSelectedGridInfo] = useState({ row: 0, column: 0 });
10
- const [showingGridInfo, setShowingGridInfo] = useState({ row: 4, column: 4 });
11
-
12
- const preRenderTableGrid = useCallback((rowIndex, columnIndex) => {
13
- const selectedRowNums = rowIndex + 1;
14
- const selectedColumnNums = columnIndex + 1;
15
- let preRenderRowNum = selectedRowNums + 1;
16
- let preRenderColumnNum = selectedColumnNums + 1;
17
- if (preRenderRowNum < 4) {
18
- preRenderRowNum = 4;
19
- } else if (preRenderRowNum > 10) {
20
- preRenderRowNum = 10;
21
- }
22
- if (preRenderColumnNum < 4) {
23
- preRenderColumnNum = 4;
24
- } else if (preRenderColumnNum > 10) {
25
- preRenderColumnNum = 10;
26
- }
27
- setSelectedGridInfo({ row: selectedRowNums, column: selectedColumnNums });
28
- setShowingGridInfo({ row: preRenderRowNum, column: preRenderColumnNum });
29
- }, []);
30
-
31
- const handleClickTableCell = useCallback(() => {
32
- insertTable(editor, selectedGridInfo.row, selectedGridInfo.column);
33
- }, [editor, selectedGridInfo]);
34
-
35
- const generateTableGrid = useCallback((rowNum, columnNum) => {
36
- const { row: selectedRowIndex, column: selectedColumnIndex } = selectedGridInfo;
37
- const rowElements = [];
38
- for (let rowIndex = 0; rowIndex < rowNum; rowIndex++) {
39
- const columnElements = [];
40
- for (let columnIndex = 0; columnIndex < columnNum; columnIndex++) {
41
- const isCellSelected = selectedRowIndex > rowIndex && selectedColumnIndex > columnIndex;
42
- columnElements.push(
43
- <div
44
- onClick={handleClickTableCell}
45
- onMouseEnter={() => preRenderTableGrid(rowIndex, columnIndex)}
46
- className={classNames('sf-table-selector-cell', { selected: isCellSelected })}
47
- key={`${rowIndex}-${columnIndex}`}
48
- ></div>
49
- );
50
- }
51
- rowElements.push(<div className='sf-table-row' key={rowIndex}>{columnElements}</div>);
52
- }
53
- return rowElements;
54
- }, [handleClickTableCell, preRenderTableGrid, selectedGridInfo]);
55
-
56
- // eslint-disable-next-line react-hooks/exhaustive-deps
57
- const tableGridElement = useMemo(() => generateTableGrid(showingGridInfo.row, showingGridInfo.column), [generateTableGrid]);
58
-
59
- return (
60
- <div className='sf-table-size-selector-card'>
61
- <p className='sf-table-grid-info'>{`${selectedGridInfo.row} x ${selectedGridInfo.column}`}</p>
62
- {tableGridElement}
63
- </div>
64
- );
65
- };
66
-
67
- TableSizeSelector.propTypes = {
68
- editor: propType.object.isRequired,
69
- };
70
-
71
- export default TableSizeSelector;