@pie-lib/mask-markup 1.13.34-next.0 → 2.0.0-beta.2

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