@pie-element/explicit-constructed-response 9.3.2-tip-tap.4 → 9.3.2-tip-tap.6

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.
Files changed (38) hide show
  1. package/configure/lib/alternateResponses.js +1 -1
  2. package/configure/lib/alternateResponses.js.map +1 -0
  3. package/configure/lib/alternateSection.js +1 -1
  4. package/configure/lib/alternateSection.js.map +1 -0
  5. package/configure/lib/defaults.js +1 -1
  6. package/configure/lib/defaults.js.map +1 -0
  7. package/configure/lib/ecr-toolbar.js +2 -2
  8. package/configure/lib/ecr-toolbar.js.map +1 -0
  9. package/configure/lib/index.js +1 -1
  10. package/configure/lib/index.js.map +1 -0
  11. package/configure/lib/main.js +1 -1
  12. package/configure/lib/main.js.map +1 -0
  13. package/configure/lib/markupUtils.js +1 -1
  14. package/configure/lib/markupUtils.js.map +1 -0
  15. package/configure/lib/utils.js +1 -1
  16. package/configure/lib/utils.js.map +1 -0
  17. package/configure/package.json +2 -2
  18. package/controller/lib/defaults.js +1 -1
  19. package/controller/lib/defaults.js.map +1 -0
  20. package/controller/lib/index.js +1 -1
  21. package/controller/lib/index.js.map +1 -0
  22. package/lib/index.js +1 -1
  23. package/lib/index.js.map +1 -0
  24. package/lib/main.js +1 -1
  25. package/lib/main.js.map +1 -0
  26. package/lib/print.js +1 -1
  27. package/lib/print.js.map +1 -0
  28. package/package.json +2 -2
  29. package/configure/lib/__tests__/alternateResponses.test.js +0 -335
  30. package/configure/lib/__tests__/alternateSection.test.js +0 -289
  31. package/configure/lib/__tests__/ecr-toolbar.test.js +0 -87
  32. package/configure/lib/__tests__/main.test.js +0 -320
  33. package/configure/lib/__tests__/markupUtils.test.js +0 -56
  34. package/configure/lib/__tests__/utils.test.js +0 -66
  35. package/controller/lib/__tests__/index.spec.js +0 -52
  36. package/controller/lib/__tests__/index.test.js +0 -1205
  37. package/docs/demo/pie.manifest.json +0 -11
  38. package/lib/__tests__/main.test.js +0 -124
@@ -1,289 +0,0 @@
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==
@@ -1,87 +0,0 @@
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=