@pie-lib/text-select 2.0.0-next.0 → 2.1.0-next.0
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/lib/__tests__/text-select.test.js +63 -0
- package/lib/__tests__/utils.test.js +22 -0
- package/lib/index.js +1 -1
- package/lib/legend.js +1 -1
- package/lib/text-select.js +1 -1
- package/lib/token-select/__tests__/index.test.js +124 -0
- package/lib/token-select/__tests__/token.test.js +38 -0
- package/lib/token-select/index.js +1 -1
- package/lib/token-select/token.js +1 -1
- package/lib/tokenizer/__tests__/builder.test.js +389 -0
- package/lib/tokenizer/__tests__/controls.test.js +35 -0
- package/lib/tokenizer/__tests__/index.test.js +59 -0
- package/lib/tokenizer/__tests__/selection-utils.test.js +26 -0
- package/lib/tokenizer/__tests__/token-text.test.js +49 -0
- package/lib/tokenizer/builder.js +1 -1
- package/lib/tokenizer/controls.js +1 -1
- package/lib/tokenizer/index.js +1 -1
- package/lib/tokenizer/selection-utils.js +1 -1
- package/lib/tokenizer/token-text.js +1 -1
- package/lib/utils.js +1 -1
- package/package.json +7 -15
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
5
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
6
|
+
var _builder = require("../builder");
|
|
7
|
+
var _templateObject;
|
|
8
|
+
var token = function token(start, end, text) {
|
|
9
|
+
return {
|
|
10
|
+
start: start,
|
|
11
|
+
end: end,
|
|
12
|
+
text: text
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
var selection = function selection(start, end) {
|
|
16
|
+
return {
|
|
17
|
+
start: start,
|
|
18
|
+
end: end
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
var o = function o(strings) {
|
|
22
|
+
for (var _len = arguments.length, exp = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
|
|
23
|
+
exp[_key - 1] = arguments[_key];
|
|
24
|
+
}
|
|
25
|
+
return strings.reduce(function (acc, v, index) {
|
|
26
|
+
var e = exp[index];
|
|
27
|
+
var s = (0, _typeof2["default"])(e) === 'object' ? JSON.stringify(e) : e;
|
|
28
|
+
return "".concat(acc).concat(v).concat(s || '');
|
|
29
|
+
}, '');
|
|
30
|
+
};
|
|
31
|
+
describe('builder', function () {
|
|
32
|
+
describe('intersection', function () {
|
|
33
|
+
var assert = function assert(selection, tokens, expected) {
|
|
34
|
+
it(o(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["", ", ", " => ", ""])), selection, tokens, expected), function () {
|
|
35
|
+
var received = (0, _builder.intersection)(selection, tokens);
|
|
36
|
+
expect(received.results).toEqual(expected);
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
assert(selection(2, 3), [token(0, 1)], []);
|
|
40
|
+
assert(selection(1, 2), [token(0, 1)], []);
|
|
41
|
+
assert(selection(0, 1), [token(0, 1)], [{
|
|
42
|
+
token: token(0, 1),
|
|
43
|
+
type: 'exact-fit'
|
|
44
|
+
}]);
|
|
45
|
+
assert(selection(0, 2), [token(0, 1)], [{
|
|
46
|
+
token: token(0, 1),
|
|
47
|
+
type: 'within-selection'
|
|
48
|
+
}]);
|
|
49
|
+
assert(selection(0, 2), [token(1, 2)], [{
|
|
50
|
+
token: token(1, 2),
|
|
51
|
+
type: 'within-selection'
|
|
52
|
+
}]);
|
|
53
|
+
assert(selection(0, 10), [token(1, 2), token(2, 3)], [{
|
|
54
|
+
token: token(1, 2),
|
|
55
|
+
type: 'within-selection'
|
|
56
|
+
}, {
|
|
57
|
+
token: token(2, 3),
|
|
58
|
+
type: 'within-selection'
|
|
59
|
+
}]);
|
|
60
|
+
assert(selection(0, 10), [token(1, 2), token(2, 11)], [{
|
|
61
|
+
token: token(1, 2),
|
|
62
|
+
type: 'within-selection'
|
|
63
|
+
}, {
|
|
64
|
+
token: token(2, 11),
|
|
65
|
+
type: 'overlap'
|
|
66
|
+
}]);
|
|
67
|
+
});
|
|
68
|
+
describe('sort', function () {
|
|
69
|
+
it('sorts', function () {
|
|
70
|
+
var out = (0, _builder.sort)([token(1, 2), token(0, 1)]);
|
|
71
|
+
expect(out).toEqual([token(0, 1), token(1, 2)]);
|
|
72
|
+
});
|
|
73
|
+
it('sorts', function () {
|
|
74
|
+
var out = (0, _builder.sort)([token(0, 1), token(1, 2)]);
|
|
75
|
+
expect(out).toEqual([token(0, 1), token(1, 2)]);
|
|
76
|
+
});
|
|
77
|
+
xit('sorts', function () {
|
|
78
|
+
expect(function () {
|
|
79
|
+
return (0, _builder.sort)([token(0, 2), token(1, 2)]);
|
|
80
|
+
}).toThrow(Error);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
describe('normalize', function () {
|
|
84
|
+
var assert = function assert(input, tokens, expected) {
|
|
85
|
+
it("".concat(input, " + ").concat(JSON.stringify(tokens), " -> ").concat(JSON.stringify(expected)), function () {
|
|
86
|
+
var out = (0, _builder.normalize)(input, tokens);
|
|
87
|
+
expect(out).toEqual(expected);
|
|
88
|
+
});
|
|
89
|
+
};
|
|
90
|
+
assert(null, [], [{
|
|
91
|
+
text: '',
|
|
92
|
+
start: 0,
|
|
93
|
+
end: 0
|
|
94
|
+
}]);
|
|
95
|
+
assert('abcde', [{
|
|
96
|
+
text: 'b',
|
|
97
|
+
start: 1,
|
|
98
|
+
end: 2
|
|
99
|
+
}, {
|
|
100
|
+
text: 'd',
|
|
101
|
+
start: 3,
|
|
102
|
+
end: 4
|
|
103
|
+
}], [{
|
|
104
|
+
text: 'a',
|
|
105
|
+
start: 0,
|
|
106
|
+
end: 1
|
|
107
|
+
}, {
|
|
108
|
+
text: 'b',
|
|
109
|
+
start: 1,
|
|
110
|
+
end: 2,
|
|
111
|
+
predefined: true
|
|
112
|
+
}, {
|
|
113
|
+
text: 'c',
|
|
114
|
+
start: 2,
|
|
115
|
+
end: 3
|
|
116
|
+
}, {
|
|
117
|
+
text: 'd',
|
|
118
|
+
start: 3,
|
|
119
|
+
end: 4,
|
|
120
|
+
predefined: true
|
|
121
|
+
}, {
|
|
122
|
+
text: 'e',
|
|
123
|
+
start: 4,
|
|
124
|
+
end: 5
|
|
125
|
+
}]);
|
|
126
|
+
assert('abc', [{
|
|
127
|
+
text: 'c',
|
|
128
|
+
start: 2,
|
|
129
|
+
end: 3
|
|
130
|
+
}], [{
|
|
131
|
+
text: 'ab',
|
|
132
|
+
start: 0,
|
|
133
|
+
end: 2
|
|
134
|
+
}, {
|
|
135
|
+
text: 'c',
|
|
136
|
+
start: 2,
|
|
137
|
+
end: 3,
|
|
138
|
+
predefined: true
|
|
139
|
+
}]);
|
|
140
|
+
assert('abc', [{
|
|
141
|
+
text: 'c',
|
|
142
|
+
start: 2,
|
|
143
|
+
end: 3
|
|
144
|
+
}, {
|
|
145
|
+
text: 'b',
|
|
146
|
+
start: 1,
|
|
147
|
+
end: 2
|
|
148
|
+
}], [{
|
|
149
|
+
text: 'a',
|
|
150
|
+
start: 0,
|
|
151
|
+
end: 1
|
|
152
|
+
}, {
|
|
153
|
+
text: 'b',
|
|
154
|
+
start: 1,
|
|
155
|
+
end: 2,
|
|
156
|
+
predefined: true
|
|
157
|
+
}, {
|
|
158
|
+
text: 'c',
|
|
159
|
+
start: 2,
|
|
160
|
+
end: 3,
|
|
161
|
+
predefined: true
|
|
162
|
+
}]);
|
|
163
|
+
assert('abc', [{
|
|
164
|
+
text: 'a',
|
|
165
|
+
start: 0,
|
|
166
|
+
end: 1
|
|
167
|
+
}], [{
|
|
168
|
+
text: 'a',
|
|
169
|
+
start: 0,
|
|
170
|
+
end: 1,
|
|
171
|
+
predefined: true
|
|
172
|
+
}, {
|
|
173
|
+
text: 'bc',
|
|
174
|
+
start: 1,
|
|
175
|
+
end: 3
|
|
176
|
+
}]);
|
|
177
|
+
assert('abcd', [{
|
|
178
|
+
text: 'b',
|
|
179
|
+
start: 1,
|
|
180
|
+
end: 2
|
|
181
|
+
}, {
|
|
182
|
+
text: 'c',
|
|
183
|
+
start: 2,
|
|
184
|
+
end: 3
|
|
185
|
+
}, {
|
|
186
|
+
text: 'd',
|
|
187
|
+
start: 3,
|
|
188
|
+
end: 4
|
|
189
|
+
}], [{
|
|
190
|
+
text: 'a',
|
|
191
|
+
start: 0,
|
|
192
|
+
end: 1
|
|
193
|
+
}, {
|
|
194
|
+
text: 'b',
|
|
195
|
+
start: 1,
|
|
196
|
+
end: 2,
|
|
197
|
+
predefined: true
|
|
198
|
+
}, {
|
|
199
|
+
text: 'c',
|
|
200
|
+
start: 2,
|
|
201
|
+
end: 3,
|
|
202
|
+
predefined: true
|
|
203
|
+
}, {
|
|
204
|
+
text: 'd',
|
|
205
|
+
start: 3,
|
|
206
|
+
end: 4,
|
|
207
|
+
predefined: true
|
|
208
|
+
}]);
|
|
209
|
+
assert('abcde', [{
|
|
210
|
+
text: 'b',
|
|
211
|
+
start: 1,
|
|
212
|
+
end: 2
|
|
213
|
+
}, {
|
|
214
|
+
text: 'c',
|
|
215
|
+
start: 2,
|
|
216
|
+
end: 3
|
|
217
|
+
}, {
|
|
218
|
+
text: 'd',
|
|
219
|
+
start: 3,
|
|
220
|
+
end: 4
|
|
221
|
+
}], [{
|
|
222
|
+
text: 'a',
|
|
223
|
+
start: 0,
|
|
224
|
+
end: 1
|
|
225
|
+
}, {
|
|
226
|
+
text: 'b',
|
|
227
|
+
start: 1,
|
|
228
|
+
end: 2,
|
|
229
|
+
predefined: true
|
|
230
|
+
}, {
|
|
231
|
+
text: 'c',
|
|
232
|
+
start: 2,
|
|
233
|
+
end: 3,
|
|
234
|
+
predefined: true
|
|
235
|
+
}, {
|
|
236
|
+
text: 'd',
|
|
237
|
+
start: 3,
|
|
238
|
+
end: 4,
|
|
239
|
+
predefined: true
|
|
240
|
+
}, {
|
|
241
|
+
text: 'e',
|
|
242
|
+
start: 4,
|
|
243
|
+
end: 5
|
|
244
|
+
}]);
|
|
245
|
+
|
|
246
|
+
// same token defined multiple times
|
|
247
|
+
assert('abcde', [{
|
|
248
|
+
text: 'c',
|
|
249
|
+
start: 2,
|
|
250
|
+
end: 3
|
|
251
|
+
}, {
|
|
252
|
+
text: 'b',
|
|
253
|
+
start: 1,
|
|
254
|
+
end: 2
|
|
255
|
+
}, {
|
|
256
|
+
text: 'c',
|
|
257
|
+
start: 2,
|
|
258
|
+
end: 3
|
|
259
|
+
}, {
|
|
260
|
+
text: 'd',
|
|
261
|
+
start: 3,
|
|
262
|
+
end: 4
|
|
263
|
+
}, {
|
|
264
|
+
text: 'c',
|
|
265
|
+
start: 2,
|
|
266
|
+
end: 3
|
|
267
|
+
}], [{
|
|
268
|
+
text: 'a',
|
|
269
|
+
start: 0,
|
|
270
|
+
end: 1
|
|
271
|
+
}, {
|
|
272
|
+
text: 'b',
|
|
273
|
+
start: 1,
|
|
274
|
+
end: 2,
|
|
275
|
+
predefined: true
|
|
276
|
+
}, {
|
|
277
|
+
text: 'c',
|
|
278
|
+
start: 2,
|
|
279
|
+
end: 3,
|
|
280
|
+
predefined: true
|
|
281
|
+
}, {
|
|
282
|
+
text: 'd',
|
|
283
|
+
start: 3,
|
|
284
|
+
end: 4,
|
|
285
|
+
predefined: true
|
|
286
|
+
}, {
|
|
287
|
+
text: 'e',
|
|
288
|
+
start: 4,
|
|
289
|
+
end: 5
|
|
290
|
+
}]);
|
|
291
|
+
});
|
|
292
|
+
describe('words', function () {
|
|
293
|
+
it('works', function () {
|
|
294
|
+
var out = (0, _builder.words)('foo. bar');
|
|
295
|
+
expect(out).toEqual([{
|
|
296
|
+
text: 'foo.',
|
|
297
|
+
start: 0,
|
|
298
|
+
end: 4
|
|
299
|
+
}, {
|
|
300
|
+
text: 'bar',
|
|
301
|
+
start: 5,
|
|
302
|
+
end: 8
|
|
303
|
+
}]);
|
|
304
|
+
});
|
|
305
|
+
});
|
|
306
|
+
describe('sentences', function () {
|
|
307
|
+
it('foobar', function () {
|
|
308
|
+
var text = 'This is foo. This is bar.';
|
|
309
|
+
var out = (0, _builder.sentences)(text);
|
|
310
|
+
expect(out[0]).toEqual({
|
|
311
|
+
text: 'This is foo.',
|
|
312
|
+
start: 0,
|
|
313
|
+
end: 12
|
|
314
|
+
});
|
|
315
|
+
expect(out[1]).toEqual({
|
|
316
|
+
text: 'This is bar.',
|
|
317
|
+
start: 13,
|
|
318
|
+
end: 25
|
|
319
|
+
});
|
|
320
|
+
});
|
|
321
|
+
it('works', function () {
|
|
322
|
+
var text = 'On Jan. 20, former Sen. Barack Obama became the 44th President of the USA. Millions attended the Inauguration.';
|
|
323
|
+
var out = (0, _builder.sentences)(text);
|
|
324
|
+
expect(out.length).toEqual(2);
|
|
325
|
+
});
|
|
326
|
+
it('works for sentences separated by \n', function () {
|
|
327
|
+
var text = 'This is foo\nThis is bar';
|
|
328
|
+
var out = (0, _builder.sentences)(text);
|
|
329
|
+
expect(out[0]).toEqual({
|
|
330
|
+
text: 'This is foo',
|
|
331
|
+
start: 0,
|
|
332
|
+
end: 11
|
|
333
|
+
});
|
|
334
|
+
expect(out[1]).toEqual({
|
|
335
|
+
text: 'This is bar',
|
|
336
|
+
start: 12,
|
|
337
|
+
end: 23
|
|
338
|
+
});
|
|
339
|
+
});
|
|
340
|
+
it('works for sentences ending in one-character-words', function () {
|
|
341
|
+
var text = "This is Sentence 1. This is Sentence 2. This is Sentence 3. This is Sentence 4. Dr. A. said he'll call in 5.";
|
|
342
|
+
var out = (0, _builder.sentences)(text);
|
|
343
|
+
expect(out.length).toEqual(5);
|
|
344
|
+
expect(out).toEqual([{
|
|
345
|
+
text: 'This is Sentence 1.',
|
|
346
|
+
start: 0,
|
|
347
|
+
end: 19
|
|
348
|
+
}, {
|
|
349
|
+
text: 'This is Sentence 2.',
|
|
350
|
+
start: 20,
|
|
351
|
+
end: 39
|
|
352
|
+
}, {
|
|
353
|
+
text: 'This is Sentence 3.',
|
|
354
|
+
start: 40,
|
|
355
|
+
end: 59
|
|
356
|
+
}, {
|
|
357
|
+
text: 'This is Sentence 4.',
|
|
358
|
+
start: 60,
|
|
359
|
+
end: 79
|
|
360
|
+
}, {
|
|
361
|
+
text: "Dr. A. said he'll call in 5.",
|
|
362
|
+
start: 80,
|
|
363
|
+
end: 108
|
|
364
|
+
}]);
|
|
365
|
+
});
|
|
366
|
+
});
|
|
367
|
+
describe('paragraphs', function () {
|
|
368
|
+
it('foobar', function () {
|
|
369
|
+
var text = 'This is foo. This is bar.\nThis is foobar. This is barfoo.';
|
|
370
|
+
var out = (0, _builder.paragraphs)(text);
|
|
371
|
+
expect(out[0]).toEqual({
|
|
372
|
+
text: 'This is foo. This is bar.',
|
|
373
|
+
start: 0,
|
|
374
|
+
end: 25
|
|
375
|
+
});
|
|
376
|
+
expect(out[1]).toEqual({
|
|
377
|
+
text: 'This is foobar. This is barfoo.',
|
|
378
|
+
start: 26,
|
|
379
|
+
end: 57
|
|
380
|
+
});
|
|
381
|
+
});
|
|
382
|
+
it('works', function () {
|
|
383
|
+
var text = 'On Jan. 20, former Sen. Barack Obama became the 44th President of the USA. Millions attended the Inauguration.' + '\\ndadadadadadadadada.';
|
|
384
|
+
var out = (0, _builder.paragraphs)(text);
|
|
385
|
+
expect(out.length).toEqual(1);
|
|
386
|
+
});
|
|
387
|
+
});
|
|
388
|
+
});
|
|
389
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYnVpbGRlciIsInJlcXVpcmUiLCJfdGVtcGxhdGVPYmplY3QiLCJ0b2tlbiIsInN0YXJ0IiwiZW5kIiwidGV4dCIsInNlbGVjdGlvbiIsIm8iLCJzdHJpbmdzIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImV4cCIsIkFycmF5IiwiX2tleSIsInJlZHVjZSIsImFjYyIsInYiLCJpbmRleCIsImUiLCJzIiwiX3R5cGVvZjIiLCJKU09OIiwic3RyaW5naWZ5IiwiY29uY2F0IiwiZGVzY3JpYmUiLCJhc3NlcnQiLCJ0b2tlbnMiLCJleHBlY3RlZCIsIml0IiwiX3RhZ2dlZFRlbXBsYXRlTGl0ZXJhbDIiLCJyZWNlaXZlZCIsImludGVyc2VjdGlvbiIsImV4cGVjdCIsInJlc3VsdHMiLCJ0b0VxdWFsIiwidHlwZSIsIm91dCIsInNvcnQiLCJ4aXQiLCJ0b1Rocm93IiwiRXJyb3IiLCJpbnB1dCIsIm5vcm1hbGl6ZSIsInByZWRlZmluZWQiLCJ3b3JkcyIsInNlbnRlbmNlcyIsInBhcmFncmFwaHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9rZW5pemVyL19fdGVzdHNfXy9idWlsZGVyLnRlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbm9ybWFsaXplLCBzZW50ZW5jZXMsIHdvcmRzLCBwYXJhZ3JhcGhzLCBzb3J0LCBpbnRlcnNlY3Rpb24gfSBmcm9tICcuLi9idWlsZGVyJztcblxuY29uc3QgdG9rZW4gPSAoc3RhcnQsIGVuZCwgdGV4dCkgPT4gKHsgc3RhcnQsIGVuZCwgdGV4dCB9KTtcblxuY29uc3Qgc2VsZWN0aW9uID0gKHN0YXJ0LCBlbmQpID0+ICh7IHN0YXJ0LCBlbmQgfSk7XG5cbmNvbnN0IG8gPSAoc3RyaW5ncywgLi4uZXhwKSA9PiB7XG4gIHJldHVybiBzdHJpbmdzLnJlZHVjZSgoYWNjLCB2LCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGUgPSBleHBbaW5kZXhdO1xuICAgIGNvbnN0IHMgPSB0eXBlb2YgZSA9PT0gJ29iamVjdCcgPyBKU09OLnN0cmluZ2lmeShlKSA6IGU7XG4gICAgcmV0dXJuIGAke2FjY30ke3Z9JHtzIHx8ICcnfWA7XG4gIH0sICcnKTtcbn07XG5cbmRlc2NyaWJlKCdidWlsZGVyJywgKCkgPT4ge1xuICBkZXNjcmliZSgnaW50ZXJzZWN0aW9uJywgKCkgPT4ge1xuICAgIGNvbnN0IGFzc2VydCA9IChzZWxlY3Rpb24sIHRva2VucywgZXhwZWN0ZWQpID0+IHtcbiAgICAgIGl0KG9gJHtzZWxlY3Rpb259LCAke3Rva2Vuc30gPT4gJHtleHBlY3RlZH1gLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlY2VpdmVkID0gaW50ZXJzZWN0aW9uKHNlbGVjdGlvbiwgdG9rZW5zKTtcbiAgICAgICAgZXhwZWN0KHJlY2VpdmVkLnJlc3VsdHMpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGFzc2VydChzZWxlY3Rpb24oMiwgMyksIFt0b2tlbigwLCAxKV0sIFtdKTtcbiAgICBhc3NlcnQoc2VsZWN0aW9uKDEsIDIpLCBbdG9rZW4oMCwgMSldLCBbXSk7XG4gICAgYXNzZXJ0KHNlbGVjdGlvbigwLCAxKSwgW3Rva2VuKDAsIDEpXSwgW3sgdG9rZW46IHRva2VuKDAsIDEpLCB0eXBlOiAnZXhhY3QtZml0JyB9XSk7XG4gICAgYXNzZXJ0KHNlbGVjdGlvbigwLCAyKSwgW3Rva2VuKDAsIDEpXSwgW3sgdG9rZW46IHRva2VuKDAsIDEpLCB0eXBlOiAnd2l0aGluLXNlbGVjdGlvbicgfV0pO1xuICAgIGFzc2VydChzZWxlY3Rpb24oMCwgMiksIFt0b2tlbigxLCAyKV0sIFt7IHRva2VuOiB0b2tlbigxLCAyKSwgdHlwZTogJ3dpdGhpbi1zZWxlY3Rpb24nIH1dKTtcbiAgICBhc3NlcnQoXG4gICAgICBzZWxlY3Rpb24oMCwgMTApLFxuICAgICAgW3Rva2VuKDEsIDIpLCB0b2tlbigyLCAzKV0sXG4gICAgICBbXG4gICAgICAgIHsgdG9rZW46IHRva2VuKDEsIDIpLCB0eXBlOiAnd2l0aGluLXNlbGVjdGlvbicgfSxcbiAgICAgICAgeyB0b2tlbjogdG9rZW4oMiwgMyksIHR5cGU6ICd3aXRoaW4tc2VsZWN0aW9uJyB9LFxuICAgICAgXSxcbiAgICApO1xuICAgIGFzc2VydChcbiAgICAgIHNlbGVjdGlvbigwLCAxMCksXG4gICAgICBbdG9rZW4oMSwgMiksIHRva2VuKDIsIDExKV0sXG4gICAgICBbXG4gICAgICAgIHsgdG9rZW46IHRva2VuKDEsIDIpLCB0eXBlOiAnd2l0aGluLXNlbGVjdGlvbicgfSxcbiAgICAgICAgeyB0b2tlbjogdG9rZW4oMiwgMTEpLCB0eXBlOiAnb3ZlcmxhcCcgfSxcbiAgICAgIF0sXG4gICAgKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NvcnQnLCAoKSA9PiB7XG4gICAgaXQoJ3NvcnRzJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb3V0ID0gc29ydChbdG9rZW4oMSwgMiksIHRva2VuKDAsIDEpXSk7XG4gICAgICBleHBlY3Qob3V0KS50b0VxdWFsKFt0b2tlbigwLCAxKSwgdG9rZW4oMSwgMildKTtcbiAgICB9KTtcbiAgICBpdCgnc29ydHMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBvdXQgPSBzb3J0KFt0b2tlbigwLCAxKSwgdG9rZW4oMSwgMildKTtcbiAgICAgIGV4cGVjdChvdXQpLnRvRXF1YWwoW3Rva2VuKDAsIDEpLCB0b2tlbigxLCAyKV0pO1xuICAgIH0pO1xuICAgIHhpdCgnc29ydHMnLCAoKSA9PiB7XG4gICAgICBleHBlY3QoKCkgPT4gc29ydChbdG9rZW4oMCwgMiksIHRva2VuKDEsIDIpXSkpLnRvVGhyb3coRXJyb3IpO1xuICAgIH0pO1xuICB9KTtcbiAgZGVzY3JpYmUoJ25vcm1hbGl6ZScsICgpID0+IHtcbiAgICBjb25zdCBhc3NlcnQgPSAoaW5wdXQsIHRva2VucywgZXhwZWN0ZWQpID0+IHtcbiAgICAgIGl0KGAke2lucHV0fSArICR7SlNPTi5zdHJpbmdpZnkodG9rZW5zKX0gLT4gJHtKU09OLnN0cmluZ2lmeShleHBlY3RlZCl9YCwgKCkgPT4ge1xuICAgICAgICBjb25zdCBvdXQgPSBub3JtYWxpemUoaW5wdXQsIHRva2Vucyk7XG4gICAgICAgIGV4cGVjdChvdXQpLnRvRXF1YWwoZXhwZWN0ZWQpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgICBhc3NlcnQoXG4gICAgICBudWxsLFxuICAgICAgW10sXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnJyxcbiAgICAgICAgICBzdGFydDogMCxcbiAgICAgICAgICBlbmQ6IDAsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICk7XG4gICAgYXNzZXJ0KFxuICAgICAgJ2FiY2RlJyxcbiAgICAgIFtcbiAgICAgICAgeyB0ZXh0OiAnYicsIHN0YXJ0OiAxLCBlbmQ6IDIgfSxcbiAgICAgICAgeyB0ZXh0OiAnZCcsIHN0YXJ0OiAzLCBlbmQ6IDQgfSxcbiAgICAgIF0sXG4gICAgICBbXG4gICAgICAgIHsgdGV4dDogJ2EnLCBzdGFydDogMCwgZW5kOiAxIH0sXG4gICAgICAgIHsgdGV4dDogJ2InLCBzdGFydDogMSwgZW5kOiAyLCBwcmVkZWZpbmVkOiB0cnVlIH0sXG4gICAgICAgIHsgdGV4dDogJ2MnLCBzdGFydDogMiwgZW5kOiAzIH0sXG4gICAgICAgIHsgdGV4dDogJ2QnLCBzdGFydDogMywgZW5kOiA0LCBwcmVkZWZpbmVkOiB0cnVlIH0sXG4gICAgICAgIHsgdGV4dDogJ2UnLCBzdGFydDogNCwgZW5kOiA1IH0sXG4gICAgICBdLFxuICAgICk7XG4gICAgYXNzZXJ0KFxuICAgICAgJ2FiYycsXG4gICAgICBbeyB0ZXh0OiAnYycsIHN0YXJ0OiAyLCBlbmQ6IDMgfV0sXG4gICAgICBbXG4gICAgICAgIHsgdGV4dDogJ2FiJywgc3RhcnQ6IDAsIGVuZDogMiB9LFxuICAgICAgICB7IHRleHQ6ICdjJywgc3RhcnQ6IDIsIGVuZDogMywgcHJlZGVmaW5lZDogdHJ1ZSB9LFxuICAgICAgXSxcbiAgICApO1xuXG4gICAgYXNzZXJ0KFxuICAgICAgJ2FiYycsXG4gICAgICBbXG4gICAgICAgIHsgdGV4dDogJ2MnLCBzdGFydDogMiwgZW5kOiAzIH0sXG4gICAgICAgIHsgdGV4dDogJ2InLCBzdGFydDogMSwgZW5kOiAyIH0sXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICB7IHRleHQ6ICdhJywgc3RhcnQ6IDAsIGVuZDogMSB9LFxuICAgICAgICB7IHRleHQ6ICdiJywgc3RhcnQ6IDEsIGVuZDogMiwgcHJlZGVmaW5lZDogdHJ1ZSB9LFxuICAgICAgICB7IHRleHQ6ICdjJywgc3RhcnQ6IDIsIGVuZDogMywgcHJlZGVmaW5lZDogdHJ1ZSB9LFxuICAgICAgXSxcbiAgICApO1xuXG4gICAgYXNzZXJ0KFxuICAgICAgJ2FiYycsXG4gICAgICBbeyB0ZXh0OiAnYScsIHN0YXJ0OiAwLCBlbmQ6IDEgfV0sXG4gICAgICBbXG4gICAgICAgIHsgdGV4dDogJ2EnLCBzdGFydDogMCwgZW5kOiAxLCBwcmVkZWZpbmVkOiB0cnVlIH0sXG4gICAgICAgIHsgdGV4dDogJ2JjJywgc3RhcnQ6IDEsIGVuZDogMyB9LFxuICAgICAgXSxcbiAgICApO1xuXG4gICAgYXNzZXJ0KFxuICAgICAgJ2FiY2QnLFxuICAgICAgW1xuICAgICAgICB7IHRleHQ6ICdiJywgc3RhcnQ6IDEsIGVuZDogMiB9LFxuICAgICAgICB7IHRleHQ6ICdjJywgc3RhcnQ6IDIsIGVuZDogMyB9LFxuICAgICAgICB7IHRleHQ6ICdkJywgc3RhcnQ6IDMsIGVuZDogNCB9LFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgeyB0ZXh0OiAnYScsIHN0YXJ0OiAwLCBlbmQ6IDEgfSxcbiAgICAgICAgeyB0ZXh0OiAnYicsIHN0YXJ0OiAxLCBlbmQ6IDIsIHByZWRlZmluZWQ6IHRydWUgfSxcbiAgICAgICAgeyB0ZXh0OiAnYycsIHN0YXJ0OiAyLCBlbmQ6IDMsIHByZWRlZmluZWQ6IHRydWUgfSxcbiAgICAgICAgeyB0ZXh0OiAnZCcsIHN0YXJ0OiAzLCBlbmQ6IDQsIHByZWRlZmluZWQ6IHRydWUgfSxcbiAgICAgIF0sXG4gICAgKTtcbiAgICBhc3NlcnQoXG4gICAgICAnYWJjZGUnLFxuICAgICAgW1xuICAgICAgICB7IHRleHQ6ICdiJywgc3RhcnQ6IDEsIGVuZDogMiB9LFxuICAgICAgICB7IHRleHQ6ICdjJywgc3RhcnQ6IDIsIGVuZDogMyB9LFxuICAgICAgICB7IHRleHQ6ICdkJywgc3RhcnQ6IDMsIGVuZDogNCB9LFxuICAgICAgXSxcbiAgICAgIFtcbiAgICAgICAgeyB0ZXh0OiAnYScsIHN0YXJ0OiAwLCBlbmQ6IDEgfSxcbiAgICAgICAgeyB0ZXh0OiAnYicsIHN0YXJ0OiAxLCBlbmQ6IDIsIHByZWRlZmluZWQ6IHRydWUgfSxcbiAgICAgICAgeyB0ZXh0OiAnYycsIHN0YXJ0OiAyLCBlbmQ6IDMsIHByZWRlZmluZWQ6IHRydWUgfSxcbiAgICAgICAgeyB0ZXh0OiAnZCcsIHN0YXJ0OiAzLCBlbmQ6IDQsIHByZWRlZmluZWQ6IHRydWUgfSxcbiAgICAgICAgeyB0ZXh0OiAnZScsIHN0YXJ0OiA0LCBlbmQ6IDUgfSxcbiAgICAgIF0sXG4gICAgKTtcblxuICAgIC8vIHNhbWUgdG9rZW4gZGVmaW5lZCBtdWx0aXBsZSB0aW1lc1xuICAgIGFzc2VydChcbiAgICAgICdhYmNkZScsXG4gICAgICBbXG4gICAgICAgIHsgdGV4dDogJ2MnLCBzdGFydDogMiwgZW5kOiAzIH0sXG4gICAgICAgIHsgdGV4dDogJ2InLCBzdGFydDogMSwgZW5kOiAyIH0sXG4gICAgICAgIHsgdGV4dDogJ2MnLCBzdGFydDogMiwgZW5kOiAzIH0sXG4gICAgICAgIHsgdGV4dDogJ2QnLCBzdGFydDogMywgZW5kOiA0IH0sXG4gICAgICAgIHsgdGV4dDogJ2MnLCBzdGFydDogMiwgZW5kOiAzIH0sXG4gICAgICBdLFxuICAgICAgW1xuICAgICAgICB7IHRleHQ6ICdhJywgc3RhcnQ6IDAsIGVuZDogMSB9LFxuICAgICAgICB7IHRleHQ6ICdiJywgc3RhcnQ6IDEsIGVuZDogMiwgcHJlZGVmaW5lZDogdHJ1ZSB9LFxuICAgICAgICB7IHRleHQ6ICdjJywgc3RhcnQ6IDIsIGVuZDogMywgcHJlZGVmaW5lZDogdHJ1ZSB9LFxuICAgICAgICB7IHRleHQ6ICdkJywgc3RhcnQ6IDMsIGVuZDogNCwgcHJlZGVmaW5lZDogdHJ1ZSB9LFxuICAgICAgICB7IHRleHQ6ICdlJywgc3RhcnQ6IDQsIGVuZDogNSB9LFxuICAgICAgXSxcbiAgICApO1xuICB9KTtcblxuICBkZXNjcmliZSgnd29yZHMnLCAoKSA9PiB7XG4gICAgaXQoJ3dvcmtzJywgKCkgPT4ge1xuICAgICAgY29uc3Qgb3V0ID0gd29yZHMoJ2Zvby4gYmFyJyk7XG4gICAgICBleHBlY3Qob3V0KS50b0VxdWFsKFtcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6ICdmb28uJyxcbiAgICAgICAgICBzdGFydDogMCxcbiAgICAgICAgICBlbmQ6IDQsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXh0OiAnYmFyJyxcbiAgICAgICAgICBzdGFydDogNSxcbiAgICAgICAgICBlbmQ6IDgsXG4gICAgICAgIH0sXG4gICAgICBdKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NlbnRlbmNlcycsICgpID0+IHtcbiAgICBpdCgnZm9vYmFyJywgKCkgPT4ge1xuICAgICAgY29uc3QgdGV4dCA9ICdUaGlzIGlzIGZvby4gVGhpcyBpcyBiYXIuJztcbiAgICAgIGNvbnN0IG91dCA9IHNlbnRlbmNlcyh0ZXh0KTtcbiAgICAgIGV4cGVjdChvdXRbMF0pLnRvRXF1YWwoeyB0ZXh0OiAnVGhpcyBpcyBmb28uJywgc3RhcnQ6IDAsIGVuZDogMTIgfSk7XG4gICAgICBleHBlY3Qob3V0WzFdKS50b0VxdWFsKHsgdGV4dDogJ1RoaXMgaXMgYmFyLicsIHN0YXJ0OiAxMywgZW5kOiAyNSB9KTtcbiAgICB9KTtcblxuICAgIGl0KCd3b3JrcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHRleHQgPVxuICAgICAgICAnT24gSmFuLiAyMCwgZm9ybWVyIFNlbi4gQmFyYWNrIE9iYW1hIGJlY2FtZSB0aGUgNDR0aCBQcmVzaWRlbnQgb2YgdGhlIFVTQS4gTWlsbGlvbnMgYXR0ZW5kZWQgdGhlIEluYXVndXJhdGlvbi4nO1xuXG4gICAgICBjb25zdCBvdXQgPSBzZW50ZW5jZXModGV4dCk7XG4gICAgICBleHBlY3Qob3V0Lmxlbmd0aCkudG9FcXVhbCgyKTtcbiAgICB9KTtcblxuICAgIGl0KCd3b3JrcyBmb3Igc2VudGVuY2VzIHNlcGFyYXRlZCBieSBcXG4nLCAoKSA9PiB7XG4gICAgICBjb25zdCB0ZXh0ID0gJ1RoaXMgaXMgZm9vXFxuVGhpcyBpcyBiYXInO1xuICAgICAgY29uc3Qgb3V0ID0gc2VudGVuY2VzKHRleHQpO1xuICAgICAgZXhwZWN0KG91dFswXSkudG9FcXVhbCh7IHRleHQ6ICdUaGlzIGlzIGZvbycsIHN0YXJ0OiAwLCBlbmQ6IDExIH0pO1xuICAgICAgZXhwZWN0KG91dFsxXSkudG9FcXVhbCh7IHRleHQ6ICdUaGlzIGlzIGJhcicsIHN0YXJ0OiAxMiwgZW5kOiAyMyB9KTtcbiAgICB9KTtcblxuICAgIGl0KCd3b3JrcyBmb3Igc2VudGVuY2VzIGVuZGluZyBpbiBvbmUtY2hhcmFjdGVyLXdvcmRzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdGV4dCA9XG4gICAgICAgIFwiVGhpcyBpcyBTZW50ZW5jZSAxLiBUaGlzIGlzIFNlbnRlbmNlIDIuIFRoaXMgaXMgU2VudGVuY2UgMy4gVGhpcyBpcyBTZW50ZW5jZSA0LiBEci4gQS4gc2FpZCBoZSdsbCBjYWxsIGluIDUuXCI7XG5cbiAgICAgIGNvbnN0IG91dCA9IHNlbnRlbmNlcyh0ZXh0KTtcblxuICAgICAgZXhwZWN0KG91dC5sZW5ndGgpLnRvRXF1YWwoNSk7XG5cbiAgICAgIGV4cGVjdChvdXQpLnRvRXF1YWwoW1xuICAgICAgICB7IHRleHQ6ICdUaGlzIGlzIFNlbnRlbmNlIDEuJywgc3RhcnQ6IDAsIGVuZDogMTkgfSxcbiAgICAgICAgeyB0ZXh0OiAnVGhpcyBpcyBTZW50ZW5jZSAyLicsIHN0YXJ0OiAyMCwgZW5kOiAzOSB9LFxuICAgICAgICB7IHRleHQ6ICdUaGlzIGlzIFNlbnRlbmNlIDMuJywgc3RhcnQ6IDQwLCBlbmQ6IDU5IH0sXG4gICAgICAgIHsgdGV4dDogJ1RoaXMgaXMgU2VudGVuY2UgNC4nLCBzdGFydDogNjAsIGVuZDogNzkgfSxcbiAgICAgICAgeyB0ZXh0OiBcIkRyLiBBLiBzYWlkIGhlJ2xsIGNhbGwgaW4gNS5cIiwgc3RhcnQ6IDgwLCBlbmQ6IDEwOCB9LFxuICAgICAgXSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdwYXJhZ3JhcGhzJywgKCkgPT4ge1xuICAgIGl0KCdmb29iYXInLCAoKSA9PiB7XG4gICAgICBjb25zdCB0ZXh0ID0gJ1RoaXMgaXMgZm9vLiBUaGlzIGlzIGJhci5cXG5UaGlzIGlzIGZvb2Jhci4gVGhpcyBpcyBiYXJmb28uJztcbiAgICAgIGNvbnN0IG91dCA9IHBhcmFncmFwaHModGV4dCk7XG4gICAgICBleHBlY3Qob3V0WzBdKS50b0VxdWFsKHtcbiAgICAgICAgdGV4dDogJ1RoaXMgaXMgZm9vLiBUaGlzIGlzIGJhci4nLFxuICAgICAgICBzdGFydDogMCxcbiAgICAgICAgZW5kOiAyNSxcbiAgICAgIH0pO1xuICAgICAgZXhwZWN0KG91dFsxXSkudG9FcXVhbCh7XG4gICAgICAgIHRleHQ6ICdUaGlzIGlzIGZvb2Jhci4gVGhpcyBpcyBiYXJmb28uJyxcbiAgICAgICAgc3RhcnQ6IDI2LFxuICAgICAgICBlbmQ6IDU3LFxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgaXQoJ3dvcmtzJywgKCkgPT4ge1xuICAgICAgY29uc3QgdGV4dCA9XG4gICAgICAgICdPbiBKYW4uIDIwLCBmb3JtZXIgU2VuLiBCYXJhY2sgT2JhbWEgYmVjYW1lIHRoZSA0NHRoIFByZXNpZGVudCBvZiB0aGUgVVNBLiBNaWxsaW9ucyBhdHRlbmRlZCB0aGUgSW5hdWd1cmF0aW9uLicgK1xuICAgICAgICAnXFxcXG5kYWRhZGFkYWRhZGFkYWRhZGEuJztcblxuICAgICAgY29uc3Qgb3V0ID0gcGFyYWdyYXBocyh0ZXh0KTtcbiAgICAgIGV4cGVjdChvdXQubGVuZ3RoKS50b0VxdWFsKDEpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUF5RixJQUFBQyxlQUFBO0FBRXpGLElBQU1DLEtBQUssR0FBRyxTQUFSQSxLQUFLQSxDQUFJQyxLQUFLLEVBQUVDLEdBQUcsRUFBRUMsSUFBSTtFQUFBLE9BQU07SUFBRUYsS0FBSyxFQUFMQSxLQUFLO0lBQUVDLEdBQUcsRUFBSEEsR0FBRztJQUFFQyxJQUFJLEVBQUpBO0VBQUssQ0FBQztBQUFBLENBQUM7QUFFMUQsSUFBTUMsU0FBUyxHQUFHLFNBQVpBLFNBQVNBLENBQUlILEtBQUssRUFBRUMsR0FBRztFQUFBLE9BQU07SUFBRUQsS0FBSyxFQUFMQSxLQUFLO0lBQUVDLEdBQUcsRUFBSEE7RUFBSSxDQUFDO0FBQUEsQ0FBQztBQUVsRCxJQUFNRyxDQUFDLEdBQUcsU0FBSkEsQ0FBQ0EsQ0FBSUMsT0FBTyxFQUFhO0VBQUEsU0FBQUMsSUFBQSxHQUFBQyxTQUFBLENBQUFDLE1BQUEsRUFBUkMsR0FBRyxPQUFBQyxLQUFBLENBQUFKLElBQUEsT0FBQUEsSUFBQSxXQUFBSyxJQUFBLE1BQUFBLElBQUEsR0FBQUwsSUFBQSxFQUFBSyxJQUFBO0lBQUhGLEdBQUcsQ0FBQUUsSUFBQSxRQUFBSixTQUFBLENBQUFJLElBQUE7RUFBQTtFQUN4QixPQUFPTixPQUFPLENBQUNPLE1BQU0sQ0FBQyxVQUFDQyxHQUFHLEVBQUVDLENBQUMsRUFBRUMsS0FBSyxFQUFLO0lBQ3ZDLElBQU1DLENBQUMsR0FBR1AsR0FBRyxDQUFDTSxLQUFLLENBQUM7SUFDcEIsSUFBTUUsQ0FBQyxHQUFHLElBQUFDLFFBQUEsYUFBT0YsQ0FBQyxNQUFLLFFBQVEsR0FBR0csSUFBSSxDQUFDQyxTQUFTLENBQUNKLENBQUMsQ0FBQyxHQUFHQSxDQUFDO0lBQ3ZE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
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
5
|
+
var _controls = require("../controls");
|
|
6
|
+
var _react = _interopRequireDefault(require("react"));
|
|
7
|
+
var _react2 = require("@testing-library/react");
|
|
8
|
+
describe('controls', function () {
|
|
9
|
+
var defaultProps = {
|
|
10
|
+
classes: {
|
|
11
|
+
button: 'button'
|
|
12
|
+
},
|
|
13
|
+
onClear: jest.fn(),
|
|
14
|
+
onWords: jest.fn(),
|
|
15
|
+
onSentences: jest.fn(),
|
|
16
|
+
onParagraphs: jest.fn(),
|
|
17
|
+
setCorrectMode: false,
|
|
18
|
+
onToggleCorrectMode: jest.fn()
|
|
19
|
+
};
|
|
20
|
+
describe('rendering', function () {
|
|
21
|
+
it('renders with all controls', function () {
|
|
22
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_controls.Controls, defaultProps)),
|
|
23
|
+
container = _render.container;
|
|
24
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
25
|
+
});
|
|
26
|
+
it('renders in setCorrectMode', function () {
|
|
27
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_controls.Controls, (0, _extends2["default"])({}, defaultProps, {
|
|
28
|
+
setCorrectMode: true
|
|
29
|
+
}))),
|
|
30
|
+
container = _render2.container;
|
|
31
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29udHJvbHMiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZWFjdDIiLCJkZXNjcmliZSIsImRlZmF1bHRQcm9wcyIsImNsYXNzZXMiLCJidXR0b24iLCJvbkNsZWFyIiwiamVzdCIsImZuIiwib25Xb3JkcyIsIm9uU2VudGVuY2VzIiwib25QYXJhZ3JhcGhzIiwic2V0Q29ycmVjdE1vZGUiLCJvblRvZ2dsZUNvcnJlY3RNb2RlIiwiaXQiLCJfcmVuZGVyIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsIkNvbnRyb2xzIiwiY29udGFpbmVyIiwiZXhwZWN0IiwiZmlyc3RDaGlsZCIsInRvQmVJblRoZURvY3VtZW50IiwiX3JlbmRlcjIiLCJfZXh0ZW5kczIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9rZW5pemVyL19fdGVzdHNfXy9jb250cm9scy50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb250cm9scyB9IGZyb20gJy4uL2NvbnRyb2xzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyByZW5kZXIsIHNjcmVlbiB9IGZyb20gJ0B0ZXN0aW5nLWxpYnJhcnkvcmVhY3QnO1xuXG5kZXNjcmliZSgnY29udHJvbHMnLCAoKSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcbiAgICBjbGFzc2VzOiB7IGJ1dHRvbjogJ2J1dHRvbicgfSxcbiAgICBvbkNsZWFyOiBqZXN0LmZuKCksXG4gICAgb25Xb3JkczogamVzdC5mbigpLFxuICAgIG9uU2VudGVuY2VzOiBqZXN0LmZuKCksXG4gICAgb25QYXJhZ3JhcGhzOiBqZXN0LmZuKCksXG4gICAgc2V0Q29ycmVjdE1vZGU6IGZhbHNlLFxuICAgIG9uVG9nZ2xlQ29ycmVjdE1vZGU6IGplc3QuZm4oKSxcbiAgfTtcblxuICBkZXNjcmliZSgncmVuZGVyaW5nJywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzIHdpdGggYWxsIGNvbnRyb2xzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8Q29udHJvbHMgey4uLmRlZmF1bHRQcm9wc30gLz4pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3JlbmRlcnMgaW4gc2V0Q29ycmVjdE1vZGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCB7IGNvbnRhaW5lciB9ID0gcmVuZGVyKDxDb250cm9scyB7Li4uZGVmYXVsdFByb3BzfSBzZXRDb3JyZWN0TW9kZT17dHJ1ZX0gLz4pO1xuICAgICAgZXhwZWN0KGNvbnRhaW5lci5maXJzdENoaWxkKS50b0JlSW5UaGVEb2N1bWVudCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsSUFBQUEsU0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBSCxPQUFBO0FBRUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsWUFBTTtFQUN6QixJQUFNQyxZQUFZLEdBQUc7SUFDbkJDLE9BQU8sRUFBRTtNQUFFQyxNQUFNLEVBQUU7SUFBUyxDQUFDO0lBQzdCQyxPQUFPLEVBQUVDLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7SUFDbEJDLE9BQU8sRUFBRUYsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztJQUNsQkUsV0FBVyxFQUFFSCxJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RCRyxZQUFZLEVBQUVKLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7SUFDdkJJLGNBQWMsRUFBRSxLQUFLO0lBQ3JCQyxtQkFBbUIsRUFBRU4sSUFBSSxDQUFDQyxFQUFFLENBQUM7RUFDL0IsQ0FBQztFQUVETixRQUFRLENBQUMsV0FBVyxFQUFFLFlBQU07SUFDMUJZLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxZQUFNO01BQ3BDLElBQUFDLE9BQUEsR0FBc0IsSUFBQUMsY0FBTSxlQUFDakIsTUFBQSxZQUFBa0IsYUFBQSxDQUFDcEIsU0FBQSxDQUFBcUIsUUFBUSxFQUFLZixZQUFlLENBQUMsQ0FBQztRQUFwRGdCLFNBQVMsR0FBQUosT0FBQSxDQUFUSSxTQUFTO01BQ2pCQyxNQUFNLENBQUNELFNBQVMsQ0FBQ0UsVUFBVSxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDO0lBRUZSLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxZQUFNO01BQ3BDLElBQUFTLFFBQUEsR0FBc0IsSUFBQVAsY0FBTSxlQUFDakIsTUFBQSxZQUFBa0IsYUFBQSxDQUFDcEIsU0FBQSxDQUFBcUIsUUFBUSxNQUFBTSxTQUFBLGlCQUFLckIsWUFBWTtVQUFFUyxjQUFjLEVBQUU7UUFBSyxFQUFFLENBQUMsQ0FBQztRQUExRU8sU0FBUyxHQUFBSSxRQUFBLENBQVRKLFNBQVM7TUFDakJDLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDRSxVQUFVLENBQUMsQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQztJQUNsRCxDQUFDLENBQUM7RUFDSixDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
5
|
+
var _index = require("../index");
|
|
6
|
+
var _react = _interopRequireDefault(require("react"));
|
|
7
|
+
var _react2 = require("@testing-library/react");
|
|
8
|
+
var tokens = function tokens() {
|
|
9
|
+
return [{
|
|
10
|
+
start: 0,
|
|
11
|
+
end: 1,
|
|
12
|
+
text: 'f'
|
|
13
|
+
}];
|
|
14
|
+
};
|
|
15
|
+
describe('tokenizer', function () {
|
|
16
|
+
var defaultProps = {
|
|
17
|
+
text: 'foo',
|
|
18
|
+
classes: {},
|
|
19
|
+
onChange: jest.fn(),
|
|
20
|
+
tokens: tokens()
|
|
21
|
+
};
|
|
22
|
+
describe('rendering', function () {
|
|
23
|
+
it('renders with default props', function () {
|
|
24
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.Tokenizer, defaultProps)),
|
|
25
|
+
container = _render.container;
|
|
26
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
27
|
+
});
|
|
28
|
+
it('renders with empty tokens', function () {
|
|
29
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.Tokenizer, (0, _extends2["default"])({}, defaultProps, {
|
|
30
|
+
tokens: []
|
|
31
|
+
}))),
|
|
32
|
+
container = _render2.container;
|
|
33
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
34
|
+
});
|
|
35
|
+
it('renders with multiple tokens', function () {
|
|
36
|
+
var multipleTokens = [{
|
|
37
|
+
start: 0,
|
|
38
|
+
end: 3,
|
|
39
|
+
text: 'foo'
|
|
40
|
+
}, {
|
|
41
|
+
start: 4,
|
|
42
|
+
end: 7,
|
|
43
|
+
text: 'bar'
|
|
44
|
+
}];
|
|
45
|
+
var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_index.Tokenizer, (0, _extends2["default"])({}, defaultProps, {
|
|
46
|
+
tokens: multipleTokens
|
|
47
|
+
}))),
|
|
48
|
+
container = _render3.container;
|
|
49
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
// Note: Tests for internal methods (tokenIndex, tokenClick, selectToken, buildTokens,
|
|
54
|
+
// clear, toggleCorrectMode, setCorrect, removeToken) are implementation details and
|
|
55
|
+
// cannot be directly tested with RTL. The original tests used wrapper.instance() to
|
|
56
|
+
// test these methods, which tests implementation rather than user-facing behavior.
|
|
57
|
+
// The tokenization logic and user interactions should be tested through integration/e2e tests.
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaW5kZXgiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZWFjdDIiLCJ0b2tlbnMiLCJzdGFydCIsImVuZCIsInRleHQiLCJkZXNjcmliZSIsImRlZmF1bHRQcm9wcyIsImNsYXNzZXMiLCJvbkNoYW5nZSIsImplc3QiLCJmbiIsIml0IiwiX3JlbmRlciIsInJlbmRlciIsImNyZWF0ZUVsZW1lbnQiLCJUb2tlbml6ZXIiLCJjb250YWluZXIiLCJleHBlY3QiLCJmaXJzdENoaWxkIiwidG9CZUluVGhlRG9jdW1lbnQiLCJfcmVuZGVyMiIsIl9leHRlbmRzMiIsIm11bHRpcGxlVG9rZW5zIiwiX3JlbmRlcjMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9rZW5pemVyL19fdGVzdHNfXy9pbmRleC50ZXN0LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUb2tlbml6ZXIgfSBmcm9tICcuLi9pbmRleCc7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgcmVuZGVyIH0gZnJvbSAnQHRlc3RpbmctbGlicmFyeS9yZWFjdCc7XG5cbmNvbnN0IHRva2VucyA9ICgpID0+IFtcbiAge1xuICAgIHN0YXJ0OiAwLFxuICAgIGVuZDogMSxcbiAgICB0ZXh0OiAnZicsXG4gIH0sXG5dO1xuXG5kZXNjcmliZSgndG9rZW5pemVyJywgKCkgPT4ge1xuICBjb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gICAgdGV4dDogJ2ZvbycsXG4gICAgY2xhc3Nlczoge30sXG4gICAgb25DaGFuZ2U6IGplc3QuZm4oKSxcbiAgICB0b2tlbnM6IHRva2VucygpLFxuICB9O1xuXG4gIGRlc2NyaWJlKCdyZW5kZXJpbmcnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMgd2l0aCBkZWZhdWx0IHByb3BzJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8VG9rZW5pemVyIHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGggZW1wdHkgdG9rZW5zJywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8VG9rZW5pemVyIHsuLi5kZWZhdWx0UHJvcHN9IHRva2Vucz17W119IC8+KTtcbiAgICAgIGV4cGVjdChjb250YWluZXIuZmlyc3RDaGlsZCkudG9CZUluVGhlRG9jdW1lbnQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdyZW5kZXJzIHdpdGggbXVsdGlwbGUgdG9rZW5zJywgKCkgPT4ge1xuICAgICAgY29uc3QgbXVsdGlwbGVUb2tlbnMgPSBbXG4gICAgICAgIHsgc3RhcnQ6IDAsIGVuZDogMywgdGV4dDogJ2ZvbycgfSxcbiAgICAgICAgeyBzdGFydDogNCwgZW5kOiA3LCB0ZXh0OiAnYmFyJyB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFRva2VuaXplciB7Li4uZGVmYXVsdFByb3BzfSB0b2tlbnM9e211bHRpcGxlVG9rZW5zfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIE5vdGU6IFRlc3RzIGZvciBpbnRlcm5hbCBtZXRob2RzICh0b2tlbkluZGV4LCB0b2tlbkNsaWNrLCBzZWxlY3RUb2tlbiwgYnVpbGRUb2tlbnMsXG4gIC8vIGNsZWFyLCB0b2dnbGVDb3JyZWN0TW9kZSwgc2V0Q29ycmVjdCwgcmVtb3ZlVG9rZW4pIGFyZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFuZFxuICAvLyBjYW5ub3QgYmUgZGlyZWN0bHkgdGVzdGVkIHdpdGggUlRMLiBUaGUgb3JpZ2luYWwgdGVzdHMgdXNlZCB3cmFwcGVyLmluc3RhbmNlKCkgdG9cbiAgLy8gdGVzdCB0aGVzZSBtZXRob2RzLCB3aGljaCB0ZXN0cyBpbXBsZW1lbnRhdGlvbiByYXRoZXIgdGhhbiB1c2VyLWZhY2luZyBiZWhhdmlvci5cbiAgLy8gVGhlIHRva2VuaXphdGlvbiBsb2dpYyBhbmQgdXNlciBpbnRlcmFjdGlvbnMgc2hvdWxkIGJlIHRlc3RlZCB0aHJvdWdoIGludGVncmF0aW9uL2UyZSB0ZXN0cy5cbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsT0FBQSxHQUFBSCxPQUFBO0FBRUEsSUFBTUksTUFBTSxHQUFHLFNBQVRBLE1BQU1BLENBQUE7RUFBQSxPQUFTLENBQ25CO0lBQ0VDLEtBQUssRUFBRSxDQUFDO0lBQ1JDLEdBQUcsRUFBRSxDQUFDO0lBQ05DLElBQUksRUFBRTtFQUNSLENBQUMsQ0FDRjtBQUFBO0FBRURDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsWUFBTTtFQUMxQixJQUFNQyxZQUFZLEdBQUc7SUFDbkJGLElBQUksRUFBRSxLQUFLO0lBQ1hHLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDWEMsUUFBUSxFQUFFQyxJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFDO0lBQ25CVCxNQUFNLEVBQUVBLE1BQU0sQ0FBQztFQUNqQixDQUFDO0VBRURJLFFBQVEsQ0FBQyxXQUFXLEVBQUUsWUFBTTtJQUMxQk0sRUFBRSxDQUFDLDRCQUE0QixFQUFFLFlBQU07TUFDckMsSUFBQUMsT0FBQSxHQUFzQixJQUFBQyxjQUFNLGVBQUNmLE1BQUEsWUFBQWdCLGFBQUEsQ0FBQ2xCLE1BQUEsQ0FBQW1CLFNBQVMsRUFBS1QsWUFBZSxDQUFDLENBQUM7UUFBckRVLFNBQVMsR0FBQUosT0FBQSxDQUFUSSxTQUFTO01BQ2pCQyxNQUFNLENBQUNELFNBQVMsQ0FBQ0UsVUFBVSxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDO0lBRUZSLEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxZQUFNO01BQ3BDLElBQUFTLFFBQUEsR0FBc0IsSUFBQVAsY0FBTSxlQUFDZixNQUFBLFlBQUFnQixhQUFBLENBQUNsQixNQUFBLENBQUFtQixTQUFTLE1BQUFNLFNBQUEsaUJBQUtmLFlBQVk7VUFBRUwsTUFBTSxFQUFFO1FBQUcsRUFBRSxDQUFDLENBQUM7UUFBakVlLFNBQVMsR0FBQUksUUFBQSxDQUFUSixTQUFTO01BQ2pCQyxNQUFNLENBQUNELFNBQVMsQ0FBQ0UsVUFBVSxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDO0lBRUZSLEVBQUUsQ0FBQyw4QkFBOEIsRUFBRSxZQUFNO01BQ3ZDLElBQU1XLGNBQWMsR0FBRyxDQUNyQjtRQUFFcEIsS0FBSyxFQUFFLENBQUM7UUFBRUMsR0FBRyxFQUFFLENBQUM7UUFBRUMsSUFBSSxFQUFFO01BQU0sQ0FBQyxFQUNqQztRQUFFRixLQUFLLEVBQUUsQ0FBQztRQUFFQyxHQUFHLEVBQUUsQ0FBQztRQUFFQyxJQUFJLEVBQUU7TUFBTSxDQUFDLENBQ2xDO01BQ0QsSUFBQW1CLFFBQUEsR0FBc0IsSUFBQVYsY0FBTSxlQUFDZixNQUFBLFlBQUFnQixhQUFBLENBQUNsQixNQUFBLENBQUFtQixTQUFTLE1BQUFNLFNBQUEsaUJBQUtmLFlBQVk7VUFBRUwsTUFBTSxFQUFFcUI7UUFBZSxFQUFFLENBQUMsQ0FBQztRQUE3RU4sU0FBUyxHQUFBTyxRQUFBLENBQVRQLFNBQVM7TUFDakJDLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDRSxVQUFVLENBQUMsQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQztJQUNsRCxDQUFDLENBQUM7RUFDSixDQUFDLENBQUM7O0VBRUY7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNGLENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _selectionUtils = require("../selection-utils");
|
|
4
|
+
describe('selection-utils', function () {
|
|
5
|
+
var selection;
|
|
6
|
+
var range;
|
|
7
|
+
beforeEach(function () {
|
|
8
|
+
selection = {
|
|
9
|
+
removeAllRanges: jest.fn(),
|
|
10
|
+
addRange: jest.fn(),
|
|
11
|
+
getRangeAt: jest.fn().mockReturnValue(range)
|
|
12
|
+
};
|
|
13
|
+
global.document.getSelection = jest.fn().mockReturnValue(selection);
|
|
14
|
+
global.document.createRange = jest.fn();
|
|
15
|
+
});
|
|
16
|
+
describe('clearSelection', function () {
|
|
17
|
+
it('calls removeAllRanges', function () {
|
|
18
|
+
(0, _selectionUtils.clearSelection)();
|
|
19
|
+
expect(selection.removeAllRanges).toBeCalled();
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
xdescribe('getCaretCharacterOffsetWithin', function () {
|
|
23
|
+
it('TODO', function () {});
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc2VsZWN0aW9uVXRpbHMiLCJyZXF1aXJlIiwiZGVzY3JpYmUiLCJzZWxlY3Rpb24iLCJyYW5nZSIsImJlZm9yZUVhY2giLCJyZW1vdmVBbGxSYW5nZXMiLCJqZXN0IiwiZm4iLCJhZGRSYW5nZSIsImdldFJhbmdlQXQiLCJtb2NrUmV0dXJuVmFsdWUiLCJnbG9iYWwiLCJkb2N1bWVudCIsImdldFNlbGVjdGlvbiIsImNyZWF0ZVJhbmdlIiwiaXQiLCJjbGVhclNlbGVjdGlvbiIsImV4cGVjdCIsInRvQmVDYWxsZWQiLCJ4ZGVzY3JpYmUiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9rZW5pemVyL19fdGVzdHNfXy9zZWxlY3Rpb24tdXRpbHMudGVzdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbGVhclNlbGVjdGlvbiwgZ2V0Q2FyZXRDaGFyYWN0ZXJPZmZzZXRXaXRoaW4gfSBmcm9tICcuLi9zZWxlY3Rpb24tdXRpbHMnO1xuXG5kZXNjcmliZSgnc2VsZWN0aW9uLXV0aWxzJywgKCkgPT4ge1xuICBsZXQgc2VsZWN0aW9uO1xuICBsZXQgcmFuZ2U7XG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIHNlbGVjdGlvbiA9IHtcbiAgICAgIHJlbW92ZUFsbFJhbmdlczogamVzdC5mbigpLFxuICAgICAgYWRkUmFuZ2U6IGplc3QuZm4oKSxcbiAgICAgIGdldFJhbmdlQXQ6IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUocmFuZ2UpLFxuICAgIH07XG4gICAgZ2xvYmFsLmRvY3VtZW50LmdldFNlbGVjdGlvbiA9IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUoc2VsZWN0aW9uKTtcbiAgICBnbG9iYWwuZG9jdW1lbnQuY3JlYXRlUmFuZ2UgPSBqZXN0LmZuKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdjbGVhclNlbGVjdGlvbicsICgpID0+IHtcbiAgICBpdCgnY2FsbHMgcmVtb3ZlQWxsUmFuZ2VzJywgKCkgPT4ge1xuICAgICAgY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgIGV4cGVjdChzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKS50b0JlQ2FsbGVkKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHhkZXNjcmliZSgnZ2V0Q2FyZXRDaGFyYWN0ZXJPZmZzZXRXaXRoaW4nLCAoKSA9PiB7XG4gICAgaXQoJ1RPRE8nLCAoKSA9PiB7fSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBQUEsZUFBQSxHQUFBQyxPQUFBO0FBRUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxZQUFNO0VBQ2hDLElBQUlDLFNBQVM7RUFDYixJQUFJQyxLQUFLO0VBQ1RDLFVBQVUsQ0FBQyxZQUFNO0lBQ2ZGLFNBQVMsR0FBRztNQUNWRyxlQUFlLEVBQUVDLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7TUFDMUJDLFFBQVEsRUFBRUYsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztNQUNuQkUsVUFBVSxFQUFFSCxJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFDLENBQUNHLGVBQWUsQ0FBQ1AsS0FBSztJQUM3QyxDQUFDO0lBQ0RRLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDQyxZQUFZLEdBQUdQLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUMsQ0FBQ0csZUFBZSxDQUFDUixTQUFTLENBQUM7SUFDbkVTLE1BQU0sQ0FBQ0MsUUFBUSxDQUFDRSxXQUFXLEdBQUdSLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7RUFDekMsQ0FBQyxDQUFDO0VBRUZOLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxZQUFNO0lBQy9CYyxFQUFFLENBQUMsdUJBQXVCLEVBQUUsWUFBTTtNQUNoQyxJQUFBQyw4QkFBYyxFQUFDLENBQUM7TUFDaEJDLE1BQU0sQ0FBQ2YsU0FBUyxDQUFDRyxlQUFlLENBQUMsQ0FBQ2EsVUFBVSxDQUFDLENBQUM7SUFDaEQsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0VBRUZDLFNBQVMsQ0FBQywrQkFBK0IsRUFBRSxZQUFNO0lBQy9DSixFQUFFLENBQUMsTUFBTSxFQUFFLFlBQU0sQ0FBQyxDQUFDLENBQUM7RUFDdEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
|
6
|
+
var _react2 = require("@testing-library/react");
|
|
7
|
+
var _tokenText = _interopRequireDefault(require("../token-text"));
|
|
8
|
+
var tokens = function tokens() {
|
|
9
|
+
return [{
|
|
10
|
+
start: 0,
|
|
11
|
+
end: 7,
|
|
12
|
+
text: "lorem\nfoo bar"
|
|
13
|
+
}];
|
|
14
|
+
};
|
|
15
|
+
describe('token-text', function () {
|
|
16
|
+
var defaultProps = {
|
|
17
|
+
onTokenClick: jest.fn(),
|
|
18
|
+
onSelectToken: jest.fn(),
|
|
19
|
+
text: "lorem\nfoo bar",
|
|
20
|
+
tokens: tokens()
|
|
21
|
+
};
|
|
22
|
+
describe('rendering', function () {
|
|
23
|
+
it('renders with text and tokens', function () {
|
|
24
|
+
var _render = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tokenText["default"], defaultProps)),
|
|
25
|
+
container = _render.container;
|
|
26
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
27
|
+
});
|
|
28
|
+
it('renders with empty tokens', function () {
|
|
29
|
+
var _render2 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tokenText["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
30
|
+
tokens: []
|
|
31
|
+
}))),
|
|
32
|
+
container = _render2.container;
|
|
33
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
34
|
+
});
|
|
35
|
+
it('renders with multiline text', function () {
|
|
36
|
+
var _render3 = (0, _react2.render)(/*#__PURE__*/_react["default"].createElement(_tokenText["default"], (0, _extends2["default"])({}, defaultProps, {
|
|
37
|
+
text: "Line 1\\nLine 2\\nLine 3"
|
|
38
|
+
}))),
|
|
39
|
+
container = _render3.container;
|
|
40
|
+
expect(container.firstChild).toBeInTheDocument();
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
// Note: Tests for internal methods (onClick, mouseup event handling) are implementation
|
|
45
|
+
// details and cannot be directly tested with RTL. The original tests used wrapper.instance()
|
|
46
|
+
// to test onClick method logic, which tests implementation rather than user-facing behavior.
|
|
47
|
+
// User interactions with text selection should be tested through integration/e2e tests.
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdDIiLCJfdG9rZW5UZXh0IiwidG9rZW5zIiwic3RhcnQiLCJlbmQiLCJ0ZXh0IiwiZGVzY3JpYmUiLCJkZWZhdWx0UHJvcHMiLCJvblRva2VuQ2xpY2siLCJqZXN0IiwiZm4iLCJvblNlbGVjdFRva2VuIiwiaXQiLCJfcmVuZGVyIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsImNvbnRhaW5lciIsImV4cGVjdCIsImZpcnN0Q2hpbGQiLCJ0b0JlSW5UaGVEb2N1bWVudCIsIl9yZW5kZXIyIiwiX2V4dGVuZHMyIiwiX3JlbmRlcjMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9rZW5pemVyL19fdGVzdHNfXy90b2tlbi10ZXh0LnRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyByZW5kZXIgfSBmcm9tICdAdGVzdGluZy1saWJyYXJ5L3JlYWN0JztcbmltcG9ydCBUb2tlblRleHQgZnJvbSAnLi4vdG9rZW4tdGV4dCc7XG5cbmNvbnN0IHRva2VucyA9ICgpID0+IFtcbiAge1xuICAgIHN0YXJ0OiAwLFxuICAgIGVuZDogNyxcbiAgICB0ZXh0OiBgbG9yZW1cXG5mb28gYmFyYCxcbiAgfSxcbl07XG5cbmRlc2NyaWJlKCd0b2tlbi10ZXh0JywgKCkgPT4ge1xuICBjb25zdCBkZWZhdWx0UHJvcHMgPSB7XG4gICAgb25Ub2tlbkNsaWNrOiBqZXN0LmZuKCksXG4gICAgb25TZWxlY3RUb2tlbjogamVzdC5mbigpLFxuICAgIHRleHQ6IGBsb3JlbVxcbmZvbyBiYXJgLFxuICAgIHRva2VuczogdG9rZW5zKCksXG4gIH07XG5cbiAgZGVzY3JpYmUoJ3JlbmRlcmluZycsICgpID0+IHtcbiAgICBpdCgncmVuZGVycyB3aXRoIHRleHQgYW5kIHRva2VucycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFRva2VuVGV4dCB7Li4uZGVmYXVsdFByb3BzfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIGVtcHR5IHRva2VucycsICgpID0+IHtcbiAgICAgIGNvbnN0IHsgY29udGFpbmVyIH0gPSByZW5kZXIoPFRva2VuVGV4dCB7Li4uZGVmYXVsdFByb3BzfSB0b2tlbnM9e1tdfSAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG5cbiAgICBpdCgncmVuZGVycyB3aXRoIG11bHRpbGluZSB0ZXh0JywgKCkgPT4ge1xuICAgICAgY29uc3QgeyBjb250YWluZXIgfSA9IHJlbmRlcig8VG9rZW5UZXh0IHsuLi5kZWZhdWx0UHJvcHN9IHRleHQ9XCJMaW5lIDFcXG5MaW5lIDJcXG5MaW5lIDNcIiAvPik7XG4gICAgICBleHBlY3QoY29udGFpbmVyLmZpcnN0Q2hpbGQpLnRvQmVJblRoZURvY3VtZW50KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIE5vdGU6IFRlc3RzIGZvciBpbnRlcm5hbCBtZXRob2RzIChvbkNsaWNrLCBtb3VzZXVwIGV2ZW50IGhhbmRsaW5nKSBhcmUgaW1wbGVtZW50YXRpb25cbiAgLy8gZGV0YWlscyBhbmQgY2Fubm90IGJlIGRpcmVjdGx5IHRlc3RlZCB3aXRoIFJUTC4gVGhlIG9yaWdpbmFsIHRlc3RzIHVzZWQgd3JhcHBlci5pbnN0YW5jZSgpXG4gIC8vIHRvIHRlc3Qgb25DbGljayBtZXRob2QgbG9naWMsIHdoaWNoIHRlc3RzIGltcGxlbWVudGF0aW9uIHJhdGhlciB0aGFuIHVzZXItZmFjaW5nIGJlaGF2aW9yLlxuICAvLyBVc2VyIGludGVyYWN0aW9ucyB3aXRoIHRleHQgc2VsZWN0aW9uIHNob3VsZCBiZSB0ZXN0ZWQgdGhyb3VnaCBpbnRlZ3JhdGlvbi9lMmUgdGVzdHMuXG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFVBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQU1HLE1BQU0sR0FBRyxTQUFUQSxNQUFNQSxDQUFBO0VBQUEsT0FBUyxDQUNuQjtJQUNFQyxLQUFLLEVBQUUsQ0FBQztJQUNSQyxHQUFHLEVBQUUsQ0FBQztJQUNOQyxJQUFJO0VBQ04sQ0FBQyxDQUNGO0FBQUE7QUFFREMsUUFBUSxDQUFDLFlBQVksRUFBRSxZQUFNO0VBQzNCLElBQU1DLFlBQVksR0FBRztJQUNuQkMsWUFBWSxFQUFFQyxJQUFJLENBQUNDLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZCQyxhQUFhLEVBQUVGLElBQUksQ0FBQ0MsRUFBRSxDQUFDLENBQUM7SUFDeEJMLElBQUksa0JBQWtCO0lBQ3RCSCxNQUFNLEVBQUVBLE1BQU0sQ0FBQztFQUNqQixDQUFDO0VBRURJLFFBQVEsQ0FBQyxXQUFXLEVBQUUsWUFBTTtJQUMxQk0sRUFBRSxDQUFDLDhCQUE4QixFQUFFLFlBQU07TUFDdkMsSUFBQUMsT0FBQSxHQUFzQixJQUFBQyxjQUFNLGVBQUNqQixNQUFBLFlBQUFrQixhQUFBLENBQUNkLFVBQUEsV0FBUyxFQUFLTSxZQUFlLENBQUMsQ0FBQztRQUFyRFMsU0FBUyxHQUFBSCxPQUFBLENBQVRHLFNBQVM7TUFDakJDLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDRSxVQUFVLENBQUMsQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQztJQUNsRCxDQUFDLENBQUM7SUFFRlAsRUFBRSxDQUFDLDJCQUEyQixFQUFFLFlBQU07TUFDcEMsSUFBQVEsUUFBQSxHQUFzQixJQUFBTixjQUFNLGVBQUNqQixNQUFBLFlBQUFrQixhQUFBLENBQUNkLFVBQUEsV0FBUyxNQUFBb0IsU0FBQSxpQkFBS2QsWUFBWTtVQUFFTCxNQUFNLEVBQUU7UUFBRyxFQUFFLENBQUMsQ0FBQztRQUFqRWMsU0FBUyxHQUFBSSxRQUFBLENBQVRKLFNBQVM7TUFDakJDLE1BQU0sQ0FBQ0QsU0FBUyxDQUFDRSxVQUFVLENBQUMsQ0FBQ0MsaUJBQWlCLENBQUMsQ0FBQztJQUNsRCxDQUFDLENBQUM7SUFFRlAsRUFBRSxDQUFDLDZCQUE2QixFQUFFLFlBQU07TUFDdEMsSUFBQVUsUUFBQSxHQUFzQixJQUFBUixjQUFNLGVBQUNqQixNQUFBLFlBQUFrQixhQUFBLENBQUNkLFVBQUEsV0FBUyxNQUFBb0IsU0FBQSxpQkFBS2QsWUFBWTtVQUFFRixJQUFJLEVBQUM7UUFBd0IsRUFBRSxDQUFDLENBQUM7UUFBbkZXLFNBQVMsR0FBQU0sUUFBQSxDQUFUTixTQUFTO01BQ2pCQyxNQUFNLENBQUNELFNBQVMsQ0FBQ0UsVUFBVSxDQUFDLENBQUNDLGlCQUFpQixDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDOztFQUVGO0VBQ0E7RUFDQTtFQUNBO0FBQ0YsQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
|