{"ast":null,"code":"var _jsxFileName = \"D:\\\\Project\\\\UC_Trains_Voice\\\\react-demo\\\\src\\\\Canvas\\\\Stair.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 Stair = ({\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}) => {\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 = 5;\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  const [syllablesString, setSyllablesString] = useState([['Big', '-ger', 'and', 'bet', '-ter'], ['Drum', 'and', 'bu', '-gle', 'corps'], ['He', 'has', 'a', 'good', 'job'], ['Be', '-fore', 'and', 'af', '-ter'], ['Come', 'back', 'right', 'a', '-way'], ['Blow', 'up', 'the', 'bal', '-loon']]);\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    const updatedArray = new Array(CanvasLength).fill(inputValue[0], 0, partLength).fill(midValue, partLength, 2 * partLength).fill(inputValue[1], 2 * partLength, 3 * partLength).fill(midValue, 3 * partLength, 4 * partLength).fill(inputValue[0], lastPartStart, CanvasLength);\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        const textX = canvas.width - 100;\n        const textY = 20;\n        const text = `pitch: 000.00`;\n        ctx.clearRect(0, 0, textX - 5, canvas.height);\n        ctx.clearRect(0, textY + 5, canvas.width, canvas.height - (textY + 5));\n        drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes);\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            ctx.fillText(syllablesString[playLyricCount][j], xPosition, yPosition); // 在每个位置添加数字1，20是y坐标，可根据需要调整\n          }\n        }\n\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          const mappedValue = map(ballHistoryFull[i], initialRange[0], initialRange[1], size[0], -1);\n          ctx.beginPath();\n          ctx.arc(i, mappedValue, 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\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        const text = `pitch: ${mappedHeight.toFixed(2)}`;\n        ctx.clearRect(textX - 5, textY - 21, ctx.measureText(text).width + 10, 26);\n        ctx.fillText(text, textX, textY);\n\n        // const textX = canvas.width - 100;\n        // const textY = 20;\n        // // txt\n        // const mappedHeight = map(mouseHeight, 0, 100, initialRange[1], initialRange[0]);\n\n        // const text = `pitch: ${mappedHeight.toFixed(2)}`;\n        // const metrics = ctx.measureText(text);\n        // const textWidth = metrics.width;\n        // const textHeight = 16; \n\n        // const clearX = textX;\n        // const clearY = textY - textHeight;\n        // const clearWidth = textWidth;\n        // const clearHeight = textHeight + 5;\n\n        // ctx.clearRect(clearX, clearY, clearWidth, clearHeight);\n\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(5);\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 = pitch => {\n    let tempHistoryFull = [...ballHistoryFull];\n    let ctxdiv = currentX * divisor;\n    let ballYtem = map(pitch, initialRange[0], initialRange[1], size[0], -1);\n    if (currentX < desiredLength - 1) {\n      setShouldDisabled(false);\n      tempHistoryFull[ctxdiv] = pitch;\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 - ballYtem);\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    // Only update ballHistory at currentX position\n    if (isPlaying) {\n      if (pitch !== null) {\n        updateBallHistoryFull(pitch);\n      } else {\n        updateBallHistoryFull(0);\n      }\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: 409,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(Col, {\n      span: 22,\n      children: /*#__PURE__*/_jsxDEV(\"div\", {\n        style: {\n          position: 'relative',\n          height: canvasHeight\n        },\n        children: [/*#__PURE__*/_jsxDEV(\"div\", {\n          style: {\n            position: 'absolute',\n            left: 0,\n            top: 0,\n            bottom: 0,\n            writingMode: 'vertical-rl',\n            transform: 'rotate(180deg)',\n            display: 'flex',\n            alignItems: 'center',\n            justifyContent: 'center',\n            marginRight: '8px',\n            marginTop: 0,\n            fontSize: '1.1vw',\n            height: canvasHeight\n          },\n          children: showNotes ? 'Pitch / (Note)' : 'Pitch / (Hz)'\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 413,\n          columnNumber: 7\n        }, this), /*#__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: 432,\n          columnNumber: 7\n        }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n          style: {\n            position: 'absolute',\n            top: canvasHeight,\n            left: 0,\n            // right: 0,\n            width: canvasHeight * 3.5,\n            display: 'flex',\n            justifyContent: 'space-between',\n            fontSize: '12px',\n            marginLeft: '3vw'\n          },\n          children: [...Array(11)].map((_, index) => /*#__PURE__*/_jsxDEV(\"span\", {\n            children: [(15 / (divisor / 4) * (index / 10)).toFixed(1), \"s\"]\n          }, index, true, {\n            fileName: _jsxFileName,\n            lineNumber: 455,\n            columnNumber: 3\n          }, this))\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 441,\n          columnNumber: 7\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 412,\n        columnNumber: 5\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 411,\n      columnNumber: 9\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: 464,\n          columnNumber: 21\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 463,\n        columnNumber: 7\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 462,\n      columnNumber: 7\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 407,\n    columnNumber: 5\n  }, this);\n};\n_s(Stair, \"X/4wY+DiTsl6Eg3pjo6gahnxmoE=\");\n_c = Stair;\nexport default Stair;\nvar _c;\n$RefreshReg$(_c, \"Stair\");","map":{"version":3,"names":["React","useEffect","useRef","useState","map","drawBackground","getPitch","Col","Row","Slider","jsxDEV","_jsxDEV","style","display","height","Stair","setMaxLyricCount","initialRange","divisor","txtShow","isRetry","setPlayingPause","playLyricCount","setPlaying","config","COLORS","size","playCount","isPlaying","showNotesPar","_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","syllablesString","setSyllablesString","updateCanvasHeight","current","rect","getBoundingClientRect","onChange","newValue","currentX","handleMouseMove","event","y","clientY","top","heightPercentage","updateBallY","value","updatePitchArrayCus","partLength","lastPartStart","midValue","updatedArray","canvas","ctx","getContext","textX","width","textY","text","clearRect","i","length","mappedJsonValue","fillStyle","fillRect","temTxtShow","fraction","heights","font","j","xPosition","yPosition","fillText","mappedValue","beginPath","arc","PI","closePath","mappedHeight","toFixed","measureText","cleanup","window","addEventListener","removeEventListener","toggleShowNotes","updateBallHistoryFull","tempHistoryFull","ctxdiv","ballYtem","currentColors","newColors","difference","abs","isNaN","maxHeight","maxWidth","children","span","fileName","_jsxFileName","lineNumber","columnNumber","position","left","bottom","writingMode","transform","alignItems","justifyContent","marginRight","marginTop","fontSize","ref","onMouseMove","onClick","id","border","marginLeft","_","index","vertical","range","min","max","defaultValue","_c","$RefreshReg$"],"sources":["D:/Project/UC_Trains_Voice/react-demo/src/Canvas/Stair.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 StairProps {\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  // 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 Stair: React.FC<StairProps> = ({ setMaxLyricCount, initialRange, divisor, txtShow, isRetry, setPlayingPause, playLyricCount, setPlaying, config, COLORS, size, playCount, isPlaying, showNotesPar }) => {\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 = 5;\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  const [syllablesString, setSyllablesString] = useState<string[][]>([\r\n    ['Big','-ger','and','bet','-ter'],\r\n    ['Drum', 'and', 'bu', '-gle', 'corps'],\r\n    ['He', 'has', 'a', 'good', 'job'],\r\n    ['Be', '-fore', 'and', 'af', '-ter'],\r\n    ['Come', 'back', 'right', 'a', '-way'],\r\n    ['Blow', 'up', 'the', 'bal', '-loon']\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      .fill(inputValue[0], 0, partLength)                           \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      .fill(inputValue[0], lastPartStart, CanvasLength);   \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          const textX = canvas.width - 100;\r\n          const textY = 20;\r\n          const text = `pitch: 000.00`;\r\n          ctx.clearRect(0, 0, textX - 5, canvas.height);\r\n          ctx.clearRect(0, textY + 5, canvas.width, canvas.height - (textY + 5));\r\n\r\n          drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes);\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                ctx.fillText(syllablesString[playLyricCount][j], xPosition, yPosition); // 在每个位置添加数字1，20是y坐标，可根据需要调整\r\n            }\r\n          }           \r\n\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              const mappedValue = map(ballHistoryFull[i], initialRange[0], initialRange[1], size[0],-1);\r\n\r\n              ctx.beginPath();\r\n              ctx.arc(i, mappedValue, 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      const mappedHeight = map(mouseHeight, 0, 100, initialRange[1], initialRange[0]);\r\n      const text = `pitch: ${mappedHeight.toFixed(2)}`;\r\n\r\n      ctx.clearRect(textX - 5, textY - 21, ctx.measureText(text).width + 10, 26);\r\n      ctx.fillText(text, textX, textY);\r\n\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(5);\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 = (pitch:number) => {\r\n    let tempHistoryFull = [...ballHistoryFull];\r\n    let ctxdiv = currentX * divisor;\r\n    let ballYtem = map(pitch, initialRange[0], initialRange[1], size[0], -1)\r\n\r\n    if (currentX < desiredLength - 1) {\r\n      setShouldDisabled(false);\r\n      tempHistoryFull[ctxdiv] = pitch;\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 - ballYtem);\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    // Only update ballHistory at currentX position\r\n    if (isPlaying) {\r\n      if (pitch !== null) {\r\n        updateBallHistoryFull(pitch);\r\n    } else {\r\n        updateBallHistoryFull(0);\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    <div style={{ position: 'relative', height: canvasHeight }}>\r\n      <div\r\n        style={{\r\n          position: 'absolute',\r\n          left: 0,\r\n          top: 0,\r\n          bottom: 0,\r\n          writingMode: 'vertical-rl',\r\n          transform: 'rotate(180deg)',\r\n          display: 'flex',\r\n          alignItems: 'center',\r\n          justifyContent: 'center',\r\n          marginRight: '8px',\r\n          marginTop: 0,\r\n          fontSize: '1.1vw',\r\n          height: canvasHeight,\r\n        }}\r\n      >\r\n        {showNotes ? 'Pitch / (Note)' : 'Pitch / (Hz)'}\r\n      </div>\r\n      <canvas\r\n        ref={canvasRef}\r\n        onMouseMove={handleMouseMove}\r\n        onClick={toggleShowNotes}\r\n        id=\"pitchCanvas\"\r\n        width={size[1]}\r\n        height={size[0]}\r\n        style={{ border: '1px solid #000' }}\r\n      ></canvas>\r\n      <div\r\n        style={{\r\n          position: 'absolute',\r\n          top: canvasHeight,\r\n          left: 0,\r\n          // right: 0,\r\n          width: canvasHeight * 3.5,\r\n          display: 'flex',\r\n          justifyContent: 'space-between',\r\n          fontSize: '12px',\r\n          marginLeft: '3vw',\r\n        }}\r\n      >\r\n            {[...Array(11)].map((_, index) => (\r\n  <span key={index}>\r\n    {((15 / (divisor / 4)) * (index / 10)).toFixed(1)}s\r\n  </span>\r\n))}\r\n      </div>\r\n    </div>\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 Stair;"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}