@pie-element/placement-ordering 14.3.1 → 14.3.2-beta.2

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.
@@ -0,0 +1,493 @@
1
+ "use strict";
2
+
3
+ var _utils = require("../utils");
4
+ describe('utils', () => {
5
+ describe('generateValidationMessage', () => {
6
+ it('should return a validation message string', () => {
7
+ const message = (0, _utils.generateValidationMessage)();
8
+ expect(typeof message).toBe('string');
9
+ });
10
+ it('should contain validation requirements heading', () => {
11
+ const message = (0, _utils.generateValidationMessage)();
12
+ expect(message).toContain('Validation requirements:');
13
+ });
14
+ it('should mention minimum token requirement', () => {
15
+ const message = (0, _utils.generateValidationMessage)();
16
+ expect(message).toContain('There should be at least 3 tokens.');
17
+ });
18
+ it('should mention tokens should not be empty', () => {
19
+ const message = (0, _utils.generateValidationMessage)();
20
+ expect(message).toContain('The tokens should not be empty and should be unique.');
21
+ });
22
+ it('should mention correct ordering requirement', () => {
23
+ const message = (0, _utils.generateValidationMessage)();
24
+ expect(message).toContain('The correct ordering should not be identical to the initial ordering.');
25
+ });
26
+ });
27
+ describe('normalizeIndex', () => {
28
+ const ordering = {
29
+ response: [{
30
+ id: 'r1'
31
+ }, {
32
+ id: 'r2'
33
+ }, {
34
+ id: 'r3'
35
+ }],
36
+ choices: [{
37
+ id: 'c1'
38
+ }, {
39
+ id: 'c2'
40
+ }, {
41
+ id: 'c3'
42
+ }]
43
+ };
44
+ it('should return correct index for target type', () => {
45
+ const tile = {
46
+ id: 'r2',
47
+ type: 'target'
48
+ };
49
+ const index = (0, _utils.normalizeIndex)(tile, ordering);
50
+ expect(index).toBe(1);
51
+ });
52
+ it('should return correct index for choice type', () => {
53
+ const tile = {
54
+ id: 'c3',
55
+ type: 'choice'
56
+ };
57
+ const index = (0, _utils.normalizeIndex)(tile, ordering);
58
+ expect(index).toBe(2);
59
+ });
60
+ it('should return -1 for unknown type', () => {
61
+ const tile = {
62
+ id: 'x1',
63
+ type: 'unknown'
64
+ };
65
+ const index = (0, _utils.normalizeIndex)(tile, ordering);
66
+ expect(index).toBe(-1);
67
+ });
68
+ it('should return -1 when tile not found in response', () => {
69
+ const tile = {
70
+ id: 'r99',
71
+ type: 'target'
72
+ };
73
+ const index = (0, _utils.normalizeIndex)(tile, ordering);
74
+ expect(index).toBe(-1);
75
+ });
76
+ it('should return -1 when tile not found in choices', () => {
77
+ const tile = {
78
+ id: 'c99',
79
+ type: 'choice'
80
+ };
81
+ const index = (0, _utils.normalizeIndex)(tile, ordering);
82
+ expect(index).toBe(-1);
83
+ });
84
+ it('should return correct index for first element', () => {
85
+ const tile = {
86
+ id: 'r1',
87
+ type: 'target'
88
+ };
89
+ const index = (0, _utils.normalizeIndex)(tile, ordering);
90
+ expect(index).toBe(0);
91
+ });
92
+ });
93
+ describe('updateResponseOrChoices', () => {
94
+ describe('moving within response (target to target)', () => {
95
+ it('should move item within response array', () => {
96
+ const response = [{
97
+ id: 'r1'
98
+ }, {
99
+ id: 'r2'
100
+ }, {
101
+ id: 'r3'
102
+ }];
103
+ const choices = [{
104
+ id: 'c1'
105
+ }, {
106
+ id: 'c2'
107
+ }];
108
+ const from = {
109
+ type: 'target',
110
+ index: 0,
111
+ id: 'r1'
112
+ };
113
+ const to = {
114
+ type: 'target',
115
+ index: 2,
116
+ id: 'r3'
117
+ };
118
+ const result = (0, _utils.updateResponseOrChoices)(response, choices, from, to);
119
+ expect(result.response).toEqual([{
120
+ id: 'r2'
121
+ }, {
122
+ id: 'r3'
123
+ }, {
124
+ id: 'r1'
125
+ }]);
126
+ expect(result.choices).toEqual(choices);
127
+ });
128
+ it('should move item to beginning of response', () => {
129
+ const response = [{
130
+ id: 'r1'
131
+ }, {
132
+ id: 'r2'
133
+ }, {
134
+ id: 'r3'
135
+ }];
136
+ const choices = [{
137
+ id: 'c1'
138
+ }];
139
+ const from = {
140
+ type: 'target',
141
+ index: 2,
142
+ id: 'r3'
143
+ };
144
+ const to = {
145
+ type: 'target',
146
+ index: 0,
147
+ id: 'r1'
148
+ };
149
+ const result = (0, _utils.updateResponseOrChoices)(response, choices, from, to);
150
+ expect(result.response).toEqual([{
151
+ id: 'r3'
152
+ }, {
153
+ id: 'r1'
154
+ }, {
155
+ id: 'r2'
156
+ }]);
157
+ });
158
+ it('should move item to end of response', () => {
159
+ const response = [{
160
+ id: 'r1'
161
+ }, {
162
+ id: 'r2'
163
+ }, {
164
+ id: 'r3'
165
+ }];
166
+ const choices = [{
167
+ id: 'c1'
168
+ }];
169
+ const from = {
170
+ type: 'target',
171
+ index: 0,
172
+ id: 'r1'
173
+ };
174
+ const to = {
175
+ type: 'target',
176
+ index: 2,
177
+ id: 'r3'
178
+ };
179
+ const result = (0, _utils.updateResponseOrChoices)(response, choices, from, to);
180
+ expect(result.response[result.response.length - 1]).toEqual({
181
+ id: 'r1'
182
+ });
183
+ });
184
+ });
185
+ describe('moving within choices (choice to choice)', () => {
186
+ it('should move item within choices array', () => {
187
+ const response = [{
188
+ id: 'r1'
189
+ }];
190
+ const choices = [{
191
+ id: 'c1'
192
+ }, {
193
+ id: 'c2'
194
+ }, {
195
+ id: 'c3'
196
+ }];
197
+ const from = {
198
+ type: 'choice',
199
+ index: 0,
200
+ id: 'c1'
201
+ };
202
+ const to = {
203
+ type: 'choice',
204
+ index: 2,
205
+ id: 'c3'
206
+ };
207
+ const result = (0, _utils.updateResponseOrChoices)(response, choices, from, to);
208
+ expect(result.choices).toEqual([{
209
+ id: 'c2'
210
+ }, {
211
+ id: 'c3'
212
+ }, {
213
+ id: 'c1'
214
+ }]);
215
+ expect(result.response).toEqual(response);
216
+ });
217
+ it('should handle moving to beginning of choices', () => {
218
+ const response = [{
219
+ id: 'r1'
220
+ }];
221
+ const choices = [{
222
+ id: 'c1'
223
+ }, {
224
+ id: 'c2'
225
+ }, {
226
+ id: 'c3'
227
+ }];
228
+ const from = {
229
+ type: 'choice',
230
+ index: 2,
231
+ id: 'c3'
232
+ };
233
+ const to = {
234
+ type: 'choice',
235
+ index: 0,
236
+ id: 'c1'
237
+ };
238
+ const result = (0, _utils.updateResponseOrChoices)(response, choices, from, to);
239
+ expect(result.choices[0]).toEqual({
240
+ id: 'c3'
241
+ });
242
+ });
243
+ });
244
+ describe('mixed type movements', () => {
245
+ it('should return unchanged arrays when moving from choice to target', () => {
246
+ const response = [{
247
+ id: 'r1'
248
+ }];
249
+ const choices = [{
250
+ id: 'c1'
251
+ }];
252
+ const from = {
253
+ type: 'choice',
254
+ index: 0,
255
+ id: 'c1'
256
+ };
257
+ const to = {
258
+ type: 'target',
259
+ index: 0,
260
+ id: 'r1'
261
+ };
262
+ const result = (0, _utils.updateResponseOrChoices)(response, choices, from, to);
263
+ expect(result.response).toEqual(response);
264
+ expect(result.choices).toEqual(choices);
265
+ });
266
+ it('should return unchanged arrays when moving from target to choice', () => {
267
+ const response = [{
268
+ id: 'r1'
269
+ }];
270
+ const choices = [{
271
+ id: 'c1'
272
+ }];
273
+ const from = {
274
+ type: 'target',
275
+ index: 0,
276
+ id: 'r1'
277
+ };
278
+ const to = {
279
+ type: 'choice',
280
+ index: 0,
281
+ id: 'c1'
282
+ };
283
+ const result = (0, _utils.updateResponseOrChoices)(response, choices, from, to);
284
+ expect(result.response).toEqual(response);
285
+ expect(result.choices).toEqual(choices);
286
+ });
287
+ });
288
+ describe('edge cases', () => {
289
+ it('should handle single item arrays', () => {
290
+ const response = [{
291
+ id: 'r1'
292
+ }];
293
+ const choices = [{
294
+ id: 'c1'
295
+ }];
296
+ const from = {
297
+ type: 'target',
298
+ index: 0,
299
+ id: 'r1'
300
+ };
301
+ const to = {
302
+ type: 'target',
303
+ index: 0,
304
+ id: 'r1'
305
+ };
306
+ const result = (0, _utils.updateResponseOrChoices)(response, choices, from, to);
307
+ expect(result.response).toHaveLength(1);
308
+ });
309
+ });
310
+ });
311
+ describe('buildTiles', () => {
312
+ it('should create tiles from choices and response', () => {
313
+ const choices = [{
314
+ id: 'c1',
315
+ label: 'Choice 1'
316
+ }, {
317
+ id: 'c2',
318
+ label: 'Choice 2'
319
+ }];
320
+ const response = [{
321
+ id: 'c1'
322
+ }, {
323
+ id: 'c2'
324
+ }];
325
+ const tiles = (0, _utils.buildTiles)(choices, response);
326
+ expect(tiles).toHaveLength(4); // 2 choices + 2 targets
327
+ });
328
+ it('should mark choice tiles as editable and draggable', () => {
329
+ const choices = [{
330
+ id: 'c1',
331
+ label: 'Choice 1'
332
+ }];
333
+ const response = [{
334
+ id: 'c1'
335
+ }];
336
+ const tiles = (0, _utils.buildTiles)(choices, response);
337
+ const choiceTile = tiles.find(t => t.type === 'choice');
338
+ expect(choiceTile).toMatchObject({
339
+ type: 'choice',
340
+ editable: true,
341
+ draggable: true,
342
+ droppable: false
343
+ });
344
+ });
345
+ it('should mark target tiles as draggable but not editable', () => {
346
+ const choices = [{
347
+ id: 'c1',
348
+ label: 'Choice 1'
349
+ }];
350
+ const response = [{
351
+ id: 'c1'
352
+ }];
353
+ const tiles = (0, _utils.buildTiles)(choices, response);
354
+ const targetTile = tiles.find(t => t.type === 'target');
355
+ expect(targetTile).toMatchObject({
356
+ type: 'target',
357
+ editable: false,
358
+ draggable: true
359
+ });
360
+ });
361
+ it('should match target tiles with corresponding choices by id', () => {
362
+ const choices = [{
363
+ id: 'c1',
364
+ label: 'Choice 1'
365
+ }, {
366
+ id: 'c2',
367
+ label: 'Choice 2'
368
+ }];
369
+ const response = [{
370
+ id: 'c2'
371
+ }, {
372
+ id: 'c1'
373
+ }];
374
+ const tiles = (0, _utils.buildTiles)(choices, response);
375
+ const targetTiles = tiles.filter(t => t.type === 'target');
376
+ expect(targetTiles[0]).toMatchObject({
377
+ id: 'c2',
378
+ label: 'Choice 2'
379
+ });
380
+ expect(targetTiles[1]).toMatchObject({
381
+ id: 'c1',
382
+ label: 'Choice 1'
383
+ });
384
+ });
385
+ it('should assign correct index to target tiles', () => {
386
+ const choices = [{
387
+ id: 'c1',
388
+ label: 'Choice 1'
389
+ }];
390
+ const response = [{
391
+ id: 'c1'
392
+ }];
393
+ const tiles = (0, _utils.buildTiles)(choices, response);
394
+ const targetTile = tiles.find(t => t.type === 'target');
395
+ expect(targetTile.index).toBe(0);
396
+ });
397
+ it('should handle response with null or undefined ids', () => {
398
+ const choices = [{
399
+ id: 'c1',
400
+ label: 'Choice 1'
401
+ }, {
402
+ id: 'c2',
403
+ label: 'Choice 2'
404
+ }];
405
+ const response = [{
406
+ id: null
407
+ }, {
408
+ id: undefined
409
+ }, {
410
+ id: 'c1'
411
+ }];
412
+ const tiles = (0, _utils.buildTiles)(choices, response);
413
+ const targetTiles = tiles.filter(t => t.type === 'target');
414
+ expect(targetTiles).toHaveLength(3);
415
+ expect(targetTiles[2].id).toBe('c1');
416
+ });
417
+ it('should preserve choice properties in choice tiles', () => {
418
+ const choices = [{
419
+ id: 'c1',
420
+ label: 'Choice 1',
421
+ customProp: 'value'
422
+ }];
423
+ const response = [];
424
+ const tiles = (0, _utils.buildTiles)(choices, response);
425
+ const choiceTile = tiles.find(t => t.type === 'choice');
426
+ expect(choiceTile.customProp).toBe('value');
427
+ expect(choiceTile.label).toBe('Choice 1');
428
+ });
429
+ it('should preserve choice properties in target tiles', () => {
430
+ const choices = [{
431
+ id: 'c1',
432
+ label: 'Choice 1',
433
+ customProp: 'value'
434
+ }];
435
+ const response = [{
436
+ id: 'c1'
437
+ }];
438
+ const tiles = (0, _utils.buildTiles)(choices, response);
439
+ const targetTile = tiles.find(t => t.type === 'target');
440
+ expect(targetTile.customProp).toBe('value');
441
+ expect(targetTile.label).toBe('Choice 1');
442
+ });
443
+ it('should handle empty choices array', () => {
444
+ const choices = [];
445
+ const response = [];
446
+ const tiles = (0, _utils.buildTiles)(choices, response);
447
+ expect(tiles).toEqual([]);
448
+ });
449
+ it('should handle empty response array', () => {
450
+ const choices = [{
451
+ id: 'c1',
452
+ label: 'Choice 1'
453
+ }];
454
+ const response = [];
455
+ const tiles = (0, _utils.buildTiles)(choices, response);
456
+ expect(tiles).toHaveLength(1);
457
+ expect(tiles[0].type).toBe('choice');
458
+ });
459
+ it('should maintain order of choices in choice tiles', () => {
460
+ const choices = [{
461
+ id: 'c1',
462
+ label: 'First'
463
+ }, {
464
+ id: 'c2',
465
+ label: 'Second'
466
+ }, {
467
+ id: 'c3',
468
+ label: 'Third'
469
+ }];
470
+ const response = [];
471
+ const tiles = (0, _utils.buildTiles)(choices, response);
472
+ const choiceTiles = tiles.filter(t => t.type === 'choice');
473
+ expect(choiceTiles.map(t => t.label)).toEqual(['First', 'Second', 'Third']);
474
+ });
475
+ it('should place choice tiles before target tiles', () => {
476
+ const choices = [{
477
+ id: 'c1',
478
+ label: 'Choice 1'
479
+ }, {
480
+ id: 'c2',
481
+ label: 'Choice 2'
482
+ }];
483
+ const response = [{
484
+ id: 'c1'
485
+ }];
486
+ const tiles = (0, _utils.buildTiles)(choices, response);
487
+ expect(tiles[0].type).toBe('choice');
488
+ expect(tiles[1].type).toBe('choice');
489
+ expect(tiles[2].type).toBe('target');
490
+ });
491
+ });
492
+ });
493
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdXRpbHMiLCJyZXF1aXJlIiwiZGVzY3JpYmUiLCJpdCIsIm1lc3NhZ2UiLCJnZW5lcmF0ZVZhbGlkYXRpb25NZXNzYWdlIiwiZXhwZWN0IiwidG9CZSIsInRvQ29udGFpbiIsIm9yZGVyaW5nIiwicmVzcG9uc2UiLCJpZCIsImNob2ljZXMiLCJ0aWxlIiwidHlwZSIsImluZGV4Iiwibm9ybWFsaXplSW5kZXgiLCJmcm9tIiwidG8iLCJyZXN1bHQiLCJ1cGRhdGVSZXNwb25zZU9yQ2hvaWNlcyIsInRvRXF1YWwiLCJsZW5ndGgiLCJ0b0hhdmVMZW5ndGgiLCJsYWJlbCIsInRpbGVzIiwiYnVpbGRUaWxlcyIsImNob2ljZVRpbGUiLCJmaW5kIiwidCIsInRvTWF0Y2hPYmplY3QiLCJlZGl0YWJsZSIsImRyYWdnYWJsZSIsImRyb3BwYWJsZSIsInRhcmdldFRpbGUiLCJ0YXJnZXRUaWxlcyIsImZpbHRlciIsInVuZGVmaW5lZCIsImN1c3RvbVByb3AiLCJjaG9pY2VUaWxlcyIsIm1hcCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vdXRpbHMudGVzdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBnZW5lcmF0ZVZhbGlkYXRpb25NZXNzYWdlLFxuICBub3JtYWxpemVJbmRleCxcbiAgdXBkYXRlUmVzcG9uc2VPckNob2ljZXMsXG4gIGJ1aWxkVGlsZXMsXG59IGZyb20gJy4uL3V0aWxzJztcblxuZGVzY3JpYmUoJ3V0aWxzJywgKCkgPT4ge1xuICBkZXNjcmliZSgnZ2VuZXJhdGVWYWxpZGF0aW9uTWVzc2FnZScsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIHZhbGlkYXRpb24gbWVzc2FnZSBzdHJpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gZ2VuZXJhdGVWYWxpZGF0aW9uTWVzc2FnZSgpO1xuICAgICAgZXhwZWN0KHR5cGVvZiBtZXNzYWdlKS50b0JlKCdzdHJpbmcnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgY29udGFpbiB2YWxpZGF0aW9uIHJlcXVpcmVtZW50cyBoZWFkaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGdlbmVyYXRlVmFsaWRhdGlvbk1lc3NhZ2UoKTtcbiAgICAgIGV4cGVjdChtZXNzYWdlKS50b0NvbnRhaW4oJ1ZhbGlkYXRpb24gcmVxdWlyZW1lbnRzOicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBtZW50aW9uIG1pbmltdW0gdG9rZW4gcmVxdWlyZW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtZXNzYWdlID0gZ2VuZXJhdGVWYWxpZGF0aW9uTWVzc2FnZSgpO1xuICAgICAgZXhwZWN0KG1lc3NhZ2UpLnRvQ29udGFpbignVGhlcmUgc2hvdWxkIGJlIGF0IGxlYXN0IDMgdG9rZW5zLicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBtZW50aW9uIHRva2VucyBzaG91bGQgbm90IGJlIGVtcHR5JywgKCkgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGdlbmVyYXRlVmFsaWRhdGlvbk1lc3NhZ2UoKTtcbiAgICAgIGV4cGVjdChtZXNzYWdlKS50b0NvbnRhaW4oJ1RoZSB0b2tlbnMgc2hvdWxkIG5vdCBiZSBlbXB0eSBhbmQgc2hvdWxkIGJlIHVuaXF1ZS4nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbWVudGlvbiBjb3JyZWN0IG9yZGVyaW5nIHJlcXVpcmVtZW50JywgKCkgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IGdlbmVyYXRlVmFsaWRhdGlvbk1lc3NhZ2UoKTtcbiAgICAgIGV4cGVjdChtZXNzYWdlKS50b0NvbnRhaW4oJ1RoZSBjb3JyZWN0IG9yZGVyaW5nIHNob3VsZCBub3QgYmUgaWRlbnRpY2FsIHRvIHRoZSBpbml0aWFsIG9yZGVyaW5nLicpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnbm9ybWFsaXplSW5kZXgnLCAoKSA9PiB7XG4gICAgY29uc3Qgb3JkZXJpbmcgPSB7XG4gICAgICByZXNwb25zZTogW3sgaWQ6ICdyMScgfSwgeyBpZDogJ3IyJyB9LCB7IGlkOiAncjMnIH1dLFxuICAgICAgY2hvaWNlczogW3sgaWQ6ICdjMScgfSwgeyBpZDogJ2MyJyB9LCB7IGlkOiAnYzMnIH1dLFxuICAgIH07XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBjb3JyZWN0IGluZGV4IGZvciB0YXJnZXQgdHlwZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHRpbGUgPSB7IGlkOiAncjInLCB0eXBlOiAndGFyZ2V0JyB9O1xuICAgICAgY29uc3QgaW5kZXggPSBub3JtYWxpemVJbmRleCh0aWxlLCBvcmRlcmluZyk7XG4gICAgICBleHBlY3QoaW5kZXgpLnRvQmUoMSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBjb3JyZWN0IGluZGV4IGZvciBjaG9pY2UgdHlwZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHRpbGUgPSB7IGlkOiAnYzMnLCB0eXBlOiAnY2hvaWNlJyB9O1xuICAgICAgY29uc3QgaW5kZXggPSBub3JtYWxpemVJbmRleCh0aWxlLCBvcmRlcmluZyk7XG4gICAgICBleHBlY3QoaW5kZXgpLnRvQmUoMik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiAtMSBmb3IgdW5rbm93biB0eXBlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdGlsZSA9IHsgaWQ6ICd4MScsIHR5cGU6ICd1bmtub3duJyB9O1xuICAgICAgY29uc3QgaW5kZXggPSBub3JtYWxpemVJbmRleCh0aWxlLCBvcmRlcmluZyk7XG4gICAgICBleHBlY3QoaW5kZXgpLnRvQmUoLTEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXR1cm4gLTEgd2hlbiB0aWxlIG5vdCBmb3VuZCBpbiByZXNwb25zZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHRpbGUgPSB7IGlkOiAncjk5JywgdHlwZTogJ3RhcmdldCcgfTtcbiAgICAgIGNvbnN0IGluZGV4ID0gbm9ybWFsaXplSW5kZXgodGlsZSwgb3JkZXJpbmcpO1xuICAgICAgZXhwZWN0KGluZGV4KS50b0JlKC0xKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIC0xIHdoZW4gdGlsZSBub3QgZm91bmQgaW4gY2hvaWNlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IHRpbGUgPSB7IGlkOiAnYzk5JywgdHlwZTogJ2Nob2ljZScgfTtcbiAgICAgIGNvbnN0IGluZGV4ID0gbm9ybWFsaXplSW5kZXgodGlsZSwgb3JkZXJpbmcpO1xuICAgICAgZXhwZWN0KGluZGV4KS50b0JlKC0xKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGNvcnJlY3QgaW5kZXggZm9yIGZpcnN0IGVsZW1lbnQnLCAoKSA9PiB7XG4gICAgICBjb25zdCB0aWxlID0geyBpZDogJ3IxJywgdHlwZTogJ3RhcmdldCcgfTtcbiAgICAgIGNvbnN0IGluZGV4ID0gbm9ybWFsaXplSW5kZXgodGlsZSwgb3JkZXJpbmcpO1xuICAgICAgZXhwZWN0KGluZGV4KS50b0JlKDApO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgndXBkYXRlUmVzcG9uc2VPckNob2ljZXMnLCAoKSA9PiB7XG4gICAgZGVzY3JpYmUoJ21vdmluZyB3aXRoaW4gcmVzcG9uc2UgKHRhcmdldCB0byB0YXJnZXQpJywgKCkgPT4ge1xuICAgICAgaXQoJ3Nob3VsZCBtb3ZlIGl0ZW0gd2l0aGluIHJlc3BvbnNlIGFycmF5JywgKCkgPT4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IFt7IGlkOiAncjEnIH0sIHsgaWQ6ICdyMicgfSwgeyBpZDogJ3IzJyB9XTtcbiAgICAgICAgY29uc3QgY2hvaWNlcyA9IFt7IGlkOiAnYzEnIH0sIHsgaWQ6ICdjMicgfV07XG4gICAgICAgIGNvbnN0IGZyb20gPSB7IHR5cGU6ICd0YXJnZXQnLCBpbmRleDogMCwgaWQ6ICdyMScgfTtcbiAgICAgICAgY29uc3QgdG8gPSB7IHR5cGU6ICd0YXJnZXQnLCBpbmRleDogMiwgaWQ6ICdyMycgfTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSB1cGRhdGVSZXNwb25zZU9yQ2hvaWNlcyhyZXNwb25zZSwgY2hvaWNlcywgZnJvbSwgdG8pO1xuXG4gICAgICAgIGV4cGVjdChyZXN1bHQucmVzcG9uc2UpLnRvRXF1YWwoW3sgaWQ6ICdyMicgfSwgeyBpZDogJ3IzJyB9LCB7IGlkOiAncjEnIH1dKTtcbiAgICAgICAgZXhwZWN0KHJlc3VsdC5jaG9pY2VzKS50b0VxdWFsKGNob2ljZXMpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgbW92ZSBpdGVtIHRvIGJlZ2lubmluZyBvZiByZXNwb25zZScsICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBbeyBpZDogJ3IxJyB9LCB7IGlkOiAncjInIH0sIHsgaWQ6ICdyMycgfV07XG4gICAgICAgIGNvbnN0IGNob2ljZXMgPSBbeyBpZDogJ2MxJyB9XTtcbiAgICAgICAgY29uc3QgZnJvbSA9IHsgdHlwZTogJ3RhcmdldCcsIGluZGV4OiAyLCBpZDogJ3IzJyB9O1xuICAgICAgICBjb25zdCB0byA9IHsgdHlwZTogJ3RhcmdldCcsIGluZGV4OiAwLCBpZDogJ3IxJyB9O1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHVwZGF0ZVJlc3BvbnNlT3JDaG9pY2VzKHJlc3BvbnNlLCBjaG9pY2VzLCBmcm9tLCB0byk7XG5cbiAgICAgICAgZXhwZWN0KHJlc3VsdC5yZXNwb25zZSkudG9FcXVhbChbeyBpZDogJ3IzJyB9LCB7IGlkOiAncjEnIH0sIHsgaWQ6ICdyMicgfV0pO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgbW92ZSBpdGVtIHRvIGVuZCBvZiByZXNwb25zZScsICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBbeyBpZDogJ3IxJyB9LCB7IGlkOiAncjInIH0sIHsgaWQ6ICdyMycgfV07XG4gICAgICAgIGNvbnN0IGNob2ljZXMgPSBbeyBpZDogJ2MxJyB9XTtcbiAgICAgICAgY29uc3QgZnJvbSA9IHsgdHlwZTogJ3RhcmdldCcsIGluZGV4OiAwLCBpZDogJ3IxJyB9O1xuICAgICAgICBjb25zdCB0byA9IHsgdHlwZTogJ3RhcmdldCcsIGluZGV4OiAyLCBpZDogJ3IzJyB9O1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHVwZGF0ZVJlc3BvbnNlT3JDaG9pY2VzKHJlc3BvbnNlLCBjaG9pY2VzLCBmcm9tLCB0byk7XG5cbiAgICAgICAgZXhwZWN0KHJlc3VsdC5yZXNwb25zZVtyZXN1bHQucmVzcG9uc2UubGVuZ3RoIC0gMV0pLnRvRXF1YWwoeyBpZDogJ3IxJyB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ21vdmluZyB3aXRoaW4gY2hvaWNlcyAoY2hvaWNlIHRvIGNob2ljZSknLCAoKSA9PiB7XG4gICAgICBpdCgnc2hvdWxkIG1vdmUgaXRlbSB3aXRoaW4gY2hvaWNlcyBhcnJheScsICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBbeyBpZDogJ3IxJyB9XTtcbiAgICAgICAgY29uc3QgY2hvaWNlcyA9IFt7IGlkOiAnYzEnIH0sIHsgaWQ6ICdjMicgfSwgeyBpZDogJ2MzJyB9XTtcbiAgICAgICAgY29uc3QgZnJvbSA9IHsgdHlwZTogJ2Nob2ljZScsIGluZGV4OiAwLCBpZDogJ2MxJyB9O1xuICAgICAgICBjb25zdCB0byA9IHsgdHlwZTogJ2Nob2ljZScsIGluZGV4OiAyLCBpZDogJ2MzJyB9O1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHVwZGF0ZVJlc3BvbnNlT3JDaG9pY2VzKHJlc3BvbnNlLCBjaG9pY2VzLCBmcm9tLCB0byk7XG5cbiAgICAgICAgZXhwZWN0KHJlc3VsdC5jaG9pY2VzKS50b0VxdWFsKFt7IGlkOiAnYzInIH0sIHsgaWQ6ICdjMycgfSwgeyBpZDogJ2MxJyB9XSk7XG4gICAgICAgIGV4cGVjdChyZXN1bHQucmVzcG9uc2UpLnRvRXF1YWwocmVzcG9uc2UpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgaGFuZGxlIG1vdmluZyB0byBiZWdpbm5pbmcgb2YgY2hvaWNlcycsICgpID0+IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBbeyBpZDogJ3IxJyB9XTtcbiAgICAgICAgY29uc3QgY2hvaWNlcyA9IFt7IGlkOiAnYzEnIH0sIHsgaWQ6ICdjMicgfSwgeyBpZDogJ2MzJyB9XTtcbiAgICAgICAgY29uc3QgZnJvbSA9IHsgdHlwZTogJ2Nob2ljZScsIGluZGV4OiAyLCBpZDogJ2MzJyB9O1xuICAgICAgICBjb25zdCB0byA9IHsgdHlwZTogJ2Nob2ljZScsIGluZGV4OiAwLCBpZDogJ2MxJyB9O1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHVwZGF0ZVJlc3BvbnNlT3JDaG9pY2VzKHJlc3BvbnNlLCBjaG9pY2VzLCBmcm9tLCB0byk7XG5cbiAgICAgICAgZXhwZWN0KHJlc3VsdC5jaG9pY2VzWzBdKS50b0VxdWFsKHsgaWQ6ICdjMycgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdtaXhlZCB0eXBlIG1vdmVtZW50cycsICgpID0+IHtcbiAgICAgIGl0KCdzaG91bGQgcmV0dXJuIHVuY2hhbmdlZCBhcnJheXMgd2hlbiBtb3ZpbmcgZnJvbSBjaG9pY2UgdG8gdGFyZ2V0JywgKCkgPT4ge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IFt7IGlkOiAncjEnIH1dO1xuICAgICAgICBjb25zdCBjaG9pY2VzID0gW3sgaWQ6ICdjMScgfV07XG4gICAgICAgIGNvbnN0IGZyb20gPSB7IHR5cGU6ICdjaG9pY2UnLCBpbmRleDogMCwgaWQ6ICdjMScgfTtcbiAgICAgICAgY29uc3QgdG8gPSB7IHR5cGU6ICd0YXJnZXQnLCBpbmRleDogMCwgaWQ6ICdyMScgfTtcblxuICAgICAgICBjb25zdCByZXN1bHQgPSB1cGRhdGVSZXNwb25zZU9yQ2hvaWNlcyhyZXNwb25zZSwgY2hvaWNlcywgZnJvbSwgdG8pO1xuXG4gICAgICAgIGV4cGVjdChyZXN1bHQucmVzcG9uc2UpLnRvRXF1YWwocmVzcG9uc2UpO1xuICAgICAgICBleHBlY3QocmVzdWx0LmNob2ljZXMpLnRvRXF1YWwoY2hvaWNlcyk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gdW5jaGFuZ2VkIGFycmF5cyB3aGVuIG1vdmluZyBmcm9tIHRhcmdldCB0byBjaG9pY2UnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gW3sgaWQ6ICdyMScgfV07XG4gICAgICAgIGNvbnN0IGNob2ljZXMgPSBbeyBpZDogJ2MxJyB9XTtcbiAgICAgICAgY29uc3QgZnJvbSA9IHsgdHlwZTogJ3RhcmdldCcsIGluZGV4OiAwLCBpZDogJ3IxJyB9O1xuICAgICAgICBjb25zdCB0byA9IHsgdHlwZTogJ2Nob2ljZScsIGluZGV4OiAwLCBpZDogJ2MxJyB9O1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHVwZGF0ZVJlc3BvbnNlT3JDaG9pY2VzKHJlc3BvbnNlLCBjaG9pY2VzLCBmcm9tLCB0byk7XG5cbiAgICAgICAgZXhwZWN0KHJlc3VsdC5yZXNwb25zZSkudG9FcXVhbChyZXNwb25zZSk7XG4gICAgICAgIGV4cGVjdChyZXN1bHQuY2hvaWNlcykudG9FcXVhbChjaG9pY2VzKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2VkZ2UgY2FzZXMnLCAoKSA9PiB7XG4gICAgICBpdCgnc2hvdWxkIGhhbmRsZSBzaW5nbGUgaXRlbSBhcnJheXMnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gW3sgaWQ6ICdyMScgfV07XG4gICAgICAgIGNvbnN0IGNob2ljZXMgPSBbeyBpZDogJ2MxJyB9XTtcbiAgICAgICAgY29uc3QgZnJvbSA9IHsgdHlwZTogJ3RhcmdldCcsIGluZGV4OiAwLCBpZDogJ3IxJyB9O1xuICAgICAgICBjb25zdCB0byA9IHsgdHlwZTogJ3RhcmdldCcsIGluZGV4OiAwLCBpZDogJ3IxJyB9O1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHVwZGF0ZVJlc3BvbnNlT3JDaG9pY2VzKHJlc3BvbnNlLCBjaG9pY2VzLCBmcm9tLCB0byk7XG5cbiAgICAgICAgZXhwZWN0KHJlc3VsdC5yZXNwb25zZSkudG9IYXZlTGVuZ3RoKDEpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdidWlsZFRpbGVzJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgY3JlYXRlIHRpbGVzIGZyb20gY2hvaWNlcyBhbmQgcmVzcG9uc2UnLCAoKSA9PiB7XG4gICAgICBjb25zdCBjaG9pY2VzID0gW1xuICAgICAgICB7IGlkOiAnYzEnLCBsYWJlbDogJ0Nob2ljZSAxJyB9LFxuICAgICAgICB7IGlkOiAnYzInLCBsYWJlbDogJ0Nob2ljZSAyJyB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gW3sgaWQ6ICdjMScgfSwgeyBpZDogJ2MyJyB9XTtcblxuICAgICAgY29uc3QgdGlsZXMgPSBidWlsZFRpbGVzKGNob2ljZXMsIHJlc3BvbnNlKTtcblxuICAgICAgZXhwZWN0KHRpbGVzKS50b0hhdmVMZW5ndGgoNCk7IC8vIDIgY2hvaWNlcyArIDIgdGFyZ2V0c1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBtYXJrIGNob2ljZSB0aWxlcyBhcyBlZGl0YWJsZSBhbmQgZHJhZ2dhYmxlJywgKCkgPT4ge1xuICAgICAgY29uc3QgY2hvaWNlcyA9IFt7IGlkOiAnYzEnLCBsYWJlbDogJ0Nob2ljZSAxJyB9XTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gW3sgaWQ6ICdjMScgfV07XG5cbiAgICAgIGNvbnN0IHRpbGVzID0gYnVpbGRUaWxlcyhjaG9pY2VzLCByZXNwb25zZSk7XG4gICAgICBjb25zdCBjaG9pY2VUaWxlID0gdGlsZXMuZmluZCgodCkgPT4gdC50eXBlID09PSAnY2hvaWNlJyk7XG5cbiAgICAgIGV4cGVjdChjaG9pY2VUaWxlKS50b01hdGNoT2JqZWN0KHtcbiAgICAgICAgdHlwZTogJ2Nob2ljZScsXG4gICAgICAgIGVkaXRhYmxlOiB0cnVlLFxuICAgICAgICBkcmFnZ2FibGU6IHRydWUsXG4gICAgICAgIGRyb3BwYWJsZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbWFyayB0YXJnZXQgdGlsZXMgYXMgZHJhZ2dhYmxlIGJ1dCBub3QgZWRpdGFibGUnLCAoKSA9PiB7XG4gICAgICBjb25zdCBjaG9pY2VzID0gW3sgaWQ6ICdjMScsIGxhYmVsOiAnQ2hvaWNlIDEnIH1dO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBbeyBpZDogJ2MxJyB9XTtcblxuICAgICAgY29uc3QgdGlsZXMgPSBidWlsZFRpbGVzKGNob2ljZXMsIHJlc3BvbnNlKTtcbiAgICAgIGNvbnN0IHRhcmdldFRpbGUgPSB0aWxlcy5maW5kKCh0KSA9PiB0LnR5cGUgPT09ICd0YXJnZXQnKTtcblxuICAgICAgZXhwZWN0KHRhcmdldFRpbGUpLnRvTWF0Y2hPYmplY3Qoe1xuICAgICAgICB0eXBlOiAndGFyZ2V0JyxcbiAgICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgICBkcmFnZ2FibGU6IHRydWUsXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbWF0Y2ggdGFyZ2V0IHRpbGVzIHdpdGggY29ycmVzcG9uZGluZyBjaG9pY2VzIGJ5IGlkJywgKCkgPT4ge1xuICAgICAgY29uc3QgY2hvaWNlcyA9IFtcbiAgICAgICAgeyBpZDogJ2MxJywgbGFiZWw6ICdDaG9pY2UgMScgfSxcbiAgICAgICAgeyBpZDogJ2MyJywgbGFiZWw6ICdDaG9pY2UgMicgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCByZXNwb25zZSA9IFt7IGlkOiAnYzInIH0sIHsgaWQ6ICdjMScgfV07XG5cbiAgICAgIGNvbnN0IHRpbGVzID0gYnVpbGRUaWxlcyhjaG9pY2VzLCByZXNwb25zZSk7XG4gICAgICBjb25zdCB0YXJnZXRUaWxlcyA9IHRpbGVzLmZpbHRlcigodCkgPT4gdC50eXBlID09PSAndGFyZ2V0Jyk7XG5cbiAgICAgIGV4cGVjdCh0YXJnZXRUaWxlc1swXSkudG9NYXRjaE9iamVjdCh7XG4gICAgICAgIGlkOiAnYzInLFxuICAgICAgICBsYWJlbDogJ0Nob2ljZSAyJyxcbiAgICAgIH0pO1xuICAgICAgZXhwZWN0KHRhcmdldFRpbGVzWzFdKS50b01hdGNoT2JqZWN0KHtcbiAgICAgICAgaWQ6ICdjMScsXG4gICAgICAgIGxhYmVsOiAnQ2hvaWNlIDEnLFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFzc2lnbiBjb3JyZWN0IGluZGV4IHRvIHRhcmdldCB0aWxlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGNob2ljZXMgPSBbeyBpZDogJ2MxJywgbGFiZWw6ICdDaG9pY2UgMScgfV07XG4gICAgICBjb25zdCByZXNwb25zZSA9IFt7IGlkOiAnYzEnIH1dO1xuXG4gICAgICBjb25zdCB0aWxlcyA9IGJ1aWxkVGlsZXMoY2hvaWNlcywgcmVzcG9uc2UpO1xuICAgICAgY29uc3QgdGFyZ2V0VGlsZSA9IHRpbGVzLmZpbmQoKHQpID0+IHQudHlwZSA9PT0gJ3RhcmdldCcpO1xuXG4gICAgICBleHBlY3QodGFyZ2V0VGlsZS5pbmRleCkudG9CZSgwKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgaGFuZGxlIHJlc3BvbnNlIHdpdGggbnVsbCBvciB1bmRlZmluZWQgaWRzJywgKCkgPT4ge1xuICAgICAgY29uc3QgY2hvaWNlcyA9IFtcbiAgICAgICAgeyBpZDogJ2MxJywgbGFiZWw6ICdDaG9pY2UgMScgfSxcbiAgICAgICAgeyBpZDogJ2MyJywgbGFiZWw6ICdDaG9pY2UgMicgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCByZXNwb25zZSA9IFt7IGlkOiBudWxsIH0sIHsgaWQ6IHVuZGVmaW5lZCB9LCB7IGlkOiAnYzEnIH1dO1xuXG4gICAgICBjb25zdCB0aWxlcyA9IGJ1aWxkVGlsZXMoY2hvaWNlcywgcmVzcG9uc2UpO1xuICAgICAgY29uc3QgdGFyZ2V0VGlsZXMgPSB0aWxlcy5maWx0ZXIoKHQpID0+IHQudHlwZSA9PT0gJ3RhcmdldCcpO1xuXG4gICAgICBleHBlY3QodGFyZ2V0VGlsZXMpLnRvSGF2ZUxlbmd0aCgzKTtcbiAgICAgIGV4cGVjdCh0YXJnZXRUaWxlc1syXS5pZCkudG9CZSgnYzEnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcHJlc2VydmUgY2hvaWNlIHByb3BlcnRpZXMgaW4gY2hvaWNlIHRpbGVzJywgKCkgPT4ge1xuICAgICAgY29uc3QgY2hvaWNlcyA9IFtcbiAgICAgICAgeyBpZDogJ2MxJywgbGFiZWw6ICdDaG9pY2UgMScsIGN1c3RvbVByb3A6ICd2YWx1ZScgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCByZXNwb25zZSA9IFtdO1xuXG4gICAgICBjb25zdCB0aWxlcyA9IGJ1aWxkVGlsZXMoY2hvaWNlcywgcmVzcG9uc2UpO1xuICAgICAgY29uc3QgY2hvaWNlVGlsZSA9IHRpbGVzLmZpbmQoKHQpID0+IHQudHlwZSA9PT0gJ2Nob2ljZScpO1xuXG4gICAgICBleHBlY3QoY2hvaWNlVGlsZS5jdXN0b21Qcm9wKS50b0JlKCd2YWx1ZScpO1xuICAgICAgZXhwZWN0KGNob2ljZVRpbGUubGFiZWwpLnRvQmUoJ0Nob2ljZSAxJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHByZXNlcnZlIGNob2ljZSBwcm9wZXJ0aWVzIGluIHRhcmdldCB0aWxlcycsICgpID0+IHtcbiAgICAgIGNvbnN0IGNob2ljZXMgPSBbXG4gICAgICAgIHsgaWQ6ICdjMScsIGxhYmVsOiAnQ2hvaWNlIDEnLCBjdXN0b21Qcm9wOiAndmFsdWUnIH0sXG4gICAgICBdO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBbeyBpZDogJ2MxJyB9XTtcblxuICAgICAgY29uc3QgdGlsZXMgPSBidWlsZFRpbGVzKGNob2ljZXMsIHJlc3BvbnNlKTtcbiAgICAgIGNvbnN0IHRhcmdldFRpbGUgPSB0aWxlcy5maW5kKCh0KSA9PiB0LnR5cGUgPT09ICd0YXJnZXQnKTtcblxuICAgICAgZXhwZWN0KHRhcmdldFRpbGUuY3VzdG9tUHJvcCkudG9CZSgndmFsdWUnKTtcbiAgICAgIGV4cGVjdCh0YXJnZXRUaWxlLmxhYmVsKS50b0JlKCdDaG9pY2UgMScpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYW5kbGUgZW1wdHkgY2hvaWNlcyBhcnJheScsICgpID0+IHtcbiAgICAgIGNvbnN0IGNob2ljZXMgPSBbXTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gW107XG5cbiAgICAgIGNvbnN0IHRpbGVzID0gYnVpbGRUaWxlcyhjaG9pY2VzLCByZXNwb25zZSk7XG5cbiAgICAgIGV4cGVjdCh0aWxlcykudG9FcXVhbChbXSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhbmRsZSBlbXB0eSByZXNwb25zZSBhcnJheScsICgpID0+IHtcbiAgICAgIGNvbnN0IGNob2ljZXMgPSBbeyBpZDogJ2MxJywgbGFiZWw6ICdDaG9pY2UgMScgfV07XG4gICAgICBjb25zdCByZXNwb25zZSA9IFtdO1xuXG4gICAgICBjb25zdCB0aWxlcyA9IGJ1aWxkVGlsZXMoY2hvaWNlcywgcmVzcG9uc2UpO1xuXG4gICAgICBleHBlY3QodGlsZXMpLnRvSGF2ZUxlbmd0aCgxKTtcbiAgICAgIGV4cGVjdCh0aWxlc1swXS50eXBlKS50b0JlKCdjaG9pY2UnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbWFpbnRhaW4gb3JkZXIgb2YgY2hvaWNlcyBpbiBjaG9pY2UgdGlsZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBjaG9pY2VzID0gW1xuICAgICAgICB7IGlkOiAnYzEnLCBsYWJlbDogJ0ZpcnN0JyB9LFxuICAgICAgICB7IGlkOiAnYzInLCBsYWJlbDogJ1NlY29uZCcgfSxcbiAgICAgICAgeyBpZDogJ2MzJywgbGFiZWw6ICdUaGlyZCcgfSxcbiAgICAgIF07XG4gICAgICBjb25zdCByZXNwb25zZSA9IFtdO1xuXG4gICAgICBjb25zdCB0aWxlcyA9IGJ1aWxkVGlsZXMoY2hvaWNlcywgcmVzcG9uc2UpO1xuICAgICAgY29uc3QgY2hvaWNlVGlsZXMgPSB0aWxlcy5maWx0ZXIoKHQpID0+IHQudHlwZSA9PT0gJ2Nob2ljZScpO1xuXG4gICAgICBleHBlY3QoY2hvaWNlVGlsZXMubWFwKCh0KSA9PiB0LmxhYmVsKSkudG9FcXVhbChbJ0ZpcnN0JywgJ1NlY29uZCcsICdUaGlyZCddKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcGxhY2UgY2hvaWNlIHRpbGVzIGJlZm9yZSB0YXJnZXQgdGlsZXMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBjaG9pY2VzID0gW1xuICAgICAgICB7IGlkOiAnYzEnLCBsYWJlbDogJ0Nob2ljZSAxJyB9LFxuICAgICAgICB7IGlkOiAnYzInLCBsYWJlbDogJ0Nob2ljZSAyJyB9LFxuICAgICAgXTtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gW3sgaWQ6ICdjMScgfV07XG5cbiAgICAgIGNvbnN0IHRpbGVzID0gYnVpbGRUaWxlcyhjaG9pY2VzLCByZXNwb25zZSk7XG5cbiAgICAgIGV4cGVjdCh0aWxlc1swXS50eXBlKS50b0JlKCdjaG9pY2UnKTtcbiAgICAgIGV4cGVjdCh0aWxlc1sxXS50eXBlKS50b0JlKCdjaG9pY2UnKTtcbiAgICAgIGV4cGVjdCh0aWxlc1syXS50eXBlKS50b0JlKCd0YXJnZXQnKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFPQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNO0VBQ3RCQSxRQUFRLENBQUMsMkJBQTJCLEVBQUUsTUFBTTtJQUMxQ0MsRUFBRSxDQUFDLDJDQUEyQyxFQUFFLE1BQU07TUFDcEQsTUFBTUMsT0FBTyxHQUFHLElBQUFDLGdDQUF5QixFQUFDLENBQUM7TUFDM0NDLE1BQU0sQ0FBQyxPQUFPRixPQUFPLENBQUMsQ0FBQ0csSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QyxDQUFDLENBQUM7SUFFRkosRUFBRSxD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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pie-element/placement-ordering-configure",
3
- "version": "11.2.1",
3
+ "version": "11.4.0-beta.8",
4
4
  "private": true,
