{"ast":null,"code":"var _jsxFileName = \"D:\\\\Project\\\\UC_Trains_Voice\\\\react-demo\\\\src\\\\Route\\\\Sample.tsx\",\n  _s = $RefreshSig$();\nimport React, { useState, useEffect, useRef } from 'react';\nimport { Button, Flex } from 'antd';\nimport { SettingOutlined, CustomerServiceOutlined } from '@ant-design/icons';\nimport { Col, Row, Tour } from 'antd';\nimport { CaretRightOutlined } from '@ant-design/icons';\nimport { Slider, Input } from 'antd';\nimport { Layout, Menu, Dropdown, Avatar } from 'antd';\nimport { Drawer, Radio } from 'antd';\nimport { RedoOutlined, PauseOutlined, StepForwardOutlined, StepBackwardOutlined } from '@ant-design/icons';\nimport { Tooltip, FloatButton, Space, Switch } from 'antd';\nimport '../CSS/sample.css';\nimport { Modal } from 'antd';\nimport ConstantTxt from '../Canvas/ConstantTxt';\nimport Fixed from '../Canvas/Fixed';\nimport Stair from '../Canvas/Stair';\nimport Heteronym from '../Canvas/Heteronym';\nimport ReactAudioPlayer from 'react-audio-player';\nimport { UploadOutlined } from '@ant-design/icons';\nimport { message, Upload } from 'antd';\nimport hark from 'hark';\nimport { useLocation } from 'react-router-dom';\nimport { Typography } from 'antd';\nimport { Collapse } from 'antd';\nimport { Image } from 'antd';\nimport divide_1 from '../icon/Divider2-half.png';\nimport { UserOutlined } from '@ant-design/icons';\nimport { QuestionOutlined } from '@ant-design/icons';\nimport { useTemString } from '../hooks/useTemString';\n// @ts-ignore\nimport pdfToText from 'react-pdftotext';\nimport { jsxDEV as _jsxDEV, Fragment as _Fragment } from \"react/jsx-dev-runtime\";\nconst {\n  TextArea\n} = Input;\nconst {\n  Header,\n  Content\n} = Layout;\nconst {\n  Title,\n  Paragraph,\n  Text,\n  Link\n} = Typography;\nconst highlightedStyle = {\n  color: 'rgb(75, 216, 43)',\n  fontSize: '25px'\n};\nconst style = {\n  display: 'relative',\n  height: 300\n};\nconst marksRange = {\n  50: '50Hz',\n  600: '600Hz'\n};\nconst marksBall = {\n  0: 'Slowest',\n  1: 'Fastest'\n};\nconst marksBallPos = {\n  0: '0%',\n  1: '100%'\n};\nconst marksVol = {\n  50: '50dB',\n  90: '90dB'\n};\nconst items_3 = [{\n  key: 'part-3-1',\n  label: /*#__PURE__*/_jsxDEV(Typography.Title, {\n    id: \"part-3-1\",\n    level: 4,\n    style: {\n      margin: 0\n    },\n    children: \"Setting\"\n  }, void 0, false, {\n    fileName: _jsxFileName,\n    lineNumber: 76,\n    columnNumber: 12\n  }, this),\n  children: /*#__PURE__*/_jsxDEV(_Fragment, {\n    children: [/*#__PURE__*/_jsxDEV(Paragraph, {\n      children: \"The possible settings are:\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 79,\n      columnNumber: 9\n    }, this), /*#__PURE__*/_jsxDEV(Paragraph, {\n      children: /*#__PURE__*/_jsxDEV(\"ul\", {\n        children: [/*#__PURE__*/_jsxDEV(\"li\", {\n          children: /*#__PURE__*/_jsxDEV(\"p\", {\n            children: [/*#__PURE__*/_jsxDEV(\"strong\", {\n              children: \"Model selection\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 83,\n              columnNumber: 18\n            }, this), \": Lets you pick between several prerecorded voices to serve as a target \\\"avatar\\\". These are currently used only in the Syllables exercise.\"]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 83,\n            columnNumber: 15\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 82,\n          columnNumber: 13\n        }, this), /*#__PURE__*/_jsxDEV(\"li\", {\n          children: /*#__PURE__*/_jsxDEV(\"p\", {\n            children: [/*#__PURE__*/_jsxDEV(\"strong\", {\n              children: \"Exercise selection\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 86,\n              columnNumber: 18\n            }, this), \": Lets you pick between Constant, Stair, and Syllable exercises.\"]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 86,\n            columnNumber: 15\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 85,\n          columnNumber: 13\n        }, this), /*#__PURE__*/_jsxDEV(\"li\", {\n          children: /*#__PURE__*/_jsxDEV(\"p\", {\n            children: [/*#__PURE__*/_jsxDEV(\"strong\", {\n              children: \"Coordinate Display Mode\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 89,\n              columnNumber: 18\n            }, this), \": changes the pitch display between hertz and musical notes. You can also change this by clicking the vertical scale on the graph itself.\"]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 89,\n            columnNumber: 15\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 88,\n          columnNumber: 13\n        }, this), /*#__PURE__*/_jsxDEV(\"li\", {\n          children: /*#__PURE__*/_jsxDEV(\"p\", {\n            children: [/*#__PURE__*/_jsxDEV(\"strong\", {\n              children: \"Pitch display range\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 92,\n              columnNumber: 18\n            }, this), \": Changes the scale of the pitch graph. The blue part represents the current scale, and the white balls on the left and right can be dragged with your mouse to change the minimum or maximum of the scale. By default, it shows 100-300 Hz, but the maximum range is 50-600  Hz.\"]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 92,\n            columnNumber: 15\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 91,\n          columnNumber: 13\n        }, this), /*#__PURE__*/_jsxDEV(\"li\", {\n          children: /*#__PURE__*/_jsxDEV(\"p\", {\n            children: [/*#__PURE__*/_jsxDEV(\"strong\", {\n              children: \"Pitch Indicator position (Only appears in the Constant exercise)\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 95,\n              columnNumber: 18\n            }, this), \": Changes where the \\\"current pitch\\\" Pitch indicator appears in the graph.\"]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 95,\n            columnNumber: 15\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 94,\n          columnNumber: 13\n        }, this), /*#__PURE__*/_jsxDEV(\"li\", {\n          children: /*#__PURE__*/_jsxDEV(\"p\", {\n            children: [/*#__PURE__*/_jsxDEV(\"strong\", {\n              children: \"Pitch Indicator speed\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 98,\n              columnNumber: 18\n            }, this), \": Changes the speed with which the \\\"current pitch\\\" indicator ball moves across the screen.\"]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 98,\n            columnNumber: 15\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 97,\n          columnNumber: 13\n        }, this), /*#__PURE__*/_jsxDEV(\"li\", {\n          children: /*#__PURE__*/_jsxDEV(\"p\", {\n            children: [/*#__PURE__*/_jsxDEV(\"strong\", {\n              children: \"Auto-Start when Voice Detected\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 101,\n              columnNumber: 18\n            }, this), \": If this is enabled and the pitch module is paused, it will automatically start tracking pitch when the module detects sound on your microphone. If this is disabled, you must manually start it after pausing it.\"]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 101,\n            columnNumber: 15\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 100,\n          columnNumber: 13\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 81,\n        columnNumber: 11\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 80,\n      columnNumber: 9\n    }, this)]\n  }, void 0, true)\n}, {\n  key: 'part-3-2',\n  label: /*#__PURE__*/_jsxDEV(Typography.Title, {\n    id: \"part-3-2\",\n    level: 4,\n    style: {\n      margin: 0\n    },\n    children: \"Constant xercise\"\n  }, void 0, false, {\n    fileName: _jsxFileName,\n    lineNumber: 110,\n    columnNumber: 12\n  }, this),\n  children: /*#__PURE__*/_jsxDEV(_Fragment, {\n    children: [/*#__PURE__*/_jsxDEV(Paragraph, {\n      children: \"The Constant exercise is the most basic exercise. When you talk, it shows your current pitch with a large black dot and the last few seconds of your pitch with small red dots. If you stop talking, the graph keeps moving but does not show new red dots.\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 113,\n      columnNumber: 9\n    }, this), /*#__PURE__*/_jsxDEV(Paragraph, {\n      children: \"On the right side of the graph, you can see a vertical slider. Moving this slider up and down creates a constant pitch target that is shown as a horizontal dark blue line across the screen. You can try to match this target. If your pitch is close enough to the target, the target line changes from blue to yellow. You can change the target as you exercise if you want.\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 116,\n      columnNumber: 9\n    }, this), /*#__PURE__*/_jsxDEV(Paragraph, {\n      children: \"If you want something to read while you practice matching a target pitch, you can use the Upload txt file button below the graph to upload a .txt file with text of your choosing. In the .txt file, a semicolon should indicate a new line . While reading, you can then move between lines using the Forward/Backward buttons underneath the text. Other file formats are not currently supported but are planned for future releases.\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 119,\n      columnNumber: 9\n    }, this)]\n  }, void 0, true)\n}, {\n  key: 'part-3-3',\n  label: /*#__PURE__*/_jsxDEV(Typography.Title, {\n    id: \"part-3-3\",\n    level: 4,\n    style: {\n      margin: 0\n    },\n    children: \"Stair Exercise\"\n  }, void 0, false, {\n    fileName: _jsxFileName,\n    lineNumber: 127,\n    columnNumber: 12\n  }, this),\n  children: /*#__PURE__*/_jsxDEV(_Fragment, {\n    children: [/*#__PURE__*/_jsxDEV(Paragraph, {\n      children: \"When you talk, the Staircase exercise shows your current pitch with a large black dot and the last few seconds of your pitch with small red dots. If you stop talking, the graph keeps moving but does not show new red dots. This is the same as in the Constant exercise.\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 130,\n      columnNumber: 9\n    }, this), /*#__PURE__*/_jsxDEV(Paragraph, {\n      children: \"A dark blue line shows a sequence of pitches for you to match within a few seconds. You can change the location of these 'target' pitches using the light blue vertical slider to the right of the graph \\u2013 drag the bottom white ball up/down to move the lowest target or drag the top white ball to move the highest target.\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 133,\n      columnNumber: 9\n    }, this), /*#__PURE__*/_jsxDEV(Paragraph, {\n      children: \"Pressing the Play button starts moving the current pitch indicator. Press it when you are ready to try matching the pitches. You can pause at any time, and once the indicator gets to the end, you can press Play again to restart. As you speak, the dark blue target pitch curve will change to yellow if your pitch is close to it.\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 136,\n      columnNumber: 9\n    }, this), /*#__PURE__*/_jsxDEV(Paragraph, {\n      children: \"If you would like to have some sounds to make while matching the target pitches, the Show/Hide buttons  below the graph display a 5-syllable phrase. The full phrase is shown below the Show/Hide buttons, and each individual syllable is shown on one of the target pitch lines. The Forward/Backward buttons let you move to the next/previous phrase, and the Retry button resets the current phrase.  You don't have to use this function, it's just if you want to have something to say.\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 139,\n      columnNumber: 9\n    }, this)]\n  }, void 0, true)\n}, {\n  key: 'part-3-4',\n  label: /*#__PURE__*/_jsxDEV(Typography.Title, {\n    id: \"part-3-4\",\n    level: 4,\n    style: {\n      margin: 0\n    },\n    children: \"Syllables Exercise\"\n  }, void 0, false, {\n    fileName: _jsxFileName,\n    lineNumber: 147,\n    columnNumber: 12\n  }, this),\n  children: /*#__PURE__*/_jsxDEV(_Fragment, {\n    children: [/*#__PURE__*/_jsxDEV(Paragraph, {\n      children: \"To use the Syllables exercise, you must first select an avatar in the Options menu. Once you have done that, the Syllables exercise shows pitch curves from that recorded avatar while speaking 2-, 3-, 4-, or 5-syllable phrases in dark blue. As in the other two exercises, the graph shows your current pitch with a large black dot and the last few seconds of your pitch with small red dots. If you stop talking, the graph keeps moving but does not show new red dots.\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 150,\n      columnNumber: 9\n    }, this), /*#__PURE__*/_jsxDEV(Paragraph, {\n      children: \"The goal of the exercise is to match the avatar's pitch curve as you say the same phrase. The target phrase is shown below the graph in green. Pressing the Play button starts moving the current pitch indicator. Press it when you are ready to try matching the curve. You can pause at any time, and once the indicator gets to the end, you can press Play again to restart the same phrase. As you speak, the dark blue target pitch curve will change to yellow if your pitch is close to it.\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 153,\n      columnNumber: 9\n    }, this), /*#__PURE__*/_jsxDEV(Paragraph, {\n      children: \"Once the phrase finishes, you can press the Retry button to try matching it again, or press Forward/Backward to move to the next or previous phrase. The next two phrases are shown in grey below the current phrase.\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 156,\n      columnNumber: 9\n    }, this), /*#__PURE__*/_jsxDEV(Paragraph, {\n      children: \"If you want to hear the phrase spoken by your selected avatar, press the Listen button. The dark blue curve will change to yellow as the phrase is played to indicate the timing.\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 159,\n      columnNumber: 9\n    }, this)]\n  }, void 0, true)\n}, {\n  key: 'part-3-5',\n  label: /*#__PURE__*/_jsxDEV(Typography.Title, {\n    id: \"part-3-5\",\n    level: 4,\n    style: {\n      margin: 0\n    },\n    children: \"Suggestions\"\n  }, void 0, false, {\n    fileName: _jsxFileName,\n    lineNumber: 167,\n    columnNumber: 12\n  }, this),\n  children: /*#__PURE__*/_jsxDEV(_Fragment, {\n    children: [/*#__PURE__*/_jsxDEV(Paragraph, {\n      children: \"If you have limited ability to control your pitch, we recommend starting with the Constant exercise. Measure your current pitch and set the target pitch (with the slider on the right) to somewhere above your regular pitch. The \\\"stereotypical\\\" value for female pitch is about 200 Hz. Make sustained sounds (for example, \\\"aaaaaaaaaaa\\\") and try to consistently match the target pitch. Once you can consistently match the target pitch with all five vowels (a, e, i, o, u), try speaking longer phrases at the target pitch.\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 170,\n      columnNumber: 9\n    }, this), /*#__PURE__*/_jsxDEV(Paragraph, {\n      children: \"When you feel comfortable matching the target pitch in the Constant exercise for short periods of time, add the Staircase exercise to your practice rotation. You can start by hiding the target text and just matching the target pitches with a sustained vowel sound (for example, \\\"aaaaa\\\" moving up and down in pitch). Once you can do that with all five vowel sounds, turn the target text on and try speaking the phrases. Once you can do that, you may also try the Syllables exercise, though you do not necessarily need to do the Syllables exercise \\u2013 the Constant and Staircase will give you the fundamentals.\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 173,\n      columnNumber: 9\n    }, this), /*#__PURE__*/_jsxDEV(Paragraph, {\n      children: \"If this is all of your voice practice, do it for 10-15 minutes two times a day. It will help you learn pitch control, though you should keep in mind that pitch is not the only component of transgender voice. You will want to move on to other components of voice as well.\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 176,\n      columnNumber: 9\n    }, this)]\n  }, void 0, true)\n}];\nconst itemsMenu = [{\n  label: 'Profile',\n  key: 'Profile'\n}, {\n  label: 'Settings',\n  key: 'Settings'\n}, {\n  label: 'Other',\n  key: 'Other'\n}];\nconst Sample = ({\n  isModalOpen,\n  setIsModalOpen,\n  showModal,\n  handleCancel\n}) => {\n  _s();\n  const [open, setOpen] = useState(false);\n  const [txtShow, setTxtShow] = useState(\"true\");\n  const [txtShowSwitch, setTxtShowSwitch] = useState('show');\n  const size = [400, 1400];\n  const location = useLocation();\n  const [initialRange, setInitialRange] = useState([100, 300]);\n  // const [initialRange, setInitialRange] = useCookieState<number[]>('initialRange',[100,300]);\n  const [config, setConfig] = useState({\n    SRATE: 48000,\n    fxmin: 50,\n    fxlow: 50 + 50,\n    // This initial value will be updated by useEffect below\n    fxhigh: 600 - 200,\n    // This initial value will be updated by useEffect below\n    fxmax: 600\n  });\n  const COLORS = {\n    realVoiceColor: '#d679de',\n    // red\n    // targetVoiceColor: '#00008B', // blue\n    targetVoiceColor: '#4669C8',\n    closeVoiceColor: '#15dbcc' // yellow\n    // closeVoiceColor: '14DCCD',\n  };\n  const [maxLyricCount, setMaxLyricCount] = useState(2);\n  const [isPlaying, setIsPlaying] = useState(true);\n  const [isRetry, setIsRetry] = useState(false);\n  const setPlaying = () => {\n    setIsPlaying(true);\n  };\n  const setPlayingPause = () => {\n    setIsPlaying(false);\n  };\n  const handleRetry = () => {\n    setIsRetry(!isRetry);\n  };\n  const ref1 = useRef(null);\n  const ref2 = useRef(null);\n  const ref3 = useRef(null);\n  const [volume, setVolume] = useState(0);\n  const [divisor, setDivisor] = useState(10);\n  const [openTour, setOpenTour] = useState(false);\n  const [isFixed, setIsFixed] = useState(true);\n  const [showNotesPar, setShowNotesPar] = useState(false);\n  const [component, setComponent] = useState(\"ConstantTxt\");\n  const [ballPosition, setBallPosition] = useState(0.5);\n  const [currentSelection, setCurrentSelection] = useState('Constant'); //The initial state is empty\n  const [enableVol, setEnableVol] = useState(false);\n  const [playLyricCount, setPlayLyricCount] = useState(0);\n  const [gender, setGender] = useState(\"none\");\n  const [genderName, setGenderName] = useState(\"none\");\n  const [syllableCount, setSyllableCount] = useState(\"none\");\n  const [baseFilenames, setBaseFilenames] = useState([]);\n  const {\n    stairFilenames,\n    heteronymFilenames\n  } = useTemString();\n  // tes A\n  const [a, setA] = useState(0);\n  const audioPlayer = useRef(null);\n  const [isListen, setIsListen] = useState(1);\n  const [inputValue, setInputValue] = useState('');\n  const [threshold, setThreshold] = useState(70);\n  const [displayText, setDisplayText] = useState('Input Txt');\n  const [audioSrcFromChild, setAudioSrcFromChild] = useState('');\n  const [fileContent, setFileContent] = useState([]);\n  const [showNextPre, setShowNextPre] = useState(false);\n  const [showListen, setShowListen] = useState(false);\n  const [enablePre, setEnablePre] = useState(false);\n  const [enableNext, setEnableNext] = useState(true);\n  const [selectedItem, setSelectedItem] = useState('Settings');\n  const parentRef = useRef(null);\n  const [tooltipVisible, setTooltipVisible] = useState(false);\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: 290,\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: \"# Coordinate Display Mode\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 297,\n                columnNumber: 15\n              }, this), /*#__PURE__*/_jsxDEV(Radio.Group, {\n                onChange: onChangeHz,\n                defaultValue: \"notes\",\n                buttonStyle: \"solid\",\n                children: [/*#__PURE__*/_jsxDEV(Radio.Button, {\n                  value: \"hz\",\n                  children: \" Hz \"\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 299,\n                  columnNumber: 17\n                }, this), /*#__PURE__*/_jsxDEV(Radio.Button, {\n                  value: \"notes\",\n                  children: \"Notes\"\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 300,\n                  columnNumber: 17\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 298,\n                columnNumber: 15\n              }, this), /*#__PURE__*/_jsxDEV(\"br\", {}, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 302,\n                columnNumber: 15\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 296,\n              columnNumber: 13\n            }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n              children: [/*#__PURE__*/_jsxDEV(\"p\", {\n                children: \"# Pitch Display Range\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 306,\n                columnNumber: 15\n              }, this), /*#__PURE__*/_jsxDEV(Slider, {\n                range: true,\n                step: 10,\n                min: 50,\n                max: 600,\n                onChange: onChangeRange\n                // tooltipPlacement={bottom}\n                ,\n                tooltip: {\n                  // placement: 'bottom',\n                  formatter: formatterHz\n                  // open: tooltipVisible,\n                }\n                // tooltip={{ formatter: formatterHz}}\n                ,\n                marks: marksRange,\n                defaultValue: [100, 300]\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 307,\n                columnNumber: 15\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 305,\n              columnNumber: 13\n            }, this), component !== \"Fixed\" && component !== \"Stair\" && /*#__PURE__*/_jsxDEV(\"div\", {\n              children: [/*#__PURE__*/_jsxDEV(\"p\", {\n                children: \"# Pitch Indicator Horizontal Position\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 327,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(Slider, {\n                step: 0.1,\n                min: 0,\n                max: 1,\n                onChange: onChangePosition\n                // tooltip={{ formatter: formatterPos }}\n                ,\n                tooltip: {\n                  // placement: 'bottom',\n                  formatter: formatterPos\n                  // open: tooltipVisible,\n                },\n                defaultValue: 0.5,\n                marks: marksBallPos\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 328,\n                columnNumber: 17\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 326,\n              columnNumber: 15\n            }, this), component !== \"Fixed\" && component !== \"Stair\" && component !== \"Heteronym\" && /*#__PURE__*/_jsxDEV(\"div\", {\n              children: [/*#__PURE__*/_jsxDEV(\"p\", {\n                children: \"# Pitch Indicator Horizontal Position\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 347,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(Slider, {\n                step: 0.1,\n                min: 0,\n                max: 1,\n                onChange: onChangePosition\n                // tooltip={{ formatter: formatterPos }}\n                ,\n                tooltip: {\n                  // placement: 'bottom',\n                  formatter: formatterPos\n                  // open: tooltipVisible,\n                },\n                defaultValue: 0.5,\n                marks: marksBallPos\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 348,\n                columnNumber: 17\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 346,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n              children: [/*#__PURE__*/_jsxDEV(\"p\", {\n                children: \"# Pitch Indicator Speed\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 366,\n                columnNumber: 15\n              }, this), /*#__PURE__*/_jsxDEV(Slider, {\n                step: 0.05,\n                min: 0,\n                max: 1,\n                onChange: onChangeSpeed\n                // tooltip={{ formatter: formatterPos }}\n                // tooltip={{\n                //   placement: 'bottom',\n                //   formatter: formatterPos,\n                //   open: tooltipVisible,\n                // }}\n                ,\n                defaultValue: 0.3,\n                tooltip: {\n                  formatter: null\n                }\n                // marks={marksBall}\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 367,\n                columnNumber: 15\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 365,\n              columnNumber: 13\n            }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n              children: [/*#__PURE__*/_jsxDEV(Space, {\n                children: [/*#__PURE__*/_jsxDEV(\"p\", {\n                  children: \"# Auto-Start When Voice Detected\"\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 386,\n                  columnNumber: 17\n                }, this), /*#__PURE__*/_jsxDEV(Switch, {\n                  defaultChecked: false,\n                  onChange: EnableVoluneMode\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 387,\n                  columnNumber: 17\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 385,\n                columnNumber: 15\n              }, this), enableVol && /*#__PURE__*/_jsxDEV(Slider, {\n                step: 1,\n                min: 50,\n                max: 90,\n                onChange: onChangeThreshold,\n                tooltip: {\n                  // placement: 'bottom',\n                  formatter: formatterdB\n                  // open: tooltipVisible,\n                },\n                defaultValue: 70,\n                marks: marksVol\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 391,\n                columnNumber: 17\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 384,\n              columnNumber: 13\n            }, this), /*#__PURE__*/_jsxDEV(\"br\", {}, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 408,\n              columnNumber: 13\n            }, this), /*#__PURE__*/_jsxDEV(Button, {\n              onClick: onClose,\n              children: \"Close\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 409,\n              columnNumber: 13\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 293,\n            columnNumber: 11\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 292,\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: 414,\n          columnNumber: 16\n        }, this);\n      default:\n        return null;\n    }\n  };\n  const handleChangeInputDevice = value => {\n    console.log(`selected ${value}`);\n  };\n  const onClickMenu = e => {\n    setSelectedItem(e.key);\n  };\n  // const drawerRef = useRef(null);\n  const handleAfterOpenChange = open => {\n    if (open) {\n      setTooltipVisible(true);\n      scrollDrawerContent();\n    } else {\n      setTooltipVisible(false);\n    }\n  };\n  const scrollDrawerContent = () => {\n    const drawerElement = document.querySelector('.ant-drawer-body');\n    const scrollOffset = 13;\n    if (drawerElement) {\n      drawerElement.scrollTop = scrollOffset;\n    }\n  };\n  const handleTextInput = e => {\n    const content = e.target.value;\n    const separators = /[;,./\\n]/;\n    const splitContent = content.split(separators).map(s => s.trim()).filter(Boolean);\n    console.log(splitContent);\n    setFileContent(splitContent);\n    setMaxLyricCount(splitContent.length - 1);\n    setPlayLyricCount(0);\n  };\n  const handleBeginTour = () => {\n    // Open the tour\n    setOpenTour(true);\n    window.scrollTo(0, 0);\n  };\n  useEffect(() => {\n    const queryParams = new URLSearchParams(location.search);\n    const init = queryParams.get('init');\n    if (init === 'true') {\n      handleBeginTour();\n    }\n  }, [location]);\n  const handleInputChange = e => {\n    setInputValue(e.target.value);\n  };\n  const props = {\n    name: 'file',\n    accept: '.txt, .pdf',\n    beforeUpload: file => {\n      if (file.type !== 'text/plain' && file.type !== 'application/pdf') {\n        message.error(`${file.name} is not a valid text/pdf file.`);\n        return false;\n      }\n      if (file.type === 'application/pdf') {\n        pdfToText(file).then(text => {\n          const separators = /[;,./\\n]/;\n          const splitContent = text.split(separators).map(s => s.trim()).filter(Boolean);\n          console.log(splitContent);\n          setFileContent(splitContent);\n          setMaxLyricCount(splitContent.length - 1);\n          setPlayLyricCount(0);\n        }).catch(error => {\n          // Explicitly specify the type of 'error' parameter as 'any'\n          message.error('Error reading PDF file:', error);\n        });\n        return false;\n      }\n      if (file.type === 'text/plain') {\n        const reader = new FileReader();\n        reader.onload = e => {\n          var _e$target;\n          if ((_e$target = e.target) !== null && _e$target !== void 0 && _e$target.result) {\n            const content = e.target.result;\n            // const separators = /[;,./]/;\n            const separators = /[;,./\\n]/;\n            const splitContent = content.split(separators).map(s => s.trim()).filter(Boolean);\n            console.log(splitContent);\n            setFileContent(splitContent);\n            setMaxLyricCount(splitContent.length - 1);\n            setPlayLyricCount(0);\n          }\n        };\n        reader.readAsText(file);\n        return false;\n      }\n    },\n    onChange(info) {\n      if (info.file.status === 'done') {\n        message.success(`${info.file.name} file read successfully`);\n      } else if (info.file.status === 'error') {\n        message.error(`${info.file.name} file read failed.`);\n      }\n    }\n  };\n  const changeOnEnter = e => {\n    if (e.key === 'Enter' && !e.shiftKey) {\n      console.log(\"Enter Key Pressed!\");\n      handleTextInput(e);\n    }\n  };\n  const handleSubmit = () => {\n    setDisplayText(inputValue);\n  };\n  const handleAudioSrc = newAudioSrc => {\n    setAudioSrcFromChild(newAudioSrc);\n  };\n  const steps = [{\n    title: 'Canvas Display',\n    description: 'Visualize your voice pitch and target pitch curve in real-time.',\n    placement: 'top',\n    target: () => ref1.current\n  }, {\n    title: 'Function Buttons',\n    // description: 'Save your changes.',\n    cover: /*#__PURE__*/_jsxDEV(\"ul\", {\n      style: {\n        textAlign: 'left'\n      },\n      children: [/*#__PURE__*/_jsxDEV(\"li\", {\n        children: \"Start/Stop: Begin or stop recording.\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 556,\n        columnNumber: 11\n      }, this), /*#__PURE__*/_jsxDEV(\"li\", {\n        children: \"Retry: Clear display and restart.\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 557,\n        columnNumber: 11\n      }, this), /*#__PURE__*/_jsxDEV(\"li\", {\n        children: \"Upload txt/pdf File (optional): Upload text or pdf for you (in .txt/.pdf format) to read while recording.\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 558,\n        columnNumber: 11\n      }, this), /*#__PURE__*/_jsxDEV(\"li\", {\n        children: \"Previous Next (if text uploaded): Switch between lines of text.\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 559,\n        columnNumber: 11\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 555,\n      columnNumber: 9\n    }, this),\n    target: () => ref2.current\n  }, {\n    title: 'Slider',\n    description: 'Use this slides to change the target pitch value that you want to aim for.',\n    target: () => parentRef.current\n  }, {\n    title: 'Options menu',\n    description: 'Switch between different exercises and adjust settings such as the pitch display range.',\n    target: () => ref3.current\n  }];\n  const saveGender = e => {\n    const [genderType, genderNameType] = e.key.split('-');\n    setGender(genderType);\n    setGenderName(genderNameType);\n    console.log('genderName', genderName);\n  };\n  const handleStairAndConstantClick = e => {\n    setPlayLyricCount(0);\n    setCurrentSelection(e.target.innerText);\n    if (e.target.innerText === \"Constant\") {\n      setComponent(\"ConstantTxt\");\n    } else if (e.target.innerText === \"Stair\") {\n      setComponent(\"Stair\");\n    } else {\n      setComponent(e.target.innerText);\n    }\n    setSyllableCount(\"none\");\n  };\n  const renderTruncatedFilenames = filenames => {\n    return filenames.map((text, index) => {\n      const maxIndexToShow = playLyricCount + 2 >= filenames.length ? filenames.length - 1 : playLyricCount + 2;\n      const shouldShow = index >= playLyricCount && index <= maxIndexToShow;\n      const isNearEnd = filenames.length - playLyricCount <= 2;\n      const startIndex = isNearEnd ? filenames.length - 3 : playLyricCount;\n      const showCondition = index >= startIndex && index <= startIndex + 2;\n      return showCondition && /*#__PURE__*/_jsxDEV(\"li\", {\n        className: playLyricCount === index ? 'highlighted' : '',\n        children: text\n      }, index, false, {\n        fileName: _jsxFileName,\n        lineNumber: 607,\n        columnNumber: 11\n      }, this);\n    });\n  };\n  const handleMenuClick = e => {\n    setPlayLyricCount(0);\n    const [componentType, genderType, syllableCountType] = e.key.split('-');\n    if (componentType == \"Constant\") {\n      setCurrentSelection(\"Constant\");\n    } else if (componentType == \"ConstantTxt\") {\n      setCurrentSelection(\"Constant\");\n    } else if (componentType == \"Stair\") {\n      setCurrentSelection(\"Staircase\");\n    } else {\n      let tt = \"Syllables \" + syllableCountType;\n      setCurrentSelection(tt);\n    }\n    setComponent(componentType);\n    setGender(genderType);\n    setSyllableCount(syllableCountType);\n    setCurrentSelection(e.key + \"syllable \" + genderName);\n  };\n  const playAudio = () => {\n    if (audioPlayer.current && audioPlayer.current.audioEl.current) {\n      audioPlayer.current.audioEl.current.play().then(() => {\n        setIsListen(isListen + 1);\n      }).catch(error => {\n        console.error('Fail play audios: ', error);\n      });\n    }\n  };\n  const handlePlayLyricCountChange = newCount => {\n    setPlayLyricCount(newCount);\n  };\n  const itemsMale = [{\n    key: 'male',\n    label: \"Male01\",\n    onClick: saveGender\n  }];\n  const itemsFemale = [{\n    key: 'Female-Fem01',\n    label: \"Fem01\",\n    onClick: saveGender\n  }, {\n    key: 'Female-Fem02',\n    label: \"Fem02\",\n    onClick: saveGender\n  }, {\n    key: 'Female-Fem03',\n    label: \"Fem03\",\n    onClick: saveGender\n  }, {\n    key: 'Female-Fem04',\n    label: \"Fem04\",\n    onClick: saveGender\n  }, {\n    key: 'Female-Fem05',\n    label: \"Fem05\",\n    onClick: saveGender\n  }, {\n    key: 'Female-Fem06',\n    label: \"Fem06\",\n    onClick: saveGender\n  }, {\n    key: 'Female-Fem07',\n    label: \"Fem07\",\n    onClick: saveGender\n  }];\n  const itemsAvatar = [{\n    key: '1',\n    label: 'Male',\n    children: [...itemsMale]\n  }, {\n    key: '2',\n    label: 'Female',\n    children: [...itemsFemale]\n  }];\n\n  /**\r\n  * Defines the items for the syllable menu based on the gender.\r\n  * If the gender is 'none', it only includes a single item prompting the user to select an avatar.\r\n  * Otherwise, it includes multiple items representing the number of syllables, with corresponding click handlers.\r\n  */\n  const itemsSyllable = gender === 'none' ? [{\n    key: 'SelectAvatar',\n    label: 'Please select avatar'\n  }] : [{\n    key: `Fixed-${gender}-2`,\n    label: \"2 syllables\",\n    onClick: handleMenuClick\n  }, {\n    key: `Fixed-${gender}-3`,\n    label: \"3 syllables\",\n    onClick: handleMenuClick\n  }, {\n    key: `Fixed-${gender}-4`,\n    label: \"4 syllables\",\n    onClick: handleMenuClick\n  }, {\n    key: `Fixed-${gender}-5`,\n    label: \"5 syllables\",\n    onClick: handleMenuClick\n  }];\n  const showDrawer = () => {\n    setOpen(true);\n  };\n\n  // const onChangeStair = (e: RadioChangeEvent) => {\n  //   console.log(e.target.value);\n  //   setTxtShow(e.target.value);\n  // };\n\n  const onChangeStairSwitch = value => {\n    setTxtShowSwitch(value ? 'hide' : 'show');\n    setTxtShow(value ? 'true' : 'false');\n  };\n\n  // useEffect(() => {\n  //   setTxtShow(txtShowSwitch? 'true' : 'false');\n  // },[txtShowSwitch]);\n\n  const ClearTxt = () => {\n    setFileContent([]);\n    setMaxLyricCount(1);\n    setInputValue(''); // Clear the input value as well\n  };\n  const onClose = () => {\n    setOpen(false);\n  };\n  useEffect(() => {\n    navigator.mediaDevices.getUserMedia({\n      audio: true,\n      video: false\n    }).then(stream => {\n      const harkInstance = hark(stream, {});\n      harkInstance.on('volume_change', (volume, threshold) => {\n        // console.log('Volume:', volume, 'Threshold:', threshold);\n        setVolume(volume);\n      });\n      return () => harkInstance.stop();\n    }).catch(error => {\n      console.error('Error accessing the microphone', error);\n    });\n  }, []);\n  useEffect(() => {\n    if (volume > threshold - 100 && enableVol) {\n      setIsPlaying(true);\n    }\n  }, [volume]);\n  const renderSelectedComponent = () => {\n    switch (component) {\n      // case 'Constant':\n      //   return <Constant ballPosition={ballPosition} isRetry={isRetry} setPlayingPause={setPlayingPause} setPlaying={setPlaying} COLORS={COLORS} showNotesPar={showNotesPar} size={size} config={config} isPlaying={isPlaying} />;\n      case 'ConstantTxt':\n        return /*#__PURE__*/_jsxDEV(ConstantTxt, {\n          ref: parentRef,\n          initialRange: initialRange,\n          divisor: divisor,\n          ballPosition: ballPosition,\n          isRetry: isRetry,\n          setPlayingPause: setPlayingPause,\n          COLORS: COLORS,\n          showNotesPar: showNotesPar,\n          size: size,\n          config: config,\n          isPlaying: isPlaying\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 805,\n          columnNumber: 16\n        }, this);\n      case 'Stair':\n        return /*#__PURE__*/_jsxDEV(Stair, {\n          setShowNotesPar: setShowNotesPar,\n          setMaxLyricCount: setMaxLyricCount,\n          initialRange: initialRange,\n          divisor: divisor,\n          txtShow: txtShow,\n          playLyricCount: playLyricCount,\n          setPlayingPause: setPlayingPause,\n          isRetry: isRetry,\n          COLORS: COLORS,\n          showNotesPar: showNotesPar,\n          size: size,\n          config: config,\n          isPlaying: isPlaying\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 807,\n          columnNumber: 16\n        }, this);\n      case 'Fixed':\n        return /*#__PURE__*/_jsxDEV(Fixed, {\n          setMaxLyricCount: setMaxLyricCount,\n          setIsListen: setIsListen,\n          isListen: isListen,\n          initialRange: initialRange,\n          divisor: divisor,\n          setPlayingPause: setPlayingPause,\n          isRetry: isRetry,\n          onAudioSrcChange: handleAudioSrc,\n          setBaseFilenames: setBaseFilenames,\n          onPlayLyricCountChange: handlePlayLyricCountChange,\n          syllableCount: syllableCount,\n          gender: gender,\n          genderName: genderName,\n          COLORS: COLORS,\n          showNotesPar: showNotesPar,\n          playLyricCount: playLyricCount,\n          size: size,\n          config: config,\n          isPlaying: isPlaying\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 809,\n          columnNumber: 16\n        }, this);\n      case 'Heteronym':\n        return /*#__PURE__*/_jsxDEV(Heteronym, {\n          setMaxLyricCount: setMaxLyricCount,\n          initialRange: initialRange,\n          divisor: divisor,\n          txtShow: txtShow,\n          playLyricCount: playLyricCount,\n          setPlayingPause: setPlayingPause,\n          isRetry: isRetry,\n          setPlaying: setPlaying,\n          COLORS: COLORS,\n          showNotesPar: showNotesPar,\n          size: size,\n          config: config,\n          isPlaying: isPlaying,\n          heteronymFile: heteronymFilenames\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 811,\n          columnNumber: 16\n        }, this);\n      default:\n        return /*#__PURE__*/_jsxDEV(\"span\", {\n          children: \"Canvas: Picture\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 813,\n          columnNumber: 16\n        }, this);\n    }\n  };\n  const renderSelectedComponentLyric = () => {\n    switch (component) {\n      case 'ConstantTxt':\n        return /*#__PURE__*/_jsxDEV(\"div\", {\n          className: \"lyric\",\n          children: [/*#__PURE__*/_jsxDEV(Space, {\n            size: \"middle\",\n            children: /*#__PURE__*/_jsxDEV(Space.Compact, {\n              children: [/*#__PURE__*/_jsxDEV(Tooltip, {\n                title: \"Clear existing files and upload new ones\",\n                children: /*#__PURE__*/_jsxDEV(Button, {\n                  onClick: ClearTxt,\n                  children: \"Clear text\"\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 828,\n                  columnNumber: 19\n                }, this)\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 827,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(Upload, {\n                maxCount: 1,\n                ...props,\n                children: /*#__PURE__*/_jsxDEV(Button, {\n                  icon: /*#__PURE__*/_jsxDEV(UploadOutlined, {}, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 833,\n                    columnNumber: 33\n                  }, this),\n                  children: \"Upload Text/pdf File\"\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 833,\n                  columnNumber: 19\n                }, this)\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 832,\n                columnNumber: 17\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 825,\n              columnNumber: 15\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 824,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(_Fragment, {\n            children: fileContent.length === 0 && /*#__PURE__*/_jsxDEV(TextArea, {\n              rows: 4,\n              placeholder: \"Enter Text Entry (optional}\",\n              style: {\n                height: 120,\n                resize: 'none'\n              },\n              onKeyDown: changeOnEnter\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 840,\n              columnNumber: 17\n            }, this)\n          }, void 0, false), /*#__PURE__*/_jsxDEV(\"ul\", {\n            children: fileContent.map((text, index) => {\n              const maxIndexToShow = playLyricCount + 2 >= fileContent.length ? fileContent.length - 1 : playLyricCount + 2;\n              const shouldShow = index >= playLyricCount && index <= maxIndexToShow;\n              const isNearEnd = fileContent.length - playLyricCount <= 2;\n              const startIndex = isNearEnd ? fileContent.length - 3 : playLyricCount;\n              const showCondition = index >= startIndex && index <= startIndex + 2;\n              return showCondition && /*#__PURE__*/_jsxDEV(\"li\", {\n                className: playLyricCount === index ? 'highlighted' : '',\n                children: text\n              }, index, false, {\n                fileName: _jsxFileName,\n                lineNumber: 854,\n                columnNumber: 21\n              }, this);\n            })\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 843,\n            columnNumber: 13\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 822,\n          columnNumber: 11\n        }, this);\n      case 'Stair':\n        return /*#__PURE__*/_jsxDEV(\"div\", {\n          className: \"lyric\",\n          children: [/*#__PURE__*/_jsxDEV(Switch, {\n            defaultChecked: true,\n            checkedChildren: \"show\",\n            unCheckedChildren: \"hide\",\n            onChange: onChangeStairSwitch\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 865,\n            columnNumber: 13\n          }, this), (() => {\n            if (txtShow === 'true') {\n              return /*#__PURE__*/_jsxDEV(\"ul\", {\n                children: renderTruncatedFilenames(stairFilenames)\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 874,\n                columnNumber: 19\n              }, this);\n            }\n            return null;\n          })()]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 863,\n          columnNumber: 11\n        }, this);\n      case 'Heteronym':\n        return /*#__PURE__*/_jsxDEV(\"div\", {\n          className: \"lyric\",\n          children: [/*#__PURE__*/_jsxDEV(Switch, {\n            defaultChecked: true,\n            checkedChildren: \"show\",\n            unCheckedChildren: \"hide\",\n            onChange: onChangeStairSwitch\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 887,\n            columnNumber: 13\n          }, this), (() => {\n            if (txtShow === 'true') {\n              return /*#__PURE__*/_jsxDEV(\"ul\", {\n                children: renderTruncatedFilenames(heteronymFilenames)\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 896,\n                columnNumber: 19\n              }, this);\n            }\n            return null;\n          })()]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 886,\n          columnNumber: 11\n        }, this);\n      case 'Fixed':\n        return /*#__PURE__*/_jsxDEV(\"div\", {\n          className: \"lyric\",\n          children: /*#__PURE__*/_jsxDEV(\"ul\", {\n            children: renderTruncatedFilenames(baseFilenames)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 909,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 908,\n          columnNumber: 11\n        }, this);\n      default:\n        return /*#__PURE__*/_jsxDEV(\"span\", {\n          children: \"Canvas: Picture\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 915,\n          columnNumber: 16\n        }, this);\n    }\n  };\n  const handleCancelModal = () => {\n    setIsModalOpen(false);\n  };\n  useEffect(() => {\n    if (component == \"ConstantTxt\" && fileContent.length === 0) {\n      setShowNextPre(false);\n      setShowListen(false);\n    } else if (component == \"ConstantTxt\" && fileContent.length != 0) {\n      setShowNextPre(true);\n      setShowListen(false);\n    } else if (component == \"Fixed\") {\n      setShowNextPre(true);\n      setShowListen(true);\n    } else if (component == \"Stair\") {\n      setShowNextPre(true);\n      setShowListen(false);\n    } else if (component == \"Heteronym\") {\n      setShowNextPre(true);\n      setShowListen(false);\n    } else {\n      setShowNextPre(true);\n      setShowListen(false);\n    }\n  }, [component, fileContent]);\n  const onChangeRange = rangeValue => {\n    console.log(rangeValue[1]);\n    setInitialRange([rangeValue[0], rangeValue[1]]);\n  };\n  const onChangePosition = positionValue => {\n    setBallPosition(positionValue);\n  };\n  const onChangeSpeed = speedValue => {\n    const mappedValue = Math.round(speedValue * 20 + 4);\n    setDivisor(mappedValue);\n  };\n  const onChangeHz = ({\n    target: {\n      value\n    }\n  }) => {\n    console.log(value);\n    if (value === 'hz') {\n      setShowNotesPar(false);\n    } else {\n      setShowNotesPar(true);\n    }\n  };\n  const EnableVoluneMode = e => {\n    console.log(e);\n    if (e) {\n      setEnableVol(true);\n    } else {\n      setEnableVol(false);\n    }\n  };\n  // Pause function\n  const onChangePause = () => {\n    setIsPlaying(!isPlaying);\n  };\n  const onChangePrevious = () => {\n    const tem = playLyricCount;\n    if (tem <= 0) {\n      setPlayLyricCount(0);\n    } else {\n      setPlayLyricCount(tem - 1);\n    }\n  };\n  const onChangeNext = () => {\n    const tem = playLyricCount;\n    console.log(playLyricCount);\n    if (tem >= maxLyricCount) {\n      setPlayLyricCount(maxLyricCount);\n    } else {\n      setPlayLyricCount(tem + 1);\n    }\n  };\n  const onChangeThreshold = e => {\n    setThreshold(e);\n  };\n  const formatterdB = value => `${value} dB`;\n  const formatterHz = value => `${value} Hz`;\n  const formatterPos = value => `${value ? (value * 100).toFixed(0) : '0'}%`;\n  const formatterSpd = value => {\n    if (value === undefined) {\n      return '0';\n    }\n    const mappedValue = (value - 5) * (50 / 15);\n    return `${mappedValue.toFixed(0)}`;\n  };\n  return /*#__PURE__*/_jsxDEV(Row, {\n    children: /*#__PURE__*/_jsxDEV(Col, {\n      span: 24,\n      children: /*#__PURE__*/_jsxDEV(Layout, {\n        className: \"layout\",\n        children: /*#__PURE__*/_jsxDEV(Content, {\n          children: [/*#__PURE__*/_jsxDEV(Flex, {\n            style: {\n              maxWidth: \"100vw\"\n            },\n            align: \"center\",\n            justify: \"center\",\n            gap: \"middle\",\n            vertical: true,\n            children: [/*#__PURE__*/_jsxDEV(\"div\", {\n              className: \"currentSelection blueFont\",\n              children: /*#__PURE__*/_jsxDEV(\"p\", {\n                children: [currentSelection, \" Exercise\"]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 1025,\n                columnNumber: 17\n              }, this)\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 1024,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n              children: renderSelectedComponent()\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 1027,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(Flex, {\n              vertical: true,\n              justify: \"center\",\n              wrap: \"wrap\",\n              gap: \"small\",\n              ref: ref2,\n              children: [renderSelectedComponentLyric(), /*#__PURE__*/_jsxDEV(Flex, {\n                justify: \"center\",\n                wrap: \"wrap\",\n                gap: \"small\",\n                children: [/*#__PURE__*/_jsxDEV(Tooltip, {\n                  title: \"Retry\",\n                  children: /*#__PURE__*/_jsxDEV(Button, {\n                    onClick: handleRetry,\n                    shape: \"circle\",\n                    icon: /*#__PURE__*/_jsxDEV(RedoOutlined, {}, void 0, false, {\n                      fileName: _jsxFileName,\n                      lineNumber: 1039,\n                      columnNumber: 72\n                    }, this)\n                  }, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 1039,\n                    columnNumber: 21\n                  }, this)\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1038,\n                  columnNumber: 19\n                }, this), /*#__PURE__*/_jsxDEV(ReactAudioPlayer, {\n                  className: \"audio-player-hidden\",\n                  src: audioSrcFromChild,\n                  ref: audioPlayer\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1041,\n                  columnNumber: 19\n                }, this), showListen && /*#__PURE__*/_jsxDEV(Tooltip, {\n                  title: \"Listen\",\n                  children: /*#__PURE__*/_jsxDEV(Button, {\n                    disabled: component !== \"Fixed\",\n                    shape: \"circle\",\n                    onClick: playAudio,\n                    icon: /*#__PURE__*/_jsxDEV(CustomerServiceOutlined, {}, void 0, false, {\n                      fileName: _jsxFileName,\n                      lineNumber: 1048,\n                      columnNumber: 105\n                    }, this)\n                  }, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 1048,\n                    columnNumber: 23\n                  }, this)\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1047,\n                  columnNumber: 21\n                }, this), showNextPre && /*#__PURE__*/_jsxDEV(Tooltip, {\n                  title: \"Previous\",\n                  children: /*#__PURE__*/_jsxDEV(Button, {\n                    shape: \"circle\",\n                    onClick: onChangePrevious,\n                    icon: /*#__PURE__*/_jsxDEV(StepBackwardOutlined, {}, void 0, false, {\n                      fileName: _jsxFileName,\n                      lineNumber: 1055,\n                      columnNumber: 79\n                    }, this)\n                  }, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 1055,\n                    columnNumber: 23\n                  }, this)\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1054,\n                  columnNumber: 21\n                }, this), /*#__PURE__*/_jsxDEV(Tooltip, {\n                  title: isPlaying ? \"Pause\" : \"Play\",\n                  children: /*#__PURE__*/_jsxDEV(Button, {\n                    onClick: onChangePause,\n                    shape: \"circle\",\n                    icon: isPlaying ? /*#__PURE__*/_jsxDEV(PauseOutlined, {}, void 0, false, {\n                      fileName: _jsxFileName,\n                      lineNumber: 1059,\n                      columnNumber: 86\n                    }, this) : /*#__PURE__*/_jsxDEV(CaretRightOutlined, {}, void 0, false, {\n                      fileName: _jsxFileName,\n                      lineNumber: 1059,\n                      columnNumber: 106\n                    }, this)\n                  }, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 1059,\n                    columnNumber: 21\n                  }, this)\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1058,\n                  columnNumber: 19\n                }, this), showNextPre && /*#__PURE__*/_jsxDEV(Tooltip, {\n                  title: \"Next\",\n                  children: /*#__PURE__*/_jsxDEV(Button, {\n                    shape: \"circle\",\n                    onClick: onChangeNext,\n                    icon: /*#__PURE__*/_jsxDEV(StepForwardOutlined, {}, void 0, false, {\n                      fileName: _jsxFileName,\n                      lineNumber: 1064,\n                      columnNumber: 75\n                    }, this)\n                  }, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 1064,\n                    columnNumber: 23\n                  }, this)\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1063,\n                  columnNumber: 21\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 1036,\n                columnNumber: 17\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 1033,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(Tooltip, {\n              title: \"Setting\",\n              children: /*#__PURE__*/_jsxDEV(FloatButton, {\n                style: {\n                  width: 50,\n                  height: 50,\n                  right: 15,\n                  display: 'flex',\n                  alignItems: 'center',\n                  justifyContent: 'center'\n                },\n                onClick: showDrawer,\n                ref: ref3,\n                icon: /*#__PURE__*/_jsxDEV(SettingOutlined, {}, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1079,\n                  columnNumber: 58\n                }, this)\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 1072,\n                columnNumber: 17\n              }, this)\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 1071,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(Tooltip, {\n              title: \"tour\",\n              children: /*#__PURE__*/_jsxDEV(FloatButton, {\n                style: {\n                  width: 50,\n                  height: 50,\n                  right: 90,\n                  display: 'flex',\n                  alignItems: 'center',\n                  justifyContent: 'center'\n                },\n                onClick: handleBeginTour,\n                ref: ref3,\n                icon: /*#__PURE__*/_jsxDEV(QuestionOutlined, {}, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1090,\n                  columnNumber: 63\n                }, this)\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 1083,\n                columnNumber: 17\n              }, this)\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 1082,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(Image, {\n              preview: false,\n              src: divide_1,\n              style: {\n                width: '100%'\n              }\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 1094,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(Typography, {\n              style: {\n                width: \"100%\",\n                paddingLeft: \"30px\",\n                paddingRight: \"40px\"\n              },\n              children: [/*#__PURE__*/_jsxDEV(Typography.Title, {\n                id: \"part-1\",\n                level: 2,\n                style: {\n                  margin: 0\n                },\n                children: \"How to use\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 1105,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(Collapse, {\n                defaultActiveKey: ['2'],\n                ghost: true,\n                items: items_3\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 1108,\n                columnNumber: 17\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 1100,\n              columnNumber: 15\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 1023,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(Modal, {\n            title: \"Settings\",\n            open: isModalOpen,\n            className: \"AvatarModal\",\n            onCancel: handleCancelModal,\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: 1122,\n                  columnNumber: 41\n                }, this)\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 1122,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(\"p\", {\n                children: \"Jane Smith\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 1123,\n                columnNumber: 17\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: 1125,\n                columnNumber: 17\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 1121,\n              columnNumber: 15\n            }, this), renderContent()]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 1114,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(Drawer, {\n            title: \"Options\",\n            placement: \"right\",\n            onClose: onClose,\n            open: open,\n            afterOpenChange: handleAfterOpenChange,\n            width: 430,\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: 1140,\n                  columnNumber: 19\n                }, this), /*#__PURE__*/_jsxDEV(Dropdown, {\n                  menu: {\n                    items: itemsAvatar,\n                    selectable: true\n                  },\n                  placement: \"bottom\",\n                  children: /*#__PURE__*/_jsxDEV(Button, {\n                    children: genderName === \"none\" ? \"Model Voice\" : gender === \"Female\" ? genderName : 'Male01'\n                  }, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 1142,\n                    columnNumber: 21\n                  }, this)\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1141,\n                  columnNumber: 19\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 1139,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(Space, {\n                children: /*#__PURE__*/_jsxDEV(\"p\", {\n                  children: \"# Exercise Selection: \"\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1147,\n                  columnNumber: 19\n                }, this)\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 1146,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(Space, {\n                children: [/*#__PURE__*/_jsxDEV(Button, {\n                  onClick: handleStairAndConstantClick,\n                  children: \"Constant\"\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1151,\n                  columnNumber: 19\n                }, this), /*#__PURE__*/_jsxDEV(Button, {\n                  onClick: handleStairAndConstantClick,\n                  children: \"Stair\"\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1153,\n                  columnNumber: 19\n                }, this), /*#__PURE__*/_jsxDEV(Button, {\n                  onClick: handleStairAndConstantClick,\n                  children: \" Heteronym \"\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1155,\n                  columnNumber: 19\n                }, this), /*#__PURE__*/_jsxDEV(Dropdown, {\n                  menu: {\n                    items: itemsSyllable\n                  },\n                  placement: \"bottom\",\n                  children: /*#__PURE__*/_jsxDEV(Button, {\n                    children: syllableCount === \"none\" ? 'Human Curve' : syllableCount + ' syllable'\n                  }, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 1158,\n                    columnNumber: 21\n                  }, this)\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1157,\n                  columnNumber: 19\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 1149,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(Space, {\n                children: [/*#__PURE__*/_jsxDEV(\"p\", {\n                  children: \"# Coordinate Display Mode\"\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1164,\n                  columnNumber: 19\n                }, this), /*#__PURE__*/_jsxDEV(Radio.Group, {\n                  onChange: onChangeHz,\n                  value: showNotesPar ? 'notes' : 'hz',\n                  defaultValue: \"notes\",\n                  buttonStyle: \"solid\",\n                  children: [/*#__PURE__*/_jsxDEV(Radio.Button, {\n                    value: \"hz\",\n                    children: \" Hz \"\n                  }, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 1166,\n                    columnNumber: 21\n                  }, this), /*#__PURE__*/_jsxDEV(Radio.Button, {\n                    value: \"notes\",\n                    children: \"Notes\"\n                  }, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 1167,\n                    columnNumber: 21\n                  }, this)]\n                }, void 0, true, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1165,\n                  columnNumber: 19\n                }, this), /*#__PURE__*/_jsxDEV(\"br\", {}, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1169,\n                  columnNumber: 19\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 1163,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n                children: [/*#__PURE__*/_jsxDEV(\"p\", {\n                  children: \"# Pitch Display Range\"\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1173,\n                  columnNumber: 19\n                }, this), /*#__PURE__*/_jsxDEV(Slider, {\n                  range: true,\n                  step: 10,\n                  min: 50,\n                  max: 600,\n                  onChange: onChangeRange,\n                  tooltip: {\n                    formatter: formatterHz\n                  },\n                  marks: marksRange,\n                  defaultValue: [100, 300]\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1174,\n                  columnNumber: 19\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 1172,\n                columnNumber: 17\n              }, this), component !== \"Fixed\" && component !== \"Stair\" && component !== \"Heteronym\" && /*#__PURE__*/_jsxDEV(\"div\", {\n                children: [/*#__PURE__*/_jsxDEV(\"p\", {\n                  children: \"# Pitch Indicator Horizontal Position\"\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1189,\n                  columnNumber: 21\n                }, this), /*#__PURE__*/_jsxDEV(Slider, {\n                  step: 0.1,\n                  min: 0,\n                  max: 1,\n                  onChange: onChangePosition,\n                  tooltip: {\n                    formatter: formatterPos\n                  },\n                  defaultValue: 0.5,\n                  marks: marksBallPos\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1190,\n                  columnNumber: 21\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 1188,\n                columnNumber: 19\n              }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n                children: [/*#__PURE__*/_jsxDEV(\"p\", {\n                  children: \"# Pitch Indicator Speed\"\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1205,\n                  columnNumber: 19\n                }, this), /*#__PURE__*/_jsxDEV(Slider, {\n                  step: 0.05,\n                  min: 0,\n                  max: 1,\n                  onChange: onChangeSpeed,\n                  defaultValue: 0.3,\n                  tooltip: {\n                    formatter: null\n                  }\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1206,\n                  columnNumber: 19\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 1204,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n                children: [/*#__PURE__*/_jsxDEV(Space, {\n                  children: [/*#__PURE__*/_jsxDEV(\"p\", {\n                    children: \"# Auto-Start When Voice Detected\"\n                  }, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 1218,\n                    columnNumber: 21\n                  }, this), /*#__PURE__*/_jsxDEV(Switch, {\n                    defaultChecked: false,\n                    onChange: EnableVoluneMode\n                  }, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 1219,\n                    columnNumber: 21\n                  }, this)]\n                }, void 0, true, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1217,\n                  columnNumber: 19\n                }, this), enableVol && /*#__PURE__*/_jsxDEV(Slider, {\n                  step: 1,\n                  min: 50,\n                  max: 90,\n                  onChange: onChangeThreshold,\n                  tooltip: {\n                    formatter: formatterdB\n                  },\n                  defaultValue: 70,\n                  marks: marksVol\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1223,\n                  columnNumber: 21\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 1216,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(\"br\", {}, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 1237,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(Button, {\n                onClick: onClose,\n                children: \"Close\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 1238,\n                columnNumber: 17\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 1138,\n              columnNumber: 15\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 1137,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(Tour, {\n            open: openTour,\n            onClose: () => setOpenTour(false),\n            steps: steps\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 1241,\n            columnNumber: 13\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 1021,\n          columnNumber: 11\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 1019,\n        columnNumber: 9\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 1018,\n      columnNumber: 7\n    }, this)\n  }, void 0, false, {\n    fileName: _jsxFileName,\n    lineNumber: 1017,\n    columnNumber: 5\n  }, this)\n\n  // </div>\n  ;\n};\n_s(Sample, \"Semkbqw3pPfEayStg5ePtUH77ZM=\", false, function () {\n  return [useLocation, useTemString];\n});\n_c = Sample;\nexport default Sample;\nvar _c;\n$RefreshReg$(_c, \"Sample\");","map":{"version":3,"names":["React","useState","useEffect","useRef","Button","Flex","SettingOutlined","CustomerServiceOutlined","Col","Row","Tour","CaretRightOutlined","Slider","Input","Layout","Menu","Dropdown","Avatar","Drawer","Radio","RedoOutlined","PauseOutlined","StepForwardOutlined","StepBackwardOutlined","Tooltip","FloatButton","Space","Switch","Modal","ConstantTxt","Fixed","Stair","Heteronym","ReactAudioPlayer","UploadOutlined","message","Upload","hark","useLocation","Typography","Collapse","Image","divide_1","UserOutlined","QuestionOutlined","useTemString","pdfToText","jsxDEV","_jsxDEV","Fragment","_Fragment","TextArea","Header","Content","Title","Paragraph","Text","Link","highlightedStyle","color","fontSize","style","display","height","marksRange","marksBall","marksBallPos","marksVol","items_3","key","label","id","level","margin","children","fileName","_jsxFileName","lineNumber","columnNumber","itemsMenu","Sample","isModalOpen","setIsModalOpen","showModal","handleCancel","_s","open","setOpen","txtShow","setTxtShow","txtShowSwitch","setTxtShowSwitch","size","location","initialRange","setInitialRange","config","setConfig","SRATE","fxmin","fxlow","fxhigh","fxmax","COLORS","realVoiceColor","targetVoiceColor","closeVoiceColor","maxLyricCount","setMaxLyricCount","isPlaying","setIsPlaying","isRetry","setIsRetry","setPlaying","setPlayingPause","handleRetry","ref1","ref2","ref3","volume","setVolume","divisor","setDivisor","openTour","setOpenTour","isFixed","setIsFixed","showNotesPar","setShowNotesPar","component","setComponent","ballPosition","setBallPosition","currentSelection","setCurrentSelection","enableVol","setEnableVol","playLyricCount","setPlayLyricCount","gender","setGender","genderName","setGenderName","syllableCount","setSyllableCount","baseFilenames","setBaseFilenames","stairFilenames","heteronymFilenames","a","setA","audioPlayer","isListen","setIsListen","inputValue","setInputValue","threshold","setThreshold","displayText","setDisplayText","audioSrcFromChild","setAudioSrcFromChild","fileContent","setFileContent","showNextPre","setShowNextPre","showListen","setShowListen","enablePre","setEnablePre","enableNext","setEnableNext","selectedItem","setSelectedItem","parentRef","tooltipVisible","setTooltipVisible","renderContent","vertical","gap","Group","onChange","onChangeHz","defaultValue","buttonStyle","value","range","step","min","max","onChangeRange","tooltip","formatter","formatterHz","marks","onChangePosition","formatterPos","onChangeSpeed","defaultChecked","EnableVoluneMode","onChangeThreshold","formatterdB","onClick","onClose","handleChangeInputDevice","console","log","onClickMenu","e","handleAfterOpenChange","scrollDrawerContent","drawerElement","document","querySelector","scrollOffset","scrollTop","handleTextInput","content","target","separators","splitContent","split","map","s","trim","filter","Boolean","length","handleBeginTour","window","scrollTo","queryParams","URLSearchParams","search","init","get","handleInputChange","props","name","accept","beforeUpload","file","type","error","then","text","catch","reader","FileReader","onload","_e$target","result","readAsText","info","status","success","changeOnEnter","shiftKey","handleSubmit","handleAudioSrc","newAudioSrc","steps","title","description","placement","current","cover","textAlign","saveGender","genderType","genderNameType","handleStairAndConstantClick","innerText","renderTruncatedFilenames","filenames","index","maxIndexToShow","shouldShow","isNearEnd","startIndex","showCondition","className","handleMenuClick","componentType","syllableCountType","tt","playAudio","audioEl","play","handlePlayLyricCountChange","newCount","itemsMale","itemsFemale","itemsAvatar","itemsSyllable","showDrawer","onChangeStairSwitch","ClearTxt","navigator","mediaDevices","getUserMedia","audio","video","stream","harkInstance","on","stop","renderSelectedComponent","ref","onAudioSrcChange","onPlayLyricCountChange","heteronymFile","renderSelectedComponentLyric","Compact","maxCount","icon","rows","placeholder","resize","onKeyDown","checkedChildren","unCheckedChildren","handleCancelModal","rangeValue","positionValue","speedValue","mappedValue","Math","round","onChangePause","onChangePrevious","tem","onChangeNext","toFixed","formatterSpd","undefined","span","maxWidth","align","justify","wrap","shape","src","disabled","width","right","alignItems","justifyContent","preview","paddingLeft","paddingRight","defaultActiveKey","ghost","items","onCancel","footer","disabledOverflow","mode","selectedKeys","afterOpenChange","menu","selectable","_c","$RefreshReg$"],"sources":["D:/Project/UC_Trains_Voice/react-demo/src/Route/Sample.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\r\nimport { Button, Flex, Segmented } from 'antd';\r\nimport { SettingOutlined, CustomerServiceOutlined } from '@ant-design/icons';\r\nimport { Col, Row, Tour } from 'antd';\r\nimport { CaretRightOutlined } from '@ant-design/icons';\r\nimport { Slider, Input } from 'antd';\r\nimport { Breadcrumb, Layout, Menu, Dropdown, theme, Avatar } from 'antd';\r\nimport { Drawer, Cascader, Radio } from 'antd';\r\nimport { RedoOutlined, PauseOutlined, StepForwardOutlined, StepBackwardOutlined } from '@ant-design/icons';\r\nimport { Tooltip, FloatButton, Space, Switch } from 'antd';\r\nimport '../CSS/sample.css';\r\nimport { Modal } from 'antd';\r\nimport ConstantTxt from '../Canvas/ConstantTxt'\r\nimport Fixed from '../Canvas/Fixed'\r\nimport Stair from '../Canvas/Stair'\r\nimport Heteronym from '../Canvas/Heteronym'\r\nimport type { RadioChangeEvent } from 'antd';\r\nimport type { TourProps } from 'antd';\r\nimport ReactAudioPlayer from 'react-audio-player';\r\nimport type { SliderSingleProps } from 'antd';\r\nimport type { UploadProps } from 'antd';\r\nimport { UploadOutlined, ArrowLeftOutlined, RollbackOutlined } from '@ant-design/icons';\r\nimport { message, Upload } from 'antd';\r\nimport hark from 'hark';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { Typography } from 'antd';\r\nimport type { CollapseProps } from 'antd';\r\nimport { Collapse } from 'antd';\r\nimport { Image } from 'antd';\r\nimport divide_1 from '../icon/Divider2-half.png'\r\nimport { UserOutlined } from '@ant-design/icons';\r\nimport { QuestionOutlined } from '@ant-design/icons';\r\nimport { adjustCanvasScale, map, drawBackground, generateNotesAndFrequencies } from '../function/canvasDefault';\r\nimport { useTemString } from '../hooks/useTemString';\r\nimport type { MenuProps } from 'antd';\r\n// @ts-ignore\r\nimport pdfToText from 'react-pdftotext';\r\nimport useCanvasAdjustHeight from '../hooksUseEffect/useCanvasAdjustHeight';\r\n\r\n\r\nconst { TextArea } = Input;\r\n\r\ntype MenuTheme = 'show' | 'hide'\r\n\r\n\r\nconst { Header, Content } = Layout;\r\nconst { Title, Paragraph, Text, Link } = Typography;\r\n\r\nconst highlightedStyle = {\r\n  color: 'rgb(75, 216, 43)',\r\n  fontSize: '25px'\r\n};\r\nconst style: React.CSSProperties = {\r\n  display: 'relative',\r\n  height: 300,\r\n};\r\nconst marksRange: SliderSingleProps['marks'] = {\r\n  50: '50Hz',\r\n  600: '600Hz'\r\n};\r\nconst marksBall: SliderSingleProps['marks'] = {\r\n  0: 'Slowest',\r\n  1: 'Fastest'\r\n};\r\nconst marksBallPos: SliderSingleProps['marks'] = {\r\n  0: '0%',\r\n  1: '100%'\r\n};\r\nconst marksVol: SliderSingleProps['marks'] = {\r\n  50: '50dB',\r\n  90: '90dB'\r\n};\r\nconst items_3: CollapseProps['items'] = [\r\n  {\r\n    key: 'part-3-1',\r\n    label: <Typography.Title id=\"part-3-1\" level={4} style={{ margin: 0 }}>Setting</Typography.Title>,\r\n    children: (\r\n      <>\r\n        <Paragraph>The possible settings are:</Paragraph>\r\n        <Paragraph>\r\n          <ul>\r\n            <li>\r\n              <p><strong>Model selection</strong>: Lets you pick between several prerecorded voices to serve as a target \"avatar\". These are currently used only in the Syllables exercise.</p>\r\n            </li>\r\n            <li>\r\n              <p><strong>Exercise selection</strong>: Lets you pick between Constant, Stair, and Syllable exercises.</p>\r\n            </li>\r\n            <li>\r\n              <p><strong>Coordinate Display Mode</strong>: changes the pitch display between hertz and musical notes. You can also change this by clicking the vertical scale on the graph itself.</p>\r\n            </li>\r\n            <li>\r\n              <p><strong>Pitch display range</strong>: Changes the scale of the pitch graph. The blue part represents the current scale, and the white balls on the left and right can be dragged with your mouse to change the minimum or maximum of the scale. By default, it shows 100-300 Hz, but the maximum range is 50-600  Hz.</p>\r\n            </li>\r\n            <li>\r\n              <p><strong>Pitch Indicator position (Only appears in the Constant exercise)</strong>: Changes where the \"current pitch\" Pitch indicator appears in the graph.</p>\r\n            </li>\r\n            <li>\r\n              <p><strong>Pitch Indicator speed</strong>: Changes the speed with which the \"current pitch\" indicator ball moves across the screen.</p>\r\n            </li>\r\n            <li>\r\n              <p><strong>Auto-Start when Voice Detected</strong>: If this is enabled and the pitch module is paused, it will automatically start tracking pitch when the module detects sound on your microphone. If this is disabled, you must manually start it after pausing it.</p>\r\n            </li>\r\n          </ul>\r\n        </Paragraph>\r\n      </>\r\n    ),\r\n  },\r\n  {\r\n    key: 'part-3-2',\r\n    label: <Typography.Title id=\"part-3-2\" level={4} style={{ margin: 0 }}>Constant xercise</Typography.Title>,\r\n    children: (\r\n      <>\r\n        <Paragraph>\r\n          The Constant exercise is the most basic exercise. When you talk, it shows your current pitch with a large black dot and the last few seconds of your pitch with small red dots. If you stop talking, the graph keeps moving but does not show new red dots.\r\n        </Paragraph>\r\n        <Paragraph>\r\n          On the right side of the graph, you can see a vertical slider. Moving this slider up and down creates a constant pitch target that is shown as a horizontal dark blue line across the screen. You can try to match this target. If your pitch is close enough to the target, the target line changes from blue to yellow. You can change the target as you exercise if you want.\r\n        </Paragraph>\r\n        <Paragraph>\r\n          If you want something to read while you practice matching a target pitch, you can use the Upload txt file button below the graph to upload a .txt file with text of your choosing. In the .txt file, a semicolon should indicate a new line . While reading, you can then move between lines using the Forward/Backward buttons underneath the text. Other file formats are not currently supported but are planned for future releases.\r\n        </Paragraph>\r\n      </>\r\n    ),\r\n  },\r\n  {\r\n    key: 'part-3-3',\r\n    label: <Typography.Title id=\"part-3-3\" level={4} style={{ margin: 0 }}>Stair Exercise</Typography.Title>,\r\n    children: (\r\n      <>\r\n        <Paragraph>\r\n          When you talk, the Staircase exercise shows your current pitch with a large black dot and the last few seconds of your pitch with small red dots. If you stop talking, the graph keeps moving but does not show new red dots. This is the same as in the Constant exercise.\r\n        </Paragraph>\r\n        <Paragraph>\r\n          A dark blue line shows a sequence of pitches for you to match within a few seconds. You can change the location of these 'target' pitches using the light blue vertical slider to the right of the graph – drag the bottom white ball up/down to move the lowest target or drag the top white ball to move the highest target.\r\n        </Paragraph>\r\n        <Paragraph>\r\n          Pressing the Play button starts moving the current pitch indicator. Press it when you are ready to try matching the pitches. You can pause at any time, and once the indicator gets to the end, you can press Play again to restart. As you speak, the dark blue target pitch curve will change to yellow if your pitch is close to it.\r\n        </Paragraph>\r\n        <Paragraph>\r\n          If you would like to have some sounds to make while matching the target pitches, the Show/Hide buttons  below the graph display a 5-syllable phrase. The full phrase is shown below the Show/Hide buttons, and each individual syllable is shown on one of the target pitch lines. The Forward/Backward buttons let you move to the next/previous phrase, and the Retry button resets the current phrase.  You don't have to use this function, it's just if you want to have something to say.\r\n        </Paragraph>\r\n      </>\r\n    ),\r\n  },\r\n  {\r\n    key: 'part-3-4',\r\n    label: <Typography.Title id=\"part-3-4\" level={4} style={{ margin: 0 }}>Syllables Exercise</Typography.Title>,\r\n    children: (\r\n      <>\r\n        <Paragraph>\r\n          To use the Syllables exercise, you must first select an avatar in the Options menu. Once you have done that, the Syllables exercise shows pitch curves from that recorded avatar while speaking 2-, 3-, 4-, or 5-syllable phrases in dark blue. As in the other two exercises, the graph shows your current pitch with a large black dot and the last few seconds of your pitch with small red dots. If you stop talking, the graph keeps moving but does not show new red dots.\r\n        </Paragraph>\r\n        <Paragraph>\r\n          The goal of the exercise is to match the avatar's pitch curve as you say the same phrase. The target phrase is shown below the graph in green. Pressing the Play button starts moving the current pitch indicator. Press it when you are ready to try matching the curve. You can pause at any time, and once the indicator gets to the end, you can press Play again to restart the same phrase. As you speak, the dark blue target pitch curve will change to yellow if your pitch is close to it.\r\n        </Paragraph>\r\n        <Paragraph>\r\n          Once the phrase finishes, you can press the Retry button to try matching it again, or press Forward/Backward to move to the next or previous phrase. The next two phrases are shown in grey below the current phrase.\r\n        </Paragraph>\r\n        <Paragraph>\r\n          If you want to hear the phrase spoken by your selected avatar, press the Listen button. The dark blue curve will change to yellow as the phrase is played to indicate the timing.\r\n        </Paragraph>\r\n      </>\r\n    ),\r\n  },\r\n  {\r\n    key: 'part-3-5',\r\n    label: <Typography.Title id=\"part-3-5\" level={4} style={{ margin: 0 }}>Suggestions</Typography.Title>,\r\n    children: (\r\n      <>\r\n        <Paragraph>\r\n          If you have limited ability to control your pitch, we recommend starting with the Constant exercise. Measure your current pitch and set the target pitch (with the slider on the right) to somewhere above your regular pitch. The \"stereotypical\" value for female pitch is about 200 Hz. Make sustained sounds (for example, \"aaaaaaaaaaa\") and try to consistently match the target pitch. Once you can consistently match the target pitch with all five vowels (a, e, i, o, u), try speaking longer phrases at the target pitch.\r\n        </Paragraph>\r\n        <Paragraph>\r\n          When you feel comfortable matching the target pitch in the Constant exercise for short periods of time, add the Staircase exercise to your practice rotation. You can start by hiding the target text and just matching the target pitches with a sustained vowel sound (for example, \"aaaaa\" moving up and down in pitch). Once you can do that with all five vowel sounds, turn the target text on and try speaking the phrases. Once you can do that, you may also try the Syllables exercise, though you do not necessarily need to do the Syllables exercise – the Constant and Staircase will give you the fundamentals.\r\n        </Paragraph>\r\n        <Paragraph>\r\n          If this is all of your voice practice, do it for 10-15 minutes two times a day. It will help you learn pitch control, though you should keep in mind that pitch is not the only component of transgender voice. You will want to move on to other components of voice as well.\r\n        </Paragraph>\r\n      </>\r\n    ),\r\n  },\r\n];\r\nconst 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\ninterface SampleProps {\r\n  isModalOpen: boolean;\r\n  showModal: () => void;\r\n  handleCancel: () => void;\r\n  setIsModalOpen: (boolean: boolean) => void;\r\n}\r\n\r\ntype MenuItem = Required<MenuProps>['items'][number];\r\n\r\n\r\nconst Sample: React.FC<SampleProps> = ({ isModalOpen, setIsModalOpen, showModal, handleCancel }) => {\r\n  const [open, setOpen] = useState(false);\r\n  const [txtShow, setTxtShow] = useState<string>(\"true\");\r\n  const [txtShowSwitch, setTxtShowSwitch] = useState<MenuTheme>('show');\r\n  const size = [400, 1400];\r\n  const location = useLocation();\r\n  const [initialRange, setInitialRange] = useState<number[]>([100, 300]);\r\n  // const [initialRange, setInitialRange] = useCookieState<number[]>('initialRange',[100,300]);\r\n  const [config, setConfig] = useState({\r\n    SRATE: 48000,\r\n    fxmin: 50,\r\n    fxlow: 50 + 50, // This initial value will be updated by useEffect below\r\n    fxhigh: 600 - 200, // This initial value will be updated by useEffect below\r\n    fxmax: 600\r\n  });\r\n  const COLORS = {\r\n    realVoiceColor: '#d679de', // red\r\n    // targetVoiceColor: '#00008B', // blue\r\n    targetVoiceColor: '#4669C8',\r\n    closeVoiceColor: '#15dbcc', // yellow\r\n    // closeVoiceColor: '14DCCD',\r\n  };\r\n\r\n  const [maxLyricCount, setMaxLyricCount] = useState<number>(2);\r\n  const [isPlaying, setIsPlaying] = useState(true);\r\n  const [isRetry, setIsRetry] = useState(false);\r\n  const setPlaying = () => {\r\n    setIsPlaying(true);\r\n  };\r\n  const setPlayingPause = () => {\r\n    setIsPlaying(false);\r\n  };\r\n  const handleRetry = () => {\r\n    setIsRetry(!isRetry);\r\n  };\r\n\r\n  const ref1 = useRef(null);\r\n  const ref2 = useRef(null);\r\n\r\n  const ref3 = useRef(null);\r\n  const [volume, setVolume] = useState(0);\r\n  const [divisor, setDivisor] = useState<number>(10);\r\n  const [openTour, setOpenTour] = useState<boolean>(false);\r\n  const [isFixed, setIsFixed] = useState(true);\r\n  const [showNotesPar, setShowNotesPar] = useState(false);\r\n  const [component, setComponent] = useState<string>(\"ConstantTxt\");\r\n  const [ballPosition, setBallPosition] = useState<number>(0.5);\r\n  const [currentSelection, setCurrentSelection] = useState('Constant'); //The initial state is empty\r\n  const [enableVol, setEnableVol] = useState<boolean>(false);\r\n  const [playLyricCount, setPlayLyricCount] = useState<number>(0);\r\n  const [gender, setGender] = useState<string>(\"none\");\r\n  const [genderName, setGenderName] = useState<string>(\"none\");\r\n  const [syllableCount, setSyllableCount] = useState<string>(\"none\");\r\n  const [baseFilenames, setBaseFilenames] = useState<string[]>([]);\r\n\r\n  const {\r\n    stairFilenames,\r\n    heteronymFilenames,\r\n  } = useTemString();\r\n  // tes A\r\n  const [a, setA] = useState(0);\r\n\r\n  const audioPlayer = useRef<ReactAudioPlayer>(null);\r\n  const [isListen, setIsListen] = useState<number>(1);\r\n  const [inputValue, setInputValue] = useState('');\r\n  const [threshold, setThreshold] = useState<number>(70);\r\n  const [displayText, setDisplayText] = useState('Input Txt');\r\n  const [audioSrcFromChild, setAudioSrcFromChild] = useState<string>('');\r\n  const [fileContent, setFileContent] = useState<string[]>([]);\r\n  const [showNextPre, setShowNextPre] = useState<boolean>(false);\r\n  const [showListen, setShowListen] = useState<boolean>(false);\r\n  const [enablePre, setEnablePre] = useState<boolean>(false);\r\n  const [enableNext, setEnableNext] = useState<boolean>(true);\r\n  const [selectedItem, setSelectedItem] = useState('Settings');\r\n\r\n\r\n  const parentRef = useRef<HTMLDivElement>(null);\r\n\r\n  const [tooltipVisible, setTooltipVisible] = useState(false);\r\n\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\r\n\r\n            <Space>\r\n              <p># Coordinate Display Mode</p>\r\n              <Radio.Group onChange={onChangeHz} defaultValue=\"notes\" buttonStyle=\"solid\">\r\n                <Radio.Button value=\"hz\"> Hz </Radio.Button>\r\n                <Radio.Button value=\"notes\">Notes</Radio.Button>\r\n              </Radio.Group>\r\n              <br />\r\n            </Space>\r\n\r\n            <div>\r\n              <p># Pitch Display Range</p>\r\n              <Slider\r\n                range\r\n                step={10}\r\n                min={50}\r\n                max={600}\r\n                onChange={onChangeRange}\r\n                // tooltipPlacement={bottom}\r\n                tooltip={{\r\n                  // placement: 'bottom',\r\n                  formatter: formatterHz,\r\n                  // open: tooltipVisible,\r\n                }}\r\n                // tooltip={{ formatter: formatterHz}}\r\n                marks={marksRange}\r\n                defaultValue={[100, 300]} />\r\n            </div>\r\n\r\n\r\n            {component !== \"Fixed\" && component !== \"Stair\" && (\r\n              <div>\r\n                <p># Pitch Indicator Horizontal Position</p>\r\n                <Slider\r\n                  step={0.1}\r\n                  min={0}\r\n                  max={1}\r\n                  onChange={onChangePosition}\r\n                  // tooltip={{ formatter: formatterPos }}\r\n                  tooltip={{\r\n                    // placement: 'bottom',\r\n                    formatter: formatterPos,\r\n                    // open: tooltipVisible,\r\n                  }}\r\n                  defaultValue={0.5}\r\n                  marks={marksBallPos}\r\n                />\r\n              </div>\r\n            )}\r\n\r\n            {component !== \"Fixed\" && component !== \"Stair\" && component !== \"Heteronym\" && (\r\n              <div>\r\n                <p># Pitch Indicator Horizontal Position</p>\r\n                <Slider\r\n                  step={0.1}\r\n                  min={0}\r\n                  max={1}\r\n                  onChange={onChangePosition}\r\n                  // tooltip={{ formatter: formatterPos }}\r\n                  tooltip={{\r\n                    // placement: 'bottom',\r\n                    formatter: formatterPos,\r\n                    // open: tooltipVisible,\r\n                  }}\r\n                  defaultValue={0.5}\r\n                  marks={marksBallPos}\r\n                />\r\n              </div>\r\n            )}\r\n\r\n            <div>\r\n              <p># Pitch Indicator Speed</p>\r\n              <Slider\r\n                step={0.05}\r\n                min={0}\r\n                max={1}\r\n                onChange={onChangeSpeed}\r\n                // tooltip={{ formatter: formatterPos }}\r\n                // tooltip={{\r\n                //   placement: 'bottom',\r\n                //   formatter: formatterPos,\r\n                //   open: tooltipVisible,\r\n                // }}\r\n                defaultValue={0.3}\r\n                tooltip={{ formatter: null }}\r\n              // marks={marksBall}\r\n              />\r\n            </div>\r\n\r\n            <div>\r\n              <Space>\r\n                <p># Auto-Start When Voice Detected</p>\r\n                <Switch defaultChecked={false} onChange={EnableVoluneMode} />\r\n              </Space>\r\n\r\n              {enableVol &&\r\n                <Slider\r\n                  step={1}\r\n                  min={50}\r\n                  max={90}\r\n                  onChange={onChangeThreshold}\r\n                  tooltip={{\r\n                    // placement: 'bottom',\r\n                    formatter: formatterdB,\r\n                    // open: tooltipVisible,\r\n\r\n                  }}\r\n                  defaultValue={70}\r\n                  marks={marksVol}\r\n                />\r\n              }\r\n            </div>\r\n\r\n            <br />\r\n            <Button onClick={onClose}>Close</Button>\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  const handleChangeInputDevice = (value: string) => {\r\n    console.log(`selected ${value}`);\r\n  };\r\n\r\n  const onClickMenu: MenuProps['onClick'] = (e) => {\r\n    setSelectedItem(e.key);\r\n  };\r\n  // const drawerRef = useRef(null);\r\n  const handleAfterOpenChange = (open: boolean) => {\r\n    if (open) {\r\n      setTooltipVisible(true);\r\n      scrollDrawerContent();\r\n    } else {\r\n      setTooltipVisible(false);\r\n    }\r\n  };\r\n  const scrollDrawerContent = () => {\r\n    const drawerElement = document.querySelector('.ant-drawer-body');\r\n    const scrollOffset = 13;\r\n\r\n    if (drawerElement) {\r\n      drawerElement.scrollTop = scrollOffset;\r\n    }\r\n  };\r\n\r\n  const handleTextInput = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\r\n    const content = e.target.value as string;\r\n    const separators = /[;,./\\n]/;\r\n    const splitContent = content.split(separators)\r\n      .map(s => s.trim())\r\n      .filter(Boolean);\r\n    console.log(splitContent);\r\n    setFileContent(splitContent);\r\n    setMaxLyricCount(splitContent.length - 1);\r\n    setPlayLyricCount(0);\r\n  }\r\n  const handleBeginTour = () => {\r\n    // Open the tour\r\n    setOpenTour(true);\r\n    window.scrollTo(0, 0);\r\n  };\r\n  useEffect(() => {\r\n    const queryParams = new URLSearchParams(location.search);\r\n    const init = queryParams.get('init');\r\n    if (init === 'true') {\r\n      handleBeginTour();\r\n    }\r\n  }, [location]);\r\n\r\n\r\n\r\n  const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n    setInputValue(e.target.value);\r\n  };\r\n  const props: UploadProps = {\r\n    name: 'file',\r\n    accept: '.txt, .pdf',\r\n    beforeUpload: (file) => {\r\n      if (file.type !== 'text/plain' && file.type !== 'application/pdf') {\r\n        message.error(`${file.name} is not a valid text/pdf file.`);\r\n        return false;\r\n      }\r\n      if (file.type === 'application/pdf') {\r\n        pdfToText(file)\r\n          .then((text: string) => {\r\n            const separators = /[;,./\\n]/;\r\n            const splitContent = text.split(separators)\r\n              .map((s: string) => s.trim())\r\n              .filter(Boolean);\r\n            console.log(splitContent);\r\n            setFileContent(splitContent);\r\n            setMaxLyricCount(splitContent.length - 1);\r\n            setPlayLyricCount(0);\r\n          })\r\n          .catch((error: any) => { // Explicitly specify the type of 'error' parameter as 'any'\r\n            message.error('Error reading PDF file:', error);\r\n          });\r\n        return false;\r\n      }\r\n      if (file.type === 'text/plain') {\r\n        const reader = new FileReader();\r\n        reader.onload = (e: ProgressEvent<FileReader>) => {\r\n          if (e.target?.result) {\r\n            const content = e.target.result as string;\r\n            // const separators = /[;,./]/;\r\n            const separators = /[;,./\\n]/;\r\n            const splitContent = content.split(separators)\r\n              .map(s => s.trim())\r\n              .filter(Boolean);\r\n            console.log(splitContent);\r\n            setFileContent(splitContent);\r\n            setMaxLyricCount(splitContent.length - 1);\r\n            setPlayLyricCount(0);\r\n          }\r\n        };\r\n\r\n        reader.readAsText(file);\r\n\r\n        return false;\r\n      }\r\n    },\r\n    onChange(info) {\r\n      if (info.file.status === 'done') {\r\n        message.success(`${info.file.name} file read successfully`);\r\n      } else if (info.file.status === 'error') {\r\n        message.error(`${info.file.name} file read failed.`);\r\n      }\r\n    },\r\n  };\r\n\r\n  const changeOnEnter = (e: any) => {\r\n    if (e.key === 'Enter' && !e.shiftKey) {\r\n      console.log(\"Enter Key Pressed!\");\r\n      handleTextInput(e);\r\n    }\r\n  }\r\n\r\n  const handleSubmit = () => {\r\n    setDisplayText(inputValue);\r\n  };\r\n\r\n  const handleAudioSrc = (newAudioSrc: string) => {\r\n    setAudioSrcFromChild(newAudioSrc);\r\n  };\r\n\r\n  const steps: TourProps['steps'] = [\r\n    {\r\n      title: 'Canvas Display',\r\n      description: 'Visualize your voice pitch and target pitch curve in real-time.',\r\n      placement: 'top',\r\n      target: () => ref1.current,\r\n    },\r\n    {\r\n      title: 'Function Buttons',\r\n      // description: 'Save your changes.',\r\n      cover: (\r\n        <ul style={{ textAlign: 'left' }}>\r\n          <li>Start/Stop: Begin or stop recording.</li>\r\n          <li>Retry: Clear display and restart.</li>\r\n          <li>Upload txt/pdf File (optional): Upload text or pdf for you (in .txt/.pdf format) to read while recording.</li>\r\n          <li>Previous Next (if text uploaded): Switch between lines of text.</li>\r\n        </ul>\r\n      ),\r\n      target: () => ref2.current,\r\n    },\r\n    {\r\n      title: 'Slider',\r\n      description: 'Use this slides to change the target pitch value that you want to aim for.',\r\n      target: () => parentRef.current as HTMLDivElement,\r\n    },\r\n    {\r\n      title: 'Options menu',\r\n      description: 'Switch between different exercises and adjust settings such as the pitch display range.',\r\n      target: () => ref3.current,\r\n    },\r\n\r\n  ];\r\n\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('genderName', genderName)\r\n  }\r\n  const handleStairAndConstantClick = (e: any) => {\r\n    setPlayLyricCount(0);\r\n    setCurrentSelection(e.target.innerText);\r\n    if (e.target.innerText === \"Constant\") {\r\n      setComponent(\"ConstantTxt\");\r\n    } else if (e.target.innerText === \"Stair\") {\r\n      setComponent(\"Stair\");\r\n    } else {\r\n      setComponent(e.target.innerText);\r\n    }\r\n\r\n    setSyllableCount(\"none\");\r\n  }\r\n  const renderTruncatedFilenames = (filenames: string[]) => {\r\n    return filenames.map((text, index) => {\r\n      const maxIndexToShow = playLyricCount + 2 >= filenames.length ? filenames.length - 1 : playLyricCount + 2;\r\n      const shouldShow = index >= playLyricCount && index <= maxIndexToShow;\r\n      const isNearEnd = filenames.length - playLyricCount <= 2;\r\n      const startIndex = isNearEnd ? filenames.length - 3 : playLyricCount;\r\n      const showCondition = index >= startIndex && index <= startIndex + 2;\r\n\r\n      return (\r\n        showCondition && (\r\n          <li key={index} className={playLyricCount === index ? 'highlighted' : ''}>{text}</li>\r\n        )\r\n      );\r\n    });\r\n  };\r\n\r\n  const handleMenuClick = (e: any) => {\r\n    setPlayLyricCount(0);\r\n    const [componentType, genderType, syllableCountType] = e.key.split('-');\r\n    if (componentType == \"Constant\") {\r\n      setCurrentSelection(\"Constant\");\r\n    } else if (componentType == \"ConstantTxt\") {\r\n      setCurrentSelection(\"Constant\");\r\n    } else if (componentType == \"Stair\") {\r\n      setCurrentSelection(\"Staircase\");\r\n    } else {\r\n      let tt = \"Syllables \" + syllableCountType\r\n      setCurrentSelection(tt);\r\n    }\r\n\r\n    setComponent(componentType);\r\n    setGender(genderType);\r\n    setSyllableCount(syllableCountType);\r\n\r\n    setCurrentSelection(e.key + \"syllable \" + genderName);\r\n  };\r\n\r\n  const playAudio = () => {\r\n    if (audioPlayer.current && audioPlayer.current.audioEl.current) {\r\n      audioPlayer.current.audioEl.current.play()\r\n        .then(() => {\r\n          setIsListen(isListen + 1);\r\n        })\r\n        .catch(error => {\r\n          console.error('Fail play audios: ', error);\r\n        });\r\n    }\r\n\r\n  };\r\n\r\n  const handlePlayLyricCountChange = (newCount: number) => {\r\n    setPlayLyricCount(newCount);\r\n  };\r\n\r\n  const itemsMale: MenuProps['items'] = [\r\n    {\r\n      key: 'male',\r\n      label: \"Male01\",\r\n      onClick: saveGender,\r\n    },\r\n  ];\r\n\r\n  const itemsFemale: MenuProps['items'] = [\r\n    {\r\n      key: 'Female-Fem01',\r\n      label: \"Fem01\",\r\n      onClick: saveGender,\r\n    },\r\n    {\r\n      key: 'Female-Fem02',\r\n      label: \"Fem02\",\r\n      onClick: saveGender,\r\n    },\r\n    {\r\n      key: 'Female-Fem03',\r\n      label: \"Fem03\",\r\n      onClick: saveGender,\r\n    },\r\n    {\r\n      key: 'Female-Fem04',\r\n      label: \"Fem04\",\r\n      onClick: saveGender,\r\n    },\r\n    {\r\n      key: 'Female-Fem05',\r\n      label: \"Fem05\",\r\n      onClick: saveGender,\r\n    },\r\n    {\r\n      key: 'Female-Fem06',\r\n      label: \"Fem06\",\r\n      onClick: saveGender,\r\n    },\r\n    {\r\n      key: 'Female-Fem07',\r\n      label: \"Fem07\",\r\n      onClick: saveGender,\r\n    },\r\n  ];\r\n\r\n  const itemsAvatar: MenuProps['items'] = [\r\n    {\r\n      key: '1',\r\n      label: 'Male',\r\n      children: [\r\n        ...itemsMale\r\n      ],\r\n    },\r\n    {\r\n      key: '2',\r\n      label: 'Female',\r\n      children: [\r\n        ...itemsFemale\r\n      ],\r\n    },\r\n  ];\r\n\r\n  /**\r\n * Defines the items for the syllable menu based on the gender.\r\n * If the gender is 'none', it only includes a single item prompting the user to select an avatar.\r\n * Otherwise, it includes multiple items representing the number of syllables, with corresponding click handlers.\r\n */\r\n  const itemsSyllable: MenuProps['items'] = gender === 'none' ? [\r\n    {\r\n      key: 'SelectAvatar',\r\n      label: 'Please select avatar',\r\n    },\r\n  ] : [\r\n    {\r\n      key: `Fixed-${gender}-2`,\r\n      label: \"2 syllables\",\r\n      onClick: handleMenuClick,\r\n    },\r\n    {\r\n      key: `Fixed-${gender}-3`,\r\n      label: \"3 syllables\",\r\n      onClick: handleMenuClick,\r\n    },\r\n    {\r\n      key: `Fixed-${gender}-4`,\r\n      label: \"4 syllables\",\r\n      onClick: handleMenuClick,\r\n    },\r\n    {\r\n      key: `Fixed-${gender}-5`,\r\n      label: \"5 syllables\",\r\n      onClick: handleMenuClick,\r\n    },\r\n  ];\r\n\r\n  const showDrawer = () => {\r\n    setOpen(true);\r\n  };\r\n\r\n\r\n  // const onChangeStair = (e: RadioChangeEvent) => {\r\n  //   console.log(e.target.value);\r\n  //   setTxtShow(e.target.value);\r\n  // };\r\n\r\n  const onChangeStairSwitch = (value: boolean) => {\r\n    setTxtShowSwitch(value ? 'hide' : 'show');\r\n    setTxtShow(value ? 'true' : 'false');\r\n  };\r\n\r\n  // useEffect(() => {\r\n  //   setTxtShow(txtShowSwitch? 'true' : 'false');\r\n  // },[txtShowSwitch]);\r\n\r\n  const ClearTxt = () => {\r\n    setFileContent([]);\r\n    setMaxLyricCount(1);\r\n    setInputValue(''); // Clear the input value as well\r\n  };\r\n  const onClose = () => {\r\n    setOpen(false);\r\n  };\r\n  useEffect(() => {\r\n    navigator.mediaDevices.getUserMedia({ audio: true, video: false })\r\n      .then(stream => {\r\n        const harkInstance = hark(stream, {});\r\n\r\n        harkInstance.on('volume_change', (volume, threshold) => {\r\n          // console.log('Volume:', volume, 'Threshold:', threshold);\r\n          setVolume(volume);\r\n        });\r\n\r\n        return () => harkInstance.stop();\r\n      })\r\n      .catch(error => {\r\n        console.error('Error accessing the microphone', error);\r\n      });\r\n  }, []);\r\n\r\n\r\n\r\n  useEffect(() => {\r\n    if (volume > threshold - 100 && enableVol) {\r\n      setIsPlaying(true);\r\n    }\r\n  }, [volume]);\r\n\r\n  const renderSelectedComponent = (): React.ReactNode => {\r\n\r\n    switch (component) {\r\n      // case 'Constant':\r\n      //   return <Constant ballPosition={ballPosition} isRetry={isRetry} setPlayingPause={setPlayingPause} setPlaying={setPlaying} COLORS={COLORS} showNotesPar={showNotesPar} size={size} config={config} isPlaying={isPlaying} />;\r\n      case 'ConstantTxt':\r\n        return <ConstantTxt ref={parentRef} initialRange={initialRange} divisor={divisor} ballPosition={ballPosition} isRetry={isRetry} setPlayingPause={setPlayingPause} COLORS={COLORS} showNotesPar={showNotesPar} size={size} config={config} isPlaying={isPlaying} />;\r\n      case 'Stair':\r\n        return <Stair setShowNotesPar={setShowNotesPar} setMaxLyricCount={setMaxLyricCount} initialRange={initialRange} divisor={divisor} txtShow={txtShow} playLyricCount={playLyricCount} setPlayingPause={setPlayingPause} isRetry={isRetry} COLORS={COLORS} showNotesPar={showNotesPar} size={size} config={config} isPlaying={isPlaying} />;\r\n      case 'Fixed':\r\n        return <Fixed setMaxLyricCount={setMaxLyricCount} setIsListen={setIsListen} isListen={isListen} initialRange={initialRange} divisor={divisor} setPlayingPause={setPlayingPause} isRetry={isRetry} onAudioSrcChange={handleAudioSrc} setBaseFilenames={setBaseFilenames} onPlayLyricCountChange={handlePlayLyricCountChange} syllableCount={syllableCount} gender={gender} genderName={genderName} COLORS={COLORS} showNotesPar={showNotesPar} playLyricCount={playLyricCount} size={size} config={config} isPlaying={isPlaying} />;\r\n      case 'Heteronym':\r\n        return <Heteronym setMaxLyricCount={setMaxLyricCount} initialRange={initialRange} divisor={divisor} txtShow={txtShow} playLyricCount={playLyricCount} setPlayingPause={setPlayingPause} isRetry={isRetry} setPlaying={setPlaying} COLORS={COLORS} showNotesPar={showNotesPar} size={size} config={config} isPlaying={isPlaying} heteronymFile={heteronymFilenames} />;\r\n      default:\r\n        return <span>Canvas: Picture</span>;\r\n    }\r\n  }\r\n\r\n  const renderSelectedComponentLyric = (): React.ReactNode => {\r\n    switch (component) {\r\n\r\n      case 'ConstantTxt':\r\n        return (\r\n          <div className='lyric'>\r\n\r\n            <Space size=\"middle\">\r\n              <Space.Compact>\r\n\r\n                <Tooltip title=\"Clear existing files and upload new ones\">\r\n                  <Button onClick={ClearTxt}>Clear text</Button>\r\n\r\n                </Tooltip>\r\n\r\n                <Upload maxCount={1} {...props}>\r\n                  <Button icon={<UploadOutlined />}>Upload Text/pdf File</Button>\r\n\r\n                </Upload>\r\n              </Space.Compact>\r\n            </Space>\r\n            <>\r\n              {fileContent.length === 0 && (\r\n                <TextArea rows={4} placeholder='Enter Text Entry (optional}' style={{ height: 120, resize: 'none' }} onKeyDown={changeOnEnter} />\r\n              )}\r\n            </>\r\n            <ul>\r\n              {fileContent.map((text, index) => {\r\n                const maxIndexToShow = playLyricCount + 2 >= fileContent.length ? fileContent.length - 1 : playLyricCount + 2;\r\n\r\n                const shouldShow = index >= playLyricCount && index <= maxIndexToShow;\r\n                const isNearEnd = fileContent.length - playLyricCount <= 2;\r\n                const startIndex = isNearEnd ? fileContent.length - 3 : playLyricCount;\r\n                const showCondition = index >= startIndex && index <= startIndex + 2;\r\n\r\n                return (\r\n                  showCondition && (\r\n                    <li key={index} className={playLyricCount === index ? 'highlighted' : ''}>{text}</li>\r\n                  )\r\n                );\r\n              })}\r\n            </ul>\r\n          </div>\r\n        )\r\n      case 'Stair':\r\n        return (\r\n          <div className='lyric'>\r\n\r\n            <Switch defaultChecked checkedChildren=\"show\" unCheckedChildren=\"hide\" onChange={onChangeStairSwitch} />\r\n\r\n            {/* <Radio.Group onChange={onChangeStair} defaultValue=\"off\">\r\n              <Radio.Button value=\"true\">Show</Radio.Button>\r\n              <Radio.Button value=\"false\">Hide</Radio.Button>\r\n            </Radio.Group> */}\r\n            {(() => {\r\n              if (txtShow === 'true') {\r\n                return (\r\n                  <ul>\r\n                    {renderTruncatedFilenames(stairFilenames)}\r\n                  </ul>\r\n                );\r\n              }\r\n              return null;\r\n            })()}\r\n\r\n          </div>\r\n        )\r\n      case 'Heteronym':\r\n        return (\r\n          <div className='lyric'>\r\n            <Switch defaultChecked checkedChildren=\"show\" unCheckedChildren=\"hide\" onChange={onChangeStairSwitch} />\r\n\r\n            {/* <Radio.Group onChange={onChangeStair} defaultValue=\"off\">\r\n              <Radio.Button value=\"true\">Show</Radio.Button>\r\n              <Radio.Button value=\"false\">Hide</Radio.Button>\r\n            </Radio.Group> */}\r\n            {(() => {\r\n              if (txtShow === 'true') {\r\n                return (\r\n                  <ul>\r\n                    {renderTruncatedFilenames(heteronymFilenames)}\r\n                  </ul>\r\n                );\r\n              }\r\n              return null;\r\n            })()}\r\n\r\n          </div>\r\n        )\r\n      case 'Fixed':\r\n        return (\r\n          <div className='lyric'>\r\n            <ul>\r\n              {renderTruncatedFilenames(baseFilenames)}\r\n            </ul>\r\n          </div>\r\n        )\r\n      default:\r\n        return <span>Canvas: Picture</span>;\r\n    }\r\n  }\r\n\r\n  const handleCancelModal = () => {\r\n    setIsModalOpen(false);\r\n  };\r\n  useEffect(() => {\r\n    if (component == \"ConstantTxt\" && fileContent.length === 0) {\r\n      setShowNextPre(false);\r\n      setShowListen(false);\r\n    } else if (component == \"ConstantTxt\" && fileContent.length != 0) {\r\n      setShowNextPre(true);\r\n      setShowListen(false);\r\n    }\r\n    else if (component == \"Fixed\") {\r\n      setShowNextPre(true);\r\n      setShowListen(true);\r\n    } else if (component == \"Stair\") {\r\n      setShowNextPre(true);\r\n      setShowListen(false);\r\n    } else if (component == \"Heteronym\") {\r\n      setShowNextPre(true);\r\n      setShowListen(false);\r\n    } else {\r\n      setShowNextPre(true);\r\n      setShowListen(false);\r\n    }\r\n  }\r\n    , [component, fileContent]);\r\n\r\n  const onChangeRange = (rangeValue: number[]) => {\r\n    console.log(rangeValue[1]);\r\n    setInitialRange([rangeValue[0], rangeValue[1]]);\r\n  }\r\n\r\n  const onChangePosition = (positionValue: number) => {\r\n    setBallPosition(positionValue);\r\n  }\r\n\r\n  const onChangeSpeed = (speedValue: number) => {\r\n    const mappedValue = Math.round((speedValue * 20) + 4);\r\n    setDivisor(mappedValue);\r\n  }\r\n\r\n  const onChangeHz = ({ target: { value } }: RadioChangeEvent) => {\r\n    console.log(value);\r\n    if (value === 'hz') {\r\n      setShowNotesPar(false);\r\n    } else {\r\n      setShowNotesPar(true);\r\n    }\r\n  }\r\n\r\n  const EnableVoluneMode = (e: boolean) => {\r\n    console.log(e);\r\n    if (e) {\r\n      setEnableVol(true);\r\n\r\n    } else {\r\n      setEnableVol(false);\r\n\r\n    }\r\n  }\r\n  // Pause function\r\n  const onChangePause = () => {\r\n    setIsPlaying(!isPlaying);\r\n  }\r\n  const onChangePrevious = () => {\r\n    const tem = playLyricCount;\r\n    if (tem <= 0) {\r\n      setPlayLyricCount(0);\r\n    } else {\r\n      setPlayLyricCount(tem - 1);\r\n    }\r\n  };\r\n\r\n  const onChangeNext = () => {\r\n    const tem = playLyricCount;\r\n    console.log(playLyricCount);\r\n    if (tem >= maxLyricCount) {\r\n      setPlayLyricCount(maxLyricCount);\r\n    } else {\r\n      setPlayLyricCount(tem + 1);\r\n    }\r\n  };\r\n\r\n  const onChangeThreshold = (e: number) => {\r\n    setThreshold(e);\r\n  };\r\n  const formatterdB = (value: number | undefined) => `${value} dB`;\r\n  const formatterHz = (value: number | undefined) => `${value} Hz`;\r\n  const formatterPos = (value: number | undefined) => `${value ? (value * 100).toFixed(0) : '0'}%`;\r\n  const formatterSpd = (value: number | undefined) => {\r\n    if (value === undefined) {\r\n      return '0';\r\n    }\r\n    const mappedValue = (value - 5) * (50 / 15);\r\n    return `${mappedValue.toFixed(0)}`;\r\n  };\r\n\r\n  return (\r\n    <Row>\r\n      <Col span={24}>\r\n        <Layout className=\"layout\">\r\n\r\n          <Content >\r\n\r\n            <Flex style={{ maxWidth: \"100vw\" }} align=\"center\" justify=\"center\" gap=\"middle\" vertical>\r\n              <div className=\"currentSelection blueFont\">\r\n                <p>{currentSelection} Exercise</p>\r\n              </div>\r\n              <div>\r\n                {renderSelectedComponent()}\r\n              </div>\r\n\r\n\r\n\r\n              <Flex vertical justify=\"center\" wrap=\"wrap\" gap=\"small\" ref={ref2} >\r\n                {renderSelectedComponentLyric()}\r\n\r\n                <Flex justify=\"center\" wrap=\"wrap\" gap=\"small\">\r\n\r\n                  <Tooltip title=\"Retry\">\r\n                    <Button onClick={handleRetry} shape=\"circle\" icon={<RedoOutlined />} />\r\n                  </Tooltip>\r\n                  <ReactAudioPlayer\r\n                    className=\"audio-player-hidden\"\r\n                    src={audioSrcFromChild}\r\n                    ref={audioPlayer}\r\n                  />\r\n                  {showListen &&\r\n                    <Tooltip title=\"Listen\">\r\n                      <Button disabled={component !== \"Fixed\"} shape=\"circle\" onClick={playAudio} icon={<CustomerServiceOutlined />} />\r\n                    </Tooltip>\r\n                  }\r\n\r\n                  {\r\n                    showNextPre &&\r\n                    <Tooltip title=\"Previous\">\r\n                      <Button shape=\"circle\" onClick={onChangePrevious} icon={<StepBackwardOutlined />} />\r\n                    </Tooltip>\r\n                  }\r\n                  <Tooltip title={isPlaying ? \"Pause\" : \"Play\"}>\r\n                    <Button onClick={onChangePause} shape=\"circle\" icon={isPlaying ? <PauseOutlined /> : <CaretRightOutlined />} />\r\n                  </Tooltip>\r\n                  {\r\n                    showNextPre &&\r\n                    <Tooltip title=\"Next\">\r\n                      <Button shape=\"circle\" onClick={onChangeNext} icon={<StepForwardOutlined />} />\r\n                    </Tooltip>\r\n                  }\r\n\r\n                </Flex>\r\n              </Flex>\r\n\r\n              <Tooltip title=\"Setting\">\r\n                <FloatButton style={{\r\n                  width: 50,\r\n                  height: 50,\r\n                  right: 15,\r\n                  display: 'flex',\r\n                  alignItems: 'center',\r\n                  justifyContent: 'center'\r\n                }} onClick={showDrawer} ref={ref3} icon={<SettingOutlined />} />\r\n              </Tooltip>\r\n\r\n              <Tooltip title=\"tour\">\r\n                <FloatButton style={{\r\n                  width: 50,\r\n                  height: 50,\r\n                  right: 90,\r\n                  display: 'flex',\r\n                  alignItems: 'center',\r\n                  justifyContent: 'center'\r\n                }} onClick={handleBeginTour} ref={ref3} icon={<QuestionOutlined />} />\r\n              </Tooltip>\r\n\r\n\r\n              <Image\r\n                preview={false}\r\n                src={divide_1}\r\n                style={{ width: '100%' }}\r\n              />\r\n\r\n              <Typography\r\n\r\n                style={{\r\n                  width: \"100%\", paddingLeft: \"30px\", paddingRight: \"40px\",\r\n                }}>\r\n                <Typography.Title id=\"part-1\" level={2} style={{ margin: 0 }}>\r\n                  How to use\r\n                </Typography.Title>\r\n                <Collapse defaultActiveKey={['2']} ghost items={items_3} />\r\n              </Typography>\r\n\r\n\r\n            </Flex>\r\n\r\n            <Modal\r\n              title=\"Settings\"\r\n              open={isModalOpen}\r\n              className='AvatarModal'\r\n              onCancel={handleCancelModal}\r\n              footer={null}\r\n            >\r\n              <div style={{ textAlign: 'center' }}>\r\n                <Avatar size={64} icon={<UserOutlined />} />\r\n                <p>Jane Smith</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\r\n              </div>\r\n              {renderContent()}\r\n\r\n            </Modal>\r\n\r\n            <Drawer title=\"Options\" placement=\"right\" onClose={onClose} open={open} afterOpenChange={handleAfterOpenChange} width={430}>\r\n              <Flex vertical gap=\"middle\">\r\n                <Space>\r\n                  <p># Model Selection: </p>\r\n                  <Dropdown menu={{ items: itemsAvatar, selectable: true }} placement=\"bottom\">\r\n                    <Button>{genderName === \"none\" ? \"Model Voice\" : gender === \"Female\" ? genderName : 'Male01'}</Button>\r\n                  </Dropdown>\r\n                </Space>\r\n\r\n                <Space>\r\n                  <p># Exercise Selection: </p>\r\n                </Space>\r\n                <Space>\r\n\r\n                  <Button onClick={handleStairAndConstantClick}>Constant</Button>\r\n\r\n                  <Button onClick={handleStairAndConstantClick}>Stair</Button>\r\n\r\n                  <Button onClick={handleStairAndConstantClick}> Heteronym </Button>\r\n\r\n                  <Dropdown menu={{ items: itemsSyllable }} placement=\"bottom\">\r\n                    <Button>{syllableCount === \"none\" ? 'Human Curve' : syllableCount + ' syllable'}</Button>\r\n                  </Dropdown>\r\n\r\n                </Space>\r\n\r\n                <Space>\r\n                  <p># Coordinate Display Mode</p>\r\n                  <Radio.Group onChange={onChangeHz} value={showNotesPar ? 'notes' : 'hz'} defaultValue=\"notes\" buttonStyle=\"solid\">\r\n                    <Radio.Button value=\"hz\"> Hz </Radio.Button>\r\n                    <Radio.Button value=\"notes\">Notes</Radio.Button>\r\n                  </Radio.Group>\r\n                  <br />\r\n                </Space>\r\n\r\n                <div>\r\n                  <p># Pitch Display Range</p>\r\n                  <Slider\r\n                    range\r\n                    step={10}\r\n                    min={50}\r\n                    max={600}\r\n                    onChange={onChangeRange}\r\n                    tooltip={{\r\n                      formatter: formatterHz,\r\n                    }}\r\n                    marks={marksRange}\r\n                    defaultValue={[100, 300]} />\r\n                </div>\r\n\r\n                {component !== \"Fixed\" && component !== \"Stair\" && component !== \"Heteronym\" && (\r\n                  <div>\r\n                    <p># Pitch Indicator Horizontal Position</p>\r\n                    <Slider\r\n                      step={0.1}\r\n                      min={0}\r\n                      max={1}\r\n                      onChange={onChangePosition}\r\n                      tooltip={{\r\n                        formatter: formatterPos,\r\n                      }}\r\n                      defaultValue={0.5}\r\n                      marks={marksBallPos}\r\n                    />\r\n                  </div>\r\n                )}\r\n\r\n                <div>\r\n                  <p># Pitch Indicator Speed</p>\r\n                  <Slider\r\n                    step={0.05}\r\n                    min={0}\r\n                    max={1}\r\n                    onChange={onChangeSpeed}\r\n                    defaultValue={0.3}\r\n                    tooltip={{ formatter: null }}\r\n                  />\r\n                </div>\r\n\r\n                <div>\r\n                  <Space>\r\n                    <p># Auto-Start When Voice Detected</p>\r\n                    <Switch defaultChecked={false} onChange={EnableVoluneMode} />\r\n                  </Space>\r\n\r\n                  {enableVol &&\r\n                    <Slider\r\n                      step={1}\r\n                      min={50}\r\n                      max={90}\r\n                      onChange={onChangeThreshold}\r\n                      tooltip={{\r\n                        formatter: formatterdB,\r\n                      }}\r\n                      defaultValue={70}\r\n                      marks={marksVol}\r\n                    />\r\n                  }\r\n                </div>\r\n\r\n                <br />\r\n                <Button onClick={onClose}>Close</Button>\r\n              </Flex>\r\n            </Drawer>\r\n            <Tour open={openTour} onClose={() => setOpenTour(false)} steps={steps} />\r\n          </Content>\r\n        </Layout>\r\n\r\n      </Col>\r\n    </Row>\r\n\r\n    // </div>\r\n  );\r\n}\r\n\r\nexport default Sample;\r\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}