@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
@@ -0,0 +1,235 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.upsertLinkText = exports.updateLink = exports.unWrapLinkNode = exports.isMenuDisabled = exports.isLinkType = exports.insertLink = exports.getLinkInfo = exports.generateLinkNode = void 0;
8
+ var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/regeneratorRuntime"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/asyncToGenerator"));
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
11
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
12
+ var _slate = require("slate");
13
+ var _slugid = _interopRequireDefault(require("slugid"));
14
+ var _queries = require("../../core/queries");
15
+ var _focusEditor = require("../../core/transforms/focus-editor");
16
+ var _constants = require("../../constants");
17
+ var _utils = require("../../core/utils");
18
+ var _replaceNodeChildren = require("../../core/transforms/replace-node-children");
19
+ var _ref3;
20
+ var isMenuDisabled = exports.isMenuDisabled = function isMenuDisabled(editor) {
21
+ var readonly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
22
+ if (readonly) return true;
23
+ var selection = editor.selection;
24
+ if (!selection) return false;
25
+ var selectedElems = (0, _queries.getSelectedElems)(editor);
26
+ // Check if the selected element is illegal
27
+ var isSelectedIllegalElement = selectedElems.some(function (elem) {
28
+ var type = elem.type;
29
+ if (editor.isVoid(elem)) return true;
30
+ if ([_constants.ELementTypes.CODE_BLOCK, _constants.ELementTypes.CODE_LINE].includes(type)) return true;
31
+ return false;
32
+ });
33
+ if (isSelectedIllegalElement) return true;
34
+ return false;
35
+ };
36
+ var isLinkType = exports.isLinkType = function isLinkType(editor) {
37
+ var _Editor$nodes = _slate.Editor.nodes(editor, {
38
+ match: function match(n) {
39
+ return (0, _queries.getNodeType)(n) === _constants.ELementTypes.LINK;
40
+ },
41
+ universal: true
42
+ }),
43
+ _Editor$nodes2 = (0, _slicedToArray2.default)(_Editor$nodes, 1),
44
+ match = _Editor$nodes2[0];
45
+ return !!match;
46
+ };
47
+ var generateLinkNode = exports.generateLinkNode = function generateLinkNode(url, title) {
48
+ var linkNode = {
49
+ type: _constants.ELementTypes.LINK,
50
+ url: url,
51
+ title: title,
52
+ id: _slugid.default.nice(),
53
+ children: [{
54
+ id: _slugid.default.nice(),
55
+ text: title || ''
56
+ }]
57
+ };
58
+ return linkNode;
59
+ };
60
+
61
+ /**
62
+ * @param {Object} props
63
+ * @param {Object} props.editor
64
+ * @param {String} props.url
65
+ * @param {String} props.title
66
+ * @param {InsertPosition} props.insertPosition
67
+ * @param {Object | undefined} props.slateNode
68
+ */
69
+ var insertLink = exports.insertLink = function insertLink(props) {
70
+ var editor = props.editor,
71
+ url = props.url,
72
+ title = props.title,
73
+ _props$insertPosition = props.insertPosition,
74
+ insertPosition = _props$insertPosition === void 0 ? _constants.INSERT_POSITION.CURRENT : _props$insertPosition,
75
+ slateNode = props.slateNode;
76
+ var selection = editor.selection;
77
+ if (insertPosition === _constants.INSERT_POSITION.CURRENT && isMenuDisabled(editor)) return;
78
+ // We had validated in modal,here we do it again for safety
79
+ if (!title || !url) return;
80
+ if (!selection) return;
81
+ var linkNode = generateLinkNode(url, title);
82
+ if (insertPosition === _constants.INSERT_POSITION.AFTER) {
83
+ var path = _slate.Editor.path(editor, selection);
84
+ if (slateNode && (slateNode === null || slateNode === void 0 ? void 0 : slateNode.type) === _constants.ELementTypes.LIST_ITEM) {
85
+ path = (0, _queries.findPath)(editor, slateNode, []);
86
+ var nextPath = _slate.Path.next(path);
87
+ _slate.Editor.insertNodes(editor, linkNode, {
88
+ at: nextPath
89
+ });
90
+ return;
91
+ }
92
+ var linkNodeWrapper = (0, _utils.generateEmptyElement)(_constants.ELementTypes.PARAGRAPH);
93
+ // LinkNode should be wrapped by p and within text nodes in order to be editable
94
+ linkNodeWrapper.children.push(linkNode, (0, _utils.generateDefaultText)());
95
+ _slate.Transforms.insertNodes(editor, linkNodeWrapper, {
96
+ at: [path[0] + 1]
97
+ });
98
+ (0, _focusEditor.focusEditor)(editor);
99
+ return;
100
+ }
101
+ var isCollapsed = _slate.Range.isCollapsed(selection);
102
+ if (isCollapsed) {
103
+ // If selection is collapsed, we insert a space and then insert link node that help operation easier
104
+ editor.insertText(' ');
105
+ _slate.Editor.insertFragment(editor, [linkNode]);
106
+ // Using insertText directly causes the added Spaces to be added to the linked text, as in the issue above, so replaced by insertFragment
107
+ _slate.Editor.insertFragment(editor, [{
108
+ id: _slugid.default.nice(),
109
+ text: ' '
110
+ }]);
111
+ (0, _focusEditor.focusEditor)(editor);
112
+ return;
113
+ } else {
114
+ var selectedText = _slate.Editor.string(editor, selection); // Selected text
115
+ if (selectedText !== title) {
116
+ // Replace the selected text with the link node if the selected text is different from the entered text
117
+ editor.deleteFragment();
118
+ _slate.Transforms.insertNodes(editor, linkNode);
119
+ } else {
120
+ // Wrap the selected text with the link node if the selected text is the same as the entered text
121
+ _slate.Transforms.wrapNodes(editor, linkNode, {
122
+ split: true,
123
+ at: selection
124
+ });
125
+ _slate.Transforms.collapse(editor, {
126
+ edge: 'end'
127
+ });
128
+ }
129
+ }
130
+ (0, _focusEditor.focusEditor)(editor);
131
+ };
132
+ var getLinkInfo = exports.getLinkInfo = function getLinkInfo(editor) {
133
+ var isLinkNode = isLinkType(editor);
134
+ if (!isLinkNode) return null;
135
+ var _Editor$nodes3 = _slate.Editor.nodes(editor, {
136
+ match: function match(n) {
137
+ return (0, _queries.getNodeType)(n) === _constants.ELementTypes.LINK;
138
+ },
139
+ universal: true
140
+ }),
141
+ _Editor$nodes4 = (0, _slicedToArray2.default)(_Editor$nodes3, 1),
142
+ match = _Editor$nodes4[0];
143
+ if (!match) return null;
144
+ var _match = (0, _slicedToArray2.default)(match, 2),
145
+ node = _match[0],
146
+ path = _match[1];
147
+ var showedText = (0, _queries.getEditorString)(editor, path);
148
+ return {
149
+ linkUrl: node.url,
150
+ linkTitle: showedText || node.title,
151
+ path: path
152
+ };
153
+ };
154
+ var updateLink = exports.updateLink = function updateLink(editor, newUrl, newText) {
155
+ var linkAbove = (0, _queries.getAboveNode)(editor, {
156
+ match: {
157
+ type: _constants.ELementTypes.LINK
158
+ }
159
+ });
160
+ if (!linkAbove) return;
161
+ var _ref = linkAbove[0] || {},
162
+ oldUrl = _ref.href,
163
+ oldText = _ref.title;
164
+ if (oldUrl !== newUrl || oldText !== newText) {
165
+ _slate.Transforms.setNodes(editor, {
166
+ url: newUrl,
167
+ title: newText
168
+ }, {
169
+ at: linkAbove[1]
170
+ });
171
+ }
172
+ upsertLinkText(editor, {
173
+ text: newText
174
+ });
175
+ };
176
+ var upsertLinkText = exports.upsertLinkText = function upsertLinkText(editor, _ref2) {
177
+ var text = _ref2.text;
178
+ var newLink = (0, _queries.getAboveNode)(editor, {
179
+ match: {
180
+ type: _constants.ELementTypes.LINK
181
+ }
182
+ });
183
+ if (!newLink) return;
184
+ var _newLink = (0, _slicedToArray2.default)(newLink, 2),
185
+ newLInkNode = _newLink[0],
186
+ newLinkPath = _newLink[1];
187
+ if (text && text.length && text !== (0, _queries.getEditorString)(editor, newLinkPath)) {
188
+ var firstText = newLInkNode.children[0];
189
+ (0, _replaceNodeChildren.replaceNodeChildren)(editor, {
190
+ at: newLinkPath,
191
+ nodes: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, firstText), {}, {
192
+ text: text
193
+ }),
194
+ insertOptions: {
195
+ select: true
196
+ }
197
+ });
198
+ }
199
+ };
200
+ var unWrapLinkNode = exports.unWrapLinkNode = function unWrapLinkNode(_x) {
201
+ return (_ref3 = _ref3 || (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(editor) {
202
+ var _Editor$nodes5, _Editor$nodes6, linkNode;
203
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
204
+ while (1) switch (_context.prev = _context.next) {
205
+ case 0:
206
+ if (!(editor.selection == null)) {
207
+ _context.next = 2;
208
+ break;
209
+ }
210
+ return _context.abrupt("return");
211
+ case 2:
212
+ _Editor$nodes5 = _slate.Editor.nodes(editor, {
213
+ match: function match(n) {
214
+ return (0, _queries.getNodeType)(n) === _constants.ELementTypes.LINK;
215
+ },
216
+ universal: true
217
+ }), _Editor$nodes6 = (0, _slicedToArray2.default)(_Editor$nodes5, 1), linkNode = _Editor$nodes6[0]; // Check selection is link node
218
+ if (!(!linkNode || !linkNode[0])) {
219
+ _context.next = 5;
220
+ break;
221
+ }
222
+ return _context.abrupt("return");
223
+ case 5:
224
+ _slate.Transforms.unwrapNodes(editor, {
225
+ match: function match(n) {
226
+ return (0, _queries.getNodeType)(n) === _constants.ELementTypes.LINK;
227
+ }
228
+ });
229
+ case 6:
230
+ case "end":
231
+ return _context.stop();
232
+ }
233
+ }, _callee);
234
+ }))).apply(this, arguments);
235
+ };
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _elementTypes = require("../../constants/element-types");
9
+ var _menu = _interopRequireDefault(require("./menu"));
10
+ var _plugin = _interopRequireDefault(require("./plugin"));
11
+ var _renderElem = _interopRequireDefault(require("./render-elem"));
12
+ var LinkPlugin = {
13
+ type: _elementTypes.LINK,
14
+ nodeType: 'element',
15
+ editorMenus: [_menu.default],
16
+ editorPlugin: _plugin.default,
17
+ renderElements: [_renderElem.default]
18
+ };
19
+ var _default = exports.default = LinkPlugin;
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _slate = require("slate");
13
+ var _menuItem = _interopRequireDefault(require("../../../commons/menu/menu-item"));
14
+ var _menusConfig = require("../../../constants/menus-config");
15
+ var _elementTypes = require("../../../constants/element-types");
16
+ var _helper = require("../helper");
17
+ var _eventBus = _interopRequireDefault(require("../../../../utils/event-bus"));
18
+ var _linkModal = _interopRequireDefault(require("./link-modal"));
19
+ var _eventTypes = require("../../../../constants/event-types");
20
+ var menuConfig = _menusConfig.MENUS_CONFIG_MAP[_elementTypes.LINK];
21
+ var LinkMenu = function LinkMenu(_ref) {
22
+ var isRichEditor = _ref.isRichEditor,
23
+ className = _ref.className,
24
+ readonly = _ref.readonly,
25
+ editor = _ref.editor;
26
+ var _useState = (0, _react.useState)(false),
27
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
28
+ isOpenLinkModal = _useState2[0],
29
+ setIsOpenLinkModal = _useState2[1];
30
+ var _useState3 = (0, _react.useState)({
31
+ linkTitle: '',
32
+ linkUrl: ''
33
+ }),
34
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
35
+ linkInfo = _useState4[0],
36
+ setLinkInfo = _useState4[1];
37
+ // eslint-disable-next-line react-hooks/exhaustive-deps
38
+ var isLinkActive = (0, _react.useMemo)(function () {
39
+ return (0, _helper.isLinkType)(editor);
40
+ }, [editor.selection]);
41
+ (0, _react.useEffect)(function () {
42
+ var eventBus = _eventBus.default.getInstance();
43
+ var unsubscribe = eventBus.subscribe(_eventTypes.INTERNAL_EVENTS.ON_OPEN_LINK_POPOVER, handleOpenLinkModal);
44
+ return function () {
45
+ return unsubscribe();
46
+ };
47
+ // eslint-disable-next-line react-hooks/exhaustive-deps
48
+ }, []);
49
+ (0, _react.useEffect)(function () {
50
+ if ((0, _helper.isLinkType)(editor)) {
51
+ var newTitle = editor.selection && _slate.Editor.string(editor, editor.selection);
52
+ newTitle && setLinkInfo((0, _objectSpread2.default)((0, _objectSpread2.default)({}, linkInfo), {}, {
53
+ linkTitle: newTitle
54
+ }));
55
+ }
56
+ // eslint-disable-next-line react-hooks/exhaustive-deps
57
+ }, [editor.selection]);
58
+ var handleOpenLinkModal = (0, _react.useCallback)(function (linkInfo) {
59
+ Reflect.ownKeys.length && setLinkInfo(linkInfo);
60
+ setIsOpenLinkModal(true);
61
+ }, [setIsOpenLinkModal, setLinkInfo]);
62
+ var onMouseDown = (0, _react.useCallback)(function (event) {
63
+ event.preventDefault();
64
+ event.stopPropagation();
65
+ if (isLinkActive) {
66
+ isLinkActive && (0, _helper.unWrapLinkNode)(editor);
67
+ return;
68
+ }
69
+ if (editor.selection) {
70
+ var selectedText = _slate.Editor.string(editor, editor.selection);
71
+ setLinkInfo((0, _objectSpread2.default)((0, _objectSpread2.default)({}, linkInfo), {}, {
72
+ linkTitle: selectedText
73
+ }));
74
+ }
75
+ setIsOpenLinkModal(true);
76
+ document.getElementById("seafile_".concat(_elementTypes.LINK)).blur();
77
+ }, [editor, isLinkActive, linkInfo]);
78
+ var onCloseModal = (0, _react.useCallback)(function () {
79
+ setIsOpenLinkModal(false);
80
+ setLinkInfo({
81
+ linkTitle: '',
82
+ linkUrl: ''
83
+ });
84
+ }, []);
85
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_menuItem.default, Object.assign({
86
+ isRichEditor: isRichEditor,
87
+ className: className,
88
+ disabled: (0, _helper.isMenuDisabled)(editor, readonly),
89
+ isActive: isLinkActive,
90
+ onMouseDown: onMouseDown
91
+ }, menuConfig)), isOpenLinkModal && /*#__PURE__*/_react.default.createElement(_linkModal.default, {
92
+ onCloseModal: onCloseModal,
93
+ editor: editor,
94
+ linkTitle: linkInfo.linkTitle,
95
+ linkUrl: linkInfo.linkUrl
96
+ }));
97
+ };
98
+ var _default = exports.default = LinkMenu;
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/defineProperty"));
10
+ var _objectSpread6 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
11
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
12
+ var _react = _interopRequireWildcard(require("react"));
13
+ var _reactstrap = require("reactstrap");
14
+ var _reactI18next = require("react-i18next");
15
+ var _helper = require("../helper");
16
+ var _common = require("../../../../utils/common");
17
+ var LinkModal = function LinkModal(_ref) {
18
+ var editor = _ref.editor,
19
+ onCloseModal = _ref.onCloseModal,
20
+ linkTitle = _ref.linkTitle,
21
+ linkUrl = _ref.linkUrl;
22
+ var _useState = (0, _react.useState)({
23
+ linkUrl: linkUrl !== null && linkUrl !== void 0 ? linkUrl : '',
24
+ linkTitle: linkTitle !== null && linkTitle !== void 0 ? linkTitle : ''
25
+ }),
26
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
27
+ formData = _useState2[0],
28
+ setFormData = _useState2[1];
29
+ var _useState3 = (0, _react.useState)({
30
+ linkUrl: '',
31
+ linkTitle: ''
32
+ }),
33
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
34
+ validatorErrorMessage = _useState4[0],
35
+ setValidatorErrorMessage = _useState4[1];
36
+ var linkAddressRef = (0, _react.useRef)(null);
37
+ var _useTranslation = (0, _reactI18next.useTranslation)(),
38
+ t = _useTranslation.t;
39
+ var isSubmitDisabled = (0, _react.useMemo)(function () {
40
+ var isFormDataEmpty = Object.values(formData).some(function (value) {
41
+ return value.length === 0;
42
+ });
43
+ if (isFormDataEmpty) return true;
44
+ var isValidatorErrorMessage = Object.values(validatorErrorMessage).some(function (value) {
45
+ return value.length > 0;
46
+ });
47
+ if (isValidatorErrorMessage) return true;
48
+ return false;
49
+ }, [formData, validatorErrorMessage]);
50
+ var onOpened = (0, _react.useCallback)(function () {
51
+ var _linkAddressRef$curre;
52
+ (_linkAddressRef$curre = linkAddressRef.current) === null || _linkAddressRef$curre === void 0 ? void 0 : _linkAddressRef$curre.focus();
53
+ }, []);
54
+
55
+ /**
56
+ * @param {String} formItemName form item name
57
+ * @param {String} formItemValue form item value
58
+ * @returns if validate passed, return Promise.resolve(); else return Promise.reject(error message);
59
+ */
60
+ var validateFormData = (0, _react.useCallback)(function (formItemName, formItemValue) {
61
+ if (formItemName === 'linkUrl') {
62
+ if (formItemValue.length === 0) return Promise.reject('Link_address_required');
63
+ if (!(0, _common.isUrl)(formItemValue)) return Promise.reject('Link_address_invalid');
64
+ }
65
+ if (formItemName === 'linkTitle') {
66
+ if (!formItemValue.length) return Promise.reject('Link_title_required');
67
+ if (!formItemValue.trim().length) return Promise.reject('Blank_title_not_allowed');
68
+ }
69
+ return Promise.resolve();
70
+ }, []);
71
+ var preProcessBeforeOnchange = (0, _react.useCallback)(function (formItemName, formItemValue) {
72
+ if (formItemName === 'linkUrl') {
73
+ return formItemValue.trim();
74
+ }
75
+ return formItemValue;
76
+ }, []);
77
+ var onFormValueChange = (0, _react.useCallback)(function (e) {
78
+ var formItemName = e.target.name;
79
+ var formItemValue = e.target.value;
80
+ // pre-process form item value
81
+ formItemValue = preProcessBeforeOnchange(formItemName, formItemValue);
82
+ validateFormData(formItemName, formItemValue).then(function () {
83
+ return setValidatorErrorMessage((0, _objectSpread6.default)((0, _objectSpread6.default)({}, validatorErrorMessage), {}, (0, _defineProperty2.default)({}, formItemName, '')));
84
+ }, function (errMsg) {
85
+ return setValidatorErrorMessage((0, _objectSpread6.default)((0, _objectSpread6.default)({}, validatorErrorMessage), {}, (0, _defineProperty2.default)({}, formItemName, errMsg)));
86
+ });
87
+ setFormData((0, _objectSpread6.default)((0, _objectSpread6.default)({}, formData), {}, (0, _defineProperty2.default)({}, formItemName, formItemValue)));
88
+ }, [formData, preProcessBeforeOnchange, validateFormData, validatorErrorMessage]);
89
+ var onSubmit = (0, _react.useCallback)(function (e) {
90
+ // re-validate form data before submit
91
+ Object.entries(formData).forEach(function (_ref2) {
92
+ var _ref3 = (0, _slicedToArray2.default)(_ref2, 2),
93
+ key = _ref3[0],
94
+ value = _ref3[1];
95
+ return validateFormData(key, value).catch(function (errMsg) {
96
+ return setValidatorErrorMessage(function (prev) {
97
+ return (0, _objectSpread6.default)((0, _objectSpread6.default)({}, prev), {}, (0, _defineProperty2.default)({}, key, errMsg));
98
+ });
99
+ });
100
+ });
101
+ if (!isSubmitDisabled) {
102
+ var isLinkActive = (0, _helper.isLinkType)(editor);
103
+ isLinkActive ? (0, _helper.updateLink)(editor, formData.linkUrl, formData.linkTitle) : (0, _helper.insertLink)({
104
+ editor: editor,
105
+ url: formData.linkUrl,
106
+ title: formData.linkTitle
107
+ });
108
+ onCloseModal();
109
+ }
110
+ e.preventDefault();
111
+ e.stopPropagation();
112
+ }, [editor, formData, isSubmitDisabled, onCloseModal, validateFormData]);
113
+ var onKeydown = (0, _react.useCallback)(function (e) {
114
+ if (e.key === 'Enter') {
115
+ onSubmit(e);
116
+ }
117
+ }, [onSubmit]);
118
+ return /*#__PURE__*/_react.default.createElement(_reactstrap.Modal, {
119
+ isOpen: true,
120
+ toggle: onCloseModal,
121
+ onOpened: onOpened
122
+ }, /*#__PURE__*/_react.default.createElement(_reactstrap.ModalHeader, {
123
+ toggle: onCloseModal
124
+ }, t('Insert_link')), /*#__PURE__*/_react.default.createElement(_reactstrap.ModalBody, null, /*#__PURE__*/_react.default.createElement(_reactstrap.Form, {
125
+ onChange: onFormValueChange
126
+ }, /*#__PURE__*/_react.default.createElement(_reactstrap.FormGroup, null, /*#__PURE__*/_react.default.createElement(_reactstrap.Label, {
127
+ for: "linkUrl"
128
+ }, t('Link_address')), /*#__PURE__*/_react.default.createElement(_reactstrap.Input, {
129
+ onKeyDown: onKeydown
130
+ // `onChange={() => void 0}` to fix reactstrap error which need `onChange` when `value` setteled, (`onChange` has been listened at `<Form>` )
131
+ ,
132
+ onChange: function onChange() {
133
+ return void 0;
134
+ },
135
+ value: formData.linkUrl,
136
+ invalid: !!validatorErrorMessage.linkUrl,
137
+ name: "linkUrl",
138
+ innerRef: linkAddressRef,
139
+ type: "url",
140
+ id: "linkUrl"
141
+ }), /*#__PURE__*/_react.default.createElement(_reactstrap.FormFeedback, null, t(validatorErrorMessage.linkUrl))), /*#__PURE__*/_react.default.createElement(_reactstrap.FormGroup, null, /*#__PURE__*/_react.default.createElement(_reactstrap.Label, {
142
+ for: "linkTitle"
143
+ }, t('Link_title')), /*#__PURE__*/_react.default.createElement(_reactstrap.Input, {
144
+ onKeyDown: onKeydown
145
+ // `onChange={() => void 0}` to fix reactstrap error which need `onChange` when `value` setteled, (`onChange` has been listened at `<Form>` )
146
+ ,
147
+ onChange: function onChange() {
148
+ return void 0;
149
+ },
150
+ value: formData.linkTitle,
151
+ invalid: !!validatorErrorMessage.linkTitle,
152
+ name: "linkTitle",
153
+ id: "linkTitle"
154
+ }), /*#__PURE__*/_react.default.createElement(_reactstrap.FormFeedback, null, t(validatorErrorMessage.linkTitle))))), /*#__PURE__*/_react.default.createElement(_reactstrap.ModalFooter, null, /*#__PURE__*/_react.default.createElement(_reactstrap.Button, {
155
+ onClick: onCloseModal,
156
+ color: "secondary"
157
+ }, t('Cancel')), /*#__PURE__*/_react.default.createElement(_reactstrap.Button, {
158
+ onClick: onSubmit,
159
+ disabled: isSubmitDisabled,
160
+ color: "primary"
161
+ }, t('Add_link'))));
162
+ };
163
+ var _default = exports.default = LinkModal;
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
9
+ var _slate = require("slate");
10
+ var _slugid = _interopRequireDefault(require("slugid"));
11
+ var _queries = require("../../core/queries");
12
+ var _helper = require("./helper");
13
+ var _elementTypes = require("../../constants/element-types");
14
+ var _common = require("../../../utils/common");
15
+ var _focusEditor = require("../../core/transforms/focus-editor");
16
+ var withLink = function withLink(editor) {
17
+ var isInline = editor.isInline,
18
+ deleteBackward = editor.deleteBackward,
19
+ insertText = editor.insertText,
20
+ normalizeNode = editor.normalizeNode,
21
+ insertData = editor.insertData;
22
+ var newEditor = editor;
23
+
24
+ // Rewrite isInline
25
+ newEditor.isInline = function (elem) {
26
+ var type = elem.type;
27
+ if (type === _elementTypes.LINK) {
28
+ return true;
29
+ }
30
+ return isInline(elem);
31
+ };
32
+
33
+ // ! bug: insertFragment will insert the same character twice in LinkNode, so we need to delete the first character
34
+ newEditor.insertText = function (text) {
35
+ var isCollapsed = _slate.Range.isCollapsed(editor.selection);
36
+ var path = _slate.Editor.path(editor, editor.selection);
37
+ var isLinkNode = (0, _queries.getSelectedNodeByType)(editor, _elementTypes.LINK);
38
+ var isFocusAtLinkEnd = _slate.Editor.isEnd(editor, editor.selection.focus, path);
39
+ if (isCollapsed && isLinkNode && isFocusAtLinkEnd) {
40
+ _slate.Editor.insertFragment(newEditor, [{
41
+ id: _slugid.default.nice(),
42
+ text: text
43
+ }]);
44
+ return;
45
+ }
46
+ return insertText(text);
47
+ };
48
+ newEditor.insertData = function (data) {
49
+ // Paste link content
50
+ var text = data.getData('text/plain');
51
+ if ((0, _common.isUrl)(text) && !(0, _common.isImage)(text)) {
52
+ var link = (0, _helper.generateLinkNode)(text, text);
53
+ _slate.Editor.insertFragment(newEditor, [link], {
54
+ select: true
55
+ });
56
+ return;
57
+ }
58
+ insertData(data);
59
+ };
60
+ newEditor.deleteBackward = function (unit) {
61
+ var selection = newEditor.selection;
62
+ if (!selection) return deleteBackward(unit);
63
+ // Delete link node
64
+ var isDeletingLinkNode = (0, _helper.isLinkType)(editor);
65
+ if (isDeletingLinkNode) {
66
+ var linkNodeInfo = (0, _helper.getLinkInfo)(editor);
67
+ var next = _slate.Editor.next(editor);
68
+ var nextPath = _slate.Path.next(linkNodeInfo.path);
69
+ var nextNode = _slate.Editor.node(editor, nextPath);
70
+ (0, _focusEditor.focusEditor)(editor, next[1]);
71
+ _slate.Transforms.select(editor, nextNode[1]);
72
+ if (linkNodeInfo && linkNodeInfo.linkTitle.length === 1) {
73
+ _slate.Transforms.delete(newEditor, {
74
+ at: linkNodeInfo.path
75
+ });
76
+ return;
77
+ }
78
+ }
79
+ return deleteBackward(unit);
80
+ };
81
+
82
+ // Rewrite normalizeNode
83
+ newEditor.normalizeNode = function (_ref) {
84
+ var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
85
+ node = _ref2[0],
86
+ path = _ref2[1];
87
+ var type = (0, _queries.getNodeType)(node);
88
+ if (type !== _elementTypes.LINK) {
89
+ // If the type is not link, perform default normalizeNode
90
+ return normalizeNode([node, path]);
91
+ }
92
+
93
+ // If the link is empty, delete it
94
+ var str = _slate.Node.string(node);
95
+ if (str === '') {
96
+ return _slate.Transforms.removeNodes(newEditor, {
97
+ at: path
98
+ });
99
+ }
100
+ return normalizeNode([node, path]);
101
+ };
102
+ return newEditor;
103
+ };
104
+ var _default = exports.default = withLink;