@pie-lib/mask-markup 3.0.4-next.0 → 3.0.4-next.102

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 (106) hide show
  1. package/CHANGELOG.json +17 -0
  2. package/CHANGELOG.md +1256 -0
  3. package/LICENSE.md +5 -0
  4. package/lib/choices/choice.js +117 -0
  5. package/lib/choices/choice.js.map +1 -0
  6. package/lib/choices/index.js +103 -0
  7. package/lib/choices/index.js.map +1 -0
  8. package/lib/componentize.js +21 -0
  9. package/lib/componentize.js.map +1 -0
  10. package/lib/components/blank.js +409 -0
  11. package/lib/components/blank.js.map +1 -0
  12. package/lib/components/correct-input.js +94 -0
  13. package/lib/components/correct-input.js.map +1 -0
  14. package/lib/components/dropdown.js +483 -0
  15. package/lib/components/dropdown.js.map +1 -0
  16. package/lib/components/input.js +50 -0
  17. package/lib/components/input.js.map +1 -0
  18. package/lib/constructed-response.js +101 -0
  19. package/lib/constructed-response.js.map +1 -0
  20. package/lib/customizable.js +42 -0
  21. package/lib/customizable.js.map +1 -0
  22. package/lib/drag-in-the-blank.js +254 -0
  23. package/lib/drag-in-the-blank.js.map +1 -0
  24. package/lib/index.js +55 -0
  25. package/lib/index.js.map +1 -0
  26. package/lib/inline-dropdown.js +40 -0
  27. package/lib/inline-dropdown.js.map +1 -0
  28. package/lib/mask.js +198 -0
  29. package/lib/mask.js.map +1 -0
  30. package/lib/serialization.js +261 -0
  31. package/lib/serialization.js.map +1 -0
  32. package/lib/with-mask.js +97 -0
  33. package/lib/with-mask.js.map +1 -0
  34. package/package.json +17 -35
  35. package/src/__tests__/drag-in-the-blank.test.js +111 -0
  36. package/src/__tests__/index.test.js +38 -0
  37. package/src/__tests__/mask.test.js +381 -0
  38. package/src/__tests__/serialization.test.js +54 -0
  39. package/src/__tests__/utils.js +1 -0
  40. package/src/__tests__/with-mask.test.js +76 -0
  41. package/src/choices/__tests__/index.test.js +75 -0
  42. package/src/choices/choice.jsx +97 -0
  43. package/src/choices/index.jsx +64 -0
  44. package/src/componentize.js +13 -0
  45. package/src/components/__tests__/blank.test.js +199 -0
  46. package/src/components/__tests__/correct-input.test.js +90 -0
  47. package/src/components/__tests__/dropdown.test.js +129 -0
  48. package/src/components/__tests__/input.test.js +102 -0
  49. package/src/components/blank.jsx +429 -0
  50. package/src/components/correct-input.jsx +82 -0
  51. package/src/components/dropdown.jsx +423 -0
  52. package/src/components/input.jsx +48 -0
  53. package/src/constructed-response.jsx +87 -0
  54. package/src/customizable.jsx +34 -0
  55. package/src/drag-in-the-blank.jsx +241 -0
  56. package/src/index.js +16 -0
  57. package/src/inline-dropdown.jsx +29 -0
  58. package/src/mask.jsx +172 -0
  59. package/src/serialization.js +260 -0
  60. package/src/with-mask.jsx +75 -0
  61. package/dist/_virtual/_rolldown/runtime.js +0 -4
  62. package/dist/choices/choice.d.ts +0 -24
  63. package/dist/choices/choice.js +0 -77
  64. package/dist/choices/index.d.ts +0 -25
  65. package/dist/choices/index.js +0 -49
  66. package/dist/componentize.d.ts +0 -12
  67. package/dist/componentize.js +0 -4
  68. package/dist/components/blank.d.ts +0 -39
  69. package/dist/components/blank.js +0 -240
  70. package/dist/components/correct-input.d.ts +0 -11
  71. package/dist/components/dropdown.d.ts +0 -37
  72. package/dist/components/dropdown.js +0 -320
  73. package/dist/components/input.d.ts +0 -37
  74. package/dist/constructed-response.d.ts +0 -44
  75. package/dist/constructed-response.js +0 -55
  76. package/dist/customizable.d.ts +0 -43
  77. package/dist/customizable.js +0 -8
  78. package/dist/drag-in-the-blank.d.ts +0 -37
  79. package/dist/drag-in-the-blank.js +0 -164
  80. package/dist/index.d.ts +0 -15
  81. package/dist/index.js +0 -7
  82. package/dist/inline-dropdown.d.ts +0 -44
  83. package/dist/inline-dropdown.js +0 -24
  84. package/dist/mask.d.ts +0 -30
  85. package/dist/mask.js +0 -99
  86. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/index.js +0 -17
  87. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/cssPrefix.js +0 -9
  88. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/cssUnitless.js +0 -26
  89. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/hasOwn.js +0 -11
  90. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/isFunction.js +0 -11
  91. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/isObject.js +0 -11
  92. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/prefixInfo.js +0 -24
  93. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/prefixProperties.js +0 -32
  94. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/prefixer.js +0 -29
  95. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/stringUtils/camelize.js +0 -14
  96. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/stringUtils/hyphenRe.js +0 -8
  97. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/stringUtils/hyphenate.js +0 -12
  98. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/stringUtils/separate.js +0 -11
  99. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/stringUtils/toLowerFirst.js +0 -10
  100. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/stringUtils/toUpperFirst.js +0 -10
  101. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/toStyleObject.js +0 -55
  102. package/dist/node_modules/.bun/to-style@1.3.3/node_modules/to-style/src/toStyleString.js +0 -16
  103. package/dist/serialization.d.ts +0 -34
  104. package/dist/serialization.js +0 -132
  105. package/dist/with-mask.d.ts +0 -55
  106. package/dist/with-mask.js +0 -45
