{"version":3,"sources":["components/pythonShare/index.js"],"names":["PythonClass","props","_this","Object","_Users_xzh_dnmp_www_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_2__","this","_Users_xzh_dnmp_www_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_4__","_Users_xzh_dnmp_www_mr_julyedu_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_5__","call","initCommand","setState","command","concat","API","m","getParam","initPageStatus","entryMode","isShare","type","handleFetchInfo","id","http","get","home","params","then","res","_res$data","data","code","handleToSend","history","_this$state","state","browser","isWeixin","push","isGuide","title","labelName","formatTitle","course_name","code_lines","wxShare","desc","link","encodeURI","location","href","imgUrl","course_img","ques_name","video_name","copyToSuccess","antd_mobile_lib_toast__WEBPACK_IMPORTED_MODULE_1___default","a","info","isCopy","handleToExecute","isExecute","handleToHide","isWechat","_this$state2","react__WEBPACK_IMPORTED_MODULE_7___default","createElement","Fragment","_common__WEBPACK_IMPORTED_MODULE_11__","arrow","PythonContent","Component","SelfAceEditor","react_ace__WEBPACK_IMPORTED_MODULE_10___default","mode","theme","readOnly","showPrintMargin","value","style","width","height","_props$data","head_img","nickname","result","course_id","className","onClick","backgroundImage","react_copy_to_clipboard__WEBPACK_IMPORTED_MODULE_9__","text","onCopy","react_router_dom__WEBPACK_IMPORTED_MODULE_8__","to"],"mappings":"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","file":"mrstatic/js/51.fb82c6ca.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 '@/common';\nimport { browser, http, getParam, wxShare } from '@/utils';\nimport './index.scss';\nimport 'ace-builds/src-noconflict/mode-python';\nimport 'ace-builds/src-noconflict/theme-dracula';\n\nclass PythonClass extends Component {\n\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('type')}&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.get(`${API.home}/m/it/share/show`, {\n params: {\n id\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, entryMode } = this.state;\n if(browser.isWeixin) {\n history.push(`/pythonShare?id=${getParam('id')}&type=${getParam('type')}&ques=${getParam('ques')}&origin=python`);\n this.setState({\n isGuide: true\n });\n let title = '';\n let labelName = this.formatTitle(params);\n if(entryMode !== 0 && !isShare) {\n title = `我在${params.course_name}的${labelName}遇到了困难`;\n }\n if(entryMode !== 0 && isShare) {\n title = `我已在【${params.course_name}】上运行了行代码了${params.code_lines}`\n }\n wxShare({\n title,\n desc: labelName,\n link: encodeURI(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 { isWechat, isShare, isExecute, entryMode, command, isCopy, isGuide, data } = this.state;\n return (\n <>\n <HeaderBar\n title='Python基础语法'\n arrow={true}\n home={true}\n />\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}\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: { head_img, nickname, code_lines, code, result, course_name, course_id },\n handleToSend, \n copyToSuccess, \n handleToExecute,\n handleToHide\n } = props;\n return (\n <div className=\"python-container\">\n {\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 iconyindao\"></i>\n </div>\n </div>\n }\n <div className=\"python-content\">\n <div className=\"python-user\">\n <i className=\"python-user__portrait\" style={{backgroundImage: `url(${head_img})`}}></i>\n <h2 className=\"python-user__id\">{nickname}</h2>\n\n {/* 分享 */}\n {\n (entryMode === 0 && isShare) &&\n <p className=\"python-user__desc\">\n 完成了\n <span>【{labelName}】</span>\n </p>\n }\n {\n (entryMode === 1 && isShare) &&\n <p className=\"python-user__desc\">\n 在\n <span>【{course_name}】</span>完成了<br />\n {labelName}\n </p>\n }\n\n {/* 求助 */}\n {\n (entryMode === 0 && !isShare) &&\n <p className=\"python-user__desc\">\n 在\n <span>【{labelName}】</span>\n 遇到了困难\n </p>\n }\n {\n (entryMode === 1 && !isShare) &&\n <p className=\"python-user__desc\">\n 在\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? `这是Ta的第${code_lines}行代码` : '运行结果'}\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 {\n entryMode === 1 && isShare\n ? <SelfAceEditor code={isExecute? result : ''} />\n : <SelfAceEditor code={code} />\n }\n {\n (entryMode === 1 && isShare && !isExecute) &&\n <button className=\"python-button python-button__execute\" onClick={handleToExecute}>运行看看</button>\n }\n </div>\n </div>\n\n {\n (entryMode === 0 && isWechat) &&\n <button className=\"python-button python-button__study\" onClick={handleToSend}>\n {isShare? '分享给好友' : '发给好友求助'}\n </button>\n }\n\n {\n (entryMode === 0 && !isWechat && !isCopy) &&\n <CopyToClipboard\n text={command}\n onCopy={copyToSuccess}\n >\n <button className=\"python-button python-button__study\">\n {isShare? '分享给好友' : '发给好友求助'}\n </button>\n </CopyToClipboard>\n }\n\n {\n (entryMode === 0 && !isWechat && isCopy) &&\n <p className=\"python-button__tip\">已复制链接,快去粘贴发给好友吧~</p>\n }\n\n {\n entryMode === 1 &&\n <Link className=\"python-button python-button__study\" to={`/python?id=${course_id}`}>我也要学Python</Link>\n }\n </div>\n );\n}\n\nexport default PythonClass;"],"sourceRoot":""}