{"ast":null,"code":"var _jsxFileName = \"D:\\\\Project\\\\UC_Trains_Voice\\\\react-demo\\\\src\\\\Canvas\\\\Heteronym.tsx\",\n  _s = $RefreshSig$();\nimport React, { useEffect, useRef, useState } from 'react';\nimport { map, drawBackground } from '../function/canvasDefault';\nimport { getPitch } from '../function/getPitch';\nimport { Col, Row, Slider } from 'antd';\nimport { useCanvasHooks } from '../hooks/useCanvasHooks'; // variables and functions\n\nimport useCanvasChangeHzAndNotes from '../hooksUseEffect/useCanvasChangeHzAndNotes';\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst style = {\n  display: 'relative',\n  height: 300\n};\nconst Heteronym = ({\n  setMaxLyricCount,\n  initialRange,\n  divisor,\n  txtShow,\n  isRetry,\n  setPlayingPause,\n  playLyricCount,\n  setPlaying,\n  config,\n  COLORS,\n  size,\n  isPlaying,\n  showNotesPar,\n  heteronymFile\n}) => {\n  _s();\n  var _notesLabel$map, _freqLabel$map, _freqLabel$map2;\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 {\n    SRATE,\n    fxmin,\n    fxlow,\n    fxhigh,\n    fxmax\n  } = config;\n\n  // const [pitchValue, setPitchValue] = useState<number | null>(null);\n  const [ballY, setBallY] = useState(size[0]);\n  const cornerRadius = 1;\n  const divisorLocal = 4;\n  // const divisor = 10;\n  const desiredLength = Math.floor(size[1] / divisor);\n  const desiredLengthBall = Math.floor(size[1] / divisor / 4);\n  const [inputValue, setInputValue] = useState([110, 200]);\n  // const [CanvasLengthBall,setCanvasLengthBall] = useState<number>(size[1] * ballPosition);\n  // const initialCustomHistoryFull = new Array(CanvasLength).fill(NaN);\n  const initialColorChangesFull = new Array(CanvasLength).fill(false);\n  const initialBallHistoryFull = new Array(CanvasLength).fill(NaN);\n  // const [customHistoryFull, setCustomHistoryFull] = useState<number[]>(initialCustomHistoryFull);\n  const [colorChangesFull, setColorChangesFull] = useState(initialColorChangesFull);\n  const [ballHistoryFull, setBallHistoryFull] = useState(initialBallHistoryFull);\n  const [pitchArrayCusFull, setPitchArrayCusFull] = useState(initialBallHistoryFull);\n  const resetStatesFull = () => {\n    // setCustomHistoryFull([...initialCustomHistoryFull]);\n    setColorChangesFull([...initialColorChangesFull]);\n    setBallHistoryFull([...initialBallHistoryFull]);\n    setCurrentX(initialcurrentX);\n  };\n\n  // const [ballHistory, setBallHistory] = useState<number[]>(new Array(desiredLength).fill(NaN));\n  const isPlayingRef = useRef(isPlaying);\n  // const [colorChanges, setColorChanges] = useState<boolean[]>(new Array(desiredLength).fill(true));\n  const initialColorChanges = new Array(desiredLength).fill(true);\n  const initialBallHistory = new Array(desiredLength).fill(NaN);\n  const initialPitchArrayCus = new Array(desiredLength).fill(NaN);\n\n  // const [colorChanges, setColorChanges] = useState<boolean[]>(initialColorChanges);\n  // const [ballHistory, setBallHistory] = useState<number[]>(initialBallHistory);\n  const [pitchArrayCus, setPitchArrayCus] = useState(initialPitchArrayCus);\n  // const resetStates = () => {\n  //     setColorChanges([...initialColorChanges]);\n  //     setBallHistory([...initialBallHistory]);\n  //     setCurrentX(initialcurrentX);\n  //   };\n  const [shouldDisabled, setShouldDisabled] = useState(false);\n  const [pitchArray, setPitchArray] = useState([]);\n  const onChange = newValue => {\n    setInputValue(newValue);\n  };\n  // const audioSrc = \"/audio/Right across the street.wav\";\n  // const audioRef = useRef(new Audio(audioSrc)); \n\n  // change Notes and hz display\n  useCanvasChangeHzAndNotes(setShowNotes, showNotes, showNotesPar, canvasRef, initialRange, setNotesLabel, setFreqLabel, canvasHeight);\n  const updatePitchArrayCus = () => {\n    const partLength = Math.floor(CanvasLength / 5);\n    const lastPartStart = partLength * 4;\n    const midValue = (inputValue[0] + inputValue[1]) / 2;\n\n    // const updatedArray = new Array(CanvasLength)\n\n    //   .fill(midValue, partLength, 2 * partLength) \n    //   .fill(inputValue[1], 2 * partLength, 3 * partLength)  \n    //   .fill(midValue, 3 * partLength, 4 * partLength)\n\n    const updatedArray = new Array(CanvasLength);\n    for (let i = 0.5 * partLength; i < 1.5 * partLength; i++) {\n      updatedArray[i] = inputValue[1] + (midValue - inputValue[1]) * ((i - (1.5 * partLength + offset)) / partLength) - 50;\n    }\n    for (let i = 1.5 * partLength + offset; i < 2.5 * partLength + offset; i++) {\n      updatedArray[i] = midValue + (inputValue[1] - midValue) * ((i - 0.5 * partLength) / partLength) - 50;\n    }\n    //-45.5\n\n    // for (let i = 2 * partLength; i < 3 * partLength; i++) {\n    //   updatedArray[i] = midValue + (inputValue[1] - midValue) * ((i - 2 * partLength) / partLength);\n    // }\n\n    // for (let i = 3 * partLength; i < 4 * partLength; i++) {\n    //   updatedArray[i] = inputValue[1] + (midValue - inputValue[1]) * ((i - 3 * partLength) / partLength);\n    // }\n\n    // for (let i = 0; i < partLength; i++) {\n    //   updatedArray[i] = midValue + (inputValue[1] - midValue) * (i / partLength);\n    // }\n\n    // for (let i = partLength; i < 2 * partLength; i++) {\n    //   updatedArray[i] = inputValue[1] + (midValue - inputValue[1]) * ((i - partLength) / partLength);\n    // }\n\n    // for (let i = 2 * partLength; i < 3 * partLength; i++) {\n    //   updatedArray[i] = midValue + (inputValue[0] - midValue) * ((i - 2 * partLength) / partLength);\n    // }\n\n    // for (let i = 3 * partLength; i < 4 * partLength; i++) {\n    //   updatedArray[i] = inputValue[0] + (midValue - inputValue[0]) * ((i - 3 * partLength) / partLength);\n    // }\n    setPitchArrayCus(updatedArray);\n  };\n\n  // retry\n  useEffect(() => {\n    setPlayingPause();\n    // resetStates();\n    resetStatesFull();\n  }, [isRetry, divisor]);\n  useEffect(() => {\n    updatePitchArrayCus();\n  }, [inputValue]);\n  useEffect(() => {\n    const canvas = canvasRef.current;\n    if (canvas) {\n      const ctx = canvas.getContext('2d');\n      if (ctx) {\n        ctx.clearRect(0, 0, canvas.width, canvas.height);\n        drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes);\n        // ctx.font = '16px Arial';\n        // ctx.fillStyle = 'black';\n        // // Calculate text position (near top right corner)\n        // const textX = canvas.width - 100; \n        // const textY = 20; \n        // const mappedHeight = map(mouseHeight, 0, 100, initialRange[1], initialRange[0]);\n        // ctx.fillText(`pitch: ${mappedHeight.toFixed(2)}`, textX, textY);\n\n        // stair \n        for (let i = 0 + offset; i < pitchArrayCus.length; i++) {\n          const mappedJsonValue = map(pitchArrayCus[i], initialRange[0], initialRange[1], size[0], 0);\n          // Set fill color based on condition\n          if (colorChangesFull[i]) {\n            ctx.fillStyle = closeVoiceColor;\n          } else {\n            ctx.fillStyle = targetVoiceColor;\n          }\n          // Draw a rectangle\n          ctx.fillRect(i, mappedJsonValue, rectWidth, rectWidth);\n        }\n        let temTxtShow = false;\n        if (txtShow === \"false\") {\n          temTxtShow = false;\n        } else {\n          temTxtShow = true;\n        }\n        if (temTxtShow) {\n          const fraction = size[1] / 5;\n          const heights = [inputValue[0], (inputValue[0] + inputValue[1]) / 2, inputValue[1], (inputValue[0] + inputValue[1]) / 2, inputValue[0]]; // 定义高度数组\n          ctx.fillStyle = \"black\";\n          ctx.font = \"16px Arial\";\n          for (let j = 0; j <= 4; j++) {\n            let xPosition = fraction * (j + 1) - fraction / 2;\n            let yPosition = map(heights[j] + 5, initialRange[0], initialRange[1], size[0], 0);\n            // 在每个位置添加数字1，20是y坐标，可根据需要调整\n          }\n        }\n\n        // if ((isPlaying)) {\n        // Draw the ball's historical positions\n        for (var i = 0; i < ballHistoryFull.length; i++) {\n          // for (var i = currentX; i > 0; i--) {\n          ctx.beginPath();\n          ctx.arc(i, ballHistoryFull[i], 5, 0, 2 * Math.PI);\n          ctx.fillStyle = realVoiceColor;\n          ctx.fill();\n          ctx.closePath();\n        }\n        // Plot current value\n        ctx.beginPath();\n        ctx.arc(currentX * divisor, ballYCurr, 10, 0, 2 * Math.PI);\n        ctx.fillStyle = \"black\";\n        ctx.fill();\n        ctx.closePath();\n\n        // }\n      }\n    }\n  }, [txtShow, pitchArrayCus, initialRange, ballHistoryFull, playLyricCount, showNotes, showNotesPar]);\n  useEffect(() => {\n    const canvas = canvasRef.current;\n    if (canvas) {\n      const ctx = canvas.getContext('2d');\n      if (ctx) {\n        // ctx.clearRect(0, 0, canvas.width, canvas.height);\n        drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes);\n        ctx.font = '16px Arial';\n        ctx.fillStyle = 'black';\n        // Calculate text position (near top right corner)\n        const textX = canvas.width - 100;\n        const textY = 20;\n        // txt\n        const mappedHeight = map(mouseHeight, 0, 100, initialRange[1], initialRange[0]);\n        const text = `pitch: ${mappedHeight.toFixed(2)}`;\n        const metrics = ctx.measureText(text);\n        const textWidth = metrics.width;\n        const textHeight = 16;\n        const clearX = textX;\n        const clearY = textY - textHeight;\n        const clearWidth = textWidth;\n        const clearHeight = textHeight + 5;\n        ctx.clearRect(clearX, clearY, clearWidth, clearHeight);\n        ctx.fillText(`pitch: ${mappedHeight.toFixed(2)}`, textX, textY);\n      }\n    }\n  }, [mouseHeight]);\n  // next\n  useEffect(() => {\n    setPlayingPause();\n    resetStatesFull();\n  }, [playLyricCount]);\n  useEffect(() => {\n    if (isPlaying) {\n      updateBallY(pitch);\n    }\n  }, [pitch]);\n\n  // first\n  useEffect(() => {\n    setPlayingPause();\n    setMaxLyricCount(heteronymFile.length - 1); // REMINDER: PROBABLY CHANGE THIS TO WORK WITH CHANGE IN LIST BEFORE COMMIT ************************************************************************************************\n    drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes);\n    // setPlayLyricCount(syllablesString.length);\n    updatePitchArrayCus();\n    //get pitch\n    let cleanup;\n    updateCanvasHeight();\n    window.addEventListener('resize', updateCanvasHeight);\n    (async () => {\n      cleanup = await getPitch(config, setPitch);\n    })();\n    return () => {\n      cleanup && cleanup();\n      window.removeEventListener('resize', updateCanvasHeight);\n    };\n  }, []);\n  useEffect(() => {\n    if (canvasRef.current) {\n      const rect = canvasRef.current.getBoundingClientRect();\n      setCanvasHeight(rect.height);\n    }\n  }, []);\n\n  // Change note function\n  const toggleShowNotes = () => {\n    setShowNotes(!showNotes);\n    const canvas = canvasRef.current;\n    if (canvas && canvas.getContext) {\n      const ctx = canvas.getContext('2d');\n      if (ctx) {\n        ctx.clearRect(0, 0, canvas.width / 24, canvas.height);\n        drawBackground(canvasRef, initialRange[1], initialRange[0], !showNotes);\n      }\n    }\n  };\n\n  // Redraw the background\n  useEffect(() => {\n    drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes); // Make sure the background is redrawn on state change\n  }, [showNotes]);\n  const updateBallHistoryFull = ballY => {\n    let tempHistoryFull = [...ballHistoryFull];\n    let ctxdiv = currentX * divisor;\n    if (currentX < desiredLength - 1) {\n      setShouldDisabled(false);\n      tempHistoryFull[ctxdiv] = ballY;\n      setColorChangesFull(currentColors => {\n        const newColors = [...currentColors];\n        const mappedJsonValue = map(pitchArrayCus[ctxdiv], initialRange[0], initialRange[1], size[0], 0);\n        const difference = Math.abs(mappedJsonValue - ballY);\n        if (difference <= 50 && !isNaN(difference)) {\n          for (let j = ctxdiv - divisor; j <= ctxdiv + divisor && j < CanvasLength; j++) {\n            newColors[j] = true;\n          }\n        }\n        return newColors;\n      });\n    } else {\n      setShouldDisabled(true);\n      if (!shouldDisabled) {\n        setPlayingPause();\n      }\n    }\n    setCurrentX(currentX + 1);\n    setBallHistoryFull(tempHistoryFull);\n  };\n  useEffect(() => {\n    // updateBallY(pitch);\n\n    // Only update ballHistory at currentX position\n    if (isPlaying) {\n      updateBallHistoryFull(ballY);\n      // let tempHistory = [...ballHistory];\n      // let tempColor = [...colorChanges];\n      // let prevPitch = tempHistory[currentX - 1] || ballY;\n      // if (currentX < desiredLength - 1) {\n      //   const averagePitch = (prevPitch + ballY) / 2;\n      //   tempHistory[currentX] = averagePitch;\n      //   tempHistory[currentX + 1] = ballY;\n      //   //Update color change array\n      //   [averagePitch, ballY].forEach((value, index) => {\n      //     const mappedJsonValue = map(pitchArrayCus[currentX + index], initialRange[0], initialRange[1], size[0], 0);\n      //     const difference = Math.abs(value - mappedJsonValue);\n      //     tempColor[currentX + index] = difference > 50;\n      //   });\n\n      //   setCurrentX(currentX + 2);\n      // } else {\n      //   setShouldDisabled(true);\n      //   if (! shouldDisabled) {\n      //     setPlayingPause();\n      //   }\n      // }\n      // setBallHistory(tempHistory);\n      // setColorChanges(tempColor);\n    }\n  }, [pitch, isPlaying]);\n  useEffect(() => {\n    if (shouldDisabled && isPlaying) {\n      resetStatesFull();\n      setShouldDisabled(false);\n    }\n  }, [isPlaying]);\n\n  // Adjust notes\n  useEffect(() => {\n    setShowNotes(showNotesPar);\n    const canvas = canvasRef.current;\n    if (canvas && canvas.getContext) {\n      const ctx = canvas.getContext('2d');\n      if (ctx) {\n        ctx.clearRect(0, 0, canvas.width / 24, canvas.height);\n        drawBackground(canvasRef, initialRange[1], initialRange[0], !showNotes);\n      }\n    }\n  }, [showNotesPar]);\n  return /*#__PURE__*/_jsxDEV(Row, {\n    style: {\n      maxHeight: \"27vw\",\n      marginBottom: \"5vw\",\n      maxWidth: \"100vw\"\n    },\n    children: [/*#__PURE__*/_jsxDEV(Col, {\n      span: 1\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 439,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(Col, {\n      span: 22,\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: 446,\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: 447,\n              columnNumber: 39\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 444,\n            columnNumber: 13\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: 452,\n                columnNumber: 54\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: 453,\n                columnNumber: 53\n              }, this))) !== null && _freqLabel$map !== void 0 ? _freqLabel$map : []\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 450,\n              columnNumber: 15\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 449,\n            columnNumber: 13\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: 459,\n                columnNumber: 19\n              }, this))) !== null && _freqLabel$map2 !== void 0 ? _freqLabel$map2 : []\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 457,\n              columnNumber: 15\n            }, this)\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 456,\n            columnNumber: 13\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 443,\n          columnNumber: 11\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 442,\n        columnNumber: 7\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: 467,\n          columnNumber: 11\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: 490,\n              columnNumber: 17\n            }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n              className: \"timeMarkerNum\",\n              children: (15 / (divisor / 4) * (index / 10)).toFixed(1)\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 491,\n              columnNumber: 17\n            }, this)]\n          }, index, true, {\n            fileName: _jsxFileName,\n            lineNumber: 489,\n            columnNumber: 15\n          }, this))\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 475,\n          columnNumber: 11\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: 510,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 497,\n          columnNumber: 11\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 466,\n        columnNumber: 9\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 441,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(Col, {\n      span: 1,\n      children: /*#__PURE__*/_jsxDEV(\"div\", {\n        children: /*#__PURE__*/_jsxDEV(Slider, {\n          vertical: true,\n          range: true\n          //   tooltip={{open:true}}\n          ,\n          min: initialRange[0],\n          max: initialRange[1],\n          style: {\n            marginTop: 0,\n            height: canvasHeight\n          },\n          onChange: onChange,\n          defaultValue: inputValue\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 519,\n          columnNumber: 21\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 518,\n        columnNumber: 7\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 517,\n      columnNumber: 7\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 437,\n    columnNumber: 5\n  }, this);\n};\n_s(Heteronym, \"OBxap9rVfSHYj8i5Q5V/YukZwYY=\", false, function () {\n  return [useCanvasHooks, useCanvasChangeHzAndNotes];\n});\n_c = Heteronym;\nexport default Heteronym;\nvar _c;\n$RefreshReg$(_c, \"Heteronym\");","map":{"version":3,"names":["React","useEffect","useRef","useState","map","drawBackground","getPitch","Col","Row","Slider","useCanvasHooks","useCanvasChangeHzAndNotes","jsxDEV","_jsxDEV","style","display","height","Heteronym","setMaxLyricCount","initialRange","divisor","txtShow","isRetry","setPlayingPause","playLyricCount","setPlaying","config","COLORS","size","isPlaying","showNotesPar","heteronymFile","_s","_notesLabel$map","_freqLabel$map","_freqLabel$map2","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","SRATE","fxmin","fxlow","fxhigh","fxmax","ballY","setBallY","cornerRadius","divisorLocal","desiredLength","Math","floor","desiredLengthBall","inputValue","setInputValue","initialColorChangesFull","Array","fill","initialBallHistoryFull","NaN","colorChangesFull","setColorChangesFull","ballHistoryFull","setBallHistoryFull","pitchArrayCusFull","setPitchArrayCusFull","resetStatesFull","isPlayingRef","initialColorChanges","initialBallHistory","initialPitchArrayCus","pitchArrayCus","setPitchArrayCus","shouldDisabled","setShouldDisabled","pitchArray","setPitchArray","onChange","newValue","updatePitchArrayCus","partLength","lastPartStart","midValue","updatedArray","i","canvas","current","ctx","getContext","clearRect","width","length","mappedJsonValue","fillStyle","fillRect","temTxtShow","fraction","heights","font","j","xPosition","yPosition","beginPath","arc","PI","closePath","textX","textY","mappedHeight","text","toFixed","metrics","measureText","textWidth","textHeight","clearX","clearY","clearWidth","clearHeight","fillText","cleanup","window","addEventListener","removeEventListener","rect","getBoundingClientRect","toggleShowNotes","updateBallHistoryFull","tempHistoryFull","ctxdiv","currentColors","newColors","difference","abs","isNaN","maxHeight","marginBottom","maxWidth","children","span","fileName","_jsxFileName","lineNumber","columnNumber","className","note","index","freq","_","ref","onMouseMove","id","border","position","top","left","justifyContent","fontSize","marginLeft","vertical","range","min","max","marginTop","defaultValue","_c","$RefreshReg$"],"sources":["D:/Project/UC_Trains_Voice/react-demo/src/Canvas/Heteronym.tsx"],"sourcesContent":["import React, { useContext, useEffect, useRef, useState } from 'react';\r\nimport { adjustCanvasScale, map, drawBackground } from '../function/canvasDefault';\r\nimport { getPitch, IPitchDetectionConfig } from '../function/getPitch';\r\nimport { Col, Row,Slider } from 'antd';\r\nimport { SearchOutlined } from '@ant-design/icons';\r\nimport { Button, Flex, Tooltip } from 'antd';\r\nimport { CONFIG, COLORS } from '../types/configTypes';\r\n\r\nimport { useCanvasHooks } from '../hooks/useCanvasHooks'; // variables and functions\r\nimport { useTemString } from '../hooks/useTemString';\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 HeteronymProps {\r\n  size: number[];\r\n  config: CONFIG;\r\n  COLORS: COLORS;\r\n  isPlaying: boolean;\r\n  showNotesPar: boolean;\r\n  playLyricCount: number;\r\n  setPlaying: ()=>void;\r\n  isRetry: boolean;\r\n  setPlayingPause: ()=>void;\r\n  txtShow: string;\r\n  divisor: number;\r\n  initialRange: number[];\r\n  setMaxLyricCount: (num:number)=>void;\r\n  heteronymFile: string[];\r\n  // setPlayLyricCount: (count:number)=>void;\r\n}\r\nconst style: React.CSSProperties = {\r\n  display: 'relative',\r\n  height: 300,\r\n};\r\n\r\nconst Heteronym: React.FC<HeteronymProps> = ({ setMaxLyricCount, initialRange, divisor, txtShow, isRetry, setPlayingPause, playLyricCount, setPlaying, config, COLORS, size, isPlaying, showNotesPar, heteronymFile }) => {\r\n  \r\n  const {\r\n    pitch,\r\n    setPitch,\r\n    mouseHeight,\r\n    setMouseHeight,\r\n    realVoiceColor,\r\n    targetVoiceColor,\r\n    closeVoiceColor,\r\n    ballYCurr,\r\n    setBallYCurr,\r\n    canvasRef,\r\n    rectWidth,\r\n    CanvasLength,\r\n    canvasHeight,\r\n    setCanvasHeight,\r\n    showNotes,\r\n    setShowNotes,\r\n    offset,\r\n    currentX,\r\n    setCurrentX,\r\n    initialcurrentX,\r\n    notesLabel,\r\n    setNotesLabel,\r\n    freqLabel,\r\n    setFreqLabel,\r\n\r\n    updateBallY,\r\n    updateCanvasHeight,\r\n    handleMouseMove,\r\n  } = useCanvasHooks(size, divisor, COLORS, initialRange);\r\n\r\n  const { SRATE, fxmin, fxlow, fxhigh, fxmax } = config;\r\n  \r\n  // const [pitchValue, setPitchValue] = useState<number | null>(null);\r\n  const [ballY, setBallY] = useState<number>(size[0]);\r\n  const cornerRadius = 1;\r\n  const divisorLocal = 4;\r\n  // const divisor = 10;\r\n  const desiredLength = Math.floor(size[1] / divisor);\r\n  const desiredLengthBall = Math.floor(size[1] / divisor / 4);\r\n  const [inputValue, setInputValue] = useState<number[]>([110,200]);\r\n    // const [CanvasLengthBall,setCanvasLengthBall] = useState<number>(size[1] * ballPosition);\r\n    // const initialCustomHistoryFull = new Array(CanvasLength).fill(NaN);\r\n    const initialColorChangesFull = new Array(CanvasLength).fill(false);\r\n    const initialBallHistoryFull = new Array(CanvasLength).fill(NaN);\r\n    // const [customHistoryFull, setCustomHistoryFull] = useState<number[]>(initialCustomHistoryFull);\r\n    const [colorChangesFull, setColorChangesFull] = useState<boolean[]>(initialColorChangesFull);\r\n    const [ballHistoryFull, setBallHistoryFull] = useState<number[]>(initialBallHistoryFull);\r\n    const [pitchArrayCusFull, setPitchArrayCusFull] = useState<number[]>(initialBallHistoryFull);\r\n    const resetStatesFull = () => {\r\n        // setCustomHistoryFull([...initialCustomHistoryFull]);\r\n        setColorChangesFull([...initialColorChangesFull]);\r\n        setBallHistoryFull([...initialBallHistoryFull]);\r\n        setCurrentX(initialcurrentX);\r\n      };\r\n\r\n  // const [ballHistory, setBallHistory] = useState<number[]>(new Array(desiredLength).fill(NaN));\r\n  const isPlayingRef = useRef(isPlaying);\r\n  // const [colorChanges, setColorChanges] = useState<boolean[]>(new Array(desiredLength).fill(true));\r\n  const initialColorChanges = new Array(desiredLength).fill(true);\r\n  const initialBallHistory = new Array(desiredLength).fill(NaN);\r\n  const initialPitchArrayCus = new Array(desiredLength).fill(NaN);\r\n  \r\n  // const [colorChanges, setColorChanges] = useState<boolean[]>(initialColorChanges);\r\n  // const [ballHistory, setBallHistory] = useState<number[]>(initialBallHistory);\r\n  const [pitchArrayCus, setPitchArrayCus] = useState<number[]>(initialPitchArrayCus);\r\n  // const resetStates = () => {\r\n  //     setColorChanges([...initialColorChanges]);\r\n  //     setBallHistory([...initialBallHistory]);\r\n  //     setCurrentX(initialcurrentX);\r\n  //   };\r\n    const [shouldDisabled, setShouldDisabled] = useState<boolean>(false);\r\n  const [pitchArray, setPitchArray] = useState<number[]>([]);\r\n  \r\n\r\nconst onChange = (newValue: number[]) => {\r\n  setInputValue(newValue);\r\n};\r\n  // const audioSrc = \"/audio/Right across the street.wav\";\r\n  // const audioRef = useRef(new Audio(audioSrc)); \r\n\r\n\r\n  // change Notes and hz display\r\n  useCanvasChangeHzAndNotes(setShowNotes, showNotes, showNotesPar, canvasRef, initialRange, setNotesLabel, setFreqLabel, canvasHeight);\r\n\r\n  const updatePitchArrayCus = () => {\r\n    const partLength = Math.floor(CanvasLength / 5);\r\n    const lastPartStart = partLength * 4;\r\n    const midValue = (inputValue[0] + inputValue[1]) / 2;\r\n  \r\n    // const updatedArray = new Array(CanvasLength)\r\n                       \r\n    //   .fill(midValue, partLength, 2 * partLength) \r\n    //   .fill(inputValue[1], 2 * partLength, 3 * partLength)  \r\n    //   .fill(midValue, 3 * partLength, 4 * partLength)\r\n  \r\n    const updatedArray = new Array(CanvasLength);\r\n    for (let i = 0.5 * partLength; i < 1.5 * partLength; i++) {\r\n      updatedArray[i] = inputValue[1] + (midValue - inputValue[1]) * ((i - (1.5 * partLength + offset)) / partLength)-50;\r\n    }\r\n    \r\n    for (let i = 1.5 * partLength + offset; i < 2.5 * partLength + offset; i++) {\r\n\r\n      updatedArray[i] = midValue + (inputValue[1] - midValue) * ((i - 0.5 * partLength) / partLength)-50;\r\n    }\r\n    //-45.5\r\n\r\n      // for (let i = 2 * partLength; i < 3 * partLength; i++) {\r\n      //   updatedArray[i] = midValue + (inputValue[1] - midValue) * ((i - 2 * partLength) / partLength);\r\n      // }\r\n      \r\n      // for (let i = 3 * partLength; i < 4 * partLength; i++) {\r\n      //   updatedArray[i] = inputValue[1] + (midValue - inputValue[1]) * ((i - 3 * partLength) / partLength);\r\n      // }\r\n\r\n\r\n      // for (let i = 0; i < partLength; i++) {\r\n      //   updatedArray[i] = midValue + (inputValue[1] - midValue) * (i / partLength);\r\n      // }\r\n\r\n      // for (let i = partLength; i < 2 * partLength; i++) {\r\n      //   updatedArray[i] = inputValue[1] + (midValue - inputValue[1]) * ((i - partLength) / partLength);\r\n      // }\r\n\r\n      // for (let i = 2 * partLength; i < 3 * partLength; i++) {\r\n      //   updatedArray[i] = midValue + (inputValue[0] - midValue) * ((i - 2 * partLength) / partLength);\r\n      // }\r\n\r\n      // for (let i = 3 * partLength; i < 4 * partLength; i++) {\r\n      //   updatedArray[i] = inputValue[0] + (midValue - inputValue[0]) * ((i - 3 * partLength) / partLength);\r\n      // }\r\n    setPitchArrayCus(updatedArray);\r\n  }\r\n  \r\n  // retry\r\n  useEffect(()=>{\r\n    setPlayingPause();\r\n    // resetStates();\r\n    resetStatesFull();\r\n},[isRetry,divisor])\r\n\r\nuseEffect(() => {\r\n  updatePitchArrayCus();\r\n}, [inputValue]);\r\n\r\n  useEffect(() => {\r\n    \r\n      const canvas = canvasRef.current;\r\n      if (canvas) {\r\n        const ctx = canvas.getContext('2d');\r\n        if (ctx) {\r\n          ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n          drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes);\r\n          // ctx.font = '16px Arial';\r\n          // ctx.fillStyle = 'black';\r\n          // // Calculate text position (near top right corner)\r\n          // const textX = canvas.width - 100; \r\n          // const textY = 20; \r\n          // const mappedHeight = map(mouseHeight, 0, 100, initialRange[1], initialRange[0]);\r\n          // ctx.fillText(`pitch: ${mappedHeight.toFixed(2)}`, textX, textY);\r\n\r\n          // stair \r\n          for (let i = 0 + offset; i < pitchArrayCus.length; i++) {\r\n            const mappedJsonValue = map(pitchArrayCus[i], initialRange[0], initialRange[1], size[0], 0);\r\n            // Set fill color based on condition\r\n            if (colorChangesFull[i]) {\r\n              ctx.fillStyle = closeVoiceColor;\r\n            } else {\r\n              ctx.fillStyle =  targetVoiceColor;\r\n            }\r\n            // Draw a rectangle\r\n            ctx.fillRect(i, mappedJsonValue, rectWidth, rectWidth);\r\n          }\r\n\r\n          let temTxtShow = false;\r\n          if (txtShow === \"false\") {\r\n            temTxtShow = false;\r\n          } else {\r\n            temTxtShow = true;\r\n          }\r\n          \r\n          if (temTxtShow) {\r\n            const fraction = size[1] / 5;\r\n            const heights = [inputValue[0], (inputValue[0] + inputValue[1]) / 2, inputValue[1], (inputValue[0] + inputValue[1]) / 2, inputValue[0]]; // 定义高度数组\r\n            ctx.fillStyle = \"black\"; \r\n            ctx.font = \"16px Arial\"; \r\n            for (let j = 0; j <= 4; j++) {\r\n                let xPosition = fraction * (j+1) - (fraction / 2);\r\n                let yPosition = map(heights[j]+5, initialRange[0], initialRange[1], size[0], 0);\r\n                   // 在每个位置添加数字1，20是y坐标，可根据需要调整\r\n            }\r\n          }           \r\n\r\n          // if ((isPlaying)) {\r\n            // Draw the ball's historical positions\r\n            for (var i = 0; i < ballHistoryFull.length; i++) {\r\n              // for (var i = currentX; i > 0; i--) {\r\n              ctx.beginPath();\r\n              ctx.arc(i, ballHistoryFull[i], 5, 0, 2 * Math.PI);\r\n              ctx.fillStyle = realVoiceColor;\r\n              ctx.fill();\r\n              ctx.closePath();\r\n            }\r\n            // Plot current value\r\n            ctx.beginPath();\r\n            ctx.arc(currentX * divisor, ballYCurr, 10, 0, 2 * Math.PI);\r\n            ctx.fillStyle = \"black\";\r\n            ctx.fill();\r\n            ctx.closePath();\r\n  \r\n          // }\r\n        }\r\n      }\r\n  }, [txtShow, pitchArrayCus,initialRange, ballHistoryFull, playLyricCount,showNotes, showNotesPar]);\r\n\r\n  useEffect(()=>{\r\n    const canvas = canvasRef.current;\r\n    if (canvas) {\r\n      const ctx = canvas.getContext('2d');\r\n      if (ctx) {\r\n        // ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n        drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes);\r\n\r\n        ctx.font = '16px Arial';\r\n        \r\n        ctx.fillStyle = 'black';\r\n        // Calculate text position (near top right corner)\r\n        const textX = canvas.width - 100;\r\n        const textY = 20;\r\n        // txt\r\n        const mappedHeight = map(mouseHeight, 0, 100, initialRange[1], initialRange[0]);\r\n        \r\n        const text = `pitch: ${mappedHeight.toFixed(2)}`;\r\n        const metrics = ctx.measureText(text);\r\n        const textWidth = metrics.width;\r\n        const textHeight = 16; \r\n\r\n        const clearX = textX;\r\n        const clearY = textY - textHeight;\r\n        const clearWidth = textWidth;\r\n        const clearHeight = textHeight + 5;\r\n\r\n        ctx.clearRect(clearX, clearY, clearWidth, clearHeight);\r\n\r\n        ctx.fillText(`pitch: ${mappedHeight.toFixed(2)}`, textX, textY);\r\n      }\r\n    }\r\n  },[mouseHeight])\r\n  // next\r\n  useEffect(()=>{\r\n    setPlayingPause();\r\n    resetStatesFull();\r\n},[playLyricCount])\r\n\r\nuseEffect(() => {\r\n  if (isPlaying) {\r\n    updateBallY(pitch);\r\n  }\r\n}, [pitch]);\r\n\r\n  // first\r\n  useEffect(() => {\r\n    setPlayingPause();\r\n    setMaxLyricCount(heteronymFile.length - 1); // REMINDER: PROBABLY CHANGE THIS TO WORK WITH CHANGE IN LIST BEFORE COMMIT ************************************************************************************************\r\n    drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes);\r\n    // setPlayLyricCount(syllablesString.length);\r\n    updatePitchArrayCus();\r\n    //get pitch\r\n    let cleanup: () => void;\r\n    updateCanvasHeight();\r\n    window.addEventListener('resize', updateCanvasHeight);\r\n    (async () => {\r\n      cleanup = await getPitch(config, setPitch);\r\n    })();\r\n\r\n    return () => {\r\n      cleanup && cleanup();\r\n      window.removeEventListener('resize', updateCanvasHeight);\r\n    };\r\n  }, []);\r\n\r\n  useEffect(() => {\r\n    if (canvasRef.current) {\r\n        const rect = canvasRef.current.getBoundingClientRect();\r\n        setCanvasHeight(rect.height);\r\n    }\r\n}, []);\r\n\r\n  // Change note function\r\n  const toggleShowNotes = () => {\r\n    setShowNotes(!showNotes);\r\n    const canvas = canvasRef.current;\r\n    if (canvas && canvas.getContext) {\r\n      const ctx = canvas.getContext('2d');\r\n      if (ctx) {\r\n        ctx.clearRect(0, 0, canvas.width/24, canvas.height);\r\n        drawBackground(canvasRef, initialRange[1], initialRange[0], !showNotes);\r\n      }\r\n    }\r\n  }\r\n\r\n  // Redraw the background\r\n  useEffect(() => {\r\n    drawBackground(canvasRef, initialRange[1], initialRange[0], showNotes); // Make sure the background is redrawn on state change\r\n  }, [showNotes]);\r\n\r\n  const updateBallHistoryFull = (ballY:number) => {\r\n    let tempHistoryFull = [...ballHistoryFull];\r\n    let ctxdiv = currentX * divisor;\r\n    \r\n\r\n    if (currentX < desiredLength - 1) {\r\n      setShouldDisabled(false);\r\n      tempHistoryFull[ctxdiv] = ballY;\r\n      setColorChangesFull(currentColors => {\r\n        const newColors = [...currentColors];\r\n                const mappedJsonValue = map(pitchArrayCus[ctxdiv], initialRange[0], initialRange[1], size[0], 0);\r\n                const difference = Math.abs(mappedJsonValue - ballY);\r\n                if (difference <= 50 && !isNaN(difference)) {\r\n                    for (let j = ctxdiv - divisor ; j <= ctxdiv + divisor && j < CanvasLength; j++) {\r\n                        newColors[j] = true;\r\n                    }\r\n                } \r\n        return newColors;\r\n    });\r\n\r\n    } else {\r\n      setShouldDisabled(true);\r\n        if (! shouldDisabled) {\r\n          setPlayingPause();\r\n        }\r\n    }\r\n  setCurrentX(currentX + 1);\r\n  setBallHistoryFull(tempHistoryFull); \r\n  };\r\n\r\n\r\n  useEffect(() => {\r\n    // updateBallY(pitch);\r\n    \r\n    // Only update ballHistory at currentX position\r\n    if (isPlaying) {\r\n      updateBallHistoryFull(ballY);\r\n      // let tempHistory = [...ballHistory];\r\n      // let tempColor = [...colorChanges];\r\n      // let prevPitch = tempHistory[currentX - 1] || ballY;\r\n      // if (currentX < desiredLength - 1) {\r\n      //   const averagePitch = (prevPitch + ballY) / 2;\r\n      //   tempHistory[currentX] = averagePitch;\r\n      //   tempHistory[currentX + 1] = ballY;\r\n      //   //Update color change array\r\n      //   [averagePitch, ballY].forEach((value, index) => {\r\n      //     const mappedJsonValue = map(pitchArrayCus[currentX + index], initialRange[0], initialRange[1], size[0], 0);\r\n      //     const difference = Math.abs(value - mappedJsonValue);\r\n      //     tempColor[currentX + index] = difference > 50;\r\n      //   });\r\n\r\n      //   setCurrentX(currentX + 2);\r\n      // } else {\r\n      //   setShouldDisabled(true);\r\n      //   if (! shouldDisabled) {\r\n      //     setPlayingPause();\r\n      //   }\r\n      // }\r\n      // setBallHistory(tempHistory);\r\n      // setColorChanges(tempColor);\r\n\r\n    }\r\n  }, [pitch, isPlaying]);\r\n  \r\n  useEffect(() => {\r\n    if (shouldDisabled && isPlaying) {\r\n      resetStatesFull();\r\n      setShouldDisabled(false);\r\n    }\r\n  }, [isPlaying]);\r\n\r\n  // Adjust notes\r\n  useEffect(() => {\r\n    setShowNotes(showNotesPar);\r\n    const canvas = canvasRef.current;\r\n    if (canvas && canvas.getContext) {\r\n      const ctx = canvas.getContext('2d');\r\n      if (ctx) {\r\n        ctx.clearRect(0, 0, canvas.width/24, canvas.height);\r\n        drawBackground(canvasRef, initialRange[1], initialRange[0], !showNotes);\r\n      }\r\n    }\r\n  }, [showNotesPar]);\r\n\r\n\r\n  return (\r\n    <Row style={{ maxHeight: \"27vw\",marginBottom: \"5vw\", maxWidth: \"100vw\" }}>\r\n      {/* <div className=\"color-block\"> */}\r\n      <Col span={1}>\r\n      </Col>\r\n      <Col span={22}>\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        \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)).toFixed(1)}\r\n                </span>\r\n              </div>\r\n            ))}\r\n          </div>\r\n          <div\r\n            style={{\r\n              position: 'absolute',\r\n              top: canvasHeight * (1.12),\r\n              left: 0,\r\n              width: canvasHeight * 3.486,\r\n              display: 'flex',\r\n              justifyContent: 'center',\r\n              marginLeft: '3vw',\r\n              height: '50px',\r\n            }}\r\n            className='XAxis'\r\n          >\r\n            <div>Time (Seconds)</div>\r\n\r\n          </div>\r\n\r\n        </div>\r\n\r\n      </Col>\r\n      <Col span={1}>\r\n      <div>\r\n                    <Slider\r\n                        vertical\r\n                        range \r\n                        //   tooltip={{open:true}}\r\n                        min={initialRange[0]}\r\n                        max={initialRange[1]}\r\n                        style={{ marginTop: 0, height: canvasHeight }}\r\n                        onChange={onChange}\r\n                        defaultValue={inputValue} />\r\n                </div>\r\n      </Col>\r\n    </Row>\r\n  );\r\n}\r\n\r\nexport default Heteronym;"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}