You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 line
84 KiB
1 line
84 KiB
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([[94],{"7ahc":function(module,__webpack_exports__,__webpack_require__){"use strict";eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return MyCodeMirror; });\n/* harmony import */ var _Users_xiejianxiong_xjx_code_zq_ppte5yg23_node_modules_umijs_babel_preset_umi_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"k1fw\");\n/* harmony import */ var _Users_xiejianxiong_xjx_code_zq_ppte5yg23_node_modules_umijs_babel_preset_umi_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"0Owb\");\n/* harmony import */ var antd_es_button_style__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"+L6B\");\n/* harmony import */ var antd_es_button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"2/Rp\");\n/* harmony import */ var antd_es_form_style__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"y8nQ\");\n/* harmony import */ var antd_es_form__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\"Vl3Y\");\n/* harmony import */ var _Users_xiejianxiong_xjx_code_zq_ppte5yg23_node_modules_umijs_babel_preset_umi_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(\"tJVT\");\n/* harmony import */ var antd_es_select_style__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(\"OaEy\");\n/* harmony import */ var antd_es_select__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(\"2fM7\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(\"q1tI\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var codemirror_lib_codemirror_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(\"VrN/\");\n/* harmony import */ var codemirror_lib_codemirror_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(codemirror_lib_codemirror_js__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var codemirror_lib_codemirror_css__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(\"p77/\");\n/* harmony import */ var codemirror_lib_codemirror_css__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(codemirror_lib_codemirror_css__WEBPACK_IMPORTED_MODULE_11__);\n\n\n\n\n\n\n\n\n\n\n\n\nvar Option = antd_es_select__WEBPACK_IMPORTED_MODULE_8__[/* default */ \"a\"].Option; //https://github.com/codemirror/CodeMirror/issues/4838\n\nvar formItemLayout = {\n labelCol: {\n span: 4\n },\n wrapperCol: {\n span: 20\n }\n};\nvar LanguageDesc = {\n asp: ['ASP', 'vbscript'],\n actionscript: ['ActionScript(3.0)/Flash/Flex', 'clike'],\n bash: ['Bash/Bat', 'shell'],\n css: ['CSS', 'css'],\n c: ['C', 'clike'],\n cpp: ['C++', 'clike'],\n csharp: ['C#', 'clike'],\n coffeescript: ['CoffeeScript', 'coffeescript'],\n d: ['D', 'd'],\n dart: ['Dart', 'dart'],\n delphi: ['Delphi/Pascal', 'pascal'],\n erlang: ['Erlang', 'erlang'],\n go: ['Golang', 'go'],\n groovy: ['Groovy', 'groovy'],\n html: ['HTML', 'text/html'],\n java: ['Java', 'clike'],\n json: ['JSON', 'text/json'],\n javascript: ['Javascript', 'javascript'],\n lua: ['Lua', 'lua'],\n less: ['LESS', 'css'],\n markdown: ['Markdown', 'gfm'],\n 'objective-c': ['Objective-C', 'clike'],\n php: ['PHP', 'php'],\n perl: ['Perl', 'perl'],\n python: ['Python', 'python'],\n r: ['R', 'r'],\n rst: ['reStructedText', 'rst'],\n ruby: ['Ruby', 'ruby'],\n sql: ['SQL', 'sql'],\n sass: ['SASS/SCSS', 'sass'],\n shell: ['Shell', 'shell'],\n scala: ['Scala', 'clike'],\n swift: ['Swift', 'clike'],\n vb: ['VB/VBScript', 'vb'],\n xml: ['XML', 'text/xml'],\n yaml: ['YAML', 'yaml']\n};\n/* harmony default export */ __webpack_exports__[\"b\"] = ((_ref) => {\n var callback = _ref.callback,\n onCancel = _ref.onCancel;\n\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_9__[\"useState\"])('python'),\n _useState2 = Object(_Users_xiejianxiong_xjx_code_zq_ppte5yg23_node_modules_umijs_babel_preset_umi_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_6__[/* default */ \"a\"])(_useState, 2),\n mode = _useState2[0],\n setMode = _useState2[1];\n\n function onSetMode(value) {\n setMode(LanguageDesc[value][1]);\n }\n\n function onSubmit(values) {\n callback(values);\n }\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(antd_es_form__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"], Object(_Users_xiejianxiong_xjx_code_zq_ppte5yg23_node_modules_umijs_babel_preset_umi_node_modules_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"])({}, formItemLayout, {\n className: \"code-block-panel\",\n initialValues: {\n language: 'python',\n content: ''\n },\n onFinish: onSubmit\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(antd_es_form__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"].Item, {\n label: \"\\u4EE3\\u7801\\u8BED\\u8A00\",\n name: \"language\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(antd_es_select__WEBPACK_IMPORTED_MODULE_8__[/* default */ \"a\"], {\n onChange: onSetMode\n }, Object.keys(LanguageDesc).map(item => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(Option, {\n key: item,\n value: item\n }, LanguageDesc[item][0])))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(antd_es_form__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"].Item, {\n label: \"\\u4EE3\\u7801\\u5185\\u5BB9\",\n name: \"content\",\n rules: [{\n required: true,\n message: '\u8bf7\u8f93\u5165\u4ee3\u7801\u5185\u5bb9'\n }]\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(MyCodeMirror, {\n mode: mode\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(\"div\", {\n className: \"flex-container flex-end\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(antd_es_button__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"], {\n type: \"primary\",\n htmlType: \"submit\",\n style: {\n marginRight: 10\n }\n }, \"\\u786E\\u5B9A\"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(antd_es_button__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"], {\n type: \"ghost\",\n onClick: onCancel\n }, \"\\u53D6\\u6D88\")));\n});\nfunction MyCodeMirror(_ref2) {\n var value = _ref2.value,\n onChange = _ref2.onChange,\n mode = _ref2.mode,\n _ref2$options = _ref2.options,\n options = _ref2$options === void 0 ? {} : _ref2$options;\n var el = Object(react__WEBPACK_IMPORTED_MODULE_9__[\"useRef\"])();\n\n var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_9__[\"useState\"])(),\n _useState4 = Object(_Users_xiejianxiong_xjx_code_zq_ppte5yg23_node_modules_umijs_babel_preset_umi_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_6__[/* default */ \"a\"])(_useState3, 2),\n cm = _useState4[0],\n setCm = _useState4[1];\n\n Object(react__WEBPACK_IMPORTED_MODULE_9__[\"useEffect\"])(() => {\n if (cm) {\n function onChangeHandler(cm) {\n var content = cm.getValue();\n onChange && onChange(content);\n }\n\n cm.on('change', onChangeHandler);\n return () => {\n cm.off('change', onChangeHandler);\n };\n }\n }, [cm, onChange]);\n Object(react__WEBPACK_IMPORTED_MODULE_9__[\"useEffect\"])(() => {\n if (cm) {\n cm.setOption('mode', mode);\n }\n }, [cm, mode]);\n Object(react__WEBPACK_IMPORTED_MODULE_9__[\"useEffect\"])(() => {\n if (cm) {\n if (value !== cm.getValue()) {\n cm.setValue(value || '');\n }\n }\n }, [cm, value]);\n Object(react__WEBPACK_IMPORTED_MODULE_9__[\"useEffect\"])(() => {\n if (el.current && !cm) {\n var instance = codemirror_lib_codemirror_js__WEBPACK_IMPORTED_MODULE_10___default.a.fromTextArea(el.current, Object(_Users_xiejianxiong_xjx_code_zq_ppte5yg23_node_modules_umijs_babel_preset_umi_node_modules_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"])({\n mode,\n lineNumbers: true,\n lineWrapping: true,\n autoCloseBrackets: true,\n tabSize: 4,\n autofocus: true,\n autoCloseTags: true\n }, options));\n setCm(instance);\n }\n }, [el.current, cm]);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(\"div\", {\n className: \"my-codemirror-container\"\n }, ' ', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_9___default.a.createElement(\"textarea\", {\n ref: el\n }), ' ');\n}\n\n//# sourceURL=webpack:///./src/components/markdown-editor/code-block/index.tsx?")},"9Bee":function(module,__webpack_exports__,__webpack_require__){"use strict";eval('\n// EXTERNAL MODULE: ./node_modules/react/index.js\nvar react = __webpack_require__("q1tI");\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// EXTERNAL MODULE: ./node_modules/katex/dist/katex.min.css\nvar katex_min = __webpack_require__("vg9a");\n\n// EXTERNAL MODULE: ./node_modules/@umijs/babel-preset-umi/node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 3 modules\nvar slicedToArray = __webpack_require__("tJVT");\n\n// EXTERNAL MODULE: ./node_modules/marked/lib/marked.js\nvar marked = __webpack_require__("DlQD");\nvar marked_default = /*#__PURE__*/__webpack_require__.n(marked);\n\n// EXTERNAL MODULE: ./node_modules/marked/src/helpers.js\nvar helpers = __webpack_require__("rUJ1");\n\n// CONCATENATED MODULE: ./src/utils/marked.ts\n\n\n\n\nfunction indentCodeCompensation(raw, text) {\n var matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n\n if (matchIndentToCode === null) {\n return text;\n }\n\n var indentToCode = matchIndentToCode[1];\n return text.split(\'\\n\').map(node => {\n var matchIndentInNode = node.match(/^\\s+/);\n\n if (matchIndentInNode === null) {\n return node;\n }\n\n var _matchIndentInNode = Object(slicedToArray["a" /* default */])(matchIndentInNode, 1),\n indentInNode = _matchIndentInNode[0];\n\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n\n return node;\n }).join(\'\\n\');\n}\n\n//\u517c\u5bb9\u4e4b\u524d\u7684 ##\u6807\u9898\u5f0f\u5199\u6cd5\nvar toc = [];\nvar ctx = ["<ul>"];\nvar renderer = new marked_default.a.Renderer();\nvar headingRegex = /^ *(#{1,6}) *([^\\n]+?) *(?:#+ *)?(?:\\n+|$)/;\nfunction cleanToc() {\n toc.length = 0;\n ctx = ["<ul>"];\n}\n\nfunction buildToc(coll, k, level, ctx) {\n if (k >= coll.length || coll[k].level <= level) {\n return k;\n }\n\n var node = coll[k];\n ctx.push("<li><a href=\'#" + node.anchor + "\'>" + node.text + "</a>");\n k++;\n var childCtx = [];\n k = buildToc(coll, k, node.level, childCtx);\n\n if (childCtx.length > 0) {\n ctx.push("<ul>");\n childCtx.forEach(function (idm) {\n ctx.push(idm);\n });\n ctx.push("</ul>");\n }\n\n ctx.push("</li>");\n k = buildToc(coll, k, level, ctx);\n return k;\n}\n\nfunction getTocContent() {\n buildToc(toc, 0, 0, ctx);\n ctx.push("</ul>");\n return ctx.join("");\n}\nvar tokenizer = {\n heading(src) {\n var cap = headingRegex.exec(src);\n\n if (cap) {\n return {\n type: \'heading\',\n raw: cap[0],\n depth: cap[1].length,\n text: cap[2]\n };\n }\n },\n\n fences(src) {\n var cap = this.rules.block.fences.exec(src);\n\n if (cap) {\n var raw = cap[0];\n var text = indentCodeCompensation(raw, cap[3] || \'\');\n var lang = cap[2] ? cap[2].trim() : cap[2];\n\n if ([\'latex\', \'katex\', \'math\'].indexOf(lang) >= 0) {\n var id = next_id();\n var expression = text;\n text = id;\n marked_math_expressions[id] = {\n type: \'block\',\n expression\n };\n }\n\n return {\n type: \'code\',\n raw,\n lang,\n text\n };\n }\n }\n\n};\nvar latexRegex = /(?:\\${2})([^\\n`]+?)(?:\\${2})/gi;\nvar katex_count = 0;\n\nvar next_id = () => "__special_katext_id_".concat(katex_count++, "__");\n\nvar marked_math_expressions = {};\nfunction getMathExpressions() {\n return marked_math_expressions;\n}\nfunction resetMathExpressions() {\n katex_count = 0;\n marked_math_expressions = {};\n}\n\nfunction replace_math_with_ids(text) {\n text = text.replace(latexRegex, (_match, expression) => {\n var id = next_id();\n marked_math_expressions[id] = {\n type: \'inline\',\n expression\n };\n return id;\n });\n return text;\n}\n\nvar original_listitem = renderer.listitem;\n\nrenderer.listitem = function (text) {\n return original_listitem(replace_math_with_ids(text));\n};\n\nvar original_paragraph = renderer.paragraph;\n\nrenderer.paragraph = function (text) {\n return original_paragraph(replace_math_with_ids(text));\n};\n\nvar original_tablecell = renderer.tablecell;\n\nrenderer.tablecell = function (content, flags) {\n return original_tablecell(replace_math_with_ids(content), flags);\n};\n\nrenderer.code = function (code, infostring, escaped) {\n var lang = (infostring || \'\').match(/\\S*/)[0];\n\n if (!lang) {\n return \'<pre class="prettyprint linenums"><code>\' + (escaped ? code : Object(helpers["escape"])(code, true)) + \'</code></pre>\';\n }\n\n if ([\'latex\', \'katex\', \'math\'].indexOf(lang) >= 0) {\n return "<p class=\'editormd-tex\'>".concat(code, "</p>");\n } else {\n return "<pre class=\\"prettyprint linenums\\"><code class=\\"language-".concat(infostring, "\\">").concat(escaped ? code : Object(helpers["escape"])(code, true), "</code></pre>\\n");\n }\n};\n\nrenderer.heading = function (text, level, raw) {\n var anchor = this.options.headerPrefix + raw.toLowerCase().replace(/[^\\w\\\\u4e00-\\\\u9fa5]]+/g, \'-\');\n toc.push({\n anchor,\n level,\n text\n });\n return \'<h\' + level + \' id="\' + anchor + \'">\' + text + \'</h\' + level + \'>\';\n};\n\nmarked_default.a.setOptions({\n silent: true,\n smartypants: true,\n gfm: true,\n pedantic: false\n});\nmarked_default.a.use({\n tokenizer,\n renderer\n});\n/* harmony default export */ var utils_marked = (marked_default.a);\n// EXTERNAL MODULE: ./node_modules/code-prettify/src/prettify.js\nvar prettify = __webpack_require__("SJMd");\n\n// EXTERNAL MODULE: ./node_modules/katex/dist/katex.js\nvar katex = __webpack_require__("Oy/b");\n\n// CONCATENATED MODULE: ./src/components/RenderHtml/index.tsx\n\n\n\n\n\nvar preRegex = /<pre[^>]*>/g;\n\nfunction _unescape(str) {\n var div = document.createElement(\'div\');\n div.innerHTML = str;\n return div.childNodes.length === 0 ? "" : div.childNodes[0].nodeValue;\n}\n\n/* harmony default export */ var RenderHtml = __webpack_exports__["a"] = ((_ref) => {\n var _ref$value = _ref.value,\n value = _ref$value === void 0 ? \'\' : _ref$value,\n className = _ref.className,\n _ref$style = _ref.style,\n style = _ref$style === void 0 ? {} : _ref$style;\n var str = String(value);\n var html = Object(react["useMemo"])(() => {\n var rs = utils_marked(str);\n var math_expressions = getMathExpressions();\n\n if (str.match(/\\[TOC\\]/)) {\n rs = rs.replace("<p>[TOC]</p>", getTocContent());\n cleanToc();\n }\n\n rs = rs.replace(/(__special_katext_id_\\d+__)/g, (_match, capture) => {\n var _math_expressions$cap = math_expressions[capture],\n type = _math_expressions$cap.type,\n expression = _math_expressions$cap.expression;\n return Object(katex["renderToString"])(_unescape(expression) || \'\', {\n displayMode: type === \'block\',\n throwOnError: false,\n output: \'html\'\n });\n });\n rs = rs.replace(/\u2581/g, "\u2581\u2581\u2581");\n resetMathExpressions();\n return rs;\n }, [str]);\n var el = Object(react["useRef"])();\n\n function onAncherHandler(e) {\n var target = e.target;\n\n if (target.tagName.toUpperCase() === \'A\') {\n var ancher = target.getAttribute(\'href\');\n\n if (ancher.startsWith(\'#\')) {\n e.preventDefault();\n var viewEl = document.getElementById(ancher.replace(\'#\', \'\'));\n\n if (viewEl) {\n viewEl.parentNode.scrollTop = viewEl.offsetTop;\n }\n }\n }\n }\n\n Object(react["useEffect"])(() => {\n if (el.current && html) {\n if (html.match(preRegex)) {\n window.PR.prettyPrint();\n }\n }\n\n if (el.current) {\n el.current.addEventListener(\'click\', onAncherHandler);\n return () => {\n el.current.removeEventListener(\'click\', onAncherHandler);\n resetMathExpressions();\n cleanToc();\n };\n }\n }, [html, el.current, onAncherHandler]);\n return /*#__PURE__*/react_default.a.createElement("div", {\n ref: el,\n style: style,\n className: "".concat(className ? className : \'\', " markdown-body"),\n dangerouslySetInnerHTML: {\n __html: html\n }\n });\n});\n\n//# sourceURL=webpack:///./src/components/RenderHtml/index.tsx_+_1_modules?')},"9VGf":function(module,__webpack_exports__,__webpack_require__){"use strict";eval('/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return useInterval; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("q1tI");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction useInterval(callback, delay) {\n var savedCallback = Object(react__WEBPACK_IMPORTED_MODULE_0__["useRef"])(); // \u4fdd\u5b58\u65b0\u56de\u8c03\n\n Object(react__WEBPACK_IMPORTED_MODULE_0__["useEffect"])(() => {\n savedCallback.current = callback;\n }); // \u5efa\u7acb interval\n\n Object(react__WEBPACK_IMPORTED_MODULE_0__["useEffect"])(() => {\n function tick() {\n savedCallback.current();\n }\n\n if (delay !== null) {\n var id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n}\n\n//# sourceURL=webpack:///./src/components/useInterval.tsx?')},BjJ7:function(module,__webpack_exports__,__webpack_require__){"use strict";eval('/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return isCompileOk; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return getTreeData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return processTreeData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return debounce; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return isProd; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return apiPref; });\nfunction isCompileOk(rs) {\n var flag = true;\n\n if (rs.length > 0) {\n for (var i = 0; i < rs.length; i++) {\n if (rs[i].compile_success == 0 || !rs[i].compile_success) {\n flag = false;\n break;\n }\n }\n } else {\n flag = false;\n }\n\n return flag;\n}\nfunction getTreeData(data) {\n var parentKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \'\';\n var result = [];\n\n for (var i = 0; i < data.length; i++) {\n var item = data[i];\n var key = parentKey ? "".concat(parentKey, "/").concat(item.name) : "".concat(item.name);\n result.push({\n title: item.name,\n isLeaf: item.type === \'tree\' ? false : true,\n key\n });\n }\n\n return result;\n}\nfunction processTreeData(repos, key, newData) {\n for (var i = 0; i < repos.length; i++) {\n var item = repos[i];\n\n if (item.key === key) {\n item.children = newData;\n break;\n }\n\n if (item.children) {\n processTreeData(item.children, key, newData);\n }\n }\n\n return repos;\n}\nfunction debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this,\n args = arguments;\n\n var later = function later() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n}\nvar isProd = window.location.href.indexOf(\'test-\') > 0 || window.location.href.indexOf(\'localhost\') > 0 ? false : true;\nvar apiPref = isProd ? \'https://www.educoder.net\' : \'https://test-newweb.educoder.net\';\n\n//# sourceURL=webpack:///./src/pages/tasks/util.js?')},HmJG:function(module,exports,__webpack_require__){eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./src/components/markdown-editor/upload-image/index.less?")},M8RZ:function(module,__webpack_exports__,__webpack_require__){"use strict";eval('/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("q1tI");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("i8i4");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__);\n\n\nvar modalContainer = document.createElement(\'div\');\n/* harmony default export */ __webpack_exports__["a"] = ((_ref) => {\n var children = _ref.children;\n Object(react__WEBPACK_IMPORTED_MODULE_0__["useEffect"])(() => {\n document.body.append(modalContainer);\n return () => {\n try {\n document.body.removeChild(modalContainer);\n } catch (e) {}\n };\n }, []);\n return Object(react_dom__WEBPACK_IMPORTED_MODULE_1__["createPortal"])(children, modalContainer);\n});\n\n//# sourceURL=webpack:///./src/components/modal.tsx?')},Ot1p:function(module,__webpack_exports__,__webpack_require__){"use strict";eval('\n// EXTERNAL MODULE: ./node_modules/antd/es/modal/style/index.js\nvar modal_style = __webpack_require__("2qtc");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/modal/index.js + 10 modules\nvar modal = __webpack_require__("kLXV");\n\n// EXTERNAL MODULE: ./node_modules/@umijs/babel-preset-umi/node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js\nvar createForOfIteratorHelper = __webpack_require__("rAM+");\n\n// EXTERNAL MODULE: ./node_modules/@umijs/babel-preset-umi/node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 3 modules\nvar slicedToArray = __webpack_require__("tJVT");\n\n// EXTERNAL MODULE: ./node_modules/react/index.js\nvar react = __webpack_require__("q1tI");\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// EXTERNAL MODULE: ./node_modules/codemirror/lib/codemirror.js\nvar codemirror = __webpack_require__("VrN/");\nvar codemirror_default = /*#__PURE__*/__webpack_require__.n(codemirror);\n\n// EXTERNAL MODULE: ./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js\nvar ResizeObserver_es = __webpack_require__("bdgK");\n\n// EXTERNAL MODULE: ./node_modules/codemirror/lib/codemirror.css\nvar lib_codemirror = __webpack_require__("p77/");\n\n// EXTERNAL MODULE: ./node_modules/codemirror/addon/edit/closetag.js\nvar closetag = __webpack_require__("Bd2K");\n\n// EXTERNAL MODULE: ./node_modules/codemirror/addon/edit/closebrackets.js\nvar closebrackets = __webpack_require__("ELLl");\n\n// EXTERNAL MODULE: ./node_modules/codemirror/addon/display/placeholder.js\nvar display_placeholder = __webpack_require__("19Vz");\n\n// EXTERNAL MODULE: ./node_modules/codemirror/mode/markdown/markdown.js\nvar markdown = __webpack_require__("lZu9");\n\n// EXTERNAL MODULE: ./src/components/markdown-editor/index.less\nvar markdown_editor = __webpack_require__("kSUc");\n\n// EXTERNAL MODULE: ./src/components/RenderHtml/index.tsx + 1 modules\nvar RenderHtml = __webpack_require__("9Bee");\n\n// EXTERNAL MODULE: ./node_modules/@umijs/babel-preset-umi/node_modules/@babel/runtime/helpers/esm/extends.js\nvar esm_extends = __webpack_require__("0Owb");\n\n// EXTERNAL MODULE: ./src/components/markdown-editor/toolbar/index.less\nvar toolbar = __webpack_require__("dejd");\n\n// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/components/IconFont.js\nvar IconFont = __webpack_require__("R+Pm");\n\n// CONCATENATED MODULE: ./src/components/markdown-editor/toolbar/index.tsx\n\n\n\n\nvar toolbar_IconFont = Object(IconFont["a" /* default */])({\n scriptUrl: \'//at.alicdn.com/t/font_1941035_wtddfbx3cga.js\'\n});\nvar DEFAULTICONS = [{\n title: \'\u7c97\u4f53\',\n icon: \'icon-bold\',\n actionName: \'bold\'\n}, {\n title: \'\u659c\u4f53\',\n icon: \'icon-italic\',\n actionName: \'italic\'\n}, \'|\', {\n title: \'\u65e0\u5e8f\u5217\u8868\',\n icon: \'icon-unorder-list\',\n actionName: \'list-ul\'\n}, {\n title: \'\u6709\u5e8f\u5217\u8868\',\n icon: \'icon-order-list\',\n actionName: \'list-ol\'\n}, \'|\', {\n title: \'\u884c\u5185\u4ee3\u7801\',\n icon: \'icon-code\',\n actionName: \'code\'\n}, {\n title: \'\u4ee3\u7801\u5757\uff08\u591a\u8bed\u8a00\u98ce\u683c\uff09\',\n icon: \'icon-file-code\',\n actionName: \'code-block\'\n}, {\n title: \'\u94fe\u63a5\',\n icon: \'icon-link\',\n actionName: \'link\'\n}, \'|\', {\n title: \'\u884c\u5185\u516c\u5f0f\',\n icon: \'icon-sum\',\n actionName: \'inline-latex\'\n}, {\n title: \'\u591a\u884c\u516c\u5f0f\',\n icon: \'icon-formula\',\n actionName: \'latex\'\n}, \'|\', {\n title: \'\u6dfb\u52a0\u56fe\u7247\',\n icon: \'icon-picture\',\n actionName: \'upload-image\'\n}, {\n title: \'\u8868\u683c\',\n icon: \'icon-table\',\n actionName: \'add-table\'\n}, \'|\', {\n title: \'\u6362\u884c\',\n icon: \'icon-minus\',\n actionName: \'line-break\'\n}, {\n title: \'\u6e05\u7a7a\',\n icon: \'icon-eraser\',\n actionName: \'eraser\'\n}];\n\nfunction AButton(_ref) {\n var onActionCallback = _ref.onActionCallback,\n title = _ref.title,\n icon = _ref.icon,\n actionName = _ref.actionName,\n _ref$className = _ref.className,\n className = _ref$className === void 0 ? \'\' : _ref$className,\n children = _ref.children;\n\n function onAction() {\n onActionCallback(actionName);\n }\n\n return /*#__PURE__*/react_default.a.createElement("a", {\n title: title,\n className: className,\n onClick: onAction\n }, /*#__PURE__*/react_default.a.createElement(toolbar_IconFont, {\n type: icon\n }), children);\n}\n\n/* harmony default export */ var markdown_editor_toolbar = ((_ref2) => {\n var watch = _ref2.watch,\n showNullButton = _ref2.showNullButton,\n onActionCallback = _ref2.onActionCallback;\n var icons = [...DEFAULTICONS, {\n title: "".concat(watch ? \'\u5173\u95ed\u5b9e\u65f6\u9884\u89c8\' : \'\u5f00\u542f\u5b9e\u65f6\u9884\u89c8\'),\n icon: "".concat(watch ? \'icon-eye-slash\' : \'icon-eye\'),\n actionName: \'trigger-watch\'\n }];\n return /*#__PURE__*/react_default.a.createElement("ul", {\n className: "markdown-toolbar-container"\n }, icons.map((item, index) => /*#__PURE__*/react_default.a.createElement("li", {\n key: index\n }, item.actionName ? /*#__PURE__*/react_default.a.createElement(AButton, Object(esm_extends["a" /* default */])({}, item, {\n onActionCallback: onActionCallback\n })) : /*#__PURE__*/react_default.a.createElement("span", {\n className: "v-line"\n }))), showNullButton ? /*#__PURE__*/react_default.a.createElement("li", null, /*#__PURE__*/react_default.a.createElement(AButton, {\n icon: "icon-edit",\n className: "btn-null",\n title: "\\u589E\\u52A0\\u586B\\u7A7A",\n actionName: "add-null-ch",\n onActionCallback: onActionCallback\n }, /*#__PURE__*/react_default.a.createElement("span", {\n className: "fill-tip"\n }, "\\u70B9\\u51FB\\u63D2\\u5165\\b\\u586B\\u7A7A\\u9879"))) : null);\n});\n// EXTERNAL MODULE: ./src/components/modal.tsx\nvar components_modal = __webpack_require__("M8RZ");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/button/style/index.js\nvar button_style = __webpack_require__("+L6B");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/button/index.js\nvar es_button = __webpack_require__("2/Rp");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/form/style/index.js\nvar form_style = __webpack_require__("y8nQ");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/form/index.js + 9 modules\nvar es_form = __webpack_require__("Vl3Y");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/input/style/index.js\nvar input_style = __webpack_require__("5NDa");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/input/index.js + 8 modules\nvar input = __webpack_require__("5rEg");\n\n// CONCATENATED MODULE: ./src/components/markdown-editor/link/index.tsx\n\n\n\n\n\n\n\n\nvar formItemLayout = {\n labelCol: {\n span: 4\n },\n wrapperCol: {\n span: 20\n }\n};\n/* harmony default export */ var markdown_editor_link = ((_ref) => {\n var callback = _ref.callback,\n onCancel = _ref.onCancel;\n\n function onSubmit(values) {\n callback(values);\n }\n\n return /*#__PURE__*/react_default.a.createElement(es_form["a" /* default */], Object(esm_extends["a" /* default */])({}, formItemLayout, {\n initialValues: {\n link: \'http://\',\n title: \'\'\n },\n className: "link-panel",\n onFinish: onSubmit\n }), /*#__PURE__*/react_default.a.createElement(es_form["a" /* default */].Item, {\n label: "\\u94FE\\u63A5\\u5730\\u5740",\n name: "link",\n rules: [{\n required: true,\n message: \'\u8bf7\u8f93\u5165\u94fe\u63a5\u5730\u5740\'\n }]\n }, /*#__PURE__*/react_default.a.createElement(input["a" /* default */], null)), /*#__PURE__*/react_default.a.createElement(es_form["a" /* default */].Item, {\n label: "\\u94FE\\u63A5\\u6807\\u9898",\n name: "title",\n rules: [{\n required: true,\n message: \'\u8bf7\u8f93\u5165\u94fe\u63a5\u6807\u9898\'\n }]\n }, /*#__PURE__*/react_default.a.createElement(input["a" /* default */], null)), /*#__PURE__*/react_default.a.createElement("div", {\n className: "flex-container flex-end"\n }, /*#__PURE__*/react_default.a.createElement(es_button["a" /* default */], {\n type: "primary",\n htmlType: "submit",\n style: {\n marginRight: 10\n }\n }, "\\u786E\\u5B9A"), /*#__PURE__*/react_default.a.createElement(es_button["a" /* default */], {\n type: "ghost",\n onClick: onCancel\n }, "\\u53D6\\u6D88")));\n});\n// EXTERNAL MODULE: ./src/components/markdown-editor/code-block/index.tsx\nvar code_block = __webpack_require__("7ahc");\n\n// EXTERNAL MODULE: ./src/components/markdown-editor/upload-image/index.less\nvar upload_image = __webpack_require__("HmJG");\n\n// EXTERNAL MODULE: ./src/pages/tasks/util.js\nvar util = __webpack_require__("BjJ7");\n\n// CONCATENATED MODULE: ./src/components/markdown-editor/upload-image/index.tsx\n\n\n\n\n\n\n\n\n\n\n\nvar useForm = es_form["a" /* default */].useForm;\nvar upload_image_style = {\n width: 280,\n marginRight: 10\n};\nvar upload_image_formItemLayout = {\n labelCol: {\n span: 5\n },\n wrapperCol: {\n span: 19\n }\n};\n/* harmony default export */ var markdown_editor_upload_image = ((_ref) => {\n var callback = _ref.callback,\n onCancel = _ref.onCancel;\n\n var _useForm = useForm(),\n _useForm2 = Object(slicedToArray["a" /* default */])(_useForm, 1),\n form = _useForm2[0];\n\n function onSubmit(values) {\n callback(values);\n }\n\n function onAddUrl(data) {\n form.setFieldsValue({\n src: "/api/attachments/".concat(data.id)\n });\n }\n\n function onFileChange(e) {\n var file = e.target.files[0];\n uploadImage(file, onAddUrl);\n }\n\n return /*#__PURE__*/react_default.a.createElement(es_form["a" /* default */], Object(esm_extends["a" /* default */])({\n form: form\n }, upload_image_formItemLayout, {\n className: "upload-image-panel",\n onFinish: onSubmit\n }), /*#__PURE__*/react_default.a.createElement(es_form["a" /* default */].Item, {\n label: "\\u56FE\\u7247\\u5730\\u5740",\n required: true\n }, /*#__PURE__*/react_default.a.createElement("div", {\n className: "flex-container"\n }, /*#__PURE__*/react_default.a.createElement(es_form["a" /* default */].Item, {\n noStyle: true,\n name: "src",\n rules: [{\n required: true,\n message: \'\u8bf7\u8f93\u5165\u56fe\u7247\u5730\u5740\'\n }]\n }, /*#__PURE__*/react_default.a.createElement(input["a" /* default */], {\n style: upload_image_style\n })), /*#__PURE__*/react_default.a.createElement(UploadButton, {\n onFileChange: onFileChange\n }))), /*#__PURE__*/react_default.a.createElement(es_form["a" /* default */].Item, {\n label: "\\u56FE\\u7247\\u63CF\\u8FF0",\n name: "alt",\n rules: [{\n required: true,\n message: \'\u8bf7\u8f93\u5165\u56fe\u7247\u63cf\u8ff0\'\n }]\n }, /*#__PURE__*/react_default.a.createElement(input["a" /* default */], {\n style: {\n width: 264\n }\n })), /*#__PURE__*/react_default.a.createElement(es_form["a" /* default */].Item, {\n style: {\n textAlign: "right"\n }\n }, /*#__PURE__*/react_default.a.createElement(es_button["a" /* default */], {\n type: "primary",\n htmlType: "submit",\n style: {\n marginRight: 10\n }\n }, "\\u786E\\u5B9A"), /*#__PURE__*/react_default.a.createElement(es_button["a" /* default */], {\n type: "ghost",\n onClick: onCancel\n }, "\\u53D6\\u6D88")));\n});\n\nfunction UploadButton(_ref2) {\n var onFileChange = _ref2.onFileChange;\n return /*#__PURE__*/react_default.a.createElement("a", {\n className: "upload-button"\n }, "\\u672C\\u5730\\u4E0A\\u4F20", /*#__PURE__*/react_default.a.createElement("input", {\n type: "file",\n accept: "image/*",\n onChange: onFileChange\n }));\n}\n\nfunction uploadImage(file, callback) {\n var formData = new FormData();\n formData.append(\'editormd-image-file\', file);\n formData.append(\'file_param_name\', \'editormd-image-file\');\n formData.append(\'byxhr\', \'true\');\n var xhr = new window.XMLHttpRequest();\n xhr.withCredentials = true;\n xhr.addEventListener(\'load\', function (response) {\n callback(JSON.parse(response.target.responseText));\n }, false);\n xhr.addEventListener(\'error\', function (error) {\n console.error(error);\n }, false);\n xhr.open(\'POST\', "".concat(util["a" /* apiPref */], "/api/attachments.json"));\n xhr.send(formData);\n}\n// EXTERNAL MODULE: ./node_modules/antd/es/input-number/style/index.js\nvar input_number_style = __webpack_require__("giR+");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/input-number/index.js + 1 modules\nvar input_number = __webpack_require__("fyUT");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/radio/style/index.js\nvar radio_style = __webpack_require__("7Kak");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/radio/index.js\nvar es_radio = __webpack_require__("9yH6");\n\n// CONCATENATED MODULE: ./src/components/markdown-editor/add-table-panel/index.tsx\n\n\n\n\n\n\n\n\n\nvar RadioGroup = es_radio["default"].Group;\nvar add_table_panel_style = {\n margin: \'0 8px\'\n};\n/* harmony default export */ var add_table_panel = ((_ref) => {\n var callback = _ref.callback,\n onCancel = _ref.onCancel;\n\n function onSubmit(values) {\n callback(values);\n }\n\n return /*#__PURE__*/react_default.a.createElement(es_form["a" /* default */], {\n className: "add-table-panel",\n initialValues: {\n row: 3,\n col: 2,\n align: \'default\'\n },\n onFinish: onSubmit\n }, /*#__PURE__*/react_default.a.createElement("div", {\n className: "flex-container"\n }, /*#__PURE__*/react_default.a.createElement("span", {\n style: add_table_panel_style\n }, "\\u5355\\u5143\\u683C\\u6570\\uFF1A"), /*#__PURE__*/react_default.a.createElement("span", {\n style: add_table_panel_style\n }, "\\u884C\\u6570"), /*#__PURE__*/react_default.a.createElement(es_form["a" /* default */].Item, {\n name: "row",\n rules: [{\n required: true,\n message: \'\u8bf7\u8f93\u5165\u884c\u6570\'\n }]\n }, /*#__PURE__*/react_default.a.createElement(input_number["a" /* default */], null)), /*#__PURE__*/react_default.a.createElement("span", {\n style: add_table_panel_style\n }, "\\u5217\\u6570"), /*#__PURE__*/react_default.a.createElement(es_form["a" /* default */].Item, {\n name: "col",\n rules: [{\n required: true,\n message: \'\u8bf7\u8f93\u5165\u5217\u6570\'\n }]\n }, /*#__PURE__*/react_default.a.createElement(input_number["a" /* default */], null))), /*#__PURE__*/react_default.a.createElement("div", {\n className: "flex-container",\n style: {\n marginTop: 12\n }\n }, /*#__PURE__*/react_default.a.createElement("span", {\n style: add_table_panel_style\n }, "\\u5BF9\\u9F50\\u65B9\\u5F0F\\uFF1A"), /*#__PURE__*/react_default.a.createElement(es_form["a" /* default */].Item, {\n name: "align"\n }, /*#__PURE__*/react_default.a.createElement(RadioGroup, null, /*#__PURE__*/react_default.a.createElement(es_radio["default"], {\n value: "default"\n }, /*#__PURE__*/react_default.a.createElement("i", {\n className: "fa fa-align-justify"\n })), /*#__PURE__*/react_default.a.createElement(es_radio["default"], {\n value: "left"\n }, /*#__PURE__*/react_default.a.createElement("i", {\n className: "fa fa-align-left"\n })), /*#__PURE__*/react_default.a.createElement(es_radio["default"], {\n value: "center"\n }, /*#__PURE__*/react_default.a.createElement("i", {\n className: "fa fa-align-center"\n })), /*#__PURE__*/react_default.a.createElement(es_radio["default"], {\n value: "right"\n }, /*#__PURE__*/react_default.a.createElement("i", {\n className: "fa fa-align-right"\n }))))), /*#__PURE__*/react_default.a.createElement("div", {\n className: "flex-container flex-end"\n }, /*#__PURE__*/react_default.a.createElement(es_button["a" /* default */], {\n type: "primary",\n htmlType: "submit",\n style: {\n marginRight: 10\n }\n }, \' \', "\\u786E\\u5B9A", \' \'), /*#__PURE__*/react_default.a.createElement(es_button["a" /* default */], {\n type: "ghost",\n onClick: onCancel\n }, \' \', "\\u53D6\\u6D88", \' \')));\n});\n// EXTERNAL MODULE: ./src/.umi-production/core/umiExports.ts + 17 modules\nvar umiExports = __webpack_require__("9kvl");\n\n// CONCATENATED MODULE: ./src/components/markdown-editor/constant.ts\nvar LINK = \'link\';\nvar UPLOAD_IMAGE = \'upload-image\';\nvar CODE_BLOCK = \'code-block\';\nvar ADD_TABLE = \'add-table\';\nvar HRLINE = \'------------\';\nvar ALIGNSIGN = {\n default: HRLINE,\n left: ":".concat(HRLINE),\n center: ":".concat(HRLINE, ":"),\n right: "".concat(HRLINE, ":")\n};\n// EXTERNAL MODULE: ./src/components/useInterval.tsx\nvar useInterval = __webpack_require__("9VGf");\n\n// CONCATENATED MODULE: ./src/components/markdown-editor/index.tsx\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar pending = 0;\nvar TimeTicket = 10;\nvar StorageTimeTicket = 10000;\nvar NULL_CH = \'\u2581\';\n\nfunction processSize(size) {\n return !/^\\d+$/.test(size) ? size : "".concat(size, "px");\n}\n\nvar isMac = navigator.platform.toUpperCase().indexOf(\'MAC\') >= 0;\nvar key = isMac ? \'Cmd\' : \'Ctrl\';\nvar DEFAULTKEYMAP = {\n [key + \'-B\']: \'bold\',\n [key + \'-I\']: \'italic\'\n};\nvar TitleDesc = {\n [LINK]: \'\u6dfb\u52a0\u94fe\u63a5\',\n [CODE_BLOCK]: \'\u6dfb\u52a0\u4ee3\u7801\u5757\',\n [UPLOAD_IMAGE]: \'\u6dfb\u52a0\u56fe\u7247\',\n [ADD_TABLE]: \'\u6dfb\u52a0\u8868\u683c\'\n}; //https://codemirror.net/demo\n//The height can be set through CSS (by giving the .CodeMirror class a height property), or by calling the cm\'s setSize method.\n\n/* harmony default export */ var components_markdown_editor = __webpack_exports__["a"] = ((_ref) => {\n var _ref$defaultValue = _ref.defaultValue,\n defaultValue = _ref$defaultValue === void 0 ? \'\' : _ref$defaultValue,\n onChange = _ref.onChange,\n _ref$width = _ref.width,\n width = _ref$width === void 0 ? \'100%\' : _ref$width,\n _ref$height = _ref.height,\n height = _ref$height === void 0 ? 400 : _ref$height,\n _ref$miniToolbar = _ref.miniToolbar,\n miniToolbar = _ref$miniToolbar === void 0 ? false : _ref$miniToolbar,\n _ref$isFocus = _ref.isFocus,\n isFocus = _ref$isFocus === void 0 ? false : _ref$isFocus,\n watch = _ref.watch,\n _ref$id = _ref.id,\n id = _ref$id === void 0 ? \'markdown-editor-id\' : _ref$id,\n _ref$showResizeBar = _ref.showResizeBar,\n showResizeBar = _ref$showResizeBar === void 0 ? false : _ref$showResizeBar,\n _ref$noStorage = _ref.noStorage,\n noStorage = _ref$noStorage === void 0 ? false : _ref$noStorage,\n _ref$showNullButton = _ref.showNullButton,\n showNullButton = _ref$showNullButton === void 0 ? false : _ref$showNullButton,\n onBlur = _ref.onBlur,\n onCMBeforeChange = _ref.onCMBeforeChange,\n _ref$className = _ref.className,\n className = _ref$className === void 0 ? \'\' : _ref$className,\n _ref$placeholder = _ref.placeholder,\n placeholder = _ref$placeholder === void 0 ? \'\' : _ref$placeholder;\n\n var _useState = Object(react["useState"])(null),\n _useState2 = Object(slicedToArray["a" /* default */])(_useState, 2),\n cm = _useState2[0],\n setCm = _useState2[1];\n\n var _useState3 = Object(react["useState"])(defaultValue),\n _useState4 = Object(slicedToArray["a" /* default */])(_useState3, 2),\n value = _useState4[0],\n setValue = _useState4[1];\n\n var _useState5 = Object(react["useState"])(watch),\n _useState6 = Object(slicedToArray["a" /* default */])(_useState5, 2),\n preview = _useState6[0],\n setPreview = _useState6[1];\n\n var _useState7 = Object(react["useState"])(\'\'),\n _useState8 = Object(slicedToArray["a" /* default */])(_useState7, 2),\n action = _useState8[0],\n setAction = _useState8[1];\n\n var _useState9 = Object(react["useState"])(0),\n _useState10 = Object(slicedToArray["a" /* default */])(_useState9, 2),\n lastedUpdateTime = _useState10[0],\n setLastedUpdateTime = _useState10[1];\n\n var _useState11 = Object(react["useState"])(height),\n _useState12 = Object(slicedToArray["a" /* default */])(_useState11, 2),\n h = _useState12[0],\n setH = _useState12[1];\n\n var _useState13 = Object(react["useState"])(false),\n _useState14 = Object(slicedToArray["a" /* default */])(_useState13, 2),\n tip = _useState14[0],\n setTip = _useState14[1];\n\n var cmEl = Object(react["useRef"])();\n var resizeBarEl = Object(react["useRef"])();\n var previewEl = Object(react["useRef"])();\n Object(react["useEffect"])(() => {\n if (cmEl.current) {\n var instance = codemirror_default.a.fromTextArea(cmEl.current, {\n mode: \'markdown\',\n lineNumbers: miniToolbar ? false : true,\n lineWrapping: true,\n value: defaultValue,\n autoCloseTags: true,\n autoCloseBrackets: true\n });\n\n function onPaste(_, e) {\n var clipboardData = e.clipboardData;\n\n if (clipboardData) {\n var types = clipboardData.types.toString();\n var items = clipboardData.items;\n\n if (types === \'text/html,Files\' || types === \'Files\') {\n var item = items[1];\n\n if (types === \'Files\') {\n item = items[0];\n }\n\n if (item.kind === \'file\' && item.type.match(/^image\\//i)) {\n uploadImage(item.getAsFile(), data => {\n if (data.id) {\n instance.replaceSelection(""));\n } else {\n umiExports["c" /* history */].replace(\'/user/login\', {\n from: umiExports["c" /* history */].location.pathname\n });\n }\n });\n }\n } else {\n //toMarkdown ?\n // let html = clipboardData.getData(\'text/html\')\n return true;\n }\n }\n\n return true;\n }\n\n instance.on(\'paste\', onPaste);\n\n function onLayout() {\n var ro = new ResizeObserver_es["default"](entries => {\n var _iterator = Object(createForOfIteratorHelper["a" /* default */])(entries),\n _step;\n\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var entry = _step.value;\n\n if (entry.target.offsetHeight > 0 || entry.target.offsetWidth > 0) {\n instance.setSize(\'100%\', \'100%\');\n instance.refresh();\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n });\n ro.observe(cmEl.current.parentElement);\n return ro;\n }\n\n var ro = onLayout();\n setCm(instance);\n return () => {\n ro.unobserve(cmEl.current.parentElement);\n instance.off(\'paste\', onPaste);\n };\n }\n }, []); //keymap\n\n Object(react["useEffect"])(() => {\n if (cm) {\n var keymap = [];\n\n var _loop = function _loop() {\n var _ref2 = _Object$entries[_i];\n _ref3 = Object(slicedToArray["a" /* default */])(_ref2, 2);\n var k = _ref3[0];\n var value = _ref3[1];\n var map = {\n [k]: () => {\n onActionCallback(value);\n }\n };\n keymap.push(map);\n cm.addKeyMap(map);\n };\n\n for (var _i = 0, _Object$entries = Object.entries(DEFAULTKEYMAP); _i < _Object$entries.length; _i++) {\n var _ref3;\n\n _loop();\n }\n\n return () => {\n var _iterator2 = Object(createForOfIteratorHelper["a" /* default */])(keymap),\n _step2;\n\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var m = _step2.value;\n cm.removeKeyMap(m);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n };\n }\n }, [cm]);\n Object(useInterval["a" /* default */])(() => {\n if (!noStorage && lastedUpdateTime > 0) {\n var currentTime = new Date().getTime();\n var lastedValue = window.sessionStorage.getItem(id);\n\n if (currentTime >= lastedUpdateTime + StorageTimeTicket && (!lastedValue || lastedValue !== value)) {\n window.sessionStorage.setItem(id, value);\n setTip(true);\n }\n }\n }, StorageTimeTicket);\n Object(react["useEffect"])(() => {\n setPreview(watch);\n }, [cm, watch]);\n Object(react["useEffect"])(() => {\n if (cm) {\n isFocus && cm.focus();\n }\n }, [cm, isFocus]);\n Object(react["useEffect"])(() => {\n if (preview && cm) {\n var scrollEl = cm.getScrollerElement();\n\n function syncScroll(e) {\n var target = e.target;\n\n if (previewEl.current) {\n previewEl.current.scrollTop = previewEl.current.scrollHeight * target.scrollTop / target.scrollHeight;\n }\n }\n\n scrollEl.addEventListener(\'scroll\', syncScroll);\n return () => {\n scrollEl.removeEventListener(\'scroll\', syncScroll);\n };\n }\n }, [cm, preview]);\n Object(react["useEffect"])(() => {\n if (cm && onCMBeforeChange) {\n function onChangeHandler(cm, change) {\n onCMBeforeChange(cm, change);\n }\n\n cm.on(\'beforeChange\', onChangeHandler);\n return () => {\n cm.off(\'beforeChange\', onChangeHandler);\n };\n }\n }, [cm, onCMBeforeChange]);\n Object(react["useEffect"])(() => {\n if (cm && onBlur) {\n function onBlurHandler() {\n onBlur(cm.getValue());\n }\n\n cm.on(\'blur\', onBlurHandler);\n return () => {\n cm.off(\'blur\', onBlurHandler);\n };\n }\n }, [cm, onBlur]);\n Object(react["useEffect"])(() => {\n if (cm) {\n function onChangeHandler(cm) {\n var content = cm.getValue();\n clearTimeout(pending);\n pending = setTimeout(() => {\n setValue(content);\n setLastedUpdateTime(new Date().getTime());\n cm.getScrollerElement().dispatchEvent(new CustomEvent(\'scroll\'));\n onChange && onChange(content);\n }, TimeTicket);\n }\n\n cm.on(\'change\', onChangeHandler);\n return () => {\n cm.off(\'change\', onChangeHandler);\n };\n }\n }, [cm, onChange]);\n Object(react["useEffect"])(() => {\n if (cm) {\n if (defaultValue === null || defaultValue === undefined) {\n cm.setValue(\'\');\n setValue(\'\');\n } else {\n if (defaultValue !== cm.getValue()) {\n cm.setValue(defaultValue);\n setValue(defaultValue);\n }\n }\n }\n }, [cm, defaultValue]);\n Object(react["useEffect"])(() => {\n if (cm && height) {\n cm.setSize(\'100%\', "calc(".concat(processSize(height), " - ").concat(miniToolbar ? \'28px\' : \'38px\', " )"));\n }\n }, [cm, height]);\n var onActionCallback = Object(react["useCallback"])(actionName => {\n var cursor = cm.getCursor();\n var selection = cm.getSelection();\n var selectionText = selection.split(\'\\n\');\n\n switch (actionName) {\n case \'bold\':\n cm.replaceSelection(\'**\' + selection + \'**\');\n\n if (selection === \'\') {\n cm.setCursor(cursor.line, cursor.ch + 2);\n }\n\n return cm.focus();\n\n case \'italic\':\n cm.replaceSelection(\'*\' + selection + \'*\');\n\n if (selection === \'\') {\n cm.setCursor(cursor.line, cursor.ch + 1);\n }\n\n return cm.focus();\n\n case \'code\':\n cm.replaceSelection(\'`\' + selection + \'`\');\n\n if (selection === \'\') {\n cm.setCursor(cursor.line, cursor.ch + 1);\n }\n\n return cm.focus();\n\n case \'inline-latex\':\n cm.replaceSelection(\'`$$\' + selection + \'$$`\');\n\n if (selection === \'\') {\n cm.setCursor(cursor.line, cursor.ch + 3);\n }\n\n return cm.focus();\n\n case \'latex\':\n cm.replaceSelection("```latex\\n" + selection + "\\n```");\n cm.setCursor(cursor.line + 1, selection.length + 1);\n return cm.focus();\n\n case \'line-break\':\n cm.replaceSelection(\'<br/>\\n\');\n return cm.focus();\n\n case \'list-ul\':\n if (selection === \'\') {\n cm.replaceSelection(\'- \' + selection);\n } else {\n cm.replaceSelection(selectionText.map(item => item === \'\' ? \'\' : "- ".concat(item)).join(\'\\n\'));\n }\n\n return cm.focus();\n\n case \'list-ol\':\n if (selection === \'\') {\n cm.replaceSelection(\'1. \' + selection);\n } else {\n cm.replaceSelection(selectionText.map((item, index) => item === \'\' ? \'\' : "".concat(index + 1, ". ").concat(item)).join(\'\\n\'));\n }\n\n return cm.focus();\n\n case \'add-null-ch\':\n if (selection === \'\') {\n cm.setCursor(cursor.line, cursor.ch + 1);\n }\n\n cm.replaceSelection(NULL_CH);\n return cm.focus();\n\n case \'eraser\':\n cm.setValue(\'\');\n return cm.focus();\n\n case \'trigger-watch\':\n setPreview(!preview);\n return cm.focus();\n\n case LINK:\n setAction(LINK);\n return;\n\n case CODE_BLOCK:\n setAction(CODE_BLOCK);\n return;\n\n case UPLOAD_IMAGE:\n setAction(UPLOAD_IMAGE);\n return;\n\n case ADD_TABLE:\n setAction(ADD_TABLE);\n return;\n\n default:\n throw new Error();\n }\n }, [cm, preview]);\n var ExecutePluginAction = Object(react["useCallback"])(values => {\n setAction(\'\');\n\n switch (action) {\n case LINK:\n var title = values.title,\n link = values.link;\n cm.replaceSelection("[".concat(title, "](").concat(link, ")"));\n return cm.focus();\n\n case CODE_BLOCK:\n var language = values.language,\n content = values.content;\n cm.replaceSelection([\'```\' + language, content, \'```\'].join(\'\\n\'));\n return cm.focus();\n\n case UPLOAD_IMAGE:\n var src = values.src,\n alt = values.alt;\n cm.replaceSelection(".concat(src, " \\"").concat(alt, "\\" )"));\n return cm.focus();\n\n case ADD_TABLE:\n var row = values.row,\n col = values.col,\n align = values.align;\n var table = \'\\n\';\n\n for (var r = 0; r < row; r++) {\n var rows = [];\n var heads = [];\n\n for (var c = 0; c < col; c++) {\n if (r === 1) {\n heads.push(ALIGNSIGN[align]);\n }\n\n rows.push(\' \');\n }\n\n if (r === 1) {\n table += "| ".concat(heads.join(\' | \'), " |\\n");\n }\n\n table += "| ".concat(rows.join(col === 1 ? \'\' : \' | \'), " |\\n");\n }\n\n cm.replaceSelection(table + \'\\n\');\n return cm.focus();\n\n default:\n throw new Error();\n }\n }, [cm, action]);\n var PluginEl = Object(react["useMemo"])(() => {\n switch (action) {\n case LINK:\n return /*#__PURE__*/react_default.a.createElement(markdown_editor_link, {\n callback: ExecutePluginAction,\n onCancel: onCancel\n });\n\n case CODE_BLOCK:\n return /*#__PURE__*/react_default.a.createElement(code_block["b" /* default */], {\n callback: ExecutePluginAction,\n onCancel: onCancel\n });\n\n case UPLOAD_IMAGE:\n return /*#__PURE__*/react_default.a.createElement(markdown_editor_upload_image, {\n callback: ExecutePluginAction,\n onCancel: onCancel\n });\n\n case ADD_TABLE:\n return /*#__PURE__*/react_default.a.createElement(add_table_panel, {\n callback: ExecutePluginAction,\n onCancel: onCancel\n });\n\n default:\n return null;\n }\n }, [action]);\n\n function onCancel() {\n setAction(\'\');\n }\n\n Object(react["useEffect"])(() => {\n if (resizeBarEl.current) {\n var resizeBar = resizeBarEl.current;\n var dragging = false;\n var startY = 0;\n\n function onMouseDown(e) {\n dragging = true;\n startY = e.pageY;\n }\n\n function onMouseUp() {\n dragging = false;\n }\n\n function onMouseMove(e) {\n if (dragging) {\n var delta = e.pageY - startY;\n\n if (delta < 0) {\n delta = 0;\n }\n\n if (delta > 300) {\n delta = 300;\n }\n\n var resizeH = height + delta + \'px\';\n setH(resizeH);\n }\n }\n\n resizeBar.addEventListener(\'mousedown\', onMouseDown);\n document.addEventListener(\'mousemove\', onMouseMove);\n document.addEventListener(\'mouseup\', onMouseUp);\n return () => {\n resizeBar.removeEventListener(\'mousedown\', onMouseDown);\n document.removeEventListener(\'mousemove\', onMouseMove);\n document.removeEventListener(\'mouseup\', onMouseUp);\n };\n }\n }, [cm, resizeBarEl]);\n Object(react["useEffect"])(() => {\n setH(height);\n }, [height]);\n var fixedWidth = processSize(width);\n var fixedHeight = processSize(h);\n var style = {\n width: fixedWidth,\n height: fixedHeight\n };\n var saveTime = Object(react["useMemo"])(() => {\n if (lastedUpdateTime) {\n var d = new Date(lastedUpdateTime);\n\n var _h = d.getHours();\n\n var m = d.getMinutes();\n var s = d.getSeconds();\n _h = _h < 10 ? \'0\' + _h : _h;\n m = m < 10 ? \'0\' + m : m;\n s = s < 10 ? \'0\' + s : s;\n return "".concat(_h, ":").concat(m, ":").concat(s);\n }\n\n return 0;\n }, [lastedUpdateTime]);\n\n function onCancelStorage() {\n window.sessionStorage.removeItem(id);\n setTip(false);\n setLastedUpdateTime(0);\n }\n\n function onReset() {\n setTip(false);\n setLastedUpdateTime(0);\n cm.setValue(window.sessionStorage.getItem(id));\n }\n\n return /*#__PURE__*/react_default.a.createElement(react["Fragment"], null, /*#__PURE__*/react_default.a.createElement("div", {\n className: "markdown-editor-container ".concat(className, " ").concat(preview ? \'on-preview\' : \'\', " ").concat(miniToolbar ? \'mini\' : \'\'),\n style: style\n }, /*#__PURE__*/react_default.a.createElement(markdown_editor_toolbar, {\n watch: preview,\n showNullButton: showNullButton,\n onActionCallback: onActionCallback\n }), /*#__PURE__*/react_default.a.createElement("div", {\n className: "markdown-editor-body"\n }, /*#__PURE__*/react_default.a.createElement("div", {\n className: "codemirror-container"\n }, /*#__PURE__*/react_default.a.createElement("textarea", {\n ref: cmEl,\n placeholder: placeholder\n })), preview ? /*#__PURE__*/react_default.a.createElement("div", {\n ref: previewEl,\n className: "preview-container"\n }, /*#__PURE__*/react_default.a.createElement(RenderHtml["a" /* default */], {\n value: value\n })) : null)), tip ? /*#__PURE__*/react_default.a.createElement("div", {\n className: "markdown-tip"\n }, "\\u60A8\\u4E0A\\u6B21\\u6709\\u5DF2\\u4FDD\\u5B58\\u7684\\u6570\\u5E74\\uFF0C\\u662F\\u5426", /*#__PURE__*/react_default.a.createElement("a", {\n onClick: onReset\n }, "\\u6062\\u590D"), " ? /", \' \', /*#__PURE__*/react_default.a.createElement("a", {\n onClick: onCancelStorage\n }, "\\u4E0D\\u6062\\u590D"), " \\uFF08\\u6570\\u636E\\u5DF2\\u4E8E ", saveTime, " \\u4FDD\\u5B58\\uFF09") : null, showResizeBar ? /*#__PURE__*/react_default.a.createElement("a", {\n ref: resizeBarEl,\n className: "editor-resize"\n }) : null, /*#__PURE__*/react_default.a.createElement(components_modal["a" /* default */], null, TitleDesc[action] ? /*#__PURE__*/react_default.a.createElement(modal["a" /* default */], {\n centered: true,\n title: TitleDesc[action],\n visible: true,\n onCancel: onCancel,\n footer: null\n }, PluginEl) : null));\n});\n\n//# sourceURL=webpack:///./src/components/markdown-editor/index.tsx_+_5_modules?')},X0ci:function(module,exports,__webpack_require__){eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./src/pages/MoopCases/InfoPanel/index.less?")},dejd:function(module,exports,__webpack_require__){eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./src/components/markdown-editor/toolbar/index.less?")},iIVh:function(module,exports,__webpack_require__){eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./src/pages/MoopCases/FormPanel/index.less?")},kSUc:function(module,exports,__webpack_require__){eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./src/components/markdown-editor/index.less?")},nojB:function(module,__webpack_exports__,__webpack_require__){"use strict";eval('// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXTERNAL MODULE: ./node_modules/antd/es/spin/style/index.js\nvar style = __webpack_require__("T2oS");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/spin/index.js\nvar spin = __webpack_require__("W9HT");\n\n// EXTERNAL MODULE: ./node_modules/@umijs/babel-preset-umi/node_modules/@babel/runtime/regenerator/index.js\nvar regenerator = __webpack_require__("WmNS");\nvar regenerator_default = /*#__PURE__*/__webpack_require__.n(regenerator);\n\n// EXTERNAL MODULE: ./node_modules/@umijs/babel-preset-umi/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\nvar asyncToGenerator = __webpack_require__("9og8");\n\n// EXTERNAL MODULE: ./node_modules/@umijs/babel-preset-umi/node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 3 modules\nvar slicedToArray = __webpack_require__("tJVT");\n\n// EXTERNAL MODULE: ./node_modules/@umijs/babel-preset-umi/node_modules/@babel/runtime/helpers/esm/objectSpread2.js + 1 modules\nvar objectSpread2 = __webpack_require__("k1fw");\n\n// EXTERNAL MODULE: ./node_modules/react/index.js\nvar react = __webpack_require__("q1tI");\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// EXTERNAL MODULE: ./src/pages/MoopCases/InfoPanel/index.less\nvar InfoPanel = __webpack_require__("X0ci");\n\n// EXTERNAL MODULE: ./src/pages/MoopCases/FormPanel/index.less\nvar FormPanel = __webpack_require__("iIVh");\n\n// EXTERNAL MODULE: ./node_modules/@umijs/preset-built-in/node_modules/react-router/esm/react-router.js + 1 modules\nvar react_router = __webpack_require__("WHYC");\n\n// EXTERNAL MODULE: ./node_modules/@umijs/preset-built-in/node_modules/react-router-dom/esm/react-router-dom.js\nvar react_router_dom = __webpack_require__("uYtH");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/button/style/index.js\nvar button_style = __webpack_require__("+L6B");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/button/index.js\nvar es_button = __webpack_require__("2/Rp");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/input/style/index.js\nvar input_style = __webpack_require__("5NDa");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/input/index.js + 8 modules\nvar input = __webpack_require__("5rEg");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/modal/style/index.js\nvar modal_style = __webpack_require__("2qtc");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/modal/index.js + 10 modules\nvar modal = __webpack_require__("kLXV");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/message/style/index.js\nvar message_style = __webpack_require__("miYZ");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/message/index.js\nvar message = __webpack_require__("tsqr");\n\n// EXTERNAL MODULE: ./node_modules/@umijs/babel-preset-umi/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js + 1 modules\nvar objectWithoutProperties = __webpack_require__("PpiC");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/form/style/index.js\nvar form_style = __webpack_require__("y8nQ");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/form/index.js + 9 modules\nvar es_form = __webpack_require__("Vl3Y");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/upload/style/index.js\nvar upload_style = __webpack_require__("DZo9");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/upload/index.js + 11 modules\nvar upload = __webpack_require__("8z0m");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/checkbox/style/index.js\nvar checkbox_style = __webpack_require__("sRBo");\n\n// EXTERNAL MODULE: ./node_modules/antd/es/checkbox/index.js + 2 modules\nvar es_checkbox = __webpack_require__("kaz8");\n\n// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/icons/InboxOutlined.js + 1 modules\nvar InboxOutlined = __webpack_require__("LtfV");\n\n// EXTERNAL MODULE: ./src/utils/env.ts\nvar env = __webpack_require__("m3rI");\n\n// EXTERNAL MODULE: ./src/components/markdown-editor/index.tsx + 5 modules\nvar markdown_editor = __webpack_require__("Ot1p");\n\n// CONCATENATED MODULE: ./src/pages/MoopCases/FormPanel/MoopForm.tsx\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar CheckboxGroup = es_checkbox["a" /* default */].Group;\nvar Dragger = upload["a" /* default */].Dragger;\n\nfunction getBase64(img, callback) {\n var reader = new FileReader();\n reader.addEventListener(\'load\', () => callback(reader.result));\n reader.readAsDataURL(img);\n}\n\n/* harmony default export */ var MoopForm = ((_ref) => {\n var callback = _ref.callback,\n _ref$tags = _ref.tags,\n tags = _ref$tags === void 0 ? [] : _ref$tags,\n _ref$initialValues = _ref.initialValues,\n initialValues = _ref$initialValues === void 0 ? {} : _ref$initialValues,\n removeAttachment = _ref.removeAttachment;\n\n var _useState = Object(react["useState"])(\'\'),\n _useState2 = Object(slicedToArray["a" /* default */])(_useState, 2),\n uploadUrl = _useState2[0],\n setUploadUrl = _useState2[1];\n\n var _Form$useForm = es_form["a" /* default */].useForm(),\n _Form$useForm2 = Object(slicedToArray["a" /* default */])(_Form$useForm, 1),\n form = _Form$useForm2[0];\n\n function onSubmit(values) {\n var cover_id = values.cover_id,\n attachment_ids = values.attachment_ids,\n rest = Object(objectWithoutProperties["a" /* default */])(values, ["cover_id", "attachment_ids"]);\n\n callback(Object(objectSpread2["a" /* default */])(Object(objectSpread2["a" /* default */])({}, rest), {}, {\n cover_id: cover_id.map(item => item.response ? item.response.id : item.uid)[0],\n attachment_ids: attachment_ids.map(item => item.response ? item.response.id : item.uid)\n }));\n }\n\n function normFile(e) {\n if (Array.isArray(e)) {\n return e;\n }\n\n return e && e.fileList;\n }\n\n var uploadProps = {\n multiple: true,\n beforeUpload: file => {\n var isLt150M = file.size / 1024 / 1024 < 150;\n\n if (!isLt150M) {\n message["a" /* default */].error(\'\u8be5\u6587\u4ef6\u65e0\u6cd5\u4e0a\u4f20\u3002\u8d85\u8fc7\u6587\u4ef6\u5927\u5c0f\u9650\u5236(150MB),\u5efa\u8bae\u4e0a\u4f20\u5230\u767e\u5ea6\u4e91\u7b49\u5176\u5b83\u5171\u4eab\u5de5\u5177\u91cc\uff0c\u7136\u540e\u518dtxt\u6587\u6863\u91cc\u7ed9\u51fa\u94fe\u63a5\u4ee5\u53ca\u5171\u4eab\u5bc6\u7801\u5e76\u4e0a\u4f20\');\n\n return isLt150M;\n }\n },\n action: "".concat(env["a" /* default */].API_SERVER, "/api/attachments.json"),\n onRemove: file => {\n modal["a" /* default */].confirm({\n centered: true,\n okText: \'\u786e\u5b9a\',\n cancelText: \'\u53d6\u6d88\',\n content: \'\u662f\u5426\u786e\u8ba4\u5220\u9664?\',\n onOk: () => {\n return removeAttachment(file.response ? file.response.id : file.uid);\n },\n onCancel: () => {\n return false;\n }\n });\n }\n };\n\n function onChangeCoverUrl(info) {\n if (info.file.status === \'done\') {\n getBase64(info.file.originFileObj, imageUrl => setUploadUrl(imageUrl));\n }\n }\n\n var uploadCoverProps = {\n showUploadList: false,\n action: "".concat(env["a" /* default */].API_SERVER, "/api/attachments.json"),\n onChange: onChangeCoverUrl\n };\n Object(react["useEffect"])(() => {\n if (initialValues.title) {\n form.setFieldsValue(initialValues);\n setUploadUrl(initialValues.cover_id[0].url);\n }\n }, [initialValues]);\n return /*#__PURE__*/react_default.a.createElement(es_form["a" /* default */], {\n form: form,\n initialValues: initialValues,\n className: "moop-panel",\n onFinish: onSubmit\n }, /*#__PURE__*/react_default.a.createElement(es_form["a" /* default */].Item, {\n label: "\\u6807\\u9898",\n name: "title",\n extra: /*#__PURE__*/react_default.a.createElement("p", {\n className: "tip"\n }, "\\u7B80\\u660E\\u627C\\u8981\\u4ECB\\u7ECD\\u6587\\u6863/\\u89C6\\u9891\\u6240\\u5305\\u542B\\u7684\\u4E3B\\u8981\\u7684\\u5185\\u5BB9"),\n rules: [{\n required: true,\n message: \'\u8bf7\u8f93\u5165\u6807\u9898\'\n }]\n }, /*#__PURE__*/react_default.a.createElement(input["a" /* default */], {\n placeholder: "\\u4F8B\\u5982\\uFF1A\\u8F6F\\u4EF6\\u5DE5\\u7A0B\\u6559\\u5B66\\u6848\\u4F8B"\n })), /*#__PURE__*/react_default.a.createElement("div", {\n className: "flex-container"\n }, /*#__PURE__*/react_default.a.createElement(es_form["a" /* default */].Item, {\n label: "\\u4F5C\\u8005",\n name: "author_name",\n rules: [{\n required: true,\n message: \'\u8bf7\u8f93\u5165\u4f5c\u8005\u540d\u79f0\'\n }]\n }, /*#__PURE__*/react_default.a.createElement(input["a" /* default */], {\n placeholder: "\\u8BF7\\u8F93\\u5165\\u59D3\\u540D",\n style: {\n marginRight: 20,\n width: 200\n }\n })), /*#__PURE__*/react_default.a.createElement(es_form["a" /* default */].Item, {\n name: "author_school_name",\n rules: [{\n required: true,\n message: \'\u8bf7\u8f93\u5165\u4f5c\u8005\u5355\u4f4d\u540d\u79f0\'\n }]\n }, /*#__PURE__*/react_default.a.createElement(input["a" /* default */], {\n placeholder: "\\u8BF7\\u8F93\\u5165\\u4F5C\\u8005\\u5355\\u4F4D\\u540D\\u79F0",\n style: {\n width: 200\n }\n }))), /*#__PURE__*/react_default.a.createElement(es_form["a" /* default */].Item, {\n name: "tag_ids",\n label: "\\u6807\\u7B7E",\n rules: [{\n required: true,\n message: \'\u8bf7\u9009\u62e9\u4e00\u4e2a\u6807\u7b7e\'\n }]\n }, /*#__PURE__*/react_default.a.createElement(CheckboxGroup, null, tags.map(t => /*#__PURE__*/react_default.a.createElement(es_checkbox["a" /* default */], {\n key: t.id,\n value: t.id\n }, " ", t.name, " ")))), /*#__PURE__*/react_default.a.createElement(es_form["a" /* default */].Item, {\n name: "publish",\n valuePropName: "checked"\n }, /*#__PURE__*/react_default.a.createElement(es_checkbox["a" /* default */], null, "\\u662F\\u5426\\u7533\\u8BF7\\u53D1\\u5E03")), /*#__PURE__*/react_default.a.createElement(es_form["a" /* default */].Item, {\n name: "content",\n label: "\\u63CF\\u8FF0",\n valuePropName: "defaultValue",\n rules: [{\n required: true,\n message: \'\u8bf7\u8f93\u5165\u63cf\u8ff0\u5185\u5bb9\'\n }]\n }, /*#__PURE__*/react_default.a.createElement(markdown_editor["a" /* default */], {\n id: "moop_cases_content",\n height: 400\n })), /*#__PURE__*/react_default.a.createElement(es_form["a" /* default */].Item, {\n name: "attachment_ids",\n valuePropName: "fileList",\n getValueFromEvent: normFile\n }, /*#__PURE__*/react_default.a.createElement(Dragger, uploadProps, /*#__PURE__*/react_default.a.createElement("p", {\n className: "c-blue",\n style: {\n marginBottom: 10,\n fontSize: 18\n }\n }, "\\u4E0A\\u4F20\\u9644\\u4EF6"), /*#__PURE__*/react_default.a.createElement("p", {\n className: "c-grey-c"\n }, "\\u4ECE\\u6211\\u7684\\u7535\\u8111\\u9009\\u62E9\\u8981\\u4E0A\\u4F20\\u7684\\u6587\\u6863\\uFF1A\\u6309\\u4F4FCTRL\\u53EF\\u4EE5\\u4E0A\\u4F20\\u591A\\u4EFD\\u6587\\u6863\\u3002\\u5355\\u4E2A\\u6587\\u4EF6\\u6700\\u5927\\u9650\\u5236\\uFF1A150MB"))), /*#__PURE__*/react_default.a.createElement(es_form["a" /* default */].Item, {\n name: "cover_id",\n label: "\\u5C01\\u9762\\u56FE",\n extra: "\\u4E0A\\u4F20\\u5C3A\\u5BF8\\uFF1A120*90 px",\n getValueFromEvent: normFile,\n valuePropName: "fileList",\n rules: [{\n required: true,\n message: \'\u8bf7\u4e0a\u4f20\u5c01\u9762\u56fe\'\n }]\n }, /*#__PURE__*/react_default.a.createElement(upload["a" /* default */], uploadCoverProps, uploadUrl ? /*#__PURE__*/react_default.a.createElement("img", {\n src: uploadUrl,\n width: 120\n }) : /*#__PURE__*/react_default.a.createElement("a", {\n title: "\\u4E0A\\u4F20\\u5C01\\u9762\\u56FE",\n className: "upload-cover"\n }, " ", /*#__PURE__*/react_default.a.createElement(InboxOutlined["a" /* default */], null), " "))), /*#__PURE__*/react_default.a.createElement("div", {\n className: "desc"\n }, /*#__PURE__*/react_default.a.createElement("h3", null, "\\u5BA1\\u6838\\u8BF4\\u660E"), /*#__PURE__*/react_default.a.createElement("p", null, " \\u5E73\\u53F0\\u7BA1\\u7406\\u5458\\u5C06\\u5BF9\\u6BCF\\u5929\\u65B0\\u4E0A\\u4F20\\u7684\\u6587\\u6863\\u8FDB\\u884C\\u5BA1\\u6838\\uFF0C\\u5BA1\\u6838\\u901A\\u8FC7\\u7684\\u6587\\u6863\\u5C06\\u516C\\u5F00\\u663E\\u793A\\uFF0C\\u5426\\u5219\\u5C06\\u79C1\\u6709\\u5316\\u6216\\u79FB\\u9664 ")), /*#__PURE__*/react_default.a.createElement("div", {\n className: "desc"\n }, /*#__PURE__*/react_default.a.createElement("h3", null, "\\u6E29\\u99A8\\u63D0\\u793A"), /*#__PURE__*/react_default.a.createElement("ul", {\n style: {\n padding: 0\n }\n }, /*#__PURE__*/react_default.a.createElement("li", null, "1.\\u8BF7\\u52FF\\u4E0A\\u4F20\\u5DF2\\u8BBE\\u7F6E\\u52A0\\u5BC6\\u53E3\\u4EE4\\u7684\\u6587\\u6863\\u8D44\\u6E90\\uFF1B"), /*#__PURE__*/react_default.a.createElement("li", null, "2.\\u53EF\\u4EE5\\u4E0A\\u4F20\\u7B26\\u5408\\u6559\\u5B66\\u6848\\u4F8B\\u6807\\u51C6\\u7684\\u6587\\u6863\\u8D44\\u6599\\uFF0C\\u5982", /*#__PURE__*/react_default.a.createElement("a", {\n href: "https://www.educoder.net/courses/1309/boards/5909/messages/34799",\n target: "_blank"\n }, " \\u6848\\u4F8B\\u5165\\u5E93\\u6807\\u51C6 "), " \\u3001", /*#__PURE__*/react_default.a.createElement("a", {\n href: "https://www.educoder.net/courses/1309/boards/5909/messages/34798",\n target: "_blank"\n }, "\\u6848\\u4F8B\\u4F7F\\u7528\\u8BF4\\u660E\\u4E66"), "\\u4EE5\\u53CA\\u5176\\u4ED6\\u8D44\\u6599\\u7B49\\uFF0C\\u4E0A\\u4F20\\u652F\\u6301\\u7684\\u6587\\u4EF6\\u6700\\u5927\\u5BB9\\u91CF\\uFF1A100MB\\uFF1B"), /*#__PURE__*/react_default.a.createElement("li", null, "3.\\u8BF7\\u786E\\u4FDD\\u4E0A\\u4F20\\u5185\\u5BB9\\u65E0\\u4FB5\\u6743\\u6216\\u8FDD\\u53CD\\u56FD\\u5BB6\\u5173\\u4E8E\\u4E92\\u8054\\u7F51\\u653F\\u7B56\\u7684\\u4E0D\\u826F\\u884C\\u4E3A\\uFF1B"), /*#__PURE__*/react_default.a.createElement("li", null, "4.\\u8BF7\\u4F7F\\u7528Chrome\\uFF0CFirefox\\uFF0CSafari\\uFF0CIE11\\uFF08\\u53CA\\u4EE5\\u4E0A\\u7248\\u672C\\uFF09\\u6D4F\\u89C8\\u5668\\uFF1B"))), /*#__PURE__*/react_default.a.createElement(es_form["a" /* default */].Item, {\n style: {\n marginTop: 10\n }\n }, /*#__PURE__*/react_default.a.createElement(es_button["a" /* default */], {\n type: "primary",\n htmlType: "submit"\n }, "\\u63D0\\u4EA4")));\n});\n// EXTERNAL MODULE: ./src/pages/MoopCases/FormPanel/service.ts\nvar service = __webpack_require__("wzkS");\n\n// CONCATENATED MODULE: ./src/pages/MoopCases/FormPanel/index.tsx\n\n\n\n\n\n\n\n\n\n\n\n\nvar initialState = {\n loading: false,\n data: {},\n tags: []\n};\nvar Types;\n\n(function (Types) {\n Types[Types["GET_DATA"] = 0] = "GET_DATA";\n Types[Types["SET_LOADING"] = 1] = "SET_LOADING";\n Types[Types["GET_TAGS"] = 2] = "GET_TAGS";\n})(Types || (Types = {}));\n\nfunction reducer(state, action) {\n switch (action.type) {\n case Types.GET_DATA:\n return Object(objectSpread2["a" /* default */])(Object(objectSpread2["a" /* default */])({}, state), action.payload);\n\n case Types.GET_TAGS:\n return Object(objectSpread2["a" /* default */])(Object(objectSpread2["a" /* default */])({}, state), {}, {\n tags: action.payload\n });\n\n case Types.SET_LOADING:\n return Object(objectSpread2["a" /* default */])(Object(objectSpread2["a" /* default */])({}, state), {}, {\n loading: action.payload\n });\n\n default:\n throw new Error();\n }\n}\n\n/* harmony default export */ var MoopCases_FormPanel = __webpack_exports__["default"] = (() => {\n var _useParams = Object(react_router["m" /* useParams */])(),\n caseId = _useParams.caseId;\n\n var history = Object(react_router["k" /* useHistory */])();\n\n var _useReducer = Object(react["useReducer"])(reducer, initialState),\n _useReducer2 = Object(slicedToArray["a" /* default */])(_useReducer, 2),\n state = _useReducer2[0],\n dispatch = _useReducer2[1];\n\n var loading = state.loading,\n tags = state.tags,\n data = state.data;\n Object(react["useEffect"])(() => {\n function init() {\n return _init.apply(this, arguments);\n }\n\n function _init() {\n _init = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee() {\n var response;\n return regenerator_default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return Object(service["b" /* getLibraryTags */])();\n\n case 2:\n response = _context.sent;\n dispatch({\n type: Types.GET_TAGS,\n payload: response.library_tags\n });\n\n case 4:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return _init.apply(this, arguments);\n }\n\n init();\n }, []);\n Object(react["useEffect"])(() => {\n var didCancel = false;\n\n function init() {\n return _init2.apply(this, arguments);\n }\n\n function _init2() {\n _init2 = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee2() {\n var response, author_name, author_school_name, content, cover, attachments, status, title, tags;\n return regenerator_default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n dispatch({\n type: Types.SET_LOADING,\n payload: false\n });\n _context2.next = 3;\n return Object(service["c" /* getMoopCase */])(caseId);\n\n case 3:\n response = _context2.sent;\n author_name = response.author_name, author_school_name = response.author_school_name, content = response.content, cover = response.cover, attachments = response.attachments, status = response.status, title = response.title, tags = response.tags;\n\n if (!didCancel) {\n if (response.status === 404) {\n history.push(\'/moop_cases\');\n } else {\n dispatch({\n type: Types.GET_DATA,\n payload: {\n data: {\n title,\n author_name,\n author_school_name,\n content,\n tag_ids: tags.map(item => item.id),\n publish: status === \'published\',\n attachment_ids: attachments.map(item => {\n return {\n uid: item.id,\n id: item.id,\n name: item.title,\n url: item.url,\n filesize: item.filesize,\n status: \'done\'\n };\n }),\n cover_id: [{\n uid: cover.id,\n id: cover.id,\n name: cover.title,\n url: cover.url,\n filesize: cover.filesize,\n status: \'done\'\n }]\n },\n loading: false\n }\n });\n }\n }\n\n case 6:\n case "end":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n return _init2.apply(this, arguments);\n }\n\n if (!didCancel && caseId) {\n init();\n }\n\n return () => {\n didCancel = true;\n };\n }, [caseId]);\n\n function onUpdateCase(_x) {\n return _onUpdateCase.apply(this, arguments);\n }\n\n function _onUpdateCase() {\n _onUpdateCase = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee3(values) {\n var _yield$addMoopCase, id;\n\n return regenerator_default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!caseId) {\n _context3.next = 6;\n break;\n }\n\n _context3.next = 3;\n return Object(service["e" /* updateMoopCase */])(caseId, values);\n\n case 3:\n history.push("/moop_cases/".concat(caseId, "/publish-success"));\n _context3.next = 11;\n break;\n\n case 6:\n _context3.next = 8;\n return Object(service["a" /* addMoopCase */])(values);\n\n case 8:\n _yield$addMoopCase = _context3.sent;\n id = _yield$addMoopCase.id;\n history.push("/moop_cases/".concat(id, "/publish-success"));\n\n case 11:\n case "end":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n return _onUpdateCase.apply(this, arguments);\n }\n\n var moopFormProps = {\n initialValues: data,\n tags,\n removeAttachment: service["d" /* removeAttachment */],\n callback: onUpdateCase\n };\n return /*#__PURE__*/react_default.a.createElement(spin["a" /* default */], {\n spinning: loading,\n delay: 500\n }, /*#__PURE__*/react_default.a.createElement("div", {\n className: "moop-info"\n }, /*#__PURE__*/react_default.a.createElement("div", {\n className: "crumb"\n }, /*#__PURE__*/react_default.a.createElement(react_router_dom["Link"], {\n to: "/moop_cases"\n }, "\\u6559\\u5B66\\u6848\\u4F8B > "), /*#__PURE__*/react_default.a.createElement("span", null, "\\u65B0\\u5EFA")), /*#__PURE__*/react_default.a.createElement("div", {\n className: "title"\n }, /*#__PURE__*/react_default.a.createElement("h2", null, "\\u4E0A\\u4F20\\u6559\\u5B66\\u6848\\u4F8B"), /*#__PURE__*/react_default.a.createElement(react_router_dom["Link"], {\n to: "/moop_cases"\n }, "\\u8FD4\\u56DE")), /*#__PURE__*/react_default.a.createElement(MoopForm, moopFormProps)));\n});\n\n//# sourceURL=webpack:///./src/pages/MoopCases/FormPanel/index.tsx_+_1_modules?')},wzkS:function(module,__webpack_exports__,__webpack_require__){"use strict";eval('/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return getMoopCase; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getLibraryTags; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return removeAttachment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return addMoopCase; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return updateMoopCase; });\n/* harmony import */ var _Users_xiejianxiong_xjx_code_zq_ppte5yg23_node_modules_umijs_babel_preset_umi_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("WmNS");\n/* harmony import */ var _Users_xiejianxiong_xjx_code_zq_ppte5yg23_node_modules_umijs_babel_preset_umi_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Users_xiejianxiong_xjx_code_zq_ppte5yg23_node_modules_umijs_babel_preset_umi_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Users_xiejianxiong_xjx_code_zq_ppte5yg23_node_modules_umijs_babel_preset_umi_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("9og8");\n/* harmony import */ var _utils_fetch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__("ErOA");\n\n\n\nfunction getMoopCase(id) {\n return Object(_utils_fetch__WEBPACK_IMPORTED_MODULE_2__[/* get */ "c"])("libraries/".concat(id, ".json"));\n}\nfunction getLibraryTags() {\n return Object(_utils_fetch__WEBPACK_IMPORTED_MODULE_2__[/* get */ "c"])(\'library_tags.json\');\n}\nfunction removeAttachment(_x) {\n return _removeAttachment.apply(this, arguments);\n}\n\nfunction _removeAttachment() {\n _removeAttachment = Object(_Users_xiejianxiong_xjx_code_zq_ppte5yg23_node_modules_umijs_babel_preset_umi_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])( /*#__PURE__*/_Users_xiejianxiong_xjx_code_zq_ppte5yg23_node_modules_umijs_babel_preset_umi_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(id) {\n var response;\n return _Users_xiejianxiong_xjx_code_zq_ppte5yg23_node_modules_umijs_babel_preset_umi_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return Object(_utils_fetch__WEBPACK_IMPORTED_MODULE_2__[/* del */ "b"])("attachments/".concat(id, ".json"));\n\n case 2:\n response = _context.sent;\n return _context.abrupt("return", response.status === 0);\n\n case 4:\n case "end":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return _removeAttachment.apply(this, arguments);\n}\n\nfunction addMoopCase(params) {\n return Object(_utils_fetch__WEBPACK_IMPORTED_MODULE_2__[/* post */ "d"])("libraries.json", params);\n}\nfunction updateMoopCase(id, params) {\n return Object(_utils_fetch__WEBPACK_IMPORTED_MODULE_2__[/* put */ "e"])("libraries/".concat(id, ".json"), params);\n}\n\n//# sourceURL=webpack:///./src/pages/MoopCases/FormPanel/service.ts?')}}]); |