{"ast":null,"code":"var _jsxFileName = \"D:\\\\Project\\\\UC_Trains_Voice\\\\react-demo\\\\src\\\\MainLayout.tsx\",\n  _s = $RefreshSig$();\nimport React, { useState, useRef, useEffect } from 'react';\nimport { Layout, Menu, Avatar, ConfigProvider } from 'antd';\nimport { UserOutlined } from '@ant-design/icons';\nimport { Button, Modal } from 'antd';\nimport { Routes, Route, Link } from 'react-router-dom';\nimport About from './Route/About';\nimport Sample from './Route/Sample';\nimport './CSS/MainLayout.css';\nimport logoImage from '../src/icon/new-icon-removebg-preview.png';\nimport Help from './Route/Help';\nimport { FreqProvider } from './gavt/FreqContext';\nimport Gavt from './Route/Gavt';\nimport GavtPractice from './gavt/GavtPractice';\nimport GavtCali from './gavt/GavtCali';\nimport { useLocation } from 'react-router-dom';\nimport SampleVolume from './Route/SampleVolume';\nimport Assessment from './Route/Assessment';\nimport { Space, Dropdown } from 'antd';\nimport { Flex } from 'antd';\nimport { createFromIconfontCN } from '@ant-design/icons';\nimport { Tooltip } from 'antd';\nimport AudioPlayer from 'react-h5-audio-player';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst PlayIcon = createFromIconfontCN({\n  scriptUrl: '//at.alicdn.com/t/c/font_4566050_zpduwnlv2t.js'\n});\n_c = PlayIcon;\nconst {\n  Header,\n  Content,\n  Footer\n} = Layout;\nconst backColor = \"linear-gradient(to bottom, #d7d2e6, #c9d9f3)\";\nconst CustomButton = ({\n  label,\n  handleIconClick\n}) => {\n  return /*#__PURE__*/_jsxDEV(Button, {\n    style: {\n      display: 'flex',\n      alignItems: 'center'\n    },\n    className: \"dropdownIcon\",\n    icon: /*#__PURE__*/_jsxDEV(PlayIcon, {\n      style: {\n        fontSize: '1.7em'\n      },\n      onClick: handleIconClick,\n      type: \"icon-audioPlay\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 53,\n      columnNumber: 9\n    }, this),\n    children: label\n  }, void 0, false, {\n    fileName: _jsxFileName,\n    lineNumber: 46,\n    columnNumber: 5\n  }, this);\n};\n_c2 = CustomButton;\nconst MainLayout = () => {\n  _s();\n  const location = useLocation();\n  const audioPlayer = useRef(null);\n  const audioPlayerNew = useRef(null);\n  const [audioSrc, setAudioSrc] = useState('');\n  const [isListen, setIsListen] = useState(1);\n  const [isClickListen, setIsClickListen] = useState(0);\n  const [jsonFiles, setJsonFiles] = useState([]);\n  const [audioKey, setAudioKey] = useState();\n  const [isModalOpen, setIsModalOpen] = useState(false);\n  const [selectedItem, setSelectedItem] = useState('Settings');\n  const [gender, setGender] = useState(\"Female\");\n  const [genderName, setGenderName] = useState(\"Fem01\");\n  const [playLyricCount, setPlayLyricCount] = useState(1);\n  const syllableCount = '5';\n  const [jsonFileLength, setJsonFileLength] = useState(2);\n  const saveGender = e => {\n    const [genderType, genderNameType] = e.key.split('-');\n    setGender(genderType);\n    setGenderName(genderNameType);\n    console.log(genderType);\n    console.log('genderName', genderName);\n  };\n  const handleIconClick = e => {\n    fetchAudioData();\n    setTimeout(() => {\n      playAudio();\n      console.log(\"play audio!\");\n    }, 50);\n  };\n  const handleIconClickDropdown = e => {\n    // setIsClickListen(isClickListen+1);\n    setTimeout(() => {\n      playAudio();\n      console.log(\"play audio!\");\n    }, 200);\n  };\n  const itemsAvatar = [{\n    key: 'Female-Fem01',\n    label: /*#__PURE__*/_jsxDEV(CustomButton, {\n      label: \"Female-01\",\n      handleIconClick: handleIconClickDropdown\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 115,\n      columnNumber: 9\n    }, this),\n    onClick: saveGender\n  }, {\n    key: 'Female-Fem02',\n    label: /*#__PURE__*/_jsxDEV(CustomButton, {\n      label: \"Female-02\",\n      handleIconClick: handleIconClickDropdown\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 125,\n      columnNumber: 9\n    }, this),\n    onClick: saveGender\n  }, {\n    key: 'Female-Fem03',\n    label: /*#__PURE__*/_jsxDEV(CustomButton, {\n      label: \"Female-03\",\n      handleIconClick: handleIconClickDropdown\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 135,\n      columnNumber: 9\n    }, this),\n    onClick: saveGender\n  }, {\n    key: 'Female-Fem04',\n    label: /*#__PURE__*/_jsxDEV(CustomButton, {\n      label: \"Female-04\",\n      handleIconClick: handleIconClickDropdown\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 145,\n      columnNumber: 9\n    }, this),\n    onClick: saveGender\n  }, {\n    key: 'Female-Fem05',\n    label: /*#__PURE__*/_jsxDEV(CustomButton, {\n      label: \"Female-05\",\n      handleIconClick: handleIconClickDropdown\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 155,\n      columnNumber: 9\n    }, this),\n    onClick: saveGender\n  }, {\n    key: 'Female-Fem06',\n    label: /*#__PURE__*/_jsxDEV(CustomButton, {\n      label: \"Female-06\",\n      handleIconClick: handleIconClickDropdown\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 165,\n      columnNumber: 9\n    }, this),\n    onClick: saveGender\n  }, {\n    key: 'Female-Fem07',\n    label: /*#__PURE__*/_jsxDEV(CustomButton, {\n      label: \"Female-07\",\n      handleIconClick: handleIconClickDropdown\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 175,\n      columnNumber: 9\n    }, this),\n    onClick: saveGender\n  }, {\n    key: 'male',\n    label: /*#__PURE__*/_jsxDEV(CustomButton, {\n      label: \"Male-01\",\n      handleIconClick: handleIconClickDropdown\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 185,\n      columnNumber: 9\n    }, this),\n    onClick: saveGender\n  }];\n  const showModal = () => {\n    setIsModalOpen(true);\n  };\n  const handleCancel = () => {\n    setIsModalOpen(false);\n  };\n  const onClickMenu = e => {\n    setSelectedItem(e.key);\n  };\n\n  // audio\n\n  const playAudio = () => {\n    // if (audioPlayer.current && audioPlayer.current.audioEl.current) {\n    //   const audio = audioPlayer.current.audioEl.current;\n    if (audioPlayerNew.current && audioPlayerNew.current.audio.current) {\n      audioPlayerNew.current.audio.current.play();\n      const audio = audioPlayerNew.current.audio.current;\n      if (audio.readyState === 4) {\n        audio.play().then(() => {\n          setIsListen(isListen + 1);\n        }).catch(error => {\n          console.error('Fail play audios: ', error);\n        });\n      } else {\n        audio.addEventListener('canplay', () => {\n          audio.play().then(() => {\n            setIsListen(isListen + 1);\n          }).catch(error => {\n            console.error('Fail play audios: ', error);\n          });\n        });\n      }\n    }\n  };\n  const fetchAudioData = () => {\n    let url = '';\n    if (gender === 'male') {\n      url = `https://ceas5.uc.edu/transvoice/jsondata/${syllableCount}/${gender}/list.json`;\n    } else {\n      url = `https://ceas5.uc.edu/transvoice/jsonDataOm/${gender}/${genderName}/${syllableCount}syllable/list.json`;\n    }\n    fetch(url).then(response => {\n      if (!response.ok) {\n        throw new Error('Network response was not ok');\n      }\n      return response.json();\n    }).then(data => {\n      setJsonFiles(data.json_files);\n      setJsonFileLength(data.json_files.length);\n      if (data.json_files.length > 0) {\n        let playLyricCountIn = Math.floor(Math.random() * data.json_files.length);\n        while (playLyricCountIn === playLyricCount) {\n          playLyricCountIn = Math.floor(Math.random() * data.json_files.length);\n        }\n        setPlayLyricCount(playLyricCountIn);\n        let audioFilename = '';\n        let audioUrl = '';\n        var timestamp = new Date().getTime();\n        if (gender === 'male') {\n          audioFilename = `${gender}-${data.json_files[playLyricCountIn].replace('.json', '')}.wav`;\n          audioUrl = `https://ceas5.uc.edu/transvoice/audio/${syllableCount}/${gender}/${audioFilename}?t=${timestamp}`;\n        } else {\n          audioFilename = `${genderName}-${gender}-${data.json_files[playLyricCountIn].replace('.json', '')}.wav`;\n          audioUrl = `https://ceas5.uc.edu/transvoice/audioOm/${gender}/${genderName}/${syllableCount}syllable/${audioFilename}?t=${timestamp}`;\n        }\n        console.log(audioUrl);\n        setAudioKey(Date.now());\n        setAudioSrc(audioUrl);\n        if (audioPlayer.current && audioPlayer.current.audioEl.current) {\n          audioPlayer.current.audioEl.current.pause();\n        }\n      }\n    }).catch(error => {\n      console.error('Error fetching JSON files:', error);\n    });\n  };\n  useEffect(() => {\n    fetchAudioData();\n  }, [genderName]);\n\n  // useEffect(() => {\n  //   setPlayLyricCount(Math.floor(Math.random() * jsonFileLength));\n  //   fetchAudioData();\n  // }, [genderName, isClickListen]);\n\n  // render profile page\n  const renderContent = () => {\n    switch (selectedItem) {\n      case 'Profile':\n        return /*#__PURE__*/_jsxDEV(\"p\", {\n          children: \"profile\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 298,\n          columnNumber: 16\n        }, this);\n      case 'Settings':\n        return /*#__PURE__*/_jsxDEV(\"div\", {\n          children: /*#__PURE__*/_jsxDEV(Flex, {\n            vertical: true,\n            gap: \"middle\",\n            children: [/*#__PURE__*/_jsxDEV(Space, {\n              children: [/*#__PURE__*/_jsxDEV(\"p\", {\n                children: \"# Model Selection: \"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 303,\n                columnNumber: 15\n              }, this), /*#__PURE__*/_jsxDEV(Dropdown.Button, {\n                menu: {\n                  items: itemsAvatar\n                },\n                placement: \"bottom\",\n                trigger: [\"click\"],\n                overlayClassName: \"custom-dropdown\",\n                buttonsRender: ([leftButton, rightButton]) => [/*#__PURE__*/_jsxDEV(Tooltip, {\n                  children: /*#__PURE__*/_jsxDEV(Button, {\n                    style: {\n                      display: 'flex',\n                      alignItems: 'center'\n                    },\n                    onClick: handleIconClick,\n                    icon: /*#__PURE__*/_jsxDEV(PlayIcon, {\n                      style: {\n                        fontSize: '1.7em'\n                      },\n                      type: \"icon-audioPlay\"\n                    }, void 0, false, {\n                      fileName: _jsxFileName,\n                      lineNumber: 357,\n                      columnNumber: 25\n                    }, this),\n                    children: genderName === \"none\" ? \"Model Voice\" : gender === \"Female\" ? genderName : 'Male01'\n                  }, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 350,\n                    columnNumber: 21\n                  }, this)\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 349,\n                  columnNumber: 19\n                }, this)\n\n                //   <Space.Compact block className='dropdownButton'>\n                //   <Tooltip title=\"Play Audio\">\n                //     <Button icon={\n                //       <PlayIcon\n                //         style={{\n                //           fontSize: '1.7em',\n                //         }}\n                //         onClick={handleIconClick}\n                //         type=\"icon-audioPlay\"\n                //          />\n                //     }\n                //       className=\"dropdownIcon\"\n                //     >\n\n                //     </Button>\n\n                //   </Tooltip>\n\n                //   <Tooltip title=\"Change Avatar\">\n                //     <Button className=\"dropdownLastItem\" onClick={handleDropdownClick}>\n                //       {genderName === \"none\" ? \"Model Voice\" : gender === \"Female\" ? genderName : 'Male01'}\n                //     </Button>\n                //   </Tooltip>\n\n                // </Space.Compact>\n                , /*#__PURE__*/React.cloneElement(rightButton, {\n                  loading: false\n                })]\n                // open={showDropdown}\n                ,\n                children: \"With Tooltip\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 343,\n                columnNumber: 15\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 302,\n              columnNumber: 13\n            }, this), /*#__PURE__*/_jsxDEV(\"br\", {}, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 412,\n              columnNumber: 13\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 301,\n            columnNumber: 11\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 300,\n          columnNumber: 17\n        }, this);\n      case 'Other':\n        return /*#__PURE__*/_jsxDEV(\"p\", {\n          children: \"other\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 417,\n          columnNumber: 16\n        }, this);\n      default:\n        return null;\n    }\n  };\n  const itemsMenu = [{\n    label: 'Profile',\n    key: 'Profile'\n  }, {\n    label: 'Settings',\n    key: 'Settings'\n  }, {\n    label: 'Other',\n    key: 'Other'\n  }];\n  const getSelectedKeys = () => {\n    const path = location.pathname;\n    switch (path) {\n      case '/':\n        return ['4'];\n      case '/pitch':\n        return ['3'];\n      case '/volume':\n        return ['5'];\n      case '/assessment':\n        return ['6'];\n      case '/about':\n        return ['1'];\n      case '/gavt':\n        return ['2'];\n      case '/gavt/practice':\n        return ['2'];\n      case '/gavt/calibrate':\n        return ['2'];\n      default:\n        return ['4'];\n    }\n  };\n  return /*#__PURE__*/_jsxDEV(Layout, {\n    style: {\n      background: backColor,\n      isolation: \"isolate\"\n    },\n    className: \"layout\",\n    children: [/*#__PURE__*/_jsxDEV(Header, {\n      style: {\n        display: 'flex',\n        alignItems: 'flex-start',\n        background: 'transparent'\n      },\n      children: [/*#__PURE__*/_jsxDEV(\"div\", {\n        className: \"logo\",\n        children: /*#__PURE__*/_jsxDEV(\"img\", {\n          className: \"logoImg\",\n          src: logoImage,\n          alt: \"Logo\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 468,\n          columnNumber: 11\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 466,\n        columnNumber: 9\n      }, this), /*#__PURE__*/_jsxDEV(ConfigProvider, {\n        theme: {\n          token: {\n            borderRadius: 0\n          },\n          components: {\n            Menu: {\n              itemColor: \"rgb(78, 120, 195)\",\n              horizontalItemSelectedBg: \"rgb(134, 120, 169)\",\n              horizontalItemSelectedColor: \"white\"\n            }\n          }\n        },\n        children: /*#__PURE__*/_jsxDEV(Menu, {\n          disabledOverflow: true,\n          className: \"Menu\",\n          theme: \"light\",\n          mode: \"horizontal\",\n          selectedKeys: getSelectedKeys(),\n          children: [/*#__PURE__*/_jsxDEV(Menu.Item, {\n            className: \"menu-item\",\n            children: /*#__PURE__*/_jsxDEV(Link, {\n              to: \"/\",\n              children: \"Introduction\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 487,\n              columnNumber: 15\n            }, this)\n          }, \"4\", false, {\n            fileName: _jsxFileName,\n            lineNumber: 486,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(Menu.Item, {\n            className: \"menu-item\",\n            children: /*#__PURE__*/_jsxDEV(Link, {\n              to: \"/pitch\",\n              children: \"Pitch\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 491,\n              columnNumber: 15\n            }, this)\n          }, \"3\", false, {\n            fileName: _jsxFileName,\n            lineNumber: 490,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(Menu.Item, {\n            className: \"menu-item\",\n            children: /*#__PURE__*/_jsxDEV(Link, {\n              to: \"/volume\",\n              children: \"Volume\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 494,\n              columnNumber: 15\n            }, this)\n          }, \"5\", false, {\n            fileName: _jsxFileName,\n            lineNumber: 493,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(Menu.Item, {\n            className: \"menu-item\",\n            children: /*#__PURE__*/_jsxDEV(Link, {\n              to: \"/gavt\",\n              children: \"Resonance\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 497,\n              columnNumber: 15\n            }, this)\n          }, \"2\", false, {\n            fileName: _jsxFileName,\n            lineNumber: 496,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(Menu.Item, {\n            className: \"menu-item\",\n            children: /*#__PURE__*/_jsxDEV(Link, {\n              to: \"/assessment\",\n              children: \"Assessment\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 500,\n              columnNumber: 15\n            }, this)\n          }, \"6\", false, {\n            fileName: _jsxFileName,\n            lineNumber: 499,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(Menu.Item, {\n            className: \"menu-item\",\n            children: /*#__PURE__*/_jsxDEV(Link, {\n              to: \"/about\",\n              children: \"Contact\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 504,\n              columnNumber: 15\n            }, this)\n          }, \"1\", false, {\n            fileName: _jsxFileName,\n            lineNumber: 503,\n            columnNumber: 13\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 484,\n          columnNumber: 11\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 470,\n        columnNumber: 9\n      }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n        className: \"userIcon\",\n        children: /*#__PURE__*/_jsxDEV(Button, {\n          shape: \"circle\",\n          type: \"default\",\n          icon: /*#__PURE__*/_jsxDEV(UserOutlined, {}, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 514,\n            columnNumber: 19\n          }, this),\n          onClick: showModal\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 511,\n          columnNumber: 11\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 510,\n        columnNumber: 9\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 464,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(Content, {\n      className: \"ContentMain\",\n      style: {\n        display: 'flex',\n        flexDirection: 'column',\n        alignItems: 'center',\n        marginTop: \"0rem\",\n        width: \"100%\",\n        background: 'transparent',\n        overflow: 'hidden'\n      },\n      children: /*#__PURE__*/_jsxDEV(FreqProvider, {\n        children: /*#__PURE__*/_jsxDEV(Routes, {\n          children: [/*#__PURE__*/_jsxDEV(Route, {\n            path: \"/about\",\n            element: /*#__PURE__*/_jsxDEV(About, {}, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 523,\n              columnNumber: 43\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 523,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(Route, {\n            path: \"/pitch\",\n            element: /*#__PURE__*/_jsxDEV(Sample, {\n              setGender: setGender,\n              gender: gender,\n              genderName: genderName\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 524,\n              columnNumber: 43\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 524,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(Route, {\n            path: \"/volume\",\n            element: /*#__PURE__*/_jsxDEV(SampleVolume, {}, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 525,\n              columnNumber: 44\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 525,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(Route, {\n            path: \"/gavt\",\n            element: /*#__PURE__*/_jsxDEV(Gavt, {}, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 526,\n              columnNumber: 42\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 526,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(Route, {\n            path: \"/gavt/practice\",\n            element: /*#__PURE__*/_jsxDEV(GavtPractice, {}, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 527,\n              columnNumber: 51\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 527,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(Route, {\n            path: \"/gavt/calibrate\",\n            element: /*#__PURE__*/_jsxDEV(GavtCali, {}, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 528,\n              columnNumber: 52\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 528,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(Route, {\n            path: \"/assessment\",\n            element: /*#__PURE__*/_jsxDEV(Assessment, {}, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 529,\n              columnNumber: 48\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 529,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(Route, {\n            path: \"/\",\n            element: /*#__PURE__*/_jsxDEV(Help, {}, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 530,\n              columnNumber: 38\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 530,\n            columnNumber: 13\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 522,\n          columnNumber: 11\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 521,\n        columnNumber: 9\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 520,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(Modal, {\n      title: \"Settings\",\n      open: isModalOpen,\n      className: \"AvatarModal\",\n      onCancel: () => setIsModalOpen(false),\n      footer: null,\n      children: /*#__PURE__*/_jsxDEV(\"div\", {\n        style: {\n          textAlign: 'center'\n        },\n        children: [/*#__PURE__*/_jsxDEV(Avatar, {\n          size: 64,\n          icon: /*#__PURE__*/_jsxDEV(UserOutlined, {}, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 543,\n            columnNumber: 35\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 543,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n          children: \"Name Name\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 544,\n          columnNumber: 11\n        }, this), /*#__PURE__*/_jsxDEV(Menu, {\n          disabledOverflow: true,\n          onClick: onClickMenu,\n          style: {\n            justifyContent: \"center\"\n          },\n          mode: \"horizontal\",\n          selectedKeys: [selectedItem],\n          items: itemsMenu\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 546,\n          columnNumber: 11\n        }, this), renderContent(), /*#__PURE__*/_jsxDEV(Button, {\n          onClick: handleCancel,\n          children: \"Close\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 554,\n          columnNumber: 11\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 542,\n        columnNumber: 9\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 535,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(AudioPlayer, {\n      autoPlayAfterSrcChange: false,\n      src: audioSrc,\n      ref: audioPlayerNew,\n      style: {\n        display: 'none'\n      },\n      onEnded: () => console.log('audio ended'),\n      onError: e => console.log('audio error', e)\n    }, audioKey, false, {\n      fileName: _jsxFileName,\n      lineNumber: 568,\n      columnNumber: 9\n    }, this), /*#__PURE__*/_jsxDEV(Footer, {\n      style: {\n        textAlign: 'center',\n        background: 'transparent'\n      },\n      children: [\"Voice Training Platform \\xA9\", new Date().getFullYear(), \" Created by Dr.Novak lab\"]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 577,\n      columnNumber: 7\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 463,\n    columnNumber: 5\n  }, this);\n};\n_s(MainLayout, \"oRtocRviBswgfgGCRTJ6RiGVQ9M=\", false, function () {\n  return [useLocation];\n});\n_c3 = MainLayout;\nexport default MainLayout;\nvar _c, _c2, _c3;\n$RefreshReg$(_c, \"PlayIcon\");\n$RefreshReg$(_c2, \"CustomButton\");\n$RefreshReg$(_c3, \"MainLayout\");","map":{"version":3,"names":["React","useState","useRef","useEffect","Layout","Menu","Avatar","ConfigProvider","UserOutlined","Button","Modal","Routes","Route","Link","About","Sample","logoImage","Help","FreqProvider","Gavt","GavtPractice","GavtCali","useLocation","SampleVolume","Assessment","Space","Dropdown","Flex","createFromIconfontCN","Tooltip","AudioPlayer","jsxDEV","_jsxDEV","PlayIcon","scriptUrl","_c","Header","Content","Footer","backColor","CustomButton","label","handleIconClick","style","display","alignItems","className","icon","fontSize","onClick","type","fileName","_jsxFileName","lineNumber","columnNumber","children","_c2","MainLayout","_s","location","audioPlayer","audioPlayerNew","audioSrc","setAudioSrc","isListen","setIsListen","isClickListen","setIsClickListen","jsonFiles","setJsonFiles","audioKey","setAudioKey","isModalOpen","setIsModalOpen","selectedItem","setSelectedItem","gender","setGender","genderName","setGenderName","playLyricCount","setPlayLyricCount","syllableCount","jsonFileLength","setJsonFileLength","saveGender","e","genderType","genderNameType","key","split","console","log","fetchAudioData","setTimeout","playAudio","handleIconClickDropdown","itemsAvatar","showModal","handleCancel","onClickMenu","current","audio","play","readyState","then","catch","error","addEventListener","url","fetch","response","ok","Error","json","data","json_files","length","playLyricCountIn","Math","floor","random","audioFilename","audioUrl","timestamp","Date","getTime","replace","now","audioEl","pause","renderContent","vertical","gap","menu","items","placement","trigger","overlayClassName","buttonsRender","leftButton","rightButton","cloneElement","loading","itemsMenu","getSelectedKeys","path","pathname","background","isolation","src","alt","theme","token","borderRadius","components","itemColor","horizontalItemSelectedBg","horizontalItemSelectedColor","disabledOverflow","mode","selectedKeys","Item","to","shape","flexDirection","marginTop","width","overflow","element","title","open","onCancel","footer","textAlign","size","justifyContent","autoPlayAfterSrcChange","ref","onEnded","onError","getFullYear","_c3","$RefreshReg$"],"sources":["D:/Project/UC_Trains_Voice/react-demo/src/MainLayout.tsx"],"sourcesContent":["import React, { useState, useRef, useEffect } from 'react';\r\nimport { Layout, Menu, Avatar, ConfigProvider } from 'antd';\r\nimport { UserOutlined } from '@ant-design/icons';\r\nimport { Button, Modal, Image } from 'antd';\r\nimport { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom';\r\nimport About from './Route/About';\r\nimport Sample from './Route/Sample';\r\nimport './CSS/MainLayout.css';\r\nimport logoImage from '../src/icon/new-icon-removebg-preview.png';\r\nimport Help from './Route/Help';\r\n\r\nimport { FreqProvider } from './gavt/FreqContext';\r\nimport Gavt from './Route/Gavt';\r\nimport GavtPractice from './gavt/GavtPractice';\r\nimport GavtCali from './gavt/GavtCali';\r\n\r\nimport { useLocation } from 'react-router-dom';\r\nimport SampleVolume from './Route/SampleVolume';\r\nimport Assessment from './Route/Assessment';\r\nimport { Space, Dropdown, Radio, Slider } from 'antd';\r\nimport type { SliderSingleProps } from 'antd';\r\nimport type { RadioChangeEvent } from 'antd';\r\nimport type { MenuProps } from 'antd';\r\nimport { Flex } from 'antd';\r\nimport { InfoCircleOutlined, CustomerServiceFilled } from '@ant-design/icons';\r\nimport { createFromIconfontCN } from '@ant-design/icons';\r\nimport ReactDOM from 'react-dom/client';\r\nimport ReactAudioPlayer from 'react-audio-player';\r\nimport { Tooltip } from 'antd';\r\nimport AudioPlayer from 'react-h5-audio-player';\r\n\r\nconst PlayIcon = createFromIconfontCN({\r\n  scriptUrl: '//at.alicdn.com/t/c/font_4566050_zpduwnlv2t.js',\r\n});\r\n\r\nconst { Header, Content, Footer } = Layout;\r\nconst backColor = \"linear-gradient(to bottom, #d7d2e6, #c9d9f3)\";\r\ninterface CustomButtonProps {\r\n  label: string;\r\n  handleIconClick?: (e: React.MouseEvent<HTMLSpanElement, MouseEvent>) => void; \r\n  \r\n}\r\n\r\nconst CustomButton: React.FC<CustomButtonProps> = ({ label, handleIconClick }) => {\r\n  return (\r\n    <Button\r\n      style={{\r\n        display: 'flex',\r\n        alignItems: 'center',\r\n      }}\r\n      className='dropdownIcon'\r\n      icon={\r\n        <PlayIcon\r\n          style={{\r\n            fontSize: '1.7em',\r\n          }}\r\n          onClick={handleIconClick}\r\n          type=\"icon-audioPlay\"\r\n           />\r\n      }\r\n    >\r\n      {label}\r\n    </Button>\r\n  );\r\n};\r\n\r\nconst MainLayout: React.FC = () => {\r\n  const location = useLocation();\r\n  const audioPlayer = useRef<ReactAudioPlayer>(null);\r\n  const audioPlayerNew = useRef<AudioPlayer>(null);\r\n\r\n  const [audioSrc, setAudioSrc] = useState<string>('');\r\n  const [isListen, setIsListen] = useState<number>(1);\r\n  const [isClickListen, setIsClickListen] = useState<number>(0);\r\n  const [jsonFiles, setJsonFiles] = useState<string[]>([]);\r\n  const [audioKey, setAudioKey] = useState<number>();\r\n  const [isModalOpen, setIsModalOpen] = useState(false);\r\n  const [selectedItem, setSelectedItem] = useState('Settings');\r\n  const [gender, setGender] = useState<string>(\"Female\");\r\n  const [genderName, setGenderName] = useState<string>(\"Fem01\");\r\n  const [playLyricCount,setPlayLyricCount] = useState<number>(1);\r\n  const syllableCount = '5';\r\n\r\n  const [jsonFileLength,setJsonFileLength] = useState<number>(2);\r\n\r\n  const saveGender = (e: any) => {\r\n    const [genderType, genderNameType] = e.key.split('-');\r\n    setGender(genderType);\r\n    setGenderName(genderNameType);\r\n    console.log(genderType);\r\n    console.log('genderName', genderName)\r\n\r\n  }\r\n\r\n  const handleIconClick = (e: React.MouseEvent<HTMLSpanElement, MouseEvent>) => {\r\n    fetchAudioData();\r\n    setTimeout(() => {\r\n      playAudio();\r\n      console.log(\"play audio!\");\r\n    }, 50); \r\n  };\r\n\r\n  const handleIconClickDropdown = (e: React.MouseEvent<HTMLSpanElement, MouseEvent>) => {\r\n    // setIsClickListen(isClickListen+1);\r\n    setTimeout(() => {\r\n      playAudio();\r\n      console.log(\"play audio!\");\r\n    }, 200); \r\n  };\r\n\r\n  const itemsAvatar: MenuProps['items'] = [\r\n    {\r\n      key: 'Female-Fem01',\r\n      label: (\r\n        <CustomButton\r\n        label=\"Female-01\"\r\n        handleIconClick={handleIconClickDropdown}\r\n        />\r\n      ),\r\n      onClick: saveGender,\r\n    },\r\n    {\r\n      key: 'Female-Fem02',\r\n      label: (\r\n        <CustomButton\r\n        label=\"Female-02\"\r\n        handleIconClick={handleIconClickDropdown}\r\n        />\r\n      ),\r\n      onClick: saveGender,\r\n    },\r\n    {\r\n      key: 'Female-Fem03',\r\n      label: (\r\n        <CustomButton\r\n        label=\"Female-03\"\r\n        handleIconClick={handleIconClickDropdown}\r\n        />\r\n      ),\r\n      onClick: saveGender,\r\n    },\r\n    {\r\n      key: 'Female-Fem04',\r\n      label: (\r\n        <CustomButton\r\n        label=\"Female-04\"\r\n        handleIconClick={handleIconClickDropdown}\r\n        />\r\n      ),\r\n      onClick: saveGender,\r\n    },\r\n    {\r\n      key: 'Female-Fem05',\r\n      label: (\r\n        <CustomButton\r\n        label=\"Female-05\"\r\n        handleIconClick={handleIconClickDropdown}\r\n        />\r\n      ),\r\n      onClick: saveGender,\r\n    },\r\n    {\r\n      key: 'Female-Fem06',\r\n      label: (\r\n        <CustomButton\r\n        label=\"Female-06\"\r\n        handleIconClick={handleIconClickDropdown}\r\n        />\r\n      ),\r\n      onClick: saveGender,\r\n    },\r\n    {\r\n      key: 'Female-Fem07',\r\n      label: (\r\n        <CustomButton\r\n        label=\"Female-07\"\r\n        handleIconClick={handleIconClickDropdown}\r\n        />\r\n      ),\r\n      onClick: saveGender,\r\n    },\r\n    {\r\n      key: 'male',\r\n      label: (\r\n        <CustomButton\r\n        label=\"Male-01\"\r\n        handleIconClick={handleIconClickDropdown}\r\n        />\r\n      ),\r\n      onClick: saveGender,\r\n    },\r\n  ];\r\n\r\n\r\n\r\n  const showModal = () => {\r\n    setIsModalOpen(true);\r\n  };\r\n  const handleCancel = () => {\r\n    setIsModalOpen(false);\r\n  };\r\n  const onClickMenu: MenuProps['onClick'] = (e) => {\r\n    setSelectedItem(e.key);\r\n  };\r\n\r\n\r\n  // audio\r\n\r\n  const playAudio = () => {\r\n    // if (audioPlayer.current && audioPlayer.current.audioEl.current) {\r\n    //   const audio = audioPlayer.current.audioEl.current;\r\n    if (audioPlayerNew.current && audioPlayerNew.current.audio.current) {\r\n      audioPlayerNew.current.audio.current.play()\r\n      const audio = audioPlayerNew.current.audio.current;\r\n      if (audio.readyState === 4) {\r\n        audio.play()\r\n          .then(() => {\r\n            setIsListen(isListen + 1);\r\n          })\r\n          .catch((error:Error) => {\r\n            console.error('Fail play audios: ', error);\r\n          });\r\n      } else {\r\n        audio.addEventListener('canplay', () => {\r\n          audio.play()\r\n            .then(() => {\r\n              setIsListen(isListen + 1);\r\n            })\r\n            .catch((error:Error) => {\r\n              console.error('Fail play audios: ', error);\r\n            });\r\n        });\r\n      }\r\n    }\r\n  };\r\n\r\n  const fetchAudioData = () => {\r\n    let url = '';\r\n    if (gender === 'male') {\r\n      url = `https://ceas5.uc.edu/transvoice/jsondata/${syllableCount}/${gender}/list.json`;\r\n    } else {\r\n      url = `https://ceas5.uc.edu/transvoice/jsonDataOm/${gender}/${genderName}/${syllableCount}syllable/list.json`;\r\n    }\r\n\r\n    fetch(url)\r\n      .then(response => {\r\n        if (!response.ok) {\r\n          throw new Error('Network response was not ok');\r\n        }\r\n        return response.json();\r\n      })\r\n      .then(data => {\r\n        setJsonFiles(data.json_files);\r\n        setJsonFileLength(data.json_files.length);\r\n        if (data.json_files.length > 0) {\r\n          let  playLyricCountIn = Math.floor(Math.random() * data.json_files.length);\r\n          while (playLyricCountIn === playLyricCount) {\r\n            playLyricCountIn = Math.floor(Math.random() * data.json_files.length);\r\n          }\r\n          setPlayLyricCount(playLyricCountIn);\r\n          let audioFilename = '';\r\n          let audioUrl = '';\r\n          var timestamp = new Date().getTime(); \r\n          if (gender === 'male') {\r\n            audioFilename = `${gender}-${data.json_files[playLyricCountIn].replace('.json', '')}.wav`;\r\n            audioUrl = `https://ceas5.uc.edu/transvoice/audio/${syllableCount}/${gender}/${audioFilename}?t=${timestamp}`;\r\n          } else {\r\n            audioFilename = `${genderName}-${gender}-${data.json_files[playLyricCountIn].replace('.json', '')}.wav`;\r\n            audioUrl = `https://ceas5.uc.edu/transvoice/audioOm/${gender}/${genderName}/${syllableCount}syllable/${audioFilename}?t=${timestamp}`;\r\n          }\r\n          console.log(audioUrl);\r\n\r\n          setAudioKey(Date.now());\r\n          setAudioSrc(audioUrl);\r\n          if (audioPlayer.current && audioPlayer.current.audioEl.current) {\r\n            audioPlayer.current.audioEl.current.pause();\r\n          }\r\n        }\r\n      })\r\n      .catch(error => {\r\n        console.error('Error fetching JSON files:', error);\r\n      });\r\n  };\r\n\r\n  useEffect(() => {\r\n    fetchAudioData();\r\n  }, [genderName]);\r\n\r\n  // useEffect(() => {\r\n  //   setPlayLyricCount(Math.floor(Math.random() * jsonFileLength));\r\n  //   fetchAudioData();\r\n  // }, [genderName, isClickListen]);\r\n\r\n  // render profile page\r\n  const renderContent = () => {\r\n    switch (selectedItem) {\r\n      case 'Profile':\r\n        return <p>profile</p>;\r\n      case 'Settings':\r\n        return (<div>\r\n          <Flex vertical gap=\"middle\">\r\n            <Space>\r\n              <p># Model Selection: </p>\r\n\r\n              {/* <Dropdown\r\n                menu={{ items: itemsAvatar, selectable: true }}\r\n                placement=\"bottom\"\r\n                trigger={[\"click\"]}\r\n                overlayClassName='custom-dropdown'\r\n              // open={showDropdown}\r\n              >\r\n\r\n                <Space.Compact block className='dropdownButton'>\r\n                  <Tooltip title=\"Play Audio\">\r\n                    <Button icon={\r\n                      <PlayIcon\r\n                        style={{\r\n                          fontSize: '1.7em',\r\n                        }}\r\n                        onClick={handleIconClick}\r\n                        type=\"icon-audioPlay\"\r\n                         />\r\n                    }\r\n                      className=\"dropdownIcon\"\r\n                    >\r\n\r\n                    </Button>\r\n\r\n                  </Tooltip>\r\n\r\n                  <Tooltip title=\"Change Avatar\">\r\n                    <Button className=\"dropdownLastItem\" onClick={handleDropdownClick}>\r\n                      {genderName === \"none\" ? \"Model Voice\" : gender === \"Female\" ? genderName : 'Male01'}\r\n                    </Button>\r\n                  </Tooltip>\r\n\r\n\r\n                </Space.Compact>\r\n\r\n\r\n              </Dropdown> */}\r\n\r\n              <Dropdown.Button\r\n                menu={{ items: itemsAvatar }}\r\n                placement=\"bottom\"\r\n                trigger={[\"click\"]}\r\n                overlayClassName='custom-dropdown'\r\n                buttonsRender={([leftButton, rightButton]) => [\r\n                  <Tooltip>\r\n                    <Button\r\n                      style={{\r\n                        display: 'flex',\r\n                        alignItems: 'center',\r\n                      }}\r\n                      onClick={handleIconClick}\r\n                      icon={\r\n                        <PlayIcon\r\n                          style={{\r\n                            fontSize: '1.7em',\r\n                          }}\r\n\r\n                          type=\"icon-audioPlay\"\r\n                           />\r\n                      }\r\n                    >\r\n                      {genderName === \"none\" ? \"Model Voice\" : gender === \"Female\" ? genderName : 'Male01'}\r\n\r\n                    </Button>\r\n\r\n                  </Tooltip>\r\n\r\n                  //   <Space.Compact block className='dropdownButton'>\r\n                  //   <Tooltip title=\"Play Audio\">\r\n                  //     <Button icon={\r\n                  //       <PlayIcon\r\n                  //         style={{\r\n                  //           fontSize: '1.7em',\r\n                  //         }}\r\n                  //         onClick={handleIconClick}\r\n                  //         type=\"icon-audioPlay\"\r\n                  //          />\r\n                  //     }\r\n                  //       className=\"dropdownIcon\"\r\n                  //     >\r\n\r\n                  //     </Button>\r\n\r\n                  //   </Tooltip>\r\n\r\n                  //   <Tooltip title=\"Change Avatar\">\r\n                  //     <Button className=\"dropdownLastItem\" onClick={handleDropdownClick}>\r\n                  //       {genderName === \"none\" ? \"Model Voice\" : gender === \"Female\" ? genderName : 'Male01'}\r\n                  //     </Button>\r\n                  //   </Tooltip>\r\n\r\n\r\n                  // </Space.Compact>\r\n\r\n                  ,\r\n\r\n                  React.cloneElement(rightButton as React.ReactElement<any, string>, { loading: false }),\r\n\r\n                ]}\r\n              // open={showDropdown}\r\n              >\r\n\r\n\r\n                With Tooltip\r\n              </Dropdown.Button>\r\n\r\n            </Space>\r\n            <br />\r\n          </Flex>\r\n\r\n        </div>)\r\n      case 'Other':\r\n        return <p>other</p>;\r\n      default:\r\n        return null;\r\n    }\r\n  };\r\n\r\n  const itemsMenu: MenuProps['items'] = [\r\n    {\r\n      label: 'Profile',\r\n      key: 'Profile',\r\n    },\r\n    {\r\n      label: 'Settings',\r\n      key: 'Settings',\r\n    },\r\n    {\r\n      label: 'Other',\r\n      key: 'Other',\r\n    },\r\n  ];\r\n\r\n  const getSelectedKeys = () => {\r\n    const path = location.pathname;\r\n    switch (path) {\r\n      case '/':\r\n        return ['4'];\r\n      case '/pitch':\r\n        return ['3'];\r\n      case '/volume':\r\n        return ['5'];\r\n      case '/assessment':\r\n        return ['6'];\r\n      case '/about':\r\n        return ['1'];\r\n      case '/gavt':\r\n        return ['2'];\r\n      case '/gavt/practice':\r\n        return ['2'];\r\n      case '/gavt/calibrate':\r\n        return ['2'];\r\n      default:\r\n        return ['4'];\r\n    }\r\n  };\r\n\r\n  return (\r\n    <Layout style={{ background: backColor, isolation: \"isolate\" }} className=\"layout\" >\r\n      <Header style={{ display: 'flex', alignItems: 'flex-start', background: 'transparent' }}>\r\n\r\n        <div className=\"logo\">\r\n\r\n          <img className=\"logoImg\" src={logoImage} alt=\"Logo\" />\r\n        </div>\r\n        <ConfigProvider\r\n          theme={{\r\n            token: {\r\n              borderRadius: 0,\r\n            },\r\n            components: {\r\n              Menu: {\r\n                itemColor: \"rgb(78, 120, 195)\",\r\n                horizontalItemSelectedBg: \"rgb(134, 120, 169)\",\r\n                horizontalItemSelectedColor: \"white\",\r\n              },\r\n            },\r\n          }}\r\n        >\r\n          <Menu disabledOverflow={true} className=\"Menu\" theme=\"light\" mode=\"horizontal\" selectedKeys={getSelectedKeys()} >\r\n\r\n            <Menu.Item key=\"4\" className=\"menu-item\">\r\n              <Link to=\"/\">Introduction</Link>\r\n            </Menu.Item>\r\n\r\n            <Menu.Item key=\"3\" className=\"menu-item\">\r\n              <Link to=\"/pitch\">Pitch</Link>\r\n            </Menu.Item>\r\n            <Menu.Item key=\"5\" className=\"menu-item\">\r\n              <Link to=\"/volume\">Volume</Link>\r\n            </Menu.Item>\r\n            <Menu.Item key=\"2\" className=\"menu-item\">\r\n              <Link to=\"/gavt\">Resonance</Link>\r\n            </Menu.Item>\r\n            <Menu.Item key=\"6\" className=\"menu-item\">\r\n              <Link to=\"/assessment\">Assessment</Link>\r\n            </Menu.Item>\r\n\r\n            <Menu.Item key=\"1\" className=\"menu-item\">\r\n              <Link to=\"/about\">Contact</Link>\r\n            </Menu.Item>\r\n\r\n          </Menu>\r\n\r\n        </ConfigProvider>\r\n        <div className='userIcon'>\r\n          <Button\r\n            shape=\"circle\"\r\n            type=\"default\"\r\n            icon={<UserOutlined />}\r\n            onClick={showModal}\r\n          />\r\n\r\n        </div>\r\n      </Header>\r\n      <Content className=\"ContentMain\" style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', marginTop: \"0rem\", width: \"100%\", background: 'transparent', overflow: 'hidden' }}>\r\n        <FreqProvider>\r\n          <Routes>\r\n            <Route path=\"/about\" element={<About />} />\r\n            <Route path=\"/pitch\" element={<Sample setGender={setGender} gender={gender} genderName={genderName} />} />\r\n            <Route path=\"/volume\" element={<SampleVolume />} />\r\n            <Route path=\"/gavt\" element={<Gavt />} />\r\n            <Route path=\"/gavt/practice\" element={<GavtPractice />} />\r\n            <Route path=\"/gavt/calibrate\" element={<GavtCali />} />\r\n            <Route path=\"/assessment\" element={<Assessment />} />\r\n            <Route path=\"/\" element={<Help />} />\r\n          </Routes>\r\n        </FreqProvider>\r\n      </Content>\r\n\r\n      <Modal\r\n        title=\"Settings\"\r\n        open={isModalOpen}\r\n        className='AvatarModal'\r\n        onCancel={() => setIsModalOpen(false)}\r\n        footer={null}\r\n      >\r\n        <div style={{ textAlign: 'center' }}>\r\n          <Avatar size={64} icon={<UserOutlined />} />\r\n          <p>Name Name</p>\r\n\r\n          <Menu disabledOverflow={true}\r\n            onClick={onClickMenu}\r\n            style={{ justifyContent: \"center\" }}\r\n            mode=\"horizontal\"\r\n            selectedKeys={[selectedItem]}\r\n            items={itemsMenu} />\r\n          {renderContent()}\r\n\r\n          <Button onClick={handleCancel}>Close</Button>\r\n        </div>\r\n\r\n\r\n      </Modal>\r\n      {/* <ReactAudioPlayer\r\n        className=\"audio-player-hidden\"\r\n        src={audioSrc}\r\n        ref={audioPlayer}\r\n        key={audioKey}\r\n        onEnded={() => console.log('audio ended')}\r\n        onError={(e) => console.log('audio error', e)}\r\n      /> */}\r\n\r\n        <AudioPlayer    \r\n        autoPlayAfterSrcChange={false}\r\n        src={audioSrc} \r\n        ref={audioPlayerNew}\r\n        key={audioKey}\r\n        style={{display: 'none'}}\r\n        onEnded={() => console.log('audio ended')}\r\n        onError={(e) => console.log('audio error', e)}\r\n        />\r\n      <Footer style={{ textAlign: 'center', background: 'transparent' }}>\r\n        Voice Training Platform ©{new Date().getFullYear()} Created by Dr.Novak lab\r\n      </Footer>\r\n    </Layout>\r\n\r\n  )\r\n}\r\nexport default MainLayout;"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}