{"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  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 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      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          // 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  }, [COLORS, 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    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  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: 249,\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: 256,\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: 257,\n              columnNumber: 35\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 254,\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: 262,\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: 263,\n                columnNumber: 71\n              }, this))) !== null && _freqLabel$map !== void 0 ? _freqLabel$map : []\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 260,\n              columnNumber: 29\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 259,\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: 269,\n                columnNumber: 37\n              }, this))) !== null && _freqLabel$map2 !== void 0 ? _freqLabel$map2 : []\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 267,\n              columnNumber: 29\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 266,\n            columnNumber: 25\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 253,\n          columnNumber: 21\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 252,\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: 276,\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: 294,\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: 295,\n              columnNumber: 33\n            }, this)]\n          }, index, true, {\n            fileName: _jsxFileName,\n            lineNumber: 293,\n            columnNumber: 29\n          }, this))\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 284,\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: 308,\n            columnNumber: 25\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 301,\n          columnNumber: 21\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 275,\n        columnNumber: 17\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 251,\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          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: 316,\n          columnNumber: 21\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 315,\n        columnNumber: 17\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 314,\n      columnNumber: 13\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 248,\n    columnNumber: 9\n  }, this);\n}, \"DmcficFVWezSKIrA1D7/lF6Wak0=\", false, function () {\n  return [useCanvasHooks, useCanvasInitializeGetPitch, useCanvasAdjustHeight, useCanvasUpdatePitch, useCanvasMouseText, useCanvasChangeHzAndNotes, useCanvasRetry, useCanvasRedrawBackground];\n})), \"DmcficFVWezSKIrA1D7/lF6Wak0=\", 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","realVoiceColor","targetVoiceColor","closeVoiceColor","ballYCurr","canvasRef","rectWidth","CanvasLength","canvasHeight","setCanvasHeight","showNotes","setShowNotes","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","textX","width","textY","clearRect","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","className","style","maxHeight","marginBottom","maxWidth","children","span","fileName","_jsxFileName","lineNumber","columnNumber","position","note","index","freq","_","onMouseMove","id","border","top","toFixed","vertical","min","max","marginTop","onChange","defaultValue","_c2","$RefreshReg$"],"sources":["D:/Project/UC_Trains_Voice/react-demo/src/Canvas/ConstantTxt.tsx"],"sourcesContent":["import React, { useEffect, useRef, forwardRef, useImperativeHandle, useState } from 'react';\r\nimport { map, drawBackground } from '../function/canvasDefault';\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    const {\r\n        pitch,\r\n        setPitch,\r\n        mouseHeight,\r\n        realVoiceColor,\r\n        targetVoiceColor,\r\n        closeVoiceColor,\r\n        ballYCurr,\r\n        canvasRef,\r\n        rectWidth,\r\n        CanvasLength,\r\n        canvasHeight,\r\n        setCanvasHeight,\r\n        showNotes,\r\n        setShowNotes,\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    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            if (ctx) {\r\n                // Clear the canvas\r\n                const textX = canvas.width - 100;\r\n                const textY = 20;\r\n                ctx.clearRect(0, 0, textX - 5, canvas.height);\r\n                ctx.clearRect(0, textY + 5, canvas.width, canvas.height - (textY + 5));\r\n\r\n                // 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    }, [COLORS, 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        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    return (\r\n        <Row className=\"canvasMain\" 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                        className='XAxisNum'\r\n                        style={{\r\n                            top: canvasHeight,\r\n                            width: canvasHeight * 3.486,\r\n\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                            top: canvasHeight * (1.12),\r\n                            width: canvasHeight * 3.486,\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                        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":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,EAAEC,UAAU,EAAEC,mBAAmB,EAAEC,QAAQ,QAAQ,OAAO;AAC3F,SAASC,GAAG,EAAEC,cAAc,QAAQ,2BAA2B;AAC/D,SAASC,MAAM,QAAQ,MAAM;AAC7B,SAASC,GAAG,EAAEC,GAAG,QAAQ,MAAM;AAC/B,OAAO,2BAA2B;AAElC,SAASC,cAAc,QAAQ,yBAAyB;AAExD,OAAOC,kBAAkB,MAAM,sCAAsC;AACrE,OAAOC,cAAc,MAAM,kCAAkC;AAC7D,OAAOC,oBAAoB,MAAM,wCAAwC;AACzE,OAAOC,qBAAqB,MAAM,yCAAyC;AAC3E,OAAOC,2BAA2B,MAAM,+CAA+C;AACvF,OAAOC,yBAAyB,MAAM,6CAA6C;AACnF,OAAOC,yBAAyB,MAAM,6CAA6C;AAAC,SAAAC,MAAA,IAAAC,OAAA;AAgBpF,MAAMC,WAAW,gBAAAC,EAAA,eAAGnB,UAAU,CAAAoB,EAAA,GAAAD,EAAA,CAAmC,CAACE,KAAK,EAAEC,GAAG,KAAK;EAAA,IAAAC,eAAA,EAAAC,cAAA,EAAAC,eAAA;EAAAN,EAAA;EAC7E,MAAM;IACFO,YAAY;IACZC,OAAO;IACPC,YAAY;IACZC,OAAO;IACPC,eAAe;IACfC,MAAM;IACNC,MAAM;IACNC,SAAS;IACTC,IAAI;IACJC;EACJ,CAAC,GAAGd,KAAK;EAET,MAAM;IACFe,KAAK;IACLC,QAAQ;IACRC,WAAW;IACXC,cAAc;IACdC,gBAAgB;IAChBC,eAAe;IACfC,SAAS;IACTC,SAAS;IACTC,SAAS;IACTC,YAAY;IACZC,YAAY;IACZC,eAAe;IACfC,SAAS;IACTC,YAAY;IACZC,UAAU;IACVC,aAAa;IACbC,SAAS;IACTC,YAAY;IAEZC,WAAW;IACXC,kBAAkB;IAClBC;EACJ,CAAC,GAAGhD,cAAc,CAAC0B,IAAI,EAAEP,OAAO,EAAEI,MAAM,EAAEL,YAAY,CAAC;EAEvD,MAAM+B,IAAI,GAAG1D,MAAM,CAAiB,IAAI,CAAC;EACzCE,mBAAmB,CAACqB,GAAG,EAAE,MAAMmC,IAAI,CAACC,OAAyB,CAAC;EAC9D,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG1D,QAAQ,CAAC,CAAC,CAAC;;EAE/C;EACA,MAAM2D,oBAAoB,GAAGC,IAAI,CAACC,KAAK,CAAC7B,IAAI,CAAC,CAAC,CAAC,GAAGP,OAAO,GAAGC,YAAY,CAAC;EACzE,MAAM,CAACoC,iBAAiB,EAAEC,oBAAoB,CAAC,GAAG/D,QAAQ,CAAS2D,oBAAoB,CAAC;EACxF,MAAM,CAACK,gBAAgB,EAAEC,mBAAmB,CAAC,GAAGjE,QAAQ,CAASgC,IAAI,CAAC,CAAC,CAAC,GAAGN,YAAY,CAAC;EACxF,MAAMwC,wBAAwB,GAAG,IAAIC,KAAK,CAACxB,YAAY,CAAC,CAACyB,IAAI,CAACC,GAAG,CAAC;EAClE,MAAMC,uBAAuB,GAAG,IAAIH,KAAK,CAACxB,YAAY,CAAC,CAACyB,IAAI,CAAC,KAAK,CAAC;EACnE,MAAMG,sBAAsB,GAAG,IAAIJ,KAAK,CAACH,gBAAgB,CAAC,CAACI,IAAI,CAACC,GAAG,CAAC;EACpE,MAAM,CAACG,iBAAiB,EAAEC,oBAAoB,CAAC,GAAGzE,QAAQ,CAAWkE,wBAAwB,CAAC;EAC9F,MAAM,CAACQ,gBAAgB,EAAEC,mBAAmB,CAAC,GAAG3E,QAAQ,CAAYsE,uBAAuB,CAAC;EAC5F,MAAM,CAACM,eAAe,EAAEC,kBAAkB,CAAC,GAAG7E,QAAQ,CAAWuE,sBAAsB,CAAC;EACxF,MAAMO,eAAe,GAAGA,CAAA,KAAM;IAC1BL,oBAAoB,CAAC,CAAC,GAAGP,wBAAwB,CAAC,CAAC;IACnDS,mBAAmB,CAAC,CAAC,GAAGL,uBAAuB,CAAC,CAAC;IACjDO,kBAAkB,CAAC,CAAC,GAAGN,sBAAsB,CAAC,CAAC;EACnD,CAAC;EAED,MAAMQ,cAAc,GAAIC,QAAgB,IAAK;IACzCtB,aAAa,CAACsB,QAAQ,CAAC;EAC3B,CAAC;;EAGD;EACA;;EAEA;EACArE,2BAA2B,CAACmB,MAAM,EAAEK,QAAQ,EAAEkB,kBAAkB,EAAEzB,eAAe,EAAEa,SAAS,EAAEjB,YAAY,EAAEsB,SAAS,CAAC;;EAEtH;EACApC,qBAAqB,CAAC+B,SAAS,EAAEI,eAAe,CAAC;;EAEjD;EACApC,oBAAoB,CAACsB,SAAS,EAAEG,KAAK,EAAEkB,WAAW,CAAC;;EAEnD;EACA7C,kBAAkB,CAACkC,SAAS,EAAEL,WAAW,EAAEZ,YAAY,CAAC;;EAExD;EACAZ,yBAAyB,CAACmC,YAAY,EAAED,SAAS,EAAEb,YAAY,EAAEQ,SAAS,EAAEjB,YAAY,EAAEyB,aAAa,EAAEE,YAAY,EAAEP,YAAY,CAAC;;EAEpI;EACApC,cAAc,CAACmB,OAAO,EAAEF,OAAO,EAAEG,eAAe,EAAEkD,eAAe,CAAC;;EAElE;EACAjE,yBAAyB,CAAC4B,SAAS,EAAER,YAAY,EAAET,YAAY,CAAC;;EAIhE;EACA;;EAEA5B,SAAS,CAAC,MAAM;IACZmE,oBAAoB,CAACH,IAAI,CAACC,KAAK,CAAC7B,IAAI,CAAC,CAAC,CAAC,GAAGP,OAAO,GAAGC,YAAY,CAAC,CAAC;IAClEuC,mBAAmB,CAACL,IAAI,CAACC,KAAK,CAAC7B,IAAI,CAAC,CAAC,CAAC,GAAGN,YAAY,CAAC,CAAC;EAC3D,CAAC,EAAE,CAACA,YAAY,EAAED,OAAO,CAAC,CAAC;EAE3B7B,SAAS,CAAC,MAAM;IACZ,MAAMqF,KAAK,GAAGC,UAAU,CAAC,MAAM;MAC3BJ,eAAe,CAAC,CAAC;IACrB,CAAC,EAAE,GAAG,CAAC;IACP,OAAO,MAAMK,YAAY,CAACF,KAAK,CAAC;EACpC,CAAC,EAAE,CAACnB,iBAAiB,EAAEE,gBAAgB,CAAC,CAAC;;EAEzC;EACApE,SAAS,CAAC,MAAM;IACZ,MAAMwF,MAAM,GAAG3C,SAAS,CAACe,OAAO;IAChC,IAAI4B,MAAM,EAAE;MACR,MAAMC,GAAG,GAAGD,MAAM,CAACE,UAAU,CAAC,IAAI,CAAC;MACnC,IAAID,GAAG,EAAE;QACL;QACA,MAAME,KAAK,GAAGH,MAAM,CAACI,KAAK,GAAG,GAAG;QAChC,MAAMC,KAAK,GAAG,EAAE;QAChBJ,GAAG,CAACK,SAAS,CAAC,CAAC,EAAE,CAAC,EAAEH,KAAK,GAAG,CAAC,EAAEH,MAAM,CAACO,MAAM,CAAC;QAC7CN,GAAG,CAACK,SAAS,CAAC,CAAC,EAAED,KAAK,GAAG,CAAC,EAAEL,MAAM,CAACI,KAAK,EAAEJ,MAAM,CAACO,MAAM,IAAIF,KAAK,GAAG,CAAC,CAAC,CAAC;;QAEtE;QACAvF,cAAc,CAACuC,SAAS,EAAEjB,YAAY,CAAC,CAAC,CAAC,EAAEA,YAAY,CAAC,CAAC,CAAC,EAAEsB,SAAS,CAAC;;QAEtE;QACA,KAAK,IAAI8C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGhB,eAAe,CAACiB,MAAM,EAAED,CAAC,EAAE,EAAE;UAC7CP,GAAG,CAACS,SAAS,CAAC,CAAC;UACf,MAAMC,WAAW,GAAG9F,GAAG,CAAC2E,eAAe,CAACgB,CAAC,CAAC,EAAEpE,YAAY,CAAC,CAAC,CAAC,EAAEA,YAAY,CAAC,CAAC,CAAC,EAAEQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;UAE1F;UACAqD,GAAG,CAACW,GAAG,CAACJ,CAAC,EAAEG,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAGnC,IAAI,CAACqC,EAAE,CAAC;UAC1CZ,GAAG,CAACa,SAAS,GAAG7D,cAAc;UAC9BgD,GAAG,CAACjB,IAAI,CAAC,CAAC;UACViB,GAAG,CAACc,SAAS,CAAC,CAAC;QACnB;;QAEA;QACAd,GAAG,CAACS,SAAS,CAAC,CAAC;QACfT,GAAG,CAACW,GAAG,CAAChE,IAAI,CAAC,CAAC,CAAC,GAAGN,YAAY,EAAEc,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAGoB,IAAI,CAACqC,EAAE,CAAC;QAC9DZ,GAAG,CAACa,SAAS,GAAG,OAAO;QACvBb,GAAG,CAACjB,IAAI,CAAC,CAAC;QACViB,GAAG,CAACc,SAAS,CAAC,CAAC;QAEf,KAAK,IAAIP,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGpB,iBAAiB,CAACqB,MAAM,GAAG,EAAE,EAAED,CAAC,EAAE,EAAE;UACpDP,GAAG,CAACS,SAAS,CAAC,CAAC;UACf,MAAMM,eAAe,GAAGnG,GAAG,CAACuE,iBAAiB,CAACoB,CAAC,CAAC,EAAEpE,YAAY,CAAC,CAAC,CAAC,EAAEA,YAAY,CAAC,CAAC,CAAC,EAAEQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;UAE/F,IAAI0C,gBAAgB,CAAC/B,YAAY,GAAGiD,CAAC,CAAC,EAAE;YACpCP,GAAG,CAACa,SAAS,GAAG3D,eAAe;UACnC,CAAC,MAAM;YACH8C,GAAG,CAACa,SAAS,GAAG5D,gBAAgB;UACpC;UAEA+C,GAAG,CAACgB,QAAQ,CAAC1D,YAAY,GAAGiD,CAAC,EAAEQ,eAAe,EAAE1D,SAAS,EAAEA,SAAS,CAAC;UACrE2C,GAAG,CAACjB,IAAI,CAAC,CAAC;UACViB,GAAG,CAACc,SAAS,CAAC,CAAC;QACnB;QACAd,GAAG,CAACiB,MAAM,CAAC,CAAC;MAChB;IACJ;EAEJ,CAAC,EAAE,CAACzE,MAAM,EAAE2C,iBAAiB,EAAEhC,SAAS,EAAEhB,YAAY,CAAC,CAAC;EAExD,MAAM+E,qBAAqB,GAAIrE,KAAa,IAAK;IAC7C,IAAIsE,eAAe,GAAG,CAAC,GAAG5B,eAAe,CAAC;IAC1C4B,eAAe,CAACC,MAAM,CAAC,CAAC,EAAEhF,OAAO,CAAC;IAClC,KAAK,IAAImE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGnE,OAAO,GAAG,CAAC,EAAEmE,CAAC,EAAE,EAAE;MAClCY,eAAe,CAACE,IAAI,CAACrC,GAAG,CAAC;IAC7B;IACAmC,eAAe,CAACE,IAAI,CAACxE,KAAK,CAAC;IAC3B2C,kBAAkB,CAAC2B,eAAe,CAAC;EACvC,CAAC;EAED,MAAMG,uBAAuB,GAAIlD,UAAkB,IAAK;IACpD,IAAI+C,eAAe,GAAG,CAAC,GAAGhC,iBAAiB,CAAC;IAC5CgC,eAAe,CAACC,MAAM,CAAC,CAAChF,OAAO,EAAEA,OAAO,CAAC;IACzC,KAAK,IAAImE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGnE,OAAO,EAAEmE,CAAC,EAAE,EAAE;MAC9BY,eAAe,CAACI,OAAO,CAACnD,UAAU,CAAC;IACvC;IACAgB,oBAAoB,CAAC+B,eAAe,CAAC;IAErC7B,mBAAmB,CAACkC,aAAa,IAAI;MACjC,MAAMC,SAAS,GAAG,CAAC,GAAGD,aAAa,CAAC;MACpC,KAAK,IAAIjB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG5B,gBAAgB,EAAE4B,CAAC,EAAE,EAAE;QACvC,IAAImB,QAAQ,GAAG9G,GAAG,CAAC2E,eAAe,CAACgB,CAAC,CAAC,EAAEpE,YAAY,CAAC,CAAC,CAAC,EAAEA,YAAY,CAAC,CAAC,CAAC,EAAEQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrF,IAAI,CAACgF,KAAK,CAACpC,eAAe,CAACgB,CAAC,CAAC,CAAC,EAAE;UAC5B,MAAMQ,eAAe,GAAGnG,GAAG,CAACuE,iBAAiB,CAAC7B,YAAY,GAAGiD,CAAC,CAAC,EAAEpE,YAAY,CAAC,CAAC,CAAC,EAAEA,YAAY,CAAC,CAAC,CAAC,EAAEQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;UAE9G,MAAMiF,UAAU,GAAGrD,IAAI,CAACsD,GAAG,CAACd,eAAe,GAAGW,QAAQ,CAAC;UAEvD,IAAIE,UAAU,IAAI,EAAE,IAAI,CAACD,KAAK,CAACC,UAAU,CAAC,EAAE;YACxC,KAAK,IAAIE,CAAC,GAAGvB,CAAC,GAAGnE,OAAO,EAAE0F,CAAC,IAAIvB,CAAC,GAAGnE,OAAO,IAAI0F,CAAC,GAAGnD,gBAAgB,EAAEmD,CAAC,EAAE,EAAE;cACrEL,SAAS,CAACK,CAAC,CAAC,GAAG,IAAI;YACvB;YACAvB,CAAC,IAAInE,OAAO;UAChB,CAAC,MACI;YACDqF,SAAS,CAAClB,CAAC,CAAC,GAAG,KAAK;UACxB;QACJ,CAAC,MAAM;UACHkB,SAAS,CAAClB,CAAC,CAAC,GAAGkB,SAAS,CAAClB,CAAC,GAAG,CAAC,CAAC;QACnC;MACJ;MACA,OAAOkB,SAAS;IACpB,CAAC,CAAC;EAEN,CAAC;;EAED;EACAlH,SAAS,CAAC,MAAM;IACZ,IAAImC,SAAS,EAAE;MACX4E,uBAAuB,CAAClD,UAAU,CAAC;MACnC,IAAIvB,KAAK,KAAK,IAAI,EAAE;QAChBqE,qBAAqB,CAACrE,KAAK,CAAC;MAChC,CAAC,MAAM;QACHqE,qBAAqB,CAAC,CAAC,CAAC;MAC5B;IACJ;EACJ,CAAC,EAAE,CAACxE,SAAS,EAAEG,KAAK,CAAC,CAAC;EAEtB,oBACInB,OAAA,CAACV,GAAG;IAAC+G,SAAS,EAAC,YAAY;IAACC,KAAK,EAAE;MAAEC,SAAS,EAAE,MAAM;MAAEC,YAAY,EAAE,KAAK;MAAEC,QAAQ,EAAE;IAAQ,CAAE;IAAAC,QAAA,gBAC7F1G,OAAA,CAACX,GAAG;MAACsH,IAAI,EAAE;IAAE;MAAAC,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OACR,CAAC,eACN/G,OAAA,CAACX,GAAG;MAACsH,IAAI,EAAE,EAAG;MAACL,KAAK,EAAE;QAAEU,QAAQ,EAAE;MAAW,CAAE;MAAAN,QAAA,gBAC3C1G,OAAA;QAAKqG,SAAS,EAAC,WAAW;QAACC,KAAK,EAAE;UAAE1B,MAAM,EAAE/C;QAAa,CAAE;QAAA6E,QAAA,eACvD1G,OAAA,CAACV,GAAG;UAACgH,KAAK,EAAE;YAAE1B,MAAM,EAAE/C;UAAa,CAAE;UAAA6E,QAAA,gBACjC1G,OAAA,CAACX,GAAG;YAACsH,IAAI,EAAE,CAAE;YAAAD,QAAA,EACRxF,YAAY,gBACPlB,OAAA;cAAKsG,KAAK,EAAE;gBAAE1B,MAAM,EAAE/C;cAAa,CAAE;cAACwE,SAAS,EAAC,YAAY;cAAAK,QAAA,EAAC;YAAa;cAAAE,QAAA,EAAAC,YAAA;cAAAC,UAAA;cAAAC,YAAA;YAAA,OAAK,CAAC,gBAChF/G,OAAA;cAAKsG,KAAK,EAAE;gBAAE1B,MAAM,EAAE/C;cAAa,CAAE;cAACwE,SAAS,EAAC,YAAY;cAAAK,QAAA,EAAC;YAAU;cAAAE,QAAA,EAAAC,YAAA;cAAAC,UAAA;cAAAC,YAAA;YAAA,OAAK;UAAC;YAAAH,QAAA,EAAAC,YAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA,OAClF,CAAC,eACN/G,OAAA,CAACX,GAAG;YAACsH,IAAI,EAAE,CAAE;YAAAD,QAAA,eACT1G,OAAA;cAAKqG,SAAS,EAAC,cAAc;cAACC,KAAK,EAAE;gBAAE1B,MAAM,EAAE/C,YAAY,GAAG;cAAM,CAAE;cAAA6E,QAAA,EACjExF,YAAY,IAAAZ,eAAA,GACP2B,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAE/C,GAAG,CAAC,CAAC+H,IAAI,EAAEC,KAAK,kBAAKlH,OAAA;gBAAA0G,QAAA,EAAkBO;cAAI,GAAZC,KAAK;gBAAAN,QAAA,EAAAC,YAAA;gBAAAC,UAAA;gBAAAC,YAAA;cAAA,OAAa,CAAC,CAAC,cAAAzG,eAAA,cAAAA,eAAA,GAAI,EAAE,IAAAC,cAAA,GACrE4B,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEjD,GAAG,CAAC,CAACiI,IAAI,EAAED,KAAK,kBAAKlH,OAAA;gBAAA0G,QAAA,EAAkBS;cAAI,GAAZD,KAAK;gBAAAN,QAAA,EAAAC,YAAA;gBAAAC,UAAA;gBAAAC,YAAA;cAAA,OAAa,CAAC,CAAC,cAAAxG,cAAA,cAAAA,cAAA,GAAI;YAAE;cAAAqG,QAAA,EAAAC,YAAA;cAAAC,UAAA;cAAAC,YAAA;YAAA,OACzE;UAAC;YAAAH,QAAA,EAAAC,YAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA,OACL,CAAC,eACN/G,OAAA,CAACX,GAAG;YAACsH,IAAI,EAAE,CAAE;YAAAD,QAAA,eACT1G,OAAA;cAAKqG,SAAS,EAAC,YAAY;cAACC,KAAK,EAAE;gBAAE1B,MAAM,EAAE/C;cAAa,CAAE;cAAA6E,QAAA,GAAAlG,eAAA,GACvD2B,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAEjD,GAAG,CAAC,CAACkI,CAAC,EAAEF,KAAK,kBACrBlH,OAAA;gBAAA4G,QAAA,EAAAC,YAAA;gBAAAC,UAAA;gBAAAC,YAAA;cAAA,OAAU,CACb,CAAC,cAAAvG,eAAA,cAAAA,eAAA,GAAI;YAAE;cAAAoG,QAAA,EAAAC,YAAA;cAAAC,UAAA;cAAAC,YAAA;YAAA,OACP;UAAC;YAAAH,QAAA,EAAAC,YAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA,OACL,CAAC;QAAA;UAAAH,QAAA,EAAAC,YAAA;UAAAC,UAAA;UAAAC,YAAA;QAAA,OACL;MAAC;QAAAH,QAAA,EAAAC,YAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA,OACL,CAAC,eACN/G,OAAA;QAAKsG,KAAK,EAAE;UAAE1B,MAAM,EAAE/C;QAAa,CAAE;QAAA6E,QAAA,gBACjC1G,OAAA;UACIK,GAAG,EAAEqB,SAAU;UACf2F,WAAW,EAAE9E,eAAgB;UAC7B+E,EAAE,EAAC,aAAa;UAChB7C,KAAK,EAAExD,IAAI,CAAC,CAAC,CAAE;UACf2D,MAAM,EAAE3D,IAAI,CAAC,CAAC,CAAE;UAChBqF,KAAK,EAAE;YAAEiB,MAAM,EAAE;UAAiB;QAAE;UAAAX,QAAA,EAAAC,YAAA;UAAAC,UAAA;UAAAC,YAAA;QAAA,OAC/B,CAAC,eACV/G,OAAA;UACIqG,SAAS,EAAC,UAAU;UACpBC,KAAK,EAAE;YACHkB,GAAG,EAAE3F,YAAY;YACjB4C,KAAK,EAAE5C,YAAY,GAAG;UAE1B,CAAE;UAAA6E,QAAA,EAED,CAAC,GAAGtD,KAAK,CAAC,EAAE,CAAC,CAAC,CAAClE,GAAG,CAAC,CAACkI,CAAC,EAAEF,KAAK,kBACzBlH,OAAA;YAAiBsG,KAAK,EAAE;cAAEU,QAAQ,EAAE;YAAW,CAAE;YAAAN,QAAA,gBAC7C1G,OAAA;cAAKqG,SAAS,EAAC;YAAgB;cAAAO,QAAA,EAAAC,YAAA;cAAAC,UAAA;cAAAC,YAAA;YAAA,OAAE,CAAC,eAClC/G,OAAA;cAAMqG,SAAS,EAAC,eAAe;cAAAK,QAAA,EAC1B,CAAE,EAAE,IAAIhG,OAAO,GAAG,CAAC,CAAC,IAAKwG,KAAK,GAAG,EAAE,GAAGvG,YAAY,CAAC,EAAE8G,OAAO,CAAC,CAAC;YAAC;cAAAb,QAAA,EAAAC,YAAA;cAAAC,UAAA;cAAAC,YAAA;YAAA,OAC9D,CAAC;UAAA,GAJDG,KAAK;YAAAN,QAAA,EAAAC,YAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA,OAKV,CACR;QAAC;UAAAH,QAAA,EAAAC,YAAA;UAAAC,UAAA;UAAAC,YAAA;QAAA,OACD,CAAC,eACN/G,OAAA;UACIsG,KAAK,EAAE;YACHkB,GAAG,EAAE3F,YAAY,GAAI,IAAK;YAC1B4C,KAAK,EAAE5C,YAAY,GAAG;UAC1B,CAAE;UACFwE,SAAS,EAAC,OAAO;UAAAK,QAAA,eAEjB1G,OAAA;YAAA0G,QAAA,EAAK;UAAc;YAAAE,QAAA,EAAAC,YAAA;YAAAC,UAAA;YAAAC,YAAA;UAAA,OAAK;QAAC;UAAAH,QAAA,EAAAC,YAAA;UAAAC,UAAA;UAAAC,YAAA;QAAA,OAExB,CAAC;MAAA;QAAAH,QAAA,EAAAC,YAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA,OAEL,CAAC;IAAA;MAAAH,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OACL,CAAC,eACN/G,OAAA,CAACX,GAAG;MAACsH,IAAI,EAAE,CAAE;MAAAD,QAAA,eACT1G,OAAA;QAAKK,GAAG,EAAEmC,IAAK;QAAAkE,QAAA,eACX1G,OAAA,CAACZ,MAAM;UACHsI,QAAQ;UACRrB,SAAS,EAAC,gBAAgB;UAC1BsB,GAAG,EAAElH,YAAY,CAAC,CAAC,CAAE;UACrBmH,GAAG,EAAEnH,YAAY,CAAC,CAAC,CAAE;UACrB6F,KAAK,EAAE;YAAEuB,SAAS,EAAE,CAAC;YAAEjD,MAAM,EAAE/C;UAAa,CAAE;UAC9CiG,QAAQ,EAAE9D,cAAe;UACzB+D,YAAY,EAAE;QAAG;UAAAnB,QAAA,EAAAC,YAAA;UAAAC,UAAA;UAAAC,YAAA;QAAA,OAAE;MAAC;QAAAH,QAAA,EAAAC,YAAA;QAAAC,UAAA;QAAAC,YAAA;MAAA,OACvB;IAAC;MAAAH,QAAA,EAAAC,YAAA;MAAAC,UAAA;MAAAC,YAAA;IAAA,OACL,CAAC;EAAA;IAAAH,QAAA,EAAAC,YAAA;IAAAC,UAAA;IAAAC,YAAA;EAAA,OACL,CAAC;AAKd,CAAC;EAAA,QAvQOxH,cAAc,EA+BlBK,2BAA2B,EAG3BD,qBAAqB,EAGrBD,oBAAoB,EAGpBF,kBAAkB,EAGlBK,yBAAyB,EAGzBJ,cAAc,EAGdK,yBAAyB;AAAA,EAsN5B,CAAC;EAAA,QAvQMP,cAAc,EA+BlBK,2BAA2B,EAG3BD,qBAAqB,EAGrBD,oBAAoB,EAGpBF,kBAAkB,EAGlBK,yBAAyB,EAGzBJ,cAAc,EAGdK,yBAAyB;AAAA,EAsN3B;AAACkI,GAAA,GA5SG/H,WAAW;AA8SjB,eAAeA,WAAW;AAAC,IAAAE,EAAA,EAAA6H,GAAA;AAAAC,YAAA,CAAA9H,EAAA;AAAA8H,YAAA,CAAAD,GAAA","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}