51.fb82c6ca.chunk.js.map 14.7 KB
Newer Older
xuzhenghua committed
1
{"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":""}