{"version":3,"sources":["components/pythonShare/index.js"],"names":["PythonClass","props","initCommand","setState","command","API","m","getParam","initPageStatus","entryMode","isShare","type","handleFetchInfo","id","http","get","home","params","then","res","data","code","handleToSend","history","state","browser","isWeixin","push","isGuide","wxShare","title","course_name","code_lines","formatTitle","desc","link","encodeURI","window","location","href","imgUrl","course_img","ques_name","video_name","copyToSuccess","info","isCopy","handleToExecute","isExecute","handleToHide","isWechat","this","arrow","PythonContent","labelName","Component","SelfAceEditor","mode","theme","readOnly","showPrintMargin","value","style","width","height","head_img","nickname","result","course_id","className","onClick","backgroundImage","text","onCopy","to"],"mappings":"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","file":"mrstaticjs/70.bebf5f72.chunk.js","sourcesContent":["import React, { Component } from \"react\"\nimport { Link } from \"react-router-dom\"\nimport { CopyToClipboard } from \"react-copy-to-clipboard\"\nimport AceEditor from \"react-ace\"\nimport { Toast } from \"antd-mobile\"\nimport { HeaderBar } from \"src/common\"\nimport { browser, http, getParam, wxShare } from \"src/utils\"\nimport \"./index.scss\"\nimport \"ace-builds/src-noconflict/mode-python\"\nimport \"ace-builds/src-noconflict/theme-dracula\"\n\nclass PythonClass extends Component {\n constructor(props) {\n super(props)\n this.state = {\n isWechat: browser.isWeixin,\n isShare: true,\n type: \"1\", // 1:课后习题,2:课堂习题\n entryMode: 0, // 0:扫码页,1:落地页\n isGuide: false, // 是否展示引导\n isExecute: false,\n isCopy: false,\n command: \"\",\n data: {},\n }\n }\n\n componentDidMount() {\n this.handleFetchInfo()\n this.initPageStatus()\n this.initCommand()\n }\n\n initCommand = () => {\n this.setState({\n command: `${API.m}/pythonShare?id=${getParam(\"id\")}&type=${getParam(\n \"type\"\n )}&ques=${getParam(\"ques\")}&origin=python`,\n })\n }\n\n initPageStatus = () => {\n if (getParam(\"origin\") === \"barcode\") {\n this.setState({\n entryMode: 0,\n })\n }\n if (getParam(\"origin\") === \"python\") {\n this.setState({\n entryMode: 1,\n })\n }\n if (getParam(\"type\") === \"1\") {\n this.setState({\n isShare: true,\n })\n }\n if (getParam(\"type\") === \"2\") {\n this.setState({\n isShare: false,\n })\n }\n this.setState({\n type: getParam(\"ques\") || \"1\",\n })\n }\n\n handleFetchInfo = () => {\n const id = getParam(\"id\") || 10\n // http.get(`${API.home}/web/python/share/help/${id}`).then(res => {\n http\n .get(`${API.home}/m/it/share/show`, {\n params: {\n id,\n },\n })\n .then((res) => {\n const { code, data } = res.data\n if (code === 200) {\n this.setState({\n data,\n })\n }\n })\n }\n\n handleToSend = (params) => {\n const { history } = this.props\n const { isShare } = this.state\n if (browser.isWeixin) {\n history.push(\n `/pythonShare?id=${getParam(\"id\")}&type=${getParam(\n \"type\"\n )}&ques=${getParam(\"ques\")}&origin=python`\n )\n this.setState({\n isGuide: true,\n })\n wxShare({\n title: isShare\n ? `我已在【${params.course_name}】上运行了行代码了${params.code_lines}`\n : `我在${params.course_name}的${this.formatTitle(params)}遇到了困难`,\n desc: this.formatTitle(params),\n link: encodeURI(window.location.href),\n imgUrl: params.course_img,\n })\n }\n }\n\n formatTitle = (params) => {\n const { type } = this.state\n if (type === \"1\") {\n return `练习-${params.ques_name}`\n }\n if (type === \"2\") {\n return `课堂-${params.video_name}`\n }\n }\n\n copyToSuccess = () => {\n Toast.info(\"已复制链接,快去粘贴发给好友吧~\")\n this.setState({\n isCopy: true,\n })\n }\n\n handleToExecute = () => {\n this.setState({\n isExecute: true,\n })\n }\n\n handleToHide = () => {\n this.setState({\n isGuide: false,\n })\n }\n\n render() {\n const {\n isWechat,\n isShare,\n isExecute,\n entryMode,\n command,\n isCopy,\n isGuide,\n data,\n } = this.state\n return (\n <>\n <HeaderBar title=\"Python基础语法\" arrow={true} home={true} />\n <PythonContent\n isWechat={isWechat}\n isShare={isShare}\n isExecute={isExecute}\n entryMode={entryMode}\n isGuide={isGuide}\n isCopy={isCopy}\n command={command}\n data={data}\n labelName={this.formatTitle(data)}\n handleToExecute={this.handleToExecute}\n handleToSend={() => this.handleToSend(data)}\n copyToSuccess={this.copyToSuccess}\n handleToHide={this.handleToHide}\n />\n </>\n )\n }\n}\n\nfunction SelfAceEditor(props) {\n return (\n <AceEditor\n mode=\"python\"\n theme=\"dracula\"\n readOnly={true}\n showPrintMargin={false}\n value={props.code}\n style={{\n width: \"100%\",\n height: \"100%\",\n }}\n />\n )\n}\n\nfunction PythonContent(props) {\n const {\n isWechat,\n isShare,\n isExecute,\n entryMode,\n isCopy,\n command,\n labelName,\n isGuide,\n data: {\n head_img,\n nickname,\n code_lines,\n code,\n result,\n course_name,\n course_id,\n },\n handleToSend,\n copyToSuccess,\n handleToExecute,\n handleToHide,\n } = props\n return (\n <div className=\"python-container\">\n {isGuide && (\n <div className=\"python-popup\" onClick={handleToHide}>\n <div className=\"python-header\">\n <p className=\"python-wechat__title\">请点击右上角分享</p>\n <i className=\"iconfont\"></i>\n </div>\n </div>\n )}\n <div className=\"python-content\">\n <div className=\"python-user\">\n <i\n className=\"python-user__portrait\"\n style={{ backgroundImage: `url(${head_img})` }}\n ></i>\n <h2 className=\"python-user__id\">{nickname}</h2>\n\n {/* 分享 */}\n {entryMode === 0 && isShare && (\n <p className=\"python-user__desc\">\n 完成了\n <span>【{labelName}】</span>\n </p>\n )}\n {entryMode === 1 && isShare && (\n <p className=\"python-user__desc\">\n 在<span>【{course_name}】</span>完成了\n <br />\n {labelName}\n </p>\n )}\n\n {/* 求助 */}\n {entryMode === 0 && !isShare && (\n <p className=\"python-user__desc\">\n 在<span>【{labelName}】</span>\n 遇到了困难\n </p>\n )}\n {entryMode === 1 && !isShare && (\n <p className=\"python-user__desc\">\n 在<span>【{course_name}】</span>的<br />\n <span>{labelName}</span>遇到了困难\n </p>\n )}\n </div>\n <h4 className=\"python-code__title\">\n {entryMode === 1 && isShare\n ? `这是Ta的第${code_lines}行代码`\n : \"运行结果\"}\n </h4>\n <div className=\"python-code__content\">\n <SelfAceEditor code={entryMode === 1 && isShare ? code : result} />\n </div>\n <h4 className=\"python-code__title\">\n {entryMode === 1 && isShare ? \"运行结果\" : \"代码\"}\n </h4>\n <div className=\"python-code__content\">\n {entryMode === 1 && isShare ? (\n <SelfAceEditor code={isExecute ? result : \"\"} />\n ) : (\n <SelfAceEditor code={code} />\n )}\n {entryMode === 1 && isShare && !isExecute && (\n <button\n className=\"python-button python-button__execute\"\n onClick={handleToExecute}\n >\n 运行看看\n </button>\n )}\n </div>\n </div>\n\n {entryMode === 0 && isWechat && (\n <button\n className=\"python-button python-button__study\"\n onClick={handleToSend}\n >\n {isShare ? \"分享给好友\" : \"发给好友求助\"}\n </button>\n )}\n\n {entryMode === 0 && !isWechat && !isCopy && (\n <CopyToClipboard text={command} onCopy={copyToSuccess}>\n <button className=\"python-button python-button__study\">\n {isShare ? \"分享给好友\" : \"发给好友求助\"}\n </button>\n </CopyToClipboard>\n )}\n\n {entryMode === 0 && !isWechat && isCopy && (\n <p className=\"python-button__tip\">已复制链接,快去粘贴发给好友吧~</p>\n )}\n\n {entryMode === 1 && (\n <Link\n className=\"python-button python-button__study\"\n to={`/python?id=${course_id}`}\n >\n 我也要学Python\n </Link>\n )}\n </div>\n )\n}\n\nexport default PythonClass\n"],"sourceRoot":""}