@pie-lib/mask-markup 2.0.0-beta.2 → 2.0.0-next.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 -871
- package/CHANGELOG.md +296 -2
- package/LICENSE.md +5 -0
- package/NEXT.CHANGELOG.json +1 -0
- package/lib/choices/choice.js +99 -118
- package/lib/choices/choice.js.map +1 -1
- package/lib/choices/index.js +23 -19
- package/lib/choices/index.js.map +1 -1
- package/lib/componentize.js +1 -2
- package/lib/componentize.js.map +1 -1
- package/lib/components/blank.js +315 -221
- package/lib/components/blank.js.map +1 -1
- package/lib/components/correct-input.js +39 -42
- package/lib/components/correct-input.js.map +1 -1
- package/lib/components/dropdown.js +393 -124
- package/lib/components/dropdown.js.map +1 -1
- package/lib/components/input.js +1 -2
- package/lib/components/input.js.map +1 -1
- package/lib/constructed-response.js +82 -26
- package/lib/constructed-response.js.map +1 -1
- package/lib/customizable.js +44 -0
- package/lib/customizable.js.map +1 -0
- package/lib/drag-in-the-blank.js +154 -61
- package/lib/drag-in-the-blank.js.map +1 -1
- package/lib/index.js +7 -0
- package/lib/index.js.map +1 -1
- package/lib/inline-dropdown.js +4 -3
- package/lib/inline-dropdown.js.map +1 -1
- package/lib/mask.js +89 -56
- package/lib/mask.js.map +1 -1
- package/lib/serialization.js +30 -42
- package/lib/serialization.js.map +1 -1
- package/lib/with-mask.js +48 -20
- package/lib/with-mask.js.map +1 -1
- package/package.json +26 -15
- package/src/__tests__/drag-in-the-blank.test.js +111 -0
- package/src/__tests__/index.test.js +39 -0
- package/src/__tests__/mask.test.js +187 -0
- package/src/__tests__/serialization.test.js +54 -0
- package/src/__tests__/utils.js +1 -0
- package/src/__tests__/with-mask.test.js +76 -0
- package/src/choices/__tests__/index.test.js +75 -0
- package/src/choices/choice.jsx +83 -96
- package/src/choices/index.jsx +11 -5
- package/src/components/__tests__/blank.test.js +138 -0
- package/src/components/__tests__/correct-input.test.js +90 -0
- package/src/components/__tests__/dropdown.test.js +93 -0
- package/src/components/__tests__/input.test.js +102 -0
- package/src/components/blank.jsx +316 -204
- package/src/components/correct-input.jsx +37 -38
- package/src/components/dropdown.jsx +371 -125
- package/src/constructed-response.jsx +80 -18
- package/src/customizable.jsx +35 -0
- package/src/drag-in-the-blank.jsx +152 -40
- package/src/index.js +10 -1
- package/src/inline-dropdown.jsx +2 -0
- package/src/mask.jsx +71 -25
- package/src/serialization.js +22 -34
- package/src/with-mask.jsx +43 -3
- package/README.md +0 -14
- package/lib/new-serialization.js +0 -267
- package/lib/new-serialization.js.map +0 -1
- package/lib/parse-html.js +0 -17
- package/lib/parse-html.js.map +0 -1
- package/lib/test-serializer.js +0 -164
- package/lib/test-serializer.js.map +0 -1
- package/src/new-serialization.jsx +0 -291
- package/src/parse-html.js +0 -8
- package/src/test-serializer.js +0 -163
package/lib/mask.js
CHANGED
|
@@ -7,32 +7,33 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.renderChildren = exports["default"] = void 0;
|
|
8
8
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
9
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
|
-
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
11
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
12
10
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
13
11
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
12
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
14
13
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
14
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
16
15
|
var _react = _interopRequireDefault(require("react"));
|
|
17
16
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
18
|
-
var
|
|
19
|
-
var _styles = require("@material
|
|
17
|
+
var _get = _interopRequireDefault(require("lodash/get"));
|
|
18
|
+
var _styles = require("@mui/material/styles");
|
|
19
|
+
var _mathRendering = require("@pie-lib/math-rendering");
|
|
20
20
|
var _serialization = require("./serialization");
|
|
21
|
-
function ownKeys(
|
|
22
|
-
function _objectSpread(
|
|
23
|
-
function
|
|
24
|
-
function _isNativeReflectConstruct() {
|
|
25
|
-
var Paragraph = (0, _styles.
|
|
21
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
22
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
23
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
24
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
25
|
+
var Paragraph = (0, _styles.styled)('div')(function (_ref) {
|
|
26
|
+
var theme = _ref.theme;
|
|
26
27
|
return {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
paddingTop: theme.spacing(2),
|
|
29
|
+
paddingBottom: theme.spacing(2)
|
|
30
|
+
};
|
|
31
|
+
});
|
|
32
|
+
var Spacer = (0, _styles.styled)('span')(function () {
|
|
33
|
+
return {
|
|
34
|
+
display: 'inline-block',
|
|
35
|
+
width: '.75em'
|
|
31
36
|
};
|
|
32
|
-
})(function (props) {
|
|
33
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
34
|
-
className: props.classes.para
|
|
35
|
-
}, props.children);
|
|
36
37
|
});
|
|
37
38
|
var restrictWhitespaceTypes = ['tbody', 'tr'];
|
|
38
39
|
var addText = function addText(parentNode, text) {
|
|
@@ -45,20 +46,25 @@ var addText = function addText(parentNode, text) {
|
|
|
45
46
|
}
|
|
46
47
|
};
|
|
47
48
|
var getMark = function getMark(n) {
|
|
48
|
-
var
|
|
49
|
-
|
|
49
|
+
var mark = n.leaves.find(function (leave) {
|
|
50
|
+
return (0, _get["default"])(leave, 'marks', []).length;
|
|
51
|
+
});
|
|
52
|
+
if (mark) {
|
|
53
|
+
return mark.marks[0];
|
|
54
|
+
}
|
|
55
|
+
return null;
|
|
50
56
|
};
|
|
51
|
-
var renderChildren = function renderChildren(layout, value, onChange, rootRenderChildren, parentNode) {
|
|
57
|
+
var _renderChildren = exports.renderChildren = function renderChildren(layout, value, onChange, rootRenderChildren, parentNode, elementType) {
|
|
52
58
|
if (!value) {
|
|
53
59
|
return null;
|
|
54
60
|
}
|
|
55
61
|
var children = [];
|
|
56
|
-
(layout.
|
|
57
|
-
var key = "".concat(n.type, "-").concat(index);
|
|
62
|
+
(layout.nodes || []).forEach(function (n, index) {
|
|
63
|
+
var key = n.type ? "".concat(n.type, "-").concat(index) : "".concat(index);
|
|
58
64
|
if (n.isMath) {
|
|
59
|
-
children.push(
|
|
65
|
+
children.push(/*#__PURE__*/_react["default"].createElement("span", {
|
|
60
66
|
dangerouslySetInnerHTML: {
|
|
61
|
-
__html: "<math displaystyle=\"true\">".concat(n.
|
|
67
|
+
__html: "<math displaystyle=\"true\">".concat(n.nodes[0].innerHTML, "</math>")
|
|
62
68
|
}
|
|
63
69
|
}));
|
|
64
70
|
return children;
|
|
@@ -67,18 +73,27 @@ var renderChildren = function renderChildren(layout, value, onChange, rootRender
|
|
|
67
73
|
var c = rootRenderChildren(n, value, onChange);
|
|
68
74
|
if (c) {
|
|
69
75
|
children.push(c);
|
|
76
|
+
if ((parentNode === null || parentNode === void 0 ? void 0 : parentNode.type) !== 'td' && elementType === 'drag-in-the-blank') {
|
|
77
|
+
children.push(/*#__PURE__*/_react["default"].createElement(Spacer, {
|
|
78
|
+
key: "spacer-".concat(index)
|
|
79
|
+
}));
|
|
80
|
+
}
|
|
70
81
|
return;
|
|
71
82
|
}
|
|
72
83
|
}
|
|
73
|
-
if (
|
|
74
|
-
var content = n.
|
|
84
|
+
if (n.object === 'text') {
|
|
85
|
+
var content = n.leaves.reduce(function (acc, l) {
|
|
86
|
+
var t = l.text;
|
|
87
|
+
var extraText = addText(parentNode, t);
|
|
88
|
+
return extraText ? acc + extraText : acc;
|
|
89
|
+
}, '');
|
|
75
90
|
var mark = getMark(n);
|
|
76
91
|
if (mark) {
|
|
77
92
|
var markKey;
|
|
78
93
|
for (markKey in _serialization.MARK_TAGS) {
|
|
79
94
|
if (_serialization.MARK_TAGS[markKey] === mark.type) {
|
|
80
95
|
var Tag = markKey;
|
|
81
|
-
children.push(
|
|
96
|
+
children.push(/*#__PURE__*/_react["default"].createElement(Tag, {
|
|
82
97
|
key: key
|
|
83
98
|
}, content));
|
|
84
99
|
break;
|
|
@@ -86,21 +101,26 @@ var renderChildren = function renderChildren(layout, value, onChange, rootRender
|
|
|
86
101
|
}
|
|
87
102
|
} else if (content.length > 0) {
|
|
88
103
|
children.push(content);
|
|
104
|
+
if ((parentNode === null || parentNode === void 0 ? void 0 : parentNode.type) !== 'td' && elementType === 'drag-in-the-blank') {
|
|
105
|
+
children.push(/*#__PURE__*/_react["default"].createElement(Spacer, {
|
|
106
|
+
key: "spacer-".concat(index)
|
|
107
|
+
}));
|
|
108
|
+
}
|
|
89
109
|
}
|
|
90
110
|
} else {
|
|
91
|
-
var subNodes =
|
|
111
|
+
var subNodes = _renderChildren(n, value, onChange, rootRenderChildren, n, elementType);
|
|
92
112
|
if (n.type === 'p' || n.type === 'paragraph') {
|
|
93
|
-
children.push(
|
|
113
|
+
children.push(/*#__PURE__*/_react["default"].createElement(Paragraph, {
|
|
94
114
|
key: key
|
|
95
115
|
}, subNodes));
|
|
96
116
|
} else {
|
|
97
117
|
var _Tag = n.type;
|
|
98
|
-
if (
|
|
99
|
-
children.push(
|
|
118
|
+
if (n.nodes && n.nodes.length > 0) {
|
|
119
|
+
children.push(/*#__PURE__*/_react["default"].createElement(_Tag, (0, _extends2["default"])({
|
|
100
120
|
key: key
|
|
101
121
|
}, n.data.attributes), subNodes));
|
|
102
122
|
} else {
|
|
103
|
-
children.push(
|
|
123
|
+
children.push(/*#__PURE__*/_react["default"].createElement(_Tag, (0, _extends2["default"])({
|
|
104
124
|
key: key
|
|
105
125
|
}, n.data.attributes)));
|
|
106
126
|
}
|
|
@@ -109,55 +129,68 @@ var renderChildren = function renderChildren(layout, value, onChange, rootRender
|
|
|
109
129
|
});
|
|
110
130
|
return children;
|
|
111
131
|
};
|
|
112
|
-
|
|
113
|
-
var MaskContainer = (0, _styles.withStyles)(function () {
|
|
132
|
+
var MaskContainer = (0, _styles.styled)('div')(function () {
|
|
114
133
|
return {
|
|
115
|
-
|
|
116
|
-
|
|
134
|
+
display: 'initial',
|
|
135
|
+
'&:not(.MathJax) table': {
|
|
136
|
+
borderCollapse: 'collapse'
|
|
137
|
+
},
|
|
138
|
+
// align table content to left as per STAR requirement PD-3687
|
|
139
|
+
'&:not(.MathJax) table td, &:not(.MathJax) table th': {
|
|
140
|
+
padding: '8px 12px',
|
|
141
|
+
textAlign: 'left'
|
|
117
142
|
}
|
|
118
143
|
};
|
|
119
|
-
})(function (props) {
|
|
120
|
-
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
121
|
-
className: props.classes.main
|
|
122
|
-
}, props.children);
|
|
123
144
|
});
|
|
124
145
|
|
|
125
146
|
/**
|
|
126
147
|
* Renders a layout that uses the slate.js Value model structure.
|
|
127
148
|
*/
|
|
128
|
-
var Mask = /*#__PURE__*/function (_React$Component) {
|
|
129
|
-
(
|
|
130
|
-
var _super = _createSuper(Mask);
|
|
131
|
-
function Mask() {
|
|
149
|
+
var Mask = exports["default"] = /*#__PURE__*/function (_React$Component) {
|
|
150
|
+
function Mask(props) {
|
|
132
151
|
var _this;
|
|
133
152
|
(0, _classCallCheck2["default"])(this, Mask);
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
}
|
|
137
|
-
_this = _super.call.apply(_super, [this].concat(args));
|
|
138
|
-
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleChange", function (id, value) {
|
|
153
|
+
_this = _callSuper(this, Mask, [props]);
|
|
154
|
+
(0, _defineProperty2["default"])(_this, "handleChange", function (id, value) {
|
|
139
155
|
var data = _objectSpread(_objectSpread({}, _this.props.value), {}, (0, _defineProperty2["default"])({}, id, value));
|
|
140
156
|
_this.props.onChange(data);
|
|
141
157
|
});
|
|
158
|
+
_this.internalContainerRef = /*#__PURE__*/_react["default"].createRef();
|
|
142
159
|
return _this;
|
|
143
160
|
}
|
|
144
|
-
(0,
|
|
161
|
+
(0, _inherits2["default"])(Mask, _React$Component);
|
|
162
|
+
return (0, _createClass2["default"])(Mask, [{
|
|
163
|
+
key: "componentDidMount",
|
|
164
|
+
value: function componentDidMount() {
|
|
165
|
+
var containerRef = this.props.containerRef || this.internalContainerRef;
|
|
166
|
+
if (containerRef.current && typeof _mathRendering.renderMath === 'function') {
|
|
167
|
+
(0, _mathRendering.renderMath)(containerRef.current);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}, {
|
|
145
171
|
key: "render",
|
|
146
172
|
value: function render() {
|
|
147
173
|
var _this$props = this.props,
|
|
148
174
|
value = _this$props.value,
|
|
149
|
-
layout = _this$props.layout
|
|
150
|
-
|
|
151
|
-
|
|
175
|
+
layout = _this$props.layout,
|
|
176
|
+
elementType = _this$props.elementType,
|
|
177
|
+
containerRef = _this$props.containerRef;
|
|
178
|
+
var children = _renderChildren(layout, value, this.handleChange, this.props.renderChildren, null, elementType);
|
|
179
|
+
var ref = containerRef || this.internalContainerRef;
|
|
180
|
+
return /*#__PURE__*/_react["default"].createElement(MaskContainer, {
|
|
181
|
+
ref: ref
|
|
182
|
+
}, children);
|
|
152
183
|
}
|
|
153
184
|
}]);
|
|
154
|
-
return Mask;
|
|
155
185
|
}(_react["default"].Component);
|
|
156
|
-
exports["default"] = Mask;
|
|
157
186
|
(0, _defineProperty2["default"])(Mask, "propTypes", {
|
|
158
187
|
renderChildren: _propTypes["default"].func,
|
|
159
188
|
layout: _propTypes["default"].object,
|
|
160
189
|
value: _propTypes["default"].object,
|
|
161
|
-
onChange: _propTypes["default"].func
|
|
190
|
+
onChange: _propTypes["default"].func,
|
|
191
|
+
elementType: _propTypes["default"].string,
|
|
192
|
+
containerRef: _propTypes["default"].oneOfType([_propTypes["default"].func, _propTypes["default"].shape({
|
|
193
|
+
current: _propTypes["default"].instanceOf(Element)
|
|
194
|
+
})])
|
|
162
195
|
});
|
|
163
196
|
//# sourceMappingURL=mask.js.map
|
package/lib/mask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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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"}
|
|
1
|
+
{"version":3,"file":"mask.js","names":["_react","_interopRequireDefault","require","_propTypes","_get","_styles","_mathRendering","_serialization","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","prototype","valueOf","call","Paragraph","styled","_ref","theme","paddingTop","spacing","paddingBottom","Spacer","display","width","restrictWhitespaceTypes","addText","parentNode","text","isWhitespace","trim","parentType","type","includes","undefined","getMark","n","mark","leaves","find","leave","get","marks","renderChildren","exports","layout","value","onChange","rootRenderChildren","elementType","children","nodes","index","key","concat","isMath","createElement","dangerouslySetInnerHTML","__html","innerHTML","c","object","content","reduce","acc","l","extraText","markKey","MARK_TAGS","Tag","subNodes","_Tag","_extends2","data","attributes","MaskContainer","borderCollapse","padding","textAlign","Mask","_React$Component","props","_this","_classCallCheck2","id","internalContainerRef","React","createRef","_inherits2","_createClass2","componentDidMount","containerRef","current","renderMath","render","_this$props","handleChange","ref","Component","PropTypes","func","string","oneOfType","shape","instanceOf","Element"],"sources":["../src/mask.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport get from 'lodash/get';\nimport { styled } from '@mui/material/styles';\nimport { renderMath } from '@pie-lib/math-rendering';\nimport { MARK_TAGS } from './serialization';\n\nconst Paragraph = styled('div')(({ theme }) => ({\n paddingTop: theme.spacing(2),\n paddingBottom: theme.spacing(2),\n}));\n\nconst Spacer = styled('span')(() => ({\n display: 'inline-block',\n width: '.75em',\n}));\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, elementType) => {\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 if (parentNode?.type !== 'td' && elementType === 'drag-in-the-blank') {\n children.push(<Spacer key={`spacer-${index}`} />);\n }\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 if (parentNode?.type !== 'td' && elementType === 'drag-in-the-blank') {\n children.push(<Spacer key={`spacer-${index}`} />);\n }\n }\n } else {\n const subNodes = renderChildren(n, value, onChange, rootRenderChildren, n, elementType);\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 = styled('div')(() => ({\n display: 'initial',\n '&:not(.MathJax) table': {\n borderCollapse: 'collapse',\n },\n // align table content to left as per STAR requirement PD-3687\n '&:not(.MathJax) table td, &:not(.MathJax) table th': {\n padding: '8px 12px',\n textAlign: 'left',\n },\n}));\n\n/**\n * Renders a layout that uses the slate.js Value model structure.\n */\nexport default class Mask extends React.Component {\n constructor(props) {\n super(props);\n this.internalContainerRef = React.createRef();\n }\n\n static propTypes = {\n renderChildren: PropTypes.func,\n layout: PropTypes.object,\n value: PropTypes.object,\n onChange: PropTypes.func,\n elementType: PropTypes.string,\n containerRef: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.instanceOf(Element) }),\n ]),\n };\n\n componentDidMount() {\n const containerRef = this.props.containerRef || this.internalContainerRef;\n if (containerRef.current && typeof renderMath === 'function') {\n renderMath(containerRef.current);\n }\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, elementType, containerRef } = this.props;\n const children = renderChildren(layout, value, this.handleChange, this.props.renderChildren, null, elementType);\n const ref = containerRef || this.internalContainerRef;\n\n return <MaskContainer ref={ref}>{children}</MaskContainer>;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
package/lib/serialization.js
CHANGED
|
@@ -6,13 +6,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.reactAttributes = exports.parseStyleString = exports.deserialize = exports.MARK_TAGS = void 0;
|
|
8
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
-
var
|
|
10
|
-
var _slateHyperscript = require("slate-hyperscript");
|
|
9
|
+
var _slateHtmlSerializer = _interopRequireDefault(require("slate-html-serializer"));
|
|
11
10
|
var _toStyle = require("to-style");
|
|
12
11
|
var _debug = _interopRequireDefault(require("debug"));
|
|
13
|
-
var
|
|
14
|
-
function
|
|
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; }
|
|
12
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
16
14
|
var log = (0, _debug["default"])('@pie-lib:mask-markup:serialization');
|
|
17
15
|
var INLINE = ['span'];
|
|
18
16
|
var MARK = ['em', 'strong', 'u'];
|
|
@@ -38,7 +36,7 @@ var getObject = function getObject(type) {
|
|
|
38
36
|
}
|
|
39
37
|
return 'block';
|
|
40
38
|
};
|
|
41
|
-
var parseStyleString = function parseStyleString(s) {
|
|
39
|
+
var parseStyleString = exports.parseStyleString = function parseStyleString(s) {
|
|
42
40
|
var regex = /([\w-]*)\s*:\s*([^;]*)/g;
|
|
43
41
|
var match;
|
|
44
42
|
var result = {};
|
|
@@ -47,14 +45,12 @@ var parseStyleString = function parseStyleString(s) {
|
|
|
47
45
|
}
|
|
48
46
|
return result;
|
|
49
47
|
};
|
|
50
|
-
exports.
|
|
51
|
-
var reactAttributes = function reactAttributes(o) {
|
|
48
|
+
var reactAttributes = exports.reactAttributes = function reactAttributes(o) {
|
|
52
49
|
return (0, _toStyle.object)(o, {
|
|
53
50
|
camelize: true,
|
|
54
51
|
addUnits: false
|
|
55
52
|
});
|
|
56
53
|
};
|
|
57
|
-
exports.reactAttributes = reactAttributes;
|
|
58
54
|
var handleStyles = function handleStyles(el, attribute) {
|
|
59
55
|
var styleString = el.getAttribute(attribute);
|
|
60
56
|
return reactAttributes(parseStyleString(styleString));
|
|
@@ -94,7 +90,7 @@ var attributes = ['border', 'class', 'style'];
|
|
|
94
90
|
* @type {Object}
|
|
95
91
|
*/
|
|
96
92
|
|
|
97
|
-
var MARK_TAGS = {
|
|
93
|
+
var MARK_TAGS = exports.MARK_TAGS = {
|
|
98
94
|
b: 'bold',
|
|
99
95
|
em: 'italic',
|
|
100
96
|
u: 'underline',
|
|
@@ -102,17 +98,16 @@ var MARK_TAGS = {
|
|
|
102
98
|
code: 'code',
|
|
103
99
|
strong: 'strong'
|
|
104
100
|
};
|
|
105
|
-
exports.MARK_TAGS = MARK_TAGS;
|
|
106
101
|
var marks = {
|
|
107
102
|
deserialize: function deserialize(el, next) {
|
|
108
103
|
var mark = MARK_TAGS[el.tagName.toLowerCase()];
|
|
109
|
-
if (!mark)
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
104
|
+
if (!mark) return;
|
|
112
105
|
log('[deserialize] mark: ', mark);
|
|
113
|
-
return
|
|
114
|
-
|
|
115
|
-
|
|
106
|
+
return {
|
|
107
|
+
object: 'mark',
|
|
108
|
+
type: mark,
|
|
109
|
+
nodes: next(el.childNodes)
|
|
110
|
+
};
|
|
116
111
|
}
|
|
117
112
|
};
|
|
118
113
|
var rules = [marks, {
|
|
@@ -124,7 +119,12 @@ var rules = [marks, {
|
|
|
124
119
|
return undefined;
|
|
125
120
|
}
|
|
126
121
|
if (el.nodeType === TEXT_NODE) {
|
|
127
|
-
return
|
|
122
|
+
return {
|
|
123
|
+
object: 'text',
|
|
124
|
+
leaves: [{
|
|
125
|
+
text: el.textContent
|
|
126
|
+
}]
|
|
127
|
+
};
|
|
128
128
|
}
|
|
129
129
|
var type = el.tagName.toLowerCase();
|
|
130
130
|
var normalAttrs = attr(el) || {};
|
|
@@ -132,33 +132,22 @@ var rules = [marks, {
|
|
|
132
132
|
normalAttrs.controls = true;
|
|
133
133
|
}
|
|
134
134
|
var allAttrs = attributes.reduce(attributesToMap(el), _objectSpread({}, normalAttrs));
|
|
135
|
+
var object = getObject(type);
|
|
135
136
|
if (el.tagName.toLowerCase() === 'math') {
|
|
136
|
-
return
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
}
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
// return {
|
|
144
|
-
// isMath: true,
|
|
145
|
-
// nodes: [el]
|
|
146
|
-
// };
|
|
137
|
+
return {
|
|
138
|
+
isMath: true,
|
|
139
|
+
nodes: [el]
|
|
140
|
+
};
|
|
147
141
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
return (0, _slateHyperscript.jsx)('element', {
|
|
151
|
-
type: type,
|
|
152
|
-
data: {}
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
return (0, _slateHyperscript.jsx)('element', {
|
|
142
|
+
return {
|
|
143
|
+
object: object,
|
|
156
144
|
type: type,
|
|
157
145
|
data: {
|
|
158
146
|
dataset: _objectSpread({}, el.dataset),
|
|
159
147
|
attributes: _objectSpread({}, allAttrs)
|
|
160
|
-
}
|
|
161
|
-
|
|
148
|
+
},
|
|
149
|
+
nodes: next(el.childNodes)
|
|
150
|
+
};
|
|
162
151
|
}
|
|
163
152
|
}];
|
|
164
153
|
|
|
@@ -166,14 +155,13 @@ var rules = [marks, {
|
|
|
166
155
|
* Create a new serializer instance with our `rules` from above.
|
|
167
156
|
* Having a default div block will just put every div on it's own line, which is not ideal.
|
|
168
157
|
*/
|
|
169
|
-
var html = new
|
|
158
|
+
var html = new _slateHtmlSerializer["default"]({
|
|
170
159
|
rules: rules,
|
|
171
160
|
defaultBlock: 'span'
|
|
172
161
|
});
|
|
173
|
-
var deserialize = function deserialize(s) {
|
|
162
|
+
var deserialize = exports.deserialize = function deserialize(s) {
|
|
174
163
|
return html.deserialize(s, {
|
|
175
164
|
toJSON: true
|
|
176
165
|
});
|
|
177
166
|
};
|
|
178
|
-
exports.deserialize = deserialize;
|
|
179
167
|
//# sourceMappingURL=serialization.js.map
|
package/lib/serialization.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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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"}
|
|
1
|
+
{"version":3,"file":"serialization.js","names":["_slateHtmlSerializer","_interopRequireDefault","require","_toStyle","_debug","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","defineProperty","log","debug","INLINE","MARK","TEXT_NODE","COMMENT_NODE","attr","el","attributes","undefined","out","i","a","name","value","getObject","type","includes","parseStyleString","exports","s","regex","match","result","exec","trim","reactAttributes","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","object","nodes","childNodes","rules","nodeType","leaves","text","textContent","normalAttrs","controls","allAttrs","reduce","isMath","data","dataset","html","Html","defaultBlock","toJSON"],"sources":["../src/serialization.js"],"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"],"mappings":";;;;;;;;AAAA,IAAAA,oBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAH,sBAAA,CAAAC,OAAA;AAA0B,SAAAG,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,MAAA,CAAAC,IAAA,CAAAJ,CAAA,OAAAG,MAAA,CAAAE,qBAAA,QAAAC,CAAA,GAAAH,MAAA,CAAAE,qBAAA,CAAAL,CAAA,GAAAC,CAAA,KAAAK,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAN,CAAA,WAAAE,MAAA,CAAAK,wBAAA,CAAAR,CAAA,EAAAC,CAAA,EAAAQ,UAAA,OAAAP,CAAA,CAAAQ,IAAA,CAAAC,KAAA,CAAAT,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAU,cAAAZ,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAY,SAAA,CAAAC,MAAA,EAAAb,CAAA,UAAAC,CAAA,WAAAW,SAAA,CAAAZ,CAAA,IAAAY,SAAA,CAAAZ,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAI,MAAA,CAAAD,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,aAAAhB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAE,MAAA,CAAAc,yBAAA,GAAAd,MAAA,CAAAe,gBAAA,CAAAlB,CAAA,EAAAG,MAAA,CAAAc,yBAAA,CAAAf,CAAA,KAAAH,OAAA,CAAAI,MAAA,CAAAD,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAE,MAAA,CAAAgB,cAAA,CAAAnB,CAAA,EAAAC,CAAA,EAAAE,MAAA,CAAAK,wBAAA,CAAAN,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAE1B,IAAMoB,GAAG,GAAG,IAAAC,iBAAK,EAAC,oCAAoC,CAAC;AAEvD,IAAMC,MAAM,GAAG,CAAC,MAAM,CAAC;AACvB,IAAMC,IAAI,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC;AAClC,IAAMC,SAAS,GAAG,CAAC;AACnB,IAAMC,YAAY,GAAG,CAAC;AAEtB,IAAMC,IAAI,GAAG,SAAPA,IAAIA,CAAIC,EAAE,EAAK;EACnB,IAAI,CAACA,EAAE,CAACC,UAAU,IAAID,EAAE,CAACC,UAAU,CAACd,MAAM,IAAI,CAAC,EAAE;IAC/C,OAAOe,SAAS;EAClB;EAEA,IAAMC,GAAG,GAAG,CAAC,CAAC;EACd,IAAIC,CAAC;EAEL,KAAKA,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGJ,EAAE,CAACC,UAAU,CAACd,MAAM,EAAEiB,CAAC,EAAE,EAAE;IACzC,IAAMC,CAAC,GAAGL,EAAE,CAACC,UAAU,CAACG,CAAC,CAAC;IAE1BD,GAAG,CAACE,CAAC,CAACC,IAAI,CAAC,GAAGD,CAAC,CAACE,KAAK;EACvB;EAEA,OAAOJ,GAAG;AACZ,CAAC;AAED,IAAMK,SAAS,GAAG,SAAZA,SAASA,CAAIC,IAAI,EAAK;EAC1B,IAAId,MAAM,CAACe,QAAQ,CAACD,IAAI,CAAC,EAAE;IACzB,OAAO,QAAQ;EACjB,CAAC,MAAM,IAAIb,IAAI,CAACc,QAAQ,CAACD,IAAI,CAAC,EAAE;IAC9B,OAAO,MAAM;EACf;EACA,OAAO,OAAO;AAChB,CAAC;AAEM,IAAME,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,GAAG,SAAnBA,gBAAgBA,CAAIE,CAAC,EAAK;EACrC,IAAMC,KAAK,GAAG,yBAAyB;EACvC,IAAIC,KAAK;EACT,IAAMC,MAAM,GAAG,CAAC,CAAC;EACjB,OAAQD,KAAK,GAAGD,KAAK,CAACG,IAAI,CAACJ,CAAC,CAAC,EAAG;IAC9BG,MAAM,CAACD,KAAK,CAAC,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC,CAACG,IAAI,CAAC,CAAC;EACpC;EACA,OAAOF,MAAM;AACf,CAAC;AAEM,IAAMG,eAAe,GAAAP,OAAA,CAAAO,eAAA,GAAG,SAAlBA,eAAeA,CAAIxC,CAAC;EAAA,OAAK,IAAAyC,eAAa,EAACzC,CAAC,EAAE;IAAE0C,QAAQ,EAAE,IAAI;IAAEC,QAAQ,EAAE;EAAM,CAAC,CAAC;AAAA;AAE3F,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAIvB,EAAE,EAAEwB,SAAS,EAAK;EACtC,IAAMC,WAAW,GAAGzB,EAAE,CAAC0B,YAAY,CAACF,SAAS,CAAC;EAE9C,OAAOL,eAAe,CAACR,gBAAgB,CAACc,WAAW,CAAC,CAAC;AACvD,CAAC;AAED,IAAME,WAAW,GAAG,SAAdA,WAAWA,CAAI3B,EAAE,EAAE4B,GAAG,EAAEJ,SAAS,EAAK;EAC1C,IAAMK,UAAU,GAAG7B,EAAE,CAAC0B,YAAY,CAACF,SAAS,CAAC;EAE7C,OAAOI,GAAG,SAAM;EAEhB,OAAOC,UAAU;AACnB,CAAC;AAED,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAI9B,EAAE;EAAA,OAAK,UAAC4B,GAAG,EAAEJ,SAAS,EAAK;IAClD,IAAI,CAACxB,EAAE,CAAC0B,YAAY,EAAE;MACpB,OAAOE,GAAG;IACZ;IAEA,IAAMrB,KAAK,GAAGP,EAAE,CAAC0B,YAAY,CAACF,SAAS,CAAC;IAExC,IAAIjB,KAAK,EAAE;MACT,QAAQiB,SAAS;QACf,KAAK,OAAO;UACVI,GAAG,CAACG,KAAK,GAAGR,YAAY,CAACvB,EAAE,EAAEwB,SAAS,CAAC;UACvC;QACF,KAAK,OAAO;UACVI,GAAG,CAACI,SAAS,GAAGL,WAAW,CAAC3B,EAAE,EAAE4B,GAAG,EAAEJ,SAAS,CAAC;UAC/C;QACF;UACEI,GAAG,CAACJ,SAAS,CAAC,GAAGxB,EAAE,CAAC0B,YAAY,CAACF,SAAS,CAAC;UAC3C;MACJ;IACF;IAEA,OAAOI,GAAG;EACZ,CAAC;AAAA;AAED,IAAM3B,UAAU,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC;;AAE/C;AACA;AACA;AACA;AACA;;AAEO,IAAMgC,SAAS,GAAArB,OAAA,CAAAqB,SAAA,GAAG;EACvBC,CAAC,EAAE,MAAM;EACTC,EAAE,EAAE,QAAQ;EACZC,CAAC,EAAE,WAAW;EACdvB,CAAC,EAAE,eAAe;EAClBwB,IAAI,EAAE,MAAM;EACZC,MAAM,EAAE;AACV,CAAC;AAED,IAAMC,KAAK,GAAG;EACZC,WAAW,WAAXA,WAAWA,CAACxC,EAAE,EAAEyC,IAAI,EAAE;IACpB,IAAMC,IAAI,GAAGT,SAAS,CAACjC,EAAE,CAAC2C,OAAO,CAACC,WAAW,CAAC,CAAC,CAAC;IAChD,IAAI,CAACF,IAAI,EAAE;IACXjD,GAAG,CAAC,sBAAsB,EAAEiD,IAAI,CAAC;IACjC,OAAO;MACLG,MAAM,EAAE,MAAM;MACdpC,IAAI,EAAEiC,IAAI;MACVI,KAAK,EAAEL,IAAI,CAACzC,EAAE,CAAC+C,UAAU;IAC3B,CAAC;EACH;AACF,CAAC;AAED,IAAMC,KAAK,GAAG,CACZT,KAAK,EACL;EACE;AACJ;AACA;EACIC,WAAW,EAAE,SAAbA,WAAWA,CAAGxC,EAAE,EAAEyC,IAAI,EAAK;IACzB,IAAIzC,EAAE,CAACiD,QAAQ,KAAKnD,YAAY,EAAE;MAChC,OAAOI,SAAS;IAClB;IAEA,IAAIF,EAAE,CAACiD,QAAQ,KAAKpD,SAAS,EAAE;MAC7B,OAAO;QACLgD,MAAM,EAAE,MAAM;QACdK,MAAM,EAAE,CAAC;UAAEC,IAAI,EAAEnD,EAAE,CAACoD;QAAY,CAAC;MACnC,CAAC;IACH;IAEA,IAAM3C,IAAI,GAAGT,EAAE,CAAC2C,OAAO,CAACC,WAAW,CAAC,CAAC;IAErC,IAAMS,WAAW,GAAGtD,IAAI,CAACC,EAAE,CAAC,IAAI,CAAC,CAAC;IAElC,IAAIS,IAAI,IAAI,OAAO,IAAI4C,WAAW,CAACC,QAAQ,IAAI,EAAE,EAAE;MACjDD,WAAW,CAACC,QAAQ,GAAG,IAAI;IAC7B;IAEA,IAAMC,QAAQ,GAAGtD,UAAU,CAACuD,MAAM,CAAC1B,eAAe,CAAC9B,EAAE,CAAC,EAAAf,aAAA,KAAOoE,WAAW,CAAE,CAAC;IAC3E,IAAMR,MAAM,GAAGrC,SAAS,CAACC,IAAI,CAAC;IAE9B,IAAIT,EAAE,CAAC2C,OAAO,CAACC,WAAW,CAAC,CAAC,KAAK,MAAM,EAAE;MACvC,OAAO;QACLa,MAAM,EAAE,IAAI;QACZX,KAAK,EAAE,CAAC9C,EAAE;MACZ,CAAC;IACH;IAEA,OAAO;MACL6C,MAAM,EAANA,MAAM;MACNpC,IAAI,EAAJA,IAAI;MACJiD,IAAI,EAAE;QAAEC,OAAO,EAAA1E,aAAA,KAAOe,EAAE,CAAC2D,OAAO,CAAE;QAAE1D,UAAU,EAAAhB,aAAA,KAAOsE,QAAQ;MAAG,CAAC;MACjET,KAAK,EAAEL,IAAI,CAACzC,EAAE,CAAC+C,UAAU;IAC3B,CAAC;EACH;AACF,CAAC,CACF;;AAED;AACA;AACA;AACA;AACA,IAAMa,IAAI,GAAG,IAAIC,+BAAI,CAAC;EAAEb,KAAK,EAALA,KAAK;EAAEc,YAAY,EAAE;AAAO,CAAC,CAAC;AAE/C,IAAMtB,WAAW,GAAA5B,OAAA,CAAA4B,WAAA,GAAG,SAAdA,WAAWA,CAAI3B,CAAC;EAAA,OAAK+C,IAAI,CAACpB,WAAW,CAAC3B,CAAC,EAAE;IAAEkD,MAAM,EAAE;EAAK,CAAC,CAAC;AAAA","ignoreList":[]}
|
package/lib/with-mask.js
CHANGED
|
@@ -7,43 +7,71 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.withMask = exports.buildLayoutFromMarkup = void 0;
|
|
8
8
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
9
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
11
10
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
12
11
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
12
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
13
13
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
14
|
var _react = _interopRequireDefault(require("react"));
|
|
15
15
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
16
16
|
var _mask = _interopRequireDefault(require("./mask"));
|
|
17
17
|
var _componentize2 = _interopRequireDefault(require("./componentize"));
|
|
18
18
|
var _serialization = require("./serialization");
|
|
19
|
-
function
|
|
20
|
-
function _isNativeReflectConstruct() {
|
|
21
|
-
var buildLayoutFromMarkup = function buildLayoutFromMarkup(markup, type) {
|
|
19
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); }
|
|
20
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
21
|
+
var buildLayoutFromMarkup = exports.buildLayoutFromMarkup = function buildLayoutFromMarkup(markup, type) {
|
|
22
22
|
var _componentize = (0, _componentize2["default"])(markup, type),
|
|
23
23
|
processed = _componentize.markup;
|
|
24
24
|
var value = (0, _serialization.deserialize)(processed);
|
|
25
|
-
return value;
|
|
25
|
+
return value.document;
|
|
26
26
|
};
|
|
27
|
-
exports.
|
|
28
|
-
var
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
var _super = _createSuper(WithMask);
|
|
33
|
-
function WithMask() {
|
|
27
|
+
var withMask = exports.withMask = function withMask(type, renderChildren) {
|
|
28
|
+
var _WithMask;
|
|
29
|
+
return _WithMask = /*#__PURE__*/function (_React$Component) {
|
|
30
|
+
function WithMask(props) {
|
|
31
|
+
var _this;
|
|
34
32
|
(0, _classCallCheck2["default"])(this, WithMask);
|
|
35
|
-
|
|
33
|
+
_this = _callSuper(this, WithMask, [props]);
|
|
34
|
+
_this.containerRef = /*#__PURE__*/_react["default"].createRef();
|
|
35
|
+
return _this;
|
|
36
36
|
}
|
|
37
|
-
(0,
|
|
37
|
+
(0, _inherits2["default"])(WithMask, _React$Component);
|
|
38
|
+
return (0, _createClass2["default"])(WithMask, [{
|
|
39
|
+
key: "componentDidUpdate",
|
|
40
|
+
value: function componentDidUpdate(prevProps) {
|
|
41
|
+
if (this.props.markup !== prevProps.markup) {
|
|
42
|
+
var domNode = this.containerRef.current;
|
|
43
|
+
var mathElements = domNode && domNode.querySelectorAll('[data-latex][data-math-handled="true"]');
|
|
44
|
+
|
|
45
|
+
// Clean up for fresh MathJax processing
|
|
46
|
+
(mathElements || []).forEach(function (el) {
|
|
47
|
+
// Remove the MathJax container to allow for clean updates
|
|
48
|
+
var mjxContainer = el.querySelector('mjx-container');
|
|
49
|
+
if (mjxContainer) {
|
|
50
|
+
el.removeChild(mjxContainer);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Update the innerHTML to match the raw LaTeX data, ensuring it is reprocessed correctly
|
|
54
|
+
var latexCode = el.getAttribute('data-raw');
|
|
55
|
+
el.innerHTML = latexCode;
|
|
56
|
+
|
|
57
|
+
// Remove the attribute to signal that MathJax should reprocess this element
|
|
58
|
+
el.removeAttribute('data-math-handled');
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}, {
|
|
38
63
|
key: "render",
|
|
39
64
|
value: function render() {
|
|
40
65
|
var _this$props = this.props,
|
|
41
66
|
markup = _this$props.markup,
|
|
42
67
|
layout = _this$props.layout,
|
|
43
68
|
value = _this$props.value,
|
|
44
|
-
onChange = _this$props.onChange
|
|
69
|
+
onChange = _this$props.onChange,
|
|
70
|
+
elementType = _this$props.elementType;
|
|
45
71
|
var maskLayout = layout ? layout : buildLayoutFromMarkup(markup, type);
|
|
46
72
|
return /*#__PURE__*/_react["default"].createElement(_mask["default"], {
|
|
73
|
+
containerRef: this.containerRef,
|
|
74
|
+
elementType: elementType,
|
|
47
75
|
layout: maskLayout,
|
|
48
76
|
value: value,
|
|
49
77
|
onChange: onChange,
|
|
@@ -51,8 +79,7 @@ var withMask = function withMask(type, renderChildren) {
|
|
|
51
79
|
});
|
|
52
80
|
}
|
|
53
81
|
}]);
|
|
54
|
-
|
|
55
|
-
}(_react["default"].Component), (0, _defineProperty2["default"])(_class, "propTypes", {
|
|
82
|
+
}(_react["default"].Component), (0, _defineProperty2["default"])(_WithMask, "propTypes", {
|
|
56
83
|
/**
|
|
57
84
|
* At the start we'll probably work with markup
|
|
58
85
|
*/
|
|
@@ -62,8 +89,9 @@ var withMask = function withMask(type, renderChildren) {
|
|
|
62
89
|
*/
|
|
63
90
|
layout: _propTypes["default"].object,
|
|
64
91
|
value: _propTypes["default"].object,
|
|
65
|
-
onChange: _propTypes["default"].func
|
|
66
|
-
|
|
92
|
+
onChange: _propTypes["default"].func,
|
|
93
|
+
customMarkMarkupComponent: _propTypes["default"].func,
|
|
94
|
+
elementType: _propTypes["default"].string
|
|
95
|
+
}), _WithMask;
|
|
67
96
|
};
|
|
68
|
-
exports.withMask = withMask;
|
|
69
97
|
//# sourceMappingURL=with-mask.js.map
|