{"ast":null,"code":"var _jsxFileName = \"/Users/shanyi/Desktop/Projects/UC_Trains_Voice/react-demo/src/gavt/ResonanceMenu.tsx\",\n  _s = $RefreshSig$();\nimport React from 'react';\nimport { Link, useLocation, useNavigate } from 'react-router-dom';\nimport getRefFreq from './getRefFreq';\nimport { vowelMapping } from './GavtSelection';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst ResonanceMenu = ({\n  formValues,\n  navigate\n}) => {\n  _s();\n  const location = useLocation();\n  const routerNavigate = useNavigate();\n  const menuItems = [{\n    path: '/resonance',\n    name: 'Tutorial'\n  }, {\n    path: '/resonance/selection',\n    name: 'Setup'\n  }, {\n    path: '/resonance/practice',\n    name: 'Practice'\n  }];\n  const activeNavigate = navigate || routerNavigate;\n  const handlePracticeClick = async e => {\n    if (location.pathname === '/resonance') {\n      alert('You must select at least one vowel on Setup Page first');\n      e.preventDefault();\n      return;\n    }\n    if (location.pathname === '/resonance/selection') {\n      if (formValues && formValues.vowels && formValues.vowels.length > 0) {\n        const mappedVowels = formValues.vowels.map(vowel => vowelMapping[vowel]);\n        const frequencies = await getRefFreq(mappedVowels, formValues.gender, formValues.shuffleOrder);\n        activeNavigate('/resonance/practice', {\n          state: {\n            frequencies\n          }\n        });\n      } else {\n        alert('You must select at least one vowel first');\n        e.preventDefault();\n      }\n    }\n  };\n  return /*#__PURE__*/_jsxDEV(\"nav\", {\n    className: \"nav\",\n    children: menuItems.map((item, index) => /*#__PURE__*/_jsxDEV(React.Fragment, {\n      children: [/*#__PURE__*/_jsxDEV(Link, {\n        to: item.path,\n        className: `link ${location.pathname === item.path ? 'active' : ''}`,\n        onClick: item.path === '/resonance/practice' ? handlePracticeClick : undefined,\n        children: item.name\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 55,\n        columnNumber: 9\n      }, this), index < menuItems.length - 1 && /*#__PURE__*/_jsxDEV(\"span\", {\n        className: \"separator\",\n        children: \"|\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 62,\n        columnNumber: 44\n      }, this)]\n    }, item.name, true, {\n      fileName: _jsxFileName,\n      lineNumber: 54,\n      columnNumber: 9\n    }, this))\n  }, void 0, false, {\n    fileName: _jsxFileName,\n    lineNumber: 52,\n    columnNumber: 5\n  }, this);\n};\n_s(ResonanceMenu, \"Nx+kEOkOpcK293uOfZ97baLkVFM=\", false, function () {\n  return [useLocation, useNavigate];\n});\n_c = ResonanceMenu;\nexport default ResonanceMenu;\nvar _c;\n$RefreshReg$(_c, \"ResonanceMenu\");","map":{"version":3,"names":["React","Link","useLocation","useNavigate","getRefFreq","vowelMapping","jsxDEV","_jsxDEV","ResonanceMenu","formValues","navigate","_s","location","routerNavigate","menuItems","path","name","activeNavigate","handlePracticeClick","e","pathname","alert","preventDefault","vowels","length","mappedVowels","map","vowel","frequencies","gender","shuffleOrder","state","className","children","item","index","Fragment","to","onClick","undefined","fileName","_jsxFileName","lineNumber","columnNumber","_c","$RefreshReg$"],"sources":["/Users/shanyi/Desktop/Projects/UC_Trains_Voice/react-demo/src/gavt/ResonanceMenu.tsx"],"sourcesContent":["import React from 'react';\nimport { Link, useLocation, useNavigate } from 'react-router-dom';\n\nimport getRefFreq from './getRefFreq';\nimport { vowelMapping } from './GavtSelection';\n\ninterface ResonanceMenuProps {\n  formValues?: {\n    vowels: string[];\n    gender: 'man' | 'woman';\n    shuffleOrder: boolean;\n  };\n  navigate?: (path: string, state?: any) => void;\n}\n\nconst ResonanceMenu: React.FC<ResonanceMenuProps> = ({ formValues, navigate }) => {\n  const location = useLocation();\n  const routerNavigate = useNavigate();\n\n\n  const menuItems = [\n    { path: '/resonance', name: 'Tutorial' },\n    { path: '/resonance/selection', name: 'Setup' },\n    { path: '/resonance/practice', name: 'Practice' },  \n  ];\n\n  const activeNavigate = navigate || routerNavigate;\n\n  const handlePracticeClick = async (e: React.MouseEvent<HTMLAnchorElement, MouseEvent>) => {\n\n    if (location.pathname === '/resonance') {\n      alert('You must select at least one vowel on Setup Page first');\n      e.preventDefault();\n      return;\n    }\n\n    if (location.pathname === '/resonance/selection') {\n      if (formValues && formValues.vowels && formValues.vowels.length > 0) {\n        const mappedVowels = formValues.vowels.map((vowel) => vowelMapping[vowel]);\n        const frequencies = await getRefFreq(mappedVowels, formValues.gender, formValues.shuffleOrder);\n        activeNavigate('/resonance/practice', { state: { frequencies } });\n      } else {\n        alert('You must select at least one vowel first');\n        e.preventDefault();\n      }\n\n    }\n  };\n\n\n  return (\n    <nav className=\"nav\">\n      {menuItems.map((item, index) => (\n        <React.Fragment key={item.name}>\n        <Link \n            to={item.path} \n            className={`link ${location.pathname === item.path ? 'active' : ''}`}\n            onClick={item.path === '/resonance/practice' ? handlePracticeClick : undefined}\n          >\n            {item.name}\n          </Link>\n          {index < menuItems.length - 1 && <span className=\"separator\">|</span>}\n        </React.Fragment>\n      ))}\n    </nav>\n  );\n}\n\nexport default ResonanceMenu;"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}