@pie-lib/editable-html 10.0.0-beta.4 → 10.0.0-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +255 -152
- package/lib/components.js +15 -39
- package/lib/components.js.map +1 -1
- package/lib/editor.js +200 -356
- package/lib/editor.js.map +1 -1
- package/lib/index.js +25 -49
- package/lib/index.js.map +1 -1
- package/lib/new-serialization.js +31 -71
- package/lib/new-serialization.js.map +1 -1
- package/lib/parse-html.js +7 -6
- package/lib/parse-html.js.map +1 -1
- package/lib/plugins/characters/custom-popper.js +3 -13
- package/lib/plugins/characters/custom-popper.js.map +1 -1
- package/lib/plugins/characters/index.js +20 -59
- package/lib/plugins/characters/index.js.map +1 -1
- package/lib/plugins/characters/utils.js +1 -1
- package/lib/plugins/characters/utils.js.map +1 -1
- package/lib/plugins/hotKeys/index.js +9 -16
- package/lib/plugins/hotKeys/index.js.map +1 -1
- package/lib/plugins/image/alt-dialog.js +6 -27
- package/lib/plugins/image/alt-dialog.js.map +1 -1
- package/lib/plugins/image/component.js +42 -99
- package/lib/plugins/image/component.js.map +1 -1
- package/lib/plugins/image/image-toolbar.js +14 -50
- package/lib/plugins/image/image-toolbar.js.map +1 -1
- package/lib/plugins/image/index.js +16 -59
- package/lib/plugins/image/index.js.map +1 -1
- package/lib/plugins/image/insert-image-handler.js +13 -25
- package/lib/plugins/image/insert-image-handler.js.map +1 -1
- package/lib/plugins/index.js +6 -36
- package/lib/plugins/index.js.map +1 -1
- package/lib/plugins/list/index.js +11 -46
- package/lib/plugins/list/index.js.map +1 -1
- package/lib/plugins/math/index.js +89 -93
- package/lib/plugins/math/index.js.map +1 -1
- package/lib/plugins/media/index.js +32 -109
- package/lib/plugins/media/index.js.map +1 -1
- package/lib/plugins/media/media-dialog.js +107 -195
- package/lib/plugins/media/media-dialog.js.map +1 -1
- package/lib/plugins/media/media-toolbar.js +7 -27
- package/lib/plugins/media/media-toolbar.js.map +1 -1
- package/lib/plugins/media/media-wrapper.js +9 -14
- package/lib/plugins/media/media-wrapper.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +13 -53
- package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/index.js +6 -20
- package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
- package/lib/plugins/respArea/explicit-constructed-response/index.js +5 -10
- package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
- package/lib/plugins/respArea/icons/index.js +16 -31
- package/lib/plugins/respArea/icons/index.js.map +1 -1
- package/lib/plugins/respArea/index.js +7 -54
- package/lib/plugins/respArea/index.js.map +1 -1
- package/lib/plugins/respArea/inline-dropdown/index.js +3 -10
- package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
- package/lib/plugins/respArea/utils.js +6 -21
- package/lib/plugins/respArea/utils.js.map +1 -1
- package/lib/plugins/table/icons/index.js +1 -8
- package/lib/plugins/table/icons/index.js.map +1 -1
- package/lib/plugins/table/index.js +54 -187
- package/lib/plugins/table/index.js.map +1 -1
- package/lib/plugins/table/table-toolbar.js +12 -44
- package/lib/plugins/table/table-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/default-toolbar.js +17 -46
- package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/done-button.js +2 -10
- package/lib/plugins/toolbar/done-button.js.map +1 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js +134 -144
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/index.js +2 -6
- package/lib/plugins/toolbar/index.js.map +1 -1
- package/lib/plugins/toolbar/toolbar-buttons.js +9 -40
- package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
- package/lib/plugins/toolbar/toolbar.js +29 -83
- package/lib/plugins/toolbar/toolbar.js.map +1 -1
- package/lib/plugins/utils.js +8 -30
- package/lib/plugins/utils.js.map +1 -1
- package/lib/serialization.js +11 -69
- package/lib/serialization.js.map +1 -1
- package/lib/test-serializer.js +5 -56
- package/lib/test-serializer.js.map +1 -1
- package/lib/theme.js +1 -1
- package/lib/theme.js.map +1 -1
- package/package.json +7 -7
- package/playground/image/data.js +20 -20
- package/playground/image/index.html +20 -22
- package/playground/image/index.jsx +10 -12
- package/playground/index.html +23 -25
- package/playground/mathquill/index.html +20 -23
- package/playground/mathquill/index.jsx +22 -18
- package/playground/prod-test/index.html +20 -24
- package/playground/prod-test/index.jsx +3 -5
- package/playground/schema-override/data.js +10 -10
- package/playground/schema-override/image-plugin.jsx +4 -3
- package/playground/schema-override/index.html +19 -21
- package/playground/schema-override/index.jsx +14 -13
- package/playground/serialization/data.js +10 -10
- package/playground/serialization/image-plugin.jsx +4 -3
- package/playground/serialization/index.html +20 -22
- package/playground/table-examples.html +8 -5
- package/playground/webpack.config.js +10 -10
- package/src/editor.jsx +108 -104
- package/src/index.jsx +20 -13
- package/src/new-serialization.jsx +30 -11
- package/src/parse-html.js +1 -1
- package/src/plugins/characters/custom-popper.js +7 -7
- package/src/plugins/characters/index.jsx +34 -23
- package/src/plugins/characters/utils.js +81 -81
- package/src/plugins/image/alt-dialog.jsx +5 -4
- package/src/plugins/image/component.jsx +47 -44
- package/src/plugins/image/image-toolbar.jsx +19 -27
- package/src/plugins/image/index.jsx +24 -18
- package/src/plugins/image/insert-image-handler.js +9 -0
- package/src/plugins/index.jsx +7 -9
- package/src/plugins/list/index.jsx +7 -7
- package/src/plugins/math/index.jsx +71 -28
- package/src/plugins/media/index.jsx +7 -7
- package/src/plugins/media/media-dialog.js +63 -89
- package/src/plugins/media/media-toolbar.jsx +8 -8
- package/src/plugins/media/media-wrapper.jsx +8 -5
- package/src/plugins/respArea/drag-in-the-blank/choice.jsx +19 -21
- package/src/plugins/respArea/drag-in-the-blank/index.jsx +4 -4
- package/src/plugins/respArea/explicit-constructed-response/index.jsx +5 -4
- package/src/plugins/respArea/icons/index.jsx +14 -11
- package/src/plugins/respArea/index.jsx +9 -15
- package/src/plugins/respArea/inline-dropdown/index.jsx +6 -6
- package/src/plugins/respArea/utils.jsx +7 -3
- package/src/plugins/table/icons/index.jsx +11 -17
- package/src/plugins/table/index.jsx +14 -10
- package/src/plugins/table/table-toolbar.jsx +6 -6
- package/src/plugins/toolbar/default-toolbar.jsx +9 -9
- package/src/plugins/toolbar/done-button.jsx +4 -4
- package/src/plugins/toolbar/editor-and-toolbar.jsx +36 -33
- package/src/plugins/toolbar/index.jsx +3 -2
- package/src/plugins/toolbar/toolbar-buttons.jsx +11 -11
- package/src/plugins/toolbar/toolbar.jsx +6 -1
- package/src/plugins/utils.js +2 -2
- package/src/serialization.jsx +34 -32
- package/src/test-serializer.js +2 -9
- package/lib/old-serialization.js +0 -330
- package/lib/slate-editor.js +0 -302
- package/src/test-serializer.js.rej +0 -20
- package/yarn-error.log +0 -18318
|
@@ -1,47 +1,29 @@
|
|
|
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.CustomToolbarComp = void 0;
|
|
9
8
|
exports["default"] = MathPlugin;
|
|
10
9
|
exports.serialization = exports.inlineMath = void 0;
|
|
11
|
-
|
|
12
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
-
|
|
14
11
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
-
|
|
16
12
|
var _react = _interopRequireDefault(require("react"));
|
|
17
|
-
|
|
18
13
|
var _slate = require("slate");
|
|
19
|
-
|
|
20
14
|
var _slateReact = require("slate-react");
|
|
21
|
-
|
|
22
15
|
var _slateHyperscript = require("slate-hyperscript");
|
|
23
|
-
|
|
24
16
|
var _Functions = _interopRequireDefault(require("@material-ui/icons/Functions"));
|
|
25
|
-
|
|
26
17
|
var _mathToolbar = require("@pie-lib/math-toolbar");
|
|
27
|
-
|
|
28
18
|
var _mathRendering = require("@pie-lib/math-rendering");
|
|
29
|
-
|
|
30
19
|
var _debug = _interopRequireDefault(require("debug"));
|
|
31
|
-
|
|
32
20
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
33
|
-
|
|
34
21
|
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
35
|
-
|
|
36
22
|
var _newSerialization = require("../../new-serialization");
|
|
37
|
-
|
|
38
23
|
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; }
|
|
39
|
-
|
|
40
24
|
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; }
|
|
41
|
-
|
|
42
25
|
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:math');
|
|
43
26
|
var TEXT_NODE = 3;
|
|
44
|
-
|
|
45
27
|
function generateAdditionalKeys() {
|
|
46
28
|
var keyData = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
47
29
|
return keyData.map(function (key) {
|
|
@@ -54,31 +36,27 @@ function generateAdditionalKeys() {
|
|
|
54
36
|
});
|
|
55
37
|
}
|
|
56
38
|
|
|
39
|
+
// eslint-disable-next-line react/display-name
|
|
57
40
|
var CustomToolbarComp = /*#__PURE__*/_react["default"].memo(function (props) {
|
|
58
41
|
var node = props.node,
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
42
|
+
nodePath = props.nodePath,
|
|
43
|
+
onFocus = props.onFocus,
|
|
44
|
+
onBlur = props.onBlur,
|
|
45
|
+
onClick = props.onClick,
|
|
46
|
+
editor = props.editor;
|
|
65
47
|
var _ref = props || {},
|
|
66
|
-
|
|
67
|
-
|
|
48
|
+
pluginProps = _ref.pluginProps;
|
|
68
49
|
var _ref2 = pluginProps || {},
|
|
69
|
-
|
|
70
|
-
|
|
50
|
+
math = _ref2.math;
|
|
71
51
|
var _ref3 = math || {},
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
52
|
+
keypadMode = _ref3.keypadMode,
|
|
53
|
+
customKeys = _ref3.customKeys,
|
|
54
|
+
_ref3$controlledKeypa = _ref3.controlledKeypadMode,
|
|
55
|
+
controlledKeypadMode = _ref3$controlledKeypa === void 0 ? true : _ref3$controlledKeypa;
|
|
77
56
|
var onDone = function onDone(latex) {
|
|
78
57
|
var update = _objectSpread(_objectSpread({}, node.data), {}, {
|
|
79
58
|
latex: latex
|
|
80
59
|
});
|
|
81
|
-
|
|
82
60
|
editor.apply({
|
|
83
61
|
type: 'set_node',
|
|
84
62
|
path: nodePath,
|
|
@@ -89,15 +67,12 @@ var CustomToolbarComp = /*#__PURE__*/_react["default"].memo(function (props) {
|
|
|
89
67
|
data: update
|
|
90
68
|
}
|
|
91
69
|
});
|
|
92
|
-
|
|
93
70
|
_slateReact.ReactEditor.focus(editor);
|
|
94
|
-
|
|
95
71
|
_slate.Transforms.move(editor, {
|
|
96
72
|
distance: 1,
|
|
97
73
|
unit: 'offset'
|
|
98
74
|
});
|
|
99
75
|
};
|
|
100
|
-
|
|
101
76
|
var latex = node.data.latex;
|
|
102
77
|
return /*#__PURE__*/_react["default"].createElement(_mathToolbar.MathToolbar, {
|
|
103
78
|
autoFocus: true,
|
|
@@ -112,25 +87,24 @@ var CustomToolbarComp = /*#__PURE__*/_react["default"].memo(function (props) {
|
|
|
112
87
|
});
|
|
113
88
|
}, function (prev, next) {
|
|
114
89
|
var node = prev.node,
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
90
|
+
_prev$pluginProps = prev.pluginProps,
|
|
91
|
+
_prev$pluginProps2 = _prev$pluginProps === void 0 ? {} : _prev$pluginProps,
|
|
92
|
+
_prev$pluginProps2$ma = _prev$pluginProps2.math,
|
|
93
|
+
_prev$pluginProps2$ma2 = _prev$pluginProps2$ma === void 0 ? {} : _prev$pluginProps2$ma,
|
|
94
|
+
keypadMode = _prev$pluginProps2$ma2.keypadMode,
|
|
95
|
+
controlledKeypadMode = _prev$pluginProps2$ma2.controlledKeypadMode;
|
|
121
96
|
var nodeNext = next.node,
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
97
|
+
_next$pluginProps = next.pluginProps,
|
|
98
|
+
_next$pluginProps2 = _next$pluginProps === void 0 ? {} : _next$pluginProps,
|
|
99
|
+
_next$pluginProps2$ma = _next$pluginProps2.math,
|
|
100
|
+
_next$pluginProps2$ma2 = _next$pluginProps2$ma === void 0 ? {} : _next$pluginProps2$ma,
|
|
101
|
+
keypadModeNext = _next$pluginProps2$ma2.keypadMode,
|
|
102
|
+
controlledKeypadModeNext = _next$pluginProps2$ma2.controlledKeypadMode;
|
|
128
103
|
var keypadModeChanged = keypadMode !== keypadModeNext;
|
|
129
104
|
var controlledKeypadModeChanged = controlledKeypadMode !== controlledKeypadModeNext;
|
|
130
105
|
var equal = (0, _isEqual["default"])(node, nodeNext);
|
|
131
106
|
return equal && !keypadModeChanged && !controlledKeypadModeChanged;
|
|
132
107
|
});
|
|
133
|
-
|
|
134
108
|
exports.CustomToolbarComp = CustomToolbarComp;
|
|
135
109
|
CustomToolbarComp.propTypes = {
|
|
136
110
|
editor: _propTypes["default"].object,
|
|
@@ -150,8 +124,11 @@ CustomToolbarComp.propTypes = {
|
|
|
150
124
|
onBlur: _propTypes["default"].func
|
|
151
125
|
};
|
|
152
126
|
var mathTypes = ['math', 'mathml'];
|
|
153
|
-
|
|
154
|
-
|
|
127
|
+
function MathPlugin(opts) {
|
|
128
|
+
MathPlugin.mathMlOptions = {
|
|
129
|
+
mmlOutput: opts.mmlOutput,
|
|
130
|
+
mmlEditing: opts.mmlEditing
|
|
131
|
+
};
|
|
155
132
|
return {
|
|
156
133
|
name: 'math',
|
|
157
134
|
toolbar: {
|
|
@@ -161,7 +138,6 @@ function MathPlugin() {
|
|
|
161
138
|
var math = inlineMath();
|
|
162
139
|
editor.insertNode(math);
|
|
163
140
|
},
|
|
164
|
-
|
|
165
141
|
/**
|
|
166
142
|
* Return a react component function
|
|
167
143
|
* @param node {Slate.Node}
|
|
@@ -173,16 +149,13 @@ function MathPlugin() {
|
|
|
173
149
|
},
|
|
174
150
|
rules: function rules(editor) {
|
|
175
151
|
var isVoid = editor.isVoid,
|
|
176
|
-
|
|
177
|
-
|
|
152
|
+
isInline = editor.isInline;
|
|
178
153
|
editor.isVoid = function (element) {
|
|
179
154
|
return mathTypes.includes(element.type) ? true : isVoid(element);
|
|
180
155
|
};
|
|
181
|
-
|
|
182
156
|
editor.isInline = function (element) {
|
|
183
157
|
return mathTypes.includes(element.type) ? true : isInline(element);
|
|
184
158
|
};
|
|
185
|
-
|
|
186
159
|
return editor;
|
|
187
160
|
},
|
|
188
161
|
supports: function supports(node) {
|
|
@@ -208,11 +181,10 @@ function MathPlugin() {
|
|
|
208
181
|
log('[renderNode]: data:', props.node.data);
|
|
209
182
|
return /*#__PURE__*/_react["default"].createElement(_mathToolbar.MathPreview, props);
|
|
210
183
|
}
|
|
184
|
+
|
|
211
185
|
/**
|
|
212
186
|
* Here for rendering mathml content
|
|
213
187
|
*/
|
|
214
|
-
|
|
215
|
-
|
|
216
188
|
if (props.node.type === 'mathml') {
|
|
217
189
|
var html = props.node.data.html;
|
|
218
190
|
return /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement("span", (0, _extends2["default"])({}, props.attributes, {
|
|
@@ -225,12 +197,15 @@ function MathPlugin() {
|
|
|
225
197
|
}
|
|
226
198
|
};
|
|
227
199
|
}
|
|
228
|
-
|
|
229
200
|
MathPlugin.ROUND_BRACKETS = 'round_brackets';
|
|
230
201
|
MathPlugin.SQUARE_BRACKETS = 'square_brackets';
|
|
231
202
|
MathPlugin.DOLLAR = 'dollar';
|
|
232
203
|
MathPlugin.DOUBLE_DOLLAR = 'double_dollar';
|
|
233
|
-
|
|
204
|
+
MathPlugin.mathMlOptions = {};
|
|
205
|
+
MathPlugin.propTypes = {
|
|
206
|
+
attributes: _propTypes["default"].object,
|
|
207
|
+
node: _propTypes["default"].node
|
|
208
|
+
};
|
|
234
209
|
var inlineMath = function inlineMath() {
|
|
235
210
|
return {
|
|
236
211
|
type: 'math',
|
|
@@ -242,17 +217,15 @@ var inlineMath = function inlineMath() {
|
|
|
242
217
|
}]
|
|
243
218
|
};
|
|
244
219
|
};
|
|
245
|
-
|
|
246
220
|
exports.inlineMath = inlineMath;
|
|
247
|
-
|
|
248
221
|
var htmlDecode = function htmlDecode(input) {
|
|
249
222
|
var doc = new DOMParser().parseFromString(input, 'text/html');
|
|
250
223
|
return doc.documentElement.textContent;
|
|
251
224
|
};
|
|
252
|
-
|
|
253
225
|
var getTagName = function getTagName(el) {
|
|
254
226
|
return (el && el.tagName || '').toLowerCase();
|
|
255
227
|
};
|
|
228
|
+
|
|
256
229
|
/**
|
|
257
230
|
* Makes sure that strings that contain stuff like:
|
|
258
231
|
* x<y are not transformed into x by the DOMParser because it thinks
|
|
@@ -260,11 +233,10 @@ var getTagName = function getTagName(el) {
|
|
|
260
233
|
* @param input
|
|
261
234
|
* @returns {*}
|
|
262
235
|
*/
|
|
263
|
-
|
|
264
|
-
|
|
265
236
|
var lessThanHandling = function lessThanHandling(input) {
|
|
266
|
-
var arrowSplit = input.split('<');
|
|
237
|
+
var arrowSplit = input.split('<');
|
|
267
238
|
|
|
239
|
+
// if we don't have at least 2 characters there's no point in checking
|
|
268
240
|
if (input.length > 2) {
|
|
269
241
|
return arrowSplit.reduce(function (st, part) {
|
|
270
242
|
/*
|
|
@@ -276,14 +248,11 @@ var lessThanHandling = function lessThanHandling(input) {
|
|
|
276
248
|
if (part.match(/<[a-zA-Z/][\s\S]*>/gi)) {
|
|
277
249
|
return "".concat(st).concat(st ? '<' : '').concat(part);
|
|
278
250
|
}
|
|
279
|
-
|
|
280
251
|
return "".concat(st).concat(st ? '<' : '').concat(part);
|
|
281
252
|
}, '');
|
|
282
253
|
}
|
|
283
|
-
|
|
284
254
|
return input;
|
|
285
255
|
};
|
|
286
|
-
|
|
287
256
|
var serialization = {
|
|
288
257
|
deserialize: function deserialize(el, children) {
|
|
289
258
|
var tagName = getTagName(el);
|
|
@@ -294,15 +263,28 @@ var serialization = {
|
|
|
294
263
|
* an inline child and the block is of type block
|
|
295
264
|
* This is for legacy content only since our math rendering is valid for the core slate rules
|
|
296
265
|
*/
|
|
297
|
-
|
|
298
266
|
var hasMathChild = _newSerialization.BLOCK_TAGS[tagName] && el.childNodes.length === 1 && getTagName(el.firstChild) === 'math';
|
|
299
267
|
log('[deserialize] name: ', tagName);
|
|
268
|
+
|
|
300
269
|
/**
|
|
301
270
|
* This is here in order to be able to render mathml content
|
|
302
271
|
*/
|
|
303
|
-
|
|
304
272
|
if (tagName === 'math' || el.dataset && el.dataset.type === 'mathml' || hasMathChild) {
|
|
305
273
|
var newHtml = hasMathChild ? el.innerHTML : el.outerHTML;
|
|
274
|
+
if (MathPlugin.mathMlOptions.mmlEditing) {
|
|
275
|
+
var htmlToUse = (0, _mathRendering.mmlToLatex)(newHtml);
|
|
276
|
+
var latex = htmlDecode(htmlToUse);
|
|
277
|
+
var _unWrapMath = (0, _mathRendering.unWrapMath)(latex),
|
|
278
|
+
unwrapped = _unWrapMath.unwrapped,
|
|
279
|
+
wrapType = _unWrapMath.wrapType;
|
|
280
|
+
return (0, _slateHyperscript.jsx)('element', {
|
|
281
|
+
type: 'math',
|
|
282
|
+
data: {
|
|
283
|
+
latex: unwrapped,
|
|
284
|
+
wrapper: wrapType
|
|
285
|
+
}
|
|
286
|
+
});
|
|
287
|
+
}
|
|
306
288
|
return (0, _slateHyperscript.jsx)('element', {
|
|
307
289
|
type: 'mathml',
|
|
308
290
|
data: {
|
|
@@ -310,30 +292,24 @@ var serialization = {
|
|
|
310
292
|
}
|
|
311
293
|
});
|
|
312
294
|
}
|
|
313
|
-
|
|
314
295
|
if (el.nodeType === TEXT_NODE) {
|
|
315
296
|
return;
|
|
316
297
|
}
|
|
317
|
-
|
|
318
298
|
if (tagName !== 'span') {
|
|
319
299
|
return;
|
|
320
300
|
}
|
|
321
|
-
|
|
322
301
|
var hasLatex = el.hasAttribute('data-latex') || el.hasAttribute('latex');
|
|
323
|
-
|
|
324
302
|
if (hasLatex) {
|
|
325
|
-
var
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
log('[deserialize]: noBrackets: ', unwrapped, wrapType);
|
|
303
|
+
var _latex = htmlDecode(el.innerHTML);
|
|
304
|
+
var _unWrapMath2 = (0, _mathRendering.unWrapMath)(_latex),
|
|
305
|
+
_unwrapped = _unWrapMath2.unwrapped,
|
|
306
|
+
_wrapType = _unWrapMath2.wrapType;
|
|
307
|
+
log('[deserialize]: noBrackets: ', _unwrapped, _wrapType);
|
|
332
308
|
return (0, _slateHyperscript.jsx)('element', {
|
|
333
309
|
type: 'math',
|
|
334
310
|
data: {
|
|
335
|
-
latex:
|
|
336
|
-
wrapper:
|
|
311
|
+
latex: _unwrapped,
|
|
312
|
+
wrapper: _wrapType
|
|
337
313
|
}
|
|
338
314
|
});
|
|
339
315
|
}
|
|
@@ -341,25 +317,45 @@ var serialization = {
|
|
|
341
317
|
serialize: function serialize(object) {
|
|
342
318
|
if (object.type === 'math') {
|
|
343
319
|
var _ref4 = object.data || {},
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
320
|
+
latex = _ref4.latex,
|
|
321
|
+
wrapper = _ref4.wrapper;
|
|
347
322
|
log('[serialize] latex: ', latex);
|
|
348
323
|
var decoded = htmlDecode(lessThanHandling(latex));
|
|
324
|
+
if (MathPlugin.mathMlOptions.mmlOutput) {
|
|
325
|
+
var res = (0, _mathRendering.renderMath)("<span data-latex=\"\" data-raw=\"".concat(decoded, "\">").concat((0, _mathRendering.wrapMath)(decoded, wrapper), "</span>"));
|
|
326
|
+
var newLatex = (0, _mathRendering.mmlToLatex)(res);
|
|
327
|
+
|
|
328
|
+
// we need to remove all the spaces from the latex to be able to compare it
|
|
329
|
+
var strippedL = latex.replace(/\s/g, '');
|
|
330
|
+
var strippedNewL = newLatex.replace(/\s/g, '');
|
|
331
|
+
|
|
332
|
+
// we check if the latex keeps his form after being converted to mathml and back to latex
|
|
333
|
+
// if it does we can safely convert it to mathml
|
|
334
|
+
if ((0, _isEqual["default"])(strippedL, strippedNewL)) {
|
|
335
|
+
return /*#__PURE__*/_react["default"].createElement("span", {
|
|
336
|
+
"data-type": "mathml",
|
|
337
|
+
dangerouslySetInnerHTML: {
|
|
338
|
+
__html: res
|
|
339
|
+
}
|
|
340
|
+
});
|
|
341
|
+
} else {
|
|
342
|
+
// if it doesn't we keep the latex version
|
|
343
|
+
console.log('This latex can not be safely converted to mathml:', latex, 'so we will keep the latex version!!!');
|
|
344
|
+
console.warn('This latex can not be safely converted to mathml:', latex, 'so we will keep the latex version!!!');
|
|
345
|
+
}
|
|
346
|
+
}
|
|
349
347
|
return /*#__PURE__*/_react["default"].createElement("span", {
|
|
350
348
|
"data-latex": "",
|
|
351
349
|
"data-raw": decoded
|
|
352
350
|
}, (0, _mathRendering.wrapMath)(decoded, wrapper));
|
|
353
351
|
}
|
|
352
|
+
|
|
354
353
|
/**
|
|
355
354
|
* Here for rendering mathml content
|
|
356
355
|
*/
|
|
357
|
-
|
|
358
|
-
|
|
359
356
|
if (object.type === 'mathml') {
|
|
360
357
|
var _ref5 = object.data || {},
|
|
361
|
-
|
|
362
|
-
|
|
358
|
+
html = _ref5.html;
|
|
363
359
|
return /*#__PURE__*/_react["default"].createElement("span", {
|
|
364
360
|
"data-type": "mathml",
|
|
365
361
|
dangerouslySetInnerHTML: {
|
|
@@ -370,4 +366,4 @@ var serialization = {
|
|
|
370
366
|
}
|
|
371
367
|
};
|
|
372
368
|
exports.serialization = serialization;
|
|
373
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJkZWJ1ZyIsIlRFWFRfTk9ERSIsImdlbmVyYXRlQWRkaXRpb25hbEtleXMiLCJrZXlEYXRhIiwibWFwIiwia2V5IiwibmFtZSIsImxhdGV4Iiwid3JpdGUiLCJsYWJlbCIsIkN1c3RvbVRvb2xiYXJDb21wIiwiUmVhY3QiLCJtZW1vIiwicHJvcHMiLCJub2RlIiwibm9kZVBhdGgiLCJvbkZvY3VzIiwib25CbHVyIiwib25DbGljayIsImVkaXRvciIsInBsdWdpblByb3BzIiwibWF0aCIsImtleXBhZE1vZGUiLCJjdXN0b21LZXlzIiwiY29udHJvbGxlZEtleXBhZE1vZGUiLCJvbkRvbmUiLCJ1cGRhdGUiLCJkYXRhIiwiYXBwbHkiLCJ0eXBlIiwicGF0aCIsInByb3BlcnRpZXMiLCJuZXdQcm9wZXJ0aWVzIiwiUmVhY3RFZGl0b3IiLCJmb2N1cyIsIlRyYW5zZm9ybXMiLCJtb3ZlIiwiZGlzdGFuY2UiLCJ1bml0IiwicHJldiIsIm5leHQiLCJub2RlTmV4dCIsImtleXBhZE1vZGVOZXh0IiwiY29udHJvbGxlZEtleXBhZE1vZGVOZXh0Iiwia2V5cGFkTW9kZUNoYW5nZWQiLCJjb250cm9sbGVkS2V5cGFkTW9kZUNoYW5nZWQiLCJlcXVhbCIsImlzRXF1YWwiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJvYmplY3QiLCJzaGFwZSIsInN0cmluZyIsImNoaWxkcmVuIiwiYXJyYXkiLCJpc1JlcXVpcmVkIiwidmFsdWUiLCJhcnJheU9mIiwib25Ub29sYmFyRG9uZSIsImZ1bmMiLCJtYXRoVHlwZXMiLCJNYXRoUGx1Z2luIiwidG9vbGJhciIsImljb24iLCJpbmxpbmVNYXRoIiwiaW5zZXJ0Tm9kZSIsInJ1bGVzIiwiaXNWb2lkIiwiaXNJbmxpbmUiLCJlbGVtZW50IiwiaW5jbHVkZXMiLCJzdXBwb3J0cyIsInNjaGVtYSIsImRvY3VtZW50IiwibWF0Y2giLCJwbHVnaW5TdHlsZXMiLCJwYXJlbnROb2RlIiwicCIsInBvc2l0aW9uIiwidG9wIiwicmVuZGVyTm9kZSIsImh0bWwiLCJhdHRyaWJ1dGVzIiwiX19odG1sIiwiUk9VTkRfQlJBQ0tFVFMiLCJTUVVBUkVfQlJBQ0tFVFMiLCJET0xMQVIiLCJET1VCTEVfRE9MTEFSIiwidGV4dCIsImh0bWxEZWNvZGUiLCJpbnB1dCIsImRvYyIsIkRPTVBhcnNlciIsInBhcnNlRnJvbVN0cmluZyIsImRvY3VtZW50RWxlbWVudCIsInRleHRDb250ZW50IiwiZ2V0VGFnTmFtZSIsImVsIiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwibGVzc1RoYW5IYW5kbGluZyIsImFycm93U3BsaXQiLCJzcGxpdCIsImxlbmd0aCIsInJlZHVjZSIsInN0IiwicGFydCIsInNlcmlhbGl6YXRpb24iLCJkZXNlcmlhbGl6ZSIsImhhc01hdGhDaGlsZCIsIkJMT0NLX1RBR1MiLCJjaGlsZE5vZGVzIiwiZmlyc3RDaGlsZCIsImRhdGFzZXQiLCJuZXdIdG1sIiwiaW5uZXJIVE1MIiwib3V0ZXJIVE1MIiwianN4Iiwibm9kZVR5cGUiLCJoYXNMYXRleCIsImhhc0F0dHJpYnV0ZSIsInVuV3JhcE1hdGgiLCJ1bndyYXBwZWQiLCJ3cmFwVHlwZSIsIndyYXBwZXIiLCJzZXJpYWxpemUiLCJkZWNvZGVkIiwid3JhcE1hdGgiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGx1Z2lucy9tYXRoL2luZGV4LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRWRpdG9yLCBJbmxpbmUsIFRyYW5zZm9ybXMgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBSZWFjdEVkaXRvciB9IGZyb20gJ3NsYXRlLXJlYWN0JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3NsYXRlLWh5cGVyc2NyaXB0JztcbmltcG9ydCBGdW5jdGlvbnMgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBNYXRoUHJldmlldywgTWF0aFRvb2xiYXIgfSBmcm9tICdAcGllLWxpYi9tYXRoLXRvb2xiYXInO1xuaW1wb3J0IHsgd3JhcE1hdGgsIHVuV3JhcE1hdGggfSBmcm9tICdAcGllLWxpYi9tYXRoLXJlbmRlcmluZyc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC9pc0VxdWFsJztcblxuaW1wb3J0IHsgQkxPQ0tfVEFHUyB9IGZyb20gJy4uLy4uL25ldy1zZXJpYWxpemF0aW9uJztcbmNvbnN0IGxvZyA9IGRlYnVnKCdAcGllLWxpYjplZGl0YWJsZS1odG1sOnBsdWdpbnM6bWF0aCcpO1xuXG5jb25zdCBURVhUX05PREUgPSAzO1xuXG5mdW5jdGlvbiBnZW5lcmF0ZUFkZGl0aW9uYWxLZXlzKGtleURhdGEgPSBbXSkge1xuICByZXR1cm4ga2V5RGF0YS5tYXAoa2V5ID0+ICh7XG4gICAgbmFtZToga2V5LFxuICAgIGxhdGV4OiBrZXksXG4gICAgd3JpdGU6IGtleSxcbiAgICBsYWJlbDoga2V5XG4gIH0pKTtcbn1cblxuZXhwb3J0IGNvbnN0IEN1c3RvbVRvb2xiYXJDb21wID0gUmVhY3QubWVtbyhcbiAgcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgbm9kZSwgbm9kZVBhdGgsIG9uRm9jdXMsIG9uQmx1ciwgb25DbGljaywgZWRpdG9yIH0gPSBwcm9wcztcbiAgICBjb25zdCB7IHBsdWdpblByb3BzIH0gPSBwcm9wcyB8fCB7fTtcbiAgICBjb25zdCB7IG1hdGggfSA9IHBsdWdpblByb3BzIHx8IHt9O1xuICAgIGNvbnN0IHsga2V5cGFkTW9kZSwgY3VzdG9tS2V5cywgY29udHJvbGxlZEtleXBhZE1vZGUgPSB0cnVlIH0gPSBtYXRoIHx8IHt9O1xuXG4gICAgY29uc3Qgb25Eb25lID0gbGF0ZXggPT4ge1xuICAgICAgY29uc3QgdXBkYXRlID0ge1xuICAgICAgICAuLi5ub2RlLmRhdGEsXG4gICAgICAgIGxhdGV4XG4gICAgICB9O1xuICAgICAgZWRpdG9yLmFwcGx5KHtcbiAgICAgICAgdHlwZTogJ3NldF9ub2RlJyxcbiAgICAgICAgcGF0aDogbm9kZVBhdGgsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBkYXRhOiBub2RlLmRhdGFcbiAgICAgICAgfSxcbiAgICAgICAgbmV3UHJvcGVydGllczogeyBkYXRhOiB1cGRhdGUgfVxuICAgICAgfSk7XG4gICAgICBSZWFjdEVkaXRvci5mb2N1cyhlZGl0b3IpO1xuICAgICAgVHJhbnNmb3Jtcy5tb3ZlKGVkaXRvciwgeyBkaXN0YW5jZTogMSwgdW5pdDogJ29mZnNldCcgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGxhdGV4ID0gbm9kZS5kYXRhLmxhdGV4O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxNYXRoVG9vbGJhclxuICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgYWRkaXRpb25hbEtleXM9e2dlbmVyYXRlQWRkaXRpb25hbEtleXMoY3VzdG9tS2V5cyl9XG4gICAgICAgIGxhdGV4PXtsYXRleH1cbiAgICAgICAgb25Eb25lPXtvbkRvbmV9XG4gICAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgICBvbkZvY3VzPXtvbkZvY3VzfVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBrZXlwYWRNb2RlPXtrZXlwYWRNb2RlfVxuICAgICAgICBjb250cm9sbGVkS2V5cGFkTW9kZT17Y29udHJvbGxlZEtleXBhZE1vZGV9XG4gICAgICAvPlxuICAgICk7XG4gIH0sXG4gIChwcmV2LCBuZXh0KSA9PiB7XG4gICAgY29uc3QgeyBub2RlLCBwbHVnaW5Qcm9wczogeyBtYXRoOiB7IGtleXBhZE1vZGUsIGNvbnRyb2xsZWRLZXlwYWRNb2RlIH0gPSB7fSB9ID0ge30gfSA9IHByZXY7XG4gICAgY29uc3Qge1xuICAgICAgbm9kZTogbm9kZU5leHQsXG4gICAgICBwbHVnaW5Qcm9wczoge1xuICAgICAgICBtYXRoOiB7IGtleXBhZE1vZGU6IGtleXBhZE1vZGVOZXh0LCBjb250cm9sbGVkS2V5cGFkTW9kZTogY29udHJvbGxlZEtleXBhZE1vZGVOZXh0IH0gPSB7fVxuICAgICAgfSA9IHt9XG4gICAgfSA9IG5leHQ7XG4gICAgY29uc3Qga2V5cGFkTW9kZUNoYW5nZWQgPSBrZXlwYWRNb2RlICE9PSBrZXlwYWRNb2RlTmV4dDtcbiAgICBjb25zdCBjb250cm9sbGVkS2V5cGFkTW9kZUNoYW5nZWQgPSBjb250cm9sbGVkS2V5cGFkTW9kZSAhPT0gY29udHJvbGxlZEtleXBhZE1vZGVOZXh0O1xuXG4gICAgY29uc3QgZXF1YWwgPSBpc0VxdWFsKG5vZGUsIG5vZGVOZXh0KTtcbiAgICByZXR1cm4gZXF1YWwgJiYgIWtleXBhZE1vZGVDaGFuZ2VkICYmICFjb250cm9sbGVkS2V5cGFkTW9kZUNoYW5nZWQ7XG4gIH1cbik7XG5cbkN1c3RvbVRvb2xiYXJDb21wLnByb3BUeXBlcyA9IHtcbiAgZWRpdG9yOiBQcm9wVHlwZXMub2JqZWN0LFxuICBub2RlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIHR5cGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5hcnJheSxcbiAgICBkYXRhOiBQcm9wVHlwZXMub2JqZWN0XG4gIH0pLmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYXJyYXlPZihcbiAgICBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgdHlwZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgICBkYXRhOiBQcm9wVHlwZXMub2JqZWN0XG4gICAgfSlcbiAgKS5pc1JlcXVpcmVkLFxuICBvblRvb2xiYXJEb25lOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Gb2N1czogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBvbkJsdXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5jb25zdCBtYXRoVHlwZXMgPSBbJ21hdGgnLCAnbWF0aG1sJ107XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1hdGhQbHVnaW4oKSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ21hdGgnLFxuICAgIHRvb2xiYXI6IHtcbiAgICAgIGljb246IDxGdW5jdGlvbnMgLz4sXG4gICAgICBvbkNsaWNrOiBlZGl0b3IgPT4ge1xuICAgICAgICBsb2coJ1tpbnNlcnRNYXRoXScpO1xuICAgICAgICBjb25zdCBtYXRoID0gaW5saW5lTWF0aCgpO1xuXG4gICAgICAgIGVkaXRvci5pbnNlcnROb2RlKG1hdGgpO1xuICAgICAgfSxcbiAgICAgIC8qKlxuICAgICAgICogUmV0dXJuIGEgcmVhY3QgY29tcG9uZW50IGZ1bmN0aW9uXG4gICAgICAgKiBAcGFyYW0gbm9kZSB7U2xhdGUuTm9kZX1cbiAgICAgICAqIEBwYXJhbSB2YWx1ZSB7U2xhdGUuVmFsdWV9XG4gICAgICAgKiBAcGFyYW0gb25Eb25lIHsoY2hhbmdlPzogU2xhdGUuQ2hhbmdlLCBmaW5pc2hFZGl0aW5nIDpib29sZWEpID0+IHZvaWR9IC0gYSBmdW5jdGlvbiB0byBjYWxsIG9uY2UgdGhlIHRvb2xiYXJcbiAgICAgICAqICAgaGFzIG1hZGUgYW55IGNoYW5nZXMsIGNhbGwgd2l0aCB0aGUgbm9kZS5rZXkgYW5kIGEgZGF0YSBvYmplY3QuXG4gICAgICAgKi9cbiAgICAgIEN1c3RvbVRvb2xiYXJDb21wXG4gICAgfSxcbiAgICBydWxlczogZWRpdG9yID0+IHtcbiAgICAgIGNvbnN0IHsgaXNWb2lkLCBpc0lubGluZSB9ID0gZWRpdG9yO1xuXG4gICAgICBlZGl0b3IuaXNWb2lkID0gZWxlbWVudCA9PiB7XG4gICAgICAgIHJldHVybiBtYXRoVHlwZXMuaW5jbHVkZXMoZWxlbWVudC50eXBlKSA/IHRydWUgOiBpc1ZvaWQoZWxlbWVudCk7XG4gICAgICB9O1xuXG4gICAgICBlZGl0b3IuaXNJbmxpbmUgPSBlbGVtZW50ID0+IHtcbiAgICAgICAgcmV0dXJuIG1hdGhUeXBlcy5pbmNsdWRlcyhlbGVtZW50LnR5cGUpID8gdHJ1ZSA6IGlzSW5saW5lKGVsZW1lbnQpO1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGVkaXRvcjtcbiAgICB9LFxuICAgIHN1cHBvcnRzOiBub2RlID0+IG1hdGhUeXBlcy5pbmNsdWRlcyhub2RlLnR5cGUpLFxuICAgIHNjaGVtYToge1xuICAgICAgZG9jdW1lbnQ6IHsgbWF0Y2g6IFt7IHR5cGU6ICdtYXRoJyB9XSB9XG4gICAgfSxcblxuICAgIHBsdWdpblN0eWxlczogKG5vZGUsIHBhcmVudE5vZGUsIHApID0+IHtcbiAgICAgIGlmIChwKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgdG9wOiAnaW5pdGlhbCdcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgcmVuZGVyTm9kZTogcHJvcHMgPT4ge1xuICAgICAgaWYgKHByb3BzLm5vZGUudHlwZSA9PT0gJ21hdGgnKSB7XG4gICAgICAgIGxvZygnW3JlbmRlck5vZGVdOiBkYXRhOicsIHByb3BzLm5vZGUuZGF0YSk7XG4gICAgICAgIHJldHVybiA8TWF0aFByZXZpZXcgey4uLnByb3BzfSAvPjtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBIZXJlIGZvciByZW5kZXJpbmcgbWF0aG1sIGNvbnRlbnRcbiAgICAgICAqL1xuICAgICAgaWYgKHByb3BzLm5vZGUudHlwZSA9PT0gJ21hdGhtbCcpIHtcbiAgICAgICAgY29uc3QgeyBkYXRhOiB7IGh0bWwgfSB9ID0gcHJvcHMubm9kZTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgPHNwYW4gey4uLnByb3BzLmF0dHJpYnV0ZXN9IGNvbnRlbnRFZGl0YWJsZT17ZmFsc2V9IGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogaHRtbCB9fSAvPlxuICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbk1hdGhQbHVnaW4uUk9VTkRfQlJBQ0tFVFMgPSAncm91bmRfYnJhY2tldHMnO1xuTWF0aFBsdWdpbi5TUVVBUkVfQlJBQ0tFVFMgPSAnc3F1YXJlX2JyYWNrZXRzJztcbk1hdGhQbHVnaW4uRE9MTEFSID0gJ2RvbGxhcic7XG5NYXRoUGx1Z2luLkRPVUJMRV9ET0xMQVIgPSAnZG91YmxlX2RvbGxhcic7XG5cbmV4cG9ydCBjb25zdCBpbmxpbmVNYXRoID0gKCkgPT4gKHtcbiAgdHlwZTogJ21hdGgnLFxuICBkYXRhOiB7XG4gICAgbGF0ZXg6ICcnXG4gIH0sXG4gIGNoaWxkcmVuOiBbeyB0ZXh0OiAnJyB9XVxufSk7XG5cbmNvbnN0IGh0bWxEZWNvZGUgPSBpbnB1dCA9PiB7XG4gIGNvbnN0IGRvYyA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoaW5wdXQsICd0ZXh0L2h0bWwnKTtcblxuICByZXR1cm4gZG9jLmRvY3VtZW50RWxlbWVudC50ZXh0Q29udGVudDtcbn07XG5cbmNvbnN0IGdldFRhZ05hbWUgPSBlbCA9PiB7XG4gIHJldHVybiAoKGVsICYmIGVsLnRhZ05hbWUpIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xufTtcblxuLyoqXG4gKiBNYWtlcyBzdXJlIHRoYXQgc3RyaW5ncyB0aGF0IGNvbnRhaW4gc3R1ZmYgbGlrZTpcbiAqIHg8eSBhcmUgbm90IHRyYW5zZm9ybWVkIGludG8geCBieSB0aGUgRE9NUGFyc2VyIGJlY2F1c2UgaXQgdGhpbmtzXG4gKiB0aGF0IDx5IGlzIHRoZSBzdGFydCBvZiBhIGRvbSBlbGVtZW50IHRhZ1xuICogQHBhcmFtIGlucHV0XG4gKiBAcmV0dXJucyB7Kn1cbiAqL1xuY29uc3QgbGVzc1RoYW5IYW5kbGluZyA9IGlucHV0ID0+IHtcbiAgY29uc3QgYXJyb3dTcGxpdCA9IGlucHV0LnNwbGl0KCc8Jyk7XG5cbiAgLy8gaWYgd2UgZG9uJ3QgaGF2ZSBhdCBsZWFzdCAyIGNoYXJhY3RlcnMgdGhlcmUncyBubyBwb2ludCBpbiBjaGVja2luZ1xuICBpZiAoaW5wdXQubGVuZ3RoID4gMikge1xuICAgIHJldHVybiBhcnJvd1NwbGl0LnJlZHVjZSgoc3QsIHBhcnQpID0+IHtcbiAgICAgIC8qXG4gICAgICAgV2UgY2hlY2sgaWYgdGhpcyBlbGVtZW50IHJlc3VsdGVkIGlzOlxuICAgICAgIGRpdiAtIGNvbnRpbnVhdGlvbiBvZiBhIGJlZ2lubmluZyBvZiBhIEhUTUwgZWxlbWVudFxuICAgICAgIC9kaXYgLSBjbG9zaW5nIG9mIGEgSFRNTCB0YWdcbiAgICAgICBici8+IC0gYmVnaW5uaW5nIGFuZCBjbG9zaW5nIG9mIGEgaHRtbCBUQUdcbiAgICAgICAqL1xuICAgICAgaWYgKHBhcnQubWF0Y2goLzxbYS16QS1aL11bXFxzXFxTXSo+L2dpKSkge1xuICAgICAgICByZXR1cm4gYCR7c3R9JHtzdCA/ICc8JyA6ICcnfSR7cGFydH1gO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYCR7c3R9JHtzdCA/ICcmbHQ7JyA6ICcnfSR7cGFydH1gO1xuICAgIH0sICcnKTtcbiAgfVxuXG4gIHJldHVybiBpbnB1dDtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXJpYWxpemF0aW9uID0ge1xuICBkZXNlcmlhbGl6ZShlbCwgY2hpbGRyZW4pIHtcbiAgICBjb25zdCB0YWdOYW1lID0gZ2V0VGFnTmFtZShlbCk7XG4gICAgLyoqXG4gICAgICogVGhpcyBpcyB1c2VkIGZvciB3aGVuIHRoZXJlJ3MgYSB3cmFwcGVyIG92ZXIgdGhlIG1hdGhtbCBlbGVtZW50LlxuICAgICAqIEJlY2F1c2Ugb2YgdGhpcyBzbGF0ZSBydWxlOiBcIk9ubHkgYWxsb3cgYmxvY2sgbm9kZXMgb3IgaW5saW5lIGFuZCB0ZXh0IG5vZGVzIGluIGJsb2Nrcy5cIlxuICAgICAqIFRoZSBlbGVtZW50IHRoYXQgY29udGFpbnMgb25seSB0aGUgbWF0aG1sIGlzIHJlbW92ZWQgKGFsb25nIHdpdGggdGhlIG1hdGgpIGJlY2F1c2UgaXQgaGFzXG4gICAgICogYW4gaW5saW5lIGNoaWxkIGFuZCB0aGUgYmxvY2sgaXMgb2YgdHlwZSBibG9ja1xuICAgICAqIFRoaXMgaXMgZm9yIGxlZ2FjeSBjb250ZW50IG9ubHkgc2luY2Ugb3VyIG1hdGggcmVuZGVyaW5nIGlzIHZhbGlkIGZvciB0aGUgY29yZSBzbGF0ZSBydWxlc1xuICAgICAqL1xuICAgIGNvbnN0IGhhc01hdGhDaGlsZCA9XG4gICAgICBCTE9DS19UQUdTW3RhZ05hbWVdICYmIGVsLmNoaWxkTm9kZXMubGVuZ3RoID09PSAxICYmIGdldFRhZ05hbWUoZWwuZmlyc3RDaGlsZCkgPT09ICdtYXRoJztcbiAgICBsb2coJ1tkZXNlcmlhbGl6ZV0gbmFtZTogJywgdGFnTmFtZSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGhlcmUgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byByZW5kZXIgbWF0aG1sIGNvbnRlbnRcbiAgICAgKi9cbiAgICBpZiAodGFnTmFtZSA9PT0gJ21hdGgnIHx8IChlbC5kYXRhc2V0ICYmIGVsLmRhdGFzZXQudHlwZSA9PT0gJ21hdGhtbCcpIHx8IGhhc01hdGhDaGlsZCkge1xuICAgICAgY29uc3QgbmV3SHRtbCA9IGhhc01hdGhDaGlsZCA/IGVsLmlubmVySFRNTCA6IGVsLm91dGVySFRNTDtcblxuICAgICAgcmV0dXJuIGpzeCgnZWxlbWVudCcsIHtcbiAgICAgICAgdHlwZTogJ21hdGhtbCcsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBodG1sOiBuZXdIdG1sXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChlbC5ub2RlVHlwZSA9PT0gVEVYVF9OT0RFKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRhZ05hbWUgIT09ICdzcGFuJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc0xhdGV4ID0gZWwuaGFzQXR0cmlidXRlKCdkYXRhLWxhdGV4JykgfHwgZWwuaGFzQXR0cmlidXRlKCdsYXRleCcpO1xuXG4gICAgaWYgKGhhc0xhdGV4KSB7XG4gICAgICBjb25zdCBsYXRleCA9IGh0bWxEZWNvZGUoZWwuaW5uZXJIVE1MKTtcbiAgICAgIGNvbnN0IHsgdW53cmFwcGVkLCB3cmFwVHlwZSB9ID0gdW5XcmFwTWF0aChsYXRleCk7XG4gICAgICBsb2coJ1tkZXNlcmlhbGl6ZV06IG5vQnJhY2tldHM6ICcsIHVud3JhcHBlZCwgd3JhcFR5cGUpO1xuXG4gICAgICByZXR1cm4ganN4KCdlbGVtZW50Jywge1xuICAgICAgICB0eXBlOiAnbWF0aCcsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBsYXRleDogdW53cmFwcGVkLFxuICAgICAgICAgIHdyYXBwZXI6IHdyYXBUeXBlXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgc2VyaWFsaXplKG9iamVjdCkge1xuICAgIGlmIChvYmplY3QudHlwZSA9PT0gJ21hdGgnKSB7XG4gICAgICBjb25zdCB7IGxhdGV4LCB3cmFwcGVyIH0gPSBvYmplY3QuZGF0YSB8fCB7fTtcbiAgICAgIGxvZygnW3NlcmlhbGl6ZV0gbGF0ZXg6ICcsIGxhdGV4KTtcbiAgICAgIGNvbnN0IGRlY29kZWQgPSBodG1sRGVjb2RlKGxlc3NUaGFuSGFuZGxpbmcobGF0ZXgpKTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxzcGFuIGRhdGEtbGF0ZXg9XCJcIiBkYXRhLXJhdz17ZGVjb2RlZH0+XG4gICAgICAgICAge3dyYXBNYXRoKGRlY29kZWQsIHdyYXBwZXIpfVxuICAgICAgICA8L3NwYW4+XG4gICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhlcmUgZm9yIHJlbmRlcmluZyBtYXRobWwgY29udGVudFxuICAgICAqL1xuICAgIGlmIChvYmplY3QudHlwZSA9PT0gJ21hdGhtbCcpIHtcbiAgICAgIGNvbnN0IHsgaHRtbCB9ID0gb2JqZWN0LmRhdGEgfHwge307XG5cbiAgICAgIHJldHVybiA8c3BhbiBkYXRhLXR5cGU9XCJtYXRobWxcIiBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IGh0bWwgfX0gLz47XG4gICAgfVxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7O0FBQ0EsSUFBTUEsR0FBRyxHQUFHLElBQUFDLGlCQUFBLEVBQU0scUNBQU4sQ0FBWjtBQUVBLElBQU1DLFNBQVMsR0FBRyxDQUFsQjs7QUFFQSxTQUFTQyxzQkFBVCxHQUE4QztFQUFBLElBQWRDLE9BQWMsdUVBQUosRUFBSTtFQUM1QyxPQUFPQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSxVQUFBQyxHQUFHO0lBQUEsT0FBSztNQUN6QkMsSUFBSSxFQUFFRCxHQURtQjtNQUV6QkUsS0FBSyxFQUFFRixHQUZrQjtNQUd6QkcsS0FBSyxFQUFFSCxHQUhrQjtNQUl6QkksS0FBSyxFQUFFSjtJQUprQixDQUFMO0VBQUEsQ0FBZixDQUFQO0FBTUQ7O0FBRU0sSUFBTUssaUJBQWlCLGdCQUFHQyxpQkFBQSxDQUFNQyxJQUFOLENBQy9CLFVBQUFDLEtBQUssRUFBSTtFQUNQLElBQVFDLElBQVIsR0FBNkRELEtBQTdELENBQVFDLElBQVI7RUFBQSxJQUFjQyxRQUFkLEdBQTZERixLQUE3RCxDQUFjRSxRQUFkO0VBQUEsSUFBd0JDLE9BQXhCLEdBQTZESCxLQUE3RCxDQUF3QkcsT0FBeEI7RUFBQSxJQUFpQ0MsTUFBakMsR0FBNkRKLEtBQTdELENBQWlDSSxNQUFqQztFQUFBLElBQXlDQyxPQUF6QyxHQUE2REwsS0FBN0QsQ0FBeUNLLE9BQXpDO0VBQUEsSUFBa0RDLE1BQWxELEdBQTZETixLQUE3RCxDQUFrRE0sTUFBbEQ7O0VBQ0EsV0FBd0JOLEtBQUssSUFBSSxFQUFqQztFQUFBLElBQVFPLFdBQVIsUUFBUUEsV0FBUjs7RUFDQSxZQUFpQkEsV0FBVyxJQUFJLEVBQWhDO0VBQUEsSUFBUUMsSUFBUixTQUFRQSxJQUFS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
|
|
369
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["log","debug","TEXT_NODE","generateAdditionalKeys","keyData","map","key","name","latex","write","label","CustomToolbarComp","React","memo","props","node","onFocus","onBlur","onClick","editor","nodePath","pluginProps","math","keypadMode","customKeys","controlledKeypadMode","onDone","update","data","apply","type","path","properties","newProperties","ReactEditor","focus","Transforms","move","distance","unit","prev","next","nodeNext","keypadModeNext","controlledKeypadModeNext","keypadModeChanged","controlledKeypadModeChanged","equal","isEqual","propTypes","PropTypes","object","shape","string","children","array","isRequired","value","arrayOf","onToolbarDone","func","MathPlugin","toolbar","icon","inlineMath","insertNode","rules","isVoid","isInline","element","supports","schema","document","match","pluginStyles","parentNode","p","position","top","renderNode","html","get","attributes","__html","ROUND_BRACKETS","SQUARE_BRACKETS","DOLLAR","DOUBLE_DOLLAR","text","htmlDecode","input","doc","DOMParser","parseFromString","documentElement","textContent","getTagName","el","tagName","toLowerCase","lessThanHandling","arrowSplit","split","length","reduce","st","part","serialization","deserialize","hasMathChild","BLOCK_TAGS","childNodes","firstChild","dataset","newHtml","innerHTML","outerHTML","jsx","nodeType","hasLatex","hasAttribute","unWrapMath","unwrapped","wrapType","wrapper","serialize","decoded","wrapMath"],"sources":["../../../src/plugins/math/index.jsx"],"sourcesContent":["import React from 'react';\nimport { Editor, Inline, Transforms } from 'slate';\nimport { ReactEditor } from 'slate-react';\nimport { jsx } from 'slate-hyperscript';\nimport Functions from '@material-ui/icons/Functions';\nimport { MathPreview, MathToolbar } from '@pie-lib/math-toolbar';\nimport { wrapMath, unWrapMath } from '@pie-lib/math-rendering';\nimport debug from 'debug';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash/isEqual';\n\nimport { BLOCK_TAGS } from '../../new-serialization';\nconst log = debug('@pie-lib:editable-html:plugins:math');\n\nconst TEXT_NODE = 3;\n\nfunction generateAdditionalKeys(keyData = []) {\n return keyData.map(key => ({\n name: key,\n latex: key,\n write: key,\n label: key\n }));\n}\n\nexport const CustomToolbarComp = React.memo(\n props => {\n const { node, onFocus, onBlur, onClick, editor, nodePath } = props;\n const { pluginProps } = props || {};\n const { math } = pluginProps || {};\n const { keypadMode, customKeys, controlledKeypadMode = true } = math || {};\n\n const onDone = latex => {\n const update = {\n ...node.data,\n latex\n };\n editor.apply({\n type: 'set_node',\n path: nodePath,\n properties: {\n data: node.data\n },\n newProperties: { data: update }\n });\n ReactEditor.focus(editor);\n Transforms.move(editor, { distance: 1, unit: 'offset' });\n };\n\n const latex = node.data.latex;\n\n return (\n <MathToolbar\n autoFocus\n additionalKeys={generateAdditionalKeys(customKeys)}\n latex={latex}\n onDone={onDone}\n onBlur={onBlur}\n onFocus={onFocus}\n onClick={onClick}\n keypadMode={keypadMode}\n controlledKeypadMode={controlledKeypadMode}\n />\n );\n },\n (prev, next) => {\n const { node, pluginProps: { math: { keypadMode, controlledKeypadMode } = {} } = {} } = prev;\n const {\n node: nodeNext,\n pluginProps: {\n math: { keypadMode: keypadModeNext, controlledKeypadMode: controlledKeypadModeNext } = {}\n } = {}\n } = next;\n const keypadModeChanged = keypadMode !== keypadModeNext;\n const controlledKeypadModeChanged = controlledKeypadMode !== controlledKeypadModeNext;\n\n const equal = isEqual(node, nodeNext);\n return equal && !keypadModeChanged && !controlledKeypadModeChanged;\n }\n);\n\nCustomToolbarComp.propTypes = {\n editor: PropTypes.object,\n node: PropTypes.shape({\n type: PropTypes.string,\n children: PropTypes.array,\n data: PropTypes.object\n }).isRequired,\n value: PropTypes.arrayOf(\n PropTypes.shape({\n type: PropTypes.string,\n children: PropTypes.array,\n data: PropTypes.object\n })\n ).isRequired,\n onToolbarDone: PropTypes.func,\n onFocus: PropTypes.func,\n onClick: PropTypes.func,\n onBlur: PropTypes.func\n};\n\nexport default function MathPlugin() {\n return {\n name: 'math',\n toolbar: {\n icon: <Functions />,\n onClick: editor => {\n log('[insertMath]');\n const math = inlineMath();\n\n editor.insertNode(math);\n },\n /**\n * Return a react component function\n * @param node {Slate.Node}\n * @param value {Slate.Value}\n * @param onDone {(change?: Slate.Change, finishEditing :boolea) => void} - a function to call once the toolbar\n * has made any changes, call with the node.key and a data object.\n */\n CustomToolbarComp\n },\n rules: editor => {\n const { isVoid, isInline } = editor;\n\n editor.isVoid = element => {\n return element.type === 'math' ? true : isVoid(element);\n };\n\n editor.isInline = element => {\n return element.type === 'math' ? true : isInline(element);\n };\n\n return editor;\n },\n supports: node => node && node.type === 'math',\n schema: {\n document: { match: [{ type: 'math' }] }\n },\n\n pluginStyles: (node, parentNode, p) => {\n if (p) {\n return {\n position: 'absolute',\n top: 'initial'\n };\n }\n },\n\n renderNode: props => {\n if (props.node.type === 'math') {\n log('[renderNode]: data:', props.node.data);\n return <MathPreview {...props} />;\n }\n\n /**\n * Here for rendering mathml content\n */\n if (props.node.type === 'mathml') {\n const html = props.node.data.get('html');\n\n return <span {...props.attributes} dangerouslySetInnerHTML={{ __html: html }} />;\n }\n }\n };\n}\n\nMathPlugin.ROUND_BRACKETS = 'round_brackets';\nMathPlugin.SQUARE_BRACKETS = 'square_brackets';\nMathPlugin.DOLLAR = 'dollar';\nMathPlugin.DOUBLE_DOLLAR = 'double_dollar';\n\nexport const inlineMath = () => ({\n type: 'math',\n data: {\n latex: ''\n },\n children: [{ text: '' }]\n});\n\nconst htmlDecode = input => {\n const doc = new DOMParser().parseFromString(input, 'text/html');\n\n return doc.documentElement.textContent;\n};\n\nconst getTagName = el => {\n return ((el && el.tagName) || '').toLowerCase();\n};\n\n/**\n * Makes sure that strings that contain stuff like:\n * x<y are not transformed into x by the DOMParser because it thinks\n * that <y is the start of a dom element tag\n * @param input\n * @returns {*}\n */\nconst lessThanHandling = input => {\n const arrowSplit = input.split('<');\n\n // if we don't have at least 2 characters there's no point in checking\n if (input.length > 2) {\n return arrowSplit.reduce((st, part) => {\n /*\n We check if this element resulted is:\n div - continuation of a beginning of a HTML element\n /div - closing of a HTML tag\n br/> - beginning and closing of a html TAG\n */\n if (part.match(/<[a-zA-Z/][\\s\\S]*>/gi)) {\n return `${st}${st ? '<' : ''}${part}`;\n }\n\n return `${st}${st ? '<' : ''}${part}`;\n }, '');\n }\n\n return input;\n};\n\nexport const serialization = {\n deserialize(el, children) {\n const tagName = getTagName(el);\n /**\n * This is used for when there's a wrapper over the mathml element.\n * Because of this slate rule: \"Only allow block nodes or inline and text nodes in blocks.\"\n * The element that contains only the mathml is removed (along with the math) because it has\n * an inline child and the block is of type block\n * This is for legacy content only since our math rendering is valid for the core slate rules\n */\n const hasMathChild =\n BLOCK_TAGS[tagName] && el.childNodes.length === 1 && getTagName(el.firstChild) === 'math';\n log('[deserialize] name: ', tagName);\n\n /**\n * This is here in order to be able to render mathml content\n */\n if (tagName === 'math' || (el.dataset && el.dataset.type === 'mathml') || hasMathChild) {\n const newHtml = hasMathChild ? el.innerHTML : el.outerHTML;\n\n return jsx('element', {\n type: 'mathml',\n data: {\n html: newHtml\n }\n });\n }\n\n if (el.nodeType === TEXT_NODE) {\n return;\n }\n\n if (tagName !== 'span') {\n return;\n }\n\n const hasLatex = el.hasAttribute('data-latex') || el.hasAttribute('latex');\n\n if (hasLatex) {\n const latex = htmlDecode(el.innerHTML);\n const { unwrapped, wrapType } = unWrapMath(latex);\n log('[deserialize]: noBrackets: ', unwrapped, wrapType);\n\n return jsx('element', {\n type: 'math',\n data: {\n latex: unwrapped,\n wrapper: wrapType\n }\n });\n }\n },\n serialize(object) {\n if (object.type === 'math') {\n const { latex, wrapper } = object.data || {};\n log('[serialize] latex: ', latex);\n const decoded = htmlDecode(lessThanHandling(latex));\n return (\n <span data-latex=\"\" data-raw={decoded}>\n {wrapMath(decoded, wrapper)}\n </span>\n );\n }\n\n /**\n * Here for rendering mathml content\n */\n if (object.type === 'mathml') {\n const { html } = object.data || {};\n\n return <span data-type=\"mathml\" dangerouslySetInnerHTML={{ __html: html }} />;\n }\n }\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_react","_interopRequireDefault","require","_slate","_slateReact","_slateHyperscript","_Functions","_mathToolbar","_mathRendering","_debug","_propTypes","_isEqual","_newSerialization","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","TEXT_NODE","generateAdditionalKeys","keyData","undefined","map","name","latex","write","label","CustomToolbarComp","React","memo","props","node","nodePath","onFocus","onBlur","onClick","editor","_ref","pluginProps","_ref2","math","_ref3","keypadMode","customKeys","_ref3$controlledKeypa","controlledKeypadMode","onDone","update","data","type","path","properties","newProperties","ReactEditor","focus","Transforms","move","distance","unit","createElement","MathToolbar","autoFocus","additionalKeys","prev","next","_prev$pluginProps","_prev$pluginProps2","_prev$pluginProps2$ma","_prev$pluginProps2$ma2","nodeNext","_next$pluginProps","_next$pluginProps2","_next$pluginProps2$ma","_next$pluginProps2$ma2","keypadModeNext","controlledKeypadModeNext","keypadModeChanged","controlledKeypadModeChanged","equal","isEqual","exports","propTypes","PropTypes","shape","string","children","array","isRequired","value","arrayOf","onToolbarDone","func","mathTypes","MathPlugin","opts","mathMlOptions","mmlOutput","mmlEditing","toolbar","icon","inlineMath","insertNode","rules","isVoid","isInline","element","includes","supports","schema","document","match","pluginStyles","parentNode","p","position","top","renderNode","MathPreview","html","_extends2","attributes","contentEditable","dangerouslySetInnerHTML","__html","ROUND_BRACKETS","SQUARE_BRACKETS","DOLLAR","DOUBLE_DOLLAR","text","htmlDecode","input","doc","DOMParser","parseFromString","documentElement","textContent","getTagName","el","tagName","toLowerCase","lessThanHandling","arrowSplit","split","reduce","st","part","concat","serialization","deserialize","hasMathChild","BLOCK_TAGS","childNodes","firstChild","dataset","newHtml","innerHTML","outerHTML","htmlToUse","mmlToLatex","_unWrapMath","unWrapMath","unwrapped","wrapType","jsx","wrapper","nodeType","hasLatex","hasAttribute","_unWrapMath2","serialize","_ref4","decoded","res","renderMath","wrapMath","newLatex","strippedL","replace","strippedNewL","console","warn","_ref5"],"sources":["../../../src/plugins/math/index.jsx"],"sourcesContent":["import React from 'react';\nimport { Editor, Inline, Transforms } from 'slate';\nimport { ReactEditor } from 'slate-react';\nimport { jsx } from 'slate-hyperscript';\nimport Functions from '@material-ui/icons/Functions';\nimport { MathPreview, MathToolbar } from '@pie-lib/math-toolbar';\nimport { wrapMath, unWrapMath, mmlToLatex, renderMath } from '@pie-lib/math-rendering';\nimport debug from 'debug';\nimport PropTypes from 'prop-types';\nimport isEqual from 'lodash/isEqual';\n\nimport { BLOCK_TAGS } from '../../new-serialization';\nconst log = debug('@pie-lib:editable-html:plugins:math');\n\nconst TEXT_NODE = 3;\n\nfunction generateAdditionalKeys(keyData = []) {\n return keyData.map((key) => ({\n name: key,\n latex: key,\n write: key,\n label: key,\n }));\n}\n\n// eslint-disable-next-line react/display-name\nexport const CustomToolbarComp = React.memo(\n (props) => {\n const { node, nodePath, onFocus, onBlur, onClick, editor } = props;\n const { pluginProps } = props || {};\n const { math } = pluginProps || {};\n const { keypadMode, customKeys, controlledKeypadMode = true } = math || {};\n\n const onDone = (latex) => {\n const update = {\n ...node.data,\n latex\n };\n editor.apply({\n type: 'set_node',\n path: nodePath,\n properties: {\n data: node.data\n },\n newProperties: { data: update }\n });\n ReactEditor.focus(editor);\n Transforms.move(editor, { distance: 1, unit: 'offset' });\n };\n\n const latex = node.data.latex;\n\n return (\n <MathToolbar\n autoFocus\n additionalKeys={generateAdditionalKeys(customKeys)}\n latex={latex}\n onDone={onDone}\n onBlur={onBlur}\n onFocus={onFocus}\n onClick={onClick}\n keypadMode={keypadMode}\n controlledKeypadMode={controlledKeypadMode}\n />\n );\n },\n (prev, next) => {\n const { node, pluginProps: { math: { keypadMode, controlledKeypadMode } = {} } = {} } = prev;\n const {\n node: nodeNext,\n pluginProps: { math: { keypadMode: keypadModeNext, controlledKeypadMode: controlledKeypadModeNext } = {} } = {},\n } = next;\n const keypadModeChanged = keypadMode !== keypadModeNext;\n const controlledKeypadModeChanged = controlledKeypadMode !== controlledKeypadModeNext;\n\n const equal = isEqual(node, nodeNext);\n return equal && !keypadModeChanged && !controlledKeypadModeChanged;\n },\n);\n\nCustomToolbarComp.propTypes = {\n editor: PropTypes.object,\n node: PropTypes.shape({\n type: PropTypes.string,\n children: PropTypes.array,\n data: PropTypes.object\n }).isRequired,\n value: PropTypes.arrayOf(\n PropTypes.shape({\n type: PropTypes.string,\n children: PropTypes.array,\n data: PropTypes.object\n })\n ).isRequired,\n onToolbarDone: PropTypes.func,\n onFocus: PropTypes.func,\n onClick: PropTypes.func,\n onBlur: PropTypes.func,\n};\n\nconst mathTypes = ['math', 'mathml'];\n\nexport default function MathPlugin(opts) {\n MathPlugin.mathMlOptions = {\n mmlOutput: opts.mmlOutput,\n mmlEditing: opts.mmlEditing,\n };\n\n return {\n name: 'math',\n toolbar: {\n icon: <Functions />,\n onClick: editor => {\n log('[insertMath]');\n const math = inlineMath();\n\n editor.insertNode(math);\n },\n /**\n * Return a react component function\n * @param node {Slate.Node}\n * @param value {Slate.Value}\n * @param onDone {(change?: Slate.Change, finishEditing :boolea) => void} - a function to call once the toolbar\n * has made any changes, call with the node.key and a data object.\n */\n CustomToolbarComp,\n },\n rules: editor => {\n const { isVoid, isInline } = editor;\n\n editor.isVoid = element => {\n return mathTypes.includes(element.type) ? true : isVoid(element);\n };\n\n editor.isInline = element => {\n return mathTypes.includes(element.type) ? true : isInline(element);\n };\n\n return editor;\n },\n supports: node => mathTypes.includes(node.type),\n schema: {\n document: { match: [{ type: 'math' }] },\n },\n\n pluginStyles: (node, parentNode, p) => {\n if (p) {\n return {\n position: 'absolute',\n top: 'initial',\n };\n }\n },\n\n renderNode: (props) => {\n if (props.node.type === 'math') {\n log('[renderNode]: data:', props.node.data);\n return <MathPreview {...props} />;\n }\n\n /**\n * Here for rendering mathml content\n */\n if (props.node.type === 'mathml') {\n const { data: { html } } = props.node;\n\n return (\n <span>\n <span {...props.attributes} contentEditable={false} dangerouslySetInnerHTML={{ __html: html }} />\n {props.children}\n </span>\n );\n }\n },\n };\n}\n\nMathPlugin.ROUND_BRACKETS = 'round_brackets';\nMathPlugin.SQUARE_BRACKETS = 'square_brackets';\nMathPlugin.DOLLAR = 'dollar';\nMathPlugin.DOUBLE_DOLLAR = 'double_dollar';\nMathPlugin.mathMlOptions = {};\n\nMathPlugin.propTypes = {\n attributes: PropTypes.object,\n node: PropTypes.node,\n};\n\nexport const inlineMath = () => ({\n type: 'math',\n data: {\n latex: '',\n },\n children: [{ text: '' }],\n});\n\nconst htmlDecode = (input) => {\n const doc = new DOMParser().parseFromString(input, 'text/html');\n\n return doc.documentElement.textContent;\n};\n\nconst getTagName = (el) => {\n return ((el && el.tagName) || '').toLowerCase();\n};\n\n/**\n * Makes sure that strings that contain stuff like:\n * x<y are not transformed into x by the DOMParser because it thinks\n * that <y is the start of a dom element tag\n * @param input\n * @returns {*}\n */\nconst lessThanHandling = (input) => {\n const arrowSplit = input.split('<');\n\n // if we don't have at least 2 characters there's no point in checking\n if (input.length > 2) {\n return arrowSplit.reduce((st, part) => {\n /*\n We check if this element resulted is:\n div - continuation of a beginning of a HTML element\n /div - closing of a HTML tag\n br/> - beginning and closing of a html TAG\n */\n if (part.match(/<[a-zA-Z/][\\s\\S]*>/gi)) {\n return `${st}${st ? '<' : ''}${part}`;\n }\n\n return `${st}${st ? '<' : ''}${part}`;\n }, '');\n }\n\n return input;\n};\n\nexport const serialization = {\n deserialize(el, children) {\n const tagName = getTagName(el);\n /**\n * This is used for when there's a wrapper over the mathml element.\n * Because of this slate rule: \"Only allow block nodes or inline and text nodes in blocks.\"\n * The element that contains only the mathml is removed (along with the math) because it has\n * an inline child and the block is of type block\n * This is for legacy content only since our math rendering is valid for the core slate rules\n */\n const hasMathChild = BLOCK_TAGS[tagName] && el.childNodes.length === 1 && getTagName(el.firstChild) === 'math';\n log('[deserialize] name: ', tagName);\n\n /**\n * This is here in order to be able to render mathml content\n */\n if (tagName === 'math' || (el.dataset && el.dataset.type === 'mathml') || hasMathChild) {\n const newHtml = hasMathChild ? el.innerHTML : el.outerHTML;\n\n if (MathPlugin.mathMlOptions.mmlEditing) {\n const htmlToUse = mmlToLatex(newHtml);\n const latex = htmlDecode(htmlToUse);\n const { unwrapped, wrapType } = unWrapMath(latex);\n\n return jsx('element', {\n type: 'math',\n data: {\n latex: unwrapped,\n wrapper: wrapType,\n },\n });\n }\n\n return jsx('element', {\n type: 'mathml',\n data: {\n html: newHtml,\n },\n });\n }\n\n if (el.nodeType === TEXT_NODE) {\n return;\n }\n\n if (tagName !== 'span') {\n return;\n }\n\n const hasLatex = el.hasAttribute('data-latex') || el.hasAttribute('latex');\n\n if (hasLatex) {\n const latex = htmlDecode(el.innerHTML);\n const { unwrapped, wrapType } = unWrapMath(latex);\n log('[deserialize]: noBrackets: ', unwrapped, wrapType);\n\n return jsx('element', {\n type: 'math',\n data: {\n latex: unwrapped,\n wrapper: wrapType,\n },\n });\n }\n },\n serialize(object) {\n if (object.type === 'math') {\n const { latex, wrapper } = object.data || {};\n log('[serialize] latex: ', latex);\n const decoded = htmlDecode(lessThanHandling(latex));\n\n if (MathPlugin.mathMlOptions.mmlOutput) {\n const res = renderMath(`<span data-latex=\"\" data-raw=\"${decoded}\">${wrapMath(decoded, wrapper)}</span>`);\n const newLatex = mmlToLatex(res);\n\n // we need to remove all the spaces from the latex to be able to compare it\n const strippedL = latex.replace(/\\s/g, '');\n const strippedNewL = newLatex.replace(/\\s/g, '');\n\n // we check if the latex keeps his form after being converted to mathml and back to latex\n // if it does we can safely convert it to mathml\n if (isEqual(strippedL, strippedNewL)) {\n return <span data-type=\"mathml\" dangerouslySetInnerHTML={{ __html: res }} />;\n } else {\n // if it doesn't we keep the latex version\n console.log('This latex can not be safely converted to mathml:', latex, 'so we will keep the latex version!!!');\n console.warn('This latex can not be safely converted to mathml:', latex, 'so we will keep the latex version!!!');\n }\n }\n\n return (\n <span data-latex=\"\" data-raw={decoded}>\n {wrapMath(decoded, wrapper)}\n </span>\n );\n }\n\n /**\n * Here for rendering mathml content\n */\n if (object.type === 'mathml') {\n const { html } = object.data || {};\n\n return <span data-type=\"mathml\" dangerouslySetInnerHTML={{ __html: html }} />;\n }\n },\n};\n"],"mappings":"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"}
|