{"ast":null,"code":"var _jsxFileName = \"D:\\\\Project\\\\UC_Trains_Voice\\\\react-demo\\\\src\\\\gavt\\\\Wave\\\\Wave.jsx\",\n  _s = $RefreshSig$();\nimport { useState, useEffect } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport waveDrawLoop from './lib/waveDrawLoop.js';\nimport WaveCanvas from './WaveCanvas.jsx';\nimport RefTable from '../table/RefTable';\nimport CaliTable from '../table/CaliTable';\nimport './Wave.css';\nimport { Slider, Button, Col, Row, Flex, Dropdown, Space, Modal, message } from \"antd\";\nimport { DownOutlined } from '@ant-design/icons';\nimport 'antd/dist/reset.css';\nimport { jsxDEV as _jsxDEV, Fragment as _Fragment } from \"react/jsx-dev-runtime\";\nconst items = [{\n  key: '0',\n  label: 'Baseline'\n}, {\n  key: '1',\n  label: 'Moderately Darker (Baseline * 0.92)'\n}, {\n  key: '2',\n  label: 'Slightly Darker (Baseline * 0.98)'\n}, {\n  key: '3',\n  label: 'Slightly Brighter (Baseline * 1.02)'\n}, {\n  key: '4',\n  label: 'Moderately Brighter (Baseline * 1.08)'\n}];\nconst Wave = ({\n  frequency,\n  currentVowel,\n  refFrequency,\n  setCustomFrequency\n}) => {\n  _s();\n  const [waveIsPaused, setWaveIsPaused] = useState(false);\n  const [pos, setPos] = useState(frequency || 1500);\n  const [messageApi, contextHolder] = message.useMessage();\n\n  // For Modals\n  const [refOpen, setRefOpen] = useState(false);\n  const [caliOpen, setCaliOpen] = useState(false);\n  const caliBaselineRaw = localStorage.getItem('caliBaseline');\n  const caliBaseline = JSON.parse(caliBaselineRaw);\n  const customFrequenciesRaw = localStorage.getItem('customFrequencies');\n  const customFrequencies = JSON.parse(customFrequenciesRaw);\n  console.log(`Wave.jsx: caliBaselineRaw of ${currentVowel}:, ${caliBaseline[currentVowel]}. customFrequenciesRaw: ${customFrequencies[currentVowel]}`);\n  useEffect(() => {\n    if (frequency) {\n      setPos(frequency);\n    }\n  }, [frequency]);\n  const handlePauseWave = e => setWaveIsPaused(!waveIsPaused);\n  const handleJumpToRef = () => {\n    setPos(refFrequency || 1500);\n  };\n  const handleJumpToCustom = () => {\n    setPos(frequency);\n  };\n  const handleSetCurrentAsCustom = () => {\n    setCustomFrequency(pos);\n    success(pos);\n  };\n  const handleOnChangeSlider = value => {\n    setPos(value);\n  };\n  const success = pos => {\n    messageApi.open({\n      type: 'success',\n      content: 'Successfully set the customized target frequency to ' + pos + ' Hz.'\n    });\n  };\n  const handleJumpToCalibratedTarget = e => {\n    switch (e.key) {\n      case '0':\n        setPos(caliBaseline[currentVowel]);\n        break;\n      case '1':\n        setPos(Math.round(caliBaseline[currentVowel] * 0.92));\n        break;\n      case '2':\n        setPos(Math.round(caliBaseline[currentVowel] * 0.98));\n        break;\n      case '3':\n        setPos(Math.round(caliBaseline[currentVowel] * 1.02));\n        break;\n      case '4':\n        setPos(Math.round(caliBaseline[currentVowel] * 1.08));\n        break;\n      default:\n        setPos(Math.round(caliBaseline[currentVowel]));\n    }\n  };\n  return /*#__PURE__*/_jsxDEV(_Fragment, {\n    children: [contextHolder, /*#__PURE__*/_jsxDEV(\"div\", {\n      style: {\n        width: '70%'\n      },\n      children: [/*#__PURE__*/_jsxDEV(\"div\", {\n        children: [\"We provide 3 types of values: Referenced, Calibrated, and Customized. You can jump to any of these target by clicking the buttons below. If the button is disabled, it means you haven't set the corresponding value yet. To set a customized target, you can drag the slider below the waveform to the desired position, and click the button \\\"Set Current Value as Customized Target\\\". To set a calibrated target, please go to \", /*#__PURE__*/_jsxDEV(Link, {\n          to: \"/gavt/calibrate\",\n          children: \"calibration routine\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 115,\n          columnNumber: 62\n        }, this), \" (SUGGESTED) or\", /*#__PURE__*/_jsxDEV(\"a\", {\n          onClick: () => setCaliOpen(true),\n          children: \" manually set a calibrated value\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 116,\n          columnNumber: 21\n        }, this), \".\"]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 110,\n        columnNumber: 17\n      }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n        children: [\"To set a customized value, you can drag the slider below the waveform to the desired position, and click the button \\\"Set Current Value as Customized Target\\\". Or, you can batch set the customized value \", /*#__PURE__*/_jsxDEV(\"a\", {\n          onClick: () => setCaliOpen(true),\n          children: \"here\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 121,\n          columnNumber: 64\n        }, this), \".\"]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 118,\n        columnNumber: 17\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 109,\n      columnNumber: 13\n    }, this), /*#__PURE__*/_jsxDEV(Flex, {\n      gap: \"small\",\n      style: {\n        margin: '10px'\n      },\n      children: [/*#__PURE__*/_jsxDEV(Button, {\n        onClick: handleJumpToRef,\n        children: \"Jump to Referenced Value\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 125,\n        columnNumber: 17\n      }, this), /*#__PURE__*/_jsxDEV(Dropdown, {\n        menu: {\n          items,\n          onClick: handleJumpToCalibratedTarget\n        },\n        disabled: caliBaseline[currentVowel] === '' || caliBaseline[currentVowel] === undefined,\n        children: /*#__PURE__*/_jsxDEV(Button, {\n          children: /*#__PURE__*/_jsxDEV(Space, {\n            children: [\"Jump to Calibrated Value\", /*#__PURE__*/_jsxDEV(DownOutlined, {}, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 141,\n              columnNumber: 29\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 139,\n            columnNumber: 25\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 138,\n          columnNumber: 21\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 131,\n        columnNumber: 17\n      }, this), /*#__PURE__*/_jsxDEV(Button, {\n        onClick: handleJumpToCustom,\n        disabled: customFrequencies[currentVowel] === '' || customFrequencies[currentVowel] === undefined,\n        children: \"Jump to Customized Value\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 147,\n        columnNumber: 17\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 124,\n      columnNumber: 13\n    }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n      className: \"wlMainParent\",\n      children: [/*#__PURE__*/_jsxDEV(Row, {\n        children: /*#__PURE__*/_jsxDEV(Col, {\n          span: 24,\n          children: [/*#__PURE__*/_jsxDEV(\"span\", {\n            className: \"label\",\n            children: [\"Frequency Value at Current Position: \", pos, \" Hz\"]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 157,\n            columnNumber: 25\n          }, this), /*#__PURE__*/_jsxDEV(Button, {\n            onClick: handleSetCurrentAsCustom,\n            style: {\n              marginLeft: '10px'\n            },\n            children: \"Set Curret Value as Customized Target\"\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 158,\n            columnNumber: 25\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 156,\n          columnNumber: 21\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 155,\n        columnNumber: 17\n      }, this), /*#__PURE__*/_jsxDEV(Row, {\n        children: /*#__PURE__*/_jsxDEV(Col, {\n          span: 24,\n          children: [/*#__PURE__*/_jsxDEV(\"span\", {\n            className: \"label\",\n            children: \"Waveform Play Control: \"\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 168,\n            columnNumber: 25\n          }, this), /*#__PURE__*/_jsxDEV(Button, {\n            onClick: handlePauseWave,\n            style: {\n              marginTop: '10px',\n              marginLeft: '10px'\n            },\n            type: \"primary\",\n            children: waveIsPaused ? \"Play\" : \"Pause\"\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 169,\n            columnNumber: 25\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 167,\n          columnNumber: 21\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 166,\n        columnNumber: 17\n      }, this), /*#__PURE__*/_jsxDEV(Row, {\n        children: /*#__PURE__*/_jsxDEV(Col, {\n          span: 24,\n          children: /*#__PURE__*/_jsxDEV(\"div\", {\n            className: \"canvasandslider\",\n            children: [/*#__PURE__*/_jsxDEV(WaveCanvas, {\n              className: \"waveCanvas\",\n              draw: waveDrawLoop,\n              isPaused: waveIsPaused\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 181,\n              columnNumber: 29\n            }, this), /*#__PURE__*/_jsxDEV(Slider, {\n              className: \"custom-slider\",\n              min: 0,\n              max: 4096,\n              value: pos,\n              onChange: handleOnChangeSlider,\n              defaultValue: 1500,\n              style: {\n                margin: 0\n              },\n              tooltip: {\n                open: false\n              }\n            }, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 186,\n              columnNumber: 29\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 180,\n            columnNumber: 25\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 179,\n          columnNumber: 21\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 178,\n        columnNumber: 17\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 154,\n      columnNumber: 13\n    }, this), /*#__PURE__*/_jsxDEV(Modal, {\n      title: \"Reference Frequency Values\",\n      centered: true,\n      open: refOpen,\n      onOk: () => setRefOpen(false),\n      onCancel: () => setRefOpen(false),\n      width: 1000,\n      footer: [/*#__PURE__*/_jsxDEV(Button, {\n        type: \"primary\",\n        onClick: () => setRefOpen(false),\n        children: \"OK\"\n      }, \"submit\", false, {\n        fileName: _jsxFileName,\n        lineNumber: 208,\n        columnNumber: 17\n      }, this)],\n      children: /*#__PURE__*/_jsxDEV(RefTable, {}, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 213,\n        columnNumber: 17\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 200,\n      columnNumber: 13\n    }, this), /*#__PURE__*/_jsxDEV(Modal, {\n      title: \"Calibrated Frequency Values\",\n      centered: true,\n      open: caliOpen,\n      onOk: () => setCaliOpen(false),\n      onCancel: () => setCaliOpen(false),\n      width: 1000,\n      footer: [/*#__PURE__*/_jsxDEV(Button, {\n        type: \"primary\",\n        onClick: () => setCaliOpen(false),\n        children: \"OK\"\n      }, \"submit\", false, {\n        fileName: _jsxFileName,\n        lineNumber: 223,\n        columnNumber: 17\n      }, this)],\n      children: /*#__PURE__*/_jsxDEV(CaliTable, {}, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 228,\n        columnNumber: 17\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 215,\n      columnNumber: 13\n    }, this)]\n  }, void 0, true);\n};\n_s(Wave, \"RCKfewlqlrKV2mXPnS98E8Hk82Q=\", false, function () {\n  return [message.useMessage];\n});\n_c = Wave;\nexport default Wave;\nvar _c;\n$RefreshReg$(_c, \"Wave\");","map":{"version":3,"names":["useState","useEffect","Link","waveDrawLoop","WaveCanvas","RefTable","CaliTable","Slider","Button","Col","Row","Flex","Dropdown","Space","Modal","message","DownOutlined","jsxDEV","_jsxDEV","Fragment","_Fragment","items","key","label","Wave","frequency","currentVowel","refFrequency","setCustomFrequency","_s","waveIsPaused","setWaveIsPaused","pos","setPos","messageApi","contextHolder","useMessage","refOpen","setRefOpen","caliOpen","setCaliOpen","caliBaselineRaw","localStorage","getItem","caliBaseline","JSON","parse","customFrequenciesRaw","customFrequencies","console","log","handlePauseWave","e","handleJumpToRef","handleJumpToCustom","handleSetCurrentAsCustom","success","handleOnChangeSlider","value","open","type","content","handleJumpToCalibratedTarget","Math","round","children","style","width","to","fileName","_jsxFileName","lineNumber","columnNumber","onClick","gap","margin","menu","disabled","undefined","className","span","marginLeft","marginTop","draw","isPaused","min","max","onChange","defaultValue","tooltip","title","centered","onOk","onCancel","footer","_c","$RefreshReg$"],"sources":["D:/Project/UC_Trains_Voice/react-demo/src/gavt/Wave/Wave.jsx"],"sourcesContent":["import { useState, useEffect } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport waveDrawLoop from './lib/waveDrawLoop.js';\r\nimport WaveCanvas from './WaveCanvas.jsx';\r\nimport RefTable from '../table/RefTable';\r\nimport CaliTable from '../table/CaliTable';\r\nimport './Wave.css';\r\n\r\nimport { Slider, Button, Col, Row, Flex, Dropdown, Space, Modal, message } from \"antd\";\r\nimport { DownOutlined } from '@ant-design/icons';\r\nimport 'antd/dist/reset.css'; \r\n\r\nconst items = [\r\n    {\r\n        key: '0',\r\n        label: 'Baseline',\r\n    },\r\n    {\r\n      key: '1',\r\n      label: 'Moderately Darker (Baseline * 0.92)',\r\n    },\r\n    {\r\n      key: '2',\r\n      label: 'Slightly Darker (Baseline * 0.98)',\r\n    },\r\n    {\r\n      key: '3',\r\n      label: 'Slightly Brighter (Baseline * 1.02)',\r\n    },\r\n    {\r\n        key: '4',\r\n        label: 'Moderately Brighter (Baseline * 1.08)',\r\n      },\r\n  ];\r\n\r\nconst Wave = ({ frequency, currentVowel, refFrequency, setCustomFrequency }) => {\r\n    const [waveIsPaused, setWaveIsPaused] = useState(false);\r\n    const [pos, setPos] = useState( frequency || 1500 );\r\n    const [messageApi, contextHolder] = message.useMessage();\r\n\r\n    // For Modals\r\n    const [refOpen, setRefOpen] = useState(false);\r\n    const [caliOpen, setCaliOpen] = useState(false);\r\n\r\n    const caliBaselineRaw = localStorage.getItem('caliBaseline');\r\n    const caliBaseline = JSON.parse(caliBaselineRaw);\r\n    const customFrequenciesRaw = localStorage.getItem('customFrequencies');\r\n    const customFrequencies = JSON.parse(customFrequenciesRaw);\r\n    console.log(`Wave.jsx: caliBaselineRaw of ${currentVowel}:, ${caliBaseline[currentVowel]}. customFrequenciesRaw: ${customFrequencies[currentVowel]}`);\r\n\r\n    useEffect(() => {\r\n        if (frequency) {\r\n            setPos(frequency);\r\n        }\r\n    }, [frequency]);\r\n\r\n    const handlePauseWave = (e) => setWaveIsPaused(!waveIsPaused)\r\n\r\n    const handleJumpToRef = () => {\r\n        setPos(refFrequency || 1500);\r\n    };\r\n\r\n    const handleJumpToCustom = () => {\r\n            setPos(frequency);\r\n    };\r\n\r\n    const handleSetCurrentAsCustom = () => {\r\n        setCustomFrequency(pos);\r\n        success(pos);\r\n      };\r\n    \r\n    const handleOnChangeSlider = (value) => {\r\n        setPos(value)\r\n    };\r\n\r\n    const success = (pos) => {\r\n        messageApi.open({\r\n          type: 'success',\r\n          content: 'Successfully set the customized target frequency to ' + pos + ' Hz.',\r\n        });\r\n    };\r\n\r\n    const handleJumpToCalibratedTarget = (e) => {\r\n        switch (e.key) {\r\n            case '0':\r\n                setPos(caliBaseline[currentVowel]);\r\n                break;\r\n            case '1':\r\n                setPos(Math.round(caliBaseline[currentVowel] * 0.92));\r\n                break;\r\n            case '2':\r\n                setPos(Math.round(caliBaseline[currentVowel] * 0.98));\r\n                break;\r\n            case '3':\r\n                setPos(Math.round(caliBaseline[currentVowel] * 1.02));\r\n                break;\r\n            case '4':\r\n                setPos(Math.round(caliBaseline[currentVowel] * 1.08));\r\n                break;\r\n            default:\r\n                setPos(Math.round(caliBaseline[currentVowel]));\r\n        }\r\n    }\r\n\r\n    return (\r\n        <>\r\n            {contextHolder}\r\n            <div style={{ width: '70%' }}>\r\n                <div>\r\n                    We provide 3 types of values: Referenced, Calibrated, and Customized.\r\n                    You can jump to any of these target by clicking the buttons below. If the button is disabled,\r\n                    it means you haven't set the corresponding value yet.\r\n                    To set a customized target, you can drag the slider below the waveform to the desired position, and click the button \"Set Current Value as Customized Target\".\r\n                    To set a calibrated target, please go to <Link to=\"/gavt/calibrate\">calibration routine</Link> (SUGGESTED) or\r\n                    <a onClick={()=>setCaliOpen(true)}> manually set a calibrated value</a>.\r\n                </div>\r\n                <div>\r\n                    To set a customized value, you can drag the slider below the waveform to the desired position,\r\n                    and click the button \"Set Current Value as Customized Target\". \r\n                    Or, you can batch set the customized value <a onClick={()=>setCaliOpen(true)}>here</a>.\r\n                </div>\r\n            </div>\r\n            <Flex gap=\"small\" style={{margin:'10px'}}>\r\n                <Button \r\n                    onClick={handleJumpToRef}\r\n                >\r\n                    Jump to Referenced Value\r\n                </Button>\r\n\r\n                <Dropdown\r\n                    menu={{\r\n                        items,\r\n                        onClick: handleJumpToCalibratedTarget\r\n                    }}\r\n                    disabled={caliBaseline[currentVowel] === '' || caliBaseline[currentVowel] === undefined}\r\n                >\r\n                    <Button>\r\n                        <Space>\r\n                            Jump to Calibrated Value\r\n                            <DownOutlined />\r\n                        </Space>\r\n                    </Button>\r\n                    \r\n                </Dropdown>\r\n\r\n                <Button \r\n                    onClick={handleJumpToCustom}\r\n                    disabled={customFrequencies[currentVowel] === '' || customFrequencies[currentVowel] === undefined}\r\n                >\r\n                    Jump to Customized Value \r\n                </Button>\r\n            </Flex>\r\n            <div className=\"wlMainParent\">\r\n                <Row>\r\n                    <Col span={24}>\r\n                        <span className=\"label\">Frequency Value at Current Position: {pos} Hz</span>\r\n                        <Button \r\n                            onClick={ handleSetCurrentAsCustom }\r\n                            style = {{ marginLeft: '10px' }}\r\n                        >\r\n                            Set Curret Value as Customized Target\r\n                        </Button>\r\n                    </Col>\r\n                </Row>\r\n                <Row>\r\n                    <Col span={24}>\r\n                        <span className=\"label\">Waveform Play Control: </span>\r\n                        <Button\r\n                            onClick={ handlePauseWave }\r\n                            style={{ marginTop: '10px', marginLeft: '10px'}}\r\n                            type=\"primary\"\r\n                        >\r\n                            {(waveIsPaused) ? \"Play\" : \"Pause\"}\r\n                        </Button>\r\n                    </Col>\r\n                </Row>\r\n                <Row>\r\n                    <Col span={24}>\r\n                        <div className=\"canvasandslider\">\r\n                            <WaveCanvas\r\n                                className=\"waveCanvas\"\r\n                                draw={waveDrawLoop}\r\n                                isPaused={waveIsPaused}\r\n                            />\r\n                            <Slider\r\n                                className=\"custom-slider\"\r\n                                min={0}\r\n                                max={4096}\r\n                                value={pos}\r\n                                onChange={handleOnChangeSlider}\r\n                                defaultValue={1500}\r\n                                style={{ margin: 0}}\r\n                                tooltip={{open: false}}\r\n                            />\r\n                        </div>\r\n                    </Col>\r\n                </Row>\r\n            </div>\r\n            <Modal\r\n                title=\"Reference Frequency Values\"\r\n                centered\r\n                open={refOpen}\r\n                onOk={() => setRefOpen(false)}\r\n                onCancel={() => setRefOpen(false)}\r\n                width={1000}\r\n                footer={[\r\n                <Button key=\"submit\" type=\"primary\" onClick={() => setRefOpen(false)}>\r\n                    OK\r\n                </Button>\r\n                ]}\r\n            >\r\n                <RefTable />\r\n            </Modal>\r\n            <Modal\r\n                title=\"Calibrated Frequency Values\"\r\n                centered\r\n                open={caliOpen}\r\n                onOk={() => setCaliOpen(false)}\r\n                onCancel={() => setCaliOpen(false)}\r\n                width={1000}\r\n                footer={[\r\n                <Button key=\"submit\" type=\"primary\" onClick={() => setCaliOpen(false)}>\r\n                    OK\r\n                </Button>\r\n                ]}\r\n            >\r\n                <CaliTable />\r\n            </Modal>\r\n        </>\r\n    )\r\n}\r\n\r\nexport default Wave;"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}