@seafile/sea-email-editor 0.0.1

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 (266) hide show
  1. package/README.md +1 -0
  2. package/dist/assets/icons/align-center.svg +1 -0
  3. package/dist/assets/icons/align-left.svg +1 -0
  4. package/dist/assets/icons/align-right.svg +1 -0
  5. package/dist/assets/icons/arrow-down.svg +1 -0
  6. package/dist/assets/icons/arrow-right.svg +1 -0
  7. package/dist/assets/icons/arrow-up.svg +1 -0
  8. package/dist/assets/icons/bold.svg +1 -0
  9. package/dist/assets/icons/callout-color.svg +1 -0
  10. package/dist/assets/icons/check-mark-option.svg +3 -0
  11. package/dist/assets/icons/check-square.svg +1 -0
  12. package/dist/assets/icons/clear-format.svg +1 -0
  13. package/dist/assets/icons/close.svg +3 -0
  14. package/dist/assets/icons/code-block.svg +1 -0
  15. package/dist/assets/icons/image.svg +1 -0
  16. package/dist/assets/icons/inline-code.svg +1 -0
  17. package/dist/assets/icons/insert.svg +1 -0
  18. package/dist/assets/icons/italic.svg +1 -0
  19. package/dist/assets/icons/link.svg +1 -0
  20. package/dist/assets/icons/more.svg +1 -0
  21. package/dist/assets/icons/ol.svg +1 -0
  22. package/dist/assets/icons/quote.svg +1 -0
  23. package/dist/assets/icons/rename.svg +4 -0
  24. package/dist/assets/icons/strikethrough.svg +1 -0
  25. package/dist/assets/icons/table.svg +1 -0
  26. package/dist/assets/icons/ul.svg +1 -0
  27. package/dist/assets/icons/underline.svg +1 -0
  28. package/dist/assets/icons/unlink.svg +1 -0
  29. package/dist/components/browser-tip/index.css +18 -0
  30. package/dist/components/browser-tip/index.js +28 -0
  31. package/dist/components/centered-loading.js +23 -0
  32. package/dist/components/icon/index.css +7 -0
  33. package/dist/components/icon/index.js +30 -0
  34. package/dist/components/icon-button/index.css +33 -0
  35. package/dist/components/icon-button/index.js +71 -0
  36. package/dist/components/index.js +92 -0
  37. package/dist/components/loading/index.css +54 -0
  38. package/dist/components/loading/index.js +15 -0
  39. package/dist/components/modal/index.css +0 -0
  40. package/dist/components/modal/index.js +27 -0
  41. package/dist/components/modal-header/index.css +22 -0
  42. package/dist/components/modal-header/index.js +36 -0
  43. package/dist/components/option/index.css +20 -0
  44. package/dist/components/option/index.js +39 -0
  45. package/dist/components/options-editor/container/index.css +49 -0
  46. package/dist/components/options-editor/container/index.js +122 -0
  47. package/dist/components/options-editor/index.css +26 -0
  48. package/dist/components/options-editor/index.js +70 -0
  49. package/dist/components/options-editor/options/index.css +5 -0
  50. package/dist/components/options-editor/options/index.js +138 -0
  51. package/dist/components/options-editor/options/option/index.css +54 -0
  52. package/dist/components/options-editor/options/option/index.js +138 -0
  53. package/dist/components/popover/index.js +85 -0
  54. package/dist/components/popover/utils.js +76 -0
  55. package/dist/components/search-input/index.css +52 -0
  56. package/dist/components/search-input/index.js +148 -0
  57. package/dist/components/selector-display/index.css +86 -0
  58. package/dist/components/selector-display/index.js +66 -0
  59. package/dist/components/toolbar/index.js +20 -0
  60. package/dist/components/toolbar/toolbar-group/index.css +13 -0
  61. package/dist/components/toolbar/toolbar-group/index.js +22 -0
  62. package/dist/components/toolbar/toolbar-item/index.css +3 -0
  63. package/dist/components/toolbar/toolbar-item/index.js +53 -0
  64. package/dist/components/tooltip/index.css +68 -0
  65. package/dist/components/tooltip/index.js +46 -0
  66. package/dist/components/tooltip/shortcut-key/index.css +7 -0
  67. package/dist/components/tooltip/shortcut-key/index.js +20 -0
  68. package/dist/constants/event-types.js +25 -0
  69. package/dist/constants/index.js +40 -0
  70. package/dist/constants/key-codes.js +104 -0
  71. package/dist/editor/index.css +44 -0
  72. package/dist/editor/index.js +50 -0
  73. package/dist/editor/main/index.css +19 -0
  74. package/dist/editor/main/index.js +166 -0
  75. package/dist/editor/with-props-editor.js +20 -0
  76. package/dist/extension/commons/dropdown-menu-item/index.css +52 -0
  77. package/dist/extension/commons/dropdown-menu-item/index.js +62 -0
  78. package/dist/extension/commons/index.js +5 -0
  79. package/dist/extension/commons/insert-element-dialog/index.js +91 -0
  80. package/dist/extension/commons/menu/index.js +3 -0
  81. package/dist/extension/commons/menu/menu-drop-down.js +98 -0
  82. package/dist/extension/commons/menu-shortcut-indicator/index.js +24 -0
  83. package/dist/extension/commons/menu-shortcut-indicator/style.css +18 -0
  84. package/dist/extension/constants/element-default-style.js +78 -0
  85. package/dist/extension/constants/element-types.js +33 -0
  86. package/dist/extension/constants/index.js +63 -0
  87. package/dist/extension/constants/keyboard.js +33 -0
  88. package/dist/extension/constants/menus-config.js +142 -0
  89. package/dist/extension/core/index.js +38 -0
  90. package/dist/extension/core/queries/index.js +507 -0
  91. package/dist/extension/core/transforms/focus-editor.js +18 -0
  92. package/dist/extension/core/transforms/index.js +49 -0
  93. package/dist/extension/core/transforms/move-children.js +35 -0
  94. package/dist/extension/core/transforms/remove-node-children.js +19 -0
  95. package/dist/extension/core/transforms/replace-node-children.js +24 -0
  96. package/dist/extension/core/utils/index.js +120 -0
  97. package/dist/extension/event-transfer/get-event-transfer.js +38 -0
  98. package/dist/extension/event-transfer/set-event-transfer.js +36 -0
  99. package/dist/extension/highlight/index.js +20 -0
  100. package/dist/extension/highlight/normalize-tokens.js +94 -0
  101. package/dist/extension/highlight/prismjs.js +27 -0
  102. package/dist/extension/highlight/set-node-decorations.js +81 -0
  103. package/dist/extension/highlight/use-highlight.js +20 -0
  104. package/dist/extension/index.js +67 -0
  105. package/dist/extension/plugins/blockquote/helpers.js +68 -0
  106. package/dist/extension/plugins/blockquote/index.js +18 -0
  107. package/dist/extension/plugins/blockquote/menu/index.js +35 -0
  108. package/dist/extension/plugins/blockquote/plugin.js +154 -0
  109. package/dist/extension/plugins/blockquote/render-elem.js +29 -0
  110. package/dist/extension/plugins/check-list/helper.js +34 -0
  111. package/dist/extension/plugins/check-list/index.js +19 -0
  112. package/dist/extension/plugins/check-list/menu/index.js +39 -0
  113. package/dist/extension/plugins/check-list/plugin.js +92 -0
  114. package/dist/extension/plugins/check-list/render-elem.js +61 -0
  115. package/dist/extension/plugins/clear-format/helpers.js +51 -0
  116. package/dist/extension/plugins/clear-format/menu/index.js +35 -0
  117. package/dist/extension/plugins/code-block/helpers.js +140 -0
  118. package/dist/extension/plugins/code-block/index.js +20 -0
  119. package/dist/extension/plugins/code-block/menu/index.js +59 -0
  120. package/dist/extension/plugins/code-block/plugin.js +288 -0
  121. package/dist/extension/plugins/code-block/render-elem/constant.js +22 -0
  122. package/dist/extension/plugins/code-block/render-elem/index.js +89 -0
  123. package/dist/extension/plugins/code-block/render-elem/language-selector/index.css +18 -0
  124. package/dist/extension/plugins/code-block/render-elem/language-selector/index.js +38 -0
  125. package/dist/extension/plugins/formula/formula.css +22 -0
  126. package/dist/extension/plugins/formula/helper.js +80 -0
  127. package/dist/extension/plugins/formula/index.js +19 -0
  128. package/dist/extension/plugins/formula/menu/formula-modal.js +98 -0
  129. package/dist/extension/plugins/formula/menu/index.js +35 -0
  130. package/dist/extension/plugins/formula/plugin.js +22 -0
  131. package/dist/extension/plugins/formula/render-elem.js +64 -0
  132. package/dist/extension/plugins/header/helper.js +55 -0
  133. package/dist/extension/plugins/header/index.js +19 -0
  134. package/dist/extension/plugins/header/menu/index.js +72 -0
  135. package/dist/extension/plugins/header/plugin.js +155 -0
  136. package/dist/extension/plugins/header/render-elem.js +39 -0
  137. package/dist/extension/plugins/html/index.js +13 -0
  138. package/dist/extension/plugins/html/plugin.js +69 -0
  139. package/dist/extension/plugins/image/helper.js +131 -0
  140. package/dist/extension/plugins/image/index.js +19 -0
  141. package/dist/extension/plugins/image/menu/image-menu-dialog.js +92 -0
  142. package/dist/extension/plugins/image/menu/index.css +3 -0
  143. package/dist/extension/plugins/image/menu/index.js +103 -0
  144. package/dist/extension/plugins/image/plugin.js +56 -0
  145. package/dist/extension/plugins/image/render-element/image-previewer.js +89 -0
  146. package/dist/extension/plugins/image/render-element/index.js +141 -0
  147. package/dist/extension/plugins/image/render-element/style.css +68 -0
  148. package/dist/extension/plugins/index.js +116 -0
  149. package/dist/extension/plugins/link/helper.js +258 -0
  150. package/dist/extension/plugins/link/index.js +19 -0
  151. package/dist/extension/plugins/link/menu/index.js +92 -0
  152. package/dist/extension/plugins/link/menu/link-modal.js +169 -0
  153. package/dist/extension/plugins/link/plugin.js +172 -0
  154. package/dist/extension/plugins/link/render-elem/index.css +12 -0
  155. package/dist/extension/plugins/link/render-elem/index.js +103 -0
  156. package/dist/extension/plugins/link/render-elem/link-op-menu/index.css +33 -0
  157. package/dist/extension/plugins/link/render-elem/link-op-menu/index.js +89 -0
  158. package/dist/extension/plugins/list/constant.js +8 -0
  159. package/dist/extension/plugins/list/helpers.js +102 -0
  160. package/dist/extension/plugins/list/index.js +19 -0
  161. package/dist/extension/plugins/list/menu/index.js +41 -0
  162. package/dist/extension/plugins/list/plugin/index.js +80 -0
  163. package/dist/extension/plugins/list/plugin/insert-break-list.js +29 -0
  164. package/dist/extension/plugins/list/plugin/insert-fragment-list.js +179 -0
  165. package/dist/extension/plugins/list/plugin/normalize-list.js +79 -0
  166. package/dist/extension/plugins/list/plugin/on-tab-handle.js +63 -0
  167. package/dist/extension/plugins/list/plugin/shortcut.js +69 -0
  168. package/dist/extension/plugins/list/queries/index.js +52 -0
  169. package/dist/extension/plugins/list/render-elem/index.js +68 -0
  170. package/dist/extension/plugins/list/transforms/index.js +75 -0
  171. package/dist/extension/plugins/list/transforms/insert-list-item.js +98 -0
  172. package/dist/extension/plugins/list/transforms/move-list-item-down.js +50 -0
  173. package/dist/extension/plugins/list/transforms/move-list-item-up.js +124 -0
  174. package/dist/extension/plugins/list/transforms/move-list-items-to-list.js +63 -0
  175. package/dist/extension/plugins/list/transforms/move-list-items.js +73 -0
  176. package/dist/extension/plugins/list/transforms/normalize-list-item.js +110 -0
  177. package/dist/extension/plugins/list/transforms/normalize-nested-list.js +38 -0
  178. package/dist/extension/plugins/list/transforms/remove-first-list-item.js +24 -0
  179. package/dist/extension/plugins/list/transforms/transforms-to-list.js +131 -0
  180. package/dist/extension/plugins/list/transforms/unwrap-list.js +48 -0
  181. package/dist/extension/plugins/markdown/index.js +12 -0
  182. package/dist/extension/plugins/markdown/plugin.js +257 -0
  183. package/dist/extension/plugins/node-id/constants.js +24 -0
  184. package/dist/extension/plugins/node-id/helpers.js +78 -0
  185. package/dist/extension/plugins/node-id/index.js +12 -0
  186. package/dist/extension/plugins/node-id/with-node-id.js +37 -0
  187. package/dist/extension/plugins/p/helper.js +17 -0
  188. package/dist/extension/plugins/p/index.js +17 -0
  189. package/dist/extension/plugins/p/plugin.js +141 -0
  190. package/dist/extension/plugins/p/render-elem.js +29 -0
  191. package/dist/extension/plugins/paragraph/helper.js +17 -0
  192. package/dist/extension/plugins/paragraph/index.js +17 -0
  193. package/dist/extension/plugins/paragraph/plugin.js +141 -0
  194. package/dist/extension/plugins/paragraph/render-elem.js +29 -0
  195. package/dist/extension/plugins/table/constant.js +24 -0
  196. package/dist/extension/plugins/table/context-menu/horizontal-align-popover/index.css +3 -0
  197. package/dist/extension/plugins/table/context-menu/horizontal-align-popover/index.js +64 -0
  198. package/dist/extension/plugins/table/context-menu/index.css +13 -0
  199. package/dist/extension/plugins/table/context-menu/index.js +152 -0
  200. package/dist/extension/plugins/table/context-menu/insert-table-element/index.css +27 -0
  201. package/dist/extension/plugins/table/context-menu/insert-table-element/index.js +113 -0
  202. package/dist/extension/plugins/table/helper.js +333 -0
  203. package/dist/extension/plugins/table/index.js +21 -0
  204. package/dist/extension/plugins/table/menu/index.js +61 -0
  205. package/dist/extension/plugins/table/menu/table-operator.js +97 -0
  206. package/dist/extension/plugins/table/menu/table-size-selector/index.css +27 -0
  207. package/dist/extension/plugins/table/menu/table-size-selector/index.js +98 -0
  208. package/dist/extension/plugins/table/model.js +102 -0
  209. package/dist/extension/plugins/table/plugin.js +351 -0
  210. package/dist/extension/plugins/table/render-elem/index.css +64 -0
  211. package/dist/extension/plugins/table/render-elem/index.js +252 -0
  212. package/dist/extension/plugins/table/table-operations.js +323 -0
  213. package/dist/extension/plugins/text-style/helpers.js +57 -0
  214. package/dist/extension/plugins/text-style/index.js +17 -0
  215. package/dist/extension/plugins/text-style/menu/index.js +37 -0
  216. package/dist/extension/plugins/text-style/plugin.js +38 -0
  217. package/dist/extension/plugins/text-style/render-elem.js +63 -0
  218. package/dist/extension/render/render-element.js +115 -0
  219. package/dist/extension/render/render-leaf.js +22 -0
  220. package/dist/extension/toolbar/index.css +16 -0
  221. package/dist/extension/toolbar/index.js +89 -0
  222. package/dist/extension/toolbar/insert-toolbar.js +78 -0
  223. package/dist/hooks/use-attachments.js +38 -0
  224. package/dist/hooks/use-container-style.js +50 -0
  225. package/dist/hooks/use-mathjax.js +46 -0
  226. package/dist/hooks/use-scroll-context.js +20 -0
  227. package/dist/hooks/use-selection-update.js +20 -0
  228. package/dist/hooks/user-link-click.js +52 -0
  229. package/dist/index.js +9 -0
  230. package/dist/intl/ReactIntlUniversal.js +310 -0
  231. package/dist/intl/constants.js +21 -0
  232. package/dist/intl/index.js +33 -0
  233. package/dist/locale/index.js +11 -0
  234. package/dist/locale/lang/en.json +83 -0
  235. package/dist/slate-convert/html-to-slate/constants.js +146 -0
  236. package/dist/slate-convert/html-to-slate/helper.js +106 -0
  237. package/dist/slate-convert/html-to-slate/index.js +138 -0
  238. package/dist/slate-convert/html-to-slate/rules/blockquote.js +26 -0
  239. package/dist/slate-convert/html-to-slate/rules/br.js +29 -0
  240. package/dist/slate-convert/html-to-slate/rules/check-list.js +29 -0
  241. package/dist/slate-convert/html-to-slate/rules/code-block.js +95 -0
  242. package/dist/slate-convert/html-to-slate/rules/header.js +26 -0
  243. package/dist/slate-convert/html-to-slate/rules/image.js +31 -0
  244. package/dist/slate-convert/html-to-slate/rules/index.js +20 -0
  245. package/dist/slate-convert/html-to-slate/rules/link.js +31 -0
  246. package/dist/slate-convert/html-to-slate/rules/list.js +74 -0
  247. package/dist/slate-convert/html-to-slate/rules/p.js +37 -0
  248. package/dist/slate-convert/html-to-slate/rules/paragraph.js +37 -0
  249. package/dist/slate-convert/html-to-slate/rules/table.js +64 -0
  250. package/dist/slate-convert/html-to-slate/rules/text.js +71 -0
  251. package/dist/slate-convert/index.js +20 -0
  252. package/dist/slate-convert/slate-to-html/index.js +143 -0
  253. package/dist/utils/common.js +46 -0
  254. package/dist/utils/deserialize-html.js +219 -0
  255. package/dist/utils/dom-utils.js +57 -0
  256. package/dist/utils/dom.js +133 -0
  257. package/dist/utils/event-bus.js +40 -0
  258. package/dist/utils/event-handler.js +44 -0
  259. package/dist/utils/get-browser-Info.js +35 -0
  260. package/dist/utils/hotkey.js +45 -0
  261. package/dist/utils/is-punctuation-mark.js +50 -0
  262. package/dist/utils/object-utils.js +56 -0
  263. package/dist/utils/search.js +20 -0
  264. package/dist/utils/translate.js +18 -0
  265. package/dist/utils/type-detection.js +42 -0
  266. package/package.json +177 -0
