@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,106 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.mergeElementOther2SlateNode = exports.genCodeLangs = exports.formatInlineNodes = void 0;
7
+ const genCodeLangs = () => {
8
+ return [{
9
+ text: 'Plain Text',
10
+ value: 'plaintext'
11
+ }, {
12
+ text: 'Bash',
13
+ value: 'bash'
14
+ }, {
15
+ text: 'CSS',
16
+ value: 'css'
17
+ }, {
18
+ text: 'C',
19
+ value: 'c'
20
+ }, {
21
+ text: 'C++',
22
+ value: 'cpp'
23
+ }, {
24
+ text: 'C#',
25
+ value: 'csharp'
26
+ }, {
27
+ text: 'Go',
28
+ value: 'go'
29
+ }, {
30
+ text: 'HTML',
31
+ value: 'html'
32
+ }, {
33
+ text: 'Javascript',
34
+ value: 'javascript'
35
+ }, {
36
+ text: 'Java',
37
+ value: 'java'
38
+ }, {
39
+ text: 'PHP',
40
+ value: 'php'
41
+ }, {
42
+ text: 'Python',
43
+ value: 'python'
44
+ }, {
45
+ text: 'Ruby',
46
+ value: 'ruby'
47
+ }, {
48
+ text: 'SQL',
49
+ value: 'sql'
50
+ }, {
51
+ text: 'Swift',
52
+ value: 'swift'
53
+ }, {
54
+ text: 'Typescript',
55
+ value: 'typescript'
56
+ }, {
57
+ text: 'XML',
58
+ value: 'xml'
59
+ }];
60
+ };
61
+ exports.genCodeLangs = genCodeLangs;
62
+ const formatInlineNodes = inlineNodes => {
63
+ if (!inlineNodes || !Array.isArray(inlineNodes) || inlineNodes.length === 0) return [];
64
+ const isAllTextNode = inlineNodes.every(inlineNode => {
65
+ const keys = Object.keys(inlineNode);
66
+ return keys.length === 2; // keys length is 2: node is text
67
+ });
68
+ if (!isAllTextNode) return inlineNodes;
69
+
70
+ // if elements is all text node, combine the elements
71
+ const newInlineNodes = [{
72
+ id: inlineNodes[0].id,
73
+ text: inlineNodes.reduce((ret, item) => ret + item.text, '')
74
+ }];
75
+ return newInlineNodes;
76
+ };
77
+ exports.formatInlineNodes = formatInlineNodes;
78
+ const mergeElementOther2SlateNode = (element, slateNode) => {
79
+ if (!element || !slateNode) return {};
80
+ let newSlateNode = {
81
+ ...slateNode
82
+ };
83
+ if (element.className) {
84
+ newSlateNode.className = element.className;
85
+ }
86
+ if (element.style) {
87
+ const validStyles = {};
88
+ for (let i = 0; i < element.style.length; i++) {
89
+ const prop = element.style[i];
90
+ const value = element.style.getPropertyValue(prop);
91
+ if (value && value !== '' && value !== 'none') {
92
+ let validProp = prop;
93
+ let validProps = validProp.split('-');
94
+ if (validProps.length > 1) {
95
+ validProp = validProps.map((p, index) => index === 0 ? p : p.charAt(0).toUpperCase() + p.slice(1).toLowerCase()).join('');
96
+ }
97
+ validStyles[validProp] = value;
98
+ }
99
+ }
100
+ if (Object.keys(validStyles).length > 0) {
101
+ newSlateNode.style = validStyles;
102
+ }
103
+ }
104
+ return newSlateNode;
105
+ };
106
+ exports.mergeElementOther2SlateNode = mergeElementOther2SlateNode;
@@ -0,0 +1,138 @@
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 _slugid = _interopRequireDefault(require("slugid"));
9
+ var _typeOf = _interopRequireDefault(require("type-of"));
10
+ var _constants = require("./constants");
11
+ var _rules = _interopRequireDefault(require("./rules"));
12
+ var _helper = require("./helper");
13
+ const cruftNewline = element => {
14
+ return !(element.nodeName === '#text' && element.nodeValue === '\n');
15
+ };
16
+ const deserializeElement = element => {
17
+ let node;
18
+ const next = elements => {
19
+ if (Object.prototype.toString.call(elements) === '[object NodeList]') {
20
+ elements = Array.from(elements);
21
+ }
22
+ switch ((0, _typeOf.default)(elements)) {
23
+ case 'array':
24
+ return deserializeElements(elements);
25
+ case 'object':
26
+ return deserializeElement(elements);
27
+ case 'null':
28
+ case 'undefined':
29
+ return;
30
+ default:
31
+ throw new Error(`The \`next\` argument was called with invalid children: "${elements}".`);
32
+ }
33
+ };
34
+ for (let i = 0; i < _rules.default.length; i++) {
35
+ const rule = _rules.default[i];
36
+ if (!rule) continue;
37
+ const ret = rule(element, next);
38
+ const type = (0, _typeOf.default)(ret);
39
+ if (type !== 'array' && type !== 'object' && type !== 'null' && type !== 'undefined') {
40
+ throw new Error(`A rule returned an invalid deserialized representation: "${node}".`);
41
+ }
42
+
43
+ // Not eligible for current component processing
44
+ if (ret === undefined) {
45
+ continue;
46
+ }
47
+
48
+ // Empty tags will be discarded and not converted accordingly
49
+ if (ret === null) {
50
+ return null;
51
+ }
52
+
53
+ // Assign the final processing result to node
54
+ node = ret;
55
+ break;
56
+ }
57
+
58
+ // If node is undefined, it means that the label is not processed, and continue to process the child nodes of the element
59
+ return node || next(element.childNodes);
60
+ };
61
+ const deserializeElements = function () {
62
+ let elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
63
+ let isTopLevel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
64
+ let nodes = [];
65
+ elements.filter(cruftNewline).forEach(element => {
66
+ const node = deserializeElement(element);
67
+ switch ((0, _typeOf.default)(node)) {
68
+ case 'array':
69
+ const formatNode = isTopLevel ? formatElementNodes(node) : node;
70
+ nodes = nodes.concat(formatNode);
71
+ break;
72
+ case 'object':
73
+ nodes.push(node);
74
+ break;
75
+ default:
76
+ // nothing todo
77
+ }
78
+ });
79
+ return (0, _helper.formatInlineNodes)(nodes);
80
+ };
81
+ const formatElementNodes = nodes => {
82
+ if (nodes.length === 0) {
83
+ return [{
84
+ id: _slugid.default.nice(),
85
+ type: _constants.PARAGRAPH,
86
+ children: [{
87
+ text: '',
88
+ id: _slugid.default.nice()
89
+ }]
90
+ }];
91
+ }
92
+ nodes = nodes.reduce((memo, node) => {
93
+ if (_constants.TOP_LEVEL_TYPES.includes(node.type)) {
94
+ memo.push(node);
95
+ }
96
+ if (node.type === _constants.LIST_ITEM) {
97
+ const newNode = {
98
+ id: _slugid.default.nice(),
99
+ type: _constants.UNORDERED_LIST,
100
+ children: [node]
101
+ };
102
+ memo.push(newNode);
103
+ return memo;
104
+ }
105
+
106
+ // The following types will not appear individually during the pasting process
107
+ // code_line
108
+ // table_row | table_cell
109
+
110
+ // text | image | link
111
+ if (!node.type || _constants.INLINE_LEVEL_TYPES.includes(node.type)) {
112
+ let prevNode = memo[memo.length - 1];
113
+ if (prevNode && prevNode.type === _constants.PARAGRAPH) {
114
+ prevNode.children.push(node);
115
+ return memo;
116
+ }
117
+ const newNode = {
118
+ id: _slugid.default.nice(),
119
+ type: _constants.PARAGRAPH,
120
+ children: [node]
121
+ };
122
+ memo.push(newNode);
123
+ return memo;
124
+ }
125
+ return memo;
126
+ }, []);
127
+ return nodes;
128
+ };
129
+ const deserializeHtml = html => {
130
+ const parsed = new DOMParser().parseFromString(html, 'text/html');
131
+ const fragment = parsed.body;
132
+ const children = Array.from(fragment.childNodes);
133
+ let nodes = [];
134
+ nodes = deserializeElements(children, true);
135
+ nodes = formatElementNodes(nodes);
136
+ return nodes;
137
+ };
138
+ var _default = exports.default = deserializeHtml;
@@ -0,0 +1,26 @@
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 _slugid = _interopRequireDefault(require("slugid"));
9
+ var _constants = require("../constants");
10
+ var _helper = require("../helper");
11
+ const blockquoteRule = (element, parseChild) => {
12
+ const {
13
+ nodeName,
14
+ childNodes
15
+ } = element;
16
+ if (nodeName === 'BLOCKQUOTE') {
17
+ const node = {
18
+ id: _slugid.default.nice(),
19
+ type: _constants.BLOCKQUOTE,
20
+ children: parseChild(childNodes)
21
+ };
22
+ return (0, _helper.mergeElementOther2SlateNode)(element, node);
23
+ }
24
+ return;
25
+ };
26
+ var _default = exports.default = blockquoteRule;
@@ -0,0 +1,29 @@
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 _slugid = _interopRequireDefault(require("slugid"));
9
+ var _helper = require("../helper");
10
+ var _elementTypes = require("../../../extension/constants/element-types");
11
+ const brRule = (element, parseChild) => {
12
+ const {
13
+ nodeName,
14
+ childNodes
15
+ } = element;
16
+ if (nodeName === 'BR' && childNodes.length === 0) {
17
+ const node = {
18
+ id: _slugid.default.nice(),
19
+ type: _elementTypes.PARAGRAPH,
20
+ children: [{
21
+ id: _slugid.default.nice(),
22
+ text: ''
23
+ }]
24
+ };
25
+ return (0, _helper.mergeElementOther2SlateNode)(element, node);
26
+ }
27
+ return;
28
+ };
29
+ var _default = exports.default = brRule;
@@ -0,0 +1,29 @@
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 _slugid = _interopRequireDefault(require("slugid"));
9
+ var _constants = require("../constants");
10
+ var _helper = require("../helper");
11
+ const checkListRule = (element, parseChild) => {
12
+ const {
13
+ nodeName
14
+ } = element;
15
+ if (nodeName === 'INPUT' && element.getAttribute('type') === 'checkbox') {
16
+ const node = {
17
+ id: _slugid.default.nice(),
18
+ type: _constants.CHECK_LIST_ITEM,
19
+ checked: element.getAttribute('checked') !== null,
20
+ children: [{
21
+ id: _slugid.default.nice(),
22
+ text: ''
23
+ }]
24
+ };
25
+ return (0, _helper.mergeElementOther2SlateNode)(element, node);
26
+ }
27
+ return;
28
+ };
29
+ var _default = exports.default = checkListRule;
@@ -0,0 +1,95 @@
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 _slugid = _interopRequireDefault(require("slugid"));
9
+ var _constants = require("../constants");
10
+ var _helper = require("../helper");
11
+ const codeBlockRule = (element, parseChild) => {
12
+ const {
13
+ nodeName,
14
+ childNodes
15
+ } = element;
16
+ if (nodeName === 'PRE') {
17
+ const children = Array.from(childNodes).filter(item => item.nodeName === 'CODE');
18
+ let codeChild = children[0];
19
+ if (codeChild) {
20
+ let lang = codeChild.getAttribute('lang');
21
+ lang = (0, _helper.genCodeLangs)().find(item => item.value === lang) || 'plaintext';
22
+ const node = {
23
+ id: _slugid.default.nice(),
24
+ language: lang,
25
+ type: _constants.CODE_BLOCK,
26
+ children: parseChild(children)
27
+ };
28
+ return (0, _helper.mergeElementOther2SlateNode)(element, node);
29
+ } else {
30
+ const lang = 'plaintext';
31
+ const content = childNodes[0].textContent;
32
+ const textArr = content.split('\n').filter(Boolean);
33
+ const children = textArr.map(text => {
34
+ return {
35
+ id: _slugid.default.nice(),
36
+ type: _constants.CODE_LINE,
37
+ children: [{
38
+ id: _slugid.default.nice(),
39
+ text: text
40
+ }]
41
+ };
42
+ });
43
+ const node = {
44
+ id: _slugid.default.nice(),
45
+ language: lang,
46
+ type: _constants.CODE_BLOCK,
47
+ children: children
48
+ };
49
+ return (0, _helper.mergeElementOther2SlateNode)(element, node);
50
+ }
51
+ }
52
+ if (nodeName === 'CODE' && element.parentElement.nodeName === 'PRE') {
53
+ const childIsP = Array.from(childNodes).every(n => n.nodeName === 'P');
54
+ if (childIsP) {
55
+ return Array.from(childNodes).map(n => {
56
+ const node = {
57
+ id: _slugid.default.nice(),
58
+ type: _constants.CODE_LINE,
59
+ children: [{
60
+ id: _slugid.default.nice(),
61
+ text: n.textContent
62
+ }]
63
+ };
64
+ return (0, _helper.mergeElementOther2SlateNode)(n, node);
65
+ });
66
+ }
67
+ const content = element.textContent;
68
+ const hasNewLine = content.indexOf('\n') > -1;
69
+ if (!hasNewLine) {
70
+ const node = {
71
+ id: _slugid.default.nice(),
72
+ type: _constants.CODE_LINE,
73
+ children: [{
74
+ id: _slugid.default.nice(),
75
+ text: element.textContent
76
+ }]
77
+ };
78
+ return (0, _helper.mergeElementOther2SlateNode)(element, node);
79
+ }
80
+ const codes = content.split('\n').filter(Boolean);
81
+ return codes.map(item => {
82
+ const node = {
83
+ id: _slugid.default.nice(),
84
+ type: _constants.CODE_LINE,
85
+ children: [{
86
+ id: _slugid.default.nice(),
87
+ text: item
88
+ }]
89
+ };
90
+ return (0, _helper.mergeElementOther2SlateNode)(item, node);
91
+ });
92
+ }
93
+ return;
94
+ };
95
+ var _default = exports.default = codeBlockRule;
@@ -0,0 +1,26 @@
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 _slugid = _interopRequireDefault(require("slugid"));
9
+ var _constants = require("../constants");
10
+ var _helper = require("../helper");
11
+ const headerRule = (element, parseChild) => {
12
+ const {
13
+ nodeName,
14
+ childNodes
15
+ } = element;
16
+ if (nodeName && _constants.HEADER_LIST.includes(nodeName)) {
17
+ const node = {
18
+ id: _slugid.default.nice(),
19
+ type: _constants.HEADER_TYPE_MAP[nodeName],
20
+ children: parseChild(childNodes)
21
+ };
22
+ return (0, _helper.mergeElementOther2SlateNode)(element, node);
23
+ }
24
+ return;
25
+ };
26
+ var _default = exports.default = headerRule;
@@ -0,0 +1,31 @@
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 _slugid = _interopRequireDefault(require("slugid"));
9
+ var _constants = require("../constants");
10
+ var _helper = require("../helper");
11
+ const imageRule = (element, parseChild) => {
12
+ const {
13
+ nodeName
14
+ } = element;
15
+ if (nodeName === 'IMG') {
16
+ const node = {
17
+ id: _slugid.default.nice(),
18
+ type: _constants.IMAGE,
19
+ data: {
20
+ src: element.getAttribute('src')
21
+ },
22
+ children: [{
23
+ text: '',
24
+ id: _slugid.default.nice()
25
+ }]
26
+ };
27
+ return (0, _helper.mergeElementOther2SlateNode)(element, node);
28
+ }
29
+ return;
30
+ };
31
+ var _default = exports.default = imageRule;
@@ -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 = void 0;
8
+ var _blockquote = _interopRequireDefault(require("./blockquote"));
9
+ var _codeBlock = _interopRequireDefault(require("./code-block"));
10
+ var _header = _interopRequireDefault(require("./header"));
11
+ var _image = _interopRequireDefault(require("./image"));
12
+ var _link = _interopRequireDefault(require("./link"));
13
+ var _list = _interopRequireDefault(require("./list"));
14
+ var _paragraph = _interopRequireDefault(require("./paragraph"));
15
+ var _table = _interopRequireDefault(require("./table"));
16
+ var _text = _interopRequireDefault(require("./text"));
17
+ var _br = _interopRequireDefault(require("./br"));
18
+ var _p = _interopRequireDefault(require("./p"));
19
+ const rules = [_blockquote.default, _codeBlock.default, _header.default, _image.default, _link.default, _list.default, _table.default, _paragraph.default, _text.default, _br.default, _p.default];
20
+ var _default = exports.default = rules;
@@ -0,0 +1,31 @@
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 _slugid = _interopRequireDefault(require("slugid"));
9
+ var _constants = require("../constants");
10
+ var _helper = require("../helper");
11
+ const linkRule = (element, parseChild) => {
12
+ const {
13
+ nodeName
14
+ } = element;
15
+ const content = element.textContent || element.getAttribute('title') || element.getAttribute('href');
16
+ if (nodeName === 'A') {
17
+ const node = {
18
+ id: _slugid.default.nice(),
19
+ type: _constants.LINK,
20
+ url: element.getAttribute('href') || content,
21
+ title: element.getAttribute('title'),
22
+ children: [{
23
+ id: _slugid.default.nice(),
24
+ text: content
25
+ }]
26
+ };
27
+ return (0, _helper.mergeElementOther2SlateNode)(element, node);
28
+ }
29
+ return;
30
+ };
31
+ var _default = exports.default = linkRule;
@@ -0,0 +1,74 @@
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 _slugid = _interopRequireDefault(require("slugid"));
9
+ var _constants = require("../constants");
10
+ var _core = require("../../../extension/core");
11
+ var _helper = require("../helper");
12
+ const PARAGRAPH_TAGS = ['DIV', 'P'];
13
+ const listRule = (element, parseChild) => {
14
+ const {
15
+ nodeName,
16
+ childNodes,
17
+ firstChild,
18
+ parentElement
19
+ } = element;
20
+ if (nodeName === 'UL') {
21
+ const node = {
22
+ id: _slugid.default.nice(),
23
+ type: _constants.UNORDERED_LIST,
24
+ children: parseChild(childNodes)
25
+ };
26
+ return (0, _helper.mergeElementOther2SlateNode)(element, node);
27
+ }
28
+ if (nodeName === 'OL') {
29
+ const node = {
30
+ id: _slugid.default.nice(),
31
+ type: _constants.ORDERED_LIST,
32
+ children: parseChild(childNodes)
33
+ };
34
+ return (0, _helper.mergeElementOther2SlateNode)(element, node);
35
+ }
36
+ if (nodeName === 'LI' && firstChild && PARAGRAPH_TAGS.includes(firstChild.nodeName)) {
37
+ const node = {
38
+ id: _slugid.default.nice(),
39
+ type: _constants.LIST_ITEM,
40
+ children: parseChild(childNodes)
41
+ };
42
+ return (0, _helper.mergeElementOther2SlateNode)(element, node);
43
+ }
44
+ if (nodeName === 'LI' && firstChild && !PARAGRAPH_TAGS.includes(firstChild.nodeName)) {
45
+ const node = {
46
+ id: _slugid.default.nice(),
47
+ type: _constants.LIST_ITEM,
48
+ children: [{
49
+ id: _slugid.default.nice(),
50
+ type: _constants.PARAGRAPH,
51
+ children: parseChild(childNodes)
52
+ }]
53
+ };
54
+ return (0, _helper.mergeElementOther2SlateNode)(element, node);
55
+ }
56
+ if (PARAGRAPH_TAGS.includes(nodeName) && parentElement && parentElement.nodeName === 'LI') {
57
+ if (Array.from(childNodes).length === 0) {
58
+ const node = {
59
+ id: _slugid.default.nice(),
60
+ type: _constants.PARAGRAPH,
61
+ children: [(0, _core.generateDefaultText)()]
62
+ };
63
+ return (0, _helper.mergeElementOther2SlateNode)(element, node);
64
+ }
65
+ const node = {
66
+ id: _slugid.default.nice(),
67
+ type: _constants.PARAGRAPH,
68
+ children: parseChild(childNodes)
69
+ };
70
+ return (0, _helper.mergeElementOther2SlateNode)(element, node);
71
+ }
72
+ return;
73
+ };
74
+ var _default = exports.default = listRule;
@@ -0,0 +1,37 @@
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 _slugid = _interopRequireDefault(require("slugid"));
9
+ var _constants = require("../constants");
10
+ var _helper = require("../helper");
11
+ const pRule = (element, parseChild) => {
12
+ const {
13
+ nodeName,
14
+ childNodes
15
+ } = element;
16
+ if (nodeName === 'P' && element.parentElement.nodeName !== 'LI') {
17
+ if (childNodes.length === 0) {
18
+ const node = {
19
+ id: _slugid.default.nice(),
20
+ type: _constants.P,
21
+ children: [{
22
+ id: _slugid.default.nice(),
23
+ text: ''
24
+ }]
25
+ };
26
+ return (0, _helper.mergeElementOther2SlateNode)(element, node);
27
+ }
28
+ const node = {
29
+ id: _slugid.default.nice(),
30
+ type: _constants.P,
31
+ children: parseChild(childNodes)
32
+ };
33
+ return (0, _helper.mergeElementOther2SlateNode)(element, node);
34
+ }
35
+ return;
36
+ };
37
+ var _default = exports.default = pRule;
@@ -0,0 +1,37 @@
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 _slugid = _interopRequireDefault(require("slugid"));
9
+ var _constants = require("../constants");
10
+ var _helper = require("../helper");
11
+ const paragraphRule = (element, parseChild) => {
12
+ const {
13
+ nodeName,
14
+ childNodes
15
+ } = element;
16
+ if (nodeName === 'DIV' && element.parentElement.nodeName !== 'LI') {
17
+ if (childNodes.length === 0) {
18
+ const node = {
19
+ id: _slugid.default.nice(),
20
+ type: _constants.PARAGRAPH,
21
+ children: [{
22
+ id: _slugid.default.nice(),
23
+ text: ''
24
+ }]
25
+ };
26
+ return (0, _helper.mergeElementOther2SlateNode)(element, node);
27
+ }
28
+ const node = {
29
+ id: _slugid.default.nice(),
30
+ type: _constants.PARAGRAPH,
31
+ children: parseChild(childNodes)
32
+ };
33
+ return (0, _helper.mergeElementOther2SlateNode)(element, node);
34
+ }
35
+ return;
36
+ };
37
+ var _default = exports.default = paragraphRule;