UNPKG

6.25 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/compute-next-step/index.js"],"names":["checkAnswer","computeNextStep","computeInitialStep","config","availableContent","defaultSuccess","type","payload","nextContent","ref","instructions","initialStep","computeNextStepAfterAnswer","state","currentSlide","action","answerIsCorrect","godMode","question","answer","actionWithIsCorrect","content","isCorrect","stepResult","computeNextStepOnAcceptExtraLife","partialAction","computeNextStepOnRefuseExtraLife"],"mappings":"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","sourcesContent":["// @flow\n\nimport {isEmpty} from 'lodash/fp';\n\nimport type {\n Answer,\n AnswerAction,\n AvailableContent,\n Config,\n Content,\n ExtraLifeAcceptedAction,\n ExtraLifeRefusedAction,\n MoveAction,\n State,\n Slide\n} from '../types';\nimport checkAnswer from '../check-answer';\nimport computeNextStep, {\n type PartialAnswerActionWithIsCorrect,\n type PartialExtraLifeAcceptedAction\n} from './compute-next-step';\n\nexport type PartialAnswerAction = $ReadOnly<{\n type: 'answer',\n payload: {\n answer: Answer,\n content: Content,\n godMode: boolean\n }\n}>;\n\nexport const computeInitialStep = (\n config: Config,\n availableContent: AvailableContent = []\n): MoveAction => {\n const defaultSuccess = {\n type: 'move',\n payload: {\n nextContent: {\n type: 'success',\n ref: 'successExitNode'\n },\n instructions: null\n }\n };\n\n if (isEmpty(availableContent)) return defaultSuccess;\n const initialStep = computeNextStep(config, null, availableContent, null);\n if (!initialStep) {\n return defaultSuccess;\n }\n\n const {nextContent, instructions} = initialStep;\n return {\n type: 'move',\n payload: {\n instructions,\n nextContent\n }\n };\n};\n\nexport const computeNextStepAfterAnswer = (\n config: Config,\n state: State,\n availableContent: AvailableContent,\n currentSlide: Slide,\n action: PartialAnswerAction\n): AnswerAction | null => {\n const answerIsCorrect =\n action.payload.godMode || checkAnswer(config, currentSlide.question, action.payload.answer);\n\n const actionWithIsCorrect: PartialAnswerActionWithIsCorrect = {\n type: 'answer',\n payload: {\n answer: action.payload.answer,\n content: action.payload.content,\n godMode: action.payload.godMode,\n isCorrect: answerIsCorrect\n }\n };\n\n const stepResult = computeNextStep(config, state, availableContent, actionWithIsCorrect);\n if (!stepResult) {\n return null;\n }\n\n const {nextContent, instructions, isCorrect} = stepResult;\n return {\n type: 'answer',\n payload: {\n answer: action.payload.answer,\n content: action.payload.content,\n godMode: action.payload.godMode,\n nextContent,\n isCorrect,\n instructions\n }\n };\n};\n\nexport const computeNextStepOnAcceptExtraLife = (\n config: Config,\n state: State,\n availableContent: AvailableContent\n): ExtraLifeAcceptedAction | null => {\n const partialAction: PartialExtraLifeAcceptedAction = {type: 'extraLifeAccepted'};\n\n const stepResult = computeNextStep(config, state, availableContent, partialAction);\n if (!stepResult) {\n return null;\n }\n\n const {nextContent, instructions} = stepResult;\n return {\n type: 'extraLifeAccepted',\n payload: {\n content: {ref: 'extraLife', type: 'node'},\n nextContent,\n instructions\n }\n };\n};\n\nexport const computeNextStepOnRefuseExtraLife = (\n config: Config,\n state: State\n): ExtraLifeRefusedAction => {\n return {\n type: 'extraLifeRefused',\n payload: {\n content: {ref: 'extraLife', type: 'node'},\n nextContent: {ref: 'failExitNode', type: 'failure'}\n }\n };\n};\n"],"file":"index.js"}
\No newline at end of file