@pie-lib/editable-html 10.0.0-beta.7 → 10.0.0

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 (118) hide show
  1. package/CHANGELOG.json +1 -1
  2. package/CHANGELOG.md +81 -0
  3. package/LICENSE.md +5 -0
  4. package/lib/editor.js +410 -543
  5. package/lib/editor.js.map +1 -1
  6. package/lib/index.js +200 -101
  7. package/lib/index.js.map +1 -1
  8. package/lib/parse-html.js +5 -6
  9. package/lib/parse-html.js.map +1 -1
  10. package/lib/plugins/characters/custom-popper.js +12 -2
  11. package/lib/plugins/characters/custom-popper.js.map +1 -1
  12. package/lib/plugins/characters/index.js +71 -19
  13. package/lib/plugins/characters/index.js.map +1 -1
  14. package/lib/plugins/characters/utils.js.map +1 -1
  15. package/lib/plugins/html/icons/index.js +38 -0
  16. package/lib/plugins/html/icons/index.js.map +1 -0
  17. package/lib/plugins/html/index.js +75 -0
  18. package/lib/plugins/html/index.js.map +1 -0
  19. package/lib/plugins/image/alt-dialog.js +26 -0
  20. package/lib/plugins/image/alt-dialog.js.map +1 -1
  21. package/lib/plugins/image/component.js +124 -90
  22. package/lib/plugins/image/component.js.map +1 -1
  23. package/lib/plugins/image/image-toolbar.js +45 -7
  24. package/lib/plugins/image/image-toolbar.js.map +1 -1
  25. package/lib/plugins/image/index.js +91 -113
  26. package/lib/plugins/image/index.js.map +1 -1
  27. package/lib/plugins/image/insert-image-handler.js +54 -72
  28. package/lib/plugins/image/insert-image-handler.js.map +1 -1
  29. package/lib/plugins/index.js +71 -31
  30. package/lib/plugins/index.js.map +1 -1
  31. package/lib/plugins/list/index.js +129 -58
  32. package/lib/plugins/list/index.js.map +1 -1
  33. package/lib/plugins/math/index.js +152 -118
  34. package/lib/plugins/math/index.js.map +1 -1
  35. package/lib/plugins/media/index.js +185 -168
  36. package/lib/plugins/media/index.js.map +1 -1
  37. package/lib/plugins/media/media-dialog.js +197 -110
  38. package/lib/plugins/media/media-dialog.js.map +1 -1
  39. package/lib/plugins/media/media-toolbar.js +24 -4
  40. package/lib/plugins/media/media-toolbar.js.map +1 -1
  41. package/lib/plugins/media/media-wrapper.js +65 -23
  42. package/lib/plugins/media/media-wrapper.js.map +1 -1
  43. package/lib/plugins/respArea/drag-in-the-blank/choice.js +50 -10
  44. package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
  45. package/lib/plugins/respArea/drag-in-the-blank/index.js +22 -9
  46. package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
  47. package/lib/plugins/respArea/explicit-constructed-response/index.js +9 -4
  48. package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
  49. package/lib/plugins/respArea/icons/index.js +18 -1
  50. package/lib/plugins/respArea/icons/index.js.map +1 -1
  51. package/lib/plugins/respArea/index.js +133 -122
  52. package/lib/plugins/respArea/index.js.map +1 -1
  53. package/lib/plugins/respArea/inline-dropdown/index.js +10 -4
  54. package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
  55. package/lib/plugins/respArea/utils.js +33 -15
  56. package/lib/plugins/respArea/utils.js.map +1 -1
  57. package/lib/plugins/table/icons/index.js +7 -0
  58. package/lib/plugins/table/icons/index.js.map +1 -1
  59. package/lib/plugins/table/index.js +279 -390
  60. package/lib/plugins/table/index.js.map +1 -1
  61. package/lib/plugins/table/table-toolbar.js +47 -14
  62. package/lib/plugins/table/table-toolbar.js.map +1 -1
  63. package/lib/plugins/toolbar/default-toolbar.js +63 -51
  64. package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
  65. package/lib/plugins/toolbar/done-button.js +9 -1
  66. package/lib/plugins/toolbar/done-button.js.map +1 -1
  67. package/lib/plugins/toolbar/editor-and-toolbar.js +140 -83
  68. package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
  69. package/lib/plugins/toolbar/index.js +5 -0
  70. package/lib/plugins/toolbar/index.js.map +1 -1
  71. package/lib/plugins/toolbar/toolbar-buttons.js +39 -8
  72. package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
  73. package/lib/plugins/toolbar/toolbar.js +261 -225
  74. package/lib/plugins/toolbar/toolbar.js.map +1 -1
  75. package/lib/plugins/utils.js +16 -19
  76. package/lib/plugins/utils.js.map +1 -1
  77. package/lib/serialization.js +70 -11
  78. package/lib/serialization.js.map +1 -1
  79. package/lib/theme.js.map +1 -1
  80. package/package.json +18 -17
  81. package/src/editor.jsx +139 -434
  82. package/src/index.jsx +96 -62
  83. package/src/plugins/characters/index.jsx +17 -12
  84. package/src/plugins/html/icons/index.jsx +19 -0
  85. package/src/plugins/html/index.jsx +68 -0
  86. package/src/plugins/image/component.jsx +38 -60
  87. package/src/plugins/image/index.jsx +42 -95
  88. package/src/plugins/image/insert-image-handler.js +27 -62
  89. package/src/plugins/index.jsx +39 -21
  90. package/src/plugins/list/index.jsx +90 -62
  91. package/src/plugins/math/index.jsx +70 -93
  92. package/src/plugins/media/index.jsx +117 -146
  93. package/src/plugins/media/media-dialog.js +9 -10
  94. package/src/plugins/media/media-wrapper.jsx +27 -29
  95. package/src/plugins/respArea/drag-in-the-blank/index.jsx +4 -5
  96. package/src/plugins/respArea/explicit-constructed-response/index.jsx +1 -2
  97. package/src/plugins/respArea/index.jsx +84 -114
  98. package/src/plugins/respArea/inline-dropdown/index.jsx +2 -3
  99. package/src/plugins/respArea/utils.jsx +28 -23
  100. package/src/plugins/table/index.jsx +214 -334
  101. package/src/plugins/table/table-toolbar.jsx +4 -3
  102. package/src/plugins/toolbar/default-toolbar.jsx +30 -48
  103. package/src/plugins/toolbar/editor-and-toolbar.jsx +114 -114
  104. package/src/plugins/toolbar/toolbar.jsx +224 -254
  105. package/src/plugins/utils.js +0 -16
  106. package/src/serialization.jsx +1 -1
  107. package/lib/components.js +0 -92
  108. package/lib/components.js.map +0 -1
  109. package/lib/new-serialization.js +0 -280
  110. package/lib/new-serialization.js.map +0 -1
  111. package/lib/plugins/hotKeys/index.js +0 -60
  112. package/lib/plugins/hotKeys/index.js.map +0 -1
  113. package/lib/test-serializer.js +0 -138
  114. package/lib/test-serializer.js.map +0 -1
  115. package/src/components.js +0 -135
  116. package/src/new-serialization.jsx +0 -310
  117. package/src/plugins/hotKeys/index.js +0 -54
  118. package/src/test-serializer.js +0 -132
