@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/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","item":"micromag-screen-quiz-answers-item","answerToSlide":"micromag-screen-quiz-answers-answerToSlide","isUserAnswer":"micromag-screen-quiz-answers-isUserAnswer","answered":"micromag-screen-quiz-answers-answered","rightAnswer":"micromag-screen-quiz-answers-rightAnswer","userAnswer":"micromag-screen-quiz-answers-userAnswer","willCollapse":"micromag-screen-quiz-answers-willCollapse","didCollapsed":"micromag-screen-quiz-answers-didCollapsed","withoutGoodAnswer":"micromag-screen-quiz-answers-withoutGoodAnswer","isPlaceholder":"micromag-screen-quiz-answers-isPlaceholder","withGoodAnswer":"micromag-screen-quiz-answers-withGoodAnswer","resultIcon":"micromag-screen-quiz-answers-resultIcon","itemContent":"micromag-screen-quiz-answers-itemContent"};
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 _ref4;
100
-
91
+ var _ref9;
101
92
  var items = _ref.items,
102
- answeredIndex = _ref.answeredIndex,
103
- answersCollapseDelay = _ref.answersCollapseDelay,
104
- buttonsStyle = _ref.buttonsStyle,
105
- buttonsTextStyle = _ref.buttonsTextStyle,
106
- goodAnswerColor = _ref.goodAnswerColor,
107
- badAnswerColor = _ref.badAnswerColor,
108
- showUserAnswer = _ref.showUserAnswer,
109
- withoutGoodAnswer = _ref.withoutGoodAnswer,
110
- withoutIcon = _ref.withoutIcon,
111
- focusable = _ref.focusable,
112
- initialCollapsed = _ref.collapsed,
113
- transitions = _ref.transitions,
114
- transitionPlaying = _ref.transitionPlaying,
115
- transitionStagger = _ref.transitionStagger,
116
- transitionDisabled = _ref.transitionDisabled,
117
- _onClick = _ref.onClick,
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
- isView = _useScreenRenderConte.isView,
125
- isPreview = _useScreenRenderConte.isPreview,
126
- isPlaceholder = _useScreenRenderConte.isPlaceholder,
127
- isEdit = _useScreenRenderConte.isEdit;
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
- _ref2$good = _ref2.good,
133
- hasAnsweredRight = _ref2$good === void 0 ? false : _ref2$good; // we get .answer's current and future height to animate its height
134
- // we also get the right answer's Y to animate its position
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
- _ref3$good = _ref3.good,
151
- good = _ref3$good === void 0 ? false : _ref3$good;
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
- var _useState = React.useState(answeredIndex !== null),
159
- _useState2 = _slicedToArray__default["default"](_useState, 2),
160
- answersCollapsed = _useState2[0],
161
- setAnswersCollapsed = _useState2[1];
162
-
163
- var _useState3 = React.useState(initialCollapsed || answeredIndex !== null),
164
- _useState4 = _slicedToArray__default["default"](_useState3, 2),
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
- if (shouldCollapse && answersCollapsed && !answersDidCollapsed) {
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, answersDidCollapsed, setAnswersCollapsed, onCollapsed, onTransitionEnd]);
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, (_ref4 = {}, _defineProperty__default["default"](_ref4, styles$4.answered, answered), _defineProperty__default["default"](_ref4, styles$4.withoutGoodAnswer, withoutGoodAnswer || !hasRightAnswer), _defineProperty__default["default"](_ref4, styles$4.withGoodAnswer, !withoutGoodAnswer && hasRightAnswer), _defineProperty__default["default"](_ref4, styles$4.willCollapse, shouldCollapse && answersCollapsed), _defineProperty__default["default"](_ref4, styles$4.didCollapsed, shouldCollapse && answersDidCollapsed), _defineProperty__default["default"](_ref4, styles$4.isPlaceholder, isPlaceholder), _defineProperty__default["default"](_ref4, className, className !== null), _ref4)]),
202
- ref: answerRef,
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
- }, (isPlaceholder || isEdit && items.length === 0 ? _toConsumableArray__default["default"](new Array(2)) : items).map(function (answer, answerI) {
209
- var _ref7;
210
-
238
+ }, transitions(function (style, answer, t, answerI) {
211
239
  var userAnswer = answerI === answeredIndex;
212
-
213
- var _ref5 = answer || {},
214
- _ref5$good = _ref5.good,
215
- rightAnswer = _ref5$good === void 0 ? false : _ref5$good,
216
- _ref5$label = _ref5.label,
217
- label = _ref5$label === void 0 ? null : _ref5$label,
218
- _ref5$buttonStyle = _ref5.buttonStyle,
219
- answerButtonStyle = _ref5$buttonStyle === void 0 ? null : _ref5$buttonStyle,
220
- _ref5$textStyle = _ref5.textStyle,
221
- answerButtonTextStyle = _ref5$textStyle === void 0 ? null : _ref5$textStyle;
222
-
223
- var _ref6 = label || {},
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
- var hasFinalUserAnswer = finalShowUserAnswer && answeredIndex !== null; // Hide bad answers
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
- ref: answerToShow ? rightAnswerRef : null,
238
- className: classNames__default["default"]([styles$4.item, (_ref7 = {}, _defineProperty__default["default"](_ref7, styles$4.rightAnswer, rightAnswer && !withoutGoodAnswer), _defineProperty__default["default"](_ref7, styles$4.userAnswer, userAnswer && !finalShowUserAnswer), _defineProperty__default["default"](_ref7, styles$4.isUserAnswer, userAnswer && hasFinalUserAnswer), _defineProperty__default["default"](_ref7, styles$4.answerToSlide, answerToShow), _ref7)]),
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(components.Transitions, {
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
- onClick: function onClick() {
267
- return _onClick(answer, answerI);
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
- })))) : null)));
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 _ref3;
359
-
368
+ var _ref4;
360
369
  var question = _ref.question,
