{"ast":null,"code":"var _jsxFileName = \"D:\\\\Project\\\\UC_Trains_Voice\\\\react-demo\\\\src\\\\gavt\\\\Word.tsx\",\n  _s = $RefreshSig$();\nimport * as chainData from './chain.json';\nimport React, { useState, useEffect } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { Card, Button, Flex, message } from 'antd';\nimport { RetweetOutlined, LeftCircleOutlined, RightCircleOutlined, ArrowLeftOutlined } from '@ant-design/icons';\nimport { jsxDEV as _jsxDEV, Fragment as _Fragment } from \"react/jsx-dev-runtime\";\nconst Word = ({\n  frequenciesArray,\n  currentVowel,\n  customFrequency,\n  onNextVowel\n}) => {\n  _s();\n  const [phraseIndex, setPhraseIndex] = useState(0);\n  const [chainId, setChainId] = useState(1);\n  const [phrases, setPhrases] = useState([]);\n  const [currentPhrase, setCurrentPhrase] = useState('');\n  const [messageApi, contextHolder] = message.useMessage();\n  const navigate = useNavigate();\n  const handleBack = () => {\n    navigate(-1);\n  };\n  useEffect(() => {\n    const vowelData = chainData[currentVowel.vowel];\n    const chain = vowelData.find(chain => chain.chainId === chainId);\n    if (chain) {\n      setPhrases(chain.phrases);\n      setCurrentPhrase(chain.phrases[0]);\n    }\n  }, [currentVowel, chainId]);\n  const handleMoreComplex = () => {\n    if (phraseIndex < phrases.length - 1) {\n      setPhraseIndex(phraseIndex + 1);\n      setCurrentPhrase(phrases[phraseIndex + 1]);\n    }\n  };\n  const handleLessComplex = () => {\n    if (phraseIndex > 0) {\n      setPhraseIndex(phraseIndex - 1);\n      setCurrentPhrase(phrases[phraseIndex - 1]);\n    }\n  };\n  const handleNextChain = () => {\n    const newChainId = chainId % 3 + 1;\n    setChainId(newChainId);\n    const newChain = chainData[currentVowel.vowel].find(chain => chain.chainId === newChainId);\n    if (newChain) {\n      setPhrases(newChain.phrases);\n      setCurrentPhrase(newChain.phrases[0]);\n      setPhraseIndex(0);\n      success();\n    }\n  };\n  const success = () => {\n    messageApi.open({\n      type: 'success',\n      content: 'This is a success message'\n    });\n  };\n  return /*#__PURE__*/_jsxDEV(_Fragment, {\n    children: [/*#__PURE__*/_jsxDEV(\"div\", {\n      children: /*#__PURE__*/_jsxDEV(\"p\", {\n        children: [\"Vowels you just chose to practice: \", frequenciesArray.map(f => f.vowel).join(', ')]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 83,\n        columnNumber: 17\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 82,\n      columnNumber: 13\n    }, this), /*#__PURE__*/_jsxDEV(\"h2\", {\n      children: [\"Current Vowel: \", currentVowel.vowel]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 85,\n      columnNumber: 13\n    }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n      children: [\"Official Target Frequency: \", currentVowel.freq, \" Hz.\", customFrequency !== currentVowel.freq && ` Customized Target Frequency was set, the value is ${customFrequency} Hz. `]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 86,\n      columnNumber: 13\n    }, this), /*#__PURE__*/_jsxDEV(Flex, {\n      gap: \"small\",\n      style: {\n        margin: '10px'\n      },\n      children: [/*#__PURE__*/_jsxDEV(Button, {\n        icon: /*#__PURE__*/_jsxDEV(ArrowLeftOutlined, {}, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 91,\n          columnNumber: 31\n        }, this),\n        onClick: handleBack,\n        children: \"Back to the previous page\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 91,\n        columnNumber: 17\n      }, this), /*#__PURE__*/_jsxDEV(Button, {\n        icon: /*#__PURE__*/_jsxDEV(RetweetOutlined, {}, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 92,\n          columnNumber: 31\n        }, this),\n        onClick: onNextVowel,\n        children: \"Try a different vowel\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 92,\n        columnNumber: 17\n      }, this), /*#__PURE__*/_jsxDEV(Button, {\n        icon: /*#__PURE__*/_jsxDEV(RetweetOutlined, {}, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 93,\n          columnNumber: 31\n        }, this),\n        onClick: handleNextChain,\n        children: \"Try a different phrase chain\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 93,\n        columnNumber: 17\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 90,\n      columnNumber: 13\n    }, this), /*#__PURE__*/_jsxDEV(Card, {\n      title: `${currentPhrase}`,\n      bordered: false,\n      style: {\n        width: 300\n      },\n      children: /*#__PURE__*/_jsxDEV(\"p\", {\n        children: `Current phrase chain begins with: \"${phrases[0]}\" `\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 97,\n        columnNumber: 17\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 96,\n      columnNumber: 13\n    }, this), /*#__PURE__*/_jsxDEV(Flex, {\n      gap: \"small\",\n      style: {\n        margin: '10px'\n      },\n      children: [/*#__PURE__*/_jsxDEV(Button, {\n        icon: /*#__PURE__*/_jsxDEV(LeftCircleOutlined, {}, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 100,\n          columnNumber: 31\n        }, this),\n        onClick: handleLessComplex,\n        disabled: phraseIndex === 0,\n        children: \"Less complex\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 100,\n        columnNumber: 17\n      }, this), /*#__PURE__*/_jsxDEV(Button, {\n        type: \"primary\",\n        icon: /*#__PURE__*/_jsxDEV(RightCircleOutlined, {}, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 101,\n          columnNumber: 46\n        }, this),\n        onClick: handleMoreComplex,\n        disabled: phraseIndex === phrases.length - 1,\n        children: \"More complex\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 101,\n        columnNumber: 17\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 99,\n      columnNumber: 13\n    }, this)]\n  }, void 0, true);\n};\n_s(Word, \"twczTmBm7/HEzJK3nMwYfGM4AL4=\", false, function () {\n  return [message.useMessage, useNavigate];\n});\n_c = Word;\nexport default Word;\nvar _c;\n$RefreshReg$(_c, \"Word\");","map":{"version":3,"names":["chainData","React","useState","useEffect","useNavigate","Card","Button","Flex","message","RetweetOutlined","LeftCircleOutlined","RightCircleOutlined","ArrowLeftOutlined","jsxDEV","_jsxDEV","Fragment","_Fragment","Word","frequenciesArray","currentVowel","customFrequency","onNextVowel","_s","phraseIndex","setPhraseIndex","chainId","setChainId","phrases","setPhrases","currentPhrase","setCurrentPhrase","messageApi","contextHolder","useMessage","navigate","handleBack","vowelData","vowel","chain","find","handleMoreComplex","length","handleLessComplex","handleNextChain","newChainId","newChain","success","open","type","content","children","map","f","join","fileName","_jsxFileName","lineNumber","columnNumber","freq","gap","style","margin","icon","onClick","title","bordered","width","disabled","_c","$RefreshReg$"],"sources":["D:/Project/UC_Trains_Voice/react-demo/src/gavt/Word.tsx"],"sourcesContent":["import * as chainData from './chain.json';\r\n\r\nimport React, { useState, useEffect } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\n\r\nimport { Card, Button, Flex, message } from 'antd';\r\nimport { RetweetOutlined, LeftCircleOutlined, RightCircleOutlined, ArrowLeftOutlined } from '@ant-design/icons';\r\n\r\ninterface WordProps {\r\n    frequenciesArray: {\r\n      vowel: string;\r\n      freq: number;\r\n    }[];\r\n    currentVowel: {\r\n      vowel: string;\r\n      freq: number;\r\n    };\r\n    customFrequency:  number;\r\n    onNextVowel: () => void;\r\n  }\r\n\r\nconst Word: React.FC<WordProps> = ({ frequenciesArray, currentVowel, customFrequency, onNextVowel }) => {\r\n    const [phraseIndex, setPhraseIndex] = useState(0);\r\n    const [chainId, setChainId] = useState(1);\r\n    const [phrases, setPhrases] = useState<string[]>([]);\r\n    const [currentPhrase, setCurrentPhrase] = useState('');\r\n\r\n    const [messageApi, contextHolder] = message.useMessage();\r\n\r\n    \r\n    const navigate = useNavigate();\r\n\r\n    const handleBack = () => {\r\n        navigate(-1);\r\n    }\r\n\r\n    useEffect(() => {\r\n        const vowelData = chainData[currentVowel.vowel as keyof typeof chainData];\r\n        const chain = vowelData.find(chain => chain.chainId === chainId);\r\n        if (chain) {\r\n            setPhrases(chain.phrases);\r\n            setCurrentPhrase(chain.phrases[0]);\r\n        }\r\n    }, [currentVowel, chainId]);\r\n\r\n    const handleMoreComplex = () => {\r\n        if (phraseIndex < phrases.length - 1) {\r\n            setPhraseIndex(phraseIndex + 1);\r\n            setCurrentPhrase(phrases[phraseIndex + 1]);\r\n        }\r\n    };\r\n\r\n    const handleLessComplex = () => {\r\n        if (phraseIndex > 0) {\r\n            setPhraseIndex(phraseIndex - 1);\r\n            setCurrentPhrase(phrases[phraseIndex - 1]);\r\n        }\r\n    };\r\n\r\n    const handleNextChain = () => {\r\n        const newChainId = (chainId % 3) + 1;\r\n        setChainId(newChainId);\r\n\r\n        const newChain = chainData[currentVowel.vowel as keyof typeof chainData].find(chain => chain.chainId === newChainId);\r\n        if (newChain) {\r\n            setPhrases(newChain.phrases);\r\n            setCurrentPhrase(newChain.phrases[0]);\r\n            setPhraseIndex(0);\r\n            success();\r\n        }\r\n    };\r\n\r\n    const success = () => {\r\n        messageApi.open({\r\n          type: 'success',\r\n          content: 'This is a success message',\r\n        });\r\n      };\r\n    \r\n    return(\r\n        <>\r\n            <div>\r\n                <p>Vowels you just chose to practice: {frequenciesArray.map(f => f.vowel).join(', ')}</p>\r\n            </div>\r\n            <h2>Current Vowel: {currentVowel.vowel}</h2>\r\n            <p>Official Target Frequency: {currentVowel.freq} Hz. \r\n                {customFrequency !== currentVowel.freq && \r\n                    ` Customized Target Frequency was set, the value is ${customFrequency} Hz. `}\r\n            </p>\r\n            <Flex gap=\"small\" style={{margin:'10px'}}>\r\n                <Button icon={<ArrowLeftOutlined />} onClick={handleBack}>Back to the previous page</Button> \r\n                <Button icon={<RetweetOutlined />} onClick={onNextVowel}>Try a different vowel</Button>\r\n                <Button icon={<RetweetOutlined />} onClick={handleNextChain}>Try a different phrase chain</Button>\r\n            </Flex>\r\n        \r\n            <Card title={`${currentPhrase}`} bordered={false} style={{ width: 300 }}>\r\n                <p>{`Current phrase chain begins with: \"${phrases[0]}\" `}</p>\r\n            </Card>\r\n            <Flex gap=\"small\" style={{margin:'10px'}}>\r\n                <Button icon={<LeftCircleOutlined />} onClick={handleLessComplex} disabled={phraseIndex === 0}>Less complex</Button>\r\n                <Button type=\"primary\" icon={<RightCircleOutlined />} onClick={handleMoreComplex} disabled={phraseIndex === phrases.length - 1}>More complex</Button>\r\n            </Flex>\r\n        </>\r\n    )\r\n};\r\n\r\nexport default Word;"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}