@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.
Files changed (69) hide show
  1. package/CHANGELOG.json +1 -871
  2. package/CHANGELOG.md +296 -2
  3. package/LICENSE.md +5 -0
  4. package/NEXT.CHANGELOG.json +1 -0
  5. package/lib/choices/choice.js +99 -118
  6. package/lib/choices/choice.js.map +1 -1
  7. package/lib/choices/index.js +23 -19
  8. package/lib/choices/index.js.map +1 -1
  9. package/lib/componentize.js +1 -2
  10. package/lib/componentize.js.map +1 -1
  11. package/lib/components/blank.js +315 -221
  12. package/lib/components/blank.js.map +1 -1
  13. package/lib/components/correct-input.js +39 -42
  14. package/lib/components/correct-input.js.map +1 -1
  15. package/lib/components/dropdown.js +393 -124
  16. package/lib/components/dropdown.js.map +1 -1
  17. package/lib/components/input.js +1 -2
  18. package/lib/components/input.js.map +1 -1
  19. package/lib/constructed-response.js +82 -26
  20. package/lib/constructed-response.js.map +1 -1
  21. package/lib/customizable.js +44 -0
  22. package/lib/customizable.js.map +1 -0
  23. package/lib/drag-in-the-blank.js +154 -61
  24. package/lib/drag-in-the-blank.js.map +1 -1
  25. package/lib/index.js +7 -0
  26. package/lib/index.js.map +1 -1
  27. package/lib/inline-dropdown.js +4 -3
  28. package/lib/inline-dropdown.js.map +1 -1
  29. package/lib/mask.js +89 -56
  30. package/lib/mask.js.map +1 -1
  31. package/lib/serialization.js +30 -42
  32. package/lib/serialization.js.map +1 -1
  33. package/lib/with-mask.js +48 -20
  34. package/lib/with-mask.js.map +1 -1
  35. package/package.json +26 -15
  36. package/src/__tests__/drag-in-the-blank.test.js +111 -0
  37. package/src/__tests__/index.test.js +39 -0
  38. package/src/__tests__/mask.test.js +187 -0
  39. package/src/__tests__/serialization.test.js +54 -0
  40. package/src/__tests__/utils.js +1 -0
  41. package/src/__tests__/with-mask.test.js +76 -0
  42. package/src/choices/__tests__/index.test.js +75 -0
  43. package/src/choices/choice.jsx +83 -96
  44. package/src/choices/index.jsx +11 -5
  45. package/src/components/__tests__/blank.test.js +138 -0
  46. package/src/components/__tests__/correct-input.test.js +90 -0
  47. package/src/components/__tests__/dropdown.test.js +93 -0
  48. package/src/components/__tests__/input.test.js +102 -0
  49. package/src/components/blank.jsx +316 -204
  50. package/src/components/correct-input.jsx +37 -38
  51. package/src/components/dropdown.jsx +371 -125
  52. package/src/constructed-response.jsx +80 -18
  53. package/src/customizable.jsx +35 -0
  54. package/src/drag-in-the-blank.jsx +152 -40
  55. package/src/index.js +10 -1
  56. package/src/inline-dropdown.jsx +2 -0
  57. package/src/mask.jsx +71 -25
  58. package/src/serialization.js +22 -34
  59. package/src/with-mask.jsx +43 -3
  60. package/README.md +0 -14
  61. package/lib/new-serialization.js +0 -267
  62. package/lib/new-serialization.js.map +0 -1
  63. package/lib/parse-html.js +0 -17
  64. package/lib/parse-html.js.map +0 -1
  65. package/lib/test-serializer.js +0 -164
  66. package/lib/test-serializer.js.map +0 -1
  67. package/src/new-serialization.jsx +0 -291
  68. package/src/parse-html.js +0 -8
  69. 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 _slate = require("slate");
