@pie-lib/editable-html 9.5.13 → 10.0.0-beta.1
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 +0 -302
- package/lib/components.js +116 -0
- package/lib/components.js.map +1 -0
- package/lib/editor.js +418 -103
- package/lib/editor.js.map +1 -1
- package/lib/index.js +101 -155
- package/lib/index.js.map +1 -1
- package/lib/new-serialization.js +320 -0
- package/lib/new-serialization.js.map +1 -0
- package/lib/old-serialization.js +330 -0
- package/lib/parse-html.js +1 -1
- package/lib/parse-html.js.map +1 -1
- package/lib/plugins/characters/custom-popper.js +1 -1
- package/lib/plugins/characters/custom-popper.js.map +1 -1
- package/lib/plugins/characters/index.js +21 -19
- 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 +67 -0
- package/lib/plugins/hotKeys/index.js.map +1 -0
- package/lib/plugins/image/alt-dialog.js +1 -6
- package/lib/plugins/image/alt-dialog.js.map +1 -1
- package/lib/plugins/image/component.js +70 -53
- package/lib/plugins/image/component.js.map +1 -1
- package/lib/plugins/image/image-toolbar.js +7 -9
- package/lib/plugins/image/image-toolbar.js.map +1 -1
- package/lib/plugins/image/index.js +83 -27
- package/lib/plugins/image/index.js.map +1 -1
- package/lib/plugins/image/insert-image-handler.js +72 -33
- package/lib/plugins/image/insert-image-handler.js.map +1 -1
- package/lib/plugins/index.js +23 -41
- package/lib/plugins/index.js.map +1 -1
- package/lib/plugins/list/index.js +64 -100
- package/lib/plugins/list/index.js.map +1 -1
- package/lib/plugins/math/index.js +86 -60
- package/lib/plugins/math/index.js.map +1 -1
- package/lib/plugins/media/index.js +202 -132
- package/lib/plugins/media/index.js.map +1 -1
- package/lib/plugins/media/media-dialog.js +17 -16
- package/lib/plugins/media/media-dialog.js.map +1 -1
- package/lib/plugins/media/media-toolbar.js +3 -3
- package/lib/plugins/media/media-toolbar.js.map +1 -1
- package/lib/plugins/media/media-wrapper.js +21 -58
- package/lib/plugins/media/media-wrapper.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/choice.js +3 -3
- package/lib/plugins/respArea/drag-in-the-blank/choice.js.map +1 -1
- package/lib/plugins/respArea/drag-in-the-blank/index.js +3 -2
- package/lib/plugins/respArea/drag-in-the-blank/index.js.map +1 -1
- package/lib/plugins/respArea/explicit-constructed-response/index.js +3 -2
- package/lib/plugins/respArea/explicit-constructed-response/index.js.map +1 -1
- package/lib/plugins/respArea/icons/index.js +13 -15
- package/lib/plugins/respArea/icons/index.js.map +1 -1
- package/lib/plugins/respArea/index.js +87 -53
- package/lib/plugins/respArea/index.js.map +1 -1
- package/lib/plugins/respArea/inline-dropdown/index.js +4 -3
- package/lib/plugins/respArea/inline-dropdown/index.js.map +1 -1
- package/lib/plugins/respArea/utils.js +17 -20
- package/lib/plugins/respArea/utils.js.map +1 -1
- package/lib/plugins/table/icons/index.js +1 -1
- package/lib/plugins/table/icons/index.js.map +1 -1
- package/lib/plugins/table/index.js +381 -212
- package/lib/plugins/table/index.js.map +1 -1
- package/lib/plugins/table/table-toolbar.js +5 -6
- package/lib/plugins/table/table-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/default-toolbar.js +55 -11
- package/lib/plugins/toolbar/default-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/done-button.js +1 -1
- package/lib/plugins/toolbar/done-button.js.map +1 -1
- package/lib/plugins/toolbar/editor-and-toolbar.js +186 -232
- package/lib/plugins/toolbar/editor-and-toolbar.js.map +1 -1
- package/lib/plugins/toolbar/index.js +1 -2
- package/lib/plugins/toolbar/index.js.map +1 -1
- package/lib/plugins/toolbar/toolbar-buttons.js +1 -1
- package/lib/plugins/toolbar/toolbar-buttons.js.map +1 -1
- package/lib/plugins/toolbar/toolbar.js +253 -239
- package/lib/plugins/toolbar/toolbar.js.map +1 -1
- package/lib/plugins/utils.js +27 -2
- package/lib/plugins/utils.js.map +1 -1
- package/lib/serialization.js +1 -1
- package/lib/serialization.js.map +1 -1
- package/lib/slate-editor.js +302 -0
- package/lib/test-serializer.js +189 -0
- package/lib/test-serializer.js.map +1 -0
- package/lib/theme.js +1 -1
- package/lib/theme.js.map +1 -1
- package/package.json +18 -14
- package/playground/image/data.js +20 -20
- package/playground/image/index.html +22 -20
- package/playground/image/index.jsx +12 -10
- package/playground/index.html +25 -23
- package/playground/mathquill/index.html +23 -20
- package/playground/mathquill/index.jsx +18 -22
- package/playground/prod-test/index.html +24 -20
- package/playground/prod-test/index.jsx +5 -3
- package/playground/schema-override/data.js +10 -10
- package/playground/schema-override/image-plugin.jsx +3 -4
- package/playground/schema-override/index.html +21 -19
- package/playground/schema-override/index.jsx +13 -14
- package/playground/serialization/data.js +10 -10
- package/playground/serialization/image-plugin.jsx +3 -4
- package/playground/serialization/index.html +22 -20
- package/playground/table-examples.html +5 -8
- package/playground/webpack.config.js +10 -10
- package/src/components.js +135 -0
- package/src/editor.jsx +478 -141
- package/src/index.jsx +71 -95
- package/src/new-serialization.jsx +291 -0
- package/src/parse-html.js +1 -1
- package/src/plugins/characters/custom-popper.js +7 -7
- package/src/plugins/characters/index.jsx +33 -34
- package/src/plugins/characters/utils.js +81 -81
- package/src/plugins/hotKeys/index.js +54 -0
- package/src/plugins/image/alt-dialog.jsx +4 -5
- package/src/plugins/image/component.jsx +106 -89
- package/src/plugins/image/image-toolbar.jsx +27 -19
- package/src/plugins/image/index.jsx +75 -43
- package/src/plugins/image/insert-image-handler.js +62 -27
- package/src/plugins/index.jsx +23 -41
- package/src/plugins/list/index.jsx +70 -95
- package/src/plugins/math/index.jsx +102 -82
- package/src/plugins/media/index.jsx +159 -124
- package/src/plugins/media/media-dialog.js +98 -71
- package/src/plugins/media/media-toolbar.jsx +8 -8
- package/src/plugins/media/media-wrapper.jsx +29 -30
- package/src/plugins/respArea/drag-in-the-blank/choice.jsx +21 -19
- package/src/plugins/respArea/drag-in-the-blank/index.jsx +14 -11
- package/src/plugins/respArea/explicit-constructed-response/index.jsx +7 -6
- package/src/plugins/respArea/icons/index.jsx +11 -14
- package/src/plugins/respArea/index.jsx +92 -52
- package/src/plugins/respArea/inline-dropdown/index.jsx +9 -8
- package/src/plugins/respArea/utils.jsx +26 -35
- package/src/plugins/table/icons/index.jsx +17 -11
- package/src/plugins/table/index.jsx +288 -231
- package/src/plugins/table/table-toolbar.jsx +15 -11
- package/src/plugins/toolbar/default-toolbar.jsx +65 -19
- package/src/plugins/toolbar/done-button.jsx +4 -4
- package/src/plugins/toolbar/editor-and-toolbar.jsx +150 -145
- package/src/plugins/toolbar/index.jsx +2 -3
- package/src/plugins/toolbar/toolbar-buttons.jsx +11 -11
- package/src/plugins/toolbar/toolbar.jsx +244 -221
- package/src/plugins/utils.js +21 -4
- package/src/serialization.jsx +32 -32
- package/src/test-serializer.js +139 -0
- package/src/test-serializer.js.rej +20 -0
|
@@ -7,18 +7,18 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.serialization = exports["default"] = void 0;
|
|
9
9
|
|
|
10
|
-
var
|
|
11
|
-
|
|
12
|
-
var _slate = require("slate");
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
11
|
|
|
14
|
-
var
|
|
12
|
+
var _react = _interopRequireDefault(require("react"));
|
|
15
13
|
|
|
16
14
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
17
15
|
|
|
18
|
-
var _slateEditList = _interopRequireDefault(require("slate-edit-list"));
|
|
19
|
-
|
|
20
16
|
var _debug = _interopRequireDefault(require("debug"));
|
|
21
17
|
|
|
18
|
+
var _slate = require("slate");
|
|
19
|
+
|
|
20
|
+
var _slateHyperscript = require("slate-hyperscript");
|
|
21
|
+
|
|
22
22
|
var log = (0, _debug["default"])('@pie-lib:editable-html:plugins:list');
|
|
23
23
|
|
|
24
24
|
var b = function b(type, next, childNodes) {
|
|
@@ -32,22 +32,27 @@ var b = function b(type, next, childNodes) {
|
|
|
32
32
|
var serialization = {
|
|
33
33
|
deserialize: function deserialize(el, next) {
|
|
34
34
|
var name = el.tagName.toLowerCase();
|
|
35
|
+
var children = el.children.length ? Array.from(el.children) : el.childNodes;
|
|
35
36
|
|
|
36
37
|
if (name === 'li') {
|
|
37
|
-
return
|
|
38
|
+
return (0, _slateHyperscript.jsx)('element', {
|
|
39
|
+
type: 'li'
|
|
40
|
+
}, next(children));
|
|
38
41
|
}
|
|
39
42
|
|
|
40
43
|
if (name === 'ul') {
|
|
41
|
-
return
|
|
44
|
+
return (0, _slateHyperscript.jsx)('element', {
|
|
45
|
+
type: 'ul'
|
|
46
|
+
}, next(children));
|
|
42
47
|
}
|
|
43
48
|
|
|
44
49
|
if (name === 'ol') {
|
|
45
|
-
return
|
|
50
|
+
return (0, _slateHyperscript.jsx)('element', {
|
|
51
|
+
type: 'ol'
|
|
52
|
+
}, next(children));
|
|
46
53
|
}
|
|
47
54
|
},
|
|
48
55
|
serialize: function serialize(object, children) {
|
|
49
|
-
if (object.object !== 'block') return;
|
|
50
|
-
|
|
51
56
|
if (object.type === 'list_item') {
|
|
52
57
|
return /*#__PURE__*/_react["default"].createElement("li", null, children);
|
|
53
58
|
}
|
|
@@ -63,91 +68,67 @@ var serialization = {
|
|
|
63
68
|
};
|
|
64
69
|
exports.serialization = serialization;
|
|
65
70
|
|
|
66
|
-
var
|
|
67
|
-
var
|
|
68
|
-
|
|
69
|
-
}); // fix outdated schema
|
|
71
|
+
var isBlockActive = function isBlockActive(editor, format) {
|
|
72
|
+
var selection = editor.selection;
|
|
73
|
+
if (!selection) return false;
|
|
70
74
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
75
|
+
var _Array$from = Array.from(_slate.Editor.nodes(editor, {
|
|
76
|
+
at: _slate.Editor.unhangRange(editor, selection),
|
|
77
|
+
match: function match(node) {
|
|
78
|
+
return !_slate.Editor.isEditor(node) && _slate.Element.isElement(node) && node.type === format;
|
|
79
|
+
}
|
|
80
|
+
})),
|
|
81
|
+
_Array$from2 = (0, _slicedToArray2["default"])(_Array$from, 1),
|
|
82
|
+
match = _Array$from2[0];
|
|
74
83
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
84
|
+
return !!match;
|
|
85
|
+
};
|
|
78
86
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
87
|
+
var createEditList = function createEditList() {
|
|
88
|
+
var core = {
|
|
89
|
+
changes: {}
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
core.changes.wrapInList = function (editor, format) {
|
|
93
|
+
var isActive = isBlockActive(editor, format);
|
|
94
|
+
var isList = LIST_TYPES.includes(format);
|
|
95
|
+
|
|
96
|
+
_slate.Transforms.unwrapNodes(editor, {
|
|
97
|
+
match: function match(n) {
|
|
98
|
+
return !_slate.Editor.isEditor(n) && _slate.Element.isElement(n) && LIST_TYPES.includes(n.type);
|
|
99
|
+
},
|
|
100
|
+
split: true
|
|
82
101
|
});
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* This override of the core.changes.wrapInList is needed because the version
|
|
86
|
-
* of immutable that we have does not support getting the element at a specific
|
|
87
|
-
* index with a square bracket (list[0]). We have to use the list.get function instead
|
|
88
|
-
*/
|
|
89
102
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
103
|
+
var newProperties = {
|
|
104
|
+
type: isActive ? 'paragraph' : isList ? 'list_item' : format
|
|
105
|
+
};
|
|
93
106
|
|
|
107
|
+
_slate.Transforms.setNodes(editor, newProperties);
|
|
94
108
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
109
|
+
if (!isActive && isList) {
|
|
110
|
+
var block = {
|
|
111
|
+
type: format,
|
|
112
|
+
children: []
|
|
113
|
+
};
|
|
100
114
|
|
|
101
|
-
|
|
102
|
-
return _immutable["default"].List([startBlock]);
|
|
115
|
+
_slate.Transforms.wrapNodes(editor, block);
|
|
103
116
|
}
|
|
104
|
-
|
|
105
|
-
var ancestor = document.getCommonAncestor(startBlock.key, endBlock.key);
|
|
106
|
-
var startPath = ancestor.getPath(startBlock.key);
|
|
107
|
-
var endPath = ancestor.getPath(endBlock.key);
|
|
108
|
-
return ancestor.nodes.slice(startPath.get(0), endPath.get(0) + 1);
|
|
109
|
-
};
|
|
110
|
-
/**
|
|
111
|
-
* Wrap the blocks in the current selection in a new list. Selected
|
|
112
|
-
* lists are merged together.
|
|
113
|
-
*/
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
core.changes.wrapInList = function (change, type, data) {
|
|
117
|
-
var selectedBlocks = getHighestSelectedBlocks(change.value); // Wrap in container
|
|
118
|
-
|
|
119
|
-
change.wrapBlock({
|
|
120
|
-
type: type,
|
|
121
|
-
data: _slate.Data.create(data)
|
|
122
|
-
}, {
|
|
123
|
-
normalize: false
|
|
124
|
-
}); // Wrap in list items
|
|
125
|
-
|
|
126
|
-
selectedBlocks.forEach(function (node) {
|
|
127
|
-
if (core.utils.isList(node)) {
|
|
128
|
-
// Merge its items with the created list
|
|
129
|
-
node.nodes.forEach(function (_ref) {
|
|
130
|
-
var key = _ref.key;
|
|
131
|
-
return change.unwrapNodeByKey(key, {
|
|
132
|
-
normalize: false
|
|
133
|
-
});
|
|
134
|
-
});
|
|
135
|
-
} else if (node.type !== 'list_item') {
|
|
136
|
-
change.wrapBlockByKey(node.key, 'list_item', {
|
|
137
|
-
normalize: false
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
});
|
|
141
|
-
return change.normalize();
|
|
142
117
|
};
|
|
143
118
|
|
|
144
119
|
return core;
|
|
145
120
|
};
|
|
146
121
|
|
|
122
|
+
var LIST_TYPES = ['ol_list', 'ul_list', 'list_item'];
|
|
123
|
+
|
|
147
124
|
var _default = function _default(options) {
|
|
148
125
|
var type = options.type,
|
|
149
126
|
icon = options.icon;
|
|
150
|
-
var core = createEditList();
|
|
127
|
+
var core = createEditList();
|
|
128
|
+
|
|
129
|
+
core.supports = function (node) {
|
|
130
|
+
return LIST_TYPES.includes(node.type);
|
|
131
|
+
};
|
|
151
132
|
|
|
152
133
|
core.renderNode = function (props) {
|
|
153
134
|
var node = props.node,
|
|
@@ -170,26 +151,9 @@ var _default = function _default(options) {
|
|
|
170
151
|
isMark: false,
|
|
171
152
|
type: type,
|
|
172
153
|
icon: icon,
|
|
173
|
-
isActive:
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
var current = core.utils.getCurrentList(value);
|
|
179
|
-
return current ? current.type === type : false;
|
|
180
|
-
},
|
|
181
|
-
onClick: function onClick(value, onChange) {
|
|
182
|
-
log('[onClick]', value);
|
|
183
|
-
var inList = core.utils.isSelectionInList(value);
|
|
184
|
-
|
|
185
|
-
if (inList) {
|
|
186
|
-
var change = value.change().call(core.changes.unwrapList);
|
|
187
|
-
onChange(change);
|
|
188
|
-
} else {
|
|
189
|
-
var _change = value.change().call(core.changes.wrapInList, type);
|
|
190
|
-
|
|
191
|
-
onChange(_change);
|
|
192
|
-
}
|
|
154
|
+
isActive: isBlockActive,
|
|
155
|
+
onClick: function onClick(editor) {
|
|
156
|
+
core.changes.wrapInList(editor, type);
|
|
193
157
|
}
|
|
194
158
|
};
|
|
195
159
|
core.renderNode.propTypes = {
|
|
@@ -201,4 +165,4 @@ var _default = function _default(options) {
|
|
|
201
165
|
};
|
|
202
166
|
|
|
203
167
|
exports["default"] = _default;
|
|
204
|
-
//# sourceMappingURL=index.js.map
|
|
168
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJkZWJ1ZyIsImIiLCJ0eXBlIiwibmV4dCIsImNoaWxkTm9kZXMiLCJvYmplY3QiLCJub2RlcyIsInNlcmlhbGl6YXRpb24iLCJkZXNlcmlhbGl6ZSIsImVsIiwibmFtZSIsInRhZ05hbWUiLCJ0b0xvd2VyQ2FzZSIsImNoaWxkcmVuIiwibGVuZ3RoIiwiQXJyYXkiLCJmcm9tIiwianN4Iiwic2VyaWFsaXplIiwiaXNCbG9ja0FjdGl2ZSIsImVkaXRvciIsImZvcm1hdCIsInNlbGVjdGlvbiIsIkVkaXRvciIsImF0IiwidW5oYW5nUmFuZ2UiLCJtYXRjaCIsIm5vZGUiLCJpc0VkaXRvciIsIlNsYXRlRWxlbWVudCIsImlzRWxlbWVudCIsImNyZWF0ZUVkaXRMaXN0IiwiY29yZSIsImNoYW5nZXMiLCJ3cmFwSW5MaXN0IiwiaXNBY3RpdmUiLCJpc0xpc3QiLCJMSVNUX1RZUEVTIiwiaW5jbHVkZXMiLCJUcmFuc2Zvcm1zIiwidW53cmFwTm9kZXMiLCJuIiwic3BsaXQiLCJuZXdQcm9wZXJ0aWVzIiwic2V0Tm9kZXMiLCJibG9jayIsIndyYXBOb2RlcyIsIm9wdGlvbnMiLCJpY29uIiwic3VwcG9ydHMiLCJyZW5kZXJOb2RlIiwicHJvcHMiLCJhdHRyaWJ1dGVzIiwidG9vbGJhciIsImlzTWFyayIsIm9uQ2xpY2siLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJmdW5jIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BsdWdpbnMvbGlzdC9pbmRleC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHsgRWRpdG9yLCBFbGVtZW50IGFzIFNsYXRlRWxlbWVudCwgVHJhbnNmb3JtcyB9IGZyb20gJ3NsYXRlJztcbmltcG9ydCB7IGpzeCB9IGZyb20gXCJzbGF0ZS1oeXBlcnNjcmlwdFwiO1xuXG5jb25zdCBsb2cgPSBkZWJ1ZygnQHBpZS1saWI6ZWRpdGFibGUtaHRtbDpwbHVnaW5zOmxpc3QnKTtcblxuY29uc3QgYiA9ICh0eXBlLCBuZXh0LCBjaGlsZE5vZGVzKSA9PiAoe1xuICBvYmplY3Q6ICdibG9jaycsXG4gIHR5cGUsXG4gIG5vZGVzOiBuZXh0KGNoaWxkTm9kZXMpXG59KTtcblxuZXhwb3J0IGNvbnN0IHNlcmlhbGl6YXRpb24gPSB7XG4gIGRlc2VyaWFsaXplKGVsLCBuZXh0KSB7XG4gICAgY29uc3QgbmFtZSA9IGVsLnRhZ05hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBjaGlsZHJlbiA9IGVsLmNoaWxkcmVuLmxlbmd0aCA/IEFycmF5LmZyb20oZWwuY2hpbGRyZW4pIDogZWwuY2hpbGROb2RlcztcblxuICAgIGlmIChuYW1lID09PSAnbGknKSB7XG4gICAgICByZXR1cm4ganN4KFxuICAgICAgICAnZWxlbWVudCcsXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnbGknXG4gICAgICAgIH0sXG4gICAgICAgIG5leHQoY2hpbGRyZW4pXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChuYW1lID09PSAndWwnKSB7XG4gICAgICByZXR1cm4ganN4KFxuICAgICAgICAnZWxlbWVudCcsXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAndWwnXG4gICAgICAgIH0sXG4gICAgICAgIG5leHQoY2hpbGRyZW4pXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChuYW1lID09PSAnb2wnKSB7XG4gICAgICByZXR1cm4ganN4KFxuICAgICAgICAnZWxlbWVudCcsXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiAnb2wnXG4gICAgICAgIH0sXG4gICAgICAgIG5leHQoY2hpbGRyZW4pXG4gICAgICApO1xuICAgIH1cbiAgfSxcbiAgc2VyaWFsaXplKG9iamVjdCwgY2hpbGRyZW4pIHtcbiAgICBpZiAob2JqZWN0LnR5cGUgPT09ICdsaXN0X2l0ZW0nKSB7XG4gICAgICByZXR1cm4gPGxpPntjaGlsZHJlbn08L2xpPjtcbiAgICB9XG5cbiAgICBpZiAob2JqZWN0LnR5cGUgPT09ICd1bF9saXN0Jykge1xuICAgICAgcmV0dXJuIDx1bD57Y2hpbGRyZW59PC91bD47XG4gICAgfVxuXG4gICAgaWYgKG9iamVjdC50eXBlID09PSAnb2xfbGlzdCcpIHtcbiAgICAgIHJldHVybiA8b2w+e2NoaWxkcmVufTwvb2w+O1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgaXNCbG9ja0FjdGl2ZSA9IChlZGl0b3IsIGZvcm1hdCkgPT4ge1xuICBjb25zdCB7IHNlbGVjdGlvbiB9ID0gZWRpdG9yO1xuICBpZiAoIXNlbGVjdGlvbikgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IFttYXRjaF0gPSBBcnJheS5mcm9tKFxuICAgIEVkaXRvci5ub2RlcyhlZGl0b3IsIHtcbiAgICAgIGF0OiBFZGl0b3IudW5oYW5nUmFuZ2UoZWRpdG9yLCBzZWxlY3Rpb24pLFxuICAgICAgbWF0Y2g6IG5vZGUgPT4gIUVkaXRvci5pc0VkaXRvcihub2RlKSAmJiBTbGF0ZUVsZW1lbnQuaXNFbGVtZW50KG5vZGUpICYmIG5vZGUudHlwZSA9PT0gZm9ybWF0XG4gICAgfSlcbiAgKTtcblxuICByZXR1cm4gISFtYXRjaDtcbn07XG5cbmNvbnN0IGNyZWF0ZUVkaXRMaXN0ID0gKCkgPT4ge1xuICBjb25zdCBjb3JlID0ge1xuICAgIGNoYW5nZXM6IHt9XG4gIH07XG5cbiAgY29yZS5jaGFuZ2VzLndyYXBJbkxpc3QgPSAoZWRpdG9yLCBmb3JtYXQpID0+IHtcbiAgICBjb25zdCBpc0FjdGl2ZSA9IGlzQmxvY2tBY3RpdmUoZWRpdG9yLCBmb3JtYXQpO1xuICAgIGNvbnN0IGlzTGlzdCA9IExJU1RfVFlQRVMuaW5jbHVkZXMoZm9ybWF0KTtcblxuICAgIFRyYW5zZm9ybXMudW53cmFwTm9kZXMoZWRpdG9yLCB7XG4gICAgICBtYXRjaDogbiA9PlxuICAgICAgICAhRWRpdG9yLmlzRWRpdG9yKG4pICYmXG4gICAgICAgIFNsYXRlRWxlbWVudC5pc0VsZW1lbnQobikgJiZcbiAgICAgICAgTElTVF9UWVBFUy5pbmNsdWRlcyhuLnR5cGUpLFxuICAgICAgc3BsaXQ6IHRydWVcbiAgICB9KTtcblxuICAgIGNvbnN0IG5ld1Byb3BlcnRpZXMgPSB7XG4gICAgICB0eXBlOiBpc0FjdGl2ZSA/ICdwYXJhZ3JhcGgnIDogaXNMaXN0ID8gJ2xpc3RfaXRlbScgOiBmb3JtYXRcbiAgICB9O1xuXG4gICAgVHJhbnNmb3Jtcy5zZXROb2RlcyhlZGl0b3IsIG5ld1Byb3BlcnRpZXMpO1xuXG4gICAgaWYgKCFpc0FjdGl2ZSAmJiBpc0xpc3QpIHtcbiAgICAgIGNvbnN0IGJsb2NrID0geyB0eXBlOiBmb3JtYXQsIGNoaWxkcmVuOiBbXSB9O1xuICAgICAgVHJhbnNmb3Jtcy53cmFwTm9kZXMoZWRpdG9yLCBibG9jayk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBjb3JlO1xufTtcblxuY29uc3QgTElTVF9UWVBFUyA9IFsnb2xfbGlzdCcsICd1bF9saXN0JywgJ2xpc3RfaXRlbSddO1xuXG5leHBvcnQgZGVmYXVsdCBvcHRpb25zID0+IHtcbiAgY29uc3QgeyB0eXBlLCBpY29uIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IGNvcmUgPSBjcmVhdGVFZGl0TGlzdCgpO1xuXG4gIGNvcmUuc3VwcG9ydHMgPSBub2RlID0+IExJU1RfVFlQRVMuaW5jbHVkZXMobm9kZS50eXBlKTtcblxuICBjb3JlLnJlbmRlck5vZGUgPSBwcm9wcyA9PiB7XG4gICAgY29uc3QgeyBub2RlLCBhdHRyaWJ1dGVzLCBjaGlsZHJlbiB9ID0gcHJvcHM7XG5cbiAgICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAgICAgY2FzZSAndWxfbGlzdCc6XG4gICAgICAgIHJldHVybiA8dWwgey4uLmF0dHJpYnV0ZXN9PntjaGlsZHJlbn08L3VsPjtcbiAgICAgIGNhc2UgJ29sX2xpc3QnOlxuICAgICAgICByZXR1cm4gPG9sIHsuLi5hdHRyaWJ1dGVzfT57Y2hpbGRyZW59PC9vbD47XG4gICAgICBjYXNlICdsaXN0X2l0ZW0nOlxuICAgICAgICByZXR1cm4gPGxpIHsuLi5hdHRyaWJ1dGVzfT57Y2hpbGRyZW59PC9saT47XG4gICAgfVxuICB9O1xuXG4gIGNvcmUudG9vbGJhciA9IHtcbiAgICBpc01hcms6IGZhbHNlLFxuICAgIHR5cGUsXG4gICAgaWNvbixcbiAgICBpc0FjdGl2ZTogaXNCbG9ja0FjdGl2ZSxcbiAgICBvbkNsaWNrOiBlZGl0b3IgPT4ge1xuICAgICAgY29yZS5jaGFuZ2VzLndyYXBJbkxpc3QoZWRpdG9yLCB0eXBlKTtcbiAgICB9XG4gIH07XG5cbiAgY29yZS5yZW5kZXJOb2RlLnByb3BUeXBlcyA9IHtcbiAgICBub2RlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGF0dHJpYnV0ZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5mdW5jXG4gIH07XG5cbiAgcmV0dXJuIGNvcmU7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLElBQU1BLEdBQUcsR0FBRyxJQUFBQyxpQkFBQSxFQUFNLHFDQUFOLENBQVo7O0FBRUEsSUFBTUMsQ0FBQyxHQUFHLFNBQUpBLENBQUksQ0FBQ0MsSUFBRCxFQUFPQyxJQUFQLEVBQWFDLFVBQWI7RUFBQSxPQUE2QjtJQUNyQ0MsTUFBTSxFQUFFLE9BRDZCO0lBRXJDSCxJQUFJLEVBQUpBLElBRnFDO0lBR3JDSSxLQUFLLEVBQUVILElBQUksQ0FBQ0MsVUFBRDtFQUgwQixDQUE3QjtBQUFBLENBQVY7O0FBTU8sSUFBTUcsYUFBYSxHQUFHO0VBQzNCQyxXQUQyQix1QkFDZkMsRUFEZSxFQUNYTixJQURXLEVBQ0w7SUFDcEIsSUFBTU8sSUFBSSxHQUFHRCxFQUFFLENBQUNFLE9BQUgsQ0FBV0MsV0FBWCxFQUFiO0lBQ0EsSUFBTUMsUUFBUSxHQUFHSixFQUFFLENBQUNJLFFBQUgsQ0FBWUMsTUFBWixHQUFxQkMs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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugins/list/index.jsx"],"names":["log","b","type","next","childNodes","object","nodes","serialization","deserialize","el","name","tagName","toLowerCase","children","length","Array","from","serialize","createEditList","core","typeDefault","schema","blocks","Object","keys","forEach","key","block","parent","types","getHighestSelectedBlocks","value","range","selection","document","startBlock","getClosestBlock","startKey","endBlock","endKey","Immutable","List","ancestor","getCommonAncestor","startPath","getPath","endPath","slice","get","changes","wrapInList","change","data","selectedBlocks","wrapBlock","Data","create","normalize","node","utils","isList","_ref","unwrapNodeByKey","wrapBlockByKey","options","icon","renderNode","props","attributes","toolbar","isMark","isActive","isSelectionInList","current","getCurrentList","onClick","onChange","inList","call","unwrapList","propTypes","PropTypes","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Data } from 'slate';\nimport Immutable from 'immutable';\nimport PropTypes from 'prop-types';\nimport EditList from 'slate-edit-list';\nimport debug from 'debug';\n\nconst log = debug('@pie-lib:editable-html:plugins:list');\n\nconst b = (type, next, childNodes) => ({\n object: 'block',\n type,\n nodes: next(childNodes),\n});\n\nexport const serialization = {\n deserialize(el, next) {\n const name = el.tagName.toLowerCase();\n\n if (name === 'li') {\n return b('list_item', next, el.childNodes);\n }\n\n if (name === 'ul') {\n return b('ul_list', next, el.children.length ? Array.from(el.children) : el.childNodes);\n }\n\n if (name === 'ol') {\n return b('ol_list', next, el.children.length ? Array.from(el.children) : el.childNodes);\n }\n },\n serialize(object, children) {\n if (object.object !== 'block') return;\n\n if (object.type === 'list_item') {\n return <li>{children}</li>;\n }\n\n if (object.type === 'ul_list') {\n return <ul>{children}</ul>;\n }\n\n if (object.type === 'ol_list') {\n return <ol>{children}</ol>;\n }\n },\n};\n\nconst createEditList = () => {\n const core = EditList({\n typeDefault: 'span',\n });\n\n // fix outdated schema\n if (core.schema && core.schema.blocks) {\n Object.keys(core.schema.blocks).forEach((key) => {\n const block = core.schema.blocks[key];\n\n if (block.parent) {\n return;\n }\n\n block.nodes[0] = { type: block.nodes[0].types[0] };\n });\n }\n\n /**\n * This override of the core.changes.wrapInList is needed because the version\n * of immutable that we have does not support getting the element at a specific\n * index with a square bracket (list[0]). We have to use the list.get function instead\n */\n\n /**\n * Returns the highest list of blocks that cover the current selection\n */\n const getHighestSelectedBlocks = (value) => {\n const range = value.selection;\n const document = value.document;\n\n const startBlock = document.getClosestBlock(range.startKey);\n const endBlock = document.getClosestBlock(range.endKey);\n\n if (startBlock === endBlock) {\n return Immutable.List([startBlock]);\n }\n\n const ancestor = document.getCommonAncestor(startBlock.key, endBlock.key);\n const startPath = ancestor.getPath(startBlock.key);\n const endPath = ancestor.getPath(endBlock.key);\n\n return ancestor.nodes.slice(startPath.get(0), endPath.get(0) + 1);\n };\n\n /**\n * Wrap the blocks in the current selection in a new list. Selected\n * lists are merged together.\n */\n core.changes.wrapInList = function(change, type, data) {\n const selectedBlocks = getHighestSelectedBlocks(change.value);\n\n // Wrap in container\n change.wrapBlock({ type: type, data: Data.create(data) }, { normalize: false });\n\n // Wrap in list items\n selectedBlocks.forEach(function(node) {\n if (core.utils.isList(node)) {\n // Merge its items with the created list\n node.nodes.forEach(function(_ref) {\n const key = _ref.key;\n return change.unwrapNodeByKey(key, { normalize: false });\n });\n } else if (node.type !== 'list_item') {\n change.wrapBlockByKey(node.key, 'list_item', {\n normalize: false,\n });\n }\n });\n\n return change.normalize();\n };\n\n return core;\n};\n\nexport default (options) => {\n const { type, icon } = options;\n\n const core = createEditList();\n\n // eslint-disable-next-line react/display-name\n core.renderNode = (props) => {\n const { node, attributes, children } = props;\n\n switch (node.type) {\n case 'ul_list':\n return <ul {...attributes}>{children}</ul>;\n case 'ol_list':\n return <ol {...attributes}>{children}</ol>;\n case 'list_item':\n return <li {...attributes}>{children}</li>;\n }\n };\n\n core.toolbar = {\n isMark: false,\n type,\n icon,\n isActive: (value, type) => {\n if (!core.utils.isSelectionInList(value)) {\n return false;\n }\n const current = core.utils.getCurrentList(value);\n return current ? current.type === type : false;\n },\n onClick: (value, onChange) => {\n log('[onClick]', value);\n const inList = core.utils.isSelectionInList(value);\n if (inList) {\n const change = value.change().call(core.changes.unwrapList);\n onChange(change);\n } else {\n const change = value.change().call(core.changes.wrapInList, type);\n onChange(change);\n }\n },\n };\n\n core.renderNode.propTypes = {\n node: PropTypes.object,\n attributes: PropTypes.object,\n children: PropTypes.func,\n };\n\n return core;\n};\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["log","debug","b","type","next","childNodes","object","nodes","serialization","deserialize","el","name","tagName","toLowerCase","children","length","Array","from","jsx","serialize","isBlockActive","editor","format","selection","Editor","at","unhangRange","match","node","isEditor","SlateElement","isElement","createEditList","core","changes","wrapInList","isActive","isList","LIST_TYPES","includes","Transforms","unwrapNodes","n","split","newProperties","setNodes","block","wrapNodes","options","icon","supports","renderNode","props","attributes","toolbar","isMark","onClick","propTypes","PropTypes","func"],"sources":["../../../src/plugins/list/index.jsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport debug from 'debug';\nimport { Editor, Element as SlateElement, Transforms } from 'slate';\nimport { jsx } from \"slate-hyperscript\";\n\nconst log = debug('@pie-lib:editable-html:plugins:list');\n\nconst b = (type, next, childNodes) => ({\n object: 'block',\n type,\n nodes: next(childNodes)\n});\n\nexport const serialization = {\n deserialize(el, next) {\n const name = el.tagName.toLowerCase();\n const children = el.children.length ? Array.from(el.children) : el.childNodes;\n\n if (name === 'li') {\n return jsx(\n 'element',\n {\n type: 'li'\n },\n next(children)\n );\n }\n\n if (name === 'ul') {\n return jsx(\n 'element',\n {\n type: 'ul'\n },\n next(children)\n );\n }\n\n if (name === 'ol') {\n return jsx(\n 'element',\n {\n type: 'ol'\n },\n next(children)\n );\n }\n },\n serialize(object, children) {\n if (object.type === 'list_item') {\n return <li>{children}</li>;\n }\n\n if (object.type === 'ul_list') {\n return <ul>{children}</ul>;\n }\n\n if (object.type === 'ol_list') {\n return <ol>{children}</ol>;\n }\n }\n};\n\nconst isBlockActive = (editor, format) => {\n const { selection } = editor;\n if (!selection) return false;\n\n const [match] = Array.from(\n Editor.nodes(editor, {\n at: Editor.unhangRange(editor, selection),\n match: node => !Editor.isEditor(node) && SlateElement.isElement(node) && node.type === format\n })\n );\n\n return !!match;\n};\n\nconst createEditList = () => {\n const core = {\n changes: {}\n };\n\n core.changes.wrapInList = (editor, format) => {\n const isActive = isBlockActive(editor, format);\n const isList = LIST_TYPES.includes(format);\n\n Transforms.unwrapNodes(editor, {\n match: n =>\n !Editor.isEditor(n) &&\n SlateElement.isElement(n) &&\n LIST_TYPES.includes(n.type),\n split: true\n });\n\n const newProperties = {\n type: isActive ? 'paragraph' : isList ? 'list_item' : format\n };\n\n Transforms.setNodes(editor, newProperties);\n\n if (!isActive && isList) {\n const block = { type: format, children: [] };\n Transforms.wrapNodes(editor, block);\n }\n };\n\n return core;\n};\n\nconst LIST_TYPES = ['ol_list', 'ul_list', 'list_item'];\n\nexport default options => {\n const { type, icon } = options;\n\n const core = createEditList();\n\n core.supports = node => LIST_TYPES.includes(node.type);\n\n core.renderNode = props => {\n const { node, attributes, children } = props;\n\n switch (node.type) {\n case 'ul_list':\n return <ul {...attributes}>{children}</ul>;\n case 'ol_list':\n return <ol {...attributes}>{children}</ol>;\n case 'list_item':\n return <li {...attributes}>{children}</li>;\n }\n };\n\n core.toolbar = {\n isMark: false,\n type,\n icon,\n isActive: isBlockActive,\n onClick: editor => {\n core.changes.wrapInList(editor, type);\n }\n };\n\n core.renderNode.propTypes = {\n node: PropTypes.object,\n attributes: PropTypes.object,\n children: PropTypes.func\n };\n\n return core;\n};\n"],"mappings":"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"}
|
|
@@ -13,23 +13,27 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
13
13
|
|
|
14
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _react = _interopRequireDefault(require("react"));
|
|
17
17
|
|
|
18
18
|
var _slate = require("slate");
|
|
19
19
|
|
|
20
|
+
var _slateReact = require("slate-react");
|
|
21
|
+
|
|
22
|
+
var _slateHyperscript = require("slate-hyperscript");
|
|
23
|
+
|
|
24
|
+
var _Functions = _interopRequireDefault(require("@material-ui/icons/Functions"));
|
|
25
|
+
|
|
20
26
|
var _mathToolbar = require("@pie-lib/math-toolbar");
|
|
21
27
|
|
|
22
28
|
var _mathRendering = require("@pie-lib/math-rendering");
|
|
23
29
|
|
|
24
|
-
var _react = _interopRequireDefault(require("react"));
|
|
25
|
-
|
|
26
30
|
var _debug = _interopRequireDefault(require("debug"));
|
|
27
31
|
|
|
28
|
-
var _slatePropTypes = _interopRequireDefault(require("slate-prop-types"));
|
|
29
|
-
|
|
30
32
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
31
33
|
|
|
32
|
-
var
|
|
34
|
+
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
35
|
+
|
|
36
|
+
var _newSerialization = require("../../new-serialization");
|
|
33
37
|
|
|
34
38
|
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; }
|
|
35
39
|
|
|
@@ -52,10 +56,11 @@ function generateAdditionalKeys() {
|
|
|
52
56
|
|
|
53
57
|
var CustomToolbarComp = /*#__PURE__*/_react["default"].memo(function (props) {
|
|
54
58
|
var node = props.node,
|
|
55
|
-
value = props.value,
|
|
56
59
|
onFocus = props.onFocus,
|
|
57
60
|
onBlur = props.onBlur,
|
|
58
|
-
onClick = props.onClick
|
|
61
|
+
onClick = props.onClick,
|
|
62
|
+
editor = props.editor,
|
|
63
|
+
nodePath = props.nodePath;
|
|
59
64
|
|
|
60
65
|
var _ref = props || {},
|
|
61
66
|
pluginProps = _ref.pluginProps;
|
|
@@ -70,36 +75,34 @@ var CustomToolbarComp = /*#__PURE__*/_react["default"].memo(function (props) {
|
|
|
70
75
|
controlledKeypadMode = _ref3$controlledKeypa === void 0 ? true : _ref3$controlledKeypa;
|
|
71
76
|
|
|
72
77
|
var onDone = function onDone(latex) {
|
|
73
|
-
var update = _objectSpread(_objectSpread({}, node.data
|
|
78
|
+
var update = _objectSpread(_objectSpread({}, node.data), {}, {
|
|
74
79
|
latex: latex
|
|
75
80
|
});
|
|
76
81
|
|
|
77
|
-
|
|
78
|
-
|
|
82
|
+
editor.apply({
|
|
83
|
+
type: 'set_node',
|
|
84
|
+
path: nodePath,
|
|
85
|
+
properties: {
|
|
86
|
+
data: node.data
|
|
87
|
+
},
|
|
88
|
+
newProperties: {
|
|
89
|
+
data: update
|
|
90
|
+
}
|
|
79
91
|
});
|
|
80
|
-
var nextText = value.document.getNextText(node.key);
|
|
81
|
-
change.moveFocusTo(nextText.key, 0).moveAnchorTo(nextText.key, 0);
|
|
82
|
-
props.onToolbarDone(change, false);
|
|
83
|
-
};
|
|
84
92
|
|
|
85
|
-
|
|
86
|
-
var update = _objectSpread(_objectSpread({}, node.data.toObject()), {}, {
|
|
87
|
-
latex: latex
|
|
88
|
-
});
|
|
93
|
+
_slateReact.ReactEditor.focus(editor);
|
|
89
94
|
|
|
90
|
-
|
|
91
|
-
|
|
95
|
+
_slate.Transforms.move(editor, {
|
|
96
|
+
distance: 1,
|
|
97
|
+
unit: 'offset'
|
|
92
98
|
});
|
|
93
|
-
log('call onToolbarChange:', change);
|
|
94
|
-
props.onDataChange(node.key, update);
|
|
95
99
|
};
|
|
96
100
|
|
|
97
|
-
var latex = node.data.
|
|
101
|
+
var latex = node.data.latex;
|
|
98
102
|
return /*#__PURE__*/_react["default"].createElement(_mathToolbar.MathToolbar, {
|
|
99
103
|
autoFocus: true,
|
|
100
104
|
additionalKeys: generateAdditionalKeys(customKeys),
|
|
101
105
|
latex: latex,
|
|
102
|
-
onChange: onChange,
|
|
103
106
|
onDone: onDone,
|
|
104
107
|
onBlur: onBlur,
|
|
105
108
|
onFocus: onFocus,
|
|
@@ -124,34 +127,39 @@ var CustomToolbarComp = /*#__PURE__*/_react["default"].memo(function (props) {
|
|
|
124
127
|
controlledKeypadModeNext = _next$pluginProps$mat.controlledKeypadMode;
|
|
125
128
|
var keypadModeChanged = keypadMode !== keypadModeNext;
|
|
126
129
|
var controlledKeypadModeChanged = controlledKeypadMode !== controlledKeypadModeNext;
|
|
127
|
-
var equal = node
|
|
130
|
+
var equal = (0, _isEqual["default"])(node, nodeNext);
|
|
128
131
|
return equal && !keypadModeChanged && !controlledKeypadModeChanged;
|
|
129
132
|
});
|
|
130
133
|
|
|
131
134
|
exports.CustomToolbarComp = CustomToolbarComp;
|
|
132
135
|
CustomToolbarComp.propTypes = {
|
|
133
|
-
|
|
134
|
-
|
|
136
|
+
editor: _propTypes["default"].object,
|
|
137
|
+
node: _propTypes["default"].shape({
|
|
138
|
+
type: _propTypes["default"].string,
|
|
139
|
+
children: _propTypes["default"].array,
|
|
140
|
+
data: _propTypes["default"].object
|
|
141
|
+
}).isRequired,
|
|
142
|
+
value: _propTypes["default"].arrayOf(_propTypes["default"].shape({
|
|
143
|
+
type: _propTypes["default"].string,
|
|
144
|
+
children: _propTypes["default"].array,
|
|
145
|
+
data: _propTypes["default"].object
|
|
146
|
+
})).isRequired,
|
|
135
147
|
onToolbarDone: _propTypes["default"].func,
|
|
136
|
-
onDataChange: _propTypes["default"].func,
|
|
137
148
|
onFocus: _propTypes["default"].func,
|
|
138
149
|
onClick: _propTypes["default"].func,
|
|
139
150
|
onBlur: _propTypes["default"].func
|
|
140
151
|
};
|
|
152
|
+
var mathTypes = ['math', 'mathml'];
|
|
141
153
|
|
|
142
154
|
function MathPlugin() {
|
|
143
155
|
return {
|
|
144
156
|
name: 'math',
|
|
145
157
|
toolbar: {
|
|
146
158
|
icon: /*#__PURE__*/_react["default"].createElement(_Functions["default"], null),
|
|
147
|
-
onClick: function onClick(
|
|
159
|
+
onClick: function onClick(editor) {
|
|
148
160
|
log('[insertMath]');
|
|
149
161
|
var math = inlineMath();
|
|
150
|
-
|
|
151
|
-
onChange(change);
|
|
152
|
-
},
|
|
153
|
-
supports: function supports(node) {
|
|
154
|
-
return node && node.object === 'inline' && node.type === 'math';
|
|
162
|
+
editor.insertNode(math);
|
|
155
163
|
},
|
|
156
164
|
|
|
157
165
|
/**
|
|
@@ -163,6 +171,23 @@ function MathPlugin() {
|
|
|
163
171
|
*/
|
|
164
172
|
CustomToolbarComp: CustomToolbarComp
|
|
165
173
|
},
|
|
174
|
+
rules: function rules(editor) {
|
|
175
|
+
var isVoid = editor.isVoid,
|
|
176
|
+
isInline = editor.isInline;
|
|
177
|
+
|
|
178
|
+
editor.isVoid = function (element) {
|
|
179
|
+
return mathTypes.includes(element.type) ? true : isVoid(element);
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
editor.isInline = function (element) {
|
|
183
|
+
return mathTypes.includes(element.type) ? true : isInline(element);
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
return editor;
|
|
187
|
+
},
|
|
188
|
+
supports: function supports(node) {
|
|
189
|
+
return mathTypes.includes(node.type);
|
|
190
|
+
},
|
|
166
191
|
schema: {
|
|
167
192
|
document: {
|
|
168
193
|
match: [{
|
|
@@ -189,12 +214,13 @@ function MathPlugin() {
|
|
|
189
214
|
|
|
190
215
|
|
|
191
216
|
if (props.node.type === 'mathml') {
|
|
192
|
-
var html = props.node.data.
|
|
193
|
-
return /*#__PURE__*/_react["default"].createElement("span", (0, _extends2["default"])({}, props.attributes, {
|
|
217
|
+
var html = props.node.data.html;
|
|
218
|
+
return /*#__PURE__*/_react["default"].createElement("span", null, /*#__PURE__*/_react["default"].createElement("span", (0, _extends2["default"])({}, props.attributes, {
|
|
219
|
+
contentEditable: false,
|
|
194
220
|
dangerouslySetInnerHTML: {
|
|
195
221
|
__html: html
|
|
196
222
|
}
|
|
197
|
-
}));
|
|
223
|
+
})), props.children);
|
|
198
224
|
}
|
|
199
225
|
}
|
|
200
226
|
};
|
|
@@ -206,14 +232,15 @@ MathPlugin.DOLLAR = 'dollar';
|
|
|
206
232
|
MathPlugin.DOUBLE_DOLLAR = 'double_dollar';
|
|
207
233
|
|
|
208
234
|
var inlineMath = function inlineMath() {
|
|
209
|
-
return
|
|
210
|
-
object: 'inline',
|
|
235
|
+
return {
|
|
211
236
|
type: 'math',
|
|
212
|
-
isVoid: true,
|
|
213
237
|
data: {
|
|
214
238
|
latex: ''
|
|
215
|
-
}
|
|
216
|
-
|
|
239
|
+
},
|
|
240
|
+
children: [{
|
|
241
|
+
text: ''
|
|
242
|
+
}]
|
|
243
|
+
};
|
|
217
244
|
};
|
|
218
245
|
|
|
219
246
|
exports.inlineMath = inlineMath;
|
|
@@ -258,7 +285,7 @@ var lessThanHandling = function lessThanHandling(input) {
|
|
|
258
285
|
};
|
|
259
286
|
|
|
260
287
|
var serialization = {
|
|
261
|
-
deserialize: function deserialize(el) {
|
|
288
|
+
deserialize: function deserialize(el, children) {
|
|
262
289
|
var tagName = getTagName(el);
|
|
263
290
|
/**
|
|
264
291
|
* This is used for when there's a wrapper over the mathml element.
|
|
@@ -268,7 +295,7 @@ var serialization = {
|
|
|
268
295
|
* This is for legacy content only since our math rendering is valid for the core slate rules
|
|
269
296
|
*/
|
|
270
297
|
|
|
271
|
-
var hasMathChild =
|
|
298
|
+
var hasMathChild = _newSerialization.BLOCK_TAGS[tagName] && el.childNodes.length === 1 && getTagName(el.firstChild) === 'math';
|
|
272
299
|
log('[deserialize] name: ', tagName);
|
|
273
300
|
/**
|
|
274
301
|
* This is here in order to be able to render mathml content
|
|
@@ -276,14 +303,12 @@ var serialization = {
|
|
|
276
303
|
|
|
277
304
|
if (tagName === 'math' || el.dataset && el.dataset.type === 'mathml' || hasMathChild) {
|
|
278
305
|
var newHtml = hasMathChild ? el.innerHTML : el.outerHTML;
|
|
279
|
-
return {
|
|
280
|
-
object: 'inline',
|
|
281
|
-
isVoid: true,
|
|
306
|
+
return (0, _slateHyperscript.jsx)('element', {
|
|
282
307
|
type: 'mathml',
|
|
283
308
|
data: {
|
|
284
309
|
html: newHtml
|
|
285
310
|
}
|
|
286
|
-
};
|
|
311
|
+
});
|
|
287
312
|
}
|
|
288
313
|
|
|
289
314
|
if (el.nodeType === TEXT_NODE) {
|
|
@@ -304,24 +329,23 @@ var serialization = {
|
|
|
304
329
|
wrapType = _unWrapMath.wrapType;
|
|
305
330
|
|
|
306
331
|
log('[deserialize]: noBrackets: ', unwrapped, wrapType);
|
|
307
|
-
return {
|
|
308
|
-
object: 'inline',
|
|
332
|
+
return (0, _slateHyperscript.jsx)('element', {
|
|
309
333
|
type: 'math',
|
|
310
|
-
isVoid: true,
|
|
311
|
-
nodes: [],
|
|
312
334
|
data: {
|
|
313
335
|
latex: unwrapped,
|
|
314
336
|
wrapper: wrapType
|
|
315
337
|
}
|
|
316
|
-
};
|
|
338
|
+
});
|
|
317
339
|
}
|
|
318
340
|
},
|
|
319
341
|
serialize: function serialize(object) {
|
|
320
342
|
if (object.type === 'math') {
|
|
321
|
-
var
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
343
|
+
var _ref4 = object.data || {},
|
|
344
|
+
latex = _ref4.latex,
|
|
345
|
+
wrapper = _ref4.wrapper;
|
|
346
|
+
|
|
347
|
+
log('[serialize] latex: ', latex);
|
|
348
|
+
var decoded = htmlDecode(lessThanHandling(latex));
|
|
325
349
|
return /*#__PURE__*/_react["default"].createElement("span", {
|
|
326
350
|
"data-latex": "",
|
|
327
351
|
"data-raw": decoded
|
|
@@ -333,7 +357,9 @@ var serialization = {
|
|
|
333
357
|
|
|
334
358
|
|
|
335
359
|
if (object.type === 'mathml') {
|
|
336
|
-
var
|
|
360
|
+
var _ref5 = object.data || {},
|
|
361
|
+
html = _ref5.html;
|
|
362
|
+
|
|
337
363
|
return /*#__PURE__*/_react["default"].createElement("span", {
|
|
338
364
|
"data-type": "mathml",
|
|
339
365
|
dangerouslySetInnerHTML: {
|
|
@@ -344,4 +370,4 @@ var serialization = {
|
|
|
344
370
|
}
|
|
345
371
|
};
|
|
346
372
|
exports.serialization = serialization;
|
|
347
|
-
//# sourceMappingURL=index.js.map
|
|
373
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJkZWJ1ZyIsIlRFWFRfTk9ERSIsImdlbmVyYXRlQWRkaXRpb25hbEtleXMiLCJrZXlEYXRhIiwibWFwIiwia2V5IiwibmFtZSIsImxhdGV4Iiwid3JpdGUiLCJsYWJlbCIsIkN1c3RvbVRvb2xiYXJDb21wIiwiUmVhY3QiLCJtZW1vIiwicHJvcHMiLCJub2RlIiwib25Gb2N1cyIsIm9uQmx1ciIsIm9uQ2xpY2siLCJlZGl0b3IiLCJub2RlUGF0aCIsInBsdWdpblByb3BzIiwibWF0aCIsImtleXBhZE1vZGUiLCJjdXN0b21LZXlzIiwiY29udHJvbGxlZEtleXBhZE1vZGUiLCJvbkRvbmUiLCJ1cGRhdGUiLCJkYXRhIiwiYXBwbHkiLCJ0eXBlIiwicGF0aCIsInByb3BlcnRpZXMiLCJuZXdQcm9wZXJ0aWVzIiwiUmVhY3RFZGl0b3IiLCJmb2N1cyIsIlRyYW5zZm9ybXMiLCJtb3ZlIiwiZGlzdGFuY2UiLCJ1bml0IiwicHJldiIsIm5leHQiLCJub2RlTmV4dCIsImtleXBhZE1vZGVOZXh0IiwiY29udHJvbGxlZEtleXBhZE1vZGVOZXh0Iiwia2V5cGFkTW9kZUNoYW5nZWQiLCJjb250cm9sbGVkS2V5cGFkTW9kZUNoYW5nZWQiLCJlcXVhbCIsImlzRXF1YWwiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJvYmplY3QiLCJzaGFwZSIsInN0cmluZyIsImNoaWxkcmVuIiwiYXJyYXkiLCJpc1JlcXVpcmVkIiwidmFsdWUiLCJhcnJheU9mIiwib25Ub29sYmFyRG9uZSIsImZ1bmMiLCJtYXRoVHlwZXMiLCJNYXRoUGx1Z2luIiwidG9vbGJhciIsImljb24iLCJpbmxpbmVNYXRoIiwiaW5zZXJ0Tm9kZSIsInJ1bGVzIiwiaXNWb2lkIiwiaXNJbmxpbmUiLCJlbGVtZW50IiwiaW5jbHVkZXMiLCJzdXBwb3J0cyIsInNjaGVtYSIsImRvY3VtZW50IiwibWF0Y2giLCJwbHVnaW5TdHlsZXMiLCJwYXJlbnROb2RlIiwicCIsInBvc2l0aW9uIiwidG9wIiwicmVuZGVyTm9kZSIsImh0bWwiLCJhdHRyaWJ1dGVzIiwiX19odG1sIiwiUk9VTkRfQlJBQ0tFVFMiLCJTUVVBUkVfQlJBQ0tFVFMiLCJET0xMQVIiLCJET1VCTEVfRE9MTEFSIiwidGV4dCIsImh0bWxEZWNvZGUiLCJpbnB1dCIsImRvYyIsIkRPTVBhcnNlciIsInBhcnNlRnJvbVN0cmluZyIsImRvY3VtZW50RWxlbWVudCIsInRleHRDb250ZW50IiwiZ2V0VGFnTmFtZSIsImVsIiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwibGVzc1RoYW5IYW5kbGluZyIsImFycm93U3BsaXQiLCJzcGxpdCIsImxlbmd0aCIsInJlZHVjZSIsInN0IiwicGFydCIsInNlcmlhbGl6YXRpb24iLCJkZXNlcmlhbGl6ZSIsImhhc01hdGhDaGlsZCIsIkJMT0NLX1RBR1MiLCJjaGlsZE5vZGVzIiwiZmlyc3RDaGlsZCIsImRhdGFzZXQiLCJuZXdIdG1sIiwiaW5uZXJIVE1MIiwib3V0ZXJIVE1MIiwianN4Iiwibm9kZVR5cGUiLCJoYXNMYXRleCIsImhhc0F0dHJpYnV0ZSIsInVuV3JhcE1hdGgiLCJ1bndyYXBwZWQiLCJ3cmFwVHlwZSIsIndyYXBwZXIiLCJzZXJpYWxpemUiLCJkZWNvZGVkIiwid3JhcE1hdGgiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGx1Z2lucy9tYXRoL2luZGV4LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgRWRpdG9yLCBJbmxpbmUsIFRyYW5zZm9ybXMgfSBmcm9tICdzbGF0ZSc7XG5pbXBvcnQgeyBSZWFjdEVkaXRvciB9IGZyb20gJ3NsYXRlLXJlYWN0JztcbmltcG9ydCB7IGpzeCB9IGZyb20gJ3NsYXRlLWh5cGVyc2NyaXB0JztcbmltcG9ydCBGdW5jdGlvbnMgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Z1bmN0aW9ucyc7XG5pbXBvcnQgeyBNYXRoUHJldmlldywgTWF0aFRvb2xiYXIgfSBmcm9tICdAcGllLWxpYi9tYXRoLXRvb2xiYXInO1xuaW1wb3J0IHsgd3JhcE1hdGgsIHVuV3JhcE1hdGggfSBmcm9tICdAcGllLWxpYi9tYXRoLXJlbmRlcmluZyc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBpc0VxdWFsIGZyb20gJ2xvZGFzaC9pc0VxdWFsJztcblxuaW1wb3J0IHsgQkxPQ0tfVEFHUyB9IGZyb20gJy4uLy4uL25ldy1zZXJpYWxpemF0aW9uJztcbmNvbnN0IGxvZyA9IGRlYnVnKCdAcGllLWxpYjplZGl0YWJsZS1odG1sOnBsdWdpbnM6bWF0aCcpO1xuXG5jb25zdCBURVhUX05PREUgPSAzO1xuXG5mdW5jdGlvbiBnZW5lcmF0ZUFkZGl0aW9uYWxLZXlzKGtleURhdGEgPSBbXSkge1xuICByZXR1cm4ga2V5RGF0YS5tYXAoa2V5ID0+ICh7XG4gICAgbmFtZToga2V5LFxuICAgIGxhdGV4OiBrZXksXG4gICAgd3JpdGU6IGtleSxcbiAgICBsYWJlbDoga2V5XG4gIH0pKTtcbn1cblxuZXhwb3J0IGNvbnN0IEN1c3RvbVRvb2xiYXJDb21wID0gUmVhY3QubWVtbyhcbiAgcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgbm9kZSwgb25Gb2N1cywgb25CbHVyLCBvbkNsaWNrLCBlZGl0b3IsIG5vZGVQYXRoIH0gPSBwcm9wcztcbiAgICBjb25zdCB7IHBsdWdpblByb3BzIH0gPSBwcm9wcyB8fCB7fTtcbiAgICBjb25zdCB7IG1hdGggfSA9IHBsdWdpblByb3BzIHx8IHt9O1xuICAgIGNvbnN0IHsga2V5cGFkTW9kZSwgY3VzdG9tS2V5cywgY29udHJvbGxlZEtleXBhZE1vZGUgPSB0cnVlIH0gPSBtYXRoIHx8IHt9O1xuXG4gICAgY29uc3Qgb25Eb25lID0gbGF0ZXggPT4ge1xuICAgICAgY29uc3QgdXBkYXRlID0ge1xuICAgICAgICAuLi5ub2RlLmRhdGEsXG4gICAgICAgIGxhdGV4XG4gICAgICB9O1xuICAgICAgZWRpdG9yLmFwcGx5KHtcbiAgICAgICAgdHlwZTogJ3NldF9ub2RlJyxcbiAgICAgICAgcGF0aDogbm9kZVBhdGgsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBkYXRhOiBub2RlLmRhdGFcbiAgICAgICAgfSxcbiAgICAgICAgbmV3UHJvcGVydGllczogeyBkYXRhOiB1cGRhdGUgfVxuICAgICAgfSk7XG4gICAgICBSZWFjdEVkaXRvci5mb2N1cyhlZGl0b3IpO1xuICAgICAgVHJhbnNmb3Jtcy5tb3ZlKGVkaXRvciwgeyBkaXN0YW5jZTogMSwgdW5pdDogJ29mZnNldCcgfSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGxhdGV4ID0gbm9kZS5kYXRhLmxhdGV4O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxNYXRoVG9vbGJhclxuICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgYWRkaXRpb25hbEtleXM9e2dlbmVyYXRlQWRkaXRpb25hbEtleXMoY3VzdG9tS2V5cyl9XG4gICAgICAgIGxhdGV4PXtsYXRleH1cbiAgICAgICAgb25Eb25lPXtvbkRvbmV9XG4gICAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgICBvbkZvY3VzPXtvbkZvY3VzfVxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgICBrZXlwYWRNb2RlPXtrZXlwYWRNb2RlfVxuICAgICAgICBjb250cm9sbGVkS2V5cGFkTW9kZT17Y29udHJvbGxlZEtleXBhZE1vZGV9XG4gICAgICAvPlxuICAgICk7XG4gIH0sXG4gIChwcmV2LCBuZXh0KSA9PiB7XG4gICAgY29uc3QgeyBub2RlLCBwbHVnaW5Qcm9wczogeyBtYXRoOiB7IGtleXBhZE1vZGUsIGNvbnRyb2xsZWRLZXlwYWRNb2RlIH0gPSB7fSB9ID0ge30gfSA9IHByZXY7XG4gICAgY29uc3Qge1xuICAgICAgbm9kZTogbm9kZU5leHQsXG4gICAgICBwbHVnaW5Qcm9wczoge1xuICAgICAgICBtYXRoOiB7IGtleXBhZE1vZGU6IGtleXBhZE1vZGVOZXh0LCBjb250cm9sbGVkS2V5cGFkTW9kZTogY29udHJvbGxlZEtleXBhZE1vZGVOZXh0IH0gPSB7fVxuICAgICAgfSA9IHt9XG4gICAgfSA9IG5leHQ7XG4gICAgY29uc3Qga2V5cGFkTW9kZUNoYW5nZWQgPSBrZXlwYWRNb2RlICE9PSBrZXlwYWRNb2RlTmV4dDtcbiAgICBjb25zdCBjb250cm9sbGVkS2V5cGFkTW9kZUNoYW5nZWQgPSBjb250cm9sbGVkS2V5cGFkTW9kZSAhPT0gY29udHJvbGxlZEtleXBhZE1vZGVOZXh0O1xuXG4gICAgY29uc3QgZXF1YWwgPSBpc0VxdWFsKG5vZGUsIG5vZGVOZXh0KTtcbiAgICByZXR1cm4gZXF1YWwgJiYgIWtleXBhZE1vZGVDaGFuZ2VkICYmICFjb250cm9sbGVkS2V5cGFkTW9kZUNoYW5nZWQ7XG4gIH1cbik7XG5cbkN1c3RvbVRvb2xiYXJDb21wLnByb3BUeXBlcyA9IHtcbiAgZWRpdG9yOiBQcm9wVHlwZXMub2JqZWN0LFxuICBub2RlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIHR5cGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY2hpbGRyZW46IFByb3BUeXBlcy5hcnJheSxcbiAgICBkYXRhOiBQcm9wVHlwZXMub2JqZWN0XG4gIH0pLmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYXJyYXlPZihcbiAgICBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgdHlwZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgICBkYXRhOiBQcm9wVHlwZXMub2JqZWN0XG4gICAgfSlcbiAgKS5pc1JlcXVpcmVkLFxuICBvblRvb2xiYXJEb25lOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Gb2N1czogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBvbkJsdXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5jb25zdCBtYXRoVHlwZXMgPSBbJ21hdGgnLCAnbWF0aG1sJ107XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE1hdGhQbHVnaW4oKSB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ21hdGgnLFxuICAgIHRvb2xiYXI6IHtcbiAgICAgIGljb246IDxGdW5jdGlvbnMgLz4sXG4gICAgICBvbkNsaWNrOiBlZGl0b3IgPT4ge1xuICAgICAgICBsb2coJ1tpbnNlcnRNYXRoXScpO1xuICAgICAgICBjb25zdCBtYXRoID0gaW5saW5lTWF0aCgpO1xuXG4gICAgICAgIGVkaXRvci5pbnNlcnROb2RlKG1hdGgpO1xuICAgICAgfSxcbiAgICAgIC8qKlxuICAgICAgICogUmV0dXJuIGEgcmVhY3QgY29tcG9uZW50IGZ1bmN0aW9uXG4gICAgICAgKiBAcGFyYW0gbm9kZSB7U2xhdGUuTm9kZX1cbiAgICAgICAqIEBwYXJhbSB2YWx1ZSB7U2xhdGUuVmFsdWV9XG4gICAgICAgKiBAcGFyYW0gb25Eb25lIHsoY2hhbmdlPzogU2xhdGUuQ2hhbmdlLCBmaW5pc2hFZGl0aW5nIDpib29sZWEpID0+IHZvaWR9IC0gYSBmdW5jdGlvbiB0byBjYWxsIG9uY2UgdGhlIHRvb2xiYXJcbiAgICAgICAqICAgaGFzIG1hZGUgYW55IGNoYW5nZXMsIGNhbGwgd2l0aCB0aGUgbm9kZS5rZXkgYW5kIGEgZGF0YSBvYmplY3QuXG4gICAgICAgKi9cbiAgICAgIEN1c3RvbVRvb2xiYXJDb21wXG4gICAgfSxcbiAgICBydWxlczogZWRpdG9yID0+IHtcbiAgICAgIGNvbnN0IHsgaXNWb2lkLCBpc0lubGluZSB9ID0gZWRpdG9yO1xuXG4gICAgICBlZGl0b3IuaXNWb2lkID0gZWxlbWVudCA9PiB7XG4gICAgICAgIHJldHVybiBtYXRoVHlwZXMuaW5jbHVkZXMoZWxlbWVudC50eXBlKSA/IHRydWUgOiBpc1ZvaWQoZWxlbWVudCk7XG4gICAgICB9O1xuXG4gICAgICBlZGl0b3IuaXNJbmxpbmUgPSBlbGVtZW50ID0+IHtcbiAgICAgICAgcmV0dXJuIG1hdGhUeXBlcy5pbmNsdWRlcyhlbGVtZW50LnR5cGUpID8gdHJ1ZSA6IGlzSW5saW5lKGVsZW1lbnQpO1xuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGVkaXRvcjtcbiAgICB9LFxuICAgIHN1cHBvcnRzOiBub2RlID0+IG1hdGhUeXBlcy5pbmNsdWRlcyhub2RlLnR5cGUpLFxuICAgIHNjaGVtYToge1xuICAgICAgZG9jdW1lbnQ6IHsgbWF0Y2g6IFt7IHR5cGU6ICdtYXRoJyB9XSB9XG4gICAgfSxcblxuICAgIHBsdWdpblN0eWxlczogKG5vZGUsIHBhcmVudE5vZGUsIHApID0+IHtcbiAgICAgIGlmIChwKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgdG9wOiAnaW5pdGlhbCdcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgcmVuZGVyTm9kZTogcHJvcHMgPT4ge1xuICAgICAgaWYgKHByb3BzLm5vZGUudHlwZSA9PT0gJ21hdGgnKSB7XG4gICAgICAgIGxvZygnW3JlbmRlck5vZGVdOiBkYXRhOicsIHByb3BzLm5vZGUuZGF0YSk7XG4gICAgICAgIHJldHVybiA8TWF0aFByZXZpZXcgey4uLnByb3BzfSAvPjtcbiAgICAgIH1cblxuICAgICAgLyoqXG4gICAgICAgKiBIZXJlIGZvciByZW5kZXJpbmcgbWF0aG1sIGNvbnRlbnRcbiAgICAgICAqL1xuICAgICAgaWYgKHByb3BzLm5vZGUudHlwZSA9PT0gJ21hdGhtbCcpIHtcbiAgICAgICAgY29uc3QgeyBkYXRhOiB7IGh0bWwgfSB9ID0gcHJvcHMubm9kZTtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgPHNwYW4gey4uLnByb3BzLmF0dHJpYnV0ZXN9IGNvbnRlbnRFZGl0YWJsZT17ZmFsc2V9IGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogaHRtbCB9fSAvPlxuICAgICAgICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG59XG5cbk1hdGhQbHVnaW4uUk9VTkRfQlJBQ0tFVFMgPSAncm91bmRfYnJhY2tldHMnO1xuTWF0aFBsdWdpbi5TUVVBUkVfQlJBQ0tFVFMgPSAnc3F1YXJlX2JyYWNrZXRzJztcbk1hdGhQbHVnaW4uRE9MTEFSID0gJ2RvbGxhcic7XG5NYXRoUGx1Z2luLkRPVUJMRV9ET0xMQVIgPSAnZG91YmxlX2RvbGxhcic7XG5cbmV4cG9ydCBjb25zdCBpbmxpbmVNYXRoID0gKCkgPT4gKHtcbiAgdHlwZTogJ21hdGgnLFxuICBkYXRhOiB7XG4gICAgbGF0ZXg6ICcnXG4gIH0sXG4gIGNoaWxkcmVuOiBbeyB0ZXh0OiAnJyB9XVxufSk7XG5cbmNvbnN0IGh0bWxEZWNvZGUgPSBpbnB1dCA9PiB7XG4gIGNvbnN0IGRvYyA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcoaW5wdXQsICd0ZXh0L2h0bWwnKTtcblxuICByZXR1cm4gZG9jLmRvY3VtZW50RWxlbWVudC50ZXh0Q29udGVudDtcbn07XG5cbmNvbnN0IGdldFRhZ05hbWUgPSBlbCA9PiB7XG4gIHJldHVybiAoKGVsICYmIGVsLnRhZ05hbWUpIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xufTtcblxuLyoqXG4gKiBNYWtlcyBzdXJlIHRoYXQgc3RyaW5ncyB0aGF0IGNvbnRhaW4gc3R1ZmYgbGlrZTpcbiAqIHg8eSBhcmUgbm90IHRyYW5zZm9ybWVkIGludG8geCBieSB0aGUgRE9NUGFyc2VyIGJlY2F1c2UgaXQgdGhpbmtzXG4gKiB0aGF0IDx5IGlzIHRoZSBzdGFydCBvZiBhIGRvbSBlbGVtZW50IHRhZ1xuICogQHBhcmFtIGlucHV0XG4gKiBAcmV0dXJucyB7Kn1cbiAqL1xuY29uc3QgbGVzc1RoYW5IYW5kbGluZyA9IGlucHV0ID0+IHtcbiAgY29uc3QgYXJyb3dTcGxpdCA9IGlucHV0LnNwbGl0KCc8Jyk7XG5cbiAgLy8gaWYgd2UgZG9uJ3QgaGF2ZSBhdCBsZWFzdCAyIGNoYXJhY3RlcnMgdGhlcmUncyBubyBwb2ludCBpbiBjaGVja2luZ1xuICBpZiAoaW5wdXQubGVuZ3RoID4gMikge1xuICAgIHJldHVybiBhcnJvd1NwbGl0LnJlZHVjZSgoc3QsIHBhcnQpID0+IHtcbiAgICAgIC8qXG4gICAgICAgV2UgY2hlY2sgaWYgdGhpcyBlbGVtZW50IHJlc3VsdGVkIGlzOlxuICAgICAgIGRpdiAtIGNvbnRpbnVhdGlvbiBvZiBhIGJlZ2lubmluZyBvZiBhIEhUTUwgZWxlbWVudFxuICAgICAgIC9kaXYgLSBjbG9zaW5nIG9mIGEgSFRNTCB0YWdcbiAgICAgICBici8+IC0gYmVnaW5uaW5nIGFuZCBjbG9zaW5nIG9mIGEgaHRtbCBUQUdcbiAgICAgICAqL1xuICAgICAgaWYgKHBhcnQubWF0Y2goLzxbYS16QS1aL11bXFxzXFxTXSo+L2dpKSkge1xuICAgICAgICByZXR1cm4gYCR7c3R9JHtzdCA/ICc8JyA6ICcnfSR7cGFydH1gO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYCR7c3R9JHtzdCA/ICcmbHQ7JyA6ICcnfSR7cGFydH1gO1xuICAgIH0sICcnKTtcbiAgfVxuXG4gIHJldHVybiBpbnB1dDtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXJpYWxpemF0aW9uID0ge1xuICBkZXNlcmlhbGl6ZShlbCwgY2hpbGRyZW4pIHtcbiAgICBjb25zdCB0YWdOYW1lID0gZ2V0VGFnTmFtZShlbCk7XG4gICAgLyoqXG4gICAgICogVGhpcyBpcyB1c2VkIGZvciB3aGVuIHRoZXJlJ3MgYSB3cmFwcGVyIG92ZXIgdGhlIG1hdGhtbCBlbGVtZW50LlxuICAgICAqIEJlY2F1c2Ugb2YgdGhpcyBzbGF0ZSBydWxlOiBcIk9ubHkgYWxsb3cgYmxvY2sgbm9kZXMgb3IgaW5saW5lIGFuZCB0ZXh0IG5vZGVzIGluIGJsb2Nrcy5cIlxuICAgICAqIFRoZSBlbGVtZW50IHRoYXQgY29udGFpbnMgb25seSB0aGUgbWF0aG1sIGlzIHJlbW92ZWQgKGFsb25nIHdpdGggdGhlIG1hdGgpIGJlY2F1c2UgaXQgaGFzXG4gICAgICogYW4gaW5saW5lIGNoaWxkIGFuZCB0aGUgYmxvY2sgaXMgb2YgdHlwZSBibG9ja1xuICAgICAqIFRoaXMgaXMgZm9yIGxlZ2FjeSBjb250ZW50IG9ubHkgc2luY2Ugb3VyIG1hdGggcmVuZGVyaW5nIGlzIHZhbGlkIGZvciB0aGUgY29yZSBzbGF0ZSBydWxlc1xuICAgICAqL1xuICAgIGNvbnN0IGhhc01hdGhDaGlsZCA9XG4gICAgICBCTE9DS19UQUdTW3RhZ05hbWVdICYmIGVsLmNoaWxkTm9kZXMubGVuZ3RoID09PSAxICYmIGdldFRhZ05hbWUoZWwuZmlyc3RDaGlsZCkgPT09ICdtYXRoJztcbiAgICBsb2coJ1tkZXNlcmlhbGl6ZV0gbmFtZTogJywgdGFnTmFtZSk7XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGlzIGhlcmUgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byByZW5kZXIgbWF0aG1sIGNvbnRlbnRcbiAgICAgKi9cbiAgICBpZiAodGFnTmFtZSA9PT0gJ21hdGgnIHx8IChlbC5kYXRhc2V0ICYmIGVsLmRhdGFzZXQudHlwZSA9PT0gJ21hdGhtbCcpIHx8IGhhc01hdGhDaGlsZCkge1xuICAgICAgY29uc3QgbmV3SHRtbCA9IGhhc01hdGhDaGlsZCA/IGVsLmlubmVySFRNTCA6IGVsLm91dGVySFRNTDtcblxuICAgICAgcmV0dXJuIGpzeCgnZWxlbWVudCcsIHtcbiAgICAgICAgdHlwZTogJ21hdGhtbCcsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBodG1sOiBuZXdIdG1sXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChlbC5ub2RlVHlwZSA9PT0gVEVYVF9OT0RFKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRhZ05hbWUgIT09ICdzcGFuJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGhhc0xhdGV4ID0gZWwuaGFzQXR0cmlidXRlKCdkYXRhLWxhdGV4JykgfHwgZWwuaGFzQXR0cmlidXRlKCdsYXRleCcpO1xuXG4gICAgaWYgKGhhc0xhdGV4KSB7XG4gICAgICBjb25zdCBsYXRleCA9IGh0bWxEZWNvZGUoZWwuaW5uZXJIVE1MKTtcbiAgICAgIGNvbnN0IHsgdW53cmFwcGVkLCB3cmFwVHlwZSB9ID0gdW5XcmFwTWF0aChsYXRleCk7XG4gICAgICBsb2coJ1tkZXNlcmlhbGl6ZV06IG5vQnJhY2tldHM6ICcsIHVud3JhcHBlZCwgd3JhcFR5cGUpO1xuXG4gICAgICByZXR1cm4ganN4KCdlbGVtZW50Jywge1xuICAgICAgICB0eXBlOiAnbWF0aCcsXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBsYXRleDogdW53cmFwcGVkLFxuICAgICAgICAgIHdyYXBwZXI6IHdyYXBUeXBlXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSxcbiAgc2VyaWFsaXplKG9iamVjdCkge1xuICAgIGlmIChvYmplY3QudHlwZSA9PT0gJ21hdGgnKSB7XG4gICAgICBjb25zdCB7IGxhdGV4LCB3cmFwcGVyIH0gPSBvYmplY3QuZGF0YSB8fCB7fTtcbiAgICAgIGxvZygnW3NlcmlhbGl6ZV0gbGF0ZXg6ICcsIGxhdGV4KTtcbiAgICAgIGNvbnN0IGRlY29kZWQgPSBodG1sRGVjb2RlKGxlc3NUaGFuSGFuZGxpbmcobGF0ZXgpKTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxzcGFuIGRhdGEtbGF0ZXg9XCJcIiBkYXRhLXJhdz17ZGVjb2RlZH0+XG4gICAgICAgICAge3dyYXBNYXRoKGRlY29kZWQsIHdyYXBwZXIpfVxuICAgICAgICA8L3NwYW4+XG4gICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhlcmUgZm9yIHJlbmRlcmluZyBtYXRobWwgY29udGVudFxuICAgICAqL1xuICAgIGlmIChvYmplY3QudHlwZSA9PT0gJ21hdGhtbCcpIHtcbiAgICAgIGNvbnN0IHsgaHRtbCB9ID0gb2JqZWN0LmRhdGEgfHwge307XG5cbiAgICAgIHJldHVybiA8c3BhbiBkYXRhLXR5cGU9XCJtYXRobWxcIiBkYW5nZXJvdXNseVNldElubmVySFRNTD17eyBfX2h0bWw6IGh0bWwgfX0gLz47XG4gICAgfVxuICB9XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7Ozs7O0FBQ0EsSUFBTUEsR0FBRyxHQUFHLElBQUFDLGlCQUFBLEVBQU0scUNBQU4sQ0FBWjtBQUVBLElBQU1DLFNBQVMsR0FBRyxDQUFsQjs7QUFFQSxTQUFTQyxzQkFBVCxHQUE4QztFQUFBLElBQWRDLE9BQWMsdUVBQUosRUFBSTtFQUM1QyxPQUFPQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSxVQUFBQyxHQUFHO0lBQUEsT0FBSztNQUN6QkMsSUFBSSxFQUFFRCxHQURtQjtNQUV6QkUsS0FBSyxFQUFFRixHQUZrQjtNQUd6QkcsS0FBSyxFQUFFSCxHQUhrQjtNQUl6QkksS0FBSyxFQUFFSjtJQUprQixDQUFMO0VBQUEsQ0FBZixDQUFQO0FBTUQ7O0FBRU0sSUFBTUssaUJBQWlCLGdCQUFHQyxpQkFBQSxDQUFNQyxJQUFOLENBQy9CLFVBQUFDLEtBQUssRUFBSTtFQUNQLElBQVFDLElBQVIsR0FBNkRELEtBQTdELENBQVFDLElBQVI7RUFBQSxJQUFjQyxPQUFkLEdBQTZERixLQUE3RCxDQUFjRSxPQUFkO0VBQUEsSUFBdUJDLE1BQXZCLEdBQTZESCxLQUE3RCxDQUF1QkcsTUFBdkI7RUFBQSxJQUErQkMsT0FBL0IsR0FBNkRKLEtBQTdELENBQStCSSxPQUEvQjtFQUFBLElBQXdDQyxNQUF4QyxHQUE2REwsS0FBN0QsQ0FBd0NLLE1BQXhDO0VBQUEsSUFBZ0RDLFFBQWhELEdBQTZETixLQUE3RCxDQUFnRE0sUUFBaEQ7O0VBQ0EsV0FBd0JOLEtBQUssSUFBSSxFQUFqQztFQUFBLElBQVFPLFdBQVIsUUFBUUEsV0FBUjs7RUFDQSxZQUFpQkEsV0FBVyxJQUFJLEVBQWhDO0VBQUEsSUFBUUMsSUFBUixTQUFRQSxJQUFS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
|