361
- answers = _ref.answers,
362
- result = _ref.result,
363
- index = _ref.index,
364
- totalCount = _ref.totalCount,
365
- answeredIndex = _ref.answeredIndex,
366
- buttonsStyle = _ref.buttonsStyle,
367
- buttonsTextStyle = _ref.buttonsTextStyle,
368
- questionsHeadingStyle = _ref.questionsHeadingStyle,
369
- goodAnswerColor = _ref.goodAnswerColor,
370
- badAnswerColor = _ref.badAnswerColor,
371
- focusable = _ref.focusable,
372
- showInstantAnswer = _ref.showInstantAnswer,
373
- withResult = _ref.withResult,
374
- withoutGoodAnswer = _ref.withoutGoodAnswer,
375
- withoutTrueFalse = _ref.withoutTrueFalse,
376
- withoutIndex = _ref.withoutIndex,
377
- layout = _ref.layout,
378
- transitions = _ref.transitions,
379
- transitionPlaying = _ref.transitionPlaying,
380
- transitionStagger = _ref.transitionStagger,
381
- transitionDisabled = _ref.transitionDisabled,
382
- onAnswerClick = _ref.onAnswerClick,
383
- onAnswerTransitionEnd = _ref.onAnswerTransitionEnd,
384
- className = _ref.className,
385
- style = _ref.style;
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
- isPlaceholder = _useScreenRenderConte.isPlaceholder;
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
- _ref2$textStyle = _ref2.textStyle,
396
- questionTextStyle = _ref2$textStyle === void 0 ? null : _ref2$textStyle;
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
- _useState2 = _slicedToArray__default["default"](_useState, 2),
402
- resultVisible = _useState2[0],
403
- setResultVisible = _useState2[1];
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, (_ref3 = {}, _defineProperty__default["default"](_ref3, styles$3.isPlaceholder, isPlaceholder), _defineProperty__default["default"](_ref3, styles$3.resultVisible, resultVisible), _defineProperty__default["default"](_ref3, className, className !== null), _ref3)]),
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","intro":"micromag-screen-quiz-intro","question":"micromag-screen-quiz-question","results":"micromag-screen-quiz-results","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"};
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
- layout = _ref.layout,
544
- question = _ref.question,
545
- answers = _ref.answers,
546
- result = _ref.result,
547
- buttonsStyle = _ref.buttonsStyle,
548
- buttonsTextStyle = _ref.buttonsTextStyle,
549
- goodAnswerColor = _ref.goodAnswerColor,
550
- badAnswerColor = _ref.badAnswerColor,
551
- withoutTrueFalse = _ref.withoutTrueFalse,
552
- spacing = _ref.spacing,
553
- background = _ref.background,
554
- callToAction = _ref.callToAction,
555
- current = _ref.current,
556
- active = _ref.active,
557
- transitions = _ref.transitions,
558
- transitionStagger = _ref.transitionStagger,
559
- type = _ref.type,
560
- className = _ref.className;
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
- width = _useScreenSize.width,
566
- height = _useScreenSize.height,
567
- resolution = _useScreenSize.resolution;
568
-
573
+ width = _useScreenSize.width,
574
+ height = _useScreenSize.height,
575
+ resolution = _useScreenSize.resolution;
569
576
  var _useScreenRenderConte = contexts.useScreenRenderContext(),
