@pie-lib/graphing-solution-set 3.2.0-next.2 → 3.2.0-next.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 +22 -31
- package/LICENSE.md +5 -0
- package/lib/axis/arrow.js +1 -1
- package/lib/axis/axes.js +1 -1
- package/lib/axis/index.js +1 -1
- package/lib/bg.js +1 -1
- package/lib/container/actions.js +1 -1
- package/lib/container/index.js +1 -1
- package/lib/container/marks.js +1 -1
- package/lib/container/middleware.js +1 -1
- package/lib/container/reducer.js +1 -1
- package/lib/coordinates-label.js +1 -1
- package/lib/graph-with-controls.js +1 -1
- package/lib/graph.js +1 -1
- package/lib/grid-setup.js +1 -1
- package/lib/grid.js +1 -1
- package/lib/index.js +1 -1
- package/lib/labels.js +1 -1
- package/lib/mark-label.js +1 -1
- package/lib/toggle-bar.js +1 -1
- package/lib/tool-menu.js +1 -1
- package/lib/tools/index.js +1 -1
- package/lib/tools/line/component.js +1 -1
- package/lib/tools/line/index.js +1 -1
- package/lib/tools/polygon/component.js +1 -1
- package/lib/tools/polygon/index.js +1 -1
- package/lib/tools/polygon/line.js +1 -1
- package/lib/tools/polygon/polygon.js +1 -1
- package/lib/tools/shared/arrow-head.js +1 -1
- package/lib/tools/shared/line/index.js +1 -1
- package/lib/tools/shared/line/line-path.js +1 -1
- package/lib/tools/shared/line/with-root-edge.js +1 -1
- package/lib/tools/shared/point/arrow-point.js +1 -1
- package/lib/tools/shared/point/arrow.js +1 -1
- package/lib/tools/shared/point/base-point.js +1 -1
- package/lib/tools/shared/point/index.js +1 -1
- package/lib/tools/shared/styles.js +1 -1
- package/lib/tools/shared/types.js +1 -1
- package/lib/undo-redo.js +1 -1
- package/lib/use-debounce.js +1 -1
- package/lib/utils.js +1 -1
- package/package.json +4 -4
- package/lib/__tests__/bg.test.js +0 -282
- package/lib/__tests__/coordinates-label.test.js +0 -276
- package/lib/__tests__/graph-with-controls.test.js +0 -256
- package/lib/__tests__/graph.test.js +0 -113
- package/lib/__tests__/grid-setup.test.js +0 -729
- package/lib/__tests__/grid.test.js +0 -29
- package/lib/__tests__/labels.test.js +0 -45
- package/lib/__tests__/mark-label.test.js +0 -133
- package/lib/__tests__/toggle-bar.test.js +0 -146
- package/lib/__tests__/tool-menu.test.js +0 -540
- package/lib/__tests__/undo-redo.test.js +0 -31
- package/lib/__tests__/use-debounce.test.js +0 -24
- package/lib/__tests__/utils.js +0 -70
- package/lib/__tests__/utils.test.js +0 -123
- package/lib/axis/__tests__/arrow.test.js +0 -60
- package/lib/axis/__tests__/axes.test.js +0 -160
- package/lib/container/__tests__/actions.test.js +0 -108
- package/lib/container/__tests__/index.test.js +0 -346
- package/lib/container/__tests__/marks.test.js +0 -259
- package/lib/container/__tests__/middleware.test.js +0 -244
- package/lib/container/__tests__/reducer.test.js +0 -450
- package/lib/tools/line/__tests__/component.test.js +0 -45
- package/lib/tools/polygon/__tests__/component.test.js +0 -501
- package/lib/tools/polygon/__tests__/index.test.js +0 -92
- package/lib/tools/polygon/__tests__/line.test.js +0 -30
- package/lib/tools/polygon/__tests__/polygon.test.js +0 -61
- package/lib/tools/shared/__tests__/arrow-head.test.js +0 -45
- package/lib/tools/shared/line/__tests__/index.test.js +0 -725
- package/lib/tools/shared/line/__tests__/line-path.test.js +0 -64
- package/lib/tools/shared/line/__tests__/with-root-edge.test.js +0 -618
- package/lib/tools/shared/point/__tests__/arrow-point.test.js +0 -127
- package/lib/tools/shared/point/__tests__/arrow.test.js +0 -619
- package/lib/tools/shared/point/__tests__/base-point.test.js +0 -122
|
@@ -1,450 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
5
|
-
var _reducer = _interopRequireDefault(require("../reducer"));
|
|
6
|
-
var _actions = require("../actions");
|
|
7
|
-
describe('container reducer', function () {
|
|
8
|
-
describe('reducer creation', function () {
|
|
9
|
-
it('creates a reducer function', function () {
|
|
10
|
-
var rootReducer = (0, _reducer["default"])();
|
|
11
|
-
expect((0, _typeof2["default"])(rootReducer)).toBe('function');
|
|
12
|
-
});
|
|
13
|
-
it('returns an object with marks property', function () {
|
|
14
|
-
var rootReducer = (0, _reducer["default"])();
|
|
15
|
-
var state = rootReducer(undefined, {
|
|
16
|
-
type: 'INIT'
|
|
17
|
-
});
|
|
18
|
-
expect(state).toHaveProperty('marks');
|
|
19
|
-
});
|
|
20
|
-
it('wraps marks reducer with undoable', function () {
|
|
21
|
-
var rootReducer = (0, _reducer["default"])();
|
|
22
|
-
var state = rootReducer(undefined, {
|
|
23
|
-
type: 'INIT'
|
|
24
|
-
});
|
|
25
|
-
expect(state.marks).toHaveProperty('past');
|
|
26
|
-
expect(state.marks).toHaveProperty('present');
|
|
27
|
-
expect(state.marks).toHaveProperty('future');
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
describe('initial state', function () {
|
|
31
|
-
it('initializes with empty past', function () {
|
|
32
|
-
var rootReducer = (0, _reducer["default"])();
|
|
33
|
-
var state = rootReducer(undefined, {
|
|
34
|
-
type: 'INIT'
|
|
35
|
-
});
|
|
36
|
-
expect(state.marks.past).toEqual([]);
|
|
37
|
-
});
|
|
38
|
-
it('initializes with empty present', function () {
|
|
39
|
-
var rootReducer = (0, _reducer["default"])();
|
|
40
|
-
var state = rootReducer(undefined, {
|
|
41
|
-
type: 'INIT'
|
|
42
|
-
});
|
|
43
|
-
expect(state.marks.present).toEqual([]);
|
|
44
|
-
});
|
|
45
|
-
it('initializes with empty future', function () {
|
|
46
|
-
var rootReducer = (0, _reducer["default"])();
|
|
47
|
-
var state = rootReducer(undefined, {
|
|
48
|
-
type: 'INIT'
|
|
49
|
-
});
|
|
50
|
-
expect(state.marks.future).toEqual([]);
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
describe('CHANGE_MARKS action', function () {
|
|
54
|
-
it('updates present with new marks', function () {
|
|
55
|
-
var rootReducer = (0, _reducer["default"])();
|
|
56
|
-
var newMarks = [{
|
|
57
|
-
id: 1,
|
|
58
|
-
type: 'point',
|
|
59
|
-
x: 5,
|
|
60
|
-
y: 10
|
|
61
|
-
}];
|
|
62
|
-
var action = (0, _actions.changeMarks)(newMarks);
|
|
63
|
-
var state = rootReducer(undefined, {
|
|
64
|
-
type: '@@INIT'
|
|
65
|
-
});
|
|
66
|
-
state = rootReducer(state, action);
|
|
67
|
-
expect(state.marks.present).toEqual(newMarks);
|
|
68
|
-
});
|
|
69
|
-
it('adds previous state to past', function () {
|
|
70
|
-
var rootReducer = (0, _reducer["default"])();
|
|
71
|
-
var firstMarks = [{
|
|
72
|
-
id: 1,
|
|
73
|
-
type: 'point'
|
|
74
|
-
}];
|
|
75
|
-
var secondMarks = [{
|
|
76
|
-
id: 2,
|
|
77
|
-
type: 'line'
|
|
78
|
-
}];
|
|
79
|
-
var state = rootReducer(undefined, {
|
|
80
|
-
type: '@@INIT'
|
|
81
|
-
});
|
|
82
|
-
state = rootReducer(state, (0, _actions.changeMarks)(firstMarks));
|
|
83
|
-
state = rootReducer(state, (0, _actions.changeMarks)(secondMarks));
|
|
84
|
-
expect(state.marks.past.length).toBeGreaterThan(0);
|
|
85
|
-
expect(state.marks.present).toEqual(secondMarks);
|
|
86
|
-
});
|
|
87
|
-
it('clears future on new action', function () {
|
|
88
|
-
var rootReducer = (0, _reducer["default"])();
|
|
89
|
-
var firstMarks = [{
|
|
90
|
-
id: 1,
|
|
91
|
-
type: 'point'
|
|
92
|
-
}];
|
|
93
|
-
var secondMarks = [{
|
|
94
|
-
id: 2,
|
|
95
|
-
type: 'line'
|
|
96
|
-
}];
|
|
97
|
-
var thirdMarks = [{
|
|
98
|
-
id: 3,
|
|
99
|
-
type: 'circle'
|
|
100
|
-
}];
|
|
101
|
-
var state = rootReducer(undefined, {
|
|
102
|
-
type: '@@INIT'
|
|
103
|
-
});
|
|
104
|
-
state = rootReducer(state, (0, _actions.changeMarks)(firstMarks));
|
|
105
|
-
state = rootReducer(state, (0, _actions.changeMarks)(secondMarks));
|
|
106
|
-
state = rootReducer(state, {
|
|
107
|
-
type: '@@redux-undo/UNDO'
|
|
108
|
-
});
|
|
109
|
-
expect(state.marks.future.length).toBeGreaterThan(0);
|
|
110
|
-
state = rootReducer(state, (0, _actions.changeMarks)(thirdMarks));
|
|
111
|
-
expect(state.marks.future).toEqual([]);
|
|
112
|
-
});
|
|
113
|
-
it('handles empty marks array', function () {
|
|
114
|
-
var rootReducer = (0, _reducer["default"])();
|
|
115
|
-
var action = (0, _actions.changeMarks)([]);
|
|
116
|
-
var state = rootReducer(undefined, {
|
|
117
|
-
type: '@@INIT'
|
|
118
|
-
});
|
|
119
|
-
state = rootReducer(state, action);
|
|
120
|
-
expect(state.marks.present).toEqual([]);
|
|
121
|
-
});
|
|
122
|
-
it('handles multiple marks', function () {
|
|
123
|
-
var rootReducer = (0, _reducer["default"])();
|
|
124
|
-
var marks = [{
|
|
125
|
-
id: 1,
|
|
126
|
-
type: 'point',
|
|
127
|
-
x: 1,
|
|
128
|
-
y: 2
|
|
129
|
-
}, {
|
|
130
|
-
id: 2,
|
|
131
|
-
type: 'line',
|
|
132
|
-
from: {
|
|
133
|
-
x: 0,
|
|
134
|
-
y: 0
|
|
135
|
-
},
|
|
136
|
-
to: {
|
|
137
|
-
x: 5,
|
|
138
|
-
y: 5
|
|
139
|
-
}
|
|
140
|
-
}, {
|
|
141
|
-
id: 3,
|
|
142
|
-
type: 'circle',
|
|
143
|
-
center: {
|
|
144
|
-
x: 3,
|
|
145
|
-
y: 3
|
|
146
|
-
},
|
|
147
|
-
radius: 2
|
|
148
|
-
}];
|
|
149
|
-
var action = (0, _actions.changeMarks)(marks);
|
|
150
|
-
var state = rootReducer(undefined, {
|
|
151
|
-
type: '@@INIT'
|
|
152
|
-
});
|
|
153
|
-
state = rootReducer(state, action);
|
|
154
|
-
expect(state.marks.present).toEqual(marks);
|
|
155
|
-
expect(state.marks.present.length).toBe(3);
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
describe('undo functionality', function () {
|
|
159
|
-
it('supports undo action', function () {
|
|
160
|
-
var rootReducer = (0, _reducer["default"])();
|
|
161
|
-
var firstMarks = [{
|
|
162
|
-
id: 1,
|
|
163
|
-
type: 'point'
|
|
164
|
-
}];
|
|
165
|
-
var secondMarks = [{
|
|
166
|
-
id: 2,
|
|
167
|
-
type: 'line'
|
|
168
|
-
}];
|
|
169
|
-
var state = rootReducer(undefined, {
|
|
170
|
-
type: '@@INIT'
|
|
171
|
-
});
|
|
172
|
-
state = rootReducer(state, (0, _actions.changeMarks)(firstMarks));
|
|
173
|
-
state = rootReducer(state, (0, _actions.changeMarks)(secondMarks));
|
|
174
|
-
state = rootReducer(state, {
|
|
175
|
-
type: '@@redux-undo/UNDO'
|
|
176
|
-
});
|
|
177
|
-
expect(state.marks.present).toEqual(firstMarks);
|
|
178
|
-
});
|
|
179
|
-
it('moves present to future on undo', function () {
|
|
180
|
-
var rootReducer = (0, _reducer["default"])();
|
|
181
|
-
var firstMarks = [{
|
|
182
|
-
id: 1,
|
|
183
|
-
type: 'point'
|
|
184
|
-
}];
|
|
185
|
-
var secondMarks = [{
|
|
186
|
-
id: 2,
|
|
187
|
-
type: 'line'
|
|
188
|
-
}];
|
|
189
|
-
var state = rootReducer(undefined, {
|
|
190
|
-
type: '@@INIT'
|
|
191
|
-
});
|
|
192
|
-
state = rootReducer(state, (0, _actions.changeMarks)(firstMarks));
|
|
193
|
-
state = rootReducer(state, (0, _actions.changeMarks)(secondMarks));
|
|
194
|
-
state = rootReducer(state, {
|
|
195
|
-
type: '@@redux-undo/UNDO'
|
|
196
|
-
});
|
|
197
|
-
expect(state.marks.future.length).toBeGreaterThan(0);
|
|
198
|
-
});
|
|
199
|
-
it('handles multiple undos', function () {
|
|
200
|
-
var rootReducer = (0, _reducer["default"])();
|
|
201
|
-
var marks1 = [{
|
|
202
|
-
id: 1
|
|
203
|
-
}];
|
|
204
|
-
var marks2 = [{
|
|
205
|
-
id: 2
|
|
206
|
-
}];
|
|
207
|
-
var marks3 = [{
|
|
208
|
-
id: 3
|
|
209
|
-
}];
|
|
210
|
-
var state = rootReducer(undefined, {
|
|
211
|
-
type: '@@INIT'
|
|
212
|
-
});
|
|
213
|
-
state = rootReducer(state, (0, _actions.changeMarks)(marks1));
|
|
214
|
-
state = rootReducer(state, (0, _actions.changeMarks)(marks2));
|
|
215
|
-
state = rootReducer(state, (0, _actions.changeMarks)(marks3));
|
|
216
|
-
state = rootReducer(state, {
|
|
217
|
-
type: '@@redux-undo/UNDO'
|
|
218
|
-
});
|
|
219
|
-
state = rootReducer(state, {
|
|
220
|
-
type: '@@redux-undo/UNDO'
|
|
221
|
-
});
|
|
222
|
-
expect(state.marks.present).toEqual(marks1);
|
|
223
|
-
});
|
|
224
|
-
it('does not undo beyond initial state', function () {
|
|
225
|
-
var rootReducer = (0, _reducer["default"])();
|
|
226
|
-
var marks = [{
|
|
227
|
-
id: 1,
|
|
228
|
-
type: 'point'
|
|
229
|
-
}];
|
|
230
|
-
var state = rootReducer(undefined, {
|
|
231
|
-
type: '@@INIT'
|
|
232
|
-
});
|
|
233
|
-
state = rootReducer(state, (0, _actions.changeMarks)(marks));
|
|
234
|
-
state = rootReducer(state, {
|
|
235
|
-
type: '@@redux-undo/UNDO'
|
|
236
|
-
});
|
|
237
|
-
state = rootReducer(state, {
|
|
238
|
-
type: '@@redux-undo/UNDO'
|
|
239
|
-
});
|
|
240
|
-
state = rootReducer(state, {
|
|
241
|
-
type: '@@redux-undo/UNDO'
|
|
242
|
-
});
|
|
243
|
-
expect(state.marks.present).toEqual([]);
|
|
244
|
-
expect(state.marks.past).toEqual([]);
|
|
245
|
-
});
|
|
246
|
-
});
|
|
247
|
-
describe('redo functionality', function () {
|
|
248
|
-
it('supports redo action', function () {
|
|
249
|
-
var rootReducer = (0, _reducer["default"])();
|
|
250
|
-
var firstMarks = [{
|
|
251
|
-
id: 1,
|
|
252
|
-
type: 'point'
|
|
253
|
-
}];
|
|
254
|
-
var secondMarks = [{
|
|
255
|
-
id: 2,
|
|
256
|
-
type: 'line'
|
|
257
|
-
}];
|
|
258
|
-
var state = rootReducer(undefined, {
|
|
259
|
-
type: '@@INIT'
|
|
260
|
-
});
|
|
261
|
-
state = rootReducer(state, (0, _actions.changeMarks)(firstMarks));
|
|
262
|
-
state = rootReducer(state, (0, _actions.changeMarks)(secondMarks));
|
|
263
|
-
state = rootReducer(state, {
|
|
264
|
-
type: '@@redux-undo/UNDO'
|
|
265
|
-
});
|
|
266
|
-
|
|
267
|
-
// Redo
|
|
268
|
-
state = rootReducer(state, {
|
|
269
|
-
type: '@@redux-undo/REDO'
|
|
270
|
-
});
|
|
271
|
-
expect(state.marks.present).toEqual(secondMarks);
|
|
272
|
-
});
|
|
273
|
-
it('moves future to past on redo', function () {
|
|
274
|
-
var rootReducer = (0, _reducer["default"])();
|
|
275
|
-
var firstMarks = [{
|
|
276
|
-
id: 1,
|
|
277
|
-
type: 'point'
|
|
278
|
-
}];
|
|
279
|
-
var secondMarks = [{
|
|
280
|
-
id: 2,
|
|
281
|
-
type: 'line'
|
|
282
|
-
}];
|
|
283
|
-
var state = rootReducer(undefined, {
|
|
284
|
-
type: '@@INIT'
|
|
285
|
-
});
|
|
286
|
-
state = rootReducer(state, (0, _actions.changeMarks)(firstMarks));
|
|
287
|
-
state = rootReducer(state, (0, _actions.changeMarks)(secondMarks));
|
|
288
|
-
state = rootReducer(state, {
|
|
289
|
-
type: '@@redux-undo/UNDO'
|
|
290
|
-
});
|
|
291
|
-
var futureBeforeRedo = state.marks.future.length;
|
|
292
|
-
state = rootReducer(state, {
|
|
293
|
-
type: '@@redux-undo/REDO'
|
|
294
|
-
});
|
|
295
|
-
expect(state.marks.future.length).toBe(futureBeforeRedo - 1);
|
|
296
|
-
});
|
|
297
|
-
it('handles multiple redos', function () {
|
|
298
|
-
var rootReducer = (0, _reducer["default"])();
|
|
299
|
-
var marks1 = [{
|
|
300
|
-
id: 1
|
|
301
|
-
}];
|
|
302
|
-
var marks2 = [{
|
|
303
|
-
id: 2
|
|
304
|
-
}];
|
|
305
|
-
var marks3 = [{
|
|
306
|
-
id: 3
|
|
307
|
-
}];
|
|
308
|
-
var state = rootReducer(undefined, {
|
|
309
|
-
type: '@@INIT'
|
|
310
|
-
});
|
|
311
|
-
state = rootReducer(state, (0, _actions.changeMarks)(marks1));
|
|
312
|
-
state = rootReducer(state, (0, _actions.changeMarks)(marks2));
|
|
313
|
-
state = rootReducer(state, (0, _actions.changeMarks)(marks3));
|
|
314
|
-
|
|
315
|
-
// undo twice, then redo twice
|
|
316
|
-
state = rootReducer(state, {
|
|
317
|
-
type: '@@redux-undo/UNDO'
|
|
318
|
-
});
|
|
319
|
-
state = rootReducer(state, {
|
|
320
|
-
type: '@@redux-undo/UNDO'
|
|
321
|
-
});
|
|
322
|
-
state = rootReducer(state, {
|
|
323
|
-
type: '@@redux-undo/REDO'
|
|
324
|
-
});
|
|
325
|
-
state = rootReducer(state, {
|
|
326
|
-
type: '@@redux-undo/REDO'
|
|
327
|
-
});
|
|
328
|
-
expect(state.marks.present).toEqual(marks3);
|
|
329
|
-
});
|
|
330
|
-
it('does not redo beyond last state', function () {
|
|
331
|
-
var rootReducer = (0, _reducer["default"])();
|
|
332
|
-
var marks = [{
|
|
333
|
-
id: 1,
|
|
334
|
-
type: 'point'
|
|
335
|
-
}];
|
|
336
|
-
var state = rootReducer(undefined, {
|
|
337
|
-
type: '@@INIT'
|
|
338
|
-
});
|
|
339
|
-
state = rootReducer(state, (0, _actions.changeMarks)(marks));
|
|
340
|
-
state = rootReducer(state, {
|
|
341
|
-
type: '@@redux-undo/UNDO'
|
|
342
|
-
});
|
|
343
|
-
state = rootReducer(state, {
|
|
344
|
-
type: '@@redux-undo/REDO'
|
|
345
|
-
});
|
|
346
|
-
|
|
347
|
-
// try to redo beyond the end
|
|
348
|
-
state = rootReducer(state, {
|
|
349
|
-
type: '@@redux-undo/REDO'
|
|
350
|
-
});
|
|
351
|
-
state = rootReducer(state, {
|
|
352
|
-
type: '@@redux-undo/REDO'
|
|
353
|
-
});
|
|
354
|
-
expect(state.marks.present).toEqual(marks);
|
|
355
|
-
expect(state.marks.future).toEqual([]);
|
|
356
|
-
});
|
|
357
|
-
});
|
|
358
|
-
describe('state structure', function () {
|
|
359
|
-
it('maintains correct undoable structure', function () {
|
|
360
|
-
var rootReducer = (0, _reducer["default"])();
|
|
361
|
-
var state = rootReducer(undefined, {
|
|
362
|
-
type: 'INIT'
|
|
363
|
-
});
|
|
364
|
-
expect(state.marks).toHaveProperty('past');
|
|
365
|
-
expect(state.marks).toHaveProperty('present');
|
|
366
|
-
expect(state.marks).toHaveProperty('future');
|
|
367
|
-
expect(Array.isArray(state.marks.past)).toBe(true);
|
|
368
|
-
expect(Array.isArray(state.marks.future)).toBe(true);
|
|
369
|
-
});
|
|
370
|
-
it('preserves mark properties through undo/redo', function () {
|
|
371
|
-
var rootReducer = (0, _reducer["default"])();
|
|
372
|
-
var marks = [{
|
|
373
|
-
id: 1,
|
|
374
|
-
type: 'point',
|
|
375
|
-
x: 10,
|
|
376
|
-
y: 20,
|
|
377
|
-
label: 'A',
|
|
378
|
-
correctness: {
|
|
379
|
-
value: 'correct'
|
|
380
|
-
}
|
|
381
|
-
}];
|
|
382
|
-
var state = rootReducer(undefined, {
|
|
383
|
-
type: 'INIT'
|
|
384
|
-
});
|
|
385
|
-
state = rootReducer(state, (0, _actions.changeMarks)(marks));
|
|
386
|
-
state = rootReducer(state, (0, _actions.changeMarks)([]));
|
|
387
|
-
state = rootReducer(state, {
|
|
388
|
-
type: '@@redux-undo/UNDO'
|
|
389
|
-
});
|
|
390
|
-
expect(state.marks.present).toEqual(marks);
|
|
391
|
-
expect(state.marks.present[0]).toBeDefined();
|
|
392
|
-
if (state.marks.present[0]) {
|
|
393
|
-
expect(state.marks.present[0]).toEqual(marks[0]);
|
|
394
|
-
expect(state.marks.present[0].correctness).toBeDefined();
|
|
395
|
-
}
|
|
396
|
-
});
|
|
397
|
-
});
|
|
398
|
-
describe('integration', function () {
|
|
399
|
-
it('handles complex undo/redo sequences', function () {
|
|
400
|
-
var rootReducer = (0, _reducer["default"])();
|
|
401
|
-
var marks1 = [{
|
|
402
|
-
id: 1
|
|
403
|
-
}];
|
|
404
|
-
var marks2 = [{
|
|
405
|
-
id: 2
|
|
406
|
-
}];
|
|
407
|
-
var marks3 = [{
|
|
408
|
-
id: 3
|
|
409
|
-
}];
|
|
410
|
-
var marks4 = [{
|
|
411
|
-
id: 4
|
|
412
|
-
}];
|
|
413
|
-
var state = rootReducer(undefined, {
|
|
414
|
-
type: '@@INIT'
|
|
415
|
-
});
|
|
416
|
-
state = rootReducer(state, (0, _actions.changeMarks)(marks1));
|
|
417
|
-
state = rootReducer(state, (0, _actions.changeMarks)(marks2));
|
|
418
|
-
state = rootReducer(state, (0, _actions.changeMarks)(marks3));
|
|
419
|
-
state = rootReducer(state, {
|
|
420
|
-
type: '@@redux-undo/UNDO'
|
|
421
|
-
}); // back to marks2
|
|
422
|
-
state = rootReducer(state, {
|
|
423
|
-
type: '@@redux-undo/UNDO'
|
|
424
|
-
}); // back to marks1
|
|
425
|
-
state = rootReducer(state, {
|
|
426
|
-
type: '@@redux-undo/REDO'
|
|
427
|
-
}); // forward to marks2
|
|
428
|
-
state = rootReducer(state, (0, _actions.changeMarks)(marks4));
|
|
429
|
-
expect(state.marks.present).toEqual(marks4);
|
|
430
|
-
expect(state.marks.future).toEqual([]);
|
|
431
|
-
});
|
|
432
|
-
it('works with empty state transitions', function () {
|
|
433
|
-
var rootReducer = (0, _reducer["default"])();
|
|
434
|
-
var marks = [{
|
|
435
|
-
id: 1
|
|
436
|
-
}];
|
|
437
|
-
var state = rootReducer(undefined, {
|
|
438
|
-
type: '@@INIT'
|
|
439
|
-
});
|
|
440
|
-
state = rootReducer(state, (0, _actions.changeMarks)([]));
|
|
441
|
-
state = rootReducer(state, (0, _actions.changeMarks)(marks));
|
|
442
|
-
state = rootReducer(state, (0, _actions.changeMarks)([]));
|
|
443
|
-
state = rootReducer(state, {
|
|
444
|
-
type: '@@redux-undo/UNDO'
|
|
445
|
-
});
|
|
446
|
-
expect(state.marks.present).toEqual(marks);
|
|
447
|
-
});
|
|
448
|
-
});
|
|
449
|
-
});
|
|
450
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVkdWNlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2FjdGlvbnMiLCJkZXNjcmliZSIsIml0Iiwicm9vdFJlZHVjZXIiLCJyZWR1Y2VyIiwiZXhwZWN0IiwiX3R5cGVvZjIiLCJ0b0JlIiwic3RhdGUiLCJ1bmRlZmluZWQiLCJ0eXBlIiwidG9IYXZlUHJvcGVydHkiLCJtYXJrcyIsInBhc3QiLCJ0b0VxdWFsIiwicHJlc2VudCIsImZ1dHVyZSIsIm5ld01hcmtzIiwiaWQiLCJ4IiwieSIsImFjdGlvbiIsImNoYW5nZU1hcmtzIiwiZmlyc3RNYXJrcyIsInNlY29uZE1hcmtzIiwibGVuZ3RoIiwidG9CZUdyZWF0ZXJUaGFuIiwidGhpcmRNYXJrcyIsImZyb20iLCJ0byIsImNlbnRlciIsInJhZGl1cyIsIm1hcmtzMSIsIm1hcmtzMiIsIm1hcmtzMyIsImZ1dHVyZUJlZm9yZVJlZG8iLCJBcnJheSIsImlzQXJyYXkiLCJsYWJlbCIsImNvcnJlY3RuZXNzIiwidmFsdWUiLCJ0b0JlRGVmaW5lZCIsIm1hcmtzNCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250YWluZXIvX190ZXN0c19fL3JlZHVjZXIudGVzdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcmVkdWNlciBmcm9tICcuLi9yZWR1Y2VyJztcbmltcG9ydCB7IGNoYW5nZU1hcmtzIH0gZnJvbSAnLi4vYWN0aW9ucyc7XG5cbmRlc2NyaWJlKCdjb250YWluZXIgcmVkdWNlcicsICgpID0+IHtcbiAgZGVzY3JpYmUoJ3JlZHVjZXIgY3JlYXRpb24nLCAoKSA9PiB7XG4gICAgaXQoJ2NyZWF0ZXMgYSByZWR1Y2VyIGZ1bmN0aW9uJywgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9vdFJlZHVjZXIgPSByZWR1Y2VyKCk7XG4gICAgICBleHBlY3QodHlwZW9mIHJvb3RSZWR1Y2VyKS50b0JlKCdmdW5jdGlvbicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgYW4gb2JqZWN0IHdpdGggbWFya3MgcHJvcGVydHknLCAoKSA9PiB7XG4gICAgICBjb25zdCByb290UmVkdWNlciA9IHJlZHVjZXIoKTtcbiAgICAgIGNvbnN0IHN0YXRlID0gcm9vdFJlZHVjZXIodW5kZWZpbmVkLCB7IHR5cGU6ICdJTklUJyB9KTtcbiAgICAgIGV4cGVjdChzdGF0ZSkudG9IYXZlUHJvcGVydHkoJ21hcmtzJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnd3JhcHMgbWFya3MgcmVkdWNlciB3aXRoIHVuZG9hYmxlJywgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9vdFJlZHVjZXIgPSByZWR1Y2VyKCk7XG4gICAgICBjb25zdCBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHVuZGVmaW5lZCwgeyB0eXBlOiAnSU5JVCcgfSk7XG5cbiAgICAgIGV4cGVjdChzdGF0ZS5tYXJrcykudG9IYXZlUHJvcGVydHkoJ3Bhc3QnKTtcbiAgICAgIGV4cGVjdChzdGF0ZS5tYXJrcykudG9IYXZlUHJvcGVydHkoJ3ByZXNlbnQnKTtcbiAgICAgIGV4cGVjdChzdGF0ZS5tYXJrcykudG9IYXZlUHJvcGVydHkoJ2Z1dHVyZScpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnaW5pdGlhbCBzdGF0ZScsICgpID0+IHtcbiAgICBpdCgnaW5pdGlhbGl6ZXMgd2l0aCBlbXB0eSBwYXN0JywgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9vdFJlZHVjZXIgPSByZWR1Y2VyKCk7XG4gICAgICBjb25zdCBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHVuZGVmaW5lZCwgeyB0eXBlOiAnSU5JVCcgfSk7XG5cbiAgICAgIGV4cGVjdChzdGF0ZS5tYXJrcy5wYXN0KS50b0VxdWFsKFtdKTtcbiAgICB9KTtcblxuICAgIGl0KCdpbml0aWFsaXplcyB3aXRoIGVtcHR5IHByZXNlbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCByb290UmVkdWNlciA9IHJlZHVjZXIoKTtcbiAgICAgIGNvbnN0IHN0YXRlID0gcm9vdFJlZHVjZXIodW5kZWZpbmVkLCB7IHR5cGU6ICdJTklUJyB9KTtcblxuICAgICAgZXhwZWN0KHN0YXRlLm1hcmtzLnByZXNlbnQpLnRvRXF1YWwoW10pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2luaXRpYWxpemVzIHdpdGggZW1wdHkgZnV0dXJlJywgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9vdFJlZHVjZXIgPSByZWR1Y2VyKCk7XG4gICAgICBjb25zdCBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHVuZGVmaW5lZCwgeyB0eXBlOiAnSU5JVCcgfSk7XG5cbiAgICAgIGV4cGVjdChzdGF0ZS5tYXJrcy5mdXR1cmUpLnRvRXF1YWwoW10pO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnQ0hBTkdFX01BUktTIGFjdGlvbicsICgpID0+IHtcbiAgICBpdCgndXBkYXRlcyBwcmVzZW50IHdpdGggbmV3IG1hcmtzJywgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9vdFJlZHVjZXIgPSByZWR1Y2VyKCk7XG4gICAgICBjb25zdCBuZXdNYXJrcyA9IFt7IGlkOiAxLCB0eXBlOiAncG9pbnQnLCB4OiA1LCB5OiAxMCB9XTtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IGNoYW5nZU1hcmtzKG5ld01hcmtzKTtcblxuICAgICAgbGV0IHN0YXRlID0gcm9vdFJlZHVjZXIodW5kZWZpbmVkLCB7IHR5cGU6ICdAQElOSVQnIH0pO1xuICAgICAgc3RhdGUgPSByb290UmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcblxuICAgICAgZXhwZWN0KHN0YXRlLm1hcmtzLnByZXNlbnQpLnRvRXF1YWwobmV3TWFya3MpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2FkZHMgcHJldmlvdXMgc3RhdGUgdG8gcGFzdCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvb3RSZWR1Y2VyID0gcmVkdWNlcigpO1xuICAgICAgY29uc3QgZmlyc3RNYXJrcyA9IFt7IGlkOiAxLCB0eXBlOiAncG9pbnQnIH1dO1xuICAgICAgY29uc3Qgc2Vjb25kTWFya3MgPSBbeyBpZDogMiwgdHlwZTogJ2xpbmUnIH1dO1xuXG4gICAgICBsZXQgc3RhdGUgPSByb290UmVkdWNlcih1bmRlZmluZWQsIHsgdHlwZTogJ0BASU5JVCcgfSk7XG4gICAgICBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHN0YXRlLCBjaGFuZ2VNYXJrcyhmaXJzdE1hcmtzKSk7XG4gICAgICBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHN0YXRlLCBjaGFuZ2VNYXJrcyhzZWNvbmRNYXJrcykpO1xuXG4gICAgICBleHBlY3Qoc3RhdGUubWFya3MucGFzdC5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgICAgIGV4cGVjdChzdGF0ZS5tYXJrcy5wcmVzZW50KS50b0VxdWFsKHNlY29uZE1hcmtzKTtcbiAgICB9KTtcblxuICAgIGl0KCdjbGVhcnMgZnV0dXJlIG9uIG5ldyBhY3Rpb24nLCAoKSA9PiB7XG4gICAgICBjb25zdCByb290UmVkdWNlciA9IHJlZHVjZXIoKTtcbiAgICAgIGNvbnN0IGZpcnN0TWFya3MgPSBbeyBpZDogMSwgdHlwZTogJ3BvaW50JyB9XTtcbiAgICAgIGNvbnN0IHNlY29uZE1hcmtzID0gW3sgaWQ6IDIsIHR5cGU6ICdsaW5lJyB9XTtcbiAgICAgIGNvbnN0IHRoaXJkTWFya3MgPSBbeyBpZDogMywgdHlwZTogJ2NpcmNsZScgfV07XG5cbiAgICAgIGxldCBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHVuZGVmaW5lZCwgeyB0eXBlOiAnQEBJTklUJyB9KTtcbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIGNoYW5nZU1hcmtzKGZpcnN0TWFya3MpKTtcbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIGNoYW5nZU1hcmtzKHNlY29uZE1hcmtzKSk7XG4gICAgICBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHN0YXRlLCB7IHR5cGU6ICdAQHJlZHV4LXVuZG8vVU5ETycgfSk7XG5cbiAgICAgIGV4cGVjdChzdGF0ZS5tYXJrcy5mdXR1cmUubGVuZ3RoKS50b0JlR3JlYXRlclRoYW4oMCk7XG5cbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIGNoYW5nZU1hcmtzKHRoaXJkTWFya3MpKTtcbiAgICAgIGV4cGVjdChzdGF0ZS5tYXJrcy5mdXR1cmUpLnRvRXF1YWwoW10pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZXMgZW1wdHkgbWFya3MgYXJyYXknLCAoKSA9PiB7XG4gICAgICBjb25zdCByb290UmVkdWNlciA9IHJlZHVjZXIoKTtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IGNoYW5nZU1hcmtzKFtdKTtcblxuICAgICAgbGV0IHN0YXRlID0gcm9vdFJlZHVjZXIodW5kZWZpbmVkLCB7IHR5cGU6ICdAQElOSVQnIH0pO1xuICAgICAgc3RhdGUgPSByb290UmVkdWNlcihzdGF0ZSwgYWN0aW9uKTtcblxuICAgICAgZXhwZWN0KHN0YXRlLm1hcmtzLnByZXNlbnQpLnRvRXF1YWwoW10pO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZXMgbXVsdGlwbGUgbWFya3MnLCAoKSA9PiB7XG4gICAgICBjb25zdCByb290UmVkdWNlciA9IHJlZHVjZXIoKTtcbiAgICAgIGNvbnN0IG1hcmtzID0gW1xuICAgICAgICB7IGlkOiAxLCB0eXBlOiAncG9pbnQnLCB4OiAxLCB5OiAyIH0sXG4gICAgICAgIHsgaWQ6IDIsIHR5cGU6ICdsaW5lJywgZnJvbTogeyB4OiAwLCB5OiAwIH0sIHRvOiB7IHg6IDUsIHk6IDUgfSB9LFxuICAgICAgICB7IGlkOiAzLCB0eXBlOiAnY2lyY2xlJywgY2VudGVyOiB7IHg6IDMsIHk6IDMgfSwgcmFkaXVzOiAyIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgYWN0aW9uID0gY2hhbmdlTWFya3MobWFya3MpO1xuXG4gICAgICBsZXQgc3RhdGUgPSByb290UmVkdWNlcih1bmRlZmluZWQsIHsgdHlwZTogJ0BASU5JVCcgfSk7XG4gICAgICBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHN0YXRlLCBhY3Rpb24pO1xuXG4gICAgICBleHBlY3Qoc3RhdGUubWFya3MucHJlc2VudCkudG9FcXVhbChtYXJrcyk7XG4gICAgICBleHBlY3Qoc3RhdGUubWFya3MucHJlc2VudC5sZW5ndGgpLnRvQmUoMyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd1bmRvIGZ1bmN0aW9uYWxpdHknLCAoKSA9PiB7XG4gICAgaXQoJ3N1cHBvcnRzIHVuZG8gYWN0aW9uJywgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9vdFJlZHVjZXIgPSByZWR1Y2VyKCk7XG4gICAgICBjb25zdCBmaXJzdE1hcmtzID0gW3sgaWQ6IDEsIHR5cGU6ICdwb2ludCcgfV07XG4gICAgICBjb25zdCBzZWNvbmRNYXJrcyA9IFt7IGlkOiAyLCB0eXBlOiAnbGluZScgfV07XG5cbiAgICAgIGxldCBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHVuZGVmaW5lZCwgeyB0eXBlOiAnQEBJTklUJyB9KTtcbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIGNoYW5nZU1hcmtzKGZpcnN0TWFya3MpKTtcbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIGNoYW5nZU1hcmtzKHNlY29uZE1hcmtzKSk7XG5cbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIHsgdHlwZTogJ0BAcmVkdXgtdW5kby9VTkRPJyB9KTtcblxuICAgICAgZXhwZWN0KHN0YXRlLm1hcmtzLnByZXNlbnQpLnRvRXF1YWwoZmlyc3RNYXJrcyk7XG4gICAgfSk7XG5cbiAgICBpdCgnbW92ZXMgcHJlc2VudCB0byBmdXR1cmUgb24gdW5kbycsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvb3RSZWR1Y2VyID0gcmVkdWNlcigpO1xuICAgICAgY29uc3QgZmlyc3RNYXJrcyA9IFt7IGlkOiAxLCB0eXBlOiAncG9pbnQnIH1dO1xuICAgICAgY29uc3Qgc2Vjb25kTWFya3MgPSBbeyBpZDogMiwgdHlwZTogJ2xpbmUnIH1dO1xuXG4gICAgICBsZXQgc3RhdGUgPSByb290UmVkdWNlcih1bmRlZmluZWQsIHsgdHlwZTogJ0BASU5JVCcgfSk7XG4gICAgICBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHN0YXRlLCBjaGFuZ2VNYXJrcyhmaXJzdE1hcmtzKSk7XG4gICAgICBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHN0YXRlLCBjaGFuZ2VNYXJrcyhzZWNvbmRNYXJrcykpO1xuICAgICAgc3RhdGUgPSByb290UmVkdWNlcihzdGF0ZSwgeyB0eXBlOiAnQEByZWR1eC11bmRvL1VORE8nIH0pO1xuXG4gICAgICBleHBlY3Qoc3RhdGUubWFya3MuZnV0dXJlLmxlbmd0aCkudG9CZUdyZWF0ZXJUaGFuKDApO1xuICAgIH0pO1xuXG4gICAgaXQoJ2hhbmRsZXMgbXVsdGlwbGUgdW5kb3MnLCAoKSA9PiB7XG4gICAgICBjb25zdCByb290UmVkdWNlciA9IHJlZHVjZXIoKTtcbiAgICAgIGNvbnN0IG1hcmtzMSA9IFt7IGlkOiAxIH1dO1xuICAgICAgY29uc3QgbWFya3MyID0gW3sgaWQ6IDIgfV07XG4gICAgICBjb25zdCBtYXJrczMgPSBbeyBpZDogMyB9XTtcblxuICAgICAgbGV0IHN0YXRlID0gcm9vdFJlZHVjZXIodW5kZWZpbmVkLCB7IHR5cGU6ICdAQElOSVQnIH0pO1xuICAgICAgc3RhdGUgPSByb290UmVkdWNlcihzdGF0ZSwgY2hhbmdlTWFya3MobWFya3MxKSk7XG4gICAgICBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHN0YXRlLCBjaGFuZ2VNYXJrcyhtYXJrczIpKTtcbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIGNoYW5nZU1hcmtzKG1hcmtzMykpO1xuXG4gICAgICBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHN0YXRlLCB7IHR5cGU6ICdAQHJlZHV4LXVuZG8vVU5ETycgfSk7XG4gICAgICBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHN0YXRlLCB7IHR5cGU6ICdAQHJlZHV4LXVuZG8vVU5ETycgfSk7XG5cbiAgICAgIGV4cGVjdChzdGF0ZS5tYXJrcy5wcmVzZW50KS50b0VxdWFsKG1hcmtzMSk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgdW5kbyBiZXlvbmQgaW5pdGlhbCBzdGF0ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvb3RSZWR1Y2VyID0gcmVkdWNlcigpO1xuICAgICAgY29uc3QgbWFya3MgPSBbeyBpZDogMSwgdHlwZTogJ3BvaW50JyB9XTtcblxuICAgICAgbGV0IHN0YXRlID0gcm9vdFJlZHVjZXIodW5kZWZpbmVkLCB7IHR5cGU6ICdAQElOSVQnIH0pO1xuICAgICAgc3RhdGUgPSByb290UmVkdWNlcihzdGF0ZSwgY2hhbmdlTWFya3MobWFya3MpKTtcblxuICAgICAgc3RhdGUgPSByb290UmVkdWNlcihzdGF0ZSwgeyB0eXBlOiAnQEByZWR1eC11bmRvL1VORE8nIH0pO1xuICAgICAgc3RhdGUgPSByb290UmVkdWNlcihzdGF0ZSwgeyB0eXBlOiAnQEByZWR1eC11bmRvL1VORE8nIH0pO1xuICAgICAgc3RhdGUgPSByb290UmVkdWNlcihzdGF0ZSwgeyB0eXBlOiAnQEByZWR1eC11bmRvL1VORE8nIH0pO1xuXG4gICAgICBleHBlY3Qoc3RhdGUubWFya3MucHJlc2VudCkudG9FcXVhbChbXSk7XG4gICAgICBleHBlY3Qoc3RhdGUubWFya3MucGFzdCkudG9FcXVhbChbXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdyZWRvIGZ1bmN0aW9uYWxpdHknLCAoKSA9PiB7XG4gICAgaXQoJ3N1cHBvcnRzIHJlZG8gYWN0aW9uJywgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9vdFJlZHVjZXIgPSByZWR1Y2VyKCk7XG4gICAgICBjb25zdCBmaXJzdE1hcmtzID0gW3sgaWQ6IDEsIHR5cGU6ICdwb2ludCcgfV07XG4gICAgICBjb25zdCBzZWNvbmRNYXJrcyA9IFt7IGlkOiAyLCB0eXBlOiAnbGluZScgfV07XG5cbiAgICAgIGxldCBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHVuZGVmaW5lZCwgeyB0eXBlOiAnQEBJTklUJyB9KTtcbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIGNoYW5nZU1hcmtzKGZpcnN0TWFya3MpKTtcbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIGNoYW5nZU1hcmtzKHNlY29uZE1hcmtzKSk7XG4gICAgICBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHN0YXRlLCB7IHR5cGU6ICdAQHJlZHV4LXVuZG8vVU5ETycgfSk7XG5cbiAgICAgIC8vIFJlZG9cbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIHsgdHlwZTogJ0BAcmVkdXgtdW5kby9SRURPJyB9KTtcblxuICAgICAgZXhwZWN0KHN0YXRlLm1hcmtzLnByZXNlbnQpLnRvRXF1YWwoc2Vjb25kTWFya3MpO1xuICAgIH0pO1xuXG4gICAgaXQoJ21vdmVzIGZ1dHVyZSB0byBwYXN0IG9uIHJlZG8nLCAoKSA9PiB7XG4gICAgICBjb25zdCByb290UmVkdWNlciA9IHJlZHVjZXIoKTtcbiAgICAgIGNvbnN0IGZpcnN0TWFya3MgPSBbeyBpZDogMSwgdHlwZTogJ3BvaW50JyB9XTtcbiAgICAgIGNvbnN0IHNlY29uZE1hcmtzID0gW3sgaWQ6IDIsIHR5cGU6ICdsaW5lJyB9XTtcblxuICAgICAgbGV0IHN0YXRlID0gcm9vdFJlZHVjZXIodW5kZWZpbmVkLCB7IHR5cGU6ICdAQElOSVQnIH0pO1xuICAgICAgc3RhdGUgPSByb290UmVkdWNlcihzdGF0ZSwgY2hhbmdlTWFya3MoZmlyc3RNYXJrcykpO1xuICAgICAgc3RhdGUgPSByb290UmVkdWNlcihzdGF0ZSwgY2hhbmdlTWFya3Moc2Vjb25kTWFya3MpKTtcbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIHsgdHlwZTogJ0BAcmVkdXgtdW5kby9VTkRPJyB9KTtcblxuICAgICAgY29uc3QgZnV0dXJlQmVmb3JlUmVkbyA9IHN0YXRlLm1hcmtzLmZ1dHVyZS5sZW5ndGg7XG4gICAgICBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHN0YXRlLCB7IHR5cGU6ICdAQHJlZHV4LXVuZG8vUkVETycgfSk7XG5cbiAgICAgIGV4cGVjdChzdGF0ZS5tYXJrcy5mdXR1cmUubGVuZ3RoKS50b0JlKGZ1dHVyZUJlZm9yZVJlZG8gLSAxKTtcbiAgICB9KTtcblxuICAgIGl0KCdoYW5kbGVzIG11bHRpcGxlIHJlZG9zJywgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9vdFJlZHVjZXIgPSByZWR1Y2VyKCk7XG4gICAgICBjb25zdCBtYXJrczEgPSBbeyBpZDogMSB9XTtcbiAgICAgIGNvbnN0IG1hcmtzMiA9IFt7IGlkOiAyIH1dO1xuICAgICAgY29uc3QgbWFya3MzID0gW3sgaWQ6IDMgfV07XG5cbiAgICAgIGxldCBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHVuZGVmaW5lZCwgeyB0eXBlOiAnQEBJTklUJyB9KTtcbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIGNoYW5nZU1hcmtzKG1hcmtzMSkpO1xuICAgICAgc3RhdGUgPSByb290UmVkdWNlcihzdGF0ZSwgY2hhbmdlTWFya3MobWFya3MyKSk7XG4gICAgICBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHN0YXRlLCBjaGFuZ2VNYXJrcyhtYXJrczMpKTtcblxuICAgICAgLy8gdW5kbyB0d2ljZSwgdGhlbiByZWRvIHR3aWNlXG4gICAgICBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHN0YXRlLCB7IHR5cGU6ICdAQHJlZHV4LXVuZG8vVU5ETycgfSk7XG4gICAgICBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHN0YXRlLCB7IHR5cGU6ICdAQHJlZHV4LXVuZG8vVU5ETycgfSk7XG4gICAgICBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHN0YXRlLCB7IHR5cGU6ICdAQHJlZHV4LXVuZG8vUkVETycgfSk7XG4gICAgICBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHN0YXRlLCB7IHR5cGU6ICdAQHJlZHV4LXVuZG8vUkVETycgfSk7XG5cbiAgICAgIGV4cGVjdChzdGF0ZS5tYXJrcy5wcmVzZW50KS50b0VxdWFsKG1hcmtzMyk7XG4gICAgfSk7XG5cbiAgICBpdCgnZG9lcyBub3QgcmVkbyBiZXlvbmQgbGFzdCBzdGF0ZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvb3RSZWR1Y2VyID0gcmVkdWNlcigpO1xuICAgICAgY29uc3QgbWFya3MgPSBbeyBpZDogMSwgdHlwZTogJ3BvaW50JyB9XTtcblxuICAgICAgbGV0IHN0YXRlID0gcm9vdFJlZHVjZXIodW5kZWZpbmVkLCB7IHR5cGU6ICdAQElOSVQnIH0pO1xuICAgICAgc3RhdGUgPSByb290UmVkdWNlcihzdGF0ZSwgY2hhbmdlTWFya3MobWFya3MpKTtcbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIHsgdHlwZTogJ0BAcmVkdXgtdW5kby9VTkRPJyB9KTtcbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIHsgdHlwZTogJ0BAcmVkdXgtdW5kby9SRURPJyB9KTtcblxuICAgICAgLy8gdHJ5IHRvIHJlZG8gYmV5b25kIHRoZSBlbmRcbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIHsgdHlwZTogJ0BAcmVkdXgtdW5kby9SRURPJyB9KTtcbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIHsgdHlwZTogJ0BAcmVkdXgtdW5kby9SRURPJyB9KTtcblxuICAgICAgZXhwZWN0KHN0YXRlLm1hcmtzLnByZXNlbnQpLnRvRXF1YWwobWFya3MpO1xuICAgICAgZXhwZWN0KHN0YXRlLm1hcmtzLmZ1dHVyZSkudG9FcXVhbChbXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzdGF0ZSBzdHJ1Y3R1cmUnLCAoKSA9PiB7XG4gICAgaXQoJ21haW50YWlucyBjb3JyZWN0IHVuZG9hYmxlIHN0cnVjdHVyZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvb3RSZWR1Y2VyID0gcmVkdWNlcigpO1xuICAgICAgY29uc3Qgc3RhdGUgPSByb290UmVkdWNlcih1bmRlZmluZWQsIHsgdHlwZTogJ0lOSVQnIH0pO1xuXG4gICAgICBleHBlY3Qoc3RhdGUubWFya3MpLnRvSGF2ZVByb3BlcnR5KCdwYXN0Jyk7XG4gICAgICBleHBlY3Qoc3RhdGUubWFya3MpLnRvSGF2ZVByb3BlcnR5KCdwcmVzZW50Jyk7XG4gICAgICBleHBlY3Qoc3RhdGUubWFya3MpLnRvSGF2ZVByb3BlcnR5KCdmdXR1cmUnKTtcbiAgICAgIGV4cGVjdChBcnJheS5pc0FycmF5KHN0YXRlLm1hcmtzLnBhc3QpKS50b0JlKHRydWUpO1xuICAgICAgZXhwZWN0KEFycmF5LmlzQXJyYXkoc3RhdGUubWFya3MuZnV0dXJlKSkudG9CZSh0cnVlKTtcbiAgICB9KTtcblxuICAgIGl0KCdwcmVzZXJ2ZXMgbWFyayBwcm9wZXJ0aWVzIHRocm91Z2ggdW5kby9yZWRvJywgKCkgPT4ge1xuICAgICAgY29uc3Qgcm9vdFJlZHVjZXIgPSByZWR1Y2VyKCk7XG4gICAgICBjb25zdCBtYXJrcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAxLFxuICAgICAgICAgIHR5cGU6ICdwb2ludCcsXG4gICAgICAgICAgeDogMTAsXG4gICAgICAgICAgeTogMjAsXG4gICAgICAgICAgbGFiZWw6ICdBJyxcbiAgICAgICAgICBjb3JyZWN0bmVzczogeyB2YWx1ZTogJ2NvcnJlY3QnIH0sXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICBsZXQgc3RhdGUgPSByb290UmVkdWNlcih1bmRlZmluZWQsIHsgdHlwZTogJ0lOSVQnIH0pO1xuICAgICAgc3RhdGUgPSByb290UmVkdWNlcihzdGF0ZSwgY2hhbmdlTWFya3MobWFya3MpKTtcbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIGNoYW5nZU1hcmtzKFtdKSk7XG4gICAgICBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHN0YXRlLCB7IHR5cGU6ICdAQHJlZHV4LXVuZG8vVU5ETycgfSk7XG5cbiAgICAgIGV4cGVjdChzdGF0ZS5tYXJrcy5wcmVzZW50KS50b0VxdWFsKG1hcmtzKTtcbiAgICAgIGV4cGVjdChzdGF0ZS5tYXJrcy5wcmVzZW50WzBdKS50b0JlRGVmaW5lZCgpO1xuICAgICAgaWYgKHN0YXRlLm1hcmtzLnByZXNlbnRbMF0pIHtcbiAgICAgICAgZXhwZWN0KHN0YXRlLm1hcmtzLnByZXNlbnRbMF0pLnRvRXF1YWwobWFya3NbMF0pO1xuICAgICAgICBleHBlY3Qoc3RhdGUubWFya3MucHJlc2VudFswXS5jb3JyZWN0bmVzcykudG9CZURlZmluZWQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2ludGVncmF0aW9uJywgKCkgPT4ge1xuICAgIGl0KCdoYW5kbGVzIGNvbXBsZXggdW5kby9yZWRvIHNlcXVlbmNlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvb3RSZWR1Y2VyID0gcmVkdWNlcigpO1xuICAgICAgY29uc3QgbWFya3MxID0gW3sgaWQ6IDEgfV07XG4gICAgICBjb25zdCBtYXJrczIgPSBbeyBpZDogMiB9XTtcbiAgICAgIGNvbnN0IG1hcmtzMyA9IFt7IGlkOiAzIH1dO1xuICAgICAgY29uc3QgbWFya3M0ID0gW3sgaWQ6IDQgfV07XG5cbiAgICAgIGxldCBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHVuZGVmaW5lZCwgeyB0eXBlOiAnQEBJTklUJyB9KTtcbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIGNoYW5nZU1hcmtzKG1hcmtzMSkpO1xuICAgICAgc3RhdGUgPSByb290UmVkdWNlcihzdGF0ZSwgY2hhbmdlTWFya3MobWFya3MyKSk7XG4gICAgICBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHN0YXRlLCBjaGFuZ2VNYXJrcyhtYXJrczMpKTtcbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIHsgdHlwZTogJ0BAcmVkdXgtdW5kby9VTkRPJyB9KTsgLy8gYmFjayB0byBtYXJrczJcbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIHsgdHlwZTogJ0BAcmVkdXgtdW5kby9VTkRPJyB9KTsgLy8gYmFjayB0byBtYXJrczFcbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIHsgdHlwZTogJ0BAcmVkdXgtdW5kby9SRURPJyB9KTsgLy8gZm9yd2FyZCB0byBtYXJrczJcbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIGNoYW5nZU1hcmtzKG1hcmtzNCkpO1xuXG4gICAgICBleHBlY3Qoc3RhdGUubWFya3MucHJlc2VudCkudG9FcXVhbChtYXJrczQpO1xuICAgICAgZXhwZWN0KHN0YXRlLm1hcmtzLmZ1dHVyZSkudG9FcXVhbChbXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnd29ya3Mgd2l0aCBlbXB0eSBzdGF0ZSB0cmFuc2l0aW9ucycsICgpID0+IHtcbiAgICAgIGNvbnN0IHJvb3RSZWR1Y2VyID0gcmVkdWNlcigpO1xuICAgICAgY29uc3QgbWFya3MgPSBbeyBpZDogMSB9XTtcblxuICAgICAgbGV0IHN0YXRlID0gcm9vdFJlZHVjZXIodW5kZWZpbmVkLCB7IHR5cGU6ICdAQElOSVQnIH0pO1xuICAgICAgc3RhdGUgPSByb290UmVkdWNlcihzdGF0ZSwgY2hhbmdlTWFya3MoW10pKTtcbiAgICAgIHN0YXRlID0gcm9vdFJlZHVjZXIoc3RhdGUsIGNoYW5nZU1hcmtzKG1hcmtzKSk7XG4gICAgICBzdGF0ZSA9IHJvb3RSZWR1Y2VyKHN0YXRlLCBjaGFuZ2VNYXJrcyhbXSkpO1xuICAgICAgc3RhdGUgPSByb290UmVkdWNlcihzdGF0ZSwgeyB0eXBlOiAnQEByZWR1eC11bmRvL1VORE8nIH0pO1xuXG4gICAgICBleHBlY3Qoc3RhdGUubWFya3MucHJlc2VudCkudG9FcXVhbChtYXJrcyk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFELE9BQUE7QUFFQUUsUUFBUSxDQUFDLG1CQUFtQixFQUFFLFlBQU07RUFDbENBLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxZQUFNO0lBQ2pDQyxFQUFFLENBQUMsNEJBQTRCLEVBQUUsWUFBTTtNQUNyQyxJQUFNQyxXQUFXLEdBQUcsSUFBQUMsbUJBQU8sRUFBQyxDQUFDO01BQzdCQyxNQUFNLEtBQUFDLFFBQUEsYUFBUUgsV0FB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
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
5
|
-
var _testUtils = require("@pie-lib/test-utils");
|
|
6
|
-
var _react = _interopRequireDefault(require("react"));
|
|
7
|
-
var _component = require("../component");
|
|
8
|
-
var _utils = require("../../../__tests__/utils");
|
|
9
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
10
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
11
|
-
jest.mock('@pie-lib/plot', function () {
|
|
12
|
-
var a = jest.requireActual('@pie-lib/plot');
|
|
13
|
-
return {
|
|
14
|
-
types: a.types,
|
|
15
|
-
gridDraggable: a.gridDraggable,
|
|
16
|
-
utils: a.utils,
|
|
17
|
-
trig: {
|
|
18
|
-
edges: jest.fn(function () {
|
|
19
|
-
return jest.fn().mockReturnValue([0, 0]);
|
|
20
|
-
})
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
});
|
|
24
|
-
describe('ArrowedLine', function () {
|
|
25
|
-
var onChange = jest.fn();
|
|
26
|
-
var renderComponent = function renderComponent(extras) {
|
|
27
|
-
var defaults = {
|
|
28
|
-
classes: {},
|
|
29
|
-
className: 'className',
|
|
30
|
-
onChange: onChange,
|
|
31
|
-
markerId: '1',
|
|
32
|
-
graphProps: (0, _utils.graphProps)()
|
|
33
|
-
};
|
|
34
|
-
var props = _objectSpread(_objectSpread({}, defaults), extras);
|
|
35
|
-
return (0, _testUtils.render)(/*#__PURE__*/_react["default"].createElement(_component.ArrowedLine, props));
|
|
36
|
-
};
|
|
37
|
-
describe('rendering', function () {
|
|
38
|
-
it('renders without crashing', function () {
|
|
39
|
-
var _renderComponent = renderComponent(),
|
|
40
|
-
container = _renderComponent.container;
|
|
41
|
-
expect(container.firstChild).toBeInTheDocument();
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdGVzdFV0aWxzIiwicmVxdWlyZSIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfY29tcG9uZW50IiwiX3V0aWxzIiwib3duS2V5cyIsImUiLCJyIiwidCIsIk9iamVjdCIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJmb3JFYWNoIiwiX2RlZmluZVByb3BlcnR5MiIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJqZXN0IiwibW9jayIsImEiLCJyZXF1aXJlQWN0dWFsIiwidHlwZXMiLCJncmlkRHJhZ2dhYmxlIiwidXRpbHMiLCJ0cmlnIiwiZWRnZXMiLCJmbiIsIm1vY2tSZXR1cm5WYWx1ZSIsImRlc2NyaWJlIiwib25DaGFuZ2UiLCJyZW5kZXJDb21wb25lbnQiLCJleHRyYXMiLCJkZWZhdWx0cyIsImNsYXNzZXMiLCJjbGFzc05hbWUiLCJtYXJrZXJJZCIsImdyYXBoUHJvcHMiLCJnZXRHcmFwaFByb3BzIiwicHJvcHMiLCJyZW5kZXIiLCJjcmVhdGVFbGVtZW50IiwiQXJyb3dlZExpbmUiLCJpdCIsIl9yZW5kZXJDb21wb25lbnQiLCJjb250YWluZXIiLCJleHBlY3QiLCJmaXJzdENoaWxkIiwidG9CZUluVGhlRG9jdW1lbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdG9vbHMvbGluZS9fX3Rlc3RzX18vY29tcG9uZW50LnRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciB9IGZyb20gJ0BwaWUtbGliL3Rlc3QtdXRpbHMnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEFycm93ZWRMaW5lIH0gZnJvbSAnLi4vY29tcG9uZW50JztcbmltcG9ydCB7IGdyYXBoUHJvcHMgYXMgZ2V0R3JhcGhQcm9wcyB9IGZyb20gJy4uLy4uLy4uL19fdGVzdHNfXy91dGlscyc7XG5cbmplc3QubW9jaygnQHBpZS1saWIvcGxvdCcsICgpID0+IHtcbiAgY29uc3QgYSA9IGplc3QucmVxdWlyZUFjdHVhbCgnQHBpZS1saWIvcGxvdCcpO1xuICByZXR1cm4ge1xuICAgIHR5cGVzOiBhLnR5cGVzLFxuICAgIGdyaWREcmFnZ2FibGU6IGEuZ3JpZERyYWdnYWJsZSxcbiAgICB1dGlsczogYS51dGlscyxcbiAgICB0cmlnOiB7XG4gICAgICBlZGdlczogamVzdC5mbigoKSA9PiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKFswLCAwXSkpLFxuICAgIH0sXG4gIH07XG59KTtcblxuZGVzY3JpYmUoJ0Fycm93ZWRMaW5lJywgKCkgPT4ge1xuICBsZXQgb25DaGFuZ2UgPSBqZXN0LmZuKCk7XG4gIGNvbnN0IHJlbmRlckNvbXBvbmVudCA9IChleHRyYXMpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIGNsYXNzZXM6IHt9LFxuICAgICAgY2xhc3NOYW1lOiAnY2xhc3NOYW1lJyxcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgbWFya2VySWQ6ICcxJyxcbiAgICAgIGdyYXBoUHJvcHM6IGdldEdyYXBoUHJvcHMoKSxcbiAgICB9O1xuICAgIGNvbnN0IHByb3BzID0geyAuLi5kZWZhdWx0cywgLi4uZXh0cmFzIH07XG4gICAgcmV0dXJuIHJlbmRlcig8QXJyb3dlZExpbmUgey4uLnByb3BzfSAvPik7XG4gIH07XG4gIGRlc2NyaWJlKCdyZW5kZXJpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgd2l0aG91dCBjcmFzaGluZycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXJDb21wb25lbnQoKTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUlu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
|