@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
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.valueToHtml = exports.reactAttributes = exports.parseStyleString = exports.htmlToValue = exports.getBase64 = exports.TEXT_RULE = exports.BLOCK_TAGS = void 0;
|
|
9
|
+
|
|
10
|
+
var _testSerializer = _interopRequireDefault(require("./test-serializer"));
|
|
11
|
+
|
|
12
|
+
var _react = _interopRequireDefault(require("react"));
|
|
13
|
+
|
|
14
|
+
var _debug = _interopRequireDefault(require("debug"));
|
|
15
|
+
|
|
16
|
+
var _toStyle = require("to-style");
|
|
17
|
+
|
|
18
|
+
var _image = require("./plugins/image");
|
|
19
|
+
|
|
20
|
+
var _math = require("./plugins/math");
|
|
21
|
+
|
|
22
|
+
var _media = require("./plugins/media");
|
|
23
|
+
|
|
24
|
+
var _list = require("./plugins/list");
|
|
25
|
+
|
|
26
|
+
var _table = require("./plugins/table");
|
|
27
|
+
|
|
28
|
+
var _respArea = require("./plugins/respArea");
|
|
29
|
+
|
|
30
|
+
var _slate = require("slate");
|
|
31
|
+
|
|
32
|
+
var log = (0, _debug["default"])('@pie-lib:editable-html:serialization');
|
|
33
|
+
/**
|
|
34
|
+
* Tags to blocks.
|
|
35
|
+
*
|
|
36
|
+
* @type {Object}
|
|
37
|
+
*/
|
|
38
|
+
|
|
39
|
+
var BLOCK_TAGS = {
|
|
40
|
+
div: 'div',
|
|
41
|
+
span: 'span',
|
|
42
|
+
p: 'paragraph',
|
|
43
|
+
blockquote: 'quote',
|
|
44
|
+
pre: 'code',
|
|
45
|
+
h1: 'heading-one',
|
|
46
|
+
h2: 'heading-two',
|
|
47
|
+
h3: 'heading-three',
|
|
48
|
+
h4: 'heading-four',
|
|
49
|
+
h5: 'heading-five',
|
|
50
|
+
h6: 'heading-six'
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Tags to marks.
|
|
54
|
+
*
|
|
55
|
+
* @type {Object}
|
|
56
|
+
*/
|
|
57
|
+
|
|
58
|
+
exports.BLOCK_TAGS = BLOCK_TAGS;
|
|
59
|
+
var MARK_TAGS = {
|
|
60
|
+
b: 'bold',
|
|
61
|
+
em: 'italic',
|
|
62
|
+
u: 'underline',
|
|
63
|
+
s: 'strikethrough',
|
|
64
|
+
code: 'code',
|
|
65
|
+
strong: 'bold'
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
var parseStyleString = function parseStyleString(s) {
|
|
69
|
+
var regex = /([\w-]*)\s*:\s*([^;]*)/g;
|
|
70
|
+
var match;
|
|
71
|
+
var result = {};
|
|
72
|
+
|
|
73
|
+
while (match = regex.exec(s)) {
|
|
74
|
+
result[match[1]] = match[2].trim();
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return result;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
exports.parseStyleString = parseStyleString;
|
|
81
|
+
|
|
82
|
+
var getBase64 = function getBase64(file) {
|
|
83
|
+
return new Promise(function (resolve, reject) {
|
|
84
|
+
var reader = new FileReader();
|
|
85
|
+
reader.readAsDataURL(file);
|
|
86
|
+
|
|
87
|
+
reader.onload = function () {
|
|
88
|
+
return resolve(reader.result);
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
reader.onerror = function (error) {
|
|
92
|
+
return reject(error);
|
|
93
|
+
};
|
|
94
|
+
});
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
exports.getBase64 = getBase64;
|
|
98
|
+
|
|
99
|
+
var reactAttributes = function reactAttributes(o) {
|
|
100
|
+
return (0, _toStyle.object)(o, {
|
|
101
|
+
camelize: true,
|
|
102
|
+
addUnits: false
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
exports.reactAttributes = reactAttributes;
|
|
107
|
+
|
|
108
|
+
var attributesToMap = function attributesToMap(el) {
|
|
109
|
+
return function (acc, attribute) {
|
|
110
|
+
var value = el.getAttribute(attribute);
|
|
111
|
+
|
|
112
|
+
if (value) {
|
|
113
|
+
if (attribute === 'style') {
|
|
114
|
+
var styleString = el.getAttribute(attribute);
|
|
115
|
+
var reactStyleObject = reactAttributes(parseStyleString(styleString));
|
|
116
|
+
acc['style'] = reactStyleObject;
|
|
117
|
+
} else {
|
|
118
|
+
acc[attribute] = el.getAttribute(attribute);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return acc;
|
|
123
|
+
};
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
var attributes = ['border', 'cellpadding', 'cellspacing', 'class', 'style'];
|
|
127
|
+
/**
|
|
128
|
+
* Serializer rules.
|
|
129
|
+
*
|
|
130
|
+
* @type {Array}
|
|
131
|
+
*/
|
|
132
|
+
|
|
133
|
+
var blocks = {
|
|
134
|
+
deserialize: function deserialize(el, next) {
|
|
135
|
+
log('[blocks:deserialize] block: ', el);
|
|
136
|
+
var block = BLOCK_TAGS[el.tagName.toLowerCase()];
|
|
137
|
+
if (!block) return;
|
|
138
|
+
log('[blocks:deserialize] block: ', block);
|
|
139
|
+
|
|
140
|
+
if (el.childNodes.length === 1) {
|
|
141
|
+
var cn = el.childNodes[0];
|
|
142
|
+
|
|
143
|
+
if (cn && cn.tagName && cn.tagName.toLowerCase() === block) {
|
|
144
|
+
log('[we have a child node of the same]...');
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
return {
|
|
150
|
+
object: 'block',
|
|
151
|
+
type: block,
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Here for rendering styles for all block elements
|
|
155
|
+
*/
|
|
156
|
+
data: {
|
|
157
|
+
attributes: attributes.reduce(attributesToMap(el), {})
|
|
158
|
+
},
|
|
159
|
+
nodes: next(el.childNodes)
|
|
160
|
+
};
|
|
161
|
+
},
|
|
162
|
+
serialize: function serialize(object, children) {
|
|
163
|
+
if (object.object !== 'block') return;
|
|
164
|
+
var jsonData = object.data.toJSON();
|
|
165
|
+
log('[blocks:serialize] object: ', object, children);
|
|
166
|
+
var key;
|
|
167
|
+
|
|
168
|
+
for (key in BLOCK_TAGS) {
|
|
169
|
+
if (BLOCK_TAGS[key] === object.type) {
|
|
170
|
+
var Tag = key;
|
|
171
|
+
return /*#__PURE__*/_react["default"].createElement(Tag, jsonData.attributes, children);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
var marks = {
|
|
177
|
+
deserialize: function deserialize(el, next) {
|
|
178
|
+
var mark = MARK_TAGS[el.tagName.toLowerCase()];
|
|
179
|
+
if (!mark) return;
|
|
180
|
+
log('[deserialize] mark: ', mark);
|
|
181
|
+
return {
|
|
182
|
+
object: 'mark',
|
|
183
|
+
type: mark,
|
|
184
|
+
nodes: next(el.childNodes)
|
|
185
|
+
};
|
|
186
|
+
},
|
|
187
|
+
serialize: function serialize(object, children) {
|
|
188
|
+
if (_slate.Mark.isMark(object)) {
|
|
189
|
+
for (var key in MARK_TAGS) {
|
|
190
|
+
if (MARK_TAGS[key] === object.type) {
|
|
191
|
+
var Tag = key;
|
|
192
|
+
return /*#__PURE__*/_react["default"].createElement(Tag, null, children);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
};
|
|
198
|
+
|
|
199
|
+
var findPreviousText = function findPreviousText(el) {
|
|
200
|
+
if (el.nodeName === '#text') {
|
|
201
|
+
return el;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
if (el.previousSibling) {
|
|
205
|
+
return findPreviousText(el.previousSibling);
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
return null;
|
|
209
|
+
};
|
|
210
|
+
|
|
211
|
+
var TEXT_RULE = {
|
|
212
|
+
deserialize: function deserialize(el) {
|
|
213
|
+
/**
|
|
214
|
+
* This needs to be called on the dom element in order to merge the adjacent text nodes together
|
|
215
|
+
* */
|
|
216
|
+
el.normalize();
|
|
217
|
+
|
|
218
|
+
if (el.tagName && el.tagName.toLowerCase() === 'br') {
|
|
219
|
+
return {
|
|
220
|
+
object: 'text',
|
|
221
|
+
leaves: [{
|
|
222
|
+
object: 'leaf',
|
|
223
|
+
text: '\n'
|
|
224
|
+
}]
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
if (el.nodeName === '#text') {
|
|
229
|
+
if (el.nodeValue && el.nodeValue.match(/<!--.*?-->/)) return;
|
|
230
|
+
log('[text:deserialize] return text object..');
|
|
231
|
+
return {
|
|
232
|
+
object: 'text',
|
|
233
|
+
leaves: [{
|
|
234
|
+
object: 'leaf',
|
|
235
|
+
text: el.nodeValue
|
|
236
|
+
}]
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
},
|
|
240
|
+
serialize: function serialize(obj, children) {
|
|
241
|
+
if (obj.object === 'string') {
|
|
242
|
+
return children.split('\n').reduce(function (array, text, i) {
|
|
243
|
+
if (i !== 0) array.push( /*#__PURE__*/_react["default"].createElement("br", null));
|
|
244
|
+
array.push(text);
|
|
245
|
+
return array;
|
|
246
|
+
}, []);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
};
|
|
250
|
+
exports.TEXT_RULE = TEXT_RULE;
|
|
251
|
+
var RULES = [_list.serialization, _math.serialization, _media.serialization, _image.serialization, _table.serialization, _respArea.serialization, TEXT_RULE, blocks, marks];
|
|
252
|
+
|
|
253
|
+
function allWhitespace(node) {
|
|
254
|
+
// Use ECMA-262 Edition 3 String and RegExp features
|
|
255
|
+
return !/[^\t\n\r ]/.test(node.textContent);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
function defaultParseHtml(html) {
|
|
259
|
+
if (typeof DOMParser === 'undefined') {
|
|
260
|
+
throw new Error('The native `DOMParser` global which the `Html` serializer uses by default is not present in this environment. You must supply the `options.parseHtml` function instead.');
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
var parsed = new DOMParser().parseFromString(html, 'text/html');
|
|
264
|
+
var body = parsed.body;
|
|
265
|
+
var textNodes = document.createTreeWalker(body, NodeFilter.SHOW_TEXT, null, null);
|
|
266
|
+
var n = textNodes.nextNode();
|
|
267
|
+
|
|
268
|
+
while (n) {
|
|
269
|
+
if (allWhitespace(n) || n.nodeValue === "\u200B") {
|
|
270
|
+
n.parentNode.removeChild(n);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
n = textNodes.nextNode();
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
return body;
|
|
277
|
+
}
|
|
278
|
+
/** If this lib is used on the server side, we need to bypass using the DOMParser - just put in a stub. */
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
var parseHtml = typeof window === 'undefined' ? function () {
|
|
282
|
+
return {
|
|
283
|
+
childNodes: []
|
|
284
|
+
};
|
|
285
|
+
} : defaultParseHtml;
|
|
286
|
+
var serializer = new _testSerializer["default"]({
|
|
287
|
+
defaultBlock: 'div',
|
|
288
|
+
rules: RULES,
|
|
289
|
+
parseHtml: parseHtml
|
|
290
|
+
});
|
|
291
|
+
|
|
292
|
+
var _extends = Object.assign || function (target) {
|
|
293
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
294
|
+
var source = arguments[i];
|
|
295
|
+
|
|
296
|
+
for (var key in source) {
|
|
297
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
298
|
+
target[key] = source[key];
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
return target;
|
|
304
|
+
};
|
|
305
|
+
|
|
306
|
+
var htmlToValue = function htmlToValue(html) {
|
|
307
|
+
try {
|
|
308
|
+
return serializer.deserialize(html);
|
|
309
|
+
} catch (e) {
|
|
310
|
+
console.log("Couldn't parse html: ", e);
|
|
311
|
+
return {};
|
|
312
|
+
}
|
|
313
|
+
};
|
|
314
|
+
|
|
315
|
+
exports.htmlToValue = htmlToValue;
|
|
316
|
+
|
|
317
|
+
var valueToHtml = function valueToHtml(value) {
|
|
318
|
+
return serializer.serialize(value);
|
|
319
|
+
};
|
|
320
|
+
/**
|
|
321
|
+
*
|
|
322
|
+
* <div><div>a</div></div> -> <div>a</div>
|
|
323
|
+
*
|
|
324
|
+
* <div><div>a</div><div>b</div></div> -> <div>a</div><div>b</div>
|
|
325
|
+
* <div><div>a</div>4444<div>b</div></div> -> <div>a</div>4444<div>b</div>
|
|
326
|
+
*/
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
exports.valueToHtml = valueToHtml;
|
|
330
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJkZWJ1ZyIsIkJMT0NLX1RBR1MiLCJkaXYiLCJzcGFuIiwicCIsImJsb2NrcXVvdGUiLCJwcmUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJNQVJLX1RBR1MiLCJiIiwiZW0iLCJ1IiwicyIsImNvZGUiLCJzdHJvbmciLCJwYXJzZVN0eWxlU3RyaW5nIiwicmVnZXgiLCJtYXRjaCIsInJlc3VsdCIsImV4ZWMiLCJ0cmltIiwiZ2V0QmFzZTY0IiwiZmlsZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicmVhZGVyIiwiRmlsZVJlYWRlciIsInJlYWRBc0RhdGFVUkwiLCJvbmxvYWQiLCJvbmVycm9yIiwiZXJyb3IiLCJyZWFjdEF0dHJpYnV0ZXMiLCJvIiwidG9TdHlsZU9iamVjdCIsImNhbWVsaXplIiwiYWRkVW5pdHMiLCJhdHRyaWJ1dGVzVG9NYXAiLCJlbCIsImFjYyIsImF0dHJpYnV0ZSIsInZhbHVlIiwiZ2V0QXR0cmlidXRlIiwic3R5bGVTdHJpbmciLCJyZWFjdFN0eWxlT2JqZWN0IiwiYXR0cmlidXRlcyIsImJsb2NrcyIsImRlc2VyaWFsaXplIiwibmV4dCIsImJsb2NrIiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwiY2hpbGROb2RlcyIsImxlbmd0aCIsImNuIiwib2JqZWN0IiwidHlwZSIsImRhdGEiLCJyZWR1Y2UiLCJub2RlcyIsInNlcmlhbGl6ZSIsImNoaWxkcmVuIiwianNvbkRhdGEiLCJ0b0pTT04iLCJrZXkiLCJUYWciLCJtYXJrcyIsIm1hcmsiLCJNYXJrIiwiaXNNYXJrIiwiZmluZFByZXZpb3VzVGV4dCIsIm5vZGVOYW1lIiwicHJldmlvdXNTaWJsaW5nIiwiVEVYVF9SVUxFIiwibm9ybWFsaXplIiwibGVhdmVzIiwidGV4dCIsIm5vZGVWYWx1ZSIsIm9iaiIsInNwbGl0IiwiYXJyYXkiLCJpIiwicHVzaCIsIlJVTEVTIiwibGlzdFNlcmlhbGl6YXRpb24iLCJtYXRoU2VyaWFsaXphdGlvbiIsIm1lZGlhU2VyaWFsaXphdGlvbiIsImltZ1NlcmlhbGl6YXRpb24iLCJ0YWJsZVNlcmlhbGl6YXRpb24iLCJyZXNwb25zZUFyZWFTZXJpYWxpemF0aW9uIiwiYWxsV2hpdGVzcGFjZSIsIm5vZGUiLCJ0ZXN0IiwidGV4dENvbnRlbnQiLCJkZWZhdWx0UGFyc2VIdG1sIiwiaHRtbCIsIkRPTVBhcnNlciIsIkVycm9yIiwicGFyc2VkIiwicGFyc2VGcm9tU3RyaW5nIiwiYm9keSIsInRleHROb2RlcyIsImRvY3VtZW50IiwiY3JlYXRlVHJlZVdhbGtlciIsIk5vZGVGaWx0ZXIiLCJTSE9XX1RFWFQiLCJuIiwibmV4dE5vZGUiLCJwYXJlbnROb2RlIiwicmVtb3ZlQ2hpbGQiLCJwYXJzZUh0bWwiLCJ3aW5kb3ciLCJzZXJpYWxpemVyIiwiSHRtbCIsImRlZmF1bHRCbG9jayIsInJ1bGVzIiwiX2V4dGVuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJ0YXJnZXQiLCJhcmd1bWVudHMiLCJzb3VyY2UiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJodG1sVG9WYWx1ZSIsImUiLCJjb25zb2xlIiwidmFsdWVUb0h0bWwiXSwic291cmNlcyI6WyIuLi9zcmMvb2xkLXNlcmlhbGl6YXRpb24uanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBIdG1sIGZyb20gJy4vdGVzdC1zZXJpYWxpemVyJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHsgb2JqZWN0IGFzIHRvU3R5bGVPYmplY3QgfSBmcm9tICd0by1zdHlsZSc7XG5cbmltcG9ydCB7IHNlcmlhbGl6YXRpb24gYXMgaW1nU2VyaWFsaXphdGlvbiB9IGZyb20gJy4vcGx1Z2lucy9pbWFnZSc7XG5pbXBvcnQgeyBzZXJpYWxpemF0aW9uIGFzIG1hdGhTZXJpYWxpemF0aW9uIH0gZnJvbSAnLi9wbHVnaW5zL21hdGgnO1xuaW1wb3J0IHsgc2VyaWFsaXphdGlvbiBhcyBtZWRpYVNlcmlhbGl6YXRpb24gfSBmcm9tICcuL3BsdWdpbnMvbWVkaWEnO1xuaW1wb3J0IHsgc2VyaWFsaXphdGlvbiBhcyBsaXN0U2VyaWFsaXphdGlvbiB9IGZyb20gJy4vcGx1Z2lucy9saXN0JztcbmltcG9ydCB7IHNlcmlhbGl6YXRpb24gYXMgdGFibGVTZXJpYWxpemF0aW9uIH0gZnJvbSAnLi9wbHVnaW5zL3RhYmxlJztcbmltcG9ydCB7IHNlcmlhbGl6YXRpb24gYXMgcmVzcG9uc2VBcmVhU2VyaWFsaXphdGlvbiB9IGZyb20gJy4vcGx1Z2lucy9yZXNwQXJlYSc7XG5pbXBvcnQgeyBNYXJrLCBWYWx1ZSB9IGZyb20gJ3NsYXRlJztcblxuY29uc3QgbG9nID0gZGVidWcoJ0BwaWUtbGliOmVkaXRhYmxlLWh0bWw6c2VyaWFsaXphdGlvbicpO1xuXG4vKipcbiAqIFRhZ3MgdG8gYmxvY2tzLlxuICpcbiAqIEB0eXBlIHtPYmplY3R9XG4gKi9cblxuZXhwb3J0IGNvbnN0IEJMT0NLX1RBR1MgPSB7XG4gIGRpdjogJ2RpdicsXG4gIHNwYW46ICdzcGFuJyxcbiAgcDogJ3BhcmFncmFwaCcsXG4gIGJsb2NrcXVvdGU6ICdxdW90ZScsXG4gIHByZTogJ2NvZGUnLFxuICBoMTogJ2hlYWRpbmctb25lJyxcbiAgaDI6ICdoZWFkaW5nLXR3bycsXG4gIGgzOiAnaGVhZGluZy10aHJlZScsXG4gIGg0OiAnaGVhZGluZy1mb3VyJyxcbiAgaDU6ICdoZWFkaW5nLWZpdmUnLFxuICBoNjogJ2hlYWRpbmctc2l4J1xufTtcblxuLyoqXG4gKiBUYWdzIHRvIG1hcmtzLlxuICpcbiAqIEB0eXBlIHtPYmplY3R9XG4gKi9cblxuY29uc3QgTUFSS19UQUdTID0ge1xuICBiOiAnYm9sZCcsXG4gIGVtOiAnaXRhbGljJyxcbiAgdTogJ3VuZGVybGluZScsXG4gIHM6ICdzdHJpa2V0aHJvdWdoJyxcbiAgY29kZTogJ2NvZGUnLFxuICBzdHJvbmc6ICdib2xkJ1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlU3R5bGVTdHJpbmcgPSBzID0+IHtcbiAgY29uc3QgcmVnZXggPSAvKFtcXHctXSopXFxzKjpcXHMqKFteO10qKS9nO1xuICBsZXQgbWF0Y2g7XG4gIGNvbnN0IHJlc3VsdCA9IHt9O1xuICB3aGlsZSAoKG1hdGNoID0gcmVnZXguZXhlYyhzKSkpIHtcbiAgICByZXN1bHRbbWF0Y2hbMV1dID0gbWF0Y2hbMl0udHJpbSgpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QmFzZTY0ID0gZmlsZSA9PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICByZWFkZXIub25sb2FkID0gKCkgPT4gcmVzb2x2ZShyZWFkZXIucmVzdWx0KTtcbiAgICByZWFkZXIub25lcnJvciA9IGVycm9yID0+IHJlamVjdChlcnJvcik7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlYWN0QXR0cmlidXRlcyA9IG8gPT4gdG9TdHlsZU9iamVjdChvLCB7IGNhbWVsaXplOiB0cnVlLCBhZGRVbml0czogZmFsc2UgfSk7XG5cbmNvbnN0IGF0dHJpYnV0ZXNUb01hcCA9IGVsID0+IChhY2MsIGF0dHJpYnV0ZSkgPT4ge1xuICBjb25zdCB2YWx1ZSA9IGVsLmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICBpZiAodmFsdWUpIHtcbiAgICBpZiAoYXR0cmlidXRlID09PSAnc3R5bGUnKSB7XG4gICAgICBjb25zdCBzdHlsZVN0cmluZyA9IGVsLmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICAgICAgY29uc3QgcmVhY3RTdHlsZU9iamVjdCA9IHJlYWN0QXR0cmlidXRlcyhwYXJzZVN0eWxlU3RyaW5nKHN0eWxlU3RyaW5nKSk7XG4gICAgICBhY2NbJ3N0eWxlJ10gPSByZWFjdFN0eWxlT2JqZWN0O1xuICAgIH0gZWxzZSB7XG4gICAgICBhY2NbYXR0cmlidXRlXSA9IGVsLmdldEF0dHJpYnV0ZShhdHRyaWJ1dGUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYWNjO1xufTtcblxuY29uc3QgYXR0cmlidXRlcyA9IFsnYm9yZGVyJywgJ2NlbGxwYWRkaW5nJywgJ2NlbGxzcGFjaW5nJywgJ2NsYXNzJywgJ3N0eWxlJ107XG5cbi8qKlxuICogU2VyaWFsaXplciBydWxlcy5cbiAqXG4gKiBAdHlwZSB7QXJyYXl9XG4gKi9cblxuY29uc3QgYmxvY2tzID0ge1xuICBkZXNlcmlhbGl6ZShlbCwgbmV4dCkge1xuICAgIGxvZygnW2Jsb2NrczpkZXNlcmlhbGl6ZV0gYmxvY2s6ICcsIGVsKTtcbiAgICBjb25zdCBibG9jayA9IEJMT0NLX1RBR1NbZWwudGFnTmFtZS50b0xvd2VyQ2FzZSgpXTtcbiAgICBpZiAoIWJsb2NrKSByZXR1cm47XG4gICAgbG9nKCdbYmxvY2tzOmRlc2VyaWFsaXplXSBibG9jazogJywgYmxvY2spO1xuXG4gICAgaWYgKGVsLmNoaWxkTm9kZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCBjbiA9IGVsLmNoaWxkTm9kZXNbMF07XG4gICAgICBpZiAoY24gJiYgY24udGFnTmFtZSAmJiBjbi50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09IGJsb2NrKSB7XG4gICAgICAgIGxvZygnW3dlIGhhdmUgYSBjaGlsZCBub2RlIG9mIHRoZSBzYW1lXS4uLicpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG9iamVjdDogJ2Jsb2NrJyxcbiAgICAgIHR5cGU6IGJsb2NrLFxuICAgICAgLyoqXG4gICAgICAgKiBIZXJlIGZvciByZW5kZXJpbmcgc3R5bGVzIGZvciBhbGwgYmxvY2sgZWxlbWVudHNcbiAgICAgICAqL1xuICAgICAgZGF0YTogeyBhdHRyaWJ1dGVzOiBhdHRyaWJ1dGVzLnJlZHVjZShhdHRyaWJ1dGVzVG9NYXAoZWwpLCB7fSkgfSxcbiAgICAgIG5vZGVzOiBuZXh0KGVsLmNoaWxkTm9kZXMpXG4gICAgfTtcbiAgfSxcbiAgc2VyaWFsaXplOiAob2JqZWN0LCBjaGlsZHJlbikgPT4ge1xuICAgIGlmIChvYmplY3Qub2JqZWN0ICE9PSAnYmxvY2snKSByZXR1cm47XG5cbiAgICBjb25zdCBqc29uRGF0YSA9IG9iamVjdC5kYXRhLnRvSlNPTigpO1xuXG4gICAgbG9nKCdbYmxvY2tzOnNlcmlhbGl6ZV0gb2JqZWN0OiAnLCBvYmplY3QsIGNoaWxkcmVuKTtcbiAgICBsZXQga2V5O1xuXG4gICAgZm9yIChrZXkgaW4gQkxPQ0tfVEFHUykge1xuICAgICAgaWYgKEJMT0NLX1RBR1Nba2V5XSA9PT0gb2JqZWN0LnR5cGUpIHtcbiAgICAgICAgY29uc3QgVGFnID0ga2V5O1xuXG4gICAgICAgIHJldHVybiA8VGFnIHsuLi5qc29uRGF0YS5hdHRyaWJ1dGVzfT57Y2hpbGRyZW59PC9UYWc+O1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuY29uc3QgbWFya3MgPSB7XG4gIGRlc2VyaWFsaXplKGVsLCBuZXh0KSB7XG4gICAgY29uc3QgbWFyayA9IE1BUktfVEFHU1tlbC50YWdOYW1lLnRvTG93ZXJDYXNlKCldO1xuICAgIGlmICghbWFyaykgcmV0dXJuO1xuICAgIGxvZygnW2Rlc2VyaWFsaXplXSBtYXJrOiAnLCBtYXJrKTtcbiAgICByZXR1cm4ge1xuICAgICAgb2JqZWN0OiAnbWFyaycsXG4gICAgICB0eXBlOiBtYXJrLFxuICAgICAgbm9kZXM6IG5leHQoZWwuY2hpbGROb2RlcylcbiAgICB9O1xuICB9LFxuICBzZXJpYWxpemUob2JqZWN0LCBjaGlsZHJlbikge1xuICAgIGlmIChNYXJrLmlzTWFyayhvYmplY3QpKSB7XG4gICAgICBmb3IgKHZhciBrZXkgaW4gTUFSS19UQUdTKSB7XG4gICAgICAgIGlmIChNQVJLX1RBR1Nba2V5XSA9PT0gb2JqZWN0LnR5cGUpIHtcbiAgICAgICAgICBjb25zdCBUYWcgPSBrZXk7XG4gICAgICAgICAgcmV0dXJuIDxUYWc+e2NoaWxkcmVufTwvVGFnPjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuY29uc3QgZmluZFByZXZpb3VzVGV4dCA9IGVsID0+IHtcbiAgaWYgKGVsLm5vZGVOYW1lID09PSAnI3RleHQnKSB7XG4gICAgcmV0dXJuIGVsO1xuICB9XG5cbiAgaWYgKGVsLnByZXZpb3VzU2libGluZykge1xuICAgIHJldHVybiBmaW5kUHJldmlvdXNUZXh0KGVsLnByZXZpb3VzU2libGluZyk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBURVhUX1JVTEUgPSB7XG4gIGRlc2VyaWFsaXplKGVsKSB7XG4gICAgLyoqXG4gICAgICogVGhpcyBuZWVkcyB0byBiZSBjYWxsZWQgb24gdGhlIGRvbSBlbGVtZW50IGluIG9yZGVyIHRvIG1lcmdlIHRoZSBhZGphY2VudCB0ZXh0IG5vZGVzIHRvZ2V0aGVyXG4gICAgICogKi9cbiAgICBlbC5ub3JtYWxpemUoKTtcblxuICAgIGlmIChlbC50YWdOYW1lICYmIGVsLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2JyJykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2JqZWN0OiAndGV4dCcsXG4gICAgICAgIGxlYXZlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG9iamVjdDogJ2xlYWYnLFxuICAgICAgICAgICAgdGV4dDogJ1xcbidcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGVsLm5vZGVOYW1lID09PSAnI3RleHQnKSB7XG4gICAgICBpZiAoZWwubm9kZVZhbHVlICYmIGVsLm5vZGVWYWx1ZS5tYXRjaCgvPCEtLS4qPy0tPi8pKSByZXR1cm47XG5cbiAgICAgIGxvZygnW3RleHQ6ZGVzZXJpYWxpemVdIHJldHVybiB0ZXh0IG9iamVjdC4uJyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvYmplY3Q6ICd0ZXh0JyxcbiAgICAgICAgbGVhdmVzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgb2JqZWN0OiAnbGVhZicsXG4gICAgICAgICAgICB0ZXh0OiBlbC5ub2RlVmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICAgIH07XG4gICAgfVxuICB9LFxuXG4gIHNlcmlhbGl6ZShvYmosIGNoaWxkcmVuKSB7XG4gICAgaWYgKG9iai5vYmplY3QgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gY2hpbGRyZW4uc3BsaXQoJ1xcbicpLnJlZHVjZSgoYXJyYXksIHRleHQsIGkpID0+IHtcbiAgICAgICAgaWYgKGkgIT09IDApIGFycmF5LnB1c2goPGJyIC8+KTtcbiAgICAgICAgYXJyYXkucHVzaCh0ZXh0KTtcbiAgICAgICAgcmV0dXJuIGFycmF5O1xuICAgICAgfSwgW10pO1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgUlVMRVMgPSBbXG4gIGxpc3RTZXJpYWxpemF0aW9uLFxuICBtYXRoU2VyaWFsaXphdGlvbixcbiAgbWVkaWFTZXJpYWxpemF0aW9uLFxuICBpbWdTZXJpYWxpemF0aW9uLFxuICB0YWJsZVNlcmlhbGl6YXRpb24sXG4gIHJlc3BvbnNlQXJlYVNlcmlhbGl6YXRpb24sXG4gIFRFWFRfUlVMRSxcbiAgYmxvY2tzLFxuICBtYXJrc1xuXTtcblxuZnVuY3Rpb24gYWxsV2hpdGVzcGFjZShub2RlKSB7XG4gIC8vIFVzZSBFQ01BLTI2MiBFZGl0aW9uIDMgU3RyaW5nIGFuZCBSZWdFeHAgZmVhdHVyZXNcbiAgcmV0dXJuICEvW15cXHRcXG5cXHIgXS8udGVzdChub2RlLnRleHRDb250ZW50KTtcbn1cblxuZnVuY3Rpb24gZGVmYXVsdFBhcnNlSHRtbChodG1sKSB7XG4gIGlmICh0eXBlb2YgRE9NUGFyc2VyID09PSAndW5kZWZpbmVkJykge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdUaGUgbmF0aXZlIGBET01QYXJzZXJgIGdsb2JhbCB3aGljaCB0aGUgYEh0bWxgIHNlcmlhbGl6ZXIgdXNlcyBieSBkZWZhdWx0IGlzIG5vdCBwcmVzZW50IGluIHRoaXMgZW52aXJvbm1lbnQuIFlvdSBtdXN0IHN1cHBseSB0aGUgYG9wdGlvbnMucGFyc2VIdG1sYCBmdW5jdGlvbiBpbnN0ZWFkLidcbiAgICApO1xuICB9XG5cbiAgY29uc3QgcGFyc2VkID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhodG1sLCAndGV4dC9odG1sJyk7XG5cbiAgY29uc3QgeyBib2R5IH0gPSBwYXJzZWQ7XG4gIGNvbnN0IHRleHROb2RlcyA9IGRvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoYm9keSwgTm9kZUZpbHRlci5TSE9XX1RFWFQsIG51bGwsIG51bGwpO1xuICBsZXQgbiA9IHRleHROb2Rlcy5uZXh0Tm9kZSgpO1xuXG4gIHdoaWxlIChuKSB7XG4gICAgaWYgKGFsbFdoaXRlc3BhY2UobikgfHwgbi5ub2RlVmFsdWUgPT09ICdcXHUyMDBCJykge1xuICAgICAgbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pO1xuICAgIH1cbiAgICBuID0gdGV4dE5vZGVzLm5leHROb2RlKCk7XG4gIH1cblxuICByZXR1cm4gYm9keTtcbn1cblxuLyoqIElmIHRoaXMgbGliIGlzIHVzZWQgb24gdGhlIHNlcnZlciBzaWRlLCB3ZSBuZWVkIHRvIGJ5cGFzcyB1c2luZyB0aGUgRE9NUGFyc2VyIC0ganVzdCBwdXQgaW4gYSBzdHViLiAqL1xuY29uc3QgcGFyc2VIdG1sID1cbiAgdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCdcbiAgICA/ICgpID0+ICh7XG4gICAgICAgIGNoaWxkTm9kZXM6IFtdXG4gICAgICB9KVxuICAgIDogZGVmYXVsdFBhcnNlSHRtbDtcblxuY29uc3Qgc2VyaWFsaXplciA9IG5ldyBIdG1sKHtcbiAgZGVmYXVsdEJsb2NrOiAnZGl2JyxcbiAgcnVsZXM6IFJVTEVTLFxuICBwYXJzZUh0bWxcbn0pO1xuXG5jb25zdCBfZXh0ZW5kcyA9XG4gIE9iamVjdC5hc3NpZ24gfHxcbiAgZnVuY3Rpb24odGFyZ2V0KSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGh0bWxUb1ZhbHVlID0gaHRtbCA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHNlcmlhbGl6ZXIuZGVzZXJpYWxpemUoaHRtbCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhcIkNvdWxkbid0IHBhcnNlIGh0bWw6IFwiLCBlKTtcbiAgICByZXR1cm4ge307XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB2YWx1ZVRvSHRtbCA9IHZhbHVlID0+IHNlcmlhbGl6ZXIuc2VyaWFsaXplKHZhbHVlKTtcblxuLyoqXG4gKlxuICogPGRpdj48ZGl2PmE8L2Rpdj48L2Rpdj4gLT4gPGRpdj5hPC9kaXY+XG4gKlxuICogPGRpdj48ZGl2PmE8L2Rpdj48ZGl2PmI8L2Rpdj48L2Rpdj4gLT4gPGRpdj5hPC9kaXY+PGRpdj5iPC9kaXY+XG4gKiA8ZGl2PjxkaXY+YTwvZGl2PjQ0NDQ8ZGl2PmI8L2Rpdj48L2Rpdj4gLT4gPGRpdj5hPC9kaXY+NDQ0NDxkaXY+YjwvZGl2PlxuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLElBQU1BLEdBQUcsR0FBRyxJQUFBQyxpQkFBQSxFQUFNLHNDQUFOLENBQVo7QUFFQTtBQUNBO0FBQ0E7QUFD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
|
package/lib/parse-html.js
CHANGED
|
@@ -13,4 +13,4 @@ var parseDegrees = function parseDegrees(html) {
|
|
|
13
13
|
};
|
|
14
14
|
|
|
15
15
|
exports.parseDegrees = parseDegrees;
|
|
16
|
-
//# sourceMappingURL=
|
|
16
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJzZURlZ3JlZXMiLCJodG1sIiwicmVwbGFjZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJzZS1odG1sLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBwYXJzZURlZ3JlZXMgPSBodG1sID0+XG4gIGh0bWxcbiAgICAvLyByZW1vdmVzIFxcKCAgIHVzZSBjYXNlOiA1MMKwXG4gICAgLnJlcGxhY2UoL1xcXFxbKF0vZywgJycpXG4gICAgLy8gcmVtb3ZlcyBcXCkgICB1c2UgY2FzZTogNTDCsCttPDFcbiAgICAucmVwbGFjZSgvXFxcXFspXS9nLCAnJylcbiAgICAvLyByZW1vdmVzIFxcZGVncmVlICB1c2UgY2FzZTogNTDCsFxuICAgIC5yZXBsYWNlKC9cXFxcZGVncmVlL2csICcmZGVnOycpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQU8sSUFBTUEsWUFBWSxHQUFHLFNBQWZBLFlBQWUsQ0FBQUMsSUFBSTtFQUFBLE9BQzlCQSxJQUFJLENBQ0Y7RUFERSxDQUVEQyxPQUZILENBRVcsUUFGWCxFQUVxQixFQUZyQixFQUdFO0VBSEYsQ0FJR0EsT0FKSCxDQUlXLFFBSlgsRUFJcUIsRUFKckIsRUFLRTtFQUxGLENBTUdBLE9BTkgsQ0FNVyxXQU5YLEVBTXdCLE9BTnhCLENBRDhCO0FBQUEsQ0FBekIifQ==
|
package/lib/parse-html.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"parse-html.js","names":["parseDegrees","html","replace"],"sources":["../src/parse-html.js"],"sourcesContent":["export const parseDegrees = html =>\n html\n // removes \\( use case: 50°\n .replace(/\\\\[(]/g, '')\n // removes \\) use case: 50°+m<1\n .replace(/\\\\[)]/g, '')\n // removes \\degree use case: 50°\n .replace(/\\\\degree/g, '°');\n"],"mappings":";;;;;;;AAAO,IAAMA,YAAY,GAAG,SAAfA,YAAe,CAAAC,IAAI;EAAA,OAC9BA,IAAI,CACF;EADE,CAEDC,OAFH,CAEW,QAFX,EAEqB,EAFrB,EAGE;EAHF,CAIGA,OAJH,CAIW,QAJX,EAIqB,EAJrB,EAKE;EALF,CAMGA,OANH,CAMW,WANX,EAMwB,OANxB,CAD8B;AAAA,CAAzB"}
|
|
@@ -70,4 +70,4 @@ var CustomPopper = (0, _styles.withStyles)(styles)(function (_ref) {
|
|
|
70
70
|
});
|
|
71
71
|
var _default = CustomPopper;
|
|
72
72
|
exports["default"] = _default;
|
|
73
|
-
//# sourceMappingURL=
|
|
73
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZXMiLCJwb3BvdmVyIiwiYmFja2dyb3VuZCIsInBhZGRpbmciLCJwb2ludGVyRXZlbnRzIiwiekluZGV4IiwicGFwZXIiLCJoZWlnaHQiLCJ3aWR0aCIsInR5cG9ncmFwaHkiLCJmb250U2l6ZSIsInRleHRBbGlnbiIsIkN1c3RvbVBvcHBlciIsIndpdGhTdHlsZXMiLCJjbGFzc2VzIiwiY2hpbGRyZW4iLCJwcm9wcyIsInZlcnRpY2FsIiwiaG9yaXpvbnRhbCIsInJvb3QiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGx1Z2lucy9jaGFyYWN0ZXJzL2N1c3RvbS1wb3BwZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHdpdGhTdHlsZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXMnO1xuaW1wb3J0IFBvcHBlciBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9Qb3BwZXInO1xuaW1wb3J0IFR5cG9ncmFwaHkgZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvVHlwb2dyYXBoeSc7XG5cbmNvbnN0IHN0eWxlcyA9ICgpID0+ICh7XG4gIHBvcG92ZXI6IHtcbiAgICBiYWNrZ3JvdW5kOiAnI2ZmZicsXG4gICAgcGFkZGluZzogJzEwcHgnLFxuICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICB6SW5kZXg6IDk5OTk5XG4gIH0sXG4gIHBhcGVyOiB7XG4gICAgcGFkZGluZzogMjAsXG4gICAgaGVpZ2h0OiAnYXV0bycsXG4gICAgd2lkdGg6ICdhdXRvJ1xuICB9LFxuICB0eXBvZ3JhcGh5OiB7XG4gICAgZm9udFNpemU6IDUwLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgfVxufSk7XG5cbmNvbnN0IEN1c3RvbVBvcHBlciA9IHdpdGhTdHlsZXMoc3R5bGVzKSgoeyBjbGFzc2VzLCBjaGlsZHJlbiwgLi4ucHJvcHMgfSkgPT4gKFxuICA8UG9wcGVyXG4gICAgaWQ9XCJtb3VzZS1vdmVyLXBvcG92ZXJcIlxuICAgIG9wZW5cbiAgICBjbGFzc05hbWU9e2NsYXNzZXMucG9wb3Zlcn1cbiAgICBjbGFzc2VzPXt7XG4gICAgICBwYXBlcjogY2xhc3Nlcy5wYXBlclxuICAgIH19XG4gICAgYW5jaG9yT3JpZ2luPXt7XG4gICAgICB2ZXJ0aWNhbDogJ2JvdHRvbScsXG4gICAgICBob3Jpem9udGFsOiAnbGVmdCdcbiAgICB9fVxuICAgIHRyYW5zZm9ybU9yaWdpbj17e1xuICAgICAgdmVydGljYWw6ICd0b3AnLFxuICAgICAgaG9yaXpvbnRhbDogJ2xlZnQnXG4gICAgfX1cbiAgICBkaXNhYmxlUmVzdG9yZUZvY3VzXG4gICAgZGlzYWJsZUF1dG9Gb2N1c1xuICAgIHsuLi5wcm9wc31cbiAgPlxuICAgIDxUeXBvZ3JhcGh5IGNsYXNzZXM9e3sgcm9vdDogY2xhc3Nlcy50eXBvZ3JhcGh5IH19PntjaGlsZHJlbn08L1R5cG9ncmFwaHk+XG4gIDwvUG9wcGVyPlxuKSk7XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbVBvcHBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBRUEsSUFBTUEsTUFBTSxHQUFHLFNBQVRBLE1BQVM7RUFBQSxPQUFPO0lBQ3BCQyxPQUFPLEVBQUU7TUFDUEMsVUFBVSxFQUFFLE1BREw7TUFFUEMsT0FBTyxFQUFFLE1BRkY7TUFHUEMsYUFBYSxFQUFFLE1BSFI7TUFJUEMsTUFBTSxFQUFFO0lBSkQsQ0FEVztJQU9wQkMsS0FBSyxFQUFFO01BQ0xILE9BQU8sRUFBRSxFQURKO01BRUxJLE1BQU0sRUFBRSxNQUZIO01BR0xDLEtBQUssRUFBRTtJQUhGLENBUGE7SUFZcEJDLFVBQVUsRUFBRTtNQUNWQyxRQUFRLEVBQUUsRUFEQTtNQUVWQyxTQUFTLEVBQUU7SUFGRDtFQVpRLENBQVA7QUFBQSxDQUFmOztBQWtCQSxJQUFNQyxZQUFZLEdBQUcsSUFBQUMsa0JBQUEsRUFBV2IsTUFBWCxFQUFtQjtFQUFBLElBQUdjLE9BQUgsUUFBR0EsT0FBSDtFQUFBLElBQVlDLFFBQVosUUFBWUEsUUFBWjtFQUFBLElBQXlCQyxLQUF6QjtFQUFBLG9CQUN0QyxnQ0FBQyxrQkFBRDtJQUNFLEVBQUUsRUFBQyxvQkFETDtJQUVFLElBQUksTUFGTjtJQUdFLFNBQVMsRUFBRUYsT0FBTyxDQUFDYixPQUhyQjtJQUlFLE9BQU8sRUFBRTtNQUNQSyxLQUFLLEVBQUVRLE9BQU8sQ0FBQ1I7SUFEUixDQUpYO0lBT0UsWUFBWSxFQUFFO01BQ1pXLFFBQVEsRUFBRSxRQURFO01BRVpDLFVBQVUsRUFBRTtJQUZBLENBUGhCO0lBV0UsZUFBZSxFQUFFO01BQ2ZELFFBQVEsRUFBRSxLQURLO01BRWZDLFVBQVUsRUFBRTtJQUZHLENBWG5CO0lBZUUsbUJBQW1CLE1BZnJCO0lBZ0JFLGdCQUFnQjtFQWhCbEIsR0FpQk1GLEtBakJOLGdCQW1CRSxnQ0FBQyxzQkFBRDtJQUFZLE9BQU8sRUFBRTtNQUFFRyxJQUFJLEVBQUVMLE9BQU8sQ0FBQ0w7SUFBaEI7RUFBckIsR0FBb0RNLFFBQXBELENBbkJGLENBRHNDO0FBQUEsQ0FBbkIsQ0FBckI7ZUF3QmVILFkifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"custom-popper.js","names":["styles","popover","background","padding","pointerEvents","zIndex","paper","height","width","typography","fontSize","textAlign","CustomPopper","withStyles","classes","children","props","vertical","horizontal","root"],"sources":["../../../src/plugins/characters/custom-popper.js"],"sourcesContent":["import React from 'react';\nimport { withStyles } from '@material-ui/core/styles';\nimport Popper from '@material-ui/core/Popper';\nimport Typography from '@material-ui/core/Typography';\n\nconst styles = () => ({\n popover: {\n background: '#fff',\n padding: '10px',\n pointerEvents: 'none',\n zIndex: 99999\n },\n paper: {\n padding: 20,\n height: 'auto',\n width: 'auto'\n },\n typography: {\n fontSize: 50,\n textAlign: 'center'\n }\n});\n\nconst CustomPopper = withStyles(styles)(({ classes, children, ...props }) => (\n <Popper\n id=\"mouse-over-popover\"\n open\n className={classes.popover}\n classes={{\n paper: classes.paper\n }}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left'\n }}\n disableRestoreFocus\n disableAutoFocus\n {...props}\n >\n <Typography classes={{ root: classes.typography }}>{children}</Typography>\n </Popper>\n));\n\nexport default CustomPopper;\n"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;AAEA,IAAMA,MAAM,GAAG,SAATA,MAAS;EAAA,OAAO;IACpBC,OAAO,EAAE;MACPC,UAAU,EAAE,MADL;MAEPC,OAAO,EAAE,MAFF;MAGPC,aAAa,EAAE,MAHR;MAIPC,MAAM,EAAE;IAJD,CADW;IAOpBC,KAAK,EAAE;MACLH,OAAO,EAAE,EADJ;MAELI,MAAM,EAAE,MAFH;MAGLC,KAAK,EAAE;IAHF,CAPa;IAYpBC,UAAU,EAAE;MACVC,QAAQ,EAAE,EADA;MAEVC,SAAS,EAAE;IAFD;EAZQ,CAAP;AAAA,CAAf;;AAkBA,IAAMC,YAAY,GAAG,IAAAC,kBAAA,EAAWb,MAAX,EAAmB;EAAA,IAAGc,OAAH,QAAGA,OAAH;EAAA,IAAYC,QAAZ,QAAYA,QAAZ;EAAA,IAAyBC,KAAzB;EAAA,oBACtC,gCAAC,kBAAD;IACE,EAAE,EAAC,oBADL;IAEE,IAAI,MAFN;IAGE,SAAS,EAAEF,OAAO,CAACb,OAHrB;IAIE,OAAO,EAAE;MACPK,KAAK,EAAEQ,OAAO,CAACR;IADR,CAJX;IAOE,YAAY,EAAE;MACZW,QAAQ,EAAE,QADE;MAEZC,UAAU,EAAE;IAFA,CAPhB;IAWE,eAAe,EAAE;MACfD,QAAQ,EAAE,KADK;MAEfC,UAAU,EAAE;IAFG,CAXnB;IAeE,mBAAmB,MAfrB;IAgBE,gBAAgB;EAhBlB,GAiBMF,KAjBN,gBAmBE,gCAAC,sBAAD;IAAY,OAAO,EAAE;MAAEG,IAAI,EAAEL,OAAO,CAACL;IAAhB;EAArB,GAAoDM,QAApD,CAnBF,CADsC;AAAA,CAAnB,CAArB;eAwBeH,Y"}
|
|
@@ -8,6 +8,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
8
|
exports["default"] = CharactersPlugin;
|
|
9
9
|
exports.removeDialogs = void 0;
|
|
10
10
|
|
|
11
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
12
|
+
|
|
11
13
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
14
|
|
|
13
15
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
@@ -28,6 +30,10 @@ var _utils = require("../respArea/utils");
|
|
|
28
30
|
|
|
29
31
|
var _utils2 = require("./utils");
|
|
30
32
|
|
|
33
|
+
var _slateReact = require("slate-react");
|
|
34
|
+
|
|
35
|
+
var _slate = require("slate");
|
|
36
|
+
|
|
31
37
|
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; }
|
|
32
38
|
|
|
33
39
|
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; }
|
|
@@ -54,8 +60,7 @@ var removeDialogs = function removeDialogs() {
|
|
|
54
60
|
exports.removeDialogs = removeDialogs;
|
|
55
61
|
|
|
56
62
|
var insertDialog = function insertDialog(_ref) {
|
|
57
|
-
var
|
|
58
|
-
value = _ref.value,
|
|
63
|
+
var editor = _ref.editor,
|
|
59
64
|
callback = _ref.callback,
|
|
60
65
|
opts = _ref.opts;
|
|
61
66
|
var newEl = document.createElement('div');
|
|
@@ -134,6 +139,9 @@ var insertDialog = function insertDialog(_ref) {
|
|
|
134
139
|
// so right after mouseup, the click will be triggered
|
|
135
140
|
if (firstCallMade) {
|
|
136
141
|
var focusIsInModals = newEl.contains(e.target) || popoverEl && popoverEl.contains(e.target);
|
|
142
|
+
|
|
143
|
+
var editorDOM = _slateReact.ReactEditor.toDOMNode(editor, editor);
|
|
144
|
+
|
|
137
145
|
var focusIsInEditor = editorDOM.contains(e.target);
|
|
138
146
|
|
|
139
147
|
if (!(focusIsInModals || focusIsInEditor)) {
|
|
@@ -193,7 +201,11 @@ var insertDialog = function insertDialog(_ref) {
|
|
|
193
201
|
});
|
|
194
202
|
|
|
195
203
|
_reactDom["default"].render(el, newEl, function () {
|
|
196
|
-
var
|
|
204
|
+
var _Editor$node = _slate.Editor.node(editor, editor.selection),
|
|
205
|
+
_Editor$node2 = (0, _slicedToArray2["default"])(_Editor$node, 1),
|
|
206
|
+
nodeAtSelection = _Editor$node2[0];
|
|
207
|
+
|
|
208
|
+
var cursorItem = _slateReact.ReactEditor.toDOMNode(editor, nodeAtSelection);
|
|
197
209
|
|
|
198
210
|
if (cursorItem) {
|
|
199
211
|
var bodyRect = document.body.getBoundingClientRect();
|
|
@@ -241,32 +253,22 @@ function CharactersPlugin(opts) {
|
|
|
241
253
|
icon: /*#__PURE__*/_react["default"].createElement(CharacterIcon, {
|
|
242
254
|
letter: opts.characterIcon || _utils2.characterIcons[opts.language] || 'ñ'
|
|
243
255
|
}),
|
|
244
|
-
onClick: function onClick(
|
|
245
|
-
var editorDOM = document.querySelector("[data-key=\"".concat(value.document.key, "\"]"));
|
|
246
|
-
var valueToUse = value;
|
|
247
|
-
|
|
256
|
+
onClick: function onClick(editor) {
|
|
248
257
|
var callback = function callback(_char, focus) {
|
|
249
|
-
valueToUse = getFocusedValue();
|
|
250
|
-
|
|
251
258
|
if (_char) {
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
log('[characters:insert]: ', value);
|
|
255
|
-
onChange(change);
|
|
259
|
+
log('[characters:insert]: ', _char);
|
|
260
|
+
editor.insertText(_char);
|
|
256
261
|
}
|
|
257
262
|
|
|
258
263
|
log('[characters:click]');
|
|
259
264
|
|
|
260
265
|
if (focus) {
|
|
261
|
-
|
|
262
|
-
editorDOM.focus();
|
|
263
|
-
}
|
|
266
|
+
_slateReact.ReactEditor.focus(editor);
|
|
264
267
|
}
|
|
265
268
|
};
|
|
266
269
|
|
|
267
270
|
insertDialog({
|
|
268
|
-
|
|
269
|
-
value: valueToUse,
|
|
271
|
+
editor: editor,
|
|
270
272
|
callback: callback,
|
|
271
273
|
opts: opts
|
|
272
274
|
});
|
|
@@ -282,4 +284,4 @@ function CharactersPlugin(opts) {
|
|
|
282
284
|
}
|
|
283
285
|
};
|
|
284
286
|
}
|
|
285
|
-
//# sourceMappingURL=index.js.map
|
|
287
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2ciLCJkZWJ1ZyIsInJlbW92ZVBvcE92ZXJzIiwicHJldlBvcE92ZXJzIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yQWxsIiwiZm9yRWFjaCIsInMiLCJyZW1vdmUiLCJyZW1vdmVEaWFsb2dzIiwicHJldkRpYWxvZ3MiLCJpbnNlcnREaWFsb2ciLCJlZGl0b3IiLCJjYWxsYmFjayIsIm9wdHMiLCJuZXdFbCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJjb25maWdUb1VzZSIsImxhbmd1YWdlIiwic3BhbmlzaENvbmZpZyIsInNwZWNpYWxDb25maWciLCJjaGFyYWN0ZXJzIiwiaW5zZXJ0U25hY2tCYXIiLCJsYXlvdXRGb3JDaGFyYWN0ZXJzIiwicmVkdWNlIiwib2JqIiwiYXJyIiwibGVuZ3RoIiwiY29sdW1ucyIsInJvd3MiLCJwb3BvdmVyRWwiLCJjbG9zZVBvcE92ZXIiLCJyZW5kZXJQb3BPdmVyIiwiZXZlbnQiLCJlbCIsImluZm9TdHlsZSIsImZvbnRTaXplIiwibGluZUhlaWdodCIsIlJlYWN0RE9NIiwicmVuZGVyIiwiY3VycmVudFRhcmdldCIsImxhYmVsIiwiZGVzY3JpcHRpb24iLCJ1bmljb2RlIiwiYm9keSIsImFwcGVuZENoaWxkIiwiZmlyc3RDYWxsTWFkZSIsImxpc3RlbmVyIiwiZSIsImZvY3VzSXNJbk1vZGFscyIsImNvbnRhaW5zIiwidGFyZ2V0IiwiZWRpdG9yRE9NIiwiUmVhY3RFZGl0b3IiLCJ0b0RPTU5vZGUiLCJmb2N1c0lzSW5FZGl0b3IiLCJoYW5kbGVDbG9zZSIsInVuZGVmaW5lZCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJoYW5kbGVDaGFuZ2UiLCJ2YWwiLCJuIiwibWFwIiwiayIsIm5hbWUiLCJnZXQiLCJ3cml0ZSIsImNhdGVnb3J5IiwiZXh0cmFDbGFzcyIsImV4dHJhUHJvcHMiLCJzdHlsZSIsImJvcmRlciIsImhhc1ByZXZpZXciLCJhY3Rpb25zIiwib25Nb3VzZUVudGVyIiwiZXYiLCJvbk1vdXNlTGVhdmUiLCJFZGl0b3IiLCJub2RlIiwic2VsZWN0aW9uIiwibm9kZUF0U2VsZWN0aW9uIiwiY3Vyc29ySXRlbSIsImJvZHlSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYm91bmRSZWN0IiwicG9zaXRpb24iLCJ0b3AiLCJNYXRoIiwiYWJzIiwib2Zmc2V0SGVpZ2h0IiwiekluZGV4IiwibGVmdFZhbHVlIiwibGVmdCIsIm9mZnNldFdpZHRoIiwicmlnaHRWYWx1ZSIsIngiLCJsZWZ0QWxpZ25lZFdpZHRoIiwicmlnaHQiLCJyaWdodEFsaWduZWRXaWR0aCIsImFkZEV2ZW50TGlzdGVuZXIiLCJDaGFyYWN0ZXJJY29uIiwibGV0dGVyIiwiQ2hhcmFjdGVyc1BsdWdpbiIsInRvb2xiYXIiLCJpY29uIiwiY2hhcmFjdGVySWNvbiIsImNoYXJhY3Rlckljb25zIiwib25DbGljayIsImNoYXIiLCJmb2N1cyIsImluc2VydFRleHQiLCJwbHVnaW5TdHlsZXMiLCJwYXJlbnROb2RlIiwicCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wbHVnaW5zL2NoYXJhY3RlcnMvaW5kZXguanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuXG5pbXBvcnQgeyBQdXJlVG9vbGJhciB9IGZyb20gJ0BwaWUtbGliL21hdGgtdG9vbGJhcic7XG5cbmltcG9ydCBDdXN0b21Qb3BwZXIgZnJvbSAnLi9jdXN0b20tcG9wcGVyJztcbmltcG9ydCB7IGluc2VydFNuYWNrQmFyIH0gZnJvbSAnLi4vcmVzcEFyZWEvdXRpbHMnO1xuaW1wb3J0IHsgY2hhcmFjdGVySWNvbnMsIHNwYW5pc2hDb25maWcsIHNwZWNpYWxDb25maWcgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IFJlYWN0RWRpdG9yIH0gZnJvbSAnc2xhdGUtcmVhY3QnO1xuaW1wb3J0IHsgRWRpdG9yIH0gZnJvbSAnc2xhdGUnO1xuY29uc3QgbG9nID0gZGVidWcoJ0BwaWUtbGliOmVkaXRhYmxlLWh0bWw6cGx1Z2luczpjaGFyYWN0ZXJzJyk7XG5cbmNvbnN0IHJlbW92ZVBvcE92ZXJzID0gKCkgPT4ge1xuICBjb25zdCBwcmV2UG9wT3ZlcnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcjbW91c2Utb3Zlci1wb3BvdmVyJyk7XG5cbiAgbG9nKCdbY2hhcmFjdGVyczpyZW1vdmVQb3BPdmVyc10nKTtcbiAgcHJldlBvcE92ZXJzLmZvckVhY2gocyA9PiBzLnJlbW92ZSgpKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVEaWFsb2dzID0gKCkgPT4ge1xuICBjb25zdCBwcmV2RGlhbG9ncyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5pbnNlcnQtY2hhcmFjdGVyLWRpYWxvZycpO1xuXG4gIGxvZygnW2NoYXJhY3RlcnM6cmVtb3ZlRGlhbG9nc10nKTtcbiAgcHJldkRpYWxvZ3MuZm9yRWFjaChzID0+IHMucmVtb3ZlKCkpO1xuICByZW1vdmVQb3BPdmVycygpO1xufTtcblxuY29uc3QgaW5zZXJ0RGlhbG9nID0gKHsgZWRpdG9yLCBjYWxsYmFjaywgb3B0cyB9KSA9PiB7XG4gIGNvbnN0IG5ld0VsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgbG9nKCdbY2hhcmFjdGVyczppbnNlcnREaWFsb2ddJyk7XG5cbiAgcmVtb3ZlRGlhbG9ncygpO1xuXG4gIG5ld0VsLmNsYXNzTmFtZSA9ICdpbnNlcnQtY2hhcmFjdGVyLWRpYWxvZyc7XG5cbiAgbGV0IGNvbmZpZ1RvVXNlO1xuXG4gIHN3aXRjaCAodHJ1ZSkge1xuICAgIGNhc2Ugb3B0cy5sYW5ndWFnZSA9PT0gJ3NwYW5pc2gnOlxuICAgICAgY29uZmlnVG9Vc2UgPSBzcGFuaXNoQ29uZmlnO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBvcHRzLmxhbmd1YWdlID09PSAnc3BlY2lhbCc6XG4gICAgICBjb25maWdUb1VzZSA9IHNwZWNpYWxDb25maWc7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgY29uZmlnVG9Vc2UgPSBvcHRzO1xuICB9XG5cbiAgaWYgKCFjb25maWdUb1VzZS5jaGFyYWN0ZXJzKSB7XG4gICAgaW5zZXJ0U25hY2tCYXIoJ05vIGNoYXJhY3RlcnMgcHJvdmlkZWQgb3IgbGFuZ3VhZ2Ugbm90IHJlY29nbml6ZWQnKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBsYXlvdXRGb3JDaGFyYWN0ZXJzID0gY29uZmlnVG9Vc2UuY2hhcmFjdGVycy5yZWR1Y2UoXG4gICAgKG9iaiwgYXJyKSA9PiB7XG4gICAgICBpZiAoYXJyLmxlbmd0aCA+PSBvYmouY29sdW1ucykge1xuICAgICAgICBvYmouY29sdW1ucyA9IGFyci5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSxcbiAgICB7IHJvd3M6IGNvbmZpZ1RvVXNlLmNoYXJhY3RlcnMubGVuZ3RoLCBjb2x1bW5zOiAwIH1cbiAgKTtcblxuICBsZXQgcG9wb3ZlckVsO1xuXG4gIGNvbnN0IGNsb3NlUG9wT3ZlciA9ICgpID0+IHtcbiAgICBpZiAocG9wb3ZlckVsKSB7XG4gICAgICBwb3BvdmVyRWwucmVtb3ZlKCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlUG9wT3ZlcnMoKTtcbiAgfTtcblxuICBjb25zdCByZW5kZXJQb3BPdmVyID0gKGV2ZW50LCBlbCkgPT4ge1xuICAgIGlmICghZXZlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpbmZvU3R5bGUgPSB7IGZvbnRTaXplOiAnMjBweCcsIGxpbmVIZWlnaHQ6ICcyMHB4JyB9O1xuXG4gICAgY2xvc2VQb3BPdmVyKCk7XG5cbiAgICBwb3BvdmVyRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBSZWFjdERPTS5yZW5kZXIoXG4gICAgICA8Q3VzdG9tUG9wcGVyIG9uQ2xvc2U9e2Nsb3NlUG9wT3Zlcn0gYW5jaG9yRWw9e2V2ZW50LmN1cnJlbnRUYXJnZXR9PlxuICAgICAgICA8ZGl2PntlbC5sYWJlbH08L2Rpdj5cblxuICAgICAgICA8ZGl2IHN0eWxlPXtpbmZvU3R5bGV9PntlbC5kZXNjcmlwdGlvbn08L2Rpdj5cblxuICAgICAgICA8ZGl2IHN0eWxlPXtpbmZvU3R5bGV9PntlbC51bmljb2RlfTwvZGl2PlxuICAgICAgPC9DdXN0b21Qb3BwZXI+LFxuICAgICAgcG9wb3ZlckVsXG4gICAgKTtcblxuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobmV3RWwpO1xuICB9O1xuXG4gIGxldCBmaXJzdENhbGxNYWRlID0gZmFsc2U7XG5cbiAgY29uc3QgbGlzdGVuZXIgPSBlID0+IHtcbiAgICAvLyB0aGlzIHdpbGwgYmUgdHJpZ2dlcmVkIHJpZ2h0IGFmdGVyIHNldHRpbmcgaXQgYmVjYXVzZVxuICAgIC8vIHRoaXMgdG9vbGJhciBpcyBhZGRlZCBvbiB0aGUgbW91c2Vkb3duIGV2ZW50XG4gICAgLy8gc28gcmlnaHQgYWZ0ZXIgbW91c2V1cCwgdGhlIGNsaWNrIHdpbGwgYmUgdHJpZ2dlcmVkXG4gICAgaWYgKGZpcnN0Q2FsbE1hZGUpIHtcbiAgICAgIGNvbnN0IGZvY3VzSXNJbk1vZGFscyA9XG4gICAgICAgIG5ld0VsLmNvbnRhaW5zKGUudGFyZ2V0KSB8fCAocG9wb3ZlckVsICYmIHBvcG92ZXJFbC5jb250YWlucyhlLnRhcmdldCkpO1xuICAgICAgY29uc3QgZWRpdG9yRE9NID0gUmVhY3RFZGl0b3IudG9ET01Ob2RlKGVkaXRvciwgZWRpdG9yKTtcbiAgICAgIGNvbnN0IGZvY3VzSXNJbkVkaXRvciA9IGVkaXRvckRPTS5jb250YWlucyhlLnRhcmdldCk7XG5cbiAgICAgIGlmICghKGZvY3VzSXNJbk1vZGFscyB8fCBmb2N1c0lzSW5FZGl0b3IpKSB7XG4gICAgICAgIGhhbmRsZUNsb3NlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpcnN0Q2FsbE1hZGUgPSB0cnVlO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBoYW5kbGVDbG9zZSA9ICgpID0+IHtcbiAgICBjYWxsYmFjayh1bmRlZmluZWQsIHRydWUpO1xuICAgIG5ld0VsLnJlbW92ZSgpO1xuICAgIGNsb3NlUG9wT3ZlcigpO1xuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBsaXN0ZW5lcik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdmFsID0+IHtcbiAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNhbGxiYWNrKHZhbCwgdHJ1ZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGVsID0gKFxuICAgIDxQdXJlVG9vbGJhclxuICAgICAgYXV0b0ZvY3VzXG4gICAgICBub0RlY2ltYWxcbiAgICAgIGhpZGVJbnB1dFxuICAgICAgbm9MYXRleEhhbmRsaW5nXG4gICAgICBsYXlvdXRGb3JLZXlQYWQ9e2xheW91dEZvckNoYXJhY3RlcnN9XG4gICAgICBhZGRpdGlvbmFsS2V5cz17Y29uZmlnVG9Vc2UuY2hhcmFjdGVycy5yZWR1Y2UoKGFyciwgbikgPT4ge1xuICAgICAgICBhcnIgPSBbXG4gICAgICAgICAgLi4uYXJyLFxuICAgICAgICAgIC4uLm4ubWFwKGsgPT4gKHtcbiAgICAgICAgICAgIG5hbWU6IGdldChrLCAnbmFtZScpIHx8IGssXG4gICAgICAgICAgICB3cml0ZTogZ2V0KGssICd3cml0ZScpIHx8IGssXG4gICAgICAgICAgICBsYWJlbDogZ2V0KGssICdsYWJlbCcpIHx8IGssXG4gICAgICAgICAgICBjYXRlZ29yeTogJ2NoYXJhY3RlcicsXG4gICAgICAgICAgICBleHRyYUNsYXNzOiAnY2hhcmFjdGVyJyxcbiAgICAgICAgICAgIGV4dHJhUHJvcHM6IHtcbiAgICAgICAgICAgICAgLi4uKGsuZXh0cmFQcm9wcyB8fCB7fSksXG4gICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgLi4uKGsuZXh0cmFQcm9wcyB8fCB7fSkuc3R5bGUsXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkICMwMDAnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAuLi4oY29uZmlnVG9Vc2UuaGFzUHJldmlld1xuICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IHsgb25Nb3VzZUVudGVyOiBldiA9PiByZW5kZXJQb3BPdmVyKGV2LCBrKSwgb25Nb3VzZUxlYXZlOiBjbG9zZVBvcE92ZXIgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgOiB7fSlcbiAgICAgICAgICB9KSlcbiAgICAgICAgXTtcblxuICAgICAgICByZXR1cm4gYXJyO1xuICAgICAgfSwgW10pfVxuICAgICAga2V5cGFkTW9kZT1cImxhbmd1YWdlXCJcbiAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICBvbkRvbmU9e2hhbmRsZUNsb3NlfVxuICAgIC8+XG4gICk7XG5cbiAgUmVhY3RET00ucmVuZGVyKGVsLCBuZXdFbCwgKCkgPT4ge1xuICAgIGNvbnN0IFtub2RlQXRTZWxlY3Rpb25dID0gRWRpdG9yLm5vZGUoZWRpdG9yLCBlZGl0b3Iuc2VsZWN0aW9uKTtcbiAgICBjb25zdCBjdXJzb3JJdGVtID0gUmVhY3RFZGl0b3IudG9ET01Ob2RlKGVkaXRvciwgbm9kZUF0U2VsZWN0aW9uKTtcblxuICAgIGlmIChjdXJzb3JJdGVtKSB7XG4gICAgICBjb25zdCBib2R5UmVjdCA9IGRvY3VtZW50LmJvZHkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBib3VuZFJlY3QgPSBjdXJzb3JJdGVtLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5ld0VsKTtcbiAgICAgIG5ld0VsLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcbiAgICAgIG5ld0VsLnN0eWxlLnRvcCA9IGAke2JvdW5kUmVjdC50b3AgKyBNYXRoLmFicyhib2R5UmVjdC50b3ApIC0gbmV3RWwub2Zmc2V0SGVpZ2h0IC0gMTB9cHhgO1xuICAgICAgbmV3RWwuc3R5bGUuekluZGV4ID0gOTk5OTk7XG5cbiAgICAgIGNvbnN0IGxlZnRWYWx1ZSA9IGAke2JvdW5kUmVjdC5sZWZ0ICtcbiAgICAgICAgTWF0aC5hYnMoYm9keVJlY3QubGVmdCkgK1xuICAgICAgICBjdXJzb3JJdGVtLm9mZnNldFdpZHRoICtcbiAgICAgICAgMTB9cHhgO1xuXG4gICAgICBjb25zdCByaWdodFZhbHVlID0gYCR7Ym91bmRSZWN0Lnh9cHhgO1xuXG4gICAgICBuZXdFbC5zdHlsZS5sZWZ0ID0gbGVmdFZhbHVlO1xuXG4gICAgICBjb25zdCBsZWZ0QWxpZ25lZFdpZHRoID0gbmV3RWwub2Zmc2V0V2lkdGg7XG5cbiAgICAgIG5ld0VsLnN0eWxlLmxlZnQgPSAndW5zZXQnO1xuICAgICAgbmV3RWwuc3R5bGUucmlnaHQgPSByaWdodFZhbHVlO1xuXG4gICAgICBjb25zdCByaWdodEFsaWduZWRXaWR0aCA9IG5ld0VsLm9mZnNldFdpZHRoO1xuXG4gICAgICBuZXdFbC5zdHlsZS5sZWZ0ID0gJ3Vuc2V0JztcbiAgICAgIG5ld0VsLnN0eWxlLnJpZ2h0ID0gJ3Vuc2V0JztcblxuICAgICAgaWYgKGxlZnRBbGlnbmVkV2lkdGggPj0gcmlnaHRBbGlnbmVkV2lkdGgpIHtcbiAgICAgICAgbmV3RWwuc3R5bGUubGVmdCA9IGxlZnRWYWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld0VsLnN0eWxlLnJpZ2h0ID0gcmlnaHRWYWx1ZTtcbiAgICAgIH1cblxuICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGxpc3RlbmVyKTtcbiAgICB9XG4gIH0pO1xufTtcblxuY29uc3QgQ2hhcmFjdGVySWNvbiA9ICh7IGxldHRlciB9KSA9PiAoXG4gIDxkaXZcbiAgICBzdHlsZT17e1xuICAgICAgZm9udFNpemU6ICcyNXB4JyxcbiAgICAgIGxpbmVIZWlnaHQ6ICcxNXB4J1xuICAgIH19XG4gID5cbiAgICB7bGV0dGVyfVxuICA8L2Rpdj5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENoYXJhY3RlcnNQbHVnaW4ob3B0cykge1xuICByZW1vdmVEaWFsb2dzKCk7XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2NoYXJhY3RlcnMnLFxuICAgIHRvb2xiYXI6IHtcbiAgICAgIGljb246IDxDaGFyYWN0ZXJJY29uIGxldHRlcj17b3B0cy5jaGFyYWN0ZXJJY29uIHx8IGNoYXJhY3Rlckljb25zW29wdHMubGFuZ3VhZ2VdIHx8ICfDsSd9IC8+LFxuICAgICAgb25DbGljazogZWRpdG9yID0+IHtcbiAgICAgICAgY29uc3QgY2FsbGJhY2sgPSAoY2hhciwgZm9jdXMpID0+IHtcbiAgICAgICAgICBpZiAoY2hhcikge1xuICAgICAgICAgICAgbG9nKCdbY2hhcmFjdGVyczppbnNlcnRdOiAnLCBjaGFyKTtcbiAgICAgICAgICAgIGVkaXRvci5pbnNlcnRUZXh0KGNoYXIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGxvZygnW2NoYXJhY3RlcnM6Y2xpY2tdJyk7XG5cbiAgICAgICAgICBpZiAoZm9jdXMpIHtcbiAgICAgICAgICAgIFJlYWN0RWRpdG9yLmZvY3VzKGVkaXRvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGluc2VydERpYWxvZyh7IGVkaXRvciwgY2FsbGJhY2ssIG9wdHMgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIHBsdWdpblN0eWxlczogKG5vZGUsIHBhcmVudE5vZGUsIHApID0+IHtcbiAgICAgIGlmIChwKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgdG9wOiAnaW5pdGlhbCdcbiAgICAgICAgfTtcbiAg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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/plugins/characters/index.jsx"],"names":["log","removePopOvers","prevPopOvers","document","querySelectorAll","forEach","s","remove","removeDialogs","prevDialogs","insertDialog","editorDOM","value","callback","opts","newEl","createElement","className","configToUse","language","spanishConfig","specialConfig","characters","layoutForCharacters","reduce","obj","arr","length","columns","rows","popoverEl","closePopOver","renderPopOver","event","el","infoStyle","fontSize","lineHeight","ReactDOM","render","currentTarget","label","description","unicode","body","appendChild","firstCallMade","listener","e","focusIsInModals","contains","target","focusIsInEditor","handleClose","undefined","removeEventListener","handleChange","val","n","map","k","name","write","category","extraClass","extraProps","style","border","hasPreview","actions","onMouseEnter","ev","onMouseLeave","cursorItem","querySelector","anchorKey","bodyRect","getBoundingClientRect","boundRect","position","top","Math","abs","offsetHeight","zIndex","leftValue","left","offsetWidth","rightValue","x","leftAlignedWidth","right","rightAlignedWidth","addEventListener","CharacterIcon","letter","CharactersPlugin","toolbar","icon","characterIcon","characterIcons","onClick","onChange","getFocusedValue","key","valueToUse","char","focus","change","insertTextByKey","anchorOffset","pluginStyles","node","parentNode","p"],"mappings":";;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;;;;;AACA,IAAMA,GAAG,GAAG,uBAAM,2CAAN,CAAZ;;AAEA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,GAAM;AAC3B,MAAMC,YAAY,GAAGC,QAAQ,CAACC,gBAAT,CAA0B,qBAA1B,CAArB;AAEAJ,EAAAA,GAAG,CAAC,6BAAD,CAAH;AACAE,EAAAA,YAAY,CAACG,OAAb,CAAqB,UAACC,CAAD;AAAA,WAAOA,CAAC,CAACC,MAAF,EAAP;AAAA,GAArB;AACD,CALD;;AAOO,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,GAAM;AACjC,MAAMC,WAAW,GAAGN,QAAQ,CAACC,gBAAT,CAA0B,0BAA1B,CAApB;AAEAJ,EAAAA,GAAG,CAAC,4BAAD,CAAH;AACAS,EAAAA,WAAW,CAACJ,OAAZ,CAAoB,UAACC,CAAD;AAAA,WAAOA,CAAC,CAACC,MAAF,EAAP;AAAA,GAApB;AACAN,EAAAA,cAAc;AACf,CANM;;;;AAQP,IAAMS,YAAY,GAAG,SAAfA,YAAe,OAA0C;AAAA,MAAvCC,SAAuC,QAAvCA,SAAuC;AAAA,MAA5BC,KAA4B,QAA5BA,KAA4B;AAAA,MAArBC,QAAqB,QAArBA,QAAqB;AAAA,MAAXC,IAAW,QAAXA,IAAW;AAC7D,MAAMC,KAAK,GAAGZ,QAAQ,CAACa,aAAT,CAAuB,KAAvB,CAAd;AAEAhB,EAAAA,GAAG,CAAC,2BAAD,CAAH;AAEAQ,EAAAA,aAAa;AAEbO,EAAAA,KAAK,CAACE,SAAN,GAAkB,yBAAlB;AAEA,MAAIC,WAAJ;;AAEA,UAAQ,IAAR;AACE,SAAKJ,IAAI,CAACK,QAAL,KAAkB,SAAvB;AACED,MAAAA,WAAW,GAAGE,qBAAd;AACA;;AACF,SAAKN,IAAI,CAACK,QAAL,KAAkB,SAAvB;AACED,MAAAA,WAAW,GAAGG,qBAAd;AACA;;AACF;AACEH,MAAAA,WAAW,GAAGJ,IAAd;AARJ;;AAWA,MAAI,CAACI,WAAW,CAACI,UAAjB,EAA6B;AAC3B,+BAAe,mDAAf;AACA;AACD;;AAED,MAAMC,mBAAmB,GAAGL,WAAW,CAACI,UAAZ,CAAuBE,MAAvB,CAC1B,UAACC,GAAD,EAAMC,GAAN,EAAc;AACZ,QAAIA,GAAG,CAACC,MAAJ,IAAcF,GAAG,CAACG,OAAtB,EAA+B;AAC7BH,MAAAA,GAAG,CAACG,OAAJ,GAAcF,GAAG,CAACC,MAAlB;AACD;;AAED,WAAOF,GAAP;AACD,GAPyB,EAQ1B;AAAEI,IAAAA,IAAI,EAAEX,WAAW,CAACI,UAAZ,CAAuBK,MAA/B;AAAuCC,IAAAA,OAAO,EAAE;AAAhD,GAR0B,CAA5B;AAWA,MAAIE,SAAJ;;AAEA,MAAMC,YAAY,GAAG,SAAfA,YAAe,GAAM;AACzB,QAAID,SAAJ,EAAe;AACbA,MAAAA,SAAS,CAACvB,MAAV;AACD;;AAEDN,IAAAA,cAAc;AACf,GAND;;AAQA,MAAM+B,aAAa,GAAG,SAAhBA,aAAgB,CAACC,KAAD,EAAQC,EAAR,EAAe;AACnC,QAAI,CAACD,KAAL,EAAY;AACV;AACD;;AAED,QAAME,SAAS,GAAG;AAAEC,MAAAA,QAAQ,EAAE,MAAZ;AAAoBC,MAAAA,UAAU,EAAE;AAAhC,KAAlB;AAEAN,IAAAA,YAAY;AAEZD,IAAAA,SAAS,GAAG3B,QAAQ,CAACa,aAAT,CAAuB,KAAvB,CAAZ;;AACAsB,yBAASC,MAAT,eACE,gCAAC,wBAAD;AAAc,MAAA,OAAO,EAAER,YAAvB;AAAqC,MAAA,QAAQ,EAAEE,KAAK,CAACO;AAArD,oBACE,6CAAMN,EAAE,CAACO,KAAT,CADF,eAGE;AAAK,MAAA,KAAK,EAAEN;AAAZ,OAAwBD,EAAE,CAACQ,WAA3B,CAHF,eAKE;AAAK,MAAA,KAAK,EAAEP;AAAZ,OAAwBD,EAAE,CAACS,OAA3B,CALF,CADF,EAQEb,SARF;;AAWA3B,IAAAA,QAAQ,CAACyC,IAAT,CAAcC,WAAd,CAA0B9B,KAA1B;AACD,GAtBD;;AAwBA,MAAI+B,aAAa,GAAG,KAApB;;AAEA,MAAMC,QAAQ,GAAG,SAAXA,QAAW,CAACC,CAAD,EAAO;AACtB;AACA;AACA;AACA,QAAIF,aAAJ,EAAmB;AACjB,UAAMG,eAAe,GAAGlC,KAAK,CAACmC,QAAN,CAAeF,CAAC,CAACG,MAAjB,KAA6BrB,SAAS,IAAIA,SAAS,CAACoB,QAAV,CAAmBF,CAAC,CAACG,MAArB,CAAlE;AACA,UAAMC,eAAe,GAAGzC,SAAS,CAACuC,QAAV,CAAmBF,CAAC,CAACG,MAArB,CAAxB;;AAEA,UAAI,EAAEF,eAAe,IAAIG,eAArB,CAAJ,EAA2C;AACzCC,QAAAA,WAAW;AACZ;AACF,KAPD,MAOO;AACLP,MAAAA,aAAa,GAAG,IAAhB;AACD;AACF,GAdD;;AAgBA,MAAMO,WAAW,GAAG,SAAdA,WAAc,GAAM;AACxBxC,IAAAA,QAAQ,CAACyC,SAAD,EAAY,IAAZ,CAAR;AACAvC,IAAAA,KAAK,CAACR,MAAN;AACAwB,IAAAA,YAAY;AACZ5B,IAAAA,QAAQ,CAACyC,IAAT,CAAcW,mBAAd,CAAkC,OAAlC,EAA2CR,QAA3C;AACD,GALD;;AAOA,MAAMS,YAAY,GAAG,SAAfA,YAAe,CAACC,GAAD,EAAS;AAC5B,QAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;AAC3B5C,MAAAA,QAAQ,CAAC4C,GAAD,EAAM,IAAN,CAAR;AACD;AACF,GAJD;;AAMA,MAAMvB,EAAE,gBACN,gCAAC,wBAAD;AACE,IAAA,SAAS,MADX;AAEE,IAAA,SAAS,MAFX;AAGE,IAAA,SAAS,MAHX;AAIE,IAAA,eAAe,MAJjB;AAKE,IAAA,eAAe,EAAEX,mBALnB;AAME,IAAA,cAAc,EAAEL,WAAW,CAACI,UAAZ,CAAuBE,MAAvB,CAA8B,UAACE,GAAD,EAAMgC,CAAN,EAAY;AACxDhC,MAAAA,GAAG,iDACEA,GADF,uCAEEgC,CAAC,CAACC,GAAF,CAAM,UAACC,CAAD;AAAA;AACPC,UAAAA,IAAI,EAAE,qBAAID,CAAJ,EAAO,MAAP,KAAkBA,CADjB;AAEPE,UAAAA,KAAK,EAAE,qBAAIF,CAAJ,EAAO,OAAP,KAAmBA,CAFnB;AAGPnB,UAAAA,KAAK,EAAE,qBAAImB,CAAJ,EAAO,OAAP,KAAmBA,CAHnB;AAIPG,UAAAA,QAAQ,EAAE,WAJH;AAKPC,UAAAA,UAAU,EAAE,WALL;AAMPC,UAAAA,UAAU,kCACJL,CAAC,CAACK,UAAF,IAAgB,EADZ;AAERC,YAAAA,KAAK,kCACA,CAACN,CAAC,CAACK,UAAF,IAAgB,EAAjB,EAAqBC,KADrB;AAEHC,cAAAA,MAAM,EAAE;AAFL;AAFG;AANH,WAaHjD,WAAW,CAACkD,UAAZ,GACA;AACEC,UAAAA,OAAO,EAAE;AAAEC,YAAAA,YAAY,EAAE,sBAACC,EAAD;AAAA,qBAAQvC,aAAa,CAACuC,EAAD,EAAKX,CAAL,CAArB;AAAA,aAAhB;AAA8CY,YAAAA,YAAY,EAAEzC;AAA5D;AADX,SADA,GAIA,EAjBG;AAAA,OAAN,CAFF,EAAH;AAuBA,aAAOL,GAAP;AACD,KAzBe,EAyBb,EAzBa,CANlB;AAgCE,IAAA,UAAU,EAAC,UAhCb;AAiCE,IAAA,QAAQ,EAAE8B,YAjCZ;AAkCE,IAAA,MAAM,EAAEH;AAlCV,IADF;;AAuCAf,uBAASC,MAAT,CAAgBL,EAAhB,EAAoBnB,KAApB,EAA2B,YAAM;AAC/B,QAAM0D,UAAU,GAAGtE,QAAQ,CAACuE,aAAT,uBAAqC9D,KAAK,CAAC+D,SAA3C,SAAnB;;AAEA,QAAIF,UAAJ,EAAgB;AACd,UAAMG,QAAQ,GAAGzE,QAAQ,CAACyC,IAAT,CAAciC,qBAAd,EAAjB;AACA,UAAMC,SAAS,GAAGL,UAAU,CAACI,qBAAX,EAAlB;AAEA1E,MAAAA,QAAQ,CAACyC,IAAT,CAAcC,WAAd,CAA0B9B,KAA1B;AACAA,MAAAA,KAAK,CAACmD,KAAN,CAAYa,QAAZ,GAAuB,UAAvB;AACAhE,MAAAA,KAAK,CAACmD,KAAN,CAAYc,GAAZ,aAAqBF,SAAS,CAACE,GAAV,GAAgBC,IAAI,CAACC,GAAL,CAASN,QAAQ,CAACI,GAAlB,CAAhB,GAAyCjE,KAAK,CAACoE,YAA/C,GAA8D,EAAnF;AACApE,MAAAA,KAAK,CAACmD,KAAN,CAAYkB,MAAZ,GAAqB,KAArB;AAEA,UAAMC,SAAS,aAAMP,SAAS,CAACQ,IAAV,GAAiBL,IAAI,CAACC,GAAL,CAASN,QAAQ,CAACU,IAAlB,CAAjB,GAA2Cb,UAAU,CAACc,WAAtD,GAAoE,EAA1E,OAAf;AAEA,UAAMC,UAAU,aAAMV,SAAS,CAACW,CAAhB,OAAhB;AAEA1E,MAAAA,KAAK,CAACmD,KAAN,CAAYoB,IAAZ,GAAmBD,SAAnB;AAEA,UAAMK,gBAAgB,GAAG3E,KAAK,CAACwE,WAA/B;AAEAxE,MAAAA,KAAK,CAACmD,KAAN,CAAYoB,IAAZ,GAAmB,OAAnB;AACAvE,MAAAA,KAAK,CAACmD,KAAN,CAAYyB,KAAZ,GAAoBH,UAApB;AAEA,UAAMI,iBAAiB,GAAG7E,KAAK,CAACwE,WAAhC;AAEAxE,MAAAA,KAAK,CAACmD,KAAN,CAAYoB,IAAZ,GAAmB,OAAnB;AACAvE,MAAAA,KAAK,CAACmD,KAAN,CAAYyB,KAAZ,GAAoB,OAApB;;AAEA,UAAID,gBAAgB,IAAIE,iBAAxB,EAA2C;AACzC7E,QAAAA,KAAK,CAACmD,KAAN,CAAYoB,IAAZ,GAAmBD,SAAnB;AACD,OAFD,MAEO;AACLtE,QAAAA,KAAK,CAACmD,KAAN,CAAYyB,KAAZ,GAAoBH,UAApB;AACD;;AAEDrF,MAAAA,QAAQ,CAACyC,IAAT,CAAciD,gBAAd,CAA+B,OAA/B,EAAwC9C,QAAxC;AACD;AACF,GApCD;AAqCD,CAnLD;;AAqLA,IAAM+C,aAAa,GAAG,SAAhBA,aAAgB;AAAA,MAAGC,MAAH,SAAGA,MAAH;AAAA,sBACpB;AACE,IAAA,KAAK,EAAE;AACL3D,MAAAA,QAAQ,EAAE,MADL;AAELC,MAAAA,UAAU,EAAE;AAFP;AADT,KAMG0D,MANH,CADoB;AAAA,CAAtB;;AAWe,SAASC,gBAAT,CAA0BlF,IAA1B,EAAgC;AAC7CN,EAAAA,aAAa;AACb,SAAO;AACLqD,IAAAA,IAAI,EAAE,YADD;AAELoC,IAAAA,OAAO,EAAE;AACPC,MAAAA,IAAI,eAAE,gCAAC,aAAD;AAAe,QAAA,MAAM,EAAEpF,IAAI,CAACqF,aAAL,IAAsBC,uBAAetF,IAAI,CAACK,QAApB,CAAtB,IAAuD;AAA9E,QADC;AAEPkF,MAAAA,OAAO,EAAE,iBAACzF,KAAD,EAAQ0F,QAAR,EAAkBC,eAAlB,EAAsC;AAC7C,YAAM5F,SAAS,GAAGR,QAAQ,CAACuE,aAAT,uBAAqC9D,KAAK,CAACT,QAAN,CAAeqG,GAApD,SAAlB;AACA,YAAIC,UAAU,GAAG7F,KAAjB;;AACA,YAAMC,QAAQ,GAAG,SAAXA,QAAW,CAAC6F,KAAD,EAAOC,KAAP,EAAiB;AAChCF,UAAAA,UAAU,GAAGF,eAAe,EAA5B;;AAEA,cAAIG,KAAJ,EAAU;AACR,gBAAME,MAAM,GAAGH,UAAU,CAACG,MAAX,GAAoBC,eAApB,CAAoCJ,UAAU,CAAC9B,SAA/C,EAA0D8B,UAAU,CAACK,YAArE,EAAmFJ,KAAnF,CAAf;AAEAD,YAAAA,UAAU,GAAGG,MAAM,CAAChG,KAApB;AACAZ,YAAAA,GAAG,CAAC,uBAAD,EAA0BY,KAA1B,CAAH;AACA0F,YAAAA,QAAQ,CAACM,MAAD,CAAR;AACD;;AAED5G,UAAAA,GAAG,CAAC,oBAAD,CAAH;;AAEA,cAAI2G,KAAJ,EAAW;AACT,gBAAIhG,SAAJ,EAAe;AACbA,cAAAA,SAAS,CAACgG,KAAV;AACD;AACF;AACF,SAlBD;;AAoBAjG,QAAAA,YAAY,CAAC;AAAEC,UAAAA,SAAS,EAATA,SAAF;AAAaC,UAAAA,KAAK,EAAE6F,UAApB;AAAgC5F,UAAAA,QAAQ,EAARA,QAAhC;AAA0CC,UAAAA,IAAI,EAAJA;AAA1C,SAAD,CAAZ;AACD;AA1BM,KAFJ;AA+BLiG,IAAAA,YAAY,EAAE,sBAACC,IAAD,EAAOC,UAAP,EAAmBC,CAAnB,EAAyB;AACrC,UAAIA,CAAJ,EAAO;AACL,eAAO;AACLnC,UAAAA,QAAQ,EAAE,UADL;AAELC,UAAAA,GAAG,EAAE;AAFA,SAAP;AAID;AACF;AAtCI,GAAP;AAwCD","sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debug from 'debug';\nimport get from 'lodash/get';\n\nimport { PureToolbar } from '@pie-lib/math-toolbar';\n\nimport CustomPopper from './custom-popper';\nimport { insertSnackBar } from '../respArea/utils';\nimport { characterIcons, spanishConfig, specialConfig } from './utils';\nconst log = debug('@pie-lib:editable-html:plugins:characters');\n\nconst removePopOvers = () => {\n const prevPopOvers = document.querySelectorAll('#mouse-over-popover');\n\n log('[characters:removePopOvers]');\n prevPopOvers.forEach((s) => s.remove());\n};\n\nexport const removeDialogs = () => {\n const prevDialogs = document.querySelectorAll('.insert-character-dialog');\n\n log('[characters:removeDialogs]');\n prevDialogs.forEach((s) => s.remove());\n removePopOvers();\n};\n\nconst insertDialog = ({ editorDOM, value, callback, opts }) => {\n const newEl = document.createElement('div');\n\n log('[characters:insertDialog]');\n\n removeDialogs();\n\n newEl.className = 'insert-character-dialog';\n\n let configToUse;\n\n switch (true) {\n case opts.language === 'spanish':\n configToUse = spanishConfig;\n break;\n case opts.language === 'special':\n configToUse = specialConfig;\n break;\n default:\n configToUse = opts;\n }\n\n if (!configToUse.characters) {\n insertSnackBar('No characters provided or language not recognized');\n return;\n }\n\n const layoutForCharacters = configToUse.characters.reduce(\n (obj, arr) => {\n if (arr.length >= obj.columns) {\n obj.columns = arr.length;\n }\n\n return obj;\n },\n { rows: configToUse.characters.length, columns: 0 },\n );\n\n let popoverEl;\n\n const closePopOver = () => {\n if (popoverEl) {\n popoverEl.remove();\n }\n\n removePopOvers();\n };\n\n const renderPopOver = (event, el) => {\n if (!event) {\n return;\n }\n\n const infoStyle = { fontSize: '20px', lineHeight: '20px' };\n\n closePopOver();\n\n popoverEl = document.createElement('div');\n ReactDOM.render(\n <CustomPopper onClose={closePopOver} anchorEl={event.currentTarget}>\n <div>{el.label}</div>\n\n <div style={infoStyle}>{el.description}</div>\n\n <div style={infoStyle}>{el.unicode}</div>\n </CustomPopper>,\n popoverEl,\n );\n\n document.body.appendChild(newEl);\n };\n\n let firstCallMade = false;\n\n const listener = (e) => {\n // this will be triggered right after setting it because\n // this toolbar is added on the mousedown event\n // so right after mouseup, the click will be triggered\n if (firstCallMade) {\n const focusIsInModals = newEl.contains(e.target) || (popoverEl && popoverEl.contains(e.target));\n const focusIsInEditor = editorDOM.contains(e.target);\n\n if (!(focusIsInModals || focusIsInEditor)) {\n handleClose();\n }\n } else {\n firstCallMade = true;\n }\n };\n\n const handleClose = () => {\n callback(undefined, true);\n newEl.remove();\n closePopOver();\n document.body.removeEventListener('click', listener);\n };\n\n const handleChange = (val) => {\n if (typeof val === 'string') {\n callback(val, true);\n }\n };\n\n const el = (\n <PureToolbar\n autoFocus\n noDecimal\n hideInput\n noLatexHandling\n layoutForKeyPad={layoutForCharacters}\n additionalKeys={configToUse.characters.reduce((arr, n) => {\n arr = [\n ...arr,\n ...n.map((k) => ({\n name: get(k, 'name') || k,\n write: get(k, 'write') || k,\n label: get(k, 'label') || k,\n category: 'character',\n extraClass: 'character',\n extraProps: {\n ...(k.extraProps || {}),\n style: {\n ...(k.extraProps || {}).style,\n border: '1px solid #000',\n },\n },\n ...(configToUse.hasPreview\n ? {\n actions: { onMouseEnter: (ev) => renderPopOver(ev, k), onMouseLeave: closePopOver },\n }\n : {}),\n })),\n ];\n\n return arr;\n }, [])}\n keypadMode=\"language\"\n onChange={handleChange}\n onDone={handleClose}\n />\n );\n\n ReactDOM.render(el, newEl, () => {\n const cursorItem = document.querySelector(`[data-key=\"${value.anchorKey}\"]`);\n\n if (cursorItem) {\n const bodyRect = document.body.getBoundingClientRect();\n const boundRect = cursorItem.getBoundingClientRect();\n\n document.body.appendChild(newEl);\n newEl.style.position = 'absolute';\n newEl.style.top = `${boundRect.top + Math.abs(bodyRect.top) - newEl.offsetHeight - 10}px`;\n newEl.style.zIndex = 99999;\n\n const leftValue = `${boundRect.left + Math.abs(bodyRect.left) + cursorItem.offsetWidth + 10}px`;\n\n const rightValue = `${boundRect.x}px`;\n\n newEl.style.left = leftValue;\n\n const leftAlignedWidth = newEl.offsetWidth;\n\n newEl.style.left = 'unset';\n newEl.style.right = rightValue;\n\n const rightAlignedWidth = newEl.offsetWidth;\n\n newEl.style.left = 'unset';\n newEl.style.right = 'unset';\n\n if (leftAlignedWidth >= rightAlignedWidth) {\n newEl.style.left = leftValue;\n } else {\n newEl.style.right = rightValue;\n }\n\n document.body.addEventListener('click', listener);\n }\n });\n};\n\nconst CharacterIcon = ({ letter }) => (\n <div\n style={{\n fontSize: '25px',\n lineHeight: '15px',\n }}\n >\n {letter}\n </div>\n);\n\nexport default function CharactersPlugin(opts) {\n removeDialogs();\n return {\n name: 'characters',\n toolbar: {\n icon: <CharacterIcon letter={opts.characterIcon || characterIcons[opts.language] || 'ñ'} />,\n onClick: (value, onChange, getFocusedValue) => {\n const editorDOM = document.querySelector(`[data-key=\"${value.document.key}\"]`);\n let valueToUse = value;\n const callback = (char, focus) => {\n valueToUse = getFocusedValue();\n\n if (char) {\n const change = valueToUse.change().insertTextByKey(valueToUse.anchorKey, valueToUse.anchorOffset, char);\n\n valueToUse = change.value;\n log('[characters:insert]: ', value);\n onChange(change);\n }\n\n log('[characters:click]');\n\n if (focus) {\n if (editorDOM) {\n editorDOM.focus();\n }\n }\n };\n\n insertDialog({ editorDOM, value: valueToUse, callback, opts });\n },\n },\n\n pluginStyles: (node, parentNode, p) => {\n if (p) {\n return {\n position: 'absolute',\n top: 'initial',\n };\n }\n },\n };\n}\n"],"file":"index.js"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["log","debug","removePopOvers","prevPopOvers","document","querySelectorAll","forEach","s","remove","removeDialogs","prevDialogs","insertDialog","editor","callback","opts","newEl","createElement","className","configToUse","language","spanishConfig","specialConfig","characters","insertSnackBar","layoutForCharacters","reduce","obj","arr","length","columns","rows","popoverEl","closePopOver","renderPopOver","event","el","infoStyle","fontSize","lineHeight","ReactDOM","render","currentTarget","label","description","unicode","body","appendChild","firstCallMade","listener","e","focusIsInModals","contains","target","editorDOM","ReactEditor","toDOMNode","focusIsInEditor","handleClose","undefined","removeEventListener","handleChange","val","n","map","k","name","get","write","category","extraClass","extraProps","style","border","hasPreview","actions","onMouseEnter","ev","onMouseLeave","Editor","node","selection","nodeAtSelection","cursorItem","bodyRect","getBoundingClientRect","boundRect","position","top","Math","abs","offsetHeight","zIndex","leftValue","left","offsetWidth","rightValue","x","leftAlignedWidth","right","rightAlignedWidth","addEventListener","CharacterIcon","letter","CharactersPlugin","toolbar","icon","characterIcon","characterIcons","onClick","char","focus","insertText","pluginStyles","parentNode","p"],"sources":["../../../src/plugins/characters/index.jsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport debug from 'debug';\nimport get from 'lodash/get';\n\nimport { PureToolbar } from '@pie-lib/math-toolbar';\n\nimport CustomPopper from './custom-popper';\nimport { insertSnackBar } from '../respArea/utils';\nimport { characterIcons, spanishConfig, specialConfig } from './utils';\nimport { ReactEditor } from 'slate-react';\nimport { Editor } from 'slate';\nconst log = debug('@pie-lib:editable-html:plugins:characters');\n\nconst removePopOvers = () => {\n const prevPopOvers = document.querySelectorAll('#mouse-over-popover');\n\n log('[characters:removePopOvers]');\n prevPopOvers.forEach(s => s.remove());\n};\n\nexport const removeDialogs = () => {\n const prevDialogs = document.querySelectorAll('.insert-character-dialog');\n\n log('[characters:removeDialogs]');\n prevDialogs.forEach(s => s.remove());\n removePopOvers();\n};\n\nconst insertDialog = ({ editor, callback, opts }) => {\n const newEl = document.createElement('div');\n\n log('[characters:insertDialog]');\n\n removeDialogs();\n\n newEl.className = 'insert-character-dialog';\n\n let configToUse;\n\n switch (true) {\n case opts.language === 'spanish':\n configToUse = spanishConfig;\n break;\n case opts.language === 'special':\n configToUse = specialConfig;\n break;\n default:\n configToUse = opts;\n }\n\n if (!configToUse.characters) {\n insertSnackBar('No characters provided or language not recognized');\n return;\n }\n\n const layoutForCharacters = configToUse.characters.reduce(\n (obj, arr) => {\n if (arr.length >= obj.columns) {\n obj.columns = arr.length;\n }\n\n return obj;\n },\n { rows: configToUse.characters.length, columns: 0 }\n );\n\n let popoverEl;\n\n const closePopOver = () => {\n if (popoverEl) {\n popoverEl.remove();\n }\n\n removePopOvers();\n };\n\n const renderPopOver = (event, el) => {\n if (!event) {\n return;\n }\n\n const infoStyle = { fontSize: '20px', lineHeight: '20px' };\n\n closePopOver();\n\n popoverEl = document.createElement('div');\n ReactDOM.render(\n <CustomPopper onClose={closePopOver} anchorEl={event.currentTarget}>\n <div>{el.label}</div>\n\n <div style={infoStyle}>{el.description}</div>\n\n <div style={infoStyle}>{el.unicode}</div>\n </CustomPopper>,\n popoverEl\n );\n\n document.body.appendChild(newEl);\n };\n\n let firstCallMade = false;\n\n const listener = e => {\n // this will be triggered right after setting it because\n // this toolbar is added on the mousedown event\n // so right after mouseup, the click will be triggered\n if (firstCallMade) {\n const focusIsInModals =\n newEl.contains(e.target) || (popoverEl && popoverEl.contains(e.target));\n const editorDOM = ReactEditor.toDOMNode(editor, editor);\n const focusIsInEditor = editorDOM.contains(e.target);\n\n if (!(focusIsInModals || focusIsInEditor)) {\n handleClose();\n }\n } else {\n firstCallMade = true;\n }\n };\n\n const handleClose = () => {\n callback(undefined, true);\n newEl.remove();\n closePopOver();\n document.body.removeEventListener('click', listener);\n };\n\n const handleChange = val => {\n if (typeof val === 'string') {\n callback(val, true);\n }\n };\n\n const el = (\n <PureToolbar\n autoFocus\n noDecimal\n hideInput\n noLatexHandling\n layoutForKeyPad={layoutForCharacters}\n additionalKeys={configToUse.characters.reduce((arr, n) => {\n arr = [\n ...arr,\n ...n.map(k => ({\n name: get(k, 'name') || k,\n write: get(k, 'write') || k,\n label: get(k, 'label') || k,\n category: 'character',\n extraClass: 'character',\n extraProps: {\n ...(k.extraProps || {}),\n style: {\n ...(k.extraProps || {}).style,\n border: '1px solid #000'\n }\n },\n ...(configToUse.hasPreview\n ? {\n actions: { onMouseEnter: ev => renderPopOver(ev, k), onMouseLeave: closePopOver }\n }\n : {})\n }))\n ];\n\n return arr;\n }, [])}\n keypadMode=\"language\"\n onChange={handleChange}\n onDone={handleClose}\n />\n );\n\n ReactDOM.render(el, newEl, () => {\n const [nodeAtSelection] = Editor.node(editor, editor.selection);\n const cursorItem = ReactEditor.toDOMNode(editor, nodeAtSelection);\n\n if (cursorItem) {\n const bodyRect = document.body.getBoundingClientRect();\n const boundRect = cursorItem.getBoundingClientRect();\n\n document.body.appendChild(newEl);\n newEl.style.position = 'absolute';\n newEl.style.top = `${boundRect.top + Math.abs(bodyRect.top) - newEl.offsetHeight - 10}px`;\n newEl.style.zIndex = 99999;\n\n const leftValue = `${boundRect.left +\n Math.abs(bodyRect.left) +\n cursorItem.offsetWidth +\n 10}px`;\n\n const rightValue = `${boundRect.x}px`;\n\n newEl.style.left = leftValue;\n\n const leftAlignedWidth = newEl.offsetWidth;\n\n newEl.style.left = 'unset';\n newEl.style.right = rightValue;\n\n const rightAlignedWidth = newEl.offsetWidth;\n\n newEl.style.left = 'unset';\n newEl.style.right = 'unset';\n\n if (leftAlignedWidth >= rightAlignedWidth) {\n newEl.style.left = leftValue;\n } else {\n newEl.style.right = rightValue;\n }\n\n document.body.addEventListener('click', listener);\n }\n });\n};\n\nconst CharacterIcon = ({ letter }) => (\n <div\n style={{\n fontSize: '25px',\n lineHeight: '15px'\n }}\n >\n {letter}\n </div>\n);\n\nexport default function CharactersPlugin(opts) {\n removeDialogs();\n return {\n name: 'characters',\n toolbar: {\n icon: <CharacterIcon letter={opts.characterIcon || characterIcons[opts.language] || 'ñ'} />,\n onClick: editor => {\n const callback = (char, focus) => {\n if (char) {\n log('[characters:insert]: ', char);\n editor.insertText(char);\n }\n\n log('[characters:click]');\n\n if (focus) {\n ReactEditor.focus(editor);\n }\n };\n\n insertDialog({ editor, callback, opts });\n }\n },\n\n pluginStyles: (node, parentNode, p) => {\n if (p) {\n return {\n position: 'absolute',\n top: 'initial'\n };\n }\n }\n };\n}\n"],"mappings":"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"}
|