570
- isView = _useScreenRenderConte.isView,
571
- isPreview = _useScreenRenderConte.isPreview,
572
- isPlaceholder = _useScreenRenderConte.isPlaceholder,
573
- isEdit = _useScreenRenderConte.isEdit,
574
- isStatic = _useScreenRenderConte.isStatic,
575
- isCapture = _useScreenRenderConte.isCapture;
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
- viewerTopHeight = _useViewerContext.topHeight,
579
- viewerBottomHeight = _useViewerContext.bottomHeight,
580
- viewerBottomSidesWidth = _useViewerContext.bottomSidesWidth;
581
-
585
+ viewerTopHeight = _useViewerContext.topHeight,
586
+ viewerBottomHeight = _useViewerContext.bottomHeight,
587
+ viewerBottomSidesWidth = _useViewerContext.bottomSidesWidth;
582
588
  var _useViewerWebView = contexts.useViewerWebView(),
583
- openWebView = _useViewerWebView.open;
584
-
589
+ openWebView = _useViewerWebView.open;
585
590
  var _usePlaybackContext = contexts.usePlaybackContext(),
586
- muted = _usePlaybackContext.muted;
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; // Call to Action
596
+ var mediaShouldLoad = current || active;
593
597
 
598
+ // Call to Action
594
599
  var _ref2 = callToAction || {},
595
- _ref2$active = _ref2.active,
596
- hasCallToAction = _ref2$active === void 0 ? false : _ref2$active;
597
-
600
+ _ref2$active = _ref2.active,
601
+ hasCallToAction = _ref2$active === void 0 ? false : _ref2$active;
598
602
  var _useDimensionObserver = hooks.useDimensionObserver(),