19
- var _styles = require("@material-ui/core/styles");
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(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; }
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; }
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); }; }
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; } }
25
- var Paragraph = (0, _styles.withStyles)(function (theme) {
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
- para: {
28
- paddingTop: 2 * theme.spacing.unit,
29
- paddingBottom: 2 * theme.spacing.unit
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 markTags = Object.values(_serialization.MARK_TAGS);
49
- return markTags.includes(n.type);
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.children || []).forEach(function (n, index) {
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( /*#__PURE__*/_react["default"].createElement("span", {
65
+ children.push(/*#__PURE__*/_react["default"].createElement("span", {
60
66
  dangerouslySetInnerHTML: {
61
- __html: "<math displaystyle=\"true\">".concat(n.children[0].innerHTML, "</math>")
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 (_slate.Text.isText(n)) {
74
- var content = n.text;
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( /*#__PURE__*/_react["default"].createElement(Tag, {
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 = renderChildren(n, value, onChange, rootRenderChildren, n);
111
+ var subNodes = _renderChildren(n, value, onChange, rootRenderChildren, n, elementType);
92
112
  if (n.type === 'p' || n.type === 'paragraph') {
93
- children.push( /*#__PURE__*/_react["default"].createElement(Paragraph, {
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 (_Tag !== 'source' && n.children && n.children.length > 0) {
99
- children.push( /*#__PURE__*/_react["default"].createElement(_Tag, (0, _extends2["default"])({
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( /*#__PURE__*/_react["default"].createElement(_Tag, (0, _extends2["default"])({
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
- exports.renderChildren = renderChildren;
113
- var MaskContainer = (0, _styles.withStyles)(function () {
132
+ var MaskContainer = (0, _styles.styled)('div')(function () {
114
133
  return {
115
- main: {
116
- display: 'initial'
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
- (0, _inherits2["default"])(Mask, _React$Component);
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
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
135
- args[_key] = arguments[_key];
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, _createClass2["default"])(Mask, [{
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
- var children = renderChildren(layout, value, this.handleChange, this.props.renderChildren);
151
- return /*#__PURE__*/_react["default"].createElement(MaskContainer, null, children);
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":[]}
@@ -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 _react = _interopRequireDefault(require("react"));
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 _testSerializer = _interopRequireDefault(require("./test-serializer"));
14
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
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.parseStyleString = parseStyleString;
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 (0, _slateHyperscript.jsx)('text', {
114
- type: mark
115
- }, next(el.childNodes));
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 (0, _slateHyperscript.jsx)('text', el.textContent);
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 (0, _slateHyperscript.jsx)('element', {
137
- type: 'mathml',
138
- data: {
139
- html: el.innerHTML
140
- }
141
- });
142
-
143
- // return {
144
- // isMath: true,
145
- // nodes: [el]
146
- // };
137
+ return {
138
+ isMath: true,
139
+ nodes: [el]
140
+ };
147
141
  }
148
-
149
- if (el.tagName.toLowerCase() === 'br') {
150
- return (0, _slateHyperscript.jsx)('element', {
151
- type: type,
152
- data: {}
153
- });
154
- }
155
- return (0, _slateHyperscript.jsx)('element', {
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
- }, next(el.childNodes));
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 _testSerializer["default"]({
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
@@ -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":"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","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 _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); }; }
20
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
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.buildLayoutFromMarkup = buildLayoutFromMarkup;
28
- var withMask = function withMask(type, renderChildren) {
29
- var _class;
30
- return _class = /*#__PURE__*/function (_React$Component) {
31
- (0, _inherits2["default"])(WithMask, _React$Component);
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
- return _super.apply(this, arguments);
33
+ _this = _callSuper(this, WithMask, [props]);
34
+ _this.containerRef = /*#__PURE__*/_react["default"].createRef();
35
+ return _this;
36
36
  }
37
- (0, _createClass2["default"])(WithMask, [{
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
- return WithMask;
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
- }), _class;
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