70.bebf5f72.chunk.js.map 12.9 KB
Newer Older
wangshuo committed
1
{"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":""}