599
- callToActionRef = _useDimensionObserver.ref,
600
- _useDimensionObserver2 = _useDimensionObserver.height,
601
- callToActionHeight = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2;
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
- _useState2 = _slicedToArray__default["default"](_useState, 2),
610
- userAnswerIndex = _useState2[0],
611
- setUserAnswerIndex = _useState2[1];
612
-
612
+ _useState2 = _slicedToArray__default["default"](_useState, 2),
613
+ userAnswerIndex = _useState2[0],
614
+ setUserAnswerIndex = _useState2[1];
613
615
  var _useQuizCreate = data.useQuizCreate({
614
- screenId: screenId
615
- }),
616
- submitQuiz = _useQuizCreate.create;
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
- _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;
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
- _ref4$body = _ref4.body,
644
- body = _ref4$body === void 0 ? '' : _ref4$body;
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
- _useState4 = _slicedToArray__default["default"](_useState3, 2),
656
- scrolledBottom = _useState4[0],
657
- setScrolledBottom = _useState4[1];
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"]({}, className, className !== null)]),
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","emptyDescription":"micromag-screen-quiz-results-emptyDescription","emptyTitle":"micromag-screen-quiz-results-emptyTitle","title":"micromag-screen-quiz-results-title","isPlaceholder":"micromag-screen-quiz-results-isPlaceholder"};
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
- title = _ref.title,
773
- description = _ref.description,
774
- resultsHeadingStyle = _ref.resultsHeadingStyle,
775
- resultsTextStyle = _ref.resultsTextStyle,
776
- transitions = _ref.transitions,
777
- transitionPlaying = _ref.transitionPlaying,
778
- transitionStagger = _ref.transitionStagger,
779
- transitionDisabled = _ref.transitionDisabled,
780
- className = _ref.className,
781
- style = _ref.style;
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
- _ref2$textStyle = _ref2.textStyle,
788
- titleTextStyle = _ref2$textStyle === void 0 ? null : _ref2$textStyle;
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
- _ref3$textStyle = _ref3.textStyle,
794
- descriptionTextStyle = _ref3$textStyle === void 0 ? null : _ref3$textStyle;
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","emptyDescription":"micromag-screen-quiz-title-emptyDescription","emptyTitle":"micromag-screen-quiz-title-emptyTitle","description":"micromag-screen-quiz-title-description","title":"micromag-screen-quiz-title-title","isPlaceholder":"micromag-screen-quiz-title-isPlaceholder"};
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
- title = _ref.title,
882
- description = _ref.description,
883
- button = _ref.button,
884
- focusable = _ref.focusable,
885
- transitions = _ref.transitions,
886
- transitionPlaying = _ref.transitionPlaying,
887
- transitionStagger = _ref.transitionStagger,
888
- transitionDisabled = _ref.transitionDisabled,
889
- className = _ref.className,
890
- style = _ref.style,
891
- onClickButton = _ref.onClickButton;
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
- isPreview = _useScreenRenderConte.isPreview,
895
- isEdit = _useScreenRenderConte.isEdit;
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
- layout = _ref.layout,
1040
- introLayout = _ref.introLayout,
1041
- title = _ref.title,
1042
- description = _ref.description,
1043
- questions = _ref.questions,
1044
- results = _ref.results,
1045
- buttonsStyle = _ref.buttonsStyle,
1046
- buttonsTextStyle = _ref.buttonsTextStyle,
1047
- questionsHeadingStyle = _ref.questionsHeadingStyle,
1048
- resultsHeadingStyle = _ref.resultsHeadingStyle,
1049
- resultsTextStyle = _ref.resultsTextStyle,
1050
- goodAnswerColor = _ref.goodAnswerColor,
1051
- badAnswerColor = _ref.badAnswerColor,
1052
- spacing = _ref.spacing,
1053
- background = _ref.background,
1054
- introBackground = _ref.introBackground,
1055
- introButton = _ref.introButton,
1056
- callToAction = _ref.callToAction,
1057
- current = _ref.current,
1058
- active = _ref.active,
1059
- transitions = _ref.transitions,
1060
- transitionStagger = _ref.transitionStagger,
1061
- type = _ref.type,
1062
- className = _ref.className;
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
- width = _useScreenSize.width,
1068
- height = _useScreenSize.height,
1069
- resolution = _useScreenSize.resolution;
1070
-
1048
+ width = _useScreenSize.width,
1049
+ height = _useScreenSize.height,
1050
+ resolution = _useScreenSize.resolution;
1071
1051
  var _useViewerContext = contexts.useViewerContext(),
1072
- viewerTopHeight = _useViewerContext.topHeight,
1073
- viewerBottomHeight = _useViewerContext.bottomHeight,
1074
- viewerBottomSidesWidth = _useViewerContext.bottomSidesWidth;
1075
-
1052
+ viewerTopHeight = _useViewerContext.topHeight,
1053
+ viewerBottomHeight = _useViewerContext.bottomHeight,
1054
+ viewerBottomSidesWidth = _useViewerContext.bottomSidesWidth;
1076
1055
  var _useScreenRenderConte = contexts.useScreenRenderContext(),
1077
- isView = _useScreenRenderConte.isView,
1078
- isPreview = _useScreenRenderConte.isPreview,
1079
- isPlaceholder = _useScreenRenderConte.isPlaceholder,
1080
- isEdit = _useScreenRenderConte.isEdit,
1081
- isStatic = _useScreenRenderConte.isStatic,
1082
- isCapture = _useScreenRenderConte.isCapture;
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
- muted = _usePlaybackContext.muted;
1086
-
1063
+ muted = _usePlaybackContext.muted;
1087
1064
  var mediaRef = contexts.usePlaybackMediaRef(current);
1088
-
1089
1065
  var _useViewerWebView = contexts.useViewerWebView(),
