49.46e3ca0f.chunk.js.map 52.7 KB
Newer Older
xuzhenghua committed
1
{"version":3,"sources":["../node_modules/ace-builds/src-noconflict/mode-python.js","../node_modules/ace-builds/src-noconflict/theme-dracula.js","components/pythonShare/index.js","../node_modules/react-copy-to-clipboard/lib/index.js","../node_modules/react-copy-to-clipboard/lib/Component.js","../node_modules/copy-to-clipboard/index.js","../node_modules/toggle-selection/index.js"],"names":["module","ace","define","require","exports","oop","TextHighlightRules","PythonHighlightRules","keywordMapper","this","createKeywordMapper","invalid.deprecated","support.function","variable.language","constant.language","keyword","integer","pointFloat","floatNumber","stringEscape","$rules","start","token","regex","strPre","next","strRawPre","strFormatPre","strRawFormatPre","include","qqstring3","defaultToken","qstring3","qqstring","qstring","rawqqstring3","rawqstring3","rawqqstring","rawqstring","fqqstring3","push","fqstring3","fqqstring","fqstring","rfqqstring3","rfqstring3","rfqqstring","rfqstring","fqstringParRules","constants","normalizeRules","inherits","BaseFoldMode","FoldMode","markers","foldingStartMarker","RegExp","getFoldWidgetRange","session","foldStyle","row","match","getLine","openingBracketBlock","index","indentationBlock","length","call","prototype","TextMode","Mode","PythonFoldMode","Range","HighlightRules","foldingRules","$behaviour","$defaultBehaviour","lineCommentStart","getNextLineIndent","state","line","tab","indent","$getIndent","tokens","getTokenizer","getLineTokens","type","outdents","pass","return","raise","break","continue","checkOutdent","input","trim","last","pop","value","autoOutdent","doc","getTabString","slice","remove","$id","m","isDark","cssClass","cssText","$selectionColorConflict","importCssString","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__","_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__","initCommand","setState","command","concat","API","getParam","initPageStatus","entryMode","isShare","handleFetchInfo","id","http","get","home","params","then","res","_res$data","data","code","handleToSend","history","browser","isWeixin","copyToSuccess","antd_mobile_lib_toast__WEBPACK_IMPORTED_MODULE_1___default","a","info","isCopy","handleToExecute","isExecute","handleToHide","isWechat","_this$state","react__WEBPACK_IMPORTED_MODULE_7___default","createElement","Fragment","_common__WEBPACK_IMPORTED_MODULE_11__","title","arrow","PythonContent","Component","SelfAceEditor","react_ace__WEBPACK_IMPORTED_MODULE_10___default","mode","theme","readOnly","showPrintMargin","style","width","height","_props$data","head_img","nickname","code_lines","result","ques_name","course_name","course_id","video_name","labelName","className","onClick","src","alt","react_copy_to_clipboard__WEBPACK_IMPORTED_MODULE_9__","text","onCopy","react_router_dom__WEBPACK_IMPORTED_MODULE_8__","to","CopyToClipboard","__webpack_require__","defineProperty","undefined","_extends","assign","target","i","arguments","source","key","hasOwnProperty","_createClass","defineProperties","descriptor","enumerable","configurable","writable","Constructor","protoProps","staticProps","_react2","_interopRequireDefault","_copyToClipboard2","obj","__esModule","default","_possibleConstructorReturn","self","ReferenceError","_React$PureComponent","_ref","_temp","instance","TypeError","_classCallCheck","_len","args","Array","_key","__proto__","getPrototypeOf","apply","event","_this$props","children","options","elem","Children","only","subClass","superClass","create","constructor","setPrototypeOf","_inherits","PureComponent","_props","keys","indexOf","_objectWithoutProperties","cloneElement","defaultProps","deselectCurrent","defaultMessage","debug","message","reselectPrevious","range","selection","mark","success","document","createRange","getSelection","textContent","all","position","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","e","stopPropagation","format","preventDefault","clipboardData","clearData","setData","body","appendChild","selectNodeContents","addRange","execCommand","Error","err","console","error","warn","window","copyKey","test","navigator","userAgent","replace","prompt","removeRange","removeAllRanges","removeChild","rangeCount","active","activeElement","ranges","getRangeAt","tagName","toUpperCase","blur","forEach","focus"],"mappings":"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","file":"mrstatic/js/49.46e3ca0f.chunk.js","sourcesContent":["ace.define(\"ace/mode/python_highlight_rules\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text_highlight_rules\"], function (require, exports, module) {\n  \"use strict\";\n\n  var oop = require(\"../lib/oop\");\n\n  var TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\n\n  var PythonHighlightRules = function PythonHighlightRules() {\n    var keywords = \"and|as|assert|break|class|continue|def|del|elif|else|except|exec|\" + \"finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|\" + \"raise|return|try|while|with|yield|async|await|nonlocal\";\n    var builtinConstants = \"True|False|None|NotImplemented|Ellipsis|__debug__\";\n    var builtinFunctions = \"abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|\" + \"eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|\" + \"binfile|bin|iter|property|tuple|bool|filter|len|range|type|bytearray|\" + \"float|list|raw_input|unichr|callable|format|locals|reduce|unicode|\" + \"chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|\" + \"cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|\" + \"__import__|complex|hash|min|apply|delattr|help|next|setattr|set|\" + \"buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern|\" + \"ascii|breakpoint|bytes\";\n    var keywordMapper = this.createKeywordMapper({\n      \"invalid.deprecated\": \"debugger\",\n      \"support.function\": builtinFunctions,\n      \"variable.language\": \"self|cls\",\n      \"constant.language\": builtinConstants,\n      \"keyword\": keywords\n    }, \"identifier\");\n    var strPre = \"[uU]?\";\n    var strRawPre = \"[rR]\";\n    var strFormatPre = \"[fF]\";\n    var strRawFormatPre = \"(?:[rR][fF]|[fF][rR])\";\n    var decimalInteger = \"(?:(?:[1-9]\\\\d*)|(?:0))\";\n    var octInteger = \"(?:0[oO]?[0-7]+)\";\n    var hexInteger = \"(?:0[xX][\\\\dA-Fa-f]+)\";\n    var binInteger = \"(?:0[bB][01]+)\";\n    var integer = \"(?:\" + decimalInteger + \"|\" + octInteger + \"|\" + hexInteger + \"|\" + binInteger + \")\";\n    var exponent = \"(?:[eE][+-]?\\\\d+)\";\n    var fraction = \"(?:\\\\.\\\\d+)\";\n    var intPart = \"(?:\\\\d+)\";\n    var pointFloat = \"(?:(?:\" + intPart + \"?\" + fraction + \")|(?:\" + intPart + \"\\\\.))\";\n    var exponentFloat = \"(?:(?:\" + pointFloat + \"|\" + intPart + \")\" + exponent + \")\";\n    var floatNumber = \"(?:\" + exponentFloat + \"|\" + pointFloat + \")\";\n    var stringEscape = \"\\\\\\\\(x[0-9A-Fa-f]{2}|[0-7]{3}|[\\\\\\\\abfnrtv'\\\"]|U[0-9A-Fa-f]{8}|u[0-9A-Fa-f]{4})\";\n    this.$rules = {\n      \"start\": [{\n        token: \"comment\",\n        regex: \"#.*$\"\n      }, {\n        token: \"string\",\n        // multi line \"\"\" string start\n        regex: strPre + '\"{3}',\n        next: \"qqstring3\"\n      }, {\n        token: \"string\",\n        // \" string\n        regex: strPre + '\"(?=.)',\n        next: \"qqstring\"\n      }, {\n        token: \"string\",\n        // multi line ''' string start\n        regex: strPre + \"'{3}\",\n        next: \"qstring3\"\n      }, {\n        token: \"string\",\n        // ' string\n        regex: strPre + \"'(?=.)\",\n        next: \"qstring\"\n      }, {\n        token: \"string\",\n        regex: strRawPre + '\"{3}',\n        next: \"rawqqstring3\"\n      }, {\n        token: \"string\",\n        regex: strRawPre + '\"(?=.)',\n        next: \"rawqqstring\"\n      }, {\n        token: \"string\",\n        regex: strRawPre + \"'{3}\",\n        next: \"rawqstring3\"\n      }, {\n        token: \"string\",\n        regex: strRawPre + \"'(?=.)\",\n        next: \"rawqstring\"\n      }, {\n        token: \"string\",\n        regex: strFormatPre + '\"{3}',\n        next: \"fqqstring3\"\n      }, {\n        token: \"string\",\n        regex: strFormatPre + '\"(?=.)',\n        next: \"fqqstring\"\n      }, {\n        token: \"string\",\n        regex: strFormatPre + \"'{3}\",\n        next: \"fqstring3\"\n      }, {\n        token: \"string\",\n        regex: strFormatPre + \"'(?=.)\",\n        next: \"fqstring\"\n      }, {\n        token: \"string\",\n        regex: strRawFormatPre + '\"{3}',\n        next: \"rfqqstring3\"\n      }, {\n        token: \"string\",\n        regex: strRawFormatPre + '\"(?=.)',\n        next: \"rfqqstring\"\n      }, {\n        token: \"string\",\n        regex: strRawFormatPre + \"'{3}\",\n        next: \"rfqstring3\"\n      }, {\n        token: \"string\",\n        regex: strRawFormatPre + \"'(?=.)\",\n        next: \"rfqstring\"\n      }, {\n        token: \"keyword.operator\",\n        regex: \"\\\\+|\\\\-|\\\\*|\\\\*\\\\*|\\\\/|\\\\/\\\\/|%|@|<<|>>|&|\\\\||\\\\^|~|<|>|<=|=>|==|!=|<>|=\"\n      }, {\n        token: \"punctuation\",\n        regex: \",|:|;|\\\\->|\\\\+=|\\\\-=|\\\\*=|\\\\/=|\\\\/\\\\/=|%=|@=|&=|\\\\|=|^=|>>=|<<=|\\\\*\\\\*=\"\n      }, {\n        token: \"paren.lparen\",\n        regex: \"[\\\\[\\\\(\\\\{]\"\n      }, {\n        token: \"paren.rparen\",\n        regex: \"[\\\\]\\\\)\\\\}]\"\n      }, {\n        token: \"text\",\n        regex: \"\\\\s+\"\n      }, {\n        include: \"constants\"\n      }],\n      \"qqstring3\": [{\n        token: \"constant.language.escape\",\n        regex: stringEscape\n      }, {\n        token: \"string\",\n        // multi line \"\"\" string end\n        regex: '\"{3}',\n        next: \"start\"\n      }, {\n        defaultToken: \"string\"\n      }],\n      \"qstring3\": [{\n        token: \"constant.language.escape\",\n        regex: stringEscape\n      }, {\n        token: \"string\",\n        // multi line ''' string end\n        regex: \"'{3}\",\n        next: \"start\"\n      }, {\n        defaultToken: \"string\"\n      }],\n      \"qqstring\": [{\n        token: \"constant.language.escape\",\n        regex: stringEscape\n      }, {\n        token: \"string\",\n        regex: \"\\\\\\\\$\",\n        next: \"qqstring\"\n      }, {\n        token: \"string\",\n        regex: '\"|$',\n        next: \"start\"\n      }, {\n        defaultToken: \"string\"\n      }],\n      \"qstring\": [{\n        token: \"constant.language.escape\",\n        regex: stringEscape\n      }, {\n        token: \"string\",\n        regex: \"\\\\\\\\$\",\n        next: \"qstring\"\n      }, {\n        token: \"string\",\n        regex: \"'|$\",\n        next: \"start\"\n      }, {\n        defaultToken: \"string\"\n      }],\n      \"rawqqstring3\": [{\n        token: \"string\",\n        // multi line \"\"\" string end\n        regex: '\"{3}',\n        next: \"start\"\n      }, {\n        defaultToken: \"string\"\n      }],\n      \"rawqstring3\": [{\n        token: \"string\",\n        // multi line ''' string end\n        regex: \"'{3}\",\n        next: \"start\"\n      }, {\n        defaultToken: \"string\"\n      }],\n      \"rawqqstring\": [{\n        token: \"string\",\n        regex: \"\\\\\\\\$\",\n        next: \"rawqqstring\"\n      }, {\n        token: \"string\",\n        regex: '\"|$',\n        next: \"start\"\n      }, {\n        defaultToken: \"string\"\n      }],\n      \"rawqstring\": [{\n        token: \"string\",\n        regex: \"\\\\\\\\$\",\n        next: \"rawqstring\"\n      }, {\n        token: \"string\",\n        regex: \"'|$\",\n        next: \"start\"\n      }, {\n        defaultToken: \"string\"\n      }],\n      \"fqqstring3\": [{\n        token: \"constant.language.escape\",\n        regex: stringEscape\n      }, {\n        token: \"string\",\n        // multi line \"\"\" string end\n        regex: '\"{3}',\n        next: \"start\"\n      }, {\n        token: \"paren.lparen\",\n        regex: \"{\",\n        push: \"fqstringParRules\"\n      }, {\n        defaultToken: \"string\"\n      }],\n      \"fqstring3\": [{\n        token: \"constant.language.escape\",\n        regex: stringEscape\n      }, {\n        token: \"string\",\n        // multi line ''' string end\n        regex: \"'{3}\",\n        next: \"start\"\n      }, {\n        token: \"paren.lparen\",\n        regex: \"{\",\n        push: \"fqstringParRules\"\n      }, {\n        defaultToken: \"string\"\n      }],\n      \"fqqstring\": [{\n        token: \"constant.language.escape\",\n        regex: stringEscape\n      }, {\n        token: \"string\",\n        regex: \"\\\\\\\\$\",\n        next: \"fqqstring\"\n      }, {\n        token: \"string\",\n        regex: '\"|$',\n        next: \"start\"\n      }, {\n        token: \"paren.lparen\",\n        regex: \"{\",\n        push: \"fqstringParRules\"\n      }, {\n        defaultToken: \"string\"\n      }],\n      \"fqstring\": [{\n        token: \"constant.language.escape\",\n        regex: stringEscape\n      }, {\n        token: \"string\",\n        regex: \"'|$\",\n        next: \"start\"\n      }, {\n        token: \"paren.lparen\",\n        regex: \"{\",\n        push: \"fqstringParRules\"\n      }, {\n        defaultToken: \"string\"\n      }],\n      \"rfqqstring3\": [{\n        token: \"string\",\n        // multi line \"\"\" string end\n        regex: '\"{3}',\n        next: \"start\"\n      }, {\n        token: \"paren.lparen\",\n        regex: \"{\",\n        push: \"fqstringParRules\"\n      }, {\n        defaultToken: \"string\"\n      }],\n      \"rfqstring3\": [{\n        token: \"string\",\n        // multi line ''' string end\n        regex: \"'{3}\",\n        next: \"start\"\n      }, {\n        token: \"paren.lparen\",\n        regex: \"{\",\n        push: \"fqstringParRules\"\n      }, {\n        defaultToken: \"string\"\n      }],\n      \"rfqqstring\": [{\n        token: \"string\",\n        regex: \"\\\\\\\\$\",\n        next: \"rfqqstring\"\n      }, {\n        token: \"string\",\n        regex: '\"|$',\n        next: \"start\"\n      }, {\n        token: \"paren.lparen\",\n        regex: \"{\",\n        push: \"fqstringParRules\"\n      }, {\n        defaultToken: \"string\"\n      }],\n      \"rfqstring\": [{\n        token: \"string\",\n        regex: \"'|$\",\n        next: \"start\"\n      }, {\n        token: \"paren.lparen\",\n        regex: \"{\",\n        push: \"fqstringParRules\"\n      }, {\n        defaultToken: \"string\"\n      }],\n      \"fqstringParRules\": [{\n        //TODO: nested {}\n        token: \"paren.lparen\",\n        regex: \"[\\\\[\\\\(]\"\n      }, {\n        token: \"paren.rparen\",\n        regex: \"[\\\\]\\\\)]\"\n      }, {\n        token: \"string\",\n        regex: \"\\\\s+\"\n      }, {\n        token: \"string\",\n        regex: \"'(.)*'\"\n      }, {\n        token: \"string\",\n        regex: '\"(.)*\"'\n      }, {\n        token: \"function.support\",\n        regex: \"(!s|!r|!a)\"\n      }, {\n        include: \"constants\"\n      }, {\n        token: 'paren.rparen',\n        regex: \"}\",\n        next: 'pop'\n      }, {\n        token: 'paren.lparen',\n        regex: \"{\",\n        push: \"fqstringParRules\"\n      }],\n      \"constants\": [{\n        token: \"constant.numeric\",\n        // imaginary\n        regex: \"(?:\" + floatNumber + \"|\\\\d+)[jJ]\\\\b\"\n      }, {\n        token: \"constant.numeric\",\n        // float\n        regex: floatNumber\n      }, {\n        token: \"constant.numeric\",\n        // long integer\n        regex: integer + \"[lL]\\\\b\"\n      }, {\n        token: \"constant.numeric\",\n        // integer\n        regex: integer + \"\\\\b\"\n      }, {\n        token: [\"punctuation\", \"function.support\"],\n        // method\n        regex: \"(\\\\.)([a-zA-Z_]+)\\\\b\"\n      }, {\n        token: keywordMapper,\n        regex: \"[a-zA-Z_$][a-zA-Z0-9_$]*\\\\b\"\n      }]\n    };\n    this.normalizeRules();\n  };\n\n  oop.inherits(PythonHighlightRules, TextHighlightRules);\n  exports.PythonHighlightRules = PythonHighlightRules;\n});\nace.define(\"ace/mode/folding/pythonic\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/folding/fold_mode\"], function (require, exports, module) {\n  \"use strict\";\n\n  var oop = require(\"../../lib/oop\");\n\n  var BaseFoldMode = require(\"./fold_mode\").FoldMode;\n\n  var FoldMode = exports.FoldMode = function (markers) {\n    this.foldingStartMarker = new RegExp(\"([\\\\[{])(?:\\\\s*)$|(\" + markers + \")(?:\\\\s*)(?:#.*)?$\");\n  };\n\n  oop.inherits(FoldMode, BaseFoldMode);\n  (function () {\n    this.getFoldWidgetRange = function (session, foldStyle, row) {\n      var line = session.getLine(row);\n      var match = line.match(this.foldingStartMarker);\n\n      if (match) {\n        if (match[1]) return this.openingBracketBlock(session, match[1], row, match.index);\n        if (match[2]) return this.indentationBlock(session, row, match.index + match[2].length);\n        return this.indentationBlock(session, row);\n      }\n    };\n  }).call(FoldMode.prototype);\n});\nace.define(\"ace/mode/python\", [\"require\", \"exports\", \"module\", \"ace/lib/oop\", \"ace/mode/text\", \"ace/mode/python_highlight_rules\", \"ace/mode/folding/pythonic\", \"ace/range\"], function (require, exports, module) {\n  \"use strict\";\n\n  var oop = require(\"../lib/oop\");\n\n  var TextMode = require(\"./text\").Mode;\n\n  var PythonHighlightRules = require(\"./python_highlight_rules\").PythonHighlightRules;\n\n  var PythonFoldMode = require(\"./folding/pythonic\").FoldMode;\n\n  var Range = require(\"../range\").Range;\n\n  var Mode = function Mode() {\n    this.HighlightRules = PythonHighlightRules;\n    this.foldingRules = new PythonFoldMode(\"\\\\:\");\n    this.$behaviour = this.$defaultBehaviour;\n  };\n\n  oop.inherits(Mode, TextMode);\n  (function () {\n    this.lineCommentStart = \"#\";\n\n    this.getNextLineIndent = function (state, line, tab) {\n      var indent = this.$getIndent(line);\n      var tokenizedLine = this.getTokenizer().getLineTokens(line, state);\n      var tokens = tokenizedLine.tokens;\n\n      if (tokens.length && tokens[tokens.length - 1].type == \"comment\") {\n        return indent;\n      }\n\n      if (state == \"start\") {\n        var match = line.match(/^.*[\\{\\(\\[:]\\s*$/);\n\n        if (match) {\n          indent += tab;\n        }\n      }\n\n      return indent;\n    };\n\n    var outdents = {\n      \"pass\": 1,\n      \"return\": 1,\n      \"raise\": 1,\n      \"break\": 1,\n      \"continue\": 1\n    };\n\n    this.checkOutdent = function (state, line, input) {\n      if (input !== \"\\r\\n\" && input !== \"\\r\" && input !== \"\\n\") return false;\n      var tokens = this.getTokenizer().getLineTokens(line.trim(), state).tokens;\n      if (!tokens) return false;\n\n      do {\n        var last = tokens.pop();\n      } while (last && (last.type == \"comment\" || last.type == \"text\" && last.value.match(/^\\s+$/)));\n\n      if (!last) return false;\n      return last.type == \"keyword\" && outdents[last.value];\n    };\n\n    this.autoOutdent = function (state, doc, row) {\n      row += 1;\n      var indent = this.$getIndent(doc.getLine(row));\n      var tab = doc.getTabString();\n      if (indent.slice(-tab.length) == tab) doc.remove(new Range(row, indent.length - tab.length, row, indent.length));\n    };\n\n    this.$id = \"ace/mode/python\";\n  }).call(Mode.prototype);\n  exports.Mode = Mode;\n});\n\n(function () {\n  ace.require([\"ace/mode/python\"], function (m) {\n    if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n      module.exports = m;\n    }\n  });\n})();","ace.define(\"ace/theme/dracula\", [\"require\", \"exports\", \"module\", \"ace/lib/dom\"], function (require, exports, module) {\n  exports.isDark = true;\n  exports.cssClass = \"ace-dracula\";\n  exports.cssText = \"\\\n.ace-dracula .ace_gutter {\\\nbackground: #282a36;\\\ncolor: rgb(144,145,148)\\\n}\\\n.ace-dracula .ace_print-margin {\\\nwidth: 1px;\\\nbackground: #44475a\\\n}\\\n.ace-dracula {\\\nbackground-color: #282a36;\\\ncolor: #f8f8f2\\\n}\\\n.ace-dracula .ace_cursor {\\\ncolor: #f8f8f0\\\n}\\\n.ace-dracula .ace_marker-layer .ace_selection {\\\nbackground: #44475a\\\n}\\\n.ace-dracula.ace_multiselect .ace_selection.ace_start {\\\nbox-shadow: 0 0 3px 0px #282a36;\\\nborder-radius: 2px\\\n}\\\n.ace-dracula .ace_marker-layer .ace_step {\\\nbackground: rgb(198, 219, 174)\\\n}\\\n.ace-dracula .ace_marker-layer .ace_bracket {\\\nmargin: -1px 0 0 -1px;\\\nborder: 1px solid #a29709\\\n}\\\n.ace-dracula .ace_marker-layer .ace_active-line {\\\nbackground: #44475a\\\n}\\\n.ace-dracula .ace_gutter-active-line {\\\nbackground-color: #44475a\\\n}\\\n.ace-dracula .ace_marker-layer .ace_selected-word {\\\nbox-shadow: 0px 0px 0px 1px #a29709;\\\nborder-radius: 3px;\\\n}\\\n.ace-dracula .ace_fold {\\\nbackground-color: #50fa7b;\\\nborder-color: #f8f8f2\\\n}\\\n.ace-dracula .ace_keyword {\\\ncolor: #ff79c6\\\n}\\\n.ace-dracula .ace_constant.ace_language {\\\ncolor: #bd93f9\\\n}\\\n.ace-dracula .ace_constant.ace_numeric {\\\ncolor: #bd93f9\\\n}\\\n.ace-dracula .ace_constant.ace_character {\\\ncolor: #bd93f9\\\n}\\\n.ace-dracula .ace_constant.ace_character.ace_escape {\\\ncolor: #ff79c6\\\n}\\\n.ace-dracula .ace_constant.ace_other {\\\ncolor: #bd93f9\\\n}\\\n.ace-dracula .ace_support.ace_function {\\\ncolor: #8be9fd\\\n}\\\n.ace-dracula .ace_support.ace_constant {\\\ncolor: #6be5fd\\\n}\\\n.ace-dracula .ace_support.ace_class {\\\nfont-style: italic;\\\ncolor: #66d9ef\\\n}\\\n.ace-dracula .ace_support.ace_type {\\\nfont-style: italic;\\\ncolor: #66d9ef\\\n}\\\n.ace-dracula .ace_storage {\\\ncolor: #ff79c6\\\n}\\\n.ace-dracula .ace_storage.ace_type {\\\nfont-style: italic;\\\ncolor: #8be9fd\\\n}\\\n.ace-dracula .ace_invalid {\\\ncolor: #F8F8F0;\\\nbackground-color: #ff79c6\\\n}\\\n.ace-dracula .ace_invalid.ace_deprecated {\\\ncolor: #F8F8F0;\\\nbackground-color: #bd93f9\\\n}\\\n.ace-dracula .ace_string {\\\ncolor: #f1fa8c\\\n}\\\n.ace-dracula .ace_comment {\\\ncolor: #6272a4\\\n}\\\n.ace-dracula .ace_variable {\\\ncolor: #50fa7b\\\n}\\\n.ace-dracula .ace_variable.ace_parameter {\\\nfont-style: italic;\\\ncolor: #ffb86c\\\n}\\\n.ace-dracula .ace_entity.ace_other.ace_attribute-name {\\\ncolor: #50fa7b\\\n}\\\n.ace-dracula .ace_entity.ace_name.ace_function {\\\ncolor: #50fa7b\\\n}\\\n.ace-dracula .ace_entity.ace_name.ace_tag {\\\ncolor: #ff79c6\\\n}\\\n.ace-dracula .ace_invisible {\\\ncolor: #626680;\\\n}\\\n.ace-dracula .ace_indent-guide {\\\nbackground: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y\\\n}\";\n  exports.$selectionColorConflict = true;\n\n  var dom = require(\"../lib/dom\");\n\n  dom.importCssString(exports.cssText, exports.cssClass);\n});\n\n(function () {\n  ace.require([\"ace/theme/dracula\"], function (m) {\n    if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n      module.exports = m;\n    }\n  });\n})();","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 } 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:落地页,2:直接进入\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')}&from=python`\n    })\n  }\n\n  initPageStatus = () => {\n    if(getParam('from') === 'barcode') {\n      this.setState({\n        entryMode: 0\n      });\n    }\n    if(getParam('from') === 'python') {\n      this.setState({\n        entryMode: 2\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 = () => {\n    const { history } = this.props;\n    if(browser.isWeixin) {\n      this.setState({\n        entryMode: 1\n      });\n      history.push(`/pythonShare?id=${getParam('id')}&type=${getParam('type')}&ques=${getParam('ques')}&from=python`);\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      entryMode: 2\n    });\n  }\n\n  render() {\n    const { isWechat, isShare, isExecute, type, entryMode, command, isCopy, 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          type={type}\n          isExecute={isExecute}\n          entryMode={entryMode}\n          isCopy={isCopy}\n          command={command}\n          data={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    type,\n    entryMode, \n    isCopy, \n    command, \n    data: { head_img, nickname, code_lines, code, result, ques_name, course_name, course_id, video_name },\n    handleToSend, \n    copyToSuccess, \n    handleToExecute,\n    handleToHide\n  } = props;\n  let labelName = '';\n  if(type === '1') {\n    labelName = `练习-${ques_name}`;\n  }\n  if(type === '2') {\n    labelName = `课堂-${video_name}`;\n  }\n\n  return (\n    <div className=\"python-container\">\n\n      {/* 微信 */}\n      {\n        // (entryMode === 0 && isWechat) && \n        // <div className=\"python-header\">\n        //   <p className=\"python-wechat__title\">请点击右上角分享</p>\n        //   <i className=\"iconfont iconyindao\"></i>\n        // </div>\n      }\n\n      {/* 非微信 */}\n      {\n        // (entryMode === 0 && !isWechat) && \n        // <div className=\"python-header\">\n        //   <p className=\"python-wechat__title\">\n        //     {isShare? '快分享给好友吧' : '快发给好友求助吧'}\n        //   </p>\n        // </div>\n      }\n\n      {\n        (entryMode === 1 && isWechat) && \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          <div className=\"python-user__portrait\">\n            <img src={head_img} alt=\"\"/>\n          </div>\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 !== 0 && 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 !== 0 && !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 !== 0 && isShare && !isWechat? `这是Ta的第${code_lines}行代码` : '运行结果'}\n        </h4>\n        <div className=\"python-code__content\">\n          <SelfAceEditor code={entryMode !== 0 && isShare && !isWechat? code : result} />\n        </div>\n        <h4 className=\"python-code__title\">{entryMode !== 0 && isShare && !isWechat? '运行结果' : '代码'}</h4>\n        <div className=\"python-code__content\">\n          {\n            entryMode !== 0 && isShare && !isWechat\n            ? <SelfAceEditor code={isExecute? result : ''} />\n            : <SelfAceEditor code={code} />\n          }\n          {\n            (entryMode !== 0 && isShare && !isWechat && !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 !== 0 &&\n        <Link className=\"python-button python-button__study\" to={`/python?id=${course_id}`}>我也要学Python</Link>\n      }\n    </div>\n  );\n}\n\nexport default PythonClass;","'use strict';\n\nvar _require = require('./Component'),\n    CopyToClipboard = _require.CopyToClipboard;\n\nCopyToClipboard.CopyToClipboard = CopyToClipboard;\nmodule.exports = CopyToClipboard;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.CopyToClipboard = undefined;\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar _createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _copyToClipboard = require('copy-to-clipboard');\n\nvar _copyToClipboard2 = _interopRequireDefault(_copyToClipboard);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _objectWithoutProperties(obj, keys) {\n  var target = {};\n\n  for (var i in obj) {\n    if (keys.indexOf(i) >= 0) continue;\n    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n    target[i] = obj[i];\n  }\n\n  return target;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar CopyToClipboard = exports.CopyToClipboard = function (_React$PureComponent) {\n  _inherits(CopyToClipboard, _React$PureComponent);\n\n  function CopyToClipboard() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, CopyToClipboard);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = CopyToClipboard.__proto__ || Object.getPrototypeOf(CopyToClipboard)).call.apply(_ref, [this].concat(args))), _this), _this.onClick = function (event) {\n      var _this$props = _this.props,\n          text = _this$props.text,\n          onCopy = _this$props.onCopy,\n          children = _this$props.children,\n          options = _this$props.options;\n\n      var elem = _react2.default.Children.only(children);\n\n      var result = (0, _copyToClipboard2.default)(text, options);\n\n      if (onCopy) {\n        onCopy(text, result);\n      } // Bypass onClick if it was present\n\n\n      if (elem && elem.props && typeof elem.props.onClick === 'function') {\n        elem.props.onClick(event);\n      }\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(CopyToClipboard, [{\n    key: 'render',\n    value: function render() {\n      var _props = this.props,\n          _text = _props.text,\n          _onCopy = _props.onCopy,\n          _options = _props.options,\n          children = _props.children,\n          props = _objectWithoutProperties(_props, ['text', 'onCopy', 'options', 'children']);\n\n      var elem = _react2.default.Children.only(children);\n\n      return _react2.default.cloneElement(elem, _extends({}, props, {\n        onClick: this.onClick\n      }));\n    }\n  }]);\n\n  return CopyToClipboard;\n}(_react2.default.PureComponent);\n\nCopyToClipboard.defaultProps = {\n  onCopy: undefined,\n  options: undefined\n};","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n  var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n  return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n  var debug,\n      message,\n      reselectPrevious,\n      range,\n      selection,\n      mark,\n      success = false;\n\n  if (!options) {\n    options = {};\n  }\n\n  debug = options.debug || false;\n\n  try {\n    reselectPrevious = deselectCurrent();\n    range = document.createRange();\n    selection = document.getSelection();\n    mark = document.createElement(\"span\");\n    mark.textContent = text; // reset user styles for span element\n\n    mark.style.all = \"unset\"; // prevents scrolling to the end of the page\n\n    mark.style.position = \"fixed\";\n    mark.style.top = 0;\n    mark.style.clip = \"rect(0, 0, 0, 0)\"; // used to preserve spaces and line breaks\n\n    mark.style.whiteSpace = \"pre\"; // do not inherit user-select (it may be `none`)\n\n    mark.style.webkitUserSelect = \"text\";\n    mark.style.MozUserSelect = \"text\";\n    mark.style.msUserSelect = \"text\";\n    mark.style.userSelect = \"text\";\n    mark.addEventListener(\"copy\", function (e) {\n      e.stopPropagation();\n\n      if (options.format) {\n        e.preventDefault();\n        e.clipboardData.clearData();\n        e.clipboardData.setData(options.format, text);\n      }\n    });\n    document.body.appendChild(mark);\n    range.selectNodeContents(mark);\n    selection.addRange(range);\n    var successful = document.execCommand(\"copy\");\n\n    if (!successful) {\n      throw new Error(\"copy command was unsuccessful\");\n    }\n\n    success = true;\n  } catch (err) {\n    debug && console.error(\"unable to copy using execCommand: \", err);\n    debug && console.warn(\"trying IE specific stuff\");\n\n    try {\n      window.clipboardData.setData(options.format || \"text\", text);\n      success = true;\n    } catch (err) {\n      debug && console.error(\"unable to copy using clipboardData: \", err);\n      debug && console.error(\"falling back to prompt\");\n      message = format(\"message\" in options ? options.message : defaultMessage);\n      window.prompt(message, text);\n    }\n  } finally {\n    if (selection) {\n      if (typeof selection.removeRange == \"function\") {\n        selection.removeRange(range);\n      } else {\n        selection.removeAllRanges();\n      }\n    }\n\n    if (mark) {\n      document.body.removeChild(mark);\n    }\n\n    reselectPrevious();\n  }\n\n  return success;\n}\n\nmodule.exports = copy;","module.exports = function () {\n  var selection = document.getSelection();\n\n  if (!selection.rangeCount) {\n    return function () {};\n  }\n\n  var active = document.activeElement;\n  var ranges = [];\n\n  for (var i = 0; i < selection.rangeCount; i++) {\n    ranges.push(selection.getRangeAt(i));\n  }\n\n  switch (active.tagName.toUpperCase()) {\n    // .toUpperCase handles XHTML\n    case 'INPUT':\n    case 'TEXTAREA':\n      active.blur();\n      break;\n\n    default:\n      active = null;\n      break;\n  }\n\n  selection.removeAllRanges();\n  return function () {\n    selection.type === 'Caret' && selection.removeAllRanges();\n\n    if (!selection.rangeCount) {\n      ranges.forEach(function (range) {\n        selection.addRange(range);\n      });\n    }\n\n    active && active.focus();\n  };\n};"],"sourceRoot":""}