{"ast":null,"code":"var _jsxFileName = \"/Users/shanyi/Desktop/Projects/UC_Trains_Voice/react-demo/src/gavt/GavtSelection.tsx\",\n  _s = $RefreshSig$();\nimport { useEffect } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport GavtForm from './GavtForm';\nimport ResonanceMenu from './ResonanceMenu';\nimport RefTable from './table/RefTable';\nimport CaliTable from './table/CaliTable';\nimport getRefFreq from './getRefFreq';\nimport React, { useState } from 'react';\nimport { Space, Modal, Button } from 'antd';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nexport const vowelMapping = {\n  'ee': '/i/',\n  'ih': '/ɪ/',\n  'eh': '/ɛ/',\n  'ae': '/æ/',\n  'ah': '/ɑ/',\n  'aw': '/ɔ/',\n  'uh': '/ʌ/',\n  'ooh': '/u/',\n  'oo': '/ʊ/'\n};\nconst GavtSelection = () => {\n  _s();\n  const [refOpen, setRefOpen] = useState(false);\n  const [caliOpen, setCaliOpen] = useState(false);\n  const [formValues, setFormValues] = useState(null);\n  const navigate = useNavigate();\n  useEffect(() => {\n    console.log('Updated Form Values from GavtSelection:', formValues);\n  }, [formValues]);\n  const handleFormSubmit = async values => {\n    console.log('Form submitted with values:', values);\n    try {\n      setFormValues(values);\n      const mappedVowels = values.vowels.map(vowel => vowelMapping[vowel]);\n      const frequencies = await getRefFreq(mappedVowels, values.gender, values.shuffleOrder);\n      if (Object.keys(frequencies).length > 0) {\n        console.log(frequencies);\n        navigate('/resonance/practice', {\n          state: {\n            frequencies\n          }\n        });\n      } else {\n        console.log('No resonance frequencies found.');\n      }\n    } catch (error) {\n      console.error('Error fetching resonance frequencies:', error);\n    }\n  };\n  const handleFormChange = (changedValues, allValues) => {\n    console.log('Changed Values:', changedValues);\n    console.log('All Form Values:', allValues);\n    setFormValues(allValues);\n  };\n  return (\n    /*#__PURE__*/\n    // For real-time frequency display, wrap the GavtForm component in the FreqProvider component\n    _jsxDEV(\"div\", {\n      style: {\n        display: 'flex',\n        flexDirection: 'column',\n        alignItems: 'center',\n        justifyContent: 'center'\n      },\n      children: [/*#__PURE__*/_jsxDEV(\"h2\", {\n        children: \"Resonance: Setup\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 77,\n        columnNumber: 7\n      }, this), /*#__PURE__*/_jsxDEV(Space, {\n        direction: \"vertical\",\n        style: {\n          width: '50%',\n          marginBottom: '20px'\n        }\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 78,\n        columnNumber: 7\n      }, this), /*#__PURE__*/_jsxDEV(GavtForm, {\n        onSubmit: handleFormSubmit,\n        onFormChange: handleFormChange\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 98,\n        columnNumber: 7\n      }, this), /*#__PURE__*/_jsxDEV(Modal, {\n        title: \"Reference Frequency Values\",\n        centered: true,\n        open: refOpen,\n        onOk: () => setRefOpen(false),\n        onCancel: () => setRefOpen(false),\n        width: 1000,\n        footer: [/*#__PURE__*/_jsxDEV(Button, {\n          type: \"primary\",\n          onClick: () => setRefOpen(false),\n          children: \"OK\"\n        }, \"submit\", false, {\n          fileName: _jsxFileName,\n          lineNumber: 107,\n          columnNumber: 11\n        }, this)],\n        children: /*#__PURE__*/_jsxDEV(RefTable, {}, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 112,\n          columnNumber: 9\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 99,\n        columnNumber: 7\n      }, this), /*#__PURE__*/_jsxDEV(Modal, {\n        title: \"Calibrated Frequency Values\",\n        centered: true,\n        open: caliOpen,\n        onOk: () => setCaliOpen(false),\n        onCancel: () => setCaliOpen(false),\n        width: 1000,\n        footer: [/*#__PURE__*/_jsxDEV(Button, {\n          type: \"primary\",\n          onClick: () => setCaliOpen(false),\n          children: \"OK\"\n        }, \"submit\", false, {\n          fileName: _jsxFileName,\n          lineNumber: 122,\n          columnNumber: 11\n        }, this)],\n        children: /*#__PURE__*/_jsxDEV(CaliTable, {}, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 127,\n          columnNumber: 9\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 114,\n        columnNumber: 7\n      }, this), /*#__PURE__*/_jsxDEV(ResonanceMenu, {\n        formValues: formValues !== null && formValues !== void 0 ? formValues : undefined,\n        navigate: navigate\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 129,\n        columnNumber: 7\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 71,\n      columnNumber: 5\n    }, this)\n  );\n};\n_s(GavtSelection, \"QG8mz2ZxWWpnEEXceSQScn18Ldg=\", false, function () {\n  return [useNavigate];\n});\n_c = GavtSelection;\nexport default GavtSelection;\nvar _c;\n$RefreshReg$(_c, \"GavtSelection\");","map":{"version":3,"names":["useEffect","useNavigate","GavtForm","ResonanceMenu","RefTable","CaliTable","getRefFreq","React","useState","Space","Modal","Button","jsxDEV","_jsxDEV","vowelMapping","GavtSelection","_s","refOpen","setRefOpen","caliOpen","setCaliOpen","formValues","setFormValues","navigate","console","log","handleFormSubmit","values","mappedVowels","vowels","map","vowel","frequencies","gender","shuffleOrder","Object","keys","length","state","error","handleFormChange","changedValues","allValues","style","display","flexDirection","alignItems","justifyContent","children","fileName","_jsxFileName","lineNumber","columnNumber","direction","width","marginBottom","onSubmit","onFormChange","title","centered","open","onOk","onCancel","footer","type","onClick","undefined","_c","$RefreshReg$"],"sources":["/Users/shanyi/Desktop/Projects/UC_Trains_Voice/react-demo/src/gavt/GavtSelection.tsx"],"sourcesContent":["import { useEffect } from 'react';\nimport { useNavigate } from 'react-router-dom';\n\nimport GavtForm from './GavtForm';\nimport ResonanceMenu from './ResonanceMenu';\nimport RefTable from './table/RefTable';\nimport CaliTable from './table/CaliTable';\nimport getRefFreq from './getRefFreq';\n\nimport React, { useState } from 'react';\nimport { Link } from 'react-router-dom';\n\nimport { Alert, Space, Modal, Button } from 'antd';\n\nexport interface FormValues {\n  vowels: string[];\n  gender: 'man' | 'woman';\n  region: string;\n  shuffleOrder: boolean;\n}\n\nexport const vowelMapping: Record<string, string> = {\n  'ee': '/i/',\n  'ih': '/ɪ/',\n  'eh': '/ɛ/',\n  'ae': '/æ/',\n  'ah': '/ɑ/',\n  'aw': '/ɔ/',\n  'uh': '/ʌ/',\n  'ooh': '/u/',\n  'oo': '/ʊ/'\n};\n\nconst GavtSelection: React.FC = () => {\n  const [refOpen, setRefOpen] = useState(false);\n  const [caliOpen, setCaliOpen] = useState(false);\n  const [formValues, setFormValues] = useState<FormValues | null>(null);\n  const navigate = useNavigate();\n\n  useEffect(() => {\n    console.log('Updated Form Values from GavtSelection:', formValues);\n  }, [formValues]);\n\n  const handleFormSubmit = async (values: FormValues) => {\n    console.log('Form submitted with values:', values);\n\n    try {\n      setFormValues(values);\n\n      const mappedVowels = values.vowels.map((vowel) => vowelMapping[vowel]);\n      const frequencies = await getRefFreq(mappedVowels, values.gender, values.shuffleOrder);\n      if (Object.keys(frequencies).length > 0) {\n        console.log(frequencies);\n        navigate('/resonance/practice', { state: { frequencies } });\n      } else {\n        console.log('No resonance frequencies found.');\n      }\n    } catch (error) {\n      console.error('Error fetching resonance frequencies:', error);\n    }\n  };\n\n  const handleFormChange = (changedValues: Partial<FormValues>, allValues: FormValues) => {\n    console.log('Changed Values:', changedValues);\n    console.log('All Form Values:', allValues);\n    setFormValues(allValues);\n  };\n\n  return (\n    // For real-time frequency display, wrap the GavtForm component in the FreqProvider component\n    <div style={{\n      display: 'flex',\n      flexDirection: 'column',\n      alignItems: 'center',\n      justifyContent: 'center'\n    }}>\n      <h2>Resonance: Setup</h2>\n      <Space direction=\"vertical\" style={{ width: '50%', marginBottom: '20px'}}>\n        {/* <Alert\n          style={{ \n            backgroundColor: '#FFEFEF',\n            borderColor: '#FFEFEF'\n          }} \n          message=\"Setup\"\n          description={\n            <>\n              <div>\n                Before you start to practice, it's highly recommended to use the <Link to=\"/resonance/calibrate\"> calibration routine </Link> first. \n                You will get the <a onClick={()=>setCaliOpen(true)}>calibrated frequency values</a> for each vowel sound after the calibration.\n                However, if you only wish to use the <a onClick={()=>setRefOpen(true)}>reference frequency</a> as a training target, \n                please select the vowel, gender, region, etc. directly below and start practicing immediately.\n              </div>\n            </>\n          }\n          type=\"info\"\n        /> */}\n      </Space>\n      <GavtForm onSubmit={handleFormSubmit} onFormChange={handleFormChange}/>\n      <Modal\n        title=\"Reference Frequency Values\"\n        centered\n        open={refOpen}\n        onOk={() => setRefOpen(false)}\n        onCancel={() => setRefOpen(false)}\n        width={1000}\n        footer={[\n          <Button key=\"submit\" type=\"primary\" onClick={() => setRefOpen(false)}>\n            OK\n          </Button>\n        ]}\n      >\n        <RefTable />\n      </Modal>\n      <Modal\n        title=\"Calibrated Frequency Values\"\n        centered\n        open={caliOpen}\n        onOk={() => setCaliOpen(false)}\n        onCancel={() => setCaliOpen(false)}\n        width={1000}\n        footer={[\n          <Button key=\"submit\" type=\"primary\" onClick={() => setCaliOpen(false)}>\n            OK\n          </Button>\n        ]}\n      >\n        <CaliTable />\n      </Modal>\n      <ResonanceMenu formValues={formValues ?? undefined} navigate={navigate}/>\n    </div>\n\n  );\n  };\n  \n  export default GavtSelection;"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}