{"version":3,"file":"js/829-7e433142332b7c16098b.js","mappings":"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","sources":["webpack://AYTM/./app/_stock/webpack/app/swidget/questions/components/sft/settings.js","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/styles/sft/buttons.module.scss?af67","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/components/sft/buttons.jsx","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/styles/sft/training.module.scss?5448","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/components/sft/training.jsx","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/styles/sft/answers.module.scss?9353","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/components/sft/answers.jsx","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/styles/sft.module.scss?7806","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/components/sft/image.jsx","webpack://AYTM/./app/_stock/webpack/app/swidget/questions/components/sft.jsx"],"sourcesContent":["export const SETTINGS = {\n  animationDurationOnClick: 380,\n  animationDurationOnTimeout: 200,\n  animationDurationTraining: 300,\n  stepSuccessDuration: 1200,\n  stepFailDuration: 3000,\n  pauseTimeout: 500,\n  pauseClick: 1,\n  leftKeycodes: rev => (rev ? [74, 39, 40] : [70, 37, 38]),\n  rightKeycodes: rev => (rev ? [70, 37, 38] : [74, 39, 40]),\n  buttons: {\n    yesno: {\n      width: 200\n    },\n    noyes: {\n      width: 200\n    },\n    matches: {\n      className: 'matches',\n      width: 200\n    },\n    matchesRev: {\n      className: 'matches',\n      width: 200\n    },\n    fits: {\n      className: 'fits',\n      width: 200\n    },\n    fitsRev: {\n      className: 'fits',\n      width: 200\n    },\n    thumbs: {\n      className: 'thumbs',\n      left: { icon: 'icon-aytmfd-thumbsUp' },\n      right: { icon: 'icon-aytmfd-thumbsDown' },\n      width: 200\n    },\n    thumbsRev: {\n      className: 'thumbs',\n      left: { icon: 'icon-aytmfd-thumbsUp' },\n      right: { icon: 'icon-aytmfd-thumbsDown' },\n      width: 200\n    }\n  }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"left\":\"buttons-module__left___xTKdE left-button\",\"right\":\"buttons-module__right___g2InA right-button\",\"buttons\":\"buttons-module__buttons___1ENN8\",\"button\":\"buttons-module__button___122xi\",\"start\":\"buttons-module__start___3hiVI\",\"active\":\"buttons-module__active___lOfwq\",\"animate\":\"buttons-module__animate___1AVFP\",\"sft-animate-button-bg\":\"buttons-module__sft-animate-button-bg___2Ljko\",\"mute\":\"buttons-module__mute___1zVIE\",\"touch\":\"buttons-module__touch___3QIJh\",\"matches\":\"buttons-module__matches___3vAeX\",\"fits\":\"buttons-module__fits___hBqyo\",\"thumbs\":\"buttons-module__thumbs___2Jk56\",\"sft-animate-button-bg-green\":\"buttons-module__sft-animate-button-bg-green___2YEAD\",\"sft-animate-button-bg-red\":\"buttons-module__sft-animate-button-bg-red___2heuS\",\"hidden\":\"buttons-module__hidden___24gBS\",\"disabled\":\"buttons-module__disabled___3y9OP\",\"keyonly\":\"buttons-module__keyonly___oX-nX\"};","import React, { memo, useEffect, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport { stopEvent } from '@aytm/lib/common/func'\nimport Button from '@aytm/lib/rfd-ui/components/basic/button'\n\nimport { SETTINGS } from '@aytm/app/swidget/questions/components/sft/settings'\n\n// styles\nimport style from '@aytm/app/swidget/questions/styles/sft/buttons.module.scss'\n\nButtons.propTypes = {\n  type: PropTypes.string.isRequired,\n  hidden: PropTypes.bool,\n  disabled: PropTypes.bool,\n  keyOnly: PropTypes.bool.isRequired,\n  keyOff: PropTypes.bool.isRequired,\n  onClickButton: PropTypes.func.isRequired,\n  updateTimeline: PropTypes.func.isRequired,\n  leftButton: PropTypes.string,\n  rightButton: PropTypes.string,\n  locale: PropTypes.object.isRequired,\n  isTouchDevice: PropTypes.bool,\n  sessionDocument: PropTypes.object.isRequired\n}\n\nexport default memo(\n  Buttons,\n  (prevProps, nextProps) =>\n    prevProps.type === nextProps.type &&\n    prevProps.hidden === nextProps.hidden &&\n    prevProps.disabled === nextProps.disabled &&\n    prevProps.onClickButton === nextProps.onClickButton &&\n    prevProps.updateTimeline === nextProps.updateTimeline &&\n    prevProps.leftButton === nextProps.leftButton &&\n    prevProps.rightButton === nextProps.rightButton &&\n    prevProps.locale === nextProps.locale &&\n    prevProps.isTouchDevice === nextProps.isTouchDevice &&\n    prevProps.sessionDocument === nextProps.sessionDocument\n)\n\nconst isButtonClickable = state => state != 'mute' && state != 'active'\n\nexport function Buttons(props) {\n  const {\n    type,\n    hidden,\n    disabled,\n    onClickButton,\n    updateTimeline,\n    leftButton,\n    rightButton,\n    locale,\n    keyOff,\n    keyOnly,\n    isTouchDevice,\n    sessionDocument\n  } = props\n  const buttons = SETTINGS.buttons[type]\n  const isButtonsReversed = ['thumbsRev', 'noyes', 'matchesRev', 'fitsRev'].includes(type)\n\n  const disabledRef = useRef()\n  disabledRef.current = disabled\n\n  const onClickLeftButton = event => {\n    stopEvent(event)\n    onClickButton('y', event)\n  }\n\n  const onClickRightButton = event => {\n    stopEvent(event)\n    onClickButton('n', event)\n  }\n\n  const isLeftButton = event =>\n    SETTINGS.leftKeycodes(isButtonsReversed).includes(event.keyCode) ||\n    event.target.classList.contains('left-button') ||\n    event.target.parentNode.classList.contains('left-button')\n\n  const isRightButton = event =>\n    SETTINGS.rightKeycodes(isButtonsReversed).includes(event.keyCode) ||\n    event.target.classList.contains('right-button') ||\n    event.target.parentNode.classList.contains('right-button')\n\n  const getButtonLabel = button => {\n    const revList = {\n      noyes: 'yesno',\n      thumbsRev: 'thumbs',\n      matchesRev: 'matches',\n      fitsRev: 'fits'\n    }\n\n    const btnType = isButtonsReversed ? revList[type] : type\n    return locale.getIn(['buttons', btnType, button])\n  }\n\n  const isEventAllowed = event =>\n    (keyOff && ['touchstart', 'mousedown'].includes(event.type)) ||\n    (keyOnly && ['touchstart', 'keydown'].includes(event.type)) ||\n    (isTouchDevice && ['touchstart', 'mousedown'].includes(event.type)) ||\n    (!keyOff && !keyOnly)\n\n  const handleDownRef = useRef()\n  handleDownRef.current = event => {\n    const eventTarget = (event.keyCode ? event.keyCode : event.target.className).toString()\n    if (!hidden && !disabledRef.current && isEventAllowed(event)) {\n      if (isLeftButton(event) && isButtonClickable(leftButton)) {\n        onClickLeftButton(event)\n      } else if (isRightButton(event) && isButtonClickable(rightButton)) {\n        onClickRightButton(event)\n      } else {\n        updateTimeline({\n          type: event.type,\n          target: eventTarget,\n          ref: 'ignored'\n        })\n      }\n    } else {\n      updateTimeline({\n        type: event.type,\n        target: eventTarget,\n        ref: 'ignored'\n      })\n    }\n  }\n\n  useEffect(() => {\n    const globalKeyDown = event => {\n      if (!event.repeat) {\n        handleDownRef.current(event)\n      }\n    }\n    const handleDown = event => handleDownRef.current(event)\n    const question = sessionDocument.querySelector('.swidget-sft-wrapper')\n    sessionDocument.addEventListener('keydown', globalKeyDown)\n\n    if (question) {\n      question.addEventListener('mousedown', handleDown)\n      question.addEventListener('touchstart', handleDown, { passive: false })\n    }\n\n    return () => {\n      sessionDocument.removeEventListener('keydown', globalKeyDown)\n      if (question) {\n        question.removeEventListener('touchstart', handleDown, false)\n        question.removeEventListener('mousedown', handleDown)\n      }\n    }\n  }, [leftButton, rightButton, sessionDocument])\n\n  const yesBtn = (\n    <Button\n      label={`${getButtonLabel('left')} ${\n        !isTouchDevice && keyOnly ? (isButtonsReversed ? '<span>J</span>' : '<span>F</span>') : ''\n      }`}\n      className={`${style.button}\n          ${style.left}\n          ${leftButton ? style[leftButton] : ''}`}\n      width={buttons.width}\n      data-testid=\"SW-SFT-ButtonYes\"\n    />\n  )\n\n  const noBtn = (\n    <Button\n      label={`${getButtonLabel('right')} ${\n        !isTouchDevice && keyOnly ? (isButtonsReversed ? '<span>F</span>' : '<span>J</span>') : ''\n      }`}\n      className={`${style.button}\n          ${style.right}\n          ${rightButton ? style[rightButton] : ''}`}\n      width={buttons.width}\n      data-testid=\"SW-SFT-ButtonNo\"\n    />\n  )\n\n  return (\n    <div\n      className={`${style.buttons}\n        ${hidden ? style.hidden : ''}\n        ${disabled ? style.disabled : ''}\n        ${isTouchDevice ? style.touch : ''}\n        ${buttons.className ? style[buttons.className] : ''}\n        ${!isTouchDevice && keyOnly ? style.keyonly : ''}\n        `}\n      data-testid=\"SW-SFT-Buttons\"\n    >\n      {isButtonsReversed ? (\n        <>\n          {noBtn} {yesBtn}\n        </>\n      ) : (\n        <>\n          {yesBtn} {noBtn}\n        </>\n      )}\n    </div>\n  )\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"text\":\"training-module__text___DBd9K swidget-global-div swidget-global-span\",\"screen\":\"training-module__screen___1elPF\",\"answer\":\"training-module__answer___Mk9H_\",\"grow\":\"training-module__grow___22AbA\",\"appear\":\"training-module__appear___2VdxI\",\"sft-answer-appear\":\"training-module__sft-answer-appear___1JJ5s\",\"exit\":\"training-module__exit___1TSoc\",\"sft-answer-fade-out\":\"training-module__sft-answer-fade-out___2XNRO\",\"fade\":\"training-module__fade___23LhH\",\"sft-answer-fade-in\":\"training-module__sft-answer-fade-in___Cp2R4\"};","import React, { Fragment, memo, useState, useEffect, useRef } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { CSSTransition } from 'react-transition-group'\nimport SwitchTransition from 'react-transition-group/cjs/SwitchTransition'\nimport Button from '@aytm/lib/rfd-ui/components/basic/button'\nimport Buttons from '@aytm/app/swidget/questions/components/sft/buttons'\n\nimport { SETTINGS } from '@aytm/app/swidget/questions/components/sft/settings'\n\n// styles\nimport style from '@aytm/app/swidget/questions/styles/sft/training.module.scss'\nimport styleButtons from '@aytm/app/swidget/questions/styles/sft/buttons.module.scss'\n\nTraining.propTypes = {\n  buttonsType: PropTypes.string.isRequired,\n  attrExposure: PropTypes.number.isRequired,\n  locale: PropTypes.object.isRequired,\n  isTouchDevice: PropTypes.bool,\n  keyOff: PropTypes.bool.isRequired,\n  keyOnly: PropTypes.bool.isRequired,\n  imagesText: PropTypes.bool,\n  onFinishTraining: PropTypes.func.isRequired,\n  updateTimeline: PropTypes.func.isRequired,\n  eventRef: PropTypes.string.isRequired,\n  sessionDocument: PropTypes.object.isRequired\n}\n\nexport default memo(\n  Training,\n  (prevProps, nextProps) =>\n    prevProps.buttonsType === nextProps.buttonsType &&\n    prevProps.attrExposure === nextProps.attrExposure &&\n    prevProps.locale === nextProps.locale &&\n    prevProps.eventRef === nextProps.eventRef &&\n    prevProps.onFinishTraining === nextProps.onFinishTraining &&\n    prevProps.updateTimeline === nextProps.updateTimeline &&\n    prevProps.sessionDocument === nextProps.sessionDocument\n)\n\nexport function Training(props) {\n  const {\n    attrExposure,\n    eventRef,\n    updateTimeline,\n    onFinishTraining,\n    locale,\n    buttonsType,\n    isTouchDevice,\n    keyOff,\n    keyOnly,\n    imagesText,\n    sessionDocument\n  } = props\n  const animationDuration = SETTINGS.animationDurationTraining\n  const stepFailDuration = SETTINGS.stepFailDuration\n  const stepSuccessDuration = SETTINGS.stepSuccessDuration\n  const isButtonsReversed = ['thumbsRev', 'noyes', 'matchesRev', 'fitsRev'].includes(buttonsType)\n\n  const [step, setStep] = useState('start')\n  const [disableButtons, setDisableButtons] = useState(false)\n\n  const answerTimer = useRef()\n  const curStepTimer = useRef()\n  const setStep2Timer = useRef()\n  const eventRefRef = useRef()\n  const updateTimelineRef = useRef()\n  const clearAnswerTimerRef = useRef()\n\n  const clearAnswerTimer = () => {\n    if (answerTimer.current) {\n      clearTimeout(answerTimer.current)\n      answerTimer.current = null\n    }\n    if (curStepTimer.current) {\n      clearTimeout(curStepTimer.current)\n      curStepTimer.current = null\n    }\n  }\n\n  eventRefRef.current = eventRef\n  updateTimelineRef.current = updateTimeline\n  clearAnswerTimerRef.current = clearAnswerTimer\n\n  const onClickButtonStart = event => {\n    const { nativeEvent } = event\n    setStep('step1')\n    updateTimeline({ type: nativeEvent.type, target: 'Start', ref: eventRefRef.current })\n  }\n\n  const onClickButton = (value, event) => {\n    if ('y' == value && 'step1' == step) {\n      updateTimeline({ type: event.type, target: value, ref: eventRefRef.current })\n      setStep('success')\n      setStep2Timer.current = setTimeout(() => {\n        setStep('step2')\n        clearTimeout(setStep2Timer.current)\n        setStep2Timer.current = null\n      }, stepSuccessDuration + animationDuration)\n    } else if ('n' == value && 'step2' == step) {\n      updateTimeline({ type: event.type, target: value, ref: eventRefRef.current })\n      setStep('finish')\n    }\n  }\n\n  const runAnswerTimer = () => {\n    if (!answerTimer.current) {\n      answerTimer.current = setTimeout(\n        () => {\n          const curStep = step\n          setStep('fail')\n          curStepTimer.current = setTimeout(() => {\n            setStep(curStep)\n          }, stepFailDuration + animationDuration)\n        },\n        attrExposure * 1000 + animationDuration\n      )\n    }\n  }\n\n  const onExitAnimation = step => {\n    updateTimeline({ type: 'hide_training_step', target: `${step}`, ref: eventRefRef.current })\n  }\n\n  const onEnteredAnimation = step => {\n    if ('finish' == step) {\n      onFinishTraining()\n    }\n    updateTimeline({ type: 'show_training_step', target: `training_${step}`, ref: eventRefRef.current })\n  }\n\n  const start = () => {\n    const startText = imagesText\n      ? locale.getIn(['training', 'start']).replace('words', 'images')\n      : locale.getIn(['training', 'start'])\n    return (\n      <Fragment>\n        <div className={`${style.screen}`} data-testid=\"SW-SFT-ScreenText\">\n          <div className={style.answer}>\n            <div\n              data-testid=\"SW-SFT-TrainingText\"\n              className={style.text}\n              dangerouslySetInnerHTML={{ __html: startText }}\n            ></div>\n          </div>\n        </div>\n        <div className={styleButtons.buttons} data-testid=\"SW-SFT-Buttons\">\n          <Button\n            data-testid=\"SW-SFT-ButtonStart\"\n            label={locale.getIn(['buttons', 'start'])}\n            className={`${styleButtons.button} ${styleButtons.start}`}\n            onClick={onClickButtonStart}\n          />\n        </div>\n      </Fragment>\n    )\n  }\n\n  const text = () => {\n    const text = locale\n      .getIn(['training', step])(isTouchDevice, !keyOnly, !keyOff)\n      .replace('{buttonLeft}', locale.getIn(['buttons', buttonsType, 'left']))\n      .replace('{keyBtnLeft}', isButtonsReversed ? 'J' : 'F')\n      .replace('{keyBtnRight}', isButtonsReversed ? 'F' : 'J')\n      .replace('{buttonRight}', locale.getIn(['buttons', buttonsType, 'right']))\n    return <div className={style.text} dangerouslySetInnerHTML={{ __html: text }} />\n  }\n\n  const buttons = () => {\n    const leftButtonState = 'step1' == step ? 'animate' : 'mute'\n    const rightButtonState = 'step2' == step ? 'animate' : 'mute'\n    return (\n      <Buttons\n        keyOff={keyOff}\n        keyOnly={keyOnly}\n        isTouchDevice={isTouchDevice}\n        type={buttonsType}\n        hidden={['success', 'finish'].includes(step)}\n        disabled={disableButtons}\n        leftButton={leftButtonState}\n        rightButton={rightButtonState}\n        onClickButton={onClickButton}\n        updateTimeline={updateTimeline}\n        locale={locale}\n        sessionDocument={sessionDocument}\n      />\n    )\n  }\n\n  const steps = () => (\n    <Fragment>\n      <div\n        className={`${style.screen} ${['step1', 'step2'].includes(step) ? style.grow : style.fade}`}\n        data-testid=\"SW-SFT-ScreenTraining-Steps\"\n      >\n        <SwitchTransition>\n          <CSSTransition\n            appear={true}\n            timeout={{\n              appear: animationDuration * 2,\n              exit: animationDuration\n            }}\n            onEntered={() => onEnteredAnimation(step)}\n            onExit={() => onExitAnimation(step)}\n            classNames={{\n              appear: style.appear,\n              exit: style.exit\n            }}\n            key={step}\n          >\n            <div className={style.answer} data-testid={`SW-SFT-ScreenTraining-${step}`}>\n              {text(step)}\n            </div>\n          </CSSTransition>\n        </SwitchTransition>\n      </div>\n      {buttons()}\n    </Fragment>\n  )\n\n  useEffect(() => {\n    updateTimelineRef.current({\n      type: 'show_training',\n      ref: eventRefRef.current,\n      target: eventRefRef.current\n    })\n    return () => {\n      clearTimeout(setStep2Timer.current)\n      setStep2Timer.current = null\n      clearAnswerTimerRef.current()\n      updateTimelineRef.current({\n        type: 'hide_training',\n        ref: eventRefRef.current,\n        target: eventRefRef.current\n      })\n    }\n  }, [])\n\n  const runAnswerTimerRef = useRef()\n  runAnswerTimerRef.current = runAnswerTimer\n  useEffect(() => {\n    clearAnswerTimer()\n\n    switch (step) {\n      case 'step1': {\n        setDisableButtons(false)\n        runAnswerTimerRef.current()\n        break\n      }\n      case 'step2': {\n        setDisableButtons(false)\n        runAnswerTimerRef.current()\n        break\n      }\n      case 'fail': {\n        setDisableButtons(true)\n        break\n      }\n      case 'success': {\n        setDisableButtons(true)\n        break\n      }\n      default: {\n        setDisableButtons(false)\n      }\n    }\n  }, [step])\n\n  return 'start' == step ? start() : steps()\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"text\":\"answers-module__text___2BNNF swidget-global-span\",\"screen\":\"answers-module__screen___1GIRi\",\"answer\":\"answers-module__answer___3qsOz\",\"entering\":\"answers-module__entering___3y72T\",\"entered\":\"answers-module__entered___27xCL\",\"exiting\":\"answers-module__exiting___3Tdor\",\"sft-answer-grow-out\":\"answers-module__sft-answer-grow-out___12Hqx\",\"exited\":\"answers-module__exited___sPPt8\",\"small\":\"answers-module__small___kVl30\",\"fakeHidden\":\"answers-module__fakeHidden___2PbqW\",\"thumbnail\":\"answers-module__thumbnail___2wbEp\",\"img\":\"answers-module__img___3wCmd\",\"cross\":\"answers-module__cross___35Ita\",\"line\":\"answers-module__line___gXp9o\",\"grow\":\"answers-module__grow___3bK2z\",\"sft-answer-grow\":\"answers-module__sft-answer-grow___2iKmE\",\"top\":\"answers-module__top___20HiI\",\"sft-answer-fly-out-top\":\"answers-module__sft-answer-fly-out-top___1CvAq\",\"bottom\":\"answers-module__bottom___1f_aG\",\"sft-answer-fly-out-bottom\":\"answers-module__sft-answer-fly-out-bottom___3HzmH\"};","import React, { Fragment, memo, useState, useRef, useEffect } from 'react'\nimport PropTypes from 'prop-types'\n\nimport { Transition } from 'react-transition-group'\nimport SwitchTransition from 'react-transition-group/cjs/SwitchTransition'\nimport Buttons from '@aytm/app/swidget/questions/components/sft/buttons'\nimport { SETTINGS } from '@aytm/app/swidget/questions/components/sft/settings'\n\n// styles\nimport style from '@aytm/app/swidget/questions/styles/sft/answers.module.scss'\n\nAnswers.propTypes = {\n  answers: PropTypes.object.isRequired,\n  answersMask: PropTypes.array.isRequired,\n  updateAnswers: PropTypes.func.isRequired,\n  updateTimeline: PropTypes.func.isRequired,\n  buttonsType: PropTypes.string.isRequired,\n  pauseClick: PropTypes.number.isRequired,\n  keyOnly: PropTypes.bool.isRequired,\n  keyOff: PropTypes.bool.isRequired,\n  animationOff: PropTypes.bool.isRequired,\n  goNext: PropTypes.func.isRequired,\n  isTouchDevice: PropTypes.bool,\n  attrExposure: PropTypes.number.isRequired,\n  locale: PropTypes.object.isRequired,\n  sessionDocument: PropTypes.object.isRequired\n}\n\nexport default memo(\n  Answers,\n  (prevProps, nextProps) =>\n    prevProps.answers === nextProps.answers &&\n    prevProps.answersMask === nextProps.answersMask &&\n    prevProps.attrExposure === nextProps.attrExposure &&\n    prevProps.locale === nextProps.locale &&\n    prevProps.sessionDocument === nextProps.sessionDocument\n)\n\nexport function Answers(props) {\n  const {\n    answers,\n    answersMask,\n    locale,\n    attrExposure,\n    buttonsType,\n    updateTimeline,\n    updateAnswers,\n    pauseClick,\n    keyOff,\n    keyOnly,\n    animationOff,\n    goNext,\n    isTouchDevice,\n    sessionDocument\n  } = props\n  const [answerIndex, setAnswerIndex] = useState(0)\n  const [animation, setAnimation] = useState(null)\n  const [disableButtons, setDisableButtons] = useState(true)\n  const [pause, setPause] = useState(0)\n\n  const answerTimer = useRef()\n  const pauseTimer = useRef()\n\n  const onTimeoutPause = pauseClick * 1000 - 500\n  const answerShowAnimationDuration = attrExposure * 1000\n  const answerHideAnimationDuration = ['top', 'bottom'].includes(animation)\n    ? SETTINGS.animationDurationOnClick\n    : SETTINGS.animationDurationOnTimeout\n\n  useEffect(\n    () => () => {\n      if (answerTimer.current) {\n        clearTimeout(answerTimer.current)\n        answerTimer.current = null\n      }\n      if (pauseTimer.current) {\n        clearTimeout(pauseTimer.current)\n        pauseTimer.current = null\n      }\n    },\n    []\n  )\n\n  const nextAnswer = () => {\n    setAnswerIndex(answerIndex + 1)\n    clearTimeout(answerTimer.current)\n    answerTimer.current = null\n  }\n\n  const onClickButton = (value, event) => {\n    setAnimation('y' == value ? 'top' : 'bottom')\n    setPause(pauseClick * 1000)\n    updateTimeline({ type: event.type, target: value, ref: answersMask[answerIndex] })\n    updateAnswers({ [answersMask[answerIndex]]: value })\n    nextAnswer(value)\n  }\n\n  const runAnswerTimer = () => {\n    updateTimeline({ type: 'run answer timer', ref: answersMask[answerIndex] })\n    if (answerIndex < answersMask.length && !answerTimer.current) {\n      answerTimer.current = setTimeout(() => {\n        setPause(onTimeoutPause)\n        setDisableButtons(true)\n        updateTimeline({ type: 'answer_timeout', ref: answersMask[answerIndex] })\n        updateAnswers({ [answersMask[answerIndex]]: 'na' })\n        nextAnswer()\n      }, answerShowAnimationDuration)\n    }\n  }\n\n  const onEnterAnimation = index => {\n    updateTimeline({ type: 'enter_animation', ref: answersMask[index] })\n\n    pauseTimer.current = setTimeout(() => {\n      setDisableButtons(false)\n      setAnimation('grow')\n      if (answerIndex < answersMask.length) {\n        updateTimeline({ type: 'show_answer', ref: answersMask[index] })\n      }\n\n      runAnswerTimer()\n      clearTimeout(pauseTimer.current)\n      pauseTimer.current = null\n    }, pause)\n  }\n\n  const onExitAnimation = index => {\n    if ('grow' == animation) {\n      setAnimation(null)\n    }\n    updateTimeline({ type: 'hide_answer', ref: answersMask[index] })\n  }\n\n  const onExitedAnimation = () => {\n    if (answersMask.length - 1 == answerIndex) {\n      setTimeout(() => {\n        setDisableButtons(true)\n        if ('function' == typeof goNext) goNext()\n      }, 50)\n    } else {\n      setDisableButtons(true)\n    }\n  }\n\n  const leftButtonState = disableButtons\n    ? 'mute'\n    : animation && 'grow' != animation\n    ? 'top' == animation\n      ? 'active'\n      : 'mute'\n    : null\n\n  const rightButtonState = disableButtons\n    ? 'mute'\n    : animation && 'grow' != animation\n    ? 'bottom' == animation\n      ? 'active'\n      : 'mute'\n    : null\n\n  const buttons = (\n    <Buttons\n      keyOff={keyOff}\n      keyOnly={keyOnly}\n      type={buttonsType}\n      leftButton={leftButtonState}\n      rightButton={rightButtonState}\n      hidden={disableButtons && answersMask.length == answerIndex}\n      onClickButton={onClickButton}\n      locale={locale}\n      isTouchDevice={isTouchDevice}\n      updateTimeline={updateTimeline}\n      sessionDocument={sessionDocument}\n    />\n  )\n\n  const answerItemText = answer => (\n    <span\n      dangerouslySetInnerHTML={{ __html: answer.get('text') }}\n      className={`${answer.get('fakeHidden') ? style.fakeHidden : ''} ${style.text}`}\n      data-testid=\"SW-SFT-AnswerText\"\n    ></span>\n  )\n  const answerItemImage = answer => (\n    <div className={style.thumbnail}>\n      <div\n        className={`${style.img} ${answer.get('fakeHidden') ? style.fakeHidden : ''}`}\n        data-testid=\"SW-SFT-AnswerImage\"\n      >\n        <img src={answer.getIn(['picture', 'big_thumbnail_path'])} />\n        {answer.get('fakeHidden') && (\n          <div className={style.cross}>\n            <div className={style.line} style={imageLineStyles(answer).left}></div>\n            <div className={style.line} style={imageLineStyles(answer).right}></div>\n          </div>\n        )}\n      </div>\n      <span\n        dangerouslySetInnerHTML={{ __html: answer.get('text') }}\n        className={`${style.text} ${answer.get('fakeHidden') ? style.fakeHidden : ''}`}\n        data-testid=\"SW-SFT-AnswerText\"\n      ></span>\n    </div>\n  )\n  const answer = answerIndex => {\n    const answer = answers.find(item => item.get('id') == answersMask[answerIndex])\n    return answer.get('picture') && answer.getIn(['picture', 'big_thumbnail_path'])\n      ? answerItemImage(answer)\n      : answerItemText(answer)\n  }\n\n  const getAnimationDuration = status =>\n    `${'exiting' == status ? answerHideAnimationDuration : answerShowAnimationDuration}ms`\n\n  return (\n    <Fragment>\n      <div\n        className={`${style.screen} ${animation && !animationOff ? style[animation] : ''}`}\n        data-testid=\"SW-SFT-Screen\"\n      >\n        <SwitchTransition>\n          <Transition\n            appear\n            timeout={{\n              enter: answerShowAnimationDuration + pause,\n              exit: answerHideAnimationDuration\n            }}\n            onEnter={() => onEnterAnimation(answerIndex)}\n            onExit={() => onExitAnimation(answerIndex)}\n            onExited={() => onExitedAnimation(answerIndex)}\n            key={`animation-transition-${answerIndex}`}\n          >\n            {status => (\n              <Fragment>\n                {answersMask.length > answerIndex && (\n                  <div\n                    className={`${style.answer}\n                    ${animationOff ? (disableButtons ? style['exited'] : '') : status ? style[status] : ''}`}\n                    style={{ animationDuration: getAnimationDuration(status) }}\n                    key={`animation-${answerIndex}-${animation}`}\n                    data-testid=\"SW-SFT-Answer\"\n                  >\n                    {answer(answerIndex)}\n                  </div>\n                )}\n              </Fragment>\n            )}\n          </Transition>\n        </SwitchTransition>\n      </div>\n      {buttons}\n    </Fragment>\n  )\n}\n\nfunction imageLineStyles(answer) {\n  const thumbnail = answer.getIn(['picture', 'thumbnail'])\n  const angle = (Math.atan(thumbnail.get('width') / thumbnail.get('height')) * 180) / Math.PI\n  return {\n    left: {\n      transform: `rotate(${angle}deg)`\n    },\n    right: {\n      transform: `rotate(-${angle}deg)`\n    }\n  }\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"component\":\"sft-module__component___QhN-j\",\"wrapper\":\"sft-module__wrapper___3F87t swidget-sft-wrapper\",\"container\":\"sft-module__container___HETdJ\",\"image\":\"sft-module__image___-nPMk\",\"appear\":\"sft-module__appear___2fZS_\",\"exit\":\"sft-module__exit___3qxfL\",\"error\":\"sft-module__error___q8Vl0\",\"imageContainer\":\"sft-module__imageContainer___3Ny9j\",\"desktop\":\"sft-module__desktop___2-HN2 swidget-question-theme-desktop\",\"mobile\":\"sft-module__mobile___13GVR swidget-sft-mobile\"};","import React, { memo, useRef, useState, useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { CSSTransition } from 'react-transition-group'\nimport ImagePin from '@aytm/lib/rfd-ui/components/basic/image-pin'\n\n// styles\nimport style from '@aytm/app/swidget/questions/styles/sft.module.scss'\n\nconst ANIMATION_DURATION = 500\n\nImage.propTypes = {\n  url: PropTypes.string.isRequired,\n  imageExposure: PropTypes.number,\n  onFinishImageAnimation: PropTypes.func.isRequired,\n  updateTimeline: PropTypes.func.isRequired,\n  locale: PropTypes.object.isRequired,\n  eventRef: PropTypes.string.isRequired,\n  sessionDocument: PropTypes.object.isRequired\n}\n\nexport default memo(\n  Image,\n  (prevProps, nextProps) =>\n    prevProps.url === nextProps.url &&\n    prevProps.imageExposure === nextProps.imageExposure &&\n    prevProps.onFinishImageAnimation === nextProps.onFinishImageAnimation &&\n    prevProps.updateTimeline === nextProps.updateTimeline &&\n    prevProps.locale === nextProps.locale &&\n    prevProps.eventRef === nextProps.eventRef &&\n    prevProps.sessionDocument === nextProps.sessionDocument\n)\n\nexport function Image(props) {\n  const { url, imageExposure, onFinishImageAnimation, updateTimeline, locale, eventRef, sessionDocument } = props\n  const [show, setShow] = useState(true)\n\n  const pincherActiveRef = useRef(false)\n  const imageRef = useRef(null)\n  const imageTimer = useRef()\n\n  useEffect(() => {\n    const el = sessionDocument?.querySelector('.swidget-modal-container')\n    if (el) {\n      el.scrollTop = 0\n      el.scrollLeft = 0\n    }\n\n    return () => {\n      if (imageTimer.current) {\n        clearTimeout(imageTimer.current)\n        imageTimer.current = null\n      }\n    }\n  }, [sessionDocument])\n\n  const onPincherCreate = () => {\n    pincherActiveRef.current = true\n    updateTimeline({ type: 'pincher_create', target: url, ref: eventRef })\n  }\n\n  const onPincherDestroy = () => {\n    pincherActiveRef.current = false\n    updateTimeline({ type: 'pincher_destroy', target: url, ref: eventRef })\n  }\n\n  const runImageTimer = () => {\n    imageTimer.current = setTimeout(\n      () => {\n        if (imageRef.current) {\n          if (pincherActiveRef.current) {\n            imageRef.current.dispatchEvent(new CustomEvent('destroy:pincher'))\n          }\n\n          imageRef.current.removeEventListener('pincher:create', onPincherCreate)\n          imageRef.current.removeEventListener('pincher:destroy', onPincherDestroy)\n        }\n\n        setShow(false)\n        clearTimeout(imageTimer.current)\n        imageTimer.current = null\n      },\n      imageExposure * 1000 - ANIMATION_DURATION\n    )\n  }\n\n  const onLoadImage = () => {\n    if (imageExposure) {\n      if (imageRef.current) {\n        imageRef.current.addEventListener('pincher:create', onPincherCreate)\n        imageRef.current.addEventListener('pincher:destroy', onPincherDestroy)\n      }\n\n      if (!imageTimer.current && show) {\n        runImageTimer()\n        updateTimeline({ type: 'show_image', target: url, ref: eventRef })\n      }\n    }\n  }\n\n  const onFinishAnimation = () => {\n    updateTimeline({ type: 'hide_image', target: url, ref: eventRef })\n    onFinishImageAnimation()\n  }\n\n  return (\n    <CSSTransition\n      appear\n      unmountOnExit\n      timeout={ANIMATION_DURATION}\n      in={show}\n      classNames={{\n        appear: style.appear,\n        exit: style.exit\n      }}\n      onExited={() => onFinishAnimation()}\n    >\n      <div className={style.image} data-pincher={show ? true : undefined} ref={imageRef} data-testid=\"SW-SFT-Image\">\n        <ImagePin\n          baseURL={url}\n          previewURL={url}\n          hasLoaded={true}\n          clickOnZoom={false}\n          withPincher={false}\n          label={''}\n          onLoad={() => onLoadImage()}\n        />\n        {!imageExposure && <div className={style.error}>{locale.get('imageError')}</div>}\n      </div>\n    </CSSTransition>\n  )\n}\n","import React from 'react'\nimport { fromJS, List, Map } from 'immutable'\nimport autobind from 'autobind-decorator'\nimport locale from '@aytm/app/swidget/questions/locale'\n\nimport { SETTINGS } from '@aytm/app/swidget/questions/components/sft/settings'\nimport Question from '@aytm/app/swidget/questions/components/_base'\nimport Training from '@aytm/app/swidget/questions/components/sft/training'\nimport Answers from '@aytm/app/swidget/questions/components/sft/answers'\nimport Image from '@aytm/app/swidget/questions/components/sft/image'\nimport ImagePin from '@aytm/lib/rfd-ui/components/basic/image-pin'\n\n// styles\nimport style from '@aytm/app/swidget/questions/styles/sft.module.scss'\n\nimport {\n  getImageAssetPath,\n  IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT,\n  IMAGE_ASSET_PATH_FILTER_RESIZE_TO_STRETCH,\n  IMAGE_ASSET_SIZE_MIDDLE,\n  IMAGE_ASSET_SIZE_SMALL\n} from '@aytm/lib/common/assets'\n\nconst MIN_FRAME_HEIHGT = 450\nconst BORDER_RADIUS = 22\n\nexport default class SFT extends Question {\n  constructor(props) {\n    super(props)\n    const { questionSchema } = props\n    const picture = questionSchema.get('image')\n\n    this.state = {\n      ...this.state,\n      showImage: picture && picture.get('original_url')\n    }\n\n    this.locale = locale(props.locale).getIn(['questions', 'sft'])\n    this.initAnswer([])\n  }\n\n  preLoadQuestionImages(props) {\n    this.answers = props.questionSchema.get('answers').reduce(\n      (answers, answer) =>\n        answer.get('image')\n          ? answers.push(\n              answer.set(\n                'picture',\n                answer.get('image').merge(\n                  fromJS({\n                    big_thumbnail_path: getImageAssetPath({\n                      filter: IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT,\n                      width: IMAGE_ASSET_SIZE_MIDDLE,\n                      height: IMAGE_ASSET_SIZE_MIDDLE,\n                      path: answer.get('image').get('original_path'),\n                      backgroundColor: 'white',\n                      animated: true\n                    }),\n                    thumbnail_path: getImageAssetPath({\n                      filter: IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT,\n                      width: IMAGE_ASSET_SIZE_SMALL,\n                      height: IMAGE_ASSET_SIZE_SMALL,\n                      path: answer.get('image').get('original_path'),\n                      backgroundColor: 'white',\n                      animated: true\n                    }),\n                    pin_image: answer.get('image').get('expand')\n                  })\n                )\n              )\n            )\n          : answers.push(answer),\n      List()\n    )\n    this.answers.forEach(answer => {\n      if (answer.getIn(['picture', 'original_url'])) this.preLoadImage(answer, 'big_thumbnail_path')\n    })\n  }\n\n  componentDidMount() {\n    if (super.componentDidMount) {\n      super.componentDidMount()\n    }\n    const { actionAfterDidMount, questionSchema } = this.props\n    if (actionAfterDidMount === typeof 'function') actionAfterDidMount() // TODO Asya\n\n    this.updateTimeline({\n      type: 'render_question',\n      ref: questionSchema.get('id'),\n      target: questionSchema.get('id')\n    })\n  }\n\n  // response: [{q1a1: 'y'}, {q1a2: 'n'}, {q1a3: 'na'}]\n  backendResponse(answerModel) {\n    return answerModel\n  }\n\n  validate(answerModel) {\n    const { questionSchema, training } = this.props\n    const answersMask = questionSchema.get('answers_mask')\n    const answers = questionSchema.get('answers')\n    if (training) return Map({ valid: false })\n    return Map({ valid: !answers.size || answerModel.length == answersMask.size })\n  }\n\n  @autobind\n  updateAnswers(value) {\n    const { answer } = this.state\n    this.updateAnswer([...answer, value])\n  }\n\n  @autobind\n  onFinishTraining() {\n    const { enableNext } = this.props\n    this.updateAnswers({ training_shown: true })\n    if (enableNext === typeof 'function') enableNext()\n  }\n\n  @autobind\n  onFinishImageAnimation() {\n    this.setState({ showImage: false })\n  }\n\n  @autobind\n  renderImageMissing() {\n    const noImageSrc = getImageAssetPath({\n      filter: IMAGE_ASSET_PATH_FILTER_RESIZE_TO_STRETCH,\n      width: IMAGE_ASSET_SIZE_MIDDLE,\n      height: IMAGE_ASSET_SIZE_MIDDLE,\n      path: 'no_image',\n      backgroundColor: 'none'\n    })\n\n    return (\n      <div className={style.image}>\n        <ImagePin\n          baseURL={noImageSrc}\n          previewURL={noImageSrc}\n          hasLoaded={true}\n          clickOnZoom={false}\n          withPincher={false}\n          withPopup={false}\n          withZoom={false}\n        />\n      </div>\n    )\n  }\n\n  @autobind\n  renderImage() {\n    const { questionSchema, sessionDocument } = this.props\n    const picture = questionSchema.get('image')\n    const originalUrl = picture.get('original_url')\n    const imageExposure = questionSchema.get('imageExposure')\n\n    return (\n      <Image\n        url={originalUrl}\n        imageExposure={imageExposure}\n        onFinishImageAnimation={this.onFinishImageAnimation}\n        updateTimeline={this.updateTimeline}\n        locale={this.locale}\n        eventRef={`${questionSchema.get('id')}i`}\n        sessionDocument={sessionDocument}\n      />\n    )\n  }\n\n  @autobind\n  renderAnswers() {\n    const { questionSchema, goNext, isTouchDevice, sessionDocument } = this.props\n    const answersMask = questionSchema.get('answers_mask').toArray()\n    const attrExposure = questionSchema.get('attrExposure')\n    const btnsType = questionSchema.get('btnsType')\n\n    const keyOnly = questionSchema.get('keyOnly') || false\n    const keyOff = questionSchema.get('keyOff') || false\n    const animationOff = questionSchema.get('animationOff') || false\n    const pauseClick = Math.max(questionSchema.get('pauseClick'), 0.5) || SETTINGS.pauseClick\n\n    return (\n      <Answers\n        keyOnly={keyOnly}\n        keyOff={keyOff}\n        animationOff={animationOff}\n        isTouchDevice={isTouchDevice}\n        locale={this.locale}\n        answers={this.answers}\n        answersMask={answersMask}\n        attrExposure={attrExposure}\n        buttonsType={btnsType}\n        pauseClick={pauseClick}\n        goNext={goNext}\n        updateTimeline={this.updateTimeline}\n        updateAnswers={this.updateAnswers}\n        sessionDocument={sessionDocument}\n      />\n    )\n  }\n\n  @autobind\n  renderTraining() {\n    const { questionSchema, isTouchDevice, sessionDocument } = this.props\n    const btnsType = questionSchema.get('btnsType')\n    const attrExposure = questionSchema.get('attrExposure')\n    const keyOnly = questionSchema.get('keyOnly') || false\n    const keyOff = questionSchema.get('keyOff') || false\n    const imagesText = questionSchema.get('imagesText') || false\n\n    return (\n      <Training\n        keyOnly={keyOnly}\n        keyOff={keyOff}\n        imagesText={imagesText}\n        locale={this.locale}\n        buttonsType={btnsType}\n        attrExposure={attrExposure}\n        onFinishTraining={this.onFinishTraining}\n        updateTimeline={this.updateTimeline}\n        eventRef={questionSchema.get('id')}\n        isTouchDevice={isTouchDevice}\n        sessionDocument={sessionDocument}\n      />\n    )\n  }\n\n  @autobind\n  renderContent(mobile = false) {\n    const { questionSchema, training, frameFullscreenHeight, width } = this.props\n    const { showImage, imagesLoaded } = this.state\n    const answers = questionSchema.get('answers')\n\n    if (!answers.size) {\n      return (\n        <div className={style.noAnswers} data-testid=\"SW-SFT-NoAnswers\">\n          {this.locale.get('noAnswers')}\n        </div>\n      )\n    }\n\n    if (training) {\n      return (\n        <div className={style.wrapper}>\n          <div className={style.container} style={mobile ? { minHeight: frameFullscreenHeight - BORDER_RADIUS } : {}}>\n            {this.renderTraining()}\n          </div>\n        </div>\n      )\n    } else {\n      const picture = questionSchema.get('image')\n      const originalUrl = picture?.get('original_url')\n      const imageExposure = questionSchema.get('imageExposure')\n\n      const ratio = picture?.get('width') / picture?.get('height') || 1\n      const imageMaxWidth = Math.min(picture?.get('width'), width)\n      const imageFrameHeight = mobile ? frameFullscreenHeight : Math.min(imageMaxWidth / ratio, MIN_FRAME_HEIHGT)\n      const textFrameHeight = mobile ? imageFrameHeight - BORDER_RADIUS : MIN_FRAME_HEIHGT\n\n      const hasAnswersImages = questionSchema.get('answers_images_exist')\n      const answersImages = hasAnswersImages\n        ? this.answers.reduce((acc, item) => {\n            if (item.get('picture') && item.getIn(['picture', 'big_thumbnail_path'])) {\n              acc.push(item.getIn(['picture', 'big_thumbnail_path']))\n            }\n            return acc\n          }, [])\n        : []\n      const missingImageWithExposure = imageExposure && !(picture && originalUrl)\n      const showImageFrame = showImage || missingImageWithExposure\n      return (\n        <div className={`${style.wrapper}`}>\n          <div\n            className={`${style.container} ${showImageFrame ? style.imageContainer : ''}`}\n            style={{ height: showImageFrame ? imageFrameHeight : textFrameHeight }}\n          >\n            {missingImageWithExposure\n              ? this.renderImageMissing() // show missing image\n              : (!hasAnswersImages || (hasAnswersImages && answersImages.every(im => imagesLoaded.includes(im)))) && // all image are loaded\n                (showImage ? this.renderImage() : this.renderAnswers())}\n          </div>\n        </div>\n      )\n    }\n  }\n\n  @autobind\n  renderDesktop() {\n    return (\n      <div data-testid=\"SW-SFT\" className={`${style.component} ${style.desktop}`}>\n        {this.renderContent()}\n      </div>\n    )\n  }\n\n  @autobind\n  renderMobile() {\n    return (\n      <div data-testid=\"SW-SFT\" className={`${style.component} ${style.mobile}`}>\n        {this.renderContent(true)}\n      </div>\n    )\n  }\n}\n"],"names":["SETTINGS","animationDurationOnClick","animationDurationOnTimeout","animationDurationTraining","stepSuccessDuration","stepFailDuration","pauseTimeout","pauseClick","leftKeycodes","rev","rightKeycodes","buttons","yesno","width","noyes","matches","className","matchesRev","fits","fitsRev","thumbs","left","icon","right","thumbsRev","memo","Buttons","prevProps","nextProps","type","hidden","disabled","onClickButton","updateTimeline","leftButton","rightButton","locale","isTouchDevice","sessionDocument","isButtonClickable","state","props","keyOff","keyOnly","isButtonsReversed","includes","disabledRef","useRef","current","getButtonLabel","button","btnType","getIn","handleDownRef","event","eventTarget","keyCode","target","toString","isEventAllowed","ref","classList","contains","parentNode","isLeftButton","stopEvent","onClickLeftButton","isRightButton","onClickRightButton","useEffect","globalKeyDown","repeat","handleDown","question","querySelector","addEventListener","passive","removeEventListener","yesBtn","React","Button","label","style","noBtn","Training","buttonsType","attrExposure","eventRef","onFinishTraining","imagesText","animationDuration","_useState2","_slicedToArray","useState","step","setStep","_useState4","disableButtons","setDisableButtons","answerTimer","curStepTimer","setStep2Timer","eventRefRef","updateTimelineRef","clearAnswerTimerRef","clearAnswerTimer","clearTimeout","onClickButtonStart","nativeEvent","value","setTimeout","leftButtonState","rightButtonState","startText","runAnswerTimerRef","curStep","replace","Fragment","dangerouslySetInnerHTML","__html","styleButtons","onClick","SwitchTransition","CSSTransition","appear","timeout","exit","onEntered","onEnteredAnimation","onExit","onExitAnimation","classNames","key","text","Answers","answers","answersMask","updateAnswers","animationOff","goNext","answerIndex","setAnswerIndex","animation","setAnimation","_useState6","_useState8","pause","setPause","pauseTimer","onTimeoutPause","answerShowAnimationDuration","answerHideAnimationDuration","nextAnswer","onEnterAnimation","index","length","_defineProperty","answer","find","item","get","src","imageLineStyles","answerItemImage","answerItemText","getAnimationDuration","status","Transition","enter","onEnter","onExited","thumbnail","angle","Math","atan","PI","transform","Image","url","imageExposure","onFinishImageAnimation","show","setShow","pincherActiveRef","imageRef","imageTimer","el","scrollTop","scrollLeft","onPincherCreate","onPincherDestroy","onLoadImage","dispatchEvent","CustomEvent","unmountOnExit","in","undefined","ImagePin","baseURL","previewURL","hasLoaded","clickOnZoom","withPincher","onLoad","SFT","_class","_Question","_this","_classCallCheck","_callSuper","picture","questionSchema","_objectSpread","showImage","initAnswer","_inherits","_this2","this","reduce","push","set","merge","fromJS","big_thumbnail_path","getImageAssetPath","filter","IMAGE_ASSET_PATH_FILTER_RESIZE_TO_LIMIT","IMAGE_ASSET_SIZE_MIDDLE","height","path","backgroundColor","animated","thumbnail_path","IMAGE_ASSET_SIZE_SMALL","pin_image","List","forEach","preLoadImage","_get","_getPrototypeOf","prototype","call","_this$props","actionAfterDidMount","answerModel","_this$props2","training","Map","valid","size","updateAnswer","concat","_toConsumableArray","enableNext","training_shown","setState","noImageSrc","IMAGE_ASSET_PATH_FILTER_RESIZE_TO_STRETCH","withPopup","withZoom","_this$props3","originalUrl","_this$props4","toArray","btnsType","max","_this$props5","mobile","arguments","_this$props6","frameFullscreenHeight","_this$state","imagesLoaded","minHeight","renderTraining","ratio","imageMaxWidth","min","imageFrameHeight","textFrameHeight","hasAnswersImages","answersImages","acc","missingImageWithExposure","showImageFrame","renderImageMissing","every","im","renderImage","renderAnswers","renderContent","Question","_applyDecoratedDescriptor","autobind","Object","getOwnPropertyDescriptor"],"sourceRoot":""}