5
5
  "main": "lib/index.js",
6
6
  "module": "src/index.js",
@@ -11,10 +11,10 @@
11
11
  "@mui/icons-material": "^7.3.4",
12
12
  "@mui/material": "^7.3.4",
13
13
  "@pie-framework/pie-configure-events": "^1.3.0",
14
- "@pie-lib/config-ui": "13.0.17",
15
- "@pie-lib/drag": "4.1.2",
16
- "@pie-lib/editable-html-tip-tap": "2.1.15",
17
- "@pie-lib/render-ui": "7.0.1",
14
+ "@pie-lib/config-ui": "13.1.0-beta.6",
15
+ "@pie-lib/drag": "4.0.6",
16
+ "@pie-lib/editable-html-tip-tap": "2.2.0-beta.6",
17
+ "@pie-lib/render-ui": "6.1.3",
18
18
  "debug": "^4.1.1",
19
19
  "lodash-es": "^4.17.23",
20
20
  "nested-property": "^0.0.7",
@@ -3,24 +3,56 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [11.1.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/placement-ordering-controller@11.1.2...@pie-element/placement-ordering-controller@11.1.4) (2026-08-13)
6
+ # [11.4.0-beta.8](https://github.com/pie-framework/pie-elements/compare/@pie-element/placement-ordering-controller@11.4.0-beta.7...@pie-element/placement-ordering-controller@11.4.0-beta.8) (2026-08-26)
7
7
 