package/lib/components.js DELETED
@@ -1,92 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.Toolbar = exports.Portal = exports.Menu = exports.Instruction = exports.Icon = exports.EditorValue = exports.Button = void 0;
8
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
- var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
12
- var _react = _interopRequireDefault(require("react"));
13
- var _reactDom = _interopRequireDefault(require("react-dom"));
14
- var _css = require("@emotion/css");
15
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
16
- var _excluded = ["className", "active", "reversed"],
17
- _excluded2 = ["className", "value"],
18
- _excluded3 = ["className"],
19
- _excluded4 = ["className"],
20
- _excluded5 = ["className"],
21
- _excluded6 = ["className"];
22
- var Button = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
23
- var className = _ref.className,
24
- active = _ref.active,
25
- reversed = _ref.reversed,
26
- props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
27
- return /*#__PURE__*/_react["default"].createElement("span", (0, _extends2["default"])({}, props, {
28
- ref: ref,
29
- className: (0, _css.cx)(className, (0, _css.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n cursor: pointer;\n\n color: ", ";\n "])), reversed ? active ? 'white' : '#aaa' : active ? 'black' : '#ccc'))
30
- }));
31
- });
32
- exports.Button = Button;
33
- var EditorValue = /*#__PURE__*/_react["default"].forwardRef(function (_ref2, ref) {
34
- var className = _ref2.className,
35
- value = _ref2.value,
36
- props = (0, _objectWithoutProperties2["default"])(_ref2, _excluded2);
37
- var textLines = value.document.nodes.map(function (node) {
38
- return node.text;
39
- }).toArray().join('\n');
40
- return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({
41
- ref: ref
42
- }, props, {
43
- className: (0, _css.cx)(className, (0, _css.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n margin: 30px -20px 0;\n "]))))
44
- }), /*#__PURE__*/_react["default"].createElement("div", {
45
- className: (0, _css.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n font-size: 14px;\n padding: 5px 20px;\n color: #404040;\n border-top: 2px solid #eeeeee;\n background: #f8f8f8;\n "])))
46
- }, "Slates value as text"), /*#__PURE__*/_react["default"].createElement("div", {
47
- className: (0, _css.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n color: #404040;\n font: 12px monospace;\n white-space: pre-wrap;\n padding: 10px 20px;\n\n div {\n margin: 0 0 0.5em;\n }\n "])))
48
- }, textLines));
49
- });
50
- exports.EditorValue = EditorValue;
51
- var Icon = /*#__PURE__*/_react["default"].forwardRef(function (_ref3, ref) {
52
- var className = _ref3.className,
53
- props = (0, _objectWithoutProperties2["default"])(_ref3, _excluded3);
54
- return /*#__PURE__*/_react["default"].createElement("span", (0, _extends2["default"])({}, props, {
55
- ref: ref,
56
- className: (0, _css.cx)('material-icons', className, (0, _css.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n font-size: 18px;\n vertical-align: text-bottom;\n "]))))
57
- }));
58
- });
59
- exports.Icon = Icon;
60
- var Instruction = /*#__PURE__*/_react["default"].forwardRef(function (_ref4, ref) {
61
- var className = _ref4.className,
62
- props = (0, _objectWithoutProperties2["default"])(_ref4, _excluded4);
63
- return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({}, props, {
64
- ref: ref,
65
- className: (0, _css.cx)(className, (0, _css.css)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n white-space: pre-wrap;\n margin: 0 -20px 10px;\n padding: 10px 20px;\n font-size: 14px;\n background: #f8f8e8;\n "]))))
66
- }));
67
- });
68
- exports.Instruction = Instruction;
69
- var Menu = /*#__PURE__*/_react["default"].forwardRef(function (_ref5, ref) {
70
- var className = _ref5.className,
71
- props = (0, _objectWithoutProperties2["default"])(_ref5, _excluded5);
72
- return /*#__PURE__*/_react["default"].createElement("div", (0, _extends2["default"])({}, props, {
73
- ref: ref,
74
- className: (0, _css.cx)(className, (0, _css.css)(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n & > * {\n display: inline-block;\n }\n\n & > * + * {\n margin-left: 15px;\n }\n "]))))
75
- }));
76
- });
77
- exports.Menu = Menu;
78
- var Portal = function Portal(_ref6) {
79
- var children = _ref6.children;
80
- return (typeof document === "undefined" ? "undefined" : (0, _typeof2["default"])(document)) === 'object' ? /*#__PURE__*/_reactDom["default"].createPortal(children, document.body) : null;
81
- };
82
- exports.Portal = Portal;
83
- var Toolbar = /*#__PURE__*/_react["default"].forwardRef(function (_ref7, ref) {
84
- var className = _ref7.className,
85
- props = (0, _objectWithoutProperties2["default"])(_ref7, _excluded6);
86
- return /*#__PURE__*/_react["default"].createElement(Menu, (0, _extends2["default"])({}, props, {
87
- ref: ref,
88
- className: (0, _css.cx)(className, (0, _css.css)(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n padding: 1px 18px 17px;\n margin: 0 -20px;\n border-bottom: 2px solid #eee;\n margin-bottom: 20px;\n "]))))
89
- }));
90
- });
91
- exports.Toolbar = Toolbar;
92
- //# sourceMappingURL=components.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"components.js","names":["_react","_interopRequireDefault","require","_reactDom","_css","_templateObject","_templateObject2","_templateObject3","_templateObject4","_templateObject5","_templateObject6","_templateObject7","_templateObject8","_excluded","_excluded2","_excluded3","_excluded4","_excluded5","_excluded6","Button","React","forwardRef","_ref","ref","className","active","reversed","props","_objectWithoutProperties2","createElement","_extends2","cx","css","_taggedTemplateLiteral2","exports","EditorValue","_ref2","value","textLines","document","nodes","map","node","text","toArray","join","Icon","_ref3","Instruction","_ref4","Menu","_ref5","Portal","_ref6","children","_typeof2","ReactDOM","createPortal","body","Toolbar","_ref7"],"sources":["../src/components.js"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { cx, css } from '@emotion/css';\n\nexport const Button = React.forwardRef(({ className, active, reversed, ...props }, ref) => (\n <span\n {...props}\n ref={ref}\n className={cx(\n className,\n css`\n cursor: pointer;\n\n color: ${reversed ? (active ? 'white' : '#aaa') : active ? 'black' : '#ccc'};\n `\n )}\n />\n));\n\nexport const EditorValue = React.forwardRef(({ className, value, ...props }, ref) => {\n const textLines = value.document.nodes\n .map(node => node.text)\n .toArray()\n .join('\\n');\n return (\n <div\n ref={ref}\n {...props}\n className={cx(\n className,\n css`\n margin: 30px -20px 0;\n `\n )}\n >\n <div\n className={css`\n font-size: 14px;\n padding: 5px 20px;\n color: #404040;\n border-top: 2px solid #eeeeee;\n background: #f8f8f8;\n `}\n >\n Slates value as text\n </div>\n <div\n className={css`\n color: #404040;\n font: 12px monospace;\n white-space: pre-wrap;\n padding: 10px 20px;\n\n div {\n margin: 0 0 0.5em;\n }\n `}\n >\n {textLines}\n </div>\n </div>\n );\n});\n\nexport const Icon = React.forwardRef(({ className, ...props }, ref) => (\n <span\n {...props}\n ref={ref}\n className={cx(\n 'material-icons',\n className,\n css`\n font-size: 18px;\n vertical-align: text-bottom;\n `\n )}\n />\n));\n\nexport const Instruction = React.forwardRef(({ className, ...props }, ref) => (\n <div\n {...props}\n ref={ref}\n className={cx(\n className,\n css`\n white-space: pre-wrap;\n margin: 0 -20px 10px;\n padding: 10px 20px;\n font-size: 14px;\n background: #f8f8e8;\n `\n )}\n />\n));\n\nexport const Menu = React.forwardRef(({ className, ...props }, ref) => (\n <div\n {...props}\n ref={ref}\n className={cx(\n className,\n css`\n & > * {\n display: inline-block;\n }\n\n & > * + * {\n margin-left: 15px;\n }\n `\n )}\n />\n));\n\nexport const Portal = ({ children }) => {\n return typeof document === 'object' ? ReactDOM.createPortal(children, document.body) : null;\n};\n\nexport const Toolbar = React.forwardRef(({ className, ...props }, ref) => (\n <Menu\n {...props}\n ref={ref}\n className={cx(\n className,\n css`\n position: relative;\n padding: 1px 18px 17px;\n margin: 0 -20px;\n border-bottom: 2px solid #eee;\n margin-bottom: 20px;\n `\n )}\n />\n));\n"],"mappings":"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"}
@@ -1,280 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.valueToHtml = exports.reactAttributes = exports.parseStyleString = exports.htmlToValue = exports.getBase64 = exports.TEXT_RULE = exports.MARK_TAGS = exports.BLOCK_TAGS = void 0;
8
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
- var _testSerializer = _interopRequireDefault(require("./test-serializer"));
10
- var _react = _interopRequireDefault(require("react"));
11
- var _debug = _interopRequireDefault(require("debug"));
12
- var _toStyle = require("to-style");
13
- var _image = require("./plugins/image");
14
- var _math = require("./plugins/math");
15
- var _media = require("./plugins/media");
16
- var _list = require("./plugins/list");
17
- var _table = require("./plugins/table");
18
- var _respArea = require("./plugins/respArea");
19
- var _slate = require("slate");
20
- var _slateHyperscript = require("slate-hyperscript");
21
- var _escapeHtml = _interopRequireDefault(require("escape-html"));
22
- var log = (0, _debug["default"])('@pie-lib:editable-html:serialization');
23
-
24
- /**
25
- * Tags to blocks.
26
- *
27
- * @type {Object}
28
- */
29
-
30
- var BLOCK_TAGS = {
31
- div: 'div',
32
- span: 'span',
33
- p: 'paragraph',
34
- blockquote: 'quote',
35
- pre: 'code',
36
- h1: 'heading-one',
37
- h2: 'heading-two',
38
- h3: 'heading-three',
39
- h4: 'heading-four',
40
- h5: 'heading-five',
41
- h6: 'heading-six'
42
- };
43
-
44
- /**
45
- * Tags to marks.
46
- *
47
- * @type {Object}
48
- */
49
- exports.BLOCK_TAGS = BLOCK_TAGS;
50
- var MARK_TAGS = {
51
- b: 'bold',
52
- em: 'italic',
53
- u: 'underline',
54
- s: 'strikethrough',
55
- del: 'strikethrough',
56
- code: 'code',
57
- strong: 'bold'
58
- };
59
- exports.MARK_TAGS = MARK_TAGS;
60
- var parseStyleString = function parseStyleString(s) {
61
- var regex = /([\w-]*)\s*:\s*([^;]*)/g;
62
- var match;
63
- var result = {};
64
- while (match = regex.exec(s)) {
65
- result[match[1]] = match[2].trim();
66
- }
67
- return result;
68
- };
69
- exports.parseStyleString = parseStyleString;
70
- var getBase64 = function getBase64(file) {
71
- return new Promise(function (resolve, reject) {
72
- var reader = new FileReader();
73
- reader.readAsDataURL(file);
74
- reader.onload = function () {
75
- return resolve(reader.result);
76
- };
77
- reader.onerror = function (error) {
78
- return reject(error);
79
- };
80
- });
81
- };
82
- exports.getBase64 = getBase64;
83
- var reactAttributes = function reactAttributes(o) {
84
- return (0, _toStyle.object)(o, {
85
- camelize: true,
86
- addUnits: false
87
- });
88
- };
89
- exports.reactAttributes = reactAttributes;
90
- var attributesToMap = function attributesToMap(el) {
91
- return function (acc, attribute) {
92
- var value = el.getAttribute(attribute);
93
- if (value) {
94
- if (attribute === 'style') {
95
- var styleString = el.getAttribute(attribute);
96
- var reactStyleObject = reactAttributes(parseStyleString(styleString));
97
- acc['style'] = reactStyleObject;
98
- } else {
99
- acc[attribute] = el.getAttribute(attribute);
100
- }
101
- }
102
- return acc;
103
- };
104
- };
105
- var attributes = ['border', 'cellpadding', 'cellspacing', 'class', 'style'];
106
-
107
- /**
108
- * Serializer rules.
109
- *
110
- * @type {Array}
111
- */
112
-
113
- var blocks = {
114
- deserialize: function deserialize(el, next) {
115
- log('[blocks:deserialize] block: ', el);
116
- var block = BLOCK_TAGS[el.tagName.toLowerCase()];
117
- if (!block) return;
118
- log('[blocks:deserialize] block: ', block);
119
- if (el.childNodes.length === 1) {
120
- var cn = el.childNodes[0];
121
- if (cn && cn.tagName && cn.tagName.toLowerCase() === block) {
122
- log('[we have a child node of the same]...');
123
- return;
124
- }
125
- }
126
- return (0, _slateHyperscript.jsx)('element', {
127
- type: block,
128
- /**
129
- * Here for rendering styles for all block elements
130
- */
131
- data: {
132
- attributes: attributes.reduce(attributesToMap(el), {})
133
- }
134
- }, next(el.childNodes));
135
- },
136
- serialize: function serialize(object, children) {
137
- if (object.object !== 'block') return;
138
- var jsonData = object.data;
139
- log('[blocks:serialize] object: ', object, children);
140
- var key;
141
- for (key in BLOCK_TAGS) {
142
- if (BLOCK_TAGS[key] === object.type) {
143
- var Tag = key;
144
- return /*#__PURE__*/_react["default"].createElement(Tag, jsonData.attributes, children);
145
- }
146
- }
147
- }
148
- };
149
- var marks = {
150
- deserialize: function deserialize(el, next) {
151
- var mark = MARK_TAGS[el.tagName.toLowerCase()];
152
- if (!mark) {
153
- return;
154
- }
155
- log('[deserialize] mark: ', mark);
156
- return (0, _slateHyperscript.jsx)('text', (0, _defineProperty2["default"])({}, mark, true), next(el.childNodes));
157
- },
158
- serialize: function serialize(object) {
159
- if (_slate.Text.isText(object)) {
160
- var string = (0, _escapeHtml["default"])(object.text);
161
- if (object.bold) {
162
- string = /*#__PURE__*/_react["default"].createElement("strong", null, string);
163
- }
164
- if (object.code) {
165
- string = /*#__PURE__*/_react["default"].createElement("code", null, string);
166
- }
167
- if (object.italic) {
168
- string = /*#__PURE__*/_react["default"].createElement("em", null, string);
169
- }
170
- if (object.underline) {
171
- string = /*#__PURE__*/_react["default"].createElement("u", null, string);
172
- }
173
- if (object.strikethrough) {
174
- string = /*#__PURE__*/_react["default"].createElement("del", null, string);
175
- }
176
- return string;
177
- }
178
- }
179
- };
180
- var findPreviousText = function findPreviousText(el) {
181
- if (el.nodeName === '#text') {
182
- return el;
183
- }
184
- if (el.previousSibling) {
185
- return findPreviousText(el.previousSibling);
186
- }
187
- return null;
188
- };
189
- var TEXT_RULE = {
190
- deserialize: function deserialize(el) {
191
- /**
192
- * This needs to be called on the dom element in order to merge the adjacent text nodes together
193
- * */
194
- el.normalize();
195
- if (el.tagName && el.tagName.toLowerCase() === 'br') {
196
- return (0, _slateHyperscript.jsx)('text', {});
197
- }
198
- if (el.nodeName === '#text') {
199
- if (el.nodeValue && el.nodeValue.match(/<!--.*?-->/)) return;
200
- log('[text:deserialize] return text object..');
201
- return (0, _slateHyperscript.jsx)('text', {}, el.nodeValue);
202
- }
203
- },
204
- serialize: function serialize(obj, children) {
205
- if (obj.object === 'string') {
206
- return children.split('\n').reduce(function (array, text, i) {
207
- if (i !== 0) array.push( /*#__PURE__*/_react["default"].createElement("br", null));
208
- array.push(text);
209
- return array;
210
- }, []);
211
- }
212
- }
213
- };
214
- exports.TEXT_RULE = TEXT_RULE;
215
- var RULES = [_list.serialization, _math.serialization, _media.serialization, _image.serialization, _table.serialization, _respArea.serialization, TEXT_RULE, blocks, marks];
216
- function allWhitespace(node) {
217
- // Use ECMA-262 Edition 3 String and RegExp features
218
- return !/[^\t\n\r ]/.test(node.textContent);
219
- }
220
- function defaultParseHtml(html) {
221
- if (typeof DOMParser === 'undefined') {
222
- throw new Error('The native `DOMParser` global which the `Html` serializer uses by default is not present in this environment. You must supply the `options.parseHtml` function instead.');
223
- }
224
- var parsed = new DOMParser().parseFromString(html, 'text/html');
225
- var body = parsed.body;
226
- var textNodes = document.createTreeWalker(body, NodeFilter.SHOW_TEXT, null, null);
227
- var n = textNodes.nextNode();
228
- while (n) {
229
- if (allWhitespace(n) || n.nodeValue === "\u200B") {
230
- n.parentNode.removeChild(n);
231
- }
232
- n = textNodes.nextNode();
233
- }
234
- return body;
235
- }
236
-
237
- /** If this lib is used on the server side, we need to bypass using the DOMParser - just put in a stub. */
238
- var parseHtml = typeof window === 'undefined' ? function () {
239
- return {
240
- childNodes: []
241
- };
242
- } : defaultParseHtml;
243
- var serializer = new _testSerializer["default"]({
244
- defaultBlock: 'div',
245
- rules: RULES,
246
- parseHtml: parseHtml
247
- });
248
- var _extends = Object.assign || function (target) {
249
- for (var i = 1; i < arguments.length; i++) {
250
- var source = arguments[i];
251
- for (var key in source) {
252
- if (Object.prototype.hasOwnProperty.call(source, key)) {
253
- target[key] = source[key];
254
- }
255
- }
256
- }
257
- return target;
258
- };
259
- var htmlToValue = function htmlToValue(html) {
260
- try {
261
- return serializer.deserialize(html);
262
- } catch (e) {
263
- console.log("Couldn't parse html: ", e);
264
- return {};
265
- }
266
- };
267
- exports.htmlToValue = htmlToValue;
268
- var valueToHtml = function valueToHtml(value) {
269
- return serializer.serialize(value);
270
- };
271
-
272
- /**
273
- *
274
- * <div><div>a</div></div> -> <div>a</div>
275
- *
276
- * <div><div>a</div><div>b</div></div> -> <div>a</div><div>b</div>
277
- * <div><div>a</div>4444<div>b</div></div> -> <div>a</div>4444<div>b</div>
278
- */
279
- exports.valueToHtml = valueToHtml;
280
- //# sourceMappingURL=new-serialization.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"new-serialization.js","names":["_testSerializer","_interopRequireDefault","require","_react","_debug","_toStyle","_image","_math","_media","_list","_table","_respArea","_slate","_slateHyperscript","_escapeHtml","log","debug","BLOCK_TAGS","div","span","p","blockquote","pre","h1","h2","h3","h4","h5","h6","exports","MARK_TAGS","b","em","u","s","del","code","strong","parseStyleString","regex","match","result","exec","trim","getBase64","file","Promise","resolve","reject","reader","FileReader","readAsDataURL","onload","onerror","error","reactAttributes","o","toStyleObject","camelize","addUnits","attributesToMap","el","acc","attribute","value","getAttribute","styleString","reactStyleObject","attributes","blocks","deserialize","next","block","tagName","toLowerCase","childNodes","length","cn","jsx","type","data","reduce","serialize","object","children","jsonData","key","Tag","createElement","marks","mark","_defineProperty2","Text","isText","string","escapeHtml","text","bold","italic","underline","strikethrough","findPreviousText","nodeName","previousSibling","TEXT_RULE","normalize","nodeValue","obj","split","array","i","push","RULES","listSerialization","mathSerialization","mediaSerialization","imgSerialization","tableSerialization","responseAreaSerialization","allWhitespace","node","test","textContent","defaultParseHtml","html","DOMParser","Error","parsed","parseFromString","body","textNodes","document","createTreeWalker","NodeFilter","SHOW_TEXT","n","nextNode","parentNode","removeChild","parseHtml","window","serializer","TestSerializer","defaultBlock","rules","_extends","Object","assign","target","arguments","source","prototype","hasOwnProperty","call","htmlToValue","e","console","valueToHtml"],"sources":["../src/new-serialization.jsx"],"sourcesContent":["import TestSerializer from './test-serializer';\nimport React from 'react';\nimport debug from 'debug';\nimport { object as toStyleObject } from 'to-style';\n\nimport { serialization as imgSerialization } from './plugins/image';\nimport { serialization as mathSerialization } from './plugins/math';\nimport { serialization as mediaSerialization } from './plugins/media';\nimport { serialization as listSerialization } from './plugins/list';\nimport { serialization as tableSerialization } from './plugins/table';\nimport { serialization as responseAreaSerialization } from './plugins/respArea';\nimport { Mark, Text, Value } from \"slate\";\nimport { jsx } from \"slate-hyperscript\";\nimport escapeHtml from \"escape-html\";\n\nconst log = debug('@pie-lib:editable-html:serialization');\n\n/**\n * Tags to blocks.\n *\n * @type {Object}\n */\n\nexport const BLOCK_TAGS = {\n div: 'div',\n span: 'span',\n p: 'paragraph',\n blockquote: 'quote',\n pre: 'code',\n h1: 'heading-one',\n h2: 'heading-two',\n h3: 'heading-three',\n h4: 'heading-four',\n h5: 'heading-five',\n h6: 'heading-six'\n};\n\n/**\n * Tags to marks.\n *\n * @type {Object}\n */\n\nexport const MARK_TAGS = {\n b: 'bold',\n em: 'italic',\n u: 'underline',\n s: 'strikethrough',\n del: 'strikethrough',\n code: 'code',\n strong: 'bold'\n};\n\nexport const parseStyleString = s => {\n const regex = /([\\w-]*)\\s*:\\s*([^;]*)/g;\n let match;\n const result = {};\n while ((match = regex.exec(s))) {\n result[match[1]] = match[2].trim();\n }\n return result;\n};\n\nexport const getBase64 = file => {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = error => reject(error);\n });\n};\n\nexport const reactAttributes = o => toStyleObject(o, { camelize: true, addUnits: false });\n\nconst attributesToMap = el => (acc, attribute) => {\n const value = el.getAttribute(attribute);\n if (value) {\n if (attribute === 'style') {\n const styleString = el.getAttribute(attribute);\n const reactStyleObject = reactAttributes(parseStyleString(styleString));\n acc['style'] = reactStyleObject;\n } else {\n acc[attribute] = el.getAttribute(attribute);\n }\n }\n return acc;\n};\n\nconst attributes = ['border', 'cellpadding', 'cellspacing', 'class', 'style'];\n\n/**\n * Serializer rules.\n *\n * @type {Array}\n */\n\nconst blocks = {\n deserialize(el, next) {\n log('[blocks:deserialize] block: ', el);\n const block = BLOCK_TAGS[el.tagName.toLowerCase()];\n if (!block) return;\n log('[blocks:deserialize] block: ', block);\n\n if (el.childNodes.length === 1) {\n const cn = el.childNodes[0];\n if (cn && cn.tagName && cn.tagName.toLowerCase() === block) {\n log('[we have a child node of the same]...');\n return;\n }\n }\n\n return jsx(\n 'element',\n {\n type: block,\n /**\n * Here for rendering styles for all block elements\n */\n data: { attributes: attributes.reduce(attributesToMap(el), {}) }\n },\n next(el.childNodes)\n );\n },\n serialize: (object, children) => {\n if (object.object !== 'block') return;\n\n const jsonData = object.data;\n\n log('[blocks:serialize] object: ', object, children);\n let key;\n\n for (key in BLOCK_TAGS) {\n if (BLOCK_TAGS[key] === object.type) {\n const Tag = key;\n\n return <Tag {...jsonData.attributes}>{children}</Tag>;\n }\n }\n }\n};\n\nconst marks = {\n deserialize(el, next) {\n const mark = MARK_TAGS[el.tagName.toLowerCase()];\n if (!mark) {\n return;\n }\n log('[deserialize] mark: ', mark);\n\n return jsx('text', { [mark]: true }, next(el.childNodes));\n },\n serialize(object) {\n if (Text.isText(object)) {\n let string = escapeHtml(object.text);\n\n if (object.bold) {\n string = <strong>{string}</strong>;\n }\n\n if (object.code) {\n string = <code>{string}</code>;\n }\n\n if (object.italic) {\n string = <em>{string}</em>;\n }\n\n if (object.underline) {\n string = <u>{string}</u>;\n }\n\n if (object.strikethrough) {\n string = <del>{string}</del>;\n }\n\n return string;\n }\n }\n};\n\nconst findPreviousText = el => {\n if (el.nodeName === '#text') {\n return el;\n }\n\n if (el.previousSibling) {\n return findPreviousText(el.previousSibling);\n }\n\n return null;\n};\n\nexport const TEXT_RULE = {\n deserialize(el) {\n /**\n * This needs to be called on the dom element in order to merge the adjacent text nodes together\n * */\n el.normalize();\n\n if (el.tagName && el.tagName.toLowerCase() === 'br') {\n return jsx('text', {});\n }\n\n if (el.nodeName === '#text') {\n if (el.nodeValue && el.nodeValue.match(/<!--.*?-->/)) return;\n\n log('[text:deserialize] return text object..');\n return jsx('text', {}, el.nodeValue);\n }\n },\n\n serialize(obj, children) {\n if (obj.object === 'string') {\n return children.split('\\n').reduce((array, text, i) => {\n if (i !== 0) array.push(<br />);\n array.push(text);\n return array;\n }, []);\n }\n }\n};\n\nconst RULES = [\n listSerialization,\n mathSerialization,\n mediaSerialization,\n imgSerialization,\n tableSerialization,\n responseAreaSerialization,\n TEXT_RULE,\n blocks,\n marks\n];\n\nfunction allWhitespace(node) {\n // Use ECMA-262 Edition 3 String and RegExp features\n return !/[^\\t\\n\\r ]/.test(node.textContent);\n}\n\nfunction defaultParseHtml(html) {\n if (typeof DOMParser === 'undefined') {\n throw new Error(\n 'The native `DOMParser` global which the `Html` serializer uses by default is not present in this environment. You must supply the `options.parseHtml` function instead.'\n );\n }\n\n const parsed = new DOMParser().parseFromString(html, 'text/html');\n\n const { body } = parsed;\n const textNodes = document.createTreeWalker(body, NodeFilter.SHOW_TEXT, null, null);\n let n = textNodes.nextNode();\n\n while (n) {\n if (allWhitespace(n) || n.nodeValue === '\\u200B') {\n n.parentNode.removeChild(n);\n }\n n = textNodes.nextNode();\n }\n\n return body;\n}\n\n/** If this lib is used on the server side, we need to bypass using the DOMParser - just put in a stub. */\nconst parseHtml =\n typeof window === 'undefined'\n ? () => ({\n childNodes: []\n })\n : defaultParseHtml;\n\nconst serializer = new TestSerializer({\n defaultBlock: 'div',\n rules: RULES,\n parseHtml\n});\n\nconst _extends =\n Object.assign ||\n function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\nexport const htmlToValue = html => {\n try {\n return serializer.deserialize(html);\n } catch (e) {\n console.log(\"Couldn't parse html: \", e);\n return {};\n }\n};\n\nexport const valueToHtml = value => serializer.serialize(value);\n\n/**\n *\n * <div><div>a</div></div> -> <div>a</div>\n *\n * <div><div>a</div><div>b</div></div> -> <div>a</div><div>b</div>\n * <div><div>a</div>4444<div>b</div></div> -> <div>a</div>4444<div>b</div>\n */\n"],"mappings":"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"}
@@ -1,60 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports["default"] = MarkHotkey;
8
- var _react = _interopRequireDefault(require("react"));
9
- var _slate = require("slate");
10
- var _debug = _interopRequireDefault(require("debug"));
11
- var log = (0, _debug["default"])('@pie-lib:editable-html:plugins');
12
- var isMarkActive = function isMarkActive(editor, format) {
13
- var marks = _slate.Editor.marks(editor);
14
- return marks ? marks[format] === true : false;
15
- };
16
- var toggleMark = function toggleMark(editor, format) {
17
- var isActive = isMarkActive(editor, format);
18
- if (isActive) {
19
- _slate.Editor.removeMark(editor, format);
20
- } else {
21
- _slate.Editor.addMark(editor, format, true);
22
- }
23
- };
24
- function MarkHotkey(options) {
25
- var type = options.type,
26
- key = options.key,
27
- icon = options.icon,
28
- tag = options.tag;
29
-
30
- // Return our "plugin" object, containing the `onKeyDown` handler.
31
- return {
32
- toolbar: {
33
- isMark: true,
34
- type: type,
35
- icon: icon,
36
- onToggle: function onToggle(editor) {
37
- log('[onToggleMark] type: ', type);
38
- toggleMark(editor, type);
39
- }
40
- },
41
- renderMark: function renderMark(props) {
42
- if (props.mark.type === type) {
43
- var K = tag || type;
44
- return /*#__PURE__*/_react["default"].createElement(K, null, props.children);
45
- }
46
- },
47
- onKeyDown: function onKeyDown(event, change) {
48
- // Check that the key pressed matches our `key` option.
49
- if (!event.metaKey || event.key !== key) return;
50
-
51
- // Prevent the default characters from being inserted.
52
- event.preventDefault();
53
-
54
- // Toggle the mark `type`.
55
- change.toggleMark(type);
56
- return true;
57
- }
58
- };
59
- }
60
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_slate","_debug","log","debug","isMarkActive","editor","format","marks","Editor","toggleMark","isActive","removeMark","addMark","MarkHotkey","options","type","key","icon","tag","toolbar","isMark","onToggle","renderMark","props","mark","K","createElement","children","onKeyDown","event","change","metaKey","preventDefault"],"sources":["../../../src/plugins/hotKeys/index.js"],"sourcesContent":["import React from 'react';\nimport { Editor } from 'slate';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:plugins');\n\nconst isMarkActive = (editor, format) => {\n const marks = Editor.marks(editor);\n return marks ? marks[format] === true : false;\n};\n\nconst toggleMark = (editor, format) => {\n const isActive = isMarkActive(editor, format);\n\n if (isActive) {\n Editor.removeMark(editor, format);\n } else {\n Editor.addMark(editor, format, true);\n }\n};\n\nexport default function MarkHotkey(options) {\n const { type, key, icon, tag } = options;\n\n // Return our \"plugin\" object, containing the `onKeyDown` handler.\n return {\n toolbar: {\n isMark: true,\n type,\n icon,\n onToggle: editor => {\n log('[onToggleMark] type: ', type);\n toggleMark(editor, type);\n }\n },\n renderMark(props) {\n if (props.mark.type === type) {\n const K = tag || type;\n return <K>{props.children}</K>;\n }\n },\n onKeyDown(event, change) {\n // Check that the key pressed matches our `key` option.\n if (!event.metaKey || event.key !== key) return;\n\n // Prevent the default characters from being inserted.\n event.preventDefault();\n\n // Toggle the mark `type`.\n change.toggleMark(type);\n return true;\n }\n };\n}\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,IAAMG,GAAG,GAAG,IAAAC,iBAAK,EAAC,gCAAgC,CAAC;AAEnD,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAIC,MAAM,EAAEC,MAAM,EAAK;EACvC,IAAMC,KAAK,GAAGC,aAAM,CAACD,KAAK,CAACF,MAAM,CAAC;EAClC,OAAOE,KAAK,GAAGA,KAAK,CAACD,MAAM,CAAC,KAAK,IAAI,GAAG,KAAK;AAC/C,CAAC;AAED,IAAMG,UAAU,GAAG,SAAbA,UAAUA,CAAIJ,MAAM,EAAEC,MAAM,EAAK;EACrC,IAAMI,QAAQ,GAAGN,YAAY,CAACC,MAAM,EAAEC,MAAM,CAAC;EAE7C,IAAII,QAAQ,EAAE;IACZF,aAAM,CAACG,UAAU,CAACN,MAAM,EAAEC,MAAM,CAAC;EACnC,CAAC,MAAM;IACLE,aAAM,CAACI,OAAO,CAACP,MAAM,EAAEC,MAAM,EAAE,IAAI,CAAC;EACtC;AACF,CAAC;AAEc,SAASO,UAAUA,CAACC,OAAO,EAAE;EAC1C,IAAQC,IAAI,GAAqBD,OAAO,CAAhCC,IAAI;IAAEC,GAAG,GAAgBF,OAAO,CAA1BE,GAAG;IAAEC,IAAI,GAAUH,OAAO,CAArBG,IAAI;IAAEC,GAAG,GAAKJ,OAAO,CAAfI,GAAG;;EAE5B;EACA,OAAO;IACLC,OAAO,EAAE;MACPC,MAAM,EAAE,IAAI;MACZL,IAAI,EAAJA,IAAI;MACJE,IAAI,EAAJA,IAAI;MACJI,QAAQ,EAAE,SAAAA,SAAAhB,MAAM,EAAI;QAClBH,GAAG,CAAC,uBAAuB,EAAEa,IAAI,CAAC;QAClCN,UAAU,CAACJ,MAAM,EAAEU,IAAI,CAAC;MAC1B;IACF,CAAC;IACDO,UAAU,WAAAA,WAACC,KAAK,EAAE;MAChB,IAAIA,KAAK,CAACC,IAAI,CAACT,IAAI,KAAKA,IAAI,EAAE;QAC5B,IAAMU,CAAC,GAAGP,GAAG,IAAIH,IAAI;QACrB,oBAAOlB,MAAA,YAAA6B,aAAA,CAACD,CAAC,QAAEF,KAAK,CAACI,QAAY,CAAC;MAChC;IACF,CAAC;IACDC,SAAS,WAAAA,UAACC,KAAK,EAAEC,MAAM,EAAE;MACvB;MACA,IAAI,CAACD,KAAK,CAACE,OAAO,IAAIF,KAAK,CAACb,GAAG,KAAKA,GAAG,EAAE;;MAEzC;MACAa,KAAK,CAACG,cAAc,CAAC,CAAC;;MAEtB;MACAF,MAAM,CAACrB,UAAU,CAACM,IAAI,CAAC;MACvB,OAAO,IAAI;IACb;EACF,CAAC;AACH"}
@@ -1,138 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports["default"] = void 0;
8
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
9
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
- var _react = _interopRequireDefault(require("react"));
12
- var _server = _interopRequireDefault(require("react-dom/server"));
13
- var _escapeHtml = _interopRequireDefault(require("escape-html"));
14
- var _slate = require("slate");
15
- var _slateHyperscript = require("slate-hyperscript");
16
- var _newSerialization = require("./new-serialization");
17
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
18
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
19
- var Html = /*#__PURE__*/(0, _createClass2["default"])(function Html(props) {
20
- var _this = this;
21
- (0, _classCallCheck2["default"])(this, Html);
22
- (0, _defineProperty2["default"])(this, "serializeEls", function (node) {
23
- var children = (node.children || []).map(function (n) {
24
- return _this.serializeEls(n);
25
- });
26
- var correctRule = _this.rules.reduce(function (res, rule) {
27
- return res || rule.serialize(node, children);
28
- }, null);
29
- if (correctRule) {
30
- return correctRule;
31
- }
32
- switch (node.type) {
33
- case 'quote':
34
- return /*#__PURE__*/_react["default"].createElement("blockquote", null, /*#__PURE__*/_react["default"].createElement("p", null, children));
35
- case 'paragraph':
36
- return /*#__PURE__*/_react["default"].createElement("p", null, children);
37
- case 'link':
38
- return /*#__PURE__*/_react["default"].createElement("a", {
39
- href: (0, _escapeHtml["default"])(node.url)
40
- }, children);
41
- default:
42
- return children;
43
- }
44
- });
45
- (0, _defineProperty2["default"])(this, "serialize", function (node) {
46
- var deserialized = _this.serializeEls(node);
47
- var html = _server["default"].renderToStaticMarkup( /*#__PURE__*/_react["default"].createElement('body', null, deserialized));
48
- var inner = html.slice(6, -7);
49
- return inner;
50
- });
51
- (0, _defineProperty2["default"])(this, "deserialize", function (html) {
52
- var body = _this.parseHtml(html);
53
- if (!body.firstChild || body.firstChild.nodeType === Node.TEXT_NODE || Object.keys(_newSerialization.MARK_TAGS).includes(body.firstChild.tagName.toLowerCase())) {
54
- body = _this.parseHtml("<span>".concat(html, "</span>"));
55
- }
56
- return _this.deserializeEls(body);
57
- });
58
- (0, _defineProperty2["default"])(this, "deserializeEls", function (element) {
59
- var markAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
60
- if (element.nodeType === Node.TEXT_NODE) {
61
- return (0, _slateHyperscript.jsx)('text', markAttributes, element.textContent);
62
- } else if (element.nodeType !== Node.ELEMENT_NODE) {
63
- return null;
64
- }
65
- var nodeAttributes = _objectSpread({}, markAttributes);
66
-
67
- // define attributes for text nodes
68
- if (element.nodeName === 'STRONG') {
69
- nodeAttributes.bold = true;
70
- }
71
- var nextFn = function nextFn(nodes) {
72
- var childNodes = Array.from(nodes);
73
- var children = Array.from(childNodes).map(function (node) {
74
- return _this.deserializeEls(node, nodeAttributes);
75
- }).flat();
76
- if (children.length === 0) {
77
- children.push((0, _slateHyperscript.jsx)('text', nodeAttributes, ''));
78
- }
79
- return children;
80
- };
81
- var correctRule = _this.rules.reduce(function (res, rule) {
82
- return res || rule.deserialize(element, nextFn);
83
- }, null);
84
- if (correctRule) {
85
- return correctRule;
86
- }
87
- var childNodes = Array.from(element.childNodes);
88
- var children = Array.from(childNodes).map(function (node) {
89
- return _this.deserializeEls(node, nodeAttributes);
90
- }).flat();
91
- if (children.length === 0) {
92
- children.push((0, _slateHyperscript.jsx)('text', nodeAttributes, ''));
93
- }
94
- switch (element.nodeName) {
95
- case 'TABLE':
96
- return (0, _slateHyperscript.jsx)('element', {
97
- type: 'table'
98
- }, children);
99
- case 'TBODY':
100
- return (0, _slateHyperscript.jsx)('element', {
101
- type: 'tbody'
102
- }, children);
103
- case 'TR':
104
- return (0, _slateHyperscript.jsx)('element', {
105
- type: 'tr'
106
- }, children);
107
- case 'TD':
108
- return (0, _slateHyperscript.jsx)('element', {
109
- type: 'td'
110
- }, children);
111
- case 'BODY':
112
- return (0, _slateHyperscript.jsx)('fragment', {}, children);
113
- case 'BR':
114
- return '\n';
115
- case 'BLOCKQUOTE':
116
- return (0, _slateHyperscript.jsx)('element', {
117
- type: 'quote'
118
- }, children);
119
- case 'P':
120
- return (0, _slateHyperscript.jsx)('element', {
121
- type: 'paragraph'
122
- }, children);
123
- case 'A':
124
- return (0, _slateHyperscript.jsx)('element', {
125
- type: 'link',
126
- url: element.getAttribute('href')
127
- }, children);
128
- default:
129
- return children;
130
- }
131
- });
132
- this.defaultBlock = props.defaultBlock;
133
- this.parseHtml = props.parseHtml;
134
- this.rules = props.rules;
135
- });
136
- var _default = Html;
137
- exports["default"] = _default;
138
- //# sourceMappingURL=test-serializer.js.map