{"ast":null,"code":"var _jsxFileName = \"/var/www/gavt/react-demo/src/Canvas/ConstantVol.tsx\",\n  _s = $RefreshSig$();\nimport React, { useEffect, forwardRef, useState } from 'react';\nimport { map, drawBackground } from '../function/canvasDefault';\nimport { Slider } from 'antd';\nimport { Col, Row } from 'antd';\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 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    realVoiceColor,\n    targetVoiceColor,\n    closeVoiceColor,\n    ballYCurr,\n    canvasRef,\n    rectWidth,\n    CanvasLength,\n    canvasHeight,\n    setCanvasHeight,\n    showNotes,\n    setShowNotes,\n    notesLabel,\n    setNotesLabel,\n    freqLabel,\n    setFreqLabel,\n    updateBallY,\n    updateCanvasHeight,\n    handleMouseMove\n  } = useCanvasHooks(size, divisor, COLORS, initialRange);\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 desiredLengthBallNum = Math.floor(size[1] / divisor * ballPosition);\n  const [desiredLengthBall, setDesiredLengthBall] = useState(desiredLengthBallNum);\n  // isPlayingRef.current = isPlaying;\n  const [inputValue, setInputValue] = useState(1);\n  const onChange = 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      if (ctx) {\n        // Clear the canvas\n        const textX = canvas.width - 100;\n        const textY = 20;\n        ctx.clearRect(0, 0, textX - 5, canvas.height);\n        ctx.clearRect(0, textY + 5, canvas.width, canvas.height - (textY + 5));\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  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    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    }\n  }, [isPlaying, pitch]);\n  return /*#__PURE__*/_jsxDEV(Row, {\n    className: \"canvasMain\",\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: 294,\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: 303,\n              columnNumber: 35\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: 304,\n              columnNumber: 35\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 301,\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: 309,\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: 310,\n                columnNumber: 71\n              }, this))) !== null && _freqLabel$map !== void 0 ? _freqLabel$map : []\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 307,\n              columnNumber: 29\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 306,\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: 316,\n                columnNumber: 37\n              }, this))) !== null && _freqLabel$map2 !== void 0 ? _freqLabel$map2 : []\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 314,\n              columnNumber: 29\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 313,\n            columnNumber: 25\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 300,\n          columnNumber: 21\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 299,\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: 323,\n          columnNumber: 21\n        }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n          className: \"XAxisNum\",\n          style: {\n            top: canvasHeight,\n            width: canvasHeight * 3.486\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: 341,\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: 342,\n              columnNumber: 33\n            }, this)]\n          }, index, true, {\n            fileName: _jsxFileName,\n            lineNumber: 340,\n            columnNumber: 29\n          }, this))\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 331,\n          columnNumber: 21\n        }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n          style: {\n            top: canvasHeight * 1.12,\n            width: canvasHeight * 3.486\n          },\n          className: \"XAxis\",\n          children: /*#__PURE__*/_jsxDEV(\"div\", {\n            children: \"Time (Seconds)\"\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 355,\n            columnNumber: 25\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 348,\n          columnNumber: 21\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 322,\n        columnNumber: 17\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 297,\n      columnNumber: 13\n    }, this), /*#__PURE__*/_jsxDEV(Col, {\n      span: 1,\n      children: /*#__PURE__*/_jsxDEV(\"div\", {\n        children: /*#__PURE__*/_jsxDEV(Slider, {\n          vertical: true,\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: 363,\n          columnNumber: 21\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 362,\n        columnNumber: 17\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 361,\n      columnNumber: 13\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 293,\n    columnNumber: 9\n  }, this);\n}, \"8i7avoYOsbFplLDqFlytpYNHMLY=\", false, function () {\n  return [useCanvasHooks, useCanvasInitializeGetPitch, useCanvasAdjustHeight, useCanvasUpdatePitch, useCanvasMouseText, useCanvasChangeHzAndNotes, useCanvasRetry, useCanvasRedrawBackground];\n})), \"8i7avoYOsbFplLDqFlytpYNHMLY=\", false, function () {\n  return [useCanvasHooks, useCanvasInitializeGetPitch, useCanvasAdjustHeight, useCanvasUpdatePitch, useCanvasMouseText, useCanvasChangeHzAndNotes, useCanvasRetry, useCanvasRedrawBackground];\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","forwardRef","useState","map","drawBackground","Slider","Col","Row","useCanvasHooks","useCanvasMouseText","useCanvasRetry","useCanvasUpdatePitch","useCanvasAdjustHeight","useCanvasInitializeGetPitch","useCanvasChangeHzAndNotes","useCanvasRedrawBackground","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","realVoiceColor","targetVoiceColor","closeVoiceColor","ballYCurr","canvasRef","rectWidth","CanvasLength","canvasHeight","setCanvasHeight","showNotes","setShowNotes","notesLabel","setNotesLabel","freqLabel","setFreqLabel","updateBallY","updateCanvasHeight","handleMouseMove","CanvasLengthBall","setCanvasLengthBall","initialCustomHistoryFull","Array","fill","NaN","initialColorChangesFull","initialBallHistoryFull","customHistoryFull","setCustomHistoryFull","colorChangesFull","setColorChangesFull","ballHistoryFull","setBallHistoryFull","ballSizeHistoryFull","setBallSizeHistoryFull","resetStatesFull","desiredLengthBallNum","Math","floor","desiredLengthBall","setDesiredLengthBall","inputValue","setInputValue","onChange","newValue","timer","setTimeout","clearTimeout","canvas","current","ctx","getContext","textX","width","textY","clearRect","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","className","style","maxHeight","marginBottom","maxWidth","children","span","fileName","_jsxFileName","lineNumber","columnNumber","position","note","index","freq","_","onMouseMove","id","border","top","toFixed","vertical","min","max","marginTop","defaultValue","_c2","$RefreshReg$"],"sources":["/var/www/gavt/react-demo/src/Canvas/ConstantVol.tsx"],"sourcesContent":["import React, { useEffect, forwardRef, useState } from 'react';\nimport { map, drawBackground } from '../function/canvasDefault';\nimport { Slider } from 'antd';\nimport { Col, Row } from 'antd';\nimport { CONFIG, COLORS } from '../types/configTypes';\nimport { useCanvasHooks } from '../hooks/useCanvasHooks';\n\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';\n\n\ninterface ConstantVolProps {\n    size: number[];\n    config: CONFIG;\n    COLORS: COLORS;\n    isPlaying: boolean;\n    showNotesPar: boolean;\n    setPlaying: () => void;\n    setPlayingPause: () => void;\n    isRetry: boolean;\n    ballPosition: number;\n    divisor: number;\n    initialRange: number[];\n    volume: number;\n    historyMode: string;\n    LAMP_COLORS: string[];\n}\n\nconst ConstantVol = forwardRef<HTMLDivElement, ConstantVolProps>((props, ref) => {\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        realVoiceColor,\n        targetVoiceColor,\n        closeVoiceColor,\n        ballYCurr,\n        canvasRef,\n        rectWidth,\n        CanvasLength,\n        canvasHeight,\n        setCanvasHeight,\n        showNotes,\n        setShowNotes,\n        notesLabel,\n        setNotesLabel,\n        freqLabel,\n        setFreqLabel,\n\n        updateBallY,\n        updateCanvasHeight,\n        handleMouseMove,\n    } = useCanvasHooks(size, divisor, COLORS, initialRange);\n\n\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(CanvasLengthBall).fill(NaN);\n    const [customHistoryFull, setCustomHistoryFull] = useState<number[]>(initialCustomHistoryFull);\n    const [colorChangesFull, setColorChangesFull] = useState<boolean[]>(initialColorChangesFull);\n    const [ballHistoryFull, setBallHistoryFull] = useState<number[]>(initialBallHistoryFull);\n    const [ballSizeHistoryFull, setBallSizeHistoryFull] = useState<number[]>(initialBallHistoryFull);\n    const resetStatesFull = () => {\n        setCustomHistoryFull([...initialCustomHistoryFull]);\n        setColorChangesFull([...initialColorChangesFull]);\n        setBallHistoryFull([...initialBallHistoryFull]);\n        setBallSizeHistoryFull([...initialBallHistoryFull]);\n    };\n\n    const desiredLengthBallNum = Math.floor(size[1] / divisor * ballPosition);\n    const [desiredLengthBall, setDesiredLengthBall] = useState<number>(desiredLengthBallNum);\n    // isPlayingRef.current = isPlaying;\n    const [inputValue, setInputValue] = useState(1);\n\n    const onChange = (newValue: number) => {\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\n    useEffect(() => {\n        const timer = setTimeout(() => {\n            resetStatesFull();\n        }, 100);\n        return () => clearTimeout(timer);\n\n    }, [desiredLengthBall, CanvasLengthBall])\n\n\n    // Rendering balls and customization\n    useEffect(() => {\n        const canvas = canvasRef.current;\n        if (canvas) {\n            const ctx = canvas.getContext('2d');\n            if (ctx) {\n                // Clear the canvas\n                const textX = canvas.width - 100;\n                const textY = 20;\n                ctx.clearRect(0, 0, textX - 5, canvas.height);\n                ctx.clearRect(0, textY + 5, canvas.width, canvas.height - (textY + 5));\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                    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\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\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\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\n                    if (colorChangesFull[CanvasLength - i]) {\n                        ctx.fillStyle = closeVoiceColor;\n                    } else {\n                        ctx.fillStyle = targetVoiceColor;\n                    }\n\n                    ctx.fillRect(CanvasLength - i, mappedJsonValue, rectWidth, rectWidth);\n                    ctx.fill();\n                    ctx.closePath();\n                }\n                ctx.stroke();\n            }\n        }\n\n    }, [customHistoryFull, ballYCurr, initialRange]);\n\n\n    const updateBallHistoryFull = (pitch: number) => {\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\n    const updateBallSizeHistoryFull = (volumeVal: number) => {\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\n\n    const updateCustomHistoryFull = (inputValue: number) => {\n        let tempHistoryFull = [...customHistoryFull];\n        tempHistoryFull.splice(-divisor, divisor);\n        for (let i = 0; i < divisor; i++) {\n            tempHistoryFull.unshift(inputValue);\n        }\n        setCustomHistoryFull(tempHistoryFull);\n\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\n                    const difference = Math.abs(mappedJsonValue - ballYtem);\n\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                    }\n                    else {\n                        newColors[i] = false;\n                    }\n                } else {\n                    newColors[i] = newColors[i - 1];\n                }\n            }\n            return newColors;\n        });\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        }\n    }, [isPlaying, pitch]);\n\n\n    return (\n        <Row className=\"canvasMain\"  style={{ maxHeight: \"27vw\", marginBottom: \"5vw\", maxWidth: \"100vw\" }}>\n            <Col span={1}>\n\n            </Col>\n            <Col span={22} style={{ position: 'relative' }}>\n\n                <div className=\"yAxisArea\" style={{ height: canvasHeight }}>\n                    <Row style={{ height: canvasHeight }}>\n                        <Col span={8}>\n                            {showNotesPar\n                                ? <div style={{ height: canvasHeight }} className=\"yAxisLabel\">Pitch (Notes)</div>\n                                : <div style={{ height: canvasHeight }} className=\"yAxisLabel\">Pitch (Hz)</div>}\n                        </Col>\n                        <Col span={8}>\n                            <div className=\"yAxisNumbers\" style={{ height: canvasHeight * 1.039 }}>\n                                {showNotesPar\n                                    ? notesLabel?.map((note, index) => <div key={index}>{note}</div>) ?? []\n                                    : freqLabel?.map((freq, index) => <div key={index}>{freq}</div>) ?? []}\n                            </div>\n                        </Col>\n                        <Col span={8}>\n                            <div className=\"yAxisLines\" style={{ height: canvasHeight }}>\n                                {freqLabel?.map((_, index) => (\n                                    <div></div>\n                                )) ?? []}\n                            </div>\n                        </Col>\n                    </Row>\n                </div>\n                <div style={{ height: canvasHeight }}>\n                    <canvas\n                        ref={canvasRef}\n                        onMouseMove={handleMouseMove}\n                        id=\"pitchCanvas\"\n                        width={size[1]}\n                        height={size[0]}\n                        style={{ border: '1px solid #000' }}\n                    ></canvas>\n                    <div\n                        className='XAxisNum'\n                        style={{\n                            top: canvasHeight,\n                            width: canvasHeight * 3.486,\n\n                        }}\n                    >\n                        {[...Array(11)].map((_, index) => (\n                            <div key={index} style={{ position: 'relative' }}>\n                                <div className=\"timeMarkerLine\" />\n                                <span className='timeMarkerNum'>\n                                    {((15 / (divisor / 4)) * (index / 10 - ballPosition)).toFixed(1)}\n                                </span>\n                            </div>\n                        ))}\n                    </div>\n                    <div\n                        style={{\n                            top: canvasHeight * (1.12),\n                            width: canvasHeight * 3.486,\n                        }}\n                        className='XAxis'\n                    >\n                        <div>Time (Seconds)</div>\n\n                    </div>\n\n                </div>\n            </Col>\n            <Col span={1}>\n                <div>\n                    <Slider\n                        vertical\n                        min={initialRange[0]}\n                        max={initialRange[1]}\n                        style={{ marginTop: 0, height: canvasHeight }}\n                        onChange={onChange}\n                        defaultValue={30} />\n                </div>\n            </Col>\n        </Row>\n\n\n\n    );\n});\n\nexport default ConstantVol;\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}