{"ast":null,"code":"var _jsxFileName = \"D:\\\\Project\\\\UC_Trains_Voice\\\\react-demo\\\\src\\\\Canvas\\\\ConstantTxt.tsx\",\n  _s = $RefreshSig$();\nimport React, { useEffect, useRef, forwardRef, useImperativeHandle, useState } from 'react';\nimport { map, drawBackground } from '../function/canvasDefault';\nimport { Slider } from 'antd';\nimport { Col, Row } from 'antd';\nimport '../CSS/VerticalSlider.css';\nimport { useCanvasHooks } from '../hooks/useCanvasHooks';\nimport useCanvasMouseText from '../hooksUseEffect/useCanvasMouseText';\nimport useCanvasRetry from '../hooksUseEffect/useCanvasRetry';\nimport useCanvasUpdatePitch from '../hooksUseEffect/useCanvasUpdatePitch';\nimport useCanvasAdjustHeight from '../hooksUseEffect/useCanvasAdjustHeight';\nimport useCanvasInitializeGetPitch from '../hooksUseEffect/useCanvasInitializeGetPitch';\nimport useCanvasChangeHzAndNotes from '../hooksUseEffect/useCanvasChangeHzAndNotes';\nimport useCanvasRedrawBackground from '../hooksUseEffect/useCanvasRedrawBackground';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst ConstantTxt = /*#__PURE__*/_s( /*#__PURE__*/forwardRef(_c = _s((props, ref) => {\n  var _notesLabel$map, _freqLabel$map, _freqLabel$map2;\n  _s();\n  const {\n    initialRange,\n    divisor,\n    ballPosition,\n    isRetry,\n    setPlayingPause,\n    COLORS,\n    config,\n    isPlaying,\n    size,\n    showNotesPar\n  } = props;\n\n  // =================================================================\n  const {\n    pitch,\n    setPitch,\n    mouseHeight,\n    setMouseHeight,\n    realVoiceColor,\n    targetVoiceColor,\n    closeVoiceColor,\n    ballYCurr,\n    setBallYCurr,\n    canvasRef,\n    rectWidth,\n    CanvasLength,\n    canvasHeight,\n    setCanvasHeight,\n    showNotes,\n    setShowNotes,\n    offset,\n    currentX,\n    setCurrentX,\n    initialcurrentX,\n    notesLabel,\n    setNotesLabel,\n    freqLabel,\n    setFreqLabel,\n    updateBallY,\n    updateCanvasHeight,\n    handleMouseMove\n  } = useCanvasHooks(size, divisor, COLORS, initialRange);\n  const ref4 = useRef(null);\n  useImperativeHandle(ref, () => ref4.current);\n  const [inputValue, setInputValue] = useState(1);\n\n  // Initialization curve\n  const desiredLengthBallNum = Math.floor(size[1] / divisor * ballPosition);\n  const [desiredLengthBall, setDesiredLengthBall] = useState(desiredLengthBallNum);\n  const [CanvasLengthBall, setCanvasLengthBall] = useState(size[1] * ballPosition);\n  const initialCustomHistoryFull = new Array(CanvasLength).fill(NaN);\n  const initialColorChangesFull = new Array(CanvasLength).fill(false);\n  const initialBallHistoryFull = new Array(CanvasLengthBall).fill(NaN);\n  const [customHistoryFull, setCustomHistoryFull] = useState(initialCustomHistoryFull);\n  const [colorChangesFull, setColorChangesFull] = useState(initialColorChangesFull);\n  const [ballHistoryFull, setBallHistoryFull] = useState(initialBallHistoryFull);\n  const resetStatesFull = () => {\n    setCustomHistoryFull([...initialCustomHistoryFull]);\n    setColorChangesFull([...initialColorChangesFull]);\n    setBallHistoryFull([...initialBallHistoryFull]);\n  };\n  const onChangeSlider = newValue => {\n    setInputValue(newValue);\n  };\n\n  // +++++++++++++++++++++++++++++++++++++++++++++++++\n  // Hooks useEffect parts\n\n  // initialize get pitch function + pause + draw background\n  useCanvasInitializeGetPitch(config, setPitch, updateCanvasHeight, setPlayingPause, canvasRef, initialRange, showNotes);\n\n  // set canvas size for different resolutions\n  useCanvasAdjustHeight(canvasRef, setCanvasHeight);\n\n  // store current pitch\n  useCanvasUpdatePitch(isPlaying, pitch, updateBallY);\n\n  // update mouse text\n  useCanvasMouseText(canvasRef, mouseHeight, initialRange);\n\n  // change Notes and hz display\n  useCanvasChangeHzAndNotes(setShowNotes, showNotes, showNotesPar, canvasRef, initialRange, setNotesLabel, setFreqLabel, canvasHeight);\n\n  // retry\n  useCanvasRetry(isRetry, divisor, setPlayingPause, resetStatesFull);\n\n  // redraw background when hz or notes changed\n  useCanvasRedrawBackground(canvasRef, showNotesPar, initialRange);\n\n  // +++++++++++++++++++++++++++++++++++++++++++++++++\n  // Unique useEffect parts\n\n  useEffect(() => {\n    setDesiredLengthBall(Math.floor(size[1] / divisor * ballPosition));\n    setCanvasLengthBall(Math.floor(size[1] * ballPosition));\n  }, [ballPosition, divisor]);\n  useEffect(() => {\n    const timer = setTimeout(() => {\n      resetStatesFull();\n    }, 100);\n    return () => clearTimeout(timer);\n  }, [desiredLengthBall, CanvasLengthBall]);\n\n  // Rendering balls and customization\n  useEffect(() => {\n    const canvas = canvasRef.current;\n    if (canvas) {\n      const ctx = canvas.getContext('2d');\n      // console.log(canvas.width);\n      if (ctx) {\n        // Clear the canvas\n        ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n        // Draw the background\n        drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes);\n\n        // New: Draw the ball's historical positions\n        for (var i = 0; i < ballHistoryFull.length; i++) {\n          ctx.beginPath();\n          const mappedValue = map(ballHistoryFull[i], initialRange[0], initialRange[1], size[0], -1);\n\n          // ctx.arc(i, ballHistoryFull[i], 5, 0, 2 * Math.PI);\n          ctx.arc(i, mappedValue, 5, 0, 2 * Math.PI);\n          ctx.fillStyle = realVoiceColor;\n          ctx.fill();\n          ctx.closePath();\n        }\n\n        //Plot current value\n        ctx.beginPath();\n        ctx.arc(size[1] * ballPosition, ballYCurr, 10, 0, 2 * Math.PI);\n        ctx.fillStyle = \"black\";\n        ctx.fill();\n        ctx.closePath();\n        for (let i = 0; i < customHistoryFull.length - 40; i++) {\n          ctx.beginPath();\n          const mappedJsonValue = map(customHistoryFull[i], initialRange[0], initialRange[1], size[0], 0);\n          if (colorChangesFull[CanvasLength - i]) {\n            ctx.fillStyle = closeVoiceColor;\n          } else {\n            ctx.fillStyle = targetVoiceColor;\n          }\n          ctx.fillRect(CanvasLength - i, mappedJsonValue, rectWidth, rectWidth);\n          ctx.fill();\n          ctx.closePath();\n        }\n        ctx.stroke();\n      }\n    }\n  }, [customHistoryFull, ballYCurr, initialRange]);\n  const updateBallHistoryFull = pitch => {\n    let tempHistoryFull = [...ballHistoryFull];\n    tempHistoryFull.splice(0, divisor);\n    for (let i = 0; i < divisor - 1; i++) {\n      tempHistoryFull.push(NaN);\n    }\n    tempHistoryFull.push(pitch);\n    setBallHistoryFull(tempHistoryFull);\n  };\n  const updateCustomHistoryFull = inputValue => {\n    let tempHistoryFull = [...customHistoryFull];\n    tempHistoryFull.splice(-divisor, divisor);\n    for (let i = 0; i < divisor; i++) {\n      tempHistoryFull.unshift(inputValue);\n    }\n    // tempHistoryFull.unshift(inputValue); \n    setCustomHistoryFull(tempHistoryFull);\n    setColorChangesFull(currentColors => {\n      const newColors = [...currentColors];\n      for (let i = 0; i < CanvasLengthBall; i++) {\n        let ballYtem = map(ballHistoryFull[i], initialRange[0], initialRange[1], size[0], -1);\n        if (!isNaN(ballHistoryFull[i])) {\n          const mappedJsonValue = map(customHistoryFull[CanvasLength - i], initialRange[0], initialRange[1], size[0], 0);\n          const difference = Math.abs(mappedJsonValue - ballYtem);\n          if (difference <= 40 && !isNaN(difference)) {\n            for (let j = i - divisor; j <= i + divisor && j < CanvasLengthBall; j++) {\n              newColors[j] = true;\n            }\n            i += divisor;\n          } else {\n            newColors[i] = false;\n          }\n        } else {\n          newColors[i] = newColors[i - 1];\n        }\n      }\n      return newColors;\n    });\n  };\n\n  // Update custom history when input value changes\n  useEffect(() => {\n    if (isPlaying) {\n      updateCustomHistoryFull(inputValue);\n      if (pitch !== null) {\n        updateBallHistoryFull(pitch);\n      } else {\n        updateBallHistoryFull(0);\n      }\n    }\n  }, [isPlaying, pitch]);\n\n  // first\n  // useEffect(() => {\n  //     setPlayingPause();\n  //     drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes);\n  //     let cleanup: () => void;\n  //     // Set the Canvas height when mounting the component for the first time\n  //     updateCanvasHeight();\n\n  //     // Set up resize event listener\n  //     window.addEventListener('resize', updateCanvasHeight);\n  //     (async () => {\n  //         cleanup = await getPitch(config, setPitch);\n  //     })();\n\n  //     return () => {\n  //         cleanup && cleanup();\n  //         window.removeEventListener('resize', updateCanvasHeight);\n  //     };\n  // }, []);\n\n  // useEffect(() => {\n  //     if (canvasRef.current) {\n  //         const rect = canvasRef.current.getBoundingClientRect();\n  //         setCanvasHeight(rect.height);\n  //     }\n  // }, []);\n\n  // useEffect(() => {\n  //     drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes); // Make sure the background is redrawn on state change\n  // }, [showNotes]);\n\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\n  return /*#__PURE__*/_jsxDEV(Row, {\n    style: {\n      maxHeight: \"27vw\",\n      marginBottom: \"5vw\",\n      maxWidth: \"100vw\"\n    },\n    children: [/*#__PURE__*/_jsxDEV(Col, {\n      span: 1\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 300,\n      columnNumber: 13\n    }, this), /*#__PURE__*/_jsxDEV(Col, {\n      span: 22,\n      style: {\n        position: 'relative'\n      },\n      children: [/*#__PURE__*/_jsxDEV(\"div\", {\n        className: \"yAxisArea\",\n        style: {\n          height: canvasHeight\n        },\n        children: /*#__PURE__*/_jsxDEV(Row, {\n          style: {\n            height: canvasHeight\n          },\n          children: [/*#__PURE__*/_jsxDEV(Col, {\n            span: 8,\n            children: showNotesPar ? /*#__PURE__*/_jsxDEV(\"div\", {\n              style: {\n                height: canvasHeight\n              },\n              className: \"yAxisLabel\",\n              children: \"Pitch (Notes)\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 307,\n              columnNumber: 39\n            }, this) : /*#__PURE__*/_jsxDEV(\"div\", {\n              style: {\n                height: canvasHeight\n              },\n              className: \"yAxisLabel\",\n              children: \"Pitch (Hz)\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 308,\n              columnNumber: 39\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 305,\n            columnNumber: 25\n          }, this), /*#__PURE__*/_jsxDEV(Col, {\n            span: 8,\n            children: /*#__PURE__*/_jsxDEV(\"div\", {\n              className: \"yAxisNumbers\",\n              style: {\n                height: canvasHeight * 1.039\n              },\n              children: showNotesPar ? (_notesLabel$map = notesLabel === null || notesLabel === void 0 ? void 0 : notesLabel.map((note, index) => /*#__PURE__*/_jsxDEV(\"div\", {\n                children: note\n              }, index, false, {\n                fileName: _jsxFileName,\n                lineNumber: 313,\n                columnNumber: 72\n              }, this))) !== null && _notesLabel$map !== void 0 ? _notesLabel$map : [] : (_freqLabel$map = freqLabel === null || freqLabel === void 0 ? void 0 : freqLabel.map((freq, index) => /*#__PURE__*/_jsxDEV(\"div\", {\n                children: freq\n              }, index, false, {\n                fileName: _jsxFileName,\n                lineNumber: 314,\n                columnNumber: 71\n              }, this))) !== null && _freqLabel$map !== void 0 ? _freqLabel$map : []\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 311,\n              columnNumber: 29\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 310,\n            columnNumber: 25\n          }, this), /*#__PURE__*/_jsxDEV(Col, {\n            span: 8,\n            children: /*#__PURE__*/_jsxDEV(\"div\", {\n              className: \"yAxisLines\",\n              style: {\n                height: canvasHeight\n              },\n              children: (_freqLabel$map2 = freqLabel === null || freqLabel === void 0 ? void 0 : freqLabel.map((_, index) => /*#__PURE__*/_jsxDEV(\"div\", {}, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 320,\n                columnNumber: 37\n              }, this))) !== null && _freqLabel$map2 !== void 0 ? _freqLabel$map2 : []\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 318,\n              columnNumber: 29\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 317,\n            columnNumber: 25\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 304,\n          columnNumber: 21\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 303,\n        columnNumber: 17\n      }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n        style: {\n          height: canvasHeight\n        },\n        children: [/*#__PURE__*/_jsxDEV(\"canvas\", {\n          ref: canvasRef,\n          onMouseMove: handleMouseMove,\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: 327,\n          columnNumber: 21\n        }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n          style: {\n            position: 'absolute',\n            top: canvasHeight,\n            left: 0,\n            width: canvasHeight * 3.486,\n            display: 'flex',\n            justifyContent: 'space-between',\n            fontSize: '12px',\n            marginLeft: '3vw',\n            height: '25px'\n          },\n          children: [...Array(11)].map((_, index) => /*#__PURE__*/_jsxDEV(\"div\", {\n            style: {\n              position: 'relative'\n            },\n            children: [/*#__PURE__*/_jsxDEV(\"div\", {\n              className: \"timeMarkerLine\"\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 350,\n              columnNumber: 33\n            }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n              className: \"timeMarkerNum\",\n              children: (15 / (divisor / 4) * (index / 10 - ballPosition)).toFixed(1)\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 351,\n              columnNumber: 33\n            }, this)]\n          }, index, true, {\n            fileName: _jsxFileName,\n            lineNumber: 349,\n            columnNumber: 29\n          }, this))\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 335,\n          columnNumber: 21\n        }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n          style: {\n            position: 'absolute',\n            top: canvasHeight * 1.12,\n            left: 0,\n            width: canvasHeight * 3.486,\n            display: 'flex',\n            justifyContent: 'center',\n            marginLeft: '3vw',\n            height: '50px'\n          },\n          className: \"XAxis\",\n          children: /*#__PURE__*/_jsxDEV(\"div\", {\n            children: \"Time (Seconds)\"\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 370,\n            columnNumber: 25\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 357,\n          columnNumber: 21\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 326,\n        columnNumber: 17\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 302,\n      columnNumber: 13\n    }, this), /*#__PURE__*/_jsxDEV(Col, {\n      span: 1,\n      children: /*#__PURE__*/_jsxDEV(\"div\", {\n        ref: ref4,\n        children: /*#__PURE__*/_jsxDEV(Slider, {\n          vertical: true\n          // style={{width: '100%'}}\n          //   tooltip={{open:true}}\n          ,\n          className: \"VerticalSlider\",\n          min: initialRange[0],\n          max: initialRange[1],\n          style: {\n            marginTop: 0,\n            height: canvasHeight\n          },\n          onChange: onChangeSlider,\n          defaultValue: 30\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 378,\n          columnNumber: 21\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 377,\n        columnNumber: 17\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 376,\n      columnNumber: 13\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 299,\n    columnNumber: 9\n  }, this);\n}, \"d7k2aSBB16RJX0Sd/D5vDdWVYR0=\", false, function () {\n  return [useCanvasHooks, useCanvasInitializeGetPitch, useCanvasAdjustHeight, useCanvasUpdatePitch, useCanvasMouseText, useCanvasChangeHzAndNotes, useCanvasRetry, useCanvasRedrawBackground];\n})), \"d7k2aSBB16RJX0Sd/D5vDdWVYR0=\", false, function () {\n  return [useCanvasHooks, useCanvasInitializeGetPitch, useCanvasAdjustHeight, useCanvasUpdatePitch, useCanvasMouseText, useCanvasChangeHzAndNotes, useCanvasRetry, useCanvasRedrawBackground];\n});\n_c2 = ConstantTxt;\nexport default ConstantTxt;\nvar _c, _c2;\n$RefreshReg$(_c, \"ConstantTxt$forwardRef\");\n$RefreshReg$(_c2, \"ConstantTxt\");","map":{"version":3,"names":["React","useEffect","useRef","forwardRef","useImperativeHandle","useState","map","drawBackground","Slider","Col","Row","useCanvasHooks","useCanvasMouseText","useCanvasRetry","useCanvasUpdatePitch","useCanvasAdjustHeight","useCanvasInitializeGetPitch","useCanvasChangeHzAndNotes","useCanvasRedrawBackground","jsxDEV","_jsxDEV","ConstantTxt","_s","_c","props","ref","_notesLabel$map","_freqLabel$map","_freqLabel$map2","initialRange","divisor","ballPosition","isRetry","setPlayingPause","COLORS","config","isPlaying","size","showNotesPar","pitch","setPitch","mouseHeight","setMouseHeight","realVoiceColor","targetVoiceColor","closeVoiceColor","ballYCurr","setBallYCurr","canvasRef","rectWidth","CanvasLength","canvasHeight","setCanvasHeight","showNotes","setShowNotes","offset","currentX","setCurrentX","initialcurrentX","notesLabel","setNotesLabel","freqLabel","setFreqLabel","updateBallY","updateCanvasHeight","handleMouseMove","ref4","current","inputValue","setInputValue","desiredLengthBallNum","Math","floor","desiredLengthBall","setDesiredLengthBall","CanvasLengthBall","setCanvasLengthBall","initialCustomHistoryFull","Array","fill","NaN","initialColorChangesFull","initialBallHistoryFull","customHistoryFull","setCustomHistoryFull","colorChangesFull","setColorChangesFull","ballHistoryFull","setBallHistoryFull","resetStatesFull","onChangeSlider","newValue","timer","setTimeout","clearTimeout","canvas","ctx","getContext","clearRect","width","height","i","length","beginPath","mappedValue","arc","PI","fillStyle","closePath","mappedJsonValue","fillRect","stroke","updateBallHistoryFull","tempHistoryFull","splice","push","updateCustomHistoryFull","unshift","currentColors","newColors","ballYtem","isNaN","difference","abs","j","style","maxHeight","marginBottom","maxWidth","children","span","fileName","_jsxFileName","lineNumber","columnNumber","position","className","note","index","freq","_","onMouseMove","id","border","top","left","display","justifyContent","fontSize","marginLeft","toFixed","vertical","min","max","marginTop","onChange","defaultValue","_c2","$RefreshReg$"],"sources":["D:/Project/UC_Trains_Voice/react-demo/src/Canvas/ConstantTxt.tsx"],"sourcesContent":["import React, { useContext, useEffect, useRef, forwardRef, useImperativeHandle, useState } from 'react';\r\nimport { adjustCanvasScale, map, drawBackground } from '../function/canvasDefault';\r\nimport { getPitch, IPitchDetectionConfig } from '../function/getPitch';\r\nimport { Slider } from 'antd';\r\nimport { Col, Row } from 'antd';\r\nimport '../CSS/VerticalSlider.css';\r\nimport { CONFIG, COLORS } from '../types/configTypes';\r\nimport { useCanvasHooks } from '../hooks/useCanvasHooks';\r\n\r\nimport useCanvasMouseText from '../hooksUseEffect/useCanvasMouseText';\r\nimport useCanvasRetry from '../hooksUseEffect/useCanvasRetry';\r\nimport useCanvasUpdatePitch from '../hooksUseEffect/useCanvasUpdatePitch';\r\nimport useCanvasAdjustHeight from '../hooksUseEffect/useCanvasAdjustHeight';\r\nimport useCanvasInitializeGetPitch from '../hooksUseEffect/useCanvasInitializeGetPitch';\r\nimport useCanvasChangeHzAndNotes from '../hooksUseEffect/useCanvasChangeHzAndNotes';\r\nimport useCanvasRedrawBackground from '../hooksUseEffect/useCanvasRedrawBackground';\r\n\r\n\r\ninterface ConstantTxtProps {\r\n    size: number[];\r\n    config: CONFIG;\r\n    COLORS: COLORS;\r\n    isPlaying: boolean;\r\n    showNotesPar: boolean;\r\n    setPlayingPause: () => void;\r\n    isRetry: boolean;\r\n    ballPosition: number;\r\n    divisor: number;\r\n    initialRange: number[];\r\n}\r\n\r\nconst ConstantTxt = forwardRef<HTMLDivElement, ConstantTxtProps>((props, ref) => {\r\n    const {\r\n        initialRange,\r\n        divisor,\r\n        ballPosition,\r\n        isRetry,\r\n        setPlayingPause,\r\n        COLORS,\r\n        config,\r\n        isPlaying,\r\n        size,\r\n        showNotesPar,\r\n    } = props;\r\n\r\n    // =================================================================\r\n    const {\r\n        pitch,\r\n        setPitch,\r\n        mouseHeight,\r\n        setMouseHeight,\r\n        realVoiceColor,\r\n        targetVoiceColor,\r\n        closeVoiceColor,\r\n        ballYCurr,\r\n        setBallYCurr,\r\n        canvasRef,\r\n        rectWidth,\r\n        CanvasLength,\r\n        canvasHeight,\r\n        setCanvasHeight,\r\n        showNotes,\r\n        setShowNotes,\r\n        offset,\r\n        currentX,\r\n        setCurrentX,\r\n        initialcurrentX,\r\n        notesLabel,\r\n        setNotesLabel,\r\n        freqLabel,\r\n        setFreqLabel,\r\n\r\n        updateBallY,\r\n        updateCanvasHeight,\r\n        handleMouseMove,\r\n    } = useCanvasHooks(size, divisor, COLORS, initialRange);\r\n\r\n    const ref4 = useRef<HTMLDivElement>(null);\r\n    useImperativeHandle(ref, () => ref4.current as HTMLDivElement);\r\n    const [inputValue, setInputValue] = useState(1);\r\n\r\n    // Initialization curve\r\n    const desiredLengthBallNum = Math.floor(size[1] / divisor * ballPosition);\r\n    const [desiredLengthBall, setDesiredLengthBall] = useState<number>(desiredLengthBallNum);\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(CanvasLengthBall).fill(NaN);\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 resetStatesFull = () => {\r\n        setCustomHistoryFull([...initialCustomHistoryFull]);\r\n        setColorChangesFull([...initialColorChangesFull]);\r\n        setBallHistoryFull([...initialBallHistoryFull]);\r\n    };\r\n\r\n    const onChangeSlider = (newValue: number) => {\r\n        setInputValue(newValue);\r\n    };\r\n\r\n\r\n    // +++++++++++++++++++++++++++++++++++++++++++++++++\r\n    // Hooks useEffect parts\r\n\r\n    // initialize get pitch function + pause + draw background\r\n    useCanvasInitializeGetPitch(config, setPitch, updateCanvasHeight, setPlayingPause, canvasRef, initialRange, showNotes);\r\n\r\n    // set canvas size for different resolutions\r\n    useCanvasAdjustHeight(canvasRef, setCanvasHeight);\r\n\r\n    // store current pitch\r\n    useCanvasUpdatePitch(isPlaying, pitch, updateBallY);\r\n\r\n    // update mouse text\r\n    useCanvasMouseText(canvasRef, mouseHeight, initialRange);\r\n\r\n    // change Notes and hz display\r\n    useCanvasChangeHzAndNotes(setShowNotes, showNotes, showNotesPar, canvasRef, initialRange, setNotesLabel, setFreqLabel, canvasHeight);\r\n\r\n    // retry\r\n    useCanvasRetry(isRetry, divisor, setPlayingPause, resetStatesFull);\r\n\r\n    // redraw background when hz or notes changed\r\n    useCanvasRedrawBackground(canvasRef, showNotesPar, initialRange);\r\n\r\n\r\n\r\n    // +++++++++++++++++++++++++++++++++++++++++++++++++\r\n    // Unique useEffect parts\r\n\r\n\r\n    useEffect(() => {\r\n        setDesiredLengthBall(Math.floor(size[1] / divisor * ballPosition));\r\n        setCanvasLengthBall(Math.floor(size[1] * ballPosition));\r\n    }, [ballPosition, divisor])\r\n\r\n    useEffect(() => {\r\n        const timer = setTimeout(() => {\r\n            resetStatesFull();\r\n        }, 100);\r\n        return () => clearTimeout(timer);\r\n    }, [desiredLengthBall, CanvasLengthBall])\r\n\r\n    // Rendering balls and customization\r\n    useEffect(() => {\r\n        const canvas = canvasRef.current;\r\n        if (canvas) {\r\n            const ctx = canvas.getContext('2d');\r\n            // console.log(canvas.width);\r\n            if (ctx) {\r\n                // Clear the canvas\r\n                ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n\r\n                // Draw the background\r\n                drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes);\r\n\r\n                // New: Draw the ball's historical positions\r\n                for (var i = 0; i < ballHistoryFull.length; i++) {\r\n                    ctx.beginPath();\r\n                    const mappedValue = map(ballHistoryFull[i], initialRange[0], initialRange[1], size[0], -1);\r\n\r\n                    // ctx.arc(i, ballHistoryFull[i], 5, 0, 2 * Math.PI);\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\r\n                //Plot current value\r\n                ctx.beginPath();\r\n                ctx.arc(size[1] * ballPosition, ballYCurr, 10, 0, 2 * Math.PI);\r\n                ctx.fillStyle = \"black\";\r\n                ctx.fill();\r\n                ctx.closePath();\r\n\r\n                for (let i = 0; i < customHistoryFull.length - 40; i++) {\r\n                    ctx.beginPath();\r\n                    const mappedJsonValue = map(customHistoryFull[i], initialRange[0], initialRange[1], size[0], 0);\r\n\r\n                    if (colorChangesFull[CanvasLength - i]) {\r\n                        ctx.fillStyle = closeVoiceColor;\r\n                    } else {\r\n                        ctx.fillStyle = targetVoiceColor;\r\n                    }\r\n\r\n                    ctx.fillRect(CanvasLength - i, mappedJsonValue, rectWidth, rectWidth);\r\n                    ctx.fill();\r\n                    ctx.closePath();\r\n                }\r\n                ctx.stroke();\r\n            }\r\n        }\r\n\r\n    }, [customHistoryFull, ballYCurr, initialRange]);\r\n\r\n    const updateBallHistoryFull = (pitch: number) => {\r\n        let tempHistoryFull = [...ballHistoryFull];\r\n        tempHistoryFull.splice(0, divisor);\r\n        for (let i = 0; i < divisor - 1; i++) {\r\n            tempHistoryFull.push(NaN);\r\n        }\r\n        tempHistoryFull.push(pitch);\r\n        setBallHistoryFull(tempHistoryFull);\r\n    };\r\n\r\n    const updateCustomHistoryFull = (inputValue: number) => {\r\n        let tempHistoryFull = [...customHistoryFull];\r\n        tempHistoryFull.splice(-divisor, divisor);\r\n        for (let i = 0; i < divisor; i++) {\r\n            tempHistoryFull.unshift(inputValue);\r\n        }\r\n        // tempHistoryFull.unshift(inputValue); \r\n        setCustomHistoryFull(tempHistoryFull);\r\n\r\n        setColorChangesFull(currentColors => {\r\n            const newColors = [...currentColors];\r\n            for (let i = 0; i < CanvasLengthBall; i++) {\r\n                let ballYtem = map(ballHistoryFull[i], initialRange[0], initialRange[1], size[0], -1);\r\n                if (!isNaN(ballHistoryFull[i])) {\r\n                    const mappedJsonValue = map(customHistoryFull[CanvasLength - i], initialRange[0], initialRange[1], size[0], 0);\r\n\r\n                    const difference = Math.abs(mappedJsonValue - ballYtem);\r\n\r\n                    if (difference <= 40 && !isNaN(difference)) {\r\n                        for (let j = i - divisor; j <= i + divisor && j < CanvasLengthBall; j++) {\r\n                            newColors[j] = true;\r\n                        }\r\n                        i += divisor;\r\n                    }\r\n                    else {\r\n                        newColors[i] = false;\r\n                    }\r\n                } else {\r\n                    newColors[i] = newColors[i - 1];\r\n                }\r\n            }\r\n            return newColors;\r\n        });\r\n\r\n    };\r\n\r\n    // Update custom history when input value changes\r\n    useEffect(() => {\r\n        if (isPlaying) {\r\n            updateCustomHistoryFull(inputValue);\r\n            if (pitch !== null) {\r\n                updateBallHistoryFull(pitch);\r\n            } else {\r\n                updateBallHistoryFull(0);\r\n            }\r\n        }\r\n    }, [isPlaying, pitch]);\r\n\r\n    // first\r\n    // useEffect(() => {\r\n    //     setPlayingPause();\r\n    //     drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes);\r\n    //     let cleanup: () => void;\r\n    //     // Set the Canvas height when mounting the component for the first time\r\n    //     updateCanvasHeight();\r\n\r\n    //     // Set up resize event listener\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    // 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    // 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    return (\r\n        <Row style={{ maxHeight: \"27vw\", marginBottom: \"5vw\", maxWidth: \"100vw\" }}>\r\n            <Col span={1}>\r\n            </Col>\r\n            <Col span={22} style={{ position: 'relative' }}>\r\n                <div className=\"yAxisArea\" style={{ height: canvasHeight }}>\r\n                    <Row style={{ height: canvasHeight }}>\r\n                        <Col span={8}>\r\n                        {showNotesPar\r\n                                    ? <div style={{ height: canvasHeight }} className=\"yAxisLabel\">Pitch (Notes)</div>\r\n                                    : <div style={{ height: canvasHeight }} className=\"yAxisLabel\">Pitch (Hz)</div>}\r\n                        </Col>\r\n                        <Col span={8}>\r\n                            <div className=\"yAxisNumbers\" style={{ height: canvasHeight * 1.039 }}>\r\n                                {showNotesPar\r\n                                    ? notesLabel?.map((note, index) => <div key={index}>{note}</div>) ?? []\r\n                                    : freqLabel?.map((freq, index) => <div key={index}>{freq}</div>) ?? []}\r\n                            </div>\r\n                        </Col>\r\n                        <Col span={8}>\r\n                            <div className=\"yAxisLines\" style={{ height: canvasHeight }}>\r\n                                {freqLabel?.map((_, index) => (\r\n                                    <div></div>\r\n                                )) ?? []}\r\n                            </div>\r\n                        </Col>\r\n                    </Row>\r\n                </div>\r\n                <div style={{ height: canvasHeight }}>\r\n                    <canvas\r\n                        ref={canvasRef}\r\n                        onMouseMove={handleMouseMove}\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                            width: canvasHeight * 3.486,\r\n                            display: 'flex',\r\n                            justifyContent: 'space-between',\r\n                            fontSize: '12px',\r\n                            marginLeft: '3vw',\r\n                            height: '25px',\r\n                        }}\r\n                    >\r\n                        {[...Array(11)].map((_, index) => (\r\n                            <div key={index} style={{ position: 'relative' }}>\r\n                                <div className=\"timeMarkerLine\" />\r\n                                <span className='timeMarkerNum'>\r\n                                    {((15 / (divisor / 4)) * (index / 10 - ballPosition)).toFixed(1)}\r\n                                </span>\r\n                            </div>\r\n                        ))}\r\n                    </div>\r\n                    <div\r\n                        style={{\r\n                            position: 'absolute',\r\n                            top: canvasHeight * (1.12),\r\n                            left: 0,\r\n                            width: canvasHeight * 3.486,\r\n                            display: 'flex',\r\n                            justifyContent: 'center',\r\n                            marginLeft: '3vw',\r\n                            height: '50px',\r\n                        }}\r\n                        className='XAxis'\r\n                    >\r\n                        <div>Time (Seconds)</div>\r\n\r\n                    </div>\r\n\r\n                </div>\r\n            </Col>\r\n            <Col span={1}>\r\n                <div ref={ref4} >\r\n                    <Slider\r\n                        vertical\r\n                        // style={{width: '100%'}}\r\n                        //   tooltip={{open:true}}\r\n                        className='VerticalSlider'\r\n                        min={initialRange[0]}\r\n                        max={initialRange[1]}\r\n                        style={{ marginTop: 0, height: canvasHeight }}\r\n                        onChange={onChangeSlider}\r\n                        defaultValue={30} />\r\n                </div>\r\n            </Col>\r\n        </Row>\r\n\r\n\r\n\r\n    );\r\n});\r\n\r\nexport default ConstantTxt;\r\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}