@@ -0,0 +1,38 @@
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 _isHotkey = _interopRequireDefault(require("is-hotkey"));
9
+ var _constants = require("../../constants");
10
+ var _helpers = require("./helpers");
11
+ const withTextStyle = editor => {
12
+ const {
13
+ onHotKeyDown
14
+ } = editor;
15
+ const newEditor = editor;
16
+ newEditor.onHotKeyDown = event => {
17
+ // Does not meet text hotkey processing conditions
18
+ if (!(0, _isHotkey.default)('mod+b', event) && !(0, _isHotkey.default)('mod+i', event)) {
19
+ return onHotKeyDown && onHotKeyDown(event);
20
+ }
21
+
22
+ // handled by text hotkey
23
+ if ((0, _helpers.isMenuDisabled)(newEditor)) {
24
+ return true;
25
+ }
26
+ if ((0, _isHotkey.default)('mod+b', event)) {
27
+ (0, _helpers.toggleTextStyle)(newEditor, _constants.TEXT_STYLE_MAP.BOLD);
28
+ return true;
29
+ }
30
+ if ((0, _isHotkey.default)('mod+i', event)) {
31
+ (0, _helpers.toggleTextStyle)(newEditor, _constants.TEXT_STYLE_MAP.ITALIC);
32
+ return true;
33
+ }
34
+ return false;
35
+ };
36
+ return newEditor;
37
+ };
38
+ var _default = exports.default = withTextStyle;
@@ -0,0 +1,63 @@
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 _react = _interopRequireDefault(require("react"));
9
+ var _constants = require("../../constants");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ const renderText = (props, editor) => {
12
+ const {
13
+ attributes,
14
+ children,
15
+ leaf
16
+ } = props;
17
+ let markedChildren = /*#__PURE__*/_react.default.cloneElement(children);
18
+ if (leaf[_constants.TEXT_STYLE_MAP.BOLD]) {
19
+ markedChildren = /*#__PURE__*/(0, _jsxRuntime.jsx)("strong", {
20
+ children: markedChildren
21
+ });
22
+ }
23
+ if (leaf[_constants.TEXT_STYLE_MAP.ITALIC]) {
24
+ markedChildren = /*#__PURE__*/(0, _jsxRuntime.jsx)("i", {
25
+ children: markedChildren
26
+ });
27
+ }
28
+ if (leaf[_constants.TEXT_STYLE_MAP.UNDERLINE]) {
29
+ markedChildren = /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
30
+ style: {
31
+ textDecoration: 'underline'
32
+ },
33
+ children: markedChildren
34
+ });
35
+ }
36
+ if (leaf[_constants.TEXT_STYLE_MAP.CODE]) {
37
+ markedChildren = /*#__PURE__*/(0, _jsxRuntime.jsx)("code", {
38
+ style: _constants.ELEMENT_DEFAULT_STYLE[_constants.ElementTypes.CODE],
39
+ children: markedChildren
40
+ });
41
+ }
42
+ if (leaf[_constants.TEXT_STYLE_MAP.DELETE]) {
43
+ markedChildren = /*#__PURE__*/(0, _jsxRuntime.jsx)("del", {
44
+ children: markedChildren
45
+ });
46
+ }
47
+ if (leaf[_constants.TEXT_STYLE_MAP.ADD]) {
48
+ markedChildren = /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
49
+ children: markedChildren
50
+ });
51
+ }
52
+ if (leaf.decoration) {
53
+ markedChildren = /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
54
+ children: markedChildren
55
+ });
56
+ }
57
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
58
+ "data-id": leaf.id,
59
+ ...attributes,
60
+ children: markedChildren
61
+ });
62
+ };
63
+ var _default = exports.default = renderText;
@@ -0,0 +1,115 @@
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 _react = _interopRequireDefault(require("react"));
9
+ var _slateReact = require("slate-react");
10
+ var _constants = require("../constants");
11
+ var _plugins = require("../plugins");
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ const SlateElement = _ref => {
14
+ let {
15
+ element,
16
+ options,
17
+ ...params
18
+ } = _ref;
19
+ const option = options ? options[element.type] : null;
20
+ const props = {
21
+ ...params,
22
+ option,
23
+ element
24
+ };
25
+ const editor = (0, _slateReact.useSlateStatic)();
26
+ switch (element.type) {
27
+ case _constants.ElementTypes.BLOCKQUOTE:
28
+ {
29
+ const [renderBlockquote] = _plugins.BlockquotePlugin.renderElements;
30
+ return renderBlockquote(props);
31
+ }
32
+ case _constants.ElementTypes.HEADER1:
33
+ case _constants.ElementTypes.HEADER2:
34
+ case _constants.ElementTypes.HEADER3:
35
+ case _constants.ElementTypes.HEADER4:
36
+ case _constants.ElementTypes.HEADER5:
37
+ case _constants.ElementTypes.HEADER6:
38
+ {
39
+ const [renderHeader] = _plugins.HeaderPlugin.renderElements;
40
+ return renderHeader(props, editor);
41
+ }
42
+ case _constants.ElementTypes.IMAGE:
43
+ {
44
+ const [renderImage] = _plugins.ImagePlugin.renderElements;
45
+ return renderImage(props, editor);
46
+ }
47
+ case _constants.ElementTypes.LINK:
48
+ {
49
+ const [renderLink] = _plugins.LinkPlugin.renderElements;
50
+ return renderLink(props, editor);
51
+ }
52
+ case _constants.ElementTypes.CODE_BLOCK:
53
+ {
54
+ const [renderCodeBlock] = _plugins.CodeBlockPlugin.renderElements;
55
+ return renderCodeBlock(props, editor);
56
+ }
57
+ case _constants.ElementTypes.CODE_LINE:
58
+ {
59
+ const [, renderCodeLine] = _plugins.CodeBlockPlugin.renderElements;
60
+ return renderCodeLine(props, editor);
61
+ }
62
+ case _constants.ElementTypes.CHECK_LIST_ITEM:
63
+ {
64
+ const [renderCheckListItem] = _plugins.CheckListPlugin.renderElements;
65
+ return renderCheckListItem(props, editor);
66
+ }
67
+ case _constants.ElementTypes.ORDERED_LIST:
68
+ case _constants.ElementTypes.UNORDERED_LIST:
69
+ {
70
+ const [renderList] = _plugins.ListPlugin.renderElements;
71
+ return renderList(props, editor);
72
+ }
73
+ case _constants.ElementTypes.LIST_ITEM:
74
+ {
75
+ const [, renderListItem] = _plugins.ListPlugin.renderElements;
76
+ return renderListItem(props, editor);
77
+ }
78
+ case _constants.ElementTypes.TABLE_CELL:
79
+ {
80
+ const [renderTableCell] = _plugins.TablePlugin.renderElements;
81
+ return renderTableCell(props);
82
+ }
83
+ case _constants.ElementTypes.TABLE_ROW:
84
+ {
85
+ const [, renderTableRow] = _plugins.TablePlugin.renderElements;
86
+ return renderTableRow(props);
87
+ }
88
+ case _constants.ElementTypes.TABLE:
89
+ {
90
+ const [,, renderTable] = _plugins.TablePlugin.renderElements;
91
+ return renderTable(props, editor);
92
+ }
93
+ case _constants.ElementTypes.FORMULA:
94
+ {
95
+ const [renderFormula] = _plugins.FormulaPlugin.renderElements;
96
+ return renderFormula(props, editor);
97
+ }
98
+ case _constants.ElementTypes.P:
99
+ {
100
+ const [renderP] = _plugins.PPlugin.renderElements;
101
+ return renderP(props);
102
+ }
103
+ default:
104
+ {
105
+ const [renderParagraph] = _plugins.ParagraphPlugin.renderElements;
106
+ return renderParagraph(props);
107
+ }
108
+ }
109
+ };
110
+ const renderElement = props => {
111
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(SlateElement, {
112
+ ...props
113
+ });
114
+ };
115
+ var _default = exports.default = renderElement;
@@ -0,0 +1,22 @@
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 _react = _interopRequireDefault(require("react"));
9
+ var _slateReact = require("slate-react");
10
+ var _plugins = require("../plugins");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ const CustomLeaf = props => {
13
+ const editor = (0, _slateReact.useSlateStatic)();
14
+ const [renderText] = _plugins.TextPlugin.renderElements;
15
+ return renderText(props, editor);
16
+ };
17
+ const renderLeaf = props => {
18
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(CustomLeaf, {
19
+ ...props
20
+ });
21
+ };
22
+ var _default = exports.default = renderLeaf;
@@ -0,0 +1,16 @@
1
+ .sea-email-editor-toolbar {
2
+ display: flex;
3
+ align-items: center;
4
+ justify-content: flex-start;
5
+ border-top-left-radius: 3px;
6
+ border-top-right-radius: 3px;
7
+ box-shadow: none;
8
+ height: 33px;
9
+ padding-right: 0;
10
+ border-bottom: 1px solid #e5e6e8;
11
+ padding: 0 10px;
12
+ position: relative;
13
+ user-select: none;
14
+ z-index: 102;
15
+ background-color: #fcfcfc !important
16
+ }
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _useSelectionUpdate = _interopRequireDefault(require("../../hooks/use-selection-update"));
11
+ var _menu = _interopRequireDefault(require("../plugins/blockquote/menu"));
12
+ var _menu2 = _interopRequireDefault(require("../plugins/header/menu"));
13
+ var _menu3 = _interopRequireDefault(require("../plugins/text-style/menu"));
14
+ var _menu4 = _interopRequireDefault(require("../plugins/link/menu"));
15
+ var _constants = require("../constants");
16
+ var _menu5 = _interopRequireDefault(require("../plugins/check-list/menu"));
17
+ var _menu6 = _interopRequireDefault(require("../plugins/list/menu"));
18
+ var _elementTypes = require("../constants/element-types");
19
+ var _menu7 = _interopRequireDefault(require("../plugins/clear-format/menu"));
20
+ var _insertToolbar = _interopRequireDefault(require("./insert-toolbar"));
21
+ var _imageMenuDialog = _interopRequireDefault(require("../plugins/image/menu/image-menu-dialog"));
22
+ var _components = require("../../components");
23
+ require("./index.css");
24
+ var _jsxRuntime = require("react/jsx-runtime");
25
+ const Toolbar = _ref => {
26
+ let {
27
+ editor,
28
+ readonly = false
29
+ } = _ref;
30
+ (0, _useSelectionUpdate.default)();
31
+ const [isShowInternetImageModal, setIsShowInternetImageModal] = (0, _react.useState)(false);
32
+ const onToggleImageDialog = (0, _react.useCallback)(() => {
33
+ setIsShowInternetImageModal(false);
34
+ }, []);
35
+ const commonProps = {
36
+ editor,
37
+ readonly
38
+ };
39
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
40
+ className: "sea-email-editor-toolbar",
41
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToolbarGroup, {
42
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_insertToolbar.default, {
43
+ editor: editor,
44
+ readonly: readonly,
45
+ setIsShowInternetImageModal: setIsShowInternetImageModal
46
+ })
47
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToolbarGroup, {
48
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_menu2.default, {
49
+ ...commonProps
50
+ })
51
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.ToolbarGroup, {
52
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_menu3.default, {
53
+ ...commonProps,
54
+ type: _constants.TEXT_STYLE_MAP.ITALIC
55
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_menu3.default, {
56
+ ...commonProps,
57
+ type: _constants.TEXT_STYLE_MAP.BOLD
58
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_menu3.default, {
59
+ ...commonProps,
60
+ type: _constants.TEXT_STYLE_MAP.UNDERLINE
61
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_menu3.default, {
62
+ ...commonProps,
63
+ type: _constants.TEXT_STYLE_MAP.CODE
64
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_menu4.default, {
65
+ ...commonProps
66
+ })]
67
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.ToolbarGroup, {
68
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_menu.default, {
69
+ ...commonProps
70
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_menu6.default, {
71
+ ...commonProps,
72
+ type: _elementTypes.UNORDERED_LIST
73
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_menu6.default, {
74
+ ...commonProps,
75
+ type: _elementTypes.ORDERED_LIST
76
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_menu5.default, {
77
+ ...commonProps
78
+ })]
79
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToolbarGroup, {
80
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_menu7.default, {
81
+ ...commonProps
82
+ })
83
+ }), isShowInternetImageModal && /*#__PURE__*/(0, _jsxRuntime.jsx)(_imageMenuDialog.default, {
84
+ editor: editor,
85
+ closeDialog: onToggleImageDialog
86
+ })]
87
+ });
88
+ };
89
+ var _default = exports.default = Toolbar;
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _menu = _interopRequireDefault(require("../plugins/image/menu"));
11
+ var _menu2 = _interopRequireDefault(require("../plugins/table/menu"));
12
+ var _menu3 = _interopRequireDefault(require("../plugins/code-block/menu"));
13
+ var _constants = require("../../constants");
14
+ var _components = require("../../components");
15
+ var _jsxRuntime = require("react/jsx-runtime");
16
+ const InsertToolbar = _ref => {
17
+ let {
18
+ editor,
19
+ readonly,
20
+ setIsShowInternetImageModal
21
+ } = _ref;
22
+ const [isShowMenu, setMenuShow] = (0, _react.useState)(false);
23
+ const disabled = readonly;
24
+ const insertButtonRef = (0, _react.useRef)(null);
25
+ const onToggle = (0, _react.useCallback)(event => {
26
+ var _event$target;
27
+ if (event !== null && event !== void 0 && event.target && (event === null || event === void 0 ? void 0 : (_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.tagName) === 'INPUT') {
28
+ return;
29
+ }
30
+ setMenuShow(!isShowMenu);
31
+ // eslint-disable-next-line react-hooks/exhaustive-deps
32
+ }, [isShowMenu]);
33
+ const props = {
34
+ editor,
35
+ readonly,
36
+ toggle: onToggle,
37
+ setIsShowInternetImageModal
38
+ };
39
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
40
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_components.SelectorDisplay, {
41
+ icon: isShowMenu ? 'arrow-up' : 'arrow-down',
42
+ onClick: onToggle,
43
+ disabled: disabled,
44
+ iconPlacement: "right",
45
+ innerRef: insertButtonRef,
46
+ border: false,
47
+ height: 24,
48
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Icon, {
49
+ icon: "insert",
50
+ className: "mr-1"
51
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
52
+ className: "text-truncate",
53
+ children: (0, _constants.gettext)('Insert')
54
+ })]
55
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Tooltip, {
56
+ target: insertButtonRef,
57
+ children: (0, _constants.gettext)('Insert')
58
+ }), isShowMenu && /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Popover, {
59
+ className: "sea-email-option-editor-popover",
60
+ target: insertButtonRef,
61
+ hidePopover: onToggle,
62
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
63
+ className: "sea-email-option-editor-container",
64
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
65
+ className: "sea-email-option-editor-content",
66
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_menu.default, {
67
+ ...props
68
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_menu2.default, {
69
+ ...props
70
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_menu3.default, {
71
+ ...props
72
+ })]
73
+ })
74
+ })
75
+ })]
76
+ });
77
+ };
78
+ var _default = exports.default = InsertToolbar;
@@ -0,0 +1,38 @@
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 _react = require("react");
9
+ var _eventBus = _interopRequireDefault(require("../utils/event-bus"));
10
+ var _eventTypes = require("../constants/event-types");
11
+ var _helper = require("../extension/plugins/link/helper");
12
+ const useAttachments = editor => {
13
+ (0, _react.useEffect)(() => {
14
+ const insertImage = (targetEditor, _ref) => {
15
+ let {
16
+ title,
17
+ url,
18
+ isImage,
19
+ selection = editor.selection
20
+ } = _ref;
21
+ if ((targetEditor === null || targetEditor === void 0 ? void 0 : targetEditor._id) !== editor._id) return;
22
+ if (isImage) {
23
+ // insertSeafileImage({ editor, title, url, selection });
24
+ } else {
25
+ (0, _helper.insertSeafileLink)({
26
+ editor,
27
+ title,
28
+ url,
29
+ selection
30
+ });
31
+ }
32
+ };
33
+ const eventBus = _eventBus.default.getInstance();
34
+ const subscribe = eventBus.subscribe(_eventTypes.EXTERNAL_EVENTS.INSERT_ATTACHMENTS, insertImage);
35
+ return subscribe;
36
+ }, [editor]);
37
+ };
38
+ var _default = exports.default = useAttachments;
@@ -0,0 +1,50 @@
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 _react = require("react");
9
+ var _outline = require("../containers/outline");
10
+ var _common = require("../utils/common");
11
+ var _eventBus = _interopRequireDefault(require("../utils/event-bus"));
12
+ var _eventTypes = require("../constants/event-types");
13
+ const useContainerStyle = function (scrollRef) {
14
+ let isShowOutline = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
15
+ const [containerStyle, setContainerStyle] = (0, _react.useState)({});
16
+
17
+ // Adjust article container margin-left value according to isShown of the outline and width of window
18
+ const handleWindowResize = (0, _react.useCallback)(() => {
19
+ const rect = scrollRef.current.getBoundingClientRect();
20
+ const articleElement = document.querySelector('.article');
21
+ const articleRect = articleElement ? articleElement.getBoundingClientRect() : null;
22
+ const isOutlineShow = (0, _outline.getOutlineSetting)();
23
+ if (isOutlineShow && articleRect && (rect.width - articleRect.width) / 2 < 280) {
24
+ setContainerStyle({
25
+ marginLeft: 280
26
+ });
27
+ } else {
28
+ setContainerStyle({});
29
+ }
30
+ }, [scrollRef]);
31
+ (0, _react.useEffect)(() => {
32
+ if (_common.isMobile) return;
33
+ if (!isShowOutline) return;
34
+ handleWindowResize();
35
+ window.addEventListener('resize', handleWindowResize);
36
+ const eventBus = _eventBus.default.getInstance();
37
+ const unsubscribeOutline = eventBus.subscribe(_eventTypes.INTERNAL_EVENTS.OUTLINE_STATE_CHANGED, handleWindowResize);
38
+ const unsubscribeResizeArticle = eventBus.subscribe(_eventTypes.INTERNAL_EVENTS.RESIZE_ARTICLE, handleWindowResize);
39
+ return () => {
40
+ window.removeEventListener('resize', handleWindowResize);
41
+ unsubscribeOutline();
42
+ unsubscribeResizeArticle();
43
+ };
44
+ // eslint-disable-next-line react-hooks/exhaustive-deps
45
+ }, []);
46
+ return {
47
+ containerStyle
48
+ };
49
+ };
50
+ var _default = exports.default = useContainerStyle;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _react = require("react");
8
+ const useMathJax = mathJaxSource => {
9
+ const [isLoading, setIsLoading] = (0, _react.useState)(true);
10
+ (0, _react.useEffect)(() => {
11
+ if (!mathJaxSource) {
12
+ setIsLoading(false);
13
+ return;
14
+ }
15
+ window.MathJax = {
16
+ options: {
17
+ enableMenu: false
18
+ },
19
+ tex: {
20
+ inlineMath: [['$', '$']],
21
+ displayMath: [['$$', '$$']]
22
+ },
23
+ svg: {
24
+ fontCache: 'global'
25
+ }
26
+ };
27
+ if (!document.querySelector('#mathjax')) {
28
+ const script = document.createElement('script');
29
+ script.src = mathJaxSource;
30
+ script.id = 'mathjax';
31
+ document.body.appendChild(script);
32
+ script.onload = () => {
33
+ setIsLoading(false);
34
+ };
35
+ }
36
+ return () => {
37
+ const script = document.getElementById('mathjax');
38
+ script && script.parentNode.removeChild(script);
39
+ };
40
+ // eslint-disable-next-line react-hooks/exhaustive-deps
41
+ }, []);
42
+ return {
43
+ isLoadingMathJax: isLoading
44
+ };
45
+ };
46
+ var _default = exports.default = useMathJax;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useScrollContext = exports.ScrollContext = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ const ScrollContext = exports.ScrollContext = /*#__PURE__*/_react.default.createContext(null);
10
+ const useScrollContext = () => {
11
+ const context = (0, _react.useContext)(ScrollContext);
12
+ if (!context) {
13
+ throw new Error('The \`useScrollContext\` hook must be used inside the <ScrollContext> component\'s context.');
14
+ }
15
+ const {
16
+ scrollRef
17
+ } = context;
18
+ return scrollRef;
19
+ };
20
+ exports.useScrollContext = useScrollContext;
@@ -0,0 +1,20 @@
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 = useSelectionUpdate;
8
+ var _react = require("react");
9
+ var _eventBus = _interopRequireDefault(require("../utils/event-bus"));
10
+ function useSelectionUpdate() {
11
+ const [, update] = (0, _react.useState)({});
12
+ (0, _react.useEffect)(() => {
13
+ const onChange = () => update({});
14
+ const eventBus = _eventBus.default.getInstance();
15
+ const unsubscribe = eventBus.subscribe('change', onChange);
16
+ return () => {
17
+ unsubscribe();
18
+ };
19
+ }, []);
20
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _common = require("../utils/common");
8
+ const {
9
+ useEffect
10
+ } = require('react');
11
+ const {
12
+ EXTERNAL_EVENTS
13
+ } = require('../constants/event-types');
14
+ const {
15
+ default: EventBus
16
+ } = require('../utils/event-bus');
17
+ const useLinkClick = (editorId, server, callback) => {
18
+ useEffect(() => {
19
+ function onLinkClick(event, sourceEditorId) {
20
+ event.preventDefault();
21
+ event.stopPropagation();
22
+ let link = '';
23
+ let target = event.target;
24
+ while (!target.dataset || !target.dataset.url) {
25
+ target = target.parentNode;
26
+ }
27
+ if (!target) return;
28
+ link = target.dataset.url;
29
+ if (editorId !== sourceEditorId) return;
30
+ let isValid = true;
31
+ if (!(0, _common.isUrl)(link)) {
32
+ isValid = false;
33
+ if (link.startsWith('/') && (0, _common.isUrl)(server + link)) {
34
+ isValid = true;
35
+ }
36
+ if (!link.startsWith('/') && (link.startsWith('mailto:') || link.startsWith('tel:'))) {
37
+ isValid = true;
38
+ }
39
+ }
40
+ if (!isValid) return;
41
+ if (callback) {
42
+ callback(link);
43
+ return;
44
+ }
45
+ window.open(link);
46
+ }
47
+ const eventBus = EventBus.getInstance();
48
+ const unsubscribe = eventBus.subscribe(EXTERNAL_EVENTS.ON_LINK_CLICK, onLinkClick);
49
+ return unsubscribe;
50
+ }, [editorId, server, callback]);
51
+ };
52
+ var _default = exports.default = useLinkClick;
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
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 _editor = _interopRequireDefault(require("./editor"));
9
+ var _default = exports.default = _editor.default;