{"ast":null,"code":"var _jsxFileName = \"D:\\\\Project\\\\UC_Trains_Voice\\\\react-demo\\\\src\\\\Canvas\\\\Heteronym.tsx\",\n  _s = $RefreshSig$();\nimport React, { useEffect, useRef, useState } from 'react';\nimport { map, drawBackground } from '../function/canvasDefault';\nimport { getPitch } from '../function/getPitch';\nimport { Col, Row, Slider } from 'antd';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst style = {\n  display: 'relative',\n  height: 300\n};\nconst Heteronym = ({\n  setMaxLyricCount,\n  initialRange,\n  divisor,\n  txtShow,\n  isRetry,\n  setPlayingPause,\n  playLyricCount,\n  setPlaying,\n  config,\n  COLORS,\n  size,\n  playCount,\n  isPlaying,\n  showNotesPar,\n  heteronymFile\n}) => {\n  _s();\n  const [pitch, setPitch] = useState(null);\n  const {\n    SRATE,\n    fxmin,\n    fxlow,\n    fxhigh,\n    fxmax\n  } = config;\n  const [mouseHeight, setMouseHeight] = useState(0);\n  const {\n    realVoiceColor,\n    targetVoiceColor,\n    closeVoiceColor\n  } = COLORS;\n  const [canvasHeight, setCanvasHeight] = useState(0);\n  // const [pitchValue, setPitchValue] = useState<number | null>(null);\n  const [ballY, setBallY] = useState(size[0]);\n  const [ballYCurr, setBallYCurr] = useState(size[0]);\n  const canvasRef = useRef(null);\n  const rectWidth = 5;\n  const cornerRadius = 1;\n  const divisorLocal = 4;\n  const offset = 10;\n  // const divisor = 10;\n  const desiredLength = Math.floor(size[1] / divisor);\n  const desiredLengthBall = Math.floor(size[1] / divisor / 4);\n  const [inputValue, setInputValue] = useState([110, 200]);\n  const CanvasLength = size[1]; // 1400\n  // const [CanvasLengthBall,setCanvasLengthBall] = useState<number>(size[1] * ballPosition);\n  // const initialCustomHistoryFull = new Array(CanvasLength).fill(NaN);\n  const initialColorChangesFull = new Array(CanvasLength).fill(false);\n  const initialBallHistoryFull = new Array(CanvasLength).fill(NaN);\n  const initialcurrentX = 0;\n  // const [customHistoryFull, setCustomHistoryFull] = useState<number[]>(initialCustomHistoryFull);\n  const [colorChangesFull, setColorChangesFull] = useState(initialColorChangesFull);\n  const [ballHistoryFull, setBallHistoryFull] = useState(initialBallHistoryFull);\n  const [pitchArrayCusFull, setPitchArrayCusFull] = useState(initialBallHistoryFull);\n  const resetStatesFull = () => {\n    // setCustomHistoryFull([...initialCustomHistoryFull]);\n    setColorChangesFull([...initialColorChangesFull]);\n    setBallHistoryFull([...initialBallHistoryFull]);\n    setCurrentX(initialcurrentX);\n  };\n\n  // const [ballHistory, setBallHistory] = useState<number[]>(new Array(desiredLength).fill(NaN));\n  const isPlayingRef = useRef(isPlaying);\n  // const [colorChanges, setColorChanges] = useState<boolean[]>(new Array(desiredLength).fill(true));\n  const initialColorChanges = new Array(desiredLength).fill(true);\n  const initialBallHistory = new Array(desiredLength).fill(NaN);\n  const initialPitchArrayCus = new Array(desiredLength).fill(NaN);\n\n  // const [colorChanges, setColorChanges] = useState<boolean[]>(initialColorChanges);\n  // const [ballHistory, setBallHistory] = useState<number[]>(initialBallHistory);\n  const [pitchArrayCus, setPitchArrayCus] = useState(initialPitchArrayCus);\n  // const resetStates = () => {\n  //     setColorChanges([...initialColorChanges]);\n  //     setBallHistory([...initialBallHistory]);\n  //     setCurrentX(initialcurrentX);\n  //   };\n  const [shouldDisabled, setShouldDisabled] = useState(false);\n  const [showNotes, setShowNotes] = useState(false);\n  const [pitchArray, setPitchArray] = useState([]);\n\n  // setPlayLyricCount(syllablesString.length);\n  const updateCanvasHeight = () => {\n    if (canvasRef.current) {\n      const rect = canvasRef.current.getBoundingClientRect();\n      setCanvasHeight(rect.height);\n    }\n  };\n  const onChange = newValue => {\n    setInputValue(newValue);\n  };\n  // const audioSrc = \"/audio/Right across the street.wav\";\n  // const audioRef = useRef(new Audio(audioSrc)); \n  const [currentX, setCurrentX] = useState(initialcurrentX);\n  const handleMouseMove = event => {\n    if (canvasRef.current) {\n      const rect = canvasRef.current.getBoundingClientRect();\n      const y = event.clientY - rect.top;\n      const heightPercentage = y / rect.height * 100;\n      setMouseHeight(heightPercentage);\n      // console.log(heightPercentage);\n    }\n  };\n  function updateBallY(value) {\n    if (value === null) {\n      value = 0;\n    }\n    if (value <= initialRange[0]) {\n      setBallY(size[0] + 10);\n      setBallYCurr(size[0]);\n    } else if (value > initialRange[1]) {\n      setBallY(map(value, initialRange[0], initialRange[1], size[0], -1));\n      setBallYCurr(0);\n    } else {\n      // console.log(value);\n      setBallY(map(value, initialRange[0], initialRange[1], size[0], -1));\n      setBallYCurr(map(value, initialRange[0], initialRange[1], size[0], -1));\n    }\n  }\n  const updatePitchArrayCus = () => {\n    const partLength = Math.floor(CanvasLength / 5);\n    const lastPartStart = partLength * 4;\n    const midValue = (inputValue[0] + inputValue[1]) / 2;\n\n    // const updatedArray = new Array(CanvasLength)\n\n    //   .fill(midValue, partLength, 2 * partLength) \n    //   .fill(inputValue[1], 2 * partLength, 3 * partLength)  \n    //   .fill(midValue, 3 * partLength, 4 * partLength)\n\n    const updatedArray = new Array(CanvasLength);\n    for (let i = 0.5 * partLength; i < 1.5 * partLength; i++) {\n      updatedArray[i] = inputValue[1] + (midValue - inputValue[1]) * ((i - (1.5 * partLength + offset)) / partLength) - 50;\n    }\n    for (let i = 1.5 * partLength + offset; i < 2.5 * partLength + offset; i++) {\n      updatedArray[i] = midValue + (inputValue[1] - midValue) * ((i - 0.5 * partLength) / partLength) - 50;\n    }\n    //-45.5\n\n    // for (let i = 2 * partLength; i < 3 * partLength; i++) {\n    //   updatedArray[i] = midValue + (inputValue[1] - midValue) * ((i - 2 * partLength) / partLength);\n    // }\n\n    // for (let i = 3 * partLength; i < 4 * partLength; i++) {\n    //   updatedArray[i] = inputValue[1] + (midValue - inputValue[1]) * ((i - 3 * partLength) / partLength);\n    // }\n\n    // for (let i = 0; i < partLength; i++) {\n    //   updatedArray[i] = midValue + (inputValue[1] - midValue) * (i / partLength);\n    // }\n\n    // for (let i = partLength; i < 2 * partLength; i++) {\n    //   updatedArray[i] = inputValue[1] + (midValue - inputValue[1]) * ((i - partLength) / partLength);\n    // }\n\n    // for (let i = 2 * partLength; i < 3 * partLength; i++) {\n    //   updatedArray[i] = midValue + (inputValue[0] - midValue) * ((i - 2 * partLength) / partLength);\n    // }\n\n    // for (let i = 3 * partLength; i < 4 * partLength; i++) {\n    //   updatedArray[i] = inputValue[0] + (midValue - inputValue[0]) * ((i - 3 * partLength) / partLength);\n    // }\n    setPitchArrayCus(updatedArray);\n  };\n\n  // retry\n  useEffect(() => {\n    setPlayingPause();\n    // resetStates();\n    resetStatesFull();\n  }, [isRetry, divisor]);\n  useEffect(() => {\n    updatePitchArrayCus();\n  }, [inputValue]);\n  useEffect(() => {\n    const canvas = canvasRef.current;\n    if (canvas) {\n      const ctx = canvas.getContext('2d');\n      if (ctx) {\n        ctx.clearRect(0, 0, canvas.width, canvas.height);\n        drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes);\n        // ctx.font = '16px Arial';\n        // ctx.fillStyle = 'black';\n        // // Calculate text position (near top right corner)\n        // const textX = canvas.width - 100; \n        // const textY = 20; \n        // const mappedHeight = map(mouseHeight, 0, 100, initialRange[1], initialRange[0]);\n        // ctx.fillText(`pitch: ${mappedHeight.toFixed(2)}`, textX, textY);\n\n        // stair \n        for (let i = 0 + offset; i < pitchArrayCus.length; i++) {\n          const mappedJsonValue = map(pitchArrayCus[i], initialRange[0], initialRange[1], size[0], 0);\n          // Set fill color based on condition\n          if (colorChangesFull[i]) {\n            ctx.fillStyle = closeVoiceColor;\n          } else {\n            ctx.fillStyle = targetVoiceColor;\n          }\n          // Draw a rectangle\n          ctx.fillRect(i, mappedJsonValue, rectWidth, rectWidth);\n        }\n        let temTxtShow = false;\n        if (txtShow === \"false\") {\n          temTxtShow = false;\n        } else {\n          temTxtShow = true;\n        }\n        if (temTxtShow) {\n          const fraction = size[1] / 5;\n          const heights = [inputValue[0], (inputValue[0] + inputValue[1]) / 2, inputValue[1], (inputValue[0] + inputValue[1]) / 2, inputValue[0]]; // 定义高度数组\n          ctx.fillStyle = \"black\";\n          ctx.font = \"16px Arial\";\n          for (let j = 0; j <= 4; j++) {\n            let xPosition = fraction * (j + 1) - fraction / 2;\n            let yPosition = map(heights[j] + 5, initialRange[0], initialRange[1], size[0], 0);\n            // 在每个位置添加数字1，20是y坐标，可根据需要调整\n          }\n        }\n\n        // if ((isPlaying)) {\n        // Draw the ball's historical positions\n        for (var i = 0; i < ballHistoryFull.length; i++) {\n          // for (var i = currentX; i > 0; i--) {\n          ctx.beginPath();\n          ctx.arc(i, ballHistoryFull[i], 5, 0, 2 * Math.PI);\n          ctx.fillStyle = realVoiceColor;\n          ctx.fill();\n          ctx.closePath();\n        }\n        // Plot current value\n        ctx.beginPath();\n        ctx.arc(currentX * divisor, ballYCurr, 10, 0, 2 * Math.PI);\n        ctx.fillStyle = \"black\";\n        ctx.fill();\n        ctx.closePath();\n\n        // }\n      }\n    }\n  }, [txtShow, pitchArrayCus, initialRange, ballHistoryFull, playLyricCount, showNotes, showNotesPar]);\n  useEffect(() => {\n    const canvas = canvasRef.current;\n    if (canvas) {\n      const ctx = canvas.getContext('2d');\n      if (ctx) {\n        // ctx.clearRect(0, 0, canvas.width, canvas.height);\n        drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes);\n        ctx.font = '16px Arial';\n        ctx.fillStyle = 'black';\n        // Calculate text position (near top right corner)\n        const textX = canvas.width - 100;\n        const textY = 20;\n        // txt\n        const mappedHeight = map(mouseHeight, 0, 100, initialRange[1], initialRange[0]);\n        const text = `pitch: ${mappedHeight.toFixed(2)}`;\n        const metrics = ctx.measureText(text);\n        const textWidth = metrics.width;\n        const textHeight = 16;\n        const clearX = textX;\n        const clearY = textY - textHeight;\n        const clearWidth = textWidth;\n        const clearHeight = textHeight + 5;\n        ctx.clearRect(clearX, clearY, clearWidth, clearHeight);\n        ctx.fillText(`pitch: ${mappedHeight.toFixed(2)}`, textX, textY);\n      }\n    }\n  }, [mouseHeight]);\n  // next\n  useEffect(() => {\n    setPlayingPause();\n    resetStatesFull();\n  }, [playLyricCount]);\n  useEffect(() => {\n    if (isPlaying) {\n      updateBallY(pitch);\n    }\n  }, [pitch]);\n\n  // first\n  useEffect(() => {\n    setPlayingPause();\n    setMaxLyricCount(heteronymFile.length - 1); // REMINDER: PROBABLY CHANGE THIS TO WORK WITH CHANGE IN LIST BEFORE COMMIT ************************************************************************************************\n    drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes);\n    // setPlayLyricCount(syllablesString.length);\n    updatePitchArrayCus();\n    //get pitch\n    let cleanup;\n    updateCanvasHeight();\n    window.addEventListener('resize', updateCanvasHeight);\n    (async () => {\n      cleanup = await getPitch(config, setPitch);\n    })();\n    return () => {\n      cleanup && cleanup();\n      window.removeEventListener('resize', updateCanvasHeight);\n    };\n  }, []);\n  useEffect(() => {\n    if (canvasRef.current) {\n      const rect = canvasRef.current.getBoundingClientRect();\n      setCanvasHeight(rect.height);\n    }\n  }, []);\n\n  // Change note function\n  const toggleShowNotes = () => {\n    setShowNotes(!showNotes);\n    const canvas = canvasRef.current;\n    if (canvas && canvas.getContext) {\n      const ctx = canvas.getContext('2d');\n      if (ctx) {\n        ctx.clearRect(0, 0, canvas.width / 24, canvas.height);\n        drawBackground(canvasRef, initialRange[1], initialRange[0], !showNotes);\n      }\n    }\n  };\n\n  // Redraw the background\n  useEffect(() => {\n    drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes); // Make sure the background is redrawn on state change\n  }, [showNotes]);\n  const updateBallHistoryFull = ballY => {\n    let tempHistoryFull = [...ballHistoryFull];\n    let ctxdiv = currentX * divisor;\n    if (currentX < desiredLength - 1) {\n      setShouldDisabled(false);\n      tempHistoryFull[ctxdiv] = ballY;\n      setColorChangesFull(currentColors => {\n        const newColors = [...currentColors];\n        const mappedJsonValue = map(pitchArrayCus[ctxdiv], initialRange[0], initialRange[1], size[0], 0);\n        const difference = Math.abs(mappedJsonValue - ballY);\n        if (difference <= 50 && !isNaN(difference)) {\n          for (let j = ctxdiv - divisor; j <= ctxdiv + divisor && j < CanvasLength; j++) {\n            newColors[j] = true;\n          }\n        }\n        return newColors;\n      });\n    } else {\n      setShouldDisabled(true);\n      if (!shouldDisabled) {\n        setPlayingPause();\n      }\n    }\n    setCurrentX(currentX + 1);\n    setBallHistoryFull(tempHistoryFull);\n  };\n  useEffect(() => {\n    // updateBallY(pitch);\n\n    // Only update ballHistory at currentX position\n    if (isPlaying) {\n      updateBallHistoryFull(ballY);\n      // let tempHistory = [...ballHistory];\n      // let tempColor = [...colorChanges];\n      // let prevPitch = tempHistory[currentX - 1] || ballY;\n      // if (currentX < desiredLength - 1) {\n      //   const averagePitch = (prevPitch + ballY) / 2;\n      //   tempHistory[currentX] = averagePitch;\n      //   tempHistory[currentX + 1] = ballY;\n      //   //Update color change array\n      //   [averagePitch, ballY].forEach((value, index) => {\n      //     const mappedJsonValue = map(pitchArrayCus[currentX + index], initialRange[0], initialRange[1], size[0], 0);\n      //     const difference = Math.abs(value - mappedJsonValue);\n      //     tempColor[currentX + index] = difference > 50;\n      //   });\n\n      //   setCurrentX(currentX + 2);\n      // } else {\n      //   setShouldDisabled(true);\n      //   if (! shouldDisabled) {\n      //     setPlayingPause();\n      //   }\n      // }\n      // setBallHistory(tempHistory);\n      // setColorChanges(tempColor);\n    }\n  }, [pitch, isPlaying]);\n  useEffect(() => {\n    if (shouldDisabled && isPlaying) {\n      resetStatesFull();\n      setShouldDisabled(false);\n    }\n  }, [isPlaying]);\n\n  // Adjust notes\n  useEffect(() => {\n    setShowNotes(showNotesPar);\n    const canvas = canvasRef.current;\n    if (canvas && canvas.getContext) {\n      const ctx = canvas.getContext('2d');\n      if (ctx) {\n        ctx.clearRect(0, 0, canvas.width / 24, canvas.height);\n        drawBackground(canvasRef, initialRange[1], initialRange[0], !showNotes);\n      }\n    }\n  }, [showNotesPar]);\n  return /*#__PURE__*/_jsxDEV(Row, {\n    style: {\n      maxHeight: \"27vw\",\n      maxWidth: \"100vw\"\n    },\n    children: [/*#__PURE__*/_jsxDEV(Col, {\n      span: 1\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 451,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(Col, {\n      span: 22,\n      children: /*#__PURE__*/_jsxDEV(\"canvas\", {\n        ref: canvasRef,\n        onMouseMove: handleMouseMove,\n        onClick: toggleShowNotes,\n        id: \"pitchCanvas\",\n        width: size[1],\n        height: size[0],\n        style: {\n          border: '1px solid #000'\n        }\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 455,\n        columnNumber: 9\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 453,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(Col, {\n      span: 1,\n      children: /*#__PURE__*/_jsxDEV(\"div\", {\n        children: /*#__PURE__*/_jsxDEV(Slider, {\n          vertical: true,\n          range: true\n          //   tooltip={{open:true}}\n          ,\n          min: initialRange[0],\n          max: initialRange[1],\n          style: {\n            marginTop: 0,\n            height: canvasHeight\n          },\n          onChange: onChange,\n          defaultValue: inputValue\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 459,\n          columnNumber: 21\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 458,\n        columnNumber: 7\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 457,\n      columnNumber: 7\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 449,\n    columnNumber: 5\n  }, this);\n};\n_s(Heteronym, \"5IUEMMWcZ0/CNh/xTz1iTvtYE+E=\");\n_c = Heteronym;\nexport default Heteronym;\nvar _c;\n$RefreshReg$(_c, \"Heteronym\");","map":{"version":3,"names":["React","useEffect","useRef","useState","map","drawBackground","getPitch","Col","Row","Slider","jsxDEV","_jsxDEV","style","display","height","Heteronym","setMaxLyricCount","initialRange","divisor","txtShow","isRetry","setPlayingPause","playLyricCount","setPlaying","config","COLORS","size","playCount","isPlaying","showNotesPar","heteronymFile","_s","pitch","setPitch","SRATE","fxmin","fxlow","fxhigh","fxmax","mouseHeight","setMouseHeight","realVoiceColor","targetVoiceColor","closeVoiceColor","canvasHeight","setCanvasHeight","ballY","setBallY","ballYCurr","setBallYCurr","canvasRef","rectWidth","cornerRadius","divisorLocal","offset","desiredLength","Math","floor","desiredLengthBall","inputValue","setInputValue","CanvasLength","initialColorChangesFull","Array","fill","initialBallHistoryFull","NaN","initialcurrentX","colorChangesFull","setColorChangesFull","ballHistoryFull","setBallHistoryFull","pitchArrayCusFull","setPitchArrayCusFull","resetStatesFull","setCurrentX","isPlayingRef","initialColorChanges","initialBallHistory","initialPitchArrayCus","pitchArrayCus","setPitchArrayCus","shouldDisabled","setShouldDisabled","showNotes","setShowNotes","pitchArray","setPitchArray","updateCanvasHeight","current","rect","getBoundingClientRect","onChange","newValue","currentX","handleMouseMove","event","y","clientY","top","heightPercentage","updateBallY","value","updatePitchArrayCus","partLength","lastPartStart","midValue","updatedArray","i","canvas","ctx","getContext","clearRect","width","length","mappedJsonValue","fillStyle","fillRect","temTxtShow","fraction","heights","font","j","xPosition","yPosition","beginPath","arc","PI","closePath","textX","textY","mappedHeight","text","toFixed","metrics","measureText","textWidth","textHeight","clearX","clearY","clearWidth","clearHeight","fillText","cleanup","window","addEventListener","removeEventListener","toggleShowNotes","updateBallHistoryFull","tempHistoryFull","ctxdiv","currentColors","newColors","difference","abs","isNaN","maxHeight","maxWidth","children","span","fileName","_jsxFileName","lineNumber","columnNumber","ref","onMouseMove","onClick","id","border","vertical","range","min","max","marginTop","defaultValue","_c","$RefreshReg$"],"sources":["D:/Project/UC_Trains_Voice/react-demo/src/Canvas/Heteronym.tsx"],"sourcesContent":["import React, { useContext, useEffect, useRef, useState } from 'react';\r\nimport { adjustCanvasScale, map, drawBackground } from '../function/canvasDefault';\r\nimport { getPitch, IPitchDetectionConfig } from '../function/getPitch';\r\nimport { Col, Row,Slider } from 'antd';\r\nimport { SearchOutlined } from '@ant-design/icons';\r\nimport { Button, Flex, Tooltip } from 'antd';\r\n\r\n\r\ninterface Config {\r\n  SRATE: number;\r\n  fxmin: number;\r\n  fxlow: number;\r\n  fxhigh: number;\r\n  fxmax: number;\r\n}\r\ninterface COLORS {\r\n  realVoiceColor: string;\r\n  targetVoiceColor: string,\r\n  closeVoiceColor: string,\r\n}\r\n\r\ninterface HeteronymProps {\r\n  size: number[];\r\n  config: Config;\r\n  COLORS: COLORS;\r\n  isPlaying: boolean;\r\n  showNotesPar: boolean;\r\n  playCount: number;\r\n  playLyricCount: number;\r\n  setPlaying: ()=>void;\r\n  isRetry: boolean;\r\n  setPlayingPause: ()=>void;\r\n  txtShow: string;\r\n  divisor: number;\r\n  initialRange: number[];\r\n  setMaxLyricCount: (num:number)=>void;\r\n  heteronymFile: string[];\r\n  // setPlayLyricCount: (count:number)=>void;\r\n}\r\nconst style: React.CSSProperties = {\r\n  display: 'relative',\r\n  height: 300,\r\n};\r\n\r\nconst Heteronym: React.FC<HeteronymProps> = ({ setMaxLyricCount, initialRange, divisor, txtShow, isRetry, setPlayingPause, playLyricCount, setPlaying, config, COLORS, size, playCount, isPlaying, showNotesPar, heteronymFile }) => {\r\n  const [pitch, setPitch] = useState<number | null>(null);\r\n  const { SRATE, fxmin, fxlow, fxhigh, fxmax } = config;\r\n  \r\n  const [mouseHeight, setMouseHeight] = useState<number>(0);\r\n  const { realVoiceColor, targetVoiceColor, closeVoiceColor } = COLORS;\r\n  const [canvasHeight, setCanvasHeight] = useState(0);\r\n  // const [pitchValue, setPitchValue] = useState<number | null>(null);\r\n  const [ballY, setBallY] = useState<number>(size[0]);\r\n  const [ballYCurr, setBallYCurr] = useState<number>(size[0]);\r\n  const canvasRef = useRef<HTMLCanvasElement>(null);\r\n  const rectWidth = 5;\r\n  const cornerRadius = 1;\r\n  const divisorLocal = 4;\r\n  const offset = 10;\r\n  // const divisor = 10;\r\n  const desiredLength = Math.floor(size[1] / divisor);\r\n  const desiredLengthBall = Math.floor(size[1] / divisor / 4);\r\n  const [inputValue, setInputValue] = useState<number[]>([110,200]);\r\n  const CanvasLength = size[1]; // 1400\r\n    // const [CanvasLengthBall,setCanvasLengthBall] = useState<number>(size[1] * ballPosition);\r\n    // const initialCustomHistoryFull = new Array(CanvasLength).fill(NaN);\r\n    const initialColorChangesFull = new Array(CanvasLength).fill(false);\r\n    const initialBallHistoryFull = new Array(CanvasLength).fill(NaN);\r\n    const initialcurrentX = 0;\r\n    // const [customHistoryFull, setCustomHistoryFull] = useState<number[]>(initialCustomHistoryFull);\r\n    const [colorChangesFull, setColorChangesFull] = useState<boolean[]>(initialColorChangesFull);\r\n    const [ballHistoryFull, setBallHistoryFull] = useState<number[]>(initialBallHistoryFull);\r\n    const [pitchArrayCusFull, setPitchArrayCusFull] = useState<number[]>(initialBallHistoryFull);\r\n    const resetStatesFull = () => {\r\n        // setCustomHistoryFull([...initialCustomHistoryFull]);\r\n        setColorChangesFull([...initialColorChangesFull]);\r\n        setBallHistoryFull([...initialBallHistoryFull]);\r\n        setCurrentX(initialcurrentX);\r\n      };\r\n\r\n  // const [ballHistory, setBallHistory] = useState<number[]>(new Array(desiredLength).fill(NaN));\r\n  const isPlayingRef = useRef(isPlaying);\r\n  // const [colorChanges, setColorChanges] = useState<boolean[]>(new Array(desiredLength).fill(true));\r\n  const initialColorChanges = new Array(desiredLength).fill(true);\r\n  const initialBallHistory = new Array(desiredLength).fill(NaN);\r\n  const initialPitchArrayCus = new Array(desiredLength).fill(NaN);\r\n  \r\n  // const [colorChanges, setColorChanges] = useState<boolean[]>(initialColorChanges);\r\n  // const [ballHistory, setBallHistory] = useState<number[]>(initialBallHistory);\r\n  const [pitchArrayCus, setPitchArrayCus] = useState<number[]>(initialPitchArrayCus);\r\n  // const resetStates = () => {\r\n  //     setColorChanges([...initialColorChanges]);\r\n  //     setBallHistory([...initialBallHistory]);\r\n  //     setCurrentX(initialcurrentX);\r\n  //   };\r\n    const [shouldDisabled, setShouldDisabled] = useState<boolean>(false);\r\n  const [showNotes, setShowNotes] = useState(false);\r\n  const [pitchArray, setPitchArray] = useState<number[]>([]);\r\n  \r\n  // setPlayLyricCount(syllablesString.length);\r\n  const updateCanvasHeight = () => {\r\n    if (canvasRef.current) {\r\n        const rect = canvasRef.current.getBoundingClientRect();\r\n        setCanvasHeight(rect.height);\r\n    }\r\n};\r\nconst onChange = (newValue: number[]) => {\r\n  setInputValue(newValue);\r\n};\r\n  // const audioSrc = \"/audio/Right across the street.wav\";\r\n  // const audioRef = useRef(new Audio(audioSrc)); \r\n  const [currentX, setCurrentX] = useState(initialcurrentX);\r\n  const handleMouseMove = (event: React.MouseEvent<HTMLCanvasElement>) => {\r\n    if (canvasRef.current) {\r\n      const rect = canvasRef.current.getBoundingClientRect();\r\n      const y = event.clientY - rect.top;\r\n      const heightPercentage = (y / rect.height) * 100; \r\n      setMouseHeight(heightPercentage);\r\n      // console.log(heightPercentage);\r\n    }\r\n  };\r\n\r\n    function updateBallY(value: number | null): void {\r\n    if (value === null) {\r\n        value = 0;\r\n    }\r\n    if (value <= initialRange[0]) {\r\n        setBallY(size[0]+10);\r\n        setBallYCurr(size[0]);\r\n    } else if (value > initialRange[1]) {\r\n        setBallY(map(value, initialRange[0], initialRange[1], size[0], -1));\r\n        setBallYCurr(0);\r\n    }\r\n    \r\n    else {\r\n        // console.log(value);\r\n        setBallY(map(value, initialRange[0], initialRange[1], size[0], -1));\r\n        setBallYCurr(map(value, initialRange[0], initialRange[1], size[0], -1));\r\n    }\r\n}\r\n\r\n  const updatePitchArrayCus = () => {\r\n    const partLength = Math.floor(CanvasLength / 5);\r\n    const lastPartStart = partLength * 4;\r\n    const midValue = (inputValue[0] + inputValue[1]) / 2;\r\n  \r\n    // const updatedArray = new Array(CanvasLength)\r\n                       \r\n    //   .fill(midValue, partLength, 2 * partLength) \r\n    //   .fill(inputValue[1], 2 * partLength, 3 * partLength)  \r\n    //   .fill(midValue, 3 * partLength, 4 * partLength)\r\n  \r\n    const updatedArray = new Array(CanvasLength);\r\n    for (let i = 0.5 * partLength; i < 1.5 * partLength; i++) {\r\n      updatedArray[i] = inputValue[1] + (midValue - inputValue[1]) * ((i - (1.5 * partLength + offset)) / partLength)-50;\r\n    }\r\n    \r\n    for (let i = 1.5 * partLength + offset; i < 2.5 * partLength + offset; i++) {\r\n\r\n      updatedArray[i] = midValue + (inputValue[1] - midValue) * ((i - 0.5 * partLength) / partLength)-50;\r\n    }\r\n    //-45.5\r\n\r\n      // for (let i = 2 * partLength; i < 3 * partLength; i++) {\r\n      //   updatedArray[i] = midValue + (inputValue[1] - midValue) * ((i - 2 * partLength) / partLength);\r\n      // }\r\n      \r\n      // for (let i = 3 * partLength; i < 4 * partLength; i++) {\r\n      //   updatedArray[i] = inputValue[1] + (midValue - inputValue[1]) * ((i - 3 * partLength) / partLength);\r\n      // }\r\n\r\n\r\n      // for (let i = 0; i < partLength; i++) {\r\n      //   updatedArray[i] = midValue + (inputValue[1] - midValue) * (i / partLength);\r\n      // }\r\n\r\n      // for (let i = partLength; i < 2 * partLength; i++) {\r\n      //   updatedArray[i] = inputValue[1] + (midValue - inputValue[1]) * ((i - partLength) / partLength);\r\n      // }\r\n\r\n      // for (let i = 2 * partLength; i < 3 * partLength; i++) {\r\n      //   updatedArray[i] = midValue + (inputValue[0] - midValue) * ((i - 2 * partLength) / partLength);\r\n      // }\r\n\r\n      // for (let i = 3 * partLength; i < 4 * partLength; i++) {\r\n      //   updatedArray[i] = inputValue[0] + (midValue - inputValue[0]) * ((i - 3 * partLength) / partLength);\r\n      // }\r\n    setPitchArrayCus(updatedArray);\r\n  }\r\n  \r\n  // retry\r\n  useEffect(()=>{\r\n    setPlayingPause();\r\n    // resetStates();\r\n    resetStatesFull();\r\n},[isRetry,divisor])\r\n\r\nuseEffect(() => {\r\n  updatePitchArrayCus();\r\n}, [inputValue]);\r\n\r\n  useEffect(() => {\r\n    \r\n      const canvas = canvasRef.current;\r\n      if (canvas) {\r\n        const ctx = canvas.getContext('2d');\r\n        if (ctx) {\r\n          ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n          drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes);\r\n          // ctx.font = '16px Arial';\r\n          // ctx.fillStyle = 'black';\r\n          // // Calculate text position (near top right corner)\r\n          // const textX = canvas.width - 100; \r\n          // const textY = 20; \r\n          // const mappedHeight = map(mouseHeight, 0, 100, initialRange[1], initialRange[0]);\r\n          // ctx.fillText(`pitch: ${mappedHeight.toFixed(2)}`, textX, textY);\r\n\r\n          // stair \r\n          for (let i = 0 + offset; i < pitchArrayCus.length; i++) {\r\n            const mappedJsonValue = map(pitchArrayCus[i], initialRange[0], initialRange[1], size[0], 0);\r\n            // Set fill color based on condition\r\n            if (colorChangesFull[i]) {\r\n              ctx.fillStyle = closeVoiceColor;\r\n            } else {\r\n              ctx.fillStyle =  targetVoiceColor;\r\n            }\r\n            // Draw a rectangle\r\n            ctx.fillRect(i, mappedJsonValue, rectWidth, rectWidth);\r\n          }\r\n\r\n          let temTxtShow = false;\r\n          if (txtShow === \"false\") {\r\n            temTxtShow = false;\r\n          } else {\r\n            temTxtShow = true;\r\n          }\r\n          \r\n          if (temTxtShow) {\r\n            const fraction = size[1] / 5;\r\n            const heights = [inputValue[0], (inputValue[0] + inputValue[1]) / 2, inputValue[1], (inputValue[0] + inputValue[1]) / 2, inputValue[0]]; // 定义高度数组\r\n            ctx.fillStyle = \"black\"; \r\n            ctx.font = \"16px Arial\"; \r\n            for (let j = 0; j <= 4; j++) {\r\n                let xPosition = fraction * (j+1) - (fraction / 2);\r\n                let yPosition = map(heights[j]+5, initialRange[0], initialRange[1], size[0], 0);\r\n                   // 在每个位置添加数字1，20是y坐标，可根据需要调整\r\n            }\r\n          }           \r\n\r\n          // if ((isPlaying)) {\r\n            // Draw the ball's historical positions\r\n            for (var i = 0; i < ballHistoryFull.length; i++) {\r\n              // for (var i = currentX; i > 0; i--) {\r\n              ctx.beginPath();\r\n              ctx.arc(i, ballHistoryFull[i], 5, 0, 2 * Math.PI);\r\n              ctx.fillStyle = realVoiceColor;\r\n              ctx.fill();\r\n              ctx.closePath();\r\n            }\r\n            // Plot current value\r\n            ctx.beginPath();\r\n            ctx.arc(currentX * divisor, ballYCurr, 10, 0, 2 * Math.PI);\r\n            ctx.fillStyle = \"black\";\r\n            ctx.fill();\r\n            ctx.closePath();\r\n  \r\n          // }\r\n        }\r\n      }\r\n  }, [txtShow, pitchArrayCus,initialRange, ballHistoryFull, playLyricCount,showNotes, showNotesPar]);\r\n\r\n  useEffect(()=>{\r\n    const canvas = canvasRef.current;\r\n    if (canvas) {\r\n      const ctx = canvas.getContext('2d');\r\n      if (ctx) {\r\n        // ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n        drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes);\r\n\r\n        ctx.font = '16px Arial';\r\n        \r\n        ctx.fillStyle = 'black';\r\n        // Calculate text position (near top right corner)\r\n        const textX = canvas.width - 100;\r\n        const textY = 20;\r\n        // txt\r\n        const mappedHeight = map(mouseHeight, 0, 100, initialRange[1], initialRange[0]);\r\n        \r\n        const text = `pitch: ${mappedHeight.toFixed(2)}`;\r\n        const metrics = ctx.measureText(text);\r\n        const textWidth = metrics.width;\r\n        const textHeight = 16; \r\n\r\n        const clearX = textX;\r\n        const clearY = textY - textHeight;\r\n        const clearWidth = textWidth;\r\n        const clearHeight = textHeight + 5;\r\n\r\n        ctx.clearRect(clearX, clearY, clearWidth, clearHeight);\r\n\r\n        ctx.fillText(`pitch: ${mappedHeight.toFixed(2)}`, textX, textY);\r\n      }\r\n    }\r\n  },[mouseHeight])\r\n  // next\r\n  useEffect(()=>{\r\n    setPlayingPause();\r\n    resetStatesFull();\r\n},[playLyricCount])\r\n\r\nuseEffect(() => {\r\n  if (isPlaying) {\r\n    updateBallY(pitch);\r\n  }\r\n}, [pitch]);\r\n\r\n  // first\r\n  useEffect(() => {\r\n    setPlayingPause();\r\n    setMaxLyricCount(heteronymFile.length - 1); // REMINDER: PROBABLY CHANGE THIS TO WORK WITH CHANGE IN LIST BEFORE COMMIT ************************************************************************************************\r\n    drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes);\r\n    // setPlayLyricCount(syllablesString.length);\r\n    updatePitchArrayCus();\r\n    //get pitch\r\n    let cleanup: () => void;\r\n    updateCanvasHeight();\r\n    window.addEventListener('resize', updateCanvasHeight);\r\n    (async () => {\r\n      cleanup = await getPitch(config, setPitch);\r\n    })();\r\n\r\n    return () => {\r\n      cleanup && cleanup();\r\n      window.removeEventListener('resize', updateCanvasHeight);\r\n    };\r\n  }, []);\r\n\r\n  useEffect(() => {\r\n    if (canvasRef.current) {\r\n        const rect = canvasRef.current.getBoundingClientRect();\r\n        setCanvasHeight(rect.height);\r\n    }\r\n}, []);\r\n\r\n  // Change note function\r\n  const toggleShowNotes = () => {\r\n    setShowNotes(!showNotes);\r\n    const canvas = canvasRef.current;\r\n    if (canvas && canvas.getContext) {\r\n      const ctx = canvas.getContext('2d');\r\n      if (ctx) {\r\n        ctx.clearRect(0, 0, canvas.width/24, canvas.height);\r\n        drawBackground(canvasRef, initialRange[1], initialRange[0], !showNotes);\r\n      }\r\n    }\r\n  }\r\n\r\n  // Redraw the background\r\n  useEffect(() => {\r\n    drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes); // Make sure the background is redrawn on state change\r\n  }, [showNotes]);\r\n\r\n  const updateBallHistoryFull = (ballY:number) => {\r\n    let tempHistoryFull = [...ballHistoryFull];\r\n    let ctxdiv = currentX * divisor;\r\n    \r\n\r\n    if (currentX < desiredLength - 1) {\r\n      setShouldDisabled(false);\r\n      tempHistoryFull[ctxdiv] = ballY;\r\n      setColorChangesFull(currentColors => {\r\n        const newColors = [...currentColors];\r\n                const mappedJsonValue = map(pitchArrayCus[ctxdiv], initialRange[0], initialRange[1], size[0], 0);\r\n                const difference = Math.abs(mappedJsonValue - ballY);\r\n                if (difference <= 50 && !isNaN(difference)) {\r\n                    for (let j = ctxdiv - divisor ; j <= ctxdiv + divisor && j < CanvasLength; j++) {\r\n                        newColors[j] = true;\r\n                    }\r\n                } \r\n        return newColors;\r\n    });\r\n\r\n    } else {\r\n      setShouldDisabled(true);\r\n        if (! shouldDisabled) {\r\n          setPlayingPause();\r\n        }\r\n    }\r\n  setCurrentX(currentX + 1);\r\n  setBallHistoryFull(tempHistoryFull); \r\n  };\r\n\r\n\r\n  useEffect(() => {\r\n    // updateBallY(pitch);\r\n    \r\n    // Only update ballHistory at currentX position\r\n    if (isPlaying) {\r\n      updateBallHistoryFull(ballY);\r\n      // let tempHistory = [...ballHistory];\r\n      // let tempColor = [...colorChanges];\r\n      // let prevPitch = tempHistory[currentX - 1] || ballY;\r\n      // if (currentX < desiredLength - 1) {\r\n      //   const averagePitch = (prevPitch + ballY) / 2;\r\n      //   tempHistory[currentX] = averagePitch;\r\n      //   tempHistory[currentX + 1] = ballY;\r\n      //   //Update color change array\r\n      //   [averagePitch, ballY].forEach((value, index) => {\r\n      //     const mappedJsonValue = map(pitchArrayCus[currentX + index], initialRange[0], initialRange[1], size[0], 0);\r\n      //     const difference = Math.abs(value - mappedJsonValue);\r\n      //     tempColor[currentX + index] = difference > 50;\r\n      //   });\r\n\r\n      //   setCurrentX(currentX + 2);\r\n      // } else {\r\n      //   setShouldDisabled(true);\r\n      //   if (! shouldDisabled) {\r\n      //     setPlayingPause();\r\n      //   }\r\n      // }\r\n      // setBallHistory(tempHistory);\r\n      // setColorChanges(tempColor);\r\n\r\n    }\r\n  }, [pitch, isPlaying]);\r\n  \r\n  useEffect(() => {\r\n    if (shouldDisabled && isPlaying) {\r\n      resetStatesFull();\r\n      setShouldDisabled(false);\r\n    }\r\n  }, [isPlaying]);\r\n\r\n  // Adjust notes\r\n  useEffect(() => {\r\n    setShowNotes(showNotesPar);\r\n    const canvas = canvasRef.current;\r\n    if (canvas && canvas.getContext) {\r\n      const ctx = canvas.getContext('2d');\r\n      if (ctx) {\r\n        ctx.clearRect(0, 0, canvas.width/24, canvas.height);\r\n        drawBackground(canvasRef, initialRange[1], initialRange[0], !showNotes);\r\n      }\r\n    }\r\n  }, [showNotesPar]);\r\n\r\n\r\n  return (\r\n    <Row style={{ maxHeight: \"27vw\", maxWidth: \"100vw\" }}>\r\n      {/* <div className=\"color-block\"> */}\r\n      <Col span={1}>\r\n      </Col>\r\n      <Col span={22}>\r\n\r\n        <canvas ref={canvasRef} onMouseMove={handleMouseMove} onClick={toggleShowNotes} id=\"pitchCanvas\" width={size[1]} height={size[0]} style={{ border: '1px solid #000' }}></canvas>\r\n      </Col>\r\n      <Col span={1}>\r\n      <div>\r\n                    <Slider\r\n                        vertical\r\n                        range \r\n                        //   tooltip={{open:true}}\r\n                        min={initialRange[0]}\r\n                        max={initialRange[1]}\r\n                        style={{ marginTop: 0, height: canvasHeight }}\r\n                        onChange={onChange}\r\n                        defaultValue={inputValue} />\r\n                </div>\r\n      </Col>\r\n    </Row>\r\n  );\r\n}\r\n\r\nexport default Heteronym;"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}