{"ast":null,"code":"var _jsxFileName = \"/var/www/gavt/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, ConfigProvider } from 'antd';\nimport { CaretRightOutlined, LoadingOutlined } from '@ant-design/icons';\nimport { Slider, Input } from 'antd';\nimport { Layout, Dropdown } 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 ConstantTxt from '../Canvas/ConstantTxt';\nimport Fixed from '../Canvas/Fixed';\nimport Stair from '../Canvas/Stair';\nimport Heteronym from '../Canvas/Heteronym';\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 { QuestionOutlined } from '@ant-design/icons';\nimport { useTemString } from '../hooks/useTemString';\n// @ts-ignore\nimport pdfToText from 'react-pdftotext';\nimport AudioPlayer from 'react-h5-audio-player';\nimport { createFromIconfontCN } from '@ant-design/icons';\nimport { useOptionsHooks } from '../hooks/useOptionsHooks';\nimport { Fragment as _Fragment } from \"react/jsx-dev-runtime\";\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst PlayIcon = createFromIconfontCN({\n  scriptUrl: '//at.alicdn.com/t/c/font_4566050_zpduwnlv2t.js'\n});\n_c = PlayIcon;\nconst {\n  TextArea\n} = Input;\nconst {\n  Title,\n  Paragraph,\n  Text,\n  Link\n} = Typography;\nconst items = [{\n  key: '1',\n  label: /*#__PURE__*/_jsxDEV(_Fragment, {\n    children: \"The Rainbow Passage\"\n  }, void 0, false)\n}, {\n  key: '2',\n  label: /*#__PURE__*/_jsxDEV(_Fragment, {\n    children: \"Grandfather\"\n  }, void 0, false)\n}, {\n  key: '3',\n  label: /*#__PURE__*/_jsxDEV(_Fragment, {\n    children: \"Harvard Phonetically Balanced Sentences\"\n  }, void 0, false)\n}];\nconst {\n  Content\n} = Layout;\nconst marksRange = {\n  50: '50Hz',\n  600: '600Hz'\n};\nconst marksBallPos = {\n  0: '0%',\n  1: '100%'\n};\nconst marksVol = {\n  50: '50dB',\n  90: '90dB'\n};\nconst Sample = ({\n  genderName,\n  gender,\n  setGender,\n  audioKey,\n  audioSrc,\n  fetchAudioData,\n  handleIconClick,\n  itemsAvatar\n}) => {\n  _s();\n  const {\n    audioPlayerNew\n  } = useOptionsHooks();\n\n  // strings\n  const {\n    items_3,\n    stairFilenames,\n    heteronymFilenames,\n    shortDescription,\n    Text_1_Rainbow,\n    Text_2,\n    Text_3\n  } = useTemString();\n\n  // Canvas values\n  const size = [400, 1400];\n  const [initialRange, setInitialRange] = useState([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, setCOLORS] = useState({\n    realVoiceColor: '#d679de',\n    targetVoiceColor: '#4669C8',\n    closeVoiceColor: '#15dbcc'\n  });\n  const [COLORSMode, setCOLORSMode] = useState(\"de\");\n\n  // open/close \n  const [openSetting, setOpenSetting] = useState(false);\n  const [txtShow, setTxtShow] = useState(\"true\");\n  const [txtShowSwitch, setTxtShowSwitch] = useState('show');\n  const [openTour, setOpenTour] = useState(false);\n  const [isPlaying, setIsPlaying] = useState(true);\n  const [isRetry, setIsRetry] = useState(false);\n  const [enableVol, setEnableVol] = useState(false);\n  const [isOpenTextbox, setIsOpenTextbox] = useState(false);\n  const [showNextPre, setShowNextPre] = useState(false);\n  const [showListen, setShowListen] = useState(false);\n\n  // special vatiables\n  const location = useLocation();\n  const ref12 = useRef(null);\n  const ref1 = useRef(null);\n  const ref2 = useRef(null);\n  const ref3 = useRef(null);\n  const parentRef = useRef(null);\n\n  // initial Value\n  const [volume, setVolume] = useState(0);\n  const [threshold, setThreshold] = useState(70);\n  const [maxLyricCount, setMaxLyricCount] = useState(2);\n  const [playLyricCount, setPlayLyricCount] = useState(0);\n  const [divisor, setDivisor] = useState(10);\n  const [ballPosition, setBallPosition] = useState(0.5);\n  const [pitchDiff, setPitchDiff] = useState([0]);\n  const [avgPitchDiff, setAvgPitchDiff] = useState();\n  // Hz/Notes\n  const [showNotesPar, setShowNotesPar] = useState(false);\n\n  // selected choice\n  const [component, setComponent] = useState(\"ConstantTxt\");\n  const [currentSelection, setCurrentSelection] = useState('Constant');\n  const [syllableCount, setSyllableCount] = useState(\"none\");\n  const [baseFilenames, setBaseFilenames] = useState([]);\n  const [fileContent, setFileContent] = useState([]);\n  const [selectedNum, setSelectedNum] = useState([\"2\"]);\n  const [selectedDefaultText, setSelectedDefaultText] = useState(\"1\");\n\n  // auido\n  const audioPlayer = useRef(null);\n  // const audioPlayerNew = useRef<AudioPlayer>(null);\n  const [audioSrcFromChild, setAudioSrcFromChild] = useState('');\n  const [isListen, setIsListen] = useState(1);\n\n  // \n  const setPlaying = () => {\n    setIsPlaying(true);\n  };\n  const setPlayingPause = () => {\n    setIsPlaying(false);\n  };\n  const handleBeginTour = () => {\n    setOpenTour(true);\n    window.scrollTo(0, 0);\n  };\n  const onClose = () => {\n    setOpenSetting(false);\n  };\n  const ClearTxt = () => {\n    setFileContent([]);\n    setMaxLyricCount(1);\n  };\n  const handlePitchDiffChange = value => {\n    setPitchDiff(value);\n  };\n\n  // Constant Page upload and input\n  const onClick = ({\n    key\n  }) => {\n    message.info(`Click on item ${key}`);\n    setSelectedDefaultText(key);\n  };\n  useEffect(() => {\n    console.log(Text_1_Rainbow[1]);\n    handleTextInputString(Text_1_Rainbow[Number(selectedDefaultText) - 1]);\n  }, [selectedDefaultText]);\n  const handleTextInputString = e => {\n    const content = e;\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 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 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\n  // audio\n  const handleAudioSrc = newAudioSrc => {\n    setAudioSrcFromChild(newAudioSrc);\n  };\n  const playAudio = () => {\n    // if (audioPlayer.current && audioPlayer.current.audioEl.current) {\n    // audioPlayer.current.audioEl.current.play()\n    if (audioPlayerNew.current && audioPlayerNew.current.audio.current) {\n      audioPlayerNew.current.audio.current.play().then(() => {\n        setIsListen(isListen + 1);\n      }).catch(error => {\n        console.error('Fail play audios: ', error);\n      });\n    }\n  };\n\n  // options audio\n  useEffect(() => {\n    fetchAudioData();\n  }, [genderName]);\n\n  // Volume\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        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\n  // Tour\n  const steps = [{\n    title: 'Pitch Exercises',\n    description: 'Switch between different exercises',\n    placement: 'top',\n    target: () => ref12.current\n  }, {\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    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: 384,\n        columnNumber: 11\n      }, this), /*#__PURE__*/_jsxDEV(\"li\", {\n        children: \"Retry: Clear display and restart.\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 385,\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: 386,\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: 387,\n        columnNumber: 11\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 383,\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: 'Adjust settings such as the pitch display range.',\n    target: () => ref3.current\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\n  // Options of different Exercise \n  const handleStairAndConstantClick = e => {\n    setPlayLyricCount(0);\n    setCurrentSelection(e.target.innerText);\n    console.log(e.target.innerText);\n    if (e.target.innerText === \"Constant\" || e.target.innerText === \"CONSTANT\") {\n      setComponent(\"ConstantTxt\");\n      setSelectedNum([\"2\"]);\n    } else if (e.target.innerText === \"Stair\" || e.target.innerText === \"STAIR\") {\n      setComponent(\"Stair\");\n      setSelectedNum([\"3\"]);\n    } else {\n      setComponent(\"Heteronym\");\n      setSelectedNum([\"4\"]);\n    }\n    setSyllableCount(\"none\");\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      setSelectedNum([\"5\"]);\n    }\n    setComponent(componentType);\n    setGender(genderType);\n    setSyllableCount(syllableCountType);\n    setCurrentSelection(e.key + \"syllable \" + genderName);\n  };\n  const renderTruncatedFilenames = filenames => {\n    return filenames.map((text, index) => {\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: 461,\n        columnNumber: 11\n      }, this);\n    });\n  };\n  const handlePlayLyricCountChange = newCount => {\n    setPlayLyricCount(newCount);\n  };\n\n  /**\n  * Defines the items for the syllable menu based on the gender.\n  * If the gender is 'none', it only includes a single item prompting the user to select an avatar.\n  * Otherwise, it includes multiple items representing the number of syllables, with corresponding click handlers.\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 onChangeStairSwitch = value => {\n    setTxtShowSwitch(value ? 'hide' : 'show');\n    setTxtShow(value ? 'true' : 'false');\n  };\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          handlePitchDiffChange: handlePitchDiffChange,\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: 512,\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: 514,\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: 516,\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: 518,\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: 520,\n          columnNumber: 16\n        }, this);\n    }\n  };\n  const MainButtons = () => {\n    return /*#__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: () => setIsRetry(!isRetry),\n          shape: \"circle\",\n          icon: /*#__PURE__*/_jsxDEV(RedoOutlined, {}, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 528,\n            columnNumber: 77\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 528,\n          columnNumber: 11\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 527,\n        columnNumber: 9\n      }, this), /*#__PURE__*/_jsxDEV(AudioPlayer, {\n        autoPlayAfterSrcChange: false,\n        src: audioSrcFromChild,\n        ref: audioPlayerNew,\n        style: {\n          display: 'none'\n        }\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 536,\n        columnNumber: 9\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: 544,\n            columnNumber: 95\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 544,\n          columnNumber: 13\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 543,\n        columnNumber: 11\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: 551,\n            columnNumber: 69\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 551,\n          columnNumber: 13\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 550,\n        columnNumber: 11\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: 555,\n            columnNumber: 76\n          }, this) : /*#__PURE__*/_jsxDEV(CaretRightOutlined, {}, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 555,\n            columnNumber: 96\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 555,\n          columnNumber: 11\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 554,\n        columnNumber: 9\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: 560,\n            columnNumber: 65\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 560,\n          columnNumber: 13\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 559,\n        columnNumber: 11\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 525,\n      columnNumber: 7\n    }, this);\n  };\n  useEffect(() => {\n    const avgDiff = pitchDiff.reduce((acc, current) => {\n      if (!isNaN(current)) {\n        acc.sum += current;\n        acc.count++;\n      }\n      return acc;\n    }, {\n      sum: 0,\n      count: 0\n    });\n    const formattedAvgPitchDiff = (avgDiff.count > 0 ? avgDiff.sum / avgDiff.count : 0).toFixed(2);\n    setAvgPitchDiff(parseFloat(formattedAvgPitchDiff));\n  }, [pitchDiff]);\n  const RecordingBar = () => {\n    return /*#__PURE__*/_jsxDEV(Flex, {\n      justify: \"center\",\n      wrap: \"wrap\",\n      gap: \"small\",\n      children: isPlaying ? /*#__PURE__*/_jsxDEV(_Fragment, {\n        children: [/*#__PURE__*/_jsxDEV(LoadingOutlined, {}, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 585,\n          columnNumber: 19\n        }, this), \"Recording...\"]\n      }, void 0, true) : /*#__PURE__*/_jsxDEV(_Fragment, {\n        children: [\"Recording stopped. Your average pitch difference is \", avgPitchDiff, \".\"]\n      }, void 0, true)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 581,\n      columnNumber: 7\n    }, this);\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: [RecordingBar(), /*#__PURE__*/_jsxDEV(Space.Compact, {}, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 609,\n              columnNumber: 15\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 607,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(\"br\", {}, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 613,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(Space, {\n            size: \"middle\",\n            children: [MainButtons(), /*#__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: 619,\n                  columnNumber: 19\n                }, this)\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 618,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(Tooltip, {\n                title: \"Default text example\",\n                children: /*#__PURE__*/_jsxDEV(Dropdown, {\n                  menu: {\n                    items,\n                    onClick\n                  },\n                  placement: \"bottomLeft\",\n                  children: /*#__PURE__*/_jsxDEV(Button, {\n                    children: \"Default Texts\"\n                  }, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 623,\n                    columnNumber: 19\n                  }, this)\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 622,\n                  columnNumber: 17\n                }, this)\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 621,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(Tooltip, {\n                title: \"Upload PDF or .txt file to read during practice\",\n                children: /*#__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: 629,\n                      columnNumber: 35\n                    }, this),\n                    children: \"Upload File\"\n                  }, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 629,\n                    columnNumber: 21\n                  }, this)\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 628,\n                  columnNumber: 19\n                }, this)\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 627,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(Tooltip, {\n                title: \"Type/Paste text to read during parctice\",\n                children: /*#__PURE__*/_jsxDEV(Button, {\n                  onClick: () => setIsOpenTextbox(!isOpenTextbox),\n                  children: !isOpenTextbox ? \"Enter Text\" : \"Close Textbox\"\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 633,\n                  columnNumber: 19\n                }, this)\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 632,\n                columnNumber: 17\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 616,\n              columnNumber: 15\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 614,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(_Fragment, {\n            children: isOpenTextbox && fileContent.length === 0 && /*#__PURE__*/_jsxDEV(TextArea, {\n              rows: 4,\n              placeholder: \"Enter or paste Text Entry\",\n              style: {\n                height: 40,\n                resize: 'none'\n              },\n              onKeyDown: changeOnEnter\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 642,\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: 659,\n                columnNumber: 21\n              }, this);\n            })\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 648,\n            columnNumber: 13\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 606,\n          columnNumber: 11\n        }, this);\n      case 'Stair':\n        return /*#__PURE__*/_jsxDEV(\"div\", {\n          className: \"lyric\",\n          children: [/*#__PURE__*/_jsxDEV(Flex, {\n            align: \"center\",\n            gap: \"middle\",\n            children: [MainButtons(), /*#__PURE__*/_jsxDEV(Tooltip, {\n              title: \"Show/Hide 5-syllable phrases to read\",\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: 673,\n                columnNumber: 17\n              }, this)\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 672,\n              columnNumber: 15\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 669,\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: 680,\n                columnNumber: 19\n              }, this);\n            }\n            return null;\n          })()]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 668,\n          columnNumber: 11\n        }, this);\n      case 'Heteronym':\n        return /*#__PURE__*/_jsxDEV(\"div\", {\n          className: \"lyric\",\n          children: [MainButtons(), (() => {\n            if (txtShow === 'true') {\n              return /*#__PURE__*/_jsxDEV(\"ul\", {\n                children: renderTruncatedFilenames(heteronymFilenames)\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 697,\n                columnNumber: 19\n              }, this);\n            }\n            return null;\n          })()]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 692,\n          columnNumber: 11\n        }, this);\n      case 'Fixed':\n        return /*#__PURE__*/_jsxDEV(\"div\", {\n          className: \"lyric\",\n          children: [MainButtons(), /*#__PURE__*/_jsxDEV(\"ul\", {\n            children: renderTruncatedFilenames(baseFilenames)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 711,\n            columnNumber: 13\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 709,\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: 717,\n          columnNumber: 16\n        }, this);\n    }\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\n  // Options Changing functions\n  const onChangeRange = rangeValue => {\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 onChangeColor = ({\n    target: {\n      value\n    }\n  }) => {\n    console.log(value);\n    if (value === 'de') {\n      setCOLORSMode(value);\n      setCOLORS({\n        realVoiceColor: '#d679de',\n        targetVoiceColor: '#4669C8',\n        closeVoiceColor: '#15dbcc'\n      });\n    } else {\n      setCOLORSMode(value);\n      setCOLORS({\n        realVoiceColor: '#ff0000',\n        targetVoiceColor: '#3399ff',\n        closeVoiceColor: 'yellow'\n      });\n    }\n  };\n  const EnableVoluneMode = e => {\n    console.log(e);\n    if (e) {\n      setEnableVol(true);\n    } else {\n      setEnableVol(false);\n    }\n  };\n\n  // Button functions\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    if (tem >= maxLyricCount) {\n      setPlayLyricCount(maxLyricCount);\n    } else {\n      setPlayLyricCount(tem + 1);\n    }\n  };\n\n  // tooltips\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\n  // onChangeCollapse\n  const onChangeCollapse = e => {\n    console.log(e);\n    if (Array.isArray(e)) {\n      setSelectedNum(e);\n    } else {\n      setSelectedNum([e]);\n    }\n  };\n  return /*#__PURE__*/_jsxDEV(Row, {\n    children: /*#__PURE__*/_jsxDEV(Col, {\n      span: 24,\n      children: /*#__PURE__*/_jsxDEV(Layout, {\n        className: \"layoutSample\",\n        children: /*#__PURE__*/_jsxDEV(Content, {\n          children: [/*#__PURE__*/_jsxDEV(Flex, {\n            align: \"center\",\n            justify: \"center\",\n            gap: \"middle\",\n            vertical: true,\n            children: [/*#__PURE__*/_jsxDEV(\"div\", {\n              style: {\n                marginTop: \"2vw\"\n              },\n              children: /*#__PURE__*/_jsxDEV(ConfigProvider, {\n                theme: {\n                  token: {\n                    colorPrimary: \"rgb(132, 118, 171)\",\n                    borderRadius: 0\n                  }\n                },\n                children: /*#__PURE__*/_jsxDEV(Space, {\n                  size: \"middle\",\n                  ref: ref12,\n                  children: /*#__PURE__*/_jsxDEV(Space.Compact, {\n                    children: [/*#__PURE__*/_jsxDEV(Tooltip, {\n                      title: \"Switch to the Constant exercise\",\n                      children: /*#__PURE__*/_jsxDEV(Button, {\n                        type: component === \"ConstantTxt\" ? \"primary\" : \"default\",\n                        onClick: handleStairAndConstantClick,\n                        children: \"CONSTANT\"\n                      }, void 0, false, {\n                        fileName: _jsxFileName,\n                        lineNumber: 853,\n                        columnNumber: 25\n                      }, this)\n                    }, void 0, false, {\n                      fileName: _jsxFileName,\n                      lineNumber: 852,\n                      columnNumber: 23\n                    }, this), /*#__PURE__*/_jsxDEV(Tooltip, {\n                      title: \"Switch to the Stair exercise\",\n                      children: /*#__PURE__*/_jsxDEV(Button, {\n                        type: component === \"Stair\" ? \"primary\" : \"default\",\n                        onClick: handleStairAndConstantClick,\n                        children: \"STAIR\"\n                      }, void 0, false, {\n                        fileName: _jsxFileName,\n                        lineNumber: 859,\n                        columnNumber: 25\n                      }, this)\n                    }, void 0, false, {\n                      fileName: _jsxFileName,\n                      lineNumber: 858,\n                      columnNumber: 23\n                    }, this), /*#__PURE__*/_jsxDEV(Tooltip, {\n                      title: \"Switch to the Heteronyms exercise\",\n                      children: /*#__PURE__*/_jsxDEV(Button, {\n                        type: component === \"Heteronym\" ? \"primary\" : \"default\",\n                        onClick: handleStairAndConstantClick,\n                        children: \"HETERONYMS\"\n                      }, void 0, false, {\n                        fileName: _jsxFileName,\n                        lineNumber: 865,\n                        columnNumber: 25\n                      }, this)\n                    }, void 0, false, {\n                      fileName: _jsxFileName,\n                      lineNumber: 864,\n                      columnNumber: 23\n                    }, this), /*#__PURE__*/_jsxDEV(Tooltip, {\n                      title: \"Switch to the Human Curve exercise\",\n                      children: /*#__PURE__*/_jsxDEV(Dropdown, {\n                        menu: {\n                          items: itemsSyllable\n                        },\n                        placement: \"bottom\",\n                        children: /*#__PURE__*/_jsxDEV(Button, {\n                          type: component === \"Fixed\" ? \"primary\" : \"default\",\n                          children: syllableCount === \"none\" ? 'HUMAN CURVE' : syllableCount + ' SYLLABLE'\n                        }, void 0, false, {\n                          fileName: _jsxFileName,\n                          lineNumber: 871,\n                          columnNumber: 27\n                        }, this)\n                      }, void 0, false, {\n                        fileName: _jsxFileName,\n                        lineNumber: 870,\n                        columnNumber: 25\n                      }, this)\n                    }, void 0, false, {\n                      fileName: _jsxFileName,\n                      lineNumber: 869,\n                      columnNumber: 23\n                    }, this)]\n                  }, void 0, true, {\n                    fileName: _jsxFileName,\n                    lineNumber: 850,\n                    columnNumber: 21\n                  }, this)\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 849,\n                  columnNumber: 19\n                }, this)\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 840,\n                columnNumber: 17\n              }, this)\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 839,\n              columnNumber: 15\n            }, this), shortDescription(component), /*#__PURE__*/_jsxDEV(\"div\", {\n              style: {\n                width: \"100%\"\n              },\n              children: renderSelectedComponent()\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 890,\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()\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 895,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(FloatButton, {\n              style: {\n                width: 60,\n                height: 60,\n                right: 15,\n                bottom: 30,\n                display: 'flex',\n                alignItems: 'center',\n                justifyContent: 'center'\n              },\n              onClick: () => setOpenSetting(true),\n              ref: ref3,\n              shape: \"square\",\n              description: \"SETTINGS\",\n              icon: /*#__PURE__*/_jsxDEV(SettingOutlined, {}, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 912,\n                columnNumber: 23\n              }, this)\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 899,\n              columnNumber: 15\n            }, this), /*#__PURE__*/_jsxDEV(FloatButton, {\n              style: {\n                width: 60,\n                height: 60,\n                right: 100,\n                bottom: 30,\n                display: 'flex',\n                alignItems: 'center',\n                justifyContent: 'center'\n              },\n              shape: \"square\",\n              description: \"TOUR\",\n              onClick: handleBeginTour,\n              icon: /*#__PURE__*/_jsxDEV(QuestionOutlined, {}, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 927,\n                columnNumber: 23\n              }, this)\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 914,\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: 929,\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: 938,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(Collapse, {\n                activeKey: selectedNum\n                // accordion\n                ,\n                onChange: onChangeCollapse\n                // defaultActiveKey={selectedNum} \n                ,\n                ghost: true,\n                items: items_3\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 941,\n                columnNumber: 17\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 934,\n              columnNumber: 15\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 837,\n            columnNumber: 13\n          }, this), /*#__PURE__*/_jsxDEV(Drawer, {\n            title: \"Options\",\n            placement: \"right\",\n            onClose: () => setOpenSetting(false),\n            open: openSetting,\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: 956,\n                  columnNumber: 19\n                }, this), /*#__PURE__*/_jsxDEV(Dropdown.Button, {\n                  menu: {\n                    items: itemsAvatar\n                  },\n                  placement: \"bottom\",\n                  trigger: [\"click\"],\n                  overlayClassName: \"custom-dropdown\",\n                  buttonsRender: ([leftButton, rightButton]) => [/*#__PURE__*/_jsxDEV(Tooltip, {\n                    children: /*#__PURE__*/_jsxDEV(Button, {\n                      style: {\n                        display: 'flex',\n                        alignItems: 'center'\n                      },\n                      onClick: handleIconClick,\n                      icon: /*#__PURE__*/_jsxDEV(PlayIcon, {\n                        style: {\n                          fontSize: '1.7em'\n                        },\n                        type: \"icon-audioPlay\"\n                      }, void 0, false, {\n                        fileName: _jsxFileName,\n                        lineNumber: 972,\n                        columnNumber: 29\n                      }, this),\n                      children: genderName === \"none\" ? \"Model Voice\" : gender === \"Female\" ? genderName : 'Male01'\n                    }, void 0, false, {\n                      fileName: _jsxFileName,\n                      lineNumber: 965,\n                      columnNumber: 25\n                    }, this)\n                  }, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 964,\n                    columnNumber: 23\n                  }, this), /*#__PURE__*/React.cloneElement(rightButton, {\n                    loading: false\n                  })]\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 958,\n                  columnNumber: 19\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 955,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(AudioPlayer, {\n                autoPlayAfterSrcChange: false,\n                src: audioSrc,\n                ref: audioPlayerNew,\n                style: {\n                  display: 'none'\n                },\n                onEnded: () => console.log('audio ended'),\n                onError: e => console.log('audio error', e)\n              }, audioKey, false, {\n                fileName: _jsxFileName,\n                lineNumber: 997,\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: 1007,\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: 1009,\n                    columnNumber: 21\n                  }, this), /*#__PURE__*/_jsxDEV(Radio.Button, {\n                    value: \"notes\",\n                    children: \"Notes\"\n                  }, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 1010,\n                    columnNumber: 21\n                  }, this)]\n                }, void 0, true, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1008,\n                  columnNumber: 19\n                }, this), /*#__PURE__*/_jsxDEV(\"br\", {}, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1012,\n                  columnNumber: 19\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 1006,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(Space, {\n                children: [/*#__PURE__*/_jsxDEV(\"p\", {\n                  children: \"# Pitch Display Color Scheme \"\n                }, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1016,\n                  columnNumber: 19\n                }, this), /*#__PURE__*/_jsxDEV(Radio.Group, {\n                  onChange: onChangeColor,\n                  value: COLORSMode === 'co' ? 'co' : 'de',\n                  defaultValue: \"default\",\n                  buttonStyle: \"solid\",\n                  children: [/*#__PURE__*/_jsxDEV(Radio.Button, {\n                    value: \"de\",\n                    children: \"TruVox \"\n                  }, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 1018,\n                    columnNumber: 21\n                  }, this), /*#__PURE__*/_jsxDEV(Radio.Button, {\n                    value: \"co\",\n                    children: \"Colorblind\"\n                  }, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 1019,\n                    columnNumber: 21\n                  }, this)]\n                }, void 0, true, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1017,\n                  columnNumber: 19\n                }, this), /*#__PURE__*/_jsxDEV(\"br\", {}, void 0, false, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1021,\n                  columnNumber: 19\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 1015,\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: 1025,\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: 1026,\n                  columnNumber: 19\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 1024,\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: 1041,\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: 1042,\n                  columnNumber: 21\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 1040,\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: 1057,\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: 1058,\n                  columnNumber: 19\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 1056,\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: 1070,\n                    columnNumber: 21\n                  }, this), /*#__PURE__*/_jsxDEV(Tooltip, {\n                    title: \"If enabled, an exercise will start if your microphone detects speech. If disabled, you must start exercises manually.\",\n                    children: /*#__PURE__*/_jsxDEV(Switch, {\n                      defaultChecked: false,\n                      onChange: EnableVoluneMode\n                    }, void 0, false, {\n                      fileName: _jsxFileName,\n                      lineNumber: 1072,\n                      columnNumber: 23\n                    }, this)\n                  }, void 0, false, {\n                    fileName: _jsxFileName,\n                    lineNumber: 1071,\n                    columnNumber: 21\n                  }, this)]\n                }, void 0, true, {\n                  fileName: _jsxFileName,\n                  lineNumber: 1069,\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: 1079,\n                  columnNumber: 21\n                }, this)]\n              }, void 0, true, {\n                fileName: _jsxFileName,\n                lineNumber: 1068,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(\"br\", {}, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 1093,\n                columnNumber: 17\n              }, this), /*#__PURE__*/_jsxDEV(Button, {\n                onClick: onClose,\n                children: \"Close\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 1094,\n                columnNumber: 17\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 953,\n              columnNumber: 15\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 952,\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: 1097,\n            columnNumber: 13\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 835,\n          columnNumber: 11\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 833,\n        columnNumber: 9\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 832,\n      columnNumber: 7\n    }, this)\n  }, void 0, false, {\n    fileName: _jsxFileName,\n    lineNumber: 831,\n    columnNumber: 5\n  }, this)\n\n  // </div>\n  ;\n};\n_s(Sample, \"zieEX9Zfe9PACq1h1Gy8gqx/zS0=\", false, function () {\n  return [useOptionsHooks, useTemString, useLocation];\n});\n_c2 = Sample;\nexport default Sample;\nvar _c, _c2;\n$RefreshReg$(_c, \"PlayIcon\");\n$RefreshReg$(_c2, \"Sample\");","map":{"version":3,"names":["React","useState","useEffect","useRef","Button","Flex","SettingOutlined","CustomerServiceOutlined","Col","Row","Tour","ConfigProvider","CaretRightOutlined","LoadingOutlined","Slider","Input","Layout","Dropdown","Drawer","Radio","RedoOutlined","PauseOutlined","StepForwardOutlined","StepBackwardOutlined","Tooltip","FloatButton","Space","Switch","ConstantTxt","Fixed","Stair","Heteronym","UploadOutlined","message","Upload","hark","useLocation","Typography","Collapse","Image","divide_1","QuestionOutlined","useTemString","pdfToText","AudioPlayer","createFromIconfontCN","useOptionsHooks","Fragment","_Fragment","jsxDEV","_jsxDEV","PlayIcon","scriptUrl","_c","TextArea","Title","Paragraph","Text","Link","items","key","label","children","Content","marksRange","marksBallPos","marksVol","Sample","genderName","gender","setGender","audioKey","audioSrc","fetchAudioData","handleIconClick","itemsAvatar","_s","audioPlayerNew","items_3","stairFilenames","heteronymFilenames","shortDescription","Text_1_Rainbow","Text_2","Text_3","size","initialRange","setInitialRange","config","setConfig","SRATE","fxmin","fxlow","fxhigh","fxmax","COLORS","setCOLORS","realVoiceColor","targetVoiceColor","closeVoiceColor","COLORSMode","setCOLORSMode","openSetting","setOpenSetting","txtShow","setTxtShow","txtShowSwitch","setTxtShowSwitch","openTour","setOpenTour","isPlaying","setIsPlaying","isRetry","setIsRetry","enableVol","setEnableVol","isOpenTextbox","setIsOpenTextbox","showNextPre","setShowNextPre","showListen","setShowListen","location","ref12","ref1","ref2","ref3","parentRef","volume","setVolume","threshold","setThreshold","maxLyricCount","setMaxLyricCount","playLyricCount","setPlayLyricCount","divisor","setDivisor","ballPosition","setBallPosition","pitchDiff","setPitchDiff","avgPitchDiff","setAvgPitchDiff","showNotesPar","setShowNotesPar","component","setComponent","currentSelection","setCurrentSelection","syllableCount","setSyllableCount","baseFilenames","setBaseFilenames","fileContent","setFileContent","selectedNum","setSelectedNum","selectedDefaultText","setSelectedDefaultText","audioPlayer","audioSrcFromChild","setAudioSrcFromChild","isListen","setIsListen","setPlaying","setPlayingPause","handleBeginTour","window","scrollTo","onClose","ClearTxt","handlePitchDiffChange","value","onClick","info","console","log","handleTextInputString","Number","e","content","separators","splitContent","split","map","s","trim","filter","Boolean","length","handleTextInput","target","props","name","accept","beforeUpload","file","type","error","then","text","catch","reader","FileReader","onload","_e$target","result","readAsText","onChange","status","success","changeOnEnter","shiftKey","handleAudioSrc","newAudioSrc","playAudio","current","audio","play","navigator","mediaDevices","getUserMedia","video","stream","harkInstance","on","stop","steps","title","description","placement","cover","style","textAlign","fileName","_jsxFileName","lineNumber","columnNumber","queryParams","URLSearchParams","search","init","get","handleStairAndConstantClick","innerText","handleMenuClick","componentType","genderType","syllableCountType","tt","renderTruncatedFilenames","filenames","index","isNearEnd","startIndex","showCondition","className","handlePlayLyricCountChange","newCount","itemsSyllable","onChangeStairSwitch","renderSelectedComponent","ref","onAudioSrcChange","onPlayLyricCountChange","heteronymFile","MainButtons","justify","wrap","gap","shape","icon","autoPlayAfterSrcChange","src","display","disabled","onChangePrevious","onChangePause","onChangeNext","avgDiff","reduce","acc","isNaN","sum","count","formattedAvgPitchDiff","toFixed","parseFloat","RecordingBar","renderSelectedComponentLyric","Compact","menu","maxCount","rows","placeholder","height","resize","onKeyDown","maxIndexToShow","shouldShow","align","defaultChecked","checkedChildren","unCheckedChildren","onChangeRange","rangeValue","onChangePosition","positionValue","onChangeSpeed","speedValue","mappedValue","Math","round","onChangeHz","onChangeColor","EnableVoluneMode","tem","onChangeThreshold","formatterdB","formatterHz","formatterPos","onChangeCollapse","Array","isArray","span","vertical","marginTop","theme","token","colorPrimary","borderRadius","width","right","bottom","alignItems","justifyContent","preview","paddingLeft","paddingRight","id","level","margin","activeKey","ghost","open","trigger","overlayClassName","buttonsRender","leftButton","rightButton","fontSize","cloneElement","loading","onEnded","onError","Group","defaultValue","buttonStyle","range","step","min","max","tooltip","formatter","marks","_c2","$RefreshReg$"],"sources":["/var/www/gavt/src/Route/Sample.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef } from 'react';\nimport { Button, Flex, } from 'antd';\nimport { SettingOutlined, CustomerServiceOutlined } from '@ant-design/icons';\nimport { Col, Row, Tour, ConfigProvider } from 'antd';\nimport { CaretRightOutlined, LoadingOutlined } from '@ant-design/icons';\nimport { Slider, Input } from 'antd';\nimport { Breadcrumb, Layout, Menu, Dropdown, theme, Avatar } from 'antd';\nimport { Drawer, Cascader, 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 type { RadioChangeEvent } from 'antd';\nimport type { TourProps } from 'antd';\nimport ReactAudioPlayer from 'react-audio-player';\nimport type { SliderSingleProps } from 'antd';\nimport type { UploadProps } from 'antd';\nimport { UploadOutlined, ArrowLeftOutlined, RollbackOutlined } from '@ant-design/icons';\nimport { message, Upload } from 'antd';\nimport hark from 'hark';\nimport { useLocation } from 'react-router-dom';\nimport { Typography } from 'antd';\nimport type { CollapseProps } 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 { adjustCanvasScale, map, drawBackground, generateNotesAndFrequencies } from '../function/canvasDefault';\nimport { useTemString } from '../hooks/useTemString';\nimport { useCanvasHooks } from '../hooks/useCanvasHooks';\nimport type { MenuProps } from 'antd';\n// @ts-ignore\nimport pdfToText from 'react-pdftotext';\nimport useCanvasAdjustHeight from '../hooksUseEffect/useCanvasAdjustHeight';\nimport AudioPlayer from 'react-h5-audio-player';\nimport { createFromIconfontCN } from '@ant-design/icons';\nimport { useOptionsHooks } from '../hooks/useOptionsHooks';\n\nconst PlayIcon = createFromIconfontCN({\n  scriptUrl: '//at.alicdn.com/t/c/font_4566050_zpduwnlv2t.js',\n});\n\nconst { TextArea } = Input;\nconst { Title, Paragraph, Text, Link } = Typography;\ntype MenuTheme = 'show' | 'hide';\n\nconst items: MenuProps['items'] = [\n  {\n    key: '1',\n    label: (<>\n    The Rainbow Passage\n    </>\n    ),\n  },\n  {\n    key: '2',\n    label: (\n      <>\n      Grandfather\n      </>\n    ),\n  },\n  {\n    key: '3',\n    label: (\n      <>\n      Harvard Phonetically Balanced Sentences \n      </>\n    ),\n  },\n];\n\n\n\n\nconst { Content } = Layout;\n\nconst marksRange: SliderSingleProps['marks'] = {\n  50: '50Hz',\n  600: '600Hz'\n};\n\nconst marksBallPos: SliderSingleProps['marks'] = {\n  0: '0%',\n  1: '100%'\n};\nconst marksVol: SliderSingleProps['marks'] = {\n  50: '50dB',\n  90: '90dB'\n};\n\n\ninterface SampleProps {\n  genderName: string;\n  gender: string;\n  setGender: (str: string) => void;\n  audioKey: number;\n  audioSrc: string;\n  fetchAudioData: () => void;\n  handleIconClick: (e: React.MouseEvent<HTMLSpanElement, MouseEvent>) => void;\n  itemsAvatar: MenuProps['items'];\n}\n\nconst Sample: React.FC<SampleProps> = ({\n  genderName, \n  gender, \n  setGender,\n  audioKey,\n  audioSrc,\n  fetchAudioData,\n  handleIconClick,\n  itemsAvatar,\n\n}) => {\n  const {\n    audioPlayerNew,\n  } = useOptionsHooks();\n\n  // strings\n  const {\n    items_3,\n    stairFilenames,\n    heteronymFilenames,\n    shortDescription,\n    Text_1_Rainbow,\n    Text_2,\n    Text_3,\n  } = useTemString();\n\n  // Canvas values\n  const size = [400, 1400];\n  const [initialRange, setInitialRange] = useState<number[]>([100, 300]);\n  const [config, setConfig] = useState({\n    SRATE: 48000,\n    fxmin: 50,\n    fxlow: 50 + 50, // This initial value will be updated by useEffect below\n    fxhigh: 600 - 200, // This initial value will be updated by useEffect below\n    fxmax: 600\n  });\n  const [COLORS, setCOLORS] = useState({\n    realVoiceColor: '#d679de', \n    targetVoiceColor: '#4669C8', \n    closeVoiceColor: '#15dbcc', \n  }\n);\nconst [COLORSMode,setCOLORSMode] = useState(\"de\");\n\n  // open/close \n  const [openSetting, setOpenSetting] = useState(false);\n  const [txtShow, setTxtShow] = useState<string>(\"true\");\n  const [txtShowSwitch, setTxtShowSwitch] = useState<MenuTheme>('show');\n  const [openTour, setOpenTour] = useState<boolean>(false);\n  const [isPlaying, setIsPlaying] = useState(true);\n  const [isRetry, setIsRetry] = useState(false);\n  const [enableVol, setEnableVol] = useState<boolean>(false);\n  const [isOpenTextbox, setIsOpenTextbox] = useState<boolean>(false);\n  const [showNextPre, setShowNextPre] = useState<boolean>(false);\n  const [showListen, setShowListen] = useState<boolean>(false);\n\n  // special vatiables\n  const location = useLocation();\n  const ref12 = useRef(null);\n  const ref1 = useRef(null);\n  const ref2 = useRef(null);\n  const ref3 = useRef(null);\n  const parentRef = useRef<HTMLDivElement>(null);\n\n  // initial Value\n  const [volume, setVolume] = useState(0);\n  const [threshold, setThreshold] = useState<number>(70);\n  const [maxLyricCount, setMaxLyricCount] = useState<number>(2);\n  const [playLyricCount, setPlayLyricCount] = useState<number>(0);\n  const [divisor, setDivisor] = useState<number>(10);\n  const [ballPosition, setBallPosition] = useState<number>(0.5);\n  const [pitchDiff, setPitchDiff] = useState<number[]>([0]);\n  const [avgPitchDiff,setAvgPitchDiff] = useState<number>();\n  // Hz/Notes\n  const [showNotesPar, setShowNotesPar] = useState(false);\n\n  // selected choice\n  const [component, setComponent] = useState<string>(\"ConstantTxt\");\n  const [currentSelection, setCurrentSelection] = useState('Constant');\n  const [syllableCount, setSyllableCount] = useState<string>(\"none\");\n  const [baseFilenames, setBaseFilenames] = useState<string[]>([]);\n  const [fileContent, setFileContent] = useState<string[]>([]);\n  const [selectedNum, setSelectedNum] = useState<string[]>([\"2\"]);\n  const [selectedDefaultText, setSelectedDefaultText] = useState<string>(\"1\");\n\n\n  // auido\n  const audioPlayer = useRef<ReactAudioPlayer>(null);\n  // const audioPlayerNew = useRef<AudioPlayer>(null);\n  const [audioSrcFromChild, setAudioSrcFromChild] = useState<string>('');\n  const [isListen, setIsListen] = useState<number>(1);\n\n  // \n  const setPlaying = () => {\n    setIsPlaying(true);\n  };\n  const setPlayingPause = () => {\n    setIsPlaying(false);\n  };\n  const handleBeginTour = () => {\n    setOpenTour(true);\n        window.scrollTo(0, 0);\n  };\n  const onClose = () => {\n    setOpenSetting(false);\n  };\n  const ClearTxt = () => {\n    setFileContent([]);\n    setMaxLyricCount(1);\n  };\n  const handlePitchDiffChange = (value:number[]) => {\n    setPitchDiff(value);\n  };\n\n  // Constant Page upload and input\n  const onClick: MenuProps['onClick'] = ({ key }) => {\n    message.info(`Click on item ${key}`);\n    setSelectedDefaultText(key);\n  };\n\n  useEffect(() => {\n    console.log(Text_1_Rainbow[1]);\n    handleTextInputString(Text_1_Rainbow[Number(selectedDefaultText)-1]);\n  },[selectedDefaultText]);\n\n  const handleTextInputString = (e: string) => {\n    const content = e as string;\n    const separators = /[;,./\\n]/;\n    const splitContent = content.split(separators)\n      .map(s => s.trim())\n      .filter(Boolean);\n    console.log(splitContent);\n    setFileContent(splitContent);\n    setMaxLyricCount(splitContent.length - 1);\n    setPlayLyricCount(0);\n  }\n\n  const handleTextInput = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n    const content = e.target.value as string;\n    const separators = /[;,./\\n]/;\n    const splitContent = content.split(separators)\n      .map(s => s.trim())\n      .filter(Boolean);\n    console.log(splitContent);\n    setFileContent(splitContent);\n    setMaxLyricCount(splitContent.length - 1);\n    setPlayLyricCount(0);\n  }\n  const props: UploadProps = {\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)\n          .then((text: string) => {\n            const separators = /[;,./\\n]/;\n            const splitContent = text.split(separators)\n              .map((s: string) => s.trim())\n              .filter(Boolean);\n            console.log(splitContent);\n            setFileContent(splitContent);\n            setMaxLyricCount(splitContent.length - 1);\n            setPlayLyricCount(0);\n          })\n          .catch((error: any) => { // 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: ProgressEvent<FileReader>) => {\n          if (e.target?.result) {\n            const content = e.target.result as string;\n            // const separators = /[;,./]/;\n            const separators = /[;,./\\n]/;\n            const splitContent = content.split(separators)\n              .map(s => s.trim())\n              .filter(Boolean);\n            console.log(splitContent);\n            setFileContent(splitContent);\n            setMaxLyricCount(splitContent.length - 1);\n            setPlayLyricCount(0);\n          }\n        };\n\n        reader.readAsText(file);\n\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: any) => {\n    if (e.key === 'Enter' && !e.shiftKey) {\n      console.log(\"Enter Key Pressed!\");\n      handleTextInput(e);\n    }\n  }\n\n  // audio\n  const handleAudioSrc = (newAudioSrc: string) => {\n    setAudioSrcFromChild(newAudioSrc);\n  };\n  const playAudio = () => {\n\n    // if (audioPlayer.current && audioPlayer.current.audioEl.current) {\n    // audioPlayer.current.audioEl.current.play()\n    if (audioPlayerNew.current && audioPlayerNew.current.audio.current) {\n      audioPlayerNew.current.audio.current.play()\n        .then(() => {\n          setIsListen(isListen + 1);\n        })\n        .catch(error => {\n          console.error('Fail play audios: ', error);\n        });\n    }\n\n  };\n\n  // options audio\n  useEffect(() => {\n    fetchAudioData();\n  }, [genderName]);\n\n  // Volume\n  useEffect(() => {\n    navigator.mediaDevices.getUserMedia({ audio: true, video: false })\n      .then(stream => {\n        const harkInstance = hark(stream, {});\n\n        harkInstance.on('volume_change', (volume, threshold) => {\n          setVolume(volume);\n        });\n\n        return () => harkInstance.stop();\n      })\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\n  // Tour\n  const steps: TourProps['steps'] = [\n    {\n      title: 'Pitch Exercises',\n      description: 'Switch between different exercises',\n      placement: 'top',\n      target: () => ref12.current,\n    },\n    {\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    {\n      title: 'Function Buttons',\n      cover: (\n        <ul style={{ textAlign: 'left' }}>\n          <li>Start/Stop: Begin or stop recording.</li>\n          <li>Retry: Clear display and restart.</li>\n          <li>Upload txt/pdf File (optional): Upload text or pdf for you (in .txt/.pdf format) to read while recording.</li>\n          <li>Previous Next (if text uploaded): Switch between lines of text.</li>\n        </ul>\n      ),\n      target: () => ref2.current,\n    },\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 as HTMLDivElement,\n    },\n    {\n      title: 'Options menu',\n      description: 'Adjust settings such as the pitch display range.',\n      target: () => ref3.current,\n    },\n\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\n  // Options of different Exercise \n  const handleStairAndConstantClick = (e: any) => {\n    setPlayLyricCount(0);\n    setCurrentSelection(e.target.innerText);\n    console.log(e.target.innerText);\n    if (e.target.innerText === \"Constant\" || e.target.innerText === \"CONSTANT\") {\n      setComponent(\"ConstantTxt\");\n      setSelectedNum([\"2\"]);\n\n    } else if (e.target.innerText === \"Stair\" || e.target.innerText === \"STAIR\") {\n      setComponent(\"Stair\");\n      setSelectedNum([\"3\"]);\n\n    } else {\n      setComponent(\"Heteronym\");\n      setSelectedNum([\"4\"]);\n    }\n    setSyllableCount(\"none\");\n  }\n  \n  const handleMenuClick = (e: any) => {\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      setSelectedNum([\"5\"]);\n\n    }\n\n    setComponent(componentType);\n    setGender(genderType);\n    setSyllableCount(syllableCountType);\n\n    setCurrentSelection(e.key + \"syllable \" + genderName);\n  };\n  const renderTruncatedFilenames = (filenames: string[]) => {\n    return filenames.map((text, index) => {\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 (\n        showCondition && (\n          <li key={index} className={playLyricCount === index ? 'highlighted' : ''}>{text}</li>\n        )\n      );\n    });\n  };\n  const handlePlayLyricCountChange = (newCount: number) => {\n    setPlayLyricCount(newCount);\n  };\n\n\n  /**\n * Defines the items for the syllable menu based on the gender.\n * If the gender is 'none', it only includes a single item prompting the user to select an avatar.\n * Otherwise, it includes multiple items representing the number of syllables, with corresponding click handlers.\n */\n  const itemsSyllable: MenuProps['items'] = gender === 'none' ? [\n    {\n      key: 'SelectAvatar',\n      label: 'Please select avatar',\n    },\n  ] : [\n    {\n      key: `Fixed-${gender}-2`,\n      label: \"2 syllables\",\n      onClick: handleMenuClick,\n    },\n    {\n      key: `Fixed-${gender}-3`,\n      label: \"3 syllables\",\n      onClick: handleMenuClick,\n    },\n    {\n      key: `Fixed-${gender}-4`,\n      label: \"4 syllables\",\n      onClick: handleMenuClick,\n    },\n    {\n      key: `Fixed-${gender}-5`,\n      label: \"5 syllables\",\n      onClick: handleMenuClick,\n    },\n  ];\n  const onChangeStairSwitch = (value: boolean) => {\n    setTxtShowSwitch(value ? 'hide' : 'show');\n    setTxtShow(value ? 'true' : 'false');\n  };\n  const renderSelectedComponent = (): React.ReactNode => {\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 <ConstantTxt handlePitchDiffChange={handlePitchDiffChange} ref={parentRef} initialRange={initialRange} divisor={divisor} ballPosition={ballPosition} isRetry={isRetry} setPlayingPause={setPlayingPause} COLORS={COLORS} showNotesPar={showNotesPar} size={size} config={config} isPlaying={isPlaying} />;\n      case 'Stair':\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} />;\n      case 'Fixed':\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} />;\n      case 'Heteronym':\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} />;\n      default:\n        return <span>Canvas: Picture</span>;\n    }\n  }\n  const MainButtons = (): React.ReactNode => {\n    return (\n      <Flex justify=\"center\" wrap=\"wrap\" gap=\"small\">\n\n        <Tooltip title=\"Retry\">\n          <Button onClick={() => setIsRetry(!isRetry)} shape=\"circle\" icon={<RedoOutlined />} />\n        </Tooltip>\n        {/* <ReactAudioPlayer\n          className=\"audio-player-hidden\"\n          src={audioSrcFromChild}\n          ref={audioPlayer}\n        /> */}\n\n        <AudioPlayer\n          autoPlayAfterSrcChange={false}\n          src={audioSrcFromChild}\n          ref={audioPlayerNew}\n          style={{ display: 'none' }}\n        />\n        {showListen &&\n          <Tooltip title=\"Listen\">\n            <Button disabled={component !== \"Fixed\"} shape=\"circle\" onClick={playAudio} icon={<CustomerServiceOutlined />} />\n          </Tooltip>\n        }\n\n        {\n          showNextPre &&\n          <Tooltip title=\"Previous\">\n            <Button shape=\"circle\" onClick={onChangePrevious} icon={<StepBackwardOutlined />} />\n          </Tooltip>\n        }\n        <Tooltip title={isPlaying ? \"Pause\" : \"Play\"}>\n          <Button onClick={onChangePause} shape=\"circle\" icon={isPlaying ? <PauseOutlined /> : <CaretRightOutlined />} />\n        </Tooltip>\n        {\n          showNextPre &&\n          <Tooltip title=\"Next\">\n            <Button shape=\"circle\" onClick={onChangeNext} icon={<StepForwardOutlined />} />\n          </Tooltip>\n        }\n\n      </Flex>\n    );\n  };\n  useEffect(() => {\n    const avgDiff = pitchDiff.reduce((acc, current) => {\n      if (!isNaN(current)) {\n        acc.sum += current;\n        acc.count++;\n      }\n      return acc;\n    }, { sum: 0, count: 0 });\n\n    const formattedAvgPitchDiff = (avgDiff.count > 0 ? avgDiff.sum / avgDiff.count : 0).toFixed(2);\n    setAvgPitchDiff(parseFloat(formattedAvgPitchDiff));\n    },[pitchDiff]);\n  const RecordingBar = (): React.ReactNode => {\n    return (\n      <Flex justify=\"center\" wrap=\"wrap\" gap=\"small\">\n\n        {isPlaying ? \n        <>\n                  <LoadingOutlined /> \n                  Recording...\n        </>\n\n\n        : \n        \n        <>\n        Recording stopped. Your average pitch difference is {avgPitchDiff}.\n        </>\n        \n        }\n      </Flex>\n    );\n  };\n\n  const renderSelectedComponentLyric = (): React.ReactNode => {\n    switch (component) {\n\n      case 'ConstantTxt':\n        return (\n          <div className='lyric'>\n            <Space size=\"middle\">\n              {RecordingBar()}\n              <Space.Compact>\n              </Space.Compact>\n\n            </Space>\n            <br />\n            <Space size=\"middle\">\n              {MainButtons()}\n              <Space.Compact>\n\n                <Tooltip title=\"Clear existing files and upload new ones\">\n                  <Button onClick={ClearTxt}>Clear text</Button>\n                </Tooltip>\n                <Tooltip title=\"Default text example\">\n                <Dropdown menu={{ items, onClick }} placement=\"bottomLeft\">\n                  <Button>Default Texts</Button>\n                </Dropdown>\n                </Tooltip>\n\n                <Tooltip title=\"Upload PDF or .txt file to read during practice\">\n                  <Upload maxCount={1} {...props}>\n                    <Button icon={<UploadOutlined />}>Upload File</Button>\n                  </Upload>\n                </Tooltip>\n                <Tooltip title=\"Type/Paste text to read during parctice\">\n                  <Button onClick={() => setIsOpenTextbox(!isOpenTextbox)}>\n                    {!isOpenTextbox ? \"Enter Text\" : \"Close Textbox\"}\n                  </Button>\n                </Tooltip>\n              </Space.Compact>\n\n            </Space>\n            <>\n              {isOpenTextbox && fileContent.length === 0 && (\n                <TextArea rows={4} placeholder='Enter or paste Text Entry' style={{ height: 40, resize: 'none' }} onKeyDown={changeOnEnter} />\n              )\n\n              }\n\n            </>\n            <ul>\n              {fileContent.map((text, index) => {\n                const maxIndexToShow = playLyricCount + 2 >= fileContent.length ? fileContent.length - 1 : playLyricCount + 2;\n\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\n                return (\n                  showCondition && (\n                    <li key={index} className={playLyricCount === index ? 'highlighted' : ''}>{text}</li>\n                  )\n                );\n              })}\n            </ul>\n          </div>\n        )\n      case 'Stair':\n        return (\n          <div className='lyric'>\n            <Flex align=\"center\" gap=\"middle\">\n              {MainButtons()}\n\n              <Tooltip title=\"Show/Hide 5-syllable phrases to read\">\n                <Switch defaultChecked checkedChildren=\"show\" unCheckedChildren=\"hide\" onChange={onChangeStairSwitch} />\n              </Tooltip>\n\n            </Flex>\n            {(() => {\n              if (txtShow === 'true') {\n                return (\n                  <ul>\n                    {renderTruncatedFilenames(stairFilenames)}\n                  </ul>\n                );\n              }\n              return null;\n            })()}\n\n          </div>\n        )\n      case 'Heteronym':\n        return (\n          <div className='lyric'>\n            {MainButtons()}\n            {(() => {\n              if (txtShow === 'true') {\n                return (\n                  <ul>\n                    {renderTruncatedFilenames(heteronymFilenames)}\n                  </ul>\n                );\n              }\n              return null;\n            })()}\n\n          </div>\n        )\n      case 'Fixed':\n        return (\n          <div className='lyric'>\n            {MainButtons()}\n            <ul>\n              {renderTruncatedFilenames(baseFilenames)}\n            </ul>\n          </div>\n        )\n      default:\n        return <span>Canvas: Picture</span>;\n    }\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    }\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  }\n    , [component, fileContent]);\n\n  // Options Changing functions\n  const onChangeRange = (rangeValue: number[]) => {\n    setInitialRange([rangeValue[0], rangeValue[1]]);\n  }\n  const onChangePosition = (positionValue: number) => {\n    setBallPosition(positionValue);\n  }\n  const onChangeSpeed = (speedValue: number) => {\n    const mappedValue = Math.round((speedValue * 20) + 4);\n    setDivisor(mappedValue);\n  }\n  const onChangeHz = ({ target: { value } }: RadioChangeEvent) => {\n    console.log(value);\n    if (value === 'hz') {\n      setShowNotesPar(false);\n    } else {\n      setShowNotesPar(true);\n    }\n  }\n  const onChangeColor = ({ target: { value } }: RadioChangeEvent) => {\n    console.log(value);\n    if (value === 'de') {\n      setCOLORSMode(value);\n      setCOLORS({\n        realVoiceColor: '#d679de', \n        targetVoiceColor: '#4669C8', \n        closeVoiceColor: '#15dbcc', \n      });\n\n    } else {\n      setCOLORSMode(value);\n      setCOLORS({\n        realVoiceColor: '#ff0000', \n        targetVoiceColor: '#3399ff', \n        closeVoiceColor: 'yellow', \n      });    \n    }\n  }\n\n  const EnableVoluneMode = (e: boolean) => {\n    console.log(e);\n    if (e) {\n      setEnableVol(true);\n\n    } else {\n      setEnableVol(false);\n\n    }\n  }\n\n  // Button functions\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    if (tem >= maxLyricCount) {\n      setPlayLyricCount(maxLyricCount);\n    } else {\n      setPlayLyricCount(tem + 1);\n    }\n  };\n\n  // tooltips\n  const onChangeThreshold = (e: number) => { setThreshold(e); };\n  const formatterdB = (value: number | undefined) => `${value} dB`;\n  const formatterHz = (value: number | undefined) => `${value} Hz`;\n  const formatterPos = (value: number | undefined) => `${value ? (value * 100).toFixed(0) : '0'}%`;\n\n  // onChangeCollapse\n  const onChangeCollapse = (e: string | string[]) => {\n    console.log(e);\n    if (Array.isArray(e)) {\n      setSelectedNum(e);\n    } else {\n      setSelectedNum([e]);\n    }\n  }\n  return (\n    <Row>\n      <Col span={24}>\n        <Layout className=\"layoutSample\">\n\n          <Content >\n\n            <Flex align=\"center\" justify=\"center\" gap=\"middle\" vertical>\n\n              <div style={{ marginTop: \"2vw\" }}>\n                <ConfigProvider\n                  theme={{\n                    token: {\n                      colorPrimary: \"rgb(132, 118, 171)\",\n                      borderRadius: 0,\n                    },\n                  }}\n                >\n\n                  <Space size=\"middle\" ref={ref12}>\n                    <Space.Compact>\n\n                      <Tooltip title=\"Switch to the Constant exercise\">\n                        <Button type={component === \"ConstantTxt\" ? \"primary\" : \"default\"} onClick={handleStairAndConstantClick}>\n                          CONSTANT\n                        </Button>\n                      </Tooltip>\n\n                      <Tooltip title=\"Switch to the Stair exercise\">\n                        <Button type={component === \"Stair\" ? \"primary\" : \"default\"} onClick={handleStairAndConstantClick}>\n                          STAIR\n                        </Button>\n                      </Tooltip>\n\n                      <Tooltip title=\"Switch to the Heteronyms exercise\">\n                        <Button type={component === \"Heteronym\" ? \"primary\" : \"default\"} onClick={handleStairAndConstantClick}>\n                          HETERONYMS\n                        </Button>\n                      </Tooltip>\n                      <Tooltip title=\"Switch to the Human Curve exercise\">\n                        <Dropdown menu={{ items: itemsSyllable }} placement=\"bottom\">\n                          <Button type={component === \"Fixed\" ? \"primary\" : \"default\"}>\n                            {syllableCount === \"none\" ? 'HUMAN CURVE' : syllableCount + ' SYLLABLE'}\n                          </Button>\n                        </Dropdown>\n\n                      </Tooltip>\n\n\n                    </Space.Compact>\n\n                  </Space>\n\n                </ConfigProvider>\n\n              </div>\n              {shortDescription(component)}\n\n\n\n              <div style={{ width: \"100%\" }}>\n                {renderSelectedComponent()}\n              </div>\n\n\n              <Flex vertical justify=\"center\" wrap=\"wrap\" gap=\"small\" ref={ref2} >\n                {renderSelectedComponentLyric()}\n              </Flex>\n\n              <FloatButton style={{\n                width: 60,\n                height: 60,\n                right: 15,\n                bottom: 30,\n                display: 'flex',\n                alignItems: 'center',\n                justifyContent: 'center'\n              }}\n                onClick={() => setOpenSetting(true)}\n                ref={ref3}\n                shape=\"square\"\n                description=\"SETTINGS\"\n                icon={<SettingOutlined />} />\n\n              <FloatButton\n                style={{\n                  width: 60,\n                  height: 60,\n                  right: 100,\n                  bottom: 30,\n                  display: 'flex',\n                  alignItems: 'center',\n                  justifyContent: 'center'\n                }}\n                shape=\"square\"\n                description=\"TOUR\"\n                onClick={handleBeginTour}\n                icon={<QuestionOutlined />} />\n\n              <Image\n                preview={false}\n                src={divide_1}\n                style={{ width: '100%' }}\n              />\n              <Typography\n                style={{\n                  width: \"100%\", paddingLeft: \"30px\", paddingRight: \"40px\",\n                }}>\n                <Typography.Title id=\"part-1\" level={2} style={{ margin: 0 }}>\n                  How to use\n                </Typography.Title>\n                <Collapse\n                  activeKey={selectedNum}\n                  // accordion\n                  onChange={onChangeCollapse}\n                  // defaultActiveKey={selectedNum} \n                  ghost\n                  items={items_3} />\n              </Typography>\n            </Flex>\n\n\n            <Drawer title=\"Options\" placement=\"right\" onClose={() => setOpenSetting(false)} open={openSetting} width={430}>\n              <Flex vertical gap=\"middle\">\n\n                <Space>\n                  <p># Model Selection: </p>\n\n                  <Dropdown.Button\n                    menu={{ items: itemsAvatar }}\n                    placement=\"bottom\"\n                    trigger={[\"click\"]}\n                    overlayClassName='custom-dropdown'\n                    buttonsRender={([leftButton, rightButton]) => [\n                      <Tooltip>\n                        <Button\n                          style={{\n                            display: 'flex',\n                            alignItems: 'center',\n                          }}\n                          onClick={handleIconClick}\n                          icon={\n                            <PlayIcon\n                              style={{\n                                fontSize: '1.7em',\n                              }}\n\n                              type=\"icon-audioPlay\"\n                            />\n                          }\n                        >\n                          {genderName === \"none\" ? \"Model Voice\" : gender === \"Female\" ? genderName : 'Male01'}\n\n                        </Button>\n\n                      </Tooltip>\n\n                      ,\n\n                      React.cloneElement(rightButton as React.ReactElement<any, string>, { loading: false }),\n\n                    ]}\n                  >\n\n                  </Dropdown.Button>\n\n                </Space>\n                <AudioPlayer    \n        autoPlayAfterSrcChange={false}\n        src={audioSrc} \n        ref={audioPlayerNew}\n        key={audioKey}\n        style={{display: 'none'}}\n        onEnded={() => console.log('audio ended')}\n        onError={(e) => console.log('audio error', e)}\n        />\n                <Space>\n                  <p># Coordinate Display Mode</p>\n                  <Radio.Group onChange={onChangeHz} value={showNotesPar ? 'notes' : 'hz'} defaultValue=\"notes\" buttonStyle=\"solid\">\n                    <Radio.Button value=\"hz\"> Hz </Radio.Button>\n                    <Radio.Button value=\"notes\">Notes</Radio.Button>\n                  </Radio.Group>\n                  <br />\n                </Space>\n\n                <Space>\n                  <p># Pitch Display Color Scheme </p>\n                  <Radio.Group onChange={onChangeColor} value={(COLORSMode === 'co') ? 'co' : 'de'} defaultValue=\"default\" buttonStyle=\"solid\">\n                    <Radio.Button value=\"de\">TruVox </Radio.Button>\n                    <Radio.Button value=\"co\">Colorblind</Radio.Button>\n                  </Radio.Group>\n                  <br />\n                </Space>\n\n                <div>\n                  <p># Pitch Display Range</p>\n                  <Slider\n                    range\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                </div>\n\n                {component !== \"Fixed\" && component !== \"Stair\" && component !== \"Heteronym\" && (\n                  <div>\n                    <p># Pitch Indicator Horizontal Position</p>\n                    <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                    />\n                  </div>\n                )}\n\n                <div>\n                  <p># Pitch Indicator Speed</p>\n                  <Slider\n                    step={0.05}\n                    min={0}\n                    max={1}\n                    onChange={onChangeSpeed}\n                    defaultValue={0.3}\n                    tooltip={{ formatter: null }}\n                  />\n                </div>\n\n                <div>\n                  <Space>\n                    <p># Auto-Start When Voice Detected</p>\n                    <Tooltip title=\"If enabled, an exercise will start if your microphone detects speech. If disabled, you must start exercises manually.\">\n                      <Switch defaultChecked={false} onChange={EnableVoluneMode} />\n\n                    </Tooltip>\n\n                  </Space>\n\n                  {enableVol &&\n                    <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                    />\n                  }\n                </div>\n\n                <br />\n                <Button onClick={onClose}>Close</Button>\n              </Flex>\n            </Drawer>\n            <Tour open={openTour} onClose={() => setOpenTour(false)} steps={steps} />\n          </Content>\n        </Layout>\n\n      </Col>\n    </Row>\n\n    // </div>\n  );\n}\n\nexport default Sample;"],"mappings":"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"},"metadata":{},"sourceType":"module","externalDependencies":[]}