{"ast":null,"code":"var _jsxFileName = \"/var/www/gavt/react-demo/src/Route/Gavt.tsx\",\n  _s = $RefreshSig$();\nimport { useState } from 'react';\nimport { Alert, Space, Button, Modal, Table } from 'antd';\nimport ResonanceMenu from '../gavt/ResonanceMenu';\nimport transcripts from '../gavt/transcripts';\nimport '../gavt/ResonanceMenu.css';\nimport '../gavt/Gavt.css';\nimport CustomWave from '../gavt/Tutorial/CustomWave';\nimport { jsxDEV as _jsxDEV, Fragment as _Fragment } from \"react/jsx-dev-runtime\";\nconst Gavt = () => {\n  _s();\n  const [isTranscriptVisible, setIsTranscriptVisible] = useState(false);\n  const [transcriptContent, setTranscriptContent] = useState('');\n  const [currentVideo, setCurrentVideo] = useState(null);\n  const [showCanvas, setshowCanvas] = useState(false);\n  const showTranscript = part => {\n    setTranscriptContent(transcripts[part]);\n    setIsTranscriptVisible(true);\n  };\n  const handleTranscriptCancel = () => {\n    setIsTranscriptVisible(false);\n  };\n  const handleVideoSelect = url => {\n    setCurrentVideo(url);\n  };\n  const handleShowCanvas = () => {\n    setshowCanvas(!showCanvas);\n  };\n  return /*#__PURE__*/_jsxDEV(\"div\", {\n    style: {\n      display: 'flex',\n      flexDirection: 'column',\n      alignItems: 'center'\n    },\n    children: [/*#__PURE__*/_jsxDEV(\"div\", {\n      children: /*#__PURE__*/_jsxDEV(\"h2\", {\n        children: \"Resonance: Tutorial\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 44,\n        columnNumber: 9\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 43,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n      style: {\n        padding: '20px'\n      },\n      children: /*#__PURE__*/_jsxDEV(Alert, {\n        style: {\n          backgroundColor: '#FFEFEF',\n          borderColor: '#FFEFEF'\n        },\n        description: /*#__PURE__*/_jsxDEV(_Fragment, {\n          children: /*#__PURE__*/_jsxDEV(\"div\", {\n            children: [\"Welcome! Here you can use a real-time display of your speech to work on resonance. NOTE: Please use the Chrome browser to access this module. Other browsers are not supported at this time.\", /*#__PURE__*/_jsxDEV(\"br\", {}, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 60,\n              columnNumber: 17\n            }, this), /*#__PURE__*/_jsxDEV(\"br\", {}, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 61,\n              columnNumber: 17\n            }, this), \"Resonance can be challenging to understand! We encourage you to watch at least the first three tutorial sections (video clips 1-3 minutes long) before you try out the software.\", /*#__PURE__*/_jsxDEV(\"br\", {}, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 63,\n              columnNumber: 17\n            }, this), /*#__PURE__*/_jsxDEV(\"br\", {}, void 0, false, {\n              fileName: _jsxFileName,\n              lineNumber: 64,\n              columnNumber: 17\n            }, this), \"Our software works best with an external microphone plugged into your device, even if it's just a set of earbuds with an in-line microphone.\"]\n          }, void 0, true, {\n            fileName: _jsxFileName,\n            lineNumber: 58,\n            columnNumber: 15\n          }, this)\n        }, void 0, false),\n        type: \"info\"\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 51,\n        columnNumber: 9\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 46,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n      style: {\n        width: '100%',\n        display: 'flex',\n        flexDirection: 'row',\n        justifyContent: 'space-between',\n        padding: '20px',\n        alignItems: 'stretch',\n        height: '100%'\n      },\n      children: [/*#__PURE__*/_jsxDEV(Space, {\n        direction: \"vertical\",\n        style: {\n          marginRight: '20px',\n          flex: 1\n        },\n        children: [/*#__PURE__*/_jsxDEV(Table, {\n          bordered: true,\n          pagination: false,\n          showHeader: false,\n          dataSource: [{\n            key: '1',\n            part1: 'Tutorial: Getting Started',\n            part2: 'Tutorial: Next Steps'\n          }, {\n            key: '2',\n            part1: /*#__PURE__*/_jsxDEV(\"div\", {\n              style: {\n                display: 'inline-flex',\n                alignItems: 'center'\n              },\n              children: [/*#__PURE__*/_jsxDEV(Button, {\n                type: \"link\",\n                onClick: () => handleVideoSelect('https://www.youtube.com/embed/WTs2QcTTpHo'),\n                children: \"Part 1. What is resonance? (1:30)\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 97,\n                columnNumber: 21\n              }, this), /*#__PURE__*/_jsxDEV(Button, {\n                type: \"link\",\n                onClick: () => showTranscript('part1'),\n                children: \"Transcript\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 103,\n                columnNumber: 21\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 96,\n              columnNumber: 19\n            }, this),\n            part2: /*#__PURE__*/_jsxDEV(\"div\", {\n              style: {\n                display: 'inline-flex',\n                alignItems: 'center'\n              },\n              children: [/*#__PURE__*/_jsxDEV(Button, {\n                type: \"link\",\n                onClick: () => handleVideoSelect('https://www.youtube.com/embed/cpn56ZHfRv8'),\n                children: \"Part 4. Strategies for resonance (2:00)\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 109,\n                columnNumber: 21\n              }, this), /*#__PURE__*/_jsxDEV(Button, {\n                type: \"link\",\n                onClick: () => showTranscript('part4'),\n                children: \"Transcript\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 115,\n                columnNumber: 21\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 108,\n              columnNumber: 19\n            }, this)\n          }, {\n            key: '3',\n            part1: /*#__PURE__*/_jsxDEV(\"div\", {\n              style: {\n                display: 'inline-flex',\n                alignItems: 'center'\n              },\n              children: [/*#__PURE__*/_jsxDEV(Button, {\n                type: \"link\",\n                onClick: () => handleVideoSelect('https://www.youtube.com/embed/mFJajI69MIU'),\n                children: \"Part 2. Bright and dark resonance (1:15)\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 123,\n                columnNumber: 21\n              }, this), /*#__PURE__*/_jsxDEV(Button, {\n                type: \"link\",\n                onClick: () => showTranscript('part2'),\n                children: \"Transcript\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 129,\n                columnNumber: 21\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 122,\n              columnNumber: 19\n            }, this),\n            part2: /*#__PURE__*/_jsxDEV(\"div\", {\n              style: {\n                display: 'inline-flex',\n                alignItems: 'center'\n              },\n              children: [/*#__PURE__*/_jsxDEV(Button, {\n                type: \"link\",\n                onClick: () => handleVideoSelect('https://www.youtube.com/embed/O3m2-D61POU'),\n                children: \"Part 5. Resonance chains (2:00)\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 135,\n                columnNumber: 21\n              }, this), /*#__PURE__*/_jsxDEV(Button, {\n                type: \"link\",\n                onClick: () => showTranscript('part5'),\n                children: \"Transcript\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 141,\n                columnNumber: 21\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 134,\n              columnNumber: 19\n            }, this)\n          }, {\n            key: '4',\n            part1: /*#__PURE__*/_jsxDEV(\"div\", {\n              style: {\n                display: 'inline-flex',\n                alignItems: 'center'\n              },\n              children: [/*#__PURE__*/_jsxDEV(Button, {\n                type: \"link\",\n                onClick: () => handleVideoSelect('https://www.youtube.com/embed/wPpiuMfIb3E'),\n                children: \"Part 3. Modifying resonance (1:20)\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 149,\n                columnNumber: 21\n              }, this), /*#__PURE__*/_jsxDEV(Button, {\n                type: \"link\",\n                onClick: () => showTranscript('part3'),\n                children: \"Transcript\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 155,\n                columnNumber: 21\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 148,\n              columnNumber: 19\n            }, this),\n            part2: /*#__PURE__*/_jsxDEV(\"div\", {\n              style: {\n                display: 'inline-flex',\n                alignItems: 'center'\n              },\n              children: [/*#__PURE__*/_jsxDEV(Button, {\n                type: \"link\",\n                onClick: () => handleVideoSelect('https://www.youtube.com/embed/PslG19nE0Yw'),\n                children: \"Part 6. Pitch versus resonance (2:50)\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 161,\n                columnNumber: 21\n              }, this), /*#__PURE__*/_jsxDEV(Button, {\n                type: \"link\",\n                onClick: () => showTranscript('part6'),\n                children: \"Transcript\"\n              }, void 0, false, {\n                fileName: _jsxFileName,\n                lineNumber: 167,\n                columnNumber: 21\n              }, this)]\n            }, void 0, true, {\n              fileName: _jsxFileName,\n              lineNumber: 160,\n              columnNumber: 19\n            }, this)\n          }],\n          columns: [{\n            dataIndex: 'part1',\n            key: 'part1',\n            render: (text, record, index) => {\n              if (index === 0) {\n                return {\n                  children: text,\n                  props: {\n                    colSpan: 1\n                  }\n                };\n              }\n              return text;\n            }\n          }, {\n            dataIndex: 'part2',\n            key: 'part2',\n            render: (text, record, index) => {\n              if (index === 0) {\n                return {\n                  children: text,\n                  props: {\n                    colSpan: 1\n                  }\n                };\n              }\n              return text;\n            }\n          }]\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 88,\n          columnNumber: 13\n        }, this), /*#__PURE__*/_jsxDEV(Modal, {\n          title: \"Transcript\",\n          open: isTranscriptVisible,\n          onCancel: handleTranscriptCancel,\n          footer: [/*#__PURE__*/_jsxDEV(Button, {\n            onClick: handleTranscriptCancel,\n            children: \"Close\"\n          }, \"close\", false, {\n            fileName: _jsxFileName,\n            lineNumber: 212,\n            columnNumber: 15\n          }, this)],\n          children: /*#__PURE__*/_jsxDEV(\"div\", {\n            dangerouslySetInnerHTML: {\n              __html: transcriptContent\n            }\n          }, void 0, false, {\n            fileName: _jsxFileName,\n            lineNumber: 217,\n            columnNumber: 13\n          }, this)\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 207,\n          columnNumber: 11\n        }, this)]\n      }, void 0, true, {\n        fileName: _jsxFileName,\n        lineNumber: 81,\n        columnNumber: 11\n      }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n        style: {\n          flex: 1,\n          width: '90%',\n          padding: '5px',\n          border: '1px solid #ddd',\n          borderRadius: '5px'\n        },\n        children: currentVideo ? /*#__PURE__*/_jsxDEV(\"iframe\", {\n          width: \"100%\",\n          height: \"100%\",\n          src: currentVideo,\n          title: \"YouTube Video Player\",\n          allow: \"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\",\n          allowFullScreen: true\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 229,\n          columnNumber: 15\n        }, this) : /*#__PURE__*/_jsxDEV(\"p\", {\n          children: \"Select a video to play\"\n        }, void 0, false, {\n          fileName: _jsxFileName,\n          lineNumber: 238,\n          columnNumber: 15\n        }, this)\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 220,\n        columnNumber: 9\n      }, this)]\n    }, void 0, true, {\n      fileName: _jsxFileName,\n      lineNumber: 72,\n      columnNumber: 7\n    }, this), /*#__PURE__*/_jsxDEV(\"div\", {\n      children: /*#__PURE__*/_jsxDEV(Button, {\n        type: \"link\",\n        style: {\n          margin: '20px 0'\n        },\n        onClick: handleShowCanvas,\n        children: showCanvas ? 'Hide wave and return to tutorial' : 'Click here to try for yourself!'\n      }, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 243,\n        columnNumber: 9\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 242,\n      columnNumber: 7\n    }, this), showCanvas && /*#__PURE__*/_jsxDEV(\"div\", {\n      style: {\n        padding: '10px',\n        marginBottom: '20px',\n        width: '100%'\n      },\n      children: /*#__PURE__*/_jsxDEV(CustomWave, {}, void 0, false, {\n        fileName: _jsxFileName,\n        lineNumber: 260,\n        columnNumber: 11\n      }, this)\n    }, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 253,\n      columnNumber: 9\n    }, this), /*#__PURE__*/_jsxDEV(ResonanceMenu, {}, void 0, false, {\n      fileName: _jsxFileName,\n      lineNumber: 264,\n      columnNumber: 5\n    }, this)]\n  }, void 0, true, {\n    fileName: _jsxFileName,\n    lineNumber: 36,\n    columnNumber: 5\n  }, this);\n};\n_s(Gavt, \"Tenj0bXgOATOaXPA9ksUG/jHe8Q=\");\n_c = Gavt;\nexport default Gavt;\nvar _c;\n$RefreshReg$(_c, \"Gavt\");","map":{"version":3,"names":["useState","Alert","Space","Button","Modal","Table","ResonanceMenu","transcripts","CustomWave","jsxDEV","_jsxDEV","Fragment","_Fragment","Gavt","_s","isTranscriptVisible","setIsTranscriptVisible","transcriptContent","setTranscriptContent","currentVideo","setCurrentVideo","showCanvas","setshowCanvas","showTranscript","part","handleTranscriptCancel","handleVideoSelect","url","handleShowCanvas","style","display","flexDirection","alignItems","children","fileName","_jsxFileName","lineNumber","columnNumber","padding","backgroundColor","borderColor","description","type","width","justifyContent","height","direction","marginRight","flex","bordered","pagination","showHeader","dataSource","key","part1","part2","onClick","columns","dataIndex","render","text","record","index","props","colSpan","title","open","onCancel","footer","dangerouslySetInnerHTML","__html","border","borderRadius","src","allow","allowFullScreen","margin","marginBottom","_c","$RefreshReg$"],"sources":["/var/www/gavt/react-demo/src/Route/Gavt.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { Alert, Space, Button, Modal, Table} from 'antd'\nimport ResonanceMenu from '../gavt/ResonanceMenu';\nimport transcripts from '../gavt/transcripts';\n\nimport '../gavt/ResonanceMenu.css';\nimport '../gavt/Gavt.css'\n\nimport CustomWave from '../gavt/Tutorial/CustomWave';\n\nconst Gavt: React.FC = () => {\n  const [isTranscriptVisible, setIsTranscriptVisible] = useState(false);\n  const [transcriptContent, setTranscriptContent] = useState('');\n  const [currentVideo, setCurrentVideo] = useState<string | null>(null);\n  const [showCanvas, setshowCanvas] = useState(false);\n\n  const showTranscript = (part: keyof typeof transcripts) => {\n    setTranscriptContent(transcripts[part]);\n    setIsTranscriptVisible(true);\n  };\n\n  const handleTranscriptCancel = () => {\n    setIsTranscriptVisible(false);\n  };\n\n  const handleVideoSelect = (url: string) => {\n    setCurrentVideo(url);\n  };\n\n  const handleShowCanvas = () => {\n    setshowCanvas(!showCanvas);\n  }\n\n  return(\n    <div\n      style={{\n        display: 'flex',\n        flexDirection: 'column',\n        alignItems: 'center'\n      }}\n    >\n      <div>\n        <h2>Resonance: Tutorial</h2>\n      </div>\n      <div \n        style={{\n          padding: '20px',\n        }}\n      >\n        <Alert\n          style={{\n            backgroundColor: '#FFEFEF',\n            borderColor: '#FFEFEF'\n          }} \n          description={\n            <>\n              <div>\n                Welcome! Here you can use a real-time display of your speech to work on resonance. NOTE: Please use the Chrome browser to access this module. Other browsers are not supported at this time.\n                <br/>\n                <br/>\n                Resonance can be challenging to understand! We encourage you to watch at least the first three tutorial sections (video clips 1-3 minutes long) before you try out the software. \n                <br/>\n                <br/>\n                Our software works best with an external microphone plugged into your device, even if it's just a set of earbuds with an in-line microphone.\n              </div>\n            </>\n          }\n          type=\"info\"\n        />\n      </div>\n      <div style={{\n        width: '100%',\n        display: 'flex',\n        flexDirection: 'row',\n        justifyContent: 'space-between',\n        padding: '20px',\n        alignItems: 'stretch',\n        height: '100%'\n      }}>          \n          <Space\n            direction=\"vertical\"\n            style={{ \n              marginRight: '20px',\n              flex: 1\n            }}\n          >\n            <Table\n            bordered\n            pagination={false}\n            showHeader={false}\n            dataSource={[\n              { key: '1', part1: 'Tutorial: Getting Started', part2: 'Tutorial: Next Steps' },\n              { key: '2', \n                part1:\n                  <div style={{ display:'inline-flex', alignItems: 'center' }}>\n                    <Button type=\"link\" onClick={() => handleVideoSelect('https://www.youtube.com/embed/WTs2QcTTpHo')}>\n                      Part 1. What is resonance? (1:30)\n                    </Button>\n                    {/* <a href=\"https://youtu.be/WTs2QcTTpHo\" target=\"_blank\" rel=\"noreferrer\">\n                      Part 1. What is resonance? (1:30)\n                    </a> */}\n                    <Button type=\"link\" onClick={() => showTranscript('part1')}>\n                      Transcript\n                    </Button>\n                </div>,\n                part2:\n                  <div style={{ display:'inline-flex', alignItems: 'center' }}>\n                    <Button type=\"link\" onClick={() => handleVideoSelect('https://www.youtube.com/embed/cpn56ZHfRv8')}>\n                      Part 4. Strategies for resonance (2:00)\n                    </Button>\n                    {/* <a href=\"https://youtu.be/cpn56ZHfRv8\" target=\"_blank\" rel=\"noreferrer\">\n                      Part 4. Strategies for resonance (2:00)\n                    </a> */}\n                    <Button type=\"link\" onClick={() => showTranscript('part4')}>\n                    Transcript\n                  </Button>\n                </div>                \n              },\n              { key: '3', \n                part1:\n                  <div style={{ display:'inline-flex', alignItems: 'center' }}> \n                    <Button type=\"link\" onClick={() => handleVideoSelect('https://www.youtube.com/embed/mFJajI69MIU')}>\n                      Part 2. Bright and dark resonance (1:15)\n                    </Button>                  \n                    {/* <a href=\"https://youtu.be/mFJajI69MIU\" target=\"_blank\" rel=\"noreferrer\">\n                      Part 2. Bright and dark resonance (1:15)\n                    </a> */}\n                    <Button type=\"link\" onClick={() => showTranscript('part2')}>\n                      Transcript\n                    </Button>\n                </div>,\n                part2:\n                  <div style={{ display:'inline-flex', alignItems: 'center' }}>\n                    <Button type=\"link\" onClick={() => handleVideoSelect('https://www.youtube.com/embed/O3m2-D61POU')}>\n                      Part 5. Resonance chains (2:00)\n                    </Button>\n                    {/* <a href=\"https://youtu.be/O3m2-D61POU\" target=\"_blank\" rel=\"noreferrer\">\n                      Part 5. Resonance chains (2:00)\n                    </a> */}\n                    <Button type=\"link\" onClick={() => showTranscript('part5')}>\n                      Transcript\n                  </Button>\n                </div>                \n              },\n              { key: '4', \n                part1:\n                  <div style={{ display:'inline-flex', alignItems: 'center' }}>\n                    <Button type=\"link\" onClick={() => handleVideoSelect('https://www.youtube.com/embed/wPpiuMfIb3E')}>\n                      Part 3. Modifying resonance (1:20)\n                    </Button>                    \n                    {/* <a href=\"https://www.youtube.com/watch?v=wPpiuMfIb3E\" target=\"_blank\" rel=\"noreferrer\">\n                      Part 3. Modifying resonance (1:20)\n                    </a> */}\n                    <Button type=\"link\" onClick={() => showTranscript('part3')}>\n                      Transcript\n                    </Button>\n                </div>,\n                part2:\n                  <div style={{ display:'inline-flex', alignItems: 'center' }}>\n                    <Button type=\"link\" onClick={() => handleVideoSelect('https://www.youtube.com/embed/PslG19nE0Yw')}>\n                      Part 6. Pitch versus resonance (2:50)\n                    </Button>                    \n                    {/* <a href=\"https://youtu.be/PslG19nE0Yw\" target=\"_blank\" rel=\"noreferrer\">\n                      Part 6. Pitch versus resonance (2:50)\n                    </a> */}\n                    <Button type=\"link\" onClick={() => showTranscript('part6')}>\n                      Transcript\n                  </Button>\n                </div>                \n              },\n            ]}\n            columns={[\n              {\n                dataIndex: 'part1',\n                key: 'part1',\n                render: (text, record, index) => {\n                  if (index === 0) {\n                    return {\n                      children: text,\n                      props: {\n                        colSpan: 1,\n                      },\n                    };\n                  }\n                  return text;\n                },\n              },\n              {\n                dataIndex: 'part2',\n                key: 'part2',\n                render: (text, record, index) => {\n                  if (index === 0) {\n                    return {\n                      children: text,\n                      props: {\n                        colSpan: 1,\n                      },\n                    };\n                  }\n                  return text;\n                },\n              },\n            ]}\n          />\n\n          <Modal\n            title=\"Transcript\"\n            open={isTranscriptVisible}\n            onCancel={handleTranscriptCancel}\n            footer={[\n              <Button key=\"close\" onClick={handleTranscriptCancel}>\n                Close\n              </Button>,\n            ]}\n          >\n            <div dangerouslySetInnerHTML={{ __html: transcriptContent }} />\n          </Modal>\n        </Space>\n        <div \n          style={{ \n            flex: 1,\n            width: '90%', \n            padding: '5px', \n            border: '1px solid #ddd', \n            borderRadius: '5px',\n          }}>\n            {currentVideo ? (\n              <iframe\n                width=\"100%\"\n                height=\"100%\"\n                src={currentVideo}\n                title=\"YouTube Video Player\"\n                allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n                allowFullScreen\n              ></iframe>\n            ) : (\n              <p>Select a video to play</p>\n            )}\n        </div>\n      </div>\n      <div>\n        <Button\n          type=\"link\"\n          style={{ margin: '20px 0' }}\n          onClick={handleShowCanvas}\n        >\n          {showCanvas? 'Hide wave and return to tutorial' : 'Click here to try for yourself!'}\n        </Button>\n      </div>\n\n      {showCanvas && (\n        <div\n          style={{\n            padding: '10px',\n            marginBottom: '20px',\n            width: '100%'\n          }}\n        >\n          <CustomWave />\n        </div>\n      )}\n\n    <ResonanceMenu />\n  </div>\n\n  )\n}\nexport default Gavt;"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}