@pie-element/ebsr 12.3.4-next.0 → 13.0.0-beta.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/configure/lib/defaults.js +23 -36
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/index.js +114 -202
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/main.js +188 -271
- package/configure/lib/main.js.map +1 -1
- package/configure/node_modules/@pie-element/multiple-choice/CHANGELOG.json +1972 -0
- package/configure/node_modules/@pie-element/multiple-choice/CHANGELOG.md +4213 -0
- package/configure/node_modules/@pie-element/multiple-choice/PRINT.md +35 -0
- package/configure/node_modules/@pie-element/multiple-choice/README.md +56 -0
- package/configure/node_modules/@pie-element/multiple-choice/choice.png +0 -0
- package/configure/node_modules/@pie-element/multiple-choice/configure/CHANGELOG.json +1387 -0
- package/configure/node_modules/@pie-element/multiple-choice/configure/CHANGELOG.md +3351 -0
- package/configure/node_modules/@pie-element/multiple-choice/configure/lib/__tests__/root.test.js +248 -0
- package/configure/node_modules/@pie-element/multiple-choice/configure/lib/defaults.js +200 -0
- package/configure/node_modules/@pie-element/multiple-choice/configure/lib/defaults.js.map +1 -0
- package/configure/node_modules/@pie-element/multiple-choice/configure/lib/index.js +211 -0
- package/configure/node_modules/@pie-element/multiple-choice/configure/lib/index.js.map +1 -0
- package/configure/node_modules/@pie-element/multiple-choice/configure/lib/main.js +477 -0
- package/configure/node_modules/@pie-element/multiple-choice/configure/lib/main.js.map +1 -0
- package/configure/node_modules/@pie-element/multiple-choice/configure/lib/utils.js +18 -0
- package/configure/node_modules/@pie-element/multiple-choice/configure/lib/utils.js.map +1 -0
- package/configure/node_modules/@pie-element/multiple-choice/configure/package.json +22 -0
- package/configure/node_modules/@pie-element/multiple-choice/controller/CHANGELOG.json +527 -0
- package/configure/node_modules/@pie-element/multiple-choice/controller/CHANGELOG.md +2316 -0
- package/configure/node_modules/@pie-element/multiple-choice/controller/lib/__tests__/index.test.js +520 -0
- package/configure/node_modules/@pie-element/multiple-choice/controller/lib/__tests__/utils.test.js +8 -0
- package/configure/node_modules/@pie-element/multiple-choice/controller/lib/defaults.js +33 -0
- package/configure/node_modules/@pie-element/multiple-choice/controller/lib/defaults.js.map +1 -0
- package/configure/node_modules/@pie-element/multiple-choice/controller/lib/index.js +251 -0
- package/configure/node_modules/@pie-element/multiple-choice/controller/lib/index.js.map +1 -0
- package/configure/node_modules/@pie-element/multiple-choice/controller/lib/utils.js +16 -0
- package/configure/node_modules/@pie-element/multiple-choice/controller/lib/utils.js.map +1 -0
- package/configure/node_modules/@pie-element/multiple-choice/controller/package.json +15 -0
- package/configure/node_modules/@pie-element/multiple-choice/docs/config-schema.json +2993 -0
- package/configure/node_modules/@pie-element/multiple-choice/docs/config-schema.json.md +2217 -0
- package/configure/node_modules/@pie-element/multiple-choice/docs/demo/config.js +8 -0
- package/configure/node_modules/@pie-element/multiple-choice/docs/demo/generate.js +61 -0
- package/configure/node_modules/@pie-element/multiple-choice/docs/demo/index.html +1 -0
- package/configure/node_modules/@pie-element/multiple-choice/docs/demo/pie.manifest.json +11 -0
- package/configure/node_modules/@pie-element/multiple-choice/docs/demo/session.js +7 -0
- package/configure/node_modules/@pie-element/multiple-choice/docs/pie-schema.json +1332 -0
- package/configure/node_modules/@pie-element/multiple-choice/docs/pie-schema.json.md +1015 -0
- package/configure/node_modules/@pie-element/multiple-choice/lib/__tests__/choice-input-test.js +117 -0
- package/configure/node_modules/@pie-element/multiple-choice/lib/__tests__/index-test.js +151 -0
- package/configure/node_modules/@pie-element/multiple-choice/lib/__tests__/key-events-test.js +95 -0
- package/configure/node_modules/@pie-element/multiple-choice/lib/__tests__/multiple-choice-test.js +223 -0
- package/configure/node_modules/@pie-element/multiple-choice/lib/__tests__/session-updater-test.js +70 -0
- package/configure/node_modules/@pie-element/multiple-choice/lib/choice-input.js +370 -0
- package/configure/node_modules/@pie-element/multiple-choice/lib/choice-input.js.map +1 -0
- package/configure/node_modules/@pie-element/multiple-choice/lib/choice.js +197 -0
- package/configure/node_modules/@pie-element/multiple-choice/lib/choice.js.map +1 -0
- package/configure/node_modules/@pie-element/multiple-choice/lib/feedback-tick.js +130 -0
- package/configure/node_modules/@pie-element/multiple-choice/lib/feedback-tick.js.map +1 -0
- package/configure/node_modules/@pie-element/multiple-choice/lib/index.js +292 -0
- package/configure/node_modules/@pie-element/multiple-choice/lib/index.js.map +1 -0
- package/configure/node_modules/@pie-element/multiple-choice/lib/main.js +54 -0
- package/configure/node_modules/@pie-element/multiple-choice/lib/main.js.map +1 -0
- package/configure/node_modules/@pie-element/multiple-choice/lib/multiple-choice.js +386 -0
- package/configure/node_modules/@pie-element/multiple-choice/lib/multiple-choice.js.map +1 -0
- package/configure/node_modules/@pie-element/multiple-choice/lib/print.js +92 -0
- package/configure/node_modules/@pie-element/multiple-choice/lib/print.js.map +1 -0
- package/configure/node_modules/@pie-element/multiple-choice/lib/session-updater.js +37 -0
- package/configure/node_modules/@pie-element/multiple-choice/lib/session-updater.js.map +1 -0
- package/configure/node_modules/@pie-element/multiple-choice/package.json +39 -0
- package/configure/package.json +9 -6
- package/configure/src/__tests__/index.test.js +99 -108
- package/configure/src/index.js +13 -6
- package/configure/src/main.jsx +14 -18
- package/controller/lib/defaults.js +20 -32
- package/controller/lib/defaults.js.map +1 -1
- package/controller/lib/index.js +224 -349
- package/controller/lib/index.js.map +1 -1
- package/controller/lib/utils.js +4 -18
- package/controller/lib/utils.js.map +1 -1
- package/controller/package.json +3 -3
- package/lib/index.js +113 -181
- package/lib/index.js.map +1 -1
- package/lib/print.js +120 -204
- package/lib/print.js.map +1 -1
- package/package.json +5 -9
- package/src/__tests__/index.test.js +18 -5
- package/configure/src/__tests__/__snapshots__/index.test.js.snap +0 -83
- package/module/configure.js +0 -1
- package/module/controller.js +0 -6469
- package/module/demo.js +0 -77
- package/module/element.js +0 -1
- package/module/index.html +0 -21
- package/module/manifest.json +0 -14
- package/module/print-demo.js +0 -115
- package/module/print.html +0 -18
- package/module/print.js +0 -1
package/configure/node_modules/@pie-element/multiple-choice/lib/__tests__/multiple-choice-test.js
ADDED
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _react = _interopRequireDefault(require("react"));
|
|
5
|
+
var _enzyme = require("enzyme");
|
|
6
|
+
var _multipleChoice = require("../multiple-choice");
|
|
7
|
+
var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
|
|
8
|
+
describe('Choice', () => {
|
|
9
|
+
let wrapper,
|
|
10
|
+
onChoiceChanged = jest.fn();
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
wrapper = extras => {
|
|
13
|
+
const props = {
|
|
14
|
+
classes: {},
|
|
15
|
+
choice: {},
|
|
16
|
+
index: 0,
|
|
17
|
+
choicesLength: 1,
|
|
18
|
+
showCorrect: false,
|
|
19
|
+
isEvaluateMode: false,
|
|
20
|
+
choiceMode: 'radio',
|
|
21
|
+
disabled: true,
|
|
22
|
+
onChoiceChanged,
|
|
23
|
+
checked: true,
|
|
24
|
+
correctness: 'correct',
|
|
25
|
+
displayKey: '0',
|
|
26
|
+
choicesLayout: 'grid',
|
|
27
|
+
gridColumns: 2,
|
|
28
|
+
...extras
|
|
29
|
+
};
|
|
30
|
+
return (0, _enzyme.shallow)(/*#__PURE__*/_react.default.createElement(_multipleChoice.Choice, props));
|
|
31
|
+
};
|
|
32
|
+
});
|
|
33
|
+
describe('snapshot', () => {
|
|
34
|
+
it('renders', () => {
|
|
35
|
+
expect(wrapper()).toMatchSnapshot();
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe('logic', () => {
|
|
39
|
+
it('does not call onChoiceChanged if disabled is true', () => {
|
|
40
|
+
let w = wrapper();
|
|
41
|
+
w.instance().onChange();
|
|
42
|
+
expect(onChoiceChanged).not.toHaveBeenCalled();
|
|
43
|
+
});
|
|
44
|
+
it('calls onChoiceChanged if disabled is false', () => {
|
|
45
|
+
let w = wrapper({
|
|
46
|
+
disabled: false
|
|
47
|
+
});
|
|
48
|
+
w.instance().onChange();
|
|
49
|
+
expect(onChoiceChanged).toHaveBeenCalled();
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
describe('CorespringChoice', () => {
|
|
54
|
+
let wrapper, toggle;
|
|
55
|
+
beforeEach(() => {
|
|
56
|
+
toggle = () => {
|
|
57
|
+
return /*#__PURE__*/_react.default.createElement("div", null, "mocked-toggle");
|
|
58
|
+
};
|
|
59
|
+
});
|
|
60
|
+
let mkWrapper = (opts, clone = true) => {
|
|
61
|
+
opts = clone ? {
|
|
62
|
+
classes: {},
|
|
63
|
+
choices: [],
|
|
64
|
+
disabled: false,
|
|
65
|
+
keyMode: 'letters',
|
|
66
|
+
onChoiceChanged: jest.fn(),
|
|
67
|
+
mode: 'gather',
|
|
68
|
+
...opts
|
|
69
|
+
} : opts;
|
|
70
|
+
return (0, _enzyme.shallow)(/*#__PURE__*/_react.default.createElement(_multipleChoice.MultipleChoice, opts));
|
|
71
|
+
};
|
|
72
|
+
describe('snapshot', () => {
|
|
73
|
+
it('renders', () => {
|
|
74
|
+
wrapper = mkWrapper({
|
|
75
|
+
choices: [{
|
|
76
|
+
value: 'a',
|
|
77
|
+
label: 'label a',
|
|
78
|
+
correct: true,
|
|
79
|
+
feedback: 'great'
|
|
80
|
+
}, {
|
|
81
|
+
value: 'b',
|
|
82
|
+
label: 'label b'
|
|
83
|
+
}, {
|
|
84
|
+
value: 'c',
|
|
85
|
+
label: 'label c',
|
|
86
|
+
correct: true,
|
|
87
|
+
feedback: 'great'
|
|
88
|
+
}]
|
|
89
|
+
});
|
|
90
|
+
expect(wrapper).toMatchSnapshot();
|
|
91
|
+
});
|
|
92
|
+
describe('renders incorrect tick if one answer is correct but it is not checked', () => {
|
|
93
|
+
it('renders', () => {
|
|
94
|
+
let w = mkWrapper({
|
|
95
|
+
mode: 'evaluate',
|
|
96
|
+
keyMode: 'none',
|
|
97
|
+
choices: [{
|
|
98
|
+
value: 'a',
|
|
99
|
+
label: 'label a',
|
|
100
|
+
correct: true,
|
|
101
|
+
feedback: 'great'
|
|
102
|
+
}, {
|
|
103
|
+
value: 'b',
|
|
104
|
+
label: 'label b'
|
|
105
|
+
}, {
|
|
106
|
+
value: 'c',
|
|
107
|
+
label: 'label c',
|
|
108
|
+
correct: true,
|
|
109
|
+
feedback: 'great'
|
|
110
|
+
}],
|
|
111
|
+
session: {
|
|
112
|
+
value: ['a']
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
expect(w).toMatchSnapshot();
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
describe('getCorrectness', () => {
|
|
119
|
+
let itemChoices = [{
|
|
120
|
+
value: 'a',
|
|
121
|
+
label: 'label a',
|
|
122
|
+
correct: true,
|
|
123
|
+
feedback: 'great'
|
|
124
|
+
}, {
|
|
125
|
+
value: 'b',
|
|
126
|
+
label: 'label b'
|
|
127
|
+
}, {
|
|
128
|
+
value: 'c',
|
|
129
|
+
label: 'label c',
|
|
130
|
+
feedback: 'great'
|
|
131
|
+
}, {
|
|
132
|
+
value: 'd',
|
|
133
|
+
label: 'label d',
|
|
134
|
+
correct: true,
|
|
135
|
+
feedback: 'great'
|
|
136
|
+
}];
|
|
137
|
+
let w = mkWrapper({
|
|
138
|
+
mode: 'evaluate',
|
|
139
|
+
choices: itemChoices,
|
|
140
|
+
session: {
|
|
141
|
+
value: ['a', 'c']
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
describe('showCorrectToggle disabled (state.showCorrect is false)', () => {
|
|
145
|
+
it('shows choice correctness only if was checked', () => {
|
|
146
|
+
// this one was selected and is correct
|
|
147
|
+
expect(w.instance().getCorrectness(itemChoices[0])).toEqual('correct');
|
|
148
|
+
// this one was not selected and is incorrect
|
|
149
|
+
expect(w.instance().getCorrectness(itemChoices[1])).toEqual(undefined);
|
|
150
|
+
// this one was selected, but is incorrect
|
|
151
|
+
expect(w.instance().getCorrectness(itemChoices[2])).toEqual('incorrect');
|
|
152
|
+
// this one was not selected and is correct
|
|
153
|
+
expect(w.instance().getCorrectness(itemChoices[3])).toEqual('incorrect');
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
describe('showCorrectToggle enabled (state.showCorrect is true)', () => {
|
|
157
|
+
it('shows choice correctness no matter if was checked or not', () => {
|
|
158
|
+
w.instance().state.showCorrect = true;
|
|
159
|
+
|
|
160
|
+
// this one is correct
|
|
161
|
+
expect(w.instance().getCorrectness(itemChoices[0])).toEqual('correct');
|
|
162
|
+
// this one is not correct
|
|
163
|
+
expect(w.instance().getCorrectness(itemChoices[1])).toEqual(undefined);
|
|
164
|
+
// this one is not correct
|
|
165
|
+
expect(w.instance().getCorrectness(itemChoices[2])).toEqual(undefined);
|
|
166
|
+
// this one is correct
|
|
167
|
+
expect(w.instance().getCorrectness(itemChoices[3])).toEqual('correct');
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
describe('onToggle', () => {
|
|
172
|
+
it('toggles the state', () => {
|
|
173
|
+
let w = mkWrapper({
|
|
174
|
+
mode: 'evaluate'
|
|
175
|
+
});
|
|
176
|
+
expect(w.state('showCorrect')).toEqual(false);
|
|
177
|
+
w.instance().onToggle();
|
|
178
|
+
expect(w.state('showCorrect')).toEqual(true);
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
describe('Toggle', () => {
|
|
182
|
+
it('toggle is rendered', () => {
|
|
183
|
+
const t = mkWrapper().find(_correctAnswerToggle.default);
|
|
184
|
+
expect(t.length).toEqual(1);
|
|
185
|
+
});
|
|
186
|
+
it('toggle show is set to false', () => {
|
|
187
|
+
expect(mkWrapper().find(_correctAnswerToggle.default).prop('show')).toEqual(false);
|
|
188
|
+
});
|
|
189
|
+
it('shows toggle if mode is evaluate, feedback is enabled and responseCorrect is false', () => {
|
|
190
|
+
expect(mkWrapper({
|
|
191
|
+
mode: 'evaluate',
|
|
192
|
+
responseCorrect: false,
|
|
193
|
+
feedbackEnabled: true
|
|
194
|
+
}).find(_correctAnswerToggle.default).prop('show')).toEqual(true);
|
|
195
|
+
});
|
|
196
|
+
it('hides toggle if mode is evaluate and responseCorrect is false', () => {
|
|
197
|
+
expect(mkWrapper({
|
|
198
|
+
mode: 'evaluate',
|
|
199
|
+
responseCorrect: true
|
|
200
|
+
}).find(_correctAnswerToggle.default).prop('show')).toEqual(false);
|
|
201
|
+
});
|
|
202
|
+
it('not toggled if showCorrect is false', () => {
|
|
203
|
+
let w = mkWrapper({
|
|
204
|
+
mode: 'evaluate'
|
|
205
|
+
});
|
|
206
|
+
w.setState({
|
|
207
|
+
showCorrect: false
|
|
208
|
+
});
|
|
209
|
+
expect(w.find(_correctAnswerToggle.default).prop('toggled')).toEqual(false);
|
|
210
|
+
});
|
|
211
|
+
it('is toggled showCorrect=true && mode=evaluate', () => {
|
|
212
|
+
let w = mkWrapper({
|
|
213
|
+
mode: 'evaluate'
|
|
214
|
+
});
|
|
215
|
+
w.setState({
|
|
216
|
+
showCorrect: true
|
|
217
|
+
});
|
|
218
|
+
expect(w.find(_correctAnswerToggle.default).prop('toggled')).toEqual(true);
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9lbnp5bWUiLCJfbXVsdGlwbGVDaG9pY2UiLCJfY29ycmVjdEFuc3dlclRvZ2dsZSIsImRlc2NyaWJlIiwid3JhcHBlciIsIm9uQ2hvaWNlQ2hhbmdlZCIsImplc3QiLCJmbiIsImJlZm9yZUVhY2giLCJleHRyYXMiLCJwcm9wcyIsImNsYXNzZXMiLCJjaG9pY2UiLCJpbmRleCIsImNob2ljZXNMZW5ndGgiLCJzaG93Q29ycmVjdCIsImlzRXZhbHVhdGVNb2RlIiwiY2hvaWNlTW9kZSIsImRpc2FibGVkIiwiY2hlY2tlZCIsImNvcnJlY3RuZXNzIiwiZGlzcGxheUtleSIsImNob2ljZXNMYXlvdXQiLCJncmlkQ29sdW1ucyIsInNoYWxsb3ciLCJkZWZhdWx0IiwiY3JlYXRlRWxlbWVudCIsIkNob2ljZSIsIml0IiwiZXhwZWN0IiwidG9NYXRjaFNuYXBzaG90IiwidyIsImluc3RhbmNlIiwib25DaGFuZ2UiLCJub3QiLCJ0b0hhdmVCZWVuQ2FsbGVkIiwidG9nZ2xlIiwibWtXcmFwcGVyIiwib3B0cyIsImNsb25lIiwiY2hvaWNlcyIsImtleU1vZGUiLCJtb2RlIiwiTXVsdGlwbGVDaG9pY2UiLCJ2YWx1ZSIsImxhYmVsIiwiY29ycmVjdCIsImZlZWRiYWNrIiwic2Vzc2lvbiIsIml0ZW1DaG9pY2VzIiwiZ2V0Q29ycmVjdG5lc3MiLCJ0b0VxdWFsIiwidW5kZWZpbmVkIiwic3RhdGUiLCJvblRvZ2dsZSIsInQiLCJmaW5kIiwiQ29ycmVjdEFuc3dlclRvZ2dsZSIsImxlbmd0aCIsInByb3AiLCJyZXNwb25zZUNvcnJlY3QiLCJmZWVkYmFja0VuYWJsZWQiLCJzZXRTdGF0ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vbXVsdGlwbGUtY2hvaWNlLXRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBzaGFsbG93IH0gZnJvbSAnZW56eW1lJztcbmltcG9ydCB7IE11bHRpcGxlQ2hvaWNlLCBDaG9pY2UgfSBmcm9tICcuLi9tdWx0aXBsZS1jaG9pY2UnO1xuaW1wb3J0IENvcnJlY3RBbnN3ZXJUb2dnbGUgZnJvbSAnQHBpZS1saWIvY29ycmVjdC1hbnN3ZXItdG9nZ2xlJztcblxuZGVzY3JpYmUoJ0Nob2ljZScsICgpID0+IHtcbiAgbGV0IHdyYXBwZXIsXG4gICAgb25DaG9pY2VDaGFuZ2VkID0gamVzdC5mbigpO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIHdyYXBwZXIgPSAoZXh0cmFzKSA9PiB7XG4gICAgICBjb25zdCBwcm9wcyA9IHtcbiAgICAgICAgY2xhc3Nlczoge30sXG4gICAgICAgIGNob2ljZToge30sXG4gICAgICAgIGluZGV4OiAwLFxuICAgICAgICBjaG9pY2VzTGVuZ3RoOiAxLFxuICAgICAgICBzaG93Q29ycmVjdDogZmFsc2UsXG4gICAgICAgIGlzRXZhbHVhdGVNb2RlOiBmYWxzZSxcbiAgICAgICAgY2hvaWNlTW9kZTogJ3JhZGlvJyxcbiAgICAgICAgZGlzYWJsZWQ6IHRydWUsXG4gICAgICAgIG9uQ2hvaWNlQ2hhbmdlZCxcbiAgICAgICAgY2hlY2tlZDogdHJ1ZSxcbiAgICAgICAgY29ycmVjdG5lc3M6ICdjb3JyZWN0JyxcbiAgICAgICAgZGlzcGxheUtleTogJzAnLFxuICAgICAgICBjaG9pY2VzTGF5b3V0OiAnZ3JpZCcsXG4gICAgICAgIGdyaWRDb2x1bW5zOiAyLFxuICAgICAgICAuLi5leHRyYXMsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHNoYWxsb3coPENob2ljZSB7Li4ucHJvcHN9IC8+KTtcbiAgICB9O1xuICB9KTtcblxuICBkZXNjcmliZSgnc25hcHNob3QnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMnLCAoKSA9PiB7XG4gICAgICBleHBlY3Qod3JhcHBlcigpKS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2xvZ2ljJywgKCkgPT4ge1xuICAgIGl0KCdkb2VzIG5vdCBjYWxsIG9uQ2hvaWNlQ2hhbmdlZCBpZiBkaXNhYmxlZCBpcyB0cnVlJywgKCkgPT4ge1xuICAgICAgbGV0IHcgPSB3cmFwcGVyKCk7XG5cbiAgICAgIHcuaW5zdGFuY2UoKS5vbkNoYW5nZSgpO1xuXG4gICAgICBleHBlY3Qob25DaG9pY2VDaGFuZ2VkKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ2NhbGxzIG9uQ2hvaWNlQ2hhbmdlZCBpZiBkaXNhYmxlZCBpcyBmYWxzZScsICgpID0+IHtcbiAgICAgIGxldCB3ID0gd3JhcHBlcih7IGRpc2FibGVkOiBmYWxzZSB9KTtcblxuICAgICAgdy5pbnN0YW5jZSgpLm9uQ2hhbmdlKCk7XG5cbiAgICAgIGV4cGVjdChvbkNob2ljZUNoYW5nZWQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ0NvcmVzcHJpbmdDaG9pY2UnLCAoKSA9PiB7XG4gIGxldCB3cmFwcGVyLCB0b2dnbGU7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgdG9nZ2xlID0gKCkgPT4ge1xuICAgICAgcmV0dXJuIDxkaXY+bW9ja2VkLXRvZ2dsZTwvZGl2PjtcbiAgICB9O1xuICB9KTtcblxuICBsZXQgbWtXcmFwcGVyID0gKG9wdHMsIGNsb25lID0gdHJ1ZSkgPT4ge1xuICAgIG9wdHMgPSBjbG9uZVxuICAgICAgPyB7XG4gICAgICAgICAgY2xhc3Nlczoge30sXG4gICAgICAgICAgY2hvaWNlczogW10sXG4gICAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgIGtleU1vZGU6ICdsZXR0ZXJzJyxcbiAgICAgICAgICBvbkNob2ljZUNoYW5nZWQ6IGplc3QuZm4oKSxcbiAgICAgICAgICBtb2RlOiAnZ2F0aGVyJyxcbiAgICAgICAgICAuLi5vcHRzLFxuICAgICAgICB9XG4gICAgICA6IG9wdHM7XG5cbiAgICByZXR1cm4gc2hhbGxvdyg8TXVsdGlwbGVDaG9pY2Ugey4uLm9wdHN9IC8+KTtcbiAgfTtcblxuICBkZXNjcmliZSgnc25hcHNob3QnLCAoKSA9PiB7XG4gICAgaXQoJ3JlbmRlcnMnLCAoKSA9PiB7XG4gICAgICB3cmFwcGVyID0gbWtXcmFwcGVyKHtcbiAgICAgICAgY2hvaWNlczogW1xuICAgICAgICAgIHsgdmFsdWU6ICdhJywgbGFiZWw6ICdsYWJlbCBhJywgY29ycmVjdDogdHJ1ZSwgZmVlZGJhY2s6ICdncmVhdCcgfSxcbiAgICAgICAgICB7IHZhbHVlOiAnYicsIGxhYmVsOiAnbGFiZWwgYicgfSxcbiAgICAgICAgICB7IHZhbHVlOiAnYycsIGxhYmVsOiAnbGFiZWwgYycsIGNvcnJlY3Q6IHRydWUsIGZlZWRiYWNrOiAnZ3JlYXQnIH0sXG4gICAgICAgIF0sXG4gICAgICB9KTtcblxuICAgICAgZXhwZWN0KHdyYXBwZXIpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3JlbmRlcnMgaW5jb3JyZWN0IHRpY2sgaWYgb25lIGFuc3dlciBpcyBjb3JyZWN0IGJ1dCBpdCBpcyBub3QgY2hlY2tlZCcsICgpID0+IHtcbiAgICAgIGl0KCdyZW5kZXJzJywgKCkgPT4ge1xuICAgICAgICBsZXQgdyA9IG1rV3JhcHBlcih7XG4gICAgICAgICAgbW9kZTogJ2V2YWx1YXRlJyxcbiAgICAgICAgICBrZXlNb2RlOiAnbm9uZScsXG4gICAgICAgICAgY2hvaWNlczogW1xuICAgICAgICAgICAgeyB2YWx1ZTogJ2EnLCBsYWJlbDogJ2xhYmVsIGEnLCBjb3JyZWN0OiB0cnVlLCBmZWVkYmFjazogJ2dyZWF0JyB9LFxuICAgICAgICAgICAgeyB2YWx1ZTogJ2InLCBsYWJlbDogJ2xhYmVsIGInIH0sXG4gICAgICAgICAgICB7IHZhbHVlOiAnYycsIGxhYmVsOiAnbGFiZWwgYycsIGNvcnJlY3Q6IHRydWUsIGZlZWRiYWNrOiAnZ3JlYXQnIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICBzZXNzaW9uOiB7XG4gICAgICAgICAgICB2YWx1ZTogWydhJ10sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZXhwZWN0KHcpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnZ2V0Q29ycmVjdG5lc3MnLCAoKSA9PiB7XG4gICAgICBsZXQgaXRlbUNob2ljZXMgPSBbXG4gICAgICAgIHsgdmFsdWU6ICdhJywgbGFiZWw6ICdsYWJlbCBhJywgY29ycmVjdDogdHJ1ZSwgZmVlZGJhY2s6ICdncmVhdCcgfSxcbiAgICAgICAgeyB2YWx1ZTogJ2InLCBsYWJlbDogJ2xhYmVsIGInIH0sXG4gICAgICAgIHsgdmFsdWU6ICdjJywgbGFiZWw6ICdsYWJlbCBjJywgZmVlZGJhY2s6ICdncmVhdCcgfSxcbiAgICAgICAgeyB2YWx1ZTogJ2QnLCBsYWJlbDogJ2xhYmVsIGQnLCBjb3JyZWN0OiB0cnVlLCBmZWVkYmFjazogJ2dyZWF0JyB9LFxuICAgICAgXTtcbiAgICAgIGxldCB3ID0gbWtXcmFwcGVyKHtcbiAgICAgICAgbW9kZTogJ2V2YWx1YXRlJyxcbiAgICAgICAgY2hvaWNlczogaXRlbUNob2ljZXMsXG4gICAgICAgIHNlc3Npb246IHtcbiAgICAgICAgICB2YWx1ZTogWydhJywgJ2MnXSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuXG4gICAgICBkZXNjcmliZSgnc2hvd0NvcnJlY3RUb2dnbGUgZGlzYWJsZWQgKHN0YXRlLnNob3dDb3JyZWN0IGlzIGZhbHNlKScsICgpID0+IHtcbiAgICAgICAgaXQoJ3Nob3dzIGNob2ljZSBjb3JyZWN0bmVzcyBvbmx5IGlmIHdhcyBjaGVja2VkJywgKCkgPT4ge1xuICAgICAgICAgIC8vIHRoaXMgb25lIHdhcyBzZWxlY3RlZCBhbmQgaXMgY29ycmVjdFxuICAgICAgICAgIGV4cGVjdCh3Lmluc3RhbmNlKCkuZ2V0Q29ycmVjdG5lc3MoaXRlbUNob2ljZXNbMF0pKS50b0VxdWFsKCdjb3JyZWN0Jyk7XG4gICAgICAgICAgLy8gdGhpcyBvbmUgd2FzIG5vdCBzZWxlY3RlZCBhbmQgaXMgaW5jb3JyZWN0XG4gICAgICAgICAgZXhwZWN0KHcuaW5zdGFuY2UoKS5nZXRDb3JyZWN0bmVzcyhpdGVtQ2hvaWNlc1sxXSkpLnRvRXF1YWwodW5kZWZpbmVkKTtcbiAgICAgICAgICAvLyB0aGlzIG9uZSB3YXMgc2VsZWN0ZWQsIGJ1dCBpcyBpbmNvcnJlY3RcbiAgICAgICAgICBleHBlY3Qody5pbnN0YW5jZSgpLmdldENvcnJlY3RuZXNzKGl0ZW1DaG9pY2VzWzJdKSkudG9FcXVhbCgnaW5jb3JyZWN0Jyk7XG4gICAgICAgICAgLy8gdGhpcyBvbmUgd2FzIG5vdCBzZWxlY3RlZCBhbmQgaXMgY29ycmVjdFxuICAgICAgICAgIGV4cGVjdCh3Lmluc3RhbmNlKCkuZ2V0Q29ycmVjdG5lc3MoaXRlbUNob2ljZXNbM10pKS50b0VxdWFsKCdpbmNvcnJlY3QnKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgZGVzY3JpYmUoJ3Nob3dDb3JyZWN0VG9nZ2xlIGVuYWJsZWQgKHN0YXRlLnNob3dDb3JyZWN0IGlzIHRydWUpJywgKCkgPT4ge1xuICAgICAgICBpdCgnc2hvd3MgY2hvaWNlIGNvcnJlY3RuZXNzIG5vIG1hdHRlciBpZiB3YXMgY2hlY2tlZCBvciBub3QnLCAoKSA9PiB7XG4gICAgICAgICAgdy5pbnN0YW5jZSgpLnN0YXRlLnNob3dDb3JyZWN0ID0gdHJ1ZTtcblxuICAgICAgICAgIC8vIHRoaXMgb25lIGlzIGNvcnJlY3RcbiAgICAgICAgICBleHBlY3Qody5pbnN0YW5jZSgpLmdldENvcnJlY3RuZXNzKGl0ZW1DaG9pY2VzWzBdKSkudG9FcXVhbCgnY29ycmVjdCcpO1xuICAgICAgICAgIC8vIHRoaXMgb25lIGlzIG5vdCBjb3JyZWN0XG4gICAgICAgICAgZXhwZWN0KHcuaW5zdGFuY2UoKS5nZXRDb3JyZWN0bmVzcyhpdGVtQ2hvaWNlc1sxXSkpLnRvRXF1YWwodW5kZWZpbmVkKTtcbiAgICAgICAgICAvLyB0aGlzIG9uZSBpcyBub3QgY29ycmVjdFxuICAgICAgICAgIGV4cGVjdCh3Lmluc3RhbmNlKCkuZ2V0Q29ycmVjdG5lc3MoaXRlbUNob2ljZXNbMl0pKS50b0VxdWFsKHVuZGVmaW5lZCk7XG4gICAgICAgICAgLy8gdGhpcyBvbmUgaXMgY29ycmVjdFxuICAgICAgICAgIGV4cGVjdCh3Lmluc3RhbmNlKCkuZ2V0Q29ycmVjdG5lc3MoaXRlbUNob2ljZXNbM10pKS50b0VxdWFsKCdjb3JyZWN0Jyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnb25Ub2dnbGUnLCAoKSA9PiB7XG4gICAgICBpdCgndG9nZ2xlcyB0aGUgc3RhdGUnLCAoKSA9PiB7XG4gICAgICAgIGxldCB3ID0gbWtXcmFwcGVyKHsgbW9kZTogJ2V2YWx1YXRlJyB9KTtcbiAgICAgICAgZXhwZWN0KHcuc3RhdGUoJ3Nob3dDb3JyZWN0JykpLnRvRXF1YWwoZmFsc2UpO1xuICAgICAgICB3Lmluc3RhbmNlKCkub25Ub2dnbGUoKTtcbiAgICAgICAgZXhwZWN0KHcuc3RhdGUoJ3Nob3dDb3JyZWN0JykpLnRvRXF1YWwodHJ1ZSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdUb2dnbGUnLCAoKSA9PiB7XG4gICAgICBpdCgndG9nZ2xlIGlzIHJlbmRlcmVkJywgKCkgPT4ge1xuICAgICAgICBjb25zdCB0ID0gbWtXcmFwcGVyKCkuZmluZChDb3JyZWN0QW5zd2VyVG9nZ2xlKTtcbiAgICAgICAgZXhwZWN0KHQubGVuZ3RoKS50b0VxdWFsKDEpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCd0b2dnbGUgc2hvdyBpcyBzZXQgdG8gZmFsc2UnLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChta1dyYXBwZXIoKS5maW5kKENvcnJlY3RBbnN3ZXJUb2dnbGUpLnByb3AoJ3Nob3cnKSkudG9FcXVhbChmYWxzZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3dzIHRvZ2dsZSBpZiBtb2RlIGlzIGV2YWx1YXRlLCBmZWVkYmFjayBpcyBlbmFibGVkIGFuZCByZXNwb25zZUNvcnJlY3QgaXMgZmFsc2UnLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChcbiAgICAgICAgICBta1dyYXBwZXIoeyBtb2RlOiAnZXZhbHVhdGUnLCByZXNwb25zZUNvcnJlY3Q6IGZhbHNlLCBmZWVkYmFja0VuYWJsZWQ6IHRydWUgfSlcbiAgICAgICAgICAgIC5maW5kKENvcnJlY3RBbnN3ZXJUb2dnbGUpXG4gICAgICAgICAgICAucHJvcCgnc2hvdycpLFxuICAgICAgICApLnRvRXF1YWwodHJ1ZSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2hpZGVzIHRvZ2dsZSBpZiBtb2RlIGlzIGV2YWx1YXRlIGFuZCByZXNwb25zZUNvcnJlY3QgaXMgZmFsc2UnLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChta1dyYXBwZXIoeyBtb2RlOiAnZXZhbHVhdGUnLCByZXNwb25zZUNvcnJlY3Q6IHRydWUgfSkuZmluZChDb3JyZWN0QW5zd2VyVG9nZ2xlKS5wcm9wKCdzaG93JykpLnRvRXF1YWwoXG4gICAgICAgICAgZmFsc2UsXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ25vdCB0b2dnbGVkIGlmIHNob3dDb3JyZWN0IGlzIGZhbHNlJywgKCkgPT4ge1xuICAgICAgICBsZXQgdyA9IG1rV3JhcHBlcih7IG1vZGU6ICdldmFsdWF0ZScgfSk7XG4gICAgICAgIHcuc2V0U3RhdGUoeyBzaG93Q29ycmVjdDogZmFsc2UgfSk7XG4gICAgICAgIGV4cGVjdCh3LmZpbmQoQ29ycmVjdEFuc3dlclRvZ2dsZSkucHJvcCgndG9nZ2xlZCcpKS50b0VxdWFsKGZhbHNlKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnaXMgdG9nZ2xlZCBzaG93Q29ycmVjdD10cnVlICYmIG1vZGU9ZXZhbHVhdGUnLCAoKSA9PiB7XG4gICAgICAgIGxldCB3ID0gbWtXcmFwcGVyKHsgbW9kZTogJ2V2YWx1YXRlJyB9KTtcbiAgICAgICAgdy5zZXRTdGF0ZSh7IHNob3dDb3JyZWN0OiB0cnVlIH0pO1xuICAgICAgICBleHBlY3Qody5maW5kKENvcnJlY3RBbnN3ZXJUb2dnbGUpLnByb3AoJ3RvZ2dsZWQnKSkudG9FcXVhbCh0cnVlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxlQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxvQkFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBRUFJLFFBQVEsQ0FBQyxRQUFRLEVBQUUsTUFBTTtFQUN2QixJQUFJQyxPQUFPO0lBQ1RDLGVBQWUsR0FBR0MsSUFBSSxDQUFDQyxFQUFFLENBQUMsQ0FBQztFQUU3QkMsVUFBVSxDQUFDLE1BQU07SUFDZkosT0FBTyxHQUFJSyxNQUFNLElBQUs7TUFDcEIsTUFBTUMsS0FBSyxHQUFHO1FBQ1pDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDWEMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNWQyxLQUFLLEVBQUUsQ0FBQztRQUNSQyxhQUFhLEVBQUUsQ0FBQztRQUNoQkMsV0FBVyxFQUFFLEtBQUs7UUFDbEJDLGNBQWMsRUFBRSxLQUFLO1FBQ3JCQyxVQUFVLEVBQUUsT0FBTztRQUNuQkMsUUFBUSxFQUFFLElBQUk7UUFDZGIsZUFBZTtRQUNmYyxPQUFPLEVBQUUsSUFBSTtRQUNiQyxXQUFXLEVBQUUsU0FBUztRQUN0QkMsVUFBVSxFQUFFLEdBQUc7UUFDZkMsYUFBYSxFQUFFLE1BQU07UUFDckJDLFdBQVcsRUFBRSxDQUFDO1FBQ2QsR0FBR2Q7TUFDTCxDQUFDO01BQ0QsT0FBTyxJQUFBZSxlQUFPLGVBQUMzQixNQUFBLENBQUE0QixPQUFBLENBQUFDLGFBQUEsQ0FBQ3pCLGVBQUEsQ0FBQTBCLE1BQU0sRUFB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
|
package/configure/node_modules/@pie-element/multiple-choice/lib/__tests__/session-updater-test.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _sessionUpdater = require("../session-updater");
|
|
4
|
+
describe('session-updater', () => {
|
|
5
|
+
let updater;
|
|
6
|
+
beforeEach(() => {});
|
|
7
|
+
describe('updateSessionValue', () => {
|
|
8
|
+
const assert = (mode, session, data, expected) => {
|
|
9
|
+
return () => {
|
|
10
|
+
(0, _sessionUpdater.updateSessionValue)(session, mode, data);
|
|
11
|
+
expect(session.value).toEqual(expected);
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
describe('checkbox', () => {
|
|
15
|
+
const cb = assert.bind(null, 'checkbox');
|
|
16
|
+
it('adds 1', cb({
|
|
17
|
+
value: []
|
|
18
|
+
}, {
|
|
19
|
+
value: '1',
|
|
20
|
+
selected: true
|
|
21
|
+
}, ['1']));
|
|
22
|
+
it('removes 1', cb({
|
|
23
|
+
value: ['1']
|
|
24
|
+
}, {
|
|
25
|
+
value: '1',
|
|
26
|
+
selected: false
|
|
27
|
+
}, []));
|
|
28
|
+
it('adds 2', cb({
|
|
29
|
+
value: ['1']
|
|
30
|
+
}, {
|
|
31
|
+
value: '2',
|
|
32
|
+
selected: true
|
|
33
|
+
}, ['1', '2']));
|
|
34
|
+
it('does not add duplicate 1', cb({
|
|
35
|
+
value: ['1']
|
|
36
|
+
}, {
|
|
37
|
+
value: '1',
|
|
38
|
+
selected: true
|
|
39
|
+
}, ['1']));
|
|
40
|
+
it('does not remove if not in arrary', cb({
|
|
41
|
+
value: ['1']
|
|
42
|
+
}, {
|
|
43
|
+
value: '2',
|
|
44
|
+
selected: false
|
|
45
|
+
}, ['1']));
|
|
46
|
+
});
|
|
47
|
+
describe('radio', () => {
|
|
48
|
+
const cb = assert.bind(null, 'radio');
|
|
49
|
+
it('adds 1', cb({
|
|
50
|
+
value: []
|
|
51
|
+
}, {
|
|
52
|
+
value: '1',
|
|
53
|
+
selected: true
|
|
54
|
+
}, ['1']));
|
|
55
|
+
it('adds 2', cb({
|
|
56
|
+
value: ['1']
|
|
57
|
+
}, {
|
|
58
|
+
value: '2',
|
|
59
|
+
selected: true
|
|
60
|
+
}, ['2']));
|
|
61
|
+
it('does not add duplicate 1', cb({
|
|
62
|
+
value: ['1']
|
|
63
|
+
}, {
|
|
64
|
+
value: '1',
|
|
65
|
+
selected: true
|
|
66
|
+
}, ['1']));
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc2Vzc2lvblVwZGF0ZXIiLCJyZXF1aXJlIiwiZGVzY3JpYmUiLCJ1cGRhdGVyIiwiYmVmb3JlRWFjaCIsImFzc2VydCIsIm1vZGUiLCJzZXNzaW9uIiwiZGF0YSIsImV4cGVjdGVkIiwidXBkYXRlU2Vzc2lvblZhbHVlIiwiZXhwZWN0IiwidmFsdWUiLCJ0b0VxdWFsIiwiY2IiLCJiaW5kIiwiaXQiLCJzZWxlY3RlZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vc2Vzc2lvbi11cGRhdGVyLXRlc3QuanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVwZGF0ZVNlc3Npb25WYWx1ZSB9IGZyb20gJy4uL3Nlc3Npb24tdXBkYXRlcic7XG5cbmRlc2NyaWJlKCdzZXNzaW9uLXVwZGF0ZXInLCAoKSA9PiB7XG4gIGxldCB1cGRhdGVyO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge30pO1xuXG4gIGRlc2NyaWJlKCd1cGRhdGVTZXNzaW9uVmFsdWUnLCAoKSA9PiB7XG4gICAgY29uc3QgYXNzZXJ0ID0gKG1vZGUsIHNlc3Npb24sIGRhdGEsIGV4cGVjdGVkKSA9PiB7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB1cGRhdGVTZXNzaW9uVmFsdWUoc2Vzc2lvbiwgbW9kZSwgZGF0YSk7XG4gICAgICAgIGV4cGVjdChzZXNzaW9uLnZhbHVlKS50b0VxdWFsKGV4cGVjdGVkKTtcbiAgICAgIH07XG4gICAgfTtcblxuICAgIGRlc2NyaWJlKCdjaGVja2JveCcsICgpID0+IHtcbiAgICAgIGNvbnN0IGNiID0gYXNzZXJ0LmJpbmQobnVsbCwgJ2NoZWNrYm94Jyk7XG4gICAgICBpdCgnYWRkcyAxJywgY2IoeyB2YWx1ZTogW10gfSwgeyB2YWx1ZTogJzEnLCBzZWxlY3RlZDogdHJ1ZSB9LCBbJzEnXSkpO1xuICAgICAgaXQoJ3JlbW92ZXMgMScsIGNiKHsgdmFsdWU6IFsnMSddIH0sIHsgdmFsdWU6ICcxJywgc2VsZWN0ZWQ6IGZhbHNlIH0sIFtdKSk7XG4gICAgICBpdCgnYWRkcyAyJywgY2IoeyB2YWx1ZTogWycxJ10gfSwgeyB2YWx1ZTogJzInLCBzZWxlY3RlZDogdHJ1ZSB9LCBbJzEnLCAnMiddKSk7XG4gICAgICBpdCgnZG9lcyBub3QgYWRkIGR1cGxpY2F0ZSAxJywgY2IoeyB2YWx1ZTogWycxJ10gfSwgeyB2YWx1ZTogJzEnLCBzZWxlY3RlZDogdHJ1ZSB9LCBbJzEnXSkpO1xuICAgICAgaXQoJ2RvZXMgbm90IHJlbW92ZSBpZiBub3QgaW4gYXJyYXJ5JywgY2IoeyB2YWx1ZTogWycxJ10gfSwgeyB2YWx1ZTogJzInLCBzZWxlY3RlZDogZmFsc2UgfSwgWycxJ10pKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdyYWRpbycsICgpID0+IHtcbiAgICAgIGNvbnN0IGNiID0gYXNzZXJ0LmJpbmQobnVsbCwgJ3JhZGlvJyk7XG4gICAgICBpdCgnYWRkcyAxJywgY2IoeyB2YWx1ZTogW10gfSwgeyB2YWx1ZTogJzEnLCBzZWxlY3RlZDogdHJ1ZSB9LCBbJzEnXSkpO1xuICAgICAgaXQoJ2FkZHMgMicsIGNiKHsgdmFsdWU6IFsnMSddIH0sIHsgdmFsdWU6ICcyJywgc2VsZWN0ZWQ6IHRydWUgfSwgWycyJ10pKTtcbiAgICAgIGl0KCdkb2VzIG5vdCBhZGQgZHVwbGljYXRlIDEnLCBjYih7IHZhbHVlOiBbJzEnXSB9LCB7IHZhbHVlOiAnMScsIHNlbGVjdGVkOiB0cnVlIH0sIFsnMSddKSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBQUEsZUFBQSxHQUFBQyxPQUFBO0FBRUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxNQUFNO0VBQ2hDLElBQUlDLE9BQU87RUFFWEMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7RUFFcEJGLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxNQUFNO0lBQ25DLE1BQU1HLE1BQU0sR0FBR0EsQ0FBQ0MsSUFBSSxFQUFFQyxPQUFPLEVBQUVDLElBQUksRUFBRUMsUUFBUSxLQUFLO01BQ2hELE9BQU8sTUFBTTtRQUNYLElBQUFDLGtDQUFrQixFQUFDSCxPQUFPLEVBQUVELElBQUksRUFBRUUsSUFBSSxDQUFDO1FBQ3ZDRyxNQUFNLENBQUNKLE9BQU8sQ0FBQ0ssS0FBSyxDQUFDLENBQUNDLE9BQU8sQ0FBQ0osUUFBUSxDQUFDO01BQ3pDLENBQUM7SUFDSCxDQUFDO0lBRURQLFFBQVEsQ0FBQyxVQUFVLEVBQUUsTUFBTTtNQUN6QixNQUFNWSxFQUFFLEdBQUdULE1BQU0sQ0FBQ1UsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7TUFDeENDLEVBQUUsQ0FBQyxRQUFRLEVBQUVGLEVBQUUsQ0FBQztRQUFFRixLQUFLLEVBQUU7TUFBRyxDQUFDLEVBQUU7UUFBRUEsS0FBSyxFQUFFLEdBQUc7UUFBRUssUUFBUSxFQUFFO01BQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztNQUN0RUQsRUFBRSxDQUFDLFdBQVcsRUFBRUYsRUFBRSxDQUFDO1FBQUVGLEtBQUssRUFBRSxDQUFDLEdBQUc7TUFBRSxDQUFDLEVBQUU7UUFBRUEsS0FBSyxFQUFFLEdBQUc7UUFBRUssUUFBUSxFQUFFO01BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO01BQzFFRCxFQUFFLENBQUMsUUFBUSxFQUFFRixFQUFFLENBQUM7UUFBRUYsS0FBSyxFQUFFLENBQUMsR0FBRztNQUFFLENBQUMsRUFBRTtRQUFFQSxLQUFLLEVBQUUsR0FBRztRQUFFSyxRQUFRLEVBQUU7TUFBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztNQUM5RUQsRUFBRSxDQUFDLDBCQUEwQixFQUFFRixFQUFFLENBQUM7UUFBRUYsS0FBSyxFQUFFLENBQUMsR0FBRztNQUFFLENBQUMsRUFBRTtRQUFFQSxLQUFLLEVBQUUsR0FBRztRQUFFSyxRQUFRLEVBQUU7TUFBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO01BQzNGRCxFQUFFLENBQUMsa0NBQWtDLEVBQUVGLEVBQUUsQ0FBQztRQUFFRixLQUFLLEVBQUUsQ0FBQyxHQUFHO01BQUUsQ0FBQyxFQUFFO1FBQUVBLEtBQUssRUFBRSxHQUFHO1FBQUVLLFFBQVEsRUFBRTtNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdEcsQ0FBQyxDQUFDO0lBRUZmLFFBQVEsQ0FBQyxPQUFPLEVBQUUsTUFBTTtNQUN0QixNQUFNWSxFQUFFLEdBQUdULE1BQU0sQ0FBQ1UsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUM7TUFDckNDLEVBQUUsQ0FBQyxRQUFRLEVBQUVGLEVBQUUsQ0FBQztRQUFFRixLQUFLLEVBQUU7TUFBRyxDQUFDLEVBQUU7UUFBRUEsS0FBSyxFQUFFLEdBQUc7UUFBRUssUUFBUSxFQUFFO01BQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztNQUN0RUQsRUFBRSxDQUFDLFFBQVEsRUFBRUYsRUFBRSxDQUFDO1FBQUVGLEtBQUssRUFBRSxDQUFDLEdBQUc7TUFBRSxDQUFDLEVBQUU7UUFBRUEsS0FBSyxFQUFFLEdBQUc7UUFBRUssUUFBUSxFQUFFO01BQUssQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztNQUN6RUQsRUFBRSxDQUFDLDBCQUEwQixFQUFFRixFQUFFLENBQUM7UUFBRUYsS0FBSyxFQUFFLENBQUMsR0FBRztNQUFFLENBQUMsRUFBRTtRQUFFQSxLQUFLLEVBQUUsR0FBRztRQUFFSyxRQUFRLEVBQUU7TUFBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdGLENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|