{"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, Collapse, 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  const text = /*#__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: 54,\n      columnNumber: 46\n    }, this), \". If you prefer to batch set both of the calibrated and customized values manually, you can go to \", /*#__PURE__*/_jsxDEV(\"a\", {\n      onClick: () => setCaliOpen(true),\n      children: \"calibrated table\"\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 55,\n      columnNumber: 101\n    }, this), \". 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\\\". \"]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 52,\n    columnNumber: 18\n  }, this);\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: 122,\n          columnNumber: 62\n        }, this), \". If you prefer to batch set both of the calibrated and customized values manually, you can go to \", /*#__PURE__*/_jsxDEV(\"a\", {\n          onClick: () => setCaliOpen(true),\n          children: \"calibrated table\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 123,\n          columnNumber: 117\n        }, this), \".\"]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 117,\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\\\".\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 125,\n        columnNumber: 17\n      }, this), /*#__PURE__*/_jsxDEV(Collapse, {\n        items: [{\n          key: '1',\n          label: 'This is default size panel header',\n          children: /*#__PURE__*/_jsxDEV(\"p\", {\n            children: text\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 131,\n            columnNumber: 95\n          }, this)\n        }]\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 130,\n        columnNumber: 17\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 116,\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: 136,\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: 152,\n              columnNumber: 29\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 150,\n            columnNumber: 25\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 149,\n          columnNumber: 21\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 142,\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: 158,\n        columnNumber: 17\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 135,\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: 168,\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: 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(\"span\", {\n            className: \"label\",\n            children: \"Waveform Play Control: \"\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 179,\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: 180,\n            columnNumber: 25\n          }, this)]\n        }, void 0, true, {\n          fileName: _jsxFileName,\n          lineNumber: 178,\n          columnNumber: 21\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 177,\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: 192,\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: 197,\n              columnNumber: 29\n            }, this)]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 191,\n            columnNumber: 25\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 190,\n          columnNumber: 21\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 189,\n        columnNumber: 17\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 165,\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: 219,\n        columnNumber: 17\n      }, this)],\n      children: /*#__PURE__*/_jsxDEV(RefTable, {}, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 224,\n        columnNumber: 17\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 211,\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: 234,\n        columnNumber: 17\n      }, this)],\n      children: /*#__PURE__*/_jsxDEV(CaliTable, {}, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 239,\n        columnNumber: 17\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 226,\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","Collapse","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","text","children","to","fileName","_jsxFileName","lineNumber","columnNumber","onClick","handlePauseWave","e","handleJumpToRef","handleJumpToCustom","handleSetCurrentAsCustom","success","handleOnChangeSlider","value","open","type","content","handleJumpToCalibratedTarget","Math","round","style","width","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, Collapse, 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    const text = <div>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,\r\n    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\".\r\n    To set a calibrated target, please go to <Link to=\"/gavt/calibrate\">calibration routine</Link>. \r\n    If you prefer to batch set both of the calibrated and customized values manually, you can go to <a onClick={()=>setCaliOpen(true)}>calibrated table</a>.\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\". </div>\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>. \r\n                    If you prefer to batch set both of the calibrated and customized values manually, you can go to <a onClick={()=>setCaliOpen(true)}>calibrated table</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                    \r\n                </div>\r\n                <Collapse\r\n                    items={[{ key: '1', label: 'This is default size panel header', children: <p>{text}</p> }]}\r\n                />\r\n            </div>\r\n\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":[]}