@micromag/screen-quiz 0.3.541 → 0.3.556

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/es/index.js +8 -14
  2. package/package.json +16 -17
  3. package/lib/index.js +0 -2027
package/lib/index.js DELETED
@@ -1,2027 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var reactIntl = require('react-intl');
6
- var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
- var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
8
- var faRedo = require('@fortawesome/free-solid-svg-icons/faRedo');
9
- var reactFontawesome = require('@fortawesome/react-fontawesome');
10
- var classNames = require('classnames');
11
- var PropTypes = require('prop-types');
12
- var React = require('react');
13
- var core = require('@micromag/core');
14
- var components = require('@micromag/core/components');
15
- var contexts = require('@micromag/core/contexts');
16
- var hooks = require('@micromag/core/hooks');
17
- var utils = require('@micromag/core/utils');
18
- var data = require('@micromag/data');
19
- var Background = require('@micromag/element-background');
20
- var Container = require('@micromag/element-container');
21
- var Footer = require('@micromag/element-footer');
22
- var Header = require('@micromag/element-header');
23
- var Scroll = require('@micromag/element-scroll');
24
- var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
25
- var Heading = require('@micromag/element-heading');
26
- var Layout = require('@micromag/element-layout');
27
- var Text = require('@micromag/element-text');
28
- var Visual = require('@micromag/element-visual');
29
- var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
30
- var faCheck = require('@fortawesome/free-solid-svg-icons/faCheck');
31
- var faTimes = require('@fortawesome/free-solid-svg-icons/faTimes');
32
- var web = require('@react-spring/web');
33
- var Button = require('@micromag/element-button');
34
- var reactTransitionGroup = require('react-transition-group');
35
-
36
- 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","isPlaceholder":"micromag-screen-quiz-answers-isPlaceholder","userAnswer":"micromag-screen-quiz-answers-userAnswer","otherAnswer":"micromag-screen-quiz-answers-otherAnswer","withIcon":"micromag-screen-quiz-answers-withIcon","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"};
37
-
38
- var propTypes$5 = {
39
- items: core.PropTypes.quizAnswers.isRequired,
40
- answeredIndex: PropTypes.number,
41
- answersCollapseDelay: PropTypes.number,
42
- buttonsStyle: core.PropTypes.boxStyle,
43
- buttonsTextStyle: core.PropTypes.textStyle,
44
- goodAnswerColor: core.PropTypes.color,
45
- badAnswerColor: core.PropTypes.color,
46
- showUserAnswer: PropTypes.bool,
47
- withoutGoodAnswer: PropTypes.bool,
48
- withoutIcon: PropTypes.bool,
49
- focusable: PropTypes.bool,
50
- animated: PropTypes.bool,
51
- collapsed: PropTypes.bool,
52
- onClick: PropTypes.func,
53
- onCollapse: PropTypes.func,
54
- onCollapsed: PropTypes.func,
55
- onTransitionEnd: PropTypes.func,
56
- className: PropTypes.string
57
- };
58
- var defaultProps$5 = {
59
- answeredIndex: null,
60
- answersCollapseDelay: 1000,
61
- buttonsStyle: null,
62
- buttonsTextStyle: null,
63
- goodAnswerColor: null,
64
- badAnswerColor: null,
65
- showUserAnswer: false,
66
- withoutGoodAnswer: false,
67
- withoutIcon: false,
68
- focusable: false,
69
- animated: false,
70
- collapsed: false,
71
- onClick: null,
72
- onCollapse: null,
73
- onCollapsed: null,
74
- onTransitionEnd: null,
75
- className: null
76
- };
77
- var Answers = function Answers(_ref) {
78
- var items = _ref.items,
79
- answeredIndex = _ref.answeredIndex,
80
- answersCollapseDelay = _ref.answersCollapseDelay,
81
- buttonsStyle = _ref.buttonsStyle,
82
- buttonsTextStyle = _ref.buttonsTextStyle,
83
- goodAnswerColor = _ref.goodAnswerColor,
84
- badAnswerColor = _ref.badAnswerColor,
85
- showUserAnswer = _ref.showUserAnswer,
86
- withoutGoodAnswer = _ref.withoutGoodAnswer,
87
- withoutIcon = _ref.withoutIcon,
88
- focusable = _ref.focusable,
89
- collapseAnimated = _ref.animated,
90
- initialCollapsed = _ref.collapsed,
91
- onClick = _ref.onClick,
92
- onCollapse = _ref.onCollapse,
93
- onCollapsed = _ref.onCollapsed,
94
- onTransitionEnd = _ref.onTransitionEnd,
95
- className = _ref.className;
96
- var _useScreenRenderConte = contexts.useScreenRenderContext(),
97
- isView = _useScreenRenderConte.isView,
98
- isPreview = _useScreenRenderConte.isPreview,
99
- isPlaceholder = _useScreenRenderConte.isPlaceholder,
100
- isEdit = _useScreenRenderConte.isEdit;
101
- var answered = answeredIndex !== null;
102
- var _ref2 = answeredIndex !== null ? items[answeredIndex] : {},
103
- _ref2$good = _ref2.good,
104
- hasAnsweredRight = _ref2$good === void 0 ? false : _ref2$good;
105
- var _useState = React.useState(true),
106
- _useState2 = _slicedToArray(_useState, 1),
107
- visible = _useState2[0];
108
- var hasRightAnswer = items !== null && !isPlaceholder ? items.reduce(function (hasGood, answer) {
109
- var _ref3 = answer || {},
110
- _ref3$good = _ref3.good,
111
- good = _ref3$good === void 0 ? false : _ref3$good;
112
- return hasGood || good;
113
- }, false) : false;
114
- var finalShowUserAnswer = showUserAnswer || !hasRightAnswer;
115
- var shouldCollapse = !withoutGoodAnswer || finalShowUserAnswer && answeredIndex !== null;
116
- var _useState3 = React.useState(answeredIndex !== null),
117
- _useState4 = _slicedToArray(_useState3, 2),
118
- answersCollapsed = _useState4[0],
119
- setAnswersCollapsed = _useState4[1];
120
- var _useState5 = React.useState(initialCollapsed || answeredIndex !== null),
121
- _useState6 = _slicedToArray(_useState5, 2),
122
- answersDidCollapse = _useState6[0],
123
- setAnswersDidCollapse = _useState6[1];
124
- var _useState7 = React.useState(initialCollapsed || answeredIndex !== null),
125
- _useState8 = _slicedToArray(_useState7, 2),
126
- answersFinalCollapse = _useState8[0],
127
- setAnswersFinalCollapse = _useState8[1];
128
- React.useEffect(function () {
129
- var timeout = null;
130
- if (answeredIndex !== null && shouldCollapse) {
131
- timeout = setTimeout(function () {
132
- setAnswersCollapsed(true);
133
- if (onCollapse !== null) {
134
- onCollapse();
135
- }
136
- }, hasAnsweredRight || finalShowUserAnswer ? 500 : answersCollapseDelay);
137
- } else if (answeredIndex === null && shouldCollapse) {
138
- setAnswersCollapsed(false);
139
- }
140
- return function () {
141
- if (timeout !== null) {
142
- clearTimeout(timeout);
143
- }
144
- };
145
- }, [answeredIndex, withoutGoodAnswer, setAnswersCollapsed, onCollapse, answersCollapseDelay, hasAnsweredRight, finalShowUserAnswer]);
146
- React.useEffect(function () {
147
- var timeout = null;
148
- if (answersCollapsed) {
149
- timeout = setTimeout(function () {
150
- setAnswersFinalCollapse(true);
151
- }, 300);
152
- }
153
- return function () {
154
- if (timeout !== null) {
155
- clearTimeout(timeout);
156
- }
157
- };
158
- }, [answersCollapsed]);
159
- var onAnswerTransitionEnd = React.useCallback(function () {
160
- if (onTransitionEnd !== null) {
161
- onTransitionEnd();
162
- }
163
- if (shouldCollapse && answersCollapsed && !answersDidCollapse) {
164
- setAnswersDidCollapse(true);
165
- if (onCollapsed !== null) {
166
- onCollapsed();
167
- }
168
- }
169
- }, [shouldCollapse, answersCollapsed, answersDidCollapse, setAnswersCollapsed, onCollapsed, onTransitionEnd]);
170
- var itemsRefs = React.useRef([]);
171
- var listOfItems = isPlaceholder || isEdit && items.length === 0 ? _toConsumableArray(new Array(2)) : items;
172
- var heights = React.useMemo(function () {
173
- if (web.animated) {
174
- var allHeights = listOfItems.reduce(function (acc, it, i) {
175
- if (itemsRefs.current[i] && collapseAnimated) {
176
- var _ref4 = itemsRefs.current[i].getBoundingClientRect() || {},
177
- _ref4$height = _ref4.height,
178
- height = _ref4$height === void 0 ? 0 : _ref4$height;
179
- acc.push(height);
180
- }
181
- return acc;
182
- }, []);
183
- return allHeights;
184
- }
185
- return [];
186
- }, [web.animated, answeredIndex, shouldCollapse, collapseAnimated, listOfItems]);
187
- var showAnimation = isView || isEdit;
188
- var filteredListOfItems = listOfItems.map(function (answer, answerI) {
189
- var height = heights[answerI] ? heights[answerI] : 0;
190
- var userAnswer = answerI === answeredIndex;
191
- var _ref5 = answer || {},
192
- _ref5$good = _ref5.good,
193
- rightAnswer = _ref5$good === void 0 ? false : _ref5$good;
194
- var hidden = false;
195
- if (answeredIndex !== null && showAnimation && answersDidCollapse && !rightAnswer && (hasRightAnswer || !userAnswer)) {
196
- hidden = true;
197
- }
198
- if (answeredIndex !== null && showAnimation && answersCollapsed && !rightAnswer) {
199
- hidden = true;
200
- }
201
- return _objectSpread(_objectSpread({}, answer), {}, {
202
- hidden: hidden,
203
- userAnswer: userAnswer,
204
- index: answerI,
205
- maxHeight: height
206
- });
207
- });
208
- var transitions = web.useTransition(filteredListOfItems, {
209
- key: function key(_ref6) {
210
- var _ref6$index = _ref6.index,
211
- index = _ref6$index === void 0 ? 0 : _ref6$index,
212
- _ref6$label = _ref6.label,
213
- label = _ref6$label === void 0 ? null : _ref6$label;
214
- return "key-".concat(index, "-").concat((label === null || label === void 0 ? void 0 : label.body) || null);
215
- },
216
- update: function update(_ref7) {
217
- var _ref7$hidden = _ref7.hidden,
218
- hidden = _ref7$hidden === void 0 ? false : _ref7$hidden,
219
- _ref7$maxHeight = _ref7.maxHeight,
220
- maxHeight = _ref7$maxHeight === void 0 ? 0 : _ref7$maxHeight;
221
- return {
222
- opacity: hidden && showAnimation && !withoutGoodAnswer ? 0 : 1,
223
- // Animate this, not height
224
- maxHeight:
225
- // eslint-disable-next-line no-nested-ternary
226
- hidden && showAnimation && !withoutGoodAnswer && collapseAnimated && answersFinalCollapse ? 0 : maxHeight > 0 ? maxHeight : null,
227
- height: hidden && showAnimation && !withoutGoodAnswer && !collapseAnimated && answersFinalCollapse ? 0 : 'auto'
228
- };
229
- },
230
- // config: { tension: 300, friction: 35 },
231
- config: {
232
- duration: 300,
233
- easing: web.easings.easeOutSine
234
- }
235
- });
236
- return /*#__PURE__*/React.createElement("div", {
237
- className: classNames([styles$4.container, _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, styles$4.answered, answered), styles$4.withIcon, !withoutIcon), styles$4.isPlaceholder, isPlaceholder), className, className !== null)])
238
- }, filteredListOfItems !== null || isPlaceholder ? /*#__PURE__*/React.createElement("div", {
239
- className: styles$4.items
240
- }, transitions(function (style, answer, t, answerI) {
241
- var userAnswer = answerI === answeredIndex;
242
- var _ref9 = answer || {},
243
- _ref9$good = _ref9.good,
244
- rightAnswer = _ref9$good === void 0 ? null : _ref9$good,
245
- _ref9$label = _ref9.label,
246
- label = _ref9$label === void 0 ? null : _ref9$label,
247
- _ref9$buttonStyle = _ref9.buttonStyle,
248
- answerButtonStyle = _ref9$buttonStyle === void 0 ? null : _ref9$buttonStyle,
249
- _ref9$textStyle = _ref9.textStyle,
250
- answerButtonTextStyle = _ref9$textStyle === void 0 ? null : _ref9$textStyle;
251
- var _ref10 = label || {},
252
- _ref10$textStyle = _ref10.textStyle,
253
- textStyle = _ref10$textStyle === void 0 ? null : _ref10$textStyle;
254
- var hasAnswer = utils.isTextFilled(label);
255
- return /*#__PURE__*/React.createElement(web.animated.div, {
256
- key: "answer-".concat(answerI),
257
- className: classNames([styles$4.item, _defineProperty(_defineProperty(_defineProperty({}, styles$4.rightAnswer, !withoutGoodAnswer && rightAnswer === true), styles$4.userAnswer, withoutGoodAnswer && userAnswer), styles$4.otherAnswer, withoutGoodAnswer && !userAnswer)]),
258
- style: _objectSpread({}, style)
259
- }, /*#__PURE__*/React.createElement("div", {
260
- className: styles$4.itemContent,
261
- ref: function ref(el) {
262
- itemsRefs.current[answerI] = el;
263
- }
264
- }, /*#__PURE__*/React.createElement(components.ScreenElement, {
265
- placeholder: "quizAnswer",
266
- placeholderProps: {
267
- good: answerI === 0
268
- },
269
- emptyLabel: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
270
- id: "+Ok+7S",
271
- defaultMessage: [{
272
- "type": 0,
273
- "value": "Answer"
274
- }]
275
- }),
276
- emptyClassName: styles$4.emptyAnswer,
277
- isEmpty: !hasAnswer
278
- }, hasAnswer ? /*#__PURE__*/React.createElement(Button, {
279
- className: styles$4.button,
280
- onPointerUp: function onPointerUp(e) {
281
- if (e.pointerType !== 'mouse' || e.button === 0) {
282
- onClick(answer, answerI);
283
- onAnswerTransitionEnd();
284
- }
285
- },
286
- disabled: !visible || isPreview || answered,
287
- focusable: focusable,
288
- buttonStyle: _objectSpread(_objectSpread({}, buttonsStyle), answerButtonStyle),
289
- textStyle: _objectSpread(_objectSpread({}, buttonsTextStyle), answerButtonTextStyle)
290
- }, answered && !withoutIcon && rightAnswer === true ? /*#__PURE__*/React.createElement("span", {
291
- className: styles$4.resultIcon,
292
- style: utils.getStyleFromColor(goodAnswerColor, 'backgroundColor')
293
- }, /*#__PURE__*/React.createElement(reactFontawesome.FontAwesomeIcon, {
294
- className: styles$4.faIcon,
295
- icon: faCheck.faCheck
296
- })) : null, !withoutIcon && answered && rightAnswer === false ? /*#__PURE__*/React.createElement("span", {
297
- className: styles$4.resultIcon,
298
- style: utils.getStyleFromColor(badAnswerColor, 'backgroundColor')
299
- }, /*#__PURE__*/React.createElement(reactFontawesome.FontAwesomeIcon, {
300
- className: styles$4.faIcon,
301
- icon: faTimes.faTimes
302
- })) : null, /*#__PURE__*/React.createElement(Text, Object.assign({}, label, {
303
- className: styles$4.optionLabel,
304
- textStyle: _objectSpread(_objectSpread(_objectSpread({}, textStyle), buttonsTextStyle), answerButtonTextStyle)
305
- }))) : null)));
306
- })) : null);
307
- };
308
- Answers.propTypes = propTypes$5;
309
- Answers.defaultProps = defaultProps$5;
310
- var Answers$1 = Answers;
311
-
312
- var styles$3 = {"container":"micromag-screen-quiz-question-container","emptyQuestion":"micromag-screen-quiz-question-emptyQuestion","emptyResult":"micromag-screen-quiz-question-emptyResult","question":"micromag-screen-quiz-question-question","index":"micromag-screen-quiz-question-index","result":"micromag-screen-quiz-question-result","resultContent":"micromag-screen-quiz-question-resultContent","resultVisible":"micromag-screen-quiz-question-resultVisible","isPlaceholder":"micromag-screen-quiz-question-isPlaceholder"};
313
-
314
- var propTypes$4 = {
315
- question: core.PropTypes.textElement,
316
- answers: core.PropTypes.quizAnswers,
317
- result: PropTypes.shape({
318
- image: core.PropTypes.imageElement,
319
- text: core.PropTypes.textElement
320
- }),
321
- resultImage: core.PropTypes.visualElement,
322
- index: PropTypes.number,
323
- totalCount: PropTypes.number,
324
- answeredIndex: PropTypes.number,
325
- buttonsStyle: core.PropTypes.boxStyle,
326
- buttonsTextStyle: core.PropTypes.textStyle,
327
- questionsHeadingStyle: core.PropTypes.textStyle,
328
- goodAnswerColor: core.PropTypes.color,
329
- badAnswerColor: core.PropTypes.color,
330
- focusable: PropTypes.bool,
331
- animated: PropTypes.bool,
332
- layout: PropTypes.string,
333
- showInstantAnswer: PropTypes.bool,
334
- withResult: PropTypes.bool,
335
- withoutGoodAnswer: PropTypes.bool,
336
- withoutTrueFalse: PropTypes.bool,
337
- withoutIndex: PropTypes.bool,
338
- transitions: core.PropTypes.transitions,
339
- transitionPlaying: PropTypes.bool,
340
- transitionStagger: PropTypes.number,
341
- transitionDisabled: PropTypes.bool,
342
- onAnswerClick: PropTypes.func,
343
- onAnswerTransitionEnd: PropTypes.func,
344
- className: PropTypes.string,
345
- style: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]))
346
- };
347
- var defaultProps$4 = {
348
- question: null,
349
- answers: null,
350
- result: null,
351
- resultImage: null,
352
- index: null,
353
- totalCount: null,
354
- answeredIndex: null,
355
- buttonsStyle: null,
356
- buttonsTextStyle: null,
357
- questionsHeadingStyle: null,
358
- goodAnswerColor: null,
359
- badAnswerColor: null,
360
- focusable: false,
361
- animated: false,
362
- layout: null,
363
- showInstantAnswer: false,
364
- withResult: false,
365
- withoutGoodAnswer: false,
366
- withoutTrueFalse: false,
367
- withoutIndex: false,
368
- transitions: null,
369
- transitionPlaying: false,
370
- transitionStagger: 100,
371
- transitionDisabled: false,
372
- onAnswerClick: null,
373
- onAnswerTransitionEnd: null,
374
- className: null,
375
- style: null
376
- };
377
- var Question = function Question(_ref) {
378
- var question = _ref.question,
379
- answers = _ref.answers,
380
- result = _ref.result,
381
- resultImage = _ref.resultImage,
382
- index = _ref.index,
383
- totalCount = _ref.totalCount,
384
- answeredIndex = _ref.answeredIndex,
385
- buttonsStyle = _ref.buttonsStyle,
386
- buttonsTextStyle = _ref.buttonsTextStyle,
387
- questionsHeadingStyle = _ref.questionsHeadingStyle,
388
- goodAnswerColor = _ref.goodAnswerColor,
389
- badAnswerColor = _ref.badAnswerColor,
390
- focusable = _ref.focusable,
391
- animated = _ref.animated,
392
- showInstantAnswer = _ref.showInstantAnswer,
393
- withResult = _ref.withResult,
394
- withoutGoodAnswer = _ref.withoutGoodAnswer,
395
- withoutTrueFalse = _ref.withoutTrueFalse,
396
- withoutIndex = _ref.withoutIndex,
397
- layout = _ref.layout,
398
- transitions = _ref.transitions,
399
- transitionPlaying = _ref.transitionPlaying,
400
- transitionStagger = _ref.transitionStagger,
401
- transitionDisabled = _ref.transitionDisabled,
402
- onAnswerClick = _ref.onAnswerClick,
403
- onAnswerTransitionEnd = _ref.onAnswerTransitionEnd,
404
- className = _ref.className,
405
- style = _ref.style;
406
- var _useScreenRenderConte = contexts.useScreenRenderContext(),
407
- isPlaceholder = _useScreenRenderConte.isPlaceholder;
408
- var isSplitted = layout === 'split';
409
- var verticalAlign = isSplitted ? null : layout;
410
- var hasQuestion = utils.isTextFilled(question);
411
- var _ref2 = question || {},
412
- _ref2$textStyle = _ref2.textStyle,
413
- questionTextStyle = _ref2$textStyle === void 0 ? null : _ref2$textStyle;
414
- var _useState = React.useState(showInstantAnswer),
415
- _useState2 = _slicedToArray(_useState, 2),
416
- resultVisible = _useState2[0],
417
- setResultVisible = _useState2[1];
418
- var answered = answeredIndex !== null;
419
- var answer = answeredIndex !== null && answers[answeredIndex] ? answers[answeredIndex] : null;
420
- var _ref3 = answer || {},
421
- _ref3$customAnswerLab = _ref3.customAnswerLabel,
422
- customAnswerLabel = _ref3$customAnswerLab === void 0 ? null : _ref3$customAnswerLab,
423
- _ref3$answerImage = _ref3.answerImage,
424
- answerImage = _ref3$answerImage === void 0 ? null : _ref3$answerImage;
425
- var hasResult = utils.isTextFilled(customAnswerLabel) || utils.isTextFilled(result);
426
- var hasResultVisual = utils.isImageFilled(answerImage) || utils.isImageFilled(resultImage);
427
- var defaultResult = utils.isTextFilled(result) ? result : null;
428
- var customResult = utils.isTextFilled(customAnswerLabel) ? customAnswerLabel : null;
429
- var onAnswersCollapse = React.useCallback(function () {
430
- setResultVisible(true);
431
- }, [setResultVisible]);
432
- var hasIndex = index !== null && totalCount !== null;
433
- return /*#__PURE__*/React.createElement(Layout, {
434
- className: classNames([styles$3.container, _defineProperty(_defineProperty(_defineProperty({}, styles$3.isPlaceholder, isPlaceholder), styles$3.resultVisible, resultVisible), className, className !== null)]),
435
- verticalAlign: verticalAlign,
436
- style: style
437
- }, [!withoutIndex && hasIndex ? /*#__PURE__*/React.createElement(components.ScreenElement, {
438
- key: "stats",
439
- placeholder: /*#__PURE__*/React.createElement("div", {
440
- className: styles$3.index
441
- }, "1 / 10")
442
- }, totalCount > 1 ? /*#__PURE__*/React.createElement(components.Transitions, {
443
- transitions: transitions,
444
- playing: transitionPlaying,
445
- disabled: transitionDisabled
446
- }, /*#__PURE__*/React.createElement("div", {
447
- className: styles$3.index
448
- }, index + 1, " / ", totalCount)) : null) : null, /*#__PURE__*/React.createElement(components.ScreenElement, {
449
- key: "question",
450
- placeholder: "title",
451
- emptyLabel: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
452
- id: "FOmgqv",
453
- defaultMessage: [{
454
- "type": 0,
455
- "value": "Question"
456
- }]
457
- }),
458
- emptyClassName: styles$3.emptyQuestion,
459
- isEmpty: !hasQuestion
460
- }, hasQuestion ? /*#__PURE__*/React.createElement(components.Transitions, {
461
- transitions: transitions,
462
- playing: transitionPlaying,
463
- disabled: transitionDisabled
464
- }, /*#__PURE__*/React.createElement(Heading, Object.assign({}, question, {
465
- className: styles$3.question,
466
- textStyle: _objectSpread(_objectSpread({}, questionsHeadingStyle), questionTextStyle)
467
- }))) : null), isSplitted ? /*#__PURE__*/React.createElement(Layout.Spacer, {
468
- key: "spacer"
469
- }) : null, /*#__PURE__*/React.createElement(Answers$1, {
470
- key: "answers",
471
- items: answers || [],
472
- answeredIndex: answeredIndex,
473
- goodAnswerColor: goodAnswerColor,
474
- badAnswerColor: badAnswerColor,
475
- withoutGoodAnswer: withoutGoodAnswer,
476
- withoutIcon: withoutTrueFalse,
477
- showUserAnswer: withoutTrueFalse,
478
- buttonsStyle: buttonsStyle,
479
- buttonsTextStyle: buttonsTextStyle,
480
- focusable: focusable,
481
- animated: animated,
482
- transitions: transitions,
483
- transitionStagger: transitionStagger,
484
- transitionPlaying: transitionPlaying,
485
- transitionDisabled: transitionDisabled,
486
- onClick: onAnswerClick,
487
- onCollapse: onAnswersCollapse,
488
- onTransitionEnd: onAnswerTransitionEnd
489
- }), withResult ? /*#__PURE__*/React.createElement("div", {
490
- className: styles$3.result,
491
- key: "results"
492
- }, /*#__PURE__*/React.createElement("div", {
493
- className: styles$3.resultContent
494
- }, /*#__PURE__*/React.createElement(components.ScreenElement, {
495
- emptyLabel: answered ? /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
496
- id: "li7ADr",
497
- defaultMessage: [{
498
- "type": 0,
499
- "value": "Result"
500
- }]
501
- }) : null,
502
- isEmpty: answered && !hasResult,
503
- emptyClassName: styles$3.emptyResult
504
- }, (hasResult || hasResultVisual) && answers !== null ? /*#__PURE__*/React.createElement(components.Transitions, {
505
- transitions: transitions,
506
- playing: transitionPlaying,
507
- delay: (1 + answers.length) * transitionStagger,
508
- disabled: transitionDisabled
509
- }, hasResult ? /*#__PURE__*/React.createElement(Text, Object.assign({}, customResult || defaultResult, {
510
- className: styles$3.resultText
511
- })) : null, hasResultVisual ? /*#__PURE__*/React.createElement(Visual, {
512
- media: answerImage || resultImage,
513
- width: "100%",
514
- height: "auto"
515
- }) : null) : null))) : null]);
516
- };
517
- Question.propTypes = propTypes$4;
518
- Question.defaultProps = defaultProps$4;
519
- var Question$1 = Question;
520
-
521
- 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","reset":"micromag-screen-quiz-reset","points":"micromag-screen-quiz-points","layout":"micromag-screen-quiz-layout","header":"micromag-screen-quiz-header","footer":"micromag-screen-quiz-footer","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"};
522
-
523
- var propTypes$3 = {
524
- id: PropTypes.string,
525
- layout: PropTypes.oneOf(['top', 'middle', 'bottom', 'split']),
526
- question: core.PropTypes.textElement,
527
- answers: core.PropTypes.quizAnswers,
528
- result: PropTypes.shape({
529
- image: core.PropTypes.imageElement,
530
- text: core.PropTypes.textElement
531
- }),
532
- resultImage: core.PropTypes.visualElement,
533
- buttonsStyle: core.PropTypes.boxStyle,
534
- buttonsTextStyle: core.PropTypes.textStyle,
535
- goodAnswerColor: core.PropTypes.color,
536
- badAnswerColor: core.PropTypes.color,
537
- withoutTrueFalse: PropTypes.bool,
538
- spacing: PropTypes.number,
539
- background: core.PropTypes.backgroundElement,
540
- header: core.PropTypes.header,
541
- footer: core.PropTypes.footer,
542
- current: PropTypes.bool,
543
- active: PropTypes.bool,
544
- ready: PropTypes.bool,
545
- transitions: core.PropTypes.transitions,
546
- transitionStagger: PropTypes.number,
547
- type: PropTypes.string,
548
- className: PropTypes.string
549
- };
550
- var defaultProps$3 = {
551
- id: null,
552
- layout: 'middle',
553
- question: null,
554
- answers: null,
555
- result: null,
556
- resultImage: null,
557
- buttonsStyle: null,
558
- buttonsTextStyle: null,
559
- goodAnswerColor: null,
560
- badAnswerColor: null,
561
- withoutTrueFalse: false,
562
- spacing: 20,
563
- header: null,
564
- footer: null,
565
- background: null,
566
- current: true,
567
- active: true,
568
- ready: true,
569
- transitions: null,
570
- transitionStagger: 100,
571
- type: null,
572
- className: null
573
- };
574
- var QuizScreen = function QuizScreen(_ref) {
575
- var id = _ref.id,
576
- layout = _ref.layout,
577
- question = _ref.question,
578
- answers = _ref.answers,
579
- result = _ref.result,
580
- resultImage = _ref.resultImage,
581
- buttonsStyle = _ref.buttonsStyle,
582
- buttonsTextStyle = _ref.buttonsTextStyle,
583
- goodAnswerColor = _ref.goodAnswerColor,
584
- badAnswerColor = _ref.badAnswerColor,
585
- withoutTrueFalse = _ref.withoutTrueFalse,
586
- spacing = _ref.spacing,
587
- header = _ref.header,
588
- footer = _ref.footer,
589
- background = _ref.background,
590
- current = _ref.current,
591
- active = _ref.active,
592
- ready = _ref.ready,
593
- transitions = _ref.transitions,
594
- transitionStagger = _ref.transitionStagger,
595
- type = _ref.type,
596
- className = _ref.className;
597
- var screenId = id || 'screen-id';
598
- var trackScreenEvent = hooks.useTrackScreenEvent(type);
599
- var _useScreenSize = contexts.useScreenSize(),
600
- width = _useScreenSize.width,
601
- height = _useScreenSize.height,
602
- resolution = _useScreenSize.resolution;
603
- var _useScreenRenderConte = contexts.useScreenRenderContext(),
604
- isView = _useScreenRenderConte.isView,
605
- isPreview = _useScreenRenderConte.isPreview,
606
- isPlaceholder = _useScreenRenderConte.isPlaceholder,
607
- isEdit = _useScreenRenderConte.isEdit,
608
- isStatic = _useScreenRenderConte.isStatic,
609
- isCapture = _useScreenRenderConte.isCapture;
610
- var clickDisabled = !ready;
611
- var _useViewerContext = contexts.useViewerContext(),
612
- viewerTopHeight = _useViewerContext.topHeight,
613
- viewerBottomHeight = _useViewerContext.bottomHeight,
614
- viewerBottomSidesWidth = _useViewerContext.bottomSidesWidth;
615
- var _useViewerWebView = contexts.useViewerWebView(),
616
- openWebView = _useViewerWebView.open;
617
- var _usePlaybackContext = contexts.usePlaybackContext(),
618
- muted = _usePlaybackContext.muted;
619
- var mediaRef = contexts.usePlaybackMediaRef(current);
620
- var transitionPlaying = current && ready;
621
- var transitionDisabled = isStatic || isCapture || isPlaceholder || isPreview || isEdit;
622
- var backgroundPlaying = current && (isView || isEdit);
623
- var mediaShouldLoad = current || active;
624
- var hasHeader = utils.isHeaderFilled(header);
625
- var hasFooter = utils.isFooterFilled(footer);
626
- var footerProps = utils.getFooterProps(footer, {
627
- isView: isView,
628
- current: current,
629
- openWebView: openWebView,
630
- isPreview: isPreview
631
- });
632
- var _useDimensionObserver = hooks.useDimensionObserver(),
633
- headerRef = _useDimensionObserver.ref,
634
- _useDimensionObserver2 = _useDimensionObserver.height,
635
- headerHeight = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2;
636
- var _useDimensionObserver3 = hooks.useDimensionObserver(),
637
- footerRef = _useDimensionObserver3.ref,
638
- _useDimensionObserver4 = _useDimensionObserver3.height,
639
- footerHeight = _useDimensionObserver4 === void 0 ? 0 : _useDimensionObserver4;
640
- var showInstantAnswer = isStatic || isCapture;
641
- var goodAnswerIndex = answers !== null ? answers.findIndex(function (answer) {
642
- return answer !== null && answer.good;
643
- }) : null;
644
- var withoutGoodAnswer = goodAnswerIndex === null || goodAnswerIndex === -1;
645
- var _useState = React.useState(showInstantAnswer ? goodAnswerIndex : null),
646
- _useState2 = _slicedToArray(_useState, 2),
647
- userAnswerIndex = _useState2[0],
648
- setUserAnswerIndex = _useState2[1];
649
- var _useQuizCreate = data.useQuizCreate({
650
- screenId: screenId
651
- }),
652
- submitQuiz = _useQuizCreate.create;
653
- var onAnswerClick = React.useCallback(function (answer, answerI) {
654
- if (userAnswerIndex !== null) {
655
- return;
656
- }
657
- setUserAnswerIndex(answerI);
658
- trackScreenEvent('click_answer', "".concat(userAnswerIndex + 1, ": ").concat(answer.label.body), {
659
- answer: answer,
660
- answerIndex: answerI
661
- });
662
- }, [userAnswerIndex, setUserAnswerIndex, trackScreenEvent, answers]);
663
- React.useEffect(function () {
664
- if (!current && isEdit && userAnswerIndex !== null) {
665
- setUserAnswerIndex(null);
666
- }
667
- }, [isEdit, current, userAnswerIndex, setUserAnswerIndex]);
668
- React.useEffect(function () {
669
- if (!isView) {
670
- return;
671
- }
672
- if (userAnswerIndex !== null) {
673
- var _ref2 = userAnswerIndex !== null && answers ? answers[userAnswerIndex] : {},
674
- _ref2$good = _ref2.good,
675
- isGood = _ref2$good === void 0 ? false : _ref2$good,
676
- _ref2$label = _ref2.label,
677
- label = _ref2$label === void 0 ? {} : _ref2$label;
678
- var _ref3 = label || {},
679
- _ref3$body = _ref3.body,
680
- body = _ref3$body === void 0 ? '' : _ref3$body;
681
- submitQuiz({
682
- choice: body || userAnswerIndex,
683
- value: isGood ? 1 : 0
684
- });
685
- }
686
- }, [isView, userAnswerIndex, answers, submitQuiz]);
687
- var scrollingDisabled = !isEdit && transitionDisabled || !current;
688
- var _useState3 = React.useState(false),
689
- _useState4 = _slicedToArray(_useState3, 2),
690
- scrolledBottom = _useState4[0],
691
- setScrolledBottom = _useState4[1];
692
- var onScrolledBottom = React.useCallback(function (_ref4) {
693
- var initial = _ref4.initial;
694
- if (initial) {
695
- trackScreenEvent('scroll', 'Screen');
696
- }
697
- setScrolledBottom(true);
698
- }, [trackScreenEvent]);
699
- var onScrolledNotBottom = React.useCallback(function () {
700
- setScrolledBottom(false);
701
- }, [setScrolledBottom]);
702
- var _useState5 = React.useState(false),
703
- _useState6 = _slicedToArray(_useState5, 2),
704
- hasScroll = _useState6[0],
705
- setHasScroll = _useState6[1];
706
- var onScrollHeightChange = React.useCallback(function (_ref5) {
707
- var _ref5$canScroll = _ref5.canScroll,
708
- canScroll = _ref5$canScroll === void 0 ? false : _ref5$canScroll;
709
- setHasScroll(canScroll);
710
- }, [setHasScroll]);
711
- var onQuizReset = React.useCallback(function () {
712
- setUserAnswerIndex(null);
713
- }, [setUserAnswerIndex]);
714
- var numberOfAnswers = (answers || []).length;
715
- React.useEffect(function () {
716
- onQuizReset();
717
- }, [numberOfAnswers, onQuizReset]);
718
- var isSplitted = layout === 'split';
719
- var verticalAlign = isSplitted ? null : layout;
720
- var showReset = isEdit;
721
- return /*#__PURE__*/React.createElement("div", {
722
- className: classNames([styles$2.container, _defineProperty(_defineProperty({}, styles$2.disabled, clickDisabled), className, className !== null)]),
723
- "data-screen-ready": true
724
- }, /*#__PURE__*/React.createElement(Container, {
725
- width: width,
726
- height: height,
727
- className: styles$2.content
728
- }, showReset ? /*#__PURE__*/React.createElement(components.Button, {
729
- className: styles$2.reset,
730
- icon: /*#__PURE__*/React.createElement(reactFontawesome.FontAwesomeIcon, {
731
- icon: faRedo.faRedo,
732
- size: "md"
733
- }),
734
- onClick: onQuizReset
735
- }) : null, /*#__PURE__*/React.createElement(Scroll, {
736
- verticalAlign: verticalAlign
737
- // disabled={scrollingDisabled || userAnswerIndex !== null}
738
- ,
739
- disabled: scrollingDisabled,
740
- onScrolledBottom: onScrolledBottom,
741
- onScrolledNotBottom: onScrolledNotBottom,
742
- onScrollHeightChange: onScrollHeightChange,
743
- withShadow: true
744
- }, !isPlaceholder && hasHeader ? /*#__PURE__*/React.createElement("div", {
745
- className: classNames([styles$2.header, _defineProperty({}, styles$2.disabled, userAnswerIndex !== null || scrolledBottom && !scrollingDisabled && hasScroll)]),
746
- ref: headerRef,
747
- style: {
748
- paddingTop: spacing / 2,
749
- paddingLeft: spacing,
750
- paddingRight: spacing,
751
- paddingBottom: spacing,
752
- transform: !isPreview ? "translate(0, ".concat(viewerTopHeight, "px)") : null
753
- }
754
- }, /*#__PURE__*/React.createElement(Header, header)) : null, /*#__PURE__*/React.createElement(Question$1, {
755
- question: question,
756
- answers: answers,
757
- result: result,
758
- resultImage: resultImage,
759
- answeredIndex: userAnswerIndex,
760
- buttonsStyle: buttonsStyle,
761
- buttonsTextStyle: buttonsTextStyle,
762
- goodAnswerColor: goodAnswerColor,
763
- badAnswerColor: badAnswerColor,
764
- withoutTrueFalse: withoutTrueFalse,
765
- withoutGoodAnswer: withoutGoodAnswer,
766
- focusable: current && isView,
767
- animated: isView,
768
- showInstantAnswer: showInstantAnswer,
769
- withResult: true,
770
- layout: layout,
771
- transitions: transitions,
772
- transitionPlaying: transitionPlaying,
773
- transitionStagger: transitionStagger,
774
- transitionDisabled: transitionDisabled,
775
- onAnswerClick: onAnswerClick,
776
- className: styles$2.question,
777
- style: !isPlaceholder ? {
778
- padding: spacing,
779
- paddingTop: (!isPreview ? viewerTopHeight : 0) + (headerHeight || spacing),
780
- paddingBottom: (current && !isPreview ? viewerBottomHeight : 0) + (footerHeight || spacing)
781
- } : null
782
- })), !isPlaceholder && hasFooter ? /*#__PURE__*/React.createElement("div", {
783
- ref: footerRef,
784
- className: classNames([styles$2.footer, _defineProperty({}, styles$2.disabled, !scrolledBottom && hasScroll)]),
785
- style: {
786
- transform: current && !isPreview ? "translate(0, -".concat(viewerBottomHeight, "px)") : null,
787
- paddingLeft: Math.max(spacing / 2, viewerBottomSidesWidth),
788
- paddingRight: Math.max(spacing / 2, viewerBottomSidesWidth),
789
- paddingTop: spacing / 2,
790
- paddingBottom: spacing / 2
791
- }
792
- }, /*#__PURE__*/React.createElement(Footer, footerProps)) : null), !isPlaceholder ? /*#__PURE__*/React.createElement(Background, {
793
- background: background,
794
- width: width,
795
- height: height,
796
- resolution: resolution,
797
- playing: backgroundPlaying,
798
- muted: muted,
799
- shouldLoad: mediaShouldLoad,
800
- mediaRef: mediaRef,
801
- withoutVideo: isPreview,
802
- className: styles$2.background
803
- }) : null);
804
- };
805
- QuizScreen.propTypes = propTypes$3;
806
- QuizScreen.defaultProps = defaultProps$3;
807
- var QuizScreen$1 = QuizScreen;
808
-
809
- 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"};
810
-
811
- var propTypes$2 = {
812
- title: core.PropTypes.textElement,
813
- description: core.PropTypes.textElement,
814
- resultsHeadingStyle: core.PropTypes.textStyle,
815
- resultsTextStyle: core.PropTypes.textStyle,
816
- layout: PropTypes.string,
817
- transitions: core.PropTypes.transitions,
818
- transitionPlaying: PropTypes.bool,
819
- transitionStagger: PropTypes.number,
820
- transitionDisabled: PropTypes.bool,
821
- className: PropTypes.string,
822
- style: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]))
823
- };
824
- var defaultProps$2 = {
825
- title: null,
826
- description: null,
827
- resultsHeadingStyle: null,
828
- resultsTextStyle: null,
829
- layout: null,
830
- transitions: null,
831
- transitionPlaying: false,
832
- transitionStagger: 100,
833
- transitionDisabled: false,
834
- className: null,
835
- style: null
836
- };
837
- var Results = function Results(_ref) {
838
- var layout = _ref.layout,
839
- title = _ref.title,
840
- description = _ref.description,
841
- resultsHeadingStyle = _ref.resultsHeadingStyle,
842
- resultsTextStyle = _ref.resultsTextStyle,
843
- transitions = _ref.transitions,
844
- transitionPlaying = _ref.transitionPlaying,
845
- transitionStagger = _ref.transitionStagger,
846
- transitionDisabled = _ref.transitionDisabled,
847
- className = _ref.className,
848
- style = _ref.style;
849
- var isSplitted = layout === 'split';
850
- var verticalAlign = isSplitted ? null : layout;
851
- var hasTitle = utils.isTextFilled(title);
852
- var _ref2 = title || {},
853
- _ref2$textStyle = _ref2.textStyle,
854
- titleTextStyle = _ref2$textStyle === void 0 ? null : _ref2$textStyle;
855
- var hasDescription = utils.isTextFilled(description);
856
- var _ref3 = description || {},
857
- _ref3$textStyle = _ref3.textStyle,
858
- descriptionTextStyle = _ref3$textStyle === void 0 ? null : _ref3$textStyle;
859
- return /*#__PURE__*/React.createElement(Layout, {
860
- className: classNames([styles$1.container, _defineProperty({}, className, className !== null)]),
861
- fullscreen: true,
862
- verticalAlign: verticalAlign,
863
- style: style
864
- }, [/*#__PURE__*/React.createElement(components.ScreenElement, {
865
- key: "title",
866
- placeholder: "title",
867
- emptyLabel: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
868
- id: "BSTWf8",
869
- defaultMessage: [{
870
- "type": 0,
871
- "value": "Title"
872
- }]
873
- }),
874
- emptyClassName: styles$1.emptyTitle,
875
- isEmpty: !hasTitle
876
- }, hasTitle ? /*#__PURE__*/React.createElement(components.Transitions, {
877
- transitions: transitions,
878
- playing: transitionPlaying,
879
- disabled: transitionDisabled
880
- }, /*#__PURE__*/React.createElement(Heading, Object.assign({}, title, {
881
- className: styles$1.title,
882
- textStyle: _objectSpread(_objectSpread({}, resultsHeadingStyle), titleTextStyle)
883
- }))) : null), isSplitted ? /*#__PURE__*/React.createElement(Layout.Spacer, {
884
- key: "spacer"
885
- }) : null, /*#__PURE__*/React.createElement(components.ScreenElement, {
886
- key: "description",
887
- placeholder: "text",
888
- emptyLabel: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
889
- id: "hoDz0O",
890
- defaultMessage: [{
891
- "type": 0,
892
- "value": "Description"
893
- }]
894
- }),
895
- emptyClassName: styles$1.emptyDescription,
896
- isEmpty: !hasDescription
897
- }, hasTitle ? /*#__PURE__*/React.createElement(components.Transitions, {
898
- transitions: transitions,
899
- playing: transitionPlaying,
900
- disabled: transitionDisabled,
901
- delay: transitionStagger
902
- }, /*#__PURE__*/React.createElement(Text, Object.assign({}, description, {
903
- className: styles$1.description,
904
- textStyle: _objectSpread(_objectSpread({}, resultsTextStyle), descriptionTextStyle)
905
- }))) : null)]);
906
- };
907
- Results.propTypes = propTypes$2;
908
- Results.defaultProps = defaultProps$2;
909
- var Results$1 = Results;
910
-
911
- 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"};
912
-
913
- var propTypes$1 = {
914
- title: core.PropTypes.textElement,
915
- description: core.PropTypes.textElement,
916
- button: core.PropTypes.textElement,
917
- layout: PropTypes.string,
918
- focusable: PropTypes.bool,
919
- buttonDisabled: PropTypes.bool,
920
- className: PropTypes.string,
921
- style: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),
922
- onClickButton: PropTypes.func
923
- };
924
- var defaultProps$1 = {
925
- title: null,
926
- description: null,
927
- layout: null,
928
- button: null,
929
- buttonDisabled: false,
930
- focusable: false,
931
- className: null,
932
- style: null,
933
- onClickButton: null
934
- };
935
- var Title = function Title(_ref) {
936
- var layout = _ref.layout,
937
- title = _ref.title,
938
- description = _ref.description,
939
- button = _ref.button,
940
- buttonDisabled = _ref.buttonDisabled,
941
- focusable = _ref.focusable,
942
- className = _ref.className,
943
- style = _ref.style,
944
- onClickButton = _ref.onClickButton;
945
- // const { isPreview, isEdit } = useScreenRenderContext();
946
- var isSplitted = layout === 'split';
947
- var verticalAlign = isSplitted ? null : layout;
948
- var hasTitle = utils.isTextFilled(title);
949
- var hasDescription = utils.isTextFilled(description);
950
- var hasButton = utils.isTextFilled(button);
951
- return /*#__PURE__*/React.createElement(Layout, {
952
- className: classNames([styles.container, _defineProperty({}, className, className !== null)]),
953
- fullscreen: true,
954
- verticalAlign: verticalAlign,
955
- style: style
956
- }, [/*#__PURE__*/React.createElement(components.ScreenElement, {
957
- key: "title",
958
- placeholder: "title",
959
- emptyLabel: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
960
- id: "BSTWf8",
961
- defaultMessage: [{
962
- "type": 0,
963
- "value": "Title"
964
- }]
965
- }),
966
- emptyClassName: styles.emptyTitle,
967
- isEmpty: !hasTitle
968
- }, hasTitle ? /*#__PURE__*/React.createElement(Heading, Object.assign({}, title, {
969
- className: styles.title
970
- })) : null), /*#__PURE__*/React.createElement(components.ScreenElement, {
971
- key: "description",
972
- placeholder: "text",
973
- emptyLabel: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
974
- id: "hoDz0O",
975
- defaultMessage: [{
976
- "type": 0,
977
- "value": "Description"
978
- }]
979
- }),
980
- emptyClassName: styles.emptyDescription,
981
- isEmpty: !hasDescription
982
- }, hasDescription ? /*#__PURE__*/React.createElement(Text, Object.assign({}, description, {
983
- className: styles.description
984
- })) : null), isSplitted ? /*#__PURE__*/React.createElement(Layout.Spacer, {
985
- key: "spacer"
986
- }) : null, /*#__PURE__*/React.createElement(components.ScreenElement, {
987
- key: "button",
988
- placeholder: "button"
989
- }, /*#__PURE__*/React.createElement(Button, {
990
- disabled: buttonDisabled,
991
- focusable: focusable,
992
- buttonStyle: button !== null ? button.buttonStyle : null,
993
- className: styles.button,
994
- onClick: onClickButton
995
- }, hasButton ? /*#__PURE__*/React.createElement(Text, Object.assign({}, button, {
996
- className: styles.label
997
- })) : /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
998
- id: "D7LIZQ",
999
- defaultMessage: [{
1000
- "type": 0,
1001
- "value": "Start"
1002
- }]
1003
- })))]);
1004
- };
1005
- Title.propTypes = propTypes$1;
1006
- Title.defaultProps = defaultProps$1;
1007
- var Title$1 = Title;
1008
-
1009
- var propTypes = {
1010
- id: PropTypes.string,
1011
- layout: PropTypes.oneOf(['top', 'middle', 'bottom', 'split']),
1012
- introLayout: PropTypes.oneOf(['top', 'middle', 'bottom', 'split']),
1013
- title: core.PropTypes.textElement,
1014
- description: core.PropTypes.textElement,
1015
- questions: PropTypes.arrayOf(PropTypes.shape({
1016
- text: core.PropTypes.textElement,
1017
- answers: core.PropTypes.quizAnswers
1018
- })),
1019
- results: PropTypes.arrayOf(PropTypes.shape({
1020
- title: core.PropTypes.textElement,
1021
- description: core.PropTypes.textElement
1022
- })),
1023
- buttonsStyle: core.PropTypes.boxStyle,
1024
- buttonsTextStyle: core.PropTypes.textStyle,
1025
- questionsHeadingStyle: core.PropTypes.textStyle,
1026
- resultsHeadingStyle: core.PropTypes.textStyle,
1027
- resultsTextStyle: core.PropTypes.textStyle,
1028
- goodAnswerColor: core.PropTypes.color,
1029
- badAnswerColor: core.PropTypes.color,
1030
- spacing: PropTypes.number,
1031
- background: core.PropTypes.backgroundElement,
1032
- introButton: core.PropTypes.textElement,
1033
- introBackground: core.PropTypes.backgroundElement,
1034
- header: core.PropTypes.header,
1035
- footer: core.PropTypes.footer,
1036
- current: PropTypes.bool,
1037
- active: PropTypes.bool,
1038
- transitions: core.PropTypes.transitions,
1039
- transitionStagger: PropTypes.number,
1040
- type: PropTypes.string,
1041
- className: PropTypes.string
1042
- };
1043
- var defaultProps = {
1044
- id: null,
1045
- layout: 'middle',
1046
- introLayout: null,
1047
- title: null,
1048
- description: null,
1049
- questions: null,
1050
- results: null,
1051
- buttonsStyle: null,
1052
- buttonsTextStyle: null,
1053
- questionsHeadingStyle: null,
1054
- resultsHeadingStyle: null,
1055
- resultsTextStyle: null,
1056
- goodAnswerColor: null,
1057
- badAnswerColor: null,
1058
- spacing: 20,
1059
- background: null,
1060
- introButton: null,
1061
- introBackground: null,
1062
- header: null,
1063
- footer: null,
1064
- current: true,
1065
- active: true,
1066
- transitions: null,
1067
- transitionStagger: 100,
1068
- type: null,
1069
- className: null
1070
- };
1071
- var QuizMultipleScreen = function QuizMultipleScreen(_ref) {
1072
- var id = _ref.id,
1073
- layout = _ref.layout,
1074
- introLayout = _ref.introLayout,
1075
- title = _ref.title,
1076
- description = _ref.description,
1077
- questions = _ref.questions,
1078
- results = _ref.results,
1079
- buttonsStyle = _ref.buttonsStyle,
1080
- buttonsTextStyle = _ref.buttonsTextStyle,
1081
- questionsHeadingStyle = _ref.questionsHeadingStyle,
1082
- resultsHeadingStyle = _ref.resultsHeadingStyle,
1083
- resultsTextStyle = _ref.resultsTextStyle,
1084
- goodAnswerColor = _ref.goodAnswerColor,
1085
- badAnswerColor = _ref.badAnswerColor,
1086
- spacing = _ref.spacing,
1087
- background = _ref.background,
1088
- introBackground = _ref.introBackground,
1089
- introButton = _ref.introButton,
1090
- header = _ref.header,
1091
- footer = _ref.footer,
1092
- current = _ref.current,
1093
- active = _ref.active,
1094
- transitions = _ref.transitions,
1095
- transitionStagger = _ref.transitionStagger,
1096
- type = _ref.type,
1097
- className = _ref.className;
1098
- var screenId = id || 'screen-id';
1099
- var trackScreenEvent = hooks.useTrackScreenEvent(type);
1100
- var _useScreenSize = contexts.useScreenSize(),
1101
- width = _useScreenSize.width,
1102
- height = _useScreenSize.height,
1103
- resolution = _useScreenSize.resolution;
1104
- var _useViewerContext = contexts.useViewerContext(),
1105
- viewerTopHeight = _useViewerContext.topHeight,
1106
- viewerBottomHeight = _useViewerContext.bottomHeight,
1107
- viewerBottomSidesWidth = _useViewerContext.bottomSidesWidth;
1108
- var _useScreenRenderConte = contexts.useScreenRenderContext(),
1109
- isView = _useScreenRenderConte.isView,
1110
- isPreview = _useScreenRenderConte.isPreview,
1111
- isPlaceholder = _useScreenRenderConte.isPlaceholder,
1112
- isEdit = _useScreenRenderConte.isEdit,
1113
- isStatic = _useScreenRenderConte.isStatic,
1114
- isCapture = _useScreenRenderConte.isCapture;
1115
- var _usePlaybackContext = contexts.usePlaybackContext(),
1116
- muted = _usePlaybackContext.muted;
1117
- var mediaRef = contexts.usePlaybackMediaRef(current);
1118
- var _useViewerWebView = contexts.useViewerWebView(),
1119
- openWebView = _useViewerWebView.open;
1120
- var screenState = contexts.useScreenState();
1121
- var _ref2 = screenState !== null ? screenState.split('.') : [],
1122
- _ref3 = _slicedToArray(_ref2, 2),
1123
- _ref3$ = _ref3[0],
1124
- stateId = _ref3$ === void 0 ? null : _ref3$,
1125
- _ref3$2 = _ref3[1],
1126
- stateIndex = _ref3$2 === void 0 ? 0 : _ref3$2;
1127
- var transitionPlaying = current;
1128
- var transitionDisabled = isStatic || isCapture || isPlaceholder || isPreview || isEdit;
1129
- var backgroundPlaying = current && (isView || isEdit);
1130
- var backgroundShouldLoad = current || active;
1131
-
1132
- // Call to Action
1133
-
1134
- var hasHeader = utils.isHeaderFilled(header);
1135
- var hasFooter = utils.isFooterFilled(footer);
1136
- var footerProps = utils.getFooterProps(footer, {
1137
- isView: isView,
1138
- current: current,
1139
- openWebView: openWebView,
1140
- isPreview: isPreview
1141
- });
1142
- var _useDimensionObserver = hooks.useDimensionObserver(),
1143
- headerRef = _useDimensionObserver.ref,
1144
- _useDimensionObserver2 = _useDimensionObserver.height,
1145
- headerHeight = _useDimensionObserver2 === void 0 ? 0 : _useDimensionObserver2;
1146
- var _useDimensionObserver3 = hooks.useDimensionObserver(),
1147
- footerRef = _useDimensionObserver3.ref,
1148
- _useDimensionObserver4 = _useDimensionObserver3.height,
1149
- callToActionHeight = _useDimensionObserver4 === void 0 ? 0 : _useDimensionObserver4;
1150
- var showInstantAnswer = isStatic || isCapture;
1151
- var hasIntro = title !== null || description !== null || isEdit || stateId === 'intro';
1152
- var _useState = React.useState(null),
1153
- _useState2 = _slicedToArray(_useState, 2),
1154
- userAnswers = _useState2[0],
1155
- setUserAnswers = _useState2[1];
1156
- var initialQuestionIndex = 'intro';
1157
- if (stateId !== null) {
1158
- initialQuestionIndex = stateId === 'questions' ? parseInt(stateIndex, 10) : stateId;
1159
- } else if (isPlaceholder || !hasIntro) {
1160
- initialQuestionIndex = 0;
1161
- }
1162
- var _useState3 = React.useState(initialQuestionIndex),
1163
- _useState4 = _slicedToArray(_useState3, 2),
1164
- questionIndex = _useState4[0],
1165
- setQuestionIndex = _useState4[1];
1166
- React.useEffect(function () {
1167
- if (isPreview && hasIntro && questionIndex !== 'intro') {
1168
- setQuestionIndex('intro');
1169
- }
1170
- }, [isPreview, hasIntro, questionIndex, setQuestionIndex]);
1171
- var onAnswerClick = React.useCallback(function (answer, answerIndex) {
1172
- setUserAnswers(_objectSpread(_objectSpread({}, userAnswers), {}, _defineProperty({}, questionIndex, answerIndex)));
1173
- trackScreenEvent('click_answer', "Question #".concat(questionIndex + 1, " ").concat(answerIndex + 1, ": ").concat(answer.label.body), {
1174
- question: questions[questionIndex],
1175
- questionIndex: questionIndex,
1176
- answer: answer,
1177
- answerIndex: answerIndex
1178
- });
1179
- }, [userAnswers, setUserAnswers, trackScreenEvent, questions, questionIndex]);
1180
- var onAnswerTransitionEnd = React.useCallback(function () {
1181
- if (isEdit) {
1182
- return;
1183
- }
1184
- var nextIndex = questionIndex + 1;
1185
- var questionsCount = questions.length;
1186
- if (nextIndex < questionsCount) {
1187
- setQuestionIndex(nextIndex);
1188
- } else if (nextIndex === questionsCount) {
1189
- setQuestionIndex('results');
1190
- }
1191
- }, [questions, questionIndex, setQuestionIndex, isEdit]);
1192
- var onClickIntroButton = React.useCallback(function () {
1193
- setQuestionIndex(0);
1194
- }, [setQuestionIndex]);
1195
- React.useEffect(function () {
1196
- if (!current && isEdit && userAnswers !== null) {
1197
- setUserAnswers(null);
1198
- }
1199
- }, [isEdit, current, userAnswers, setUserAnswers]);
1200
- var hasQuestions = questions !== null && questions.length > 0;
1201
- var currentQuestion = hasQuestions ? questions[questionIndex] || {} : {};
1202
- var _currentQuestion$text = currentQuestion.text,
1203
- text = _currentQuestion$text === void 0 ? null : _currentQuestion$text,
1204
- _currentQuestion$answ = currentQuestion.answers,
1205
- answers = _currentQuestion$answ === void 0 ? [] : _currentQuestion$answ,
1206
- _currentQuestion$back = currentQuestion.background,
1207
- questionBackground = _currentQuestion$back === void 0 ? null : _currentQuestion$back,
1208
- _currentQuestion$layo = currentQuestion.layout,
1209
- questionLayout = _currentQuestion$layo === void 0 ? null : _currentQuestion$layo;
1210
- var currentAnsweredIndex = userAnswers !== null && typeof userAnswers[questionIndex] !== 'undefined' ? userAnswers[questionIndex] : null;
1211
- var currentPoints = React.useMemo(function () {
1212
- return userAnswers !== null ? Object.keys(userAnswers).reduce(function (totalPoints, answerQuestionIndex) {
1213
- var _ref4 = questions !== null ? questions[answerQuestionIndex] || {} : {},
1214
- _ref4$answers = _ref4.answers,
1215
- questionAnswers = _ref4$answers === void 0 ? [] : _ref4$answers;
1216
- var answerIndex = userAnswers[answerQuestionIndex];
1217
- var _ref5 = questionAnswers[answerIndex] || {},
1218
- _ref5$points = _ref5.points,
1219
- points = _ref5$points === void 0 ? 0 : _ref5$points;
1220
- return points + totalPoints;
1221
- }, 0) : 0;
1222
- }, [userAnswers, questions]);
1223
- var isIntro = hasIntro && questionIndex === 'intro';
1224
- var isResults = questionIndex === 'results';
1225
- var isQuestion = !isIntro && !isResults;
1226
- var currentResult = React.useMemo(function () {
1227
- if (!isResults) {
1228
- return null;
1229
- }
1230
- if (stateId === 'results') {
1231
- return (results || [])[parseInt(stateIndex, 10)] || null;
1232
- }
1233
- return (results || []).sort(function (_ref6, _ref7) {
1234
- var _ref6$points = _ref6.points,
1235
- pointsA = _ref6$points === void 0 ? 0 : _ref6$points;
1236
- var _ref7$points = _ref7.points,
1237
- pointsB = _ref7$points === void 0 ? 0 : _ref7$points;
1238
- if (pointsA === pointsB) {
1239
- return 0;
1240
- }
1241
- return pointsA > pointsB ? 1 : -1;
1242
- }).reduce(function (lastResult, result) {
1243
- var _ref8 = lastResult || {},
1244
- _ref8$points = _ref8.points,
1245
- lastPoints = _ref8$points === void 0 ? 0 : _ref8$points;
1246
- var _ref9 = result || {},
1247
- _ref9$points = _ref9.points,
1248
- points = _ref9$points === void 0 ? 0 : _ref9$points;
1249
- return currentPoints >= (lastPoints || 0) && currentPoints >= points ? result : lastResult;
1250
- }, null);
1251
- }, [isResults, results, currentPoints, stateId, stateIndex]);
1252
- var _ref10 = currentResult || {},
1253
- _ref10$background = _ref10.background,
1254
- resultBackground = _ref10$background === void 0 ? null : _ref10$background,
1255
- _ref10$layout = _ref10.layout,
1256
- resultLayout = _ref10$layout === void 0 ? null : _ref10$layout;
1257
- var _useQuizCreate = data.useQuizCreate({
1258
- screenId: screenId
1259
- }),
1260
- submitQuiz = _useQuizCreate.create;
1261
- React.useEffect(function () {
1262
- if (!isResults || !isView) {
1263
- return;
1264
- }
1265
- submitQuiz({
1266
- choice: userAnswers,
1267
- value: currentPoints
1268
- });
1269
- }, [isView, isResults, userAnswers, submitQuiz]);
1270
-
1271
- // Switch state
1272
- React.useEffect(function () {
1273
- if (!isEdit && !isPreview) {
1274
- return;
1275
- }
1276
- if (stateId === 'questions') {
1277
- setQuestionIndex(parseInt(stateIndex, 10));
1278
- } else if (stateId === 'results') {
1279
- setQuestionIndex('results');
1280
- } else if (stateId === 'intro') {
1281
- setQuestionIndex('intro');
1282
- }
1283
- }, [stateId, stateIndex, isEdit, setQuestionIndex]);
1284
- var finalBackground = background;
1285
- var backgroundKey = 'background';
1286
- if (isIntro && introBackground !== null) {
1287
- finalBackground = introBackground;
1288
- backgroundKey = 'results';
1289
- } else if (isResults && resultBackground !== null) {
1290
- finalBackground = resultBackground;
1291
- backgroundKey = 'results';
1292
- } else if (isQuestion && questionBackground !== null) {
1293
- finalBackground = questionBackground;
1294
- backgroundKey = "question_".concat(questionIndex);
1295
- }
1296
-
1297
- // Transition direction
1298
- var lastQuestionIndexRef = React.useRef(questionIndex);
1299
- var direction = React.useMemo(function () {
1300
- if (questionIndex === lastQuestionIndexRef.current) {
1301
- return null;
1302
- }
1303
- var lastQuestionIndex = lastQuestionIndexRef.current;
1304
- lastQuestionIndexRef.current = questionIndex;
1305
- if (questionIndex === 'intro' || lastQuestionIndex === 'results' || lastQuestionIndex > questionIndex) {
1306
- return 'left';
1307
- }
1308
- lastQuestionIndexRef.current = questionIndex;
1309
- return 'right';
1310
- }, [questionIndex]);
1311
- var scrollingDisabled = !isEdit && transitionDisabled || !current;
1312
- var _useState5 = React.useState(false),
1313
- _useState6 = _slicedToArray(_useState5, 2),
1314
- scrolledBottom = _useState6[0],
1315
- setScrolledBottom = _useState6[1];
1316
- var onScrolledBottom = React.useCallback(function (_ref11) {
1317
- var initial = _ref11.initial;
1318
- if (initial) {
1319
- trackScreenEvent('scroll', 'Screen');
1320
- }
1321
- setScrolledBottom(true);
1322
- }, [trackScreenEvent]);
1323
- var onScrolledNotBottom = React.useCallback(function () {
1324
- setScrolledBottom(false);
1325
- }, [setScrolledBottom]);
1326
- var _useState7 = React.useState(false),
1327
- _useState8 = _slicedToArray(_useState7, 2),
1328
- hasScroll = _useState8[0],
1329
- setHasScroll = _useState8[1];
1330
- var onScrollHeightChange = React.useCallback(function (_ref12) {
1331
- var _ref12$canScroll = _ref12.canScroll,
1332
- canScroll = _ref12$canScroll === void 0 ? false : _ref12$canScroll;
1333
- setHasScroll(canScroll);
1334
- }, [setHasScroll]);
1335
- var onQuizReset = React.useCallback(function () {
1336
- setUserAnswers(null);
1337
- }, [setUserAnswers]);
1338
- var verticalAlign = layout;
1339
- if (isIntro && introLayout !== null) {
1340
- verticalAlign = introLayout;
1341
- } else if (isQuestion && questionLayout !== null) {
1342
- verticalAlign = questionLayout;
1343
- } else if (isResults && resultLayout !== null) {
1344
- verticalAlign = questionLayout;
1345
- }
1346
- var showPoints = isEdit;
1347
- var showReset = isEdit;
1348
- return /*#__PURE__*/React.createElement("div", {
1349
- className: classNames([styles$2.container, _defineProperty(_defineProperty({}, styles$2[direction], direction !== null), className, className !== null)]),
1350
- "data-screen-ready": true
1351
- }, /*#__PURE__*/React.createElement(Container, {
1352
- width: width,
1353
- height: height,
1354
- className: styles$2.content
1355
- }, showPoints && currentPoints !== null && currentPoints > 0 ? /*#__PURE__*/React.createElement("div", {
1356
- className: styles$2.points
1357
- }, "".concat(currentPoints, " "), /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
1358
- id: "Xr1v8l",
1359
- defaultMessage: [{
1360
- "type": 0,
1361
- "value": "points gained"
1362
- }]
1363
- })) : null, showReset ? /*#__PURE__*/React.createElement(components.Button, {
1364
- className: styles$2.reset,
1365
- icon: /*#__PURE__*/React.createElement(reactFontawesome.FontAwesomeIcon, {
1366
- icon: faRedo.faRedo,
1367
- size: "md"
1368
- }),
1369
- onClick: onQuizReset
1370
- }) : null, !isPlaceholder && hasHeader ? /*#__PURE__*/React.createElement("div", {
1371
- className: classNames([styles$2.header, _defineProperty({}, styles$2.disabled, scrolledBottom && !scrollingDisabled && hasScroll)]),
1372
- ref: headerRef,
1373
- style: {
1374
- paddingTop: spacing / 2,
1375
- paddingLeft: spacing,
1376
- paddingRight: spacing,
1377
- paddingBottom: spacing,
1378
- transform: !isPreview ? "translate(0, ".concat(viewerTopHeight, "px)") : null
1379
- }
1380
- }, /*#__PURE__*/React.createElement(Header, header)) : null, /*#__PURE__*/React.createElement(Scroll, {
1381
- verticalAlign: verticalAlign,
1382
- disabled: scrollingDisabled,
1383
- onScrolledBottom: onScrolledBottom,
1384
- onScrolledNotBottom: onScrolledNotBottom,
1385
- onScrollHeightChange: onScrollHeightChange,
1386
- withShadow: true
1387
- }, /*#__PURE__*/React.createElement(reactTransitionGroup.TransitionGroup, null, [isIntro ? /*#__PURE__*/React.createElement(reactTransitionGroup.CSSTransition, {
1388
- key: "intro",
1389
- classNames: styles$2,
1390
- timeout: 1000
1391
- }, /*#__PURE__*/React.createElement(Title$1, {
1392
- title: title,
1393
- description: description,
1394
- layout: introLayout || layout,
1395
- button: introButton,
1396
- buttonDisabled: (questions || []).length < 1 || isEdit || isPreview,
1397
- focusable: current && isView,
1398
- transitions: transitions,
1399
- transitionPlaying: transitionPlaying,
1400
- transitionStagger: transitionStagger,
1401
- transitionDisabled: transitionDisabled,
1402
- className: styles$2.intro,
1403
- style: !isPlaceholder ? {
1404
- paddingLeft: spacing,
1405
- paddingRight: spacing,
1406
- paddingTop: (!isPreview ? viewerTopHeight : 0) + spacing,
1407
- paddingBottom: (current && !isPreview ? viewerBottomHeight : 0) + (callToActionHeight || spacing)
1408
- } : null,
1409
- onClickButton: onClickIntroButton
1410
- })) : null, isQuestion ? /*#__PURE__*/React.createElement(reactTransitionGroup.CSSTransition, {
1411
- key: "question-".concat(questionIndex),
1412
- classNames: styles$2,
1413
- timeout: 1000
1414
- }, /*#__PURE__*/React.createElement(Question$1, {
1415
- index: questionIndex,
1416
- totalCount: (questions || []).length,
1417
- question: text,
1418
- answers: answers,
1419
- answeredIndex: currentAnsweredIndex,
1420
- buttonsStyle: buttonsStyle,
1421
- buttonsTextStyle: buttonsTextStyle,
1422
- questionsHeadingStyle: questionsHeadingStyle,
1423
- goodAnswerColor: goodAnswerColor,
1424
- badAnswerColor: badAnswerColor,
1425
- focusable: current && isView,
1426
- showInstantAnswer: showInstantAnswer,
1427
- layout: questionLayout || layout,
1428
- withoutGoodAnswer: true,
1429
- withoutTrueFalse: true,
1430
- transitions: transitions,
1431
- transitionPlaying: transitionPlaying,
1432
- transitionStagger: transitionStagger,
1433
- transitionDisabled: transitionDisabled,
1434
- onAnswerClick: onAnswerClick,
1435
- onAnswerTransitionEnd: onAnswerTransitionEnd,
1436
- className: styles$2.question,
1437
- style: !isPlaceholder ? {
1438
- padding: spacing,
1439
- paddingTop: (current && !isPreview ? viewerTopHeight : 0) + (headerHeight || spacing),
1440
- paddingBottom: (current && !isPreview ? viewerBottomHeight : 0) + (callToActionHeight || spacing)
1441
- } : null
1442
- })) : null, isResults ? /*#__PURE__*/React.createElement(reactTransitionGroup.CSSTransition, {
1443
- key: "results",
1444
- classNames: styles$2,
1445
- timeout: 2000
1446
- }, /*#__PURE__*/React.createElement(Results$1, Object.assign({}, currentResult, {
1447
- resultsHeadingStyle: resultsHeadingStyle,
1448
- resultsTextStyle: resultsTextStyle,
1449
- layout: resultLayout || layout,
1450
- transitions: transitions,
1451
- transitionPlaying: transitionPlaying,
1452
- transitionStagger: transitionStagger,
1453
- transitionDisabled: transitionDisabled,
1454
- className: styles$2.results,
1455
- style: !isPlaceholder ? {
1456
- padding: spacing,
1457
- paddingTop: (current && !isPreview ? viewerTopHeight : 0) + (headerHeight || spacing),
1458
- paddingBottom: (current && !isPreview ? viewerBottomHeight : 0) + (callToActionHeight || spacing)
1459
- } : null
1460
- }))) : null])), !isPlaceholder && hasFooter ? /*#__PURE__*/React.createElement("div", {
1461
- ref: footerRef,
1462
- className: classNames([styles$2.footer, _defineProperty({}, styles$2.disabled, !scrolledBottom)]),
1463
- style: {
1464
- paddingLeft: Math.max(spacing / 2, viewerBottomSidesWidth),
1465
- paddingRight: Math.max(spacing / 2, viewerBottomSidesWidth),
1466
- paddingTop: spacing / 2,
1467
- paddingBottom: spacing / 2,
1468
- transform: !isPreview ? "translate(0, -".concat(viewerBottomHeight, "px)") : null
1469
- }
1470
- }, /*#__PURE__*/React.createElement(Footer, footerProps)) : null), !isPlaceholder ? /*#__PURE__*/React.createElement(reactTransitionGroup.TransitionGroup, null, /*#__PURE__*/React.createElement(reactTransitionGroup.CSSTransition, {
1471
- key: backgroundKey,
1472
- classNames: styles$2,
1473
- timeout: 1000
1474
- }, /*#__PURE__*/React.createElement(Background, {
1475
- background: finalBackground,
1476
- width: width,
1477
- height: height,
1478
- resolution: resolution,
1479
- playing: backgroundPlaying,
1480
- muted: muted,
1481
- shouldLoad: backgroundShouldLoad,
1482
- mediaRef: mediaRef,
1483
- className: styles$2.background,
1484
- withoutVideo: isPreview
1485
- }))) : null);
1486
- };
1487
- QuizMultipleScreen.propTypes = propTypes;
1488
- QuizMultipleScreen.defaultProps = defaultProps;
1489
- var QuizMultipleScreen$1 = QuizMultipleScreen;
1490
-
1491
- var definition = [{
1492
- id: 'quiz',
1493
- type: 'screen',
1494
- group: {
1495
- label: reactIntl.defineMessage({
1496
- id: "ZiWlL6",
1497
- defaultMessage: [{
1498
- "type": 0,
1499
- "value": "Questions"
1500
- }]
1501
- }),
1502
- order: 7
1503
- },
1504
- title: reactIntl.defineMessage({
1505
- id: "zW7IVm",
1506
- defaultMessage: [{
1507
- "type": 0,
1508
- "value": "Quiz"
1509
- }]
1510
- }),
1511
- component: QuizScreen$1,
1512
- layouts: ['top', 'middle', 'bottom', 'split'],
1513
- fields: [{
1514
- name: 'layout',
1515
- type: 'screen-layout',
1516
- defaultValue: 'top',
1517
- label: reactIntl.defineMessage({
1518
- id: "4iBXj2",
1519
- defaultMessage: [{
1520
- "type": 0,
1521
- "value": "Layout"
1522
- }]
1523
- })
1524
- }, {
1525
- name: 'question',
1526
- type: 'heading-element',
1527
- theme: {
1528
- textStyle: 'heading2'
1529
- },
1530
- label: reactIntl.defineMessage({
1531
- id: "hVE7TA",
1532
- defaultMessage: [{
1533
- "type": 0,
1534
- "value": "Question"
1535
- }]
1536
- })
1537
- }, {
1538
- name: 'answers',
1539
- type: 'quiz-answers',
1540
- theme: {
1541
- label: {
1542
- textStyle: 'button'
1543
- }
1544
- },
1545
- label: reactIntl.defineMessage({
1546
- id: "KHWeV7",
1547
- defaultMessage: [{
1548
- "type": 0,
1549
- "value": "Answers"
1550
- }]
1551
- })
1552
- }, {
1553
- name: 'withoutTrueFalse',
1554
- type: 'toggle',
1555
- label: reactIntl.defineMessage({
1556
- id: "LFziCV",
1557
- defaultMessage: [{
1558
- "type": 0,
1559
- "value": "Without right/wrong icon"
1560
- }]
1561
- })
1562
- }, {
1563
- name: 'result',
1564
- type: 'text-element',
1565
- theme: {
1566
- textStyle: 'text'
1567
- },
1568
- label: reactIntl.defineMessage({
1569
- id: "iQ5Uf7",
1570
- defaultMessage: [{
1571
- "type": 0,
1572
- "value": "Default feedback"
1573
- }]
1574
- })
1575
- }, {
1576
- name: 'resultImage',
1577
- type: 'visual',
1578
- label: reactIntl.defineMessage({
1579
- id: "yA4B6h",
1580
- defaultMessage: [{
1581
- "type": 0,
1582
- "value": "Result feedback image"
1583
- }]
1584
- })
1585
- }, {
1586
- type: 'fields',
1587
- isList: true,
1588
- label: reactIntl.defineMessage({
1589
- id: "R9DB4a",
1590
- defaultMessage: [{
1591
- "type": 0,
1592
- "value": "Styles"
1593
- }]
1594
- }),
1595
- fields: [{
1596
- name: 'buttonsTextStyle',
1597
- type: 'text-style-form',
1598
- label: reactIntl.defineMessage({
1599
- id: "gwPu/I",
1600
- defaultMessage: [{
1601
- "type": 0,
1602
- "value": "Buttons text"
1603
- }]
1604
- })
1605
- }, {
1606
- name: 'buttonsStyle',
1607
- type: 'box-style-form',
1608
- label: reactIntl.defineMessage({
1609
- id: "l5uLMd",
1610
- defaultMessage: [{
1611
- "type": 0,
1612
- "value": "Buttons"
1613
- }]
1614
- })
1615
- }, {
1616
- name: 'goodAnswerColor',
1617
- type: 'color',
1618
- label: reactIntl.defineMessage({
1619
- id: "I2bIHm",
1620
- defaultMessage: [{
1621
- "type": 0,
1622
- "value": "Good answer color"
1623
- }]
1624
- })
1625
- }, {
1626
- name: 'badAnswerColor',
1627
- type: 'color',
1628
- label: reactIntl.defineMessage({
1629
- id: "ru3tjH",
1630
- defaultMessage: [{
1631
- "type": 0,
1632
- "value": "Bad answer color"
1633
- }]
1634
- })
1635
- }]
1636
- }, {
1637
- name: 'background',
1638
- type: 'background',
1639
- label: reactIntl.defineMessage({
1640
- id: "+MPZRu",
1641
- defaultMessage: [{
1642
- "type": 0,
1643
- "value": "Background"
1644
- }]
1645
- })
1646
- }, {
1647
- name: 'header',
1648
- type: 'header',
1649
- label: reactIntl.defineMessage({
1650
- id: "rhuDxI",
1651
- defaultMessage: [{
1652
- "type": 0,
1653
- "value": "Header"
1654
- }]
1655
- }),
1656
- theme: {
1657
- badge: {
1658
- label: {
1659
- textStyle: 'badge'
1660
- },
1661
- boxStyle: 'badge'
1662
- }
1663
- }
1664
- }, {
1665
- name: 'footer',
1666
- type: 'footer',
1667
- label: reactIntl.defineMessage({
1668
- id: "g4nybp",
1669
- defaultMessage: [{
1670
- "type": 0,
1671
- "value": "Footer"
1672
- }]
1673
- }),
1674
- theme: {
1675
- callToAction: {
1676
- label: {
1677
- textStyle: 'cta'
1678
- },
1679
- boxStyle: 'cta'
1680
- }
1681
- }
1682
- }]
1683
- }, {
1684
- id: 'quiz-multiple',
1685
- type: 'screen',
1686
- group: {
1687
- label: reactIntl.defineMessage({
1688
- id: "ZiWlL6",
1689
- defaultMessage: [{
1690
- "type": 0,
1691
- "value": "Questions"
1692
- }]
1693
- }),
1694
- order: 7
1695
- },
1696
- title: reactIntl.defineMessage({
1697
- id: "ACkeH6",
1698
- defaultMessage: [{
1699
- "type": 0,
1700
- "value": "Quiz with multiple questions"
1701
- }]
1702
- }),
1703
- component: QuizMultipleScreen$1,
1704
- layouts: ['top', 'middle', 'bottom', 'split'],
1705
- states: [{
1706
- id: 'intro',
1707
- label: reactIntl.defineMessage({
1708
- id: "BgrRxZ",
1709
- defaultMessage: [{
1710
- "type": 0,
1711
- "value": "Intro"
1712
- }]
1713
- }),
1714
- fields: [{
1715
- name: 'introLayout',
1716
- type: 'screen-layout',
1717
- defaultValue: 'middle',
1718
- screenState: 'intro',
1719
- label: reactIntl.defineMessage({
1720
- id: "4iBXj2",
1721
- defaultMessage: [{
1722
- "type": 0,
1723
- "value": "Layout"
1724
- }]
1725
- })
1726
- }, {
1727
- name: 'title',
1728
- type: 'heading-element',
1729
- theme: {
1730
- textStyle: 'heading2'
1731
- },
1732
- label: reactIntl.defineMessage({
1733
- id: "+AEVbJ",
1734
- defaultMessage: [{
1735
- "type": 0,
1736
- "value": "Title"
1737
- }]
1738
- })
1739
- }, {
1740
- name: 'description',
1741
- type: 'text-element',
1742
- theme: {
1743
- textStyle: 'text'
1744
- },
1745
- label: reactIntl.defineMessage({
1746
- id: "ZCe0r4",
1747
- defaultMessage: [{
1748
- "type": 0,
1749
- "value": "Description"
1750
- }]
1751
- })
1752
- }, {
1753
- name: 'introButton',
1754
- type: 'button-element',
1755
- theme: {
1756
- textStyle: 'button'
1757
- },
1758
- label: reactIntl.defineMessage({
1759
- id: "i6bmbD",
1760
- defaultMessage: [{
1761
- "type": 0,
1762
- "value": "Button"
1763
- }]
1764
- })
1765
- }, {
1766
- name: 'introBackground',
1767
- type: 'background',
1768
- label: reactIntl.defineMessage({
1769
- id: "cDj1mZ",
1770
- defaultMessage: [{
1771
- "type": 0,
1772
- "value": "Background"
1773
- }]
1774
- })
1775
- }]
1776
- }, {
1777
- id: 'questions',
1778
- label: reactIntl.defineMessage({
1779
- id: "VMd1oG",
1780
- defaultMessage: [{
1781
- "type": 0,
1782
- "value": "Questions"
1783
- }]
1784
- }),
1785
- repeatable: true,
1786
- fieldName: 'questions',
1787
- fields: [{
1788
- name: 'text',
1789
- type: 'heading-element',
1790
- theme: {
1791
- textStyle: 'heading2'
1792
- },
1793
- label: reactIntl.defineMessage({
1794
- id: "hVE7TA",
1795
- defaultMessage: [{
1796
- "type": 0,
1797
- "value": "Question"
1798
- }]
1799
- })
1800
- }, {
1801
- name: 'answers',
1802
- type: 'quiz-points-answers',
1803
- theme: {
1804
- label: {
1805
- textStyle: 'button'
1806
- }
1807
- },
1808
- label: reactIntl.defineMessage({
1809
- id: "KHWeV7",
1810
- defaultMessage: [{
1811
- "type": 0,
1812
- "value": "Answers"
1813
- }]
1814
- })
1815
- }, {
1816
- name: 'background',
1817
- type: 'background',
1818
- label: reactIntl.defineMessage({
1819
- id: "cDj1mZ",
1820
- defaultMessage: [{
1821
- "type": 0,
1822
- "value": "Background"
1823
- }]
1824
- })
1825
- }]
1826
- }, {
1827
- id: 'results',
1828
- label: reactIntl.defineMessage({
1829
- id: "uiTxd7",
1830
- defaultMessage: [{
1831
- "type": 0,
1832
- "value": "Results"
1833
- }]
1834
- }),
1835
- repeatable: true,
1836
- fields: [{
1837
- name: 'layout',
1838
- type: 'screen-layout',
1839
- defaultValue: 'top',
1840
- screenState: 'results',
1841
- label: reactIntl.defineMessage({
1842
- id: "4iBXj2",
1843
- defaultMessage: [{
1844
- "type": 0,
1845
- "value": "Layout"
1846
- }]
1847
- })
1848
- }, {
1849
- name: 'title',
1850
- type: 'heading-element',
1851
- theme: {
1852
- textStyle: 'heading2'
1853
- },
1854
- label: reactIntl.defineMessage({
1855
- id: "+AEVbJ",
1856
- defaultMessage: [{
1857
- "type": 0,
1858
- "value": "Title"
1859
- }]
1860
- })
1861
- }, {
1862
- name: 'description',
1863
- type: 'text-element',
1864
- theme: {
1865
- textStyle: 'text'
1866
- },
1867
- label: reactIntl.defineMessage({
1868
- id: "ZCe0r4",
1869
- defaultMessage: [{
1870
- "type": 0,
1871
- "value": "Description"
1872
- }]
1873
- })
1874
- }, {
1875
- name: 'points',
1876
- type: 'number',
1877
- isHorizontal: true,
1878
- label: reactIntl.defineMessage({
1879
- id: "jWAJW4",
1880
- defaultMessage: [{
1881
- "type": 0,
1882
- "value": "Points"
1883
- }]
1884
- }),
1885
- help: reactIntl.defineMessage({
1886
- id: "JoyIgA",
1887
- defaultMessage: [{
1888
- "type": 0,
1889
- "value": "Minimum points for this result"
1890
- }]
1891
- })
1892
- }, {
1893
- name: 'background',
1894
- type: 'background',
1895
- label: reactIntl.defineMessage({
1896
- id: "cDj1mZ",
1897
- defaultMessage: [{
1898
- "type": 0,
1899
- "value": "Background"
1900
- }]
1901
- })
1902
- }]
1903
- }],
1904
- fields: [{
1905
- name: 'layout',
1906
- type: 'screen-layout',
1907
- defaultValue: 'top',
1908
- label: reactIntl.defineMessage({
1909
- id: "OPxJx/",
1910
- defaultMessage: [{
1911
- "type": 0,
1912
- "value": "Layout"
1913
- }]
1914
- })
1915
- }, {
1916
- type: 'fields',
1917
- label: reactIntl.defineMessage({
1918
- id: "LOknw0",
1919
- defaultMessage: [{
1920
- "type": 0,
1921
- "value": "Styles"
1922
- }]
1923
- }),
1924
- isList: true,
1925
- fields: [{
1926
- name: 'buttonsStyle',
1927
- type: 'box-style-form',
1928
- label: reactIntl.defineMessage({
1929
- id: "l5uLMd",
1930
- defaultMessage: [{
1931
- "type": 0,
1932
- "value": "Buttons"
1933
- }]
1934
- })
1935
- }, {
1936
- name: 'buttonsTextStyle',
1937
- type: 'text-style-form',
1938
- label: reactIntl.defineMessage({
1939
- id: "gwPu/I",
1940
- defaultMessage: [{
1941
- "type": 0,
1942
- "value": "Buttons text"
1943
- }]
1944
- })
1945
- }, {
1946
- name: 'questionsHeadingStyle',
1947
- type: 'text-style-form',
1948
- label: reactIntl.defineMessage({
1949
- id: "+FHxPO",
1950
- defaultMessage: [{
1951
- "type": 0,
1952
- "value": "Questions title"
1953
- }]
1954
- })
1955
- }, {
1956
- name: 'resultsHeadingStyle',
1957
- type: 'text-style-form',
1958
- label: reactIntl.defineMessage({
1959
- id: "BnRW4y",
1960
- defaultMessage: [{
1961
- "type": 0,
1962
- "value": "Results title"
1963
- }]
1964
- })
1965
- }, {
1966
- name: 'resultsTextStyle',
1967
- type: 'text-style-form',
1968
- label: reactIntl.defineMessage({
1969
- id: "uDHTZn",
1970
- defaultMessage: [{
1971
- "type": 0,
1972
- "value": "Results description"
1973
- }]
1974
- })
1975
- }]
1976
- }, {
1977
- name: 'background',
1978
- type: 'background',
1979
- label: reactIntl.defineMessage({
1980
- id: "cDj1mZ",
1981
- defaultMessage: [{
1982
- "type": 0,
1983
- "value": "Background"
1984
- }]
1985
- })
1986
- }, {
1987
- name: 'header',
1988
- type: 'header',
1989
- label: reactIntl.defineMessage({
1990
- id: "rhuDxI",
1991
- defaultMessage: [{
1992
- "type": 0,
1993
- "value": "Header"
1994
- }]
1995
- }),
1996
- theme: {
1997
- badge: {
1998
- label: {
1999
- textStyle: 'badge'
2000
- },
2001
- boxStyle: 'badge'
2002
- }
2003
- }
2004
- }, {
2005
- name: 'footer',
2006
- type: 'footer',
2007
- label: reactIntl.defineMessage({
2008
- id: "g4nybp",
2009
- defaultMessage: [{
2010
- "type": 0,
2011
- "value": "Footer"
2012
- }]
2013
- }),
2014
- theme: {
2015
- callToAction: {
2016
- label: {
2017
- textStyle: 'cta'
2018
- },
2019
- boxStyle: 'cta'
2020
- }
2021
- }
2022
- }]
2023
- }];
2024
-
2025
- exports.QuizMultipleScreen = QuizMultipleScreen$1;
2026
- exports.QuizScreen = QuizScreen$1;
2027
- exports.default = definition;