@pie-element/explicit-constructed-response 9.3.2-next.2 → 9.3.2-tip-tap.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/CHANGELOG.md +11 -0
- package/configure/CHANGELOG.md +11 -0
- package/configure/lib/__tests__/alternateResponses.test.js +335 -0
- package/configure/lib/__tests__/alternateSection.test.js +289 -0
- package/configure/lib/__tests__/ecr-toolbar.test.js +87 -0
- package/configure/lib/__tests__/main.test.js +320 -0
- package/configure/lib/__tests__/markupUtils.test.js +56 -0
- package/configure/lib/__tests__/utils.test.js +66 -0
- package/configure/lib/alternateResponses.js +1 -1
- package/configure/lib/alternateSection.js +3 -3
- package/configure/lib/alternateSection.js.map +1 -1
- package/configure/lib/defaults.js +1 -1
- package/configure/lib/ecr-toolbar.js +20 -23
- package/configure/lib/ecr-toolbar.js.map +1 -1
- package/configure/lib/index.js +1 -1
- package/configure/lib/main.js +11 -11
- package/configure/lib/main.js.map +1 -1
- package/configure/lib/markupUtils.js +1 -1
- package/configure/lib/utils.js +1 -1
- package/configure/package.json +6 -5
- package/controller/CHANGELOG.md +11 -0
- package/controller/lib/__tests__/index.spec.js +52 -0
- package/controller/lib/__tests__/index.test.js +1205 -0
- package/controller/lib/defaults.js +1 -1
- package/controller/lib/index.js +1 -1
- package/controller/package.json +3 -3
- package/docs/demo/pie.manifest.json +11 -0
- package/lib/__tests__/main.test.js +124 -0
- package/lib/index.js +1 -1
- package/lib/main.js +1 -1
- package/lib/main.js.map +1 -1
- package/lib/print.js +1 -1
- package/package.json +10 -9
- package/LICENSE.md +0 -5
- package/module/configure.js +0 -1
- package/module/controller.js +0 -7460
- package/module/demo.js +0 -45
- package/module/element.js +0 -1
- package/module/index.html +0 -21
- package/module/manifest.json +0 -22
- package/module/print-demo.js +0 -83
- package/module/print.html +0 -18
- package/module/print.js +0 -1
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
6
|
+
|
|
7
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
8
|
+
|
|
9
|
+
var _enzyme = require("enzyme");
|
|
10
|
+
|
|
11
|
+
var _react = _interopRequireDefault(require("react"));
|
|
12
|
+
|
|
13
|
+
var _alternateSection = require("../alternateSection");
|
|
14
|
+
|
|
15
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
16
|
+
|
|
17
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
18
|
+
|
|
19
|
+
var choices = [{
|
|
20
|
+
label: 'cow',
|
|
21
|
+
value: '0'
|
|
22
|
+
}, {
|
|
23
|
+
label: 'cattle',
|
|
24
|
+
value: '1'
|
|
25
|
+
}, {
|
|
26
|
+
label: 'calf',
|
|
27
|
+
value: '2'
|
|
28
|
+
}];
|
|
29
|
+
describe('Choice', function () {
|
|
30
|
+
var onChange = jest.fn();
|
|
31
|
+
var onDelete = jest.fn();
|
|
32
|
+
|
|
33
|
+
var wrapper = function wrapper() {
|
|
34
|
+
var defaults = {
|
|
35
|
+
classes: {},
|
|
36
|
+
key: '0',
|
|
37
|
+
markup: 'cow',
|
|
38
|
+
onChange: onChange,
|
|
39
|
+
onDelete: onDelete
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
var props = _objectSpread({}, defaults);
|
|
43
|
+
|
|
44
|
+
return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_alternateSection.Choice, props));
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
describe('snapshot', function () {
|
|
48
|
+
it('renders', function () {
|
|
49
|
+
expect(wrapper()).toMatchSnapshot();
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
describe('logic', function () {
|
|
53
|
+
it('calls onChange', function () {
|
|
54
|
+
var w = wrapper();
|
|
55
|
+
w.instance().onChange({
|
|
56
|
+
target: {
|
|
57
|
+
value: 'TEST'
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
setTimeout(function () {
|
|
61
|
+
expect(onChange).toHaveBeenCalledWith('TEST');
|
|
62
|
+
}, 400);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
describe('AlternateSection', function () {
|
|
67
|
+
var onSelect = jest.fn();
|
|
68
|
+
var choiceChanged = jest.fn();
|
|
69
|
+
var choiceRemoved = jest.fn();
|
|
70
|
+
var lengthChanged = jest.fn();
|
|
71
|
+
|
|
72
|
+
var wrapper = function wrapper() {
|
|
73
|
+
var extras = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
74
|
+
|
|
75
|
+
var defaults = _objectSpread({
|
|
76
|
+
classes: {},
|
|
77
|
+
key: '0',
|
|
78
|
+
value: 'cow',
|
|
79
|
+
onSelect: onSelect,
|
|
80
|
+
choiceChanged: choiceChanged,
|
|
81
|
+
choiceRemoved: choiceRemoved,
|
|
82
|
+
lengthChanged: lengthChanged,
|
|
83
|
+
selectChoices: [{
|
|
84
|
+
label: 'moon',
|
|
85
|
+
value: '2'
|
|
86
|
+
}],
|
|
87
|
+
choices: choices,
|
|
88
|
+
maxLength: 10
|
|
89
|
+
}, extras);
|
|
90
|
+
|
|
91
|
+
var props = _objectSpread({}, defaults);
|
|
92
|
+
|
|
93
|
+
return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_alternateSection.AlternateSection, props));
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
describe('snapshot', function () {
|
|
97
|
+
it('renders', function () {
|
|
98
|
+
expect(wrapper()).toMatchSnapshot();
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
describe('logic', function () {
|
|
102
|
+
var w;
|
|
103
|
+
beforeEach(function () {
|
|
104
|
+
w = wrapper();
|
|
105
|
+
});
|
|
106
|
+
describe('updateChoicesIfNeeded', function () {
|
|
107
|
+
it('does not set state', function () {
|
|
108
|
+
w.instance().updateChoicesIfNeeded({
|
|
109
|
+
choices: choices
|
|
110
|
+
});
|
|
111
|
+
expect(w.instance().state).toEqual(expect.objectContaining({
|
|
112
|
+
choices: choices
|
|
113
|
+
}));
|
|
114
|
+
});
|
|
115
|
+
it('sets state, updates edited choice', function () {
|
|
116
|
+
var newChoices = [{
|
|
117
|
+
label: 'cow',
|
|
118
|
+
value: '0'
|
|
119
|
+
}, {
|
|
120
|
+
label: 'cattle',
|
|
121
|
+
value: '1'
|
|
122
|
+
}, {
|
|
123
|
+
label: 'little calf',
|
|
124
|
+
value: '2'
|
|
125
|
+
}];
|
|
126
|
+
w.instance().updateChoicesIfNeeded({
|
|
127
|
+
choices: newChoices
|
|
128
|
+
});
|
|
129
|
+
expect(w.instance().state).toEqual(expect.objectContaining({
|
|
130
|
+
choices: newChoices
|
|
131
|
+
}));
|
|
132
|
+
});
|
|
133
|
+
it('sets state, updates adding new choice', function () {
|
|
134
|
+
var newChoices = [{
|
|
135
|
+
label: 'cow',
|
|
136
|
+
value: '0'
|
|
137
|
+
}, {
|
|
138
|
+
label: 'cattle',
|
|
139
|
+
value: '1'
|
|
140
|
+
}, {
|
|
141
|
+
label: 'little calf',
|
|
142
|
+
value: '2'
|
|
143
|
+
}];
|
|
144
|
+
w.instance().updateChoicesIfNeeded({
|
|
145
|
+
choices: newChoices
|
|
146
|
+
});
|
|
147
|
+
expect(w.instance().state).toEqual(expect.objectContaining({
|
|
148
|
+
choices: newChoices
|
|
149
|
+
}));
|
|
150
|
+
});
|
|
151
|
+
it('sets state, updates removing choice', function () {
|
|
152
|
+
var newChoices = [{
|
|
153
|
+
label: 'cow',
|
|
154
|
+
value: '0'
|
|
155
|
+
}, {
|
|
156
|
+
label: 'cattle',
|
|
157
|
+
value: '1'
|
|
158
|
+
}];
|
|
159
|
+
w.instance().updateChoicesIfNeeded({
|
|
160
|
+
choices: newChoices
|
|
161
|
+
});
|
|
162
|
+
expect(w.instance().state).toEqual(expect.objectContaining({
|
|
163
|
+
choices: newChoices
|
|
164
|
+
}));
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
describe('handleSelect', function () {
|
|
168
|
+
it('calls onSelect', function () {
|
|
169
|
+
w.instance().handleSelect({
|
|
170
|
+
target: {
|
|
171
|
+
value: '2'
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
expect(onSelect).toBeCalledWith({
|
|
175
|
+
label: 'moon',
|
|
176
|
+
value: '2'
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
describe('onAddChoice', function () {
|
|
181
|
+
it('adds choice', function () {
|
|
182
|
+
var state = w.instance().state;
|
|
183
|
+
w.instance().onAddChoice();
|
|
184
|
+
expect(w.instance().state.choices).toEqual([].concat((0, _toConsumableArray2["default"])(state.choices), [{
|
|
185
|
+
value: '3',
|
|
186
|
+
label: ''
|
|
187
|
+
}]));
|
|
188
|
+
});
|
|
189
|
+
it('does not add choice if previously added choice is empty', function () {
|
|
190
|
+
var state = w.instance().state;
|
|
191
|
+
w.instance().onAddChoice();
|
|
192
|
+
state.choices.push({
|
|
193
|
+
value: '3',
|
|
194
|
+
label: ''
|
|
195
|
+
});
|
|
196
|
+
expect(w.instance().state.choices).toEqual(state.choices);
|
|
197
|
+
w.instance().onAddChoice();
|
|
198
|
+
expect(w.instance().state.choices).toEqual(state.choices);
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
describe('onChoiceChanged', function () {
|
|
202
|
+
beforeEach(function () {
|
|
203
|
+
choiceChanged.mockClear();
|
|
204
|
+
lengthChanged.mockClear();
|
|
205
|
+
});
|
|
206
|
+
it('calls choiceChanged', function () {
|
|
207
|
+
w.instance().onChoiceChanged({
|
|
208
|
+
value: '0',
|
|
209
|
+
label: 'cow'
|
|
210
|
+
}, 'New value');
|
|
211
|
+
expect(choiceChanged).toBeCalledWith({
|
|
212
|
+
value: '0',
|
|
213
|
+
label: 'New value'
|
|
214
|
+
});
|
|
215
|
+
});
|
|
216
|
+
it('calls lengthChanged when new max length is greater than current maxLength', function () {
|
|
217
|
+
// ['cow', 'cattle', 'calf'] - max length is 6 (cattle)
|
|
218
|
+
// maxLength prop is 10, so we need something longer than 10
|
|
219
|
+
var longChoice = 'Very long choice text'; // 21 characters
|
|
220
|
+
|
|
221
|
+
w.instance().onChoiceChanged({
|
|
222
|
+
value: '0',
|
|
223
|
+
label: 'cow'
|
|
224
|
+
}, longChoice, 0); // 21 + 5 = 26
|
|
225
|
+
|
|
226
|
+
expect(lengthChanged).toHaveBeenCalledWith(26);
|
|
227
|
+
});
|
|
228
|
+
it('calls lengthChanged when new max length is significantly smaller', function () {
|
|
229
|
+
var wrapperWithHighMaxLength = wrapper({
|
|
230
|
+
maxLength: 30
|
|
231
|
+
}); // ['cow', 'cattle', 'calf'] - max length is 6
|
|
232
|
+
|
|
233
|
+
wrapperWithHighMaxLength.instance().onChoiceChanged({
|
|
234
|
+
value: '1',
|
|
235
|
+
label: 'cattle'
|
|
236
|
+
}, 'a', 1); // max length will be 4 (max of 'cow', 'a', 'calf')
|
|
237
|
+
// Since 4 + 10 = 14 <= 30, this should trigger lengthChanged
|
|
238
|
+
|
|
239
|
+
expect(lengthChanged).toHaveBeenCalledWith(7); // getAdjustedLength(4) = 4 + 3 = 7
|
|
240
|
+
});
|
|
241
|
+
it('does not call lengthChanged when new max length is within threshold', function () {
|
|
242
|
+
// ['cow', 'cattle', 'calf'] - max length is 6
|
|
243
|
+
// maxLength is 10, change to something that keeps max around the same
|
|
244
|
+
w.instance().onChoiceChanged({
|
|
245
|
+
value: '0',
|
|
246
|
+
label: 'cow'
|
|
247
|
+
}, 'bull', 0); // max length will still be 6 (cattle), which is not > 10 and not <= 0 (10-10)
|
|
248
|
+
|
|
249
|
+
expect(lengthChanged).not.toHaveBeenCalled();
|
|
250
|
+
});
|
|
251
|
+
it('calculates max length across all choices correctly', function () {
|
|
252
|
+
var shortChoices = [{
|
|
253
|
+
label: 'a',
|
|
254
|
+
value: '0'
|
|
255
|
+
}, {
|
|
256
|
+
label: 'bb',
|
|
257
|
+
value: '1'
|
|
258
|
+
}, {
|
|
259
|
+
label: 'ccc',
|
|
260
|
+
value: '2'
|
|
261
|
+
}];
|
|
262
|
+
var wrapperWithShortChoices = wrapper({
|
|
263
|
+
choices: shortChoices,
|
|
264
|
+
maxLength: 5
|
|
265
|
+
});
|
|
266
|
+
wrapperWithShortChoices.instance().onChoiceChanged({
|
|
267
|
+
value: '2',
|
|
268
|
+
label: 'ccc'
|
|
269
|
+
}, 'This is much longer', 2);
|
|
270
|
+
expect(lengthChanged).toHaveBeenCalledWith(24);
|
|
271
|
+
});
|
|
272
|
+
it('handles mixed special characters correctly', function () {
|
|
273
|
+
lengthChanged.mockClear();
|
|
274
|
+
var mixedSpecialChoice = 'Test with & < > " \' symbols'; // 27 chars when decoded
|
|
275
|
+
|
|
276
|
+
var wrapperWithLowMax = wrapper({
|
|
277
|
+
maxLength: 5
|
|
278
|
+
});
|
|
279
|
+
wrapperWithLowMax.instance().onChoiceChanged({
|
|
280
|
+
value: '0',
|
|
281
|
+
label: 'cow'
|
|
282
|
+
}, mixedSpecialChoice, 0); // 27 normal characters + 5 buffer = 32
|
|
283
|
+
|
|
284
|
+
expect(lengthChanged).toHaveBeenCalledWith(32);
|
|
285
|
+
});
|
|
286
|
+
});
|
|
287
|
+
});
|
|
288
|
+
});
|
|
289
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vYWx0ZXJuYXRlU2VjdGlvbi50ZXN0LmpzeCJdLCJuYW1lcyI6WyJjaG9pY2VzIiwibGFiZWwiLCJ2YWx1ZSIsImRlc2NyaWJlIiwib25DaGFuZ2UiLCJqZXN0IiwiZm4iLCJvbkRlbGV0ZSIsIndyYXBwZXIiLCJkZWZhdWx0cyIsImNsYXNzZXMiLCJrZXkiLCJtYXJrdXAiLCJwcm9wcyIsIml0IiwiZXhwZWN0IiwidG9NYXRjaFNuYXBzaG90IiwidyIsImluc3RhbmNlIiwidGFyZ2V0Iiwic2V0VGltZW91dCIsInRvSGF2ZUJlZW5DYWxsZWRXaXRoIiwib25TZWxlY3QiLCJjaG9pY2VDaGFuZ2VkIiwiY2hvaWNlUmVtb3ZlZCIsImxlbmd0aENoYW5nZWQiLCJleHRyYXMiLCJzZWxlY3RDaG9pY2VzIiwibWF4TGVuZ3RoIiwiYmVmb3JlRWFjaCIsInVwZGF0ZUNob2ljZXNJZk5lZWRlZCIsInN0YXRlIiwidG9FcXVhbCIsIm9iamVjdENvbnRhaW5pbmciLCJuZXdDaG9pY2VzIiwiaGFuZGxlU2VsZWN0IiwidG9CZUNhbGxlZFdpdGgiLCJvbkFkZENob2ljZSIsInB1c2giLCJtb2NrQ2xlYXIiLCJvbkNob2ljZUNoYW5nZWQiLCJsb25nQ2hvaWNlIiwid3JhcHBlcldpdGhIaWdoTWF4TGVuZ3RoIiwibm90IiwidG9IYXZlQmVlbkNhbGxlZCIsInNob3J0Q2hvaWNlcyIsIndyYXBwZXJXaXRoU2hvcnRDaG9pY2VzIiwibWl4ZWRTcGVjaWFsQ2hvaWNlIiwid3JhcHBlcldpdGhMb3dNYXgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7Ozs7OztBQUVBLElBQU1BLE9BQU8sR0FBRyxDQUNkO0FBQUVDLEVBQUFBLEtBQUssRUFBRSxLQUFUO0FBQWdCQyxFQUFBQSxLQUFLLEVBQUU7QUFBdkIsQ0FEYyxFQUVkO0FBQUVELEVBQUFBLEtBQUssRUFBRSxRQUFUO0FBQW1CQyxFQUFBQSxLQUFLLEVBQUU7QUFB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QUUzRCxZQUFNQyxpQkFBaUIsR0FBR3hDLE9BQU8sQ0FBQztBQUFFb0IsVUFBQUEsU0FBUyxFQUFFO0FBQWIsU0FBRCxDQUFqQztBQUVBb0IsUUFBQUEsaUJBQWlCLENBQUM5QixRQUFsQixHQUE2QnNCLGVBQTdCLENBQTZDO0FBQUV0QyxVQUFBQSxLQUFLLEVBQUUsR0FBVDtBQUFjRCxVQUFBQSxLQUFLLEVBQUU7QUFBckIsU0FBN0MsRUFBMkU4QyxrQkFBM0UsRUFBK0YsQ0FBL0YsRUFOcUQsQ0FRckQ7O0FBQ0FoQyxRQUFBQSxNQUFNLENBQUNVLGFBQUQsQ0FBTixDQUFzQkosb0JBQXRCLENBQTJDLEVBQTNDO0FBQ0QsT0FWQyxDQUFGO0FBV0QsS0ExRU8sQ0FBUjtBQTJFRCxHQXpLTyxDQUFSO0FBMEtELENBek1PLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFsbG93IH0gZnJvbSAnZW56eW1lJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IEFsdGVybmF0ZVNlY3Rpb24sIENob2ljZSB9IGZyb20gJy4uL2FsdGVybmF0ZVNlY3Rpb24nO1xuXG5jb25zdCBjaG9pY2VzID0gW1xuICB7IGxhYmVsOiAnY293JywgdmFsdWU6ICcwJyB9LFxuICB7IGxhYmVsOiAnY2F0dGxlJywgdmFsdWU6ICcxJyB9LFxuICB7IGxhYmVsOiAnY2FsZicsIHZhbHVlOiAnMicgfSxcbl07XG5cbmRlc2NyaWJlKCdDaG9pY2UnLCAoKSA9PiB7XG4gIGxldCBvbkNoYW5nZSA9IGplc3QuZm4oKTtcbiAgbGV0IG9uRGVsZXRlID0gamVzdC5mbigpO1xuXG4gIGNvbnN0IHdyYXBwZXIgPSAoKSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBjbGFzc2VzOiB7fSxcbiAgICAgIGtleTogJzAnLFxuICAgICAgbWFya3VwOiAnY293JyxcbiAgICAgIG9uQ2hhbmdlLFxuICAgICAgb25EZWxldGUsXG4gICAgfTtcbiAgICBjb25zdCBwcm9wcyA9IHsgLi4uZGVmYXVsdHMgfTtcblxuICAgIHJldHVybiBzaGFsbG93KDxDaG9pY2Ugey4uLnByb3BzfSAvPik7XG4gIH07XG5cbiAgZGVzY3JpYmUoJ3NuYXBzaG90JywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHdyYXBwZXIoKSkudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsb2dpYycsICgpID0+IHtcbiAgICBpdCgnY2FsbHMgb25DaGFuZ2UnLCAoKSA9PiB7XG4gICAgICBjb25zdCB3ID0gd3JhcHBlcigpO1xuXG4gICAgICB3Lmluc3RhbmNlKCkub25DaGFuZ2UoeyB0YXJnZXQ6IHsgdmFsdWU6ICdURVNUJyB9IH0pO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgZXhwZWN0KG9uQ2hhbmdlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnVEVTVCcpO1xuICAgICAgfSwgNDAwKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ0FsdGVybmF0ZVNlY3Rpb24nLCAoKSA9PiB7XG4gIGxldCBvblNlbGVjdCA9IGplc3QuZm4oKTtcbiAgbGV0IGNob2ljZUNoYW5nZWQgPSBqZXN0LmZuKCk7XG4gIGxldCBjaG9pY2VSZW1vdmVkID0gamVzdC5mbigpO1xuICBsZXQgbGVuZ3RoQ2hhbmdlZCA9IGplc3QuZm4oKTtcblxuICBjb25zdCB3cmFwcGVyID0gKGV4dHJhcyA9IHt9KSA9PiB7XG4gICAgY29uc3QgZGVmYXVsdHMgPSB7XG4gICAgICBjbGFzc2VzOiB7fSxcbiAgICAgIGtleTogJzAnLFxuICAgICAgdmFsdWU6ICdjb3cnLFxuICAgICAgb25TZWxlY3QsXG4gICAgICBjaG9pY2VDaGFuZ2VkLFxuICAgICAgY2hvaWNlUmVtb3ZlZCxcbiAgICAgIGxlbmd0aENoYW5nZWQsXG4gICAgICBzZWxlY3RDaG9pY2VzOiBbeyBsYWJlbDogJ21vb24nLCB2YWx1ZTogJzInIH1dLFxuICAgICAgY2hvaWNlcyxcbiAgICAgIG1heExlbmd0aDogMTAsXG4gICAgICAuLi5leHRyYXNcbiAgICB9O1xuICAgIGNvbnN0IHByb3BzID0geyAuLi5kZWZhdWx0cyB9O1xuXG4gICAgcmV0dXJuIHNoYWxsb3coPEFsdGVybmF0ZVNlY3Rpb24gey4uLnByb3BzfSAvPik7XG4gIH07XG5cbiAgZGVzY3JpYmUoJ3NuYXBzaG90JywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHdyYXBwZXIoKSkudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsb2dpYycsICgpID0+IHtcbiAgICBsZXQgdztcblxuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgdyA9IHdyYXBwZXIoKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCd1cGRhdGVDaG9pY2VzSWZOZWVkZWQnLCAoKSA9PiB7XG4gICAgICBpdCgnZG9lcyBub3Qgc2V0IHN0YXRlJywgKCkgPT4ge1xuICAgICAgICB3Lmluc3RhbmNlKCkudXBkYXRlQ2hvaWNlc0lmTmVlZGVkKHsgY2hvaWNlcyB9KTtcblxuICAgICAgICBleHBlY3Qody5pbnN0YW5jZSgpLnN0YXRlKS50b0VxdWFsKGV4cGVjdC5vYmplY3RDb250YWluaW5nKHsgY2hvaWNlcyB9KSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3NldHMgc3RhdGUsIHVwZGF0ZXMgZWRpdGVkIGNob2ljZScsICgpID0+IHtcbiAgICAgICAgY29uc3QgbmV3Q2hvaWNlcyA9IFtcbiAgICAgICAgICB7IGxhYmVsOiAnY293JywgdmFsdWU6ICcwJyB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdjYXR0bGUnLCB2YWx1ZTogJzEnIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ2xpdHRsZSBjYWxmJywgdmFsdWU6ICcyJyB9LFxuICAgICAgICBdO1xuXG4gICAgICAgIHcuaW5zdGFuY2UoKS51cGRhdGVDaG9pY2VzSWZOZWVkZWQoeyBjaG9pY2VzOiBuZXdDaG9pY2VzIH0pO1xuXG4gICAgICAgIGV4cGVjdCh3Lmluc3RhbmNlKCkuc3RhdGUpLnRvRXF1YWwoXG4gICAgICAgICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgICAgICAgY2hvaWNlczogbmV3Q2hvaWNlcyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2V0cyBzdGF0ZSwgdXBkYXRlcyBhZGRpbmcgbmV3IGNob2ljZScsICgpID0+IHtcbiAgICAgICAgY29uc3QgbmV3Q2hvaWNlcyA9IFtcbiAgICAgICAgICB7IGxhYmVsOiAnY293JywgdmFsdWU6ICcwJyB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdjYXR0bGUnLCB2YWx1ZTogJzEnIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ2xpdHRsZSBjYWxmJywgdmFsdWU6ICcyJyB9LFxuICAgICAgICBdO1xuXG4gICAgICAgIHcuaW5zdGFuY2UoKS51cGRhdGVDaG9pY2VzSWZOZWVkZWQoeyBjaG9pY2VzOiBuZXdDaG9pY2VzIH0pO1xuXG4gICAgICAgIGV4cGVjdCh3Lmluc3RhbmNlKCkuc3RhdGUpLnRvRXF1YWwoXG4gICAgICAgICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgICAgICAgY2hvaWNlczogbmV3Q2hvaWNlcyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2V0cyBzdGF0ZSwgdXBkYXRlcyByZW1vdmluZyBjaG9pY2UnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld0Nob2ljZXMgPSBbXG4gICAgICAgICAgeyBsYWJlbDogJ2NvdycsIHZhbHVlOiAnMCcgfSxcbiAgICAgICAgICB7IGxhYmVsOiAnY2F0dGxlJywgdmFsdWU6ICcxJyB9LFxuICAgICAgICBdO1xuXG4gICAgICAgIHcuaW5zdGFuY2UoKS51cGRhdGVDaG9pY2VzSWZOZWVkZWQoeyBjaG9pY2VzOiBuZXdDaG9pY2VzIH0pO1xuXG4gICAgICAgIGV4cGVjdCh3Lmluc3RhbmNlKCkuc3RhdGUpLnRvRXF1YWwoXG4gICAgICAgICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgICAgICAgY2hvaWNlczogbmV3Q2hvaWNlcyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2hhbmRsZVNlbGVjdCcsICgpID0+IHtcbiAgICAgIGl0KCdjYWxscyBvblNlbGVjdCcsICgpID0+IHtcbiAgICAgICAgdy5pbnN0YW5jZSgpLmhhbmRsZVNlbGVjdCh7IHRhcmdldDogeyB2YWx1ZTogJzInIH0gfSk7XG5cbiAgICAgICAgZXhwZWN0KG9uU2VsZWN0KS50b0JlQ2FsbGVkV2l0aCh7IGxhYmVsOiAnbW9vbicsIHZhbHVlOiAnMicgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdvbkFkZENob2ljZScsICgpID0+IHtcbiAgICAgIGl0KCdhZGRzIGNob2ljZScsICgpID0+IHtcbiAgICAgICAgY29uc3Qgc3RhdGUgPSB3Lmluc3RhbmNlKCkuc3RhdGU7XG5cbiAgICAgICAgdy5pbnN0YW5jZSgpLm9uQWRkQ2hvaWNlKCk7XG5cbiAgICAgICAgZXhwZWN0KHcuaW5zdGFuY2UoKS5zdGF0ZS5jaG9pY2VzKS50b0VxdWFsKFsuLi5zdGF0ZS5jaG9pY2VzLCB7IHZhbHVlOiAnMycsIGxhYmVsOiAnJyB9XSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2RvZXMgbm90IGFkZCBjaG9pY2UgaWYgcHJldmlvdXNseSBhZGRlZCBjaG9pY2UgaXMgZW1wdHknLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHN0YXRlID0gdy5pbnN0YW5jZSgpLnN0YXRlO1xuXG4gICAgICAgIHcuaW5zdGFuY2UoKS5vbkFkZENob2ljZSgpO1xuXG4gICAgICAgIHN0YXRlLmNob2ljZXMucHVzaCh7IHZhbHVlOiAnMycsIGxhYmVsOiAnJyB9KTtcblxuICAgICAgICBleHBlY3Qody5pbnN0YW5jZSgpLnN0YXRlLmNob2ljZXMpLnRvRXF1YWwoc3RhdGUuY2hvaWNlcyk7XG5cbiAgICAgICAgdy5pbnN0YW5jZSgpLm9uQWRkQ2hvaWNlKCk7XG5cbiAgICAgICAgZXhwZWN0KHcuaW5zdGFuY2UoKS5zdGF0ZS5jaG9pY2VzKS50b0VxdWFsKHN0YXRlLmNob2ljZXMpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnb25DaG9pY2VDaGFuZ2VkJywgKCkgPT4ge1xuICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICAgIGNob2ljZUNoYW5nZWQubW9ja0NsZWFyKCk7XG4gICAgICAgIGxlbmd0aENoYW5nZWQubW9ja0NsZWFyKCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2NhbGxzIGNob2ljZUNoYW5nZWQnLCAoKSA9PiB7XG4gICAgICAgIHcuaW5zdGFuY2UoKS5vbkNob2ljZUNoYW5nZWQoeyB2YWx1ZTogJzAnLCBsYWJlbDogJ2NvdycgfSwgJ05ldyB2YWx1ZScpO1xuXG4gICAgICAgIGV4cGVjdChjaG9pY2VDaGFuZ2VkKS50b0JlQ2FsbGVkV2l0aCh7IHZhbHVlOiAnMCcsIGxhYmVsOiAnTmV3IHZhbHVlJyB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnY2FsbHMgbGVuZ3RoQ2hhbmdlZCB3aGVuIG5ldyBtYXggbGVuZ3RoIGlzIGdyZWF0ZXIgdGhhbiBjdXJyZW50IG1heExlbmd0aCcsICgpID0+IHtcbiAgICAgICAgLy8gWydjb3cnLCAnY2F0dGxlJywgJ2NhbGYnXSAtIG1heCBsZW5ndGggaXMgNiAoY2F0dGxlKVxuICAgICAgICAvLyBtYXhMZW5ndGggcHJvcCBpcyAxMCwgc28gd2UgbmVlZCBzb21ldGhpbmcgbG9uZ2VyIHRoYW4gMTBcbiAgICAgICAgY29uc3QgbG9uZ0Nob2ljZSA9ICdWZXJ5IGxvbmcgY2hvaWNlIHRleHQnOyAvLyAyMSBjaGFyYWN0ZXJzXG5cbiAgICAgICAgdy5pbnN0YW5jZSgpLm9uQ2hvaWNlQ2hhbmdlZCh7IHZhbHVlOiAnMCcsIGxhYmVsOiAnY293JyB9LCBsb25nQ2hvaWNlLCAwKTtcblxuICAgICAgICAvLyAyMSArIDUgPSAyNlxuICAgICAgICBleHBlY3QobGVuZ3RoQ2hhbmdlZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoMjYpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdjYWxscyBsZW5ndGhDaGFuZ2VkIHdoZW4gbmV3IG1heCBsZW5ndGggaXMgc2lnbmlmaWNhbnRseSBzbWFsbGVyJywgKCkgPT4ge1xuICAgICAgICBjb25zdCB3cmFwcGVyV2l0aEhpZ2hNYXhMZW5ndGggPSB3cmFwcGVyKHsgbWF4TGVuZ3RoOiAzMCB9KTtcblxuICAgICAgICAvLyBbJ2NvdycsICdjYXR0bGUnLCAnY2FsZiddIC0gbWF4IGxlbmd0aCBpcyA2XG4gICAgICAgIHdyYXBwZXJXaXRoSGlnaE1heExlbmd0aC5pbnN0YW5jZSgpLm9uQ2hvaWNlQ2hhbmdlZCh7IHZhbHVlOiAnMScsIGxhYmVsOiAnY2F0dGxlJyB9LCAnYScsIDEpO1xuXG4gICAgICAgIC8vIG1heCBsZW5ndGggd2lsbCBiZSA0IChtYXggb2YgJ2NvdycsICdhJywgJ2NhbGYnKVxuICAgICAgICAvLyBTaW5jZSA0ICsgMTAgPSAxNCA8PSAzMCwgdGhpcyBzaG91bGQgdHJpZ2dlciBsZW5ndGhDaGFuZ2VkXG4gICAgICAgIGV4cGVjdChsZW5ndGhDaGFuZ2VkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCg3KTsgLy8gZ2V0QWRqdXN0ZWRMZW5ndGgoNCkgPSA0ICsgMyA9IDdcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZG9lcyBub3QgY2FsbCBsZW5ndGhDaGFuZ2VkIHdoZW4gbmV3IG1heCBsZW5ndGggaXMgd2l0aGluIHRocmVzaG9sZCcsICgpID0+IHtcbiAgICAgICAgLy8gWydjb3cnLCAnY2F0dGxlJywgJ2NhbGYnXSAtIG1heCBsZW5ndGggaXMgNlxuICAgICAgICAvLyBtYXhMZW5ndGggaXMgMTAsIGNoYW5nZSB0byBzb21ldGhpbmcgdGhhdCBrZWVwcyBtYXggYXJvdW5kIHRoZSBzYW1lXG4gICAgICAgIHcuaW5zdGFuY2UoKS5vbkNob2ljZUNoYW5nZWQoeyB2YWx1ZTogJzAnLCBsYWJlbDogJ2NvdycgfSwgJ2J1bGwnLCAwKTtcblxuICAgICAgICAvLyBtYXggbGVuZ3RoIHdpbGwgc3RpbGwgYmUgNiAoY2F0dGxlKSwgd2hpY2ggaXMgbm90ID4gMTAgYW5kIG5vdCA8PSAwICgxMC0xMClcbiAgICAgICAgZXhwZWN0KGxlbmd0aENoYW5nZWQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ2NhbGN1bGF0ZXMgbWF4IGxlbmd0aCBhY3Jvc3MgYWxsIGNob2ljZXMgY29ycmVjdGx5JywgKCkgPT4ge1xuICAgICAgICBjb25zdCBzaG9ydENob2ljZXMgPSBbXG4gICAgICAgICAgeyBsYWJlbDogJ2EnLCB2YWx1ZTogJzAnIH0sXG4gICAgICAgICAgeyBsYWJlbDogJ2JiJywgdmFsdWU6ICcxJyB9LFxuICAgICAgICAgIHsgbGFiZWw6ICdjY2MnLCB2YWx1ZTogJzInIH0sXG4gICAgICAgIF07XG5cbiAgICAgICAgY29uc3Qgd3JhcHBlcldpdGhTaG9ydENob2ljZXMgPSB3cmFwcGVyKHtcbiAgICAgICAgICBjaG9pY2VzOiBzaG9ydENob2ljZXMsXG4gICAgICAgICAgbWF4TGVuZ3RoOiA1XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHdyYXBwZXJXaXRoU2hvcnRDaG9pY2VzLmluc3RhbmNlKCkub25DaG9pY2VDaGFuZ2VkKFxuICAgICAgICAgIHsgdmFsdWU6ICcyJywgbGFiZWw6ICdjY2MnIH0sXG4gICAgICAgICAgJ1RoaXMgaXMgbXVjaCBsb25nZXInLFxuICAgICAgICAgIDJcbiAgICAgICAgKTtcbiAgICAgICAgZXhwZWN0KGxlbmd0aENoYW5nZWQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKDI0KTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnaGFuZGxlcyBtaXhlZCBzcGVjaWFsIGNoYXJhY3RlcnMgY29ycmVjdGx5JywgKCkgPT4ge1xuICAgICAgICBsZW5ndGhDaGFuZ2VkLm1vY2tDbGVhcigpO1xuICAgICAgICBjb25zdCBtaXhlZFNwZWNpYWxDaG9pY2UgPSAnVGVzdCB3aXRoICYgPCA+IFwiIFxcJyBzeW1ib2xzJzsgLy8gMjcgY2hhcnMgd2hlbiBkZWNvZGVkXG5cbiAgICAgICAgY29uc3Qgd3JhcHBlcldpdGhMb3dNYXggPSB3cmFwcGVyKHsgbWF4TGVuZ3RoOiA1IH0pO1xuXG4gICAgICAgIHdyYXBwZXJXaXRoTG93TWF4Lmluc3RhbmNlKCkub25DaG9pY2VDaGFuZ2VkKHsgdmFsdWU6ICcwJywgbGFiZWw6ICdjb3cnIH0sIG1peGVkU3BlY2lhbENob2ljZSwgMCk7XG5cbiAgICAgICAgLy8gMjcgbm9ybWFsIGNoYXJhY3RlcnMgKyA1IGJ1ZmZlciA9IDMyXG4gICAgICAgIGV4cGVjdChsZW5ndGhDaGFuZ2VkKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgzMik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdfQ==
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
6
|
+
|
|
7
|
+
var _enzyme = require("enzyme");
|
|
8
|
+
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
10
|
+
|
|
11
|
+
var _ecrToolbar = require("../ecr-toolbar");
|
|
12
|
+
|
|
13
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
14
|
+
|
|
15
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
16
|
+
|
|
17
|
+
describe('ECRToolbar', function () {
|
|
18
|
+
var onChangeResponse = jest.fn();
|
|
19
|
+
var onToolbarDone = jest.fn();
|
|
20
|
+
|
|
21
|
+
var wrapper = function wrapper() {
|
|
22
|
+
var defaults = {
|
|
23
|
+
onChangeResponse: onChangeResponse,
|
|
24
|
+
onToolbarDone: onToolbarDone,
|
|
25
|
+
classes: {},
|
|
26
|
+
node: {
|
|
27
|
+
key: 1,
|
|
28
|
+
data: {
|
|
29
|
+
get: function get(prop) {
|
|
30
|
+
if (prop === 'index') {
|
|
31
|
+
return '2';
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return 'moon';
|
|
35
|
+
},
|
|
36
|
+
toJSON: jest.fn()
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
value: {
|
|
40
|
+
change: jest.fn().mockReturnValue({
|
|
41
|
+
setNodeByKey: jest.fn().mockReturnValue({
|
|
42
|
+
moveFocusTo: jest.fn().mockReturnValue({
|
|
43
|
+
moveAnchorTo: jest.fn()
|
|
44
|
+
})
|
|
45
|
+
})
|
|
46
|
+
}),
|
|
47
|
+
document: {
|
|
48
|
+
getNextText: jest.fn().mockReturnValue({
|
|
49
|
+
key: 1
|
|
50
|
+
})
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
correctChoice: {
|
|
54
|
+
value: '0',
|
|
55
|
+
label: 'moon'
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
var props = _objectSpread({}, defaults);
|
|
60
|
+
|
|
61
|
+
return (0, _enzyme.shallow)( /*#__PURE__*/_react["default"].createElement(_ecrToolbar.ECRToolbar, props));
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
describe('snapshot', function () {
|
|
65
|
+
it('renders', function () {
|
|
66
|
+
expect(wrapper()).toMatchSnapshot();
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
describe('logic', function () {
|
|
70
|
+
it('onDone: calls onToolbarDone and onChangeResponse', function () {
|
|
71
|
+
var w = wrapper();
|
|
72
|
+
w.instance().onDone();
|
|
73
|
+
expect(onToolbarDone).toBeCalled();
|
|
74
|
+
expect(onChangeResponse).toBeCalled();
|
|
75
|
+
});
|
|
76
|
+
it('onChange', function () {
|
|
77
|
+
var w = wrapper();
|
|
78
|
+
w.instance().onRespAreaChange('test');
|
|
79
|
+
expect(w.instance().state).toEqual({
|
|
80
|
+
markup: '',
|
|
81
|
+
respAreaMarkup: 'test',
|
|
82
|
+
toolbarStyle: {}
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vZWNyLXRvb2xiYXIudGVzdC5qc3giXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJvbkNoYW5nZVJlc3BvbnNlIiwiamVzdCIsImZuIiwib25Ub29sYmFyRG9uZSIsIndyYXBwZXIiLCJkZWZhdWx0cyIsImNsYXNzZXMiLCJub2RlIiwia2V5IiwiZGF0YSIsImdldCIsInByb3AiLCJ0b0pTT04iLCJ2YWx1ZSIsImNoYW5nZSIsIm1vY2tSZXR1cm5WYWx1ZSIsInNldE5vZGVCeUtleSIsIm1vdmVGb2N1c1RvIiwibW92ZUFuY2hvclRvIiwiZG9jdW1lbnQiLCJnZXROZXh0VGV4dCIsImNvcnJlY3RDaG9pY2UiLCJsYWJlbCIsInByb3BzIiwiaXQiLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJ3IiwiaW5zdGFuY2UiLCJvbkRvbmUiLCJ0b0JlQ2FsbGVkIiwib25SZXNwQXJlYUNoYW5nZSIsInN0YXRlIiwidG9FcXVhbCIsIm1hcmt1cCIsInJlc3BBcmVhTWFya3VwIiwidG9vbGJhclN0eWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7Ozs7O0FBRUFBLFFBQVEsQ0FBQyxZQUFELEVBQWUsWUFBTTtBQUMzQixNQUFJQyxnQkFBZ0IsR0FBR0MsSUFBSSxDQUFDQyxFQUFMLEVBQXZCO0FBQ0EsTUFBSUMsYUFBYSxHQUFHRixJQUFJLENBQUNDLEVBQUwsRUFBcEI7O0FBRUEsTUFBTUUsT0FBTyxHQUFHLFNBQVZBLE9BQVUsR0FBTTtBQUNwQixRQUFNQyxRQUFRLEdBQUc7QUFDZkwsTUFBQUEsZ0JBQWdCLEVBQWhCQSxnQkFEZTtBQUVmRyxNQUFBQSxhQUFhLEVBQWJBLGFBRmU7QUFHZkcsTUFBQUEsT0FBTyxFQUFFLEVBSE07QUFJZkMsTUFBQUEsSUFBSSxFQUFFO0FBQ0pDLFFBQUFBLEdBQUcsRUFBRSxDQUREO0FBRUpDLFFBQUFBLElBQUksRUFBRTtBQUNKQyxVQUFBQSxHQUFHLEVBQUUsYUFBQ0MsSUFBRCxFQUFVO0FBQ2IsZ0JBQUlBLElBQUksS0FBSyxPQUFiLEVBQXNCO0FBQ3BCLHFCQUFPLEdBQVA7QUFDRDs7QUFFRCxtQkFBTyxNQUFQO0FBQ0QsV0FQRztBQVFKQyxVQUFBQSxNQUFNLEVBQUVYLElBQUksQ0FBQ0MsRUFBTDtBQVJKO0FBRkYsT0FKUztBQWlCZlcsTUFBQUEsS0FBSyxFQUFFO0FBQ0xDLFFBQUFBLE1BQU0sRUFBRWIsSUFBSSxDQUFDQyxFQUFMLEdBQVVhLGVBQVYsQ0FBMEI7QUFDaENDLFVBQUFBLFlBQVksRUFBRWYsSUFBSSxDQUFDQyxFQUFMLEdBQVVhLGVBQVYsQ0FBMEI7QUFDdENFLFlBQUFBLFdBQVcsRUFBRWhCLElBQUksQ0FBQ0MsRUFBTCxHQUFVYSxlQUFWLENBQTBCO0FBQ3JDRyxjQUFBQSxZQUFZLEVBQUVqQixJQUFJLENBQUNDLEVBQUw7QUFEdUIsYUFBMUI7QUFEeUIsV0FBMUI7QUFEa0IsU0FBMUIsQ0FESDtBQVFMaUIsUUFBQUEsUUFBUSxFQUFFO0FBQ1JDLFVBQUFBLFdBQVcsRUFBRW5CLElBQUksQ0FBQ0MsRUFBTCxHQUFVYSxlQUFWLENBQTBCO0FBQ3JDUCxZQUFBQSxHQUFHLEVBQUU7QUFEZ0MsV0FBMUI7QUFETDtBQVJMLE9BakJRO0FBK0JmYSxNQUFBQSxhQUFhLEVBQUU7QUFBRVIsUUFBQUEsS0FBSyxFQUFFLEdBQVQ7QUFBY1MsUUFBQUEsS0FBSyxFQUFFO0FBQXJCO0FBL0JBLEtBQWpCOztBQWlDQSxRQUFNQyxLQUFLLHFCQUFRbEIsUUFBUixDQUFYOztBQUVBLFdBQU8sbUNBQVEsZ0NBQUMsc0JBQUQsRUFBZ0JrQixLQUFoQixDQUFSLENBQVA7QUFDRCxHQXJDRDs7QUF1Q0F4QixFQUFBQSxRQUFRLENBQUMsVUFBRCxFQUFhLFlBQU07QUFDekJ5QixJQUFBQSxFQUFFLENBQUMsU0FBRCxFQUFZLFlBQU07QUFDbEJDLE1BQUFBLE1BQU0sQ0FBQ3JCLE9BQU8sRUFBUixDQUFOLENBQWtCc0IsZUFBbEI7QUFDRCxLQUZDLENBQUY7QUFHRCxHQUpPLENBQVI7QUFNQTNCLEVBQUFBLFFBQVEsQ0FBQyxPQUFELEVBQVUsWUFBTTtBQUN0QnlCLElBQUFBLEVBQUUsQ0FBQyxrREFBRCxFQUFxRCxZQUFNO0FBQzNELFVBQU1HLENBQUMsR0FBR3ZCLE9BQU8sRUFBakI7QUFFQXVCLE1BQUFBLENBQUMsQ0FBQ0MsUUFBRixHQUFhQyxNQUFiO0FBRUFKLE1BQUFBLE1BQU0sQ0FBQ3RCLGFBQUQsQ0FBTixDQUFzQjJCLFVBQXRCO0FBQ0FMLE1BQUFBLE1BQU0sQ0FBQ3pCLGdCQUFELENBQU4sQ0FBeUI4QixVQUF6QjtBQUNELEtBUEMsQ0FBRjtBQVNBTixJQUFBQSxFQUFFLENBQUMsVUFBRCxFQUFhLFlBQU07QUFDbkIsVUFBTUcsQ0FBQyxHQUFHdkIsT0FBTyxFQUFqQjtBQUVBdUIsTUFBQUEsQ0FBQyxDQUFDQyxRQUFGLEdBQWFHLGdCQUFiLENBQThCLE1BQTlCO0FBRUFOLE1BQUFBLE1BQU0sQ0FBQ0UsQ0FBQyxDQUFDQyxRQUFGLEdBQWFJLEtBQWQsQ0FBTixDQUEyQkMsT0FBM0IsQ0FBbUM7QUFDakNDLFFBQUFBLE1BQU0sRUFBRSxFQUR5QjtBQUVqQ0MsUUFBQUEsY0FBYyxFQUFFLE1BRmlCO0FBR2pDQyxRQUFBQSxZQUFZLEVBQUU7QUFIbUIsT0FBbkM7QUFLRCxLQVZDLENBQUY7QUFXRCxHQXJCTyxDQUFSO0FBc0JELENBdkVPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFsbG93IH0gZnJvbSAnZW56eW1lJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB7IEVDUlRvb2xiYXIgfSBmcm9tICcuLi9lY3ItdG9vbGJhcic7XG5cbmRlc2NyaWJlKCdFQ1JUb29sYmFyJywgKCkgPT4ge1xuICBsZXQgb25DaGFuZ2VSZXNwb25zZSA9IGplc3QuZm4oKTtcbiAgbGV0IG9uVG9vbGJhckRvbmUgPSBqZXN0LmZuKCk7XG5cbiAgY29uc3Qgd3JhcHBlciA9ICgpID0+IHtcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgIG9uQ2hhbmdlUmVzcG9uc2UsXG4gICAgICBvblRvb2xiYXJEb25lLFxuICAgICAgY2xhc3Nlczoge30sXG4gICAgICBub2RlOiB7XG4gICAgICAgIGtleTogMSxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIGdldDogKHByb3ApID0+IHtcbiAgICAgICAgICAgIGlmIChwcm9wID09PSAnaW5kZXgnKSB7XG4gICAgICAgICAgICAgIHJldHVybiAnMic7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiAnbW9vbic7XG4gICAgICAgICAgfSxcbiAgICAgICAgICB0b0pTT046IGplc3QuZm4oKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB2YWx1ZToge1xuICAgICAgICBjaGFuZ2U6IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUoe1xuICAgICAgICAgIHNldE5vZGVCeUtleTogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7XG4gICAgICAgICAgICBtb3ZlRm9jdXNUbzogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7XG4gICAgICAgICAgICAgIG1vdmVBbmNob3JUbzogamVzdC5mbigpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pLFxuICAgICAgICBkb2N1bWVudDoge1xuICAgICAgICAgIGdldE5leHRUZXh0OiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHtcbiAgICAgICAgICAgIGtleTogMSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBjb3JyZWN0Q2hvaWNlOiB7IHZhbHVlOiAnMCcsIGxhYmVsOiAnbW9vbicgfSxcbiAgICB9O1xuICAgIGNvbnN0IHByb3BzID0geyAuLi5kZWZhdWx0cyB9O1xuXG4gICAgcmV0dXJuIHNoYWxsb3coPEVDUlRvb2xiYXIgey4uLnByb3BzfSAvPik7XG4gIH07XG5cbiAgZGVzY3JpYmUoJ3NuYXBzaG90JywgKCkgPT4ge1xuICAgIGl0KCdyZW5kZXJzJywgKCkgPT4ge1xuICAgICAgZXhwZWN0KHdyYXBwZXIoKSkudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdsb2dpYycsICgpID0+IHtcbiAgICBpdCgnb25Eb25lOiBjYWxscyBvblRvb2xiYXJEb25lIGFuZCBvbkNoYW5nZVJlc3BvbnNlJywgKCkgPT4ge1xuICAgICAgY29uc3QgdyA9IHdyYXBwZXIoKTtcblxuICAgICAgdy5pbnN0YW5jZSgpLm9uRG9uZSgpO1xuXG4gICAgICBleHBlY3Qob25Ub29sYmFyRG9uZSkudG9CZUNhbGxlZCgpO1xuICAgICAgZXhwZWN0KG9uQ2hhbmdlUmVzcG9uc2UpLnRvQmVDYWxsZWQoKTtcbiAgICB9KTtcblxuICAgIGl0KCdvbkNoYW5nZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHcgPSB3cmFwcGVyKCk7XG5cbiAgICAgIHcuaW5zdGFuY2UoKS5vblJlc3BBcmVhQ2hhbmdlKCd0ZXN0Jyk7XG5cbiAgICAgIGV4cGVjdCh3Lmluc3RhbmNlKCkuc3RhdGUpLnRvRXF1YWwoe1xuICAgICAgICBtYXJrdXA6ICcnLFxuICAgICAgICByZXNwQXJlYU1hcmt1cDogJ3Rlc3QnLFxuICAgICAgICB0b29sYmFyU3R5bGU6IHt9LFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXX0=
|