package/lib/mask.js ADDED
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.renderChildren = exports["default"] = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
11
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
12
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
15
+ var _react = _interopRequireDefault(require("react"));
16
+ var _propTypes = _interopRequireDefault(require("prop-types"));
17
+ var _lodashEs = require("lodash-es");
18
+ var _styles = require("@mui/material/styles");
19
+ var _mathRendering = require("@pie-lib/math-rendering");
20
+ var _serialization = require("./serialization");
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;
27
+ return {
28
+ paddingTop: theme.spacing(0.5),
29
+ paddingBottom: theme.spacing(0.5)
30
+ };
31
+ });
32
+ var Spacer = (0, _styles.styled)('span')(function () {
33
+ return {
34
+ display: 'inline-block',
35
+ width: '.75em'
36
+ };
37
+ });
38
+ var restrictWhitespaceTypes = ['tbody', 'tr'];
39
+ var addText = function addText(parentNode, text) {
40
+ var isWhitespace = text.trim() === '';
41
+ var parentType = parentNode && parentNode.type;
42
+ if (isWhitespace && restrictWhitespaceTypes.includes(parentType)) {
43
+ return undefined;
44
+ } else {
45
+ return text;
46
+ }
47
+ };
48
+ var getMark = function getMark(n) {
49
+ var mark = n.leaves.find(function (leave) {
50
+ return (0, _lodashEs.get)(leave, 'marks', []).length;
51
+ });
52
+ if (mark) {
53
+ return mark.marks[0];
54
+ }
55
+ return null;
56
+ };
57
+ var _renderChildren = exports.renderChildren = function renderChildren(layout, value, onChange, rootRenderChildren, parentNode, elementType) {
58
+ if (!value) {
59
+ return null;
60
+ }
61
+ var children = [];
62
+ (layout.nodes || []).forEach(function (n, index) {
63
+ var key = n.type ? "".concat(n.type, "-").concat(index) : "".concat(index);
64
+ if (n.isMath) {
65
+ children.push(/*#__PURE__*/_react["default"].createElement("span", {
66
+ dangerouslySetInnerHTML: {
67
+ __html: "<math displaystyle=\"true\">".concat(n.nodes[0].innerHTML, "</math>")
68
+ }
69
+ }));
70
+ return children;
71
+ }
72
+ if (rootRenderChildren) {
73
+ var c = rootRenderChildren(n, value, onChange);
74
+ if (c) {
75
+ var _n$data;
76
+ var isDndComponent = ((_n$data = n.data) === null || _n$data === void 0 || (_n$data = _n$data.dataset) === null || _n$data === void 0 ? void 0 : _n$data.component) === 'blank';
77
+ if (isDndComponent) {
78
+ children.push(/*#__PURE__*/_react["default"].createElement(Spacer, {
79
+ key: "spacer-".concat(index)
80
+ }));
81
+ }
82
+ children.push(c);
83
+ if (isDndComponent) {
84
+ children.push(/*#__PURE__*/_react["default"].createElement(Spacer, {
85
+ key: "spacer-".concat(index)
86
+ }));
87
+ }
88
+ return;
89
+ }
90
+ }
91
+ if (n.object === 'text') {
92
+ var content = n.leaves.reduce(function (acc, l) {
93
+ var t = l.text;
94
+ var extraText = addText(parentNode, t);
95
+ return extraText ? acc + extraText : acc;
96
+ }, '');
97
+ var mark = getMark(n);
98
+ if (mark) {
99
+ var markKey;
100
+ for (markKey in _serialization.MARK_TAGS) {
101
+ if (_serialization.MARK_TAGS[markKey] === mark.type) {
102
+ var Tag = markKey;
103
+ children.push(/*#__PURE__*/_react["default"].createElement(Tag, {
104
+ key: key
105
+ }, content));
106
+ break;
107
+ }
108
+ }
109
+ } else if (content.length > 0) {
110
+ children.push(content);
111
+ }
112
+ } else {
113
+ var subNodes = _renderChildren(n, value, onChange, rootRenderChildren, n, elementType);
114
+ if (n.type === 'p' || n.type === 'paragraph') {
115
+ children.push(/*#__PURE__*/_react["default"].createElement(Paragraph, {
116
+ key: key
117
+ }, subNodes));
118
+ } else {
119
+ var _Tag = n.type;
120
+ if (n.nodes && n.nodes.length > 0) {
121
+ children.push(/*#__PURE__*/_react["default"].createElement(_Tag, (0, _extends2["default"])({
122
+ key: key
123
+ }, n.data.attributes), subNodes));
124
+ } else {
125
+ children.push(/*#__PURE__*/_react["default"].createElement(_Tag, (0, _extends2["default"])({
126
+ key: key
127
+ }, n.data.attributes)));
128
+ }
129
+ }
130
+ }
131
+ });
132
+ return children;
133
+ };
134
+ var MaskContainer = (0, _styles.styled)('div')(function () {
135
+ return {
136
+ display: 'initial',
137
+ '&:not(.MathJax) table': {
138
+ borderCollapse: 'collapse'
139
+ },
140
+ // align table content to left as per STAR requirement PD-3687
141
+ '&:not(.MathJax) table td, &:not(.MathJax) table th': {
142
+ padding: '8px 12px',
143
+ textAlign: 'left'
144
+ }
145
+ };
146
+ });
147
+
148
+ /**
149
+ * Renders a layout that uses the slate.js Value model structure.
150
+ */
151
+ var Mask = exports["default"] = /*#__PURE__*/function (_React$Component) {
152
+ function Mask(props) {
153
+ var _this;
154
+ (0, _classCallCheck2["default"])(this, Mask);
155
+ _this = _callSuper(this, Mask, [props]);
156
+ (0, _defineProperty2["default"])(_this, "handleChange", function (id, value) {
157
+ var data = _objectSpread(_objectSpread({}, _this.props.value), {}, (0, _defineProperty2["default"])({}, id, value));
158
+ _this.props.onChange(data);
159
+ });
160
+ _this.internalContainerRef = /*#__PURE__*/_react["default"].createRef();
161
+ return _this;
162
+ }
163
+ (0, _inherits2["default"])(Mask, _React$Component);
164
+ return (0, _createClass2["default"])(Mask, [{
165
+ key: "componentDidMount",
166
+ value: function componentDidMount() {
167
+ var containerRef = this.props.containerRef || this.internalContainerRef;
168
+ if (containerRef.current && typeof _mathRendering.renderMath === 'function') {
169
+ (0, _mathRendering.renderMath)(containerRef.current);
170
+ }
171
+ }
172
+ }, {
173
+ key: "render",
174
+ value: function render() {
175
+ var _this$props = this.props,
176
+ value = _this$props.value,
177
+ layout = _this$props.layout,
178
+ elementType = _this$props.elementType,
179
+ containerRef = _this$props.containerRef;
180
+ var children = _renderChildren(layout, value, this.handleChange, this.props.renderChildren, null, elementType);
181
+ var ref = containerRef || this.internalContainerRef;
182
+ return /*#__PURE__*/_react["default"].createElement(MaskContainer, {
183
+ ref: ref
184
+ }, children);
185
+ }
186
+ }]);
187
+ }(_react["default"].Component);
188
+ (0, _defineProperty2["default"])(Mask, "propTypes", {
189
+ renderChildren: _propTypes["default"].func,
190
+ layout: _propTypes["default"].object,
191
+ value: _propTypes["default"].object,
192
+ onChange: _propTypes["default"].func,
193
+ elementType: _propTypes["default"].string,
194
+ containerRef: _propTypes["default"].oneOfType([_propTypes["default"].func, _propTypes["default"].shape({
195
+ current: _propTypes["default"].instanceOf(Element)
196
+ })])
197
+ });
198
+ //# sourceMappingURL=mask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mask.js","names":["_react","_interopRequireDefault","require","_propTypes","_lodashEs","_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","_n$data","isDndComponent","data","dataset","component","object","content","reduce","acc","l","extraText","markKey","MARK_TAGS","Tag","subNodes","_Tag","_extends2","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-es';\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(0.5),\n paddingBottom: theme.spacing(0.5),\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 const isDndComponent = n.data?.dataset?.component === 'blank';\n\n if (isDndComponent) {\n children.push(<Spacer key={`spacer-${index}`} />);\n }\n\n children.push(c);\n\n if (isDndComponent) {\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 }\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([PropTypes.func, PropTypes.shape({ current: PropTypes.instanceOf(Element) })]),\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":[]}
@@ -0,0 +1,261 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.reactAttributes = exports.parseStyleString = exports.deserialize = exports.MARK_TAGS = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
+ var _toStyle = require("to-style");
11
+ var _debug = _interopRequireDefault(require("debug"));
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; }
14
+ var log = (0, _debug["default"])('@pie-lib:mask-markup:serialization');
15
+ var INLINE = ['span'];
16
+ var MARK = ['em', 'strong', 'u'];
17
+ var TEXT_NODE = 3;
18
+ var COMMENT_NODE = 8;
19
+ var ELEMENT_NODE = 1;
20
+ var attr = function attr(el) {
21
+ if (!el.attributes || el.attributes.length <= 0) {
22
+ return undefined;
23
+ }
24
+ var out = {};
25
+ var i;
26
+ for (i = 0; i < el.attributes.length; i++) {
27
+ var a = el.attributes[i];
28
+ out[a.name] = a.value;
29
+ }
30
+ return out;
31
+ };
32
+ var getObject = function getObject(type) {
33
+ if (INLINE.includes(type)) {
34
+ return 'inline';
35
+ } else if (MARK.includes(type)) {
36
+ return 'mark';
37
+ }
38
+ return 'block';
39
+ };
40
+ var parseStyleString = exports.parseStyleString = function parseStyleString(s) {
41
+ var regex = /([\w-]*)\s*:\s*([^;]*)/g;
42
+ var match;
43
+ var result = {};
44
+ while (match = regex.exec(s)) {
45
+ result[match[1]] = match[2].trim();
46
+ }
47
+ return result;
48
+ };
49
+ var reactAttributes = exports.reactAttributes = function reactAttributes(o) {
50
+ return (0, _toStyle.object)(o, {
51
+ camelize: true,
52
+ addUnits: false
53
+ });
54
+ };
55
+ var handleStyles = function handleStyles(el, attribute) {
56
+ var styleString = el.getAttribute(attribute);
57
+ return reactAttributes(parseStyleString(styleString));
58
+ };
59
+ var handleClass = function handleClass(el, acc, attribute) {
60
+ var classNames = el.getAttribute(attribute);
61
+ delete acc["class"];
62
+ return classNames;
63
+ };
64
+ var attributesToMap = function attributesToMap(el) {
65
+ return function (acc, attribute) {
66
+ if (!el.getAttribute) {
67
+ return acc;
68
+ }
69
+ var value = el.getAttribute(attribute);
70
+ if (value) {
71
+ switch (attribute) {
72
+ case 'style':
73
+ acc.style = handleStyles(el, attribute);
74
+ break;
75
+ case 'class':
76
+ acc.className = handleClass(el, acc, attribute);
77
+ break;
78
+ default:
79
+ acc[attribute] = el.getAttribute(attribute);
80
+ break;
81
+ }
82
+ }
83
+ return acc;
84
+ };
85
+ };
86
+ var attributes = ['border', 'class', 'style'];
87
+
88
+ /**
89
+ * Tags to marks.
90
+ *
91
+ * @type {Object}
92
+ */
93
+
94
+ var MARK_TAGS = exports.MARK_TAGS = {
95
+ b: 'bold',
96
+ em: 'italic',
97
+ u: 'underline',
98
+ s: 'strikethrough',
99
+ code: 'code',
100
+ strong: 'strong'
101
+ };
102
+
103
+ /**
104
+ * Recursively process DOM nodes and convert them to Slate JSON format
105
+ */
106
+ var processNode = function processNode(node) {
107
+ var marks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
108
+ // Skip comment nodes
109
+ if (node.nodeType === COMMENT_NODE) {
110
+ return null;
111
+ }
112
+
113
+ // Handle text nodes
114
+ if (node.nodeType === TEXT_NODE) {
115
+ var text = node.textContent;
116
+ var leaf = {
117
+ text: text
118
+ };
119
+ if (marks.length > 0) {
120
+ leaf.marks = marks.map(function (m) {
121
+ return {
122
+ type: m,
123
+ data: undefined
124
+ };
125
+ });
126
+ }
127
+ return {
128
+ object: 'text',
129
+ leaves: [leaf]
130
+ };
131
+ }
132
+
133
+ // Handle element nodes
134
+ if (node.nodeType === ELEMENT_NODE) {
135
+ var type = node.tagName.toLowerCase();
136
+
137
+ // Check if this is a mark tag
138
+ var markType = MARK_TAGS[type];
139
+ if (markType) {
140
+ log('[deserialize] mark: ', markType);
141
+ // Process children with this mark added and return them flattened
142
+ var _childNodes = processNodes(node.childNodes, [].concat((0, _toConsumableArray2["default"])(marks), [markType]));
143
+ // Return an array indicator with the nodes (will be flattened by parent)
144
+ return {
145
+ _flatten: true,
146
+ nodes: _childNodes
147
+ };
148
+ }
149
+
150
+ // Handle math elements specially
151
+ if (type === 'math') {
152
+ return {
153
+ isMath: true,
154
+ nodes: [node]
155
+ };
156
+ }
157
+
158
+ // Process regular elements
159
+ var normalAttrs = attr(node) || {};
160
+ if (type === 'audio' && normalAttrs.controls === '') {
161
+ normalAttrs.controls = true;
162
+ }
163
+ var allAttrs = attributes.reduce(attributesToMap(node), _objectSpread({}, normalAttrs));
164
+ var object = getObject(type);
165
+ var childNodes = processNodes(node.childNodes, marks);
166
+ return {
167
+ object: object,
168
+ type: type,
169
+ data: {
170
+ dataset: _objectSpread({}, node.dataset),
171
+ attributes: _objectSpread({}, allAttrs)
172
+ },
173
+ nodes: childNodes
174
+ };
175
+ }
176
+ return null;
177
+ };
178
+
179
+ /**
180
+ * Process a NodeList and convert to array of Slate nodes
181
+ */
182
+ var processNodes = function processNodes(nodeList) {
183
+ var marks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
184
+ var nodes = [];
185
+ for (var i = 0; i < nodeList.length; i++) {
186
+ var result = processNode(nodeList[i], marks);
187
+ if (result !== null) {
188
+ // Handle flattening for mark nodes
189
+ if (result._flatten && result.nodes) {
190
+ nodes.push.apply(nodes, (0, _toConsumableArray2["default"])(result.nodes));
191
+ } else {
192
+ nodes.push(result);
193
+ }
194
+ }
195
+ }
196
+ return nodes;
197
+ };
198
+
199
+ /**
200
+ * Deserialize HTML string to Slate JSON format
201
+ */
202
+ var deserialize = exports.deserialize = function deserialize(htmlString) {
203
+ // Handle empty or whitespace-only strings
204
+ if (!htmlString || !htmlString.trim()) {
205
+ return {
206
+ object: 'value',
207
+ document: {
208
+ object: 'document',
209
+ data: {},
210
+ nodes: [{
211
+ object: 'block',
212
+ type: 'span',
213
+ data: {},
214
+ isVoid: false,
215
+ nodes: []
216
+ }]
217
+ }
218
+ };
219
+ }
220
+
221
+ // Use DOMParser to parse the HTML
222
+ var parser = new DOMParser();
223
+ var doc = parser.parseFromString(htmlString, 'text/html');
224
+
225
+ // Process all nodes in the body
226
+ var nodes = processNodes(doc.body.childNodes);
227
+
228
+ // If we only have text nodes (no block elements), wrap in default span block
229
+ var hasBlockElements = nodes.some(function (node) {
230
+ return node.object === 'block' || node.object === 'inline';
231
+ });
232
+ if (!hasBlockElements && nodes.length > 0) {
233
+ nodes = [{
234
+ object: 'block',
235
+ type: 'span',
236
+ data: {},
237
+ isVoid: false,
238
+ nodes: nodes
239
+ }];
240
+ }
241
+
242
+ // If no nodes were produced, add a default span block
243
+ if (nodes.length === 0) {
244
+ nodes = [{
245
+ object: 'block',
246
+ type: 'span',
247
+ data: {},
248
+ isVoid: false,
249
+ nodes: []
250
+ }];
251
+ }
252
+ return {
253
+ object: 'value',
254
+ document: {
255
+ object: 'document',
256
+ data: {},
257
+ nodes: nodes
258
+ }
259
+ };
260
+ };
261
+ //# sourceMappingURL=serialization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.js","names":["_toStyle","require","_debug","_interopRequireDefault","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","ELEMENT_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","processNode","node","marks","nodeType","text","textContent","leaf","map","m","data","object","leaves","tagName","toLowerCase","markType","childNodes","processNodes","concat","_toConsumableArray2","_flatten","nodes","isMath","normalAttrs","controls","allAttrs","reduce","dataset","nodeList","deserialize","htmlString","document","isVoid","parser","DOMParser","doc","parseFromString","body","hasBlockElements","some"],"sources":["../src/serialization.js"],"sourcesContent":["import { 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;\nconst ELEMENT_NODE = 1;\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\n/**\n * Recursively process DOM nodes and convert them to Slate JSON format\n */\nconst processNode = (node, marks = []) => {\n // Skip comment nodes\n if (node.nodeType === COMMENT_NODE) {\n return null;\n }\n\n // Handle text nodes\n if (node.nodeType === TEXT_NODE) {\n const text = node.textContent;\n const leaf = { text };\n\n if (marks.length > 0) {\n leaf.marks = marks.map((m) => ({ type: m, data: undefined }));\n }\n\n return {\n object: 'text',\n leaves: [leaf],\n };\n }\n\n // Handle element nodes\n if (node.nodeType === ELEMENT_NODE) {\n const type = node.tagName.toLowerCase();\n\n // Check if this is a mark tag\n const markType = MARK_TAGS[type];\n if (markType) {\n log('[deserialize] mark: ', markType);\n // Process children with this mark added and return them flattened\n const childNodes = processNodes(node.childNodes, [...marks, markType]);\n // Return an array indicator with the nodes (will be flattened by parent)\n return { _flatten: true, nodes: childNodes };\n }\n\n // Handle math elements specially\n if (type === 'math') {\n return {\n isMath: true,\n nodes: [node],\n };\n }\n\n // Process regular elements\n const normalAttrs = attr(node) || {};\n\n if (type === 'audio' && normalAttrs.controls === '') {\n normalAttrs.controls = true;\n }\n\n const allAttrs = attributes.reduce(attributesToMap(node), { ...normalAttrs });\n const object = getObject(type);\n\n const childNodes = processNodes(node.childNodes, marks);\n\n return {\n object,\n type,\n data: { dataset: { ...node.dataset }, attributes: { ...allAttrs } },\n nodes: childNodes,\n };\n }\n\n return null;\n};\n\n/**\n * Process a NodeList and convert to array of Slate nodes\n */\nconst processNodes = (nodeList, marks = []) => {\n const nodes = [];\n for (let i = 0; i < nodeList.length; i++) {\n const result = processNode(nodeList[i], marks);\n if (result !== null) {\n // Handle flattening for mark nodes\n if (result._flatten && result.nodes) {\n nodes.push(...result.nodes);\n } else {\n nodes.push(result);\n }\n }\n }\n return nodes;\n};\n\n/**\n * Deserialize HTML string to Slate JSON format\n */\nexport const deserialize = (htmlString) => {\n // Handle empty or whitespace-only strings\n if (!htmlString || !htmlString.trim()) {\n return {\n object: 'value',\n document: {\n object: 'document',\n data: {},\n nodes: [\n {\n object: 'block',\n type: 'span',\n data: {},\n isVoid: false,\n nodes: [],\n },\n ],\n },\n };\n }\n\n // Use DOMParser to parse the HTML\n const parser = new DOMParser();\n const doc = parser.parseFromString(htmlString, 'text/html');\n\n // Process all nodes in the body\n let nodes = processNodes(doc.body.childNodes);\n\n // If we only have text nodes (no block elements), wrap in default span block\n const hasBlockElements = nodes.some((node) => node.object === 'block' || node.object === 'inline');\n\n if (!hasBlockElements && nodes.length > 0) {\n nodes = [\n {\n object: 'block',\n type: 'span',\n data: {},\n isVoid: false,\n nodes: nodes,\n },\n ];\n }\n\n // If no nodes were produced, add a default span block\n if (nodes.length === 0) {\n nodes = [\n {\n object: 'block',\n type: 'span',\n data: {},\n isVoid: false,\n nodes: [],\n },\n ];\n }\n\n return {\n object: 'value',\n document: {\n object: 'document',\n data: {},\n nodes,\n },\n };\n};\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.withMask = exports.buildLayoutFromMarkup = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
11
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
12
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
+ var _react = _interopRequireDefault(require("react"));
15
+ var _propTypes = _interopRequireDefault(require("prop-types"));
16
+ var _mask = _interopRequireDefault(require("./mask"));
17
+ var _componentize2 = _interopRequireDefault(require("./componentize"));
18
+ var _serialization = require("./serialization");
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
+ var _componentize = (0, _componentize2["default"])(markup, type),
23
+ processed = _componentize.markup;
24
+ var value = (0, _serialization.deserialize)(processed);
25
+ return value.document;
26
+ };
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;
32
+ (0, _classCallCheck2["default"])(this, WithMask);
33
+ _this = _callSuper(this, WithMask, [props]);
34
+ _this.containerRef = /*#__PURE__*/_react["default"].createRef();
35
+ return _this;
36
+ }
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
+ }, {
63
+ key: "render",
64
+ value: function render() {
65
+ var _this$props = this.props,
66
+ markup = _this$props.markup,
67
+ layout = _this$props.layout,
68
+ value = _this$props.value,
69
+ onChange = _this$props.onChange,
70
+ elementType = _this$props.elementType;
71
+ var maskLayout = layout ? layout : buildLayoutFromMarkup(markup, type);
72
+ return /*#__PURE__*/_react["default"].createElement(_mask["default"], {
73
+ containerRef: this.containerRef,
74
+ elementType: elementType,
75
+ layout: maskLayout,
76
+ value: value,
77
+ onChange: onChange,
78
+ renderChildren: renderChildren(this.props)
79
+ });
80
+ }
81
+ }]);
82
+ }(_react["default"].Component), (0, _defineProperty2["default"])(_WithMask, "propTypes", {
83
+ /**
84
+ * At the start we'll probably work with markup
85
+ */
86
+ markup: _propTypes["default"].string,
87
+ /**
88
+ * Once we start authoring, it may make sense for use to us layout, which will be a simple js object that maps to `slate.Value`.
89
+ */
90
+ layout: _propTypes["default"].object,
91
+ value: _propTypes["default"].object,
92
+ onChange: _propTypes["default"].func,
93
+ customMarkMarkupComponent: _propTypes["default"].func,
94
+ elementType: _propTypes["default"].string
95
+ }), _WithMask;
96
+ };
97
+ //# sourceMappingURL=with-mask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"with-mask.js","names":["_react","_interopRequireDefault","require","_propTypes","_mask","_componentize2","_serialization","_callSuper","t","o","e","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","Reflect","construct","constructor","apply","Boolean","prototype","valueOf","call","buildLayoutFromMarkup","exports","markup","type","_componentize","componentize","processed","value","deserialize","document","withMask","renderChildren","_WithMask","_React$Component","WithMask","props","_this","_classCallCheck2","containerRef","React","createRef","_inherits2","_createClass2","key","componentDidUpdate","prevProps","domNode","current","mathElements","querySelectorAll","forEach","el","mjxContainer","querySelector","removeChild","latexCode","getAttribute","innerHTML","removeAttribute","render","_this$props","layout","onChange","elementType","maskLayout","createElement","Component","_defineProperty2","PropTypes","string","object","func","customMarkMarkupComponent"],"sources":["../src/with-mask.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport Mask from './mask';\nimport componentize from './componentize';\nimport { deserialize } from './serialization';\n\nexport const buildLayoutFromMarkup = (markup, type) => {\n const { markup: processed } = componentize(markup, type);\n const value = deserialize(processed);\n return value.document;\n};\n\nexport const withMask = (type, renderChildren) => {\n return class WithMask extends React.Component {\n static propTypes = {\n /**\n * At the start we'll probably work with markup\n */\n markup: PropTypes.string,\n /**\n * Once we start authoring, it may make sense for use to us layout, which will be a simple js object that maps to `slate.Value`.\n */\n layout: PropTypes.object,\n value: PropTypes.object,\n onChange: PropTypes.func,\n customMarkMarkupComponent: PropTypes.func,\n elementType: PropTypes.string,\n };\n\n constructor(props) {\n super(props);\n this.containerRef = React.createRef();\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.markup !== prevProps.markup) {\n const domNode = this.containerRef.current;\n const mathElements = domNode && domNode.querySelectorAll('[data-latex][data-math-handled=\"true\"]');\n\n // Clean up for fresh MathJax processing\n (mathElements || []).forEach((el) => {\n // Remove the MathJax container to allow for clean updates\n const mjxContainer = el.querySelector('mjx-container');\n\n if (mjxContainer) {\n el.removeChild(mjxContainer);\n }\n\n // Update the innerHTML to match the raw LaTeX data, ensuring it is reprocessed correctly\n const latexCode = el.getAttribute('data-raw');\n el.innerHTML = latexCode;\n\n // Remove the attribute to signal that MathJax should reprocess this element\n el.removeAttribute('data-math-handled');\n });\n }\n }\n\n render() {\n const { markup, layout, value, onChange, elementType } = this.props;\n\n const maskLayout = layout ? layout : buildLayoutFromMarkup(markup, type);\n return (\n <Mask\n containerRef={this.containerRef}\n elementType={elementType}\n layout={maskLayout}\n value={value}\n onChange={onChange}\n renderChildren={renderChildren(this.props)}\n />\n );\n }\n };\n};\n"],"mappings":"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","ignoreList":[]}