|
|
"use strict";
|
|
|
(self["webpackChunk"] = self["webpackChunk"] || []).push([[63157,66390],{
|
|
|
|
|
|
/***/ 96403:
|
|
|
/*!*********************************!*\
|
|
|
!*** ./src/pages/tasks/util.js ***!
|
|
|
\*********************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ "Ax": function() { return /* binding */ processTreeData; },
|
|
|
/* harmony export */ "Ds": function() { return /* binding */ debounce; },
|
|
|
/* harmony export */ "KI": function() { return /* binding */ apiPref; },
|
|
|
/* harmony export */ "SI": function() { return /* binding */ getTreeData; },
|
|
|
/* harmony export */ "f1": function() { return /* binding */ isCompileOk; }
|
|
|
/* harmony export */ });
|
|
|
/* unused harmony export isProd */
|
|
|
/* harmony import */ var _utils_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/utils/env */ 59758);
|
|
|
|
|
|
function isCompileOk(rs) {
|
|
|
var flag = true;
|
|
|
if (rs.length > 0) {
|
|
|
for (var i = 0; i < rs.length; i++) {
|
|
|
if (rs[i].compile_success == 0 || !rs[i].compile_success) {
|
|
|
flag = false;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
flag = false;
|
|
|
}
|
|
|
return flag;
|
|
|
}
|
|
|
function getTreeData(data) {
|
|
|
var parentKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
|
var result = [];
|
|
|
for (var i = 0; i < data.length; i++) {
|
|
|
var item = data[i];
|
|
|
var key = parentKey ? "".concat(parentKey, "/").concat(item.name) : "".concat(item.name);
|
|
|
result.push({
|
|
|
title: item.name,
|
|
|
isLeaf: item.type === 'tree' ? false : true,
|
|
|
key: key
|
|
|
});
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
function processTreeData(repos, key, newData) {
|
|
|
for (var i = 0; i < repos.length; i++) {
|
|
|
var item = repos[i];
|
|
|
if (item.key === key) {
|
|
|
item.children = newData;
|
|
|
break;
|
|
|
}
|
|
|
if (item.children) {
|
|
|
processTreeData(item.children, key, newData);
|
|
|
}
|
|
|
}
|
|
|
return repos;
|
|
|
}
|
|
|
function debounce(func, wait, immediate) {
|
|
|
var timeout;
|
|
|
return function () {
|
|
|
var context = this,
|
|
|
args = arguments;
|
|
|
var later = function later() {
|
|
|
timeout = null;
|
|
|
if (!immediate) func.apply(context, args);
|
|
|
};
|
|
|
var callNow = immediate && !timeout;
|
|
|
clearTimeout(timeout);
|
|
|
timeout = setTimeout(later, wait);
|
|
|
if (callNow) func.apply(context, args);
|
|
|
};
|
|
|
}
|
|
|
var isProd = true;
|
|
|
var apiPref = _utils_env__WEBPACK_IMPORTED_MODULE_0__/* ["default"].API_SERVER */ .Z.API_SERVER;
|
|
|
// export const isProd =
|
|
|
// window.location.href.indexOf('test-') > 0 ||
|
|
|
// window.location.href.indexOf('localhost') > 0
|
|
|
// ? false
|
|
|
// : true;
|
|
|
|
|
|
// export const apiPref = isProd
|
|
|
// ? 'https://www.educoder.net'
|
|
|
// : 'https://test-newweb.educoder.net';
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 55335:
|
|
|
/*!****************************************************************!*\
|
|
|
!*** ./src/components/SelectEnvironment/index.tsx + 1 modules ***!
|
|
|
\****************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ components_SelectEnvironment; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/regeneratorRuntime.js
|
|
|
var regeneratorRuntime = __webpack_require__(17061);
|
|
|
var regeneratorRuntime_default = /*#__PURE__*/__webpack_require__.n(regeneratorRuntime);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/objectSpread2.js
|
|
|
var objectSpread2 = __webpack_require__(42122);
|
|
|
var objectSpread2_default = /*#__PURE__*/__webpack_require__.n(objectSpread2);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/asyncToGenerator.js
|
|
|
var asyncToGenerator = __webpack_require__(17156);
|
|
|
var asyncToGenerator_default = /*#__PURE__*/__webpack_require__.n(asyncToGenerator);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/slicedToArray.js
|
|
|
var slicedToArray = __webpack_require__(27424);
|
|
|
var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
|
var react = __webpack_require__(67294);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/tooltip/index.js + 3 modules
|
|
|
var tooltip = __webpack_require__(83062);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/input/index.js + 5 modules
|
|
|
var input = __webpack_require__(79531);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/spin/index.js + 1 modules
|
|
|
var spin = __webpack_require__(57953);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/empty/index.js + 3 modules
|
|
|
var empty = __webpack_require__(32983);
|
|
|
// EXTERNAL MODULE: ./node_modules/classnames/index.js
|
|
|
var classnames = __webpack_require__(94184);
|
|
|
var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
|
|
|
;// CONCATENATED MODULE: ./src/components/SelectEnvironment/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var SelectEnvironmentmodules = ({"selectEnvironment":"selectEnvironment___LegvW","search":"search___ZMwsK","searchListWrap":"searchListWrap___iUv9S","searchList":"searchList___T1FBi","name":"name___t0Y2b","tag":"tag___ooWkq","searchListActive":"searchListActive___ahElk","spin":"spin___x2xMT","common":"common___ZhJvk","title":"title___p4_7m","tags":"tags___2fYZM","tagActive":"tagActive___tb54k","wrap":"wrap___I9ZtF","allList":"allList___h31KX","item":"item___PwiKQ","itemActive":"itemActive___JCEc6","line":"line___Qn6mz","apply":"apply___EhZKq","p1":"p1___LxfGu","p2":"p2___jiQhJ","list":"list___n7Ydz","items":"items___OB8qz","darklySelectEnvironment":"darklySelectEnvironment___K__cy"});
|
|
|
// EXTERNAL MODULE: ./src/assets/images/noEnvData.png
|
|
|
var noEnvData = __webpack_require__(36723);
|
|
|
// EXTERNAL MODULE: ./src/utils/fetch.ts
|
|
|
var fetch = __webpack_require__(84519);
|
|
|
// EXTERNAL MODULE: ./node_modules/lodash/lodash.js
|
|
|
var lodash = __webpack_require__(96486);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(85893);
|
|
|
;// CONCATENATED MODULE: ./src/components/SelectEnvironment/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var SelectEnvironment = function SelectEnvironment(_ref) {
|
|
|
var className = _ref.className,
|
|
|
dispatch = _ref.dispatch,
|
|
|
_ref$skin = _ref.skin,
|
|
|
skin = _ref$skin === void 0 ? 'white' : _ref$skin,
|
|
|
_ref$value = _ref.value,
|
|
|
value = _ref$value === void 0 ? null : _ref$value,
|
|
|
_ref$loading = _ref.loading,
|
|
|
loading = _ref$loading === void 0 ? false : _ref$loading,
|
|
|
_ref$data = _ref.data,
|
|
|
data = _ref$data === void 0 ? [] : _ref$data,
|
|
|
_ref$otherData = _ref.otherData,
|
|
|
otherData = _ref$otherData === void 0 ? [] : _ref$otherData,
|
|
|
_ref$tags = _ref.tags,
|
|
|
tags = _ref$tags === void 0 ? [] : _ref$tags,
|
|
|
_ref$onChange = _ref.onChange,
|
|
|
onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange,
|
|
|
_ref$onSearchWord = _ref.onSearchWord,
|
|
|
onSearchWord = _ref$onSearchWord === void 0 ? function () {} : _ref$onSearchWord,
|
|
|
shixun_type = _ref.shixun_type,
|
|
|
extraContent = _ref.extraContent,
|
|
|
tab_type = _ref.tab_type,
|
|
|
is_create_mirror = _ref.is_create_mirror,
|
|
|
hiddenCreateOnline = _ref.hiddenCreateOnline;
|
|
|
var _useState = (0,react.useState)(''),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
inputValue = _useState2[0],
|
|
|
setInputValue = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)(false),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
visible = _useState4[0],
|
|
|
setVisible = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)([]),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
options = _useState6[0],
|
|
|
setOptions = _useState6[1];
|
|
|
var _useState7 = (0,react.useState)(0),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
listActiveIndex = _useState8[0],
|
|
|
setListActiveIndex = _useState8[1];
|
|
|
var timer = (0,react.useRef)(null);
|
|
|
var quId = (0,react.useRef)(String(Math.floor(Math.random() * 1000000))).current;
|
|
|
var inputRef = (0,react.useRef)();
|
|
|
var timerSearch = (0,react.useRef)(null);
|
|
|
var endCount = (0,react.useRef)(0);
|
|
|
var optionsSave = (0,react.useRef)([]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
window.addEventListener('keydown', handleKeyDown);
|
|
|
return function () {
|
|
|
window.removeEventListener('keydown', handleKeyDown);
|
|
|
};
|
|
|
}, [inputValue, visible, options]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
setOptions([]);
|
|
|
}, [tab_type]);
|
|
|
var handleKeyDown = function handleKeyDown(e) {
|
|
|
if (!visible || e.keyCode !== 40 && e.keyCode !== 38) {
|
|
|
return;
|
|
|
}
|
|
|
var activeIndex = 0;
|
|
|
if (e.keyCode === 40 && visible) {
|
|
|
if (listActiveIndex < options.length - 1) {
|
|
|
activeIndex = listActiveIndex + 1;
|
|
|
} else {
|
|
|
activeIndex = 0;
|
|
|
}
|
|
|
console.log('下');
|
|
|
searchFuc(activeIndex, 'down');
|
|
|
}
|
|
|
if (e.keyCode === 38 && visible) {
|
|
|
if (listActiveIndex === 0) {
|
|
|
activeIndex = options.length - 1;
|
|
|
} else {
|
|
|
activeIndex = listActiveIndex - 1;
|
|
|
}
|
|
|
searchFuc(activeIndex, 'up');
|
|
|
}
|
|
|
setListActiveIndex(activeIndex);
|
|
|
optionsInit(inputValue, activeIndex, true);
|
|
|
};
|
|
|
|
|
|
//高亮字符串 string: 需要处理的字符串,keyword:键盘输入的内容
|
|
|
var heightLight = function heightLight(string, keyword) {
|
|
|
var regTrim = function regTrim(s) {
|
|
|
var imp = /[\^\.\\\|\(\)\*\+\-\$\[\]\?]/g;
|
|
|
var imp_c = {};
|
|
|
imp_c["^"] = "\\^";
|
|
|
imp_c["."] = "\\.";
|
|
|
imp_c["\\"] = "\\\\";
|
|
|
imp_c["|"] = "\\|";
|
|
|
imp_c["("] = "\\(";
|
|
|
imp_c[")"] = "\\)";
|
|
|
imp_c["*"] = "\\*";
|
|
|
imp_c["+"] = "\\+";
|
|
|
imp_c["-"] = "\\-";
|
|
|
imp_c["$"] = "\$";
|
|
|
imp_c["["] = "\\[";
|
|
|
imp_c["]"] = "\\]";
|
|
|
imp_c["?"] = "\\?";
|
|
|
s = s.replace(imp, function (o) {
|
|
|
return imp_c[o];
|
|
|
});
|
|
|
return s;
|
|
|
};
|
|
|
var reg = new RegExp(regTrim(keyword), "gi");
|
|
|
string = string.replace(reg, function (txt) {
|
|
|
return "<span style='color:#0152d9;'>" + txt + "</span>";
|
|
|
});
|
|
|
return string;
|
|
|
};
|
|
|
var optionsInit = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2(searchText, activeList, move) {
|
|
|
var count, listDom, newItems;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
count = endCount.current + 1;
|
|
|
endCount.current = count;
|
|
|
listDom = function listDom(list) {
|
|
|
var newItems = list === null || list === void 0 ? void 0 : list.map(function (er, index) {
|
|
|
var id = er.id,
|
|
|
name = er.name;
|
|
|
var param = objectSpread2_default()(objectSpread2_default()({}, er), {}, {
|
|
|
label: /*#__PURE__*/(0,jsx_runtime.jsxs)("ul", {
|
|
|
id: "search-".concat(quId, "-").concat(index),
|
|
|
onClick: function onClick() {
|
|
|
return onSelect(id, param);
|
|
|
},
|
|
|
className: index === activeList ? SelectEnvironmentmodules.searchListActive : SelectEnvironmentmodules.searchList,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
className: SelectEnvironmentmodules.name,
|
|
|
dangerouslySetInnerHTML: {
|
|
|
__html: heightLight(name, searchText)
|
|
|
}
|
|
|
}), er["private"] && /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u8BE5\u955C\u50CF\u9762\u5411\u6307\u5B9A\u7528\u6237\u5F00\u653E",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
className: SelectEnvironmentmodules.tag,
|
|
|
style: {
|
|
|
color: '#FF9D18',
|
|
|
border: '1px solid #FFCF8D',
|
|
|
fontSize: 10
|
|
|
},
|
|
|
children: "\u9650\u5B9A"
|
|
|
})
|
|
|
}), er.is_base && /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u4EC5\u63D0\u4F9B\u4E00\u4E2A\u57FA\u672C\u7684\u64CD\u4F5C\u7CFB\u7EDF\u73AF\u5883",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
className: SelectEnvironmentmodules.tag,
|
|
|
style: {
|
|
|
color: '#165DFF',
|
|
|
border: '1px solid #BACFFE',
|
|
|
fontSize: 10
|
|
|
},
|
|
|
children: "\u57FA\u7840"
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
return param;
|
|
|
});
|
|
|
return newItems;
|
|
|
};
|
|
|
if (!move) {
|
|
|
_context2.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
newItems = listDom(optionsSave.current);
|
|
|
setOptions(newItems);
|
|
|
return _context2.abrupt("return");
|
|
|
case 7:
|
|
|
clearTimeout(timerSearch.current);
|
|
|
timerSearch.current = setTimeout( /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var params, res, _res$data, _newItems, _res$data2;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
params = {
|
|
|
keywords: encodeURIComponent(searchText || ''),
|
|
|
page: 1,
|
|
|
limit: 100000,
|
|
|
tab_type: tab_type
|
|
|
};
|
|
|
shixun_type ? params["shixun_type"] = shixun_type : "";
|
|
|
_context.next = 4;
|
|
|
return (0,fetch/* default */.ZP)("/api/shixuns/search_image.json", {
|
|
|
method: 'get',
|
|
|
params: objectSpread2_default()(objectSpread2_default()({}, params), {}, {
|
|
|
is_create_mirror: is_create_mirror
|
|
|
})
|
|
|
});
|
|
|
case 4:
|
|
|
res = _context.sent;
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
_newItems = listDom((res === null || res === void 0 ? void 0 : (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.mirrors) || []);
|
|
|
if (count === endCount.current) {
|
|
|
setOptions(_newItems);
|
|
|
optionsSave.current = (0,lodash.cloneDeep)((res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.mirrors) || []);
|
|
|
}
|
|
|
}
|
|
|
case 6:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
})), 300);
|
|
|
case 9:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function optionsInit(_x, _x2, _x3) {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var scrollFuc = function scrollFuc(id) {
|
|
|
var itemDom = document.getElementById("scroll-".concat(quId, "-").concat(id));
|
|
|
if (!itemDom) return;
|
|
|
var wrapDom = document.getElementById("scroll-".concat(quId));
|
|
|
wrapDom.scrollTo(0, itemDom.offsetTop);
|
|
|
};
|
|
|
var searchFuc = function searchFuc(index, direction) {
|
|
|
var itemDom = document.getElementById("search-".concat(quId, "-").concat(index));
|
|
|
if (!itemDom) return;
|
|
|
var wrapDom = document.getElementById("search-".concat(quId));
|
|
|
var isClient = itemDom.offsetTop - wrapDom.scrollTop > 0 && itemDom.offsetTop - wrapDom.scrollTop < wrapDom.clientHeight; //判断在盒子内
|
|
|
if (isClient) return; //在盒子内不滚动
|
|
|
if (direction === 'down') {
|
|
|
wrapDom.scrollTo(0, itemDom.offsetTop - wrapDom.clientHeight + itemDom.clientHeight);
|
|
|
} else {
|
|
|
wrapDom.scrollTo(0, itemDom.offsetTop);
|
|
|
}
|
|
|
};
|
|
|
var onSearch = function onSearch(searchText) {
|
|
|
optionsInit(searchText, 0);
|
|
|
};
|
|
|
var handlePressEnter = function handlePressEnter(v) {
|
|
|
var _options$listActiveIn;
|
|
|
if (!options.length) return;
|
|
|
var realId = options === null || options === void 0 ? void 0 : (_options$listActiveIn = options[listActiveIndex]) === null || _options$listActiveIn === void 0 ? void 0 : _options$listActiveIn.id;
|
|
|
onChange(realId);
|
|
|
setOptions([]);
|
|
|
setListActiveIndex(0);
|
|
|
// setInputValue(options?.[listActiveIndex]?.name)
|
|
|
scrollFuc(realId);
|
|
|
inputRef.current.blur();
|
|
|
};
|
|
|
var onSelect = function onSelect(id, option) {
|
|
|
onChange(id);
|
|
|
setOptions([]);
|
|
|
setListActiveIndex(0);
|
|
|
// setInputValue(option?.name)
|
|
|
scrollFuc(id);
|
|
|
};
|
|
|
var clear = function clear() {
|
|
|
setOptions([]);
|
|
|
setInputValue("");
|
|
|
onSearchWord('');
|
|
|
};
|
|
|
var activeClear = function activeClear(id) {
|
|
|
onChange(id);
|
|
|
setOptions([]);
|
|
|
// setInputValue('')
|
|
|
};
|
|
|
|
|
|
var renderIcon = function renderIcon() {
|
|
|
if (inputValue === '') {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
style: {
|
|
|
pointerEvents: 'none'
|
|
|
},
|
|
|
className: "iconfont icon-sousuo2 c-grey-c"
|
|
|
});
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
onClick: function onClick(e) {
|
|
|
e.stopPropagation();
|
|
|
clear();
|
|
|
},
|
|
|
className: "iconfont icon-shanchu4 c-grey-c"
|
|
|
});
|
|
|
};
|
|
|
var handleApply = function handleApply() {
|
|
|
dispatch({
|
|
|
type: 'newShixuns/setActionTabs',
|
|
|
payload: {
|
|
|
key: 'NewShixuns-Apply'
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
var CreateImg = function CreateImg() {
|
|
|
dispatch({
|
|
|
type: 'newShixuns/setActionTabs',
|
|
|
payload: {
|
|
|
key: 'Create-Environment'
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
var onBlur = function onBlur() {
|
|
|
timer.current = setTimeout(function () {
|
|
|
setVisible(false);
|
|
|
setListActiveIndex(0);
|
|
|
}, 200);
|
|
|
//blur阻止了select事件
|
|
|
};
|
|
|
|
|
|
var isEmpty = !(data !== null && data !== void 0 && data.length) && !(otherData !== null && otherData !== void 0 && otherData.length);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: classnames_default()(skin === 'night' ? SelectEnvironmentmodules.darklySelectEnvironment : SelectEnvironmentmodules.selectEnvironment, className),
|
|
|
children: [extraContent && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
style: {
|
|
|
marginTop: 20,
|
|
|
marginLeft: 20
|
|
|
},
|
|
|
children: extraContent
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: SelectEnvironmentmodules.search,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
suffix: renderIcon(),
|
|
|
bordered: false,
|
|
|
ref: inputRef,
|
|
|
value: inputValue,
|
|
|
onKeyDown: function onKeyDown(e) {
|
|
|
if (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 13) {
|
|
|
e.preventDefault();
|
|
|
}
|
|
|
},
|
|
|
size: 'middle',
|
|
|
onFocus: function onFocus() {
|
|
|
clearTimeout(timer.current);
|
|
|
if (inputValue) {
|
|
|
onSearch(inputValue);
|
|
|
}
|
|
|
setVisible(true);
|
|
|
},
|
|
|
onBlur: onBlur,
|
|
|
onChange: function onChange(e) {
|
|
|
setInputValue(e.target.value);
|
|
|
if (e.target.value) {
|
|
|
onSearch(e.target.value);
|
|
|
}
|
|
|
onSearchWord(e.target.value);
|
|
|
},
|
|
|
placeholder: "\u641C\u7D22\u60A8\u9700\u8981\u7684\u5B9E\u9A8C\u73AF\u5883",
|
|
|
onPressEnter: handlePressEnter
|
|
|
}), visible && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
id: "search-".concat(quId),
|
|
|
className: SelectEnvironmentmodules.searchListWrap,
|
|
|
children: options.map(function (e, i) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [" ", e.label]
|
|
|
}, i);
|
|
|
})
|
|
|
})]
|
|
|
}), loading ? /*#__PURE__*/(0,jsx_runtime.jsx)(spin/* default */.Z, {
|
|
|
className: SelectEnvironmentmodules.spin
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [!!tags.length && /*#__PURE__*/(0,jsx_runtime.jsxs)("aside", {
|
|
|
className: SelectEnvironmentmodules.common,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: SelectEnvironmentmodules.title,
|
|
|
children: "\u63A8\u8350\u73AF\u5883:"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("ul", {
|
|
|
className: SelectEnvironmentmodules.tags,
|
|
|
children: tags.map(function (e, i) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
onClick: function onClick() {
|
|
|
return activeClear(e.id);
|
|
|
},
|
|
|
className: value === e.id ? "".concat(SelectEnvironmentmodules.tag, " ").concat(SelectEnvironmentmodules.tagActive) : SelectEnvironmentmodules.tag,
|
|
|
children: e.name
|
|
|
}, i);
|
|
|
})
|
|
|
})]
|
|
|
}), isEmpty && /*#__PURE__*/(0,jsx_runtime.jsx)(empty/* default */.Z, {
|
|
|
style: {
|
|
|
margin: '60px 0'
|
|
|
},
|
|
|
image: noEnvData,
|
|
|
description: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "c-grey-999",
|
|
|
children: "\u6682\u65E0\u5B9E\u9A8C\u73AF\u5883"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("aside", {
|
|
|
className: SelectEnvironmentmodules.wrap,
|
|
|
id: "scroll-".concat(quId),
|
|
|
children: [data.map(function (item, i) {
|
|
|
var _item$image;
|
|
|
return !!(item !== null && item !== void 0 && (_item$image = item.image) !== null && _item$image !== void 0 && _item$image.length) ? /*#__PURE__*/(0,jsx_runtime.jsx)(List, {
|
|
|
data: item,
|
|
|
id: value,
|
|
|
handleClick: function handleClick(id) {
|
|
|
return activeClear(id);
|
|
|
}
|
|
|
}, i) : null;
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("ul", {
|
|
|
className: SelectEnvironmentmodules.allList,
|
|
|
children: otherData.map(function (item) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("li", {
|
|
|
id: "scroll-".concat(quId, "-").concat(item.id),
|
|
|
className: item.id === value ? "".concat(SelectEnvironmentmodules.item, " ").concat(SelectEnvironmentmodules.itemActive) : SelectEnvironmentmodules.item,
|
|
|
onClick: function onClick() {
|
|
|
return onChange(item.id);
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: SelectEnvironmentmodules.name,
|
|
|
children: item.name
|
|
|
}), item["private"] && /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u8BE5\u955C\u50CF\u9762\u5411\u6307\u5B9A\u7528\u6237\u5F00\u653E",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: SelectEnvironmentmodules.tag,
|
|
|
style: {
|
|
|
color: '#FF9D18',
|
|
|
border: '1px solid #FFCF8D',
|
|
|
fontSize: 10
|
|
|
},
|
|
|
children: "\u9650\u5B9A"
|
|
|
})
|
|
|
}), item.is_base && /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u4EC5\u63D0\u4F9B\u4E00\u4E2A\u57FA\u672C\u7684\u64CD\u4F5C\u7CFB\u7EDF\u73AF\u5883",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: SelectEnvironmentmodules.tag,
|
|
|
style: {
|
|
|
color: '#165DFF',
|
|
|
border: '1px solid #BACFFE',
|
|
|
fontSize: 10
|
|
|
},
|
|
|
children: "\u57FA\u7840"
|
|
|
})
|
|
|
})]
|
|
|
}, "key-".concat(item.id));
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: SelectEnvironmentmodules.apply,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: SelectEnvironmentmodules.p1,
|
|
|
children: "\u6CA1\u6709\u5B9E\u9A8C\u73AF\u5883\uFF1F"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: SelectEnvironmentmodules.p2,
|
|
|
onClick: handleApply,
|
|
|
children: " \u7533\u8BF7\u65B0\u5EFA"
|
|
|
}), !hiddenCreateOnline && /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: SelectEnvironmentmodules.p2,
|
|
|
onClick: CreateImg,
|
|
|
children: " \u5728\u7EBF\u521B\u5EFA"
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
var List = function List(_ref4) {
|
|
|
var data = _ref4.data,
|
|
|
id = _ref4.id,
|
|
|
handleClick = _ref4.handleClick;
|
|
|
var _useState9 = (0,react.useState)(true),
|
|
|
_useState10 = slicedToArray_default()(_useState9, 2),
|
|
|
drop = _useState10[0],
|
|
|
setDrop = _useState10[1];
|
|
|
var name = data.name,
|
|
|
image = data.image;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: SelectEnvironmentmodules.list,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("header", {
|
|
|
onClick: function onClick() {
|
|
|
return setDrop(!drop);
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: SelectEnvironmentmodules.title,
|
|
|
children: name
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
style: {
|
|
|
transition: '0.5s',
|
|
|
transform: drop ? 'rotate(0deg)' : 'rotate(180deg)'
|
|
|
},
|
|
|
className: "iconfont icon-shangjiantou c-grey-999"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("ul", {
|
|
|
className: SelectEnvironmentmodules.items,
|
|
|
style: {
|
|
|
height: drop ? 'auto' : 0
|
|
|
},
|
|
|
children: [image.map(function (item) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("li", {
|
|
|
className: item.id === id ? "".concat(SelectEnvironmentmodules.item, " ").concat(SelectEnvironmentmodules.itemActive) : SelectEnvironmentmodules.item,
|
|
|
onClick: function onClick() {
|
|
|
return handleClick(item.id);
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: SelectEnvironmentmodules.name,
|
|
|
children: item.name
|
|
|
}), item["private"] && /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u8BE5\u955C\u50CF\u9762\u5411\u6307\u5B9A\u7528\u6237\u5F00\u653E",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: SelectEnvironmentmodules.tag,
|
|
|
style: {
|
|
|
color: '#FF9D18',
|
|
|
border: '1px solid #FFCF8D',
|
|
|
fontSize: 10
|
|
|
},
|
|
|
children: "\u9650\u5B9A"
|
|
|
})
|
|
|
}), item.is_base && /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u4EC5\u63D0\u4F9B\u4E00\u4E2A\u57FA\u672C\u7684\u64CD\u4F5C\u7CFB\u7EDF\u73AF\u5883",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: SelectEnvironmentmodules.tag,
|
|
|
style: {
|
|
|
color: '#165DFF',
|
|
|
border: '1px solid #BACFFE',
|
|
|
fontSize: 10
|
|
|
},
|
|
|
children: "\u57FA\u7840"
|
|
|
})
|
|
|
})]
|
|
|
}, item.id);
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
className: SelectEnvironmentmodules.line
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var components_SelectEnvironment = (SelectEnvironment);
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 97501:
|
|
|
/*!*************************************************************!*\
|
|
|
!*** ./src/components/markdown-editor/code-block/index.tsx ***!
|
|
|
\*************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ "h": function() { return /* binding */ MyCodeMirror; }
|
|
|
/* harmony export */ });
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/objectSpread2.js */ 42122);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/slicedToArray.js */ 27424);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ 67294);
|
|
|
/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! antd */ 79035);
|
|
|
/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! antd */ 25159);
|
|
|
/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! antd */ 71577);
|
|
|
/* harmony import */ var codemirror__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! codemirror */ 4631);
|
|
|
/* harmony import */ var codemirror__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(codemirror__WEBPACK_IMPORTED_MODULE_3__);
|
|
|
/* harmony import */ var codemirror_lib_codemirror_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! codemirror/lib/codemirror.css */ 71749);
|
|
|
/* harmony import */ var codemirror_theme_blackboard_css__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! codemirror/theme/blackboard.css */ 30483);
|
|
|
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ 85893);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Option = antd__WEBPACK_IMPORTED_MODULE_7__/* ["default"].Option */ .Z.Option;
|
|
|
|
|
|
//https://github.com/codemirror/CodeMirror/issues/4838
|
|
|
var formItemLayout = {
|
|
|
labelCol: {
|
|
|
span: 4
|
|
|
},
|
|
|
wrapperCol: {
|
|
|
span: 20
|
|
|
}
|
|
|
};
|
|
|
var LanguageDesc = {
|
|
|
asp: ['ASP', 'vbscript'],
|
|
|
actionscript: ['ActionScript(3.0)/Flash/Flex', 'clike'],
|
|
|
bash: ['Bash/Bat', 'shell'],
|
|
|
css: ['CSS', 'css'],
|
|
|
c: ['C', 'clike'],
|
|
|
cpp: ['C++', 'clike'],
|
|
|
csharp: ['C#', 'clike'],
|
|
|
coffeescript: ['CoffeeScript', 'coffeescript'],
|
|
|
d: ['D', 'd'],
|
|
|
dart: ['Dart', 'dart'],
|
|
|
delphi: ['Delphi/Pascal', 'pascal'],
|
|
|
erlang: ['Erlang', 'erlang'],
|
|
|
go: ['Golang', 'go'],
|
|
|
groovy: ['Groovy', 'groovy'],
|
|
|
html: ['HTML', 'text/html'],
|
|
|
java: ['Java', 'clike'],
|
|
|
json: ['JSON', 'text/json'],
|
|
|
javascript: ['Javascript', 'javascript'],
|
|
|
lua: ['Lua', 'lua'],
|
|
|
less: ['LESS', 'css'],
|
|
|
markdown: ['Markdown', 'gfm'],
|
|
|
'objective-c': ['Objective-C', 'clike'],
|
|
|
php: ['PHP', 'php'],
|
|
|
perl: ['Perl', 'perl'],
|
|
|
python: ['Python', 'python'],
|
|
|
r: ['R', 'r'],
|
|
|
rst: ['reStructedText', 'rst'],
|
|
|
ruby: ['Ruby', 'ruby'],
|
|
|
sql: ['SQL', 'sql'],
|
|
|
sass: ['SASS/SCSS', 'sass'],
|
|
|
shell: ['Shell', 'shell'],
|
|
|
scala: ['Scala', 'clike'],
|
|
|
swift: ['Swift', 'clike'],
|
|
|
vb: ['VB/VBScript', 'vb'],
|
|
|
xml: ['XML', 'text/xml'],
|
|
|
yaml: ['YAML', 'yaml']
|
|
|
};
|
|
|
/* harmony default export */ __webpack_exports__["Z"] = (function (_ref) {
|
|
|
var callback = _ref.callback,
|
|
|
onCancel = _ref.onCancel;
|
|
|
var _useState = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)('python'),
|
|
|
_useState2 = _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_1___default()(_useState, 2),
|
|
|
mode = _useState2[0],
|
|
|
setMode = _useState2[1];
|
|
|
function onSetMode(value) {
|
|
|
setMode(LanguageDesc[value][1]);
|
|
|
}
|
|
|
function onSubmit(values) {
|
|
|
callback(values);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)(antd__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .Z, _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0___default()(_root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0___default()({}, formItemLayout), {}, {
|
|
|
className: "code-block-panel",
|
|
|
initialValues: {
|
|
|
language: 'python',
|
|
|
content: ''
|
|
|
},
|
|
|
onFinish: onSubmit,
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(antd__WEBPACK_IMPORTED_MODULE_8__/* ["default"].Item */ .Z.Item, {
|
|
|
label: "\u4EE3\u7801\u8BED\u8A00",
|
|
|
name: "language",
|
|
|
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(antd__WEBPACK_IMPORTED_MODULE_7__/* ["default"] */ .Z, {
|
|
|
getPopupContainer: function getPopupContainer(trigger) {
|
|
|
return trigger.parentNode;
|
|
|
},
|
|
|
onChange: onSetMode,
|
|
|
children: Object.keys(LanguageDesc).map(function (item) {
|
|
|
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(Option, {
|
|
|
value: item,
|
|
|
children: LanguageDesc[item][0]
|
|
|
}, item);
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(antd__WEBPACK_IMPORTED_MODULE_8__/* ["default"].Item */ .Z.Item, {
|
|
|
label: "\u4EE3\u7801\u5185\u5BB9",
|
|
|
name: "content",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入代码内容'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(MyCodeMirror, {
|
|
|
mode: mode
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsxs)("div", {
|
|
|
className: "flex-container flex-end",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(antd__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .ZP, {
|
|
|
type: "primary",
|
|
|
htmlType: "submit",
|
|
|
style: {
|
|
|
marginRight: 10
|
|
|
},
|
|
|
children: "\u786E\u5B9A"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(antd__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .ZP, {
|
|
|
type: "ghost",
|
|
|
onClick: onCancel,
|
|
|
children: "\u53D6\u6D88"
|
|
|
})]
|
|
|
})]
|
|
|
}));
|
|
|
});
|
|
|
function MyCodeMirror(_ref2) {
|
|
|
var value = _ref2.value,
|
|
|
onChange = _ref2.onChange,
|
|
|
mode = _ref2.mode,
|
|
|
_ref2$options = _ref2.options,
|
|
|
options = _ref2$options === void 0 ? {} : _ref2$options;
|
|
|
var el = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)();
|
|
|
var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(),
|
|
|
_useState4 = _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_1___default()(_useState3, 2),
|
|
|
cm = _useState4[0],
|
|
|
setCm = _useState4[1];
|
|
|
(0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {
|
|
|
if (cm) {
|
|
|
var onChangeHandler = function onChangeHandler(cm) {
|
|
|
var content = cm.getValue();
|
|
|
onChange && onChange(content);
|
|
|
};
|
|
|
cm.on('change', onChangeHandler);
|
|
|
return function () {
|
|
|
cm.off('change', onChangeHandler);
|
|
|
};
|
|
|
}
|
|
|
}, [cm, onChange]);
|
|
|
(0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {
|
|
|
if (cm) {
|
|
|
cm.setOption('mode', mode);
|
|
|
}
|
|
|
}, [cm, mode]);
|
|
|
(0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {
|
|
|
if (cm) {
|
|
|
if (value !== cm.getValue() || value === '') {
|
|
|
setTimeout(function () {
|
|
|
cm.setValue(value || '');
|
|
|
}, 300);
|
|
|
}
|
|
|
}
|
|
|
}, [cm, value]);
|
|
|
(0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(function () {
|
|
|
if (el.current && !cm) {
|
|
|
var instance = codemirror__WEBPACK_IMPORTED_MODULE_3___default().fromTextArea(el.current, _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0___default()({
|
|
|
mode: mode,
|
|
|
lineNumbers: true,
|
|
|
lineWrapping: true,
|
|
|
autoCloseBrackets: true,
|
|
|
tabSize: 4,
|
|
|
autofocus: true,
|
|
|
autoCloseTags: true,
|
|
|
matchBrackets: true,
|
|
|
styleActiveLine: true
|
|
|
}, options));
|
|
|
setCm(instance);
|
|
|
}
|
|
|
}, [el.current, cm]);
|
|
|
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("div", {
|
|
|
className: "my-codemirror-container",
|
|
|
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("textarea", {
|
|
|
ref: el
|
|
|
})
|
|
|
});
|
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 55373:
|
|
|
/*!***************************************************************!*\
|
|
|
!*** ./src/components/markdown-editor/index.tsx + 10 modules ***!
|
|
|
\***************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ markdown_editor; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js
|
|
|
var createForOfIteratorHelper = __webpack_require__(74704);
|
|
|
var createForOfIteratorHelper_default = /*#__PURE__*/__webpack_require__.n(createForOfIteratorHelper);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/regeneratorRuntime.js
|
|
|
var regeneratorRuntime = __webpack_require__(17061);
|
|
|
var regeneratorRuntime_default = /*#__PURE__*/__webpack_require__.n(regeneratorRuntime);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/asyncToGenerator.js
|
|
|
var asyncToGenerator = __webpack_require__(17156);
|
|
|
var asyncToGenerator_default = /*#__PURE__*/__webpack_require__.n(asyncToGenerator);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/slicedToArray.js
|
|
|
var slicedToArray = __webpack_require__(27424);
|
|
|
var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/defineProperty.js
|
|
|
var defineProperty = __webpack_require__(38416);
|
|
|
var defineProperty_default = /*#__PURE__*/__webpack_require__.n(defineProperty);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
|
var react = __webpack_require__(67294);
|
|
|
// EXTERNAL MODULE: ./node_modules/codemirror/lib/codemirror.js
|
|
|
var codemirror = __webpack_require__(4631);
|
|
|
var codemirror_default = /*#__PURE__*/__webpack_require__.n(codemirror);
|
|
|
// EXTERNAL MODULE: ./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js
|
|
|
var ResizeObserver_es = __webpack_require__(91033);
|
|
|
// EXTERNAL MODULE: ./node_modules/codemirror/lib/codemirror.css
|
|
|
var lib_codemirror = __webpack_require__(71749);
|
|
|
// EXTERNAL MODULE: ./node_modules/codemirror/addon/edit/closetag.js
|
|
|
var closetag = __webpack_require__(57341);
|
|
|
// EXTERNAL MODULE: ./node_modules/codemirror/addon/edit/closebrackets.js
|
|
|
var closebrackets = __webpack_require__(82801);
|
|
|
// EXTERNAL MODULE: ./node_modules/codemirror/addon/display/placeholder.js
|
|
|
var placeholder = __webpack_require__(88386);
|
|
|
// EXTERNAL MODULE: ./node_modules/codemirror/mode/markdown/markdown.js
|
|
|
var markdown = __webpack_require__(49047);
|
|
|
// EXTERNAL MODULE: ./node_modules/codemirror/mode/stex/stex.js
|
|
|
var stex = __webpack_require__(80785);
|
|
|
;// CONCATENATED MODULE: ./src/components/markdown-editor/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./src/components/RenderHtml/index.tsx + 1 modules
|
|
|
var RenderHtml = __webpack_require__(12768);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(85893);
|
|
|
;// CONCATENATED MODULE: ./src/components/RenderHtml/stex.tsx
|
|
|
|
|
|
// const latexjs = require('latex-l.js/dist/latex.js');
|
|
|
// import "latex-l.js/dist/css/base.css"
|
|
|
|
|
|
|
|
|
/* harmony default export */ var RenderHtml_stex = (function (_ref) {
|
|
|
var _ref$value = _ref.value,
|
|
|
value = _ref$value === void 0 ? '' : _ref$value,
|
|
|
className = _ref.className,
|
|
|
showTextOnly = _ref.showTextOnly,
|
|
|
showLines = _ref.showLines,
|
|
|
_ref$style = _ref.style,
|
|
|
style = _ref$style === void 0 ? {} : _ref$style;
|
|
|
var html = (0,react.useMemo)(function () {
|
|
|
// try {
|
|
|
// const latex = value || 'This is some text';
|
|
|
// let generator = new latexjs.default.HtmlGenerator({ hyphenate: true })
|
|
|
// let doc = latexjs.default.parse(latex, { generator: generator }).htmlDocument()
|
|
|
// return doc.body.innerHTML
|
|
|
// }catch(e){
|
|
|
// console.log("e:",e)
|
|
|
// return "错误的latex语法,请检查"
|
|
|
// }
|
|
|
return "";
|
|
|
}, [value]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
dangerouslySetInnerHTML: {
|
|
|
__html: html
|
|
|
}
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/objectSpread2.js
|
|
|
var objectSpread2 = __webpack_require__(42122);
|
|
|
var objectSpread2_default = /*#__PURE__*/__webpack_require__.n(objectSpread2);
|
|
|
;// CONCATENATED MODULE: ./src/components/markdown-editor/toolbar/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/components/markdown-editor/css/iconfont.css
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/components/markdown-editor/toolbar/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var DEFAULTICONS = [{
|
|
|
title: '粗体',
|
|
|
icon: 'icon-bold',
|
|
|
actionName: 'bold'
|
|
|
}, {
|
|
|
title: '斜体',
|
|
|
icon: 'icon-italic',
|
|
|
actionName: 'italic'
|
|
|
}, '|', {
|
|
|
title: '无序列表',
|
|
|
icon: 'icon-unorder-list',
|
|
|
actionName: 'list-ul'
|
|
|
}, {
|
|
|
title: '有序列表',
|
|
|
icon: 'icon-order-list',
|
|
|
actionName: 'list-ol'
|
|
|
}, '|', {
|
|
|
title: '行内代码',
|
|
|
icon: 'icon-code',
|
|
|
actionName: 'code'
|
|
|
}, {
|
|
|
title: '代码块(多语言风格)',
|
|
|
icon: 'icon-file-code',
|
|
|
actionName: 'code-block'
|
|
|
}, {
|
|
|
title: '链接',
|
|
|
icon: 'icon-link',
|
|
|
actionName: 'link'
|
|
|
}, '|', {
|
|
|
title: '行内公式',
|
|
|
icon: 'icon-sum',
|
|
|
actionName: 'inline-latex'
|
|
|
}, {
|
|
|
title: '多行公式',
|
|
|
icon: 'icon-formula',
|
|
|
actionName: 'latex'
|
|
|
}, '|', {
|
|
|
title: '添加图片',
|
|
|
icon: 'icon-picture',
|
|
|
actionName: 'upload-image'
|
|
|
}, {
|
|
|
title: '表格',
|
|
|
icon: 'icon-table',
|
|
|
actionName: 'add-table'
|
|
|
}, '|', {
|
|
|
title: '换行',
|
|
|
icon: 'icon-minus',
|
|
|
actionName: 'line-break'
|
|
|
}, {
|
|
|
title: '清空',
|
|
|
icon: 'icon-eraser',
|
|
|
actionName: 'eraser'
|
|
|
}];
|
|
|
function AButton(_ref) {
|
|
|
var onActionCallback = _ref.onActionCallback,
|
|
|
title = _ref.title,
|
|
|
icon = _ref.icon,
|
|
|
actionName = _ref.actionName,
|
|
|
_ref$className = _ref.className,
|
|
|
className = _ref$className === void 0 ? '' : _ref$className,
|
|
|
children = _ref.children;
|
|
|
function onAction() {
|
|
|
onActionCallback(actionName);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
title: title,
|
|
|
className: className,
|
|
|
onClick: onAction,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "md-iconfont ".concat(icon)
|
|
|
}), children]
|
|
|
});
|
|
|
}
|
|
|
/* harmony default export */ var toolbar = (function (_ref2) {
|
|
|
var watch = _ref2.watch,
|
|
|
showNullButton = _ref2.showNullButton,
|
|
|
showNullProgramButton = _ref2.showNullProgramButton,
|
|
|
onActionCallback = _ref2.onActionCallback,
|
|
|
fullScreen = _ref2.fullScreen,
|
|
|
insertTemp = _ref2.insertTemp,
|
|
|
hidetoolBar = _ref2.hidetoolBar;
|
|
|
var icons = [].concat(DEFAULTICONS, [{
|
|
|
title: "".concat(watch ? '关闭实时预览' : '开启实时预览'),
|
|
|
icon: "".concat(watch ? 'icon-eye-slash' : 'icon-eye'),
|
|
|
actionName: 'trigger-watch'
|
|
|
}]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("ul", {
|
|
|
className: "markdown-toolbar-container",
|
|
|
children: [!hidetoolBar && icons.map(function (item, index) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
children: item.actionName ? /*#__PURE__*/(0,jsx_runtime.jsx)(AButton, objectSpread2_default()(objectSpread2_default()({}, item), {}, {
|
|
|
onActionCallback: onActionCallback
|
|
|
})) : /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "v-line"
|
|
|
})
|
|
|
}, index);
|
|
|
}), showNullButton ? /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(AButton, {
|
|
|
icon: "icon-edit insert-blank",
|
|
|
className: "btn-null",
|
|
|
title: "\u589E\u52A0\u586B\u7A7A",
|
|
|
actionName: "add-null-ch",
|
|
|
onActionCallback: onActionCallback,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "fill-tip",
|
|
|
children: "\u70B9\u51FB\u63D2\u5165\b\u586B\u7A7A\u9879"
|
|
|
})
|
|
|
})
|
|
|
}) : null, showNullProgramButton ? /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(AButton, {
|
|
|
icon: "icon-edit insert-blank",
|
|
|
className: "btn-null",
|
|
|
title: "\u589E\u52A0\u586B\u7A7A",
|
|
|
actionName: "add-signal",
|
|
|
onActionCallback: onActionCallback,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "fill-tip",
|
|
|
children: "\u6DFB\u52A0\u5355\u884C\u586B\u7A7A\u9879"
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(AButton, {
|
|
|
icon: "icon-uniE900 insert-blank",
|
|
|
className: "btn-null",
|
|
|
title: "\u589E\u52A0\u586B\u7A7A",
|
|
|
actionName: "add-multiple",
|
|
|
onActionCallback: onActionCallback,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "fill-tip",
|
|
|
children: "\u6DFB\u52A0\u591A\u884C\u586B\u7A7A\u9879"
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
}) : null, insertTemp && /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(AButton, {
|
|
|
icon: "icon-edit",
|
|
|
className: "btn-null",
|
|
|
title: "\u63D2\u5165\u6A21\u677F",
|
|
|
actionName: "inster-template-".concat(insertTemp),
|
|
|
onActionCallback: onActionCallback,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "fill-tip",
|
|
|
children: "\u63D2\u5165\u6A21\u677F"
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
className: "btn-full-screen",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(AButton, {
|
|
|
icon: "".concat(fullScreen ? 'icon-shrink' : 'icon-enlarge'),
|
|
|
title: fullScreen ? '关闭全屏' : '开启全屏',
|
|
|
actionName: "trigger-full-screen",
|
|
|
onActionCallback: onActionCallback
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/components/modal.tsx
|
|
|
var modal = __webpack_require__(12264);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/form/index.js + 17 modules
|
|
|
var es_form = __webpack_require__(25159);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/input/index.js + 5 modules
|
|
|
var input = __webpack_require__(79531);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/button/index.js
|
|
|
var es_button = __webpack_require__(71577);
|
|
|
;// CONCATENATED MODULE: ./src/components/markdown-editor/link/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var formItemLayout = {
|
|
|
labelCol: {
|
|
|
span: 4
|
|
|
},
|
|
|
wrapperCol: {
|
|
|
span: 20
|
|
|
}
|
|
|
};
|
|
|
/* harmony default export */ var markdown_editor_link = (function (_ref) {
|
|
|
var callback = _ref.callback,
|
|
|
onCancel = _ref.onCancel;
|
|
|
function onSubmit(values) {
|
|
|
callback(values);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, objectSpread2_default()(objectSpread2_default()({}, formItemLayout), {}, {
|
|
|
initialValues: {
|
|
|
link: 'http://',
|
|
|
title: ''
|
|
|
},
|
|
|
className: "link-panel",
|
|
|
onFinish: onSubmit,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u94FE\u63A5\u5730\u5740",
|
|
|
name: "link",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入链接地址'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u94FE\u63A5\u6807\u9898",
|
|
|
name: "title",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入链接标题'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container flex-end",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
type: "primary",
|
|
|
htmlType: "submit",
|
|
|
style: {
|
|
|
marginRight: 10
|
|
|
},
|
|
|
children: "\u786E\u5B9A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
type: "ghost",
|
|
|
onClick: onCancel,
|
|
|
children: "\u53D6\u6D88"
|
|
|
})]
|
|
|
})]
|
|
|
}));
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/components/markdown-editor/code-block/index.tsx
|
|
|
var code_block = __webpack_require__(97501);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/message/index.js + 4 modules
|
|
|
var message = __webpack_require__(2453);
|
|
|
;// CONCATENATED MODULE: ./src/components/markdown-editor/upload-image/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/util.js
|
|
|
var util = __webpack_require__(96403);
|
|
|
;// CONCATENATED MODULE: ./src/components/markdown-editor/upload-image/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var useForm = es_form/* default.useForm */.Z.useForm;
|
|
|
var style = {
|
|
|
width: 280,
|
|
|
marginRight: 10
|
|
|
};
|
|
|
var upload_image_formItemLayout = {
|
|
|
labelCol: {
|
|
|
span: 5
|
|
|
},
|
|
|
wrapperCol: {
|
|
|
span: 19
|
|
|
}
|
|
|
};
|
|
|
/* harmony default export */ var upload_image = (function (_ref) {
|
|
|
var callback = _ref.callback,
|
|
|
onCancel = _ref.onCancel;
|
|
|
var _useForm = useForm(),
|
|
|
_useForm2 = slicedToArray_default()(_useForm, 1),
|
|
|
form = _useForm2[0];
|
|
|
var nameRef = (0,react.useRef)();
|
|
|
function onSubmit(values) {
|
|
|
callback(objectSpread2_default()(objectSpread2_default()({}, values), {}, {
|
|
|
name: nameRef.current
|
|
|
}));
|
|
|
}
|
|
|
function onAddUrl(data, file) {
|
|
|
if (data.status === -1) {
|
|
|
message/* default.error */.ZP.error(data.message);
|
|
|
return;
|
|
|
}
|
|
|
form.setFieldsValue({
|
|
|
src: "/api/attachments/".concat(data.id),
|
|
|
type: file.type
|
|
|
});
|
|
|
}
|
|
|
function onFileChange(e) {
|
|
|
var file = e.target.files[0];
|
|
|
nameRef.current = file.name;
|
|
|
uploadImage(file, onAddUrl);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, objectSpread2_default()(objectSpread2_default()({
|
|
|
form: form
|
|
|
}, upload_image_formItemLayout), {}, {
|
|
|
className: "upload-image-panel",
|
|
|
onFinish: onSubmit,
|
|
|
style: {
|
|
|
width: 470,
|
|
|
overflow: "hidden"
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u56FE\u7247\u5730\u5740",
|
|
|
required: true,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
noStyle: true,
|
|
|
name: "src",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入文件地址'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
style: style
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(UploadButton, {
|
|
|
onFileChange: onFileChange
|
|
|
})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u56FE\u7247\u63CF\u8FF0",
|
|
|
name: "alt"
|
|
|
// rules={[{ required: true, message: '请输入图片描述' }]}
|
|
|
,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
style: {
|
|
|
width: 264
|
|
|
}
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default.Item */.Z.Item, {
|
|
|
style: {
|
|
|
textAlign: "right"
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
type: "primary",
|
|
|
htmlType: "submit",
|
|
|
style: {
|
|
|
marginRight: 10
|
|
|
},
|
|
|
children: "\u786E\u5B9A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
type: "default",
|
|
|
onClick: onCancel,
|
|
|
children: "\u53D6\u6D88"
|
|
|
})]
|
|
|
})]
|
|
|
}));
|
|
|
});
|
|
|
function UploadButton(_ref2) {
|
|
|
var onFileChange = _ref2.onFileChange;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("label", {
|
|
|
className: "upload-button",
|
|
|
style: {
|
|
|
cursor: "pointer"
|
|
|
},
|
|
|
children: ["\u672C\u5730\u4E0A\u4F20", /*#__PURE__*/(0,jsx_runtime.jsx)("input", {
|
|
|
type: "file",
|
|
|
onChange: onFileChange
|
|
|
})]
|
|
|
});
|
|
|
}
|
|
|
function uploadImage(file, callback) {
|
|
|
if (!file) {
|
|
|
throw new String('没有文件');
|
|
|
return;
|
|
|
}
|
|
|
var formData = new FormData();
|
|
|
formData.append('editormd-image-file', file);
|
|
|
formData.append('file_param_name', 'editormd-image-file');
|
|
|
formData.append('byxhr', 'true');
|
|
|
var xhr = new window.XMLHttpRequest();
|
|
|
xhr.withCredentials = true;
|
|
|
xhr.addEventListener('load', function (response) {
|
|
|
callback(JSON.parse(response.target.responseText), file);
|
|
|
}, false);
|
|
|
xhr.addEventListener('error', function (error) {
|
|
|
console.error(error);
|
|
|
}, false);
|
|
|
xhr.open('POST', "".concat(util/* apiPref */.KI, "/api/attachments.json"));
|
|
|
xhr.send(formData);
|
|
|
}
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/radio/index.js + 5 modules
|
|
|
var es_radio = __webpack_require__(78045);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/input-number/index.js + 21 modules
|
|
|
var input_number = __webpack_require__(31795);
|
|
|
;// CONCATENATED MODULE: ./src/components/markdown-editor/add-table-panel/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var RadioGroup = es_radio/* default.Group */.ZP.Group;
|
|
|
var add_table_panel_style = {
|
|
|
margin: '0 8px'
|
|
|
};
|
|
|
/* harmony default export */ var add_table_panel = (function (_ref) {
|
|
|
var callback = _ref.callback,
|
|
|
onCancel = _ref.onCancel;
|
|
|
function onSubmit(values) {
|
|
|
callback(values);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, {
|
|
|
className: "add-table-panel",
|
|
|
initialValues: {
|
|
|
row: 3,
|
|
|
col: 2,
|
|
|
align: 'default'
|
|
|
},
|
|
|
onFinish: onSubmit,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container",
|
|
|
style: {
|
|
|
alignItems: "baseline"
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: add_table_panel_style,
|
|
|
children: "\u5355\u5143\u683C\u6570\uFF1A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: add_table_panel_style,
|
|
|
children: "\u884C\u6570"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
name: "row",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入行数'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input_number/* default */.Z, {})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: add_table_panel_style,
|
|
|
children: "\u5217\u6570"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
name: "col",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入列数'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input_number/* default */.Z, {})
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container",
|
|
|
style: {
|
|
|
marginTop: 12,
|
|
|
alignItems: "baseline"
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: add_table_panel_style,
|
|
|
children: "\u5BF9\u9F50\u65B9\u5F0F\uFF1A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
name: "align",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(RadioGroup, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default */.ZP, {
|
|
|
value: "default",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "fa fa-align-justify"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default */.ZP, {
|
|
|
value: "left",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "fa fa-align-left"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default */.ZP, {
|
|
|
value: "center",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "fa fa-align-center"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default */.ZP, {
|
|
|
value: "right",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "fa fa-align-right"
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container flex-end",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
type: "primary",
|
|
|
htmlType: "submit",
|
|
|
style: {
|
|
|
marginRight: 10
|
|
|
},
|
|
|
children: "\u786E\u5B9A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
type: "ghost",
|
|
|
onClick: onCancel,
|
|
|
children: "\u53D6\u6D88"
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/utils/env.ts + 1 modules
|
|
|
var env = __webpack_require__(59758);
|
|
|
// EXTERNAL MODULE: ./src/utils/fetch.ts
|
|
|
var fetch = __webpack_require__(84519);
|
|
|
// EXTERNAL MODULE: ./node_modules/uuid/dist/esm-browser/v4.js + 4 modules
|
|
|
var v4 = __webpack_require__(25934);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/modal/index.js + 39 modules
|
|
|
var es_modal = __webpack_require__(72423);
|
|
|
;// CONCATENATED MODULE: ./src/components/markdown-editor/constant.ts
|
|
|
var LINK = 'link';
|
|
|
var UPLOAD_IMAGE = 'upload-image';
|
|
|
var CODE_BLOCK = 'code-block';
|
|
|
var ADD_TABLE = 'add-table';
|
|
|
var HRLINE = '------------';
|
|
|
var ALIGNSIGN = {
|
|
|
"default": HRLINE,
|
|
|
left: ":".concat(HRLINE),
|
|
|
center: ":".concat(HRLINE, ":"),
|
|
|
right: "".concat(HRLINE, ":")
|
|
|
};
|
|
|
// EXTERNAL MODULE: ./src/components/useInterval.tsx
|
|
|
var useInterval = __webpack_require__(61891);
|
|
|
;// CONCATENATED MODULE: ./src/components/markdown-editor/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _DEFAULTKEYMAP, _TitleDesc;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function noop() {}
|
|
|
var pending = 0;
|
|
|
var StorageTimeTicket = 10000;
|
|
|
var NULL_CH = '▁';
|
|
|
var ADD_MULTI = '@▁▁@';
|
|
|
var ADD_SINGLE = '@▁@';
|
|
|
var TEMP1 = '\n**模板标题**\n模板正文内容,可输入文本内容和粘贴图片等操作'; //课程须知模板
|
|
|
function processSize(size) {
|
|
|
return !/^\d+$/.test(size) ? size : "".concat(size, "px");
|
|
|
}
|
|
|
var isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;
|
|
|
var key = isMac ? 'Cmd' : 'Ctrl';
|
|
|
var officeSix = ["pptm", "pptx", "ppt", "pot", "pps", "ppa", "potx", "ppsx", "ppam", "pptm", "potm", "ppsm", "doc", "docx", "dot", "dotx", "docm", "dotm", "xls", "xlsx", "csv", "xlt", "xla", "xltx", "xlsm", "xltm", "xlam", "xlsb"];
|
|
|
var DEFAULTKEYMAP = (_DEFAULTKEYMAP = {}, defineProperty_default()(_DEFAULTKEYMAP, key + '-B', 'bold'), defineProperty_default()(_DEFAULTKEYMAP, key + '-I', 'italic'), _DEFAULTKEYMAP);
|
|
|
var TitleDesc = (_TitleDesc = {}, defineProperty_default()(_TitleDesc, LINK, '添加链接'), defineProperty_default()(_TitleDesc, CODE_BLOCK, '添加代码块'), defineProperty_default()(_TitleDesc, UPLOAD_IMAGE, '添加文件'), defineProperty_default()(_TitleDesc, ADD_TABLE, '添加表格'), _TitleDesc);
|
|
|
|
|
|
//https://codemirror.net/demo
|
|
|
//The height can be set through CSS (by giving the .CodeMirror class a height property), or by calling the cm's setSize method.
|
|
|
/* harmony default export */ var markdown_editor = (function (_ref) {
|
|
|
var _ref$defaultValue = _ref.defaultValue,
|
|
|
defaultValue = _ref$defaultValue === void 0 ? '' : _ref$defaultValue,
|
|
|
onChange = _ref.onChange,
|
|
|
_ref$width = _ref.width,
|
|
|
width = _ref$width === void 0 ? '100%' : _ref$width,
|
|
|
_ref$height = _ref.height,
|
|
|
height = _ref$height === void 0 ? 400 : _ref$height,
|
|
|
_ref$miniToolbar = _ref.miniToolbar,
|
|
|
miniToolbar = _ref$miniToolbar === void 0 ? false : _ref$miniToolbar,
|
|
|
_ref$isFocus = _ref.isFocus,
|
|
|
isFocus = _ref$isFocus === void 0 ? false : _ref$isFocus,
|
|
|
watch = _ref.watch,
|
|
|
insertTemp = _ref.insertTemp,
|
|
|
_ref$mode = _ref.mode,
|
|
|
mode = _ref$mode === void 0 ? "markdown" : _ref$mode,
|
|
|
_ref$id = _ref.id,
|
|
|
id = _ref$id === void 0 ? 'markdown-editor-id' : _ref$id,
|
|
|
_ref$showResizeBar = _ref.showResizeBar,
|
|
|
showResizeBar = _ref$showResizeBar === void 0 ? false : _ref$showResizeBar,
|
|
|
_ref$noStorage = _ref.noStorage,
|
|
|
noStorage = _ref$noStorage === void 0 ? false : _ref$noStorage,
|
|
|
_ref$showNullButton = _ref.showNullButton,
|
|
|
showNullButton = _ref$showNullButton === void 0 ? false : _ref$showNullButton,
|
|
|
_ref$showNullProgramB = _ref.showNullProgramButton,
|
|
|
showNullProgramButton = _ref$showNullProgramB === void 0 ? false : _ref$showNullProgramB,
|
|
|
_ref$hidetoolBar = _ref.hidetoolBar,
|
|
|
hidetoolBar = _ref$hidetoolBar === void 0 ? false : _ref$hidetoolBar,
|
|
|
_ref$fullScreen = _ref.fullScreen,
|
|
|
fullScreen = _ref$fullScreen === void 0 ? false : _ref$fullScreen,
|
|
|
onBlur = _ref.onBlur,
|
|
|
onCMBeforeChange = _ref.onCMBeforeChange,
|
|
|
onFullScreen = _ref.onFullScreen,
|
|
|
_ref$className = _ref.className,
|
|
|
className = _ref$className === void 0 ? '' : _ref$className,
|
|
|
_ref$disablePaste = _ref.disablePaste,
|
|
|
disablePaste = _ref$disablePaste === void 0 ? false : _ref$disablePaste,
|
|
|
_ref$disabled = _ref.disabled,
|
|
|
disabled = _ref$disabled === void 0 ? false : _ref$disabled,
|
|
|
_ref$disabledFill = _ref.disabledFill,
|
|
|
disabledFill = _ref$disabledFill === void 0 ? false : _ref$disabledFill,
|
|
|
_ref$placeholder = _ref.placeholder,
|
|
|
placeholder = _ref$placeholder === void 0 ? '' : _ref$placeholder,
|
|
|
_ref$values = _ref.values,
|
|
|
values = _ref$values === void 0 ? '' : _ref$values;
|
|
|
var _useState = (0,react.useState)(null),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
cm = _useState2[0],
|
|
|
setCm = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)(defaultValue),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
value = _useState4[0],
|
|
|
setValue = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)(watch),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
preview = _useState6[0],
|
|
|
setPreview = _useState6[1];
|
|
|
var _useState7 = (0,react.useState)(fullScreen),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
isFull = _useState8[0],
|
|
|
setIsFull = _useState8[1];
|
|
|
var _useState9 = (0,react.useState)(''),
|
|
|
_useState10 = slicedToArray_default()(_useState9, 2),
|
|
|
action = _useState10[0],
|
|
|
setAction = _useState10[1];
|
|
|
var _useState11 = (0,react.useState)(0),
|
|
|
_useState12 = slicedToArray_default()(_useState11, 2),
|
|
|
lastedUpdateTime = _useState12[0],
|
|
|
setLastedUpdateTime = _useState12[1];
|
|
|
var _useState13 = (0,react.useState)(height),
|
|
|
_useState14 = slicedToArray_default()(_useState13, 2),
|
|
|
h = _useState14[0],
|
|
|
setH = _useState14[1];
|
|
|
var _useState15 = (0,react.useState)(false),
|
|
|
_useState16 = slicedToArray_default()(_useState15, 2),
|
|
|
tip = _useState16[0],
|
|
|
setTip = _useState16[1];
|
|
|
var uuidRef = (0,react.useRef)((0,v4/* default */.Z)());
|
|
|
var openPhoneRef = (0,react.useRef)(false);
|
|
|
var timer = (0,react.useRef)();
|
|
|
var cmEl = (0,react.useRef)();
|
|
|
var containerEl = (0,react.useRef)();
|
|
|
var resizeBarEl = (0,react.useRef)();
|
|
|
var previewEl = (0,react.useRef)();
|
|
|
var checkFiles = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var _res$attachments;
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return (0,fetch/* default */.ZP)("/api/attachments/distinct_hash_val.json", {
|
|
|
method: "post",
|
|
|
body: {
|
|
|
hash_val: uuidRef.current
|
|
|
}
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
if (!!(res !== null && res !== void 0 && (_res$attachments = res.attachments) !== null && _res$attachments !== void 0 && _res$attachments.length)) {
|
|
|
console.log("cm:", cm, cmEl);
|
|
|
res.attachments.map(function (item) {
|
|
|
if (item.content_type.indexOf("image") > -1) {
|
|
|
cm.replaceSelection(".concat(item.content_type, ")"));
|
|
|
} else if (item.content_type.indexOf("video") > -1) {
|
|
|
cm.replaceSelection("<video width=\"100%\" controls src=\"".concat(env/* default.API_SERVER */.Z.API_SERVER, "/api/attachments/").concat(data.id, "\"></video>"));
|
|
|
} else if (item.content_type.indexOf("pdf") > -1) {
|
|
|
cm.replaceSelection("<a href=\"".concat(env/* default.API_SERVER */.Z.API_SERVER, "/api/attachments/").concat(item.id, "?type=").concat(item.content_type, "&disposition=inline\" target=\"_blank\">").concat(item.name, "</a>"));
|
|
|
} else {
|
|
|
cm.replaceSelection("[".concat(item.name, "](").concat(env/* default.API_SERVER */.Z.API_SERVER, "/api/attachments/").concat(item.id, "?type=").concat(item.content_type, ")"));
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function checkFiles() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
|
|
|
// useEffect(() => {
|
|
|
// setValue(defaultValue)
|
|
|
// cm?.setValue(defaultValue)
|
|
|
// },[])
|
|
|
(0,react.useEffect)(function () {
|
|
|
var scrollTop = window.scrollY || window.pageYOffset;
|
|
|
setValue(values);
|
|
|
cm === null || cm === void 0 ? void 0 : cm.setValue(values);
|
|
|
window.scrollTo(0, scrollTop);
|
|
|
}, [values]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
onFullScreen === null || onFullScreen === void 0 ? void 0 : onFullScreen(isFull);
|
|
|
}, [isFull]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (cmEl.current) {
|
|
|
var onPaste = function onPaste(_, e) {
|
|
|
if (disablePaste) {
|
|
|
e.preventDefault();
|
|
|
return;
|
|
|
}
|
|
|
var clipboardData = e.clipboardData;
|
|
|
if (clipboardData) {
|
|
|
var types = clipboardData.types.toString();
|
|
|
var items = clipboardData.items;
|
|
|
if (types === 'Files' || clipboardData.types.indexOf("Files") > -1) {
|
|
|
e.preventDefault();
|
|
|
if (mode == "stex") return;
|
|
|
try {
|
|
|
var _items$;
|
|
|
var item = items[1];
|
|
|
if (((_items$ = items[0]) === null || _items$ === void 0 ? void 0 : _items$.kind) === 'file') {
|
|
|
item = items[0];
|
|
|
}
|
|
|
var file = item.getAsFile();
|
|
|
var fileSix = file.name.split(".").pop();
|
|
|
// console.log("item:", item, file, item?.type?.match(/^video\//i))
|
|
|
uploadImage(file, function (data) {
|
|
|
if (data.id) {
|
|
|
var _file$type, _file$type2, _file$type3;
|
|
|
if ((file === null || file === void 0 ? void 0 : (_file$type = file.type) === null || _file$type === void 0 ? void 0 : _file$type.indexOf("image")) > -1) {
|
|
|
instance.replaceSelection(".concat(data.content_type, ")"));
|
|
|
} else if ((file === null || file === void 0 ? void 0 : (_file$type2 = file.type) === null || _file$type2 === void 0 ? void 0 : _file$type2.indexOf("video")) > -1) {
|
|
|
instance.replaceSelection("<video width=\"100%\" controls src=\"".concat(env/* default.API_SERVER */.Z.API_SERVER, "/api/attachments/").concat(data.id, "\"></video>"));
|
|
|
} else if ((file === null || file === void 0 ? void 0 : (_file$type3 = file.type) === null || _file$type3 === void 0 ? void 0 : _file$type3.indexOf("pdf")) > -1) {
|
|
|
instance.replaceSelection("<a href=\"".concat(env/* default.API_SERVER */.Z.API_SERVER, "/api/attachments/").concat(data.id, "?type=").concat(file.type, "&disposition=inline\" target=\"_blank\">").concat(file.name, "</a>"));
|
|
|
} else if (officeSix.includes(fileSix)) {
|
|
|
instance.replaceSelection("<a href=\"".concat(env/* default.API_SERVER */.Z.API_SERVER, "/api/attachments/").concat(data.id, "?type=office&disposition=inline\" target=\"_blank\">").concat(file.name, "</a>"));
|
|
|
} else {
|
|
|
instance.replaceSelection("[".concat(file.name, "](").concat(env/* default.API_SERVER */.Z.API_SERVER, "/api/attachments/").concat(data.id, "?type=").concat(data.content_type, ")"));
|
|
|
}
|
|
|
} else {
|
|
|
if ((data === null || data === void 0 ? void 0 : data.status) === 401) document.location.href = '/user/login';
|
|
|
}
|
|
|
});
|
|
|
} catch (e) {
|
|
|
message/* default.warning */.ZP.warning("请使用chrome浏览器粘贴");
|
|
|
}
|
|
|
return true;
|
|
|
} else {
|
|
|
//toMarkdown ?
|
|
|
// let html = clipboardData.getData('text/html')
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
|
return true;
|
|
|
};
|
|
|
var instance = codemirror_default().fromTextArea(cmEl.current, {
|
|
|
mode: mode,
|
|
|
// inputStyle: 'contenteditable',
|
|
|
lineNumbers: miniToolbar ? false : true,
|
|
|
lineWrapping: true,
|
|
|
value: defaultValue,
|
|
|
autoCloseTags: true,
|
|
|
autoCloseBrackets: true
|
|
|
});
|
|
|
instance.on("keyup", function (cm, event) {
|
|
|
if (event.keyCode === 8) {
|
|
|
if (cm.getValue() == "") {
|
|
|
instance.setOption("placeholder", placeholder);
|
|
|
} else {
|
|
|
instance.setOption("placeholder", null);
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
instance.on("keydown", function (cm, event) {
|
|
|
if (event.keyCode === 8) {
|
|
|
var pos = deleteAtSymbol(cm);
|
|
|
if (pos) {
|
|
|
event.preventDefault();
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
isFocus && instance.focus();
|
|
|
instance.on('paste', onPaste);
|
|
|
instance.on('dragleave', function (data, e) {
|
|
|
containerEl.current.classList.remove("mouse-hover-md");
|
|
|
});
|
|
|
instance.on('dragover', function (data, e) {
|
|
|
containerEl.current.classList.add("mouse-hover-md");
|
|
|
});
|
|
|
instance.on('drop', function (data, e) {
|
|
|
containerEl.current.classList.add("mouse-hover-md");
|
|
|
// var file;
|
|
|
var files;
|
|
|
// Check if files were dropped
|
|
|
files = e.dataTransfer.files;
|
|
|
if (files.length > 0) {
|
|
|
e.preventDefault();
|
|
|
e.stopPropagation();
|
|
|
// file = files[0];
|
|
|
// alert('File: ' + file.name);
|
|
|
// return false;
|
|
|
var _loop = function _loop() {
|
|
|
var file = files[i];
|
|
|
var fileSix = file.name.split(".").pop();
|
|
|
uploadImage(file, function (data) {
|
|
|
if (data.id) {
|
|
|
var _file$type4, _file$type5, _file$type6;
|
|
|
if ((file === null || file === void 0 ? void 0 : (_file$type4 = file.type) === null || _file$type4 === void 0 ? void 0 : _file$type4.indexOf("image")) > -1) {
|
|
|
instance.replaceSelection(".concat(data.content_type, ")"));
|
|
|
} else if ((file === null || file === void 0 ? void 0 : (_file$type5 = file.type) === null || _file$type5 === void 0 ? void 0 : _file$type5.indexOf("video")) > -1) {
|
|
|
instance.replaceSelection("<video width=\"100%\" controls src=\"".concat(env/* default.API_SERVER */.Z.API_SERVER, "/api/attachments/").concat(data.id, "\"></video>"));
|
|
|
} else if ((file === null || file === void 0 ? void 0 : (_file$type6 = file.type) === null || _file$type6 === void 0 ? void 0 : _file$type6.indexOf("pdf")) > -1) {
|
|
|
instance.replaceSelection("<a href=\"".concat(env/* default.API_SERVER */.Z.API_SERVER, "/api/attachments/").concat(data.id, "?type=").concat(file.type, "&disposition=inline\" target=\"_blank\">").concat(file.name, "</a>"));
|
|
|
} else if (officeSix.includes(fileSix)) {
|
|
|
instance.replaceSelection("<a href=\"".concat(env/* default.API_SERVER */.Z.API_SERVER, "/api/attachments/").concat(data.id, "?type=office&disposition=inline\" target=\"_blank\">").concat(file.name, "</a>"));
|
|
|
} else {
|
|
|
instance.replaceSelection("[".concat(file.name, "](").concat(env/* default.API_SERVER */.Z.API_SERVER, "/api/attachments/").concat(data.id, "?type=").concat(data.content_type, ")"));
|
|
|
}
|
|
|
} else {
|
|
|
if ((data === null || data === void 0 ? void 0 : data.status) === 401) document.location.href = '/user/login';
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
for (var i = 0; i < files.length; i++) {
|
|
|
_loop();
|
|
|
}
|
|
|
// files.map((file:any) => {
|
|
|
|
|
|
// })
|
|
|
}
|
|
|
});
|
|
|
|
|
|
if (disabled) {
|
|
|
instance.on("beforeChange", function (instances, change) {
|
|
|
if (change.origin === "paste" || change.origin === "+input") {
|
|
|
change.cancel();
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
setCm(instance);
|
|
|
return function () {
|
|
|
instance.off('paste', onPaste);
|
|
|
};
|
|
|
}
|
|
|
}, []);
|
|
|
var resizeEditorBodyHeight = (0,react.useCallback)(function () {
|
|
|
if (containerEl.current) {
|
|
|
try {
|
|
|
// let toolH = containerEl.current.getElementsByClassName('markdown-toolbar-container')[0].offsetHeight
|
|
|
// let mdBody = containerEl.current.getElementsByClassName('markdown-editor-body')[0]
|
|
|
// if (!isFull) {
|
|
|
// mdBody.style.height = `${h - toolH}px`
|
|
|
// } else {
|
|
|
// mdBody.style.height = `calc(100vh - ${toolH}px)`
|
|
|
// }
|
|
|
} catch (error) {
|
|
|
console.log(error, '---- to set md editor body height');
|
|
|
}
|
|
|
}
|
|
|
}, [h, containerEl, isFull]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
function onLayout() {
|
|
|
var ro = new ResizeObserver_es/* default */.Z(function (entries) {
|
|
|
var _iterator = createForOfIteratorHelper_default()(entries),
|
|
|
_step;
|
|
|
try {
|
|
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
|
var entry = _step.value;
|
|
|
if (entry.target.offsetHeight > 0 || entry.target.offsetWidth > 0) {
|
|
|
resizeEditorBodyHeight();
|
|
|
cm.setSize('100%', '100%');
|
|
|
cm.refresh();
|
|
|
}
|
|
|
}
|
|
|
} catch (err) {
|
|
|
_iterator.e(err);
|
|
|
} finally {
|
|
|
_iterator.f();
|
|
|
}
|
|
|
});
|
|
|
ro.observe(cmEl.current.parentElement);
|
|
|
return ro;
|
|
|
}
|
|
|
if (cm) {
|
|
|
var ro = onLayout();
|
|
|
return function () {
|
|
|
var _cmEl$current, _cmEl$current2;
|
|
|
if ((_cmEl$current = cmEl.current) !== null && _cmEl$current !== void 0 && _cmEl$current.parentElement) ro.unobserve((_cmEl$current2 = cmEl.current) === null || _cmEl$current2 === void 0 ? void 0 : _cmEl$current2.parentElement);
|
|
|
};
|
|
|
}
|
|
|
}, [cm, resizeEditorBodyHeight]);
|
|
|
|
|
|
//keymap
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (cm) {
|
|
|
var keymap = [];
|
|
|
var _loop2 = function _loop2() {
|
|
|
var _Object$entries$_i = slicedToArray_default()(_Object$entries[_i], 2),
|
|
|
k = _Object$entries$_i[0],
|
|
|
value = _Object$entries$_i[1];
|
|
|
var map = defineProperty_default()({}, k, function () {
|
|
|
onActionCallback(value);
|
|
|
});
|
|
|
keymap.push(map);
|
|
|
cm.addKeyMap(map);
|
|
|
};
|
|
|
for (var _i = 0, _Object$entries = Object.entries(DEFAULTKEYMAP); _i < _Object$entries.length; _i++) {
|
|
|
_loop2();
|
|
|
}
|
|
|
timer.current = setInterval(function () {
|
|
|
if (openPhoneRef.current) {
|
|
|
checkFiles();
|
|
|
}
|
|
|
}, 4000);
|
|
|
return function () {
|
|
|
clearInterval(timer.current);
|
|
|
for (var _i2 = 0, _keymap = keymap; _i2 < _keymap.length; _i2++) {
|
|
|
var m = _keymap[_i2];
|
|
|
cm.removeKeyMap(m);
|
|
|
}
|
|
|
};
|
|
|
}
|
|
|
}, [cm]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (fullScreen !== isFull) {
|
|
|
setIsFull(fullScreen);
|
|
|
}
|
|
|
}, [fullScreen]);
|
|
|
(0,useInterval/* default */.Z)(function () {
|
|
|
if (!noStorage && lastedUpdateTime > 0) {
|
|
|
var currentTime = new Date().getTime();
|
|
|
var lastedValue = window.sessionStorage.getItem(id);
|
|
|
if (currentTime >= lastedUpdateTime + StorageTimeTicket && (!lastedValue || lastedValue !== value)) {
|
|
|
window.sessionStorage.setItem(id, value);
|
|
|
setTip(true);
|
|
|
}
|
|
|
}
|
|
|
}, StorageTimeTicket);
|
|
|
(0,react.useEffect)(function () {
|
|
|
setPreview(watch);
|
|
|
}, [cm, watch]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (cm) {
|
|
|
isFocus && cm.focus();
|
|
|
}
|
|
|
}, [cm, isFocus]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (preview && cm) {
|
|
|
var syncScroll = function syncScroll(e) {
|
|
|
var target = e.target;
|
|
|
if (previewEl.current) {
|
|
|
var ratio = target.scrollTop / target.scrollHeight;
|
|
|
previewEl.current.scrollTop = previewEl.current.scrollHeight * ratio;
|
|
|
}
|
|
|
};
|
|
|
var scrollEl = cm.getScrollerElement();
|
|
|
scrollEl.addEventListener('scroll', syncScroll);
|
|
|
return function () {
|
|
|
scrollEl.removeEventListener('scroll', syncScroll);
|
|
|
};
|
|
|
}
|
|
|
}, [cm, preview]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (cm && onCMBeforeChange) {
|
|
|
var onChangeHandler = function onChangeHandler(cm, change) {
|
|
|
onCMBeforeChange(cm, change);
|
|
|
};
|
|
|
cm.on('beforeChange', onChangeHandler);
|
|
|
return function () {
|
|
|
cm.off('beforeChange', onChangeHandler);
|
|
|
};
|
|
|
}
|
|
|
}, [cm, onCMBeforeChange]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (cm && onBlur) {
|
|
|
var onBlurHandler = function onBlurHandler() {
|
|
|
onBlur(cm.getValue());
|
|
|
};
|
|
|
cm.on('blur', onBlurHandler);
|
|
|
return function () {
|
|
|
cm.off('blur', onBlurHandler);
|
|
|
};
|
|
|
}
|
|
|
}, [cm, onBlur]);
|
|
|
function deleteAtSymbol(cm, change) {
|
|
|
var doc = cm.getDoc();
|
|
|
var cursor = doc.getCursor();
|
|
|
var line = doc.getLine(cursor.line);
|
|
|
var ch = line.charAt(cursor.ch - 1);
|
|
|
var p1 = line.lastIndexOf("@▁@", cursor.ch);
|
|
|
var p2 = line.lastIndexOf("@▁▁@", cursor.ch);
|
|
|
var posStart = p1 > p2 ? p1 : p2;
|
|
|
var n = p1 > p2 ? 3 : 4;
|
|
|
if (ADD_MULTI.indexOf(ch) === -1) return null;
|
|
|
console.log("change1:", change, cm, line, cursor, posStart, p1, p2, ch);
|
|
|
if (posStart >= 0 && cursor.ch - posStart < 5) {
|
|
|
var posEnd = posStart + n;
|
|
|
doc.replaceRange("", {
|
|
|
line: cursor.line,
|
|
|
ch: posStart
|
|
|
}, {
|
|
|
line: cursor.line,
|
|
|
ch: posEnd
|
|
|
});
|
|
|
return {
|
|
|
line: cursor.line,
|
|
|
ch: posEnd
|
|
|
};
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (cm) {
|
|
|
var onChangeHandler = function onChangeHandler(cm, change) {
|
|
|
var content = cm.getValue();
|
|
|
setValue(content);
|
|
|
setLastedUpdateTime(new Date().getTime());
|
|
|
cm.getScrollerElement().dispatchEvent(new CustomEvent('scroll'));
|
|
|
if (onChange) {
|
|
|
if (showNullProgramButton) {
|
|
|
onChange(content, formatProgramFill(content));
|
|
|
} else {
|
|
|
onChange(content);
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
cm.on('change', onChangeHandler);
|
|
|
return function () {
|
|
|
cm.off('change', onChangeHandler);
|
|
|
};
|
|
|
}
|
|
|
}, [cm, onChange]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (cm) {
|
|
|
// isFocus && cm.focus()
|
|
|
if (defaultValue === null || defaultValue === undefined) {
|
|
|
cm.setValue('');
|
|
|
setValue('');
|
|
|
} else {
|
|
|
var scrollTop = window.scrollY || window.pageYOffset;
|
|
|
if (defaultValue !== cm.getValue()) {
|
|
|
cm.setValue(defaultValue);
|
|
|
setValue(defaultValue);
|
|
|
cm.setCursor(disabled ? 1 : cm.lineCount(), 0);
|
|
|
window.scrollTo(0, scrollTop);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}, [cm, defaultValue]);
|
|
|
var onActionCallback = (0,react.useCallback)(function (actionName) {
|
|
|
var cursor = cm.getCursor();
|
|
|
var selection = cm.getSelection();
|
|
|
var selectionText = selection.split('\n');
|
|
|
switch (actionName) {
|
|
|
case 'bold':
|
|
|
cm.replaceSelection('**' + selection + '**');
|
|
|
if (selection === '') {
|
|
|
cm.setCursor(cursor.line, cursor.ch + 2);
|
|
|
}
|
|
|
return cm.focus();
|
|
|
case 'italic':
|
|
|
cm.replaceSelection('*' + selection + '*');
|
|
|
if (selection === '') {
|
|
|
cm.setCursor(cursor.line, cursor.ch + 1);
|
|
|
}
|
|
|
return cm.focus();
|
|
|
case 'code':
|
|
|
cm.replaceSelection('`' + selection + '`');
|
|
|
if (selection === '') {
|
|
|
cm.setCursor(cursor.line, cursor.ch + 1);
|
|
|
}
|
|
|
return cm.focus();
|
|
|
case 'inline-latex':
|
|
|
cm.replaceSelection('`$$' + selection + '$$`');
|
|
|
if (selection === '') {
|
|
|
cm.setCursor(cursor.line, cursor.ch + 3);
|
|
|
}
|
|
|
return cm.focus();
|
|
|
case 'latex':
|
|
|
cm.replaceSelection("```latex\n" + selection + "\n```");
|
|
|
cm.setCursor(cursor.line + 1, selection.length + 1);
|
|
|
return cm.focus();
|
|
|
case 'line-break':
|
|
|
cm.replaceSelection('<br/>\n');
|
|
|
return cm.focus();
|
|
|
case 'list-ul':
|
|
|
if (selection === '') {
|
|
|
cm.replaceSelection('- ' + selection);
|
|
|
} else {
|
|
|
cm.replaceSelection(selectionText.map(function (item) {
|
|
|
return item === '' ? '' : "- ".concat(item);
|
|
|
}).join('\n'));
|
|
|
}
|
|
|
return cm.focus();
|
|
|
case 'list-ol':
|
|
|
if (selection === '') {
|
|
|
cm.replaceSelection('1. ' + selection);
|
|
|
} else {
|
|
|
cm.replaceSelection(selectionText.map(function (item, index) {
|
|
|
return item === '' ? '' : "".concat(index + 1, ". ").concat(item);
|
|
|
}).join('\n'));
|
|
|
}
|
|
|
return cm.focus();
|
|
|
case 'add-null-ch':
|
|
|
if (selection === '') {
|
|
|
cm.setCursor(cursor.line, cursor.ch);
|
|
|
}
|
|
|
cm.replaceSelection(NULL_CH);
|
|
|
return cm.focus();
|
|
|
case 'add-signal':
|
|
|
if (selection === '') {
|
|
|
cm.setCursor(cursor.line, cursor.ch);
|
|
|
}
|
|
|
cm.replaceSelection(ADD_SINGLE);
|
|
|
return cm.focus();
|
|
|
case 'add-multiple':
|
|
|
if (selection === '') {
|
|
|
cm.setCursor(cursor.line, cursor.ch);
|
|
|
}
|
|
|
cm.replaceSelection(ADD_MULTI);
|
|
|
return cm.focus();
|
|
|
case 'inster-template-1':
|
|
|
if (selection === '') {
|
|
|
cm.setCursor(cursor.line, cursor.ch);
|
|
|
}
|
|
|
cm.replaceSelection(TEMP1);
|
|
|
return cm.focus();
|
|
|
case 'eraser':
|
|
|
cm.setValue('');
|
|
|
return cm.focus();
|
|
|
case 'trigger-watch':
|
|
|
setPreview(!preview);
|
|
|
return cm.focus();
|
|
|
case 'trigger-full-screen':
|
|
|
setIsFull(!isFull);
|
|
|
return cm.focus();
|
|
|
case LINK:
|
|
|
setAction(LINK);
|
|
|
return;
|
|
|
case CODE_BLOCK:
|
|
|
setAction(CODE_BLOCK);
|
|
|
return;
|
|
|
case UPLOAD_IMAGE:
|
|
|
setAction(UPLOAD_IMAGE);
|
|
|
return;
|
|
|
case ADD_TABLE:
|
|
|
setAction(ADD_TABLE);
|
|
|
return;
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}, [cm, preview, isFull]);
|
|
|
var ExecutePluginAction = (0,react.useCallback)(function (values) {
|
|
|
setAction('');
|
|
|
switch (action) {
|
|
|
case LINK:
|
|
|
var title = values.title,
|
|
|
link = values.link;
|
|
|
cm.replaceSelection("[".concat(title, "](").concat(link, ")"));
|
|
|
return cm.focus();
|
|
|
case CODE_BLOCK:
|
|
|
var language = values.language,
|
|
|
content = values.content;
|
|
|
cm.replaceSelection(['```' + language, content, '```'].join('\n'));
|
|
|
return cm.focus();
|
|
|
case UPLOAD_IMAGE:
|
|
|
var src = values.src,
|
|
|
alt = values.alt;
|
|
|
if (alt) {
|
|
|
cm.replaceSelection(".concat(src, " \"").concat(alt, "\" )"));
|
|
|
} else {
|
|
|
cm.replaceSelection(""));
|
|
|
}
|
|
|
return cm.focus();
|
|
|
case ADD_TABLE:
|
|
|
var row = values.row,
|
|
|
col = values.col,
|
|
|
align = values.align;
|
|
|
var table = '\n';
|
|
|
for (var r = 0; r < row; r++) {
|
|
|
var rows = [];
|
|
|
var heads = [];
|
|
|
for (var c = 0; c < col; c++) {
|
|
|
if (r === 1) {
|
|
|
heads.push(ALIGNSIGN[align]);
|
|
|
}
|
|
|
rows.push(' ');
|
|
|
}
|
|
|
if (r === 1) {
|
|
|
table += "| ".concat(heads.join(' | '), " |\n");
|
|
|
}
|
|
|
table += "| ".concat(rows.join(col === 1 ? '' : ' | '), " |\n");
|
|
|
}
|
|
|
cm.replaceSelection(table + '\n');
|
|
|
return cm.focus();
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}, [cm, action]);
|
|
|
var PluginEl = (0,react.useMemo)(function () {
|
|
|
switch (action) {
|
|
|
case LINK:
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(markdown_editor_link, {
|
|
|
callback: ExecutePluginAction,
|
|
|
onCancel: onCancel
|
|
|
});
|
|
|
case CODE_BLOCK:
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(code_block/* default */.Z, {
|
|
|
callback: ExecutePluginAction,
|
|
|
onCancel: onCancel
|
|
|
});
|
|
|
case UPLOAD_IMAGE:
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(upload_image, {
|
|
|
callback: ExecutePluginAction,
|
|
|
onCancel: onCancel
|
|
|
});
|
|
|
case ADD_TABLE:
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(add_table_panel, {
|
|
|
callback: ExecutePluginAction,
|
|
|
onCancel: onCancel
|
|
|
});
|
|
|
default:
|
|
|
return null;
|
|
|
}
|
|
|
}, [action]);
|
|
|
function onCancel() {
|
|
|
setAction('');
|
|
|
}
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (resizeBarEl.current) {
|
|
|
var onMouseDown = function onMouseDown(e) {
|
|
|
dragging = true;
|
|
|
startY = e.pageY;
|
|
|
};
|
|
|
var onMouseUp = function onMouseUp() {
|
|
|
dragging = false;
|
|
|
};
|
|
|
var onMouseMove = function onMouseMove(e) {
|
|
|
if (dragging) {
|
|
|
var delta = e.pageY - startY;
|
|
|
if (delta < 0) {
|
|
|
delta = 0;
|
|
|
}
|
|
|
if (delta > 300) {
|
|
|
delta = 300;
|
|
|
}
|
|
|
var resizeH = height + delta + 'px';
|
|
|
setH(resizeH);
|
|
|
}
|
|
|
};
|
|
|
var resizeBar = resizeBarEl.current;
|
|
|
var dragging = false;
|
|
|
var startY = 0;
|
|
|
resizeBar.addEventListener('mousedown', onMouseDown);
|
|
|
document.addEventListener('mousemove', onMouseMove);
|
|
|
document.addEventListener('mouseup', onMouseUp);
|
|
|
return function () {
|
|
|
resizeBar.removeEventListener('mousedown', onMouseDown);
|
|
|
document.removeEventListener('mousemove', onMouseMove);
|
|
|
document.removeEventListener('mouseup', onMouseUp);
|
|
|
};
|
|
|
}
|
|
|
}, [cm, resizeBarEl]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
setH(height);
|
|
|
}, [height]);
|
|
|
var fixedWidth = processSize(width);
|
|
|
var fixedHeight = processSize(h);
|
|
|
var style = {
|
|
|
width: fixedWidth,
|
|
|
height: fixedHeight
|
|
|
};
|
|
|
var saveTime = (0,react.useMemo)(function () {
|
|
|
if (lastedUpdateTime) {
|
|
|
var d = new Date(lastedUpdateTime);
|
|
|
var _h = d.getHours();
|
|
|
var m = d.getMinutes();
|
|
|
var s = d.getSeconds();
|
|
|
_h = _h < 10 ? '0' + _h : _h;
|
|
|
m = m < 10 ? '0' + m : m;
|
|
|
s = s < 10 ? '0' + s : s;
|
|
|
return "".concat(_h, ":").concat(m, ":").concat(s);
|
|
|
}
|
|
|
return 0;
|
|
|
}, [lastedUpdateTime]);
|
|
|
var formatProgramFill = function formatProgramFill(str) {
|
|
|
var arr = [];
|
|
|
if (showNullProgramButton) {
|
|
|
var num = -1;
|
|
|
str = str.replace(/(@▁▁@|@▁@)/g, function (a, b, c) {
|
|
|
arr.push({
|
|
|
multiLine: !(a === ADD_SINGLE)
|
|
|
});
|
|
|
});
|
|
|
}
|
|
|
return arr;
|
|
|
};
|
|
|
function onCancelStorage() {
|
|
|
window.sessionStorage.removeItem(id);
|
|
|
setTip(false);
|
|
|
setLastedUpdateTime(0);
|
|
|
}
|
|
|
function onReset() {
|
|
|
setTip(false);
|
|
|
setLastedUpdateTime(0);
|
|
|
cm.setValue(window.sessionStorage.getItem(id));
|
|
|
}
|
|
|
function setValues(a, b) {
|
|
|
var content = cm.getValue();
|
|
|
content = content.replace(a, b);
|
|
|
setValue(content);
|
|
|
cm === null || cm === void 0 ? void 0 : cm.setValue(content);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "markdown-editor-wrapper",
|
|
|
ref: containerEl,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "markdown-editor-container ".concat(className, " ").concat(preview ? 'on-preview' : '', " ").concat(miniToolbar ? 'mini' : '', " ").concat(isFull ? 'full-screen' : ''),
|
|
|
style: style,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(toolbar, {
|
|
|
insertTemp: insertTemp,
|
|
|
watch: preview,
|
|
|
fullScreen: isFull,
|
|
|
showNullButton: showNullButton,
|
|
|
showNullProgramButton: showNullProgramButton,
|
|
|
onActionCallback: onActionCallback,
|
|
|
hidetoolBar: hidetoolBar,
|
|
|
uuid: uuidRef.current,
|
|
|
setOpenPhones: function setOpenPhones() {
|
|
|
openPhoneRef.current = true;
|
|
|
}
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "markdown-editor-body",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "codemirror-container",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("textarea", {
|
|
|
ref: cmEl,
|
|
|
placeholder: placeholder
|
|
|
})
|
|
|
}), preview ? /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
ref: previewEl,
|
|
|
className: "preview-container",
|
|
|
children: [mode === "stex" && /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml_stex, {
|
|
|
value: value
|
|
|
}), mode !== "stex" && /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
disabledFill: disabledFill,
|
|
|
showProgramFill: showNullProgramButton,
|
|
|
value: value
|
|
|
})]
|
|
|
}) : null]
|
|
|
})]
|
|
|
})
|
|
|
}), showResizeBar ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
ref: resizeBarEl,
|
|
|
className: "editor-resize"
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
children: TitleDesc[action] ? /*#__PURE__*/(0,jsx_runtime.jsx)(es_modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
title: TitleDesc[action],
|
|
|
open: true,
|
|
|
onCancel: onCancel,
|
|
|
footer: null,
|
|
|
className: "markdown-popup-form",
|
|
|
children: PluginEl
|
|
|
}) : null
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 12264:
|
|
|
/*!**********************************!*\
|
|
|
!*** ./src/components/modal.tsx ***!
|
|
|
\**********************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ "Z": function() { return /* binding */ Dialog; }
|
|
|
/* harmony export */ });
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/classCallCheck.js */ 56690);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/createClass.js */ 89728);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_inherits_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/inherits.js */ 61655);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_inherits_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_inherits_js__WEBPACK_IMPORTED_MODULE_2__);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_createSuper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/createSuper.js */ 26389);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_createSuper_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_createSuper_js__WEBPACK_IMPORTED_MODULE_3__);
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react */ 67294);
|
|
|
/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react-dom */ 73935);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Dialog = /*#__PURE__*/function (_React$Component) {
|
|
|
_root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_inherits_js__WEBPACK_IMPORTED_MODULE_2___default()(Dialog, _React$Component);
|
|
|
var _super = _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_createSuper_js__WEBPACK_IMPORTED_MODULE_3___default()(Dialog);
|
|
|
function Dialog(props) {
|
|
|
var _this;
|
|
|
_root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_classCallCheck_js__WEBPACK_IMPORTED_MODULE_0___default()(this, Dialog);
|
|
|
_this = _super.call(this, props);
|
|
|
var doc = window.document;
|
|
|
_this.node = doc.createElement('div');
|
|
|
doc.body.appendChild(_this.node);
|
|
|
return _this;
|
|
|
}
|
|
|
_root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_createClass_js__WEBPACK_IMPORTED_MODULE_1___default()(Dialog, [{
|
|
|
key: "render",
|
|
|
value: function render() {
|
|
|
var children = this.props.children;
|
|
|
return /*#__PURE__*/(0,react_dom__WEBPACK_IMPORTED_MODULE_5__.createPortal)(children, this.node);
|
|
|
}
|
|
|
}, {
|
|
|
key: "componentWillUnmount",
|
|
|
value: function componentWillUnmount() {
|
|
|
window.document.body.removeChild(this.node);
|
|
|
}
|
|
|
}]);
|
|
|
return Dialog;
|
|
|
}(react__WEBPACK_IMPORTED_MODULE_4__.Component);
|
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 61891:
|
|
|
/*!****************************************!*\
|
|
|
!*** ./src/components/useInterval.tsx ***!
|
|
|
\****************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ "Z": function() { return /* binding */ useInterval; }
|
|
|
/* harmony export */ });
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 67294);
|
|
|
|
|
|
function useInterval(callback, delay) {
|
|
|
var savedCallback = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();
|
|
|
|
|
|
// 保存新回调
|
|
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
|
|
|
savedCallback.current = callback;
|
|
|
});
|
|
|
|
|
|
// 建立 interval
|
|
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {
|
|
|
function tick() {
|
|
|
savedCallback.current();
|
|
|
}
|
|
|
if (delay !== null) {
|
|
|
var id = setInterval(tick, delay);
|
|
|
return function () {
|
|
|
return clearInterval(id);
|
|
|
};
|
|
|
}
|
|
|
}, [delay]);
|
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 15497:
|
|
|
/*!*****************************************************************************!*\
|
|
|
!*** ./src/pages/Shixuns/Edit/body/Environment/Label/index.tsx + 1 modules ***!
|
|
|
\*****************************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ Environment_Label; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
|
var react = __webpack_require__(67294);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Shixuns/Edit/body/Environment/Label/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var Labelmodules = ({"label":"label___CZ1_z","left":"left___ZKFRV","right":"right___zVTRn","error":"error___oNJNo"});
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/tooltip/index.js + 3 modules
|
|
|
var tooltip = __webpack_require__(83062);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(85893);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Shixuns/Edit/body/Environment/Label/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Label = function Label(_ref) {
|
|
|
var name = _ref.name,
|
|
|
tooltipTitle = _ref.tooltipTitle,
|
|
|
children = _ref.children,
|
|
|
required = _ref.required,
|
|
|
errorKey = _ref.errorKey,
|
|
|
errorValue = _ref.errorValue,
|
|
|
errorName = _ref.errorName,
|
|
|
_ref$errorStyle = _ref.errorStyle,
|
|
|
errorStyle = _ref$errorStyle === void 0 ? {} : _ref$errorStyle,
|
|
|
_ref$nameWidth = _ref.nameWidth,
|
|
|
nameWidth = _ref$nameWidth === void 0 ? 112 : _ref$nameWidth,
|
|
|
_ref$align = _ref.align,
|
|
|
align = _ref$align === void 0 ? 'center' : _ref$align,
|
|
|
_ref$contentStyle = _ref.contentStyle,
|
|
|
contentStyle = _ref$contentStyle === void 0 ? {} : _ref$contentStyle;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(react.Fragment, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Labelmodules.label,
|
|
|
style: {
|
|
|
alignItems: align
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Labelmodules.left,
|
|
|
style: {
|
|
|
width: nameWidth
|
|
|
},
|
|
|
children: [required && /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "*"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: name
|
|
|
}), !!tooltipTitle && /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: tooltipTitle,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-xiaowenhao2"
|
|
|
})
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Labelmodules.right,
|
|
|
style: contentStyle,
|
|
|
children: [children, errorName && errorValue === errorKey && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Labelmodules.error,
|
|
|
style: errorStyle,
|
|
|
children: errorName
|
|
|
})]
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var Environment_Label = (Label);
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 33508:
|
|
|
/*!*************************************************************************************!*\
|
|
|
!*** ./src/pages/Shixuns/Edit/body/Environment/MarkdownModal/index.tsx + 1 modules ***!
|
|
|
\*************************************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ Environment_MarkdownModal; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/slicedToArray.js
|
|
|
var slicedToArray = __webpack_require__(27424);
|
|
|
var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
|
var react = __webpack_require__(67294);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Shixuns/Edit/body/Environment/MarkdownModal/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var MarkdownModalmodules = ({"mirrorModal":"mirrorModal___Pi3tF","right":"right___Hot5f","title":"title___jjMKh","content":"content___BmOkD","des":"des___oGTUM","modal":"modal___yy3VB"});
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/modal/index.js + 39 modules
|
|
|
var modal = __webpack_require__(72423);
|
|
|
// EXTERNAL MODULE: ./src/components/RenderHtml/index.tsx + 1 modules
|
|
|
var RenderHtml = __webpack_require__(12768);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(85893);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Shixuns/Edit/body/Environment/MarkdownModal/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var MarkdownModal = function MarkdownModal(_ref) {
|
|
|
var title = _ref.title,
|
|
|
children = _ref.children,
|
|
|
value = _ref.value;
|
|
|
var _useState = (0,react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
visible = _useState2[0],
|
|
|
setVisible = _useState2[1];
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
onClick: function onClick() {
|
|
|
return setVisible(true);
|
|
|
},
|
|
|
children: children
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(modal/* default */.Z, {
|
|
|
title: title,
|
|
|
open: visible,
|
|
|
width: 1000,
|
|
|
destroyOnClose: true,
|
|
|
centered: true,
|
|
|
onCancel: function onCancel() {
|
|
|
return setVisible(false);
|
|
|
},
|
|
|
className: MarkdownModalmodules.modal,
|
|
|
footer: null,
|
|
|
children: [typeof value === 'string' && /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
value: value || ''
|
|
|
}), Object.prototype.toString.call(value) === '[object Array]' && /*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment, {
|
|
|
children: value === null || value === void 0 ? void 0 : value.map(function (e, i) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
children: e.name || e.type_name
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
value: e.description || ''
|
|
|
})]
|
|
|
}, i);
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var Environment_MarkdownModal = (MarkdownModal);
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 57944:
|
|
|
/*!***************************************************************************!*\
|
|
|
!*** ./src/pages/Shixuns/New/components/ApplyModal/index.tsx + 1 modules ***!
|
|
|
\***************************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ components_ApplyModal; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/regeneratorRuntime.js
|
|
|
var regeneratorRuntime = __webpack_require__(17061);
|
|
|
var regeneratorRuntime_default = /*#__PURE__*/__webpack_require__.n(regeneratorRuntime);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/asyncToGenerator.js
|
|
|
var asyncToGenerator = __webpack_require__(17156);
|
|
|
var asyncToGenerator_default = /*#__PURE__*/__webpack_require__.n(asyncToGenerator);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/slicedToArray.js
|
|
|
var slicedToArray = __webpack_require__(27424);
|
|
|
var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js
|
|
|
var objectWithoutProperties = __webpack_require__(70215);
|
|
|
var objectWithoutProperties_default = /*#__PURE__*/__webpack_require__.n(objectWithoutProperties);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
|
var react = __webpack_require__(67294);
|
|
|
// EXTERNAL MODULE: ./src/.umi-production/exports.ts
|
|
|
var _umi_production_exports = __webpack_require__(88275);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/input/index.js + 5 modules
|
|
|
var input = __webpack_require__(79531);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/form/index.js + 17 modules
|
|
|
var es_form = __webpack_require__(25159);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/modal/index.js + 39 modules
|
|
|
var modal = __webpack_require__(72423);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/message/index.js + 4 modules
|
|
|
var message = __webpack_require__(2453);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/upload/index.js + 24 modules
|
|
|
var upload = __webpack_require__(31365);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/button/index.js
|
|
|
var es_button = __webpack_require__(71577);
|
|
|
// EXTERNAL MODULE: ./src/utils/env.ts + 1 modules
|
|
|
var env = __webpack_require__(59758);
|
|
|
// EXTERNAL MODULE: ./src/assets/images/qrCode.png
|
|
|
var qrCode = __webpack_require__(55351);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Shixuns/New/components/ApplyModal/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var ApplyModalmodules = ({"flexRow":"flexRow___JBN3B","flexColumn":"flexColumn___zXgFj","formWrap":"formWrap___aNgan","upload":"upload___yGdLQ","color0152d9":"color0152d9___zzEpS","colorCCC":"colorCCC___k4Dxq","footerWrap":"footerWrap___WrUZd","qrCode":"qrCode___GPwSg","a1":"a1___R6etl","code":"code___fCL_L","group":"group___n7tgy","groupNumber":"groupNumber___tw7hA","a2":"a2___GGjDE"});
|
|
|
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(85893);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Shixuns/New/components/ApplyModal/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _excluded = ["newShixuns", "globalSetting", "loading", "dispatch"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var TextArea = input/* default.TextArea */.Z.TextArea;
|
|
|
var ApplyModal = function ApplyModal(_ref) {
|
|
|
var newShixuns = _ref.newShixuns,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
dispatch = _ref.dispatch,
|
|
|
props = objectWithoutProperties_default()(_ref, _excluded);
|
|
|
var _Form$useForm = es_form/* default.useForm */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
var _useState = (0,react.useState)([]),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
fileList = _useState2[0],
|
|
|
setFileList = _useState2[1];
|
|
|
var handleFileChange = function handleFileChange(info) {
|
|
|
var statusList = ["uploading", "done", "removed"];
|
|
|
if (statusList.includes(info.file.status)) {
|
|
|
setFileList(info.fileList);
|
|
|
}
|
|
|
};
|
|
|
var handleFileRemove = function handleFileRemove(file) {
|
|
|
if (!file.percent || file.percent == 100) {
|
|
|
var _file$response;
|
|
|
var id = (_file$response = file.response) === null || _file$response === void 0 ? void 0 : _file$response.id;
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
centered: true,
|
|
|
title: '确定要删除这个附件吗?',
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
onOk: function () {
|
|
|
var _onOk = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return dispatch({
|
|
|
type: 'newShixuns/deleteAttachment',
|
|
|
payload: {
|
|
|
id: id
|
|
|
}
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
res && setFileList(fileList.filter(function (item) {
|
|
|
var _item$response;
|
|
|
return ((_item$response = item.response) === null || _item$response === void 0 ? void 0 : _item$response.id) !== id;
|
|
|
}));
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
function onOk() {
|
|
|
return _onOk.apply(this, arguments);
|
|
|
}
|
|
|
return onOk;
|
|
|
}()
|
|
|
});
|
|
|
return false;
|
|
|
}
|
|
|
};
|
|
|
var handleFileBeforeUpload = function handleFileBeforeUpload(file) {
|
|
|
if (fileList.length) {
|
|
|
return false;
|
|
|
}
|
|
|
var is150M = file.size / 1024 / 1024 > 50;
|
|
|
if (is150M) {
|
|
|
message/* default.info */.ZP.info('文件大小必须小于50MB');
|
|
|
return false;
|
|
|
}
|
|
|
return true;
|
|
|
};
|
|
|
var handleFinish = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2(values) {
|
|
|
var _fileList$, _fileList$$response;
|
|
|
var _ref3, language, runtime, run_method, code, res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
_ref3 = values || {}, language = _ref3.language, runtime = _ref3.env, run_method = _ref3.mode, code = _ref3.code;
|
|
|
_context2.next = 3;
|
|
|
return dispatch({
|
|
|
type: 'newShixuns/applyShixunMirror',
|
|
|
payload: {
|
|
|
language: language,
|
|
|
runtime: runtime,
|
|
|
run_method: run_method,
|
|
|
attachment_id: fileList === null || fileList === void 0 ? void 0 : (_fileList$ = fileList[0]) === null || _fileList$ === void 0 ? void 0 : (_fileList$$response = _fileList$.response) === null || _fileList$$response === void 0 ? void 0 : _fileList$$response.id
|
|
|
}
|
|
|
});
|
|
|
case 3:
|
|
|
res = _context2.sent;
|
|
|
dispatch({
|
|
|
type: 'newShixuns/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
if (res) {
|
|
|
message/* default.success */.ZP.success("新建申请已提交,请等待管理员审核。");
|
|
|
}
|
|
|
case 6:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function handleFinish(_x) {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleAfterClose = function handleAfterClose() {
|
|
|
form.resetFields();
|
|
|
setFileList([]);
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
keyboard: false,
|
|
|
closable: false,
|
|
|
destroyOnClose: true,
|
|
|
open: newShixuns.actionTabs.key === 'NewShixuns-Apply',
|
|
|
title: "\u7533\u8BF7\u65B0\u5EFA",
|
|
|
width: "1000px",
|
|
|
footer: null,
|
|
|
afterClose: handleAfterClose,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("section", {
|
|
|
className: ApplyModalmodules.qrCode,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("aside", {
|
|
|
className: ApplyModalmodules.a1,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: ApplyModalmodules.code,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
width: 120,
|
|
|
height: 120,
|
|
|
src: qrCode,
|
|
|
alt: "\u4E8C\u7EF4\u7801"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: ApplyModalmodules.group,
|
|
|
children: "\u5B9E\u9A8C\u73AF\u5883\u7533\u8BF7QQ\u7FA4"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: ApplyModalmodules.groupNumber,
|
|
|
children: "\u7FA4\u53F7\uFF1A740157011"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("aside", {
|
|
|
className: ApplyModalmodules.a2,
|
|
|
children: ["\u5C0A\u656C\u7684\u8001\u5E08/\u540C\u5B66\u60A8\u597D\uFF0C", /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), "\u5982\u679C\u60A8\u60F3\u65B0\u5EFA\u5B9E\u9A8C\u73AF\u5883\uFF0C\u53EF\u4EE5\u626B\u63CF\u5DE6\u4FA7\u4E8C\u7EF4\u7801\u8FDB\u7FA4\uFF0C\u76F4\u63A5\u5411\u6211\u4EEC\u7684\u5DE5\u4F5C\u4EBA\u5458\u7533\u8BF7\u54E6~ \u4E5F\u53EF\u4EE5\u63D0\u4EA4\u4E0B\u9762\u7684\u8868\u5355\u7533\u8BF7\uFF0C\u6211\u4EEC\u7684\u5DE5\u4F5C\u4EBA\u5458\u6536\u5230\u7533\u8BF7\u4FE1\u606F\u5C06\u4F1A\u7B2C\u4E00\u65F6\u95F4\u8054\u7CFB\u60A8\uFF01"]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, {
|
|
|
className: ApplyModalmodules.formWrap,
|
|
|
form: form,
|
|
|
labelCol: {
|
|
|
span: 4
|
|
|
},
|
|
|
wrapperCol: {
|
|
|
span: 20
|
|
|
},
|
|
|
onFinish: handleFinish,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u8BED\u8A00\uFF1A",
|
|
|
name: "language",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请填写该镜像语言'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(TextArea, {
|
|
|
placeholder: "\u8BF7\u586B\u5199\u8BE5\u955C\u50CF\u662F\u57FA\u4E8E\u4EC0\u4E48\u8BED\u8A00\uFF1A\u793A\u4F8B\uFF1APython",
|
|
|
rows: 4
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u7CFB\u7EDF\u73AF\u5883\uFF1A",
|
|
|
name: "env",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请填写该镜像语言系统环境'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(TextArea, {
|
|
|
placeholder: "\u8BF7\u586B\u5199\u8BE5\u955C\u50CF\u662F\u57FA\u4E8E\u4EC0\u4E48linux\u7CFB\u7EDF\u73AF\u5883,\u4EE3\u7801\u8FD0\u884C\u73AF\u5883",
|
|
|
rows: 4
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u6D4B\u8BD5\u4EE3\u7801\u8FD0\u884C\u65B9\u5F0F\uFF1A",
|
|
|
name: "mode",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请填写该镜像测试代码运行方式'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(TextArea, {
|
|
|
placeholder: "\u8BF7\u586B\u5199\u8BE5\u955C\u50CF\u4E2D\u6D4B\u8BD5\u4EE3\u7801\u8FD0\u884C\u65B9\u5F0F",
|
|
|
rows: 4
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u6D4B\u8BD5\u4EE3\u7801\uFF1A",
|
|
|
name: "code",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请上传附件'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: ApplyModalmodules.upload,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(upload/* default */.Z, {
|
|
|
fileList: fileList,
|
|
|
action: "".concat(env/* default.API_SERVER */.Z.API_SERVER, "/api/attachments.json?client_key=6d57f8c3dd186c5ada392546ace9620a"),
|
|
|
onChange: handleFileChange,
|
|
|
onRemove: handleFileRemove,
|
|
|
beforeUpload: handleFileBeforeUpload,
|
|
|
withCredentials: true,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "".concat(ApplyModalmodules.color0152d9, " current"),
|
|
|
children: "\u4E0A\u4F20\u9644\u4EF6"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "".concat(ApplyModalmodules.colorCCC, " ml10"),
|
|
|
children: "(\u5355\u4E2A\u6587\u4EF650M\u4EE5\u5185)"
|
|
|
})]
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: ApplyModalmodules.footerWrap,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default.Item */.Z.Item, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
className: "mr5",
|
|
|
size: 'middle',
|
|
|
onClick: function onClick() {
|
|
|
dispatch({
|
|
|
type: 'newShixuns/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
},
|
|
|
children: "\u53D6\u6D88"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
size: 'middle',
|
|
|
type: "primary",
|
|
|
htmlType: "submit",
|
|
|
loading: loading['newShixuns/applyShixunMirror'],
|
|
|
children: "\u4FDD\u5B58"
|
|
|
})]
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var components_ApplyModal = ((0,_umi_production_exports.connect)(function (_ref4) {
|
|
|
var newShixuns = _ref4.newShixuns,
|
|
|
loading = _ref4.loading,
|
|
|
globalSetting = _ref4.globalSetting;
|
|
|
return {
|
|
|
newShixuns: newShixuns,
|
|
|
globalSetting: globalSetting,
|
|
|
loading: loading.effects
|
|
|
};
|
|
|
})(ApplyModal));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 88654:
|
|
|
/*!**********************************************************************!*\
|
|
|
!*** ./src/pages/Shixuns/New/components/CreateEnvironment/index.tsx ***!
|
|
|
\**********************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/slicedToArray.js */ 27424);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ 67294);
|
|
|
/* harmony import */ var umi__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! umi */ 88275);
|
|
|
/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! antd */ 72423);
|
|
|
/* harmony import */ var _assets_images_qrCode_png__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/assets/images/qrCode.png */ 55351);
|
|
|
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 85893);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var CreateEnvironment = function CreateEnvironment(_ref) {
|
|
|
var _newShixuns$actionTab;
|
|
|
var newShixuns = _ref.newShixuns,
|
|
|
dispatch = _ref.dispatch,
|
|
|
user = _ref.user;
|
|
|
var _useState = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false),
|
|
|
_useState2 = _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_0___default()(_useState, 2),
|
|
|
isCreateModel = _useState2[0],
|
|
|
setIsCreateModel = _useState2[1];
|
|
|
(0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () {
|
|
|
if (newShixuns.actionTabs.key === 'Create-Environment') {
|
|
|
createImg();
|
|
|
}
|
|
|
}, [newShixuns === null || newShixuns === void 0 ? void 0 : (_newShixuns$actionTab = newShixuns.actionTabs) === null || _newShixuns$actionTab === void 0 ? void 0 : _newShixuns$actionTab.key]);
|
|
|
var cancelImg = function cancelImg() {
|
|
|
dispatch({
|
|
|
type: 'newShixuns/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
};
|
|
|
var createImg = function createImg() {
|
|
|
var _user$userInfo, _user$userInfo2, _user$userInfo4;
|
|
|
//判断 #0不能,1能,2每日上限
|
|
|
cancelImg(); //取消Key值
|
|
|
if (((_user$userInfo = user.userInfo) === null || _user$userInfo === void 0 ? void 0 : _user$userInfo.mirror_marker_status) === 0) {
|
|
|
setIsCreateModel(true);
|
|
|
} else if (((_user$userInfo2 = user.userInfo) === null || _user$userInfo2 === void 0 ? void 0 : _user$userInfo2.mirror_marker_status) === 1) {
|
|
|
var _user$userInfo3;
|
|
|
umi__WEBPACK_IMPORTED_MODULE_2__.history.push("/users/".concat((_user$userInfo3 = user.userInfo) === null || _user$userInfo3 === void 0 ? void 0 : _user$userInfo3.login, "/experiment-img/add"));
|
|
|
} else if (((_user$userInfo4 = user.userInfo) === null || _user$userInfo4 === void 0 ? void 0 : _user$userInfo4.mirror_marker_status) === 2) {
|
|
|
antd__WEBPACK_IMPORTED_MODULE_5__/* ["default"].confirm */ .Z.confirm({
|
|
|
title: '您今日已达到申请上限,是否跳转至云主机列表?',
|
|
|
content: '提示:每天最多允许申请一台云主机',
|
|
|
okText: '跳转',
|
|
|
cancelText: "取消",
|
|
|
onOk: function onOk() {
|
|
|
var _user$userInfo5;
|
|
|
umi__WEBPACK_IMPORTED_MODULE_2__.history.push("/users/".concat((_user$userInfo5 = user.userInfo) === null || _user$userInfo5 === void 0 ? void 0 : _user$userInfo5.login, "/experiment-img"));
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
};
|
|
|
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(antd__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
|
|
|
title: "\u52A0\u5165qq\u7FA4\u63D0\u793A",
|
|
|
open: isCreateModel,
|
|
|
footer: null,
|
|
|
onCancel: function onCancel() {
|
|
|
setIsCreateModel(false);
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", {
|
|
|
style: {
|
|
|
textAlign: 'center'
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("br", {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("img", {
|
|
|
width: 120,
|
|
|
height: 120,
|
|
|
style: {
|
|
|
marginTop: '20px'
|
|
|
},
|
|
|
src: _assets_images_qrCode_png__WEBPACK_IMPORTED_MODULE_3__,
|
|
|
alt: "\u4E8C\u7EF4\u7801"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("img", {})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ __webpack_exports__["Z"] = ((0,umi__WEBPACK_IMPORTED_MODULE_2__.connect)(function (_ref2) {
|
|
|
var newShixuns = _ref2.newShixuns,
|
|
|
user = _ref2.user,
|
|
|
globalSetting = _ref2.globalSetting;
|
|
|
return {
|
|
|
newShixuns: newShixuns,
|
|
|
globalSetting: globalSetting,
|
|
|
user: user
|
|
|
};
|
|
|
})(CreateEnvironment));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 21309:
|
|
|
/*!***********************************************************************!*\
|
|
|
!*** ./src/pages/User/Detail/ExperImentImg/Add/index.tsx + 6 modules ***!
|
|
|
\***********************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
// ESM COMPAT FLAG
|
|
|
__webpack_require__.r(__webpack_exports__);
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"default": function() { return /* binding */ Add; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/objectSpread2.js
|
|
|
var objectSpread2 = __webpack_require__(42122);
|
|
|
var objectSpread2_default = /*#__PURE__*/__webpack_require__.n(objectSpread2);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/regeneratorRuntime.js
|
|
|
var regeneratorRuntime = __webpack_require__(17061);
|
|
|
var regeneratorRuntime_default = /*#__PURE__*/__webpack_require__.n(regeneratorRuntime);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/asyncToGenerator.js
|
|
|
var asyncToGenerator = __webpack_require__(17156);
|
|
|
var asyncToGenerator_default = /*#__PURE__*/__webpack_require__.n(asyncToGenerator);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/slicedToArray.js
|
|
|
var slicedToArray = __webpack_require__(27424);
|
|
|
var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js
|
|
|
var objectWithoutProperties = __webpack_require__(70215);
|
|
|
var objectWithoutProperties_default = /*#__PURE__*/__webpack_require__.n(objectWithoutProperties);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
|
var react = __webpack_require__(67294);
|
|
|
// EXTERNAL MODULE: ./src/.umi-production/exports.ts
|
|
|
var _umi_production_exports = __webpack_require__(88275);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/message/index.js + 4 modules
|
|
|
var message = __webpack_require__(2453);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/modal/index.js + 39 modules
|
|
|
var modal = __webpack_require__(72423);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/tooltip/index.js + 3 modules
|
|
|
var tooltip = __webpack_require__(83062);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/button/index.js
|
|
|
var es_button = __webpack_require__(71577);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/row/index.js
|
|
|
var row = __webpack_require__(71230);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/input/index.js + 5 modules
|
|
|
var input = __webpack_require__(79531);
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/vnc-view/index.less
|
|
|
var vnc_view = __webpack_require__(45954);
|
|
|
// EXTERNAL MODULE: ./src/components/markdown-editor/index.tsx + 10 modules
|
|
|
var markdown_editor = __webpack_require__(55373);
|
|
|
// EXTERNAL MODULE: ./src/utils/fetch.ts
|
|
|
var fetch = __webpack_require__(84519);
|
|
|
;// CONCATENATED MODULE: ./src/pages/User/Detail/ExperImentImg/Add/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var Addmodules = ({"wrap":"wrap___ONdsC","content":"content___N0LEk","crumbs":"crumbs___ZMtFD","title":"title___zwDOY","upload":"upload___MSuSG","btn":"btn___VpNOC","activeBtn":"activeBtn___WARNi","head":"head___G0LuH","add":"add___ThO12","addDisable":"addDisable___ykVne","setting":"setting___ACQW6","tabs":"tabs___kF5MC","name":"name___APZDD","active":"active___hzqus","line":"line___DAGKO","resource":"resource___Gveup","mirror":"mirror___IBeiQ","interface":"interface___pzUyA","disabled":"disabled___d4p_T","port":"port___vS58L","grade":"grade___4_rtU","tabsBox":"tabsBox___DfBD9","tabTitle":"tabTitle___yxNTA","more":"more___hoice","system":"system___utj75","explain":"explain___ecqpL","btns":"btns___MTI71","template":"template___xdQbN","liWrap":"liWrap___z55nC","li":"li___GcxuL","tag":"tag___xVpLK","cpuWrap":"cpuWrap___Wi43O","activebtn":"activebtn___UamsA","activeTab":"activeTab___fzQvD","tab":"tab___UNT6N","disabledBtn":"disabledBtn___maLgB","doc":"doc___gT07l"});
|
|
|
// EXTERNAL MODULE: ./src/pages/Shixuns/Edit/body/Environment/Label/index.tsx + 1 modules
|
|
|
var Label = __webpack_require__(15497);
|
|
|
// EXTERNAL MODULE: ./src/components/ui-customization/index.tsx + 32 modules
|
|
|
var ui_customization = __webpack_require__(35567);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/empty/index.js + 3 modules
|
|
|
var empty = __webpack_require__(32983);
|
|
|
// EXTERNAL MODULE: ./src/service/shixuns.ts
|
|
|
var shixuns = __webpack_require__(56088);
|
|
|
// EXTERNAL MODULE: ./src/assets/images/noEnvData.png
|
|
|
var noEnvData = __webpack_require__(36723);
|
|
|
// EXTERNAL MODULE: ./src/components/RenderHtml/index.tsx + 1 modules
|
|
|
var RenderHtml = __webpack_require__(12768);
|
|
|
// EXTERNAL MODULE: ./src/components/SelectEnvironment/index.tsx + 1 modules
|
|
|
var SelectEnvironment = __webpack_require__(55335);
|
|
|
;// CONCATENATED MODULE: ./src/pages/User/Detail/ExperImentImg/components/MirrorModal/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var MirrorModalmodules = ({"mirrorModal":"mirrorModal___Or3Fz","right":"right___dmM3o","title":"title___qvx5b","content":"content___bgacR","des":"des___tTuzA","btns":"btns___AAZk3","confirm":"confirm___NIDd7","cancel":"cancel___oCK9D","modal":"modal___zo5el"});
|
|
|
// EXTERNAL MODULE: ./src/pages/Shixuns/New/components/ApplyModal/index.tsx + 1 modules
|
|
|
var ApplyModal = __webpack_require__(57944);
|
|
|
// EXTERNAL MODULE: ./src/pages/Shixuns/New/components/CreateEnvironment/index.tsx
|
|
|
var CreateEnvironment = __webpack_require__(88654);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(85893);
|
|
|
;// CONCATENATED MODULE: ./src/pages/User/Detail/ExperImentImg/components/MirrorModal/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var MirrorModal = function MirrorModal(_ref) {
|
|
|
var _newShixuns$actionTab, _ref3;
|
|
|
var newShixuns = _ref.newShixuns,
|
|
|
user = _ref.user,
|
|
|
dispatch = _ref.dispatch,
|
|
|
tab_type = _ref.tab_type,
|
|
|
visible = _ref.visible,
|
|
|
onOk = _ref.onOk,
|
|
|
onCancel = _ref.onCancel,
|
|
|
_ref$useId = _ref.useId,
|
|
|
useId = _ref$useId === void 0 ? null : _ref$useId,
|
|
|
identifier = _ref.identifier,
|
|
|
shixun_environment_id = _ref.shixun_environment_id;
|
|
|
var _useState = (0,react.useState)(null),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
activeId = _useState2[0],
|
|
|
setActiveId = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)({}),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
detail = _useState4[0],
|
|
|
setDetail = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)(""),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
keyword = _useState6[0],
|
|
|
setKeyword = _useState6[1];
|
|
|
var environmentData = newShixuns.environmentData;
|
|
|
var _environmentData$freq = environmentData.frequence_image,
|
|
|
frequence_image = _environmentData$freq === void 0 ? [] : _environmentData$freq,
|
|
|
_environmentData$envi = environmentData.environments,
|
|
|
environments = _environmentData$envi === void 0 ? [] : _environmentData$envi,
|
|
|
_environmentData$othe = environmentData.other_image,
|
|
|
other_image = _environmentData$othe === void 0 ? [] : _environmentData$othe;
|
|
|
var name = detail.name,
|
|
|
description = detail.description;
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (visible) {
|
|
|
dispatch({
|
|
|
type: 'newShixuns/getEnvironmentData',
|
|
|
payload: {
|
|
|
is_create_mirror: 1,
|
|
|
tab_type: tab_type
|
|
|
}
|
|
|
});
|
|
|
setKeyword("");
|
|
|
setActiveId(useId);
|
|
|
}
|
|
|
}, [visible, useId]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (newShixuns.actionTabs.key === 'NewShixuns-Apply') {
|
|
|
onCancel();
|
|
|
}
|
|
|
}, [newShixuns === null || newShixuns === void 0 ? void 0 : (_newShixuns$actionTab = newShixuns.actionTabs) === null || _newShixuns$actionTab === void 0 ? void 0 : _newShixuns$actionTab.key]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (activeId === null) return;
|
|
|
getData();
|
|
|
}, [activeId]);
|
|
|
var getData = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return (0,shixuns/* getEnvironmentDetail */.Q1)({
|
|
|
mirror_repository_id: activeId,
|
|
|
identifier: identifier,
|
|
|
shixun_environment_id: shixun_environment_id
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
setDetail(res.data);
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function getData() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
title: "\u9009\u62E9\u5B9E\u9A8C\u955C\u50CF",
|
|
|
open: visible,
|
|
|
width: 1000,
|
|
|
destroyOnClose: true,
|
|
|
centered: true,
|
|
|
onCancel: onCancel,
|
|
|
className: MirrorModalmodules.modal,
|
|
|
footer: null,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: MirrorModalmodules.mirrorModal,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(SelectEnvironment/* default */.Z, {
|
|
|
dispatch: dispatch,
|
|
|
value: activeId,
|
|
|
data: environments,
|
|
|
otherData: other_image,
|
|
|
tags: frequence_image,
|
|
|
onChange: function onChange(id) {
|
|
|
return setActiveId(id);
|
|
|
},
|
|
|
onSearchWord: function onSearchWord(value) {
|
|
|
return setKeyword(value);
|
|
|
},
|
|
|
hiddenCreateOnline: true,
|
|
|
tab_type: tab_type,
|
|
|
is_create_mirror: 1
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: MirrorModalmodules.right,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("header", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: MirrorModalmodules.title,
|
|
|
children: ["\u5B9E\u9A8C\u73AF\u5883:\xA0", /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
dangerouslySetInnerHTML: {
|
|
|
__html: activeId === null ? '— —' : (_ref3 = name || "") === null || _ref3 === void 0 ? void 0 : _ref3.replace(new RegExp(keyword === null || keyword === void 0 ? void 0 : keyword.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "gi"), '<span style="color:#0152d9;background-color:#1890ff33">$&</span>')
|
|
|
}
|
|
|
})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: MirrorModalmodules.content,
|
|
|
children: [activeId === null && /*#__PURE__*/(0,jsx_runtime.jsx)(empty/* default */.Z, {
|
|
|
image: noEnvData,
|
|
|
description: "\u8BF7\u9009\u62E9\u5B9E\u9A8C\u73AF\u5883"
|
|
|
}), activeId !== null && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: MirrorModalmodules.des,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
value: description,
|
|
|
highlightKeywords: keyword
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: MirrorModalmodules.btns,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
onClick: function onClick() {
|
|
|
setActiveId(null);
|
|
|
setDetail({});
|
|
|
onCancel();
|
|
|
},
|
|
|
className: MirrorModalmodules.cancel,
|
|
|
children: "\u53D6\u6D88 "
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
onClick: function onClick() {
|
|
|
onOk(detail);
|
|
|
},
|
|
|
className: MirrorModalmodules.confirm,
|
|
|
type: "primary",
|
|
|
children: "\u4FDD\u5B58 "
|
|
|
})]
|
|
|
})]
|
|
|
})]
|
|
|
})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(ApplyModal/* default */.Z, {}), /*#__PURE__*/(0,jsx_runtime.jsx)(CreateEnvironment/* default */.Z, {})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var components_MirrorModal = ((0,_umi_production_exports.connect)(function (_ref4) {
|
|
|
var newShixuns = _ref4.newShixuns,
|
|
|
globalSetting = _ref4.globalSetting,
|
|
|
user = _ref4.user;
|
|
|
return {
|
|
|
newShixuns: newShixuns,
|
|
|
globalSetting: globalSetting,
|
|
|
user: user
|
|
|
};
|
|
|
})(MirrorModal));
|
|
|
// EXTERNAL MODULE: ./src/pages/Shixuns/Edit/body/Environment/MarkdownModal/index.tsx + 1 modules
|
|
|
var MarkdownModal = __webpack_require__(33508);
|
|
|
;// CONCATENATED MODULE: ./src/assets/images/user/nodata.png
|
|
|
var nodata_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAABACAYAAABGHBTIAAAAAXNSR0IArs4c6QAABlFJREFUaEPtm2lsVFUUx3/nzUxHNsFqqXFvpcOqKEhLTIghkUSN0UT5YPADicagQRA1iiIKJu5RkbD4waAkJsbli7hEo8YYF2IpCCEE2oHGFlnaAQst7TDtzLxjXqHY0lnuG2dLnPtx3v+ce37n3HfenftmhCyP1apWx/r2JSryIFAl6D4R6621i8d/kuWpMnInGVmlMFq6of1dtfXh8yWWxRNrF1+6JtvzufWXVeBlG45PjtuxvYmCEOgtL6ssX71Iwm6DzKbeNfCyDaEb1NZrEwWhlsxR234sWYBiyXKxaU503S5j17pFlQmvFRR4yfq2dpTx2QzijC/5Yd2SynnZ9zvUY3+Fu8J6MzYTEdJWfOX7oTWKXpjtwLwe2friwvGb0vpVbAt2jR4tu9JqEwikK6yv2jbPmBqv2hw6ZauOMdWb6kb4rT9WLKiYYaoX4dGxo2SDqX5AJye7tQswBigaYNg3drRMyQRY3RjlCvgCv/XHcy4qjHBo3Ci50k3s/Z3iZLe6An5hc+iEql7kdqJ0+pF+a8ezCypmptOdu54v4D0tvbsOtvd1GgdmKJxWfcElV1X4phrKyVuFjQPKtTBfFc41h7H/ErBZqlw3LTO3eVCVKmyW5FKFzfJUBKrSkjYrQmlJm+WpCFS5WNI9vbQ2t2mL2vkH9HrgmkqpGeXnsoSz5wL4i212Yzyuk/KPe2ZGv1923DHDSvyFIhfAW363D9uqlxcK2OeVxjtnWYkTXgI2K0vKLv2/q/CX2+29sai6PkYxy3V61Qg/DbfN8MzKW9OK9NHWelwPYOPqVCQ9ioFCkKpKmVTm5ZK8ARuEVThJLppW4WgMZi4BGyQpk1NLM7d5UJUqbJbklM/hnggtB45qq5DVLi0TLpfqkWW4PkQfgpSLCn/ZYO+LxXSyWe7MVf4y2XHHzCR7ZFM3uQDO1U7L45HgXbVWwJQtb8/hEvB/Ksm/xplU+HQfhPsgHodovN9XuDvCJoQWLH6urWaniJy5kmKkbFpfNdh7ojGdls6J2+sjymTnbTOtG9PZRWPw9ynoioCd7hBCOCHKZp+PtTOqpTWZ75TAkRjtre26P5sbaa+FXF0hk31eypMFZSuEOqGzJ4PHgxBHeKfSy8qqKomcP0fRHeL1ReFQB/TF0tU/zdKFJsvH3bOqpWmwsqiAI1E4eAycCmdlCCGfl3kzq2X3gL+iAXYaUWsIYunuVbeZEEKWj+m1VdLmmBYNcOsxcDpxLobAj7UB5omIXRTAXWE4csIMVYQ9lvJyXJiPcq+ZFYhwf11APioK4Oa2c8/WIfFbQqPC1sEfqhLxBlgWDzIFYen5wKrcBFw/rDtDU22AKQUHdpaxs5wTDYG36ybKk6ZVdHT1QX1NleWJbDwWcwsO7DxvO7pTA9cH9S9VrhChVyGMMvArol+B6f2/MxP2zw5IIBWwJbxZcOCDxyHcmxR4i1hsUpsPVDiA8IDAWJTfgEPlQk3HCEZLmGcU7hFhma0sTHpvC/UFB25uB2cLmWJ84xHWzArI9/VNOl3hQ+C6s/pGy2JVbY18uv1PnRSLshmlLpkvEQ4VHDh4JPVGw7JY7BG+i8X778uFCr4EDelzKeMRjbJOlfkpgHsLDpysQw8KuhFhkyV4Uy0DG06J8pIq45LqhPaCAxtsOHb7vUOrFq+m5eIWPCftocdEvTF+giSvV51dlrBTOns0porHTevPpvZoB3SedudRvEz0wPhYjF9cWQofOxV2snKLK8Msik9F4PDf7hxmCmx5uE+6VSvjYZ5XxXkPm/YX8e5CM1JL8AhzbB1+j4rg/GGk4XwvI70sDytjibNi2AzKbIWJwz4XImPGUVEIwGGx1Af1dVWeTtB9M9lpbVTlkWG+hDfqArK8KIB/368XogRRKgcHem5nZbRQzogERqriH2IihBBqZtdIV1EAO8E1BPXWOHxLlhuoCM437LvrAvLV2YS4SF+Opdua9CEbNkLqZ66bMERYWheQdQM2RVPhgYAagjrPhs/UaUr/YQhE1eLx2TVD//lSdMAOo7MvjvexRSHTtxMtlof7ayfIkO/SRbekBxd0u6ovHmQRwlOqXGVY7CNYvDJmAu9NFUl4YFSUFR4Mp6qyrZm5YnO7Qp1CNVCO9p8/twkcxTkVUb6uDbA13duHfwA4Vw8Pu1GN2AAAAABJRU5ErkJggg==";
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/toConsumableArray.js
|
|
|
var toConsumableArray = __webpack_require__(861);
|
|
|
var toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/upload/index.js + 24 modules
|
|
|
var upload = __webpack_require__(31365);
|
|
|
;// CONCATENATED MODULE: ./src/components/NewSliceUpload/request.ts
|
|
|
|
|
|
|
|
|
|
|
|
var getMd5List = /*#__PURE__*/function () {
|
|
|
var _ref = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(urlPrefix, params) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
return _context.abrupt("return", (0,fetch/* default */.ZP)("".concat(urlPrefix, "/file/v3/getMd5List"), {
|
|
|
method: 'get',
|
|
|
params: params
|
|
|
}, false, true));
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function getMd5List(_x, _x2) {
|
|
|
return _ref.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var checkFileExists = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2(urlPrefix, params) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
return _context2.abrupt("return", (0,fetch/* default */.ZP)("".concat(urlPrefix, "/file/v3/fileExists"), {
|
|
|
method: 'get',
|
|
|
params: params
|
|
|
}, false, true));
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function checkFileExists(_x3, _x4) {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var prepareUpload = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3(urlPrefix, params) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
return _context3.abrupt("return", (0,fetch/* default */.ZP)("".concat(urlPrefix, "/file/v3/newFile"), {
|
|
|
method: 'post',
|
|
|
body: params
|
|
|
}, false, true));
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return function prepareUpload(_x5, _x6) {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var filePatchUpload = /*#__PURE__*/function () {
|
|
|
var _ref4 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4(urlPrefix, params) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
return _context4.abrupt("return", (0,fetch/* default */.ZP)("".concat(urlPrefix, "/file/v3/filePatchUpload"), {
|
|
|
method: 'post',
|
|
|
body: params
|
|
|
}, true, true));
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
}));
|
|
|
return function filePatchUpload(_x7, _x8) {
|
|
|
return _ref4.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var filePatchMerge = /*#__PURE__*/function () {
|
|
|
var _ref5 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee5(urlPrefix, params) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee5$(_context5) {
|
|
|
while (1) switch (_context5.prev = _context5.next) {
|
|
|
case 0:
|
|
|
return _context5.abrupt("return", (0,fetch/* default */.ZP)("".concat(urlPrefix, "/file/v3/filePatchMerge"), {
|
|
|
method: 'post',
|
|
|
body: params
|
|
|
}, true, true));
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context5.stop();
|
|
|
}
|
|
|
}, _callee5);
|
|
|
}));
|
|
|
return function filePatchMerge(_x9, _x10) {
|
|
|
return _ref5.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var downloadCheck = /*#__PURE__*/function () {
|
|
|
var _ref6 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee6(urlPrefix, params) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee6$(_context6) {
|
|
|
while (1) switch (_context6.prev = _context6.next) {
|
|
|
case 0:
|
|
|
return _context6.abrupt("return", (0,fetch/* default */.ZP)("".concat(urlPrefix, "/file/v3/downloadCheck"), {
|
|
|
method: 'get',
|
|
|
params: params
|
|
|
}, false, true));
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context6.stop();
|
|
|
}
|
|
|
}, _callee6);
|
|
|
}));
|
|
|
return function downloadCheck(_x11, _x12) {
|
|
|
return _ref6.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/components/NewSliceUpload/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Dragger = upload/* default.Dragger */.Z.Dragger;
|
|
|
var shardSize = 15 * 1024 * 1024;
|
|
|
|
|
|
|
|
|
//测试环境
|
|
|
// let api='https://testfu.educoder.net';
|
|
|
//线上地址
|
|
|
// let api='https://fu.educoder.net';
|
|
|
|
|
|
|
|
|
var UploadFile = function UploadFile(_ref) {
|
|
|
var user = _ref.user,
|
|
|
setloading = _ref.setloading,
|
|
|
uploading = _ref.uploading,
|
|
|
successCallback = _ref.successCallback,
|
|
|
url = _ref.url;
|
|
|
var _useState = (0,react.useState)([]),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
fileList = _useState2[0],
|
|
|
setFileList = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)(false),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
startFlag = _useState4[0],
|
|
|
setStartFlag = _useState4[1];
|
|
|
var uploadIndex = (0,react.useRef)(0);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if ((fileList === null || fileList === void 0 ? void 0 : fileList.length) > 0 && startFlag) {
|
|
|
startUpload(fileList === null || fileList === void 0 ? void 0 : fileList[0]);
|
|
|
}
|
|
|
}, [fileList, startFlag]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
return function () {
|
|
|
uploadIndex.current++; //取消上传
|
|
|
};
|
|
|
}, []);
|
|
|
var clearStatus = function clearStatus() {
|
|
|
setFileList([]);
|
|
|
uploadIndex.current++;
|
|
|
currentIndex.current = 0;
|
|
|
finishedCount.current = 0;
|
|
|
currentRate.current = 0;
|
|
|
sharedCount.current = 0;
|
|
|
};
|
|
|
var updatePercent = function updatePercent(id) {
|
|
|
var intervalId = setInterval(function () {
|
|
|
downloadCheck(url, {
|
|
|
id: id
|
|
|
}).then(function (res) {
|
|
|
var _res$data, _res$data$;
|
|
|
if (res.status === '000000' && ((_res$data = res.data) === null || _res$data === void 0 ? void 0 : (_res$data$ = _res$data[0]) === null || _res$data$ === void 0 ? void 0 : _res$data$.isDownload) === 1) {
|
|
|
var _res$data2;
|
|
|
fileList[0]['percent'] = 100;
|
|
|
fileList[0]['status'] = 'success';
|
|
|
setFileList(toConsumableArray_default()(fileList));
|
|
|
// setloading(100)
|
|
|
message/* default.info */.ZP.info('上传成功');
|
|
|
successCallback(res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2[0]);
|
|
|
clearInterval(intervalId);
|
|
|
}
|
|
|
if (res.status !== '000000') {
|
|
|
clearStatus();
|
|
|
}
|
|
|
});
|
|
|
}, 2000);
|
|
|
};
|
|
|
var startUpload = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(file) {
|
|
|
var _user$userInfo;
|
|
|
var patchNum, uploadCurrentIndex, md5Res, _md5Res$data, _md5Res$data$, _md5Res$data2, _md5Res$data2$, _user$userInfo2, fileExistRes, _fileExistRes$data, _fileExistRes$data$, _md5Res$data3, _md5Res$data3$, _md5Res$data4, _md5Res$data4$, _md5Res$data4$$md5Lis, _fileExistRes$data2, _fileExistRes$data3, _fileExistRes$data3$, _fileExistRes$data5, _fileExistRes$data6, _fileExistRes$data6$, _user$userInfo3, _md5Res$data6, _md5Res$data6$, _newFileRes$data, parentId, _fileExistRes$data4, _fileExistRes$data4$, _fileExistRes$data7, _fileExistRes$data7$, _md5Res$data5, _md5Res$data5$, newFileRes, _newFileRes$data2, _newFileRes$data2$, _md5Res$data7, _md5Res$data7$;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
patchNum = Math.ceil(file.size / shardSize);
|
|
|
uploadCurrentIndex = uploadIndex.current + 1;
|
|
|
uploadIndex.current = uploadCurrentIndex;
|
|
|
setStartFlag(false);
|
|
|
fileList[0]['status'] = 'uploading';
|
|
|
//获取md5列表
|
|
|
_context.next = 7;
|
|
|
return getMd5List(url, {
|
|
|
filename: file.name,
|
|
|
userId: (_user$userInfo = user.userInfo) === null || _user$userInfo === void 0 ? void 0 : _user$userInfo.login,
|
|
|
size: file.size,
|
|
|
patchNum: patchNum,
|
|
|
lastModified: "".concat(file.lastModified)
|
|
|
});
|
|
|
case 7:
|
|
|
md5Res = _context.sent;
|
|
|
if (!(md5Res.status === '000000')) {
|
|
|
_context.next = 41;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 11;
|
|
|
return checkFileExists(url, {
|
|
|
md5: ((_md5Res$data = md5Res.data) === null || _md5Res$data === void 0 ? void 0 : (_md5Res$data$ = _md5Res$data[0]) === null || _md5Res$data$ === void 0 ? void 0 : _md5Res$data$.fmd5) || ((_md5Res$data2 = md5Res.data) === null || _md5Res$data2 === void 0 ? void 0 : (_md5Res$data2$ = _md5Res$data2[0]) === null || _md5Res$data2$ === void 0 ? void 0 : _md5Res$data2$.md5),
|
|
|
size: file.size,
|
|
|
dirName: (_user$userInfo2 = user.userInfo) === null || _user$userInfo2 === void 0 ? void 0 : _user$userInfo2.login,
|
|
|
lastModified: "".concat(file.lastModified)
|
|
|
});
|
|
|
case 11:
|
|
|
fileExistRes = _context.sent;
|
|
|
if (!(fileExistRes.status === '000000')) {
|
|
|
_context.next = 38;
|
|
|
break;
|
|
|
}
|
|
|
if (!(uploadIndex.current !== uploadCurrentIndex)) {
|
|
|
_context.next = 15;
|
|
|
break;
|
|
|
}
|
|
|
return _context.abrupt("return");
|
|
|
case 15:
|
|
|
parentId = (_fileExistRes$data = fileExistRes.data) === null || _fileExistRes$data === void 0 ? void 0 : (_fileExistRes$data$ = _fileExistRes$data[0]) === null || _fileExistRes$data$ === void 0 ? void 0 : _fileExistRes$data$.id;
|
|
|
if (!(Array.isArray((_md5Res$data3 = md5Res.data) === null || _md5Res$data3 === void 0 ? void 0 : (_md5Res$data3$ = _md5Res$data3[0]) === null || _md5Res$data3$ === void 0 ? void 0 : _md5Res$data3$.md5List) && !((_md5Res$data4 = md5Res.data) !== null && _md5Res$data4 !== void 0 && (_md5Res$data4$ = _md5Res$data4[0]) !== null && _md5Res$data4$ !== void 0 && (_md5Res$data4$$md5Lis = _md5Res$data4$.md5List) !== null && _md5Res$data4$$md5Lis !== void 0 && _md5Res$data4$$md5Lis.length))) {
|
|
|
_context.next = 19;
|
|
|
break;
|
|
|
}
|
|
|
mergePatch(parentId, file, patchNum);
|
|
|
return _context.abrupt("return");
|
|
|
case 19:
|
|
|
if (!(((_fileExistRes$data2 = fileExistRes.data) === null || _fileExistRes$data2 === void 0 ? void 0 : _fileExistRes$data2.length) > 0 && ((_fileExistRes$data3 = fileExistRes.data) === null || _fileExistRes$data3 === void 0 ? void 0 : (_fileExistRes$data3$ = _fileExistRes$data3[0]) === null || _fileExistRes$data3$ === void 0 ? void 0 : _fileExistRes$data3$.type) === 1)) {
|
|
|
_context.next = 26;
|
|
|
break;
|
|
|
}
|
|
|
fileList[0]['percent'] = 100;
|
|
|
fileList[0]['status'] = 'success';
|
|
|
setFileList(toConsumableArray_default()(fileList));
|
|
|
message/* default.info */.ZP.info('秒传成功');
|
|
|
successCallback(fileExistRes === null || fileExistRes === void 0 ? void 0 : (_fileExistRes$data4 = fileExistRes.data) === null || _fileExistRes$data4 === void 0 ? void 0 : (_fileExistRes$data4$ = _fileExistRes$data4[0]) === null || _fileExistRes$data4$ === void 0 ? void 0 : _fileExistRes$data4$.item);
|
|
|
return _context.abrupt("return");
|
|
|
case 26:
|
|
|
if (!(((_fileExistRes$data5 = fileExistRes.data) === null || _fileExistRes$data5 === void 0 ? void 0 : _fileExistRes$data5.length) > 0 && ((_fileExistRes$data6 = fileExistRes.data) === null || _fileExistRes$data6 === void 0 ? void 0 : (_fileExistRes$data6$ = _fileExistRes$data6[0]) === null || _fileExistRes$data6$ === void 0 ? void 0 : _fileExistRes$data6$.type) === 0)) {
|
|
|
_context.next = 32;
|
|
|
break;
|
|
|
}
|
|
|
fileList[0]['percent'] = parseInt("".concat(((_fileExistRes$data7 = fileExistRes.data) === null || _fileExistRes$data7 === void 0 ? void 0 : (_fileExistRes$data7$ = _fileExistRes$data7[0]) === null || _fileExistRes$data7$ === void 0 ? void 0 : _fileExistRes$data7$.rate) * 100));
|
|
|
fileList[0]['status'] = 'uploading';
|
|
|
setFileList(toConsumableArray_default()(fileList));
|
|
|
startUploadQueue(parentId, file, (_md5Res$data5 = md5Res.data) === null || _md5Res$data5 === void 0 ? void 0 : (_md5Res$data5$ = _md5Res$data5[0]) === null || _md5Res$data5$ === void 0 ? void 0 : _md5Res$data5$.md5List, uploadCurrentIndex, patchNum);
|
|
|
return _context.abrupt("return");
|
|
|
case 32:
|
|
|
_context.next = 34;
|
|
|
return prepareUpload(url, {
|
|
|
dirName: (_user$userInfo3 = user.userInfo) === null || _user$userInfo3 === void 0 ? void 0 : _user$userInfo3.login,
|
|
|
md5: (_md5Res$data6 = md5Res.data) === null || _md5Res$data6 === void 0 ? void 0 : (_md5Res$data6$ = _md5Res$data6[0]) === null || _md5Res$data6$ === void 0 ? void 0 : _md5Res$data6$.fmd5,
|
|
|
name: file.name,
|
|
|
size: file.size
|
|
|
});
|
|
|
case 34:
|
|
|
newFileRes = _context.sent;
|
|
|
if (((_newFileRes$data = newFileRes.data) === null || _newFileRes$data === void 0 ? void 0 : _newFileRes$data.length) > 0) {
|
|
|
startUploadQueue((_newFileRes$data2 = newFileRes.data) === null || _newFileRes$data2 === void 0 ? void 0 : (_newFileRes$data2$ = _newFileRes$data2[0]) === null || _newFileRes$data2$ === void 0 ? void 0 : _newFileRes$data2$.id, file, (_md5Res$data7 = md5Res.data) === null || _md5Res$data7 === void 0 ? void 0 : (_md5Res$data7$ = _md5Res$data7[0]) === null || _md5Res$data7$ === void 0 ? void 0 : _md5Res$data7$.md5List, uploadCurrentIndex, patchNum);
|
|
|
}
|
|
|
_context.next = 39;
|
|
|
break;
|
|
|
case 38:
|
|
|
clearStatus();
|
|
|
case 39:
|
|
|
_context.next = 42;
|
|
|
break;
|
|
|
case 41:
|
|
|
clearStatus();
|
|
|
case 42:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function startUpload(_x) {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var sharedCount = (0,react.useRef)(0);
|
|
|
var finishedCount = (0,react.useRef)(0);
|
|
|
var currentIndex = (0,react.useRef)(0);
|
|
|
var currentRate = (0,react.useRef)(0);
|
|
|
var startUploadQueue = function startUploadQueue(parentId, file, md5List, uploadCurrentIndex, patchNum) {
|
|
|
if (!parentId) {
|
|
|
return;
|
|
|
}
|
|
|
sharedCount.current = md5List.length;
|
|
|
var concurrentLimit = Math.min(4, md5List.length);
|
|
|
for (var i = 0; i < concurrentLimit; i++) {
|
|
|
uploadPatch("".concat(parentId), file, md5List, uploadCurrentIndex, patchNum);
|
|
|
}
|
|
|
};
|
|
|
function uploadPatch(parentId, file, md5List, uploadCurrentIndex, patchNum) {
|
|
|
var _md5List$currentIndex, _md5List$currentIndex2;
|
|
|
if (currentIndex.current >= sharedCount.current) {
|
|
|
return;
|
|
|
}
|
|
|
var md5 = (_md5List$currentIndex = md5List[currentIndex.current]) === null || _md5List$currentIndex === void 0 ? void 0 : _md5List$currentIndex.md5;
|
|
|
var md5Index = (_md5List$currentIndex2 = md5List[currentIndex.current]) === null || _md5List$currentIndex2 === void 0 ? void 0 : _md5List$currentIndex2.index;
|
|
|
var start = md5Index * shardSize;
|
|
|
var end = Math.min(file.size, start + shardSize);
|
|
|
var patch = file.slice(start, end);
|
|
|
var reader = new FileReader();
|
|
|
currentIndex.current++;
|
|
|
reader.readAsArrayBuffer(patch);
|
|
|
reader.onload = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2(e) {
|
|
|
var _user$userInfo4;
|
|
|
var form, res, _res$data$2;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
form = new FormData();
|
|
|
form.append("index", "".concat(md5Index));
|
|
|
form.append("parent", parentId);
|
|
|
form.append("size", patch.size);
|
|
|
form.append("patch", patch);
|
|
|
form.append("md5", md5);
|
|
|
form.append("userId", (_user$userInfo4 = user.userInfo) === null || _user$userInfo4 === void 0 ? void 0 : _user$userInfo4.login);
|
|
|
form.append("name", file.name + "-patch-" + md5Index);
|
|
|
// for (let [name, value] of form) {
|
|
|
// console.log(`${name} = ${value}`); // key1 = value1,然后是 key2 = value2
|
|
|
// }
|
|
|
_context2.next = 10;
|
|
|
return filePatchUpload(url, form);
|
|
|
case 10:
|
|
|
res = _context2.sent;
|
|
|
if (!(uploadIndex.current !== uploadCurrentIndex)) {
|
|
|
_context2.next = 13;
|
|
|
break;
|
|
|
}
|
|
|
return _context2.abrupt("return");
|
|
|
case 13:
|
|
|
fileList[0]['percent'] = 0;
|
|
|
fileList[0]['status'] = 'uploading';
|
|
|
if (!(res.errorCode === "000000")) {
|
|
|
_context2.next = 26;
|
|
|
break;
|
|
|
}
|
|
|
finishedCount.current++;
|
|
|
mergePatch("".concat(parentId), file, patchNum);
|
|
|
currentRate.current = Math.max((_res$data$2 = res.data[0]) === null || _res$data$2 === void 0 ? void 0 : _res$data$2.rate, currentRate.current);
|
|
|
fileList[0]['percent'] = parseInt("".concat(currentRate.current * 100));
|
|
|
fileList[0]['status'] = 'uploading';
|
|
|
setFileList(toConsumableArray_default()(fileList));
|
|
|
uploadPatch("".concat(parentId), file, md5List, uploadCurrentIndex, patchNum);
|
|
|
return _context2.abrupt("return");
|
|
|
case 26:
|
|
|
// message.info('上传分片失败')
|
|
|
clearStatus();
|
|
|
case 27:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function (_x2) {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
}
|
|
|
function mergePatch(_x3, _x4, _x5) {
|
|
|
return _mergePatch.apply(this, arguments);
|
|
|
}
|
|
|
function _mergePatch() {
|
|
|
_mergePatch = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4(parentId, file, patchNum) {
|
|
|
var _user$userInfo5;
|
|
|
var form, res, _res$data3, _res$data3$;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
if (!(finishedCount.current < sharedCount.current)) {
|
|
|
_context4.next = 2;
|
|
|
break;
|
|
|
}
|
|
|
return _context4.abrupt("return");
|
|
|
case 2:
|
|
|
form = new FormData();
|
|
|
form.append("parent", parentId);
|
|
|
form.append("size", "".concat(file.size));
|
|
|
form.append("userId", (_user$userInfo5 = user.userInfo) === null || _user$userInfo5 === void 0 ? void 0 : _user$userInfo5.login);
|
|
|
form.append('patchNum', "".concat(patchNum));
|
|
|
_context4.next = 9;
|
|
|
return filePatchMerge(url, form);
|
|
|
case 9:
|
|
|
res = _context4.sent;
|
|
|
if (res.errorCode === "000000") {
|
|
|
// fileList[0]['percent'] = 99;
|
|
|
// fileList[0]['status'] = 'success';
|
|
|
updatePercent((_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : (_res$data3$ = _res$data3[0]) === null || _res$data3$ === void 0 ? void 0 : _res$data3$.id);
|
|
|
} else {
|
|
|
clearStatus();
|
|
|
}
|
|
|
case 11:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
}));
|
|
|
return _mergePatch.apply(this, arguments);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(Dragger, {
|
|
|
height: 200,
|
|
|
accept: ".gz,.bz2,.tar",
|
|
|
onRemove: function onRemove(file) {
|
|
|
clearStatus();
|
|
|
successCallback(null);
|
|
|
},
|
|
|
multiple: false,
|
|
|
fileList: fileList,
|
|
|
beforeUpload: /*#__PURE__*/function () {
|
|
|
var _ref4 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3(file) {
|
|
|
var fileSize, name, allowedExtensions, fileExtension;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
fileSize = 5 * 1024 * 1024 * 1024;
|
|
|
name = file.name.toLowerCase();
|
|
|
allowedExtensions = ['.gz', '.bz2', '.tar'];
|
|
|
fileExtension = name.substring(name.lastIndexOf('.'));
|
|
|
if (allowedExtensions.includes(fileExtension)) {
|
|
|
_context3.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
message/* default.info */.ZP.info("\u4EC5\u652F\u6301\u4E0A\u4F20gz\u3001bz2\u3001tar\u3001tar.gz\u3001tar.bz2\u683C\u5F0F\u7684\u955C\u50CF\u6587\u4EF6");
|
|
|
return _context3.abrupt("return", false);
|
|
|
case 7:
|
|
|
if (!((file === null || file === void 0 ? void 0 : file.size) > fileSize)) {
|
|
|
_context3.next = 10;
|
|
|
break;
|
|
|
}
|
|
|
message/* default.info */.ZP.info("\u6587\u4EF6\u8D85\u8FC7".concat(fileSize / 1024 / 1024 / 1024, "GB\uFF0C\u4E0D\u7B26\u5408\u4E0A\u4F20\u8981\u6C42"));
|
|
|
return _context3.abrupt("return", false);
|
|
|
case 10:
|
|
|
clearStatus();
|
|
|
successCallback(null);
|
|
|
setStartFlag(true);
|
|
|
setFileList([file]);
|
|
|
return _context3.abrupt("return", false);
|
|
|
case 15:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return function (_x6) {
|
|
|
return _ref4.apply(this, arguments);
|
|
|
};
|
|
|
}(),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-shangchuanwenjian1 font50",
|
|
|
style: {
|
|
|
color: '#A9C9FB '
|
|
|
}
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "font14 mt30 mb20",
|
|
|
style: {
|
|
|
color: '#9096A3'
|
|
|
},
|
|
|
children: ["\u62D6\u62FD\u6587\u4EF6\u6216", /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: {
|
|
|
color: '#3061D0',
|
|
|
marginLeft: 5
|
|
|
},
|
|
|
children: "\u70B9\u51FB\u6B64\u5904\u4E0A\u4F20"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
style: {
|
|
|
fontSize: 12,
|
|
|
color: "#9096A3"
|
|
|
},
|
|
|
children: ["\u4EC5\u652F\u6301\u4E0A\u4F20gz\u3001bz2\u3001tar\u3001tar.gz\u3001tar.bz2\u683C\u5F0F\u7684\u955C\u50CF\u6587\u4EF6\uFF0C\u4E0A\u4F20\u7684\u6587\u4EF6\u5927\u5C0F\u4E0D\u80FD\u8D85\u8FC75GB", /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), "\u5982\u679C\u6709\u4E0A\u4F20\u4E2D\u7684\u6587\u4EF6\uFF0C\u8BF7\u52FF\u5237\u65B0\u6216\u5173\u95ED\u6D4F\u89C8\u5668"]
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var NewSliceUpload = ((0,_umi_production_exports.connect)(function (_ref5) {
|
|
|
var user = _ref5.user;
|
|
|
return {
|
|
|
user: user
|
|
|
};
|
|
|
})(UploadFile));
|
|
|
// EXTERNAL MODULE: ./src/utils/util.tsx
|
|
|
var util = __webpack_require__(29427);
|
|
|
// EXTERNAL MODULE: ./src/utils/env.ts + 1 modules
|
|
|
var env = __webpack_require__(59758);
|
|
|
;// CONCATENATED MODULE: ./src/pages/User/Detail/ExperImentImg/Add/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _excluded = ["classroomList", "globalSetting", "loading", "user", "dispatch"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var EditPage = function EditPage(_ref) {
|
|
|
var _location, _globalSetting$settin, _configData$cpu_memor, _configData$time_limi2;
|
|
|
var classroomList = _ref.classroomList,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
user = _ref.user,
|
|
|
dispatch = _ref.dispatch,
|
|
|
props = objectWithoutProperties_default()(_ref, _excluded);
|
|
|
var _useState = (0,react.useState)(1),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
methods = _useState2[0],
|
|
|
setMethods = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)(1),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
tabs = _useState4[0],
|
|
|
setTabs = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)(false),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
mirrorModal = _useState6[0],
|
|
|
setMirrorModal = _useState6[1];
|
|
|
var _useState7 = (0,react.useState)(true),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
isEmpty = _useState8[0],
|
|
|
setIsEmpty = _useState8[1];
|
|
|
var _useState9 = (0,react.useState)({}),
|
|
|
_useState10 = slicedToArray_default()(_useState9, 2),
|
|
|
mirrorInfo = _useState10[0],
|
|
|
setMirrorInfo = _useState10[1];
|
|
|
var _useState11 = (0,react.useState)(''),
|
|
|
_useState12 = slicedToArray_default()(_useState11, 2),
|
|
|
description = _useState12[0],
|
|
|
setDescription = _useState12[1];
|
|
|
var _useState13 = (0,react.useState)(false),
|
|
|
_useState14 = slicedToArray_default()(_useState13, 2),
|
|
|
configModal = _useState14[0],
|
|
|
setConfigModal = _useState14[1];
|
|
|
var _useState15 = (0,react.useState)({}),
|
|
|
_useState16 = slicedToArray_default()(_useState15, 2),
|
|
|
configData = _useState16[0],
|
|
|
setConfigData = _useState16[1];
|
|
|
var _useState17 = (0,react.useState)(),
|
|
|
_useState18 = slicedToArray_default()(_useState17, 2),
|
|
|
defaultDesc = _useState18[0],
|
|
|
setDefaultDesc = _useState18[1];
|
|
|
var _useState19 = (0,react.useState)(0),
|
|
|
_useState20 = slicedToArray_default()(_useState19, 2),
|
|
|
cpuId = _useState20[0],
|
|
|
setCpuId = _useState20[1];
|
|
|
var _useState21 = (0,react.useState)(0),
|
|
|
_useState22 = slicedToArray_default()(_useState21, 2),
|
|
|
timeId = _useState22[0],
|
|
|
setTimeId = _useState22[1];
|
|
|
var _useState23 = (0,react.useState)(''),
|
|
|
_useState24 = slicedToArray_default()(_useState23, 2),
|
|
|
mirrorError = _useState24[0],
|
|
|
setMirrorError = _useState24[1];
|
|
|
var _useState25 = (0,react.useState)(true),
|
|
|
_useState26 = slicedToArray_default()(_useState25, 2),
|
|
|
command = _useState26[0],
|
|
|
setCommand = _useState26[1]; //命令行
|
|
|
var _useState27 = (0,react.useState)(false),
|
|
|
_useState28 = slicedToArray_default()(_useState27, 2),
|
|
|
graphical = _useState28[0],
|
|
|
setGraphical = _useState28[1]; // 图像化
|
|
|
var _useState29 = (0,react.useState)(''),
|
|
|
_useState30 = slicedToArray_default()(_useState29, 2),
|
|
|
mirrorTypeError = _useState30[0],
|
|
|
setMirrorTypeError = _useState30[1];
|
|
|
var _useState31 = (0,react.useState)(''),
|
|
|
_useState32 = slicedToArray_default()(_useState31, 2),
|
|
|
fileError = _useState32[0],
|
|
|
setFileError = _useState32[1];
|
|
|
var _useState33 = (0,react.useState)({}),
|
|
|
_useState34 = slicedToArray_default()(_useState33, 2),
|
|
|
fileInfo = _useState34[0],
|
|
|
setFileInfo = _useState34[1];
|
|
|
var _useState35 = (0,react.useState)({}),
|
|
|
_useState36 = slicedToArray_default()(_useState35, 2),
|
|
|
publicMirrorInfo = _useState36[0],
|
|
|
setPublicMirrorInfo = _useState36[1]; //公共镜像数据
|
|
|
var _useState37 = (0,react.useState)({}),
|
|
|
_useState38 = slicedToArray_default()(_useState37, 2),
|
|
|
customizeMirrorInfo = _useState38[0],
|
|
|
setCustomizeMirrorInfo = _useState38[1]; //自定义镜像数据
|
|
|
var _useState39 = (0,react.useState)({}),
|
|
|
_useState40 = slicedToArray_default()(_useState39, 2),
|
|
|
shareMirrorInfo = _useState40[0],
|
|
|
setShareMirrorInfo = _useState40[1]; //共享镜像数据
|
|
|
var _useState41 = (0,react.useState)(),
|
|
|
_useState42 = slicedToArray_default()(_useState41, 2),
|
|
|
basicTypeName = _useState42[0],
|
|
|
setBasicTypeName = _useState42[1]; //基于基础镜像创建的镜像名称
|
|
|
var _useState43 = (0,react.useState)(),
|
|
|
_useState44 = slicedToArray_default()(_useState43, 2),
|
|
|
localTypeName = _useState44[0],
|
|
|
setLocalTypeName = _useState44[1]; //导入本地镜像创建的镜像名称
|
|
|
var _useState45 = (0,react.useState)(''),
|
|
|
_useState46 = slicedToArray_default()(_useState45, 2),
|
|
|
basicNameError = _useState46[0],
|
|
|
setBasicNameError = _useState46[1];
|
|
|
var _useState47 = (0,react.useState)(''),
|
|
|
_useState48 = slicedToArray_default()(_useState47, 2),
|
|
|
basicNameErrorText = _useState48[0],
|
|
|
setBasicNameErrorText = _useState48[1];
|
|
|
var _useState49 = (0,react.useState)(''),
|
|
|
_useState50 = slicedToArray_default()(_useState49, 2),
|
|
|
localNameError = _useState50[0],
|
|
|
setLocalNameError = _useState50[1];
|
|
|
var _useState51 = (0,react.useState)(''),
|
|
|
_useState52 = slicedToArray_default()(_useState51, 2),
|
|
|
localNameErrorText = _useState52[0],
|
|
|
setLocalNameErrorText = _useState52[1];
|
|
|
var _useState53 = (0,react.useState)(false),
|
|
|
_useState54 = slicedToArray_default()(_useState53, 2),
|
|
|
createBtnLoading = _useState54[0],
|
|
|
setCreateBtnLoading = _useState54[1];
|
|
|
var _useState55 = (0,react.useState)(false),
|
|
|
_useState56 = slicedToArray_default()(_useState55, 2),
|
|
|
btnLoading = _useState56[0],
|
|
|
setBtnLoading = _useState56[1];
|
|
|
var _useState57 = (0,react.useState)(false),
|
|
|
_useState58 = slicedToArray_default()(_useState57, 2),
|
|
|
modalBtnLoading = _useState58[0],
|
|
|
setModalBtnLoading = _useState58[1];
|
|
|
var methodsItems = [{
|
|
|
id: 1,
|
|
|
name: '基于基础镜像创建'
|
|
|
}, {
|
|
|
id: 2,
|
|
|
name: '导入本地镜像创建'
|
|
|
}];
|
|
|
var mirrorItems = [{
|
|
|
id: 1,
|
|
|
name: '公共镜像',
|
|
|
type: 'public'
|
|
|
}, {
|
|
|
id: 2,
|
|
|
name: '自定义镜像',
|
|
|
type: 'customize'
|
|
|
}, {
|
|
|
id: 3,
|
|
|
name: '共享镜像',
|
|
|
type: 'share'
|
|
|
}];
|
|
|
(0,react.useEffect)(function () {
|
|
|
getConfig();
|
|
|
dispatch({
|
|
|
type: 'globalSetting/footerToggle',
|
|
|
payload: false
|
|
|
});
|
|
|
}, []);
|
|
|
(0,react.useEffect)(function () {
|
|
|
document.title = '创建镜像';
|
|
|
}, [(_location = location) === null || _location === void 0 ? void 0 : _location.pathname]);
|
|
|
var getConfig = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var res, _res$data;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return (0,fetch/* default */.ZP)('/api/user_mirrors/other_info.json', {
|
|
|
method: 'get'
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
if (res.status === 0) {
|
|
|
setConfigData(res === null || res === void 0 ? void 0 : res.data);
|
|
|
setDefaultDesc(res === null || res === void 0 ? void 0 : (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.default_mirror_desc);
|
|
|
}
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function getConfig() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var getNameError = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2(typeName, isStart) {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
if (methods === 1) setCreateBtnLoading(true);else setBtnLoading(true);
|
|
|
_context2.next = 3;
|
|
|
return (0,fetch/* default */.ZP)("/api/user_mirrors/check_mirror_name.json", {
|
|
|
method: 'post',
|
|
|
body: {
|
|
|
type_name: typeName
|
|
|
}
|
|
|
});
|
|
|
case 3:
|
|
|
res = _context2.sent;
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
if (methods === 1) {
|
|
|
setBasicNameError('');
|
|
|
setBasicNameErrorText('');
|
|
|
if (isStart) {
|
|
|
setConfigModal(true);
|
|
|
}
|
|
|
}
|
|
|
if (methods === 2) {
|
|
|
setLocalNameError('');
|
|
|
setLocalNameErrorText('');
|
|
|
if (isStart) {
|
|
|
creatMirrorByFile();
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
if (methods === 1) {
|
|
|
setBasicNameError('type_name');
|
|
|
setBasicNameErrorText(res === null || res === void 0 ? void 0 : res.message);
|
|
|
}
|
|
|
if (methods === 2) {
|
|
|
setLocalNameError('type_name');
|
|
|
setLocalNameErrorText(res === null || res === void 0 ? void 0 : res.message);
|
|
|
}
|
|
|
document.body.scrollIntoView();
|
|
|
}
|
|
|
setBtnLoading(false);
|
|
|
setCreateBtnLoading(false);
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function getNameError(_x, _x2) {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var creatMirrorByFile = /*#__PURE__*/function () {
|
|
|
var _ref4 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3() {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
setBtnLoading(true);
|
|
|
_context3.next = 3;
|
|
|
return (0,fetch/* default */.ZP)("/api/user_mirrors.json", {
|
|
|
method: 'post',
|
|
|
body: {
|
|
|
create_method: 2,
|
|
|
type_name: localTypeName,
|
|
|
description: description,
|
|
|
is_support_vnc: graphical,
|
|
|
is_support_webssh: command,
|
|
|
file_path: fileInfo === null || fileInfo === void 0 ? void 0 : fileInfo.path,
|
|
|
file_id: fileInfo === null || fileInfo === void 0 ? void 0 : fileInfo.id,
|
|
|
file_old_name: fileInfo === null || fileInfo === void 0 ? void 0 : fileInfo.oldName,
|
|
|
file_new_name: fileInfo === null || fileInfo === void 0 ? void 0 : fileInfo.name,
|
|
|
filesize: fileInfo === null || fileInfo === void 0 ? void 0 : fileInfo.size
|
|
|
}
|
|
|
});
|
|
|
case 3:
|
|
|
res = _context3.sent;
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
message/* default.success */.ZP.success("创建成功");
|
|
|
_umi_production_exports.history.back();
|
|
|
setBtnLoading(false);
|
|
|
}
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return function creatMirrorByFile() {
|
|
|
return _ref4.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var getMirror = /*#__PURE__*/function () {
|
|
|
var _ref5 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4() {
|
|
|
var res, _res$data2, _res$data2$environmen, _res$data3;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
_context4.next = 2;
|
|
|
return (0,fetch/* default */.ZP)('/api/shixuns/new.json', {
|
|
|
method: 'get',
|
|
|
params: {
|
|
|
is_create_mirror: 1,
|
|
|
tab_type: mirrorItems[Number(tabs) - 1].type
|
|
|
}
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context4.sent;
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
if ((res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : (_res$data2$environmen = _res$data2.environments) === null || _res$data2$environmen === void 0 ? void 0 : _res$data2$environmen.length) === 0 && (res === null || res === void 0 ? void 0 : (_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.other_image.length) === 0) {
|
|
|
setIsEmpty(true);
|
|
|
} else {
|
|
|
setIsEmpty(false);
|
|
|
}
|
|
|
}
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
}));
|
|
|
return function getMirror() {
|
|
|
return _ref5.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var toExit = function toExit() {
|
|
|
var toNext = function toNext() {
|
|
|
_umi_production_exports.history.back();
|
|
|
};
|
|
|
var flag = false;
|
|
|
if (publicMirrorInfo !== null && publicMirrorInfo !== void 0 && publicMirrorInfo.id || customizeMirrorInfo !== null && customizeMirrorInfo !== void 0 && customizeMirrorInfo.id || shareMirrorInfo !== null && shareMirrorInfo !== void 0 && shareMirrorInfo.id || basicTypeName) flag = true;
|
|
|
if (fileInfo !== null && fileInfo !== void 0 && fileInfo.id || localTypeName || command === false || graphical === true) {
|
|
|
flag = true;
|
|
|
}
|
|
|
if (flag) {
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
title: '离开此页提示',
|
|
|
content: '系统可能不会保存您所做的更改。',
|
|
|
okText: '离开',
|
|
|
cancelText: '取消',
|
|
|
onOk: function onOk() {
|
|
|
toNext();
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
toNext();
|
|
|
}
|
|
|
};
|
|
|
(0,react.useEffect)(function () {
|
|
|
getMirror();
|
|
|
}, [tabs]);
|
|
|
var handleConfirm = /*#__PURE__*/function () {
|
|
|
var _ref6 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee5() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee5$(_context5) {
|
|
|
while (1) switch (_context5.prev = _context5.next) {
|
|
|
case 0:
|
|
|
if (!(methods === 1)) {
|
|
|
_context5.next = 17;
|
|
|
break;
|
|
|
}
|
|
|
if (mirrorInfo !== null && mirrorInfo !== void 0 && mirrorInfo.id) {
|
|
|
_context5.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
setMirrorError('mirror');
|
|
|
document.body.scrollIntoView();
|
|
|
return _context5.abrupt("return");
|
|
|
case 7:
|
|
|
setMirrorError('');
|
|
|
case 8:
|
|
|
if (basicTypeName) {
|
|
|
_context5.next = 15;
|
|
|
break;
|
|
|
}
|
|
|
setBasicNameError('type_name');
|
|
|
setBasicNameErrorText('镜像名称不能为空');
|
|
|
document.body.scrollIntoView();
|
|
|
return _context5.abrupt("return");
|
|
|
case 15:
|
|
|
_context5.next = 17;
|
|
|
return getNameError(basicTypeName, true);
|
|
|
case 17:
|
|
|
if (!(methods === 2)) {
|
|
|
_context5.next = 40;
|
|
|
break;
|
|
|
}
|
|
|
if (!(!command && !graphical)) {
|
|
|
_context5.next = 24;
|
|
|
break;
|
|
|
}
|
|
|
setMirrorTypeError('interface');
|
|
|
document.body.scrollIntoView();
|
|
|
return _context5.abrupt("return");
|
|
|
case 24:
|
|
|
setMirrorTypeError('');
|
|
|
case 25:
|
|
|
if (!((fileInfo === null || fileInfo === void 0 ? void 0 : fileInfo.id) != undefined)) {
|
|
|
_context5.next = 29;
|
|
|
break;
|
|
|
}
|
|
|
setFileError('');
|
|
|
_context5.next = 32;
|
|
|
break;
|
|
|
case 29:
|
|
|
setFileError('file');
|
|
|
document.body.scrollIntoView();
|
|
|
return _context5.abrupt("return");
|
|
|
case 32:
|
|
|
if (localTypeName) {
|
|
|
_context5.next = 39;
|
|
|
break;
|
|
|
}
|
|
|
setLocalNameError('type_name');
|
|
|
setLocalNameErrorText('镜像名称不能为空');
|
|
|
document.body.scrollIntoView();
|
|
|
return _context5.abrupt("return");
|
|
|
case 39:
|
|
|
getNameError(localTypeName, true);
|
|
|
case 40:
|
|
|
case "end":
|
|
|
return _context5.stop();
|
|
|
}
|
|
|
}, _callee5);
|
|
|
}));
|
|
|
return function handleConfirm() {
|
|
|
return _ref6.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Addmodules.wrap,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Addmodules.content,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Addmodules.crumbs,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-fanhuijingxiang",
|
|
|
style: {
|
|
|
color: '#3061D0',
|
|
|
fontSize: 14,
|
|
|
cursor: "pointer"
|
|
|
},
|
|
|
onClick: toExit
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: {
|
|
|
paddingLeft: 8
|
|
|
},
|
|
|
children: "\u521B\u5EFA\u955C\u50CF"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "",
|
|
|
className: Addmodules.doc,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
onClick: function onClick() {
|
|
|
(0,util/* openNewWindow */.xg)("".concat(env/* default.API_SERVER */.Z.API_SERVER, "/pdf/\u81EA\u5B9A\u4E49\u955C\u50CF\u64CD\u4F5C\u5E2E\u52A9\u6587\u6863.pdf"));
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-a-wenhaobeifen2"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: {
|
|
|
paddingLeft: 4
|
|
|
},
|
|
|
children: "\u5E2E\u52A9\u6587\u6863"
|
|
|
})]
|
|
|
})
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Addmodules.title,
|
|
|
children: "\u521B\u5EFA\u65B9\u5F0F\u4E0E\u6765\u6E90"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
style: {
|
|
|
marginBottom: 60
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(Label/* default */.Z, {
|
|
|
required: true,
|
|
|
nameWidth: 100,
|
|
|
name: "\u521B\u5EFA\u65B9\u5F0F",
|
|
|
children: methodsItems.map(function (item) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
type: methods === item.id ? "primary" : "default",
|
|
|
style: {
|
|
|
marginRight: 20,
|
|
|
borderRadius: 2
|
|
|
},
|
|
|
className: methods === item.id ? Addmodules.activeBtn : Addmodules.btn,
|
|
|
onClick: function onClick() {
|
|
|
setMethods(item.id);
|
|
|
if (tabs === 1) {
|
|
|
setMirrorInfo(publicMirrorInfo);
|
|
|
if (publicMirrorInfo !== null && publicMirrorInfo !== void 0 && publicMirrorInfo.id) setMirrorError('');
|
|
|
}
|
|
|
if (tabs === 2) {
|
|
|
setMirrorInfo(customizeMirrorInfo);
|
|
|
if (customizeMirrorInfo !== null && customizeMirrorInfo !== void 0 && customizeMirrorInfo.id) setMirrorError('');
|
|
|
}
|
|
|
if (tabs === 3) {
|
|
|
setMirrorInfo(shareMirrorInfo);
|
|
|
if (shareMirrorInfo !== null && shareMirrorInfo !== void 0 && shareMirrorInfo.id) setMirrorError('');
|
|
|
}
|
|
|
},
|
|
|
children: item.name
|
|
|
});
|
|
|
})
|
|
|
}), methods === 1 && /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(Label/* default */.Z, {
|
|
|
required: true,
|
|
|
nameWidth: 100,
|
|
|
name: "\u57FA\u7840\u955C\u50CF",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(ui_customization/* SuperiorTabs */.tp, {
|
|
|
dataSource: mirrorItems,
|
|
|
value: tabs,
|
|
|
onChange: function onChange(id) {
|
|
|
setTabs(id);
|
|
|
if (id === 1) {
|
|
|
setMirrorInfo(objectSpread2_default()({}, publicMirrorInfo));
|
|
|
if (publicMirrorInfo !== null && publicMirrorInfo !== void 0 && publicMirrorInfo.id) setMirrorError('');
|
|
|
}
|
|
|
if (id === 2) {
|
|
|
setMirrorInfo(objectSpread2_default()({}, customizeMirrorInfo));
|
|
|
if (customizeMirrorInfo !== null && customizeMirrorInfo !== void 0 && customizeMirrorInfo.id) setMirrorError('');
|
|
|
}
|
|
|
if (id === 3) {
|
|
|
setMirrorInfo(objectSpread2_default()({}, shareMirrorInfo));
|
|
|
if (shareMirrorInfo !== null && shareMirrorInfo !== void 0 && shareMirrorInfo.id) setMirrorError('');
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(Label/* default */.Z, {
|
|
|
nameWidth: 100,
|
|
|
errorKey: "mirror",
|
|
|
errorValue: mirrorError,
|
|
|
errorName: "\u8BF7\u9009\u62E9\u57FA\u7840\u955C\u50CF",
|
|
|
errorStyle: {
|
|
|
fontSize: 12,
|
|
|
paddingBottom: 8
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(row/* default */.Z, {
|
|
|
align: "middle",
|
|
|
children: isEmpty === false ? /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [!!(mirrorInfo !== null && mirrorInfo !== void 0 && mirrorInfo.id) && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
onClick: function onClick() {
|
|
|
setMirrorModal(true);
|
|
|
},
|
|
|
className: Addmodules.mirror,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: mirrorInfo === null || mirrorInfo === void 0 ? void 0 : mirrorInfo.name
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-genghuan"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(MarkdownModal/* default */.Z, {
|
|
|
value: [{
|
|
|
description: mirrorInfo === null || mirrorInfo === void 0 ? void 0 : mirrorInfo.description,
|
|
|
name: mirrorInfo === null || mirrorInfo === void 0 ? void 0 : mirrorInfo.name
|
|
|
}],
|
|
|
title: "\u5B9E\u9A8C\u955C\u50CF\u8BF4\u660E",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: Addmodules.explain,
|
|
|
children: "\u5B9E\u9A8C\u955C\u50CF\u8BF4\u660E"
|
|
|
})
|
|
|
})]
|
|
|
}), !(mirrorInfo !== null && mirrorInfo !== void 0 && mirrorInfo.id) && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
onClick: function onClick() {
|
|
|
setMirrorModal(true);
|
|
|
},
|
|
|
className: Addmodules.mirror,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-tianjia3 font14 mr10"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u9009\u62E9\u5B9E\u9A8C\u955C\u50CF"
|
|
|
})]
|
|
|
})]
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: nodata_namespaceObject,
|
|
|
style: {
|
|
|
width: '30px',
|
|
|
height: '32px'
|
|
|
}
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: {
|
|
|
paddingLeft: '10px'
|
|
|
},
|
|
|
children: "\u6682\u65E0\u6570\u636E~"
|
|
|
})]
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
}), methods === 2 && /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(Label/* default */.Z, {
|
|
|
nameWidth: 100,
|
|
|
align: "start",
|
|
|
required: true,
|
|
|
name: "\u955C\u50CF\u6587\u4EF6",
|
|
|
errorKey: "file",
|
|
|
errorValue: fileError,
|
|
|
errorName: "\u8BF7\u4E0A\u4F20\u955C\u50CF\u6587\u4EF6",
|
|
|
errorStyle: {
|
|
|
fontSize: 12,
|
|
|
paddingBottom: 8
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(NewSliceUpload, {
|
|
|
successCallback: function successCallback(e) {
|
|
|
if (!!e) {
|
|
|
setFileError('');
|
|
|
setFileInfo(objectSpread2_default()({}, e));
|
|
|
} else {
|
|
|
setFileInfo({});
|
|
|
}
|
|
|
},
|
|
|
url: globalSetting === null || globalSetting === void 0 ? void 0 : (_globalSetting$settin = globalSetting.setting) === null || _globalSetting$settin === void 0 ? void 0 : _globalSetting$settin.bigfiles_upload
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(Label/* default */.Z, {
|
|
|
required: true,
|
|
|
name: "\u955C\u50CF\u7C7B\u578B",
|
|
|
nameWidth: 100,
|
|
|
align: "start",
|
|
|
errorKey: "interface",
|
|
|
errorValue: mirrorTypeError,
|
|
|
errorName: "\u8BF7\u9009\u62E9\u955C\u50CF\u7C7B\u578B",
|
|
|
errorStyle: {
|
|
|
fontSize: 12,
|
|
|
paddingBottom: 8
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Addmodules["interface"],
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
onClick: function onClick() {
|
|
|
setCommand(!command);
|
|
|
if (!command || graphical === true) {
|
|
|
setMirrorTypeError('');
|
|
|
}
|
|
|
},
|
|
|
className: command ? Addmodules.active : '',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "iconfont icon-xuanzhong9"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-minglinghang"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u547D\u4EE4\u884C\u7EC8\u7AEF"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("aside", {
|
|
|
children: "\u901A\u8FC7\u547D\u4EE4\u884C\u7EC8\u7AEF\u7684\u65B9\u5F0F\u8FDE\u63A5"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
onClick: function onClick() {
|
|
|
setGraphical(!graphical);
|
|
|
if (!graphical || command === true) {
|
|
|
setMirrorTypeError('');
|
|
|
}
|
|
|
},
|
|
|
className: graphical ? Addmodules.active : '',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "iconfont icon-xuanzhong9"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-tuxinghuazhuomian"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u56FE\u5F62\u5316\u684C\u9762"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("aside", {
|
|
|
children: "\u901A\u8FC7\u56FE\u5F62\u5316\u684C\u9762\u7684\u65B9\u5F0F\u8FDE\u63A5"
|
|
|
})]
|
|
|
})]
|
|
|
})
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Addmodules.title,
|
|
|
style: {
|
|
|
marginTop: 0
|
|
|
},
|
|
|
children: "\u955C\u50CF\u4FE1\u606F"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(Label/* default */.Z, {
|
|
|
required: true,
|
|
|
nameWidth: 100,
|
|
|
name: "\u955C\u50CF\u540D\u79F0",
|
|
|
errorKey: "type_name",
|
|
|
errorValue: methods === 1 ? basicNameError : localNameError,
|
|
|
errorName: methods === 1 ? basicNameErrorText : localNameErrorText,
|
|
|
errorStyle: {
|
|
|
fontSize: 12,
|
|
|
paddingBottom: 8
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
value: methods === 1 ? basicTypeName : localTypeName
|
|
|
// maxLength={60}
|
|
|
,
|
|
|
onChange: function onChange(e) {
|
|
|
var value = e.target.value;
|
|
|
if (methods === 1) {
|
|
|
setBasicTypeName(value);
|
|
|
}
|
|
|
if (methods === 2) {
|
|
|
setLocalTypeName(value);
|
|
|
}
|
|
|
},
|
|
|
onBlur: function onBlur(e) {
|
|
|
var value = e.target.value;
|
|
|
//await getNameError(value,false)
|
|
|
if (value.length <= 60) {
|
|
|
var regex = /^[a-zA-Z][a-zA-Z0-9#+.\-/_:]*$/;
|
|
|
if (value.match(regex) || value === '') {
|
|
|
if (methods === 1) {
|
|
|
setBasicTypeName(value);
|
|
|
setBasicNameError('');
|
|
|
setBasicNameErrorText('');
|
|
|
} else if (methods === 2) {
|
|
|
setLocalTypeName(value);
|
|
|
setLocalNameError('');
|
|
|
setLocalNameErrorText('');
|
|
|
}
|
|
|
} else {
|
|
|
if (methods === 1) {
|
|
|
setBasicNameError('type_name');
|
|
|
setBasicNameErrorText('镜像名称只能以字母开头,仅支持字母、数字和特殊字符#+.-/_:');
|
|
|
} else if (methods === 2) {
|
|
|
setLocalNameError('type_name');
|
|
|
setLocalNameErrorText('镜像名称只能以字母开头,仅支持字母、数字和特殊字符#+.-/_:');
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
if (methods === 1) {
|
|
|
setBasicNameError('type_name');
|
|
|
setBasicNameErrorText('镜像名称不能超过60个字符');
|
|
|
} else if (methods === 2) {
|
|
|
setLocalNameError('type_name');
|
|
|
setLocalNameErrorText('镜像名称不能超过60个字符');
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
// bordered={false}
|
|
|
,
|
|
|
placeholder: "\u4F8B\u5982\uFF1APython3.6",
|
|
|
size: "large"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(Label/* default */.Z, {
|
|
|
name: "\u955C\u50CF\u63CF\u8FF0",
|
|
|
nameWidth: 100,
|
|
|
align: "start",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(markdown_editor/* default */.Z, {
|
|
|
fullScreen: false,
|
|
|
watch: true,
|
|
|
height: 500,
|
|
|
placeholder: '',
|
|
|
defaultValue: methods === 1 ? mirrorInfo === null || mirrorInfo === void 0 ? void 0 : mirrorInfo.description : defaultDesc,
|
|
|
onChange: function onChange(value) {
|
|
|
setDescription(value);
|
|
|
},
|
|
|
onBlur: function onBlur(value) {
|
|
|
setDescription(value);
|
|
|
}
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Addmodules.btns,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
style: {
|
|
|
marginRight: 40
|
|
|
},
|
|
|
onClick: toExit,
|
|
|
children: "\u53D6\u6D88"
|
|
|
}), methods === 1 && /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
type: "primary",
|
|
|
onClick: handleConfirm,
|
|
|
loading: createBtnLoading,
|
|
|
children: "\u5F00\u59CB\u5236\u4F5C\u955C\u50CF"
|
|
|
}), methods === 2 && /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
disabled: !(fileInfo !== null && fileInfo !== void 0 && fileInfo.id),
|
|
|
type: !(fileInfo !== null && fileInfo !== void 0 && fileInfo.id) ? "default" : "primary",
|
|
|
className: !(fileInfo !== null && fileInfo !== void 0 && fileInfo.id) ? Addmodules.disabledBtn : '',
|
|
|
onClick: function onClick() {
|
|
|
return handleConfirm();
|
|
|
},
|
|
|
loading: btnLoading,
|
|
|
children: "\u5F00\u59CB\u5BFC\u5165"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(components_MirrorModal, {
|
|
|
useId: mirrorInfo === null || mirrorInfo === void 0 ? void 0 : mirrorInfo.id,
|
|
|
tab_type: mirrorItems[Number(tabs) - 1].type,
|
|
|
visible: mirrorModal,
|
|
|
onCancel: function onCancel() {
|
|
|
setMirrorModal(false);
|
|
|
},
|
|
|
onOk: function onOk(value) {
|
|
|
if (tabs === 1) setPublicMirrorInfo(value);
|
|
|
if (tabs === 2) setCustomizeMirrorInfo(value);
|
|
|
if (tabs === 3) setShareMirrorInfo(value);
|
|
|
setMirrorInfo(value);
|
|
|
setMirrorModal(false);
|
|
|
setMirrorError('');
|
|
|
}
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
maskClosable: false,
|
|
|
keyboard: false,
|
|
|
destroyOnClose: true,
|
|
|
open: configModal,
|
|
|
title: "\u9009\u62E9\u8FD0\u884C\u73AF\u5883",
|
|
|
width: "558px",
|
|
|
okText: "\u786E\u5B9A",
|
|
|
wrapClassName: Addmodules.auditModal,
|
|
|
confirmLoading: modalBtnLoading,
|
|
|
onCancel: function onCancel() {
|
|
|
setConfigModal(false);
|
|
|
},
|
|
|
onOk: /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee6() {
|
|
|
var _configData$time_limi;
|
|
|
var res, _res$data4;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee6$(_context6) {
|
|
|
while (1) switch (_context6.prev = _context6.next) {
|
|
|
case 0:
|
|
|
setModalBtnLoading(true);
|
|
|
_context6.next = 3;
|
|
|
return (0,fetch/* default */.ZP)('/api/user_mirrors.json', {
|
|
|
method: 'post',
|
|
|
body: {
|
|
|
create_method: 1,
|
|
|
base_mirror_repository_id: mirrorInfo.id,
|
|
|
cpu_memory_limit: configData === null || configData === void 0 ? void 0 : configData.cpu_memory_limit_config[Number(cpuId)],
|
|
|
time_limit: configData === null || configData === void 0 ? void 0 : (_configData$time_limi = configData.time_limit_config[Number(timeId)]) === null || _configData$time_limi === void 0 ? void 0 : _configData$time_limi.value,
|
|
|
type_name: basicTypeName,
|
|
|
description: description
|
|
|
}
|
|
|
});
|
|
|
case 3:
|
|
|
res = _context6.sent;
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
message/* default.success */.ZP.success("创建成功");
|
|
|
_umi_production_exports.history.push("/shixuns/new/".concat(res === null || res === void 0 ? void 0 : (_res$data4 = res.data) === null || _res$data4 === void 0 ? void 0 : _res$data4.user_mirror_id, "/imagepreview?operation=create_image"));
|
|
|
}
|
|
|
setModalBtnLoading(false);
|
|
|
setConfigModal(false);
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context6.stop();
|
|
|
}
|
|
|
}, _callee6);
|
|
|
})),
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
style: {
|
|
|
paddingTop: 20
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(Label/* default */.Z, {
|
|
|
required: true,
|
|
|
name: "\u914D\u7F6E",
|
|
|
align: "center",
|
|
|
nameWidth: 60
|
|
|
// errorName='请选择配置'
|
|
|
,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Addmodules.cpuWrap,
|
|
|
children: configData === null || configData === void 0 ? void 0 : (_configData$cpu_memor = configData.cpu_memory_limit_config) === null || _configData$cpu_memor === void 0 ? void 0 : _configData$cpu_memor.map(function (item, index) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: cpuId === index ? Addmodules.activebtn : Addmodules.btn,
|
|
|
onClick: function onClick() {
|
|
|
return setCpuId(index);
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: item
|
|
|
}), cpuId === index ? /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-xuanzhong9",
|
|
|
style: {
|
|
|
paddingRight: 12
|
|
|
}
|
|
|
})
|
|
|
}) : '']
|
|
|
});
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(Label/* default */.Z, {
|
|
|
required: true,
|
|
|
name: "\u65F6\u957F",
|
|
|
align: "center",
|
|
|
nameWidth: 60
|
|
|
// errorName='请选择时长'
|
|
|
,
|
|
|
children: configData === null || configData === void 0 ? void 0 : (_configData$time_limi2 = configData.time_limit_config) === null || _configData$time_limi2 === void 0 ? void 0 : _configData$time_limi2.map(function (item, index) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: timeId === index ? Addmodules.activeTab : Addmodules.tab,
|
|
|
onClick: function onClick() {
|
|
|
return setTimeId(index);
|
|
|
},
|
|
|
children: item.name
|
|
|
});
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var Add = ((0,_umi_production_exports.connect)(function (_ref8) {
|
|
|
var classroomList = _ref8.classroomList,
|
|
|
loading = _ref8.loading,
|
|
|
globalSetting = _ref8.globalSetting,
|
|
|
user = _ref8.user;
|
|
|
return {
|
|
|
classroomList: classroomList,
|
|
|
globalSetting: globalSetting,
|
|
|
loading: loading.models.classroomList,
|
|
|
user: user
|
|
|
};
|
|
|
})(EditPage));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 45954:
|
|
|
/*!*********************************************!*\
|
|
|
!*** ./src/pages/tasks/vnc-view/index.less ***!
|
|
|
\*********************************************/
|
|
|
/***/ (function() {
|
|
|
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 36723:
|
|
|
/*!*****************************************!*\
|
|
|
!*** ./src/assets/images/noEnvData.png ***!
|
|
|
\*****************************************/
|
|
|
/***/ (function(module) {
|
|
|
|
|
|
module.exports = "data:image/png;base64,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";
|
|
|
|
|
|
/***/ })
|
|
|
|
|
|
}]); |