@pie-lib/mask-markup 1.13.34-next.0 → 2.0.0-beta.2
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.md +0 -8
- package/lib/choices/choice.js +6 -29
- package/lib/choices/choice.js.map +1 -1
- package/lib/choices/index.js +4 -32
- package/lib/choices/index.js.map +1 -1
- package/lib/componentize.js +0 -3
- package/lib/componentize.js.map +1 -1
- package/lib/components/blank.js +10 -50
- package/lib/components/blank.js.map +1 -1
- package/lib/components/correct-input.js +8 -24
- package/lib/components/correct-input.js.map +1 -1
- package/lib/components/dropdown.js +10 -36
- package/lib/components/dropdown.js.map +1 -1
- package/lib/components/input.js +9 -15
- package/lib/components/input.js.map +1 -1
- package/lib/constructed-response.js +7 -13
- package/lib/constructed-response.js.map +1 -1
- package/lib/drag-in-the-blank.js +17 -49
- package/lib/drag-in-the-blank.js.map +1 -1
- package/lib/index.js +0 -6
- package/lib/index.js.map +1 -1
- package/lib/inline-dropdown.js +3 -10
- package/lib/inline-dropdown.js.map +1 -1
- package/lib/mask.js +12 -64
- package/lib/mask.js.map +1 -1
- package/lib/new-serialization.js +267 -0
- package/lib/new-serialization.js.map +1 -0
- package/lib/parse-html.js +17 -0
- package/lib/parse-html.js.map +1 -0
- package/lib/serialization.js +33 -61
- package/lib/serialization.js.map +1 -1
- package/lib/test-serializer.js +164 -0
- package/lib/test-serializer.js.map +1 -0
- package/lib/with-mask.js +6 -30
- package/lib/with-mask.js.map +1 -1
- package/package.json +10 -9
- package/src/mask.jsx +9 -21
- package/src/new-serialization.jsx +291 -0
- package/src/parse-html.js +8 -0
- package/src/serialization.js +34 -22
- package/src/test-serializer.js +163 -0
- package/src/with-mask.jsx +1 -1
- package/LICENSE.md +0 -5
package/lib/serialization.js
CHANGED
|
@@ -1,119 +1,93 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.reactAttributes = exports.parseStyleString = exports.deserialize = exports.MARK_TAGS = void 0;
|
|
9
|
-
|
|
10
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
|
|
12
|
-
var
|
|
13
|
-
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _slateHyperscript = require("slate-hyperscript");
|
|
14
11
|
var _toStyle = require("to-style");
|
|
15
|
-
|
|
16
12
|
var _debug = _interopRequireDefault(require("debug"));
|
|
17
|
-
|
|
13
|
+
var _testSerializer = _interopRequireDefault(require("./test-serializer"));
|
|
18
14
|
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; }
|
|
19
|
-
|
|
20
15
|
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; }
|
|
21
|
-
|
|
22
16
|
var log = (0, _debug["default"])('@pie-lib:mask-markup:serialization');
|
|
23
17
|
var INLINE = ['span'];
|
|
24
18
|
var MARK = ['em', 'strong', 'u'];
|
|
25
19
|
var TEXT_NODE = 3;
|
|
26
20
|
var COMMENT_NODE = 8;
|
|
27
|
-
|
|
28
21
|
var attr = function attr(el) {
|
|
29
22
|
if (!el.attributes || el.attributes.length <= 0) {
|
|
30
23
|
return undefined;
|
|
31
24
|
}
|
|
32
|
-
|
|
33
25
|
var out = {};
|
|
34
26
|
var i;
|
|
35
|
-
|
|
36
27
|
for (i = 0; i < el.attributes.length; i++) {
|
|
37
28
|
var a = el.attributes[i];
|
|
38
29
|
out[a.name] = a.value;
|
|
39
30
|
}
|
|
40
|
-
|
|
41
31
|
return out;
|
|
42
32
|
};
|
|
43
|
-
|
|
44
33
|
var getObject = function getObject(type) {
|
|
45
34
|
if (INLINE.includes(type)) {
|
|
46
35
|
return 'inline';
|
|
47
36
|
} else if (MARK.includes(type)) {
|
|
48
37
|
return 'mark';
|
|
49
38
|
}
|
|
50
|
-
|
|
51
39
|
return 'block';
|
|
52
40
|
};
|
|
53
|
-
|
|
54
41
|
var parseStyleString = function parseStyleString(s) {
|
|
55
42
|
var regex = /([\w-]*)\s*:\s*([^;]*)/g;
|
|
56
43
|
var match;
|
|
57
44
|
var result = {};
|
|
58
|
-
|
|
59
45
|
while (match = regex.exec(s)) {
|
|
60
46
|
result[match[1]] = match[2].trim();
|
|
61
47
|
}
|
|
62
|
-
|
|
63
48
|
return result;
|
|
64
49
|
};
|
|
65
|
-
|
|
66
50
|
exports.parseStyleString = parseStyleString;
|
|
67
|
-
|
|
68
51
|
var reactAttributes = function reactAttributes(o) {
|
|
69
52
|
return (0, _toStyle.object)(o, {
|
|
70
53
|
camelize: true,
|
|
71
54
|
addUnits: false
|
|
72
55
|
});
|
|
73
56
|
};
|
|
74
|
-
|
|
75
57
|
exports.reactAttributes = reactAttributes;
|
|
76
|
-
|
|
77
58
|
var handleStyles = function handleStyles(el, attribute) {
|
|
78
59
|
var styleString = el.getAttribute(attribute);
|
|
79
60
|
return reactAttributes(parseStyleString(styleString));
|
|
80
61
|
};
|
|
81
|
-
|
|
82
62
|
var handleClass = function handleClass(el, acc, attribute) {
|
|
83
63
|
var classNames = el.getAttribute(attribute);
|
|
84
64
|
delete acc["class"];
|
|
85
65
|
return classNames;
|
|
86
66
|
};
|
|
87
|
-
|
|
88
67
|
var attributesToMap = function attributesToMap(el) {
|
|
89
68
|
return function (acc, attribute) {
|
|
90
69
|
if (!el.getAttribute) {
|
|
91
70
|
return acc;
|
|
92
71
|
}
|
|
93
|
-
|
|
94
72
|
var value = el.getAttribute(attribute);
|
|
95
|
-
|
|
96
73
|
if (value) {
|
|
97
74
|
switch (attribute) {
|
|
98
75
|
case 'style':
|
|
99
76
|
acc.style = handleStyles(el, attribute);
|
|
100
77
|
break;
|
|
101
|
-
|
|
102
78
|
case 'class':
|
|
103
79
|
acc.className = handleClass(el, acc, attribute);
|
|
104
80
|
break;
|
|
105
|
-
|
|
106
81
|
default:
|
|
107
82
|
acc[attribute] = el.getAttribute(attribute);
|
|
108
83
|
break;
|
|
109
84
|
}
|
|
110
85
|
}
|
|
111
|
-
|
|
112
86
|
return acc;
|
|
113
87
|
};
|
|
114
88
|
};
|
|
115
|
-
|
|
116
89
|
var attributes = ['border', 'class', 'style'];
|
|
90
|
+
|
|
117
91
|
/**
|
|
118
92
|
* Tags to marks.
|
|
119
93
|
*
|
|
@@ -132,13 +106,13 @@ exports.MARK_TAGS = MARK_TAGS;
|
|
|
132
106
|
var marks = {
|
|
133
107
|
deserialize: function deserialize(el, next) {
|
|
134
108
|
var mark = MARK_TAGS[el.tagName.toLowerCase()];
|
|
135
|
-
if (!mark)
|
|
109
|
+
if (!mark) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
136
112
|
log('[deserialize] mark: ', mark);
|
|
137
|
-
return {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
nodes: next(el.childNodes)
|
|
141
|
-
};
|
|
113
|
+
return (0, _slateHyperscript.jsx)('text', {
|
|
114
|
+
type: mark
|
|
115
|
+
}, next(el.childNodes));
|
|
142
116
|
}
|
|
143
117
|
};
|
|
144
118
|
var rules = [marks, {
|
|
@@ -149,59 +123,57 @@ var rules = [marks, {
|
|
|
149
123
|
if (el.nodeType === COMMENT_NODE) {
|
|
150
124
|
return undefined;
|
|
151
125
|
}
|
|
152
|
-
|
|
153
126
|
if (el.nodeType === TEXT_NODE) {
|
|
154
|
-
return
|
|
155
|
-
object: 'text',
|
|
156
|
-
leaves: [{
|
|
157
|
-
text: el.textContent
|
|
158
|
-
}]
|
|
159
|
-
};
|
|
127
|
+
return (0, _slateHyperscript.jsx)('text', el.textContent);
|
|
160
128
|
}
|
|
161
|
-
|
|
162
129
|
var type = el.tagName.toLowerCase();
|
|
163
130
|
var normalAttrs = attr(el) || {};
|
|
164
|
-
|
|
165
131
|
if (type == 'audio' && normalAttrs.controls == '') {
|
|
166
132
|
normalAttrs.controls = true;
|
|
167
133
|
}
|
|
168
|
-
|
|
169
134
|
var allAttrs = attributes.reduce(attributesToMap(el), _objectSpread({}, normalAttrs));
|
|
170
|
-
var object = getObject(type);
|
|
171
|
-
|
|
172
135
|
if (el.tagName.toLowerCase() === 'math') {
|
|
173
|
-
return {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
136
|
+
return (0, _slateHyperscript.jsx)('element', {
|
|
137
|
+
type: 'mathml',
|
|
138
|
+
data: {
|
|
139
|
+
html: el.innerHTML
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
// return {
|
|
144
|
+
// isMath: true,
|
|
145
|
+
// nodes: [el]
|
|
146
|
+
// };
|
|
177
147
|
}
|
|
178
148
|
|
|
179
|
-
|
|
180
|
-
|
|
149
|
+
if (el.tagName.toLowerCase() === 'br') {
|
|
150
|
+
return (0, _slateHyperscript.jsx)('element', {
|
|
151
|
+
type: type,
|
|
152
|
+
data: {}
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
return (0, _slateHyperscript.jsx)('element', {
|
|
181
156
|
type: type,
|
|
182
157
|
data: {
|
|
183
158
|
dataset: _objectSpread({}, el.dataset),
|
|
184
159
|
attributes: _objectSpread({}, allAttrs)
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
};
|
|
160
|
+
}
|
|
161
|
+
}, next(el.childNodes));
|
|
188
162
|
}
|
|
189
163
|
}];
|
|
164
|
+
|
|
190
165
|
/**
|
|
191
166
|
* Create a new serializer instance with our `rules` from above.
|
|
192
167
|
* Having a default div block will just put every div on it's own line, which is not ideal.
|
|
193
168
|
*/
|
|
194
|
-
|
|
195
|
-
var html = new _slateHtmlSerializer["default"]({
|
|
169
|
+
var html = new _testSerializer["default"]({
|
|
196
170
|
rules: rules,
|
|
197
171
|
defaultBlock: 'span'
|
|
198
172
|
});
|
|
199
|
-
|
|
200
173
|
var deserialize = function deserialize(s) {
|
|
201
174
|
return html.deserialize(s, {
|
|
202
175
|
toJSON: true
|
|
203
176
|
});
|
|
204
177
|
};
|
|
205
|
-
|
|
206
178
|
exports.deserialize = deserialize;
|
|
207
179
|
//# sourceMappingURL=serialization.js.map
|
package/lib/serialization.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/serialization.js"],"names":["log","INLINE","MARK","TEXT_NODE","COMMENT_NODE","attr","el","attributes","length","undefined","out","i","a","name","value","getObject","type","includes","parseStyleString","s","regex","match","result","exec","trim","reactAttributes","o","camelize","addUnits","handleStyles","attribute","styleString","getAttribute","handleClass","acc","classNames","attributesToMap","style","className","MARK_TAGS","b","em","u","code","strong","marks","deserialize","next","mark","tagName","toLowerCase","object","nodes","childNodes","rules","nodeType","leaves","text","textContent","normalAttrs","controls","allAttrs","reduce","isMath","data","dataset","html","Html","defaultBlock","toJSON"],"mappings":"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","sourcesContent":["import Html from 'slate-html-serializer';\nimport { object as toStyleObject } from 'to-style';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:mask-markup:serialization');\n\nconst INLINE = ['span'];\nconst MARK = ['em', 'strong', 'u'];\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\n\nconst attr = (el) => {\n if (!el.attributes || el.attributes.length <= 0) {\n return undefined;\n }\n\n const out = {};\n let i;\n\n for (i = 0; i < el.attributes.length; i++) {\n const a = el.attributes[i];\n\n out[a.name] = a.value;\n }\n\n return out;\n};\n\nconst getObject = (type) => {\n if (INLINE.includes(type)) {\n return 'inline';\n } else if (MARK.includes(type)) {\n return 'mark';\n }\n return 'block';\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 reactAttributes = (o) => toStyleObject(o, { camelize: true, addUnits: false });\n\nconst handleStyles = (el, attribute) => {\n const styleString = el.getAttribute(attribute);\n\n return reactAttributes(parseStyleString(styleString));\n};\n\nconst handleClass = (el, acc, attribute) => {\n const classNames = el.getAttribute(attribute);\n\n delete acc.class;\n\n return classNames;\n};\n\nconst attributesToMap = (el) => (acc, attribute) => {\n if (!el.getAttribute) {\n return acc;\n }\n\n const value = el.getAttribute(attribute);\n\n if (value) {\n switch (attribute) {\n case 'style':\n acc.style = handleStyles(el, attribute);\n break;\n case 'class':\n acc.className = handleClass(el, acc, attribute);\n break;\n default:\n acc[attribute] = el.getAttribute(attribute);\n break;\n }\n }\n\n return acc;\n};\n\nconst attributes = ['border', 'class', 'style'];\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 code: 'code',\n strong: 'strong',\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};\n\nconst rules = [\n marks,\n {\n /**\n * deserialize everything, we're not fussy about the dom structure for now.\n */\n deserialize: (el, next) => {\n if (el.nodeType === COMMENT_NODE) {\n return undefined;\n }\n\n if (el.nodeType === TEXT_NODE) {\n return {\n object: 'text',\n leaves: [{ text: el.textContent }],\n };\n }\n\n const type = el.tagName.toLowerCase();\n\n const normalAttrs = attr(el) || {};\n\n if (type == 'audio' && normalAttrs.controls == '') {\n normalAttrs.controls = true;\n }\n\n const allAttrs = attributes.reduce(attributesToMap(el), { ...normalAttrs });\n const object = getObject(type);\n\n if (el.tagName.toLowerCase() === 'math') {\n return {\n isMath: true,\n nodes: [el],\n };\n }\n\n return {\n object,\n type,\n data: { dataset: { ...el.dataset }, attributes: { ...allAttrs } },\n nodes: next(el.childNodes),\n };\n },\n },\n];\n\n/**\n * Create a new serializer instance with our `rules` from above.\n * Having a default div block will just put every div on it's own line, which is not ideal.\n */\nconst html = new Html({ rules, defaultBlock: 'span' });\n\nexport const deserialize = (s) => html.deserialize(s, { toJSON: true });\n"],"file":"serialization.js"}
|
|
1
|
+
{"version":3,"file":"serialization.js","names":["_react","_interopRequireDefault","require","_slateHyperscript","_toStyle","_debug","_testSerializer","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","log","debug","INLINE","MARK","TEXT_NODE","COMMENT_NODE","attr","el","attributes","undefined","out","a","name","value","getObject","type","includes","parseStyleString","s","regex","match","result","exec","trim","exports","reactAttributes","o","toStyleObject","camelize","addUnits","handleStyles","attribute","styleString","getAttribute","handleClass","acc","classNames","attributesToMap","style","className","MARK_TAGS","b","em","u","code","strong","marks","deserialize","next","mark","tagName","toLowerCase","jsx","childNodes","rules","nodeType","textContent","normalAttrs","controls","allAttrs","reduce","data","html","innerHTML","dataset","Html","defaultBlock","toJSON"],"sources":["../src/serialization.js"],"sourcesContent":["import React from 'react';\nimport { jsx } from 'slate-hyperscript';\nimport { object as toStyleObject } from 'to-style';\nimport debug from 'debug';\n\nimport Html from './test-serializer';\n\nconst log = debug('@pie-lib:mask-markup:serialization');\n\nconst INLINE = ['span'];\nconst MARK = ['em', 'strong', 'u'];\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\n\nconst attr = (el) => {\n if (!el.attributes || el.attributes.length <= 0) {\n return undefined;\n }\n\n const out = {};\n let i;\n\n for (i = 0; i < el.attributes.length; i++) {\n const a = el.attributes[i];\n\n out[a.name] = a.value;\n }\n\n return out;\n};\n\nconst getObject = (type) => {\n if (INLINE.includes(type)) {\n return 'inline';\n } else if (MARK.includes(type)) {\n return 'mark';\n }\n return 'block';\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 reactAttributes = (o) => toStyleObject(o, { camelize: true, addUnits: false });\n\nconst handleStyles = (el, attribute) => {\n const styleString = el.getAttribute(attribute);\n\n return reactAttributes(parseStyleString(styleString));\n};\n\nconst handleClass = (el, acc, attribute) => {\n const classNames = el.getAttribute(attribute);\n\n delete acc.class;\n\n return classNames;\n};\n\nconst attributesToMap = (el) => (acc, attribute) => {\n if (!el.getAttribute) {\n return acc;\n }\n\n const value = el.getAttribute(attribute);\n\n if (value) {\n switch (attribute) {\n case 'style':\n acc.style = handleStyles(el, attribute);\n break;\n case 'class':\n acc.className = handleClass(el, acc, attribute);\n break;\n default:\n acc[attribute] = el.getAttribute(attribute);\n break;\n }\n }\n\n return acc;\n};\n\nconst attributes = ['border', 'class', 'style'];\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 code: 'code',\n strong: 'strong',\n};\n\nconst marks = {\n deserialize(el, next) {\n const mark = MARK_TAGS[el.tagName.toLowerCase()];\n\n if (!mark) {\n return;\n }\n\n log('[deserialize] mark: ', mark);\n return jsx('text', { type: mark }, next(el.childNodes));\n },\n};\n\nconst rules = [\n marks,\n {\n /**\n * deserialize everything, we're not fussy about the dom structure for now.\n */\n deserialize: (el, next) => {\n if (el.nodeType === COMMENT_NODE) {\n return undefined;\n }\n\n if (el.nodeType === TEXT_NODE) {\n return jsx('text', el.textContent);\n }\n\n const type = el.tagName.toLowerCase();\n\n const normalAttrs = attr(el) || {};\n\n if (type == 'audio' && normalAttrs.controls == '') {\n normalAttrs.controls = true;\n }\n\n const allAttrs = attributes.reduce(attributesToMap(el), { ...normalAttrs });\n\n if (el.tagName.toLowerCase() === 'math') {\n return jsx('element', {\n type: 'mathml',\n data: {\n html: el.innerHTML,\n },\n });\n\n // return {\n // isMath: true,\n // nodes: [el]\n // };\n }\n\n if (el.tagName.toLowerCase() === 'br') {\n return jsx('element', { type, data: {} });\n }\n\n return jsx(\n 'element',\n {\n type,\n data: { dataset: { ...el.dataset }, attributes: { ...allAttrs } },\n },\n next(el.childNodes),\n );\n },\n },\n];\n\n/**\n * Create a new serializer instance with our `rules` from above.\n * Having a default div block will just put every div on it's own line, which is not ideal.\n */\nconst html = new Html({ rules, defaultBlock: 'span' });\n\nexport const deserialize = (s) => html.deserialize(s, { toJSON: true });\n"],"mappings":"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"}
|
|
@@ -0,0 +1,164 @@
|
|
|
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
|
+
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; }
|
|
17
|
+
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; }
|
|
18
|
+
function allWhitespace(node) {
|
|
19
|
+
// Use ECMA-262 Edition 3 String and RegExp features
|
|
20
|
+
return !/[^\t\n\r ]/.test(node.textContent);
|
|
21
|
+
}
|
|
22
|
+
function defaultParseHtml(html) {
|
|
23
|
+
if (typeof DOMParser === 'undefined') {
|
|
24
|
+
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.');
|
|
25
|
+
}
|
|
26
|
+
var parsed = new DOMParser().parseFromString(html, 'text/html');
|
|
27
|
+
var body = parsed.body;
|
|
28
|
+
var textNodes = document.createTreeWalker(body, NodeFilter.SHOW_TEXT, null, null);
|
|
29
|
+
var n = textNodes.nextNode();
|
|
30
|
+
while (n) {
|
|
31
|
+
if (allWhitespace(n) || n.nodeValue === "\u200B") {
|
|
32
|
+
n.parentNode.removeChild(n);
|
|
33
|
+
}
|
|
34
|
+
n = textNodes.nextNode();
|
|
35
|
+
}
|
|
36
|
+
return body;
|
|
37
|
+
}
|
|
38
|
+
var Html = /*#__PURE__*/(0, _createClass2["default"])(function Html(props) {
|
|
39
|
+
var _this = this;
|
|
40
|
+
(0, _classCallCheck2["default"])(this, Html);
|
|
41
|
+
(0, _defineProperty2["default"])(this, "serializeEls", function (node) {
|
|
42
|
+
if (_slate.Text.isText(node)) {
|
|
43
|
+
var string = (0, _escapeHtml["default"])(node.text);
|
|
44
|
+
if (node.bold) {
|
|
45
|
+
string = /*#__PURE__*/_react["default"].createElement("strong", null, string);
|
|
46
|
+
}
|
|
47
|
+
return string;
|
|
48
|
+
}
|
|
49
|
+
var children = (node.children || []).map(function (n) {
|
|
50
|
+
return _this.serializeEls(n);
|
|
51
|
+
});
|
|
52
|
+
var correctRule = _this.rules.reduce(function (res, rule) {
|
|
53
|
+
return res || rule.serialize(node, children);
|
|
54
|
+
}, null);
|
|
55
|
+
if (correctRule) {
|
|
56
|
+
return correctRule;
|
|
57
|
+
}
|
|
58
|
+
switch (node.type) {
|
|
59
|
+
case 'quote':
|
|
60
|
+
return /*#__PURE__*/_react["default"].createElement("blockquote", null, /*#__PURE__*/_react["default"].createElement("p", null, children));
|
|
61
|
+
case 'paragraph':
|
|
62
|
+
return /*#__PURE__*/_react["default"].createElement("p", null, children);
|
|
63
|
+
case 'link':
|
|
64
|
+
return /*#__PURE__*/_react["default"].createElement("a", {
|
|
65
|
+
href: (0, _escapeHtml["default"])(node.url)
|
|
66
|
+
}, children);
|
|
67
|
+
default:
|
|
68
|
+
return children;
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
(0, _defineProperty2["default"])(this, "serialize", function (node) {
|
|
72
|
+
var deserialized = _this.serializeEls(node);
|
|
73
|
+
var html = _server["default"].renderToStaticMarkup( /*#__PURE__*/_react["default"].createElement('body', null, deserialized));
|
|
74
|
+
var inner = html.slice(6, -7);
|
|
75
|
+
return inner;
|
|
76
|
+
});
|
|
77
|
+
(0, _defineProperty2["default"])(this, "deserialize", function (html) {
|
|
78
|
+
var body = _this.parseHtml(html);
|
|
79
|
+
if (body.firstChild && body.firstChild.nodeType === Node.TEXT_NODE) {
|
|
80
|
+
body = _this.parseHtml("<span>".concat(html, "</span>"));
|
|
81
|
+
}
|
|
82
|
+
return _this.deserializeEls(body);
|
|
83
|
+
});
|
|
84
|
+
(0, _defineProperty2["default"])(this, "deserializeEls", function (element) {
|
|
85
|
+
var markAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
86
|
+
if (element.nodeType === Node.TEXT_NODE) {
|
|
87
|
+
return (0, _slateHyperscript.jsx)('text', markAttributes, element.textContent);
|
|
88
|
+
} else if (element.nodeType !== Node.ELEMENT_NODE) {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
var nodeAttributes = _objectSpread({}, markAttributes);
|
|
92
|
+
|
|
93
|
+
// define attributes for text nodes
|
|
94
|
+
if (element.nodeName === 'STRONG') {
|
|
95
|
+
nodeAttributes.bold = true;
|
|
96
|
+
}
|
|
97
|
+
var nextFn = function nextFn(nodes) {
|
|
98
|
+
var childNodes = Array.from(nodes);
|
|
99
|
+
var children = Array.from(childNodes).map(function (node) {
|
|
100
|
+
return _this.deserializeEls(node, nodeAttributes);
|
|
101
|
+
}).flat();
|
|
102
|
+
if (children.length === 0) {
|
|
103
|
+
children.push((0, _slateHyperscript.jsx)('text', nodeAttributes, ''));
|
|
104
|
+
}
|
|
105
|
+
return children;
|
|
106
|
+
};
|
|
107
|
+
var correctRule = _this.rules.reduce(function (res, rule) {
|
|
108
|
+
return res || rule.deserialize(element, nextFn);
|
|
109
|
+
}, null);
|
|
110
|
+
if (correctRule) {
|
|
111
|
+
return correctRule;
|
|
112
|
+
}
|
|
113
|
+
var childNodes = Array.from(element.childNodes);
|
|
114
|
+
var children = Array.from(childNodes).map(function (node) {
|
|
115
|
+
return _this.deserializeEls(node, nodeAttributes);
|
|
116
|
+
}).flat();
|
|
117
|
+
if (children.length === 0) {
|
|
118
|
+
children.push((0, _slateHyperscript.jsx)('text', nodeAttributes, ''));
|
|
119
|
+
}
|
|
120
|
+
switch (element.nodeName) {
|
|
121
|
+
case 'TABLE':
|
|
122
|
+
return (0, _slateHyperscript.jsx)('element', {
|
|
123
|
+
type: 'table'
|
|
124
|
+
}, children);
|
|
125
|
+
case 'TBODY':
|
|
126
|
+
return (0, _slateHyperscript.jsx)('element', {
|
|
127
|
+
type: 'tbody'
|
|
128
|
+
}, children);
|
|
129
|
+
case 'TR':
|
|
130
|
+
return (0, _slateHyperscript.jsx)('element', {
|
|
131
|
+
type: 'tr'
|
|
132
|
+
}, children);
|
|
133
|
+
case 'TD':
|
|
134
|
+
return (0, _slateHyperscript.jsx)('element', {
|
|
135
|
+
type: 'td'
|
|
136
|
+
}, children);
|
|
137
|
+
case 'BODY':
|
|
138
|
+
return (0, _slateHyperscript.jsx)('fragment', {}, children);
|
|
139
|
+
case 'BR':
|
|
140
|
+
return '\n';
|
|
141
|
+
case 'BLOCKQUOTE':
|
|
142
|
+
return (0, _slateHyperscript.jsx)('element', {
|
|
143
|
+
type: 'quote'
|
|
144
|
+
}, children);
|
|
145
|
+
case 'P':
|
|
146
|
+
return (0, _slateHyperscript.jsx)('element', {
|
|
147
|
+
type: 'paragraph'
|
|
148
|
+
}, children);
|
|
149
|
+
case 'A':
|
|
150
|
+
return (0, _slateHyperscript.jsx)('element', {
|
|
151
|
+
type: 'link',
|
|
152
|
+
url: element.getAttribute('href')
|
|
153
|
+
}, children);
|
|
154
|
+
default:
|
|
155
|
+
return children;
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
this.defaultBlock = props.defaultBlock;
|
|
159
|
+
this.parseHtml = defaultParseHtml;
|
|
160
|
+
this.rules = props.rules;
|
|
161
|
+
});
|
|
162
|
+
var _default = Html;
|
|
163
|
+
exports["default"] = _default;
|
|
164
|
+
//# sourceMappingURL=test-serializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-serializer.js","names":["_react","_interopRequireDefault","require","_server","_escapeHtml","_slate","_slateHyperscript","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","forEach","key","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","allWhitespace","node","test","textContent","defaultParseHtml","html","DOMParser","Error","parsed","parseFromString","body","textNodes","document","createTreeWalker","NodeFilter","SHOW_TEXT","n","nextNode","nodeValue","parentNode","removeChild","Html","_createClass2","props","_this","_classCallCheck2","Text","isText","string","escapeHtml","text","bold","createElement","children","map","serializeEls","correctRule","rules","reduce","res","rule","serialize","type","href","url","deserialized","ReactServer","renderToStaticMarkup","React","inner","slice","parseHtml","firstChild","nodeType","Node","TEXT_NODE","concat","deserializeEls","element","markAttributes","undefined","jsx","ELEMENT_NODE","nodeAttributes","nodeName","nextFn","nodes","childNodes","Array","from","flat","deserialize","getAttribute","defaultBlock","_default","exports"],"sources":["../src/test-serializer.js"],"sourcesContent":["import React from 'react';\nimport ReactServer from 'react-dom/server';\nimport escapeHtml from 'escape-html';\nimport { Text } from 'slate';\nimport { jsx } from 'slate-hyperscript';\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\nclass Html {\n constructor(props) {\n this.defaultBlock = props.defaultBlock;\n this.parseHtml = defaultParseHtml;\n this.rules = props.rules;\n }\n\n serializeEls = (node) => {\n if (Text.isText(node)) {\n let string = escapeHtml(node.text);\n if (node.bold) {\n string = <strong>{string}</strong>;\n }\n return string;\n }\n\n let children = (node.children || []).map((n) => this.serializeEls(n));\n\n const correctRule = this.rules.reduce((res, rule) => {\n return res || rule.serialize(node, children);\n }, null);\n\n if (correctRule) {\n return correctRule;\n }\n\n switch (node.type) {\n case 'quote':\n return (\n <blockquote>\n <p>{children}</p>\n </blockquote>\n );\n case 'paragraph':\n return <p>{children}</p>;\n case 'link':\n return <a href={escapeHtml(node.url)}>{children}</a>;\n default:\n return children;\n }\n };\n\n serialize = (node) => {\n const deserialized = this.serializeEls(node);\n const html = ReactServer.renderToStaticMarkup(React.createElement('body', null, deserialized));\n const inner = html.slice(6, -7);\n return inner;\n };\n\n deserialize = (html) => {\n let body = this.parseHtml(html);\n\n if (body.firstChild && body.firstChild.nodeType === Node.TEXT_NODE) {\n body = this.parseHtml(`<span>${html}</span>`);\n }\n\n return this.deserializeEls(body);\n };\n\n deserializeEls = (element, markAttributes = {}) => {\n if (element.nodeType === Node.TEXT_NODE) {\n return jsx('text', markAttributes, element.textContent);\n } else if (element.nodeType !== Node.ELEMENT_NODE) {\n return null;\n }\n\n const nodeAttributes = { ...markAttributes };\n\n // define attributes for text nodes\n if (element.nodeName === 'STRONG') {\n nodeAttributes.bold = true;\n }\n\n const nextFn = (nodes) => {\n const childNodes = Array.from(nodes);\n const children = Array.from(childNodes)\n .map((node) => this.deserializeEls(node, nodeAttributes))\n .flat();\n\n if (children.length === 0) {\n children.push(jsx('text', nodeAttributes, ''));\n }\n\n return children;\n };\n\n const correctRule = this.rules.reduce((res, rule) => {\n return res || rule.deserialize(element, nextFn);\n }, null);\n\n if (correctRule) {\n return correctRule;\n }\n\n const childNodes = Array.from(element.childNodes);\n const children = Array.from(childNodes)\n .map((node) => this.deserializeEls(node, nodeAttributes))\n .flat();\n\n if (children.length === 0) {\n children.push(jsx('text', nodeAttributes, ''));\n }\n\n switch (element.nodeName) {\n case 'TABLE':\n return jsx('element', { type: 'table' }, children);\n case 'TBODY':\n return jsx('element', { type: 'tbody' }, children);\n case 'TR':\n return jsx('element', { type: 'tr' }, children);\n case 'TD':\n return jsx('element', { type: 'td' }, children);\n case 'BODY':\n return jsx('fragment', {}, children);\n case 'BR':\n return '\\n';\n case 'BLOCKQUOTE':\n return jsx('element', { type: 'quote' }, children);\n case 'P':\n return jsx('element', { type: 'paragraph' }, children);\n case 'A':\n return jsx('element', { type: 'link', url: element.getAttribute('href') }, children);\n default:\n return children;\n }\n };\n}\n\nexport default Html;\n"],"mappings":"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"}
|
package/lib/with-mask.js
CHANGED
|
@@ -1,69 +1,47 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.withMask = exports.buildLayoutFromMarkup = void 0;
|
|
9
|
-
|
|
10
8
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
-
|
|
12
9
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
10
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
15
|
-
|
|
16
11
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
17
|
-
|
|
18
12
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
19
|
-
|
|
20
13
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
21
|
-
|
|
22
14
|
var _react = _interopRequireDefault(require("react"));
|
|
23
|
-
|
|
24
15
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
25
|
-
|
|
26
16
|
var _mask = _interopRequireDefault(require("./mask"));
|
|
27
|
-
|
|
28
17
|
var _componentize2 = _interopRequireDefault(require("./componentize"));
|
|
29
|
-
|
|
30
18
|
var _serialization = require("./serialization");
|
|
31
|
-
|
|
32
19
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
33
|
-
|
|
34
20
|
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
35
|
-
|
|
36
21
|
var buildLayoutFromMarkup = function buildLayoutFromMarkup(markup, type) {
|
|
37
22
|
var _componentize = (0, _componentize2["default"])(markup, type),
|
|
38
|
-
|
|
39
|
-
|
|
23
|
+
processed = _componentize.markup;
|
|
40
24
|
var value = (0, _serialization.deserialize)(processed);
|
|
41
|
-
return value
|
|
25
|
+
return value;
|
|
42
26
|
};
|
|
43
|
-
|
|
44
27
|
exports.buildLayoutFromMarkup = buildLayoutFromMarkup;
|
|
45
|
-
|
|
46
28
|
var withMask = function withMask(type, renderChildren) {
|
|
47
29
|
var _class;
|
|
48
|
-
|
|
49
30
|
return _class = /*#__PURE__*/function (_React$Component) {
|
|
50
31
|
(0, _inherits2["default"])(WithMask, _React$Component);
|
|
51
|
-
|
|
52
32
|
var _super = _createSuper(WithMask);
|
|
53
|
-
|
|
54
33
|
function WithMask() {
|
|
55
34
|
(0, _classCallCheck2["default"])(this, WithMask);
|
|
56
35
|
return _super.apply(this, arguments);
|
|
57
36
|
}
|
|
58
|
-
|
|
59
37
|
(0, _createClass2["default"])(WithMask, [{
|
|
60
38
|
key: "render",
|
|
61
39
|
value: function render() {
|
|
62
40
|
var _this$props = this.props,
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
41
|
+
markup = _this$props.markup,
|
|
42
|
+
layout = _this$props.layout,
|
|
43
|
+
value = _this$props.value,
|
|
44
|
+
onChange = _this$props.onChange;
|
|
67
45
|
var maskLayout = layout ? layout : buildLayoutFromMarkup(markup, type);
|
|
68
46
|
return /*#__PURE__*/_react["default"].createElement(_mask["default"], {
|
|
69
47
|
layout: maskLayout,
|
|
@@ -79,7 +57,6 @@ var withMask = function withMask(type, renderChildren) {
|
|
|
79
57
|
* At the start we'll probably work with markup
|
|
80
58
|
*/
|
|
81
59
|
markup: _propTypes["default"].string,
|
|
82
|
-
|
|
83
60
|
/**
|
|
84
61
|
* Once we start authoring, it may make sense for use to us layout, which will be a simple js object that maps to `slate.Value`.
|
|
85
62
|
*/
|
|
@@ -88,6 +65,5 @@ var withMask = function withMask(type, renderChildren) {
|
|
|
88
65
|
onChange: _propTypes["default"].func
|
|
89
66
|
}), _class;
|
|
90
67
|
};
|
|
91
|
-
|
|
92
68
|
exports.withMask = withMask;
|
|
93
69
|
//# sourceMappingURL=with-mask.js.map
|
package/lib/with-mask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"with-mask.js","names":["_react","_interopRequireDefault","require","_propTypes","_mask","_componentize2","_serialization","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","arguments","apply","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","buildLayoutFromMarkup","markup","type","_componentize","componentize","processed","value","deserialize","exports","withMask","renderChildren","_class","_React$Component","_inherits2","WithMask","_super","_classCallCheck2","_createClass2","key","render","_this$props","props","layout","onChange","maskLayout","createElement","React","Component","_defineProperty2","PropTypes","string","object","func"],"sources":["../src/with-mask.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Mask from './mask';\nimport componentize from './componentize';\nimport { deserialize } from './serialization';\n\nexport const buildLayoutFromMarkup = (markup, type) => {\n const { markup: processed } = componentize(markup, type);\n const value = deserialize(processed);\n return value;\n};\n\nexport const withMask = (type, renderChildren) => {\n return class WithMask extends React.Component {\n static propTypes = {\n /**\n * At the start we'll probably work with markup\n */\n markup: PropTypes.string,\n /**\n * Once we start authoring, it may make sense for use to us layout, which will be a simple js object that maps to `slate.Value`.\n */\n layout: PropTypes.object,\n value: PropTypes.object,\n onChange: PropTypes.func,\n };\n\n render() {\n const { markup, layout, value, onChange } = this.props;\n\n const maskLayout = layout ? layout : buildLayoutFromMarkup(markup, type);\n return <Mask layout={maskLayout} value={value} onChange={onChange} renderChildren={renderChildren(this.props)} />;\n }\n };\n};\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-lib/mask-markup",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0-beta.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "src/index.js",
|
|
@@ -9,23 +9,24 @@
|
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@material-ui/core": "^3.9.3",
|
|
12
|
-
"@pie-lib/drag": "^2.2.
|
|
12
|
+
"@pie-lib/drag": "^2.2.1",
|
|
13
13
|
"@pie-lib/math-rendering": "^2.5.17",
|
|
14
|
-
"@pie-lib/render-ui": "^4.14.
|
|
14
|
+
"@pie-lib/render-ui": "^4.14.28",
|
|
15
15
|
"classnames": "^2.2.6",
|
|
16
16
|
"debug": "^4.1.1",
|
|
17
|
+
"escape-html": "^1.0.3",
|
|
17
18
|
"immutable": ">=3.8.1",
|
|
18
19
|
"prop-types": "^15.7.2",
|
|
19
20
|
"react": "^16.8.1",
|
|
20
21
|
"react-dnd-html5-backend": "^14.0.2",
|
|
21
|
-
"slate": "^0.
|
|
22
|
-
"slate-html-serializer": "^0.
|
|
23
|
-
"slate-
|
|
24
|
-
"slate-
|
|
22
|
+
"slate": "^0.94.1",
|
|
23
|
+
"slate-html-serializer": "^0.8.13",
|
|
24
|
+
"slate-hyperscript": "^0.77.0",
|
|
25
|
+
"slate-prop-types": "^0.5.44",
|
|
26
|
+
"slate-react": "^0.97.2",
|
|
25
27
|
"to-style": "^1.3.3"
|
|
26
28
|
},
|
|
27
29
|
"keywords": [],
|
|
28
30
|
"author": "",
|
|
29
|
-
"license": "ISC"
|
|
30
|
-
"gitHead": "0d6a88e73b9db47c4fe07377d5e8dfb8d9dd06a1"
|
|
31
|
+
"license": "ISC"
|
|
31
32
|
}
|