@pie-lib/editable-html 11.2.0-beta.3 → 11.2.0-beta.5
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 +40 -0
- package/lib/__tests__/editor.test.js +470 -0
- package/lib/__tests__/serialization.test.js +246 -0
- package/lib/__tests__/utils.js +106 -0
- package/lib/editor.js +2 -2
- package/lib/editor.js.map +1 -1
- package/lib/plugins/image/__tests__/component.test.js +51 -0
- package/lib/plugins/image/__tests__/image-toolbar-logic.test.js +56 -0
- package/lib/plugins/image/__tests__/image-toolbar.test.js +26 -0
- package/lib/plugins/image/__tests__/index.test.js +98 -0
- package/lib/plugins/image/__tests__/insert-image-handler.test.js +125 -0
- package/lib/plugins/image/__tests__/mock-change.js +25 -0
- package/lib/plugins/list/__tests__/index.test.js +79 -0
- package/lib/plugins/math/__tests__/index.test.js +300 -0
- package/lib/plugins/media/__tests__/index.test.js +71 -0
- package/lib/plugins/table/__tests__/index.test.js +442 -0
- package/lib/plugins/table/__tests__/table-toolbar.test.js +54 -0
- package/lib/plugins/toolbar/__tests__/default-toolbar.test.js +128 -0
- package/lib/plugins/toolbar/__tests__/editor-and-toolbar.test.js +51 -0
- package/lib/plugins/toolbar/__tests__/toolbar-buttons.test.js +54 -0
- package/lib/plugins/toolbar/__tests__/toolbar.test.js +120 -0
- package/lib/shared/alert-dialog.js +75 -0
- package/package.json +7 -8
- package/src/editor.jsx +1 -1
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _serialization = require("../serialization");
|
|
4
|
+
|
|
5
|
+
jest.mock("../plugins/math", function () {
|
|
6
|
+
return {
|
|
7
|
+
serialization: {
|
|
8
|
+
serialize: jest.fn(function (o, c) {
|
|
9
|
+
return undefined;
|
|
10
|
+
}),
|
|
11
|
+
deserialize: jest.fn(function (el, next) {
|
|
12
|
+
return undefined;
|
|
13
|
+
})
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
});
|
|
17
|
+
describe('TEXT_RULE', function () {
|
|
18
|
+
var mkBr = function mkBr(previousSibling) {
|
|
19
|
+
return {
|
|
20
|
+
remove: jest.fn(),
|
|
21
|
+
previousSibling: previousSibling,
|
|
22
|
+
replaceWith: function replaceWith(foo) {
|
|
23
|
+
previousSibling.textContent = previousSibling.textContent.replace(/(<br>)|(<\/br>)/g, foo);
|
|
24
|
+
},
|
|
25
|
+
normalize: jest.fn().mockReturnThis(),
|
|
26
|
+
tagName: 'br'
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
var mkTextNode = function mkTextNode() {
|
|
31
|
+
var textContent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
32
|
+
return {
|
|
33
|
+
nodeName: '#text',
|
|
34
|
+
textContent: textContent,
|
|
35
|
+
normalize: jest.fn().mockReturnThis()
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
var mkEl = function mkEl(querySelectorAllResult) {
|
|
40
|
+
return {
|
|
41
|
+
querySelectorAll: jest.fn().mockReturnValue(querySelectorAllResult),
|
|
42
|
+
normalize: jest.fn().mockReturnThis()
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
describe('deserialize', function () {
|
|
47
|
+
it('if no previous text node, no error is thrown', function () {
|
|
48
|
+
var br = mkBr();
|
|
49
|
+
var el = mkEl([br]);
|
|
50
|
+
expect(function () {
|
|
51
|
+
return _serialization.TEXT_RULE.deserialize(el);
|
|
52
|
+
}).not.toThrow();
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
describe('htmlToValue', function () {
|
|
57
|
+
it('converts', function () {
|
|
58
|
+
var expected = {
|
|
59
|
+
object: 'value',
|
|
60
|
+
document: {
|
|
61
|
+
object: 'document',
|
|
62
|
+
data: {},
|
|
63
|
+
nodes: [{
|
|
64
|
+
object: 'block',
|
|
65
|
+
type: 'div',
|
|
66
|
+
isVoid: false,
|
|
67
|
+
data: {
|
|
68
|
+
attributes: {}
|
|
69
|
+
},
|
|
70
|
+
nodes: [{
|
|
71
|
+
object: 'block',
|
|
72
|
+
type: 'paragraph',
|
|
73
|
+
isVoid: false,
|
|
74
|
+
data: {
|
|
75
|
+
attributes: {}
|
|
76
|
+
},
|
|
77
|
+
nodes: [{
|
|
78
|
+
object: 'text',
|
|
79
|
+
leaves: [{
|
|
80
|
+
object: 'leaf',
|
|
81
|
+
text: 'foo',
|
|
82
|
+
marks: []
|
|
83
|
+
}]
|
|
84
|
+
}, {
|
|
85
|
+
object: 'inline',
|
|
86
|
+
type: 'image',
|
|
87
|
+
isVoid: true,
|
|
88
|
+
data: {
|
|
89
|
+
src: 'blah.jpg',
|
|
90
|
+
width: null,
|
|
91
|
+
height: null,
|
|
92
|
+
margin: '',
|
|
93
|
+
justifyContent: '',
|
|
94
|
+
alignment: null,
|
|
95
|
+
alt: null
|
|
96
|
+
},
|
|
97
|
+
nodes: [{
|
|
98
|
+
object: 'text',
|
|
99
|
+
leaves: [{
|
|
100
|
+
object: 'leaf',
|
|
101
|
+
text: '',
|
|
102
|
+
marks: []
|
|
103
|
+
}]
|
|
104
|
+
}]
|
|
105
|
+
}, {
|
|
106
|
+
object: 'text',
|
|
107
|
+
leaves: [{
|
|
108
|
+
object: 'leaf',
|
|
109
|
+
text: 'bar',
|
|
110
|
+
marks: []
|
|
111
|
+
}]
|
|
112
|
+
}]
|
|
113
|
+
}]
|
|
114
|
+
}]
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
var html = "<div><p>foo<img src=\"blah.jpg\"/>bar</p></div>";
|
|
118
|
+
var v = (0, _serialization.htmlToValue)(html);
|
|
119
|
+
console.log(JSON.stringify(v.toJSON()));
|
|
120
|
+
expect(v.toJSON()).toEqual(expected);
|
|
121
|
+
});
|
|
122
|
+
it('does not break', function () {
|
|
123
|
+
/*
|
|
124
|
+
More than 12 iterations of the same kind would previously break the input. Here we have 16 text nodes, and now it works.
|
|
125
|
+
*/
|
|
126
|
+
var expected = {
|
|
127
|
+
object: 'value',
|
|
128
|
+
document: {
|
|
129
|
+
object: 'document',
|
|
130
|
+
data: {},
|
|
131
|
+
nodes: [{
|
|
132
|
+
object: 'block',
|
|
133
|
+
type: 'div',
|
|
134
|
+
isVoid: false,
|
|
135
|
+
data: {
|
|
136
|
+
attributes: {}
|
|
137
|
+
},
|
|
138
|
+
nodes: [{
|
|
139
|
+
object: 'text',
|
|
140
|
+
leaves: [{
|
|
141
|
+
object: 'leaf',
|
|
142
|
+
text: 'Foo ',
|
|
143
|
+
marks: []
|
|
144
|
+
}, {
|
|
145
|
+
object: 'leaf',
|
|
146
|
+
text: 'x',
|
|
147
|
+
marks: [{
|
|
148
|
+
object: 'mark',
|
|
149
|
+
type: 'italic',
|
|
150
|
+
data: {}
|
|
151
|
+
}]
|
|
152
|
+
}, {
|
|
153
|
+
object: 'leaf',
|
|
154
|
+
text: ' bar ',
|
|
155
|
+
marks: []
|
|
156
|
+
}, {
|
|
157
|
+
object: 'leaf',
|
|
158
|
+
text: 'x',
|
|
159
|
+
marks: [{
|
|
160
|
+
object: 'mark',
|
|
161
|
+
type: 'italic',
|
|
162
|
+
data: {}
|
|
163
|
+
}]
|
|
164
|
+
}, {
|
|
165
|
+
object: 'leaf',
|
|
166
|
+
text: ' Foo ',
|
|
167
|
+
marks: []
|
|
168
|
+
}, {
|
|
169
|
+
object: 'leaf',
|
|
170
|
+
text: 'x',
|
|
171
|
+
marks: [{
|
|
172
|
+
object: 'mark',
|
|
173
|
+
type: 'italic',
|
|
174
|
+
data: {}
|
|
175
|
+
}]
|
|
176
|
+
}, {
|
|
177
|
+
object: 'leaf',
|
|
178
|
+
text: ' bar ',
|
|
179
|
+
marks: []
|
|
180
|
+
}, {
|
|
181
|
+
object: 'leaf',
|
|
182
|
+
text: 'x',
|
|
183
|
+
marks: [{
|
|
184
|
+
object: 'mark',
|
|
185
|
+
type: 'italic',
|
|
186
|
+
data: {}
|
|
187
|
+
}]
|
|
188
|
+
}, {
|
|
189
|
+
object: 'leaf',
|
|
190
|
+
text: ' Foo ',
|
|
191
|
+
marks: []
|
|
192
|
+
}, {
|
|
193
|
+
object: 'leaf',
|
|
194
|
+
text: 'x',
|
|
195
|
+
marks: [{
|
|
196
|
+
object: 'mark',
|
|
197
|
+
type: 'italic',
|
|
198
|
+
data: {}
|
|
199
|
+
}]
|
|
200
|
+
}, {
|
|
201
|
+
object: 'leaf',
|
|
202
|
+
text: ' bar ',
|
|
203
|
+
marks: []
|
|
204
|
+
}, {
|
|
205
|
+
object: 'leaf',
|
|
206
|
+
text: 'x',
|
|
207
|
+
marks: [{
|
|
208
|
+
object: 'mark',
|
|
209
|
+
type: 'italic',
|
|
210
|
+
data: {}
|
|
211
|
+
}]
|
|
212
|
+
}, {
|
|
213
|
+
object: 'leaf',
|
|
214
|
+
text: ' Foo ',
|
|
215
|
+
marks: []
|
|
216
|
+
}, {
|
|
217
|
+
object: 'leaf',
|
|
218
|
+
text: 'x',
|
|
219
|
+
marks: [{
|
|
220
|
+
object: 'mark',
|
|
221
|
+
type: 'italic',
|
|
222
|
+
data: {}
|
|
223
|
+
}]
|
|
224
|
+
}, {
|
|
225
|
+
object: 'leaf',
|
|
226
|
+
text: ' bar ',
|
|
227
|
+
marks: []
|
|
228
|
+
}, {
|
|
229
|
+
object: 'leaf',
|
|
230
|
+
text: 'x',
|
|
231
|
+
marks: [{
|
|
232
|
+
object: 'mark',
|
|
233
|
+
type: 'italic',
|
|
234
|
+
data: {}
|
|
235
|
+
}]
|
|
236
|
+
}]
|
|
237
|
+
}]
|
|
238
|
+
}]
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
var html = '<div>Foo <em>x</em> bar <em>x</em> Foo <em>x</em> bar <em>x</em> Foo <em>x</em> bar <em>x</em> Foo <em>x</em> bar <em>x</em></div>';
|
|
242
|
+
var v = (0, _serialization.htmlToValue)(html);
|
|
243
|
+
expect(v.toJSON()).toEqual(expected);
|
|
244
|
+
});
|
|
245
|
+
});
|
|
246
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vc2VyaWFsaXphdGlvbi50ZXN0LmpzIl0sIm5hbWVzIjpbImplc3QiLCJtb2NrIiwic2VyaWFsaXphdGlvbiIsInNlcmlhbGl6ZSIsImZuIiwibyIsImMiLCJ1bmRlZmluZWQiLCJkZXNlcmlhbGl6ZSIsImVsIiwibmV4dCIsImRlc2NyaWJlIiwibWtCciIsInByZXZpb3VzU2libGluZyIsInJlbW92ZSIsInJlcGxhY2VXaXRoIiwiZm9vIiwidGV4dENvbnRlbnQiLCJyZXBsYWNlIiwibm9ybWFsaXplIiwibW9ja1JldHVyblRoaXMiLCJ0YWdOYW1lIiwibWtUZXh0Tm9kZSIsIm5vZGVOYW1lIiwibWtFbCIsInF1ZXJ5U2VsZWN0b3JBbGxSZXN1bHQiLCJxdWVyeVNlbGVjdG9yQWxsIiwibW9ja1JldHVyblZhbHVlIiwiaXQiLCJiciIsImV4cGVjdCIsIlRFWFRfUlVMRSIsIm5vdCIsInRvVGhyb3ciLCJleHBlY3RlZCIsIm9iamVjdCIsImRvY3VtZW50IiwiZGF0YSIsIm5vZGVzIiwidHlwZSIsImlzVm9pZCIsImF0dHJpYnV0ZXMiLCJsZWF2ZXMiLCJ0ZXh0IiwibWFya3MiLCJzcmMiLCJ3aWR0aCIsImhlaWdodCIsIm1hcmdpbiIsImp1c3RpZnlDb250ZW50IiwiYWxpZ25tZW50IiwiYWx0IiwiaHRtbCIsInYiLCJjb25zb2xlIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsInRvSlNPTiIsInRvRXF1YWwiXSwibWFwcGluZ3MiOiI7O0FBQUE7O0FBRUFBLElBQUksQ0FBQ0MsSUFBTCxvQkFBNkI7QUFBQSxTQUFPO0FBQ2xDQyxJQUFBQSxhQUFhLEVBQUU7QUFDYkMsTUFBQUEsU0FBUyxFQUFFSCxJQUFJLENBQUNJLEVBQUwsQ0FBUSxVQUFDQyxDQUFELEVBQUlDLENBQUosRUFBVTtBQUMzQixlQUFPQyxTQUFQO0FBQ0QsT0FGVSxDQURFO0FBSWJDLE1BQUFBLFdBQVcsRUFBRVIsSUFBSSxDQUFDSSxFQUFMLENBQVEs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QUFLLEVBQUUsQ0FDTDtBQUNFVCxnQkFBQUEsTUFBTSxFQUFFLE1BRFY7QUFFRUksZ0JBQUFBLElBQUksRUFBRSxRQUZSO0FBR0VGLGdCQUFBQSxJQUFJLEVBQUU7QUFIUixlQURLO0FBSFQsYUF0SE07QUFGVixXQURLO0FBTFQsU0FESztBQUhDO0FBRkssS0FBakI7QUFzSkEsUUFBTWUsSUFBSSxHQUNSLG9JQURGO0FBRUEsUUFBTUMsQ0FBQyxHQUFHLGdDQUFZRCxJQUFaLENBQVY7QUFFQXRCLElBQUFBLE1BQU0sQ0FBQ3VCLENBQUMsQ0FBQ0ssTUFBRixFQUFELENBQU4sQ0FBbUJDLE9BQW5CLENBQTJCekIsUUFBM0I7QUFDRCxHQS9KQyxDQUFGO0FBZ0tELENBcFBPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBodG1sVG9WYWx1ZSwgVEVYVF9SVUxFIH0gZnJvbSAnLi4vc2VyaWFsaXphdGlvbic7XG5cbmplc3QubW9jaygnLi4vcGx1Z2lucy9tYXRoJywgKCkgPT4gKHtcbiAgc2VyaWFsaXphdGlvbjoge1xuICAgIHNlcmlhbGl6ZTogamVzdC5mbigobywgYykgPT4ge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9KSxcbiAgICBkZXNlcmlhbGl6ZTogamVzdC5mbigoZWwsIG5leHQpID0+IHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSksXG4gIH0sXG59KSk7XG5cbmRlc2NyaWJlKCdURVhUX1JVTEUnLCAoKSA9PiB7XG4gIGNvbnN0IG1rQnIgPSAocHJldmlvdXNTaWJsaW5nKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlbW92ZTogamVzdC5mbigpLFxuICAgICAgcHJldmlvdXNTaWJsaW5nLFxuICAgICAgcmVwbGFjZVdpdGg6IChmb28pID0+IHtcbiAgICAgICAgcHJldmlvdXNTaWJsaW5nLnRleHRDb250ZW50ID0gcHJldmlvdXNTaWJsaW5nLnRleHRDb250ZW50LnJlcGxhY2UoLyg8YnI+KXwoPFxcL2JyPikvZywgZm9vKTtcbiAgICAgIH0sXG4gICAgICBub3JtYWxpemU6IGplc3QuZm4oKS5tb2NrUmV0dXJuVGhpcygpLFxuICAgICAgdGFnTmFtZTogJ2JyJyxcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IG1rVGV4dE5vZGUgPSAodGV4dENvbnRlbnQgPSAnJykgPT4gKHtcbiAgICBub2RlTmFtZTogJyN0ZXh0JyxcbiAgICB0ZXh0Q29udGVudCxcbiAgICBub3JtYWxpemU6IGplc3QuZm4oKS5tb2NrUmV0dXJuVGhpcygpLFxuICB9KTtcblxuICBjb25zdCBta0VsID0gKHF1ZXJ5U2VsZWN0b3JBbGxSZXN1bHQpID0+ICh7XG4gICAgcXVlcnlTZWxlY3RvckFsbDogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZShxdWVyeVNlbGVjdG9yQWxsUmVzdWx0KSxcbiAgICBub3JtYWxpemU6IGplc3QuZm4oKS5tb2NrUmV0dXJuVGhpcygpLFxuICB9KTtcblxuICBkZXNjcmliZSgnZGVzZXJpYWxpemUnLCAoKSA9PiB7XG4gICAgaXQoJ2lmIG5vIHByZXZpb3VzIHRleHQgbm9kZSwgbm8gZXJyb3IgaXMgdGhyb3duJywgKCkgPT4ge1xuICAgICAgY29uc3QgYnIgPSBta0JyKCk7XG4gICAgICBjb25zdCBlbCA9IG1rRWwoW2JyXSk7XG4gICAgICBleHBlY3QoKCkgPT4gVEVYVF9SVUxFLmRlc2VyaWFsaXplKGVsKSkubm90LnRvVGhyb3coKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2h0bWxUb1ZhbHVlJywgKCkgPT4ge1xuICBpdCgnY29udmVydHMnLCAoKSA9PiB7XG4gICAgY29uc3QgZXhwZWN0ZWQgPSB7XG4gICAgICBvYmplY3Q6ICd2YWx1ZScsXG4gICAgICBkb2N1bWVudDoge1xuICAgICAgICBvYmplY3Q6ICdkb2N1bWVudCcsXG4gICAgICAgIGRhdGE6IHt9LFxuICAgICAgICBub2RlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG9iamVjdDogJ2Jsb2NrJyxcbiAgICAgICAgICAgIHR5cGU6ICdkaXYnLFxuICAgICAgICAgICAgaXNWb2lkOiBmYWxzZSxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbm9kZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIG9iamVjdDogJ2Jsb2NrJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAncGFyYWdyYXBoJyxcbiAgICAgICAgICAgICAgICBpc1ZvaWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IHt9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbm9kZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIGxlYXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDogJ2xlYWYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogJ2ZvbycsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJrczogW10sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdDogJ2lubGluZScsXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpbWFnZScsXG4gICAgICAgICAgICAgICAgICAgIGlzVm9pZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICAgIHNyYzogJ2JsYWguanBnJyxcbiAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgYWxpZ25tZW50OiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgIGFsdDogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbm9kZXM6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlYXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiAnbGVhZicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya3M6IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiAndGV4dCcsXG4gICAgICAgICAgICAgICAgICAgIGxlYXZlczogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDogJ2xlYWYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogJ2JhcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJrczogW10sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgfTtcbiAgICBjb25zdCBodG1sID0gYDxkaXY+PHA+Zm9vPGltZyBzcmM9XCJibGFoLmpwZ1wiLz5iYXI8L3A+PC9kaXY+YDtcbiAgICBjb25zdCB2ID0gaHRtbFRvVmFsdWUoaHRtbCk7XG5cbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeSh2LnRvSlNPTigpKSk7XG4gICAgZXhwZWN0KHYudG9KU09OKCkpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICB9KTtcblxuICBpdCgnZG9lcyBub3QgYnJlYWsnLCAoKSA9PiB7XG4gICAgLypcbiAgICAgTW9yZSB0aGFuIDEyIGl0ZXJhdGlvbnMgb2YgdGhlIHNhbWUga2luZCB3b3VsZCBwcmV2aW91c2x5IGJyZWFrIHRoZSBpbnB1dC4gSGVyZSB3ZSBoYXZlIDE2IHRleHQgbm9kZXMsIGFuZCBub3cgaXQgd29ya3MuXG4gICAgICovXG4gICAgY29uc3QgZXhwZWN0ZWQgPSB7XG4gICAgICBvYmplY3Q6ICd2YWx1ZScsXG4gICAgICBkb2N1bWVudDoge1xuICAgICAgICBvYmplY3Q6ICdkb2N1bWVudCcsXG4gICAgICAgIGRhdGE6IHt9LFxuICAgICAgICBub2RlczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIG9iamVjdDogJ2Jsb2NrJyxcbiAgICAgICAgICAgIHR5cGU6ICdkaXYnLFxuICAgICAgICAgICAgaXNWb2lkOiBmYWxzZSxcbiAgICAgICAgICAgIGRhdGE6IHsgYXR0cmlidXRlczoge30gfSxcbiAgICAgICAgICAgIG5vZGVzOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBvYmplY3Q6ICd0ZXh0JyxcbiAgICAgICAgICAgICAgICBsZWF2ZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiAnbGVhZicsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6ICdGb28gJyxcbiAgICAgICAgICAgICAgICAgICAgbWFya3M6IFtdLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiAnbGVhZicsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6ICd4JyxcbiAgICAgICAgICAgICAgICAgICAgbWFya3M6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6ICdtYXJrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpdGFsaWMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YToge30sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdDogJ2xlYWYnLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnIGJhciAnLFxuICAgICAgICAgICAgICAgICAgICBtYXJrczogW10sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvYmplY3Q6ICdsZWFmJyxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJ3gnLFxuICAgICAgICAgICAgICAgICAgICBtYXJrczogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDogJ21hcmsnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2l0YWxpYycsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiAnbGVhZicsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6ICcgRm9vICcsXG4gICAgICAgICAgICAgICAgICAgIG1hcmtzOiBbXSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdDogJ2xlYWYnLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAneCcsXG4gICAgICAgICAgICAgICAgICAgIG1hcmtzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiAnbWFyaycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnaXRhbGljJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHt9LFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvYmplY3Q6ICdsZWFmJyxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJyBiYXIgJyxcbiAgICAgICAgICAgICAgICAgICAgbWFya3M6IFtdLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiAnbGVhZicsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6ICd4JyxcbiAgICAgICAgICAgICAgICAgICAgbWFya3M6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6ICdtYXJrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpdGFsaWMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YToge30sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdDogJ2xlYWYnLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnIEZvbyAnLFxuICAgICAgICAgICAgICAgICAgICBtYXJrczogW10sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvYmplY3Q6ICdsZWFmJyxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJ3gnLFxuICAgICAgICAgICAgICAgICAgICBtYXJrczogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDogJ21hcmsnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2l0YWxpYycsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiAnbGVhZicsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6ICcgYmFyICcsXG4gICAgICAgICAgICAgICAgICAgIG1hcmtzOiBbXSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdDogJ2xlYWYnLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAneCcsXG4gICAgICAgICAgICAgICAgICAgIG1hcmtzOiBbXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiAnbWFyaycsXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnaXRhbGljJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHt9LFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvYmplY3Q6ICdsZWFmJyxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJyBGb28gJyxcbiAgICAgICAgICAgICAgICAgICAgbWFya3M6IFtdLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgb2JqZWN0OiAnbGVhZicsXG4gICAgICAgICAgICAgICAgICAgIHRleHQ6ICd4JyxcbiAgICAgICAgICAgICAgICAgICAgbWFya3M6IFtcbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvYmplY3Q6ICdtYXJrJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdpdGFsaWMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YToge30sXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG9iamVjdDogJ2xlYWYnLFxuICAgICAgICAgICAgICAgICAgICB0ZXh0OiAnIGJhciAnLFxuICAgICAgICAgICAgICAgICAgICBtYXJrczogW10sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBvYmplY3Q6ICdsZWFmJyxcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogJ3gnLFxuICAgICAgICAgICAgICAgICAgICBtYXJrczogW1xuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdDogJ21hcmsnLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2l0YWxpYycsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9O1xuICAgIGNvbnN0IGh0bWwgPVxuICAgICAgJzxkaXY+Rm9vIDxlbT54PC9lbT4gYmFyIDxlbT54PC9lbT4gRm9vIDxlbT54PC9lbT4gYmFyIDxlbT54PC9lbT4gRm9vIDxlbT54PC9lbT4gYmFyIDxlbT54PC9lbT4gRm9vIDxlbT54PC9lbT4gYmFyIDxlbT54PC9lbT48L2Rpdj4nO1xuICAgIGNvbnN0IHYgPSBodG1sVG9WYWx1ZShodG1sKTtcblxuICAgIGV4cGVjdCh2LnRvSlNPTigpKS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.classObject = classObject;
|
|
9
|
+
exports.mockComponents = mockComponents;
|
|
10
|
+
exports.mockIconButton = mockIconButton;
|
|
11
|
+
exports.mockMathInput = mockMathInput;
|
|
12
|
+
|
|
13
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
|
+
|
|
15
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
16
|
+
|
|
17
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
18
|
+
|
|
19
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
20
|
+
|
|
21
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
22
|
+
|
|
23
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
24
|
+
|
|
25
|
+
var _react = _interopRequireDefault(require("react"));
|
|
26
|
+
|
|
27
|
+
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; }
|
|
28
|
+
|
|
29
|
+
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; }
|
|
30
|
+
|
|
31
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
32
|
+
|
|
33
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
34
|
+
|
|
35
|
+
function classObject() {
|
|
36
|
+
var out = {};
|
|
37
|
+
|
|
38
|
+
for (var a in arguments) {
|
|
39
|
+
var value = arguments[a];
|
|
40
|
+
out[value] = value;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return out;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function mockComponents() {
|
|
47
|
+
var _arguments = arguments;
|
|
48
|
+
var out = {};
|
|
49
|
+
|
|
50
|
+
var _loop = function _loop() {
|
|
51
|
+
var value = _arguments[a];
|
|
52
|
+
|
|
53
|
+
out[value] = /*#__PURE__*/function (_React$Component) {
|
|
54
|
+
(0, _inherits2["default"])(_class, _React$Component);
|
|
55
|
+
|
|
56
|
+
var _super = _createSuper(_class);
|
|
57
|
+
|
|
58
|
+
function _class() {
|
|
59
|
+
(0, _classCallCheck2["default"])(this, _class);
|
|
60
|
+
return _super.apply(this, arguments);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
(0, _createClass2["default"])(_class, [{
|
|
64
|
+
key: "render",
|
|
65
|
+
value: function render() {
|
|
66
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
67
|
+
"data-mock-component": "true"
|
|
68
|
+
}, value);
|
|
69
|
+
}
|
|
70
|
+
}]);
|
|
71
|
+
return _class;
|
|
72
|
+
}(_react["default"].Component);
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
for (var a in arguments) {
|
|
76
|
+
_loop();
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return out;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function mockIconButton() {
|
|
83
|
+
jest.mock('@material-ui/core/IconButton', function () {
|
|
84
|
+
return function (props) {
|
|
85
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
86
|
+
className: props.className,
|
|
87
|
+
style: props.style,
|
|
88
|
+
ariaLabel: props['aria-label']
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function mockMathInput() {
|
|
95
|
+
jest.mock('@pie-lib/math-input', function () {
|
|
96
|
+
return _objectSpread({
|
|
97
|
+
addBrackets: jest.fn(function (s) {
|
|
98
|
+
return s;
|
|
99
|
+
}),
|
|
100
|
+
removeBrackets: jest.fn(function (s) {
|
|
101
|
+
return s;
|
|
102
|
+
})
|
|
103
|
+
}, mockComponents('Keypad', 'MathQuillInput', 'EditableMathInput', 'HorizontalKeypad'));
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vdXRpbHMuanMiXSwibmFtZXMiOlsiY2xhc3NPYmplY3QiLCJvdXQiLCJhIiwiYXJndW1lbnRzIiwidmFsdWUiLCJtb2NrQ29tcG9uZW50cyIsIlJlYWN0IiwiQ29tcG9uZW50IiwibW9ja0ljb25CdXR0b24iLCJqZXN0IiwibW9jayIsInByb3BzIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJtb2NrTWF0aElucHV0IiwiYWRkQnJhY2tldHMiLCJmbiIsInMiLCJyZW1vdmVCcmFja2V0cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxXQUFULEdBQXVCO0FBQzVCLE1BQU1DLEdBQUcsR0FBRyxFQUFaOztBQUNBLE9BQUssSUFBSUMsQ0FBVCxJQUFjQyxTQUFkLEVBQXlCO0FBQ3ZCLFFBQU1DLEtBQUssR0FBR0QsU0FBUyxDQUFDRCxDQUFELENBQXZCO0FBQ0FELElBQUFBLEdBQUcsQ0FBQ0csS0FBRCxDQUFILEdBQWFBLEtBQWI7QUFDRDs7QUFDRCxTQUFPSCxHQUFQO0FBQ0Q7O0FBRU0sU0FBU0ksY0FBVCxHQUEwQjtBQUFBO0FBQy9CLE1BQU1KLEdBQUcsR0FBRyxFQUFaOztBQUQrQjtBQUc3QixRQUFNRyxLQUFLLEdBQUdELFVBQVMsQ0FBQ0QsQ0FBRCxDQUF2Qjs7QUFDQUQsSUFBQUEsR0FBRyxDQUFDRyxLQUFELENBQUg7QUFBQTs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQUEsZUFDRSxrQkFBUztBQUNQLDhCQUFPO0FBQUssbUNBQW9CO0FBQXpCLGFBQWlDQSxLQUFqQyxDQUFQO0FBQ0Q7QUFISDtBQUFBO0FBQUEsTUFBMkJFLGtCQUFNQyxTQUFqQztBQUo2Qjs7QUFFL0IsT0FBSyxJQUFJTCxDQUFULElBQWNDLFNBQWQsRUFBeUI7QUFBQTtBQU94Qjs7QUFDRCxTQUFPRixHQUFQO0FBQ0Q7O0FBRU0sU0FBU08sY0FBVCxHQUEwQjtBQUMvQkMsRUFBQUEsSUFBSSxDQUFDQyxJQUFMLENBQVUsOEJBQVYsRUFBMEMsWUFBTTtBQUM5QyxXQUFPLFVBQUNDLEtBQUQ7QUFBQSwwQkFBVztBQUFLLFFBQUEsU0FBUyxFQUFFQSxLQUFLLENBQUNDLFNBQXRCO0FBQWlDLFFBQUEsS0FBSyxFQUFFRCxLQUFLLENBQUNFLEtBQTlDO0FBQXFELFFBQUEsU0FBUyxFQUFFRixLQUFLLENBQUMsWUFBRDtBQUFyRSxRQUFYO0FBQUEsS0FBUDtBQUNELEdBRkQ7QUFHRDs7QUFDTSxTQUFTRyxhQUFULEdBQXlCO0FBQzlCTCxFQUFBQSxJQUFJLENBQUNDLElBQUwsQ0FBVSxxQkFBVixFQUFpQztBQUFBO0FBQy9CSyxNQUFBQSxXQUFXLEVBQUVOLElBQUksQ0FBQ08sRUFBTCxDQUFRLFVBQUNDLENBQUQ7QUFBQSxlQUFPQSxDQUFQO0FBQUEsT0FBUixDQURrQjtBQUUvQkMsTUFBQUEsY0FBYyxFQUFFVCxJQUFJLENBQUNPLEVBQUwsQ0FBUSxVQUFDQyxDQUFEO0FBQUEsZUFBT0EsQ0FBUDtBQUFBLE9BQVI7QUFGZSxPQUc1QlosY0FBYyxDQUFDLFFBQUQsRUFBVyxnQkFBWCxFQUE2QixtQkFBN0IsRUFBa0Qsa0JBQWxELENBSGM7QUFBQSxHQUFqQztBQUtEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcblxuZXhwb3J0IGZ1bmN0aW9uIGNsYXNzT2JqZWN0KCkge1xuICBjb25zdCBvdXQgPSB7fTtcbiAgZm9yICh2YXIgYSBpbiBhcmd1bWVudHMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGFyZ3VtZW50c1thXTtcbiAgICBvdXRbdmFsdWVdID0gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vY2tDb21wb25lbnRzKCkge1xuICBjb25zdCBvdXQgPSB7fTtcbiAgZm9yICh2YXIgYSBpbiBhcmd1bWVudHMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IGFyZ3VtZW50c1thXTtcbiAgICBvdXRbdmFsdWVdID0gY2xhc3MgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQge1xuICAgICAgcmVuZGVyKCkge1xuICAgICAgICByZXR1cm4gPGRpdiBkYXRhLW1vY2stY29tcG9uZW50PVwidHJ1ZVwiPnt2YWx1ZX08L2Rpdj47XG4gICAgICB9XG4gICAgfTtcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ja0ljb25CdXR0b24oKSB7XG4gIGplc3QubW9jaygnQG1hdGVyaWFsLXVpL2NvcmUvSWNvbkJ1dHRvbicsICgpID0+IHtcbiAgICByZXR1cm4gKHByb3BzKSA9PiA8ZGl2IGNsYXNzTmFtZT17cHJvcHMuY2xhc3NOYW1lfSBzdHlsZT17cHJvcHMuc3R5bGV9IGFyaWFMYWJlbD17cHJvcHNbJ2FyaWEtbGFiZWwnXX0gLz47XG4gIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG1vY2tNYXRoSW5wdXQoKSB7XG4gIGplc3QubW9jaygnQHBpZS1saWIvbWF0aC1pbnB1dCcsICgpID0+ICh7XG4gICAgYWRkQnJhY2tldHM6IGplc3QuZm4oKHMpID0+IHMpLFxuICAgIHJlbW92ZUJyYWNrZXRzOiBqZXN0LmZuKChzKSA9PiBzKSxcbiAgICAuLi5tb2NrQ29tcG9uZW50cygnS2V5cGFkJywgJ01hdGhRdWlsbElucHV0JywgJ0VkaXRhYmxlTWF0aElucHV0JywgJ0hvcml6b250YWxLZXlwYWQnKSxcbiAgfSkpO1xufVxuIl19
|
package/lib/editor.js
CHANGED
|
@@ -65,7 +65,7 @@ var _styles = require("@material-ui/core/styles");
|
|
|
65
65
|
|
|
66
66
|
var _renderUi = require("@pie-lib/render-ui");
|
|
67
67
|
|
|
68
|
-
var
|
|
68
|
+
var _alertDialog = _interopRequireDefault(require("./shared/alert-dialog"));
|
|
69
69
|
|
|
70
70
|
var serialization = _interopRequireWildcard(require("./serialization"));
|
|
71
71
|
|
|
@@ -1165,7 +1165,7 @@ var Editor = /*#__PURE__*/function (_React$Component) {
|
|
|
1165
1165
|
placeholder: placeholder,
|
|
1166
1166
|
renderPlaceholder: this.renderPlaceholder,
|
|
1167
1167
|
onDataChange: this.changeData
|
|
1168
|
-
}), /*#__PURE__*/_react["default"].createElement(
|
|
1168
|
+
}), /*#__PURE__*/_react["default"].createElement(_alertDialog["default"], {
|
|
1169
1169
|
open: dialog.open,
|
|
1170
1170
|
title: dialog.title,
|
|
1171
1171
|
text: dialog.text,
|