@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/inline-dropdown.js
CHANGED
|
@@ -1,29 +1,23 @@
|
|
|
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["default"] = void 0;
|
|
9
|
-
|
|
10
8
|
var _react = _interopRequireDefault(require("react"));
|
|
11
|
-
|
|
12
9
|
var _dropdown = _interopRequireDefault(require("./components/dropdown"));
|
|
13
|
-
|
|
14
10
|
var _withMask = require("./with-mask");
|
|
15
|
-
|
|
16
11
|
// eslint-disable-next-line react/display-name
|
|
17
12
|
var _default = (0, _withMask.withMask)('dropdown', function (props) {
|
|
18
13
|
return function (node, data, onChange) {
|
|
19
14
|
var dataset = node.data ? node.data.dataset || {} : {};
|
|
20
|
-
|
|
21
15
|
if (dataset.component === 'dropdown') {
|
|
22
16
|
// eslint-disable-next-line react/prop-types
|
|
23
17
|
var choices = props.choices,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
18
|
+
disabled = props.disabled,
|
|
19
|
+
feedback = props.feedback,
|
|
20
|
+
showCorrectAnswer = props.showCorrectAnswer;
|
|
27
21
|
var correctAnswer = choices && choices[dataset.id] && choices[dataset.id].find(function (c) {
|
|
28
22
|
return c.correct;
|
|
29
23
|
});
|
|
@@ -41,6 +35,5 @@ var _default = (0, _withMask.withMask)('dropdown', function (props) {
|
|
|
41
35
|
}
|
|
42
36
|
};
|
|
43
37
|
});
|
|
44
|
-
|
|
45
38
|
exports["default"] = _default;
|
|
46
39
|
//# sourceMappingURL=inline-dropdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"inline-dropdown.js","names":["_react","_interopRequireDefault","require","_dropdown","_withMask","_default","withMask","props","node","data","onChange","dataset","component","choices","disabled","feedback","showCorrectAnswer","correctAnswer","id","find","c","correct","finalChoice","value","createElement","key","concat","type","exports"],"sources":["../src/inline-dropdown.jsx"],"sourcesContent":["import React from 'react';\nimport Dropdown from './components/dropdown';\nimport { withMask } from './with-mask';\n\n// eslint-disable-next-line react/display-name\nexport default withMask('dropdown', (props) => (node, data, onChange) => {\n const dataset = node.data ? node.data.dataset || {} : {};\n if (dataset.component === 'dropdown') {\n // eslint-disable-next-line react/prop-types\n const { choices, disabled, feedback, showCorrectAnswer } = props;\n const correctAnswer = choices && choices[dataset.id] && choices[dataset.id].find((c) => c.correct);\n const finalChoice = showCorrectAnswer ? correctAnswer && correctAnswer.value : data[dataset.id];\n\n return (\n <Dropdown\n key={`${node.type}-dropdown-${dataset.id}`}\n correct={feedback && feedback[dataset.id] && feedback[dataset.id] === 'correct'}\n disabled={disabled || showCorrectAnswer}\n value={finalChoice}\n id={dataset.id}\n onChange={onChange}\n choices={choices[dataset.id]}\n showCorrectAnswer={showCorrectAnswer}\n />\n );\n }\n});\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAEA;AAAA,IAAAG,QAAA,GACe,IAAAC,kBAAQ,EAAC,UAAU,EAAE,UAACC,KAAK;EAAA,OAAK,UAACC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAK;IACvE,IAAMC,OAAO,GAAGH,IAAI,CAACC,IAAI,GAAGD,IAAI,CAACC,IAAI,CAACE,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACxD,IAAIA,OAAO,CAACC,SAAS,KAAK,UAAU,EAAE;MACpC;MACA,IAAQC,OAAO,GAA4CN,KAAK,CAAxDM,OAAO;QAAEC,QAAQ,GAAkCP,KAAK,CAA/CO,QAAQ;QAAEC,QAAQ,GAAwBR,KAAK,CAArCQ,QAAQ;QAAEC,iBAAiB,GAAKT,KAAK,CAA3BS,iBAAiB;MACtD,IAAMC,aAAa,GAAGJ,OAAO,IAAIA,OAAO,CAACF,OAAO,CAACO,EAAE,CAAC,IAAIL,OAAO,CAACF,OAAO,CAACO,EAAE,CAAC,CAACC,IAAI,CAAC,UAACC,CAAC;QAAA,OAAKA,CAAC,CAACC,OAAO;MAAA,EAAC;MAClG,IAAMC,WAAW,GAAGN,iBAAiB,GAAGC,aAAa,IAAIA,aAAa,CAACM,KAAK,GAAGd,IAAI,CAACE,OAAO,CAACO,EAAE,CAAC;MAE/F,oBACElB,MAAA,YAAAwB,aAAA,CAACrB,SAAA,WAAQ;QACPsB,GAAG,KAAAC,MAAA,CAAKlB,IAAI,CAACmB,IAAI,gBAAAD,MAAA,CAAaf,OAAO,CAACO,EAAE,CAAG;QAC3CG,OAAO,EAAEN,QAAQ,IAAIA,QAAQ,CAACJ,OAAO,CAACO,EAAE,CAAC,IAAIH,QAAQ,CAACJ,OAAO,CAACO,EAAE,CAAC,KAAK,SAAU;QAChFJ,QAAQ,EAAEA,QAAQ,IAAIE,iBAAkB;QACxCO,KAAK,EAAED,WAAY;QACnBJ,EAAE,EAAEP,OAAO,CAACO,EAAG;QACfR,QAAQ,EAAEA,QAAS;QACnBG,OAAO,EAAEA,OAAO,CAACF,OAAO,CAACO,EAAE,CAAE;QAC7BF,iBAAiB,EAAEA;MAAkB,CACtC,CAAC;IAEN;EACF,CAAC;AAAA,EAAC;AAAAY,OAAA,cAAAvB,QAAA"}
|
package/lib/mask.js
CHANGED
|
@@ -1,46 +1,27 @@
|
|
|
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.renderChildren = exports["default"] = 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 _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
15
|
-
|
|
16
11
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
-
|
|
18
12
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
19
|
-
|
|
20
13
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
21
|
-
|
|
22
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
23
|
-
|
|
24
15
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
25
|
-
|
|
26
16
|
var _react = _interopRequireDefault(require("react"));
|
|
27
|
-
|
|
28
17
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
29
|
-
|
|
30
|
-
var _get = _interopRequireDefault(require("lodash/get"));
|
|
31
|
-
|
|
18
|
+
var _slate = require("slate");
|
|
32
19
|
var _styles = require("@material-ui/core/styles");
|
|
33
|
-
|
|
34
20
|
var _serialization = require("./serialization");
|
|
35
|
-
|
|
36
21
|
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; }
|
|
37
|
-
|
|
38
22
|
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; }
|
|
39
|
-
|
|
40
23
|
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); }; }
|
|
41
|
-
|
|
42
24
|
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; } }
|
|
43
|
-
|
|
44
25
|
var Paragraph = (0, _styles.withStyles)(function (theme) {
|
|
45
26
|
return {
|
|
46
27
|
para: {
|
|
@@ -54,68 +35,46 @@ var Paragraph = (0, _styles.withStyles)(function (theme) {
|
|
|
54
35
|
}, props.children);
|
|
55
36
|
});
|
|
56
37
|
var restrictWhitespaceTypes = ['tbody', 'tr'];
|
|
57
|
-
|
|
58
38
|
var addText = function addText(parentNode, text) {
|
|
59
39
|
var isWhitespace = text.trim() === '';
|
|
60
40
|
var parentType = parentNode && parentNode.type;
|
|
61
|
-
|
|
62
41
|
if (isWhitespace && restrictWhitespaceTypes.includes(parentType)) {
|
|
63
42
|
return undefined;
|
|
64
43
|
} else {
|
|
65
44
|
return text;
|
|
66
45
|
}
|
|
67
46
|
};
|
|
68
|
-
|
|
69
47
|
var getMark = function getMark(n) {
|
|
70
|
-
var
|
|
71
|
-
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
if (mark) {
|
|
75
|
-
return mark.marks[0];
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
return null;
|
|
48
|
+
var markTags = Object.values(_serialization.MARK_TAGS);
|
|
49
|
+
return markTags.includes(n.type);
|
|
79
50
|
};
|
|
80
|
-
|
|
81
51
|
var renderChildren = function renderChildren(layout, value, onChange, rootRenderChildren, parentNode) {
|
|
82
52
|
if (!value) {
|
|
83
53
|
return null;
|
|
84
54
|
}
|
|
85
|
-
|
|
86
55
|
var children = [];
|
|
87
|
-
(layout.
|
|
88
|
-
var key =
|
|
89
|
-
|
|
56
|
+
(layout.children || []).forEach(function (n, index) {
|
|
57
|
+
var key = "".concat(n.type, "-").concat(index);
|
|
90
58
|
if (n.isMath) {
|
|
91
59
|
children.push( /*#__PURE__*/_react["default"].createElement("span", {
|
|
92
60
|
dangerouslySetInnerHTML: {
|
|
93
|
-
__html: "<math displaystyle=\"true\">".concat(n.
|
|
61
|
+
__html: "<math displaystyle=\"true\">".concat(n.children[0].innerHTML, "</math>")
|
|
94
62
|
}
|
|
95
63
|
}));
|
|
96
64
|
return children;
|
|
97
65
|
}
|
|
98
|
-
|
|
99
66
|
if (rootRenderChildren) {
|
|
100
67
|
var c = rootRenderChildren(n, value, onChange);
|
|
101
|
-
|
|
102
68
|
if (c) {
|
|
103
69
|
children.push(c);
|
|
104
70
|
return;
|
|
105
71
|
}
|
|
106
72
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
var content = n.leaves.reduce(function (acc, l) {
|
|
110
|
-
var t = l.text;
|
|
111
|
-
var extraText = addText(parentNode, t);
|
|
112
|
-
return extraText ? acc + extraText : acc;
|
|
113
|
-
}, '');
|
|
73
|
+
if (_slate.Text.isText(n)) {
|
|
74
|
+
var content = n.text;
|
|
114
75
|
var mark = getMark(n);
|
|
115
|
-
|
|
116
76
|
if (mark) {
|
|
117
77
|
var markKey;
|
|
118
|
-
|
|
119
78
|
for (markKey in _serialization.MARK_TAGS) {
|
|
120
79
|
if (_serialization.MARK_TAGS[markKey] === mark.type) {
|
|
121
80
|
var Tag = markKey;
|
|
@@ -130,15 +89,13 @@ var renderChildren = function renderChildren(layout, value, onChange, rootRender
|
|
|
130
89
|
}
|
|
131
90
|
} else {
|
|
132
91
|
var subNodes = renderChildren(n, value, onChange, rootRenderChildren, n);
|
|
133
|
-
|
|
134
92
|
if (n.type === 'p' || n.type === 'paragraph') {
|
|
135
93
|
children.push( /*#__PURE__*/_react["default"].createElement(Paragraph, {
|
|
136
94
|
key: key
|
|
137
95
|
}, subNodes));
|
|
138
96
|
} else {
|
|
139
97
|
var _Tag = n.type;
|
|
140
|
-
|
|
141
|
-
if (n.nodes && n.nodes.length > 0) {
|
|
98
|
+
if (_Tag !== 'source' && n.children && n.children.length > 0) {
|
|
142
99
|
children.push( /*#__PURE__*/_react["default"].createElement(_Tag, (0, _extends2["default"])({
|
|
143
100
|
key: key
|
|
144
101
|
}, n.data.attributes), subNodes));
|
|
@@ -152,7 +109,6 @@ var renderChildren = function renderChildren(layout, value, onChange, rootRender
|
|
|
152
109
|
});
|
|
153
110
|
return children;
|
|
154
111
|
};
|
|
155
|
-
|
|
156
112
|
exports.renderChildren = renderChildren;
|
|
157
113
|
var MaskContainer = (0, _styles.withStyles)(function () {
|
|
158
114
|
return {
|
|
@@ -165,46 +121,38 @@ var MaskContainer = (0, _styles.withStyles)(function () {
|
|
|
165
121
|
className: props.classes.main
|
|
166
122
|
}, props.children);
|
|
167
123
|
});
|
|
124
|
+
|
|
168
125
|
/**
|
|
169
126
|
* Renders a layout that uses the slate.js Value model structure.
|
|
170
127
|
*/
|
|
171
|
-
|
|
172
128
|
var Mask = /*#__PURE__*/function (_React$Component) {
|
|
173
129
|
(0, _inherits2["default"])(Mask, _React$Component);
|
|
174
|
-
|
|
175
130
|
var _super = _createSuper(Mask);
|
|
176
|
-
|
|
177
131
|
function Mask() {
|
|
178
132
|
var _this;
|
|
179
|
-
|
|
180
133
|
(0, _classCallCheck2["default"])(this, Mask);
|
|
181
|
-
|
|
182
134
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
183
135
|
args[_key] = arguments[_key];
|
|
184
136
|
}
|
|
185
|
-
|
|
186
137
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
187
138
|
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleChange", function (id, value) {
|
|
188
139
|
var data = _objectSpread(_objectSpread({}, _this.props.value), {}, (0, _defineProperty2["default"])({}, id, value));
|
|
189
|
-
|
|
190
140
|
_this.props.onChange(data);
|
|
191
141
|
});
|
|
192
142
|
return _this;
|
|
193
143
|
}
|
|
194
|
-
|
|
195
144
|
(0, _createClass2["default"])(Mask, [{
|
|
196
145
|
key: "render",
|
|
197
146
|
value: function render() {
|
|
198
147
|
var _this$props = this.props,
|
|
199
|
-
|
|
200
|
-
|
|
148
|
+
value = _this$props.value,
|
|
149
|
+
layout = _this$props.layout;
|
|
201
150
|
var children = renderChildren(layout, value, this.handleChange, this.props.renderChildren);
|
|
202
151
|
return /*#__PURE__*/_react["default"].createElement(MaskContainer, null, children);
|
|
203
152
|
}
|
|
204
153
|
}]);
|
|
205
154
|
return Mask;
|
|
206
155
|
}(_react["default"].Component);
|
|
207
|
-
|
|
208
156
|
exports["default"] = Mask;
|
|
209
157
|
(0, _defineProperty2["default"])(Mask, "propTypes", {
|
|
210
158
|
renderChildren: _propTypes["default"].func,
|
package/lib/mask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/mask.jsx"],"names":["Paragraph","theme","para","paddingTop","spacing","unit","paddingBottom","props","classes","children","restrictWhitespaceTypes","addText","parentNode","text","isWhitespace","trim","parentType","type","includes","undefined","getMark","n","mark","leaves","find","leave","length","marks","renderChildren","layout","value","onChange","rootRenderChildren","nodes","forEach","index","key","isMath","push","__html","innerHTML","c","object","content","reduce","acc","l","t","extraText","markKey","MARK_TAGS","Tag","subNodes","data","attributes","MaskContainer","main","display","Mask","id","handleChange","React","Component","PropTypes","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport get from 'lodash/get';\nimport { withStyles } from '@material-ui/core/styles';\nimport { MARK_TAGS } from './serialization';\n\nconst Paragraph = withStyles((theme) => ({\n para: {\n paddingTop: 2 * theme.spacing.unit,\n paddingBottom: 2 * theme.spacing.unit,\n },\n}))((props) => <div className={props.classes.para}>{props.children}</div>);\n\nconst restrictWhitespaceTypes = ['tbody', 'tr'];\n\nconst addText = (parentNode, text) => {\n const isWhitespace = text.trim() === '';\n const parentType = parentNode && parentNode.type;\n\n if (isWhitespace && restrictWhitespaceTypes.includes(parentType)) {\n return undefined;\n } else {\n return text;\n }\n};\n\nconst getMark = (n) => {\n const mark = n.leaves.find((leave) => get(leave, 'marks', []).length);\n\n if (mark) {\n return mark.marks[0];\n }\n\n return null;\n};\n\nexport const renderChildren = (layout, value, onChange, rootRenderChildren, parentNode) => {\n if (!value) {\n return null;\n }\n\n const children = [];\n\n (layout.nodes || []).forEach((n, index) => {\n const key = n.type ? `${n.type}-${index}` : `${index}`;\n\n if (n.isMath) {\n children.push(\n <span\n dangerouslySetInnerHTML={{\n __html: `<math displaystyle=\"true\">${n.nodes[0].innerHTML}</math>`,\n }}\n />,\n );\n return children;\n }\n\n if (rootRenderChildren) {\n const c = rootRenderChildren(n, value, onChange);\n if (c) {\n children.push(c);\n return;\n }\n }\n\n if (n.object === 'text') {\n const content = n.leaves.reduce((acc, l) => {\n const t = l.text;\n const extraText = addText(parentNode, t);\n return extraText ? acc + extraText : acc;\n }, '');\n const mark = getMark(n);\n\n if (mark) {\n let markKey;\n\n for (markKey in MARK_TAGS) {\n if (MARK_TAGS[markKey] === mark.type) {\n const Tag = markKey;\n\n children.push(<Tag key={key}>{content}</Tag>);\n break;\n }\n }\n } else if (content.length > 0) {\n children.push(content);\n }\n } else {\n const subNodes = renderChildren(n, value, onChange, rootRenderChildren, n);\n if (n.type === 'p' || n.type === 'paragraph') {\n children.push(<Paragraph key={key}>{subNodes}</Paragraph>);\n } else {\n const Tag = n.type;\n if (n.nodes && n.nodes.length > 0) {\n children.push(\n <Tag key={key} {...n.data.attributes}>\n {subNodes}\n </Tag>,\n );\n } else {\n children.push(<Tag key={key} {...n.data.attributes} />);\n }\n }\n }\n });\n return children;\n};\n\nconst MaskContainer = withStyles(() => ({\n main: {\n display: 'initial',\n },\n}))((props) => <div className={props.classes.main}>{props.children}</div>);\n\n/**\n * Renders a layout that uses the slate.js Value model structure.\n */\nexport default class Mask extends React.Component {\n static propTypes = {\n renderChildren: PropTypes.func,\n layout: PropTypes.object,\n value: PropTypes.object,\n onChange: PropTypes.func,\n };\n\n handleChange = (id, value) => {\n const data = { ...this.props.value, [id]: value };\n this.props.onChange(data);\n };\n\n render() {\n const { value, layout } = this.props;\n const children = renderChildren(layout, value, this.handleChange, this.props.renderChildren);\n\n return <MaskContainer>{children}</MaskContainer>;\n }\n}\n"],"file":"mask.js"}
|
|
1
|
+
{"version":3,"file":"mask.js","names":["_react","_interopRequireDefault","require","_propTypes","_slate","_styles","_serialization","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","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","result","NewTarget","constructor","Reflect","construct","_possibleConstructorReturn2","sham","Proxy","Boolean","prototype","valueOf","call","e","Paragraph","withStyles","theme","para","paddingTop","spacing","unit","paddingBottom","props","createElement","className","classes","children","restrictWhitespaceTypes","addText","parentNode","text","isWhitespace","trim","parentType","type","includes","undefined","getMark","n","markTags","values","MARK_TAGS","renderChildren","layout","value","onChange","rootRenderChildren","index","concat","isMath","dangerouslySetInnerHTML","__html","innerHTML","c","Text","isText","content","mark","markKey","Tag","subNodes","_Tag","_extends2","data","attributes","exports","MaskContainer","main","display","Mask","_React$Component","_inherits2","_super","_this","_classCallCheck2","_len","args","Array","_key","_assertThisInitialized2","id","_createClass2","render","_this$props","handleChange","React","Component","PropTypes","func"],"sources":["../src/mask.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Text } from 'slate';\nimport { withStyles } from '@material-ui/core/styles';\nimport { MARK_TAGS } from './serialization';\n\nconst Paragraph = withStyles((theme) => ({\n para: {\n paddingTop: 2 * theme.spacing.unit,\n paddingBottom: 2 * theme.spacing.unit,\n },\n}))((props) => <div className={props.classes.para}>{props.children}</div>);\n\nconst restrictWhitespaceTypes = ['tbody', 'tr'];\n\nconst addText = (parentNode, text) => {\n const isWhitespace = text.trim() === '';\n const parentType = parentNode && parentNode.type;\n\n if (isWhitespace && restrictWhitespaceTypes.includes(parentType)) {\n return undefined;\n } else {\n return text;\n }\n};\n\nconst getMark = (n) => {\n const markTags = Object.values(MARK_TAGS);\n\n return markTags.includes(n.type);\n};\n\nexport const renderChildren = (layout, value, onChange, rootRenderChildren, parentNode) => {\n if (!value) {\n return null;\n }\n\n const children = [];\n\n (layout.children || []).forEach((n, index) => {\n const key = `${n.type}-${index}`;\n\n if (n.isMath) {\n children.push(\n <span dangerouslySetInnerHTML={{ __html: `<math displaystyle=\"true\">${n.children[0].innerHTML}</math>` }} />,\n );\n return children;\n }\n\n if (rootRenderChildren) {\n const c = rootRenderChildren(n, value, onChange);\n if (c) {\n children.push(c);\n return;\n }\n }\n\n if (Text.isText(n)) {\n const content = n.text;\n const mark = getMark(n);\n\n if (mark) {\n let markKey;\n\n for (markKey in MARK_TAGS) {\n if (MARK_TAGS[markKey] === mark.type) {\n const Tag = markKey;\n\n children.push(<Tag key={key}>{content}</Tag>);\n break;\n }\n }\n } else if (content.length > 0) {\n children.push(content);\n }\n } else {\n const subNodes = renderChildren(n, value, onChange, rootRenderChildren, n);\n if (n.type === 'p' || n.type === 'paragraph') {\n children.push(<Paragraph key={key}>{subNodes}</Paragraph>);\n } else {\n const Tag = n.type;\n if (Tag !== 'source' && n.children && n.children.length > 0) {\n children.push(\n <Tag key={key} {...n.data.attributes}>\n {subNodes}\n </Tag>,\n );\n } else {\n children.push(<Tag key={key} {...n.data.attributes} />);\n }\n }\n }\n });\n return children;\n};\n\nconst MaskContainer = withStyles(() => ({\n main: {\n display: 'initial',\n },\n}))((props) => <div className={props.classes.main}>{props.children}</div>);\n\n/**\n * Renders a layout that uses the slate.js Value model structure.\n */\nexport default class Mask extends React.Component {\n static propTypes = {\n renderChildren: PropTypes.func,\n layout: PropTypes.object,\n value: PropTypes.object,\n onChange: PropTypes.func,\n };\n\n handleChange = (id, value) => {\n const data = { ...this.props.value, [id]: value };\n this.props.onChange(data);\n };\n\n render() {\n const { value, layout } = this.props;\n const children = renderChildren(layout, value, this.handleChange, this.props.renderChildren);\n\n return <MaskContainer>{children}</MaskContainer>;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,267 @@
|
|
|
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.BLOCK_TAGS = void 0;
|
|
8
|
+
var _testSerializer = _interopRequireDefault(require("./test-serializer"));
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
11
|
+
var _toStyle = require("to-style");
|
|
12
|
+
var _image = require("./plugins/image");
|
|
13
|
+
var _math = require("./plugins/math");
|
|
14
|
+
var _media = require("./plugins/media");
|
|
15
|
+
var _list = require("./plugins/list");
|
|
16
|
+
var _table = require("./plugins/table");
|
|
17
|
+
var _respArea = require("./plugins/respArea");
|
|
18
|
+
var _slate = require("slate");
|
|
19
|
+
var _slateHyperscript = require("slate-hyperscript");
|
|
20
|
+
var log = (0, _debug["default"])('@pie-lib:editable-html:serialization');
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Tags to blocks.
|
|
24
|
+
*
|
|
25
|
+
* @type {Object}
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
var BLOCK_TAGS = {
|
|
29
|
+
div: 'div',
|
|
30
|
+
span: 'span',
|
|
31
|
+
p: 'paragraph',
|
|
32
|
+
blockquote: 'quote',
|
|
33
|
+
pre: 'code',
|
|
34
|
+
h1: 'heading-one',
|
|
35
|
+
h2: 'heading-two',
|
|
36
|
+
h3: 'heading-three',
|
|
37
|
+
h4: 'heading-four',
|
|
38
|
+
h5: 'heading-five',
|
|
39
|
+
h6: 'heading-six'
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Tags to marks.
|
|
44
|
+
*
|
|
45
|
+
* @type {Object}
|
|
46
|
+
*/
|
|
47
|
+
exports.BLOCK_TAGS = BLOCK_TAGS;
|
|
48
|
+
var MARK_TAGS = {
|
|
49
|
+
b: 'bold',
|
|
50
|
+
em: 'italic',
|
|
51
|
+
u: 'underline',
|
|
52
|
+
s: 'strikethrough',
|
|
53
|
+
code: 'code',
|
|
54
|
+
strong: 'bold'
|
|
55
|
+
};
|
|
56
|
+
var parseStyleString = function parseStyleString(s) {
|
|
57
|
+
var regex = /([\w-]*)\s*:\s*([^;]*)/g;
|
|
58
|
+
var match;
|
|
59
|
+
var result = {};
|
|
60
|
+
while (match = regex.exec(s)) {
|
|
61
|
+
result[match[1]] = match[2].trim();
|
|
62
|
+
}
|
|
63
|
+
return result;
|
|
64
|
+
};
|
|
65
|
+
exports.parseStyleString = parseStyleString;
|
|
66
|
+
var getBase64 = function getBase64(file) {
|
|
67
|
+
return new Promise(function (resolve, reject) {
|
|
68
|
+
var reader = new FileReader();
|
|
69
|
+
reader.readAsDataURL(file);
|
|
70
|
+
reader.onload = function () {
|
|
71
|
+
return resolve(reader.result);
|
|
72
|
+
};
|
|
73
|
+
reader.onerror = function (error) {
|
|
74
|
+
return reject(error);
|
|
75
|
+
};
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
exports.getBase64 = getBase64;
|
|
79
|
+
var reactAttributes = function reactAttributes(o) {
|
|
80
|
+
return (0, _toStyle.object)(o, {
|
|
81
|
+
camelize: true,
|
|
82
|
+
addUnits: false
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
exports.reactAttributes = reactAttributes;
|
|
86
|
+
var attributesToMap = function attributesToMap(el) {
|
|
87
|
+
return function (acc, attribute) {
|
|
88
|
+
var value = el.getAttribute(attribute);
|
|
89
|
+
if (value) {
|
|
90
|
+
if (attribute === 'style') {
|
|
91
|
+
var styleString = el.getAttribute(attribute);
|
|
92
|
+
var reactStyleObject = reactAttributes(parseStyleString(styleString));
|
|
93
|
+
acc['style'] = reactStyleObject;
|
|
94
|
+
} else {
|
|
95
|
+
acc[attribute] = el.getAttribute(attribute);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return acc;
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
var attributes = ['border', 'cellpadding', 'cellspacing', 'class', 'style'];
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Serializer rules.
|
|
105
|
+
*
|
|
106
|
+
* @type {Array}
|
|
107
|
+
*/
|
|
108
|
+
|
|
109
|
+
var blocks = {
|
|
110
|
+
deserialize: function deserialize(el, next) {
|
|
111
|
+
log('[blocks:deserialize] block: ', el);
|
|
112
|
+
var block = BLOCK_TAGS[el.tagName.toLowerCase()];
|
|
113
|
+
if (!block) return;
|
|
114
|
+
log('[blocks:deserialize] block: ', block);
|
|
115
|
+
if (el.childNodes.length === 1) {
|
|
116
|
+
var cn = el.childNodes[0];
|
|
117
|
+
if (cn && cn.tagName && cn.tagName.toLowerCase() === block) {
|
|
118
|
+
log('[we have a child node of the same]...');
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return (0, _slateHyperscript.jsx)('element', {
|
|
123
|
+
type: block,
|
|
124
|
+
/**
|
|
125
|
+
* Here for rendering styles for all block elements
|
|
126
|
+
*/
|
|
127
|
+
data: {
|
|
128
|
+
attributes: attributes.reduce(attributesToMap(el), {})
|
|
129
|
+
}
|
|
130
|
+
}, next(el.childNodes));
|
|
131
|
+
},
|
|
132
|
+
serialize: function serialize(object, children) {
|
|
133
|
+
if (object.object !== 'block') return;
|
|
134
|
+
var jsonData = object.data.toJSON();
|
|
135
|
+
log('[blocks:serialize] object: ', object, children);
|
|
136
|
+
var key;
|
|
137
|
+
for (key in BLOCK_TAGS) {
|
|
138
|
+
if (BLOCK_TAGS[key] === object.type) {
|
|
139
|
+
var Tag = key;
|
|
140
|
+
return /*#__PURE__*/_react["default"].createElement(Tag, jsonData.attributes, children);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
var marks = {
|
|
146
|
+
deserialize: function deserialize(el, next) {
|
|
147
|
+
var mark = MARK_TAGS[el.tagName.toLowerCase()];
|
|
148
|
+
if (!mark) {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
log('[deserialize] mark: ', mark);
|
|
152
|
+
return (0, _slateHyperscript.jsx)('element', {
|
|
153
|
+
type: mark
|
|
154
|
+
}, next(el.childNodes));
|
|
155
|
+
},
|
|
156
|
+
serialize: function serialize(object, children) {
|
|
157
|
+
/*if (Mark.isMark(object)) {
|
|
158
|
+
for (var key in MARK_TAGS) {
|
|
159
|
+
if (MARK_TAGS[key] === object.type) {
|
|
160
|
+
const Tag = key;
|
|
161
|
+
return <Tag>{children}</Tag>;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}*/
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
var findPreviousText = function findPreviousText(el) {
|
|
168
|
+
if (el.nodeName === '#text') {
|
|
169
|
+
return el;
|
|
170
|
+
}
|
|
171
|
+
if (el.previousSibling) {
|
|
172
|
+
return findPreviousText(el.previousSibling);
|
|
173
|
+
}
|
|
174
|
+
return null;
|
|
175
|
+
};
|
|
176
|
+
var TEXT_RULE = {
|
|
177
|
+
deserialize: function deserialize(el) {
|
|
178
|
+
/**
|
|
179
|
+
* This needs to be called on the dom element in order to merge the adjacent text nodes together
|
|
180
|
+
* */
|
|
181
|
+
el.normalize();
|
|
182
|
+
if (el.tagName && el.tagName.toLowerCase() === 'br') {
|
|
183
|
+
return (0, _slateHyperscript.jsx)('text', {});
|
|
184
|
+
}
|
|
185
|
+
if (el.nodeName === '#text') {
|
|
186
|
+
if (el.nodeValue && el.nodeValue.match(/<!--.*?-->/)) return;
|
|
187
|
+
log('[text:deserialize] return text object..');
|
|
188
|
+
return (0, _slateHyperscript.jsx)('text', {}, el.nodeValue);
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
serialize: function serialize(obj, children) {
|
|
192
|
+
if (obj.object === 'string') {
|
|
193
|
+
return children.split('\n').reduce(function (array, text, i) {
|
|
194
|
+
if (i !== 0) array.push( /*#__PURE__*/_react["default"].createElement("br", null));
|
|
195
|
+
array.push(text);
|
|
196
|
+
return array;
|
|
197
|
+
}, []);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
exports.TEXT_RULE = TEXT_RULE;
|
|
202
|
+
var RULES = [_list.serialization, _math.serialization, _media.serialization, _image.serialization, _table.serialization, _respArea.serialization, TEXT_RULE, blocks, marks];
|
|
203
|
+
function allWhitespace(node) {
|
|
204
|
+
// Use ECMA-262 Edition 3 String and RegExp features
|
|
205
|
+
return !/[^\t\n\r ]/.test(node.textContent);
|
|
206
|
+
}
|
|
207
|
+
function defaultParseHtml(html) {
|
|
208
|
+
if (typeof DOMParser === 'undefined') {
|
|
209
|
+
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.');
|
|
210
|
+
}
|
|
211
|
+
var parsed = new DOMParser().parseFromString(html, 'text/html');
|
|
212
|
+
var body = parsed.body;
|
|
213
|
+
var textNodes = document.createTreeWalker(body, NodeFilter.SHOW_TEXT, null, null);
|
|
214
|
+
var n = textNodes.nextNode();
|
|
215
|
+
while (n) {
|
|
216
|
+
if (allWhitespace(n) || n.nodeValue === "\u200B") {
|
|
217
|
+
n.parentNode.removeChild(n);
|
|
218
|
+
}
|
|
219
|
+
n = textNodes.nextNode();
|
|
220
|
+
}
|
|
221
|
+
return body;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/** If this lib is used on the server side, we need to bypass using the DOMParser - just put in a stub. */
|
|
225
|
+
var parseHtml = typeof window === 'undefined' ? function () {
|
|
226
|
+
return {
|
|
227
|
+
childNodes: []
|
|
228
|
+
};
|
|
229
|
+
} : defaultParseHtml;
|
|
230
|
+
var serializer = new _testSerializer["default"]({
|
|
231
|
+
defaultBlock: 'div',
|
|
232
|
+
rules: RULES,
|
|
233
|
+
parseHtml: parseHtml
|
|
234
|
+
});
|
|
235
|
+
var _extends = Object.assign || function (target) {
|
|
236
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
237
|
+
var source = arguments[i];
|
|
238
|
+
for (var key in source) {
|
|
239
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
240
|
+
target[key] = source[key];
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return target;
|
|
245
|
+
};
|
|
246
|
+
var htmlToValue = function htmlToValue(html) {
|
|
247
|
+
try {
|
|
248
|
+
return serializer.deserialize(html);
|
|
249
|
+
} catch (e) {
|
|
250
|
+
console.log("Couldn't parse html: ", e);
|
|
251
|
+
return {};
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
exports.htmlToValue = htmlToValue;
|
|
255
|
+
var valueToHtml = function valueToHtml(value) {
|
|
256
|
+
return serializer.serialize(value);
|
|
257
|
+
};
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
*
|
|
261
|
+
* <div><div>a</div></div> -> <div>a</div>
|
|
262
|
+
*
|
|
263
|
+
* <div><div>a</div><div>b</div></div> -> <div>a</div><div>b</div>
|
|
264
|
+
* <div><div>a</div>4444<div>b</div></div> -> <div>a</div>4444<div>b</div>
|
|
265
|
+
*/
|
|
266
|
+
exports.valueToHtml = valueToHtml;
|
|
267
|
+
//# sourceMappingURL=new-serialization.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new-serialization.js","names":["_testSerializer","_interopRequireDefault","require","_react","_debug","_toStyle","_image","_math","_media","_list","_table","_respArea","_slate","_slateHyperscript","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","jsx","type","data","reduce","serialize","object","children","jsonData","toJSON","key","Tag","createElement","marks","mark","findPreviousText","nodeName","previousSibling","TEXT_RULE","normalize","nodeValue","obj","split","array","text","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, Value } from 'slate';\nimport { jsx } from 'slate-hyperscript';\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 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.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) {\n return;\n }\n log('[deserialize] mark: ', mark);\n\n return jsx('element', { type: mark }, next(el.childNodes));\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\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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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.parseDegrees = void 0;
|
|
7
|
+
var parseDegrees = function parseDegrees(html) {
|
|
8
|
+
return html
|
|
9
|
+
// removes \( use case: 50°
|
|
10
|
+
.replace(/\\[(]/g, '')
|
|
11
|
+
// removes \) use case: 50°+m<1
|
|
12
|
+
.replace(/\\[)]/g, '')
|
|
13
|
+
// removes \degree use case: 50°
|
|
14
|
+
.replace(/\\degree/g, '°');
|
|
15
|
+
};
|
|
16
|
+
exports.parseDegrees = parseDegrees;
|
|
17
|
+
//# sourceMappingURL=parse-html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse-html.js","names":["parseDegrees","html","replace","exports"],"sources":["../src/parse-html.js"],"sourcesContent":["export const parseDegrees = (html) =>\n html\n // removes \\( use case: 50°\n .replace(/\\\\[(]/g, '')\n // removes \\) use case: 50°+m<1\n .replace(/\\\\[)]/g, '')\n // removes \\degree use case: 50°\n .replace(/\\\\degree/g, '°');\n"],"mappings":";;;;;;AAAO,IAAMA,YAAY,GAAG,SAAfA,YAAYA,CAAIC,IAAI;EAAA,OAC/BA;EACE;EAAA,CACCC,OAAO,CAAC,QAAQ,EAAE,EAAE;EACrB;EAAA,CACCA,OAAO,CAAC,QAAQ,EAAE,EAAE;EACrB;EAAA,CACCA,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC;AAAA;AAACC,OAAA,CAAAH,YAAA,GAAAA,YAAA"}
|