@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,252 @@
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 = exports.RenderTableRow = exports.RenderTableCell = void 0;
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _slateReact = require("slate-react");
11
+ var _slate = require("slate");
12
+ var _classnames = _interopRequireDefault(require("classnames"));
13
+ var _constant = require("../constant");
14
+ var _contextMenu = _interopRequireDefault(require("../context-menu"));
15
+ var _helper = require("../helper");
16
+ var _core = require("../../../core");
17
+ var _constants = require("../../../constants");
18
+ var _eventBus = _interopRequireDefault(require("../../../../utils/event-bus"));
19
+ var _eventTypes = require("../../../../constants/event-types");
20
+ require("./index.css");
21
+ var _jsxRuntime = require("react/jsx-runtime");
22
+ const RenderTableContainer = (_ref, editor) => {
23
+ let {
24
+ attributes,
25
+ children,
26
+ element
27
+ } = _ref;
28
+ const tableRef = (0, _react.useRef)(null);
29
+ const startGridRef = (0, _react.useRef)({
30
+ rowIndex: -1,
31
+ colIndex: -1
32
+ });
33
+ const [isShowContextMenu, setIsShowContextMenu] = (0, _react.useState)(false);
34
+ const [contextMenuPosition, setContextMenuPosition] = (0, _react.useState)({
35
+ top: 0,
36
+ left: 0
37
+ });
38
+ const [, setSelectGridRange] = (0, _react.useState)({
39
+ startRowIndex: -1,
40
+ startColIndex: -1,
41
+ endRowIndex: -1,
42
+ endColIndex: -1
43
+ });
44
+ const isReadonly = (0, _slateReact.useReadOnly)();
45
+ (0, _react.useEffect)(() => {
46
+ if (isReadonly) return;
47
+ clearSelectedCells();
48
+ document.addEventListener('contextmenu', handleContextMenu, true);
49
+ document.addEventListener('click', handleOutsideMouseDown);
50
+ const eventBus = _eventBus.default.getInstance();
51
+ const unSubscribe = eventBus.subscribe(_eventTypes.INTERNAL_EVENTS.ON_SELECT_ALL_CELL, handleSelectAllCells);
52
+ return () => {
53
+ document.removeEventListener('contextmenu', handleContextMenu, true);
54
+ document.removeEventListener('click', handleOutsideMouseDown);
55
+ unSubscribe();
56
+ };
57
+ // eslint-disable-next-line react-hooks/exhaustive-deps
58
+ }, []);
59
+ const getTableElement = (0, _react.useCallback)((node, type) => {
60
+ var _target$nodeName;
61
+ let target = node;
62
+ if (((_target$nodeName = target.nodeName) === null || _target$nodeName === void 0 ? void 0 : _target$nodeName.toLowerCase()) === type) return target;
63
+ while (target.nodeName && ((_target$nodeName2 = target.nodeName) === null || _target$nodeName2 === void 0 ? void 0 : _target$nodeName2.toLowerCase()) !== type) {
64
+ var _target$nodeName2;
65
+ target = target.parentNode;
66
+ }
67
+ return target;
68
+ }, []);
69
+ const clearSelectedCells = (0, _react.useCallback)(e => {
70
+ var _document$querySelect, _tableRef$current;
71
+ handleCloseContextMenu();
72
+ // Keep selecting when using alignment tool
73
+ const isTriggerByAlignmentTool = (_document$querySelect = document.querySelector('.sea-email-table-operations-group')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.contains(e === null || e === void 0 ? void 0 : e.target);
74
+ if (isTriggerByAlignmentTool) return;
75
+ (_tableRef$current = tableRef.current) === null || _tableRef$current === void 0 ? void 0 : _tableRef$current.querySelectorAll('.selected-cell').forEach(selectedCell => {
76
+ selectedCell.classList.remove('selected-cell', 'selected-cell-left', 'selected-cell-bottom', 'selected-cell-top', 'selected-cell-right');
77
+ });
78
+ }, []);
79
+ const updateSelectedCellStyles = (0, _react.useCallback)((startRowIndex, endRowIndex, startColIndex, endColIndex) => {
80
+ clearSelectedCells();
81
+ if (startColIndex < 0 || startRowIndex < 0) return;
82
+ for (let rowIndex = startRowIndex; rowIndex <= endRowIndex; rowIndex++) {
83
+ let currentRow = tableRef.current.querySelectorAll(_constant.TABLE_ROW_NODE_NAME)[rowIndex];
84
+ for (let colIndex = startColIndex; colIndex <= endColIndex; colIndex++) {
85
+ const selectedCell = currentRow.querySelectorAll(_constant.TABLE_CELL_NODE_NAME)[colIndex];
86
+ selectedCell.classList.add('selected-cell');
87
+ // Set selected cell border
88
+ rowIndex === startRowIndex && selectedCell.classList.add('selected-cell-top');
89
+ colIndex === startColIndex && selectedCell.classList.add('selected-cell-left');
90
+ colIndex === endColIndex && selectedCell.classList.add('selected-cell-right');
91
+ rowIndex === endRowIndex && selectedCell.classList.add('selected-cell-bottom');
92
+ }
93
+ }
94
+ setSelectGridRange({
95
+ startRowIndex,
96
+ endRowIndex,
97
+ startColIndex,
98
+ endColIndex
99
+ });
100
+ }, [clearSelectedCells]);
101
+ const handleSelectAllCells = (0, _react.useCallback)(tableId => {
102
+ if (tableId !== element.id) return;
103
+ const startRowIndex = 0;
104
+ const startColIndex = 0;
105
+ const endRowIndex = element.children.length - 1;
106
+ const endColIndex = element.children[0].children.length - 1;
107
+ updateSelectedCellStyles(startRowIndex, endRowIndex, startColIndex, endColIndex);
108
+ }, [element.children, element.id, updateSelectedCellStyles]);
109
+
110
+ // select table cells
111
+ const handleMouseMove = (0, _react.useCallback)(e => {
112
+ var _e$target$nodeName;
113
+ // Check if the target is in the table
114
+ if (((_e$target$nodeName = e.target.nodeName) === null || _e$target$nodeName === void 0 ? void 0 : _e$target$nodeName.toLowerCase()) === _constant.TABLE_BODY_NODE_NAME || !tableRef.current.contains(e.target)) return;
115
+ // Figure out select range
116
+ const {
117
+ startRowIndex,
118
+ startColIndex
119
+ } = startGridRef.current;
120
+ const endRowIndex = getTableElement(e.target, _constant.TABLE_ROW_NODE_NAME).rowIndex;
121
+ const endColIndex = getTableElement(e.target, _constant.TABLE_CELL_NODE_NAME).cellIndex;
122
+ const minRowIndex = Math.min(startRowIndex, endRowIndex);
123
+ const maxRowIndex = Math.max(startRowIndex, endRowIndex);
124
+ const minColIndex = Math.min(startColIndex, endColIndex);
125
+ const maxColIndex = Math.max(startColIndex, endColIndex);
126
+ // Select one cell
127
+ if (minRowIndex === maxRowIndex && minColIndex === maxColIndex) return;
128
+
129
+ // collapse selection
130
+ window.getSelection().collapseToEnd();
131
+ updateSelectedCellStyles(minRowIndex, maxRowIndex, minColIndex, maxColIndex);
132
+ }, [getTableElement, updateSelectedCellStyles]);
133
+
134
+ // end select table cells
135
+ const handleMouseUp = (0, _react.useCallback)(e => {
136
+ document.removeEventListener('mousemove', handleMouseMove);
137
+ document.removeEventListener('mouseup', handleMouseUp);
138
+ }, [handleMouseMove]);
139
+ const handleMouseDown = (0, _react.useCallback)(e => {
140
+ var _e$target$nodeName2;
141
+ if (e.target.nodeName === 'INPUT') return;
142
+ if (((_e$target$nodeName2 = e.target.nodeName) === null || _e$target$nodeName2 === void 0 ? void 0 : _e$target$nodeName2.toLowerCase()) === _constant.TABLE_BODY_NODE_NAME || !tableRef.current.contains(e.target)) return;
143
+ // Clear last rendered styles
144
+ clearSelectedCells();
145
+ // Set new select range
146
+ const startRowIndex = getTableElement(e.target, _constant.TABLE_ROW_NODE_NAME).rowIndex;
147
+ const startColIndex = getTableElement(e.target, _constant.TABLE_CELL_NODE_NAME).cellIndex;
148
+ startGridRef.current = {
149
+ startRowIndex: startRowIndex,
150
+ startColIndex: startColIndex
151
+ };
152
+
153
+ // begin select table cells
154
+ document.addEventListener('mousemove', handleMouseMove);
155
+ document.addEventListener('mouseup', handleMouseUp);
156
+ }, [clearSelectedCells, getTableElement, handleMouseMove, handleMouseUp]);
157
+ const handleOutsideMouseDown = (0, _react.useCallback)(e => {
158
+ if (e.target.nodeName === 'INPUT') return;
159
+ clearSelectedCells();
160
+ }, [clearSelectedCells]);
161
+ const handleContextMenu = (0, _react.useCallback)(e => {
162
+ if (!tableRef.current.contains(e.target)) {
163
+ handleCloseContextMenu();
164
+ return;
165
+ }
166
+ e.preventDefault();
167
+ e.stopPropagation();
168
+ const position = (0, _helper.getContextMenuPosition)(e, tableRef);
169
+ setContextMenuPosition(position);
170
+ setIsShowContextMenu(true);
171
+ }, []);
172
+ const handleCloseContextMenu = () => {
173
+ setIsShowContextMenu(false);
174
+ };
175
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
176
+ style: {
177
+ position: 'relative'
178
+ },
179
+ "data-id": element.id,
180
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("table", {
181
+ ref: tableRef,
182
+ onMouseDown: handleMouseDown,
183
+ className: (0, _classnames.default)('sea-email-table-container', element.className),
184
+ style: {
185
+ ...(_constants.ELEMENT_DEFAULT_STYLE[element.type] || {}),
186
+ ...((element === null || element === void 0 ? void 0 : element.style) || {})
187
+ },
188
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("tbody", {
189
+ ...attributes,
190
+ children: children
191
+ })
192
+ }), isShowContextMenu && /*#__PURE__*/(0, _jsxRuntime.jsx)(_contextMenu.default, {
193
+ element: element,
194
+ position: contextMenuPosition,
195
+ editor: editor,
196
+ handleCloseContextMenu: handleCloseContextMenu
197
+ })]
198
+ });
199
+ };
200
+ var _default = exports.default = RenderTableContainer;
201
+ const RenderTableRow = _ref2 => {
202
+ let {
203
+ attributes,
204
+ children,
205
+ element,
206
+ ...props
207
+ } = _ref2;
208
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("tr", {
209
+ ...attributes,
210
+ "data-id": element.id,
211
+ className: element.className,
212
+ style: {
213
+ ...(_constants.ELEMENT_DEFAULT_STYLE[element.type] || {}),
214
+ ...((element === null || element === void 0 ? void 0 : element.style) || {})
215
+ },
216
+ children: children
217
+ });
218
+ };
219
+ exports.RenderTableRow = RenderTableRow;
220
+ const RenderTableCell = _ref3 => {
221
+ let {
222
+ attributes,
223
+ children,
224
+ element
225
+ } = _ref3;
226
+ const editor = (0, _slateReact.useSlateStatic)();
227
+ const cellPath = (0, _core.findPath)(editor, element, [0, 0]);
228
+ const pathLength = cellPath.length;
229
+ const cellIndex = cellPath[pathLength - 1];
230
+ const rowEntry = _slate.Editor.parent(editor, cellPath);
231
+ const tableEntry = _slate.Editor.parent(editor, rowEntry[1]);
232
+ const table = tableEntry[0];
233
+ let style = {};
234
+ if (table.align && Array.isArray(table.align)) {
235
+ style['textAlign'] = table.align[cellIndex] || _constants.TEXT_ALIGN.LEFT;
236
+ } else {
237
+ style['textAlign'] = _constants.TEXT_ALIGN.LEFT;
238
+ }
239
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("td", {
240
+ "data-root": "true",
241
+ "data-id": element.id,
242
+ ...attributes,
243
+ className: element.className,
244
+ style: {
245
+ ...(_constants.ELEMENT_DEFAULT_STYLE[element.type] || {}),
246
+ ...((element === null || element === void 0 ? void 0 : element.style) || {}),
247
+ ...style
248
+ },
249
+ children: children
250
+ });
251
+ };
252
+ exports.RenderTableCell = RenderTableCell;
@@ -0,0 +1,323 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.removeTable = exports.removeRow = exports.removeColumn = exports.insertTableElement = exports.insertRow = exports.insertColumn = exports.changeColumnAlign = void 0;
7
+ var _slate = require("slate");
8
+ var _constants = require("../../constants");
9
+ var _helper = require("./helper");
10
+ var _model = require("./model");
11
+ var _core = require("../../core");
12
+ var _constant = require("./constant");
13
+ var _elementTypes = require("../../constants/element-types");
14
+ /**
15
+ * @param {Object} editor
16
+ * @param {INSERT_POSITION.AFTER | INSERT_POSITION.BEFORE} insertPosition by default is INSERT_POSITION.AFTER
17
+ */
18
+ const insertRow = function (editor) {
19
+ let position = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _constants.INSERT_POSITION.AFTER;
20
+ const {
21
+ tableEntry: [, tablePath],
22
+ rowEntry: [rowNode],
23
+ rowIndex
24
+ } = (0, _helper.getTableFocusingInfos)(editor);
25
+ const getInsertPath = rowIndex => {
26
+ const handlePosition = {
27
+ [_constants.INSERT_POSITION.BEFORE]: rowIndex => tablePath.concat(rowIndex),
28
+ [_constants.INSERT_POSITION.AFTER]: rowIndex => tablePath.concat(rowIndex + 1)
29
+ };
30
+ return handlePosition[position](rowIndex);
31
+ };
32
+ const insertPath = getInsertPath(rowIndex);
33
+ const insertRowChildren = rowNode.children.map(_ref => {
34
+ let {
35
+ align
36
+ } = _ref;
37
+ return (0, _model.generateTableCell)({
38
+ align
39
+ });
40
+ });
41
+ const insertRow = (0, _model.generateTableRow)({
42
+ childrenOrText: insertRowChildren
43
+ });
44
+ _slate.Transforms.insertNodes(editor, insertRow, {
45
+ at: insertPath
46
+ });
47
+ };
48
+ exports.insertRow = insertRow;
49
+ const removeRow = editor => {
50
+ const isSelectMultipleTable = (0, _helper.isSelectingMultipleTables)(editor);
51
+ if (isSelectMultipleTable) return;
52
+ const selectInfo = (0, _helper.getSelectGrid)(editor);
53
+ const [tableEntry] = (0, _helper.getTableEntry)(editor);
54
+ if (!tableEntry) return;
55
+ if (selectInfo) {
56
+ const {
57
+ startRowIndex,
58
+ endRowIndex
59
+ } = selectInfo;
60
+ const [table, tablePath] = tableEntry;
61
+ const tableRowCount = table.children.length;
62
+
63
+ // Remove all rows
64
+ if (startRowIndex === 0 && endRowIndex === tableRowCount - 1) return removeTable(editor);
65
+ for (let index = endRowIndex; index >= startRowIndex; index--) {
66
+ const rowPath = tablePath.concat(index);
67
+ _slate.Transforms.removeNodes(editor, {
68
+ at: rowPath
69
+ });
70
+ }
71
+ const focusPoint = _slate.Editor.start(editor, tableEntry[1].concat(startRowIndex - 1 < 0 ? 0 : startRowIndex - 1));
72
+ (0, _core.focusEditor)(editor, focusPoint);
73
+ return;
74
+ }
75
+ const {
76
+ tableEntry: [tableNode, tablePath],
77
+ rowEntry: [, rowPath],
78
+ rowIndex
79
+ } = (0, _helper.getTableFocusingInfos)(editor);
80
+ let focusPoint = null;
81
+ const tableHeight = tableNode.children.length;
82
+ // If table has one more row, remove row, else remove table
83
+ if (tableHeight > 1) {
84
+ // If removing row is the last row, focus on the previous row
85
+ const isRemovingLastRow = rowIndex === tableHeight - 1;
86
+ focusPoint = isRemovingLastRow ? _slate.Editor.start(editor, tablePath.concat(rowIndex - 1)) : _slate.Editor.start(editor, rowPath);
87
+ _slate.Transforms.removeNodes(editor, {
88
+ at: rowPath
89
+ });
90
+ (0, _core.focusEditor)(editor, focusPoint);
91
+ } else {
92
+ return removeTable(editor);
93
+ }
94
+ };
95
+ exports.removeRow = removeRow;
96
+ const removeTable = editor => {
97
+ const [tableNodeEntry] = (0, _helper.getTableEntry)(editor);
98
+ if (!tableNodeEntry) return;
99
+ const [table, tablePath] = tableNodeEntry;
100
+ const isLast = (0, _core.isLastNode)(editor, table);
101
+ if (isLast) {
102
+ const paragraph = (0, _core.generateDefaultParagraph)();
103
+ _slate.Transforms.removeNodes(editor, {
104
+ at: tablePath
105
+ });
106
+ _slate.Transforms.insertNodes(editor, paragraph, {
107
+ at: tablePath
108
+ });
109
+ const focusPoint = _slate.Editor.start(editor, tablePath);
110
+ (0, _core.focusEditor)(editor, focusPoint);
111
+ return;
112
+ }
113
+ const focusPoint = _slate.Editor.start(editor, tablePath[1]);
114
+ _slate.Transforms.removeNodes(editor, {
115
+ at: tablePath
116
+ });
117
+ (0, _core.focusEditor)(editor, focusPoint);
118
+ };
119
+
120
+ /**
121
+ * @param {Object} editor
122
+ * @param {INSERT_POSITION.AFTER | INSERT_POSITION.BEFORE} insertPosition by default is INSERT_POSITION.AFTER
123
+ */
124
+ exports.removeTable = removeTable;
125
+ const insertColumn = function (editor) {
126
+ let insertPosition = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _constants.INSERT_POSITION.AFTER;
127
+ const {
128
+ tableEntry: [tableNode, tablePath],
129
+ rowIndex,
130
+ columnIndex
131
+ } = (0, _helper.getTableFocusingInfos)(editor);
132
+ const getInsertPath = (rowIndex, columnIndex) => {
133
+ const newCellPath = {
134
+ [_constants.INSERT_POSITION.BEFORE]: (rowIndex, columnIndex) => tablePath.concat(rowIndex, columnIndex),
135
+ [_constants.INSERT_POSITION.AFTER]: (rowIndex, columnIndex) => tablePath.concat(rowIndex, columnIndex + 1)
136
+ };
137
+ return newCellPath[insertPosition](rowIndex, columnIndex);
138
+ };
139
+ tableNode.children.forEach((row, rowIndex) => {
140
+ const insertPath = getInsertPath(rowIndex, columnIndex);
141
+ const newCell = (0, _model.generateTableCell)(rowIndex, columnIndex);
142
+ _slate.Transforms.insertNodes(editor, newCell, {
143
+ at: insertPath
144
+ });
145
+ });
146
+ const align = [...tableNode.align];
147
+ const insertAlgin = insertPosition === _constants.INSERT_POSITION.BEFORE ? columnIndex : columnIndex + 1;
148
+ align.splice(insertAlgin, 0, _constants.TEXT_ALIGN.LEFT);
149
+ _slate.Transforms.setNodes(editor, {
150
+ align
151
+ }, {
152
+ at: tablePath
153
+ });
154
+ const focusPoint = _slate.Editor.start(editor, getInsertPath(rowIndex, columnIndex));
155
+ (0, _core.focusEditor)(editor, focusPoint);
156
+ };
157
+ exports.insertColumn = insertColumn;
158
+ const removeColumn = editor => {
159
+ const isSelectMultipleTable = (0, _helper.isSelectingMultipleTables)(editor);
160
+ if (isSelectMultipleTable) return;
161
+ const selectInfos = (0, _helper.getSelectGrid)(editor);
162
+ const [tableEntry] = (0, _helper.getTableEntry)(editor);
163
+ if (!tableEntry) return;
164
+ if (selectInfos) {
165
+ const {
166
+ startColIndex,
167
+ endColIndex
168
+ } = selectInfos;
169
+ const [table, tablePath] = tableEntry;
170
+ const tableRowCount = table.children.length;
171
+ const tableColumnCount = table.children[0].children.length;
172
+
173
+ // Remove all columns
174
+ if (startColIndex === 0 && endColIndex === tableColumnCount - 1) return removeTable(editor);
175
+ for (let rowIndex = 0; rowIndex < tableRowCount; rowIndex++) {
176
+ for (let colIndex = endColIndex; colIndex >= startColIndex; colIndex--) {
177
+ const cellPath = tablePath.concat(rowIndex, colIndex);
178
+ _slate.Transforms.removeNodes(editor, {
179
+ at: cellPath
180
+ });
181
+ }
182
+ }
183
+ const focusPoint = _slate.Editor.start(editor, tablePath.concat(0, startColIndex - 1 < 0 ? 0 : startColIndex - 1));
184
+ (0, _core.focusEditor)(editor, focusPoint);
185
+ return;
186
+ }
187
+ const {
188
+ tableEntry: [tableNode, tablePath],
189
+ rowEntry: [rowNode, rowPath],
190
+ columnIndex
191
+ } = (0, _helper.getTableFocusingInfos)(editor);
192
+ const tableWidth = rowNode.children.length;
193
+ let focusPoint = null;
194
+
195
+ // If table has one more column, remove column, else remove table
196
+ if (tableWidth > 1) {
197
+ // If removing column is the last column, focus on the previous column
198
+ const isRemovingLastColumn = columnIndex === tableWidth - 1;
199
+ tableNode.children.forEach((row, rowIndex) => {
200
+ const removePath = tablePath.concat(rowIndex, columnIndex);
201
+ _slate.Transforms.removeNodes(editor, {
202
+ at: removePath
203
+ });
204
+ });
205
+
206
+ // Update columns
207
+ const align = [...tableNode.align];
208
+ align.splice(columnIndex, 1);
209
+ _slate.Transforms.setNodes(editor, {
210
+ align
211
+ }, {
212
+ at: tablePath
213
+ });
214
+ focusPoint = isRemovingLastColumn ? _slate.Editor.start(editor, rowPath.concat(columnIndex - 1)) : _slate.Editor.start(editor, rowPath.concat(columnIndex));
215
+ (0, _core.focusEditor)(editor, focusPoint);
216
+ } else {
217
+ removeTable(editor);
218
+ }
219
+ };
220
+
221
+ /**
222
+ * @param {Object} editor
223
+ * @param {keyof TEXT_ALIGN} align Text align
224
+ */
225
+ exports.removeColumn = removeColumn;
226
+ const changeColumnAlign = (editor, alignType) => {
227
+ const {
228
+ tableEntry: [table, tablePath],
229
+ columnIndex
230
+ } = (0, _helper.getTableFocusingInfos)(editor);
231
+ const selectGrid = (0, _helper.getSelectGrid)(editor);
232
+ const align = [...table.align];
233
+
234
+ // If select a range in table
235
+ if (selectGrid) {
236
+ const {
237
+ startColIndex,
238
+ endColIndex
239
+ } = selectGrid;
240
+ for (let columnIndex = startColIndex; columnIndex <= endColIndex; columnIndex++) {
241
+ align.splice(columnIndex, columnIndex, alignType);
242
+ }
243
+ } else {
244
+ // If select a cell in table
245
+ align.splice(columnIndex, columnIndex, alignType);
246
+ }
247
+ _slate.Transforms.setNodes(editor, {
248
+ align
249
+ }, {
250
+ at: tablePath
251
+ });
252
+ };
253
+ exports.changeColumnAlign = changeColumnAlign;
254
+ const insertTableElement = function (editor, type) {
255
+ let position = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _constant.TABLE_ELEMENT_POSITION.AFTER;
256
+ let count = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
257
+ const [tableEntry] = (0, _helper.getTableEntry)(editor);
258
+ if (!tableEntry) return;
259
+ let selectedInfo = (0, _helper.getSelectGrid)(editor);
260
+ if (!selectedInfo) {
261
+ const tableCellEntry = (0, _core.getSelectedNodeEntryByType)(editor, _elementTypes.TABLE_CELL);
262
+ const cellPath = tableCellEntry[1];
263
+ const rowPath = cellPath.slice(0, cellPath.length - 1);
264
+ selectedInfo = {
265
+ endRowIndex: rowPath.pop(),
266
+ endColIndex: cellPath.pop()
267
+ };
268
+ }
269
+ const [tableNode, tablePath] = tableEntry;
270
+ const tableRows = tableNode.children;
271
+ const tableRowsLength = tableRows.length;
272
+ const tableColumnLength = tableRows[0].children.length;
273
+ const {
274
+ endRowIndex,
275
+ endColIndex
276
+ } = selectedInfo;
277
+ if (type === _constant.TABLE_ELEMENT.ROW) {
278
+ if (tableRowsLength >= _constant.TABLE_MAX_ROWS) return;
279
+ const targetPath = position === _constant.TABLE_ELEMENT_POSITION.AFTER ? [...tablePath, endRowIndex + 1] : [...tablePath, endRowIndex];
280
+ const validCount = Math.min(_constant.TABLE_MAX_ROWS - tableRowsLength, count);
281
+ for (let i = 0; i < validCount; i++) {
282
+ const row = (0, _model.generateTableRow)({
283
+ columnNum: tableColumnLength
284
+ });
285
+ _slate.Transforms.insertNodes(editor, row, {
286
+ at: targetPath
287
+ });
288
+ }
289
+ setTimeout(() => {
290
+ const oldRowIndex = position === _constant.TABLE_ELEMENT_POSITION.AFTER ? endRowIndex : endRowIndex + validCount;
291
+ const focusPath = [...tablePath, oldRowIndex, endColIndex];
292
+ (0, _core.focusEditor)(editor, focusPath);
293
+ _slate.Transforms.collapse(editor, {
294
+ edge: 'end'
295
+ });
296
+ });
297
+ return;
298
+ }
299
+ if (type === _constant.TABLE_ELEMENT.COLUMN) {
300
+ if (tableColumnLength >= _constant.TABLE_MAX_COLUMNS) return;
301
+ const newCellIndex = position === _constant.TABLE_ELEMENT_POSITION.AFTER ? endColIndex + 1 : endColIndex;
302
+ const validCount = Math.min(_constant.TABLE_MAX_COLUMNS - tableColumnLength, count);
303
+ for (let j = 0; j < validCount; j++) {
304
+ for (let i = 0; i < tableRowsLength; i++) {
305
+ const newCellPath = [...tablePath, i, newCellIndex];
306
+ const newCell = (0, _model.generateTableCell)();
307
+ _slate.Transforms.insertNodes(editor, newCell, {
308
+ at: newCellPath
309
+ });
310
+ }
311
+ }
312
+ setTimeout(() => {
313
+ const oldCellIndex = position === _constant.TABLE_ELEMENT_POSITION.AFTER ? endColIndex : endColIndex + validCount;
314
+ const focusPath = [...tablePath, endRowIndex, oldCellIndex, 0];
315
+ (0, _core.focusEditor)(editor, focusPath);
316
+ _slate.Transforms.collapse(editor, {
317
+ edge: 'end'
318
+ });
319
+ });
320
+ return;
321
+ }
322
+ };
323
+ exports.insertTableElement = insertTableElement;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.toggleTextStyle = exports.removeMark = exports.isMenuDisabled = exports.isMarkActive = exports.addMark = void 0;
7
+ var _slate = require("slate");
8
+ var _helpers = require("../code-block/helpers");
9
+ var _constants = require("../../constants");
10
+ var _core = require("../../core");
11
+ const isMenuDisabled = (editor, isReadonly) => {
12
+ if (isReadonly) return true;
13
+ const {
14
+ selection
15
+ } = editor;
16
+ if (!selection) return true;
17
+ if ((0, _helpers.isInCodeBlock)(editor)) return true;
18
+ return false;
19
+ };
20
+ exports.isMenuDisabled = isMenuDisabled;
21
+ const isMarkActive = (editor, mark) => {
22
+ const {
23
+ selection
24
+ } = editor;
25
+ if (!selection) return false;
26
+ const marks = _slate.Editor.marks(editor);
27
+
28
+ // If curMarks exists, you need to set this parameter manually. curMarks prevails
29
+ if (marks && Object.keys(marks).length > 0) {
30
+ return !!marks[mark];
31
+ } else {
32
+ const [match] = _slate.Editor.nodes(editor, {
33
+ match: n => n[mark] === true
34
+ });
35
+ return !!match;
36
+ }
37
+ };
38
+ exports.isMarkActive = isMarkActive;
39
+ const addMark = (editor, type) => {
40
+ _slate.Editor.addMark(editor, type, true);
41
+ };
42
+ exports.addMark = addMark;
43
+ const removeMark = (editor, type) => {
44
+ _slate.Editor.removeMark(editor, type);
45
+ };
46
+ exports.removeMark = removeMark;
47
+ const toggleTextStyle = (editor, type) => {
48
+ const isActive = isMarkActive(editor, type);
49
+ isActive ? removeMark(editor, type) : addMark(editor, type);
50
+ if (type === _constants.TEXT_STYLE_MAP.CODE) {
51
+ if (_slate.Range.isCollapsed(editor.selection)) {
52
+ _slate.Editor.insertText(editor, '');
53
+ }
54
+ (0, _core.focusEditor)(editor);
55
+ }
56
+ };
57
+ exports.toggleTextStyle = toggleTextStyle;
@@ -0,0 +1,17 @@
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 _menu = _interopRequireDefault(require("./menu"));
9
+ var _plugin = _interopRequireDefault(require("./plugin"));
10
+ var _renderElem = _interopRequireDefault(require("./render-elem"));
11
+ const TextPlugin = {
12
+ type: 'text',
13
+ editorMenus: [_menu.default],
14
+ editorPlugin: _plugin.default,
15
+ renderElements: [_renderElem.default]
16
+ };
17
+ var _default = exports.default = TextPlugin;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _constants = require("../../../constants");
10
+ var _components = require("../../../../components");
11
+ var _helpers = require("../helpers");
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ const TextStyleMenu = _ref => {
14
+ let {
15
+ editor,
16
+ readonly,
17
+ type,
18
+ className
19
+ } = _ref;
20
+ const config = _constants.MENUS_CONFIG_MAP[type];
21
+ const isDisabled = (0, _helpers.isMenuDisabled)(editor, readonly);
22
+ const isActive = (0, _helpers.isMarkActive)(editor, type);
23
+ const onClick = (0, _react.useCallback)((e, toggleType) => {
24
+ (0, _helpers.toggleTextStyle)(editor, type);
25
+ }, [editor, type]);
26
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
27
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.ToolbarItem, {
28
+ editor: editor,
29
+ disabled: isDisabled,
30
+ isActive: isActive,
31
+ className: className,
32
+ onClick: onClick,
33
+ ...config
34
+ })
35
+ });
36
+ };
37
+ var _default = exports.default = TextStyleMenu;