@micromag/screen-quiz 0.3.310 → 0.3.318
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/assets/css/styles.css +5 -5
- package/es/index.js +362 -419
- package/lib/index.js +360 -417
- package/package.json +15 -14
package/lib/index.js
CHANGED
|
@@ -26,6 +26,7 @@ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
|
|
|
26
26
|
var faCheck = require('@fortawesome/free-solid-svg-icons/faCheck');
|
|
27
27
|
var faTimes = require('@fortawesome/free-solid-svg-icons/faTimes');
|
|
28
28
|
var reactFontawesome = require('@fortawesome/react-fontawesome');
|
|
29
|
+
var web = require('@react-spring/web');
|
|
29
30
|
var Button = require('@micromag/element-button');
|
|
30
31
|
var reactTransitionGroup = require('react-transition-group');
|
|
31
32
|
|
|
@@ -47,7 +48,7 @@ var Text__default = /*#__PURE__*/_interopDefaultLegacy(Text);
|
|
|
47
48
|
var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
|
|
48
49
|
var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
|
|
49
50
|
|
|
50
|
-
var styles$4 = {"emptyAnswer":"micromag-screen-quiz-answers-emptyAnswer","button":"micromag-screen-quiz-answers-button","container":"micromag-screen-quiz-answers-container","items":"micromag-screen-quiz-answers-items","
|
|
51
|
+
var styles$4 = {"emptyAnswer":"micromag-screen-quiz-answers-emptyAnswer","button":"micromag-screen-quiz-answers-button","container":"micromag-screen-quiz-answers-container","items":"micromag-screen-quiz-answers-items","isPlaceholder":"micromag-screen-quiz-answers-isPlaceholder","item":"micromag-screen-quiz-answers-item","withGoodAnswer":"micromag-screen-quiz-answers-withGoodAnswer","resultIcon":"micromag-screen-quiz-answers-resultIcon","answered":"micromag-screen-quiz-answers-answered","rightAnswer":"micromag-screen-quiz-answers-rightAnswer","faIcon":"micromag-screen-quiz-answers-faIcon","itemContent":"micromag-screen-quiz-answers-itemContent"};
|
|
51
52
|
|
|
52
53
|
var propTypes$5 = {
|
|
53
54
|
items: core.PropTypes.quizAnswers.isRequired,
|
|
@@ -62,10 +63,6 @@ var propTypes$5 = {
|
|
|
62
63
|
withoutIcon: PropTypes__default["default"].bool,
|
|
63
64
|
focusable: PropTypes__default["default"].bool,
|
|
64
65
|
collapsed: PropTypes__default["default"].bool,
|
|
65
|
-
transitions: core.PropTypes.transitions,
|
|
66
|
-
transitionPlaying: PropTypes__default["default"].bool,
|
|
67
|
-
transitionStagger: PropTypes__default["default"].number,
|
|
68
|
-
transitionDisabled: PropTypes__default["default"].bool,
|
|
69
66
|
onClick: PropTypes__default["default"].func,
|
|
70
67
|
onCollapse: PropTypes__default["default"].func,
|
|
71
68
|
onCollapsed: PropTypes__default["default"].func,
|
|
@@ -84,100 +81,69 @@ var defaultProps$5 = {
|
|
|
84
81
|
withoutIcon: false,
|
|
85
82
|
focusable: false,
|
|
86
83
|
collapsed: false,
|
|
87
|
-
transitions: null,
|
|
88
|
-
transitionPlaying: false,
|
|
89
|
-
transitionStagger: 100,
|
|
90
|
-
transitionDisabled: false,
|
|
91
84
|
onClick: null,
|
|
92
85
|
onCollapse: null,
|
|
93
86
|
onCollapsed: null,
|
|
94
87
|
onTransitionEnd: null,
|
|
95
88
|
className: null
|
|
96
89
|
};
|
|
97
|
-
|
|
98
90
|
var Answers = function Answers(_ref) {
|
|
99
|
-
var
|
|
100
|
-
|
|
91
|
+
var _ref9;
|
|
101
92
|
var items = _ref.items,
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
onCollapse = _ref.onCollapse,
|
|
119
|
-
onCollapsed = _ref.onCollapsed,
|
|
120
|
-
onTransitionEnd = _ref.onTransitionEnd,
|
|
121
|
-
className = _ref.className;
|
|
122
|
-
|
|
93
|
+
answeredIndex = _ref.answeredIndex,
|
|
94
|
+
answersCollapseDelay = _ref.answersCollapseDelay,
|
|
95
|
+
buttonsStyle = _ref.buttonsStyle,
|
|
96
|
+
buttonsTextStyle = _ref.buttonsTextStyle,
|
|
97
|
+
goodAnswerColor = _ref.goodAnswerColor,
|
|
98
|
+
badAnswerColor = _ref.badAnswerColor,
|
|
99
|
+
showUserAnswer = _ref.showUserAnswer,
|
|
100
|
+
withoutGoodAnswer = _ref.withoutGoodAnswer,
|
|
101
|
+
withoutIcon = _ref.withoutIcon,
|
|
102
|
+
focusable = _ref.focusable,
|
|
103
|
+
initialCollapsed = _ref.collapsed,
|
|
104
|
+
onClick = _ref.onClick,
|
|
105
|
+
onCollapse = _ref.onCollapse,
|
|
106
|
+
onCollapsed = _ref.onCollapsed,
|
|
107
|
+
onTransitionEnd = _ref.onTransitionEnd,
|
|
108
|
+
className = _ref.className;
|
|
123
109
|
var _useScreenRenderConte = contexts.useScreenRenderContext(),
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
110
|
+
isView = _useScreenRenderConte.isView,
|
|
111
|
+
isPreview = _useScreenRenderConte.isPreview,
|
|
112
|
+
isPlaceholder = _useScreenRenderConte.isPlaceholder,
|
|
113
|
+
isEdit = _useScreenRenderConte.isEdit;
|
|
129
114
|
var answered = answeredIndex !== null;
|
|
130
|
-
|
|
131
115
|
var _ref2 = answeredIndex !== null ? items[answeredIndex] : {},
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
var _useDimensionObserver = hooks.useDimensionObserver(),
|
|
138
|
-
answerRef = _useDimensionObserver.ref,
|
|
139
|
-
answerHeight = _useDimensionObserver.height;
|
|
140
|
-
|
|
141
|
-
var _useDimensionObserver2 = hooks.useDimensionObserver(),
|
|
142
|
-
rightAnswerRef = _useDimensionObserver2.ref,
|
|
143
|
-
rightAnswerHeight = _useDimensionObserver2.height;
|
|
144
|
-
|
|
145
|
-
var rightAnswerTop = React.useMemo(function () {
|
|
146
|
-
return rightAnswerRef.current !== null ? rightAnswerRef.current.offsetTop : 0;
|
|
147
|
-
}, [rightAnswerHeight]);
|
|
116
|
+
_ref2$good = _ref2.good,
|
|
117
|
+
hasAnsweredRight = _ref2$good === void 0 ? false : _ref2$good;
|
|
118
|
+
var _useState = React.useState(true),
|
|
119
|
+
_useState2 = _slicedToArray__default["default"](_useState, 1),
|
|
120
|
+
visible = _useState2[0];
|
|
148
121
|
var hasRightAnswer = items !== null && !isPlaceholder ? items.reduce(function (hasGood, answer) {
|
|
149
122
|
var _ref3 = answer || {},
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
123
|
+
_ref3$good = _ref3.good,
|
|
124
|
+
good = _ref3$good === void 0 ? false : _ref3$good;
|
|
153
125
|
return hasGood || good;
|
|
154
126
|
}, false) : false;
|
|
155
127
|
var finalShowUserAnswer = showUserAnswer || !hasRightAnswer;
|
|
156
128
|
var shouldCollapse = !withoutGoodAnswer || finalShowUserAnswer && answeredIndex !== null;
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
answersDidCollapsed = _useState4[0],
|
|
166
|
-
setAnswersDidCollapsed = _useState4[1];
|
|
167
|
-
|
|
129
|
+
var _useState3 = React.useState(answeredIndex !== null),
|
|
130
|
+
_useState4 = _slicedToArray__default["default"](_useState3, 2),
|
|
131
|
+
answersCollapsed = _useState4[0],
|
|
132
|
+
setAnswersCollapsed = _useState4[1];
|
|
133
|
+
var _useState5 = React.useState(initialCollapsed || answeredIndex !== null),
|
|
134
|
+
_useState6 = _slicedToArray__default["default"](_useState5, 2),
|
|
135
|
+
answersDidCollapse = _useState6[0],
|
|
136
|
+
setAnswersDidCollapse = _useState6[1];
|
|
168
137
|
React.useEffect(function () {
|
|
169
138
|
var timeout = null;
|
|
170
|
-
|
|
171
139
|
if (answeredIndex !== null && shouldCollapse) {
|
|
172
140
|
timeout = setTimeout(function () {
|
|
173
141
|
setAnswersCollapsed(true);
|
|
174
|
-
|
|
175
142
|
if (onCollapse !== null) {
|
|
176
143
|
onCollapse();
|
|
177
144
|
}
|
|
178
145
|
}, hasAnsweredRight || finalShowUserAnswer ? 500 : answersCollapseDelay);
|
|
179
146
|
}
|
|
180
|
-
|
|
181
147
|
return function () {
|
|
182
148
|
if (timeout !== null) {
|
|
183
149
|
clearTimeout(timeout);
|
|
@@ -188,58 +154,106 @@ var Answers = function Answers(_ref) {
|
|
|
188
154
|
if (onTransitionEnd !== null) {
|
|
189
155
|
onTransitionEnd();
|
|
190
156
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
setAnswersDidCollapsed(true);
|
|
194
|
-
|
|
157
|
+
if (shouldCollapse && answersCollapsed && !answersDidCollapse) {
|
|
158
|
+
setAnswersDidCollapse(true);
|
|
195
159
|
if (onCollapsed !== null) {
|
|
196
160
|
onCollapsed();
|
|
197
161
|
}
|
|
198
162
|
}
|
|
199
|
-
}, [shouldCollapse, answersCollapsed,
|
|
163
|
+
}, [shouldCollapse, answersCollapsed, answersDidCollapse, setAnswersCollapsed, onCollapsed, onTransitionEnd]);
|
|
164
|
+
var listOfItems = isPlaceholder || isEdit && items.length === 0 ? _toConsumableArray__default["default"](new Array(2)) : items;
|
|
165
|
+
var filteredListOfItems = listOfItems.map(function (answer, answerI) {
|
|
166
|
+
if (!isView) {
|
|
167
|
+
return _objectSpread__default["default"](_objectSpread__default["default"]({}, answer), {}, {
|
|
168
|
+
hidden: false,
|
|
169
|
+
index: answerI
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
var userAnswer = answerI === answeredIndex;
|
|
173
|
+
var _ref4 = answer || {},
|
|
174
|
+
_ref4$good = _ref4.good,
|
|
175
|
+
rightAnswer = _ref4$good === void 0 ? false : _ref4$good;
|
|
176
|
+
if (answersDidCollapse && !rightAnswer && (hasRightAnswer || !userAnswer)) {
|
|
177
|
+
return _objectSpread__default["default"](_objectSpread__default["default"]({}, answer), {}, {
|
|
178
|
+
hidden: true,
|
|
179
|
+
index: answerI
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
if (answersCollapsed && !rightAnswer) {
|
|
183
|
+
return _objectSpread__default["default"](_objectSpread__default["default"]({}, answer), {}, {
|
|
184
|
+
hidden: true,
|
|
185
|
+
index: answerI
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
return _objectSpread__default["default"](_objectSpread__default["default"]({}, answer), {}, {
|
|
189
|
+
hidden: false,
|
|
190
|
+
index: answerI
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
var transitions = web.useTransition(filteredListOfItems.map(function (data) {
|
|
194
|
+
return _objectSpread__default["default"](_objectSpread__default["default"]({}, data), {}, {
|
|
195
|
+
hidden: data.hidden
|
|
196
|
+
});
|
|
197
|
+
}), {
|
|
198
|
+
key: function key(_ref5) {
|
|
199
|
+
var _ref5$index = _ref5.index,
|
|
200
|
+
index = _ref5$index === void 0 ? 0 : _ref5$index;
|
|
201
|
+
return "index-".concat(index);
|
|
202
|
+
},
|
|
203
|
+
leave: function leave() {
|
|
204
|
+
return {
|
|
205
|
+
opacity: 0,
|
|
206
|
+
height: 0
|
|
207
|
+
};
|
|
208
|
+
},
|
|
209
|
+
from: function from(_ref6) {
|
|
210
|
+
var _ref6$hidden = _ref6.hidden,
|
|
211
|
+
hidden = _ref6$hidden === void 0 ? false : _ref6$hidden;
|
|
212
|
+
return {
|
|
213
|
+
opacity: hidden && isView ? 0 : 1,
|
|
214
|
+
height: hidden && isView ? 0 : 'auto'
|
|
215
|
+
};
|
|
216
|
+
},
|
|
217
|
+
enter: function enter(_ref7) {
|
|
218
|
+
var _ref7$hidden = _ref7.hidden,
|
|
219
|
+
hidden = _ref7$hidden === void 0 ? false : _ref7$hidden;
|
|
220
|
+
return {
|
|
221
|
+
opacity: hidden && isView ? 0 : 1,
|
|
222
|
+
height: hidden && isView ? 0 : 'auto'
|
|
223
|
+
};
|
|
224
|
+
},
|
|
225
|
+
update: function update(_ref8) {
|
|
226
|
+
var _ref8$hidden = _ref8.hidden,
|
|
227
|
+
hidden = _ref8$hidden === void 0 ? false : _ref8$hidden;
|
|
228
|
+
return {
|
|
229
|
+
opacity: hidden && isView ? 0 : 1,
|
|
230
|
+
height: hidden && isView ? 0 : 'auto'
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
});
|
|
200
234
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
201
|
-
className: classNames__default["default"]([styles$4.container, (
|
|
202
|
-
|
|
203
|
-
style: answered && !answersDidCollapsed && (isView || isEdit) && shouldCollapse ? {
|
|
204
|
-
height: answersCollapsed ? rightAnswerHeight : answerHeight
|
|
205
|
-
} : null
|
|
206
|
-
}, items !== null || isPlaceholder ? /*#__PURE__*/React__default["default"].createElement("div", {
|
|
235
|
+
className: classNames__default["default"]([styles$4.container, (_ref9 = {}, _defineProperty__default["default"](_ref9, styles$4.answered, answered), _defineProperty__default["default"](_ref9, styles$4.withoutGoodAnswer, withoutGoodAnswer || !hasRightAnswer), _defineProperty__default["default"](_ref9, styles$4.withGoodAnswer, !withoutGoodAnswer && hasRightAnswer), _defineProperty__default["default"](_ref9, styles$4.willCollapse, shouldCollapse && answersCollapsed), _defineProperty__default["default"](_ref9, styles$4.didCollapsed, shouldCollapse && answersDidCollapse), _defineProperty__default["default"](_ref9, styles$4.isPlaceholder, isPlaceholder), _defineProperty__default["default"](_ref9, className, className !== null), _ref9)])
|
|
236
|
+
}, filteredListOfItems !== null || isPlaceholder ? /*#__PURE__*/React__default["default"].createElement("div", {
|
|
207
237
|
className: styles$4.items
|
|
208
|
-
}, (
|
|
209
|
-
var _ref7;
|
|
210
|
-
|
|
238
|
+
}, transitions(function (style, answer, t, answerI) {
|
|
211
239
|
var userAnswer = answerI === answeredIndex;
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
_ref6$textStyle = _ref6.textStyle,
|
|
225
|
-
textStyle = _ref6$textStyle === void 0 ? null : _ref6$textStyle;
|
|
226
|
-
|
|
240
|
+
var _ref10 = answer || {},
|
|
241
|
+
_ref10$good = _ref10.good,
|
|
242
|
+
rightAnswer = _ref10$good === void 0 ? false : _ref10$good,
|
|
243
|
+
_ref10$label = _ref10.label,
|
|
244
|
+
label = _ref10$label === void 0 ? null : _ref10$label,
|
|
245
|
+
_ref10$buttonStyle = _ref10.buttonStyle,
|
|
246
|
+
answerButtonStyle = _ref10$buttonStyle === void 0 ? null : _ref10$buttonStyle,
|
|
247
|
+
_ref10$textStyle = _ref10.textStyle,
|
|
248
|
+
answerButtonTextStyle = _ref10$textStyle === void 0 ? null : _ref10$textStyle;
|
|
249
|
+
var _ref11 = label || {},
|
|
250
|
+
_ref11$textStyle = _ref11.textStyle,
|
|
251
|
+
textStyle = _ref11$textStyle === void 0 ? null : _ref11$textStyle;
|
|
227
252
|
var hasAnswer = utils.isTextFilled(label);
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
if (answersDidCollapsed && !rightAnswer && (hasRightAnswer || !userAnswer)) {
|
|
231
|
-
return null;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
var answerToShow = rightAnswer && hasRightAnswer || !hasRightAnswer && userAnswer && finalShowUserAnswer;
|
|
235
|
-
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
253
|
+
return /*#__PURE__*/React__default["default"].createElement(web.animated.div, {
|
|
236
254
|
key: "answer-".concat(answerI),
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
style: answersCollapsed && answerToShow && !answersDidCollapsed && shouldCollapse ? {
|
|
240
|
-
transform: "translateY(".concat(-rightAnswerTop, "px)")
|
|
241
|
-
} : null,
|
|
242
|
-
onTransitionEnd: answerToShow ? onAnswerTransitionEnd : null
|
|
255
|
+
className: classNames__default["default"]([styles$4.item, _defineProperty__default["default"]({}, styles$4.rightAnswer, rightAnswer && !withoutGoodAnswer)]),
|
|
256
|
+
style: _objectSpread__default["default"]({}, style)
|
|
243
257
|
}, /*#__PURE__*/React__default["default"].createElement("div", {
|
|
244
258
|
className: styles$4.itemContent
|
|
245
259
|
}, /*#__PURE__*/React__default["default"].createElement(components.ScreenElement, {
|
|
@@ -256,17 +270,15 @@ var Answers = function Answers(_ref) {
|
|
|
256
270
|
}),
|
|
257
271
|
emptyClassName: styles$4.emptyAnswer,
|
|
258
272
|
isEmpty: !hasAnswer
|
|
259
|
-
}, hasAnswer ? /*#__PURE__*/React__default["default"].createElement(
|
|
260
|
-
transitions: transitions,
|
|
261
|
-
playing: transitionPlaying,
|
|
262
|
-
delay: (answerI + 1) * transitionStagger,
|
|
263
|
-
disabled: transitionDisabled
|
|
264
|
-
}, /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
|
|
273
|
+
}, hasAnswer ? /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
|
|
265
274
|
className: styles$4.button,
|
|
266
|
-
|
|
267
|
-
|
|
275
|
+
onPointerUp: function onPointerUp(e) {
|
|
276
|
+
if (e.pointerType !== 'mouse' || e.button === 0) {
|
|
277
|
+
onClick(answer, answerI);
|
|
278
|
+
onAnswerTransitionEnd();
|
|
279
|
+
}
|
|
268
280
|
},
|
|
269
|
-
disabled: isPreview || answered,
|
|
281
|
+
disabled: !visible || isPreview || answered,
|
|
270
282
|
focusable: focusable,
|
|
271
283
|
buttonStyle: _objectSpread__default["default"](_objectSpread__default["default"]({}, buttonsStyle), answerButtonStyle),
|
|
272
284
|
textStyle: _objectSpread__default["default"](_objectSpread__default["default"]({}, buttonsTextStyle), answerButtonTextStyle)
|
|
@@ -285,10 +297,9 @@ var Answers = function Answers(_ref) {
|
|
|
285
297
|
})) : null, /*#__PURE__*/React__default["default"].createElement(Text__default["default"], Object.assign({}, label, {
|
|
286
298
|
className: styles$4.optionLabel,
|
|
287
299
|
textStyle: _objectSpread__default["default"](_objectSpread__default["default"](_objectSpread__default["default"]({}, textStyle), buttonsTextStyle), answerButtonTextStyle)
|
|
288
|
-
})))
|
|
300
|
+
}))) : null)));
|
|
289
301
|
})) : null);
|
|
290
302
|
};
|
|
291
|
-
|
|
292
303
|
Answers.propTypes = propTypes$5;
|
|
293
304
|
Answers.defaultProps = defaultProps$5;
|
|
294
305
|
|
|
@@ -353,62 +364,58 @@ var defaultProps$4 = {
|
|
|
353
364
|
className: null,
|
|
354
365
|
style: null
|
|
355
366
|
};
|
|
356
|
-
|
|
357
367
|
var Question = function Question(_ref) {
|
|
358
|
-
var
|
|
359
|
-
|
|
368
|
+
var _ref4;
|
|
360
369
|
var question = _ref.question,
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
370
|
+
answers = _ref.answers,
|
|
371
|
+
result = _ref.result,
|
|
372
|
+
index = _ref.index,
|
|
373
|
+
totalCount = _ref.totalCount,
|
|
374
|
+
answeredIndex = _ref.answeredIndex,
|
|
375
|
+
buttonsStyle = _ref.buttonsStyle,
|
|
376
|
+
buttonsTextStyle = _ref.buttonsTextStyle,
|
|
377
|
+
questionsHeadingStyle = _ref.questionsHeadingStyle,
|
|
378
|
+
goodAnswerColor = _ref.goodAnswerColor,
|
|
379
|
+
badAnswerColor = _ref.badAnswerColor,
|
|
380
|
+
focusable = _ref.focusable,
|
|
381
|
+
showInstantAnswer = _ref.showInstantAnswer,
|
|
382
|
+
withResult = _ref.withResult,
|
|
383
|
+
withoutGoodAnswer = _ref.withoutGoodAnswer,
|
|
384
|
+
withoutTrueFalse = _ref.withoutTrueFalse,
|
|
385
|
+
withoutIndex = _ref.withoutIndex,
|
|
386
|
+
layout = _ref.layout,
|
|
387
|
+
transitions = _ref.transitions,
|
|
388
|
+
transitionPlaying = _ref.transitionPlaying,
|
|
389
|
+
transitionStagger = _ref.transitionStagger,
|
|
390
|
+
transitionDisabled = _ref.transitionDisabled,
|
|
391
|
+
onAnswerClick = _ref.onAnswerClick,
|
|
392
|
+
onAnswerTransitionEnd = _ref.onAnswerTransitionEnd,
|
|
393
|
+
className = _ref.className,
|
|
394
|
+
style = _ref.style;
|
|
387
395
|
var _useScreenRenderConte = contexts.useScreenRenderContext(),
|
|
388
|
-
|
|
389
|
-
|
|
396
|
+
isPlaceholder = _useScreenRenderConte.isPlaceholder;
|
|
390
397
|
var isSplitted = layout === 'split';
|
|
391
398
|
var verticalAlign = isSplitted ? null : layout;
|
|
392
399
|
var hasQuestion = utils.isTextFilled(question);
|
|
393
|
-
|
|
394
400
|
var _ref2 = question || {},
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
var hasResult = utils.isTextFilled(result);
|
|
399
|
-
|
|
401
|
+
_ref2$textStyle = _ref2.textStyle,
|
|
402
|
+
questionTextStyle = _ref2$textStyle === void 0 ? null : _ref2$textStyle;
|
|
400
403
|
var _useState = React.useState(showInstantAnswer),
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
404
|
+
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
405
|
+
resultVisible = _useState2[0],
|
|
406
|
+
setResultVisible = _useState2[1];
|
|
405
407
|
var answered = answeredIndex !== null;
|
|
408
|
+
var answer = answeredIndex !== null && answers[answeredIndex] ? answers[answeredIndex] : null;
|
|
409
|
+
var _ref3 = answer || {},
|
|
410
|
+
_ref3$customAnswerLab = _ref3.customAnswerLabel,
|
|
411
|
+
customAnswerLabel = _ref3$customAnswerLab === void 0 ? null : _ref3$customAnswerLab;
|
|
412
|
+
var hasResult = customAnswerLabel !== null || utils.isTextFilled(result);
|
|
406
413
|
var onAnswersCollapse = React.useCallback(function () {
|
|
407
414
|
setResultVisible(true);
|
|
408
415
|
}, [setResultVisible]);
|
|
409
416
|
var hasIndex = index !== null && totalCount !== null;
|
|
410
417
|
return /*#__PURE__*/React__default["default"].createElement(Layout__default["default"], {
|
|
411
|
-
className: classNames__default["default"]([styles$3.container, (
|
|
418
|
+
className: classNames__default["default"]([styles$3.container, (_ref4 = {}, _defineProperty__default["default"](_ref4, styles$3.isPlaceholder, isPlaceholder), _defineProperty__default["default"](_ref4, styles$3.resultVisible, resultVisible), _defineProperty__default["default"](_ref4, className, className !== null), _ref4)]),
|
|
412
419
|
verticalAlign: verticalAlign,
|
|
413
420
|
style: style
|
|
414
421
|
}, [!withoutIndex && hasIndex ? /*#__PURE__*/React__default["default"].createElement(components.ScreenElement, {
|
|
@@ -482,15 +489,14 @@ var Question = function Question(_ref) {
|
|
|
482
489
|
playing: transitionPlaying,
|
|
483
490
|
delay: (1 + answers.length) * transitionStagger,
|
|
484
491
|
disabled: transitionDisabled
|
|
485
|
-
}, /*#__PURE__*/React__default["default"].createElement(Text__default["default"], Object.assign({}, result, {
|
|
492
|
+
}, /*#__PURE__*/React__default["default"].createElement(Text__default["default"], Object.assign({}, customAnswerLabel || result, {
|
|
486
493
|
className: styles$3.resultText
|
|
487
494
|
}))) : null))) : null]);
|
|
488
495
|
};
|
|
489
|
-
|
|
490
496
|
Question.propTypes = propTypes$4;
|
|
491
497
|
Question.defaultProps = defaultProps$4;
|
|
492
498
|
|
|
493
|
-
var styles$2 = {"container":"micromag-screen-quiz-container","background":"micromag-screen-quiz-background","disabled":"micromag-screen-quiz-disabled","hidden":"micromag-screen-quiz-hidden","placeholder":"micromag-screen-quiz-placeholder","content":"micromag-screen-quiz-content","layout":"micromag-screen-quiz-layout","callToAction":"micromag-screen-quiz-callToAction","transition":"micromag-screen-quiz-transition","
|
|
499
|
+
var styles$2 = {"container":"micromag-screen-quiz-container","background":"micromag-screen-quiz-background","disabled":"micromag-screen-quiz-disabled","hidden":"micromag-screen-quiz-hidden","placeholder":"micromag-screen-quiz-placeholder","content":"micromag-screen-quiz-content","layout":"micromag-screen-quiz-layout","callToAction":"micromag-screen-quiz-callToAction","transition":"micromag-screen-quiz-transition","question":"micromag-screen-quiz-question","results":"micromag-screen-quiz-results","intro":"micromag-screen-quiz-intro","enter":"micromag-screen-quiz-enter","left":"micromag-screen-quiz-left","enterActive":"micromag-screen-quiz-enterActive","exit":"micromag-screen-quiz-exit","exitActive":"micromag-screen-quiz-exitActive"};
|
|
494
500
|
|
|
495
501
|
var propTypes$3 = {
|
|
496
502
|
id: PropTypes__default["default"].string,
|
|
@@ -511,6 +517,7 @@ var propTypes$3 = {
|
|
|
511
517
|
callToAction: core.PropTypes.callToAction,
|
|
512
518
|
current: PropTypes__default["default"].bool,
|
|
513
519
|
active: PropTypes__default["default"].bool,
|
|
520
|
+
ready: PropTypes__default["default"].bool,
|
|
514
521
|
transitions: core.PropTypes.transitions,
|
|
515
522
|
transitionStagger: PropTypes__default["default"].number,
|
|
516
523
|
type: PropTypes__default["default"].string,
|
|
@@ -532,94 +539,87 @@ var defaultProps$3 = {
|
|
|
532
539
|
callToAction: null,
|
|
533
540
|
current: true,
|
|
534
541
|
active: true,
|
|
542
|
+
ready: true,
|
|
535
543
|
transitions: null,
|
|
536
544
|
transitionStagger: 100,
|
|
537
545
|
type: null,
|
|
538
546
|
className: null
|
|
539
547
|
};
|
|
540
|
-
|
|
541
548
|
var QuizScreen = function QuizScreen(_ref) {
|
|
549
|
+
var _ref6;
|
|
542
550
|
var id = _ref.id,
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
551
|
+
layout = _ref.layout,
|
|
552
|
+
question = _ref.question,
|
|
553
|
+
answers = _ref.answers,
|
|
554
|
+
result = _ref.result,
|
|
555
|
+
buttonsStyle = _ref.buttonsStyle,
|
|
556
|
+
buttonsTextStyle = _ref.buttonsTextStyle,
|
|
557
|
+
goodAnswerColor = _ref.goodAnswerColor,
|
|
558
|
+
badAnswerColor = _ref.badAnswerColor,
|
|
559
|
+
withoutTrueFalse = _ref.withoutTrueFalse,
|
|
560
|
+
spacing = _ref.spacing,
|
|
561
|
+
background = _ref.background,
|
|
562
|
+
callToAction = _ref.callToAction,
|
|
563
|
+
current = _ref.current,
|
|
564
|
+
active = _ref.active,
|
|
565
|
+
ready = _ref.ready,
|
|
566
|
+
transitions = _ref.transitions,
|
|
567
|
+
transitionStagger = _ref.transitionStagger,
|
|
568
|
+
type = _ref.type,
|
|
569
|
+
className = _ref.className;
|
|
561
570
|
var screenId = id || 'screen-id';
|
|
562
571
|
var trackScreenEvent = hooks.useTrackScreenEvent(type);
|
|
563
|
-
|
|
564
572
|
var _useScreenSize = contexts.useScreenSize(),
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
573
|
+
width = _useScreenSize.width,
|
|
574
|
+
height = _useScreenSize.height,
|
|
575
|
+
resolution = _useScreenSize.resolution;
|
|
569
576
|
var _useScreenRenderConte = contexts.useScreenRenderContext(),
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
+
isView = _useScreenRenderConte.isView,
|
|
578
|
+
isPreview = _useScreenRenderConte.isPreview,
|
|
579
|
+
isPlaceholder = _useScreenRenderConte.isPlaceholder,
|
|
580
|
+
isEdit = _useScreenRenderConte.isEdit,
|
|
581
|
+
isStatic = _useScreenRenderConte.isStatic,
|
|
582
|
+
isCapture = _useScreenRenderConte.isCapture;
|
|
583
|
+
var clickDisabled = !ready;
|
|
577
584
|
var _useViewerContext = contexts.useViewerContext(),
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
585
|
+
viewerTopHeight = _useViewerContext.topHeight,
|
|
586
|
+
viewerBottomHeight = _useViewerContext.bottomHeight,
|
|
587
|
+
viewerBottomSidesWidth = _useViewerContext.bottomSidesWidth;
|
|
582
588
|
var _useViewerWebView = contexts.useViewerWebView(),
|
|
583
|
-
|
|
584
|
-
|
|
589
|
+
openWebView = _useViewerWebView.open;
|
|
585
590
|
var _usePlaybackContext = contexts.usePlaybackContext(),
|
|
586
|
-
|
|
587
|
-
|
|
591
|
+
muted = _usePlaybackContext.muted;
|
|
588
592
|
var mediaRef = contexts.usePlaybackMediaRef(current);
|
|
589
|
-
var transitionPlaying = current;
|
|
593
|
+
var transitionPlaying = current && ready;
|
|
590
594
|
var transitionDisabled = isStatic || isCapture || isPlaceholder || isPreview || isEdit;
|
|
591
595
|
var backgroundPlaying = current && (isView || isEdit);
|
|
592
|
-
var mediaShouldLoad = current || active;
|
|
596
|
+
var mediaShouldLoad = current || active;
|
|
593
597
|
|
|
598
|
+
// Call to Action
|
|
594
599
|
var _ref2 = callToAction || {},
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
600
|
+
_ref2$active = _ref2.active,
|
|
601
|
+
hasCallToAction = _ref2$active === void 0 ? false : _ref2$active;
|
|
598
602
|
var _useDimensionObserver = hooks.useDimensionObserver(),
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
+
callToActionRef = _useDimensionObserver.ref,
|
|
604
|
+
_useDimensionObserver2 = _useDimensionObserver.height,
|
|
605
|
+
callToActionHeight = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2;
|
|
603
606
|
var showInstantAnswer = isStatic || isCapture;
|
|
604
607
|
var goodAnswerIndex = answers !== null ? answers.findIndex(function (answer) {
|
|
605
608
|
return answer !== null && answer.good;
|
|
606
609
|
}) : null;
|
|
607
|
-
|
|
610
|
+
var withoutGoodAnswer = goodAnswerIndex === null || goodAnswerIndex === -1;
|
|
608
611
|
var _useState = React.useState(showInstantAnswer ? goodAnswerIndex : null),
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
612
|
+
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
613
|
+
userAnswerIndex = _useState2[0],
|
|
614
|
+
setUserAnswerIndex = _useState2[1];
|
|
613
615
|
var _useQuizCreate = data.useQuizCreate({
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
616
|
+
screenId: screenId
|
|
617
|
+
}),
|
|
618
|
+
submitQuiz = _useQuizCreate.create;
|
|
618
619
|
var onAnswerClick = React.useCallback(function (answer, answerI) {
|
|
619
620
|
if (userAnswerIndex !== null) {
|
|
620
621
|
return;
|
|
621
622
|
}
|
|
622
|
-
|
|
623
623
|
setUserAnswerIndex(answerI);
|
|
624
624
|
trackScreenEvent('click_answer', "".concat(userAnswerIndex + 1, ": ").concat(answer.label.body), {
|
|
625
625
|
answer: answer,
|
|
@@ -634,15 +634,13 @@ var QuizScreen = function QuizScreen(_ref) {
|
|
|
634
634
|
React.useEffect(function () {
|
|
635
635
|
if (userAnswerIndex !== null) {
|
|
636
636
|
var _ref3 = userAnswerIndex !== null && answers ? answers[userAnswerIndex] : {},
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
637
|
+
_ref3$good = _ref3.good,
|
|
638
|
+
isGood = _ref3$good === void 0 ? false : _ref3$good,
|
|
639
|
+
_ref3$label = _ref3.label,
|
|
640
|
+
label = _ref3$label === void 0 ? {} : _ref3$label;
|
|
642
641
|
var _ref4 = label || {},
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
642
|
+
_ref4$body = _ref4.body,
|
|
643
|
+
body = _ref4$body === void 0 ? '' : _ref4$body;
|
|
646
644
|
submitQuiz({
|
|
647
645
|
choice: body || userAnswerIndex,
|
|
648
646
|
value: isGood ? 1 : 0
|
|
@@ -650,19 +648,15 @@ var QuizScreen = function QuizScreen(_ref) {
|
|
|
650
648
|
}
|
|
651
649
|
}, [userAnswerIndex, answers, submitQuiz]);
|
|
652
650
|
var scrollingDisabled = !isEdit && transitionDisabled || !current;
|
|
653
|
-
|
|
654
651
|
var _useState3 = React.useState(false),
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
652
|
+
_useState4 = _slicedToArray__default["default"](_useState3, 2),
|
|
653
|
+
scrolledBottom = _useState4[0],
|
|
654
|
+
setScrolledBottom = _useState4[1];
|
|
659
655
|
var onScrolledBottom = React.useCallback(function (_ref5) {
|
|
660
656
|
var initial = _ref5.initial;
|
|
661
|
-
|
|
662
657
|
if (initial) {
|
|
663
658
|
trackScreenEvent('scroll', 'Screen');
|
|
664
659
|
}
|
|
665
|
-
|
|
666
660
|
setScrolledBottom(true);
|
|
667
661
|
}, [trackScreenEvent]);
|
|
668
662
|
var onScrolledNotBottom = React.useCallback(function () {
|
|
@@ -671,7 +665,7 @@ var QuizScreen = function QuizScreen(_ref) {
|
|
|
671
665
|
var isSplitted = layout === 'split';
|
|
672
666
|
var verticalAlign = isSplitted ? null : layout;
|
|
673
667
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
674
|
-
className: classNames__default["default"]([styles$2.container, _defineProperty__default["default"](
|
|
668
|
+
className: classNames__default["default"]([styles$2.container, (_ref6 = {}, _defineProperty__default["default"](_ref6, styles$2.disabled, clickDisabled), _defineProperty__default["default"](_ref6, className, className !== null), _ref6)]),
|
|
675
669
|
"data-screen-ready": true
|
|
676
670
|
}, /*#__PURE__*/React__default["default"].createElement(Container__default["default"], {
|
|
677
671
|
width: width,
|
|
@@ -692,6 +686,7 @@ var QuizScreen = function QuizScreen(_ref) {
|
|
|
692
686
|
goodAnswerColor: goodAnswerColor,
|
|
693
687
|
badAnswerColor: badAnswerColor,
|
|
694
688
|
withoutTrueFalse: withoutTrueFalse,
|
|
689
|
+
withoutGoodAnswer: withoutGoodAnswer,
|
|
695
690
|
focusable: current && isView,
|
|
696
691
|
showInstantAnswer: showInstantAnswer,
|
|
697
692
|
withResult: true,
|
|
@@ -734,11 +729,10 @@ var QuizScreen = function QuizScreen(_ref) {
|
|
|
734
729
|
className: styles$2.background
|
|
735
730
|
}) : null);
|
|
736
731
|
};
|
|
737
|
-
|
|
738
732
|
QuizScreen.propTypes = propTypes$3;
|
|
739
733
|
QuizScreen.defaultProps = defaultProps$3;
|
|
740
734
|
|
|
741
|
-
var styles$1 = {"container":"micromag-screen-quiz-results-container","
|
|
735
|
+
var styles$1 = {"container":"micromag-screen-quiz-results-container","emptyTitle":"micromag-screen-quiz-results-emptyTitle","emptyDescription":"micromag-screen-quiz-results-emptyDescription","title":"micromag-screen-quiz-results-title","isPlaceholder":"micromag-screen-quiz-results-isPlaceholder"};
|
|
742
736
|
|
|
743
737
|
var propTypes$2 = {
|
|
744
738
|
title: core.PropTypes.textElement,
|
|
@@ -766,33 +760,28 @@ var defaultProps$2 = {
|
|
|
766
760
|
className: null,
|
|
767
761
|
style: null
|
|
768
762
|
};
|
|
769
|
-
|
|
770
763
|
var Results = function Results(_ref) {
|
|
771
764
|
var layout = _ref.layout,
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
765
|
+
title = _ref.title,
|
|
766
|
+
description = _ref.description,
|
|
767
|
+
resultsHeadingStyle = _ref.resultsHeadingStyle,
|
|
768
|
+
resultsTextStyle = _ref.resultsTextStyle,
|
|
769
|
+
transitions = _ref.transitions,
|
|
770
|
+
transitionPlaying = _ref.transitionPlaying,
|
|
771
|
+
transitionStagger = _ref.transitionStagger,
|
|
772
|
+
transitionDisabled = _ref.transitionDisabled,
|
|
773
|
+
className = _ref.className,
|
|
774
|
+
style = _ref.style;
|
|
782
775
|
var isSplitted = layout === 'split';
|
|
783
776
|
var verticalAlign = isSplitted ? null : layout;
|
|
784
777
|
var hasTitle = utils.isTextFilled(title);
|
|
785
|
-
|
|
786
778
|
var _ref2 = title || {},
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
779
|
+
_ref2$textStyle = _ref2.textStyle,
|
|
780
|
+
titleTextStyle = _ref2$textStyle === void 0 ? null : _ref2$textStyle;
|
|
790
781
|
var hasDescription = utils.isTextFilled(description);
|
|
791
|
-
|
|
792
782
|
var _ref3 = description || {},
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
783
|
+
_ref3$textStyle = _ref3.textStyle,
|
|
784
|
+
descriptionTextStyle = _ref3$textStyle === void 0 ? null : _ref3$textStyle;
|
|
796
785
|
return /*#__PURE__*/React__default["default"].createElement(Layout__default["default"], {
|
|
797
786
|
className: classNames__default["default"]([styles$1.container, _defineProperty__default["default"]({}, className, className !== null)]),
|
|
798
787
|
fullscreen: true,
|
|
@@ -841,11 +830,10 @@ var Results = function Results(_ref) {
|
|
|
841
830
|
textStyle: _objectSpread__default["default"](_objectSpread__default["default"]({}, resultsTextStyle), descriptionTextStyle)
|
|
842
831
|
}))) : null)]);
|
|
843
832
|
};
|
|
844
|
-
|
|
845
833
|
Results.propTypes = propTypes$2;
|
|
846
834
|
Results.defaultProps = defaultProps$2;
|
|
847
835
|
|
|
848
|
-
var styles = {"container":"micromag-screen-quiz-title-container","
|
|
836
|
+
var styles = {"container":"micromag-screen-quiz-title-container","emptyTitle":"micromag-screen-quiz-title-emptyTitle","emptyDescription":"micromag-screen-quiz-title-emptyDescription","title":"micromag-screen-quiz-title-title","description":"micromag-screen-quiz-title-description","isPlaceholder":"micromag-screen-quiz-title-isPlaceholder"};
|
|
849
837
|
|
|
850
838
|
var propTypes$1 = {
|
|
851
839
|
title: core.PropTypes.textElement,
|
|
@@ -875,25 +863,22 @@ var defaultProps$1 = {
|
|
|
875
863
|
style: null,
|
|
876
864
|
onClickButton: null
|
|
877
865
|
};
|
|
878
|
-
|
|
879
866
|
var Title = function Title(_ref) {
|
|
880
867
|
var layout = _ref.layout,
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
868
|
+
title = _ref.title,
|
|
869
|
+
description = _ref.description,
|
|
870
|
+
button = _ref.button,
|
|
871
|
+
focusable = _ref.focusable,
|
|
872
|
+
transitions = _ref.transitions,
|
|
873
|
+
transitionPlaying = _ref.transitionPlaying,
|
|
874
|
+
transitionStagger = _ref.transitionStagger,
|
|
875
|
+
transitionDisabled = _ref.transitionDisabled,
|
|
876
|
+
className = _ref.className,
|
|
877
|
+
style = _ref.style,
|
|
878
|
+
onClickButton = _ref.onClickButton;
|
|
893
879
|
var _useScreenRenderConte = contexts.useScreenRenderContext(),
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
880
|
+
isPreview = _useScreenRenderConte.isPreview,
|
|
881
|
+
isEdit = _useScreenRenderConte.isEdit;
|
|
897
882
|
var isSplitted = layout === 'split';
|
|
898
883
|
var verticalAlign = isSplitted ? null : layout;
|
|
899
884
|
var hasTitle = utils.isTextFilled(title);
|
|
@@ -967,7 +952,6 @@ var Title = function Title(_ref) {
|
|
|
967
952
|
}]
|
|
968
953
|
}))))]);
|
|
969
954
|
};
|
|
970
|
-
|
|
971
955
|
Title.propTypes = propTypes$1;
|
|
972
956
|
Title.defaultProps = defaultProps$1;
|
|
973
957
|
|
|
@@ -1031,106 +1015,90 @@ var defaultProps = {
|
|
|
1031
1015
|
type: null,
|
|
1032
1016
|
className: null
|
|
1033
1017
|
};
|
|
1034
|
-
|
|
1035
1018
|
var QuizMultipleScreen = function QuizMultipleScreen(_ref) {
|
|
1036
1019
|
var _ref12;
|
|
1037
|
-
|
|
1038
1020
|
var id = _ref.id,
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1021
|
+
layout = _ref.layout,
|
|
1022
|
+
introLayout = _ref.introLayout,
|
|
1023
|
+
title = _ref.title,
|
|
1024
|
+
description = _ref.description,
|
|
1025
|
+
questions = _ref.questions,
|
|
1026
|
+
results = _ref.results,
|
|
1027
|
+
buttonsStyle = _ref.buttonsStyle,
|
|
1028
|
+
buttonsTextStyle = _ref.buttonsTextStyle,
|
|
1029
|
+
questionsHeadingStyle = _ref.questionsHeadingStyle,
|
|
1030
|
+
resultsHeadingStyle = _ref.resultsHeadingStyle,
|
|
1031
|
+
resultsTextStyle = _ref.resultsTextStyle,
|
|
1032
|
+
goodAnswerColor = _ref.goodAnswerColor,
|
|
1033
|
+
badAnswerColor = _ref.badAnswerColor,
|
|
1034
|
+
spacing = _ref.spacing,
|
|
1035
|
+
background = _ref.background,
|
|
1036
|
+
introBackground = _ref.introBackground,
|
|
1037
|
+
introButton = _ref.introButton,
|
|
1038
|
+
callToAction = _ref.callToAction,
|
|
1039
|
+
current = _ref.current,
|
|
1040
|
+
active = _ref.active,
|
|
1041
|
+
transitions = _ref.transitions,
|
|
1042
|
+
transitionStagger = _ref.transitionStagger,
|
|
1043
|
+
type = _ref.type,
|
|
1044
|
+
className = _ref.className;
|
|
1063
1045
|
var screenId = id || 'screen-id';
|
|
1064
1046
|
var trackScreenEvent = hooks.useTrackScreenEvent(type);
|
|
1065
|
-
|
|
1066
1047
|
var _useScreenSize = contexts.useScreenSize(),
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1048
|
+
width = _useScreenSize.width,
|
|
1049
|
+
height = _useScreenSize.height,
|
|
1050
|
+
resolution = _useScreenSize.resolution;
|
|
1071
1051
|
var _useViewerContext = contexts.useViewerContext(),
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1052
|
+
viewerTopHeight = _useViewerContext.topHeight,
|
|
1053
|
+
viewerBottomHeight = _useViewerContext.bottomHeight,
|
|
1054
|
+
viewerBottomSidesWidth = _useViewerContext.bottomSidesWidth;
|
|
1076
1055
|
var _useScreenRenderConte = contexts.useScreenRenderContext(),
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1056
|
+
isView = _useScreenRenderConte.isView,
|
|
1057
|
+
isPreview = _useScreenRenderConte.isPreview,
|
|
1058
|
+
isPlaceholder = _useScreenRenderConte.isPlaceholder,
|
|
1059
|
+
isEdit = _useScreenRenderConte.isEdit,
|
|
1060
|
+
isStatic = _useScreenRenderConte.isStatic,
|
|
1061
|
+
isCapture = _useScreenRenderConte.isCapture;
|
|
1084
1062
|
var _usePlaybackContext = contexts.usePlaybackContext(),
|
|
1085
|
-
|
|
1086
|
-
|
|
1063
|
+
muted = _usePlaybackContext.muted;
|
|
1087
1064
|
var mediaRef = contexts.usePlaybackMediaRef(current);
|
|
1088
|
-
|
|
1089
1065
|
var _useViewerWebView = contexts.useViewerWebView(),
|
|
1090
|
-
|
|
1091
|
-
|
|
1066
|
+
openWebView = _useViewerWebView.open;
|
|
1092
1067
|
var screenState = contexts.useScreenState();
|
|
1093
|
-
|
|
1094
1068
|
var _ref2 = screenState !== null ? screenState.split('.') : [],
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1069
|
+
_ref3 = _slicedToArray__default["default"](_ref2, 2),
|
|
1070
|
+
_ref3$ = _ref3[0],
|
|
1071
|
+
stateId = _ref3$ === void 0 ? null : _ref3$,
|
|
1072
|
+
_ref3$2 = _ref3[1],
|
|
1073
|
+
stateIndex = _ref3$2 === void 0 ? 0 : _ref3$2;
|
|
1101
1074
|
var transitionPlaying = current;
|
|
1102
1075
|
var transitionDisabled = isStatic || isCapture || isPlaceholder || isPreview || isEdit;
|
|
1103
1076
|
var backgroundPlaying = current && (isView || isEdit);
|
|
1104
|
-
var backgroundShouldLoad = current || active;
|
|
1077
|
+
var backgroundShouldLoad = current || active;
|
|
1105
1078
|
|
|
1106
|
-
|
|
1079
|
+
// Call to Action
|
|
1107
1080
|
|
|
1081
|
+
var hasCallToAction = callToAction !== null && callToAction.active === true;
|
|
1108
1082
|
var _useDimensionObserver = hooks.useDimensionObserver(),
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1083
|
+
callToActionRef = _useDimensionObserver.ref,
|
|
1084
|
+
_useDimensionObserver2 = _useDimensionObserver.height,
|
|
1085
|
+
callToActionHeight = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2;
|
|
1113
1086
|
var showInstantAnswer = isStatic || isCapture;
|
|
1114
1087
|
var hasIntro = title !== null || description !== null || isEdit || stateId === 'intro';
|
|
1115
|
-
|
|
1116
1088
|
var _useState = React.useState(null),
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1089
|
+
_useState2 = _slicedToArray__default["default"](_useState, 2),
|
|
1090
|
+
userAnswers = _useState2[0],
|
|
1091
|
+
setUserAnswers = _useState2[1];
|
|
1121
1092
|
var initialQuestionIndex = 'intro';
|
|
1122
|
-
|
|
1123
1093
|
if (stateId !== null) {
|
|
1124
1094
|
initialQuestionIndex = stateId === 'questions' ? parseInt(stateIndex, 10) : stateId;
|
|
1125
1095
|
} else if (isPlaceholder || !hasIntro) {
|
|
1126
1096
|
initialQuestionIndex = 0;
|
|
1127
1097
|
}
|
|
1128
|
-
|
|
1129
1098
|
var _useState3 = React.useState(initialQuestionIndex),
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1099
|
+
_useState4 = _slicedToArray__default["default"](_useState3, 2),
|
|
1100
|
+
questionIndex = _useState4[0],
|
|
1101
|
+
setQuestionIndex = _useState4[1];
|
|
1134
1102
|
React.useEffect(function () {
|
|
1135
1103
|
if (isPreview && hasIntro && questionIndex !== 'intro') {
|
|
1136
1104
|
setQuestionIndex('intro');
|
|
@@ -1148,7 +1116,6 @@ var QuizMultipleScreen = function QuizMultipleScreen(_ref) {
|
|
|
1148
1116
|
var onAnswerTransitionEnd = React.useCallback(function () {
|
|
1149
1117
|
var nextIndex = questionIndex + 1;
|
|
1150
1118
|
var questionsCount = questions.length;
|
|
1151
|
-
|
|
1152
1119
|
if (nextIndex < questionsCount) {
|
|
1153
1120
|
setQuestionIndex(nextIndex);
|
|
1154
1121
|
} else if (nextIndex === questionsCount) {
|
|
@@ -1166,26 +1133,23 @@ var QuizMultipleScreen = function QuizMultipleScreen(_ref) {
|
|
|
1166
1133
|
var hasQuestions = questions !== null && questions.length > 0;
|
|
1167
1134
|
var currentQuestion = hasQuestions ? questions[questionIndex] || {} : {};
|
|
1168
1135
|
var _currentQuestion$text = currentQuestion.text,
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1136
|
+
text = _currentQuestion$text === void 0 ? null : _currentQuestion$text,
|
|
1137
|
+
_currentQuestion$answ = currentQuestion.answers,
|
|
1138
|
+
answers = _currentQuestion$answ === void 0 ? [] : _currentQuestion$answ,
|
|
1139
|
+
_currentQuestion$back = currentQuestion.background,
|
|
1140
|
+
questionBackground = _currentQuestion$back === void 0 ? null : _currentQuestion$back,
|
|
1141
|
+
_currentQuestion$layo = currentQuestion.layout,
|
|
1142
|
+
questionLayout = _currentQuestion$layo === void 0 ? null : _currentQuestion$layo;
|
|
1176
1143
|
var currentAnsweredIndex = userAnswers !== null && typeof userAnswers[questionIndex] !== 'undefined' ? userAnswers[questionIndex] : null;
|
|
1177
1144
|
var currentPoints = React.useMemo(function () {
|
|
1178
1145
|
return userAnswers !== null ? Object.keys(userAnswers).reduce(function (totalPoints, answerQuestionIndex) {
|
|
1179
1146
|
var _ref4 = questions !== null ? questions[answerQuestionIndex] || {} : {},
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1147
|
+
_ref4$answers = _ref4.answers,
|
|
1148
|
+
questionAnswers = _ref4$answers === void 0 ? [] : _ref4$answers;
|
|
1183
1149
|
var answerIndex = userAnswers[answerQuestionIndex];
|
|
1184
|
-
|
|
1185
1150
|
var _ref5 = questionAnswers[answerIndex] || {},
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1151
|
+
_ref5$points = _ref5.points,
|
|
1152
|
+
points = _ref5$points === void 0 ? 0 : _ref5$points;
|
|
1189
1153
|
return points + totalPoints;
|
|
1190
1154
|
}, 0) : 0;
|
|
1191
1155
|
}, [userAnswers, questions]);
|
|
@@ -1196,62 +1160,52 @@ var QuizMultipleScreen = function QuizMultipleScreen(_ref) {
|
|
|
1196
1160
|
if (!isResults) {
|
|
1197
1161
|
return null;
|
|
1198
1162
|
}
|
|
1199
|
-
|
|
1200
1163
|
if (stateId === 'results') {
|
|
1201
1164
|
return (results || [])[parseInt(stateIndex, 10)] || null;
|
|
1202
1165
|
}
|
|
1203
|
-
|
|
1204
1166
|
return (results || []).sort(function (_ref6, _ref7) {
|
|
1205
1167
|
var _ref6$points = _ref6.points,
|
|
1206
|
-
|
|
1168
|
+
pointsA = _ref6$points === void 0 ? 0 : _ref6$points;
|
|
1207
1169
|
var _ref7$points = _ref7.points,
|
|
1208
|
-
|
|
1209
|
-
|
|
1170
|
+
pointsB = _ref7$points === void 0 ? 0 : _ref7$points;
|
|
1210
1171
|
if (pointsA === pointsB) {
|
|
1211
1172
|
return 0;
|
|
1212
1173
|
}
|
|
1213
|
-
|
|
1214
1174
|
return pointsA > pointsB ? 1 : -1;
|
|
1215
1175
|
}).reduce(function (lastResult, result) {
|
|
1216
1176
|
var _ref8 = lastResult || {},
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1177
|
+
_ref8$points = _ref8.points,
|
|
1178
|
+
lastPoints = _ref8$points === void 0 ? 0 : _ref8$points;
|
|
1220
1179
|
var _ref9 = result || {},
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
return currentPoints >= lastPoints && currentPoints <= points ? result : lastResult;
|
|
1180
|
+
_ref9$points = _ref9.points,
|
|
1181
|
+
points = _ref9$points === void 0 ? 0 : _ref9$points;
|
|
1182
|
+
return currentPoints >= (lastPoints || 0) && currentPoints >= points ? result : lastResult;
|
|
1225
1183
|
}, null);
|
|
1226
1184
|
}, [isResults, results, currentPoints, stateId, stateIndex]);
|
|
1227
|
-
|
|
1228
1185
|
var _ref10 = currentResult || {},
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1186
|
+
_ref10$background = _ref10.background,
|
|
1187
|
+
resultBackground = _ref10$background === void 0 ? null : _ref10$background,
|
|
1188
|
+
_ref10$layout = _ref10.layout,
|
|
1189
|
+
resultLayout = _ref10$layout === void 0 ? null : _ref10$layout;
|
|
1234
1190
|
var _useQuizCreate = data.useQuizCreate({
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1191
|
+
screenId: screenId
|
|
1192
|
+
}),
|
|
1193
|
+
submitQuiz = _useQuizCreate.create;
|
|
1239
1194
|
React.useEffect(function () {
|
|
1240
1195
|
if (!isResults || isEdit) {
|
|
1241
1196
|
return;
|
|
1242
1197
|
}
|
|
1243
|
-
|
|
1244
1198
|
submitQuiz({
|
|
1245
1199
|
choice: userAnswers,
|
|
1246
1200
|
value: currentPoints
|
|
1247
1201
|
});
|
|
1248
|
-
}, [isResults, userAnswers, submitQuiz]);
|
|
1202
|
+
}, [isResults, userAnswers, submitQuiz]);
|
|
1249
1203
|
|
|
1204
|
+
// Switch state
|
|
1250
1205
|
React.useEffect(function () {
|
|
1251
1206
|
if (!isEdit && !isPreview) {
|
|
1252
1207
|
return;
|
|
1253
1208
|
}
|
|
1254
|
-
|
|
1255
1209
|
if (stateId === 'questions') {
|
|
1256
1210
|
setQuestionIndex(parseInt(stateIndex, 10));
|
|
1257
1211
|
} else if (stateId === 'results') {
|
|
@@ -1262,7 +1216,6 @@ var QuizMultipleScreen = function QuizMultipleScreen(_ref) {
|
|
|
1262
1216
|
}, [stateId, stateIndex, isEdit, setQuestionIndex]);
|
|
1263
1217
|
var finalBackground = background;
|
|
1264
1218
|
var backgroundKey = 'background';
|
|
1265
|
-
|
|
1266
1219
|
if (isIntro && introBackground !== null) {
|
|
1267
1220
|
finalBackground = introBackground;
|
|
1268
1221
|
backgroundKey = 'results';
|
|
@@ -1272,46 +1225,38 @@ var QuizMultipleScreen = function QuizMultipleScreen(_ref) {
|
|
|
1272
1225
|
} else if (isQuestion && questionBackground !== null) {
|
|
1273
1226
|
finalBackground = questionBackground;
|
|
1274
1227
|
backgroundKey = "question_".concat(questionIndex);
|
|
1275
|
-
}
|
|
1276
|
-
|
|
1228
|
+
}
|
|
1277
1229
|
|
|
1230
|
+
// Transition direction
|
|
1278
1231
|
var lastQuestionIndexRef = React.useRef(questionIndex);
|
|
1279
1232
|
var direction = React.useMemo(function () {
|
|
1280
1233
|
if (questionIndex === lastQuestionIndexRef.current) {
|
|
1281
1234
|
return null;
|
|
1282
1235
|
}
|
|
1283
|
-
|
|
1284
1236
|
var lastQuestionIndex = lastQuestionIndexRef.current;
|
|
1285
1237
|
lastQuestionIndexRef.current = questionIndex;
|
|
1286
|
-
|
|
1287
1238
|
if (questionIndex === 'intro' || lastQuestionIndex === 'results' || lastQuestionIndex > questionIndex) {
|
|
1288
1239
|
return 'left';
|
|
1289
1240
|
}
|
|
1290
|
-
|
|
1291
1241
|
lastQuestionIndexRef.current = questionIndex;
|
|
1292
1242
|
return 'right';
|
|
1293
1243
|
}, [questionIndex]);
|
|
1294
1244
|
var scrollingDisabled = !isEdit && transitionDisabled || !current;
|
|
1295
|
-
|
|
1296
1245
|
var _useState5 = React.useState(false),
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1246
|
+
_useState6 = _slicedToArray__default["default"](_useState5, 2),
|
|
1247
|
+
scrolledBottom = _useState6[0],
|
|
1248
|
+
setScrolledBottom = _useState6[1];
|
|
1301
1249
|
var onScrolledBottom = React.useCallback(function (_ref11) {
|
|
1302
1250
|
var initial = _ref11.initial;
|
|
1303
|
-
|
|
1304
1251
|
if (initial) {
|
|
1305
1252
|
trackScreenEvent('scroll', 'Screen');
|
|
1306
1253
|
}
|
|
1307
|
-
|
|
1308
1254
|
setScrolledBottom(true);
|
|
1309
1255
|
}, [trackScreenEvent]);
|
|
1310
1256
|
var onScrolledNotBottom = React.useCallback(function () {
|
|
1311
1257
|
setScrolledBottom(false);
|
|
1312
1258
|
}, [setScrolledBottom]);
|
|
1313
1259
|
var verticalAlign = layout;
|
|
1314
|
-
|
|
1315
1260
|
if (isIntro && introLayout !== null) {
|
|
1316
1261
|
verticalAlign = introLayout;
|
|
1317
1262
|
} else if (isQuestion && questionLayout !== null) {
|
|
@@ -1319,7 +1264,6 @@ var QuizMultipleScreen = function QuizMultipleScreen(_ref) {
|
|
|
1319
1264
|
} else if (isResults && resultLayout !== null) {
|
|
1320
1265
|
verticalAlign = questionLayout;
|
|
1321
1266
|
}
|
|
1322
|
-
|
|
1323
1267
|
return /*#__PURE__*/React__default["default"].createElement("div", {
|
|
1324
1268
|
className: classNames__default["default"]([styles$2.container, (_ref12 = {}, _defineProperty__default["default"](_ref12, styles$2[direction], direction !== null), _defineProperty__default["default"](_ref12, className, className !== null), _ref12)]),
|
|
1325
1269
|
"data-screen-ready": true
|
|
@@ -1433,7 +1377,6 @@ var QuizMultipleScreen = function QuizMultipleScreen(_ref) {
|
|
|
1433
1377
|
withoutVideo: isPreview
|
|
1434
1378
|
}))) : null);
|
|
1435
1379
|
};
|
|
1436
|
-
|
|
1437
1380
|
QuizMultipleScreen.propTypes = propTypes;
|
|
1438
1381
|
QuizMultipleScreen.defaultProps = defaultProps;
|
|
1439
1382
|
|
|
@@ -1502,10 +1445,10 @@ var definition = [{
|
|
|
1502
1445
|
name: 'withoutTrueFalse',
|
|
1503
1446
|
type: 'toggle',
|
|
1504
1447
|
label: reactIntl.defineMessage({
|
|
1505
|
-
id: "
|
|
1448
|
+
id: "LFziCV",
|
|
1506
1449
|
defaultMessage: [{
|
|
1507
1450
|
"type": 0,
|
|
1508
|
-
"value": "Without
|
|
1451
|
+
"value": "Without right/wrong icon"
|
|
1509
1452
|
}]
|
|
1510
1453
|
})
|
|
1511
1454
|
}, {
|
|
@@ -1515,10 +1458,10 @@ var definition = [{
|
|
|
1515
1458
|
textStyle: 'text'
|
|
1516
1459
|
},
|
|
1517
1460
|
label: reactIntl.defineMessage({
|
|
1518
|
-
id: "
|
|
1461
|
+
id: "iQ5Uf7",
|
|
1519
1462
|
defaultMessage: [{
|
|
1520
1463
|
"type": 0,
|
|
1521
|
-
"value": "
|
|
1464
|
+
"value": "Default feedback"
|
|
1522
1465
|
}]
|
|
1523
1466
|
})
|
|
1524
1467
|
}, {
|