8
8
  **Note:** Version bump only for package @pie-element/placement-ordering-controller
9
9
 
10
- ## [11.1.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/placement-ordering-controller@11.1.2...@pie-element/placement-ordering-controller@11.1.3) (2026-08-11)
10
+ # [11.4.0-beta.7](https://github.com/pie-framework/pie-elements/compare/@pie-element/placement-ordering-controller@11.4.0-beta.6...@pie-element/placement-ordering-controller@11.4.0-beta.7) (2026-08-20)
11
11
 
12
12
  **Note:** Version bump only for package @pie-element/placement-ordering-controller
13
13
 
14
- ## [11.1.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/placement-ordering-controller@11.1.1...@pie-element/placement-ordering-controller@11.1.2) (2026-07-02)
14
+ # [11.4.0-beta.6](https://github.com/pie-framework/pie-elements/compare/@pie-element/placement-ordering-controller@11.4.0-beta.5...@pie-element/placement-ordering-controller@11.4.0-beta.6) (2026-08-14)
15
15
 
16
- ### Bug Fixes
16
+ **Note:** Version bump only for package @pie-element/placement-ordering-controller
17
17
 
18
- - bump shared modules and libs PIE-695, PIE-697, PIE-699, PIE-680, PIE-714, PIE-665, PIE-656 ([4b76ae7](https://github.com/pie-framework/pie-elements/commit/4b76ae75d1c5ea6d55f7c6fb53f299dfcbda2b1f))
18
+ # [11.4.0-beta.5](https://github.com/pie-framework/pie-elements/compare/@pie-element/placement-ordering-controller@11.4.0-beta.4...@pie-element/placement-ordering-controller@11.4.0-beta.5) (2026-08-11)
19
+
20
+ **Note:** Version bump only for package @pie-element/placement-ordering-controller
21
+
22
+ # [11.4.0-beta.4](https://github.com/pie-framework/pie-elements/compare/@pie-element/placement-ordering-controller@11.4.0-beta.3...@pie-element/placement-ordering-controller@11.4.0-beta.4) (2026-08-11)
23
+
24
+ **Note:** Version bump only for package @pie-element/placement-ordering-controller
25
+
26
+ # [11.4.0-beta.3](https://github.com/pie-framework/pie-elements/compare/@pie-element/placement-ordering-controller@11.4.0-beta.2...@pie-element/placement-ordering-controller@11.4.0-beta.3) (2026-08-11)
27
+
28
+ **Note:** Version bump only for package @pie-element/placement-ordering-controller
29
+
30
+ # [11.4.0-beta.2](https://github.com/pie-framework/pie-elements/compare/@pie-element/placement-ordering-controller@11.4.0-beta.1...@pie-element/placement-ordering-controller@11.4.0-beta.2) (2026-08-11)
31
+
32
+ **Note:** Version bump only for package @pie-element/placement-ordering-controller
19
33
 
20
- ## [11.1.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/placement-ordering-controller@11.1.0...@pie-element/placement-ordering-controller@11.1.1) (2026-05-21)
34
+ # [11.4.0-beta.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/placement-ordering-controller@11.4.0-beta.0...@pie-element/placement-ordering-controller@11.4.0-beta.1) (2026-08-07)
21
35
 
22
36
  **Note:** Version bump only for package @pie-element/placement-ordering-controller
23
37
 
38
+ # [11.4.0-beta.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/placement-ordering-controller@11.3.0-beta.0...@pie-element/placement-ordering-controller@11.4.0-beta.0) (2026-08-07)
39
+
40
+ **Note:** Version bump only for package @pie-element/placement-ordering-controller
41
+
42
+ # [11.3.0-beta.1](https://github.com/pie-framework/pie-elements/compare/@pie-element/placement-ordering-controller@11.3.0-beta.0...@pie-element/placement-ordering-controller@11.3.0-beta.1) (2026-08-07)
43
+
44
+ **Note:** Version bump only for package @pie-element/placement-ordering-controller
45
+
46
+ # [11.3.0-beta.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/placement-ordering-controller@11.2.0-beta.0...@pie-element/placement-ordering-controller@11.3.0-beta.0) (2026-08-07)
47
+
48
+ **Note:** Version bump only for package @pie-element/placement-ordering-controller
49
+
50
+ # [11.2.0-beta.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/placement-ordering-controller@11.1.0...@pie-element/placement-ordering-controller@11.2.0-beta.0) (2026-08-07)
51
+
52
+ ### Bug Fixes
53
+
54
+ - bump shared modules and libs PIE-695, PIE-697, PIE-699, PIE-680, PIE-714, PIE-665, PIE-656 ([4b76ae7](https://github.com/pie-framework/pie-elements/commit/4b76ae75d1c5ea6d55f7c6fb53f299dfcbda2b1f))
55
+
24
56
  # [11.1.0](https://github.com/pie-framework/pie-elements/compare/@pie-element/placement-ordering-controller@11.1.0-next.1...@pie-element/placement-ordering-controller@11.1.0) (2026-05-21)
25
57
 
26
58
  ### Bug Fixes