{"ast":null,"code":"var _jsxFileName = \"D:\\\\Project\\\\UC_Trains_Voice\\\\react-demo\\\\src\\\\Canvas\\\\ConstantVol.tsx\",\n  _s = $RefreshSig$();\nimport React, { useEffect, useRef, forwardRef, useImperativeHandle, useState } from 'react';\nimport { map, drawBackground } from '../function/canvasDefault';\nimport { getPitch } from '../function/getPitch';\nimport { Slider } from 'antd';\nimport { Col, Row } from 'antd';\nimport { useCanvasHooks } from '../hooks/useCanvasHooks';\nimport useCanvasChangeHzAndNotes from '../hooksUseEffect/useCanvasChangeHzAndNotes';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst ConstantVol = /*#__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    volume,\n    historyMode,\n    LAMP_COLORS\n  } = props;\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 [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 [ballSizeHistoryFull, setBallSizeHistoryFull] = useState(initialBallHistoryFull);\n  const resetStatesFull = () => {\n    setCustomHistoryFull([...initialCustomHistoryFull]);\n    setColorChangesFull([...initialColorChangesFull]);\n    setBallHistoryFull([...initialBallHistoryFull]);\n    setBallSizeHistoryFull([...initialBallHistoryFull]);\n  };\n  const desiredLength = Math.floor(size[1] / divisor);\n  const desiredLengthBallNum = Math.floor(size[1] / divisor * ballPosition);\n  const [desiredLengthBall, setDesiredLengthBall] = useState(desiredLengthBallNum);\n  const initialCustomHistory = new Array(desiredLength).fill(NaN);\n  const initialColorChanges = new Array(desiredLength).fill(true);\n  const initialBallHistory = new Array(desiredLengthBall).fill(NaN);\n  const [customHistory, setCustomHistory] = useState(initialCustomHistory);\n  const [colorChanges, setColorChanges] = useState(initialColorChanges);\n  const [ballHistory, setBallHistory] = useState(initialBallHistory);\n  const resetStates = () => {\n    setCustomHistory([...initialCustomHistory]);\n    setColorChanges([...initialColorChanges]);\n    setBallHistory([...initialBallHistory]);\n  };\n\n  // isPlayingRef.current = isPlaying;\n  const [inputValue, setInputValue] = useState(1);\n  const onChange = newValue => {\n    setInputValue(newValue);\n  };\n  // change Notes and hz display\n  useCanvasChangeHzAndNotes(setShowNotes, showNotes, showNotesPar, canvasRef, initialRange, setNotesLabel, setFreqLabel, canvasHeight);\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      resetStates();\n      resetStatesFull();\n    }, 100);\n    return () => clearTimeout(timer);\n  }, [desiredLengthBall, CanvasLengthBall]);\n\n  // retry\n  useEffect(() => {\n    setPlayingPause();\n    resetStates();\n    resetStatesFull();\n  }, [isRetry, divisor]);\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          let ballSize;\n          if (historyMode === 'Size' || historyMode === 'Mixed') {\n            if (ballSizeHistoryFull[i] < -80) {\n              ballSize = 3;\n            } else if (ballSizeHistoryFull[i] > -50) {\n              ballSize = 7;\n            } else {\n              ballSize = 5;\n            }\n          } else {\n            ballSize = 5;\n          }\n          let ballColor;\n          if (historyMode === 'Color' || historyMode === 'Mixed') {\n            if (ballSizeHistoryFull[i] < -80) {\n              ballColor = LAMP_COLORS[0];\n            } else if (ballSizeHistoryFull[i] > -50) {\n              ballColor = LAMP_COLORS[2];\n            } else {\n              ballColor = LAMP_COLORS[1];\n            }\n          } else {\n            ballColor = realVoiceColor;\n          }\n          ctx.arc(i, mappedValue, ballSize, 0, 2 * Math.PI);\n          ctx.fillStyle = ballColor;\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  useEffect(() => {\n    if (isPlaying) {\n      updateBallY(pitch);\n    }\n  }, [pitch, isPlaying]);\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 updateBallSizeHistoryFull = volumeVal => {\n    let tempHistoryFull = [...ballSizeHistoryFull];\n    tempHistoryFull.splice(0, divisor);\n    for (let i = 0; i < divisor - 1; i++) {\n      tempHistoryFull.push(NaN);\n    }\n    tempHistoryFull.push(volumeVal);\n    setBallSizeHistoryFull(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        updateBallSizeHistoryFull(volume);\n      } else {\n        updateBallHistoryFull(0);\n        updateBallSizeHistoryFull(0);\n      }\n      // updateBallHistoryFull(ballY);\n    }\n  }, [isPlaying, pitch]);\n\n  // first\n  useEffect(() => {\n    setPlayingPause();\n    drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes);\n    console.log(showNotesPar);\n    let cleanup;\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    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  const toggleShowNotes = () => {\n    setShowNotes(!showNotes);\n    const canvas = canvasRef.current;\n    // console.log(showNotes);\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  useEffect(() => {\n    drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes); // Make sure the background is redrawn on state change\n  }, [showNotes]);\n  useEffect(() => {\n    console.log(showNotesPar);\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      marginBottom: \"5vw\",\n      maxWidth: \"100vw\"\n    },\n    children: [/*#__PURE__*/_jsxDEV(Col, {\n      span: 1\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 366,\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: 377,\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: 378,\n              columnNumber: 39\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 375,\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: 383,\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: 384,\n                columnNumber: 71\n              }, this))) !== null && _freqLabel$map !== void 0 ? _freqLabel$map : []\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 381,\n              columnNumber: 29\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 380,\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: 390,\n                columnNumber: 37\n              }, this))) !== null && _freqLabel$map2 !== void 0 ? _freqLabel$map2 : []\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 388,\n              columnNumber: 29\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 387,\n            columnNumber: 25\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 374,\n          columnNumber: 21\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 373,\n        columnNumber: 13\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: 397,\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: 420,\n              columnNumber: 33\n            }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n              className: \"timeMarkerNum\",\n              children: [(15 / (divisor / 4) * (index / 10 - ballPosition)).toFixed(1), \"s\"]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 421,\n              columnNumber: 33\n            }, this)]\n          }, index, true, {\n            fileName: _jsxFileName,\n            lineNumber: 419,\n            columnNumber: 29\n          }, this))\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 405,\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: 440,\n            columnNumber: 25\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 427,\n          columnNumber: 21\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 396,\n        columnNumber: 17\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 371,\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\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: 30\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 452,\n          columnNumber: 21\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 451,\n        columnNumber: 17\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 450,\n      columnNumber: 13\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 364,\n    columnNumber: 9\n  }, this);\n}, \"cnZDhJSebjxKTZiWEFBdOmambtY=\", false, function () {\n  return [useCanvasHooks, useCanvasChangeHzAndNotes];\n})), \"cnZDhJSebjxKTZiWEFBdOmambtY=\", false, function () {\n  return [useCanvasHooks, useCanvasChangeHzAndNotes];\n});\n_c2 = ConstantVol;\nexport default ConstantVol;\nvar _c, _c2;\n$RefreshReg$(_c, \"ConstantVol$forwardRef\");\n$RefreshReg$(_c2, \"ConstantVol\");","map":{"version":3,"names":["React","useEffect","useRef","forwardRef","useImperativeHandle","useState","map","drawBackground","getPitch","Slider","Col","Row","useCanvasHooks","useCanvasChangeHzAndNotes","jsxDEV","_jsxDEV","ConstantVol","_s","_c","props","ref","_notesLabel$map","_freqLabel$map","_freqLabel$map2","initialRange","divisor","ballPosition","isRetry","setPlayingPause","COLORS","config","isPlaying","size","showNotesPar","volume","historyMode","LAMP_COLORS","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","CanvasLengthBall","setCanvasLengthBall","initialCustomHistoryFull","Array","fill","NaN","initialColorChangesFull","initialBallHistoryFull","customHistoryFull","setCustomHistoryFull","colorChangesFull","setColorChangesFull","ballHistoryFull","setBallHistoryFull","ballSizeHistoryFull","setBallSizeHistoryFull","resetStatesFull","desiredLength","Math","floor","desiredLengthBallNum","desiredLengthBall","setDesiredLengthBall","initialCustomHistory","initialColorChanges","initialBallHistory","customHistory","setCustomHistory","colorChanges","setColorChanges","ballHistory","setBallHistory","resetStates","inputValue","setInputValue","onChange","newValue","timer","setTimeout","clearTimeout","canvas","ctx","getContext","clearRect","width","height","i","length","beginPath","mappedValue","ballSize","ballColor","arc","PI","fillStyle","closePath","mappedJsonValue","fillRect","stroke","updateBallHistoryFull","tempHistoryFull","splice","push","updateBallSizeHistoryFull","volumeVal","updateCustomHistoryFull","unshift","currentColors","newColors","ballYtem","isNaN","difference","abs","j","console","log","cleanup","window","addEventListener","removeEventListener","rect","getBoundingClientRect","toggleShowNotes","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","defaultValue","_c2","$RefreshReg$"],"sources":["D:/Project/UC_Trains_Voice/react-demo/src/Canvas/ConstantVol.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 hark from 'hark';\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 ConstantVolProps {\r\n    size: number[];\r\n    config: CONFIG;\r\n    COLORS: COLORS;\r\n    isPlaying: boolean;\r\n    showNotesPar: boolean;\r\n    setPlaying: () => void;\r\n    setPlayingPause: () => void;\r\n    isRetry: boolean;\r\n    ballPosition: number;\r\n    divisor: number;\r\n    initialRange: number[];\r\n    volume: number;\r\n    historyMode: string;\r\n    LAMP_COLORS: string[];\r\n}\r\n\r\nconst ConstantVol = forwardRef<HTMLDivElement, ConstantVolProps>((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      volume,\r\n      historyMode,\r\n      LAMP_COLORS,\r\n    } = props;\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\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 [ballSizeHistoryFull, setBallSizeHistoryFull] = useState<number[]>(initialBallHistoryFull);\r\n    const resetStatesFull = () => {\r\n        setCustomHistoryFull([...initialCustomHistoryFull]);\r\n        setColorChangesFull([...initialColorChangesFull]);\r\n        setBallHistoryFull([...initialBallHistoryFull]);\r\n        setBallSizeHistoryFull([...initialBallHistoryFull]);\r\n    };\r\n\r\n    const desiredLength = Math.floor(size[1] / divisor);\r\n    const desiredLengthBallNum = Math.floor(size[1] / divisor * ballPosition);\r\n    const [desiredLengthBall, setDesiredLengthBall] = useState<number>(desiredLengthBallNum);\r\n\r\n\r\n    const initialCustomHistory = new Array(desiredLength).fill(NaN);\r\n    const initialColorChanges = new Array(desiredLength).fill(true);\r\n    const initialBallHistory = new Array(desiredLengthBall).fill(NaN);\r\n\r\n    const [customHistory, setCustomHistory] = useState<number[]>(initialCustomHistory);\r\n    const [colorChanges, setColorChanges] = useState<boolean[]>(initialColorChanges);\r\n    const [ballHistory, setBallHistory] = useState<number[]>(initialBallHistory);\r\n    const resetStates = () => {\r\n        setCustomHistory([...initialCustomHistory]);\r\n        setColorChanges([...initialColorChanges]);\r\n        setBallHistory([...initialBallHistory]);\r\n    };\r\n\r\n    // isPlayingRef.current = isPlaying;\r\n    const [inputValue, setInputValue] = useState(1);\r\n\r\n    const onChange = (newValue: number) => {\r\n        setInputValue(newValue);\r\n    };\r\n    // change Notes and hz display\r\n    useCanvasChangeHzAndNotes(setShowNotes, showNotes, showNotesPar, canvasRef, initialRange, setNotesLabel, setFreqLabel, canvasHeight);\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            resetStates();\r\n            resetStatesFull();\r\n        }, 100);\r\n        return () => clearTimeout(timer);\r\n\r\n    }, [desiredLengthBall, CanvasLengthBall])\r\n\r\n    // retry\r\n    useEffect(() => {\r\n        setPlayingPause();\r\n        resetStates();\r\n        resetStatesFull();\r\n    }, [isRetry, divisor])\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                        let ballSize;\r\n                        if (historyMode === 'Size' || historyMode === 'Mixed') {\r\n                          if (ballSizeHistoryFull[i] < -80) {\r\n                            ballSize = 3;\r\n                          } else if (ballSizeHistoryFull[i] > -50) {\r\n                            ballSize = 7;\r\n                          } else {\r\n                            ballSize = 5;\r\n                          }\r\n                        } else {\r\n                          ballSize = 5;\r\n                        }\r\n\r\n                        let ballColor;\r\n                        if (historyMode === 'Color' || historyMode === 'Mixed') {\r\n                          if (ballSizeHistoryFull[i] < -80) {\r\n                            ballColor = LAMP_COLORS[0];\r\n                          } else if (ballSizeHistoryFull[i] > -50) {\r\n                            ballColor = LAMP_COLORS[2]; \r\n                          } else {\r\n                            ballColor = LAMP_COLORS[1]; \r\n                          }\r\n                        } else {\r\n                          ballColor = realVoiceColor; \r\n                        }\r\n                        \r\n                        ctx.arc(i, mappedValue, ballSize, 0, 2 * Math.PI);\r\n                        ctx.fillStyle = ballColor;\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    useEffect(() => {\r\n        if (isPlaying) {\r\n          updateBallY(pitch);\r\n        }\r\n    \r\n      }, [pitch,isPlaying]);\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 updateBallSizeHistoryFull = (volumeVal: number) => {\r\n        let tempHistoryFull = [...ballSizeHistoryFull];\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(volumeVal);\r\n        setBallSizeHistoryFull(tempHistoryFull);\r\n    };\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                updateBallSizeHistoryFull(volume);\r\n            } else {\r\n                updateBallHistoryFull(0);\r\n                updateBallSizeHistoryFull(0);\r\n            }\r\n            // updateBallHistoryFull(ballY);\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        console.log(showNotesPar);\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    const toggleShowNotes = () => {\r\n        setShowNotes(!showNotes);\r\n        const canvas = canvasRef.current;\r\n        // console.log(showNotes);\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    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        console.log(showNotesPar);\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            {/* <div className=\"color-block\"> */}\r\n            <Col span={1}>\r\n                {/* <div style={{ writingMode: 'vertical-rl', transform: 'rotate(180deg)' }}>\r\n                Pitch/(Hz)\r\n            </div> */}\r\n            </Col>\r\n            <Col span={22} style={{ position: 'relative' }}>\r\n\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)}s\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\r\n\r\n\r\n\r\n            </Col>\r\n            <Col span={1}>\r\n                <div  ref = {ref4} >\r\n                    <Slider\r\n                        vertical\r\n                       \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={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 ConstantVol;\r\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}