@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.
- package/CHANGELOG.json +1 -1
- package/CHANGELOG.md +81 -0
- package/LICENSE.md +5 -0
- package/lib/editor.js +410 -543
- package/lib/editor.js.map +1 -1
- package/lib/index.js +200 -101
- package/lib/index.js.map +1 -1
- package/lib/parse-html.js +5 -6
- package/lib/parse-html.js.map +1 -1
- package/lib/plugins/characters/custom-popper.js +12 -2
- package/lib/plugins/characters/custom-popper.js.map +1 -1
- package/lib/plugins/characters/index.js +71 -19
- package/lib/plugins/characters/index.js.map +1 -1
- package/lib/plugins/characters/utils.js.map +1 -1
- package/lib/plugins/html/icons/index.js +38 -0
- package/lib/plugins/html/icons/index.js.map +1 -0
- package/lib/plugins/html/index.js +75 -0
- package/lib/plugins/html/index.js.map +1 -0
- package/lib/plugins/image/alt-dialog.js +26 -0
- package/lib/plugins/image/alt-dialog.js.map +1 -1
- package/lib/plugins/image/component.js +124 -90
- package/lib/plugins/image/component.js.map +1 -1
- package/lib/plugins/image/image-toolbar.js +45 -7
- package/lib/plugins/image/image-toolbar.js.map +1 -1
- package/lib/plugins/image/index.js +91 -113
- package/lib/plugins/image/index.js.map +1 -1
- package/lib/plugins/image/insert-image-handler.js +54 -72
- package/lib/plugins/image/insert-image-handler.js.map +1 -1
- package/lib/plugins/index.js +71 -31
- package/lib/plugins/index.js.map +1 -1
- package/lib/plugins/list/index.js +129 -58
- package/lib/plugins/list/index.js.map +1 -1
- package/lib/plugins/math/index.js +152 -118
- package/lib/plugins/math/index.js.map +1 -1
- package/lib/plugins/media/index.js +185 -168
- package/lib/plugins/media/index.js.map +1 -1
- package/lib/plugins/media/media-dialog.js +197 -110
- package/lib/plugins/media/media-dialog.js.map +1 -1
- package/lib/plugins/media/media-toolbar.js +24 -4
- package/lib/plugins/media/media-toolbar.js.map +1 -1
- package/lib/plugins/media/media-wrapper.js +65 -23
- package/lib/plugins/media/media-wrapper.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +50 -10
- package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/index.js +22 -9
- package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
- package/lib/plugins/respArea/explicit-constructed-response/index.js +9 -4
- package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
- package/lib/plugins/respArea/icons/index.js +18 -1
- package/lib/plugins/respArea/icons/index.js.map +1 -1
- package/lib/plugins/respArea/index.js +133 -122
- package/lib/plugins/respArea/index.js.map +1 -1
- package/lib/plugins/respArea/inline-dropdown/index.js +10 -4
- package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
- package/lib/plugins/respArea/utils.js +33 -15
- package/lib/plugins/respArea/utils.js.map +1 -1
- package/lib/plugins/table/icons/index.js +7 -0
- package/lib/plugins/table/icons/index.js.map +1 -1
- package/lib/plugins/table/index.js +279 -390
- package/lib/plugins/table/index.js.map +1 -1
- package/lib/plugins/table/table-toolbar.js +47 -14
- package/lib/plugins/table/table-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/default-toolbar.js +63 -51
- package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/done-button.js +9 -1
- package/lib/plugins/toolbar/done-button.js.map +1 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js +140 -83
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/index.js +5 -0
- package/lib/plugins/toolbar/index.js.map +1 -1
- package/lib/plugins/toolbar/toolbar-buttons.js +39 -8
- package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
- package/lib/plugins/toolbar/toolbar.js +261 -225
- package/lib/plugins/toolbar/toolbar.js.map +1 -1
- package/lib/plugins/utils.js +16 -19
- package/lib/plugins/utils.js.map +1 -1
- package/lib/serialization.js +70 -11
- package/lib/serialization.js.map +1 -1
- package/lib/theme.js.map +1 -1
- package/package.json +18 -17
- package/src/editor.jsx +139 -434
- package/src/index.jsx +96 -62
- package/src/plugins/characters/index.jsx +17 -12
- package/src/plugins/html/icons/index.jsx +19 -0
- package/src/plugins/html/index.jsx +68 -0
- package/src/plugins/image/component.jsx +38 -60
- package/src/plugins/image/index.jsx +42 -95
- package/src/plugins/image/insert-image-handler.js +27 -62
- package/src/plugins/index.jsx +39 -21
- package/src/plugins/list/index.jsx +90 -62
- package/src/plugins/math/index.jsx +70 -93
- package/src/plugins/media/index.jsx +117 -146
- package/src/plugins/media/media-dialog.js +9 -10
- package/src/plugins/media/media-wrapper.jsx +27 -29
- package/src/plugins/respArea/drag-in-the-blank/index.jsx +4 -5
- package/src/plugins/respArea/explicit-constructed-response/index.jsx +1 -2
- package/src/plugins/respArea/index.jsx +84 -114
- package/src/plugins/respArea/inline-dropdown/index.jsx +2 -3
- package/src/plugins/respArea/utils.jsx +28 -23
- package/src/plugins/table/index.jsx +214 -334
- package/src/plugins/table/table-toolbar.jsx +4 -3
- package/src/plugins/toolbar/default-toolbar.jsx +30 -48
- package/src/plugins/toolbar/editor-and-toolbar.jsx +114 -114
- package/src/plugins/toolbar/toolbar.jsx +224 -254
- package/src/plugins/utils.js +0 -16
- package/src/serialization.jsx +1 -1
- package/lib/components.js +0 -92
- package/lib/components.js.map +0 -1
- package/lib/new-serialization.js +0 -280
- package/lib/new-serialization.js.map +0 -1
- package/lib/plugins/hotKeys/index.js +0 -60
- package/lib/plugins/hotKeys/index.js.map +0 -1
- package/lib/test-serializer.js +0 -138
- package/lib/test-serializer.js.map +0 -1
- package/src/components.js +0 -135
- package/src/new-serialization.jsx +0 -310
- package/src/plugins/hotKeys/index.js +0 -54
- package/src/test-serializer.js +0 -132
package/lib/plugins/utils.js
CHANGED
|
@@ -1,65 +1,62 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
3
|
Object.defineProperty(exports, "__esModule", {
|
|
5
4
|
value: true
|
|
6
5
|
});
|
|
7
|
-
exports.
|
|
8
|
-
|
|
9
|
-
var _slate = require("slate");
|
|
6
|
+
exports.hasNode = exports.hasMark = exports.hasBlock = exports.findSingleNode = exports.findParentNode = void 0;
|
|
7
|
+
|
|
10
8
|
var findSingleNode = function findSingleNode(value) {
|
|
11
9
|
if (!value || !value.isCollapsed || !value.startKey) {
|
|
12
10
|
return;
|
|
13
11
|
}
|
|
12
|
+
|
|
14
13
|
var inline = value.document.getClosestInline(value.startKey);
|
|
14
|
+
|
|
15
15
|
if (inline) {
|
|
16
16
|
return inline;
|
|
17
17
|
}
|
|
18
|
+
|
|
18
19
|
var block = value.document.getClosestBlock(value.startKey);
|
|
20
|
+
|
|
19
21
|
if (block) {
|
|
20
22
|
return block;
|
|
21
23
|
}
|
|
22
24
|
};
|
|
25
|
+
|
|
23
26
|
exports.findSingleNode = findSingleNode;
|
|
27
|
+
|
|
24
28
|
var findParentNode = function findParentNode(value, node) {
|
|
25
29
|
if (!value || !node) {
|
|
26
30
|
return;
|
|
27
31
|
}
|
|
32
|
+
|
|
28
33
|
return value.document.getParent(node.key);
|
|
29
34
|
};
|
|
35
|
+
|
|
30
36
|
exports.findParentNode = findParentNode;
|
|
37
|
+
|
|
31
38
|
var hasMark = function hasMark(value, type) {
|
|
32
39
|
return value && value.marks.some(function (mark) {
|
|
33
40
|
return mark.type == type;
|
|
34
41
|
});
|
|
35
42
|
};
|
|
43
|
+
|
|
36
44
|
exports.hasMark = hasMark;
|
|
45
|
+
|
|
37
46
|
var hasBlock = function hasBlock(value, type) {
|
|
38
47
|
return value && value.blocks.some(function (node) {
|
|
39
48
|
return node.type == type;
|
|
40
49
|
});
|
|
41
50
|
};
|
|
51
|
+
|
|
42
52
|
exports.hasBlock = hasBlock;
|
|
43
|
-
|
|
44
|
-
var blockType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'type';
|
|
45
|
-
var selection = editor.selection;
|
|
46
|
-
if (!selection) return false;
|
|
47
|
-
var _Array$from = Array.from(_slate.Editor.nodes(editor, {
|
|
48
|
-
at: _slate.Editor.unhangRange(editor, selection),
|
|
49
|
-
match: function match(n) {
|
|
50
|
-
return !_slate.Editor.isEditor(n) && _slate.Element.isElement(n) && n[blockType] === format;
|
|
51
|
-
}
|
|
52
|
-
})),
|
|
53
|
-
_Array$from2 = (0, _slicedToArray2["default"])(_Array$from, 1),
|
|
54
|
-
match = _Array$from2[0];
|
|
55
|
-
return !!match;
|
|
56
|
-
};
|
|
57
|
-
exports.isBlockActive = isBlockActive;
|
|
53
|
+
|
|
58
54
|
var hasNode = function hasNode(_ref, type) {
|
|
59
55
|
var document = _ref.document;
|
|
60
56
|
return document && document.nodes.some(function (node) {
|
|
61
57
|
return node.type == type;
|
|
62
58
|
});
|
|
63
59
|
};
|
|
60
|
+
|
|
64
61
|
exports.hasNode = hasNode;
|
|
65
62
|
//# sourceMappingURL=utils.js.map
|
package/lib/plugins/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/plugins/utils.js"],"names":["findSingleNode","value","isCollapsed","startKey","inline","document","getClosestInline","block","getClosestBlock","findParentNode","node","getParent","key","hasMark","type","marks","some","mark","hasBlock","blocks","hasNode","nodes"],"mappings":";;;;;;;AAAO,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,CAACC,KAAD,EAAW;AACvC,MAAI,CAACA,KAAD,IAAU,CAACA,KAAK,CAACC,WAAjB,IAAgC,CAACD,KAAK,CAACE,QAA3C,EAAqD;AACnD;AACD;;AAED,MAAMC,MAAM,GAAGH,KAAK,CAACI,QAAN,CAAeC,gBAAf,CAAgCL,KAAK,CAACE,QAAtC,CAAf;;AAEA,MAAIC,MAAJ,EAAY;AACV,WAAOA,MAAP;AACD;;AAED,MAAMG,KAAK,GAAGN,KAAK,CAACI,QAAN,CAAeG,eAAf,CAA+BP,KAAK,CAACE,QAArC,CAAd;;AAEA,MAAII,KAAJ,EAAW;AACT,WAAOA,KAAP;AACD;AACF,CAhBM;;;;AAkBA,IAAME,cAAc,GAAG,SAAjBA,cAAiB,CAACR,KAAD,EAAQS,IAAR,EAAiB;AAC7C,MAAI,CAACT,KAAD,IAAU,CAACS,IAAf,EAAqB;AACnB;AACD;;AAED,SAAOT,KAAK,CAACI,QAAN,CAAeM,SAAf,CAAyBD,IAAI,CAACE,GAA9B,CAAP;AACD,CANM;;;;AAQA,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAACZ,KAAD,EAAQa,IAAR;AAAA,SAAiBb,KAAK,IAAIA,KAAK,CAACc,KAAN,CAAYC,IAAZ,CAAiB,UAACC,IAAD;AAAA,WAAUA,IAAI,CAACH,IAAL,IAAaA,IAAvB;AAAA,GAAjB,CAA1B;AAAA,CAAhB;;;;AAEA,IAAMI,QAAQ,GAAG,SAAXA,QAAW,CAACjB,KAAD,EAAQa,IAAR;AAAA,SAAiBb,KAAK,IAAIA,KAAK,CAACkB,MAAN,CAAaH,IAAb,CAAkB,UAACN,IAAD;AAAA,WAAUA,IAAI,CAACI,IAAL,IAAaA,IAAvB;AAAA,GAAlB,CAA1B;AAAA,CAAjB;;;;AAEA,IAAMM,OAAO,GAAG,SAAVA,OAAU,OAAeN,IAAf;AAAA,MAAGT,QAAH,QAAGA,QAAH;AAAA,SAAwBA,QAAQ,IAAIA,QAAQ,CAACgB,KAAT,CAAeL,IAAf,CAAoB,UAACN,IAAD;AAAA,WAAUA,IAAI,CAACI,IAAL,IAAaA,IAAvB;AAAA,GAApB,CAApC;AAAA,CAAhB","sourcesContent":["export const findSingleNode = (value) => {\n if (!value || !value.isCollapsed || !value.startKey) {\n return;\n }\n\n const inline = value.document.getClosestInline(value.startKey);\n\n if (inline) {\n return inline;\n }\n\n const block = value.document.getClosestBlock(value.startKey);\n\n if (block) {\n return block;\n }\n};\n\nexport const findParentNode = (value, node) => {\n if (!value || !node) {\n return;\n }\n\n return value.document.getParent(node.key);\n};\n\nexport const hasMark = (value, type) => value && value.marks.some((mark) => mark.type == type);\n\nexport const hasBlock = (value, type) => value && value.blocks.some((node) => node.type == type);\n\nexport const hasNode = ({ document }, type) => document && document.nodes.some((node) => node.type == type);\n"],"file":"utils.js"}
|
package/lib/serialization.js
CHANGED
|
@@ -1,23 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
4
5
|
Object.defineProperty(exports, "__esModule", {
|
|
5
6
|
value: true
|
|
6
7
|
});
|
|
7
8
|
exports.valueToHtml = exports.reactAttributes = exports.parseStyleString = exports.htmlToValue = exports.getBase64 = exports.TEXT_RULE = exports.BLOCK_TAGS = void 0;
|
|
9
|
+
|
|
8
10
|
var _slateHtmlSerializer = _interopRequireDefault(require("slate-html-serializer"));
|
|
11
|
+
|
|
9
12
|
var _react = _interopRequireDefault(require("react"));
|
|
13
|
+
|
|
10
14
|
var _debug = _interopRequireDefault(require("debug"));
|
|
15
|
+
|
|
11
16
|
var _toStyle = require("to-style");
|
|
17
|
+
|
|
12
18
|
var _image = require("./plugins/image");
|
|
19
|
+
|
|
13
20
|
var _math = require("./plugins/math");
|
|
21
|
+
|
|
14
22
|
var _media = require("./plugins/media");
|
|
23
|
+
|
|
15
24
|
var _list = require("./plugins/list");
|
|
25
|
+
|
|
16
26
|
var _table = require("./plugins/table");
|
|
27
|
+
|
|
17
28
|
var _respArea = require("./plugins/respArea");
|
|
29
|
+
|
|
18
30
|
var _slate = require("slate");
|
|
19
|
-
var log = (0, _debug["default"])('@pie-lib:editable-html:serialization');
|
|
20
31
|
|
|
32
|
+
var log = (0, _debug["default"])('@pie-lib:editable-html:serialization');
|
|
21
33
|
/**
|
|
22
34
|
* Tags to blocks.
|
|
23
35
|
*
|
|
@@ -37,12 +49,12 @@ var BLOCK_TAGS = {
|
|
|
37
49
|
h5: 'heading-five',
|
|
38
50
|
h6: 'heading-six'
|
|
39
51
|
};
|
|
40
|
-
|
|
41
52
|
/**
|
|
42
53
|
* Tags to marks.
|
|
43
54
|
*
|
|
44
55
|
* @type {Object}
|
|
45
56
|
*/
|
|
57
|
+
|
|
46
58
|
exports.BLOCK_TAGS = BLOCK_TAGS;
|
|
47
59
|
var MARK_TAGS = {
|
|
48
60
|
b: 'bold',
|
|
@@ -52,39 +64,51 @@ var MARK_TAGS = {
|
|
|
52
64
|
code: 'code',
|
|
53
65
|
strong: 'bold'
|
|
54
66
|
};
|
|
67
|
+
|
|
55
68
|
var parseStyleString = function parseStyleString(s) {
|
|
56
69
|
var regex = /([\w-]*)\s*:\s*([^;]*)/g;
|
|
57
70
|
var match;
|
|
58
71
|
var result = {};
|
|
72
|
+
|
|
59
73
|
while (match = regex.exec(s)) {
|
|
60
74
|
result[match[1]] = match[2].trim();
|
|
61
75
|
}
|
|
76
|
+
|
|
62
77
|
return result;
|
|
63
78
|
};
|
|
79
|
+
|
|
64
80
|
exports.parseStyleString = parseStyleString;
|
|
81
|
+
|
|
65
82
|
var getBase64 = function getBase64(file) {
|
|
66
83
|
return new Promise(function (resolve, reject) {
|
|
67
84
|
var reader = new FileReader();
|
|
68
85
|
reader.readAsDataURL(file);
|
|
86
|
+
|
|
69
87
|
reader.onload = function () {
|
|
70
88
|
return resolve(reader.result);
|
|
71
89
|
};
|
|
90
|
+
|
|
72
91
|
reader.onerror = function (error) {
|
|
73
92
|
return reject(error);
|
|
74
93
|
};
|
|
75
94
|
});
|
|
76
95
|
};
|
|
96
|
+
|
|
77
97
|
exports.getBase64 = getBase64;
|
|
98
|
+
|
|
78
99
|
var reactAttributes = function reactAttributes(o) {
|
|
79
100
|
return (0, _toStyle.object)(o, {
|
|
80
101
|
camelize: true,
|
|
81
102
|
addUnits: false
|
|
82
103
|
});
|
|
83
104
|
};
|
|
105
|
+
|
|
84
106
|
exports.reactAttributes = reactAttributes;
|
|
107
|
+
|
|
85
108
|
var attributesToMap = function attributesToMap(el) {
|
|
86
109
|
return function (acc, attribute) {
|
|
87
110
|
var value = el.getAttribute(attribute);
|
|
111
|
+
|
|
88
112
|
if (value) {
|
|
89
113
|
if (attribute === 'style') {
|
|
90
114
|
var styleString = el.getAttribute(attribute);
|
|
@@ -94,11 +118,12 @@ var attributesToMap = function attributesToMap(el) {
|
|
|
94
118
|
acc[attribute] = el.getAttribute(attribute);
|
|
95
119
|
}
|
|
96
120
|
}
|
|
121
|
+
|
|
97
122
|
return acc;
|
|
98
123
|
};
|
|
99
124
|
};
|
|
100
|
-
var attributes = ['border', 'cellpadding', 'cellspacing', 'class', 'style'];
|
|
101
125
|
|
|
126
|
+
var attributes = ['border', 'cellpadding', 'cellspacing', 'class', 'style'];
|
|
102
127
|
/**
|
|
103
128
|
* Serializer rules.
|
|
104
129
|
*
|
|
@@ -111,16 +136,20 @@ var blocks = {
|
|
|
111
136
|
var block = BLOCK_TAGS[el.tagName.toLowerCase()];
|
|
112
137
|
if (!block) return;
|
|
113
138
|
log('[blocks:deserialize] block: ', block);
|
|
139
|
+
|
|
114
140
|
if (el.childNodes.length === 1) {
|
|
115
141
|
var cn = el.childNodes[0];
|
|
142
|
+
|
|
116
143
|
if (cn && cn.tagName && cn.tagName.toLowerCase() === block) {
|
|
117
144
|
log('[we have a child node of the same]...');
|
|
118
145
|
return;
|
|
119
146
|
}
|
|
120
147
|
}
|
|
148
|
+
|
|
121
149
|
return {
|
|
122
150
|
object: 'block',
|
|
123
151
|
type: block,
|
|
152
|
+
|
|
124
153
|
/**
|
|
125
154
|
* Here for rendering styles for all block elements
|
|
126
155
|
*/
|
|
@@ -132,9 +161,10 @@ var blocks = {
|
|
|
132
161
|
},
|
|
133
162
|
serialize: function serialize(object, children) {
|
|
134
163
|
if (object.object !== 'block') return;
|
|
135
|
-
var jsonData = object.data;
|
|
164
|
+
var jsonData = object.data.toJSON();
|
|
136
165
|
log('[blocks:serialize] object: ', object, children);
|
|
137
166
|
var key;
|
|
167
|
+
|
|
138
168
|
for (key in BLOCK_TAGS) {
|
|
139
169
|
if (BLOCK_TAGS[key] === object.type) {
|
|
140
170
|
var Tag = key;
|
|
@@ -164,24 +194,27 @@ var marks = {
|
|
|
164
194
|
}
|
|
165
195
|
}
|
|
166
196
|
}
|
|
167
|
-
};
|
|
197
|
+
}; // eslint-disable-next-line no-unused-vars
|
|
168
198
|
|
|
169
|
-
// eslint-disable-next-line no-unused-vars
|
|
170
199
|
var findPreviousText = function findPreviousText(el) {
|
|
171
200
|
if (el.nodeName === '#text') {
|
|
172
201
|
return el;
|
|
173
202
|
}
|
|
203
|
+
|
|
174
204
|
if (el.previousSibling) {
|
|
175
205
|
return findPreviousText(el.previousSibling);
|
|
176
206
|
}
|
|
207
|
+
|
|
177
208
|
return null;
|
|
178
209
|
};
|
|
210
|
+
|
|
179
211
|
var TEXT_RULE = {
|
|
180
212
|
deserialize: function deserialize(el) {
|
|
181
213
|
/**
|
|
182
214
|
* This needs to be called on the dom element in order to merge the adjacent text nodes together
|
|
183
215
|
* */
|
|
184
216
|
el.normalize();
|
|
217
|
+
|
|
185
218
|
if (el.tagName && el.tagName.toLowerCase() === 'br') {
|
|
186
219
|
return {
|
|
187
220
|
object: 'text',
|
|
@@ -191,6 +224,7 @@ var TEXT_RULE = {
|
|
|
191
224
|
}]
|
|
192
225
|
};
|
|
193
226
|
}
|
|
227
|
+
|
|
194
228
|
if (el.nodeName === '#text') {
|
|
195
229
|
if (el.nodeValue && el.nodeValue.match(/<!--.*?-->/)) return;
|
|
196
230
|
log('[text:deserialize] return text object..');
|
|
@@ -215,28 +249,35 @@ var TEXT_RULE = {
|
|
|
215
249
|
};
|
|
216
250
|
exports.TEXT_RULE = TEXT_RULE;
|
|
217
251
|
var RULES = [_list.serialization, _math.serialization, _media.serialization, _image.serialization, _table.serialization, _respArea.serialization, TEXT_RULE, blocks, marks];
|
|
252
|
+
|
|
218
253
|
function allWhitespace(node) {
|
|
219
254
|
// Use ECMA-262 Edition 3 String and RegExp features
|
|
220
255
|
return !/[^\t\n\r ]/.test(node.textContent);
|
|
221
256
|
}
|
|
257
|
+
|
|
222
258
|
function defaultParseHtml(html) {
|
|
223
259
|
if (typeof DOMParser === 'undefined') {
|
|
224
260
|
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.');
|
|
225
261
|
}
|
|
262
|
+
|
|
226
263
|
var parsed = new DOMParser().parseFromString(html, 'text/html');
|
|
227
264
|
var body = parsed.body;
|
|
228
265
|
var textNodes = document.createTreeWalker(body, NodeFilter.SHOW_TEXT, null, null);
|
|
229
266
|
var n = textNodes.nextNode();
|
|
267
|
+
|
|
230
268
|
while (n) {
|
|
231
269
|
if (allWhitespace(n) || n.nodeValue === "\u200B") {
|
|
232
270
|
n.parentNode.removeChild(n);
|
|
233
271
|
}
|
|
272
|
+
|
|
234
273
|
n = textNodes.nextNode();
|
|
235
274
|
}
|
|
275
|
+
|
|
236
276
|
return body;
|
|
237
277
|
}
|
|
238
|
-
|
|
239
278
|
/** If this lib is used on the server side, we need to bypass using the DOMParser - just put in a stub. */
|
|
279
|
+
|
|
280
|
+
|
|
240
281
|
var parseHtml = typeof window === 'undefined' ? function () {
|
|
241
282
|
return {
|
|
242
283
|
childNodes: []
|
|
@@ -247,18 +288,20 @@ var serializer = new _slateHtmlSerializer["default"]({
|
|
|
247
288
|
rules: RULES,
|
|
248
289
|
parseHtml: parseHtml
|
|
249
290
|
});
|
|
291
|
+
|
|
250
292
|
var _extends = Object.assign || function (target) {
|
|
251
293
|
for (var i = 1; i < arguments.length; i++) {
|
|
252
294
|
var source = arguments[i];
|
|
295
|
+
|
|
253
296
|
for (var key in source) {
|
|
254
297
|
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
255
298
|
target[key] = source[key];
|
|
256
299
|
}
|
|
257
300
|
}
|
|
258
301
|
}
|
|
302
|
+
|
|
259
303
|
return target;
|
|
260
304
|
};
|
|
261
|
-
|
|
262
305
|
/**
|
|
263
306
|
* This is needed in order to override the function that eventually leads
|
|
264
307
|
* to the max iteration of 12, which in most cases it's not enough. The newer versions
|
|
@@ -268,6 +311,8 @@ var _extends = Object.assign || function (target) {
|
|
|
268
311
|
* Below is the code that calculates the max iterations.
|
|
269
312
|
* var max = schema.stack.plugins.length + schema.rules.length + 1;
|
|
270
313
|
*/
|
|
314
|
+
|
|
315
|
+
|
|
271
316
|
serializer.deserialize = function deserialize(html) {
|
|
272
317
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
273
318
|
var _options$toJSON = options.toJSON;
|
|
@@ -276,19 +321,22 @@ serializer.deserialize = function deserialize(html) {
|
|
|
276
321
|
var parseHtml = this.parseHtml;
|
|
277
322
|
var fragment = parseHtml(html);
|
|
278
323
|
var children = Array.from(fragment.childNodes);
|
|
279
|
-
var nodes = this.deserializeElements(children);
|
|
324
|
+
var nodes = this.deserializeElements(children); // COMPAT: ensure that all top-level inline nodes are wrapped into a block.
|
|
280
325
|
|
|
281
|
-
// COMPAT: ensure that all top-level inline nodes are wrapped into a block.
|
|
282
326
|
nodes = nodes.reduce(function (memo, node, i, original) {
|
|
283
327
|
if (node.object === 'block') {
|
|
284
328
|
memo.push(node);
|
|
285
329
|
return memo;
|
|
286
330
|
}
|
|
331
|
+
|
|
287
332
|
if (i > 0 && original[i - 1].object !== 'block') {
|
|
288
333
|
var _block = memo[memo.length - 1];
|
|
334
|
+
|
|
289
335
|
_block.nodes.push(node);
|
|
336
|
+
|
|
290
337
|
return memo;
|
|
291
338
|
}
|
|
339
|
+
|
|
292
340
|
var block = _extends({
|
|
293
341
|
object: 'block',
|
|
294
342
|
data: {},
|
|
@@ -296,9 +344,11 @@ serializer.deserialize = function deserialize(html) {
|
|
|
296
344
|
}, defaultBlock, {
|
|
297
345
|
nodes: [node]
|
|
298
346
|
});
|
|
347
|
+
|
|
299
348
|
memo.push(block);
|
|
300
349
|
return memo;
|
|
301
350
|
}, []);
|
|
351
|
+
|
|
302
352
|
if (nodes.length === 0) {
|
|
303
353
|
nodes = [_extends({
|
|
304
354
|
object: 'block',
|
|
@@ -315,6 +365,7 @@ serializer.deserialize = function deserialize(html) {
|
|
|
315
365
|
}]
|
|
316
366
|
})];
|
|
317
367
|
}
|
|
368
|
+
|
|
318
369
|
var json = {
|
|
319
370
|
object: 'value',
|
|
320
371
|
document: {
|
|
@@ -327,6 +378,7 @@ serializer.deserialize = function deserialize(html) {
|
|
|
327
378
|
}
|
|
328
379
|
};
|
|
329
380
|
var i;
|
|
381
|
+
|
|
330
382
|
for (i = 0; i < 3000; i++) {
|
|
331
383
|
json.schema.rules.push({
|
|
332
384
|
match: {
|
|
@@ -339,12 +391,16 @@ serializer.deserialize = function deserialize(html) {
|
|
|
339
391
|
}]
|
|
340
392
|
});
|
|
341
393
|
}
|
|
394
|
+
|
|
342
395
|
var ret = toJSON ? json : _slate.Value.fromJSON(json);
|
|
396
|
+
|
|
343
397
|
if (ret) {
|
|
344
398
|
return ret;
|
|
345
399
|
}
|
|
400
|
+
|
|
346
401
|
return null;
|
|
347
402
|
};
|
|
403
|
+
|
|
348
404
|
var htmlToValue = function htmlToValue(html) {
|
|
349
405
|
try {
|
|
350
406
|
return serializer.deserialize(html);
|
|
@@ -354,11 +410,12 @@ var htmlToValue = function htmlToValue(html) {
|
|
|
354
410
|
return {};
|
|
355
411
|
}
|
|
356
412
|
};
|
|
413
|
+
|
|
357
414
|
exports.htmlToValue = htmlToValue;
|
|
415
|
+
|
|
358
416
|
var valueToHtml = function valueToHtml(value) {
|
|
359
417
|
return serializer.serialize(value);
|
|
360
418
|
};
|
|
361
|
-
|
|
362
419
|
/**
|
|
363
420
|
*
|
|
364
421
|
* <div><div>a</div></div> -> <div>a</div>
|
|
@@ -366,5 +423,7 @@ var valueToHtml = function valueToHtml(value) {
|
|
|
366
423
|
* <div><div>a</div><div>b</div></div> -> <div>a</div><div>b</div>
|
|
367
424
|
* <div><div>a</div>4444<div>b</div></div> -> <div>a</div>4444<div>b</div>
|
|
368
425
|
*/
|
|
426
|
+
|
|
427
|
+
|
|
369
428
|
exports.valueToHtml = valueToHtml;
|
|
370
429
|
//# sourceMappingURL=serialization.js.map
|
package/lib/serialization.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serialization.js","names":["_slateHtmlSerializer","_interopRequireDefault","require","_react","_debug","_toStyle","_image","_math","_media","_list","_table","_respArea","_slate","log","debug","BLOCK_TAGS","div","span","p","blockquote","pre","h1","h2","h3","h4","h5","h6","exports","MARK_TAGS","b","em","u","s","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","object","type","data","reduce","nodes","serialize","children","jsonData","key","Tag","createElement","marks","mark","Mark","isMark","findPreviousText","nodeName","previousSibling","TEXT_RULE","normalize","leaves","text","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","Html","defaultBlock","rules","_extends","Object","assign","target","arguments","source","prototype","hasOwnProperty","call","options","undefined","_options$toJSON","toJSON","fragment","Array","from","deserializeElements","memo","original","_block","isVoid","json","schema","ret","Value","fromJSON","htmlToValue","e","console","valueToHtml"],"sources":["../src/serialization.jsx"],"sourcesContent":["import Html from 'slate-html-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, Value } from 'slate';\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\nconst MARK_TAGS = {\n b: 'bold',\n em: 'italic',\n u: 'underline',\n s: '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 {\n object: 'block',\n type: block,\n /**\n * Here for rendering styles for all block elements\n */\n data: { attributes: attributes.reduce(attributesToMap(el), {}) },\n nodes: 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) return;\n log('[deserialize] mark: ', mark);\n return {\n object: 'mark',\n type: mark,\n nodes: next(el.childNodes),\n };\n },\n serialize(object, children) {\n if (Mark.isMark(object)) {\n for (var key in MARK_TAGS) {\n if (MARK_TAGS[key] === object.type) {\n const Tag = key;\n return <Tag>{children}</Tag>;\n }\n }\n }\n },\n};\n\n// eslint-disable-next-line no-unused-vars\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 {\n object: 'text',\n leaves: [\n {\n object: 'leaf',\n text: '\\n',\n },\n ],\n };\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 {\n object: 'text',\n leaves: [\n {\n object: 'leaf',\n text: el.nodeValue,\n },\n ],\n };\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 var textNodes = document.createTreeWalker(body, NodeFilter.SHOW_TEXT, null, null);\n var 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 Html({\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\n/**\n * This is needed in order to override the function that eventually leads\n * to the max iteration of 12, which in most cases it's not enough. The newer versions\n * have a different way to calculate this, but updating to a newer version of slate\n * requires a lot of work fixing other issues. So we just increase the rules by 1000,\n * which means a lot of iterations.\n * Below is the code that calculates the max iterations.\n * var max = schema.stack.plugins.length + schema.rules.length + 1;\n */\nserializer.deserialize = function deserialize(html) {\n const options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const _options$toJSON = options.toJSON;\n const toJSON = _options$toJSON === undefined ? false : _options$toJSON;\n const defaultBlock = this.defaultBlock;\n const parseHtml = this.parseHtml;\n\n const fragment = parseHtml(html);\n const children = Array.from(fragment.childNodes);\n let nodes = this.deserializeElements(children);\n\n // COMPAT: ensure that all top-level inline nodes are wrapped into a block.\n nodes = nodes.reduce(function(memo, node, i, original) {\n if (node.object === 'block') {\n memo.push(node);\n return memo;\n }\n\n if (i > 0 && original[i - 1].object !== 'block') {\n const _block = memo[memo.length - 1];\n\n _block.nodes.push(node);\n return memo;\n }\n\n const block = _extends({ object: 'block', data: {}, isVoid: false }, defaultBlock, {\n nodes: [node],\n });\n\n memo.push(block);\n return memo;\n }, []);\n\n if (nodes.length === 0) {\n nodes = [\n _extends({ object: 'block', data: {}, isVoid: false }, defaultBlock, {\n nodes: [{ object: 'text', leaves: [{ object: 'leaf', text: '', marks: [] }] }],\n }),\n ];\n }\n\n const json = {\n object: 'value',\n document: {\n object: 'document',\n data: {},\n nodes: nodes,\n },\n schema: {\n rules: [],\n },\n };\n\n let i;\n\n for (i = 0; i < 3000; i++) {\n json.schema.rules.push({\n match: { object: 'document' },\n nodes: [{ match: { object: 'block' } }],\n });\n }\n\n const ret = toJSON ? json : Value.fromJSON(json);\n\n if (ret) {\n return ret;\n }\n\n return null;\n};\n\nexport const htmlToValue = (html) => {\n try {\n return serializer.deserialize(html);\n } catch (e) {\n // eslint-disable-next-line no-console\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
|
+
{"version":3,"sources":["../src/serialization.jsx"],"names":["log","BLOCK_TAGS","div","span","p","blockquote","pre","h1","h2","h3","h4","h5","h6","MARK_TAGS","b","em","u","s","code","strong","parseStyleString","regex","match","result","exec","trim","getBase64","file","Promise","resolve","reject","reader","FileReader","readAsDataURL","onload","onerror","error","reactAttributes","o","camelize","addUnits","attributesToMap","el","acc","attribute","value","getAttribute","styleString","reactStyleObject","attributes","blocks","deserialize","next","block","tagName","toLowerCase","childNodes","length","cn","object","type","data","reduce","nodes","serialize","children","jsonData","toJSON","key","Tag","marks","mark","Mark","isMark","findPreviousText","nodeName","previousSibling","TEXT_RULE","normalize","leaves","text","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","Html","defaultBlock","rules","_extends","Object","assign","target","arguments","source","prototype","hasOwnProperty","call","options","undefined","_options$toJSON","fragment","Array","from","deserializeElements","memo","original","_block","isVoid","json","schema","ret","Value","fromJSON","htmlToValue","e","console","valueToHtml"],"mappings":"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","sourcesContent":["import Html from 'slate-html-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, Value } from 'slate';\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\nconst MARK_TAGS = {\n b: 'bold',\n em: 'italic',\n u: 'underline',\n s: '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 {\n object: 'block',\n type: block,\n /**\n * Here for rendering styles for all block elements\n */\n data: { attributes: attributes.reduce(attributesToMap(el), {}) },\n nodes: next(el.childNodes),\n };\n },\n serialize: (object, children) => {\n if (object.object !== 'block') return;\n\n const jsonData = object.data.toJSON();\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) return;\n log('[deserialize] mark: ', mark);\n return {\n object: 'mark',\n type: mark,\n nodes: next(el.childNodes),\n };\n },\n serialize(object, children) {\n if (Mark.isMark(object)) {\n for (var key in MARK_TAGS) {\n if (MARK_TAGS[key] === object.type) {\n const Tag = key;\n return <Tag>{children}</Tag>;\n }\n }\n }\n },\n};\n\n// eslint-disable-next-line no-unused-vars\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 {\n object: 'text',\n leaves: [\n {\n object: 'leaf',\n text: '\\n',\n },\n ],\n };\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 {\n object: 'text',\n leaves: [\n {\n object: 'leaf',\n text: el.nodeValue,\n },\n ],\n };\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 var textNodes = document.createTreeWalker(body, NodeFilter.SHOW_TEXT, null, null);\n var 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 Html({\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\n/**\n * This is needed in order to override the function that eventually leads\n * to the max iteration of 12, which in most cases it's not enough. The newer versions\n * have a different way to calculate this, but updating to a newer version of slate\n * requires a lot of work fixing other issues. So we just increase the rules by 1000,\n * which means a lot of iterations.\n * Below is the code that calculates the max iterations.\n * var max = schema.stack.plugins.length + schema.rules.length + 1;\n */\nserializer.deserialize = function deserialize(html) {\n const options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const _options$toJSON = options.toJSON;\n const toJSON = _options$toJSON === undefined ? false : _options$toJSON;\n const defaultBlock = this.defaultBlock;\n const parseHtml = this.parseHtml;\n\n const fragment = parseHtml(html);\n const children = Array.from(fragment.childNodes);\n let nodes = this.deserializeElements(children);\n\n // COMPAT: ensure that all top-level inline nodes are wrapped into a block.\n nodes = nodes.reduce(function(memo, node, i, original) {\n if (node.object === 'block') {\n memo.push(node);\n return memo;\n }\n\n if (i > 0 && original[i - 1].object !== 'block') {\n const _block = memo[memo.length - 1];\n\n _block.nodes.push(node);\n return memo;\n }\n\n const block = _extends({ object: 'block', data: {}, isVoid: false }, defaultBlock, {\n nodes: [node],\n });\n\n memo.push(block);\n return memo;\n }, []);\n\n if (nodes.length === 0) {\n nodes = [\n _extends({ object: 'block', data: {}, isVoid: false }, defaultBlock, {\n nodes: [{ object: 'text', leaves: [{ object: 'leaf', text: '', marks: [] }] }],\n }),\n ];\n }\n\n const json = {\n object: 'value',\n document: {\n object: 'document',\n data: {},\n nodes: nodes,\n },\n schema: {\n rules: [],\n },\n };\n\n let i;\n\n for (i = 0; i < 3000; i++) {\n json.schema.rules.push({\n match: { object: 'document' },\n nodes: [{ match: { object: 'block' } }],\n });\n }\n\n const ret = toJSON ? json : Value.fromJSON(json);\n\n if (ret) {\n return ret;\n }\n\n return null;\n};\n\nexport const htmlToValue = (html) => {\n try {\n return serializer.deserialize(html);\n } catch (e) {\n // eslint-disable-next-line no-console\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"],"file":"serialization.js"}
|
package/lib/theme.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/theme.js"],"names":["primary"],"mappings":";;;;;;AAAO,IAAMA,OAAO,GAAG,SAAhB","sourcesContent":["export const primary = '#304ffe';\n"],"file":"theme.js"}
|
package/package.json
CHANGED
|
@@ -1,42 +1,43 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-lib/editable-html",
|
|
3
|
-
"version": "10.0.0
|
|
3
|
+
"version": "10.0.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"module": "src/index.jsx",
|
|
8
8
|
"author": "pie-framework developers",
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"@emotion/
|
|
10
|
+
"@emotion/react": "^11.11.1",
|
|
11
|
+
"@emotion/styled": "^11.11.0",
|
|
11
12
|
"@material-ui/core": "^3.8.3",
|
|
12
13
|
"@material-ui/icons": "^3.0.2",
|
|
13
14
|
"@material-ui/styles": "^3.0.0-alpha.10",
|
|
14
|
-
"@
|
|
15
|
+
"@mui/icons-material": "^5.14.3",
|
|
16
|
+
"@mui/material": "^5.14.4",
|
|
17
|
+
"@pie-lib/drag": "^2.2.4",
|
|
15
18
|
"@pie-lib/math-rendering": "^2.5.17",
|
|
16
|
-
"@pie-lib/math-toolbar": "
|
|
17
|
-
"@pie-lib/render-ui": "^4.
|
|
19
|
+
"@pie-lib/math-toolbar": "^1.11.30",
|
|
20
|
+
"@pie-lib/render-ui": "^4.15.1",
|
|
18
21
|
"change-case": "^3.0.2",
|
|
19
22
|
"classnames": "^2.2.6",
|
|
20
23
|
"debug": "^4.1.1",
|
|
21
|
-
"escape-html": "^1.0.3",
|
|
22
24
|
"immutable": "^4.0.0-rc.12",
|
|
23
|
-
"is-hotkey": "^0.2.0",
|
|
24
25
|
"keycode": "^2.2.0",
|
|
25
26
|
"lodash": "^4.17.11",
|
|
26
27
|
"prop-types": "^15.6.2",
|
|
27
28
|
"react-attr-converter": "^0.3.1",
|
|
28
29
|
"react-jss": "^8.6.1",
|
|
29
30
|
"react-portal": "^4.2.0",
|
|
30
|
-
"slate": "^0.
|
|
31
|
-
"slate-dev-environment": "^0.2.
|
|
32
|
-
"slate-
|
|
33
|
-
"slate-
|
|
34
|
-
"slate-
|
|
35
|
-
"slate-plain-serializer": "^0.
|
|
36
|
-
"slate-prop-types": "^0.
|
|
37
|
-
"slate-react": "^0.
|
|
31
|
+
"slate": "^0.36.2",
|
|
32
|
+
"slate-dev-environment": "^0.2.0",
|
|
33
|
+
"slate-edit-list": "^0.11.3",
|
|
34
|
+
"slate-edit-table": "^0.17.0",
|
|
35
|
+
"slate-html-serializer": "^0.6.12",
|
|
36
|
+
"slate-plain-serializer": "^0.5.26",
|
|
37
|
+
"slate-prop-types": "^0.4.38",
|
|
38
|
+
"slate-react": "^0.14.3",
|
|
38
39
|
"slate-schema-violations": "^0.1.39",
|
|
39
|
-
"slate-soft-break": "^0.
|
|
40
|
+
"slate-soft-break": "^0.8.1",
|
|
40
41
|
"to-style": "^1.3.3"
|
|
41
42
|
},
|
|
42
43
|
"devDependencies": {
|
|
@@ -50,6 +51,6 @@
|
|
|
50
51
|
"publishConfig": {
|
|
51
52
|
"access": "public"
|
|
52
53
|
},
|
|
53
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "8af1ec262712154587d94ef19b33f4bad15016ea",
|
|
54
55
|
"scripts": {}
|
|
55
56
|
}
|