1090
- openWebView = _useViewerWebView.open;
1091
-
1066
+ openWebView = _useViewerWebView.open;
1092
1067
  var screenState = contexts.useScreenState();
1093
-
1094
1068
  var _ref2 = screenState !== null ? screenState.split('.') : [],
1095
- _ref3 = _slicedToArray__default["default"](_ref2, 2),
1096
- _ref3$ = _ref3[0],
1097
- stateId = _ref3$ === void 0 ? null : _ref3$,
1098
- _ref3$2 = _ref3[1],
1099
- stateIndex = _ref3$2 === void 0 ? 0 : _ref3$2;
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; // Call to Action
1077
+ var backgroundShouldLoad = current || active;
1105
1078
 
1106
- var hasCallToAction = callToAction !== null && callToAction.active === true;
1079
+ // Call to Action
1107
1080
 
1081
+ var hasCallToAction = callToAction !== null && callToAction.active === true;
1108
1082
  var _useDimensionObserver = hooks.useDimensionObserver(),
1109
- callToActionRef = _useDimensionObserver.ref,
1110
- _useDimensionObserver2 = _useDimensionObserver.height,
1111
- callToActionHeight = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2;
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
- _useState2 = _slicedToArray__default["default"](_useState, 2),
1118
- userAnswers = _useState2[0],
1119
- setUserAnswers = _useState2[1];
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
- _useState4 = _slicedToArray__default["default"](_useState3, 2),
1131
- questionIndex = _useState4[0],
1132
- setQuestionIndex = _useState4[1];
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
- text = _currentQuestion$text === void 0 ? null : _currentQuestion$text,
1170
- _currentQuestion$answ = currentQuestion.answers,
1171
- answers = _currentQuestion$answ === void 0 ? [] : _currentQuestion$answ,
1172
- _currentQuestion$back = currentQuestion.background,
1173
- questionBackground = _currentQuestion$back === void 0 ? null : _currentQuestion$back,
1174
- _currentQuestion$layo = currentQuestion.layout,
1175
- questionLayout = _currentQuestion$layo === void 0 ? null : _currentQuestion$layo;
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
- _ref4$answers = _ref4.answers,
1181
- questionAnswers = _ref4$answers === void 0 ? [] : _ref4$answers;
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
- _ref5$points = _ref5.points,
1187
- points = _ref5$points === void 0 ? 0 : _ref5$points;
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
- pointsA = _ref6$points === void 0 ? 0 : _ref6$points;
1168
+ pointsA = _ref6$points === void 0 ? 0 : _ref6$points;
1207
1169
  var _ref7$points = _ref7.points,
1208
- pointsB = _ref7$points === void 0 ? 0 : _ref7$points;
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
- _ref8$points = _ref8.points,
1218
- lastPoints = _ref8$points === void 0 ? 0 : _ref8$points;
1219
-
1177
+ _ref8$points = _ref8.points,
1178
+ lastPoints = _ref8$points === void 0 ? 0 : _ref8$points;
1220
1179
  var _ref9 = result || {},
1221
- _ref9$points = _ref9.points,
1222
- points = _ref9$points === void 0 ? 0 : _ref9$points;
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
- _ref10$background = _ref10.background,
1230
- resultBackground = _ref10$background === void 0 ? null : _ref10$background,
1231
- _ref10$layout = _ref10.layout,
1232
- resultLayout = _ref10$layout === void 0 ? null : _ref10$layout;
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
- screenId: screenId
1236
- }),
1237
- submitQuiz = _useQuizCreate.create;
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]); // Switch state
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
- } // Transition direction
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
- _useState6 = _slicedToArray__default["default"](_useState5, 2),
1298
- scrolledBottom = _useState6[0],
1299
- setScrolledBottom = _useState6[1];
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: "Wk/o9B",
1448
+ id: "LFziCV",
1506
1449
  defaultMessage: [{
1507
1450
  "type": 0,
1508
- "value": "Without true/false"
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: "FJygXH",
1461
+ id: "iQ5Uf7",
1519
1462
  defaultMessage: [{
1520
1463
  "type": 0,
1521
- "value": "Result"
1464
+ "value": "Default feedback"
1522
1465
  }]
1523
1466
  })
1524
1467
  }, {