|
|
(self["webpackChunk"] = self["webpackChunk"] || []).push([[93665,42977,8691,4977,12768],{
|
|
|
|
|
|
/***/ 99011:
|
|
|
/*!**************************************************************************!*\
|
|
|
!*** ./node_modules/@ant-design/icons-svg/es/asn/ClockCircleOutlined.js ***!
|
|
|
\**************************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__) {
|
|
|
|
|
|
"use strict";
|
|
|
// This icon file is generated automatically.
|
|
|
var ClockCircleOutlined = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372s166.6-372 372-372 372 166.6 372 372-166.6 372-372 372z" } }, { "tag": "path", "attrs": { "d": "M686.7 638.6L544.1 535.5V288c0-4.4-3.6-8-8-8H488c-4.4 0-8 3.6-8 8v275.4c0 2.6 1.2 5 3.3 6.5l165.4 120.6c3.6 2.6 8.6 1.8 11.2-1.7l28.6-39c2.6-3.7 1.8-8.7-1.8-11.2z" } }] }, "name": "clock-circle", "theme": "outlined" };
|
|
|
/* harmony default export */ __webpack_exports__["Z"] = (ClockCircleOutlined);
|
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 30071:
|
|
|
/*!************************************************************************!*\
|
|
|
!*** ./node_modules/@ant-design/icons/es/icons/ClockCircleOutlined.js ***!
|
|
|
\************************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectSpread2 */ 1413);
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 67294);
|
|
|
/* harmony import */ var _ant_design_icons_svg_es_asn_ClockCircleOutlined__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @ant-design/icons-svg/es/asn/ClockCircleOutlined */ 99011);
|
|
|
/* harmony import */ var _components_AntdIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/AntdIcon */ 7918);
|
|
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
|
|
var ClockCircleOutlined = function ClockCircleOutlined(props, ref) {
|
|
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_AntdIcon__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)({}, props), {}, {
|
|
|
ref: ref,
|
|
|
icon: _ant_design_icons_svg_es_asn_ClockCircleOutlined__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z
|
|
|
}));
|
|
|
};
|
|
|
ClockCircleOutlined.displayName = 'ClockCircleOutlined';
|
|
|
/* harmony default export */ __webpack_exports__["Z"] = (/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ClockCircleOutlined));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 28508:
|
|
|
/*!******************************************************************!*\
|
|
|
!*** ./node_modules/@ant-design/icons/es/icons/CloseOutlined.js ***!
|
|
|
\******************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectSpread2 */ 1413);
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 67294);
|
|
|
/* harmony import */ var _ant_design_icons_svg_es_asn_CloseOutlined__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @ant-design/icons-svg/es/asn/CloseOutlined */ 89503);
|
|
|
/* harmony import */ var _components_AntdIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/AntdIcon */ 7918);
|
|
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
|
|
var CloseOutlined = function CloseOutlined(props, ref) {
|
|
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_AntdIcon__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)({}, props), {}, {
|
|
|
ref: ref,
|
|
|
icon: _ant_design_icons_svg_es_asn_CloseOutlined__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z
|
|
|
}));
|
|
|
};
|
|
|
CloseOutlined.displayName = 'CloseOutlined';
|
|
|
/* harmony default export */ __webpack_exports__["Z"] = (/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(CloseOutlined));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 39300:
|
|
|
/*!*****************************************************************!*\
|
|
|
!*** ./node_modules/@ant-design/icons/es/icons/DownOutlined.js ***!
|
|
|
\*****************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectSpread2 */ 1413);
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 67294);
|
|
|
/* harmony import */ var _ant_design_icons_svg_es_asn_DownOutlined__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @ant-design/icons-svg/es/asn/DownOutlined */ 66023);
|
|
|
/* harmony import */ var _components_AntdIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/AntdIcon */ 7918);
|
|
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
|
|
var DownOutlined = function DownOutlined(props, ref) {
|
|
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_AntdIcon__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)({}, props), {}, {
|
|
|
ref: ref,
|
|
|
icon: _ant_design_icons_svg_es_asn_DownOutlined__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z
|
|
|
}));
|
|
|
};
|
|
|
DownOutlined.displayName = 'DownOutlined';
|
|
|
/* harmony default export */ __webpack_exports__["Z"] = (/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(DownOutlined));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 69753:
|
|
|
/*!*********************************************************************!*\
|
|
|
!*** ./node_modules/@ant-design/icons/es/icons/DownloadOutlined.js ***!
|
|
|
\*********************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectSpread2 */ 1413);
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 67294);
|
|
|
/* harmony import */ var _ant_design_icons_svg_es_asn_DownloadOutlined__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @ant-design/icons-svg/es/asn/DownloadOutlined */ 49495);
|
|
|
/* harmony import */ var _components_AntdIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/AntdIcon */ 7918);
|
|
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
|
|
var DownloadOutlined = function DownloadOutlined(props, ref) {
|
|
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_AntdIcon__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)({}, props), {}, {
|
|
|
ref: ref,
|
|
|
icon: _ant_design_icons_svg_es_asn_DownloadOutlined__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z
|
|
|
}));
|
|
|
};
|
|
|
DownloadOutlined.displayName = 'DownloadOutlined';
|
|
|
/* harmony default export */ __webpack_exports__["Z"] = (/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(DownloadOutlined));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 3471:
|
|
|
/*!*********************************************************************!*\
|
|
|
!*** ./node_modules/@ant-design/icons/es/icons/EllipsisOutlined.js ***!
|
|
|
\*********************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectSpread2 */ 1413);
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 67294);
|
|
|
/* harmony import */ var _ant_design_icons_svg_es_asn_EllipsisOutlined__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @ant-design/icons-svg/es/asn/EllipsisOutlined */ 29245);
|
|
|
/* harmony import */ var _components_AntdIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/AntdIcon */ 7918);
|
|
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
|
|
var EllipsisOutlined = function EllipsisOutlined(props, ref) {
|
|
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_AntdIcon__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)({}, props), {}, {
|
|
|
ref: ref,
|
|
|
icon: _ant_design_icons_svg_es_asn_EllipsisOutlined__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z
|
|
|
}));
|
|
|
};
|
|
|
EllipsisOutlined.displayName = 'EllipsisOutlined';
|
|
|
/* harmony default export */ __webpack_exports__["Z"] = (/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(EllipsisOutlined));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 87588:
|
|
|
/*!******************************************************************************!*\
|
|
|
!*** ./node_modules/@ant-design/icons/es/icons/ExclamationCircleOutlined.js ***!
|
|
|
\******************************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectSpread2 */ 1413);
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 67294);
|
|
|
/* harmony import */ var _ant_design_icons_svg_es_asn_ExclamationCircleOutlined__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @ant-design/icons-svg/es/asn/ExclamationCircleOutlined */ 61144);
|
|
|
/* harmony import */ var _components_AntdIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/AntdIcon */ 7918);
|
|
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
|
|
var ExclamationCircleOutlined = function ExclamationCircleOutlined(props, ref) {
|
|
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_AntdIcon__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)({}, props), {}, {
|
|
|
ref: ref,
|
|
|
icon: _ant_design_icons_svg_es_asn_ExclamationCircleOutlined__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z
|
|
|
}));
|
|
|
};
|
|
|
ExclamationCircleOutlined.displayName = 'ExclamationCircleOutlined';
|
|
|
/* harmony default export */ __webpack_exports__["Z"] = (/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(ExclamationCircleOutlined));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 64082:
|
|
|
/*!******************************************************************************!*\
|
|
|
!*** ./node_modules/@ant-design/icons/es/icons/InboxOutlined.js + 1 modules ***!
|
|
|
\******************************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ icons_InboxOutlined; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js
|
|
|
var objectSpread2 = __webpack_require__(1413);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
|
var react = __webpack_require__(67294);
|
|
|
;// CONCATENATED MODULE: ./node_modules/@ant-design/icons-svg/es/asn/InboxOutlined.js
|
|
|
// This icon file is generated automatically.
|
|
|
var InboxOutlined = { "icon": { "tag": "svg", "attrs": { "viewBox": "0 0 1024 1024", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M885.2 446.3l-.2-.8-112.2-285.1c-5-16.1-19.9-27.2-36.8-27.2H281.2c-17 0-32.1 11.3-36.9 27.6L139.4 443l-.3.7-.2.8c-1.3 4.9-1.7 9.9-1 14.8-.1 1.6-.2 3.2-.2 4.8V830a60.9 60.9 0 0060.8 60.8h627.2c33.5 0 60.8-27.3 60.9-60.8V464.1c0-1.3 0-2.6-.1-3.7.4-4.9 0-9.6-1.3-14.1zm-295.8-43l-.3 15.7c-.8 44.9-31.8 75.1-77.1 75.1-22.1 0-41.1-7.1-54.8-20.6S436 441.2 435.6 419l-.3-15.7H229.5L309 210h399.2l81.7 193.3H589.4zm-375 76.8h157.3c24.3 57.1 76 90.8 140.4 90.8 33.7 0 65-9.4 90.3-27.2 22.2-15.6 39.5-37.4 50.7-63.6h156.5V814H214.4V480.1z" } }] }, "name": "inbox", "theme": "outlined" };
|
|
|
/* harmony default export */ var asn_InboxOutlined = (InboxOutlined);
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/components/AntdIcon.js + 6 modules
|
|
|
var AntdIcon = __webpack_require__(7918);
|
|
|
;// CONCATENATED MODULE: ./node_modules/@ant-design/icons/es/icons/InboxOutlined.js
|
|
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
|
|
var InboxOutlined_InboxOutlined = function InboxOutlined(props, ref) {
|
|
|
return /*#__PURE__*/react.createElement(AntdIcon/* default */.Z, (0,objectSpread2/* default */.Z)((0,objectSpread2/* default */.Z)({}, props), {}, {
|
|
|
ref: ref,
|
|
|
icon: asn_InboxOutlined
|
|
|
}));
|
|
|
};
|
|
|
InboxOutlined_InboxOutlined.displayName = 'InboxOutlined';
|
|
|
/* harmony default export */ var icons_InboxOutlined = (/*#__PURE__*/react.forwardRef(InboxOutlined_InboxOutlined));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 37653:
|
|
|
/*!*****************************************************************!*\
|
|
|
!*** ./node_modules/@ant-design/icons/es/icons/LeftOutlined.js ***!
|
|
|
\*****************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectSpread2 */ 1413);
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 67294);
|
|
|
/* harmony import */ var _ant_design_icons_svg_es_asn_LeftOutlined__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @ant-design/icons-svg/es/asn/LeftOutlined */ 26554);
|
|
|
/* harmony import */ var _components_AntdIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/AntdIcon */ 7918);
|
|
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
|
|
var LeftOutlined = function LeftOutlined(props, ref) {
|
|
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_AntdIcon__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)({}, props), {}, {
|
|
|
ref: ref,
|
|
|
icon: _ant_design_icons_svg_es_asn_LeftOutlined__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z
|
|
|
}));
|
|
|
};
|
|
|
LeftOutlined.displayName = 'LeftOutlined';
|
|
|
/* harmony default export */ __webpack_exports__["Z"] = (/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(LeftOutlined));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 33160:
|
|
|
/*!*******************************************************************************!*\
|
|
|
!*** ./node_modules/@ant-design/icons/es/icons/ReloadOutlined.js + 1 modules ***!
|
|
|
\*******************************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ icons_ReloadOutlined; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js
|
|
|
var objectSpread2 = __webpack_require__(1413);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
|
var react = __webpack_require__(67294);
|
|
|
;// CONCATENATED MODULE: ./node_modules/@ant-design/icons-svg/es/asn/ReloadOutlined.js
|
|
|
// This icon file is generated automatically.
|
|
|
var ReloadOutlined = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M909.1 209.3l-56.4 44.1C775.8 155.1 656.2 92 521.9 92 290 92 102.3 279.5 102 511.5 101.7 743.7 289.8 932 521.9 932c181.3 0 335.8-115 394.6-276.1 1.5-4.2-.7-8.9-4.9-10.3l-56.7-19.5a8 8 0 00-10.1 4.8c-1.8 5-3.8 10-5.9 14.9-17.3 41-42.1 77.8-73.7 109.4A344.77 344.77 0 01655.9 829c-42.3 17.9-87.4 27-133.8 27-46.5 0-91.5-9.1-133.8-27A341.5 341.5 0 01279 755.2a342.16 342.16 0 01-73.7-109.4c-17.9-42.4-27-87.4-27-133.9s9.1-91.5 27-133.9c17.3-41 42.1-77.8 73.7-109.4 31.6-31.6 68.4-56.4 109.3-73.8 42.3-17.9 87.4-27 133.8-27 46.5 0 91.5 9.1 133.8 27a341.5 341.5 0 01109.3 73.8c9.9 9.9 19.2 20.4 27.8 31.4l-60.2 47a8 8 0 003 14.1l175.6 43c5 1.2 9.9-2.6 9.9-7.7l.8-180.9c-.1-6.6-7.8-10.3-13-6.2z" } }] }, "name": "reload", "theme": "outlined" };
|
|
|
/* harmony default export */ var asn_ReloadOutlined = (ReloadOutlined);
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/components/AntdIcon.js + 6 modules
|
|
|
var AntdIcon = __webpack_require__(7918);
|
|
|
;// CONCATENATED MODULE: ./node_modules/@ant-design/icons/es/icons/ReloadOutlined.js
|
|
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
|
|
var ReloadOutlined_ReloadOutlined = function ReloadOutlined(props, ref) {
|
|
|
return /*#__PURE__*/react.createElement(AntdIcon/* default */.Z, (0,objectSpread2/* default */.Z)((0,objectSpread2/* default */.Z)({}, props), {}, {
|
|
|
ref: ref,
|
|
|
icon: asn_ReloadOutlined
|
|
|
}));
|
|
|
};
|
|
|
ReloadOutlined_ReloadOutlined.displayName = 'ReloadOutlined';
|
|
|
/* harmony default export */ var icons_ReloadOutlined = (/*#__PURE__*/react.forwardRef(ReloadOutlined_ReloadOutlined));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 43929:
|
|
|
/*!******************************************************************!*\
|
|
|
!*** ./node_modules/@ant-design/icons/es/icons/RightOutlined.js ***!
|
|
|
\******************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony import */ var _babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectSpread2 */ 1413);
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 67294);
|
|
|
/* harmony import */ var _ant_design_icons_svg_es_asn_RightOutlined__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @ant-design/icons-svg/es/asn/RightOutlined */ 50756);
|
|
|
/* harmony import */ var _components_AntdIcon__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/AntdIcon */ 7918);
|
|
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
|
|
var RightOutlined = function RightOutlined(props, ref) {
|
|
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_components_AntdIcon__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z, (0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)((0,_babel_runtime_helpers_esm_objectSpread2__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .Z)({}, props), {}, {
|
|
|
ref: ref,
|
|
|
icon: _ant_design_icons_svg_es_asn_RightOutlined__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z
|
|
|
}));
|
|
|
};
|
|
|
RightOutlined.displayName = 'RightOutlined';
|
|
|
/* harmony default export */ __webpack_exports__["Z"] = (/*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(RightOutlined));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 88484:
|
|
|
/*!*******************************************************************************!*\
|
|
|
!*** ./node_modules/@ant-design/icons/es/icons/UploadOutlined.js + 1 modules ***!
|
|
|
\*******************************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ icons_UploadOutlined; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js
|
|
|
var objectSpread2 = __webpack_require__(1413);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
|
var react = __webpack_require__(67294);
|
|
|
;// CONCATENATED MODULE: ./node_modules/@ant-design/icons-svg/es/asn/UploadOutlined.js
|
|
|
// This icon file is generated automatically.
|
|
|
var UploadOutlined = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M400 317.7h73.9V656c0 4.4 3.6 8 8 8h60c4.4 0 8-3.6 8-8V317.7H624c6.7 0 10.4-7.7 6.3-12.9L518.3 163a8 8 0 00-12.6 0l-112 141.7c-4.1 5.3-.4 13 6.3 13zM878 626h-60c-4.4 0-8 3.6-8 8v154H214V634c0-4.4-3.6-8-8-8h-60c-4.4 0-8 3.6-8 8v198c0 17.7 14.3 32 32 32h684c17.7 0 32-14.3 32-32V634c0-4.4-3.6-8-8-8z" } }] }, "name": "upload", "theme": "outlined" };
|
|
|
/* harmony default export */ var asn_UploadOutlined = (UploadOutlined);
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/components/AntdIcon.js + 6 modules
|
|
|
var AntdIcon = __webpack_require__(7918);
|
|
|
;// CONCATENATED MODULE: ./node_modules/@ant-design/icons/es/icons/UploadOutlined.js
|
|
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
|
|
var UploadOutlined_UploadOutlined = function UploadOutlined(props, ref) {
|
|
|
return /*#__PURE__*/react.createElement(AntdIcon/* default */.Z, (0,objectSpread2/* default */.Z)((0,objectSpread2/* default */.Z)({}, props), {}, {
|
|
|
ref: ref,
|
|
|
icon: asn_UploadOutlined
|
|
|
}));
|
|
|
};
|
|
|
UploadOutlined_UploadOutlined.displayName = 'UploadOutlined';
|
|
|
/* harmony default export */ var icons_UploadOutlined = (/*#__PURE__*/react.forwardRef(UploadOutlined_UploadOutlined));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 96403:
|
|
|
/*!*********************************!*\
|
|
|
!*** ./src/pages/tasks/util.js ***!
|
|
|
\*********************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* 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';
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 31590:
|
|
|
/*!**********************************************************!*\
|
|
|
!*** ./src/components/MultiUpload/index.tsx + 1 modules ***!
|
|
|
\**********************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"z": function() { return /* binding */ coverToFileList; },
|
|
|
"Z": function() { return /* binding */ MultiUpload; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/button/style/index.js + 1 modules
|
|
|
var style = __webpack_require__(29913);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/button/index.js
|
|
|
var es_button = __webpack_require__(71577);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/modal/style/index.js + 1 modules
|
|
|
var modal_style = __webpack_require__(35611);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/modal/index.js + 7 modules
|
|
|
var modal = __webpack_require__(85402);
|
|
|
// 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/objectSpread2.js
|
|
|
var objectSpread2 = __webpack_require__(42122);
|
|
|
var objectSpread2_default = /*#__PURE__*/__webpack_require__.n(objectSpread2);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/message/style/index.js + 1 modules
|
|
|
var message_style = __webpack_require__(14934);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/message/index.js + 1 modules
|
|
|
var message = __webpack_require__(12461);
|
|
|
// 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/@babel/runtime/helpers/slicedToArray.js
|
|
|
var slicedToArray = __webpack_require__(27424);
|
|
|
var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/upload/style/index.js + 1 modules
|
|
|
var upload_style = __webpack_require__(13759);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/upload/index.js + 20 modules
|
|
|
var upload = __webpack_require__(7426);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
|
var react = __webpack_require__(67294);
|
|
|
// EXTERNAL MODULE: ./src/utils/env.ts + 1 modules
|
|
|
var env = __webpack_require__(59758);
|
|
|
// EXTERNAL MODULE: ./src/pages/MoopCases/FormPanel/service.ts
|
|
|
var service = __webpack_require__(39507);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(85893);
|
|
|
;// CONCATENATED MODULE: ./src/components/SingleUpload/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var uploadNameSizeSeperator = ' ';
|
|
|
function bytesToSize(bytes) {
|
|
|
var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
|
|
|
if (bytes == 0) return '0 Byte';
|
|
|
var i = parseInt('' + Math.floor(Math.log(bytes) / Math.log(1024)), 10);
|
|
|
return (bytes / Math.pow(1024, i)).toFixed(1) + ' ' + sizes[i];
|
|
|
}
|
|
|
/* harmony default export */ var SingleUpload = (function (_ref) {
|
|
|
var _ref$value = _ref.value,
|
|
|
value = _ref$value === void 0 ? [] : _ref$value,
|
|
|
action = _ref.action,
|
|
|
_onChange = _ref.onChange,
|
|
|
className = _ref.className,
|
|
|
_ref$maxSize = _ref.maxSize,
|
|
|
maxSize = _ref$maxSize === void 0 ? 150 : _ref$maxSize,
|
|
|
_ref$title = _ref.title,
|
|
|
title = _ref$title === void 0 ? '文件上传' : _ref$title,
|
|
|
_ref$accept = _ref.accept,
|
|
|
accept = _ref$accept === void 0 ? null : _ref$accept;
|
|
|
var uploadProps = {
|
|
|
multiple: false,
|
|
|
fileList: value,
|
|
|
accept: accept,
|
|
|
withCredentials: true,
|
|
|
beforeUpload: function beforeUpload(file) {
|
|
|
var fileSize = file.size / 1024 / 1024;
|
|
|
if (!(fileSize < maxSize)) {
|
|
|
_message.error("\u8BE5\u6587\u4EF6\u65E0\u6CD5\u4E0A\u4F20\u3002\u8D85\u8FC7\u6587\u4EF6\u5927\u5C0F\u9650\u5236(".concat(maxSize, "MB),\u5EFA\u8BAE\u4E0A\u4F20\u5230\u767E\u5EA6\u4E91\u7B49\u5176\u5B83\u5171\u4EAB\u5DE5\u5177\u91CC\uFF0C\u7136\u540E\u518Dtxt\u6587\u6863\u91CC\u7ED9\u51FA\u94FE\u63A5\u4EE5\u53CA\u5171\u4EAB\u5BC6\u7801\u5E76\u4E0A\u4F20"));
|
|
|
return Promise.reject();
|
|
|
}
|
|
|
return true;
|
|
|
},
|
|
|
action: "".concat(ENV.API_SERVER, "/api/attachments.json"),
|
|
|
// ?debug=student&randomcode=undefined&client_key=6d57f8c3dd186c5ada392546ace9620a
|
|
|
onChange: function onChange(info) {
|
|
|
var _info$file, _info$file$response;
|
|
|
var fileList = _toConsumableArray(info.fileList);
|
|
|
fileList = fileList.map(function (file) {
|
|
|
if (file.name.indexOf(uploadNameSizeSeperator) === -1) {
|
|
|
file.name = "".concat(file.name).concat(uploadNameSizeSeperator).concat(bytesToSize(file.size));
|
|
|
}
|
|
|
return _objectSpread({}, file);
|
|
|
});
|
|
|
if (info.file.status === 'done' && ((_info$file = info.file) === null || _info$file === void 0 ? void 0 : (_info$file$response = _info$file.response) === null || _info$file$response === void 0 ? void 0 : _info$file$response.status) === -1) {
|
|
|
var _info$file2, _info$file2$response;
|
|
|
_message.error((_info$file2 = info.file) === null || _info$file2 === void 0 ? void 0 : (_info$file2$response = _info$file2.response) === null || _info$file2$response === void 0 ? void 0 : _info$file2$response.message);
|
|
|
_onChange([]);
|
|
|
return;
|
|
|
}
|
|
|
_onChange(fileList);
|
|
|
},
|
|
|
onRemove: function () {
|
|
|
var _onRemove = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(file) {
|
|
|
var fileSize, id, rs;
|
|
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
fileSize = file.size / 1024 / 1024;
|
|
|
if (!(file.status === 'uploading')) {
|
|
|
_context.next = 3;
|
|
|
break;
|
|
|
}
|
|
|
return _context.abrupt("return", true);
|
|
|
case 3:
|
|
|
if (fileSize < maxSize) {
|
|
|
_context.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
return _context.abrupt("return", true);
|
|
|
case 7:
|
|
|
id = file.response ? file.response.id : file.uid;
|
|
|
if (!id) {
|
|
|
_context.next = 15;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 11;
|
|
|
return removeAttachment(file.response ? file.response.id : file.id);
|
|
|
case 11:
|
|
|
rs = _context.sent;
|
|
|
return _context.abrupt("return", rs);
|
|
|
case 15:
|
|
|
return _context.abrupt("return", true);
|
|
|
case 16:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
function onRemove(_x) {
|
|
|
return _onRemove.apply(this, arguments);
|
|
|
}
|
|
|
return onRemove;
|
|
|
}()
|
|
|
};
|
|
|
function onCancel(e) {
|
|
|
e.preventDefault();
|
|
|
e.stopPropagation();
|
|
|
}
|
|
|
return /*#__PURE__*/_jsx("div", {
|
|
|
className: "single-upload ".concat(className ? className : ''),
|
|
|
children: /*#__PURE__*/_jsxs(_Upload, _objectSpread(_objectSpread({}, uploadProps), {}, {
|
|
|
children: [/*#__PURE__*/_jsx(_Button, {
|
|
|
type: "primary",
|
|
|
title: value.length > 0 ? '每次只能上传一个资源, 删除下面资源可重新上传 ' : '',
|
|
|
disabled: value.length > 0,
|
|
|
ghost: true,
|
|
|
children: title
|
|
|
}), /*#__PURE__*/_jsxs("span", {
|
|
|
onClick: onCancel,
|
|
|
style: {
|
|
|
marginLeft: 10
|
|
|
},
|
|
|
children: ["(\u5355\u4E2A\u6587\u4EF6\u6700\u5927", maxSize, "M)", ' ']
|
|
|
})]
|
|
|
}))
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/icons/InboxOutlined.js + 1 modules
|
|
|
var InboxOutlined = __webpack_require__(64082);
|
|
|
// EXTERNAL MODULE: ./node_modules/lodash/lodash.js
|
|
|
var lodash = __webpack_require__(96486);
|
|
|
;// CONCATENATED MODULE: ./src/components/MultiUpload/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Dragger = upload/* default.Dragger */.Z.Dragger;
|
|
|
function coverToFileList(data) {
|
|
|
var rs = [];
|
|
|
if (data && data.length > 0) {
|
|
|
rs = data.map(function (item) {
|
|
|
return {
|
|
|
uid: item.id,
|
|
|
id: item.id,
|
|
|
name: item.title + uploadNameSizeSeperator + item.filesize,
|
|
|
url: item.url,
|
|
|
filesize: item.filesize,
|
|
|
status: 'done',
|
|
|
response: {
|
|
|
id: item.id
|
|
|
}
|
|
|
};
|
|
|
});
|
|
|
}
|
|
|
return rs;
|
|
|
}
|
|
|
/* harmony default export */ var MultiUpload = (function (_ref) {
|
|
|
var value = _ref.value,
|
|
|
_onChange = _ref.onChange,
|
|
|
action = _ref.action,
|
|
|
className = _ref.className,
|
|
|
_ref$maxSize = _ref.maxSize,
|
|
|
maxSize = _ref$maxSize === void 0 ? 150 : _ref$maxSize,
|
|
|
_ref$title = _ref.title,
|
|
|
title = _ref$title === void 0 ? '上传附件' : _ref$title,
|
|
|
_ref$showRemoveModal = _ref.showRemoveModal,
|
|
|
showRemoveModal = _ref$showRemoveModal === void 0 ? false : _ref$showRemoveModal,
|
|
|
_ref$accept = _ref.accept,
|
|
|
accept = _ref$accept === void 0 ? '' : _ref$accept,
|
|
|
additionalText = _ref.additionalText,
|
|
|
isDragger = _ref.isDragger,
|
|
|
_ref$number = _ref.number,
|
|
|
number = _ref$number === void 0 ? 1000 : _ref$number,
|
|
|
_ref$aloneClear = _ref.aloneClear,
|
|
|
aloneClear = _ref$aloneClear === void 0 ? false : _ref$aloneClear;
|
|
|
var _useState = (0,react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
disabled = _useState2[0],
|
|
|
setDisabled = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)(value || []),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
fileList = _useState4[0],
|
|
|
setFileList = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)(1),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
nums = _useState6[0],
|
|
|
setnums = _useState6[1];
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (value) {
|
|
|
if (nums === 1) {
|
|
|
setFileList(toConsumableArray_default()(value));
|
|
|
}
|
|
|
setnums(2);
|
|
|
if (number === (value === null || value === void 0 ? void 0 : value.length)) {
|
|
|
setDisabled(true);
|
|
|
}
|
|
|
}
|
|
|
}, [value]);
|
|
|
var clearLastFile = function clearLastFile() {
|
|
|
setTimeout(function () {
|
|
|
fileList.pop();
|
|
|
setFileList(toConsumableArray_default()(fileList));
|
|
|
}, 500);
|
|
|
};
|
|
|
var uploadProps = {
|
|
|
multiple: true,
|
|
|
disabled: disabled,
|
|
|
accept: accept,
|
|
|
withCredentials: true,
|
|
|
fileList: fileList,
|
|
|
// fileList: fileList?.length ? fileList : value,
|
|
|
beforeUpload: function beforeUpload(file, fileArr) {
|
|
|
var fileSize = file.size / 1024 / 1024;
|
|
|
if (fileList.concat(fileArr).length > number) {
|
|
|
fileList.pop();
|
|
|
setFileList(toConsumableArray_default()(fileList));
|
|
|
message/* default.error */.ZP.error("\u6700\u591A\u53EA\u80FD\u4E0A\u4F20".concat(number, "\u4E2A\u6587\u4EF6"));
|
|
|
if (aloneClear) {
|
|
|
return Promise.reject();
|
|
|
}
|
|
|
clearLastFile();
|
|
|
return false;
|
|
|
}
|
|
|
if (!(fileSize < maxSize)) {
|
|
|
message/* default.error */.ZP.error("\u8BE5\u6587\u4EF6\u65E0\u6CD5\u4E0A\u4F20\u3002\u8D85\u8FC7\u6587\u4EF6\u5927\u5C0F\u9650\u5236(".concat(maxSize, "MB)."));
|
|
|
if (aloneClear) {
|
|
|
return Promise.reject();
|
|
|
}
|
|
|
clearLastFile();
|
|
|
return false;
|
|
|
}
|
|
|
return true;
|
|
|
},
|
|
|
action: action || "".concat(env/* default.API_SERVER */.Z.API_SERVER, "/api/attachments.json"),
|
|
|
// ?debug=student&randomcode=undefined&client_key=6d57f8c3dd186c5ada392546ace9620a
|
|
|
onChange: function onChange(info) {
|
|
|
var _info$file, _info$file$response;
|
|
|
if (info.file.status === "removed") {
|
|
|
fileList = info.fileList;
|
|
|
} else {
|
|
|
fileList = (0,lodash.uniqBy)([].concat(toConsumableArray_default()(info.fileList), toConsumableArray_default()(fileList)), 'uid');
|
|
|
}
|
|
|
if (info.file.status === 'done' && ((_info$file = info.file) === null || _info$file === void 0 ? void 0 : (_info$file$response = _info$file.response) === null || _info$file$response === void 0 ? void 0 : _info$file$response.status) === -1) {
|
|
|
var _info$file2, _info$file2$response;
|
|
|
message/* default.error */.ZP.error((_info$file2 = info.file) === null || _info$file2 === void 0 ? void 0 : (_info$file2$response = _info$file2.response) === null || _info$file2$response === void 0 ? void 0 : _info$file2$response.message);
|
|
|
return;
|
|
|
}
|
|
|
if (fileList.length >= number) setDisabled(true);else setDisabled(false);
|
|
|
setFileList(toConsumableArray_default()(fileList));
|
|
|
fileList = fileList.map(function (file) {
|
|
|
var _file$response;
|
|
|
if (file !== null && file !== void 0 && (_file$response = file.response) !== null && _file$response !== void 0 && _file$response.id) {
|
|
|
var _file$response2;
|
|
|
file.url = "/api/attachments/".concat(file === null || file === void 0 ? void 0 : (_file$response2 = file.response) === null || _file$response2 === void 0 ? void 0 : _file$response2.id);
|
|
|
}
|
|
|
if (file.name.indexOf(uploadNameSizeSeperator) === -1) {
|
|
|
file.name = "".concat(file.name).concat(uploadNameSizeSeperator).concat(bytesToSize(file.size));
|
|
|
}
|
|
|
return objectSpread2_default()({}, file);
|
|
|
});
|
|
|
console.log('info:', info, fileList);
|
|
|
_onChange(fileList);
|
|
|
},
|
|
|
onRemove: function () {
|
|
|
var _onRemove = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3(file) {
|
|
|
var remove;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
remove = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var id, rs;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
id = file.response ? file.response.id : file.id;
|
|
|
if (!id) {
|
|
|
_context.next = 8;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 4;
|
|
|
return (0,service/* removeAttachment */.JZ)(file.response ? file.response.id : file.uid);
|
|
|
case 4:
|
|
|
rs = _context.sent;
|
|
|
return _context.abrupt("return", Promise.resolve(rs));
|
|
|
case 8:
|
|
|
return _context.abrupt("return", true);
|
|
|
case 9:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function remove() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
if (!showRemoveModal) {
|
|
|
_context3.next = 5;
|
|
|
break;
|
|
|
}
|
|
|
return _context3.abrupt("return", new Promise(function (resolve, reject) {
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
centered: true,
|
|
|
width: 530,
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
title: '提示',
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "tc font16",
|
|
|
children: "\u662F\u5426\u786E\u8BA4\u5220\u9664?"
|
|
|
}),
|
|
|
onOk: function () {
|
|
|
var _onOk = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
_context2.next = 2;
|
|
|
return remove();
|
|
|
case 2:
|
|
|
res = _context2.sent;
|
|
|
message/* default.success */.ZP.success('删除成功');
|
|
|
resolve(true);
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
function onOk() {
|
|
|
return _onOk.apply(this, arguments);
|
|
|
}
|
|
|
return onOk;
|
|
|
}(),
|
|
|
onCancel: function onCancel() {
|
|
|
return resolve(false);
|
|
|
}
|
|
|
});
|
|
|
}));
|
|
|
case 5:
|
|
|
_context3.next = 7;
|
|
|
return remove();
|
|
|
case 7:
|
|
|
return _context3.abrupt("return", _context3.sent);
|
|
|
case 8:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
function onRemove(_x) {
|
|
|
return _onRemove.apply(this, arguments);
|
|
|
}
|
|
|
return onRemove;
|
|
|
}()
|
|
|
};
|
|
|
function onCancel(e) {
|
|
|
e.preventDefault();
|
|
|
e.stopPropagation();
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "multi-upload ".concat(className ? className : ''),
|
|
|
children: [isDragger && /*#__PURE__*/(0,jsx_runtime.jsxs)(Dragger, objectSpread2_default()(objectSpread2_default()({}, uploadProps), {}, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
className: "ant-upload-drag-icon",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(InboxOutlined/* default */.Z, {})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
className: "ant-upload-text",
|
|
|
children: ["\u70B9\u51FB\u4E0A\u4F20\u56FE\u6807\uFF0C\u9009\u62E9\u8981\u4E0A\u4F20\u7684\u6587\u4EF6\u6216\u5C06\u6587\u4EF6\u62D6\u62FD\u5230\u6B64", /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), "(\u5355\u4E2A\u6587\u4EF6\u6700\u5927\u9650\u5236\u4E3A", maxSize, "MB)", ' ']
|
|
|
}), additionalText]
|
|
|
})), !isDragger && /*#__PURE__*/(0,jsx_runtime.jsxs)(upload/* default */.Z, objectSpread2_default()(objectSpread2_default()({}, uploadProps), {}, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.Z, {
|
|
|
disabled: disabled,
|
|
|
children: title
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
onClick: onCancel,
|
|
|
style: {
|
|
|
marginLeft: 10,
|
|
|
color: '#FA6400'
|
|
|
},
|
|
|
children: ["(\u5355\u4E2A\u6587\u4EF6\u6700\u5927", maxSize, "MB)", ' ']
|
|
|
})]
|
|
|
}))]
|
|
|
});
|
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 36579:
|
|
|
/*!*********************************************************!*\
|
|
|
!*** ./src/components/PreviewAll/index.tsx + 1 modules ***!
|
|
|
\*********************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ PreviewAll; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/button/style/index.js + 1 modules
|
|
|
var style = __webpack_require__(29913);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/button/index.js
|
|
|
var es_button = __webpack_require__(71577);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/tooltip/style/index.js + 1 modules
|
|
|
var tooltip_style = __webpack_require__(38390);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/tooltip/index.js + 3 modules
|
|
|
var tooltip = __webpack_require__(84908);
|
|
|
// 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/react/index.js
|
|
|
var react = __webpack_require__(67294);
|
|
|
;// CONCATENATED MODULE: ./src/components/PreviewAll/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var PreviewAllmodules = ({"wrp":"wrp___dq7YK","bgBlack":"bgBlack___ARIUV","monaco":"monaco___VnZC3","darkBlue":"darkBlue___UprA9","close":"close___LKoWu","embed":"embed___hvpEJ"});
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/icons/ArrowDownOutlined.js + 1 modules
|
|
|
var ArrowDownOutlined = __webpack_require__(77171);
|
|
|
// EXTERNAL MODULE: ./src/components/monaco-editor/index.jsx + 3 modules
|
|
|
var monaco_editor = __webpack_require__(8691);
|
|
|
// EXTERNAL MODULE: ./src/utils/util.tsx
|
|
|
var util = __webpack_require__(29427);
|
|
|
// EXTERNAL MODULE: ./src/service/exercise.ts
|
|
|
var exercise = __webpack_require__(51412);
|
|
|
// EXTERNAL MODULE: ./src/utils/env.ts + 1 modules
|
|
|
var env = __webpack_require__(59758);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(85893);
|
|
|
;// CONCATENATED MODULE: ./src/components/PreviewAll/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var PreviewAll = (function (_ref) {
|
|
|
var _data, _data2, _data3, _data4, _data5, _data6;
|
|
|
var _ref$editOffice = _ref.editOffice,
|
|
|
editOffice = _ref$editOffice === void 0 ? 'view' : _ref$editOffice,
|
|
|
data = _ref.data,
|
|
|
theme = _ref.theme,
|
|
|
type = _ref.type,
|
|
|
filename = _ref.filename,
|
|
|
monacoEditor = _ref.monacoEditor,
|
|
|
className = _ref.className,
|
|
|
style = _ref.style,
|
|
|
close = _ref.close,
|
|
|
onClose = _ref.onClose,
|
|
|
hasMask = _ref.hasMask,
|
|
|
disabledDownload = _ref.disabledDownload,
|
|
|
onImgDimensions = _ref.onImgDimensions;
|
|
|
var _useState = (0,react.useState)('https://view.officeapps.live.com/op/view.aspx?src=http://testgs.educoder.net//rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBCZz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--03541f6234b93d7ac3b2d84e7eb0e6594a952945/1.ppt'),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
src = _useState2[0],
|
|
|
setSrc = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)(""),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
token = _useState4[0],
|
|
|
setToken = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)(),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
officeData = _useState6[0],
|
|
|
setOfficeData = _useState6[1];
|
|
|
var officePath = window.ENV === "build" ? "/react/build" : "";
|
|
|
var apiServer = location.host.startsWith("localhost") ? env/* default.PROXY_SERVER */.Z.PROXY_SERVER : env/* default.API_SERVER */.Z.API_SERVER;
|
|
|
var size;
|
|
|
var unit = 1024 * 1024;
|
|
|
var maxSize = 10 * unit;
|
|
|
var closeRef = (0,react.useRef)();
|
|
|
if ((_data = data) !== null && _data !== void 0 && _data.startsWith("/api") && type !== "txt") {
|
|
|
data = env/* default.API_SERVER */.Z.API_SERVER + data;
|
|
|
}
|
|
|
if (type === "office") {
|
|
|
size = (0,util/* parseUrl */.en)(data).filesize;
|
|
|
if (size > maxSize) {
|
|
|
type = "other";
|
|
|
}
|
|
|
}
|
|
|
if (filename) monacoEditor.filename = filename;
|
|
|
(0,react.useEffect)(function () {
|
|
|
var _document$cookie, _document$cookie$repl;
|
|
|
var cookies = (_document$cookie = document.cookie) === null || _document$cookie === void 0 ? void 0 : (_document$cookie$repl = _document$cookie.replace(/\s/g, "")) === null || _document$cookie$repl === void 0 ? void 0 : _document$cookie$repl.split(";");
|
|
|
cookies === null || cookies === void 0 ? void 0 : cookies.map(function (item) {
|
|
|
var i = item.split("=");
|
|
|
if (i[0] === '_educoder_session') {
|
|
|
setToken(i[1]);
|
|
|
}
|
|
|
});
|
|
|
}, []);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (type === "office") getData();
|
|
|
}, [type, data]);
|
|
|
var getData = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var _url, _id, res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
console.log("data:", data);
|
|
|
_url = data;
|
|
|
if (!data.startsWith("http")) {
|
|
|
_url = location.origin + _url;
|
|
|
}
|
|
|
_id = new URL(_url).pathname.split("/").pop();
|
|
|
_context.next = 6;
|
|
|
return (0,exercise/* setEcsAttachment */.gJ)({
|
|
|
attachment_id: _id
|
|
|
});
|
|
|
case 6:
|
|
|
res = _context.sent;
|
|
|
setOfficeData(res);
|
|
|
case 8:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function getData() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleClick = function handleClick() {
|
|
|
if (data.startsWith("http") || data.startsWith('blob:')) {
|
|
|
handleDown();
|
|
|
return;
|
|
|
}
|
|
|
(0,util/* downloadFile */.Sv)(filename || 'educoder', data, filename);
|
|
|
};
|
|
|
var handleDown = function handleDown() {
|
|
|
(0,util/* downLoadLink */.Nd)(filename || 'educoder', decodeURIComponent(data));
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
style: objectSpread2_default()({}, style || {}),
|
|
|
className: "".concat(hasMask && PreviewAllmodules.bgBlack, " ").concat(!!type ? PreviewAllmodules.wrp : "hide"),
|
|
|
children: [close && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: PreviewAllmodules.close,
|
|
|
ref: closeRef,
|
|
|
children: [!!onImgDimensions && /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u70B9\u51FB\u5BF9\u56FE\u7247\u8FDB\u884C\u6279\u6CE8",
|
|
|
getPopupContainer: function getPopupContainer() {
|
|
|
return closeRef.current;
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
onClick: function onClick() {
|
|
|
onClose();
|
|
|
onImgDimensions();
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "icon-yulanpizhu"
|
|
|
})
|
|
|
})
|
|
|
}), !disabledDownload && /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u70B9\u51FB\u4E0B\u8F7D\u6B64\u6587\u4EF6",
|
|
|
getPopupContainer: function getPopupContainer() {
|
|
|
return closeRef.current;
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
onClick: handleDown,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "icon-quxiaozhiding"
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u5173\u95ED",
|
|
|
getPopupContainer: function getPopupContainer() {
|
|
|
return closeRef.current;
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "",
|
|
|
onClick: onClose,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "icon-guanbi1"
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "".concat(PreviewAllmodules[className], " ").concat(className, " ").concat(PreviewAllmodules.monaco, " ").concat(type === "txt" ? "show" : "hide"),
|
|
|
children: type === "txt" && /*#__PURE__*/(0,jsx_runtime.jsx)(monaco_editor/* default */.ZP, objectSpread2_default()({}, monacoEditor))
|
|
|
}), type === "audio" && /*#__PURE__*/(0,jsx_runtime.jsx)("audio", {
|
|
|
src: "".concat(((_data2 = data) === null || _data2 === void 0 ? void 0 : _data2.indexOf("http://")) > -1 || ((_data3 = data) === null || _data3 === void 0 ? void 0 : _data3.indexOf("https://")) > -1 ? "" : "data:audio/mp3;base64,").concat(data),
|
|
|
autoPlay: true
|
|
|
}), type === "video" && /*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment, {
|
|
|
children: ((_data4 = data) === null || _data4 === void 0 ? void 0 : _data4.indexOf("http")) > -1 ? /*#__PURE__*/(0,jsx_runtime.jsx)("video", {
|
|
|
controls: true,
|
|
|
src: "".concat(data),
|
|
|
autoPlay: true
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("video", {
|
|
|
controls: true,
|
|
|
src: "data:video/mp4;base64,".concat(data),
|
|
|
autoPlay: true
|
|
|
})
|
|
|
}), type === 'office' && officeData && /*#__PURE__*/(0,jsx_runtime.jsx)("iframe", {
|
|
|
src: "".concat(officePath, "/office.html?key=").concat(officeData.key, "&url=").concat(apiServer + officeData.url, "&callbackUrl=").concat(apiServer + officeData.callbackUrl, "&fileType=").concat(officeData.fileType, "&title=").concat(officeData.title, "&model=").concat(editOffice, "&officeServer=").concat(env/* default.ONLYOFFICE */.Z.ONLYOFFICE, "&disabledDownload=").concat(!!disabledDownload)
|
|
|
}), type === 'html' && /*#__PURE__*/(0,jsx_runtime.jsx)("iframe", {
|
|
|
src: data + '&disposition=inline'
|
|
|
}), type === 'pdf' && /*#__PURE__*/(0,jsx_runtime.jsx)("iframe", {
|
|
|
src: "".concat(officePath, "/js/pdfview/index.html?url=").concat(data, "&disabledDownload=").concat(!!disabledDownload)
|
|
|
}) //<embed className={styles.embed + "#toolbar=0"} src={data} />
|
|
|
, type === "image" && /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: "".concat(((_data5 = data) === null || _data5 === void 0 ? void 0 : _data5.indexOf("http://")) > -1 || ((_data6 = data) === null || _data6 === void 0 ? void 0 : _data6.indexOf("https://")) > -1 ? "" : "data:image/png;base64,").concat(data)
|
|
|
}), type === "other" && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(es_button/* default */.Z, {
|
|
|
type: "primary",
|
|
|
size: "large",
|
|
|
onClick: handleClick,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(ArrowDownOutlined/* default */.Z, {}), "\u70B9\u51FB\u4E0B\u8F7D"]
|
|
|
})
|
|
|
}), type === "download" && /*#__PURE__*/(0,jsx_runtime.jsxs)(es_button/* default */.Z, {
|
|
|
type: "primary",
|
|
|
size: "large",
|
|
|
onClick: handleClick,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(ArrowDownOutlined/* default */.Z, {}), "\u70B9\u51FB\u4E0B\u8F7D"]
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 12768:
|
|
|
/*!*********************************************************!*\
|
|
|
!*** ./src/components/RenderHtml/index.tsx + 1 modules ***!
|
|
|
\*********************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ RenderHtml; }
|
|
|
});
|
|
|
|
|
|
// 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/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/katex/dist/katex.min.css
|
|
|
var katex_min = __webpack_require__(81897);
|
|
|
// EXTERNAL MODULE: ./node_modules/marked/lib/marked.js
|
|
|
var marked = __webpack_require__(47084);
|
|
|
var marked_default = /*#__PURE__*/__webpack_require__.n(marked);
|
|
|
// EXTERNAL MODULE: ./node_modules/marked/src/helpers.js
|
|
|
var helpers = __webpack_require__(90621);
|
|
|
;// CONCATENATED MODULE: ./src/utils/marked.ts
|
|
|
|
|
|
|
|
|
|
|
|
function indentCodeCompensation(raw, text) {
|
|
|
var matchIndentToCode = raw.match(/^(\s+)(?:```)/);
|
|
|
if (matchIndentToCode === null) {
|
|
|
return text;
|
|
|
}
|
|
|
var indentToCode = matchIndentToCode[1];
|
|
|
return text.split('\n').map(function (node) {
|
|
|
var matchIndentInNode = node.match(/^\s+/);
|
|
|
if (matchIndentInNode === null) {
|
|
|
return node;
|
|
|
}
|
|
|
var _matchIndentInNode = slicedToArray_default()(matchIndentInNode, 1),
|
|
|
indentInNode = _matchIndentInNode[0];
|
|
|
if (indentInNode.length >= indentToCode.length) {
|
|
|
return node.slice(indentToCode.length);
|
|
|
}
|
|
|
return node;
|
|
|
}).join('\n');
|
|
|
}
|
|
|
//兼容之前的 ##标题式写法
|
|
|
var toc = [];
|
|
|
var ctx = ["<ul>"];
|
|
|
var renderer = new (marked_default()).Renderer();
|
|
|
var headingRegex = /^ *(#{1,6}) *([^\n]+?) *(?:#+ *)?(?:\n+|$)/;
|
|
|
function cleanToc() {
|
|
|
toc.length = 0;
|
|
|
ctx = ["<ul>"];
|
|
|
}
|
|
|
var lines = {
|
|
|
overflow: "hidden",
|
|
|
WebkitBoxOrient: "vertical",
|
|
|
display: "-webkit-box",
|
|
|
WebkitLineClamp: 2
|
|
|
};
|
|
|
function buildToc(coll, k, level, ctx) {
|
|
|
if (k >= coll.length || coll[k].level <= level) {
|
|
|
return k;
|
|
|
}
|
|
|
var node = coll[k];
|
|
|
ctx.push("<li><a href='#" + node.anchor + "'>" + node.text + "</a>");
|
|
|
k++;
|
|
|
var childCtx = [];
|
|
|
k = buildToc(coll, k, node.level, childCtx);
|
|
|
if (childCtx.length > 0) {
|
|
|
ctx.push("<ul>");
|
|
|
childCtx.forEach(function (idm) {
|
|
|
ctx.push(idm);
|
|
|
});
|
|
|
ctx.push("</ul>");
|
|
|
}
|
|
|
ctx.push("</li>");
|
|
|
k = buildToc(coll, k, level, ctx);
|
|
|
return k;
|
|
|
}
|
|
|
function getTocContent() {
|
|
|
buildToc(toc, 0, 0, ctx);
|
|
|
ctx.push("</ul>");
|
|
|
return ctx.join("");
|
|
|
}
|
|
|
var tokenizer = {
|
|
|
heading: function heading(src) {
|
|
|
var cap = headingRegex.exec(src);
|
|
|
if (cap) {
|
|
|
return {
|
|
|
type: 'heading',
|
|
|
raw: cap[0],
|
|
|
depth: cap[1].length,
|
|
|
text: cap[2]
|
|
|
};
|
|
|
}
|
|
|
},
|
|
|
fences: function fences(src) {
|
|
|
var cap = this.rules.block.fences.exec(src);
|
|
|
if (cap) {
|
|
|
var raw = cap[0];
|
|
|
var text = indentCodeCompensation(raw, cap[3] || '');
|
|
|
var lang = cap[2] ? cap[2].trim() : cap[2];
|
|
|
if (['latex', 'katex', 'math'].indexOf(lang) >= 0) {
|
|
|
var id = next_id();
|
|
|
var expression = text;
|
|
|
text = id;
|
|
|
math_expressions[id] = {
|
|
|
type: 'block',
|
|
|
expression: expression
|
|
|
};
|
|
|
}
|
|
|
return {
|
|
|
type: 'code',
|
|
|
raw: raw,
|
|
|
lang: lang,
|
|
|
text: text
|
|
|
};
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
var latexRegex = /(?:\${2})([^\n`]+?)(?:\${2})/gi;
|
|
|
var katex_count = 0;
|
|
|
var next_id = function next_id() {
|
|
|
return "__special_katext_id_".concat(katex_count++, "__");
|
|
|
};
|
|
|
var math_expressions = {};
|
|
|
function getMathExpressions() {
|
|
|
return math_expressions;
|
|
|
}
|
|
|
function resetMathExpressions() {
|
|
|
katex_count = 0;
|
|
|
math_expressions = {};
|
|
|
}
|
|
|
function replace_math_with_ids(text) {
|
|
|
text = text.replace(latexRegex, function (_match, expression) {
|
|
|
var id = next_id();
|
|
|
math_expressions[id] = {
|
|
|
type: 'inline',
|
|
|
expression: expression
|
|
|
};
|
|
|
return id;
|
|
|
});
|
|
|
return text;
|
|
|
}
|
|
|
var original_listitem = renderer.listitem;
|
|
|
renderer.listitem = function (text) {
|
|
|
return original_listitem(replace_math_with_ids(text));
|
|
|
};
|
|
|
var original_paragraph = renderer.paragraph;
|
|
|
renderer.paragraph = function (text) {
|
|
|
return original_paragraph(replace_math_with_ids(text));
|
|
|
};
|
|
|
var original_tablecell = renderer.tablecell;
|
|
|
renderer.tablecell = function (content, flags) {
|
|
|
return original_tablecell(replace_math_with_ids(content), flags);
|
|
|
};
|
|
|
renderer.code = function (code, infostring, escaped) {
|
|
|
var lang = (infostring || '').match(/\S*/)[0];
|
|
|
if (!lang) {
|
|
|
return '<pre class="prettyprint linenums"><code>' + (escaped ? code : (0,helpers.escape)(code, true)) + '</code></pre>';
|
|
|
}
|
|
|
if (['latex', 'katex', 'math'].indexOf(lang) >= 0) {
|
|
|
return "<p class='editormd-tex'>".concat(code, "</p>");
|
|
|
} else {
|
|
|
return "<pre class=\"prettyprint linenums\"><code class=\"language-".concat(infostring, "\">").concat(escaped ? code : (0,helpers.escape)(code, true), "</code></pre>\n");
|
|
|
}
|
|
|
};
|
|
|
renderer.heading = function (text, level, raw) {
|
|
|
var anchor = this.options.headerPrefix + raw.toLowerCase().replace(/[^\w\\u4e00-\\u9fa5]]+/g, '-');
|
|
|
toc.push({
|
|
|
anchor: anchor,
|
|
|
level: level,
|
|
|
text: text
|
|
|
});
|
|
|
return '<h' + level + ' id="' + anchor + '">' + text + '</h' + level + '>';
|
|
|
};
|
|
|
marked_default().setOptions({
|
|
|
silent: true,
|
|
|
gfm: true,
|
|
|
pedantic: false
|
|
|
});
|
|
|
marked_default().use({
|
|
|
tokenizer: tokenizer,
|
|
|
renderer: renderer
|
|
|
});
|
|
|
/* harmony default export */ var utils_marked = ((marked_default()));
|
|
|
// EXTERNAL MODULE: ./node_modules/code-prettify/src/prettify.js
|
|
|
var prettify = __webpack_require__(11771);
|
|
|
// EXTERNAL MODULE: ./node_modules/hls.js/dist/hls.js
|
|
|
var dist_hls = __webpack_require__(67631);
|
|
|
var hls_default = /*#__PURE__*/__webpack_require__.n(dist_hls);
|
|
|
// EXTERNAL MODULE: ./src/utils/env.ts + 1 modules
|
|
|
var env = __webpack_require__(59758);
|
|
|
// EXTERNAL MODULE: ./node_modules/katex/dist/katex.js
|
|
|
var katex = __webpack_require__(20527);
|
|
|
// EXTERNAL MODULE: ./src/components/PreviewAll/index.tsx + 1 modules
|
|
|
var PreviewAll = __webpack_require__(36579);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(85893);
|
|
|
;// CONCATENATED MODULE: ./src/components/RenderHtml/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var preRegex = /<pre[^>]*>/g;
|
|
|
function _unescape(str) {
|
|
|
var div = document.createElement('div');
|
|
|
div.innerHTML = str;
|
|
|
return div.childNodes.length === 0 ? '' : div.childNodes[0].nodeValue;
|
|
|
}
|
|
|
/* harmony default export */ var RenderHtml = (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,
|
|
|
_ref$stylesPrev = _ref.stylesPrev,
|
|
|
stylesPrev = _ref$stylesPrev === void 0 ? {} : _ref$stylesPrev;
|
|
|
var str = String(value);
|
|
|
var _useState = (0,react.useState)(""),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
data = _useState2[0],
|
|
|
setData = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)("office"),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
type = _useState4[0],
|
|
|
setType = _useState4[1];
|
|
|
var html = (0,react.useMemo)(function () {
|
|
|
try {
|
|
|
var reg = /\(\s+\/api\/attachments\/|\(\/api\/attachments\/|\(\/attachments\/download\//g;
|
|
|
var reg2 = /\"\/api\/attachments\/|\"\/attachments\/download\//g;
|
|
|
var reg3 = /\(\s+\/files\/uploads\/|\"\/files\/uploads\//g;
|
|
|
str = str.replace(reg, "(" + env/* default.API_SERVER */.Z.API_SERVER + "/api/attachments/").replace(reg2, '"' + env/* default.API_SERVER */.Z.API_SERVER + "/api/attachments/").replace(reg3, '"' + env/* default.API_SERVER */.Z.API_SERVER + "/files/uploads/").replaceAll("http://video.educoder", "https://video.educoder").replaceAll("http://www.educoder.net/api", "https://data.educoder.net/api").replaceAll("https://www.educoder.net/api", "https://data.educoder.net/api").replace(/\r\n/g, "\n");
|
|
|
// str = str.replace(new RegExp("(?<!\\n)\\n(?!\\n)", "g"), " \n")
|
|
|
} catch (e) {}
|
|
|
;
|
|
|
var rs = utils_marked(str);
|
|
|
var math_expressions = getMathExpressions();
|
|
|
if (str.match(/\[TOC\]/)) {
|
|
|
rs = rs.replace('<p>[TOC]</p>', getTocContent());
|
|
|
cleanToc();
|
|
|
}
|
|
|
rs = rs.replace(/(__special_katext_id_\d+__)/g, function (_match, capture) {
|
|
|
var _math_expressions$cap = math_expressions[capture],
|
|
|
type = _math_expressions$cap.type,
|
|
|
expression = _math_expressions$cap.expression;
|
|
|
return (0,katex.renderToString)(_unescape(expression) || '', {
|
|
|
displayMode: type === 'block',
|
|
|
throwOnError: false,
|
|
|
output: 'html'
|
|
|
});
|
|
|
});
|
|
|
rs = rs.replace(/▁/g, '▁▁▁');
|
|
|
resetMathExpressions();
|
|
|
// return dompurify.sanitize(rs)
|
|
|
if (showTextOnly) {
|
|
|
var dom = document.createElement('div');
|
|
|
dom.innerHTML = rs;
|
|
|
return dom.innerText;
|
|
|
}
|
|
|
setTimeout(function () {
|
|
|
return onLoad();
|
|
|
}, 500);
|
|
|
return rs;
|
|
|
}, [str]);
|
|
|
var el = (0,react.useRef)();
|
|
|
lines.WebkitLineClamp = showLines;
|
|
|
if (showLines) {
|
|
|
style = objectSpread2_default()(objectSpread2_default()({}, style), lines);
|
|
|
}
|
|
|
function onAncherHandler(e) {
|
|
|
var target = e.target;
|
|
|
if (target.tagName.toUpperCase() === 'A') {
|
|
|
var ancher = target.getAttribute('href');
|
|
|
if (ancher.indexOf("office") > -1) {
|
|
|
e.preventDefault();
|
|
|
setData(ancher);
|
|
|
setType("office");
|
|
|
} else if (ancher.indexOf("application/pdf") > -1) {
|
|
|
e.preventDefault();
|
|
|
setData(ancher);
|
|
|
setType("pdf");
|
|
|
} else if (ancher.indexOf("text/html") > -1) {
|
|
|
e.preventDefault();
|
|
|
setData(ancher);
|
|
|
setType("html");
|
|
|
} else if (ancher.startsWith('#')) {
|
|
|
e.preventDefault();
|
|
|
var viewEl = document.getElementById(ancher.replace('#', ''));
|
|
|
if (viewEl) {
|
|
|
viewEl.scrollIntoView(true);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
var onLoad = function onLoad() {
|
|
|
var _el$current;
|
|
|
var videoElement = (_el$current = el.current) === null || _el$current === void 0 ? void 0 : _el$current.querySelectorAll('video');
|
|
|
videoElement === null || videoElement === void 0 ? void 0 : videoElement.forEach(function (item) {
|
|
|
item.oncontextmenu = function () {
|
|
|
return false;
|
|
|
};
|
|
|
if (item.src.indexOf('.m3u8') > -1) {
|
|
|
if (item.canPlayType('application/vnd.apple.mpegurl')) {} else if (hls_default().isSupported()) {
|
|
|
var hls = new (hls_default())();
|
|
|
hls.loadSource(item.src);
|
|
|
hls.attachMedia(item);
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (el.current && html) {
|
|
|
if (html.match(preRegex)) {
|
|
|
window.PR.prettyPrint();
|
|
|
}
|
|
|
}
|
|
|
if (el.current) {
|
|
|
el.current.addEventListener('click', onAncherHandler);
|
|
|
return function () {
|
|
|
var _el$current2;
|
|
|
(_el$current2 = el.current) === null || _el$current2 === void 0 ? void 0 : _el$current2.removeEventListener('click', onAncherHandler);
|
|
|
resetMathExpressions();
|
|
|
cleanToc();
|
|
|
};
|
|
|
}
|
|
|
}, [html, el.current, onAncherHandler]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
ref: el,
|
|
|
style: objectSpread2_default()({}, style),
|
|
|
className: "".concat(className ? className : '', " markdown-body "),
|
|
|
dangerouslySetInnerHTML: {
|
|
|
__html: html
|
|
|
}
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(PreviewAll/* default */.Z, {
|
|
|
close: true,
|
|
|
data: data,
|
|
|
type: !!(data !== null && data !== void 0 && data.length) ? type : "",
|
|
|
style: objectSpread2_default()({}, stylesPrev),
|
|
|
onClose: function onClose() {
|
|
|
return setData("");
|
|
|
}
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 97501:
|
|
|
/*!*************************************************************!*\
|
|
|
!*** ./src/components/markdown-editor/code-block/index.tsx ***!
|
|
|
\*************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ "h": function() { return /* binding */ MyCodeMirror; }
|
|
|
/* harmony export */ });
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_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_SJ5m_develop_node_modules_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
|
/* harmony import */ var antd_es_button_style__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! antd/es/button/style */ 29913);
|
|
|
/* harmony import */ var antd_es_button__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! antd/es/button */ 71577);
|
|
|
/* harmony import */ var antd_es_form_style__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! antd/es/form/style */ 75627);
|
|
|
/* harmony import */ var antd_es_form__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! antd/es/form */ 51018);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/slicedToArray.js */ 27424);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_3__);
|
|
|
/* harmony import */ var antd_es_select_style__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! antd/es/select/style */ 95985);
|
|
|
/* harmony import */ var antd_es_select__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! antd/es/select */ 34041);
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ 67294);
|
|
|
/* harmony import */ var codemirror__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! codemirror */ 4631);
|
|
|
/* harmony import */ var codemirror__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(codemirror__WEBPACK_IMPORTED_MODULE_6__);
|
|
|
/* harmony import */ var codemirror_lib_codemirror_css__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! codemirror/lib/codemirror.css */ 71749);
|
|
|
/* harmony import */ var codemirror_theme_blackboard_css__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! codemirror/theme/blackboard.css */ 30483);
|
|
|
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ 85893);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Option = antd_es_select__WEBPACK_IMPORTED_MODULE_10__/* ["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_5__.useState)('python'),
|
|
|
_useState2 = _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_3___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_9__.jsxs)(antd_es_form__WEBPACK_IMPORTED_MODULE_11__/* ["default"] */ .Z, _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0___default()(_root_workspace_ppte5yg23_SJ5m_develop_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_9__.jsx)(antd_es_form__WEBPACK_IMPORTED_MODULE_11__/* ["default"].Item */ .Z.Item, {
|
|
|
label: "\u4EE3\u7801\u8BED\u8A00",
|
|
|
name: "language",
|
|
|
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(antd_es_select__WEBPACK_IMPORTED_MODULE_10__/* ["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_9__.jsx)(Option, {
|
|
|
value: item,
|
|
|
children: LanguageDesc[item][0]
|
|
|
}, item);
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(antd_es_form__WEBPACK_IMPORTED_MODULE_11__/* ["default"].Item */ .Z.Item, {
|
|
|
label: "\u4EE3\u7801\u5185\u5BB9",
|
|
|
name: "content",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入代码内容'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(MyCodeMirror, {
|
|
|
mode: mode
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)("div", {
|
|
|
className: "flex-container flex-end",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(antd_es_button__WEBPACK_IMPORTED_MODULE_12__/* ["default"] */ .Z, {
|
|
|
type: "primary",
|
|
|
htmlType: "submit",
|
|
|
style: {
|
|
|
marginRight: 10
|
|
|
},
|
|
|
children: "\u786E\u5B9A"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(antd_es_button__WEBPACK_IMPORTED_MODULE_12__/* ["default"] */ .Z, {
|
|
|
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_5__.useRef)();
|
|
|
var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_5__.useState)(),
|
|
|
_useState4 = _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_3___default()(_useState3, 2),
|
|
|
cm = _useState4[0],
|
|
|
setCm = _useState4[1];
|
|
|
(0,react__WEBPACK_IMPORTED_MODULE_5__.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_5__.useEffect)(function () {
|
|
|
if (cm) {
|
|
|
cm.setOption('mode', mode);
|
|
|
}
|
|
|
}, [cm, mode]);
|
|
|
(0,react__WEBPACK_IMPORTED_MODULE_5__.useEffect)(function () {
|
|
|
if (cm) {
|
|
|
if (value !== cm.getValue() || value === '') {
|
|
|
setTimeout(function () {
|
|
|
cm.setValue(value || ' ');
|
|
|
}, 300);
|
|
|
}
|
|
|
}
|
|
|
}, [cm, value]);
|
|
|
(0,react__WEBPACK_IMPORTED_MODULE_5__.useEffect)(function () {
|
|
|
if (el.current && !cm) {
|
|
|
var instance = codemirror__WEBPACK_IMPORTED_MODULE_6___default().fromTextArea(el.current, _root_workspace_ppte5yg23_SJ5m_develop_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_9__.jsx)("div", {
|
|
|
className: "my-codemirror-container",
|
|
|
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("textarea", {
|
|
|
ref: el
|
|
|
})
|
|
|
});
|
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 55373:
|
|
|
/*!***************************************************************!*\
|
|
|
!*** ./src/components/markdown-editor/index.tsx + 10 modules ***!
|
|
|
\***************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ markdown_editor; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/modal/style/index.js + 1 modules
|
|
|
var style = __webpack_require__(35611);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/modal/index.js + 7 modules
|
|
|
var modal = __webpack_require__(85402);
|
|
|
// 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/antd/es/message/style/index.js + 1 modules
|
|
|
var message_style = __webpack_require__(14934);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/message/index.js + 1 modules
|
|
|
var message = __webpack_require__(12461);
|
|
|
// 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,
|
|
|
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",
|
|
|
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, 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 components_modal = __webpack_require__(12264);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/button/style/index.js + 1 modules
|
|
|
var button_style = __webpack_require__(29913);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/button/index.js
|
|
|
var es_button = __webpack_require__(71577);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/form/style/index.js + 1 modules
|
|
|
var form_style = __webpack_require__(75627);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/form/index.js + 17 modules
|
|
|
var es_form = __webpack_require__(51018);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/input/style/index.js + 1 modules
|
|
|
var input_style = __webpack_require__(69463);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/input/index.js + 5 modules
|
|
|
var input = __webpack_require__(75008);
|
|
|
;// 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 */.Z, {
|
|
|
type: "primary",
|
|
|
htmlType: "submit",
|
|
|
style: {
|
|
|
marginRight: 10
|
|
|
},
|
|
|
children: "\u786E\u5B9A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.Z, {
|
|
|
type: "ghost",
|
|
|
onClick: onCancel,
|
|
|
children: "\u53D6\u6D88"
|
|
|
})]
|
|
|
})]
|
|
|
}));
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/components/markdown-editor/code-block/index.tsx
|
|
|
var code_block = __webpack_require__(97501);
|
|
|
;// 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 upload_image_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];
|
|
|
function onSubmit(values) {
|
|
|
callback(values);
|
|
|
}
|
|
|
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];
|
|
|
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,
|
|
|
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: upload_image_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 */.Z, {
|
|
|
type: "primary",
|
|
|
htmlType: "submit",
|
|
|
style: {
|
|
|
marginRight: 10
|
|
|
},
|
|
|
children: "\u786E\u5B9A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.Z, {
|
|
|
type: "ghost",
|
|
|
onClick: onCancel,
|
|
|
children: "\u53D6\u6D88"
|
|
|
})]
|
|
|
})]
|
|
|
}));
|
|
|
});
|
|
|
function UploadButton(_ref2) {
|
|
|
var onFileChange = _ref2.onFileChange;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "upload-button",
|
|
|
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/input-number/style/index.js + 1 modules
|
|
|
var input_number_style = __webpack_require__(25359);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/input-number/index.js + 9 modules
|
|
|
var input_number = __webpack_require__(87799);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/radio/style/index.js + 1 modules
|
|
|
var radio_style = __webpack_require__(83822);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/radio/index.js + 4 modules
|
|
|
var es_radio = __webpack_require__(29924);
|
|
|
;// 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 */.Z, {
|
|
|
type: "primary",
|
|
|
htmlType: "submit",
|
|
|
style: {
|
|
|
marginRight: 10
|
|
|
},
|
|
|
children: "\u786E\u5B9A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.Z, {
|
|
|
type: "ghost",
|
|
|
onClick: onCancel,
|
|
|
children: "\u53D6\u6D88"
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/utils/env.ts + 1 modules
|
|
|
var env = __webpack_require__(59758);
|
|
|
;// 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 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 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$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$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 cmEl = (0,react.useRef)();
|
|
|
var containerEl = (0,react.useRef)();
|
|
|
var resizeBarEl = (0,react.useRef)();
|
|
|
var previewEl = (0,react.useRef)();
|
|
|
|
|
|
// useEffect(() => {
|
|
|
// setValue(defaultValue)
|
|
|
// cm?.setValue(defaultValue)
|
|
|
// },[])
|
|
|
(0,react.useEffect)(function () {
|
|
|
setValue(values);
|
|
|
cm === null || cm === void 0 ? void 0 : cm.setValue(values);
|
|
|
}, [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;
|
|
|
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"];
|
|
|
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.warn */.ZP.warn("请使用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
|
|
|
});
|
|
|
isFocus && instance.focus();
|
|
|
instance.on('paste', onPaste);
|
|
|
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 _loop = function _loop() {
|
|
|
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++) {
|
|
|
_loop();
|
|
|
}
|
|
|
return function () {
|
|
|
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]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (cm) {
|
|
|
var onChangeHandler = function onChangeHandler(cm) {
|
|
|
var content = cm.getValue();
|
|
|
setValue(content);
|
|
|
setLastedUpdateTime(new Date().getTime());
|
|
|
cm.getScrollerElement().dispatchEvent(new CustomEvent('scroll'));
|
|
|
onChange && 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 {
|
|
|
if (defaultValue !== cm.getValue()) {
|
|
|
cm.setValue(defaultValue);
|
|
|
setValue(defaultValue);
|
|
|
cm.setCursor(cm.lineCount(), 0);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}, [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 '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]);
|
|
|
function onCancelStorage() {
|
|
|
window.sessionStorage.removeItem(id);
|
|
|
setTip(false);
|
|
|
setLastedUpdateTime(0);
|
|
|
}
|
|
|
function onReset() {
|
|
|
setTip(false);
|
|
|
setLastedUpdateTime(0);
|
|
|
cm.setValue(window.sessionStorage.getItem(id));
|
|
|
}
|
|
|
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,
|
|
|
onActionCallback: onActionCallback,
|
|
|
hidetoolBar: hidetoolBar
|
|
|
}), /*#__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, {
|
|
|
value: value
|
|
|
})]
|
|
|
}) : null]
|
|
|
})]
|
|
|
})
|
|
|
}), showResizeBar ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
ref: resizeBarEl,
|
|
|
className: "editor-resize"
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)(components_modal/* default */.Z, {
|
|
|
children: TitleDesc[action] ? /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
title: TitleDesc[action],
|
|
|
open: true,
|
|
|
onCancel: onCancel,
|
|
|
footer: null,
|
|
|
className: "markdown-popup-form",
|
|
|
children: PluginEl
|
|
|
}) : null
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 8691:
|
|
|
/*!************************************************************!*\
|
|
|
!*** ./src/components/monaco-editor/index.jsx + 3 modules ***!
|
|
|
\************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"SV": function() { return /* binding */ DiffEditor; },
|
|
|
"ZP": function() { return /* binding */ monaco_editor; }
|
|
|
});
|
|
|
|
|
|
// UNUSED EXPORTS: getLanguageByMirrorName
|
|
|
|
|
|
// 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/toConsumableArray.js
|
|
|
var toConsumableArray = __webpack_require__(861);
|
|
|
var toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/message/style/index.js + 1 modules
|
|
|
var style = __webpack_require__(14934);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/message/index.js + 1 modules
|
|
|
var message = __webpack_require__(12461);
|
|
|
// 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/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: ./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js
|
|
|
var ResizeObserver_es = __webpack_require__(91033);
|
|
|
// 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);
|
|
|
;// CONCATENATED MODULE: ./src/components/monaco-editor/keywords.tsx
|
|
|
var cLangage = {
|
|
|
keywords: ['print', 'auto', 'break', 'case', 'char', 'const', 'continue', 'default', 'do', 'double', 'else', 'enum', 'extern', 'float', 'for', 'goto', 'if', 'int', 'long', 'register', 'return', 'short', 'signed', 'sizeof', 'static', 'struct', 'switch', 'typedef', 'union', 'unsigned', 'void', 'volatile', 'while']
|
|
|
};
|
|
|
var javaLangage = {
|
|
|
quickKey: [{
|
|
|
label: "main",
|
|
|
content: ['public static void main(String[] args) {', '\t$0', '}'].join('\n')
|
|
|
}, {
|
|
|
label: "System.out.println",
|
|
|
content: ['System.out.println($0)'].join('\n')
|
|
|
}, {
|
|
|
label: "System.out.print",
|
|
|
content: ['System.out.print($0)'].join('\n')
|
|
|
}],
|
|
|
keywords: ['abstract', 'continue', 'for', 'new', 'switch', 'assert', 'default', 'goto', 'package', 'synchronized', 'boolean', 'do', 'if', 'private', 'this', 'break', 'double', 'implements', 'protected', 'throw', 'byte', 'else', 'import', 'public', 'throws', 'case', 'enum', 'instanceof', 'return', 'transient', 'catch', 'extends', 'int', 'short', 'try', 'char', 'final', 'interface', 'static', 'void', 'class', 'finally', 'long', 'strictfp', 'volatile', 'const', 'float', 'native', 'super', 'while', 'true', 'false']
|
|
|
};
|
|
|
var cppLangage = {
|
|
|
keywords: ['abstract', 'amp', 'array', 'auto', 'bool', 'break', 'case', 'catch', 'char', 'class', 'const', 'constexpr', 'const_cast', 'continue', 'cpu', 'decltype', 'default', 'delegate', 'delete', 'do', 'double', 'dynamic_cast', 'each', 'else', 'enum', 'event', 'explicit', 'export', 'extern', 'false', 'final', 'finally', 'float', 'friend', 'gcnew', 'generic', 'goto', 'in', 'initonly', 'inline', 'int', 'interface', 'interior_ptr', 'internal', 'literal', 'long', 'mutable', 'namespace', 'new', 'noexcept', 'nullptr', '__nullptr', 'operator', 'override', 'partial', 'pascal', 'pin_ptr', 'private', 'property', 'protected', 'public', 'ref', 'register', 'reinterpret_cast', 'restrict', 'return', 'safe_cast', 'sealed', 'short', 'signed', 'sizeof', 'static', 'static_assert', 'static_cast', 'struct', 'switch', 'template', 'this', 'thread_local', 'throw', 'tile_static', 'true', 'try', 'typedef', 'typeid', 'typename', 'union', 'unsigned', 'using', 'virtual', 'void', 'volatile', 'wchar_t', 'where', 'while', '_asm', '_based', '_cdecl', '_declspec', '_fastcall', '_if_exists', '_if_not_exists', '_inline', '_multiple_inheritance', '_pascal', '_single_inheritance', '_stdcall', '_virtual_inheritance', '_w64', '__abstract', '__alignof', '__asm', '__assume', '__based', '__box', '__builtin_alignof', '__cdecl', '__clrcall', '__declspec', '__delegate', '__event', '__except', '__fastcall', '__finally', '__forceinline', '__gc', '__hook', '__identifier', '__if_exists', '__if_not_exists', '__inline', '__int128', '__int16', '__int32', '__int64', '__int8', '__interface', '__leave', '__m128', '__m128d', '__m128i', '__m256', '__m256d', '__m256i', '__m64', '__multiple_inheritance', '__newslot', '__nogc', '__noop', '__nounwind', '__novtordisp', '__pascal', '__pin', '__pragma', '__property', '__ptr32', '__ptr64', '__raise', '__restrict', '__resume', '__sealed', '__single_inheritance', '__stdcall', '__super', '__thiscall', '__try', '__try_cast', '__typeof', '__unaligned', '__unhook', '__uuidof', '__value', '__virtual_inheritance', '__w64', '__wchar_t'],
|
|
|
operators: ['=', '>', '<', '!', '~', '?', ':', '==', '<=', '>=', '!=', '&&', '||', '++', '--', '+', '-', '*', '/', '&', '|', '^', '%', '<<', '>>', '>>>', '+=', '-=', '*=', '/=', '&=', '|=', '^=', '%=', '<<=', '>>=', '>>>='],
|
|
|
quickKey: [{
|
|
|
label: "ifelse",
|
|
|
content: ['if (${1:condition}) {', '\t$0', '} else {', '\t', '}'].join('\n')
|
|
|
}, {
|
|
|
label: "include",
|
|
|
content: 'include<$0>'
|
|
|
}, {
|
|
|
label: "printf",
|
|
|
content: 'printf($0)'
|
|
|
}, {
|
|
|
label: "system",
|
|
|
content: 'system("$0")'
|
|
|
}, {
|
|
|
label: "main",
|
|
|
content: ['int main () {', '\t$0', '}'].join('\n')
|
|
|
}, {
|
|
|
label: "if",
|
|
|
content: ['if () {', '\t$0', '}'].join('\n')
|
|
|
}, {
|
|
|
label: "for",
|
|
|
content: ['for(int j=0 ; j<10; j++){', '\t$0', '}'].join('\n')
|
|
|
}, {
|
|
|
label: "trycatch",
|
|
|
content: ['try{', '\t$0', '}catch(ExceptionName e){', '}'].join('\n')
|
|
|
}, {
|
|
|
label: "using namespace std;",
|
|
|
content: ['using namespace std;'].join('\n')
|
|
|
}, {
|
|
|
label: "include <iostream>",
|
|
|
content: ['#include <iostream>'].join('\n')
|
|
|
}, {
|
|
|
label: "include <vector>",
|
|
|
content: ['#include <vector>'].join('\n')
|
|
|
}, {
|
|
|
label: "include <cstdio>",
|
|
|
content: ['#include <cstdio>'].join('\n')
|
|
|
}, {
|
|
|
label: "include <cstring>",
|
|
|
content: ['#include <cstring>'].join('\n')
|
|
|
}, {
|
|
|
label: "include <sstream>",
|
|
|
content: ['#include <sstream>'].join('\n')
|
|
|
}, {
|
|
|
label: "include <fstream>",
|
|
|
content: ['#include <fstream>'].join('\n')
|
|
|
}, {
|
|
|
label: "include <map>",
|
|
|
content: ['#include <map>'].join('\n')
|
|
|
}, {
|
|
|
label: "include <string>",
|
|
|
content: ['#include <string>'].join('\n')
|
|
|
}, {
|
|
|
label: "include <cmath>",
|
|
|
content: ['#include <cmath>'].join('\n')
|
|
|
}]
|
|
|
};
|
|
|
var pythonLangage = {
|
|
|
keywords: ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'None', 'not', 'or', 'pass', 'raise', 'return', 'self', 'try', 'while', 'with', 'yield', 'int', 'float', 'long', 'complex', 'hex', 'abs', 'all', 'any', 'apply', 'basestring', 'bin', 'bool', 'buffer', 'bytearray', 'callable', 'chr', 'classmethod', 'cmp', 'coerce', 'compile', 'complex', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'execfile', 'file', 'filter', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'id', 'input', 'intern', 'isinstance', 'issubclass', 'iter', 'len', 'locals', 'list', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'reversed', 'range', 'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode', 'vars', 'xrange', 'zip', 'True', 'False', '__dict__', '__methods__', '__members__', '__class__', '__bases__', '__name__', '__mro__', '__subclasses__', '__init__', '__import__'],
|
|
|
quickKey: [{
|
|
|
label: "print",
|
|
|
content: ['print($0)'].join('\n')
|
|
|
}
|
|
|
// { label: "#include", content: '#include ""' },
|
|
|
// { label: "printf", content: 'printf("")' },
|
|
|
]
|
|
|
};
|
|
|
|
|
|
var scalaLangage = {
|
|
|
keywords: ['asInstanceOf', 'catch', 'class', 'classOf', 'def', 'do', 'else', 'extends', 'finally', 'for', 'foreach', 'forSome', 'if', 'import', 'isInstanceOf', 'macro', 'match', 'new', 'object', 'package', 'return', 'throw', 'trait', 'try', 'type', 'until', 'val', 'var', 'while', 'with', 'yield',
|
|
|
// Dotty-specific:
|
|
|
'given', 'enum', 'then'],
|
|
|
quickKey: [{
|
|
|
label: "println",
|
|
|
content: ['println($0)'].join('\n')
|
|
|
}
|
|
|
// { label: "#include", content: '#include ""' },
|
|
|
// { label: "printf", content: 'printf("")' },
|
|
|
]
|
|
|
};
|
|
|
// EXTERNAL MODULE: ./node_modules/js-beautify/js/index.js
|
|
|
var js = __webpack_require__(84204);
|
|
|
var js_default = /*#__PURE__*/__webpack_require__.n(js);
|
|
|
;// CONCATENATED MODULE: ./src/components/monaco-editor/monaco-suggest-config.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var baseConfig = {
|
|
|
languages: ['c', 'abap', 'apex', 'azcli', 'bat', 'cameligo', 'clojure', 'coffee', 'cpp', 'csharp', 'csp', 'css', 'dockerfile', 'fsharp', 'go', 'graphql', 'handlebars', 'html', 'ini', 'java', 'javascript', 'json', 'kotlin', 'less', 'lua', 'markdown', 'mips', 'msdax', 'mysql', 'objective-c', 'pascal', 'pascaligo', 'perl', 'pgsql', 'php', 'postiats', 'powerquery', 'powershell', 'pug', 'python', 'r', 'razor', 'redis', 'redshift', 'restructuredtext', 'ruby', 'rust', 'sb', 'scheme', 'scss', 'shell', 'solidity', 'sophia', 'sql', 'st', 'swift', 'tcl', 'twig', 'vb', 'xml', "yaml'"],
|
|
|
tables: {
|
|
|
users: ["name", "id", "email", "phone", "password"],
|
|
|
roles: ["id", "name", "order", "created_at", "updated_at", "deleted_at"]
|
|
|
}
|
|
|
};
|
|
|
var getKeywordsSuggest = function getKeywordsSuggest(monaco, keywords) {
|
|
|
return keywords.map(function (key) {
|
|
|
return {
|
|
|
label: key,
|
|
|
// 显示的名称
|
|
|
kind: monaco.languages.CompletionItemKind.Keyword,
|
|
|
insertText: key // 真实补全的值
|
|
|
};
|
|
|
});
|
|
|
};
|
|
|
|
|
|
var getTableSuggest = function getTableSuggest(monaco) {
|
|
|
return Object.keys(baseConfig.tables).map(function (key) {
|
|
|
return {
|
|
|
label: key,
|
|
|
// 显示的名称
|
|
|
kind: monaco.languages.CompletionItemKind.Variable,
|
|
|
insertText: key // 真实补全的值
|
|
|
};
|
|
|
});
|
|
|
};
|
|
|
|
|
|
var getFieldsSuggest = function getFieldsSuggest(tableName, monaco) {
|
|
|
var fields = baseConfig.tables[tableName];
|
|
|
if (!fields) {
|
|
|
return [];
|
|
|
}
|
|
|
return fields.map(function (name) {
|
|
|
return {
|
|
|
label: name,
|
|
|
kind: monaco.languages.CompletionItemKind.Field,
|
|
|
insertText: name
|
|
|
};
|
|
|
});
|
|
|
};
|
|
|
function getSuggestions(monaco, model, position, keywords, snippts) {
|
|
|
var word = model.getWordUntilPosition(position);
|
|
|
var range = {
|
|
|
startLineNumber: position.lineNumber,
|
|
|
endLineNumber: position.lineNumber,
|
|
|
startColumn: word.startColumn,
|
|
|
endColumn: word.endColumn
|
|
|
};
|
|
|
var rs = keywords.map(function (item) {
|
|
|
return {
|
|
|
label: item,
|
|
|
kind: monaco.languages.CompletionItemKind.Keyword,
|
|
|
insertText: item,
|
|
|
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
|
range: range
|
|
|
};
|
|
|
});
|
|
|
snippts.map(function (item) {
|
|
|
rs.push(_objectSpread(_objectSpread({}, item), {}, {
|
|
|
range: range
|
|
|
}));
|
|
|
});
|
|
|
return rs;
|
|
|
}
|
|
|
/* harmony default export */ var monaco_suggest_config = (function (monaco) {
|
|
|
baseConfig.languages.map(function (item) {
|
|
|
monaco.languages.registerDocumentFormattingEditProvider(item, {
|
|
|
provideDocumentFormattingEdits: function provideDocumentFormattingEdits(model, options, token) {
|
|
|
return asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var formattedText;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
formattedText = js_default()(model.getValue(), {
|
|
|
"indent_size": "2",
|
|
|
"indent_char": " ",
|
|
|
"max_preserve_newlines": "2",
|
|
|
"preserve_newlines": true,
|
|
|
"keep_array_indentation": true,
|
|
|
"break_chained_methods": false,
|
|
|
"indent_scripts": "normal",
|
|
|
"brace_style": "collapse",
|
|
|
"space_before_conditional": true,
|
|
|
"unescape_strings": false,
|
|
|
"jslint_happy": false,
|
|
|
"end_with_newline": true,
|
|
|
"wrap_line_length": "0",
|
|
|
"indent_inner_html": false,
|
|
|
"comma_first": false,
|
|
|
"e4x": false,
|
|
|
"indent_empty_lines": false
|
|
|
});
|
|
|
return _context.abrupt("return", [{
|
|
|
range: model.getFullModelRange(),
|
|
|
text: formattedText
|
|
|
}]);
|
|
|
case 2:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}))();
|
|
|
}
|
|
|
});
|
|
|
return item;
|
|
|
});
|
|
|
var cppKeyPrompt = cppLangage.quickKey.map(function (item) {
|
|
|
return {
|
|
|
label: item.label,
|
|
|
kind: monaco.languages.CompletionItemKind.Method,
|
|
|
insertText: item.content,
|
|
|
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet
|
|
|
};
|
|
|
});
|
|
|
var pythonKeyPrompt = pythonLangage.quickKey.map(function (item) {
|
|
|
return {
|
|
|
label: item.label,
|
|
|
kind: monaco.languages.CompletionItemKind.Method,
|
|
|
insertText: item.content,
|
|
|
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet
|
|
|
};
|
|
|
});
|
|
|
var javaKeyPrompt = javaLangage.quickKey.map(function (item) {
|
|
|
return {
|
|
|
label: item.label,
|
|
|
kind: monaco.languages.CompletionItemKind.Method,
|
|
|
insertText: item.content,
|
|
|
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet
|
|
|
};
|
|
|
});
|
|
|
monaco.languages.registerCompletionItemProvider('cpp', {
|
|
|
provideCompletionItems: function provideCompletionItems(model, position) {
|
|
|
var word = model.getWordUntilPosition(position);
|
|
|
var wordRange = {
|
|
|
startLineNumber: position.lineNumber,
|
|
|
endLineNumber: position.lineNumber,
|
|
|
startColumn: word.startColumn,
|
|
|
endColumn: word.endColumn
|
|
|
};
|
|
|
var value = model.getLineContent(position.lineNumber).substring(word.startColumn - 2, word.endColumn);
|
|
|
return {
|
|
|
suggestions: [].concat(toConsumableArray_default()(cppLangage.keywords.map(function (item) {
|
|
|
return {
|
|
|
label: item,
|
|
|
kind: monaco.languages.CompletionItemKind.Function,
|
|
|
documentation: item,
|
|
|
insertText: item,
|
|
|
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
|
range: wordRange
|
|
|
};
|
|
|
})), toConsumableArray_default()(cppLangage.quickKey.map(function (item) {
|
|
|
return {
|
|
|
label: item.label,
|
|
|
kind: monaco.languages.CompletionItemKind.Function,
|
|
|
documentation: item.content,
|
|
|
insertText: value.startsWith("#") ? item.content.replace(/#/, '') : item.content,
|
|
|
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
|
range: wordRange
|
|
|
};
|
|
|
})))
|
|
|
};
|
|
|
}
|
|
|
});
|
|
|
monaco.languages.registerCompletionItemProvider('c', {
|
|
|
provideCompletionItems: function provideCompletionItems(model, position) {
|
|
|
var word = model.getWordUntilPosition(position);
|
|
|
var wordRange = {
|
|
|
startLineNumber: position.lineNumber,
|
|
|
endLineNumber: position.lineNumber,
|
|
|
startColumn: word.startColumn,
|
|
|
endColumn: word.endColumn
|
|
|
};
|
|
|
return {
|
|
|
suggestions: toConsumableArray_default()(cLangage.keywords.map(function (item) {
|
|
|
return {
|
|
|
label: item,
|
|
|
kind: monaco.languages.CompletionItemKind.Function,
|
|
|
documentation: item,
|
|
|
insertText: item,
|
|
|
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
|
range: wordRange
|
|
|
};
|
|
|
}))
|
|
|
};
|
|
|
}
|
|
|
});
|
|
|
monaco.languages.registerCompletionItemProvider('java', {
|
|
|
provideCompletionItems: function provideCompletionItems(model, position) {
|
|
|
var word = model.getWordUntilPosition(position);
|
|
|
var wordRange = {
|
|
|
startLineNumber: position.lineNumber,
|
|
|
endLineNumber: position.lineNumber,
|
|
|
startColumn: word.startColumn,
|
|
|
endColumn: word.endColumn
|
|
|
};
|
|
|
var value = model.getLineContent(position.lineNumber).substring(word.startColumn - 2, word.endColumn);
|
|
|
return {
|
|
|
suggestions: [].concat(toConsumableArray_default()(javaLangage.keywords.map(function (item) {
|
|
|
return {
|
|
|
label: item,
|
|
|
kind: monaco.languages.CompletionItemKind.Function,
|
|
|
documentation: item,
|
|
|
insertText: item,
|
|
|
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
|
range: wordRange
|
|
|
};
|
|
|
})), toConsumableArray_default()(javaLangage.quickKey.map(function (item) {
|
|
|
return {
|
|
|
label: item.label,
|
|
|
kind: monaco.languages.CompletionItemKind.Function,
|
|
|
documentation: item.content,
|
|
|
insertText: value.startsWith("#") ? item.content.replace(/#/, '') : item.content,
|
|
|
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
|
range: wordRange
|
|
|
};
|
|
|
})))
|
|
|
};
|
|
|
}
|
|
|
});
|
|
|
monaco.languages.registerCompletionItemProvider('scala', {
|
|
|
provideCompletionItems: function provideCompletionItems(model, position) {
|
|
|
var word = model.getWordUntilPosition(position);
|
|
|
var wordRange = {
|
|
|
startLineNumber: position.lineNumber,
|
|
|
endLineNumber: position.lineNumber,
|
|
|
startColumn: word.startColumn,
|
|
|
endColumn: word.endColumn
|
|
|
};
|
|
|
var value = model.getLineContent(position.lineNumber).substring(word.startColumn - 2, word.endColumn);
|
|
|
return {
|
|
|
suggestions: [].concat(toConsumableArray_default()(scalaLangage.keywords.map(function (item) {
|
|
|
return {
|
|
|
label: item,
|
|
|
kind: monaco.languages.CompletionItemKind.Function,
|
|
|
documentation: item,
|
|
|
insertText: item,
|
|
|
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
|
range: wordRange
|
|
|
};
|
|
|
})), toConsumableArray_default()(scalaLangage.quickKey.map(function (item) {
|
|
|
return {
|
|
|
label: item.label,
|
|
|
kind: monaco.languages.CompletionItemKind.Function,
|
|
|
documentation: item.content,
|
|
|
insertText: value.startsWith("#") ? item.content.replace(/#/, '') : item.content,
|
|
|
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
|
range: wordRange
|
|
|
};
|
|
|
})))
|
|
|
};
|
|
|
}
|
|
|
});
|
|
|
monaco.languages.registerCompletionItemProvider('python', {
|
|
|
provideCompletionItems: function provideCompletionItems(model, position) {
|
|
|
var word = model.getWordUntilPosition(position);
|
|
|
var wordRange = {
|
|
|
startLineNumber: position.lineNumber,
|
|
|
endLineNumber: position.lineNumber,
|
|
|
startColumn: word.startColumn,
|
|
|
endColumn: word.endColumn
|
|
|
};
|
|
|
var value = model.getLineContent(position.lineNumber).substring(word.startColumn - 2, word.endColumn);
|
|
|
return {
|
|
|
suggestions: [].concat(toConsumableArray_default()(pythonLangage.keywords.map(function (item) {
|
|
|
return {
|
|
|
label: item,
|
|
|
kind: monaco.languages.CompletionItemKind.Function,
|
|
|
documentation: item,
|
|
|
insertText: item,
|
|
|
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
|
range: wordRange
|
|
|
};
|
|
|
})), toConsumableArray_default()(pythonLangage.quickKey.map(function (item) {
|
|
|
return {
|
|
|
label: item.label,
|
|
|
kind: monaco.languages.CompletionItemKind.Function,
|
|
|
documentation: item.content,
|
|
|
insertText: value.startsWith("#") ? item.content.replace(/#/, '') : item.content,
|
|
|
insertTextRules: monaco.languages.CompletionItemInsertTextRule.InsertAsSnippet,
|
|
|
range: wordRange
|
|
|
};
|
|
|
})))
|
|
|
};
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
var tipTxt = '该任务关卡设置了禁止复制粘贴,请手动输入代码。';
|
|
|
// EXTERNAL MODULE: ./node_modules/monaco-editor/esm/vs/platform/actions/common/actions.js
|
|
|
var actions = __webpack_require__(84144);
|
|
|
// EXTERNAL MODULE: ./node_modules/lodash/lodash.js
|
|
|
var lodash = __webpack_require__(96486);
|
|
|
;// CONCATENATED MODULE: ./src/components/monaco-editor/index.css
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(85893);
|
|
|
;// CONCATENATED MODULE: ./src/components/monaco-editor/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _excluded = ["width", "height", "value", "language", "style", "options", "overrideServices", "theme", "onEditBlur", "onSave", "autoHeight", "forbidCopy", "onChange", "editorDidMount", "onFocus", "filename", "errorLine", "errorContent"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function processSize(size) {
|
|
|
return !/^\d+$/.test(size) ? size : "".concat(size, "px");
|
|
|
}
|
|
|
function noop() {}
|
|
|
var __prevent_trigger_change_event = false;
|
|
|
var DICT = {
|
|
|
'Python3.6': 'python',
|
|
|
'Python2.7': 'python',
|
|
|
Dynamips: 'cpp',
|
|
|
Java: 'java',
|
|
|
Web: 'php',
|
|
|
Html: 'html',
|
|
|
Hive: 'sql',
|
|
|
Hadoop: 'java',
|
|
|
SDL: 'cpp',
|
|
|
PHP: 'php',
|
|
|
Matlab: 'python',
|
|
|
Git: 'python',
|
|
|
Python: 'python',
|
|
|
'C/C++': 'cpp',
|
|
|
'C++': 'cpp',
|
|
|
C: 'cpp',
|
|
|
Ruby: 'ruby',
|
|
|
Shell: 'shell',
|
|
|
JavaScript: 'javascript',
|
|
|
Perl6: 'perl',
|
|
|
Kotlin: 'kotlin',
|
|
|
Elixir: 'elixir',
|
|
|
Android: 'java',
|
|
|
JavaWeb: 'java',
|
|
|
Go: 'go',
|
|
|
Spark: 'sql',
|
|
|
MachineLearning: 'python',
|
|
|
Verilog: 'xml',
|
|
|
'Verilog/VNC': 'xml',
|
|
|
Docker: 'dockerfile',
|
|
|
'C#': 'csharp',
|
|
|
SQLite3: 'sql',
|
|
|
Oracle: 'sql',
|
|
|
Vhdl: 'vhdl',
|
|
|
R: 'r',
|
|
|
Swift: 'swift',
|
|
|
SQLServer: 'mysql',
|
|
|
MySQL: 'mysql',
|
|
|
Mongo: 'sql',
|
|
|
PostgreSql: 'pgsql',
|
|
|
Hbase: 'powershell',
|
|
|
Sqoop: 'sql',
|
|
|
Nasm: 'cpp',
|
|
|
Kafka: 'java',
|
|
|
Flink: 'java',
|
|
|
Sml: 'javascript',
|
|
|
OpenGL: 'cpp',
|
|
|
Perl5: 'perl',
|
|
|
Orange: 'python',
|
|
|
Scala: "scale"
|
|
|
};
|
|
|
function getLanguageByMirrorName() {
|
|
|
var mirror_name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
|
var lang = mirror_name;
|
|
|
if (Array.isArray(mirror_name)) {
|
|
|
for (var i = 0; i < mirror_name.length; i++) {
|
|
|
var languageVal = DICT[mirror_name[i]];
|
|
|
if (languageVal) {
|
|
|
return languageVal;
|
|
|
}
|
|
|
}
|
|
|
return lang[0];
|
|
|
}
|
|
|
return DICT[lang] || lang;
|
|
|
}
|
|
|
|
|
|
//onCodeChange 必须是幂等的,因为只会注册一次,如果有变化,会响应旧的,产生脏数据
|
|
|
var monaco = null;
|
|
|
/* harmony default export */ var monaco_editor = (function (_ref) {
|
|
|
var _ref$width = _ref.width,
|
|
|
width = _ref$width === void 0 ? '100%' : _ref$width,
|
|
|
_ref$height = _ref.height,
|
|
|
height = _ref$height === void 0 ? '100%' : _ref$height,
|
|
|
value = _ref.value,
|
|
|
_ref$language = _ref.language,
|
|
|
language = _ref$language === void 0 ? 'javascript' : _ref$language,
|
|
|
_ref$style = _ref.style,
|
|
|
style = _ref$style === void 0 ? {} : _ref$style,
|
|
|
_ref$options = _ref.options,
|
|
|
options = _ref$options === void 0 ? {} : _ref$options,
|
|
|
_ref$overrideServices = _ref.overrideServices,
|
|
|
overrideServices = _ref$overrideServices === void 0 ? {} : _ref$overrideServices,
|
|
|
_ref$theme = _ref.theme,
|
|
|
theme = _ref$theme === void 0 ? 'vs-dark' : _ref$theme,
|
|
|
onEditBlur = _ref.onEditBlur,
|
|
|
onSave = _ref.onSave,
|
|
|
_ref$autoHeight = _ref.autoHeight,
|
|
|
autoHeight = _ref$autoHeight === void 0 ? false : _ref$autoHeight,
|
|
|
_ref$forbidCopy = _ref.forbidCopy,
|
|
|
forbidCopy = _ref$forbidCopy === void 0 ? false : _ref$forbidCopy,
|
|
|
_ref$onChange = _ref.onChange,
|
|
|
onChange = _ref$onChange === void 0 ? noop : _ref$onChange,
|
|
|
_ref$editorDidMount = _ref.editorDidMount,
|
|
|
editorDidMount = _ref$editorDidMount === void 0 ? noop : _ref$editorDidMount,
|
|
|
_ref$onFocus = _ref.onFocus,
|
|
|
onFocus = _ref$onFocus === void 0 ? noop : _ref$onFocus,
|
|
|
_ref$filename = _ref.filename,
|
|
|
filename = _ref$filename === void 0 ? 'educoder.txt' : _ref$filename,
|
|
|
errorLine = _ref.errorLine,
|
|
|
_ref$errorContent = _ref.errorContent,
|
|
|
errorContent = _ref$errorContent === void 0 ? '' : _ref$errorContent,
|
|
|
props = objectWithoutProperties_default()(_ref, _excluded);
|
|
|
var editorEl = (0,react.useRef)();
|
|
|
var editor = (0,react.useRef)({});
|
|
|
var optionsRef = (0,react.useRef)();
|
|
|
var timeRef = (0,react.useRef)();
|
|
|
var inputLock = (0,react.useRef)(false);
|
|
|
var inputLockTime = (0,react.useRef)();
|
|
|
var _useState = (0,react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
init = _useState2[0],
|
|
|
setInit = _useState2[1];
|
|
|
function onLayout() {
|
|
|
var ro;
|
|
|
if (editorEl.current) {
|
|
|
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) {
|
|
|
editor.current.instance.layout();
|
|
|
}
|
|
|
}
|
|
|
} catch (err) {
|
|
|
_iterator.e(err);
|
|
|
} finally {
|
|
|
_iterator.f();
|
|
|
}
|
|
|
});
|
|
|
ro.observe(editorEl.current);
|
|
|
}
|
|
|
return ro;
|
|
|
}
|
|
|
function tipWarn() {
|
|
|
message/* default.warn */.ZP.warn({
|
|
|
content: decodeURIComponent(tipTxt),
|
|
|
key: "monaco-editor-tip"
|
|
|
});
|
|
|
}
|
|
|
var setCodeValue = function setCodeValue() {
|
|
|
var instance = editor.current.instance;
|
|
|
if (value != null && instance && init) {
|
|
|
var model = instance.getModel();
|
|
|
if (model && value !== model.getValue()) {
|
|
|
__prevent_trigger_change_event = true;
|
|
|
model.setValue(value);
|
|
|
instance.layout();
|
|
|
__prevent_trigger_change_event = false;
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (timeRef.current) clearTimeout(timeRef.current);
|
|
|
timeRef.current = setTimeout(function () {
|
|
|
setCodeValue();
|
|
|
}, 500);
|
|
|
}, [value, init, editor.current]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (errorLine && editor.current && editor.current.instance) {
|
|
|
var instance = editor.current.instance;
|
|
|
instance.changeViewZones(function (changeAccessor) {
|
|
|
var domNode = document.createElement('div');
|
|
|
domNode.style.padding = '10px 20px';
|
|
|
domNode.style.width = 'calc(100% - 20px)';
|
|
|
domNode.className = 'my-error-line-wrp';
|
|
|
domNode.innerHTML = errorContent;
|
|
|
changeAccessor.addZone({
|
|
|
afterLineNumber: errorLine || 11,
|
|
|
heightInLines: 3,
|
|
|
domNode: domNode
|
|
|
});
|
|
|
});
|
|
|
var overlayWidget = {
|
|
|
domNode: null,
|
|
|
getId: function getId() {
|
|
|
return 'my.overlay.widget';
|
|
|
},
|
|
|
getDomNode: function getDomNode() {
|
|
|
if (!this.domNode) {
|
|
|
this.domNode = document.createElement('div');
|
|
|
this.domNode.innerHTML = '';
|
|
|
this.domNode.style.width = '100%';
|
|
|
this.domNode.style.padding = '20px 100px';
|
|
|
this.domNode.style.right = '0px';
|
|
|
this.domNode.style.top = '50px';
|
|
|
this.domNode.style.position = 'relative';
|
|
|
this.domNode.style.color = '#333';
|
|
|
}
|
|
|
return this.domNode;
|
|
|
},
|
|
|
getPosition: function getPosition() {
|
|
|
return null;
|
|
|
}
|
|
|
};
|
|
|
instance.addOverlayWidget(overlayWidget);
|
|
|
// instance.revealPositionInCenter(11,1);
|
|
|
instance.revealPositionInCenter({
|
|
|
lineNumber: 20,
|
|
|
column: 1
|
|
|
});
|
|
|
}
|
|
|
}, [errorLine, editor.current, init]);
|
|
|
function onPaste() {
|
|
|
var instance = editor.current.instance;
|
|
|
if (instance) {
|
|
|
var selection = instance.getSelection();
|
|
|
var pastePos = editor.current.pastePos || {};
|
|
|
var range = new monaco.Range(pastePos.startLineNumber || selection.endLineNumber, pastePos.startColumn || selection.endColumn, pastePos.endLineNumber || selection.endLineNumber, pastePos.endColumn || selection.endColumn);
|
|
|
setTimeout(function () {
|
|
|
instance.executeEdits('', [{
|
|
|
range: range,
|
|
|
text: ''
|
|
|
}]);
|
|
|
}, 300);
|
|
|
}
|
|
|
}
|
|
|
function onSaveHandler(e) {
|
|
|
if ((window.navigator.platform.match('Mac') ? e.metaKey : e.ctrlKey) && e.keyCode == 83) {
|
|
|
e.preventDefault();
|
|
|
onSave();
|
|
|
}
|
|
|
}
|
|
|
var autoCalcHeight = function autoCalcHeight() {
|
|
|
if (autoHeight && editor.current.instance) {
|
|
|
var _height = editor.current.instance.getContentHeight();
|
|
|
setFixedHeight(_height < height ? height : _height);
|
|
|
} else {
|
|
|
setFixedHeight(height);
|
|
|
}
|
|
|
};
|
|
|
function fakeClick(obj) {
|
|
|
var ev = document.createEvent('MouseEvents');
|
|
|
ev.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
|
|
|
obj.dispatchEvent(ev);
|
|
|
}
|
|
|
var checkPaste = function checkPaste(event) {
|
|
|
var keyCode = event.keyCode,
|
|
|
ctrlKey = event.ctrlKey,
|
|
|
metaKey = event.metaKey,
|
|
|
target = event.target,
|
|
|
type = event.type;
|
|
|
if ((type === "paste" || (keyCode === 67 || keyCode === 86) && (metaKey || ctrlKey)) && target.nodeName === "TEXTAREA") {
|
|
|
tipWarn();
|
|
|
event.preventDefault();
|
|
|
}
|
|
|
return false;
|
|
|
};
|
|
|
function exportRaw(name, data) {
|
|
|
var urlObject = window.URL || window.webkitURL || window;
|
|
|
var export_blob = new Blob([data]);
|
|
|
var save_link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
|
|
|
save_link.href = urlObject.createObjectURL(export_blob);
|
|
|
save_link.download = name;
|
|
|
fakeClick(save_link);
|
|
|
}
|
|
|
(0,react.useEffect)(function () {
|
|
|
autoCalcHeight();
|
|
|
}, [autoCalcHeight]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (editorEl.current && !init) {
|
|
|
// require.config({ paths: { vs: 'monaco-editor/min/vs' } });
|
|
|
// require.config({
|
|
|
// 'vs/nls': {
|
|
|
// availableLanguages: {
|
|
|
// '*': 'de',
|
|
|
// },
|
|
|
// },
|
|
|
// });
|
|
|
Promise.all(/*! import() | monaco-editor */[__webpack_require__.e(48764), __webpack_require__.e(39404)]).then(__webpack_require__.bind(__webpack_require__, /*! monaco-editor/esm/vs/editor/editor.api.js */ 26565)).then(function (mod) {
|
|
|
try {
|
|
|
monaco = mod;
|
|
|
editor.current.instance = monaco.editor.create(editorEl.current, {
|
|
|
value: value,
|
|
|
language: getLanguageByMirrorName(language),
|
|
|
theme: theme,
|
|
|
requireConfig: {
|
|
|
'vs/nls': {
|
|
|
availableLanguages: {
|
|
|
'*': 'zh-cn'
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
wordWrap: true,
|
|
|
autoIndent: true,
|
|
|
contextmenu: true,
|
|
|
// formatOnPaste: true,
|
|
|
formatOnType: true
|
|
|
}, overrideServices);
|
|
|
var instance = editor.current.instance;
|
|
|
var menus = actions/* MenuRegistry._menuItems */.BH._menuItems;
|
|
|
var contextMenuEntry = toConsumableArray_default()(menus).find(function (entry) {
|
|
|
return entry[0]._debugName == "EditorContext";
|
|
|
});
|
|
|
var contextMenuLinks = contextMenuEntry[1];
|
|
|
var removableIds = ["editor.action.clipboardCopyWithSyntaxHighlightingAction", "editor.action.quickCommand", "editor.action.clipboardCopyAction", "editor.action.clipboardPasteAction", "editor.action.clipboardCutAction"];
|
|
|
var removeById = function removeById(list, ids) {
|
|
|
var node = list._first;
|
|
|
do {
|
|
|
var _node$element, _node$element$command;
|
|
|
var shouldRemove = ids.includes((_node$element = node.element) === null || _node$element === void 0 ? void 0 : (_node$element$command = _node$element.command) === null || _node$element$command === void 0 ? void 0 : _node$element$command.id);
|
|
|
if (shouldRemove) {
|
|
|
list._remove(node);
|
|
|
}
|
|
|
} while (node = node.next);
|
|
|
};
|
|
|
editorDidMount(instance, monaco);
|
|
|
setTimeout(function () {
|
|
|
autoCalcHeight();
|
|
|
editor.current.instance.addAction({
|
|
|
id: 'd123123',
|
|
|
label: 'Download File',
|
|
|
contextMenuGroupId: '9_cutcopypaste',
|
|
|
run: function run() {
|
|
|
exportRaw(filename || 'educoder.txt', instance.getValue());
|
|
|
}
|
|
|
});
|
|
|
instance.getDomNode().addEventListener('input', function () {
|
|
|
if (optionsRef.current.autoFormat) instance.getAction('editor.action.formatDocument').run();
|
|
|
});
|
|
|
}, 500);
|
|
|
editor.current.subscription = instance.onDidChangeModelContent(function (event) {
|
|
|
if (!inputLock.current) {
|
|
|
autoCalcHeight();
|
|
|
onChange(instance.getValue(), event);
|
|
|
} else {
|
|
|
clearTimeout(inputLockTime.current);
|
|
|
}
|
|
|
inputLockTime.current = setTimeout(function () {
|
|
|
inputLock.current = false;
|
|
|
}, 500);
|
|
|
});
|
|
|
if (!window.Monaco) monaco_suggest_config(monaco, getLanguageByMirrorName(language));
|
|
|
if (forbidCopy) {
|
|
|
removeById(contextMenuLinks, removableIds);
|
|
|
editorEl.current.classList.add("noCopyPaste");
|
|
|
window.removeEventListener("keydown", checkPaste);
|
|
|
window.removeEventListener("paste", checkPaste);
|
|
|
window.addEventListener("keydown", checkPaste);
|
|
|
window.addEventListener("paste", checkPaste);
|
|
|
}
|
|
|
window.Monaco = monaco;
|
|
|
if (onEditBlur) {
|
|
|
instance.onDidBlurEditorWidget(function () {
|
|
|
onEditBlur(instance.getValue());
|
|
|
});
|
|
|
}
|
|
|
if (onFocus) {
|
|
|
instance.onDidFocusEditorText(function () {
|
|
|
onFocus(instance.getValue());
|
|
|
});
|
|
|
}
|
|
|
if (forbidCopy) {
|
|
|
try {
|
|
|
window.addEventListener('paste', onPaste);
|
|
|
} catch (e) {}
|
|
|
}
|
|
|
var ro = onLayout();
|
|
|
setInit(true);
|
|
|
return function () {
|
|
|
var el = editor.current.instance;
|
|
|
el.dispose();
|
|
|
var model = el.getModel();
|
|
|
if (model) {
|
|
|
model.dispose();
|
|
|
}
|
|
|
if (editor.current.subscription) {
|
|
|
editor.current.subscription.dispose();
|
|
|
}
|
|
|
if (forbidCopy) {
|
|
|
window.removeEventListener('paste', onPaste);
|
|
|
}
|
|
|
ro.unobserve(editorEl.current);
|
|
|
};
|
|
|
} catch (e) {
|
|
|
// ;
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
}, []);
|
|
|
(0,react.useEffect)(function () {
|
|
|
var instance = editor.current.instance;
|
|
|
if (instance && init) {
|
|
|
document.addEventListener('keydown', onSaveHandler, false);
|
|
|
return function () {
|
|
|
document.removeEventListener('keydown', onSaveHandler);
|
|
|
};
|
|
|
}
|
|
|
}, [onSave, init]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
var instance = editor.current.instance;
|
|
|
if (instance && init) {
|
|
|
var lang = getLanguageByMirrorName(language);
|
|
|
monaco.editor.setModelLanguage(instance.getModel(), lang);
|
|
|
}
|
|
|
}, [language, init]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
var instance = editor.current.instance;
|
|
|
if (instance && init) {
|
|
|
monaco.editor.setTheme(theme);
|
|
|
}
|
|
|
}, [theme, init]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
var instance = editor.current.instance;
|
|
|
optionsRef.current = options;
|
|
|
if (instance && init) {
|
|
|
instance.updateOptions(objectSpread2_default()({}, options));
|
|
|
setTimeout(function () {
|
|
|
instance.getModel().updateOptions(objectSpread2_default()({}, options));
|
|
|
}, 200);
|
|
|
}
|
|
|
}, [JSON.stringify(options), init]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
var instance = editor.current.instance;
|
|
|
if (instance && init) {
|
|
|
instance.layout();
|
|
|
}
|
|
|
}, [width, height, init]);
|
|
|
|
|
|
// const fixedWidth = processSize(width);
|
|
|
// const fixedHeight = processSize(height);
|
|
|
|
|
|
var _useState3 = (0,react.useState)(processSize(width)),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
fixedWidth = _useState4[0],
|
|
|
setFixedWidth = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)(processSize(height)),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
fixedHeight = _useState6[0],
|
|
|
setFixedHeight = _useState6[1];
|
|
|
var mergeStyle = objectSpread2_default()(objectSpread2_default()({}, style), {}, {
|
|
|
width: fixedWidth,
|
|
|
height: fixedHeight
|
|
|
});
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "my-monaco-editor",
|
|
|
ref: editorEl,
|
|
|
style: mergeStyle
|
|
|
});
|
|
|
});
|
|
|
function DiffEditor(_ref2) {
|
|
|
var _ref2$width = _ref2.width,
|
|
|
width = _ref2$width === void 0 ? '100%' : _ref2$width,
|
|
|
_ref2$height = _ref2.height,
|
|
|
height = _ref2$height === void 0 ? '100%' : _ref2$height,
|
|
|
original = _ref2.original,
|
|
|
modified = _ref2.modified,
|
|
|
language = _ref2.language,
|
|
|
_ref2$options = _ref2.options,
|
|
|
options = _ref2$options === void 0 ? {} : _ref2$options;
|
|
|
var editorEl = (0,react.useRef)();
|
|
|
var _useState7 = (0,react.useState)(null),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
instance = _useState8[0],
|
|
|
setInstance = _useState8[1];
|
|
|
function onLayout(instance) {
|
|
|
var ro;
|
|
|
if (editorEl.current) {
|
|
|
ro = new ResizeObserver_es/* default */.Z(function (entries) {
|
|
|
var _iterator2 = createForOfIteratorHelper_default()(entries),
|
|
|
_step2;
|
|
|
try {
|
|
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
|
var entry = _step2.value;
|
|
|
if (entry.target.offsetHeight > 0 || entry.target.offsetWidth > 0) {
|
|
|
instance.layout();
|
|
|
}
|
|
|
}
|
|
|
} catch (err) {
|
|
|
_iterator2.e(err);
|
|
|
} finally {
|
|
|
_iterator2.f();
|
|
|
}
|
|
|
});
|
|
|
ro.observe(editorEl.current);
|
|
|
}
|
|
|
return ro;
|
|
|
}
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (editorEl.current) {
|
|
|
Promise.all(/*! import() | monaco-editor */[__webpack_require__.e(48764), __webpack_require__.e(39404)]).then(__webpack_require__.bind(__webpack_require__, /*! monaco-editor/esm/vs/editor/editor.api.js */ 26565)).then(function (mod) {
|
|
|
monaco = mod;
|
|
|
var instance = monaco.editor.createDiffEditor(editorEl.current, objectSpread2_default()(objectSpread2_default()({
|
|
|
enableSplitViewResizing: false,
|
|
|
scrollBeyondLastLine: false,
|
|
|
roundedSelection: false,
|
|
|
renderIndicators: false,
|
|
|
useShadows: false,
|
|
|
horizontal: 'hidden',
|
|
|
lineNumbers: 'off',
|
|
|
ignoreTrimWhitespace: false,
|
|
|
'semanticHighlighting.enabled': true,
|
|
|
followsCaret: true,
|
|
|
// resets the navigator state when the user selects something in the editor
|
|
|
ignoreCharChanges: true,
|
|
|
// jump from line to line,
|
|
|
minimap: {
|
|
|
enabled: false
|
|
|
},
|
|
|
readOnly: true
|
|
|
}, options), {}, {
|
|
|
wordWrap: true
|
|
|
}));
|
|
|
setInstance(instance);
|
|
|
var ro = onLayout(instance);
|
|
|
return function () {
|
|
|
instance.dispose();
|
|
|
var model = instance.getModel();
|
|
|
if (model) {
|
|
|
model.dispose();
|
|
|
}
|
|
|
ro.unobserve(editorEl.current);
|
|
|
};
|
|
|
});
|
|
|
}
|
|
|
return function () {
|
|
|
window.removeEventListener("keydown", checkPaste);
|
|
|
window.removeEventListener("paste", checkPaste);
|
|
|
};
|
|
|
}, []);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (instance) {
|
|
|
instance.setModel({
|
|
|
original: monaco.editor.createModel(original, language),
|
|
|
modified: monaco.editor.createModel(modified, language)
|
|
|
});
|
|
|
}
|
|
|
}, [original, modified, language, instance]);
|
|
|
var fixedWidth = processSize(width);
|
|
|
var fixedHeight = processSize(height);
|
|
|
var style = {
|
|
|
width: fixedWidth,
|
|
|
height: fixedHeight
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "my-diff-editor",
|
|
|
ref: editorEl,
|
|
|
style: style
|
|
|
});
|
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 77696:
|
|
|
/*!*********************************************************!*\
|
|
|
!*** ./src/components/tpi-code-setting/CodeSetting.tsx ***!
|
|
|
\*********************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony import */ var antd_es_switch_style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! antd/es/switch/style */ 5812);
|
|
|
/* harmony import */ var antd_es_switch__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! antd/es/switch */ 94594);
|
|
|
/* harmony import */ var antd_es_select_style__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! antd/es/select/style */ 95985);
|
|
|
/* harmony import */ var antd_es_select__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! antd/es/select */ 34041);
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ 67294);
|
|
|
/* harmony import */ var _index_less__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./index.less */ 12867);
|
|
|
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react/jsx-runtime */ 85893);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Option = antd_es_select__WEBPACK_IMPORTED_MODULE_5__/* ["default"].Option */ .Z.Option;
|
|
|
/* harmony default export */ __webpack_exports__["Z"] = (function (_ref) {
|
|
|
var onFontSizeChange = _ref.onFontSizeChange,
|
|
|
cmFontSize = _ref.cmFontSize,
|
|
|
cmCodeMode = _ref.cmCodeMode,
|
|
|
autoFormat = _ref.autoFormat,
|
|
|
onCodeModeChange = _ref.onCodeModeChange,
|
|
|
onTabToSpace = _ref.onTabToSpace,
|
|
|
onAutoFormat = _ref.onAutoFormat,
|
|
|
_ref$className = _ref.className,
|
|
|
className = _ref$className === void 0 ? '' : _ref$className,
|
|
|
tabToSpace = _ref.tabToSpace,
|
|
|
children = _ref.children;
|
|
|
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", {
|
|
|
className: "tpi-code-setting ".concat(className),
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("h3", {
|
|
|
children: "\u4EE3\u7801\u683C\u5F0F"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("section", {
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", {
|
|
|
className: "file-item",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("b", {
|
|
|
children: "\u663E\u793A\u6A21\u5F0F"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(antd_es_select__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
|
|
|
bordered: false,
|
|
|
size: "small",
|
|
|
value: cmCodeMode,
|
|
|
onChange: onCodeModeChange,
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(Option, {
|
|
|
value: 'vs',
|
|
|
children: "\u767D\u8272\u80CC\u666F"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(Option, {
|
|
|
value: 'vs-dark',
|
|
|
children: "\u9ED1\u8272\u80CC\u666F"
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", {
|
|
|
className: "file-item",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("b", {
|
|
|
children: "\u5B57\u4F53\u5927\u5C0F"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)(antd_es_select__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .Z, {
|
|
|
bordered: false,
|
|
|
size: "small",
|
|
|
value: cmFontSize,
|
|
|
onChange: onFontSizeChange,
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(Option, {
|
|
|
value: 12,
|
|
|
children: "12px"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(Option, {
|
|
|
value: 14,
|
|
|
children: "14px"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(Option, {
|
|
|
value: 16,
|
|
|
children: "16px"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(Option, {
|
|
|
value: 18,
|
|
|
children: "18px"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(Option, {
|
|
|
value: 20,
|
|
|
children: "20px"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(Option, {
|
|
|
value: 22,
|
|
|
children: "22px"
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", {
|
|
|
className: "file-item",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("b", {
|
|
|
children: "Tab\u8F6C\u6362"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(antd_es_switch__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, {
|
|
|
checked: tabToSpace,
|
|
|
onChange: onTabToSpace
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", {
|
|
|
className: "file-item",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("b", {
|
|
|
children: "\u4EE3\u7801\u81EA\u52A8\u683C\u5F0F\u5316"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)(antd_es_switch__WEBPACK_IMPORTED_MODULE_6__/* ["default"] */ .Z, {
|
|
|
checked: autoFormat,
|
|
|
onChange: onAutoFormat
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("h3", {
|
|
|
children: "\u5FEB\u6377\u952E"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("section", {
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", {
|
|
|
className: "file-item",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("b", {
|
|
|
children: "\u4FDD\u5B58\u4EE3\u7801"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("span", {
|
|
|
children: "Ctrl + S"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", {
|
|
|
className: "file-item",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("b", {
|
|
|
children: "\u5524\u51FA\u5FEB\u6377\u952E\u5217\u8868"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("span", {
|
|
|
children: "F1 / Alt + F1"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", {
|
|
|
className: "file-item",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("b", {
|
|
|
children: "\u5DE6\u53F3\u7F29\u8FDB"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("span", {
|
|
|
children: "Ctrl + ]/["
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", {
|
|
|
className: "file-item",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("b", {
|
|
|
children: "\u8DF3\u5230\u5339\u914D\u7684\u62EC\u53F7"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("span", {
|
|
|
children: "Ctrl + Shift + \\"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", {
|
|
|
className: "file-item",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("b", {
|
|
|
children: "\u8F6C\u5230\u884C\u9996"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("span", {
|
|
|
children: "Home"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxs)("div", {
|
|
|
className: "file-item",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("b", {
|
|
|
children: "\u8F6C\u5230\u884C\u5C3E"
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_4__.jsx)("span", {
|
|
|
children: "End"
|
|
|
})]
|
|
|
})]
|
|
|
}), children]
|
|
|
});
|
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 61891:
|
|
|
/*!****************************************!*\
|
|
|
!*** ./src/components/useInterval.tsx ***!
|
|
|
\****************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* 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]);
|
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 61050:
|
|
|
/*!*******************************************************************!*\
|
|
|
!*** ./src/pages/Classrooms/Lists/Exercise/components/Unlock.tsx ***!
|
|
|
\*******************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony import */ var antd_es_modal_style__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! antd/es/modal/style */ 35611);
|
|
|
/* harmony import */ var antd_es_modal__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! antd/es/modal */ 85402);
|
|
|
/* harmony import */ var antd_es_row_style__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! antd/es/row/style */ 13062);
|
|
|
/* harmony import */ var antd_es_row__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! antd/es/row */ 71230);
|
|
|
/* harmony import */ var antd_es_button_style__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! antd/es/button/style */ 29913);
|
|
|
/* harmony import */ var antd_es_button__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! antd/es/button */ 71577);
|
|
|
/* harmony import */ var antd_es_col_style__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! antd/es/col/style */ 89032);
|
|
|
/* harmony import */ var antd_es_col__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! antd/es/col */ 15746);
|
|
|
/* harmony import */ var antd_es_input_style__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! antd/es/input/style */ 69463);
|
|
|
/* harmony import */ var antd_es_input__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! antd/es/input */ 75008);
|
|
|
/* harmony import */ var antd_es_table_style__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! antd/es/table/style */ 71854);
|
|
|
/* harmony import */ var antd_es_table__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! antd/es/table */ 67250);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_typeof_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/typeof.js */ 18698);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_typeof_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_typeof_js__WEBPACK_IMPORTED_MODULE_6__);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/regeneratorRuntime.js */ 17061);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_7__);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/asyncToGenerator.js */ 17156);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_8__);
|
|
|
/* harmony import */ var antd_es_form_style__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! antd/es/form/style */ 75627);
|
|
|
/* harmony import */ var antd_es_form__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! antd/es/form */ 51018);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/slicedToArray.js */ 27424);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_10__);
|
|
|
/* harmony import */ var antd_es_statistic_style__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! antd/es/statistic/style */ 14558);
|
|
|
/* harmony import */ var antd_es_statistic__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! antd/es/statistic */ 74763);
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react */ 67294);
|
|
|
/* harmony import */ var _service_exercise__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @/service/exercise */ 51412);
|
|
|
/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! moment */ 30381);
|
|
|
/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_14__);
|
|
|
/* harmony import */ var umi__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! umi */ 89214);
|
|
|
/* harmony import */ var _utils_util__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @/utils/util */ 29427);
|
|
|
/* harmony import */ var _components_Exercise_ip__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! @/components/Exercise/ip */ 79443);
|
|
|
/* harmony import */ var _utils_authority__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! @/utils/authority */ 7);
|
|
|
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react/jsx-runtime */ 85893);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Countdown = antd_es_statistic__WEBPACK_IMPORTED_MODULE_20__/* ["default"].Countdown */ .Z.Countdown;
|
|
|
var Unlock = function Unlock(_ref) {
|
|
|
var _actionTabs$exerciseP9, _actionTabs$exerciseP10, _actionTabs$exerciseP11, _actionTabs$exerciseP12;
|
|
|
var exercise = _ref.exercise,
|
|
|
successCb = _ref.successCb,
|
|
|
dispatch = _ref.dispatch;
|
|
|
var params = (0,umi__WEBPACK_IMPORTED_MODULE_15__.useParams)();
|
|
|
var _Form$useForm = antd_es_form__WEBPACK_IMPORTED_MODULE_21__/* ["default"].useForm */ .Z.useForm(),
|
|
|
_Form$useForm2 = _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_10___default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
var _useState = (0,react__WEBPACK_IMPORTED_MODULE_12__.useState)(false),
|
|
|
_useState2 = _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_slicedToArray_js__WEBPACK_IMPORTED_MODULE_10___default()(_useState, 2),
|
|
|
isLoading = _useState2[0],
|
|
|
setIsLoading = _useState2[1];
|
|
|
var localIpRef = (0,react__WEBPACK_IMPORTED_MODULE_12__.useRef)();
|
|
|
var actionTabs = exercise.actionTabs;
|
|
|
(0,react__WEBPACK_IMPORTED_MODULE_12__.useEffect)(function () {
|
|
|
if (exercise.actionTabs.key === 'student-unlock') {
|
|
|
// if (actionTabs?.exerciseParams?.ip_limit !== 'no' || actionTabs?.exerciseParams?.ip_bind)
|
|
|
// getLocalIp();
|
|
|
setIsLoading(false);
|
|
|
form.resetFields();
|
|
|
}
|
|
|
}, [exercise.actionTabs.key]);
|
|
|
var getLocalIp = function getLocalIp() {
|
|
|
return new Promise( /*#__PURE__*/function () {
|
|
|
var _ref2 = _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_8___default()( /*#__PURE__*/_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_7___default()().mark(function _callee(resolve) {
|
|
|
var _actionTabs$exerciseP, _actionTabs$exerciseP2;
|
|
|
return _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_7___default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return (0,_components_Exercise_ip__WEBPACK_IMPORTED_MODULE_17__/* .findLocalIp */ .y)({
|
|
|
ip_limit: actionTabs === null || actionTabs === void 0 ? void 0 : (_actionTabs$exerciseP = actionTabs.exerciseParams) === null || _actionTabs$exerciseP === void 0 ? void 0 : _actionTabs$exerciseP.ip_limit,
|
|
|
ip_bind: actionTabs === null || actionTabs === void 0 ? void 0 : (_actionTabs$exerciseP2 = actionTabs.exerciseParams) === null || _actionTabs$exerciseP2 === void 0 ? void 0 : _actionTabs$exerciseP2.ip_bind
|
|
|
});
|
|
|
case 2:
|
|
|
localIpRef.current = _context.sent;
|
|
|
return _context.abrupt("return", resolve());
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function (_x) {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}());
|
|
|
};
|
|
|
var handleOk = /*#__PURE__*/function () {
|
|
|
var _ref3 = _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_8___default()( /*#__PURE__*/_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_7___default()().mark(function _callee2() {
|
|
|
var _actionTabs$exerciseP3, _actionTabs$exerciseP4, _actionTabs$exerciseP5, _actionTabs$exerciseP6;
|
|
|
var formValue, unlockRes, _userInfo, _actionTabs$exerciseP7, _actionTabs$exerciseP8, delayedParams, v;
|
|
|
return _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_7___default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
_context2.next = 2;
|
|
|
return form.validateFields();
|
|
|
case 2:
|
|
|
formValue = form.getFieldsValue();
|
|
|
setIsLoading(true);
|
|
|
if (!((actionTabs === null || actionTabs === void 0 ? void 0 : (_actionTabs$exerciseP3 = actionTabs.exerciseParams) === null || _actionTabs$exerciseP3 === void 0 ? void 0 : _actionTabs$exerciseP3.ip_limit) !== 'no' || actionTabs !== null && actionTabs !== void 0 && (_actionTabs$exerciseP4 = actionTabs.exerciseParams) !== null && _actionTabs$exerciseP4 !== void 0 && _actionTabs$exerciseP4.ip_bind)) {
|
|
|
_context2.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
_context2.next = 7;
|
|
|
return getLocalIp();
|
|
|
case 7:
|
|
|
_context2.next = 9;
|
|
|
return (0,_service_exercise__WEBPACK_IMPORTED_MODULE_13__/* .unlockUser */ .ZD)(actionTabs === null || actionTabs === void 0 ? void 0 : (_actionTabs$exerciseP5 = actionTabs.exerciseParams) === null || _actionTabs$exerciseP5 === void 0 ? void 0 : _actionTabs$exerciseP5.id, {
|
|
|
exercise_user_id: actionTabs === null || actionTabs === void 0 ? void 0 : (_actionTabs$exerciseP6 = actionTabs.exerciseParams) === null || _actionTabs$exerciseP6 === void 0 ? void 0 : _actionTabs$exerciseP6.exercise_user_id,
|
|
|
unlock_key: formValue.unlock_key,
|
|
|
ip: localIpRef.current
|
|
|
});
|
|
|
case 9:
|
|
|
unlockRes = _context2.sent;
|
|
|
if (!(unlockRes.status === 0)) {
|
|
|
_context2.next = 22;
|
|
|
break;
|
|
|
}
|
|
|
if (!successCb) {
|
|
|
_context2.next = 15;
|
|
|
break;
|
|
|
}
|
|
|
dispatch({
|
|
|
type: 'exercise/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
successCb();
|
|
|
return _context2.abrupt("return");
|
|
|
case 15:
|
|
|
if (!formValue.time) {
|
|
|
_context2.next = 19;
|
|
|
break;
|
|
|
}
|
|
|
delayedParams = {
|
|
|
time: moment__WEBPACK_IMPORTED_MODULE_14___default()(formValue.time).format("YYYY-MM-DD HH:mm"),
|
|
|
exercise_user_id: actionTabs === null || actionTabs === void 0 ? void 0 : (_actionTabs$exerciseP7 = actionTabs.exerciseParams) === null || _actionTabs$exerciseP7 === void 0 ? void 0 : _actionTabs$exerciseP7.exercise_user_id,
|
|
|
id: actionTabs === null || actionTabs === void 0 ? void 0 : (_actionTabs$exerciseP8 = actionTabs.exerciseParams) === null || _actionTabs$exerciseP8 === void 0 ? void 0 : _actionTabs$exerciseP8.id
|
|
|
};
|
|
|
_context2.next = 19;
|
|
|
return (0,_service_exercise__WEBPACK_IMPORTED_MODULE_13__/* .delayedTime */ .qz)(delayedParams);
|
|
|
case 19:
|
|
|
v = actionTabs === null || actionTabs === void 0 ? void 0 : actionTabs.exerciseParams;
|
|
|
(0,_utils_util__WEBPACK_IMPORTED_MODULE_16__/* .startExercise */ .nr)({
|
|
|
inner_ip: v.inner_ip,
|
|
|
public_ip: v.public_ip,
|
|
|
open_camera: v.open_camera,
|
|
|
ip_limit: v.ip_limit,
|
|
|
ip_bind: v.ip_bind,
|
|
|
exercise_tips: v.exercise_tips,
|
|
|
exerciseId: v.id,
|
|
|
screen_open: v.screen_open,
|
|
|
screen_num: v.screen_num,
|
|
|
screen_sec: v.screen_sec,
|
|
|
coursesId: params.coursesId,
|
|
|
login: (_userInfo = (0,_utils_authority__WEBPACK_IMPORTED_MODULE_18__/* .userInfo */ .eY)()) === null || _userInfo === void 0 ? void 0 : _userInfo.login,
|
|
|
history: history,
|
|
|
identity_verify: v.identity_verify,
|
|
|
open_phone_video_recording: v.open_phone_video_recording,
|
|
|
current_status: v.current_status
|
|
|
});
|
|
|
dispatch({
|
|
|
type: 'exercise/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
case 22:
|
|
|
setIsLoading(false);
|
|
|
case 23:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function handleOk() {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var columns = [{
|
|
|
title: 'IP地址',
|
|
|
dataIndex: 'ip',
|
|
|
key: 'ip',
|
|
|
render: function render(text) {
|
|
|
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)("span", {
|
|
|
className: text.indexOf("异常") > -1 ? 'c-red' : 'c-green',
|
|
|
children: text
|
|
|
});
|
|
|
}
|
|
|
}, {
|
|
|
title: '浏览器',
|
|
|
dataIndex: 'browser',
|
|
|
key: 'browser',
|
|
|
render: function render(text) {
|
|
|
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)("span", {
|
|
|
className: text.indexOf("异常") > -1 ? 'c-red' : 'c-green',
|
|
|
children: text
|
|
|
});
|
|
|
}
|
|
|
}, {
|
|
|
title: '上次登录时间',
|
|
|
dataIndex: 'last_login_time',
|
|
|
key: 'last_login_time'
|
|
|
}];
|
|
|
var hasError5 = (actionTabs === null || actionTabs === void 0 ? void 0 : (_actionTabs$exerciseP9 = actionTabs.exerciseParams) === null || _actionTabs$exerciseP9 === void 0 ? void 0 : _actionTabs$exerciseP9.errorMessage) && _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_typeof_js__WEBPACK_IMPORTED_MODULE_6___default()(actionTabs === null || actionTabs === void 0 ? void 0 : (_actionTabs$exerciseP10 = actionTabs.exerciseParams) === null || _actionTabs$exerciseP10 === void 0 ? void 0 : _actionTabs$exerciseP10.errorMessage) === "object";
|
|
|
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.Fragment, {
|
|
|
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(antd_es_modal__WEBPACK_IMPORTED_MODULE_22__/* ["default"] */ .Z, {
|
|
|
width: 514,
|
|
|
centered: true,
|
|
|
closable: !!(actionTabs !== null && actionTabs !== void 0 && (_actionTabs$exerciseP11 = actionTabs.exerciseParams) !== null && _actionTabs$exerciseP11 !== void 0 && _actionTabs$exerciseP11.unlockClose),
|
|
|
maskClosable: false,
|
|
|
keyboard: false,
|
|
|
maskStyle: {
|
|
|
background: "#000"
|
|
|
},
|
|
|
title: '提示',
|
|
|
open: exercise.actionTabs.key === 'student-unlock',
|
|
|
footer: null,
|
|
|
onCancel: function onCancel() {
|
|
|
dispatch({
|
|
|
type: 'exercise/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
},
|
|
|
children: [hasError5 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)("div", {
|
|
|
style: {
|
|
|
marginBottom: 16
|
|
|
},
|
|
|
children: "\u8BE5\u8D26\u53F7\u5DF2\u7ECF\u5728\u5176\u4ED6\u8BBE\u5907\u4E0A\u767B\u5F55\uFF0C\u82E5\u975E\u672C\u4EBA\u64CD\u4F5C\uFF0C\u8BF7\u8054\u7CFB\u76D1\u8003\u8001\u5E08\u8BF4\u660E\u60C5\u51B5\u3002 "
|
|
|
}), !hasError5 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)("div", {
|
|
|
style: {
|
|
|
marginBottom: 16
|
|
|
},
|
|
|
children: "\u7CFB\u7EDF\u68C0\u6D4B\u5230\u60A8\u5728\u8003\u8BD5\u65F6\u4E2D\u9014\u9000\u51FA\uFF0C\u73B0\u5DF2\u5C06\u8003\u8BD5\u9501\u5B9A\u3002\u5982\u9700\u7EE7\u7EED\u8FDB\u884C\u8003\u8BD5\uFF0C \u8BF7\u5C3D\u5FEB\u8054\u7CFB\u8BFE\u5802\u8001\u5E08\u8FDB\u884C\u89E3\u9501\uFF01"
|
|
|
}), hasError5 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(antd_es_table__WEBPACK_IMPORTED_MODULE_23__/* ["default"] */ .Z, {
|
|
|
className: "mb20",
|
|
|
pagination: {
|
|
|
hideOnSinglePage: true
|
|
|
},
|
|
|
dataSource: [(actionTabs === null || actionTabs === void 0 ? void 0 : (_actionTabs$exerciseP12 = actionTabs.exerciseParams) === null || _actionTabs$exerciseP12 === void 0 ? void 0 : _actionTabs$exerciseP12.errorMessage) || {}],
|
|
|
columns: columns
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)("div", {
|
|
|
className: "",
|
|
|
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(antd_es_form__WEBPACK_IMPORTED_MODULE_21__/* ["default"] */ .Z, {
|
|
|
form: form,
|
|
|
layout: "vertical",
|
|
|
autoComplete: "off",
|
|
|
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(antd_es_form__WEBPACK_IMPORTED_MODULE_21__/* ["default"].Item */ .Z.Item, {
|
|
|
label: "\u8003\u8BD5\u89E3\u9501\u7801",
|
|
|
name: "unlock_key",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入考试解锁码'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(antd_es_input__WEBPACK_IMPORTED_MODULE_24__/* ["default"].Password */ .Z.Password, {
|
|
|
autoComplete: "off",
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u8003\u8BD5\u89E3\u9501\u7801",
|
|
|
visibilityToggle: false
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(antd_es_row__WEBPACK_IMPORTED_MODULE_25__/* ["default"] */ .Z, {
|
|
|
justify: "space-between",
|
|
|
align: "middle",
|
|
|
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(antd_es_col__WEBPACK_IMPORTED_MODULE_26__/* ["default"] */ .Z, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(antd_es_col__WEBPACK_IMPORTED_MODULE_26__/* ["default"] */ .Z, {
|
|
|
children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(antd_es_button__WEBPACK_IMPORTED_MODULE_27__/* ["default"] */ .Z, {
|
|
|
loading: isLoading,
|
|
|
onClick: handleOk,
|
|
|
children: "\u8FDB\u5165\u8003\u8BD5"
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ __webpack_exports__["Z"] = ((0,umi__WEBPACK_IMPORTED_MODULE_15__.connect)(function (_ref4) {
|
|
|
var exercise = _ref4.exercise;
|
|
|
return {
|
|
|
exercise: exercise
|
|
|
};
|
|
|
})(Unlock));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 64161:
|
|
|
/*!***********************************************!*\
|
|
|
!*** ./src/pages/Demo/index.tsx + 15 modules ***!
|
|
|
\***********************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
// ESM COMPAT FLAG
|
|
|
__webpack_require__.r(__webpack_exports__);
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"default": function() { return /* binding */ Demo; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/row/style/index.js
|
|
|
var style = __webpack_require__(13062);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/row/index.js
|
|
|
var row = __webpack_require__(71230);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/col/style/index.js
|
|
|
var col_style = __webpack_require__(89032);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/col/index.js
|
|
|
var col = __webpack_require__(15746);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/button/style/index.js + 1 modules
|
|
|
var button_style = __webpack_require__(29913);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/button/index.js
|
|
|
var es_button = __webpack_require__(71577);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
|
var react = __webpack_require__(67294);
|
|
|
// EXTERNAL MODULE: ./src/utils/fullscreen.ts
|
|
|
var fullscreen = __webpack_require__(15994);
|
|
|
// EXTERNAL MODULE: ./src/utils/fetch.ts
|
|
|
var fetch = __webpack_require__(84519);
|
|
|
// EXTERNAL MODULE: ./src/utils/util.tsx
|
|
|
var util = __webpack_require__(29427);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var Demomodules = ({"flex_box_center":"flex_box_center___Ev3CJ","flex_space_between":"flex_space_between____62qx","flex_box_vertical_center":"flex_box_vertical_center___uaibF","flex_box_center_end":"flex_box_center_end___IccdO","flex_box_column":"flex_box_column___rYhKw","wrap":"wrap___d2dw2","full":"full___aj305"});
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/modal/style/index.js + 1 modules
|
|
|
var modal_style = __webpack_require__(35611);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/modal/index.js + 7 modules
|
|
|
var modal = __webpack_require__(85402);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/spin/style/index.js + 1 modules
|
|
|
var spin_style = __webpack_require__(22536);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/spin/index.js
|
|
|
var spin = __webpack_require__(11382);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/menu/style/index.js + 1 modules
|
|
|
var menu_style = __webpack_require__(83736);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/menu/index.js + 5 modules
|
|
|
var es_menu = __webpack_require__(66516);
|
|
|
// 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/antd/es/message/style/index.js + 1 modules
|
|
|
var message_style = __webpack_require__(14934);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/message/index.js + 1 modules
|
|
|
var message = __webpack_require__(12461);
|
|
|
// 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/antd/es/tooltip/style/index.js + 1 modules
|
|
|
var tooltip_style = __webpack_require__(38390);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/tooltip/index.js + 3 modules
|
|
|
var tooltip = __webpack_require__(84908);
|
|
|
// 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/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/antd/es/tabs/style/index.js + 1 modules
|
|
|
var tabs_style = __webpack_require__(99558);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/tabs/index.js + 22 modules
|
|
|
var tabs = __webpack_require__(3381);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var Warehousemodules = ({"flex_box_center":"flex_box_center___UTKCA","flex_space_between":"flex_space_between___vtxee","flex_box_vertical_center":"flex_box_vertical_center___uUC4R","flex_box_center_end":"flex_box_center_end___LS055","flex_box_column":"flex_box_column___hjR5l","menu":"menu___FPo7c","warehouse":"warehouse___QWVPT","header":"header___wP5Hx","title":"title___T5yXM","content":"content___w0dAS","left":"left___xZRzx","close":"close___KBRyH","right":"right___v5JXP","loading":"loading___SunBf","empty":"empty___dvPGr","tabs":"tabs___zD__Z","line":"line___VNd7N","footer":"footer___Yx5nS","commit":"commit___Ui8A5","blueLight":"blueLight___ETo3e","filePathWrp":"filePathWrp___qeMMR","filePath":"filePath___tc_hQ","bottom0":"bottom0___tgeX3"});
|
|
|
// EXTERNAL MODULE: ./src/.umi-production/exports.ts + 8 modules
|
|
|
var _umi_production_exports = __webpack_require__(89214);
|
|
|
// 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/dropdown/style/index.js + 1 modules
|
|
|
var dropdown_style = __webpack_require__(68018);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/dropdown/index.js
|
|
|
var dropdown = __webpack_require__(13013);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/tree/style/index.js + 1 modules
|
|
|
var tree_style = __webpack_require__(62216);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/tree/index.js + 9 modules
|
|
|
var tree = __webpack_require__(54205);
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/service/index.js
|
|
|
var service = __webpack_require__(66446);
|
|
|
// EXTERNAL MODULE: ./node_modules/react-copy-to-clipboard/lib/index.js
|
|
|
var lib = __webpack_require__(74855);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/input/style/index.js + 1 modules
|
|
|
var input_style = __webpack_require__(69463);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/input/index.js + 5 modules
|
|
|
var input = __webpack_require__(75008);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/form/style/index.js + 1 modules
|
|
|
var form_style = __webpack_require__(75627);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/form/index.js + 17 modules
|
|
|
var es_form = __webpack_require__(51018);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/AddFile.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var AddFilemodules = ({"wrap":"wrap___SO6Mn","modal":"modal___zNd_3","title":"title___EX56C","path":"path___IqyHA","colorBlue":"colorBlue___MSdA7","width240":"width240___mU1C0","filePath":"filePath___v0Tze"});
|
|
|
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(85893);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/AddFolder.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _excluded = ["shixunsDetail", "globalSetting", "loading", "user", "dispatch", "taskData", "isRepository"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var AddFile = function AddFile(_ref) {
|
|
|
var shixunsDetail = _ref.shixunsDetail,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
user = _ref.user,
|
|
|
dispatch = _ref.dispatch,
|
|
|
taskData = _ref.taskData,
|
|
|
isRepository = _ref.isRepository,
|
|
|
props = objectWithoutProperties_default()(_ref, _excluded);
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var params = objectSpread2_default()(objectSpread2_default()({}, (0,_umi_production_exports.useParams)()), (0,_umi_production_exports.useLocation)().query);
|
|
|
var _useState = (0,react.useState)({}),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
formValue = _useState2[0],
|
|
|
setFormValue = _useState2[1];
|
|
|
var shixunId = (0,react.useRef)();
|
|
|
var _Form$useForm = es_form/* default.useForm */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
var _useState3 = (0,react.useState)(''),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
filePath = _useState4[0],
|
|
|
setFilePath = _useState4[1];
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (props.visible) {
|
|
|
form.resetFields();
|
|
|
}
|
|
|
}, [props.visible]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
var pathArray = sessionStorage.getItem('pathArray');
|
|
|
if (pathArray) {
|
|
|
// 拼接成绝对路径
|
|
|
var joinPath = pathArray.split(',').join('/');
|
|
|
var path = joinPath.indexOf('/') === 0 ? joinPath.substr(1) : joinPath;
|
|
|
setFilePath(path);
|
|
|
}
|
|
|
}, []);
|
|
|
(0,react.useEffect)(function () {
|
|
|
var _location$pathname, _location$pathname$sp;
|
|
|
shixunId.current = (_location$pathname = location.pathname) === null || _location$pathname === void 0 ? void 0 : (_location$pathname$sp = _location$pathname.split('/')) === null || _location$pathname$sp === void 0 ? void 0 : _location$pathname$sp[2];
|
|
|
}, []);
|
|
|
var handleFinish = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var values,
|
|
|
res,
|
|
|
_args = arguments;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
values = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
|
|
|
_context.next = 3;
|
|
|
return dispatch({
|
|
|
type: 'shixunsDetail/addRepositoryFile',
|
|
|
payload: {
|
|
|
id: taskData.myshixun.identifier,
|
|
|
message: values.commitMessage,
|
|
|
content: '',
|
|
|
path: (!!props.defaultPath ? props.defaultPath + "/" : "") + values.path + '/' + (values.file || '.gitkeep'),
|
|
|
secret_repository: isRepository ? undefined : true
|
|
|
}
|
|
|
});
|
|
|
case 3:
|
|
|
res = _context.sent;
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
message/* default.success */.ZP.success("添加成功");
|
|
|
props.onOK({
|
|
|
path: (!!props.defaultPath ? props.defaultPath + "/" : "") + values.path + '/' + (values.file || '.gitkeep'),
|
|
|
name: values.path.split("/")[values.path.split("/").length - 1]
|
|
|
});
|
|
|
props.onClose();
|
|
|
}
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function handleFinish() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleReturn = function handleReturn() {
|
|
|
var _location$pathname2, _location$pathname2$s;
|
|
|
_umi_production_exports.history.push("/shixuns/".concat(shixunId.current, "/").concat((_location$pathname2 = location.pathname) === null || _location$pathname2 === void 0 ? void 0 : (_location$pathname2$s = _location$pathname2.split('/')) === null || _location$pathname2$s === void 0 ? void 0 : _location$pathname2$s[3]).concat(filePath ? "/master/shixun_show/".concat(filePath) : ""));
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
width: "60%",
|
|
|
centered: true,
|
|
|
open: props.visible,
|
|
|
wrapClassName: AddFilemodules.modal,
|
|
|
onOk: function onOk() {
|
|
|
form.submit();
|
|
|
},
|
|
|
onCancel: props.onClose,
|
|
|
title: "\u65B0\u5EFA\u6587\u4EF6\u5939",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("section", {
|
|
|
className: AddFilemodules.bg,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: AddFilemodules.wrap,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, {
|
|
|
className: "mt10",
|
|
|
form: form,
|
|
|
scrollToFirstError: true,
|
|
|
layout: "vertical",
|
|
|
onFinish: handleFinish,
|
|
|
onChange: function onChange() {
|
|
|
var _value$path, _value$file, _arr$filter, _arr2$filter;
|
|
|
var value = objectSpread2_default()({}, form.getFieldsValue());
|
|
|
var arr = value === null || value === void 0 ? void 0 : (_value$path = value.path) === null || _value$path === void 0 ? void 0 : _value$path.split("");
|
|
|
var arr2 = value === null || value === void 0 ? void 0 : (_value$file = value.file) === null || _value$file === void 0 ? void 0 : _value$file.split("");
|
|
|
if (!!(arr !== null && arr !== void 0 && (_arr$filter = arr.filter(function (item) {
|
|
|
return item == "/";
|
|
|
})) !== null && _arr$filter !== void 0 && _arr$filter.length)) {
|
|
|
value.path = value.path.substring(0, value.path.length - 1);
|
|
|
}
|
|
|
if (!!(arr2 !== null && arr2 !== void 0 && (_arr2$filter = arr2.filter(function (item) {
|
|
|
return item == "/";
|
|
|
})) !== null && _arr2$filter !== void 0 && _arr2$filter.length)) {
|
|
|
value.file = value.file.substring(0, value.path.length - 1);
|
|
|
}
|
|
|
form.setFieldsValue(objectSpread2_default()({}, value));
|
|
|
setFormValue(value);
|
|
|
}
|
|
|
// onValuesChange={() => setFormValue({ ...form.getFieldsValue() })}
|
|
|
,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u6587\u4EF6\u5939\u540D\u79F0\uFF1A",
|
|
|
name: "path",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: AddFilemodules.filePath,
|
|
|
children: props.defaultPath + "/"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
name: "path",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入文件夹名称'
|
|
|
}, {
|
|
|
whitespace: true,
|
|
|
message: '请勿输入空格'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u6587\u4EF6\u5939\u540D\u79F0",
|
|
|
size: "large"
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u6587\u4EF6\u540D\u79F0\uFF1A",
|
|
|
name: "file"
|
|
|
// rules={[
|
|
|
// { required: true, message: '请输入文件名称' },
|
|
|
// { whitespace: true, message: '请勿输入空格' }
|
|
|
// ]}
|
|
|
,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u6587\u4EF6\u540D\u79F0\uFF0C\u5982\u679C\u4E0D\u586B\u5199\u7CFB\u7EDF\u5C06\u5728\u6587\u4EF6\u5939\u4E0B\u521B\u5EFA.gitkeep\u7684\u9ED8\u8BA4\u6587\u4EF6",
|
|
|
size: "large"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u63D0\u4EA4\u4FE1\u606F\uFF1A",
|
|
|
name: "commitMessage",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入提交信息'
|
|
|
}, {
|
|
|
whitespace: true,
|
|
|
message: '请勿输入空格'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u672C\u6B21\u63D0\u4EA4\u7684\u4E3B\u8981\u4FE1\u606F\uFF0C\u5408\u7406\u7684\u63CF\u8FF0\u4FE1\u606F\u6709\u5229\u4E8E\u4EE3\u7801\u5386\u53F2\u8BB0\u5F55\u7684\u7BA1\u7406",
|
|
|
size: "large"
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var AddFolder = ((0,_umi_production_exports.connect)(function (_ref3) {
|
|
|
var shixunsDetail = _ref3.shixunsDetail,
|
|
|
loading = _ref3.loading,
|
|
|
globalSetting = _ref3.globalSetting,
|
|
|
user = _ref3.user;
|
|
|
return {
|
|
|
shixunsDetail: shixunsDetail,
|
|
|
globalSetting: globalSetting,
|
|
|
user: user,
|
|
|
loading: loading.models.index
|
|
|
};
|
|
|
})(AddFile));
|
|
|
// EXTERNAL MODULE: ./src/components/markdown-editor/code-block/index.tsx
|
|
|
var code_block = __webpack_require__(97501);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/AddFile.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var AddFile_excluded = ["shixunsDetail", "globalSetting", "loading", "user", "taskData", "dispatch", "isRepository", "onClose"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var AddFile_AddFile = function AddFile(_ref) {
|
|
|
var shixunsDetail = _ref.shixunsDetail,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
user = _ref.user,
|
|
|
taskData = _ref.taskData,
|
|
|
dispatch = _ref.dispatch,
|
|
|
isRepository = _ref.isRepository,
|
|
|
onClose = _ref.onClose,
|
|
|
props = objectWithoutProperties_default()(_ref, AddFile_excluded);
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var params = objectSpread2_default()(objectSpread2_default()({}, (0,_umi_production_exports.useParams)()), (0,_umi_production_exports.useLocation)().query);
|
|
|
var _useState = (0,react.useState)({}),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
formValue = _useState2[0],
|
|
|
setFormValue = _useState2[1];
|
|
|
var shixunId = (0,react.useRef)();
|
|
|
var _Form$useForm = es_form/* default.useForm */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
var _useState3 = (0,react.useState)(''),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
filePath = _useState4[0],
|
|
|
setFilePath = _useState4[1];
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (props.visible) {
|
|
|
form.resetFields();
|
|
|
}
|
|
|
}, [props.visible]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
var pathArray = sessionStorage.getItem('pathArray');
|
|
|
if (pathArray) {
|
|
|
// 拼接成绝对路径
|
|
|
var joinPath = pathArray.split(',').join('/');
|
|
|
var path = joinPath.indexOf('/') === 0 ? joinPath.substr(1) : joinPath;
|
|
|
setFilePath(path);
|
|
|
}
|
|
|
}, []);
|
|
|
(0,react.useEffect)(function () {
|
|
|
var _location$pathname, _location$pathname$sp;
|
|
|
shixunId.current = (_location$pathname = location.pathname) === null || _location$pathname === void 0 ? void 0 : (_location$pathname$sp = _location$pathname.split('/')) === null || _location$pathname$sp === void 0 ? void 0 : _location$pathname$sp[2];
|
|
|
}, []);
|
|
|
var handleFinish = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var values,
|
|
|
res,
|
|
|
_args = arguments;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
values = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
|
|
|
_context.next = 3;
|
|
|
return (0,service/* addMyRepositoryFile */.MI)({
|
|
|
// id: params.id,
|
|
|
id: taskData.myshixun.identifier,
|
|
|
message: values.commitMessage,
|
|
|
content: values.codeMirror,
|
|
|
path: (!!props.defaultPath ? props.defaultPath + "/" : "") + values.path,
|
|
|
secret_repository: isRepository ? undefined : true
|
|
|
});
|
|
|
case 3:
|
|
|
res = _context.sent;
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
message/* default.success */.ZP.success("添加成功");
|
|
|
props.onOK({
|
|
|
path: (!!props.defaultPath ? props.defaultPath + "/" : "") + values.path,
|
|
|
name: values.path.split("/")[values.path.split("/").length - 1]
|
|
|
});
|
|
|
onClose();
|
|
|
// const returnUrl = isRepository.current ?
|
|
|
// `/shixuns/${shixunId.current}/repository${filePath ? `/master/shixun_show/${filePath}` : ""}` :
|
|
|
// `/shixuns/${shixunId.current}/secret_repository`;
|
|
|
// history.replace(returnUrl);
|
|
|
}
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function handleFinish() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleReturn = function handleReturn() {
|
|
|
var _location$pathname2, _location$pathname2$s;
|
|
|
_umi_production_exports.history.push("/shixuns/".concat(shixunId.current, "/").concat((_location$pathname2 = location.pathname) === null || _location$pathname2 === void 0 ? void 0 : (_location$pathname2$s = _location$pathname2.split('/')) === null || _location$pathname2$s === void 0 ? void 0 : _location$pathname2$s[3]).concat(filePath ? "/master/shixun_show/".concat(filePath) : ""));
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
width: "60%",
|
|
|
open: props.visible,
|
|
|
wrapClassName: AddFilemodules.modal,
|
|
|
centered: true,
|
|
|
onOk: function onOk() {
|
|
|
form.submit();
|
|
|
},
|
|
|
onCancel: onClose,
|
|
|
title: "\u65B0\u5EFA\u6587\u4EF6",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("section", {
|
|
|
className: AddFilemodules.bg,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: AddFilemodules.wrap,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, {
|
|
|
className: "mt10",
|
|
|
form: form,
|
|
|
scrollToFirstError: true,
|
|
|
layout: "vertical",
|
|
|
onFinish: handleFinish,
|
|
|
onChange: function onChange() {
|
|
|
var _value$path, _arr$filter;
|
|
|
var value = objectSpread2_default()({}, form.getFieldsValue());
|
|
|
var arr = value === null || value === void 0 ? void 0 : (_value$path = value.path) === null || _value$path === void 0 ? void 0 : _value$path.split("");
|
|
|
if ((arr === null || arr === void 0 ? void 0 : (_arr$filter = arr.filter(function (item) {
|
|
|
return item == "/";
|
|
|
})) === null || _arr$filter === void 0 ? void 0 : _arr$filter.length) > 1) {
|
|
|
value.path = value.path.substring(0, value.path.length - 1);
|
|
|
}
|
|
|
form.setFieldsValue(objectSpread2_default()({}, value));
|
|
|
setFormValue(value);
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u6587\u4EF6\u540D\u79F0\u6216\u6587\u4EF6\u8DEF\u5F84\uFF1A",
|
|
|
name: "path",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: AddFilemodules.filePath,
|
|
|
children: props.defaultPath + "/"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
name: "path",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入文件名称'
|
|
|
}, {
|
|
|
whitespace: true,
|
|
|
message: '请勿输入空格'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u6587\u4EF6\u540D\u79F0",
|
|
|
size: "large"
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u63D0\u4EA4\u4FE1\u606F\uFF1A",
|
|
|
name: "commitMessage",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入提交信息'
|
|
|
}, {
|
|
|
whitespace: true,
|
|
|
message: '请勿输入空格'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u672C\u6B21\u63D0\u4EA4\u7684\u4E3B\u8981\u4FE1\u606F\uFF0C\u5408\u7406\u7684\u63CF\u8FF0\u4FE1\u606F\u6709\u5229\u4E8E\u4EE3\u7801\u5386\u53F2\u8BB0\u5F55\u7684\u7BA1\u7406",
|
|
|
size: "large"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "mt10 mb20",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
name: "codeMirror",
|
|
|
label: "\u6587\u4EF6\u5185\u5BB9\uFF1A",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入文件内容'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(code_block/* MyCodeMirror */.h, {
|
|
|
options: {
|
|
|
modal: "javascript",
|
|
|
lineNumbers: true,
|
|
|
theme: "railscasts",
|
|
|
indentUnit: 4,
|
|
|
matchBrackets: true,
|
|
|
autoRefresh: true,
|
|
|
smartIndent: true,
|
|
|
extraKeys: {
|
|
|
"Alt-/": "autocomplete"
|
|
|
},
|
|
|
autofocus: true,
|
|
|
styleActiveLine: true,
|
|
|
lint: true,
|
|
|
linkurl: '',
|
|
|
gutters: ["CodeMirror-linenumbers", "breakpoints", "CodeMirror-lint-markers"]
|
|
|
}
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var components_AddFile = ((0,_umi_production_exports.connect)(function (_ref3) {
|
|
|
var shixunsDetail = _ref3.shixunsDetail,
|
|
|
loading = _ref3.loading,
|
|
|
globalSetting = _ref3.globalSetting,
|
|
|
user = _ref3.user;
|
|
|
return {
|
|
|
shixunsDetail: shixunsDetail,
|
|
|
globalSetting: globalSetting,
|
|
|
user: user,
|
|
|
loading: loading.models.index
|
|
|
};
|
|
|
})(AddFile_AddFile));
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/RenameFile.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var RenameFile_excluded = ["shixunsDetail", "globalSetting", "loading", "user", "dispatch", "isRepository", "taskData"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var RenameFile_AddFile = function AddFile(_ref) {
|
|
|
var shixunsDetail = _ref.shixunsDetail,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
user = _ref.user,
|
|
|
dispatch = _ref.dispatch,
|
|
|
isRepository = _ref.isRepository,
|
|
|
taskData = _ref.taskData,
|
|
|
props = objectWithoutProperties_default()(_ref, RenameFile_excluded);
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var params = objectSpread2_default()(objectSpread2_default()({}, (0,_umi_production_exports.useParams)()), (0,_umi_production_exports.useLocation)().query);
|
|
|
var _useState = (0,react.useState)({}),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
formValue = _useState2[0],
|
|
|
setFormValue = _useState2[1];
|
|
|
var shixunId = (0,react.useRef)();
|
|
|
var _Form$useForm = es_form/* default.useForm */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
var _useState3 = (0,react.useState)(''),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
filePath = _useState4[0],
|
|
|
setFilePath = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)(''),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
fileName = _useState6[0],
|
|
|
setFileName = _useState6[1];
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (props.visible) {
|
|
|
form.resetFields();
|
|
|
}
|
|
|
}, [props.visible]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
var pathArray = props.defaultPath.split("/");
|
|
|
// if (pathArray) {
|
|
|
// // 拼接成绝对路径
|
|
|
// const joinPath = pathArray.split(',').join('/');
|
|
|
// const path = joinPath.indexOf('/') === 0 ? joinPath.substr(1) : joinPath;
|
|
|
// setFilePath(path);
|
|
|
// }
|
|
|
if (pathArray.length === 1) {
|
|
|
setFilePath("");
|
|
|
setFileName(props.defaultPath);
|
|
|
} else {
|
|
|
setFileName(pathArray.pop());
|
|
|
setFilePath(pathArray.join("/") + "/");
|
|
|
}
|
|
|
}, [props.defaultPath]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
var _location$pathname, _location$pathname$sp;
|
|
|
shixunId.current = (_location$pathname = location.pathname) === null || _location$pathname === void 0 ? void 0 : (_location$pathname$sp = _location$pathname.split('/')) === null || _location$pathname$sp === void 0 ? void 0 : _location$pathname$sp[2];
|
|
|
}, []);
|
|
|
var handleFinish = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var _taskData$shixun;
|
|
|
var values,
|
|
|
res,
|
|
|
_args = arguments;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
values = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
|
|
|
_context.next = 3;
|
|
|
return (0,service/* moveMyGitFile */.g7)({
|
|
|
id: taskData === null || taskData === void 0 ? void 0 : (_taskData$shixun = taskData.shixun) === null || _taskData$shixun === void 0 ? void 0 : _taskData$shixun.identifier,
|
|
|
from: props.defaultPath,
|
|
|
to: filePath + values.path,
|
|
|
message: values.commitMessage || "".concat(props.defaultPath, " rename to ").concat(filePath).concat(values.path, " ")
|
|
|
});
|
|
|
case 3:
|
|
|
res = _context.sent;
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
message/* default.success */.ZP.success("操作成功");
|
|
|
props.onOK({
|
|
|
path: values.path,
|
|
|
name: values.path
|
|
|
});
|
|
|
props.onClose();
|
|
|
// const returnUrl = isRepository.current ?
|
|
|
// `/shixuns/${shixunId.current}/repository${filePath ? `/master/shixun_show/${filePath}` : ""}` :
|
|
|
// `/shixuns/${shixunId.current}/secret_repository`;
|
|
|
// history.replace(returnUrl);
|
|
|
}
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function handleFinish() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleReturn = function handleReturn() {
|
|
|
var _location$pathname2, _location$pathname2$s;
|
|
|
_umi_production_exports.history.push("/shixuns/".concat(shixunId.current, "/").concat((_location$pathname2 = location.pathname) === null || _location$pathname2 === void 0 ? void 0 : (_location$pathname2$s = _location$pathname2.split('/')) === null || _location$pathname2$s === void 0 ? void 0 : _location$pathname2$s[3]).concat(filePath ? "/master/shixun_show/".concat(filePath) : ""));
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
width: "40%",
|
|
|
open: props.visible,
|
|
|
wrapClassName: AddFilemodules.modal,
|
|
|
centered: true,
|
|
|
onOk: function onOk() {
|
|
|
form.submit();
|
|
|
},
|
|
|
onCancel: props.onClose,
|
|
|
title: "\u63D0\u4EA4\u8BF4\u660E",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("section", {
|
|
|
className: AddFilemodules.bg,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: AddFilemodules.wrap,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, {
|
|
|
className: "mt10",
|
|
|
form: form,
|
|
|
scrollToFirstError: true,
|
|
|
layout: "vertical",
|
|
|
onFinish: handleFinish,
|
|
|
onChange: function onChange() {
|
|
|
var _value$path, _arr$filter;
|
|
|
var value = objectSpread2_default()({}, form.getFieldsValue());
|
|
|
var arr = value === null || value === void 0 ? void 0 : (_value$path = value.path) === null || _value$path === void 0 ? void 0 : _value$path.split("");
|
|
|
if ((arr === null || arr === void 0 ? void 0 : (_arr$filter = arr.filter(function (item) {
|
|
|
return item == "/";
|
|
|
})) === null || _arr$filter === void 0 ? void 0 : _arr$filter.length) > 1) {
|
|
|
value.path = value.path.substring(0, value.path.length - 1);
|
|
|
}
|
|
|
form.setFieldsValue(objectSpread2_default()({}, value));
|
|
|
setFormValue(value);
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u91CD\u547D\u540D\uFF1A",
|
|
|
name: "path",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(row/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
name: "path",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入文件名称'
|
|
|
}, {
|
|
|
whitespace: true,
|
|
|
message: '请勿输入空格'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u6587\u4EF6\u540D\u79F0",
|
|
|
size: "large",
|
|
|
defaultValue: fileName
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u63D0\u4EA4\u4FE1\u606F\uFF1A",
|
|
|
name: "commitMessage",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
placeholder: "\u5982\u4E0D\u586B\u5199\uFF0C\u9ED8\u8BA4\u63D0\u4EA4\u4FE1\u606F\u662F\uFF08".concat(props.defaultPath, " rename to \u65B0\u7684\u540D\u79F0 \uFF09"),
|
|
|
size: "large"
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var RenameFile = ((0,_umi_production_exports.connect)(function (_ref3) {
|
|
|
var shixunsDetail = _ref3.shixunsDetail,
|
|
|
loading = _ref3.loading,
|
|
|
globalSetting = _ref3.globalSetting,
|
|
|
user = _ref3.user;
|
|
|
return {
|
|
|
shixunsDetail: shixunsDetail,
|
|
|
globalSetting: globalSetting,
|
|
|
user: user,
|
|
|
loading: loading.models.index
|
|
|
};
|
|
|
})(RenameFile_AddFile));
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/upload/style/index.js + 1 modules
|
|
|
var upload_style = __webpack_require__(13759);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/upload/index.js + 20 modules
|
|
|
var upload = __webpack_require__(7426);
|
|
|
// EXTERNAL MODULE: ./src/utils/env.ts + 1 modules
|
|
|
var env = __webpack_require__(59758);
|
|
|
// EXTERNAL MODULE: ./src/pages/Shixuns/Detail/Repository/components/SelectFilePathModal/index.tsx + 1 modules
|
|
|
var SelectFilePathModal = __webpack_require__(39026);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/UploadFile.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var UploadFilemodules = ({"wrap":"wrap___zK3Vy","title":"title___BgjCb","path":"path___POFX3","colorBlue":"colorBlue___H4_iQ"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/UploadFile.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var UploadFile_excluded = ["shixunsDetail", "globalSetting", "loading", "user", "taskData", "dispatch", "isRepository"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// import SelectFilePathModal from '../../../../De/components/SelectFilePathModal';
|
|
|
|
|
|
|
|
|
|
|
|
var Dragger = upload/* default.Dragger */.Z.Dragger;
|
|
|
var UploadFile = function UploadFile(_ref) {
|
|
|
var _taskData$myshixun;
|
|
|
var shixunsDetail = _ref.shixunsDetail,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
user = _ref.user,
|
|
|
taskData = _ref.taskData,
|
|
|
dispatch = _ref.dispatch,
|
|
|
isRepository = _ref.isRepository,
|
|
|
props = objectWithoutProperties_default()(_ref, UploadFile_excluded);
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var params = objectSpread2_default()(objectSpread2_default()({}, (0,_umi_production_exports.useParams)()), (0,_umi_production_exports.useLocation)().query);
|
|
|
var _useState = (0,react.useState)({}),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
formValue = _useState2[0],
|
|
|
setFormValue = _useState2[1];
|
|
|
var shixunId = (0,react.useRef)();
|
|
|
var _Form$useForm = es_form/* default.useForm */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
var _useState3 = (0,react.useState)([]),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
fileList = _useState4[0],
|
|
|
setFileList = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)(),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
filePath = _useState6[0],
|
|
|
setFilePath = _useState6[1];
|
|
|
var filename;
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (props.visible) {
|
|
|
form.resetFields();
|
|
|
setFileList([]);
|
|
|
}
|
|
|
}, [props.visible]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
shixunId.current = params.id;
|
|
|
}, []);
|
|
|
(0,react.useEffect)(function () {
|
|
|
var pathArray = sessionStorage.getItem('pathArray');
|
|
|
if (pathArray) {
|
|
|
// 拼接成绝对路径
|
|
|
var joinPath = pathArray.split(',').join('/');
|
|
|
var path = joinPath.indexOf('/') === 0 ? joinPath.substr(1) : joinPath;
|
|
|
setFilePath(path);
|
|
|
}
|
|
|
}, []);
|
|
|
var handleChangeFile = function handleChangeFile(info) {
|
|
|
filename = info.file.name;
|
|
|
if (info.file.status === 'done' || info.file.status === "uploading") {
|
|
|
var _info$file$response, _info$file$response2, _info$file$response3;
|
|
|
setFileList(info.fileList);
|
|
|
if (!info.file.response) {
|
|
|
return;
|
|
|
}
|
|
|
if (((_info$file$response = info.file.response) === null || _info$file$response === void 0 ? void 0 : _info$file$response.status) === 0) {
|
|
|
message/* default.success */.ZP.success("上传成功!");
|
|
|
return;
|
|
|
}
|
|
|
setFileList(fileList.filter(function (item) {
|
|
|
return item.uid !== info.file.uid;
|
|
|
}));
|
|
|
((_info$file$response2 = info.file.response) === null || _info$file$response2 === void 0 ? void 0 : _info$file$response2.message) && message/* default.info */.ZP.info((_info$file$response3 = info.file.response) === null || _info$file$response3 === void 0 ? void 0 : _info$file$response3.message);
|
|
|
}
|
|
|
};
|
|
|
var handleRemoveFile = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(info) {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
if (info.response) {
|
|
|
_context.next = 3;
|
|
|
break;
|
|
|
}
|
|
|
message/* default.info */.ZP.info("还未上传完成,无法进行删除操作!");
|
|
|
return _context.abrupt("return");
|
|
|
case 3:
|
|
|
_context.next = 5;
|
|
|
return dispatch({
|
|
|
type: 'shixunsDetail/deleteGitFile',
|
|
|
payload: {
|
|
|
id: params.id,
|
|
|
path: filePath ? "".concat(filePath, "/").concat(info.name) : info.name,
|
|
|
message: form.getFieldValue('commitMessage') || "\u5220\u9664\u4E86".concat(filePath ? "".concat(filePath, "/").concat(info.name) : info.name),
|
|
|
secret_repository: isRepository ? null : true
|
|
|
}
|
|
|
});
|
|
|
case 5:
|
|
|
res = _context.sent;
|
|
|
if (res.status === 0) {
|
|
|
setFileList(fileList.filter(function (item) {
|
|
|
return item.uid !== info.uid;
|
|
|
}));
|
|
|
message/* default.info */.ZP.info("删除成功");
|
|
|
}
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function handleRemoveFile(_x) {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var draggerProps = {
|
|
|
height: 300,
|
|
|
multiple: true,
|
|
|
withCredentials: true,
|
|
|
data: function () {
|
|
|
var _data = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
return _context4.abrupt("return", new Promise( /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3(resolve, reject) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
setTimeout( /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var v, data;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
_context2.next = 2;
|
|
|
return form.getFieldsValue();
|
|
|
case 2:
|
|
|
v = _context2.sent;
|
|
|
data = objectSpread2_default()(objectSpread2_default()({}, {
|
|
|
path: !!props.defaultPath ? props.defaultPath : "",
|
|
|
message: formValue.commitMessage || "\u4E0A\u4F20\u4E86".concat(filename)
|
|
|
}), isRepository ? {} : {
|
|
|
secret_repository: true
|
|
|
});
|
|
|
resolve(data);
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
})), 200);
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return function (_x2, _x3) {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}()));
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
}));
|
|
|
function data() {
|
|
|
return _data.apply(this, arguments);
|
|
|
}
|
|
|
return data;
|
|
|
}(),
|
|
|
fileList: fileList,
|
|
|
method: "post",
|
|
|
action: "".concat(env/* default.API_SERVER */.Z.API_SERVER, "/api/myshixuns/").concat(taskData === null || taskData === void 0 ? void 0 : (_taskData$myshixun = taskData.myshixun) === null || _taskData$myshixun === void 0 ? void 0 : _taskData$myshixun.identifier, "/upload_git_file.json"),
|
|
|
onChange: handleChangeFile,
|
|
|
onRemove: handleRemoveFile,
|
|
|
beforeUpload: function beforeUpload(file) {
|
|
|
filename = file.name;
|
|
|
// if (!form.getFieldValue('commitMessage')) {
|
|
|
// message.info("上传文件请先填写提交信息");
|
|
|
// return false;
|
|
|
// }
|
|
|
}
|
|
|
};
|
|
|
|
|
|
var handleFinish = /*#__PURE__*/function () {
|
|
|
var _ref5 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee5(values) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee5$(_context5) {
|
|
|
while (1) switch (_context5.prev = _context5.next) {
|
|
|
case 0:
|
|
|
_context5.next = 2;
|
|
|
return form.validateFields();
|
|
|
case 2:
|
|
|
props.onClose();
|
|
|
props.onOK({
|
|
|
path: props.defaultPath
|
|
|
});
|
|
|
handleReturn();
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context5.stop();
|
|
|
}
|
|
|
}, _callee5);
|
|
|
}));
|
|
|
return function handleFinish(_x4) {
|
|
|
return _ref5.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleReturn = function handleReturn() {
|
|
|
// history.push(`/shixuns/${shixunId.current}/${location.pathname?.split('/')?.[3]}${filePath ? `/master/shixun_show/${filePath}` : ""}`)
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
open: props.visible,
|
|
|
onOk: handleFinish,
|
|
|
centered: true,
|
|
|
onCancel: props.onClose,
|
|
|
width: "70%",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("section", {
|
|
|
className: UploadFilemodules.bg,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: UploadFilemodules.wrap,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: UploadFilemodules.title,
|
|
|
children: "\u4E0A\u4F20\u6587\u4EF6"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, {
|
|
|
className: "mt10",
|
|
|
form: form,
|
|
|
scrollToFirstError: true,
|
|
|
layout: "vertical",
|
|
|
onFinish: handleFinish,
|
|
|
onValuesChange: function onValuesChange() {
|
|
|
return setFormValue(objectSpread2_default()({}, form.getFieldsValue()));
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u63D0\u4EA4\u4FE1\u606F\uFF1A",
|
|
|
name: "commitMessage",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入提交信息'
|
|
|
}, {
|
|
|
whitespace: true,
|
|
|
message: '请勿输入空格'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
placeholder: "\u5FC5\u586B\uFF0C\u63CF\u8FF0\u4E3B\u8981\u4FEE\u6539\u5185\u5BB9\uFF08\u76F8\u5F53\u4E8EGit Commit message\u7684Header\uFF09"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u9009\u62E9\u6587\u4EF6",
|
|
|
name: "file",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请选择文件'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(Dragger, objectSpread2_default()(objectSpread2_default()({}, draggerProps), {}, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-shangchuan font50 ".concat(UploadFilemodules.colorBlue)
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "font14 mt30",
|
|
|
children: ["\u62D6\u62FD\u6587\u4EF6\u6216", /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "".concat(UploadFilemodules.colorBlue, " ml5"),
|
|
|
children: "\u70B9\u51FB\u6B64\u5904\u4E0A\u4F20"
|
|
|
})]
|
|
|
})]
|
|
|
}))
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(SelectFilePathModal/* default */.Z, {
|
|
|
onFinish: function onFinish(path) {
|
|
|
return setFilePath(path);
|
|
|
}
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var components_UploadFile = ((0,_umi_production_exports.connect)(function (_ref6) {
|
|
|
var shixunsDetail = _ref6.shixunsDetail,
|
|
|
loading = _ref6.loading,
|
|
|
globalSetting = _ref6.globalSetting,
|
|
|
user = _ref6.user;
|
|
|
return {
|
|
|
shixunsDetail: shixunsDetail,
|
|
|
globalSetting: globalSetting,
|
|
|
user: user,
|
|
|
loading: loading.models.index
|
|
|
};
|
|
|
})(UploadFile));
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/Tree.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var Treemodules = ({"flex_box_center":"flex_box_center___MMlsc","flex_space_between":"flex_space_between___ti22L","flex_box_vertical_center":"flex_box_vertical_center___YL4jC","flex_box_center_end":"flex_box_center_end___vx3wA","flex_box_column":"flex_box_column___eKe0F","headLeft":"headLeft___dsKhq","colorBlue":"colorBlue___gaxVL","wrap":"wrap___NLIaW","nodata":"nodata___zv745","nodataText":"nodataText___EWDiS","content":"content___i5G9Y","gitCode":"gitCode___W15AY","ellipsis":"ellipsis___sEcFA","menu":"menu___sjQxY","overlayClass":"overlayClass___ofgjv","tips":"tips___WEDOk"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/SelectFilePathModal/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var SelectFilePathModalmodules = ({"wrap":"wrap___WB5qS","content":"content___HZdqT","mainPathWrap":"mainPathWrap___XMF09","colorBlue":"colorBlue___N9Dtz"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/SelectFilePathModal/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var SelectFilePathModal_SelectFilePathModal = function SelectFilePathModal(_ref) {
|
|
|
var shixunsDetail = _ref.shixunsDetail,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
dispatch = _ref.dispatch,
|
|
|
title = _ref.title,
|
|
|
_ref$pathList = _ref.pathList,
|
|
|
propsPathList = _ref$pathList === void 0 ? [] : _ref$pathList,
|
|
|
_ref$showInputPath = _ref.showInputPath,
|
|
|
showInputPath = _ref$showInputPath === void 0 ? false : _ref$showInputPath,
|
|
|
_ref$isMergeSelectFil = _ref.isMergeSelectFile,
|
|
|
isMergeSelectFile = _ref$isMergeSelectFil === void 0 ? false : _ref$isMergeSelectFil,
|
|
|
_ref$onFinish = _ref.onFinish,
|
|
|
onFinish = _ref$onFinish === void 0 ? function () {} : _ref$onFinish;
|
|
|
var _Form$useForm = es_form/* default.useForm */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
var params = objectSpread2_default()(objectSpread2_default()({}, (0,_umi_production_exports.useParams)()), (0,_umi_production_exports.useLocation)().query);
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var isRepository = (0,react.useRef)();
|
|
|
var _useState = (0,react.useState)(''),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
selectPath = _useState2[0],
|
|
|
setSelectPath = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)(''),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
originPath = _useState4[0],
|
|
|
setOriginPath = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)([]),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
mainPathList = _useState6[0],
|
|
|
setMainPathList = _useState6[1];
|
|
|
var _useState7 = (0,react.useState)([]),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
treeList = _useState8[0],
|
|
|
setTreeList = _useState8[1];
|
|
|
(0,react.useEffect)(function () {
|
|
|
var _location$pathname, _location$pathname$sp;
|
|
|
isRepository.current = ((_location$pathname = location.pathname) === null || _location$pathname === void 0 ? void 0 : (_location$pathname$sp = _location$pathname.split('/')) === null || _location$pathname$sp === void 0 ? void 0 : _location$pathname$sp[3]) === "repository";
|
|
|
}, []);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (shixunsDetail.actionTabs.key !== 'Repository-SelectFilePath') {
|
|
|
return;
|
|
|
}
|
|
|
var path = propsPathList.join('/');
|
|
|
var arr = [];
|
|
|
propsPathList.map(function (item, index) {
|
|
|
if (index === 0) {
|
|
|
arr.push({
|
|
|
val: "根目录",
|
|
|
path: ""
|
|
|
}, {
|
|
|
val: "/".concat(item),
|
|
|
path: path
|
|
|
});
|
|
|
} else {
|
|
|
arr.push({
|
|
|
val: "/".concat(item),
|
|
|
path: path
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
setMainPathList(arr);
|
|
|
setSelectPath(path);
|
|
|
setOriginPath(path);
|
|
|
handleGetPathData(path);
|
|
|
}, [shixunsDetail.actionTabs.key]);
|
|
|
var handleGetPathData = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(path) {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return dispatch({
|
|
|
type: isRepository.current ? 'shixunsDetail/getRepository' : 'shixunsDetail/getSecretRepository',
|
|
|
payload: {
|
|
|
id: params.id,
|
|
|
path: path
|
|
|
}
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
if (res) {
|
|
|
setTreeList(res.trees || []);
|
|
|
}
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function handleGetPathData(_x) {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleClickTree = function handleClickTree(item) {
|
|
|
var newPath = selectPath;
|
|
|
if (item.type === "tree") {
|
|
|
mainPathList.length ? mainPathList.push({
|
|
|
val: "/".concat(item.name),
|
|
|
path: item.name
|
|
|
}) : mainPathList.push({
|
|
|
val: "根目录",
|
|
|
path: ""
|
|
|
}, {
|
|
|
val: "/".concat(item.name),
|
|
|
path: item.name
|
|
|
});
|
|
|
setMainPathList(mainPathList);
|
|
|
newPath = selectPath ? "".concat(selectPath, "/").concat(item.name) : item.name;
|
|
|
setSelectPath(newPath);
|
|
|
}
|
|
|
handleGetPathData(newPath);
|
|
|
};
|
|
|
var handleClickMainPath = function handleClickMainPath(item, index) {
|
|
|
var currentPathList = mainPathList.filter(function (_, key) {
|
|
|
return key <= index;
|
|
|
});
|
|
|
setMainPathList(currentPathList);
|
|
|
// 排除 ”根目录“,将选中的路径连接,去掉第一个字符串 “/”,获取绝对路径
|
|
|
var currentPath = currentPathList.filter(function (_, key) {
|
|
|
return key !== 0;
|
|
|
}).map(function (item) {
|
|
|
return item.val;
|
|
|
}).join('').substr(1);
|
|
|
setSelectPath(currentPath);
|
|
|
handleGetPathData(currentPath);
|
|
|
};
|
|
|
var handleOk = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var values, path, res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
values = form === null || form === void 0 ? void 0 : form.getFieldsValue();
|
|
|
path = selectPath ? "".concat(selectPath).concat(values !== null && values !== void 0 && values.name ? "/".concat(values === null || values === void 0 ? void 0 : values.name) : '') : values === null || values === void 0 ? void 0 : values.name;
|
|
|
if (!isMergeSelectFile) {
|
|
|
_context2.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
onFinish(path);
|
|
|
handleCancel();
|
|
|
return _context2.abrupt("return");
|
|
|
case 6:
|
|
|
if (!showInputPath) {
|
|
|
_context2.next = 16;
|
|
|
break;
|
|
|
}
|
|
|
_context2.next = 9;
|
|
|
return form.validateFields();
|
|
|
case 9:
|
|
|
_context2.next = 11;
|
|
|
return dispatch({
|
|
|
type: 'shixunsDetail/uploadGitFolder',
|
|
|
payload: objectSpread2_default()(objectSpread2_default()({}, {
|
|
|
id: params.id,
|
|
|
path: path
|
|
|
}), isRepository.current ? {} : {
|
|
|
secret_repository: true
|
|
|
})
|
|
|
});
|
|
|
case 11:
|
|
|
res = _context2.sent;
|
|
|
onFinish(originPath);
|
|
|
if (res.status === 0) {
|
|
|
message/* default.info */.ZP.info('新建成功');
|
|
|
}
|
|
|
_context2.next = 18;
|
|
|
break;
|
|
|
case 16:
|
|
|
onFinish(path);
|
|
|
message/* default.success */.ZP.success("选择文件目录成功");
|
|
|
case 18:
|
|
|
handleCancel();
|
|
|
case 19:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function handleOk() {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleCancel = function handleCancel() {
|
|
|
dispatch({
|
|
|
type: 'shixunsDetail/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
form.resetFields();
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
title: title || "新建文件夹",
|
|
|
closable: false,
|
|
|
keyboard: false,
|
|
|
open: shixunsDetail.actionTabs.key === 'Repository-SelectFilePath',
|
|
|
onOk: handleOk,
|
|
|
onCancel: handleCancel,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: SelectFilePathModalmodules.wrap,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: SelectFilePathModalmodules.content,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: SelectFilePathModalmodules.mainPathWrap,
|
|
|
children: !!(mainPathList !== null && mainPathList !== void 0 && mainPathList.length) && mainPathList.map(function (item, index) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: function onClick() {
|
|
|
return handleClickMainPath(item, index);
|
|
|
},
|
|
|
children: item.val
|
|
|
}, index);
|
|
|
})
|
|
|
}), !!(treeList !== null && treeList !== void 0 && treeList.length) && treeList.map(function (item, index) {
|
|
|
return item.type === "tree" && /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
onClick: function onClick() {
|
|
|
return handleClickTree(item);
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-wenjianjia ".concat(SelectFilePathModalmodules.colorBlue)
|
|
|
}), item.name]
|
|
|
}, index);
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("label", {
|
|
|
className: "mt5",
|
|
|
children: "\u9009\u4E2D\u7684\u65B0\u5EFA\u6587\u4EF6\u5939\u76EE\u5F55\uFF1A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "mt5 mb5",
|
|
|
children: selectPath
|
|
|
}), showInputPath && /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z, {
|
|
|
form: form,
|
|
|
scrollToFirstError: true,
|
|
|
className: "mt20",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
name: "name",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入名称'
|
|
|
}, {
|
|
|
whitespace: true,
|
|
|
message: '请勿输入空格'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u65B0\u6587\u4EF6\u5939\u540D/\u5B50\u6587\u4EF6\u5939\u540D\u3002\uFF08\u5982\uFF1Asrc/step1\uFF09"
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var components_SelectFilePathModal = ((0,_umi_production_exports.connect)(function (_ref4) {
|
|
|
var shixunsDetail = _ref4.shixunsDetail,
|
|
|
loading = _ref4.loading,
|
|
|
globalSetting = _ref4.globalSetting;
|
|
|
return {
|
|
|
shixunsDetail: shixunsDetail,
|
|
|
globalSetting: globalSetting,
|
|
|
loading: loading.models.index
|
|
|
};
|
|
|
})(SelectFilePathModal_SelectFilePathModal));
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/icons/EllipsisOutlined.js
|
|
|
var EllipsisOutlined = __webpack_require__(3471);
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/icons/DownOutlined.js
|
|
|
var DownOutlined = __webpack_require__(39300);
|
|
|
// EXTERNAL MODULE: ./src/service/shixuns.ts
|
|
|
var shixuns = __webpack_require__(56088);
|
|
|
// EXTERNAL MODULE: ./node_modules/lodash/lodash.js
|
|
|
var lodash = __webpack_require__(96486);
|
|
|
// EXTERNAL MODULE: ./src/utils/verifyLogin.tsx + 3 modules
|
|
|
var verifyLogin = __webpack_require__(72551);
|
|
|
// EXTERNAL MODULE: ./src/components/ImagesIcon/index.ts + 31 modules
|
|
|
var ImagesIcon = __webpack_require__(44190);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/Tree.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Tree_excluded = ["shixunsDetail", "globalSetting", "loading", "user", "activeKey", "dispatch", "taskData", "practiceSetting", "isRepository", "treeData", "setTreeData", "params"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// import Edit from './components/Edit'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// import Right from '../components/Right'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var DirectoryTree = tree/* default.DirectoryTree */.Z.DirectoryTree;
|
|
|
var Repository = function Repository(_ref) {
|
|
|
var _taskData$challenge3, _shixunsDetail$detail4, _shixunsDetail$detail5;
|
|
|
var shixunsDetail = _ref.shixunsDetail,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
user = _ref.user,
|
|
|
activeKey = _ref.activeKey,
|
|
|
dispatch = _ref.dispatch,
|
|
|
taskData = _ref.taskData,
|
|
|
practiceSetting = _ref.practiceSetting,
|
|
|
isRepository = _ref.isRepository,
|
|
|
treeData = _ref.treeData,
|
|
|
setTreeData = _ref.setTreeData,
|
|
|
params = _ref.params,
|
|
|
props = objectWithoutProperties_default()(_ref, Tree_excluded);
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
// const isRepository = useRef<boolean>()
|
|
|
var _useState = (0,react.useState)(),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
checkedValue = _useState2[0],
|
|
|
setCheckedValue = _useState2[1];
|
|
|
// const [treeData, setTreeData] = useState([]);
|
|
|
var _useState3 = (0,react.useState)(false),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
showAddFile = _useState4[0],
|
|
|
setShowAddFile = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)(false),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
showRenameFile = _useState6[0],
|
|
|
setShowRenameFile = _useState6[1];
|
|
|
var _useState7 = (0,react.useState)(false),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
showAddFolder = _useState8[0],
|
|
|
setShowAddFolder = _useState8[1];
|
|
|
var _useState9 = (0,react.useState)(false),
|
|
|
_useState10 = slicedToArray_default()(_useState9, 2),
|
|
|
showUploadFile = _useState10[0],
|
|
|
setShowUploadFile = _useState10[1];
|
|
|
var _useState11 = (0,react.useState)(""),
|
|
|
_useState12 = slicedToArray_default()(_useState11, 2),
|
|
|
defaultPath = _useState12[0],
|
|
|
setDefaultPath = _useState12[1];
|
|
|
var _useState13 = (0,react.useState)([]),
|
|
|
_useState14 = slicedToArray_default()(_useState13, 2),
|
|
|
expandedKeys = _useState14[0],
|
|
|
setExpandedKeys = _useState14[1];
|
|
|
var _useState15 = (0,react.useState)([]),
|
|
|
_useState16 = slicedToArray_default()(_useState15, 2),
|
|
|
selectedKeys = _useState16[0],
|
|
|
setSelectedKeys = _useState16[1];
|
|
|
var _useState17 = (0,react.useState)([]),
|
|
|
_useState18 = slicedToArray_default()(_useState17, 2),
|
|
|
treeList = _useState18[0],
|
|
|
setTreeList = _useState18[1];
|
|
|
var _useState19 = (0,react.useState)(false),
|
|
|
_useState20 = slicedToArray_default()(_useState19, 2),
|
|
|
visibleTip = _useState20[0],
|
|
|
setVisibleTip = _useState20[1];
|
|
|
var _useState21 = (0,react.useState)(),
|
|
|
_useState22 = slicedToArray_default()(_useState21, 2),
|
|
|
commitInfo = _useState22[0],
|
|
|
setCommitInfo = _useState22[1];
|
|
|
var _useState23 = (0,react.useState)(),
|
|
|
_useState24 = slicedToArray_default()(_useState23, 2),
|
|
|
secretDirPath = _useState24[0],
|
|
|
setSecretDirPath = _useState24[1];
|
|
|
var _useState25 = (0,react.useState)(""),
|
|
|
_useState26 = slicedToArray_default()(_useState25, 2),
|
|
|
pathList = _useState26[0],
|
|
|
setPathList = _useState26[1];
|
|
|
var _useState27 = (0,react.useState)(),
|
|
|
_useState28 = slicedToArray_default()(_useState27, 2),
|
|
|
newMergeValue = _useState28[0],
|
|
|
setNewMergeValue = _useState28[1];
|
|
|
var _useState29 = (0,react.useState)(false),
|
|
|
_useState30 = slicedToArray_default()(_useState29, 2),
|
|
|
isMergeSelectFile = _useState30[0],
|
|
|
setIsMergeSelectFile = _useState30[1];
|
|
|
(0,react.useEffect)(function () {
|
|
|
setTreeData([]);
|
|
|
handleGetRepository("");
|
|
|
if (!localStorage.warehouseHideTip) {
|
|
|
setVisibleTip(true);
|
|
|
}
|
|
|
}, [location.pathname, isRepository]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
var _taskData$challenge;
|
|
|
if (taskData !== null && taskData !== void 0 && (_taskData$challenge = taskData.challenge) !== null && _taskData$challenge !== void 0 && _taskData$challenge.path && treeData !== null && treeData !== void 0 && treeData.length) {
|
|
|
var _taskData$challenge2, _taskData$challenge2$, _cloneDeep;
|
|
|
var sePath = taskData === null || taskData === void 0 ? void 0 : (_taskData$challenge2 = taskData.challenge) === null || _taskData$challenge2 === void 0 ? void 0 : (_taskData$challenge2$ = _taskData$challenge2.path) === null || _taskData$challenge2$ === void 0 ? void 0 : _taskData$challenge2$.replaceAll(';', '');
|
|
|
var filterTreeData = (_cloneDeep = (0,lodash.cloneDeep)(treeData)) === null || _cloneDeep === void 0 ? void 0 : _cloneDeep.filter(function (e) {
|
|
|
var _sePath$split;
|
|
|
return e.name === (sePath === null || sePath === void 0 ? void 0 : (_sePath$split = sePath.split('/')) === null || _sePath$split === void 0 ? void 0 : _sePath$split[0]);
|
|
|
});
|
|
|
initToPath(sePath);
|
|
|
if ((treeData === null || treeData === void 0 ? void 0 : treeData.length) !== 1) {
|
|
|
console.log(filterTreeData, 'filterTreeData');
|
|
|
setTreeData(filterTreeData);
|
|
|
}
|
|
|
}
|
|
|
}, [taskData === null || taskData === void 0 ? void 0 : (_taskData$challenge3 = taskData.challenge) === null || _taskData$challenge3 === void 0 ? void 0 : _taskData$challenge3.path, treeData]);
|
|
|
var initToPath = function initToPath(path) {
|
|
|
selectPath(path);
|
|
|
selectedKeys = [path];
|
|
|
setSelectedKeys([path]);
|
|
|
};
|
|
|
var handleMergeSelectFile = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var path,
|
|
|
res,
|
|
|
_args = arguments;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
path = _args.length > 0 && _args[0] !== undefined ? _args[0] : '';
|
|
|
_context.next = 3;
|
|
|
return (0,shixuns/* setSecretDir */.Zt)({
|
|
|
id: params.id,
|
|
|
secret_dir_path: path
|
|
|
});
|
|
|
case 3:
|
|
|
res = _context.sent;
|
|
|
res && setNewMergeValue(path);
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function handleMergeSelectFile() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var menu = function menu(item) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(es_menu/* default */.Z, {
|
|
|
className: Treemodules.menu,
|
|
|
onClick: function onClick(value) {
|
|
|
setDefaultPath(item.path || '');
|
|
|
switch (value.key) {
|
|
|
case "1":
|
|
|
(0,util/* trackEvent */.L9)(['实践项目', '设置', '代码仓库', '新建文件']);
|
|
|
setShowAddFile(true);
|
|
|
break;
|
|
|
case "2":
|
|
|
(0,util/* trackEvent */.L9)(['实践项目', '设置', '代码仓库', '新建文件夹']);
|
|
|
setShowAddFolder(true);
|
|
|
break;
|
|
|
case "3":
|
|
|
(0,util/* trackEvent */.L9)(['实践项目', '设置', '代码仓库', '上传']);
|
|
|
setShowUploadFile(true);
|
|
|
break;
|
|
|
case "4":
|
|
|
(0,util/* trackEvent */.L9)(['实践项目', '设置', '代码仓库', '重命名']);
|
|
|
setShowRenameFile(true);
|
|
|
break;
|
|
|
case "5":
|
|
|
(0,util/* trackEvent */.L9)(['实践项目', '设置', '代码仓库', '删除']);
|
|
|
handleDeleteFile(item.path, item.name, item);
|
|
|
break;
|
|
|
case "6":
|
|
|
(0,util/* trackEvent */.L9)(['实践项目', '设置', '代码仓库', '复制路径']);
|
|
|
copyFilePath(item);
|
|
|
break;
|
|
|
}
|
|
|
},
|
|
|
children: [(item.type === 'topTree' || item.type === 'tree') && /*#__PURE__*/(0,jsx_runtime.jsx)(es_menu/* default.Item */.Z.Item, {
|
|
|
children: "\u65B0\u5EFA\u6587\u4EF6"
|
|
|
}, "1"), (item.type === 'topTree' || item.type === 'tree') && /*#__PURE__*/(0,jsx_runtime.jsx)(es_menu/* default.Item */.Z.Item, {
|
|
|
children: "\u65B0\u5EFA\u6587\u4EF6\u5939"
|
|
|
}, "2"), (item.type === 'topTree' || item.type === 'tree') && /*#__PURE__*/(0,jsx_runtime.jsx)(es_menu/* default.Item */.Z.Item, {
|
|
|
children: "\u4E0A\u4F20"
|
|
|
}, "3"), item.type !== 'topTree' && item.type !== 'tree' && /*#__PURE__*/(0,jsx_runtime.jsx)(es_menu/* default.Item */.Z.Item, {
|
|
|
children: "\u91CD\u547D\u540D"
|
|
|
}, "4"), item.type !== 'topTree' && /*#__PURE__*/(0,jsx_runtime.jsx)(lib.CopyToClipboard, {
|
|
|
text: "/data/workspace/myshixun/".concat(!isRepository ? "secret/" : "").concat(item === null || item === void 0 ? void 0 : item.path),
|
|
|
onCopy: function onCopy() {
|
|
|
return message/* default.success */.ZP.success('复制成功');
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_menu/* default.Item */.Z.Item, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment, {
|
|
|
children: "\u590D\u5236\u8DEF\u5F84"
|
|
|
})
|
|
|
}, "6")
|
|
|
}), item.type !== 'topTree' && /*#__PURE__*/(0,jsx_runtime.jsx)(es_menu/* default.Item */.Z.Item, {
|
|
|
children: "\u5220\u9664"
|
|
|
}, "5")]
|
|
|
});
|
|
|
};
|
|
|
var createDom = function createDom(data, path) {
|
|
|
return data.map(function (item) {
|
|
|
if (path == '') {
|
|
|
item.path = path + item.name;
|
|
|
} else {
|
|
|
item.path = path + "/" + item.name;
|
|
|
}
|
|
|
item.title = /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
className: "font14",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "20px",
|
|
|
children: item.type === 'blob' && /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "iconfont icon-wenjian11 font12"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: " multi_ellipsis1",
|
|
|
children: item.name
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
children: (item.type === 'blob' || item.type === 'tree') && /*#__PURE__*/(0,jsx_runtime.jsx)(dropdown/* default */.Z, {
|
|
|
dropdownRender: function dropdownRender() {
|
|
|
return menu(item);
|
|
|
},
|
|
|
className: Treemodules.ellipsis,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-gengduo2 c-555a88"
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
item.disableCheckbox = checkedValue && checkedValue !== item.name;
|
|
|
item.className = item.type === 'tree' ? Treemodules.pl23 : '';
|
|
|
item.checkable = item.type !== 'tree';
|
|
|
item.isLeaf = item.type !== 'tree';
|
|
|
item.children = item.type === 'tree' && [];
|
|
|
item.key = item.path;
|
|
|
return item;
|
|
|
});
|
|
|
};
|
|
|
var selectPath = function selectPath(path) {
|
|
|
dispatch({
|
|
|
type: 'practiceSetting/setSideBarTabs',
|
|
|
payload: {
|
|
|
selectPath: path
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
var insertFile = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2(path, name) {
|
|
|
var pathArr;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
pathArr = path.split("/");
|
|
|
_context2.next = 3;
|
|
|
return handleGetRepository(defaultPath);
|
|
|
case 3:
|
|
|
setTimeout(function () {
|
|
|
selectPath(path);
|
|
|
expandedKeys = [pathArr[0] || ''];
|
|
|
selectedKeys = [path];
|
|
|
setSelectedKeys(toConsumableArray_default()(selectedKeys));
|
|
|
setExpandedKeys(toConsumableArray_default()(expandedKeys));
|
|
|
}, 150);
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function insertFile(_x, _x2) {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var insertData = function insertData(data, path) {
|
|
|
console.log(data, 'data');
|
|
|
if (path == '') {
|
|
|
setTreeData(toConsumableArray_default()(data));
|
|
|
} else {
|
|
|
var d = updateTreeData(treeData, path, data);
|
|
|
setTreeData([].concat(d));
|
|
|
}
|
|
|
};
|
|
|
function updateTreeData(list, key, children) {
|
|
|
return list.map(function (node) {
|
|
|
if (node.key === key) {
|
|
|
node.children = toConsumableArray_default()(children);
|
|
|
return objectSpread2_default()({}, node);
|
|
|
} else if (node.children) {
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, node), {}, {
|
|
|
children: updateTreeData(node.children, key, children)
|
|
|
});
|
|
|
}
|
|
|
return node;
|
|
|
});
|
|
|
}
|
|
|
var handleGetRepository = /*#__PURE__*/function () {
|
|
|
var _ref4 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3() {
|
|
|
var _taskData$myshixun;
|
|
|
var path,
|
|
|
res,
|
|
|
_res$trees,
|
|
|
_res$commits,
|
|
|
d,
|
|
|
_args3 = arguments;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
path = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : '';
|
|
|
// const res = await dispatch({
|
|
|
// type: isRepository ? 'shixunsDetail/getRepository' : 'shixunsDetail/getSecretRepository',
|
|
|
// payload: {
|
|
|
// id: params.id,
|
|
|
// path
|
|
|
// }
|
|
|
// })
|
|
|
console.log("location:", location);
|
|
|
// return
|
|
|
_context3.next = 4;
|
|
|
return (0,service/* fetchRepos */.pU)(taskData === null || taskData === void 0 ? void 0 : (_taskData$myshixun = taskData.myshixun) === null || _taskData$myshixun === void 0 ? void 0 : _taskData$myshixun.identifier, {
|
|
|
path: path
|
|
|
});
|
|
|
case 4:
|
|
|
res = _context3.sent;
|
|
|
if (res) {
|
|
|
if (!!((_res$trees = res.trees) !== null && _res$trees !== void 0 && _res$trees.length)) {
|
|
|
d = createDom(toConsumableArray_default()(res.trees), path);
|
|
|
insertData(d, path);
|
|
|
setTreeList(res.trees || []);
|
|
|
setSecretDirPath((res === null || res === void 0 ? void 0 : res.secret_dir_path) || '');
|
|
|
console.log("handleGetRepository:", d, path);
|
|
|
setTimeout(function () {
|
|
|
return console.log(treeData);
|
|
|
}, 2000);
|
|
|
} else if (path == '') {
|
|
|
setTreeData([]);
|
|
|
}
|
|
|
setCommitInfo(((_res$commits = res.commits) === null || _res$commits === void 0 ? void 0 : _res$commits[0]) || {});
|
|
|
}
|
|
|
return _context3.abrupt("return", res);
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return function handleGetRepository() {
|
|
|
return _ref4.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var loadData = /*#__PURE__*/function () {
|
|
|
var _ref5 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee5(selectedKeys) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee5$(_context5) {
|
|
|
while (1) switch (_context5.prev = _context5.next) {
|
|
|
case 0:
|
|
|
return _context5.abrupt("return", new Promise( /*#__PURE__*/function () {
|
|
|
var _ref6 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4(resolve, reject) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
if (!!selectedKeys.children.length) {
|
|
|
resolve();
|
|
|
}
|
|
|
setPathList(selectedKeys.path);
|
|
|
_context4.next = 4;
|
|
|
return handleGetRepository(selectedKeys.path);
|
|
|
case 4:
|
|
|
resolve();
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
}));
|
|
|
return function (_x4, _x5) {
|
|
|
return _ref6.apply(this, arguments);
|
|
|
};
|
|
|
}()));
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context5.stop();
|
|
|
}
|
|
|
}, _callee5);
|
|
|
}));
|
|
|
return function loadData(_x3) {
|
|
|
return _ref5.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleSelectTree = /*#__PURE__*/function () {
|
|
|
var _ref7 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee6(selectedKeys, data) {
|
|
|
var toNext, _practiceSetting$side;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee6$(_context6) {
|
|
|
while (1) switch (_context6.prev = _context6.next) {
|
|
|
case 0:
|
|
|
console.log("handleSelectTree", selectedKeys, data.nativeEvent.target.nodeName, data);
|
|
|
toNext = function toNext() {
|
|
|
selectPath(data.node.path);
|
|
|
selectedKeys = [data.node.path];
|
|
|
setSelectedKeys(toConsumableArray_default()(selectedKeys));
|
|
|
};
|
|
|
if (!(data.nativeEvent.target.nodeName === 'svg' || data.nativeEvent.target.nodeName === 'LI' || data.nativeEvent.target.nodeName === 'I')) {
|
|
|
_context6.next = 4;
|
|
|
break;
|
|
|
}
|
|
|
return _context6.abrupt("return");
|
|
|
case 4:
|
|
|
if (data.node.type === 'blob') {
|
|
|
if (practiceSetting !== null && practiceSetting !== void 0 && (_practiceSetting$side = practiceSetting.sideBar) !== null && _practiceSetting$side !== void 0 && _practiceSetting$side.confirmLeave) {
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
title: "离开此页提示",
|
|
|
content: "系统可能不会保存您所做的更改。",
|
|
|
okText: "离开",
|
|
|
cancelText: "取消",
|
|
|
onOk: function onOk() {
|
|
|
toNext();
|
|
|
dispatch({
|
|
|
type: 'practiceSetting/setSideBarTabs',
|
|
|
payload: {
|
|
|
confirmLeave: false
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
toNext();
|
|
|
}
|
|
|
}
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context6.stop();
|
|
|
}
|
|
|
}, _callee6);
|
|
|
}));
|
|
|
return function handleSelectTree(_x6, _x7) {
|
|
|
return _ref7.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleDeleteFile = function handleDeleteFile(path, name, item) {
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
centered: true,
|
|
|
title: "\u786E\u8BA4\u9700\u8981\u5220\u9664\u8BE5\u6587\u4EF6".concat(item.children ? "夹" : "", "?"),
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
onOk: function () {
|
|
|
var _onOk = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee7() {
|
|
|
var _taskData$myshixun2;
|
|
|
var res, pathArr, res2;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee7$(_context7) {
|
|
|
while (1) switch (_context7.prev = _context7.next) {
|
|
|
case 0:
|
|
|
_context7.next = 2;
|
|
|
return (0,service/* deleteMyGitFile */.bD)({
|
|
|
id: taskData === null || taskData === void 0 ? void 0 : (_taskData$myshixun2 = taskData.myshixun) === null || _taskData$myshixun2 === void 0 ? void 0 : _taskData$myshixun2.identifier,
|
|
|
path: path,
|
|
|
message: "\u5220\u9664".concat(path)
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context7.sent;
|
|
|
pathArr = path.split("/");
|
|
|
if (!((res === null || res === void 0 ? void 0 : res.status) === 0)) {
|
|
|
_context7.next = 20;
|
|
|
break;
|
|
|
}
|
|
|
message/* default.info */.ZP.info("删除成功");
|
|
|
pathArr.splice(pathArr.length - 1, 1);
|
|
|
_context7.next = 9;
|
|
|
return handleGetRepository(pathArr.length > 1 ? pathArr.join("/") : "");
|
|
|
case 9:
|
|
|
res2 = _context7.sent;
|
|
|
if (!(res2 !== null && res2 !== void 0 && res2.trees)) {
|
|
|
_context7.next = 13;
|
|
|
break;
|
|
|
}
|
|
|
_context7.next = 16;
|
|
|
break;
|
|
|
case 13:
|
|
|
pathArr.splice(pathArr.length - 1, 1);
|
|
|
_context7.next = 16;
|
|
|
return handleGetRepository(pathArr.length > 1 ? pathArr.join("/") : "");
|
|
|
case 16:
|
|
|
selectPath('');
|
|
|
return _context7.abrupt("return", true);
|
|
|
case 20:
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === -3) {
|
|
|
modal/* default.info */.Z.info({
|
|
|
title: "删除失败",
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: ["\u8BE5\u6587\u4EF6\u201C", path, "\u201D\u5DF2\u7ECF\u88AB\u4EFB\u52A1\u5173\u5361\u7684\u5B66\u5458\u4EFB\u52A1\u6587\u4EF6\u6216\u8BC4\u6D4B\u6267\u884C\u6587\u4EF6\u4F7F\u7528\uFF0C\u8BF7\u5148\u4FEE\u6539\u4EFB\u52A1\u5173\u5361\u4E2D\u8BC4\u6D4B\u8BBE\u7F6E\u7684\u6587\u4EF6\u8DEF\u5F84\u540E\u518D\u5220\u9664\u3002"]
|
|
|
}),
|
|
|
okText: "我知道了",
|
|
|
// cancelText: "取消",
|
|
|
onOk: function onOk() {
|
|
|
// window.location.href = (`/shixuns/${params.id}/edit/${res?.message}/tab=2`)
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
case 21:
|
|
|
case "end":
|
|
|
return _context7.stop();
|
|
|
}
|
|
|
}, _callee7);
|
|
|
}));
|
|
|
function onOk() {
|
|
|
return _onOk.apply(this, arguments);
|
|
|
}
|
|
|
return onOk;
|
|
|
}()
|
|
|
});
|
|
|
};
|
|
|
var copyFilePath = function copyFilePath(item) {
|
|
|
//事件待定
|
|
|
console.log(item, 'item');
|
|
|
};
|
|
|
var handleExpand = /*#__PURE__*/function () {
|
|
|
var _ref8 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee8(key, node) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee8$(_context8) {
|
|
|
while (1) switch (_context8.prev = _context8.next) {
|
|
|
case 0:
|
|
|
console.log("handleExpand", node);
|
|
|
if (!(node.nativeEvent.target.nodeName === "svg" || node.nativeEvent.target.nodeName === "path" || node.nativeEvent.target.nodeName === "LI")) {
|
|
|
_context8.next = 5;
|
|
|
break;
|
|
|
}
|
|
|
return _context8.abrupt("return", true);
|
|
|
case 5:
|
|
|
_context8.next = 7;
|
|
|
return loadData(node.node);
|
|
|
case 7:
|
|
|
if (expandedKeys.includes(node.node.path)) {
|
|
|
expandedKeys.splice(expandedKeys.indexOf(node.node.path), 1);
|
|
|
} else {
|
|
|
expandedKeys.push(node.node.path);
|
|
|
}
|
|
|
case 8:
|
|
|
setExpandedKeys(toConsumableArray_default()(expandedKeys));
|
|
|
case 9:
|
|
|
case "end":
|
|
|
return _context8.stop();
|
|
|
}
|
|
|
}, _callee8);
|
|
|
}));
|
|
|
return function handleExpand(_x8, _x9) {
|
|
|
return _ref8.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var closeTip = function closeTip() {
|
|
|
setVisibleTip(false);
|
|
|
localStorage.warehouseHideTip = true;
|
|
|
};
|
|
|
var handleChange = /*#__PURE__*/function () {
|
|
|
var _ref9 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee9(checked) {
|
|
|
var _shixunsDetail$detail;
|
|
|
var content, title, okText, cancelText;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee9$(_context9) {
|
|
|
while (1) switch (_context9.prev = _context9.next) {
|
|
|
case 0:
|
|
|
title = '';
|
|
|
_context9.t0 = isRepository;
|
|
|
_context9.next = _context9.t0 === true ? 4 : _context9.t0 === false ? 9 : 11;
|
|
|
break;
|
|
|
case 4:
|
|
|
title = '开启版本库';
|
|
|
okText = "开启";
|
|
|
cancelText = "不开启";
|
|
|
content = /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u65B0\u5EFA\u5B9E\u8DF5\u9898\u5173\u5361\u65F6\uFF0C\u9700\u8981\u4F7F\u7528\u4EE3\u7801\u4ED3\u5E93\uFF1B\u5982\u679C\u53EA\u6709\u9009\u62E9\u9898\u5173\u5361\uFF0C\u5219\u4E0D\u9700\u8981\u4EE3\u7801\u4ED3\u5E93\u3002\u4EE3\u7801\u4ED3\u5E93\u542F\u7528\u540E\uFF0C\u5C06\u65E0\u6CD5\u5173\u95ED\u3002"
|
|
|
});
|
|
|
return _context9.abrupt("break", 11);
|
|
|
case 9:
|
|
|
if (shixunsDetail !== null && shixunsDetail !== void 0 && (_shixunsDetail$detail = shixunsDetail.detail) !== null && _shixunsDetail$detail !== void 0 && _shixunsDetail$detail.secret_repository) {
|
|
|
title = '关闭私密代码仓库';
|
|
|
okText = "确定";
|
|
|
cancelText = "取消";
|
|
|
content = /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u5173\u95ED\u79C1\u5BC6\u4EE3\u7801\u4ED3\u5E93\u540E\uFF0C\u5DF2\u521B\u5EFA\u7684\u79C1\u5BC6\u4EE3\u7801\u4ED3\u5E93\u53CA\u5176\u5185\u5BB9\uFF0C\u5C06\u88AB\u5220\u9664\u3002\u786E\u8BA4\u8981\u5173\u95ED\u79C1\u5BC6\u4EE3\u7801\u4ED3\u5E93\uFF1F"
|
|
|
});
|
|
|
} else {
|
|
|
title = '开启私密代码仓库';
|
|
|
okText = "不使用";
|
|
|
cancelText = "使用";
|
|
|
content = /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u79C1\u5BC6\u7248\u672C\u5E93\u7684\u6587\u4EF6\u5BF9\u5B66\u5458\u59CB\u7EC8\u9690\u85CF\uFF0C\u65E0\u6CD5\u8BBF\u95EE\u67E5\u770B\u3002\u9002\u7528\u4E8E\u547D\u4EE4\u884C\u3001\u56FE\u5F62\u5316\u684C\u9762\u4E24\u7C7B\u5B9E\u8BAD\uFF0C\u5176\u4ED6\u7C7B\u578B\u5B9E\u8BAD\u4E0D\u5EFA\u8BAE\u4F7F\u7528\u79C1\u5BC6\u7248\u672C\u5E93\u3002"
|
|
|
});
|
|
|
}
|
|
|
return _context9.abrupt("break", 11);
|
|
|
case 11:
|
|
|
if (!(!isRepository && (0,verifyLogin/* ShixunStatusModel */.gy)(dispatch, '不能开启/关闭私密代码仓库'))) {
|
|
|
_context9.next = 13;
|
|
|
break;
|
|
|
}
|
|
|
return _context9.abrupt("return");
|
|
|
case 13:
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
title: title,
|
|
|
okText: okText,
|
|
|
cancelText: cancelText,
|
|
|
content: content,
|
|
|
onOk: function onOk() {
|
|
|
var _shixunsDetail$detail2;
|
|
|
(0,util/* trackEvent */.L9)(['实践项目', '设置', '代码仓库', title]);
|
|
|
if (!isRepository && !(shixunsDetail !== null && shixunsDetail !== void 0 && (_shixunsDetail$detail2 = shixunsDetail.detail) !== null && _shixunsDetail$detail2 !== void 0 && _shixunsDetail$detail2.secret_repository)) {} else {
|
|
|
handleChangeNext(checked);
|
|
|
}
|
|
|
},
|
|
|
onCancel: function onCancel() {
|
|
|
var _shixunsDetail$detail3;
|
|
|
if (!isRepository && !(shixunsDetail !== null && shixunsDetail !== void 0 && (_shixunsDetail$detail3 = shixunsDetail.detail) !== null && _shixunsDetail$detail3 !== void 0 && _shixunsDetail$detail3.secret_repository)) {
|
|
|
handleChangeNext(checked);
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
case 14:
|
|
|
case "end":
|
|
|
return _context9.stop();
|
|
|
}
|
|
|
}, _callee9);
|
|
|
}));
|
|
|
return function handleChange(_x10) {
|
|
|
return _ref9.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleChangeNext = /*#__PURE__*/function () {
|
|
|
var _ref10 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee10(checked) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee10$(_context10) {
|
|
|
while (1) switch (_context10.prev = _context10.next) {
|
|
|
case 0:
|
|
|
if (!isRepository) {
|
|
|
_context10.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
_context10.next = 3;
|
|
|
return (0,shixuns/* createRepository */.h4)(objectSpread2_default()({}, params));
|
|
|
case 3:
|
|
|
dispatch({
|
|
|
type: 'practiceSetting/getCommonData',
|
|
|
payload: objectSpread2_default()({}, params)
|
|
|
});
|
|
|
_context10.next = 8;
|
|
|
break;
|
|
|
case 6:
|
|
|
_context10.next = 8;
|
|
|
return (0,shixuns/* createSecretRepository */.K0)(objectSpread2_default()(objectSpread2_default()({}, params), {}, {
|
|
|
is_secret_repository: checked
|
|
|
}));
|
|
|
case 8:
|
|
|
handleGetRepository();
|
|
|
dispatch({
|
|
|
type: "shixunsDetail/getShixunsDetail",
|
|
|
payload: {
|
|
|
id: params.id
|
|
|
}
|
|
|
});
|
|
|
case 10:
|
|
|
case "end":
|
|
|
return _context10.stop();
|
|
|
}
|
|
|
}, _callee10);
|
|
|
}));
|
|
|
return function handleChangeNext(_x11) {
|
|
|
return _ref10.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var onDragEnter = function onDragEnter(info) {
|
|
|
console.log(info);
|
|
|
// expandedKeys 需要受控时设置
|
|
|
// this.setState({
|
|
|
// expandedKeys: info.expandedKeys,
|
|
|
// });
|
|
|
};
|
|
|
|
|
|
var onDrop = /*#__PURE__*/function () {
|
|
|
var _ref11 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee11(info) {
|
|
|
var dropKey, dragKey, dropPos, dropPosition, res, p, loop, data, dragObj, ar, i;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee11$(_context11) {
|
|
|
while (1) switch (_context11.prev = _context11.next) {
|
|
|
case 0:
|
|
|
console.log(info);
|
|
|
dropKey = info.node.key;
|
|
|
dragKey = info.dragNode.key;
|
|
|
dropPos = info.node.pos.split('-');
|
|
|
dropPosition = info.dropPosition - Number(dropPos[dropPos.length - 1]);
|
|
|
if (!(info.node.type !== 'tree' || info.dragNode.path.split("/").length === 1)) {
|
|
|
_context11.next = 8;
|
|
|
break;
|
|
|
}
|
|
|
message/* default.warn */.ZP.warn("未移动文件目录位置");
|
|
|
return _context11.abrupt("return");
|
|
|
case 8:
|
|
|
_context11.next = 10;
|
|
|
return dispatch({
|
|
|
type: "shixunsDetail/moveGitFile",
|
|
|
payload: {
|
|
|
id: params.id,
|
|
|
from: info.dragNode.path,
|
|
|
to: info.node.path + '/' + info.dragNode.name,
|
|
|
message: "".concat(info.dragNode.path, " move to ").concat(info.node.path + '/' + info.dragNode.name, " ")
|
|
|
}
|
|
|
});
|
|
|
case 10:
|
|
|
res = _context11.sent;
|
|
|
if (!(res.status === 0)) {
|
|
|
_context11.next = 22;
|
|
|
break;
|
|
|
}
|
|
|
selectPath('');
|
|
|
p = info.dragNode.path.split("/");
|
|
|
p.pop();
|
|
|
_context11.next = 17;
|
|
|
return handleGetRepository(info.node.path);
|
|
|
case 17:
|
|
|
_context11.next = 19;
|
|
|
return handleGetRepository(p.join("/"));
|
|
|
case 19:
|
|
|
p.pop();
|
|
|
_context11.next = 22;
|
|
|
return handleGetRepository(p.join("/"));
|
|
|
case 22:
|
|
|
return _context11.abrupt("return");
|
|
|
case 28:
|
|
|
case "end":
|
|
|
return _context11.stop();
|
|
|
}
|
|
|
}, _callee11);
|
|
|
}));
|
|
|
return function onDrop(_x12) {
|
|
|
return _ref11.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("section", {
|
|
|
className: Treemodules.bg,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Treemodules.contentbg,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Treemodules.wrap,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
className: Treemodules.gitCode,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "iconfont icon-daimacangku2 mr8"
|
|
|
}), isRepository ? "代码仓库" : "私密代码仓库"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(dropdown/* default */.Z, {
|
|
|
dropdownRender: function dropdownRender() {
|
|
|
return menu({
|
|
|
type: "topTree"
|
|
|
});
|
|
|
},
|
|
|
className: "current",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
open: visibleTip,
|
|
|
title: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "font16",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(EllipsisOutlined/* default */.Z, {
|
|
|
style: {
|
|
|
position: "relative",
|
|
|
left: -35
|
|
|
},
|
|
|
onClick: function onClick() {
|
|
|
return closeTip();
|
|
|
}
|
|
|
}), "\u70B9\u51FB\u6B64\u5904\u65B0\u5EFA\u6587\u4EF6\u3001\u65B0\u5EFA\u6587\u4EF6\u5939\u3001\u4E0A\u4F20\u6587\u4EF6\u3002", /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
onClick: function onClick() {
|
|
|
return closeTip();
|
|
|
},
|
|
|
className: "iconfont icon-guanbi1 ml8 current font14"
|
|
|
})]
|
|
|
}),
|
|
|
overlayClassName: Treemodules.overlayClass,
|
|
|
overlayStyle: {
|
|
|
maxWidth: 500
|
|
|
},
|
|
|
arrowPointAtCenter: true,
|
|
|
placement: "right",
|
|
|
color: "#F7B500"
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
}), !!treeData.length && !isRepository && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "mt20 pl20 pr20 font14 c-white",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u5B9E\u8BAD\u8BC4\u6D4B\u7684\u65F6\u5019\uFF0C\u7CFB\u7EDF\u4F1A\u4E34\u65F6\u5C06\u79C1\u5BC6\u4EE3\u7801\u5E93\u79FB\u52A8\u666E\u901A\u4EE3\u7801\u5E93\u7684secret\u76EE\u5F55\u4E0B\u9762\uFF0C\u8BC4\u6D4B\u7ED3\u675F\u4F1A\u6E05\u7A7Asecret\u76EE\u5F55\u5185\u5BB9\u3002\u5982\u679C\u79C1\u5BC6\u4EE3\u7801\u5E93\u4E2D\u5B58\u5728\u6587\u4EF6src/test.sh\uFF0C\u5728\u666E\u901A\u4EE3\u7801\u5E93\u8C03\u7528\u8BE5\u6587\u4EF6\u5219\u4F7F\u7528\u8DEF\u5F84\uFF1Asecret/src/test.sh"
|
|
|
})
|
|
|
}), treeData.length ? /*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Treemodules.content,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(DirectoryTree
|
|
|
// checkable={editable}
|
|
|
, {
|
|
|
disabled: !!loading.effects['shixunsDetail/getFileContent'],
|
|
|
multiple: true,
|
|
|
showIcon: false,
|
|
|
treeData: treeData,
|
|
|
switcherIcon: /*#__PURE__*/(0,jsx_runtime.jsx)(DownOutlined/* default */.Z, {
|
|
|
style: {
|
|
|
fontWeight: "bold",
|
|
|
fontSize: 14,
|
|
|
position: "relative",
|
|
|
top: 3,
|
|
|
marginLeft: 22
|
|
|
}
|
|
|
}),
|
|
|
onExpand: handleExpand,
|
|
|
expandedKeys: expandedKeys,
|
|
|
selectedKeys: selectedKeys
|
|
|
// loadData={loadData}
|
|
|
// loadedKeys={[]}
|
|
|
,
|
|
|
onSelect: handleSelectTree,
|
|
|
draggable: true,
|
|
|
onDragEnter: onDragEnter,
|
|
|
onDrop: onDrop,
|
|
|
allowDrop: function allowDrop(_ref12) {
|
|
|
var dropNode = _ref12.dropNode,
|
|
|
dropPosition = _ref12.dropPosition;
|
|
|
return false;
|
|
|
}
|
|
|
// onCheck={handleCheckTree}
|
|
|
})
|
|
|
})
|
|
|
}) : '', !treeData.length && isRepository && (shixunsDetail === null || shixunsDetail === void 0 ? void 0 : (_shixunsDetail$detail4 = shixunsDetail.detail) === null || _shixunsDetail$detail4 === void 0 ? void 0 : _shixunsDetail$detail4.init_repository) && /*#__PURE__*/(0,jsx_runtime.jsx)(NoData, {}), !treeData.length && !isRepository && (shixunsDetail === null || shixunsDetail === void 0 ? void 0 : (_shixunsDetail$detail5 = shixunsDetail.detail) === null || _shixunsDetail$detail5 === void 0 ? void 0 : _shixunsDetail$detail5.secret_repository) && /*#__PURE__*/(0,jsx_runtime.jsx)(NoData, {})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(RenameFile, {
|
|
|
taskData: taskData,
|
|
|
open: showRenameFile,
|
|
|
defaultPath: defaultPath,
|
|
|
onClose: function onClose() {
|
|
|
return setShowRenameFile(false);
|
|
|
},
|
|
|
isRepository: !isRepository,
|
|
|
onOK: /*#__PURE__*/function () {
|
|
|
var _ref13 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee12(data) {
|
|
|
var pathArr;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee12$(_context12) {
|
|
|
while (1) switch (_context12.prev = _context12.next) {
|
|
|
case 0:
|
|
|
// insertFile(data.path, data.name)
|
|
|
pathArr = defaultPath.split("/");
|
|
|
pathArr.pop();
|
|
|
_context12.next = 4;
|
|
|
return handleGetRepository(pathArr.join("/"));
|
|
|
case 4:
|
|
|
selectPath("");
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context12.stop();
|
|
|
}
|
|
|
}, _callee12);
|
|
|
}));
|
|
|
return function (_x13) {
|
|
|
return _ref13.apply(this, arguments);
|
|
|
};
|
|
|
}()
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(components_AddFile, {
|
|
|
taskData: taskData,
|
|
|
visible: showAddFile,
|
|
|
defaultPath: defaultPath,
|
|
|
onClose: function onClose() {
|
|
|
return setShowAddFile(false);
|
|
|
},
|
|
|
isRepository: isRepository,
|
|
|
onOK: function onOK(data) {
|
|
|
insertFile(data.path, data.name);
|
|
|
}
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(AddFolder, {
|
|
|
taskData: taskData,
|
|
|
visible: showAddFolder,
|
|
|
defaultPath: defaultPath,
|
|
|
onClose: function onClose() {
|
|
|
return setShowAddFolder(false);
|
|
|
},
|
|
|
isRepository: isRepository,
|
|
|
onOK: function onOK(data) {
|
|
|
insertFile(data.path, data.name);
|
|
|
}
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(components_UploadFile, {
|
|
|
taskData: taskData,
|
|
|
defaultPath: defaultPath,
|
|
|
visible: showUploadFile,
|
|
|
isRepository: isRepository,
|
|
|
onClose: function onClose() {
|
|
|
return setShowUploadFile(false);
|
|
|
},
|
|
|
onOK: /*#__PURE__*/function () {
|
|
|
var _ref14 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee13(data) {
|
|
|
var pathArr;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee13$(_context13) {
|
|
|
while (1) switch (_context13.prev = _context13.next) {
|
|
|
case 0:
|
|
|
pathArr = defaultPath.split("/");
|
|
|
_context13.next = 3;
|
|
|
return handleGetRepository(defaultPath);
|
|
|
case 3:
|
|
|
expandedKeys = [pathArr[0] || ''];
|
|
|
selectedKeys = [defaultPath];
|
|
|
setSelectedKeys(toConsumableArray_default()(selectedKeys));
|
|
|
setExpandedKeys(toConsumableArray_default()(expandedKeys));
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context13.stop();
|
|
|
}
|
|
|
}, _callee13);
|
|
|
}));
|
|
|
return function (_x14) {
|
|
|
return _ref14.apply(this, arguments);
|
|
|
};
|
|
|
}()
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(components_SelectFilePathModal, {
|
|
|
pathList: defaultPath === null || defaultPath === void 0 ? void 0 : defaultPath.split("/"),
|
|
|
showInputPath: true,
|
|
|
isMergeSelectFile: isMergeSelectFile,
|
|
|
onFinish: function onFinish(path) {
|
|
|
isMergeSelectFile ? handleMergeSelectFile(path) : handleGetRepository(path);
|
|
|
setIsMergeSelectFile(false);
|
|
|
}
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
var NoData = function NoData() {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "mt20 pb50 ".concat(Treemodules.nodata),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Treemodules.headLeft,
|
|
|
children: ["\u63D0\u793A\uFF1A", /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), "\u6B64\u5904\u5B58\u653E\u672C\u5B9E\u8BAD\u6240\u9700\u7684\u6240\u6709\u4EE3\u7801\u7B49\u76F8\u5173\u6587\u4EF6\uFF0C\u4F60\u53EF\u4EE5\u901A\u8FC7\u4EE5\u4E0B", /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), "\u4E24\u79CD\u65B9\u5F0F\u6765\u4F7F\u7528\uFF1A", /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), "1\u3001", /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/forums/2784",
|
|
|
target: "_blank",
|
|
|
children: "Git\u5BA2\u6237\u7AEF"
|
|
|
}), " \u4E0A\u4F20\u5DF2\u6709\u6587\u4EF6\u6765\u5F00\u59CB\u4F7F\u7528\u3002", /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), "2\u3001\u76F4\u63A5\u5728\u5E73\u53F0\u4E0A\u521B\u5EFA\u6587\u4EF6\u76EE\u5F55\u4EE5\u53CA\u76F8\u5173\u4EE3\u7801\u6587\u4EF6\u3002"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
width: "100%",
|
|
|
src: ImagesIcon/* repositoryNoneDataIcon */.Oe
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var Tree = ((0,_umi_production_exports.connect)(function (_ref15) {
|
|
|
var shixunsDetail = _ref15.shixunsDetail,
|
|
|
loading = _ref15.loading,
|
|
|
globalSetting = _ref15.globalSetting,
|
|
|
practiceSetting = _ref15.practiceSetting,
|
|
|
user = _ref15.user;
|
|
|
return {
|
|
|
shixunsDetail: shixunsDetail,
|
|
|
globalSetting: globalSetting,
|
|
|
user: user,
|
|
|
practiceSetting: practiceSetting,
|
|
|
loading: loading
|
|
|
};
|
|
|
})(Repository));
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/divider/style/index.js + 1 modules
|
|
|
var divider_style = __webpack_require__(98541);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/divider/index.js
|
|
|
var divider = __webpack_require__(27049);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/Commit.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var Commitmodules = ({"flex_box_center":"flex_box_center___e0Vsb","flex_space_between":"flex_space_between___fOYBZ","flex_box_vertical_center":"flex_box_vertical_center___etkby","flex_box_center_end":"flex_box_center_end___T2Etw","flex_box_column":"flex_box_column___pALN8","commitWrap":"commitWrap___Mdvi5","wrap":"wrap___ORj56","colorGray":"colorGray___Q64q1","content":"content___PuAlb","itemTime":"itemTime___IfizK","imageUrl":"imageUrl___BCM2C","blueLight":"blueLight___D24GG","divider":"divider___pIU7h","empty":"empty___F575C"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/components/Commit.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Commit_excluded = ["shixunsDetail", "globalSetting", "loading", "user", "dispatch", "isRepository"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// import Right from '../../components/Right';
|
|
|
|
|
|
|
|
|
|
|
|
var Commit = function Commit(_ref) {
|
|
|
var shixunsDetail = _ref.shixunsDetail,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
user = _ref.user,
|
|
|
dispatch = _ref.dispatch,
|
|
|
isRepository = _ref.isRepository,
|
|
|
props = objectWithoutProperties_default()(_ref, Commit_excluded);
|
|
|
var params = objectSpread2_default()(objectSpread2_default()({}, (0,_umi_production_exports.useParams)()), (0,_umi_production_exports.useLocation)().query);
|
|
|
var _useState = (0,react.useState)([]),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
commitList = _useState2[0],
|
|
|
setCommitList = _useState2[1];
|
|
|
(0,react.useEffect)(function () {
|
|
|
getRepositoryCommit();
|
|
|
}, [isRepository]);
|
|
|
var getRepositoryCommit = /*#__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 dispatch({
|
|
|
type: 'shixunsDetail/getRepositoryCommit',
|
|
|
payload: {
|
|
|
id: params.id,
|
|
|
secret_repository: isRepository ? undefined : true
|
|
|
}
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
if (res) {
|
|
|
setCommitList(res.commits || []);
|
|
|
}
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function getRepositoryCommit() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [commitList == '' && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Commitmodules.empty,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: ImagesIcon/* emptyIcon2 */.em,
|
|
|
width: "258"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "c-grey-c font14",
|
|
|
children: "\u6682\u65E0\u63D0\u4EA4\u8BB0\u5F55"
|
|
|
})]
|
|
|
}), commitList != '' && /*#__PURE__*/(0,jsx_runtime.jsx)("section", {
|
|
|
className: Commitmodules.bg,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Commitmodules.wrap,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Commitmodules.content,
|
|
|
children: commitList === null || commitList === void 0 ? void 0 : commitList.map(function (item) {
|
|
|
var _item$author, _item$author2;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(row/* default */.Z, {
|
|
|
align: "middle",
|
|
|
className: "c-white font16",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
children: item.title
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
align: "middle",
|
|
|
className: "mt20 ",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
className: Commitmodules.imageUrl,
|
|
|
src: env/* default.IMG_SERVER */.Z.IMG_SERVER + '/' + ((_item$author = item.author) === null || _item$author === void 0 ? void 0 : _item$author.image_url)
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
className: Commitmodules.blueLight,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "ml20",
|
|
|
children: (_item$author2 = item.author) === null || _item$author2 === void 0 ? void 0 : _item$author2.username
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(col/* default */.Z, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "ml20 ".concat(Commitmodules.blueLight),
|
|
|
children: "\u63D0\u4EA4\u4E8E"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "ml20 ".concat(Commitmodules.blueLight),
|
|
|
children: item.time
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(divider/* default */.Z, {
|
|
|
className: Commitmodules.divider
|
|
|
})]
|
|
|
});
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var components_Commit = ((0,_umi_production_exports.connect)(function (_ref3) {
|
|
|
var shixunsDetail = _ref3.shixunsDetail,
|
|
|
loading = _ref3.loading,
|
|
|
globalSetting = _ref3.globalSetting,
|
|
|
user = _ref3.user;
|
|
|
return {
|
|
|
shixunsDetail: shixunsDetail,
|
|
|
globalSetting: globalSetting,
|
|
|
user: user,
|
|
|
loading: loading.models.index
|
|
|
};
|
|
|
})(Commit));
|
|
|
// EXTERNAL MODULE: ./src/components/PreviewAll/index.tsx + 1 modules
|
|
|
var PreviewAll = __webpack_require__(36579);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/Warehouse/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Warehouse_excluded = ["globalSetting", "loading", "dispatch", "practiceSetting", "shixunsDetail", "taskData", "taskId", "onEditRepCode"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// import Complete from '../../components/Complete';
|
|
|
|
|
|
|
|
|
|
|
|
var TabPane = tabs/* default.TabPane */.Z.TabPane;
|
|
|
var Warehouse = function Warehouse(_ref) {
|
|
|
var _taskData$user, _practiceSetting$side2, _practiceSetting$side7, _practiceSetting$side9, _practiceSetting$side10, _shixunsDetail$detail4;
|
|
|
var globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
dispatch = _ref.dispatch,
|
|
|
practiceSetting = _ref.practiceSetting,
|
|
|
shixunsDetail = _ref.shixunsDetail,
|
|
|
taskData = _ref.taskData,
|
|
|
taskId = _ref.taskId,
|
|
|
onEditRepCode = _ref.onEditRepCode,
|
|
|
props = objectWithoutProperties_default()(_ref, Warehouse_excluded);
|
|
|
var hasNextGame = !(taskData !== null && taskData !== void 0 && taskData.is_last_game) && ((taskData === null || taskData === void 0 ? void 0 : taskData.shixun.status) > 0 || (taskData === null || taskData === void 0 ? void 0 : (_taskData$user = taskData.user) === null || _taskData$user === void 0 ? void 0 : _taskData$user.identity) < 5);
|
|
|
var _useState = (0,react.useState)("1"),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
activeKey = _useState2[0],
|
|
|
setActiveKey = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)("1"),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
tabKey = _useState4[0],
|
|
|
setTabKey = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)(true),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
widthBool = _useState6[0],
|
|
|
setWidthBool = _useState6[1];
|
|
|
var _useState7 = (0,react.useState)({}),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
codeMirrorValue = _useState8[0],
|
|
|
setCodeMirrorValue = _useState8[1];
|
|
|
var codeMirrorSourceValue = (0,react.useRef)();
|
|
|
// let [codeMirrorSourceValue, setCodeMirrorSourceValue] = useState<string>()
|
|
|
|
|
|
var _useState9 = (0,react.useState)(true),
|
|
|
_useState10 = slicedToArray_default()(_useState9, 2),
|
|
|
isRepository = _useState10[0],
|
|
|
setIsRepository = _useState10[1];
|
|
|
var _useState11 = (0,react.useState)(["2", "1"]),
|
|
|
_useState12 = slicedToArray_default()(_useState11, 2),
|
|
|
filePath = _useState12[0],
|
|
|
setFilePath = _useState12[1];
|
|
|
var _useState13 = (0,react.useState)([]),
|
|
|
_useState14 = slicedToArray_default()(_useState13, 2),
|
|
|
treeData = _useState14[0],
|
|
|
setTreeData = _useState14[1];
|
|
|
var ref = (0,react.useRef)();
|
|
|
var params = objectSpread2_default()(objectSpread2_default()({}, (0,_umi_production_exports.useParams)()), {}, {
|
|
|
taskId: taskId
|
|
|
});
|
|
|
var _useState15 = (0,react.useState)(false),
|
|
|
_useState16 = slicedToArray_default()(_useState15, 2),
|
|
|
isLoading = _useState16[0],
|
|
|
setIsLoading = _useState16[1];
|
|
|
var menuData = [{
|
|
|
id: "1",
|
|
|
name: "代码仓库"
|
|
|
}, {
|
|
|
id: "2",
|
|
|
name: /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u79C1\u5BC6\u4EE3\u7801\u4ED3\u5E93"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u79C1\u5BC6\u7248\u672C\u5E93\u7684\u6587\u4EF6\u5BF9\u5B66\u5458\u59CB\u7EC8\u9690\u85CF\uFF0C\u65E0\u6CD5\u8BBF\u95EE\u67E5\u770B\u3002",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-xiaowenhao",
|
|
|
style: {
|
|
|
marginLeft: 2,
|
|
|
fontSize: 14
|
|
|
}
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
}];
|
|
|
|
|
|
// useEffect(() => {
|
|
|
// window.addEventListener('click', handleSkip);
|
|
|
// return () => {
|
|
|
// window.removeEventListener('click', handleSkip);
|
|
|
// }
|
|
|
// }, [widthBool])
|
|
|
|
|
|
(0,react.useEffect)(function () {
|
|
|
var _practiceSetting$side;
|
|
|
var path = practiceSetting === null || practiceSetting === void 0 ? void 0 : (_practiceSetting$side = practiceSetting.sideBar) === null || _practiceSetting$side === void 0 ? void 0 : _practiceSetting$side.selectPath.split("/");
|
|
|
setFilePath(path);
|
|
|
}, [practiceSetting === null || practiceSetting === void 0 ? void 0 : (_practiceSetting$side2 = practiceSetting.sideBar) === null || _practiceSetting$side2 === void 0 ? void 0 : _practiceSetting$side2.selectPath]);
|
|
|
|
|
|
//父级找元素
|
|
|
// const parentIndexOf = (node: any, parent: any) => {
|
|
|
// if (node.id === parent) { return node; }
|
|
|
// for (let i = 0, n = node; n = n.parentNode; i++) {
|
|
|
// if (n.id === parent) { return n; }
|
|
|
// if (n == document.documentElement) { return false; } //找不到目标父节点,防止死循环
|
|
|
// }
|
|
|
// }
|
|
|
|
|
|
// const handleSkip = async (e: any) => {
|
|
|
// if (!parentIndexOf(e.target, 'latex-drawer') && widthBool) {
|
|
|
// setWidthBool(false)
|
|
|
// }
|
|
|
// }
|
|
|
|
|
|
var messageData = function messageData(data) {
|
|
|
if (data.data === "compileResltDone") {
|
|
|
setIsLoading(false);
|
|
|
}
|
|
|
};
|
|
|
(0,react.useEffect)(function () {
|
|
|
window.addEventListener("message", messageData);
|
|
|
return function () {
|
|
|
window.removeEventListener("message", messageData);
|
|
|
};
|
|
|
}, []);
|
|
|
var updateCodeMirrorValue = function updateCodeMirrorValue(value) {
|
|
|
// console.log(value, codeMirrorSourceValue, value === codeMirrorSourceValue.current, ":codeMirrorSourceValue")
|
|
|
// if(!codeMirrorValue?.content) return;
|
|
|
if ((codeMirrorValue === null || codeMirrorValue === void 0 ? void 0 : codeMirrorValue.file_type) === 'txt') {
|
|
|
codeMirrorValue.content = value;
|
|
|
setCodeMirrorValue(objectSpread2_default()({}, codeMirrorValue));
|
|
|
onEditRepCode(value);
|
|
|
}
|
|
|
// else {
|
|
|
// codeMirrorValue.data = value;
|
|
|
// setCodeMirrorValue({ ...codeMirrorValue });
|
|
|
// }
|
|
|
};
|
|
|
|
|
|
(0,react.useEffect)(function () {
|
|
|
var _practiceSetting$side3;
|
|
|
console.log(practiceSetting === null || practiceSetting === void 0 ? void 0 : (_practiceSetting$side3 = practiceSetting.sideBar) === null || _practiceSetting$side3 === void 0 ? void 0 : _practiceSetting$side3.selectPath, 'sideBar');
|
|
|
new Promise( /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(resolve, reject) {
|
|
|
var _practiceSetting$side4, _practiceSetting$side5;
|
|
|
var _practiceSetting$side6, res, _res$content, _res$content2, _res$content3;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
if (!((practiceSetting === null || practiceSetting === void 0 ? void 0 : (_practiceSetting$side4 = practiceSetting.sideBar) === null || _practiceSetting$side4 === void 0 ? void 0 : _practiceSetting$side4.selectPath) !== '' && practiceSetting !== null && practiceSetting !== void 0 && (_practiceSetting$side5 = practiceSetting.sideBar) !== null && _practiceSetting$side5 !== void 0 && _practiceSetting$side5.selectPath)) {
|
|
|
_context.next = 5;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 3;
|
|
|
return (0,service/* fetchCode */.li)(taskId, {
|
|
|
path: practiceSetting === null || practiceSetting === void 0 ? void 0 : (_practiceSetting$side6 = practiceSetting.sideBar) === null || _practiceSetting$side6 === void 0 ? void 0 : _practiceSetting$side6.selectPath
|
|
|
});
|
|
|
case 3:
|
|
|
res = _context.sent;
|
|
|
if (res !== null && res !== void 0 && res.content || (res === null || res === void 0 ? void 0 : res.content) == '') {
|
|
|
try {
|
|
|
if ((res === null || res === void 0 ? void 0 : res.file_type) === 'txt') {
|
|
|
res.content = window.decodeURIComponent(escape(window.atob((_res$content = res.content) === null || _res$content === void 0 ? void 0 : _res$content.content)));
|
|
|
setCodeMirrorValue(objectSpread2_default()({}, res));
|
|
|
|
|
|
// setCodeMirrorValue(codeMirrorValue)
|
|
|
} else {
|
|
|
res.content = (_res$content2 = res.content) === null || _res$content2 === void 0 ? void 0 : _res$content2.content;
|
|
|
setCodeMirrorValue(objectSpread2_default()({}, res));
|
|
|
|
|
|
// res.content = res.content
|
|
|
// setCodeMirrorValue(codeMirrorValue)
|
|
|
}
|
|
|
} catch (e) {
|
|
|
if (codeMirrorValue.content) res.content = window.atob((_res$content3 = res.content) === null || _res$content3 === void 0 ? void 0 : _res$content3.content);
|
|
|
setCodeMirrorValue(objectSpread2_default()({}, res));
|
|
|
message/* default.warn */.ZP.warn("请确认文件字符集编码是否为UTF-8");
|
|
|
}
|
|
|
} else {
|
|
|
dispatch({
|
|
|
type: 'practiceSetting/setSideBarTabs',
|
|
|
payload: {
|
|
|
selectPath: ''
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function (_x, _x2) {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}());
|
|
|
}, [practiceSetting === null || practiceSetting === void 0 ? void 0 : (_practiceSetting$side7 = practiceSetting.sideBar) === null || _practiceSetting$side7 === void 0 ? void 0 : _practiceSetting$side7.selectPath]);
|
|
|
var menu = /*#__PURE__*/(0,jsx_runtime.jsxs)(es_menu/* default */.Z, {
|
|
|
className: Warehousemodules.menu,
|
|
|
onClick: function onClick(value) {
|
|
|
var _shixunsDetail$detail;
|
|
|
if (!(shixunsDetail !== null && shixunsDetail !== void 0 && (_shixunsDetail$detail = shixunsDetail.detail) !== null && _shixunsDetail$detail !== void 0 && _shixunsDetail$detail.secret_repository) && value.key === "2") {
|
|
|
setTabKey("1");
|
|
|
}
|
|
|
setActiveKey(value.key);
|
|
|
if (value.key === "1") {
|
|
|
setIsRepository(true);
|
|
|
} else {
|
|
|
setIsRepository(false);
|
|
|
}
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_menu/* default.Item */.Z.Item, {
|
|
|
disabled: true,
|
|
|
children: "\u5207\u6362\u4ED3\u5E93"
|
|
|
}, "0"), menuData.filter(function (item) {
|
|
|
var _shixunsDetail$detail2, _shixunsDetail$detail3;
|
|
|
if (!(shixunsDetail !== null && shixunsDetail !== void 0 && (_shixunsDetail$detail2 = shixunsDetail.detail) !== null && _shixunsDetail$detail2 !== void 0 && _shixunsDetail$detail2.init_repository) || shixunsDetail !== null && shixunsDetail !== void 0 && (_shixunsDetail$detail3 = shixunsDetail.detail) !== null && _shixunsDetail$detail3 !== void 0 && _shixunsDetail$detail3.is_jupyter_lab) {
|
|
|
return item.id !== '2';
|
|
|
}
|
|
|
return item;
|
|
|
}).map(function (item, key) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(es_menu/* default.Item */.Z.Item, {
|
|
|
className: "leaveClick",
|
|
|
children: item.name
|
|
|
}, item.id);
|
|
|
})]
|
|
|
});
|
|
|
var handleSave = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var _taskData$myshixun, _practiceSetting$side8, _taskData$game, _document$getElementB, _document$getElementB2;
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
setIsLoading(true);
|
|
|
// const res = await dispatch({
|
|
|
// type: 'shixunsDetail/updateRepositoryFile',
|
|
|
// payload: {
|
|
|
// id: params.id,
|
|
|
// path: shixunsDetail?.fileContent?.params?.path,
|
|
|
// content: codeMirrorValue,
|
|
|
// secret_repository: isRepository ? null : true,
|
|
|
// }
|
|
|
// })
|
|
|
_context2.next = 3;
|
|
|
return (0,service/* updateCode */.n4)(taskData === null || taskData === void 0 ? void 0 : (_taskData$myshixun = taskData.myshixun) === null || _taskData$myshixun === void 0 ? void 0 : _taskData$myshixun.identifier, objectSpread2_default()(objectSpread2_default()({
|
|
|
path: practiceSetting === null || practiceSetting === void 0 ? void 0 : (_practiceSetting$side8 = practiceSetting.sideBar) === null || _practiceSetting$side8 === void 0 ? void 0 : _practiceSetting$side8.selectPath
|
|
|
}, codeMirrorValue), {}, {
|
|
|
evaluate: 0,
|
|
|
game_id: taskData === null || taskData === void 0 ? void 0 : (_taskData$game = taskData.game) === null || _taskData$game === void 0 ? void 0 : _taskData$game.id
|
|
|
}));
|
|
|
case 3:
|
|
|
res = _context2.sent;
|
|
|
(_document$getElementB = document.getElementById("latexIframeRef")) === null || _document$getElementB === void 0 ? void 0 : (_document$getElementB2 = _document$getElementB.contentWindow) === null || _document$getElementB2 === void 0 ? void 0 : _document$getElementB2.postMessage('compile', '*');
|
|
|
if (res !== null && res !== void 0 && res.content) {
|
|
|
dispatch({
|
|
|
type: 'practiceSetting/setSideBarTabs',
|
|
|
payload: objectSpread2_default()(objectSpread2_default()({}, practiceSetting.sideBar), {}, {
|
|
|
confirmLeave: false
|
|
|
})
|
|
|
});
|
|
|
}
|
|
|
case 6:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function handleSave() {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Warehousemodules.warehouse,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Warehousemodules.content,
|
|
|
children: [tabKey === '1' && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("aside", {
|
|
|
className: Warehousemodules.left,
|
|
|
id: "latex-drawer",
|
|
|
style: {
|
|
|
width: widthBool ? '36%' : '0%'
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(spin/* default */.Z, {
|
|
|
spinning: !!loading.effects['shixunsDetail/getRepository'],
|
|
|
wrapperClassName: "".concat(Warehousemodules.loading, " ").concat(Warehousemodules.bottom0),
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(Tree, {
|
|
|
taskData: taskData,
|
|
|
params: params,
|
|
|
setTreeData: setTreeData,
|
|
|
treeData: treeData,
|
|
|
activeKey: activeKey,
|
|
|
isRepository: isRepository
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
onClick: function onClick() {
|
|
|
return setWidthBool(false);
|
|
|
},
|
|
|
className: "".concat(Warehousemodules.close, " iconfont icon-quxiao")
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("aside", {
|
|
|
className: Warehousemodules.right,
|
|
|
ref: ref,
|
|
|
children: [(practiceSetting === null || practiceSetting === void 0 ? void 0 : (_practiceSetting$side9 = practiceSetting.sideBar) === null || _practiceSetting$side9 === void 0 ? void 0 : _practiceSetting$side9.selectPath) !== '' && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)(spin/* default */.Z, {
|
|
|
spinning: !!loading.effects['shixunsDetail/getFileContent'],
|
|
|
wrapperClassName: Warehousemodules.loading,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Warehousemodules.filePathWrp,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
align: "middle",
|
|
|
className: "w100",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
onClick: function onClick() {
|
|
|
return setWidthBool(true);
|
|
|
},
|
|
|
className: "iconfont icon-daimacangku2 c-white current"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "40px",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Warehousemodules.line,
|
|
|
style: {
|
|
|
marginLeft: 20
|
|
|
}
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
className: Warehousemodules.filePath,
|
|
|
children: filePath.map(function (item, key) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "c-blue",
|
|
|
children: item
|
|
|
});
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: !!loading.effects['shixunsDetail/getFileContent'] ? "hide" : "show",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(PreviewAll/* default */.Z, {
|
|
|
className: "darkBlue",
|
|
|
style: {
|
|
|
top: 66,
|
|
|
height: "calc(100% - 60px)",
|
|
|
position: 'absolute'
|
|
|
},
|
|
|
filename: codeMirrorValue.filename,
|
|
|
type: codeMirrorValue.file_type === "office" ? "download" : codeMirrorValue.file_type,
|
|
|
data: codeMirrorValue.content,
|
|
|
monacoEditor: {
|
|
|
value: codeMirrorValue.content,
|
|
|
language: codeMirrorValue.language,
|
|
|
onChange: function onChange(value) {
|
|
|
return updateCodeMirrorValue(value);
|
|
|
},
|
|
|
options: {
|
|
|
fontSize: 14,
|
|
|
minimap: {
|
|
|
enabled: false
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
})]
|
|
|
}), (codeMirrorValue === null || codeMirrorValue === void 0 ? void 0 : codeMirrorValue.file_type) === "txt" && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Warehousemodules.footer,
|
|
|
children: [(taskData === null || taskData === void 0 ? void 0 : taskData.prev_game) && /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/tasks/".concat(taskData === null || taskData === void 0 ? void 0 : taskData.prev_game).concat(location.search),
|
|
|
style: {
|
|
|
marginRight: 'auto'
|
|
|
},
|
|
|
onClick: function onClick(e) {
|
|
|
e.preventDefault();
|
|
|
setTimeout(function () {
|
|
|
return window.location.href = "/tasks/".concat(taskData === null || taskData === void 0 ? void 0 : taskData.prev_game).concat(location.search);
|
|
|
}, 300);
|
|
|
},
|
|
|
children: "\u4E0A\u4E00\u5173"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.Z, {
|
|
|
type: "primary",
|
|
|
size: "large",
|
|
|
loading: isLoading,
|
|
|
onClick: handleSave,
|
|
|
children: "\u5F00\u59CB\u7F16\u8BD1"
|
|
|
}), hasNextGame && /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/tasks/".concat(taskData === null || taskData === void 0 ? void 0 : taskData.next_game).concat(location.search),
|
|
|
style: {
|
|
|
marginLeft: 'auto'
|
|
|
},
|
|
|
onClick: function onClick(e) {
|
|
|
var _taskData$shixun, _taskData$user2;
|
|
|
e.preventDefault();
|
|
|
if (taskData !== null && taskData !== void 0 && (_taskData$shixun = taskData.shixun) !== null && _taskData$shixun !== void 0 && _taskData$shixun.task_pass || (taskData === null || taskData === void 0 ? void 0 : taskData.game.status) === 2 || (taskData === null || taskData === void 0 ? void 0 : (_taskData$user2 = taskData.user) === null || _taskData$user2 === void 0 ? void 0 : _taskData$user2.identity) < 5) {
|
|
|
setTimeout(function () {
|
|
|
return window.location.href = "/tasks/".concat(taskData === null || taskData === void 0 ? void 0 : taskData.next_game).concat(location.search);
|
|
|
}, 300);
|
|
|
return;
|
|
|
}
|
|
|
modal/* default.warning */.Z.warning({
|
|
|
centered: true,
|
|
|
width: 530,
|
|
|
title: '提示',
|
|
|
okText: '我知道了',
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u8BE5\u5B9E\u8DF5\u9879\u76EE\u8BBE\u7F6E\u4E86\u4E0D\u5141\u8BB8\u8DF3\u5173\u3002\u901A\u8FC7\u5F53\u524D\u5173\u5361\u540E\uFF0C\u624D\u80FD\u8FDB\u5165\u4E0B\u4E00\u5173\u3002"
|
|
|
})
|
|
|
});
|
|
|
},
|
|
|
children: "\u4E0B\u4E00\u5173"
|
|
|
})]
|
|
|
})]
|
|
|
}), (practiceSetting === null || practiceSetting === void 0 ? void 0 : (_practiceSetting$side10 = practiceSetting.sideBar) === null || _practiceSetting$side10 === void 0 ? void 0 : _practiceSetting$side10.selectPath) == '' && (shixunsDetail === null || shixunsDetail === void 0 ? void 0 : (_shixunsDetail$detail4 = shixunsDetail.detail) === null || _shixunsDetail$detail4 === void 0 ? void 0 : _shixunsDetail$detail4.init_repository) && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Warehousemodules.empty,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: ImagesIcon/* emptyIcon */.x7,
|
|
|
width: "258"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: "c-grey-c",
|
|
|
children: [!!(treeData !== null && treeData !== void 0 && treeData.length) && '在左侧代码仓库区域点击目录打开文件', !(treeData !== null && treeData !== void 0 && treeData.length) && '请先在左侧上传文件或新建文件!']
|
|
|
})]
|
|
|
})]
|
|
|
})]
|
|
|
}), tabKey === '2' && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Warehousemodules.commit,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(components_Commit, {
|
|
|
isRepository: isRepository
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var Demo_Warehouse = ((0,_umi_production_exports.connect)(function (_ref4) {
|
|
|
var loading = _ref4.loading,
|
|
|
globalSetting = _ref4.globalSetting,
|
|
|
practiceSetting = _ref4.practiceSetting,
|
|
|
shixunsDetail = _ref4.shixunsDetail;
|
|
|
return {
|
|
|
globalSetting: globalSetting,
|
|
|
loading: loading,
|
|
|
practiceSetting: practiceSetting,
|
|
|
shixunsDetail: shixunsDetail
|
|
|
};
|
|
|
})(Warehouse));
|
|
|
;// CONCATENATED MODULE: ./src/pages/Demo/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// let output = 'item\tgraph\nmyserver1.cpu.load5\tmyserver1.cpu.load\nmyserver1.cpu.load15\tmyserver1.cpu.load'
|
|
|
// let actual_output = 'item\tgraph\r\nmyserver1.cpu.load5\tmyserver1.cpu.load\r\nmyserver1.cpu.load15\tmyserver1.cpu.load\r\n'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var Demo = (function (_ref) {
|
|
|
var taskId = _ref.taskId,
|
|
|
taskData = _ref.taskData,
|
|
|
onEditRepCode = _ref.onEditRepCode;
|
|
|
var iframeRef = (0,react.useRef)();
|
|
|
var codeAreaContainerRef = (0,react.useRef)();
|
|
|
var iframeSrc = (0,react.useMemo)(function () {
|
|
|
if (taskData) {
|
|
|
var _taskData$challenge, _taskData$challenge$p, _taskData$challenge$p2, _taskData$shixun, _taskData$myshixun;
|
|
|
var path = taskData === null || taskData === void 0 ? void 0 : (_taskData$challenge = taskData.challenge) === null || _taskData$challenge === void 0 ? void 0 : (_taskData$challenge$p = _taskData$challenge.path) === null || _taskData$challenge$p === void 0 ? void 0 : (_taskData$challenge$p2 = _taskData$challenge$p.replace(";", ";")) === null || _taskData$challenge$p2 === void 0 ? void 0 : _taskData$challenge$p2.split(";")[0];
|
|
|
return "https://latexjs.educoder.net/index.html?id=".concat(taskData === null || taskData === void 0 ? void 0 : (_taskData$shixun = taskData.shixun) === null || _taskData$shixun === void 0 ? void 0 : _taskData$shixun.identifier, "&path=").concat(path, "&taskId=").concat(taskId, "&myshixunId=").concat(taskData === null || taskData === void 0 ? void 0 : (_taskData$myshixun = taskData.myshixun) === null || _taskData$myshixun === void 0 ? void 0 : _taskData$myshixun.identifier, "&token=").concat((0,util/* getCookie */.ej)("_educoder_session"));
|
|
|
}
|
|
|
}, [taskData]);
|
|
|
var test1 = function test1() {
|
|
|
(0,fetch/* default */.ZP)("/api/home/test_sign.json", {
|
|
|
method: "get",
|
|
|
params: {
|
|
|
id: 1,
|
|
|
name: undefined,
|
|
|
age: null,
|
|
|
c: {
|
|
|
a: 112
|
|
|
},
|
|
|
aa: [],
|
|
|
test: "12321313",
|
|
|
b: ""
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
var test2 = function test2() {
|
|
|
(0,fetch/* default */.ZP)("/api/home/test_sign.json", {
|
|
|
method: "get",
|
|
|
params: {}
|
|
|
});
|
|
|
};
|
|
|
var test3 = function test3() {
|
|
|
(0,fetch/* default */.ZP)("/api/home/test_sign.json", {
|
|
|
method: "post",
|
|
|
body: {
|
|
|
id: 1,
|
|
|
name: undefined,
|
|
|
age: null,
|
|
|
c: {},
|
|
|
cc: {
|
|
|
n: 1,
|
|
|
p: 22
|
|
|
},
|
|
|
aa: [],
|
|
|
dd: ["SDafadsf", "&&"],
|
|
|
test: "12321313",
|
|
|
b: "sadfjsdfjdkljflsajflasf&&&fdsahfasfasfasdfsadf"
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
var test4 = function test4() {
|
|
|
(0,fetch/* default */.ZP)("/api/home/test_sign.json", {
|
|
|
method: "post"
|
|
|
// body:{
|
|
|
|
|
|
// }
|
|
|
});
|
|
|
};
|
|
|
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
style: {
|
|
|
height: "100vh"
|
|
|
},
|
|
|
ref: codeAreaContainerRef,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.Z, {
|
|
|
onClick: test1,
|
|
|
children: "get\u6D4B\u8BD51"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.Z, {
|
|
|
onClick: test2,
|
|
|
children: "get\u6D4B\u8BD52"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.Z, {
|
|
|
onClick: test3,
|
|
|
children: "post1"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.Z, {
|
|
|
onClick: test4,
|
|
|
children: "post2"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
children: (taskData === null || taskData === void 0 ? void 0 : taskData.shixun) && /*#__PURE__*/(0,jsx_runtime.jsx)(Demo_Warehouse, {
|
|
|
taskId: taskId,
|
|
|
taskData: taskData,
|
|
|
onEditRepCode: onEditRepCode
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
className: Demomodules.wrap,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("iframe", {
|
|
|
ref: iframeRef,
|
|
|
id: "latexIframeRef",
|
|
|
style: {
|
|
|
width: "100%",
|
|
|
border: "none",
|
|
|
height: "100%"
|
|
|
},
|
|
|
src: iframeSrc
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: Demomodules.full,
|
|
|
onClick: function onClick() {
|
|
|
if ((0,fullscreen/* IsFull */.vp)()) {
|
|
|
(0,fullscreen/* exitFull */.BU)();
|
|
|
} else {
|
|
|
(0,fullscreen/* requestFullScreen */.Dj)(codeAreaContainerRef.current);
|
|
|
}
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "iconfont icon-quanping mr5 font12"
|
|
|
}), "\u5168\u5C4F / \u9000\u51FA\u5168\u5C4F"]
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 39507:
|
|
|
/*!**************************************************!*\
|
|
|
!*** ./src/pages/MoopCases/FormPanel/service.ts ***!
|
|
|
\**************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ "$J": function() { return /* binding */ getMoopCase; },
|
|
|
/* harmony export */ "JZ": function() { return /* binding */ removeAttachment; },
|
|
|
/* harmony export */ "bN": function() { return /* binding */ updateMoopCase; },
|
|
|
/* harmony export */ "jP": function() { return /* binding */ addMoopCase; },
|
|
|
/* harmony export */ "rO": function() { return /* binding */ getLibraryTags; }
|
|
|
/* harmony export */ });
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/regeneratorRuntime.js */ 17061);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/asyncToGenerator.js */ 17156);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
|
/* harmony import */ var _utils_fetch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/utils/fetch */ 84519);
|
|
|
|
|
|
|
|
|
|
|
|
function getMoopCase(id) {
|
|
|
return (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_2__/* .get */ .U2)("libraries/".concat(id, ".json"));
|
|
|
}
|
|
|
function getLibraryTags() {
|
|
|
return (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_2__/* .get */ .U2)('library_tags.json');
|
|
|
}
|
|
|
function removeAttachment(_x) {
|
|
|
return _removeAttachment.apply(this, arguments);
|
|
|
}
|
|
|
function _removeAttachment() {
|
|
|
_removeAttachment = _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_0___default()().mark(function _callee(id) {
|
|
|
var response;
|
|
|
return _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_0___default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_2__/* .del */ .IV)("attachments/".concat(id, ".json"));
|
|
|
case 2:
|
|
|
response = _context.sent;
|
|
|
return _context.abrupt("return", response.status === 0);
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _removeAttachment.apply(this, arguments);
|
|
|
}
|
|
|
function addMoopCase(params) {
|
|
|
return (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_2__/* .post */ .v_)("libraries.json", params);
|
|
|
}
|
|
|
function updateMoopCase(id, params) {
|
|
|
return (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_2__/* .put */ .gz)("libraries/".concat(id, ".json"), params);
|
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 39026:
|
|
|
/*!**************************************************************************************************!*\
|
|
|
!*** ./src/pages/Shixuns/Detail/Repository/components/SelectFilePathModal/index.tsx + 1 modules ***!
|
|
|
\**************************************************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ components_SelectFilePathModal; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/modal/style/index.js + 1 modules
|
|
|
var style = __webpack_require__(35611);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/modal/index.js + 7 modules
|
|
|
var modal = __webpack_require__(85402);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/input/style/index.js + 1 modules
|
|
|
var input_style = __webpack_require__(69463);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/input/index.js + 5 modules
|
|
|
var input = __webpack_require__(75008);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/message/style/index.js + 1 modules
|
|
|
var message_style = __webpack_require__(14934);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/message/index.js + 1 modules
|
|
|
var message = __webpack_require__(12461);
|
|
|
// 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/antd/es/form/style/index.js + 1 modules
|
|
|
var form_style = __webpack_require__(75627);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/form/index.js + 17 modules
|
|
|
var es_form = __webpack_require__(51018);
|
|
|
// 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: ./src/.umi-production/exports.ts + 8 modules
|
|
|
var _umi_production_exports = __webpack_require__(89214);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Shixuns/Detail/Repository/components/SelectFilePathModal/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var SelectFilePathModalmodules = ({"wrap":"wrap___TwY3U","content":"content___Ks95W","mainPathWrap":"mainPathWrap___CrMaa","colorBlue":"colorBlue___dvWbP"});
|
|
|
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(85893);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Shixuns/Detail/Repository/components/SelectFilePathModal/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var SelectFilePathModal = function SelectFilePathModal(_ref) {
|
|
|
var shixunsDetail = _ref.shixunsDetail,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
dispatch = _ref.dispatch,
|
|
|
title = _ref.title,
|
|
|
_ref$pathList = _ref.pathList,
|
|
|
propsPathList = _ref$pathList === void 0 ? [] : _ref$pathList,
|
|
|
_ref$showInputPath = _ref.showInputPath,
|
|
|
showInputPath = _ref$showInputPath === void 0 ? false : _ref$showInputPath,
|
|
|
_ref$isMergeSelectFil = _ref.isMergeSelectFile,
|
|
|
isMergeSelectFile = _ref$isMergeSelectFil === void 0 ? false : _ref$isMergeSelectFil,
|
|
|
_ref$onFinish = _ref.onFinish,
|
|
|
onFinish = _ref$onFinish === void 0 ? function () {} : _ref$onFinish;
|
|
|
var _Form$useForm = es_form/* default.useForm */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var isRepository = (0,react.useRef)();
|
|
|
var _useState = (0,react.useState)(''),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
selectPath = _useState2[0],
|
|
|
setSelectPath = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)(''),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
originPath = _useState4[0],
|
|
|
setOriginPath = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)([]),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
mainPathList = _useState6[0],
|
|
|
setMainPathList = _useState6[1];
|
|
|
var _useState7 = (0,react.useState)([]),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
treeList = _useState8[0],
|
|
|
setTreeList = _useState8[1];
|
|
|
(0,react.useEffect)(function () {
|
|
|
var _location$pathname, _location$pathname$sp;
|
|
|
isRepository.current = ((_location$pathname = location.pathname) === null || _location$pathname === void 0 ? void 0 : (_location$pathname$sp = _location$pathname.split('/')) === null || _location$pathname$sp === void 0 ? void 0 : _location$pathname$sp[3]) === "repository";
|
|
|
}, []);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (shixunsDetail.actionTabs.key !== 'Repository-SelectFilePath') {
|
|
|
return;
|
|
|
}
|
|
|
var path = propsPathList.join('/');
|
|
|
var arr = [];
|
|
|
propsPathList.map(function (item, index) {
|
|
|
if (index === 0) {
|
|
|
arr.push({
|
|
|
val: "根目录",
|
|
|
path: ""
|
|
|
}, {
|
|
|
val: "/".concat(item),
|
|
|
path: path
|
|
|
});
|
|
|
} else {
|
|
|
arr.push({
|
|
|
val: "/".concat(item),
|
|
|
path: path
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
setMainPathList(arr);
|
|
|
setSelectPath(path);
|
|
|
setOriginPath(path);
|
|
|
handleGetPathData(path);
|
|
|
}, [shixunsDetail.actionTabs.key]);
|
|
|
var handleGetPathData = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(path) {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return dispatch({
|
|
|
type: isRepository.current ? 'shixunsDetail/getRepository' : 'shixunsDetail/getSecretRepository',
|
|
|
payload: {
|
|
|
id: params.id,
|
|
|
path: path
|
|
|
}
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
if (res) {
|
|
|
setTreeList(res.trees || []);
|
|
|
}
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function handleGetPathData(_x) {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleClickTree = function handleClickTree(item) {
|
|
|
var newPath = selectPath;
|
|
|
if (item.type === "tree") {
|
|
|
mainPathList.length ? mainPathList.push({
|
|
|
val: "/".concat(item.name),
|
|
|
path: item.name
|
|
|
}) : mainPathList.push({
|
|
|
val: "根目录",
|
|
|
path: ""
|
|
|
}, {
|
|
|
val: "/".concat(item.name),
|
|
|
path: item.name
|
|
|
});
|
|
|
setMainPathList(mainPathList);
|
|
|
newPath = selectPath ? "".concat(selectPath, "/").concat(item.name) : item.name;
|
|
|
setSelectPath(newPath);
|
|
|
}
|
|
|
handleGetPathData(newPath);
|
|
|
};
|
|
|
var handleClickMainPath = function handleClickMainPath(item, index) {
|
|
|
var currentPathList = mainPathList.filter(function (_, key) {
|
|
|
return key <= index;
|
|
|
});
|
|
|
setMainPathList(currentPathList);
|
|
|
// 排除 ”根目录“,将选中的路径连接,去掉第一个字符串 “/”,获取绝对路径
|
|
|
var currentPath = currentPathList.filter(function (_, key) {
|
|
|
return key !== 0;
|
|
|
}).map(function (item) {
|
|
|
return item.val;
|
|
|
}).join('').substr(1);
|
|
|
setSelectPath(currentPath);
|
|
|
handleGetPathData(currentPath);
|
|
|
};
|
|
|
var handleOk = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var values, path, res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
values = form === null || form === void 0 ? void 0 : form.getFieldsValue();
|
|
|
path = selectPath ? "".concat(selectPath).concat(values !== null && values !== void 0 && values.name ? "/".concat(values === null || values === void 0 ? void 0 : values.name) : '') : values === null || values === void 0 ? void 0 : values.name;
|
|
|
if (!isMergeSelectFile) {
|
|
|
_context2.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
onFinish(path);
|
|
|
handleCancel();
|
|
|
return _context2.abrupt("return");
|
|
|
case 6:
|
|
|
if (!showInputPath) {
|
|
|
_context2.next = 16;
|
|
|
break;
|
|
|
}
|
|
|
_context2.next = 9;
|
|
|
return form.validateFields();
|
|
|
case 9:
|
|
|
_context2.next = 11;
|
|
|
return dispatch({
|
|
|
type: 'shixunsDetail/uploadGitFolder',
|
|
|
payload: objectSpread2_default()(objectSpread2_default()({}, {
|
|
|
id: params.id,
|
|
|
path: path
|
|
|
}), isRepository.current ? {} : {
|
|
|
secret_repository: true
|
|
|
})
|
|
|
});
|
|
|
case 11:
|
|
|
res = _context2.sent;
|
|
|
onFinish(originPath);
|
|
|
if (res.status === 0) {
|
|
|
message/* default.info */.ZP.info('新建成功');
|
|
|
}
|
|
|
_context2.next = 18;
|
|
|
break;
|
|
|
case 16:
|
|
|
onFinish(path);
|
|
|
message/* default.success */.ZP.success("选择文件目录成功");
|
|
|
case 18:
|
|
|
handleCancel();
|
|
|
case 19:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function handleOk() {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleCancel = function handleCancel() {
|
|
|
dispatch({
|
|
|
type: 'shixunsDetail/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
form.resetFields();
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
title: title || "新建文件夹",
|
|
|
closable: false,
|
|
|
keyboard: false,
|
|
|
open: shixunsDetail.actionTabs.key === 'Repository-SelectFilePath',
|
|
|
onOk: handleOk,
|
|
|
onCancel: handleCancel,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: SelectFilePathModalmodules.wrap,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: SelectFilePathModalmodules.content,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: SelectFilePathModalmodules.mainPathWrap,
|
|
|
children: !!(mainPathList !== null && mainPathList !== void 0 && mainPathList.length) && mainPathList.map(function (item, index) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: function onClick() {
|
|
|
return handleClickMainPath(item, index);
|
|
|
},
|
|
|
children: item.val
|
|
|
}, index);
|
|
|
})
|
|
|
}), !!(treeList !== null && treeList !== void 0 && treeList.length) && treeList.map(function (item, index) {
|
|
|
return item.type === "tree" && /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
onClick: function onClick() {
|
|
|
return handleClickTree(item);
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-wenjianjia ".concat(SelectFilePathModalmodules.colorBlue)
|
|
|
}), item.name]
|
|
|
}, index);
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("label", {
|
|
|
className: "mt5",
|
|
|
children: "\u9009\u4E2D\u7684\u65B0\u5EFA\u6587\u4EF6\u5939\u76EE\u5F55\uFF1A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "mt5 mb5",
|
|
|
children: selectPath
|
|
|
}), showInputPath && /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z, {
|
|
|
form: form,
|
|
|
scrollToFirstError: true,
|
|
|
className: "mt20",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
name: "name",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入名称'
|
|
|
}, {
|
|
|
whitespace: true,
|
|
|
message: '请勿输入空格'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
placeholder: "\u8BF7\u8F93\u5165\u65B0\u6587\u4EF6\u5939\u540D/\u5B50\u6587\u4EF6\u5939\u540D\u3002\uFF08\u5982\uFF1Asrc/step1\uFF09"
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var components_SelectFilePathModal = ((0,_umi_production_exports.connect)(function (_ref4) {
|
|
|
var shixunsDetail = _ref4.shixunsDetail,
|
|
|
loading = _ref4.loading,
|
|
|
globalSetting = _ref4.globalSetting;
|
|
|
return {
|
|
|
shixunsDetail: shixunsDetail,
|
|
|
globalSetting: globalSetting,
|
|
|
loading: loading.models.index
|
|
|
};
|
|
|
})(SelectFilePathModal));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 7140:
|
|
|
/*!*************************************************!*\
|
|
|
!*** ./src/pages/tasks/index.jsx + 101 modules ***!
|
|
|
\*************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
// ESM COMPAT FLAG
|
|
|
__webpack_require__.r(__webpack_exports__);
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"default": function() { return /* binding */ tasks; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/typeof.js
|
|
|
var helpers_typeof = __webpack_require__(18698);
|
|
|
var typeof_default = /*#__PURE__*/__webpack_require__.n(helpers_typeof);
|
|
|
// 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/drawer/style/index.js + 1 modules
|
|
|
var style = __webpack_require__(11400);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/drawer/index.js + 6 modules
|
|
|
var drawer = __webpack_require__(63463);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/spin/style/index.js + 1 modules
|
|
|
var spin_style = __webpack_require__(22536);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/spin/index.js
|
|
|
var spin = __webpack_require__(11382);
|
|
|
// 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/@babel/runtime/helpers/defineProperty.js
|
|
|
var defineProperty = __webpack_require__(38416);
|
|
|
var defineProperty_default = /*#__PURE__*/__webpack_require__.n(defineProperty);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/modal/style/index.js + 1 modules
|
|
|
var modal_style = __webpack_require__(35611);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/modal/index.js + 7 modules
|
|
|
var modal = __webpack_require__(85402);
|
|
|
// 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/antd/es/message/style/index.js + 1 modules
|
|
|
var message_style = __webpack_require__(14934);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/message/index.js + 1 modules
|
|
|
var es_message = __webpack_require__(12461);
|
|
|
// 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/objectDestructuringEmpty.js
|
|
|
var objectDestructuringEmpty = __webpack_require__(13012);
|
|
|
var objectDestructuringEmpty_default = /*#__PURE__*/__webpack_require__.n(objectDestructuringEmpty);
|
|
|
// 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/antd/es/tree/style/index.js + 1 modules
|
|
|
var tree_style = __webpack_require__(62216);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/tree/index.js + 9 modules
|
|
|
var tree = __webpack_require__(54205);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
|
var react = __webpack_require__(67294);
|
|
|
// EXTERNAL MODULE: ./src/.umi-production/exports.ts + 8 modules
|
|
|
var _umi_production_exports = __webpack_require__(89214);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/header/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/header/nav.png
|
|
|
var nav_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaCAYAAAA4qEECAAABz0lEQVR4Xu3csU7DQBRE0V1+LNCn5DNT0mN+DCNoQzNjfBVWl/o9T3wYNiiyMq+3fR/+nC4whT7d+CdAaMZZaMhZaKEpASjHM1poSACKsdFCQwJQjI0WGhKAYmy00JAAFGOjhYYEoBgbLTQkAMXYaKEhASjGRgsNCUAxNlpoSACKsdFCQwJQjI0WGhKAYmz0YtDb2+t8ge4pirne9vcxxnO0VAxTjRYaeppUaAq6+GsjV5Y5Oki0h8yizuiHvHnyRQkNaQstNCQAxdhooSEBKMZGCw0JQDE2ejHobezj49A9PY19fI556Bq/Lc9x8dO7P1e9v6AfkwLI3xHLQR8+Os6CX+zoOIvp31zX/zqgX5XQQkMCUIyNFhoSgGJstNCQABRjo4WGBKAYqtEbdD9tzDIP0PhIGPVImE+TMt9NaqOhRrdn5zJ71JvhMmDtjQjdyoV7Qodg7bjQrVy4J3QI1o4L3cqFe0KHYO240K1cuCd0CNaOC93KhXtCh2DtuNCtXLgndAjWjgvdyoV7Qodg7bjQrVy4J3QI1o4L3cqFe0KHYO240K1cuCd0CNaOC93KhXtCh2DtuNCtXLgndAjWjgvdyoV7Qodg7bjQrVy49wXyQzzmd6RVpQAAAABJRU5ErkJggg==";
|
|
|
// EXTERNAL MODULE: ./src/utils/fullscreen.ts
|
|
|
var fullscreen = __webpack_require__(15994);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(85893);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/header/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var header = (function (_ref) {
|
|
|
var position = _ref.position,
|
|
|
subject = _ref.subject,
|
|
|
score = _ref.score,
|
|
|
onViewAllTask = _ref.onViewAllTask;
|
|
|
var _useState = (0,react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
isResizeLarge = _useState2[0],
|
|
|
setIsResizeLarge = _useState2[1];
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
function onLeftFullHandler() {
|
|
|
setIsResizeLarge(!isResizeLarge);
|
|
|
if ((0,fullscreen/* IsFull */.vp)()) {
|
|
|
(0,fullscreen/* exitFull */.BU)();
|
|
|
} else {
|
|
|
(0,fullscreen/* requestFullScreen */.Dj)(document.getElementById('task-left-panel'));
|
|
|
}
|
|
|
}
|
|
|
var fullChange = function fullChange() {
|
|
|
if ((0,fullscreen/* IsFull */.vp)()) {
|
|
|
setIsResizeLarge(true);
|
|
|
} else {
|
|
|
setIsResizeLarge(false);
|
|
|
}
|
|
|
};
|
|
|
(0,react.useEffect)(function () {
|
|
|
document.addEventListener((0,fullscreen/* fullscreenChange */.gH)(), fullChange);
|
|
|
return function () {
|
|
|
document.removeEventListener((0,fullscreen/* fullscreenChange */.gH)(), fullChange);
|
|
|
};
|
|
|
}, []);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "task-header",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
title: "\u67E5\u770B\u5168\u90E8\u4EFB\u52A1",
|
|
|
onClick: onViewAllTask,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: nav_namespaceObject,
|
|
|
alt: "nav",
|
|
|
width: 45
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("h3", {
|
|
|
title: subject,
|
|
|
children: ["\u7B2C", position, "\u5173\uFF1A", subject]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: score
|
|
|
}), !(searchParams.get("isFullScreen") === 'true') && /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onLeftFullHandler,
|
|
|
title: isResizeLarge ? '退出全屏' : '全屏',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: isResizeLarge ? 'iconfont icon-shousuo c-grey-333 font16 ml10 current' : 'iconfont icon-zhankai c-grey-333 font16 ml10 current'
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/pagination/style/index.js + 1 modules
|
|
|
var pagination_style = __webpack_require__(14182);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/pagination/index.js + 10 modules
|
|
|
var pagination = __webpack_require__(260);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/table/style/index.js + 1 modules
|
|
|
var table_style = __webpack_require__(71854);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/table/index.js + 58 modules
|
|
|
var table = __webpack_require__(67250);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/skeleton/style/index.js + 1 modules
|
|
|
var skeleton_style = __webpack_require__(61099);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/skeleton/index.js + 11 modules
|
|
|
var skeleton = __webpack_require__(73481);
|
|
|
// EXTERNAL MODULE: ./src/components/NoData/index.tsx
|
|
|
var NoData = __webpack_require__(82982);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/ranking/r1.png
|
|
|
var r1_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAAA8CAMAAADygAyiAAAAaVBMVEUAAAD/vwD/vwD/ugD/ugD/uwD/vAD8vAP8ugP9uwL9uwL9uwL9ugL9ugL9ugL8uwP8uwP8ugP9ugL9ugL9ugL9uwL9uwL9uwL9uwP9zkn+1WT+34r+45n/7bz/8s//9+D/+/D//fj///8yardZAAAAGHRSTlMAECAwP0BQX2BwgI+Qn6Cwv8DP0N/g7/D8rFP8AAABpUlEQVRYw+3XwXKDIBAG4AVKoiRBDSq0adrG93/ImphSWwV2jYce+t+SGb5RWBcAmEQeji6acicgHVE6RA4s5cjWoVInHkognV6KP1Pt0NExJ3OE8AhUUKB9BKI4rpoM3+7KWzaMBLWwGcbttsNC+QlWcn7Eqesz8z+ocTHw7wUPQKdLEnItB+3i0PO569JQXwxtFHo5f3QoqB4v1BR663wSkItD738O6vN6WQlyZyRk1oGq8Xf6CFSMO8cjUAbMrgHZvl+qNSDVf/3MT7cSSyFza+DcepYEGQ/Ze9cVzSKo+oIavzUxfYeaJZAeb0xC2ytUUKD9FbJ6slMKySGnQBK4DO23ggJFd1qLh4oopPBQFoU4GmoSxxqNhbIExJHbbJM8aSkcJNNnv+rRk4h/OZt2DAPMcdSu46Qli3RSkhGADovMuGZASagK7AaI4XqOUQzo4ftfDdPkS5jByr1lssXKzzpXAP/QpLyfrvGXycPtJyczMnDhOgri44RvILQqiNy3aJPVUm5XsOziRoOaMFSQIB2GchLEgj3SEOuI6dm3M8E1+wTzvvO4HPYw7wAAAABJRU5ErkJggg==";
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/ranking/r2.png
|
|
|
var r2_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAAA8CAMAAADygAyiAAAAeFBMVEUAAACvv7+nt8elusWmusKnt8OmucKmucGlt8KmuMKlt8GmuMKmuMGluMKmt8KluMKmuMKmt8KluMGmuMKmuMGlt8KluMGmuMGmuMK+y9PQ2d/W3uPb4ubg5unk6ezo7O/r7/Hu8vTx9Pb09/j3+fr6+/z9/f7///9IiVUSAAAAGHRSTlMAECAwP0BQX2BwgI+Qn6Cwv8DP0N/g7/D8rFP8AAACAElEQVRYw+3X2XaCMBAG4CzFYtSgIiRYu7rk/d+wCJwUy8wk0V72v9KjfCdMhoQwNkm22loy64Vk4ci1jciKh5ystlHZBQYlI51Wose0s9HRlJPbhAgCKlKgJQGlOHYzufx5se4y40lQzWb9dYvnfqJ8gVUG/L15Ozrnzl+v05+YGjeD+JlwCNqf3JDTHodsLZi2FNScnc+lwaG2GWoSenejfBLQbjxRANQN6NzsL53U4JANQN31H9Yeuw8vD0LvfwhdHoReBujgwjUqyREN6e/sRMzaZvycolA/MPdGQMV45UChU7ghc8ZNEHqFBzSGTLteqhDU9FN2Jh5aq9qnn/tyKwlCHw6a+xuo7BZwYTwLOXv4QWuv9pAZVl1ZUdARrvR1xgeo8lsT1wNUoZU+WBTS441JanOFCqzSX+Di30JGT3ZKmQk2RyoN3Ji1GRMZtt9KpKcPUPHIndaAPT3kePNTQUIKHBAI5SQkoqEq8FqjY6E8AInIbbYKvmmpOCgLv/ttHn0T8Tdnwk7JWczrqPkbJyyZSCcklZJFhxMV15ylBOsCM2OJERpiFGfpEctfC2Y5v4fprbm3yvxu5bbPFWP/0KS9n67xh8lV91UkMxly4NrKxOHgJ5C0LiDOW2nFqlNOV+y+g1saVOFQkQRpHJonQRxdI8vEPuIavLsSnbNvHF76qBcgeTgAAAAASUVORK5CYII=";
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/ranking/r3.png
|
|
|
var r3_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAAA8CAMAAADygAyiAAAAe1BMVEUAAAC/j1C3l1i1lVq2llmzl1i2llm0llm1lVi0llm1lVi0llm1lVm1lVi0lli1lVi0lli1llm1lVm0lli1lli1lVm0lVm1lli1llnJs4fSvpnYx6fdzrLh1Lzl2sTo38zs49Pu59nx6+D07+X28uv59vD7+fX9/Pr///9SRDJsAAAAGHRSTlMAECAwP0BQX2BwgI+Qn6Cwv8DP0N/g7/D8rFP8AAAB+klEQVRYw+3X2VbCMBAG4EliEQqkQGgTEBFRlvd/QksLMV0yyVQvvPC/4XCg38kyzQLQSTJfGTSLqYBwxMJEZM5CTlKYqKwDjRKRTinhbVqb6EjMGRtCOAJlFGiGQBTHLDuPP08XVUaMBBUwqp+bPtcTZQc4TXr+vv84Xcucjq+dnyB1i4F/T3gPtKmUOp8bL2QKDtJg0OHq5OiHymIoUOjkQtetH1q7E9UD1cDBfFSfb37IREG7excPfwBqDvrPoW096C8YpILQ7jFpe2T6l+57GoAOBoEyd+UItQgryDEwHQ21++ZAulwv0/Bgb/aXvia5j5ZvP7PDnQrv9B/r19YHqWoB59qygYJsQspC+r7qinwQtHxAud2amLxD+RBIuhuTkPoGZRRodoO07OyUIuEwaUMXBEqAJ779tjNtnxXwbj8bk4ZFt6D3xgq5c3/KUChtl+LFcZo9G6MQb/ft5ezZRfLAsUb2bGznal/bGUKDeprkSR48aaVxUBI++y1/ehKxndNhRzGIOY7q33HCko50QpISEB2GjLhkQImvCvQIiOGyj0kZ0MNnrQVTTYYwtTWxlhoPVpp1ngL8Q53yfrrFXibn1VdOZhLPhWsliM3x30BoVYDct2iDVVBuVzDs4kaDcj+UkSDphyYkiHnXSEWsIyZ7e6e8c/YFAVX9WNqVSc8AAAAASUVORK5CYII=";
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/service/index.js
|
|
|
var service = __webpack_require__(66446);
|
|
|
// EXTERNAL MODULE: ./src/utils/util.tsx
|
|
|
var util = __webpack_require__(29427);
|
|
|
// EXTERNAL MODULE: ./node_modules/moment/moment.js
|
|
|
var moment = __webpack_require__(30381);
|
|
|
var moment_default = /*#__PURE__*/__webpack_require__.n(moment);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/ranking/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var ImgDesc = {
|
|
|
0: r1_namespaceObject,
|
|
|
1: r2_namespaceObject,
|
|
|
2: r3_namespaceObject
|
|
|
};
|
|
|
var initialState = {
|
|
|
loading: true,
|
|
|
page: 1,
|
|
|
data: null
|
|
|
};
|
|
|
var Types;
|
|
|
(function (Types) {
|
|
|
Types[Types["SET_LOADING"] = 0] = "SET_LOADING";
|
|
|
Types[Types["SET_STATE"] = 1] = "SET_STATE";
|
|
|
Types[Types["SET_PAGE"] = 2] = "SET_PAGE";
|
|
|
})(Types || (Types = {}));
|
|
|
function reducer(state, action) {
|
|
|
switch (action.type) {
|
|
|
case Types.SET_LOADING:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
loading: action.payload
|
|
|
});
|
|
|
case Types.SET_STATE:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
case Types.SET_PAGE:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
page: action.payload
|
|
|
});
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}
|
|
|
/* harmony default export */ var ranking = (function (_ref) {
|
|
|
var activeIndex = _ref.activeIndex,
|
|
|
taskId = _ref.taskId;
|
|
|
var _useReducer = (0,react.useReducer)(reducer, initialState),
|
|
|
_useReducer2 = slicedToArray_default()(_useReducer, 2),
|
|
|
state = _useReducer2[0],
|
|
|
dispatch = _useReducer2[1];
|
|
|
var loading = state.loading,
|
|
|
page = state.page,
|
|
|
data = state.data;
|
|
|
var columns = (0,react.useMemo)(function () {
|
|
|
var rs = [{
|
|
|
title: '排名',
|
|
|
dataIndex: 'user_name',
|
|
|
align: 'center',
|
|
|
render: function render(value, record, index) {
|
|
|
var i = (page - 1) * 10 + index + 1;
|
|
|
if (i <= 3) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: ImgDesc[i - 1],
|
|
|
alt: "rank",
|
|
|
width: 36
|
|
|
});
|
|
|
}
|
|
|
return i;
|
|
|
}
|
|
|
}, {
|
|
|
title: '姓名',
|
|
|
dataIndex: 'user_name'
|
|
|
}, {
|
|
|
title: data === null || data === void 0 ? void 0 : data.rank_data_name,
|
|
|
dataIndex: 'score',
|
|
|
render: function render(value) {
|
|
|
if ((data === null || data === void 0 ? void 0 : data.open_rank) === 'DEFAULT') {
|
|
|
return (0,util/* toTimeFormat */.li)(value);
|
|
|
} else {
|
|
|
return value;
|
|
|
}
|
|
|
}
|
|
|
}, {
|
|
|
title: '通关时间',
|
|
|
dataIndex: 'end_time',
|
|
|
render: function render(value) {
|
|
|
return moment_default()(value).format('YYYY-MM-DD HH:mm:ss');
|
|
|
// return timeformat(value, 'yyyy-MM-dd hh:mm:ss')
|
|
|
}
|
|
|
}];
|
|
|
|
|
|
return rs;
|
|
|
}, [data === null || data === void 0 ? void 0 : data.rank_data_name, data === null || data === void 0 ? void 0 : data.open_rank, page]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
function init() {
|
|
|
return _init.apply(this, arguments);
|
|
|
}
|
|
|
function _init() {
|
|
|
_init = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var response;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return (0,service/* getRanking */.i8)(taskId, {
|
|
|
page: page,
|
|
|
limit: 10
|
|
|
});
|
|
|
case 2:
|
|
|
response = _context.sent;
|
|
|
dispatch({
|
|
|
type: Types.SET_STATE,
|
|
|
payload: {
|
|
|
loading: false,
|
|
|
data: response.data
|
|
|
}
|
|
|
});
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _init.apply(this, arguments);
|
|
|
}
|
|
|
if (activeIndex === 4) {
|
|
|
init();
|
|
|
}
|
|
|
}, [page, activeIndex, taskId]);
|
|
|
function onPaginationChange(value) {
|
|
|
dispatch({
|
|
|
type: Types.SET_PAGE,
|
|
|
payload: value
|
|
|
});
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "ranking-container",
|
|
|
children: loading ? /*#__PURE__*/(0,jsx_runtime.jsx)(skeleton/* default */.Z, {
|
|
|
avatar: true,
|
|
|
paragraph: {
|
|
|
rows: 4
|
|
|
}
|
|
|
}) : !data || (data === null || data === void 0 ? void 0 : data.rank_list_count) === 0 ? /*#__PURE__*/(0,jsx_runtime.jsx)(NoData/* default */.Z, {}) : /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(table/* default */.Z, {
|
|
|
pagination: false,
|
|
|
size: "middle",
|
|
|
dataSource: data.rank_list,
|
|
|
columns: columns
|
|
|
}), data.rank_list_count > 10 ? /*#__PURE__*/(0,jsx_runtime.jsx)(pagination/* default */.Z, {
|
|
|
style: {
|
|
|
marginTop: 20
|
|
|
},
|
|
|
showQuickJumper: true,
|
|
|
showSizeChanger: false,
|
|
|
onChange: onPaginationChange,
|
|
|
current: page,
|
|
|
total: data.rank_list_count
|
|
|
}) : null]
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/constant.js
|
|
|
var constant = __webpack_require__(7523);
|
|
|
// EXTERNAL MODULE: ./src/components/RenderHtml/index.tsx + 1 modules
|
|
|
var RenderHtml = __webpack_require__(12768);
|
|
|
// EXTERNAL MODULE: ./src/components/modal.tsx
|
|
|
var components_modal = __webpack_require__(12264);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/left-panel/discuss/service.js
|
|
|
var discuss_service = __webpack_require__(7387);
|
|
|
// EXTERNAL MODULE: ./src/service/user.ts
|
|
|
var service_user = __webpack_require__(58839);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/task-list/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/rate/style/index.js + 1 modules
|
|
|
var rate_style = __webpack_require__(50936);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/rate/index.js + 6 modules
|
|
|
var rate = __webpack_require__(61460);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/task-list/task-item/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/task-list/task-item/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var dtFormat = 'YYYY-MM-DD HH:mm';
|
|
|
/* harmony default export */ var task_item = (function (_ref) {
|
|
|
var challenge = _ref.challenge,
|
|
|
position = _ref.position,
|
|
|
status = _ref.status,
|
|
|
get_gold = _ref.get_gold,
|
|
|
get_experience = _ref.get_experience,
|
|
|
star = _ref.star,
|
|
|
tag_count = _ref.tag_count,
|
|
|
finished_time = _ref.finished_time,
|
|
|
index = _ref.index,
|
|
|
view_answer_time = _ref.view_answer_time,
|
|
|
name = _ref.name,
|
|
|
identifier = _ref.identifier,
|
|
|
identity = _ref.identity,
|
|
|
shixun = _ref.shixun,
|
|
|
taskList = _ref.taskList,
|
|
|
onSaveTaskStar = _ref.onSaveTaskStar;
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
function onStarChange(value) {
|
|
|
onSaveTaskStar(identifier, value, index);
|
|
|
}
|
|
|
//允许跳关
|
|
|
var isAllow = status === 2 || shixun.status < 2 || taskList[index - 1] && taskList[index - 1].status === 2 || shixun.task_pass || identity <= 5;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "task-item-container ".concat(challenge.position === position ? 'active' : '', " ").concat(status === 2 ? 'finish' : ''),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container challenge-title space-between",
|
|
|
children: [isAllow ? /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
href: "/tasks/".concat(identifier).concat(location.search),
|
|
|
onClick: function onClick(e) {
|
|
|
e.preventDefault();
|
|
|
if (params.courseId && params.homeworkId) {
|
|
|
setTimeout(function () {
|
|
|
return window.location.href = "/tasks/".concat(params.courseId, "/").concat(params.homeworkId, "/").concat(identifier).concat(location.search);
|
|
|
}, 300);
|
|
|
return;
|
|
|
}
|
|
|
setTimeout(function () {
|
|
|
return window.location.href = "/tasks/".concat(identifier).concat(location.search);
|
|
|
}, 300);
|
|
|
},
|
|
|
children: ["".concat(position, ". ").concat(name), ' ']
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "".concat(position, ". ").concat(name)
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-wancheng1 ".concat(status === 2 ? 'green' : '')
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
className: status === 2 ? 'green' : '',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u7ECF\u9A8C\u503C"
|
|
|
}), " ", status === 2 && get_experience > 0 ? '+' : '', get_experience]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
className: status === 2 ? 'green' : '',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u91D1\u5E01"
|
|
|
}), " ", status === 2 && get_gold > 0 ? '+' : '', " ", get_gold]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u6280\u80FD\u6807\u7B7E"
|
|
|
}), " ", tag_count ? tag_count : '无']
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u5B8C\u6210\u65F6\u95F4"
|
|
|
}), finished_time ? moment_default()(finished_time).format(dtFormat) : '--']
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u67E5\u770B\u7B54\u6848\u65F6\u95F4"
|
|
|
}), view_answer_time ? moment_default()(view_answer_time).format(dtFormat) : '--']
|
|
|
})]
|
|
|
}), shixun.status >= 2 ? /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "rate-container",
|
|
|
children: [status === 2 && star === 0 ? /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u7ED9\u4E2A\u8BC4\u5206\u5427\uFF1A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(rate/* default */.Z, {
|
|
|
defaultValue: 0,
|
|
|
onChange: onStarChange
|
|
|
})]
|
|
|
}) : null, status === 2 && star > 0 ? /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u5DF2\u8BC4\u5206\uFF1A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(rate/* default */.Z, {
|
|
|
value: star,
|
|
|
disabled: true
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: "highlight",
|
|
|
children: [star, "\u5206"]
|
|
|
})]
|
|
|
}) : null]
|
|
|
}) : null]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/task-list/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//这里未通关的identifier 都是null ,不适合作key
|
|
|
|
|
|
|
|
|
/* harmony default export */ var task_list = (function (_ref) {
|
|
|
var taskList = _ref.taskList,
|
|
|
challenge = _ref.challenge,
|
|
|
shixun = _ref.shixun,
|
|
|
identity = _ref.identity,
|
|
|
onSaveTaskStar = _ref.onSaveTaskStar;
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "task-nav-container",
|
|
|
children: [!!searchParams.get("coursesId") && /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
className: "task-tip",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u6E29\u99A8\u63D0\u793A: "
|
|
|
}), "\u82E5\u67E5\u770B\u7B54\u6848\u65F6\u95F4\u65E9\u4E8E\u5173\u5361\u4EFB\u52A1\u5B8C\u6210\u65F6\u95F4\uFF0C\u5C06\u5F71\u54CD\u8BFE\u5802\u5B9E\u8BAD\u4F5C\u4E1A\u7684\u6210\u7EE9\u3002"]
|
|
|
})
|
|
|
}), taskList.map(function (item, index) {
|
|
|
var option = objectSpread2_default()(objectSpread2_default()({}, item), {}, {
|
|
|
identity: identity,
|
|
|
index: index,
|
|
|
challenge: challenge,
|
|
|
taskList: taskList,
|
|
|
shixun: shixun,
|
|
|
onSaveTaskStar: onSaveTaskStar
|
|
|
});
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(task_item, objectSpread2_default()({}, option), index);
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/task-path-list/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var task_path_listmodules = ({"tree":"tree___LyfjL"});
|
|
|
// EXTERNAL MODULE: ./src/service/exercise.ts
|
|
|
var exercise = __webpack_require__(51412);
|
|
|
// EXTERNAL MODULE: ./src/components/ImagesIcon/index.ts + 31 modules
|
|
|
var ImagesIcon = __webpack_require__(44190);
|
|
|
// EXTERNAL MODULE: ./src/service/shixuns.ts
|
|
|
var shixuns = __webpack_require__(56088);
|
|
|
;// CONCATENATED MODULE: ./src/utils/toShixun.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var toShixun = /*#__PURE__*/function () {
|
|
|
var _ref = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(id, challenge_id, is_jupyter, subject_id, newWindow) {
|
|
|
var toUrl, execRes;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
// dispatch({ type: "globalSetting/setGlobalLoading", payload: { show: true, text: "正在进入实训,请稍后..." } })
|
|
|
toUrl = function toUrl() {
|
|
|
if (newWindow) {
|
|
|
(0,util/* openNewWindow */.xg)(is_jupyter ? "/tasks/".concat(execRes === null || execRes === void 0 ? void 0 : execRes.identifier, "/jupyter") : "/tasks/".concat(execRes.game_identifier, "?subject_id=").concat(subject_id));
|
|
|
} else {
|
|
|
window.location.href = is_jupyter ? "/tasks/".concat(execRes === null || execRes === void 0 ? void 0 : execRes.identifier, "/jupyter") : "/tasks/".concat(execRes.game_identifier, "?subject_id=").concat(subject_id);
|
|
|
}
|
|
|
};
|
|
|
if (!is_jupyter) {
|
|
|
_context.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 4;
|
|
|
return (0,shixuns/* execJupyter */.BK)({
|
|
|
id: id,
|
|
|
challenge_id: challenge_id,
|
|
|
subject_id: subject_id
|
|
|
});
|
|
|
case 4:
|
|
|
_context.t0 = _context.sent;
|
|
|
_context.next = 10;
|
|
|
break;
|
|
|
case 7:
|
|
|
_context.next = 9;
|
|
|
return (0,shixuns/* execShixun */.Ir)({
|
|
|
id: id,
|
|
|
challenge_id: challenge_id,
|
|
|
subject_id: subject_id
|
|
|
});
|
|
|
case 9:
|
|
|
_context.t0 = _context.sent;
|
|
|
case 10:
|
|
|
execRes = _context.t0;
|
|
|
if (!(execRes !== null && execRes !== void 0 && execRes.game_identifier || execRes !== null && execRes !== void 0 && execRes.identifier)) {
|
|
|
_context.next = 22;
|
|
|
break;
|
|
|
}
|
|
|
if (!(execRes !== null && execRes !== void 0 && execRes.access)) {
|
|
|
_context.next = 16;
|
|
|
break;
|
|
|
}
|
|
|
toUrl();
|
|
|
_context.next = 21;
|
|
|
break;
|
|
|
case 16:
|
|
|
if (!((execRes === null || execRes === void 0 ? void 0 : execRes.access) == false)) {
|
|
|
_context.next = 20;
|
|
|
break;
|
|
|
}
|
|
|
es_message/* default.warn */.ZP.warn("当前实训不支持跳关,已为您跳转到该实训未通过的第一个关卡");
|
|
|
setTimeout(function () {
|
|
|
toShixun(id, "", is_jupyter, subject_id, newWindow);
|
|
|
}, 1000);
|
|
|
return _context.abrupt("return");
|
|
|
case 20:
|
|
|
toUrl();
|
|
|
case 21:
|
|
|
return _context.abrupt("return");
|
|
|
case 22:
|
|
|
if ((execRes === null || execRes === void 0 ? void 0 : execRes.status) === -3) {
|
|
|
(0,util/* bindPhone */.eF)();
|
|
|
} else if ((execRes === null || execRes === void 0 ? void 0 : execRes.status) === 2) {
|
|
|
handleResetGame(execRes === null || execRes === void 0 ? void 0 : execRes.message);
|
|
|
} else if ((execRes === null || execRes === void 0 ? void 0 : execRes.status) === 3) {
|
|
|
handleInBeta(execRes === null || execRes === void 0 ? void 0 : execRes.message);
|
|
|
}
|
|
|
case 23:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function toShixun(_x, _x2, _x3, _x4, _x5) {
|
|
|
return _ref.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleResetGame = function handleResetGame(url) {
|
|
|
var _url;
|
|
|
url = (_url = url) !== null && _url !== void 0 && _url.includes('.json') ? url : "".concat(url, ".json");
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
centered: true,
|
|
|
title: '提示',
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "tc font16",
|
|
|
children: "\u5B9E\u8BAD\u5DF2\u7ECF\u66F4\u65B0\u4E86\uFF0C\u6B63\u5728\u4E3A\u60A8\u91CD\u7F6E!"
|
|
|
}),
|
|
|
onOk: function () {
|
|
|
var _onOk = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var res, execRes;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
_context2.next = 2;
|
|
|
return (0,exercise/* resetMyGame */.$Q)({
|
|
|
url: url
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context2.sent;
|
|
|
if (res) {
|
|
|
_context2.next = 5;
|
|
|
break;
|
|
|
}
|
|
|
return _context2.abrupt("return");
|
|
|
case 5:
|
|
|
es_message/* default.success */.ZP.success("重置成功,正在进入实训!");
|
|
|
_context2.next = 8;
|
|
|
return (0,shixuns/* execShixun */.Ir)({
|
|
|
id: res.shixun_identifier
|
|
|
});
|
|
|
case 8:
|
|
|
execRes = _context2.sent;
|
|
|
if (!(execRes !== null && execRes !== void 0 && execRes.game_identifier)) {
|
|
|
_context2.next = 12;
|
|
|
break;
|
|
|
}
|
|
|
(0,util/* openNewWindow */.xg)("/tasks/".concat(execRes.game_identifier));
|
|
|
return _context2.abrupt("return");
|
|
|
case 12:
|
|
|
if ((execRes === null || execRes === void 0 ? void 0 : execRes.status) === 2) {
|
|
|
handleResetGame(execRes === null || execRes === void 0 ? void 0 : execRes.message);
|
|
|
} else if ((execRes === null || execRes === void 0 ? void 0 : execRes.status) === 3) {
|
|
|
handleInBeta(execRes === null || execRes === void 0 ? void 0 : execRes.message);
|
|
|
}
|
|
|
case 13:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
function onOk() {
|
|
|
return _onOk.apply(this, arguments);
|
|
|
}
|
|
|
return onOk;
|
|
|
}()
|
|
|
});
|
|
|
};
|
|
|
var handleInBeta = function handleInBeta(message) {
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
centered: true,
|
|
|
title: '提示',
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "tc font16",
|
|
|
children: ["\u76EE\u524D\u8BE5\u5B9E\u8DF5\u9879\u76EE\u5C1A\u5728\u5185\u6D4B\u4E2D\uFF0C\u5C06\u4E8E", message, "\u4E4B\u540E\u5F00\u653E\uFF0C\u8C22\u8C22\uFF01"]
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/task-path-list/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var DirectoryTree = tree/* default.DirectoryTree */.Z.DirectoryTree;
|
|
|
/* harmony default export */ var task_path_list = (function (_ref) {
|
|
|
var taskList = _ref.taskList,
|
|
|
challenge = _ref.challenge,
|
|
|
shixun = _ref.shixun,
|
|
|
identity = _ref.identity,
|
|
|
onSaveTaskStar = _ref.onSaveTaskStar,
|
|
|
subject_id = _ref.subject_id;
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
var _useState = (0,react.useState)([]),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
data = _useState2[0],
|
|
|
setData = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)([]),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
defaultExpandedKeys = _useState4[0],
|
|
|
setDefaultExpandedKeys = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)(),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
selectKeys = _useState6[0],
|
|
|
setSelectKeys = _useState6[1];
|
|
|
(0,react.useEffect)(function () {
|
|
|
getData(taskList);
|
|
|
setDefaultExpandedKeys(getParentIds({
|
|
|
children: taskList
|
|
|
}, challenge.id));
|
|
|
setData(toConsumableArray_default()(taskList));
|
|
|
console.log('taskList:', taskList);
|
|
|
}, [taskList]);
|
|
|
var getData = function getData(d) {
|
|
|
d.map(function (item, key) {
|
|
|
var _item$children;
|
|
|
item.index = key;
|
|
|
item.title = item.name;
|
|
|
// item.key = item.identifier || item.id
|
|
|
if (item.id == challenge.id) {
|
|
|
setSelectKeys(item.key);
|
|
|
}
|
|
|
if (!!((_item$children = item.children) !== null && _item$children !== void 0 && _item$children.length)) getData(item.children);
|
|
|
});
|
|
|
};
|
|
|
var onSelect = function onSelect(keys, info) {
|
|
|
console.log('Trigger Select', keys, info);
|
|
|
if (info.node.shixun_identifier) {
|
|
|
toShixun(info.node.shixun_identifier, info.node.key, false, subject_id);
|
|
|
}
|
|
|
};
|
|
|
var onExpand = function onExpand() {
|
|
|
console.log('Trigger Expand');
|
|
|
};
|
|
|
function getParentIds(object, id) {
|
|
|
var ids;
|
|
|
if (!object || typeof_default()(object) !== 'object') return;
|
|
|
if (object.id == id) return [];
|
|
|
return object.children.some(function (o) {
|
|
|
return ids = getParentIds(o, id);
|
|
|
}) ? [].concat(toConsumableArray_default()(ids), [object.key]) : undefined;
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "task-nav-container",
|
|
|
children: [!!searchParams.get("coursesId") && /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
className: "task-tip",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u6E29\u99A8\u63D0\u793A: "
|
|
|
}), "\u82E5\u67E5\u770B\u7B54\u6848\u65F6\u95F4\u65E9\u4E8E\u5173\u5361\u4EFB\u52A1\u5B8C\u6210\u65F6\u95F4\uFF0C\u5C06\u5F71\u54CD\u8BFE\u5802\u5B9E\u8BAD\u4F5C\u4E1A\u7684\u6210\u7EE9\u3002"]
|
|
|
})
|
|
|
}), !!(data !== null && data !== void 0 && data.length) && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
style: {
|
|
|
padding: 10
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(DirectoryTree, {
|
|
|
className: task_path_listmodules.tree,
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-wancheng1 "
|
|
|
}),
|
|
|
switcherIcon: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-you1 ",
|
|
|
style: {
|
|
|
position: 'relative',
|
|
|
top: -2
|
|
|
}
|
|
|
}),
|
|
|
onSelect: onSelect,
|
|
|
onExpand: onExpand,
|
|
|
selectedKeys: [selectKeys],
|
|
|
defaultExpandedKeys: toConsumableArray_default()(defaultExpandedKeys),
|
|
|
treeData: data,
|
|
|
titleRender: function titleRender(item, d, i) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: "".concat(challenge.id == item.id ? task_path_listmodules.active : '', " multi_ellipsis1"),
|
|
|
style: {
|
|
|
paddingRight: 34
|
|
|
},
|
|
|
children: [item.item_type === 'Shixun' && /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
"class": "iconfont icon-shixunti2 c-light-primary font20"
|
|
|
}), item.item_type === 'Challenge' && /*#__PURE__*/(0,jsx_runtime.jsxs)("i", {
|
|
|
style: {
|
|
|
fontFamily: 'monospace',
|
|
|
position: 'relative',
|
|
|
top: item.item_type === 'Shixun' ? -2 : 0
|
|
|
},
|
|
|
children: ["\uFF08", util/* RomanNumber */.I9[item.index], "\uFF09"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: {
|
|
|
position: 'relative',
|
|
|
top: item.item_type === 'Shixun' || item.item_type === 'Stage' ? -2 : 0
|
|
|
},
|
|
|
children: item === null || item === void 0 ? void 0 : item.name
|
|
|
}), item.item_type !== 'Stage' && /*#__PURE__*/(0,jsx_runtime.jsxs)("i", {
|
|
|
className: "iconfont icon-tasks-img c-grey-999 ".concat((item === null || item === void 0 ? void 0 : item.status) == 1 && 'c-green-29b'),
|
|
|
children: [((item === null || item === void 0 ? void 0 : item.status) == 1 || (item === null || item === void 0 ? void 0 : item.status) == 0) && /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: ImagesIcon/* done1Icon */.k$,
|
|
|
width: "16"
|
|
|
}), (item === null || item === void 0 ? void 0 : item.status) == 2 && /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: ImagesIcon/* done2Icon */.ub,
|
|
|
width: "16"
|
|
|
}), (item === null || item === void 0 ? void 0 : item.status) == 3 && /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: ImagesIcon/* done3Icon */.e6,
|
|
|
width: "16"
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
}
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/left-panel/discuss/index.jsx + 8 modules
|
|
|
var discuss = __webpack_require__(32925);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/discuss-input-editor/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./src/components/markdown-editor/index.tsx + 10 modules
|
|
|
var markdown_editor = __webpack_require__(55373);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/discuss-input-editor/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var discuss_input_editor = (function (_ref) {
|
|
|
var user_praise = _ref.user_praise,
|
|
|
praise_count = _ref.praise_count,
|
|
|
praisePlus = _ref.praisePlus,
|
|
|
onCreateDiscuss = _ref.onCreateDiscuss,
|
|
|
user = _ref.user,
|
|
|
userInfo = _ref.userInfo;
|
|
|
var _useState = (0,react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
showMd = _useState2[0],
|
|
|
setShowMd = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)(''),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
value = _useState4[0],
|
|
|
setValue = _useState4[1];
|
|
|
function onChangeHandler(v) {
|
|
|
setValue(v);
|
|
|
}
|
|
|
function onShowMd() {
|
|
|
setShowMd(true);
|
|
|
}
|
|
|
function onCancel() {
|
|
|
setShowMd(false);
|
|
|
}
|
|
|
function onCommit() {
|
|
|
return _onCommit.apply(this, arguments);
|
|
|
}
|
|
|
function _onCommit() {
|
|
|
_onCommit = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
if (userInfo !== null && userInfo !== void 0 && userInfo.authentication) {
|
|
|
_context.next = 3;
|
|
|
break;
|
|
|
}
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
title: '提示',
|
|
|
className: 'custom-modal-divider ',
|
|
|
icon: null,
|
|
|
content: '需要通过实名验证后,才能进行评论操作',
|
|
|
okText: '前往实名验证',
|
|
|
cancelText: '取消',
|
|
|
onOk: function onOk() {
|
|
|
window.open("/account/certification");
|
|
|
}
|
|
|
});
|
|
|
return _context.abrupt("return");
|
|
|
case 3:
|
|
|
if (!(value.trim() == '')) {
|
|
|
_context.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
es_message/* default.warn */.ZP.warn('内容不能为空');
|
|
|
return _context.abrupt("return");
|
|
|
case 6:
|
|
|
onCreateDiscuss(value);
|
|
|
setValue('');
|
|
|
setShowMd(false);
|
|
|
case 9:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _onCommit.apply(this, arguments);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "comment-input-editor-container ".concat(showMd ? 'active' : '', " "),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: showMd ? 'text-area hide' : 'text-area',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("input", {
|
|
|
placeholder: "\u8BF4\u70B9\u4EC0\u4E48",
|
|
|
onClick: onShowMd
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "c-light-black",
|
|
|
onClick: praisePlus,
|
|
|
title: user_praise ? '取消点赞' : '点赞',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "mr3 ".concat(user_praise ? 'iconfont icon-dianzan c-orange' : 'iconfont icon-dianzan-xian', " "),
|
|
|
alt: "\u8D5E"
|
|
|
}), praise_count ? /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: praise_count
|
|
|
}) : '']
|
|
|
})]
|
|
|
}), showMd ? /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "input-mask",
|
|
|
onClick: onCancel
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: showMd ? 'md-container' : 'md-container hide',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(markdown_editor/* default */.Z, {
|
|
|
id: "discuss-input-editor",
|
|
|
startInit: showMd,
|
|
|
miniToolbar: true,
|
|
|
watch: false,
|
|
|
noStorage: true,
|
|
|
defaultValue: value,
|
|
|
height: 240,
|
|
|
onChange: onChangeHandler
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "tip-container",
|
|
|
onClick: onCancel,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u8BF7\u52FF\u7C98\u8D34\u7B54\u6848\uFF0C\u5426\u5219\u5C06\u9020\u6210\u8D26\u53F7\u7981\u7528\u540E\u679C\uFF01"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
className: "btn-send",
|
|
|
style: {
|
|
|
color: '#fff'
|
|
|
},
|
|
|
onClick: onCommit,
|
|
|
children: "\u53D1\u9001"
|
|
|
})]
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/components/mediator.js
|
|
|
var mediator = __webpack_require__(91562);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/answer-panel/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./src/components/Spinner/index.tsx + 1 modules
|
|
|
var Spinner = __webpack_require__(38054);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/answer-panel/choose-answer/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/answer-panel/choose-answer/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var choose_answer = (function (_ref) {
|
|
|
var data = _ref.data;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(react.Fragment, {
|
|
|
children: data && data.map(function (item) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "choose-answer-item",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: ["\u7B2C", item.position, "\u9898"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
value: item.answer
|
|
|
})]
|
|
|
}, item.position);
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/answer-panel/multi-level-answer/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/answer-panel/multi-level-answer/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var multi_level_answer = (function (_ref) {
|
|
|
var data = _ref.data,
|
|
|
onShowUnlockAnswerModal = _ref.onShowUnlockAnswerModal,
|
|
|
challenge = _ref.challenge;
|
|
|
var styles = challenge !== null && challenge !== void 0 && challenge.disable_copy ? {
|
|
|
pointerEvents: 'none',
|
|
|
userSelect: 'none'
|
|
|
} : {};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(react.Fragment, {
|
|
|
children: data && data.map(function (item, index) {
|
|
|
var answer_id = item.answer_id,
|
|
|
answer_name = item.answer_name,
|
|
|
answer_contents = item.answer_contents,
|
|
|
view_time = item.view_time;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "answer-item-container",
|
|
|
style: styles,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: "level",
|
|
|
children: [" \u7EA7\u522B", index + 1, "\uFF1A "]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "name",
|
|
|
children: answer_name
|
|
|
}), answer_contents ? /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "view-time",
|
|
|
children: view_time ? moment_default()(view_time).format('YYYY-MM-DD HH:mm') : ''
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u5DF2\u89E3\u9501"
|
|
|
})]
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onShowUnlockAnswerModal,
|
|
|
children: "\u89E3\u9501"
|
|
|
})]
|
|
|
}), answer_contents ? /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
value: answer_contents
|
|
|
}) : null]
|
|
|
}, answer_id);
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/answer-panel/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//st = 0 代码题
|
|
|
//st = 1 选择题
|
|
|
|
|
|
|
|
|
/* harmony default export */ var answer_panel = (function (_ref) {
|
|
|
var loading = _ref.loading,
|
|
|
data = _ref.data,
|
|
|
onShowTip = _ref.onShowTip,
|
|
|
st = _ref.st,
|
|
|
challenge = _ref.challenge;
|
|
|
var divDom = (0,react.useRef)(null);
|
|
|
var tipsDom = (0,react.useRef)(null);
|
|
|
var timer = (0,react.useRef)(null);
|
|
|
var timerTwo = (0,react.useRef)(null);
|
|
|
var divXY = (0,react.useRef)({
|
|
|
x: 0,
|
|
|
y: 0
|
|
|
});
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (divDom.current && challenge !== null && challenge !== void 0 && challenge.disable_copy) {
|
|
|
var onMouseOver = function onMouseOver(e) {
|
|
|
divXY.current = {
|
|
|
x: e.clientX,
|
|
|
y: e.clientY
|
|
|
};
|
|
|
clearTimeout(timer.current);
|
|
|
clearTimeout(timerTwo.current);
|
|
|
timer.current = setTimeout(function () {
|
|
|
tipsDom.current.style.left = "".concat(divXY.current.x, "px");
|
|
|
tipsDom.current.style.top = "".concat(divXY.current.y, "px");
|
|
|
tipsDom.current.style.display = 'block';
|
|
|
}, 1000);
|
|
|
timerTwo.current = setTimeout(function () {
|
|
|
tipsDom.current.style.display = 'none';
|
|
|
clearTimeout(timer.current);
|
|
|
clearTimeout(timerTwo.current);
|
|
|
}, 3000);
|
|
|
};
|
|
|
var onMouseOut = function onMouseOut() {
|
|
|
tipsDom.current.style.display = 'none';
|
|
|
clearTimeout(timer.current);
|
|
|
clearTimeout(timerTwo.current);
|
|
|
};
|
|
|
var onMouseMove = function onMouseMove(e) {
|
|
|
divXY.current = {
|
|
|
x: e.clientX,
|
|
|
y: e.clientY
|
|
|
};
|
|
|
};
|
|
|
divDom.current.addEventListener('mouseenter', onMouseOver);
|
|
|
window.addEventListener('mousemove', onMouseMove);
|
|
|
divDom.current.addEventListener('mouseleave', onMouseOut);
|
|
|
return function () {
|
|
|
var _divDom$current, _divDom$current2;
|
|
|
(_divDom$current = divDom.current) === null || _divDom$current === void 0 ? void 0 : _divDom$current.removeEventListener('mouseenter', onMouseOver);
|
|
|
window.removeEventListener('mousemove', onMouseMove);
|
|
|
(_divDom$current2 = divDom.current) === null || _divDom$current2 === void 0 ? void 0 : _divDom$current2.removeEventListener('mouseleave', onMouseOut);
|
|
|
};
|
|
|
}
|
|
|
}, [divDom === null || divDom === void 0 ? void 0 : divDom.current, challenge === null || challenge === void 0 ? void 0 : challenge.disable_copy]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
ref: divDom,
|
|
|
className: "answer-container",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
ref: tipsDom,
|
|
|
className: "answer-tips-css",
|
|
|
children: "\u7981\u6B62\u590D\u5236\u53C2\u8003\u7B54\u6848"
|
|
|
}), loading ? /*#__PURE__*/(0,jsx_runtime.jsx)(Spinner/* default */.Z, {}) : null, st === 1 ? /*#__PURE__*/(0,jsx_runtime.jsx)(choose_answer, {
|
|
|
data: data
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)(multi_level_answer, {
|
|
|
data: data,
|
|
|
challenge: challenge,
|
|
|
onShowUnlockAnswerModal: onShowTip
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/checkbox/style/index.js + 1 modules
|
|
|
var checkbox_style = __webpack_require__(82000);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/checkbox/index.js + 2 modules
|
|
|
var es_checkbox = __webpack_require__(32808);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/answer-panel/unlock-answer-list/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/answer-panel/unlock-answer-list/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var unlock_answer_list = (function (_ref) {
|
|
|
var data = _ref.data,
|
|
|
selected_unlocked_answer_id = _ref.selected_unlocked_answer_id,
|
|
|
selected_index = _ref.selected_index,
|
|
|
onSelect = _ref.onSelect;
|
|
|
if (!data) {
|
|
|
return null;
|
|
|
}
|
|
|
var list = data.filter(function (item, index) {
|
|
|
if (!item.answer_contents) {
|
|
|
item.index = index;
|
|
|
return true;
|
|
|
}
|
|
|
return false;
|
|
|
});
|
|
|
function onTriggerAnswer(e) {
|
|
|
var _e$target = e.target,
|
|
|
value = _e$target.value,
|
|
|
checked = _e$target.checked;
|
|
|
if (checked) {
|
|
|
onSelect(value);
|
|
|
} else {
|
|
|
onSelect(null);
|
|
|
}
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("table", {
|
|
|
className: "unlock-answer-list",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("thead", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("tr", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("th", {}), /*#__PURE__*/(0,jsx_runtime.jsx)("th", {
|
|
|
children: "\u7EA7\u522B"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("th", {
|
|
|
children: "\u540D\u79F0"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("th", {
|
|
|
children: "\u6263\u5206\u5360\u6BD4"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("th", {
|
|
|
children: "\u6263\u51CF\u91D1\u5E01"
|
|
|
})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("tbody", {
|
|
|
children: list.map(function (item, i) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("tr", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("td", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_checkbox/* default */.Z, {
|
|
|
value: item.answer_id,
|
|
|
onChange: onTriggerAnswer,
|
|
|
checked: item.answer_id === selected_unlocked_answer_id || selected_unlocked_answer_id && selected_index >= i
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("td", {
|
|
|
children: item.index + 1
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("td", {
|
|
|
children: item.answer_name
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("td", {
|
|
|
children: [item.answer_ratio, "%"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("td", {
|
|
|
className: "gold-color",
|
|
|
children: item.answer_score
|
|
|
})]
|
|
|
}, item.answer_id);
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/utils/fetch.ts
|
|
|
var utils_fetch = __webpack_require__(84519);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/unity3d-panel/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/unity3d-panel/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*● web通信U3D Json数据格式: { "state": "start", "data": "Red"(Blue,White) }
|
|
|
● U3D通讯web端 Json数据格式: { "GameState":"Fail", "Data":"" } */
|
|
|
|
|
|
|
|
|
/* harmony default export */ var unity3d_panel = (function (_ref) {
|
|
|
var unity_3d_routes = _ref.unity_3d_routes,
|
|
|
onGetUnity3dMessage = _ref.onGetUnity3dMessage,
|
|
|
onEvaluateCallback = _ref.onEvaluateCallback,
|
|
|
taskData = _ref.taskData,
|
|
|
userInfo = _ref.userInfo;
|
|
|
var times = (0,react.useRef)();
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
var el = (0,react.useRef)();
|
|
|
var _useState = (0,react.useState)(true),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
loading = _useState2[0],
|
|
|
setLoading = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)({}),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
podData = _useState4[0],
|
|
|
setPodData = _useState4[1];
|
|
|
(0,react.useEffect)(function () {
|
|
|
function onReceiveMessage(e) {
|
|
|
try {
|
|
|
var mes = JSON.parse(e.data);
|
|
|
onGetUnity3dMessage(mes);
|
|
|
if (mes.type === 'getTaskData') {
|
|
|
sendMessage({
|
|
|
taskData: taskData,
|
|
|
userInfo: userInfo
|
|
|
});
|
|
|
}
|
|
|
} catch (error) {
|
|
|
console.log('error:', error, e);
|
|
|
}
|
|
|
}
|
|
|
window.addEventListener('message', onReceiveMessage);
|
|
|
var unSub = mediator/* default.subscribe */.Z.subscribe('evaluate-unity3d-result', function (value) {
|
|
|
sendMessage(value);
|
|
|
if (onEvaluateCallback) {
|
|
|
onEvaluateCallback();
|
|
|
}
|
|
|
});
|
|
|
return function () {
|
|
|
clearTimeout(times.current);
|
|
|
window.removeEventListener('message', onReceiveMessage);
|
|
|
unSub();
|
|
|
};
|
|
|
}, []);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (taskData.challenge.thiry_party) {
|
|
|
getPodServer();
|
|
|
}
|
|
|
|
|
|
// const unsub = ()
|
|
|
var unsub = mediator/* default.subscribe */.Z.subscribe('reset-linux-windos-vnc', function () {
|
|
|
getPodServer();
|
|
|
});
|
|
|
var unsub2 = mediator/* default.subscribe */.Z.subscribe('vnc-reseting', function () {
|
|
|
setPodData({});
|
|
|
setLoading(true);
|
|
|
});
|
|
|
return function () {
|
|
|
unsub2();
|
|
|
unsub();
|
|
|
};
|
|
|
}, [taskData]);
|
|
|
var getPodServer = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var _taskData$myshixun, _taskData$game, _res$data, _res$data$data_list;
|
|
|
var res, _res$data2, _res$data3, _res$data4;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return (0,utils_fetch/* default */.ZP)("/api/myshixuns/".concat(taskData === null || taskData === void 0 ? void 0 : (_taskData$myshixun = taskData.myshixun) === null || _taskData$myshixun === void 0 ? void 0 : _taskData$myshixun.identifier, "/start.json"), {
|
|
|
method: 'get',
|
|
|
params: {
|
|
|
game_id: taskData === null || taskData === void 0 ? void 0 : (_taskData$game = taskData.game) === null || _taskData$game === void 0 ? void 0 : _taskData$game.id
|
|
|
}
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
setLoading(false);
|
|
|
if (!(res !== null && res !== void 0 && (_res$data = res.data) !== null && _res$data !== void 0 && (_res$data$data_list = _res$data.data_list) !== null && _res$data$data_list !== void 0 && _res$data$data_list.length)) {
|
|
|
_context.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
mediator/* default.publish */.Z.publish('pod-restrict-data', {
|
|
|
identifier: res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.identifier,
|
|
|
data_list: res === null || res === void 0 ? void 0 : (_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.data_list
|
|
|
});
|
|
|
return _context.abrupt("return");
|
|
|
case 7:
|
|
|
if (res !== null && res !== void 0 && res.data) {
|
|
|
res.data.thiry_party_time = res.data.remaining_time;
|
|
|
res.data.thiry_party_url = (res === null || res === void 0 ? void 0 : (_res$data4 = res.data) === null || _res$data4 === void 0 ? void 0 : _res$data4.link_url) + '?t=' + new Date().getTime();
|
|
|
setPodData(objectSpread2_default()({}, res.data || {}));
|
|
|
}
|
|
|
clearTimeout(times.current);
|
|
|
times.current = setTimeout(function () {
|
|
|
delayedPodServer();
|
|
|
}, res.data.thiry_party_time - 30 * 1000);
|
|
|
case 10:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function getPodServer() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var delayedPodServer = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
_context2.next = 2;
|
|
|
return (0,utils_fetch/* default */.ZP)("/api/tasks/".concat(params.taskId || taskId, "/extend_linux_vnc.json"), {
|
|
|
method: 'post',
|
|
|
body: objectSpread2_default()({}, params)
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context2.sent;
|
|
|
clearTimeout(times.current);
|
|
|
times.current = setTimeout(function () {
|
|
|
delayedPodServer();
|
|
|
}, res.data.remaining_time - 30 * 1000);
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function delayedPodServer() {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
function sendMessage(data) {
|
|
|
if (el.current) {
|
|
|
el.current.contentWindow.postMessage(JSON.stringify(data), '*');
|
|
|
}
|
|
|
}
|
|
|
function onLoad() {
|
|
|
setLoading(false);
|
|
|
mediator/* default.publish */.Z.publish('unity3d-load-end');
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [loading ? /*#__PURE__*/(0,jsx_runtime.jsx)(Spinner/* default */.Z, {
|
|
|
className: "c-white",
|
|
|
message: "\u6B63\u5728\u52AA\u529B\u52A0\u8F7D\u4E2D..."
|
|
|
}) : null, (unity_3d_routes || podData.thiry_party_url) && /*#__PURE__*/(0,jsx_runtime.jsx)("iframe", {
|
|
|
onLoad: onLoad,
|
|
|
className: "unity3d-panel",
|
|
|
ref: el,
|
|
|
allow: "geolocation document-domain"
|
|
|
// sandbox
|
|
|
,
|
|
|
sandbox: "allow-scripts allow-same-origin allow-top-navigation allow-forms allow-popups allow-pointer-lock allow-popups-to-escape-sandbox allow-presentation allow-top-navigation-by-user-activation"
|
|
|
// sandbox="allow-same-origin allow-scripts allow-popups allow-forms allow-top-navigation allow-pointer-lock"
|
|
|
,
|
|
|
src: unity_3d_routes || podData.thiry_party_url
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/util.js
|
|
|
var tasks_util = __webpack_require__(96403);
|
|
|
// EXTERNAL MODULE: ./src/components/image-preview/index.tsx + 1 modules
|
|
|
var image_preview = __webpack_require__(75490);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/left-panel/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function onPreviewImage(e) {
|
|
|
var t = e.target;
|
|
|
if (t.tagName.toUpperCase() === 'IMG') {
|
|
|
var url = t.src || t.getAttribute('src');
|
|
|
if (url && url.indexOf('/images/avatars/User') === -1) {
|
|
|
e.stopPropagation();
|
|
|
e.preventDefault();
|
|
|
mediator/* default.publish */.Z.publish('preview-image', url);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
var left_panel_initialState = {
|
|
|
showTaskList: false,
|
|
|
activeIndex: 0,
|
|
|
taskList: [],
|
|
|
enlarge_unity3D: false,
|
|
|
tab_fixed: false,
|
|
|
//答案相关state
|
|
|
selected_unlocked_answer_id: null,
|
|
|
isMultiLevel: false,
|
|
|
showTip: false,
|
|
|
answerScore: 0,
|
|
|
//单个关卡的分数
|
|
|
data: null,
|
|
|
loading: false
|
|
|
};
|
|
|
function left_panel_reducer(state, action) {
|
|
|
switch (action.type) {
|
|
|
case constant/* SET_ACTIVE_INDEX */.n_:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
activeIndex: action.payload
|
|
|
});
|
|
|
case constant/* TRIGGER_ENLARGE_UNITY3D */.lS:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
enlarge_unity3D: action.payload
|
|
|
});
|
|
|
case constant/* TRIGGER_TAB_FIXED */.gK:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
tab_fixed: action.payload
|
|
|
});
|
|
|
case constant/* SHOW_TASK_LIST */.Hp:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showTaskList: true
|
|
|
});
|
|
|
case constant/* HIDE_TASK_LIST */.hK:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showTaskList: false
|
|
|
});
|
|
|
case constant/* GET_TASK_LIST */.sM:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
case constant/* SET_TASK_STAR */.ib:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
case constant/* SHOW_ANSWER_LOADING */.wt:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
loading: true
|
|
|
});
|
|
|
case constant/* SHOW_TIP_MODAL */.Rj:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showTip: true
|
|
|
});
|
|
|
case constant/* HIDE_TIP_MODAL */.NZ:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showTip: false
|
|
|
});
|
|
|
case constant/* SELECT_UNLOCK_ANSWER */.ym:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
selected_unlocked_answer_id: action.payload
|
|
|
});
|
|
|
case constant/* FETCH_ANSWER_INFO */.pl:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}
|
|
|
//* score 关卡分数
|
|
|
/* harmony default export */ var left_panel = (function (_ref) {
|
|
|
var taskId = _ref.taskId,
|
|
|
minuxUserGrade = _ref.minuxUserGrade,
|
|
|
discusses_count = _ref.discusses_count,
|
|
|
is_teacher = _ref.is_teacher,
|
|
|
has_answer = _ref.has_answer,
|
|
|
user = _ref.user,
|
|
|
st = _ref.st,
|
|
|
game = _ref.game,
|
|
|
rank_name = _ref.rank_name,
|
|
|
challenge = _ref.challenge,
|
|
|
myshixun = _ref.myshixun,
|
|
|
user_praise = _ref.user_praise,
|
|
|
praise_count = _ref.praise_count,
|
|
|
unity_3d_routes = _ref.unity_3d_routes,
|
|
|
thiry_party_url = _ref.thiry_party_url,
|
|
|
with_code_file = _ref.with_code_file,
|
|
|
onPlusOrCancelPraise = _ref.onPlusOrCancelPraise,
|
|
|
onEvaluateCallback = _ref.onEvaluateCallback,
|
|
|
onGetUnity3dMessage = _ref.onGetUnity3dMessage,
|
|
|
shixun = _ref.shixun,
|
|
|
taskData = _ref.taskData,
|
|
|
chatgpt = _ref.chatgpt,
|
|
|
to_user_id = _ref.to_user_id;
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
var _useReducer = (0,react.useReducer)(left_panel_reducer, left_panel_initialState),
|
|
|
_useReducer2 = slicedToArray_default()(_useReducer, 2),
|
|
|
state = _useReducer2[0],
|
|
|
dispatch = _useReducer2[1];
|
|
|
var _useState = (0,react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
confirmLoading = _useState2[0],
|
|
|
setConfirmLoading = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)(false),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
allowDisableDiscuss = _useState4[0],
|
|
|
setAllowDisableDiscuss = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)({}),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
userInfo = _useState6[0],
|
|
|
setUserInfo = _useState6[1];
|
|
|
var taskList = state.taskList,
|
|
|
showTaskList = state.showTaskList,
|
|
|
activeIndex = state.activeIndex,
|
|
|
enlarge_unity3D = state.enlarge_unity3D,
|
|
|
tab_fixed = state.tab_fixed,
|
|
|
data = state.data,
|
|
|
answerScore = state.answerScore,
|
|
|
loading = state.loading,
|
|
|
showTip = state.showTip,
|
|
|
isMultiLevel = state.isMultiLevel,
|
|
|
selected_unlocked_answer_id = state.selected_unlocked_answer_id;
|
|
|
var selected_index = (0,react.useMemo)(function () {
|
|
|
var rs = 0;
|
|
|
if (data && selected_unlocked_answer_id) {
|
|
|
var unLockList = data.filter(function (item) {
|
|
|
return !item.answer_contents;
|
|
|
});
|
|
|
for (var i = 0; i < unLockList.length; i++) {
|
|
|
if (unLockList[i].answer_id === selected_unlocked_answer_id) {
|
|
|
rs = i;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
return rs;
|
|
|
}, [data, selected_unlocked_answer_id]);
|
|
|
var propaedeutics = shixun ? shixun.propaedeutics : null;
|
|
|
var contentEl = (0,react.useRef)();
|
|
|
var open_rank = challenge.open_rank;
|
|
|
console.log(challenge, 'challenge');
|
|
|
console.log(chatgpt, "chatgpt");
|
|
|
var tabs = (0,react.useMemo)(function () {
|
|
|
var rs = [{
|
|
|
index: 0,
|
|
|
title: '任务要求'
|
|
|
}];
|
|
|
if (propaedeutics) {
|
|
|
rs.push({
|
|
|
index: 1,
|
|
|
title: '背景知识'
|
|
|
});
|
|
|
}
|
|
|
if (has_answer && searchParams.get("type") !== 'exercises' && !(challenge !== null && challenge !== void 0 && challenge.hide_answer)) {
|
|
|
rs.push({
|
|
|
index: 2,
|
|
|
title: '参考答案'
|
|
|
});
|
|
|
}
|
|
|
if (searchParams.get("type") !== 'exercises' && !(shixun !== null && shixun !== void 0 && shixun.is_disable_discuss)) rs.push({
|
|
|
index: 3,
|
|
|
title: chatgpt ? "问答" : '评论'
|
|
|
});
|
|
|
if (open_rank !== 'CLOSE') {
|
|
|
rs.push({
|
|
|
index: 4,
|
|
|
title: rank_name
|
|
|
});
|
|
|
}
|
|
|
return rs;
|
|
|
}, [has_answer, propaedeutics, open_rank, rank_name]);
|
|
|
function onSetActiveIndex(e) {
|
|
|
var id = parseInt(e.currentTarget.id);
|
|
|
if (id === 2) {
|
|
|
if (game.homework_common_answer_open) {
|
|
|
es_message/* default.info */.ZP.info('禁止查看答案');
|
|
|
} else {
|
|
|
initAnswer();
|
|
|
}
|
|
|
} else if (id === 3 && game.homework_common_comment_open) {
|
|
|
es_message/* default.info */.ZP.info('禁止查看评论');
|
|
|
} else {
|
|
|
dispatch({
|
|
|
type: constant/* SET_ACTIVE_INDEX */.n_,
|
|
|
payload: id
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
function initAnswer() {
|
|
|
return _initAnswer.apply(this, arguments);
|
|
|
}
|
|
|
function _initAnswer() {
|
|
|
_initAnswer = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var response;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
if (!(st === 0)) {
|
|
|
_context.next = 5;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 3;
|
|
|
return fetchAnswerInfo();
|
|
|
case 3:
|
|
|
_context.next = 9;
|
|
|
break;
|
|
|
case 5:
|
|
|
_context.next = 7;
|
|
|
return (0,service/* getChooseAnswerInfo */.sP)(game.identifier);
|
|
|
case 7:
|
|
|
response = _context.sent;
|
|
|
processChooseAnswer(response);
|
|
|
case 9:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _initAnswer.apply(this, arguments);
|
|
|
}
|
|
|
function fetchAnswerInfo() {
|
|
|
return _fetchAnswerInfo.apply(this, arguments);
|
|
|
}
|
|
|
function _fetchAnswerInfo() {
|
|
|
_fetchAnswerInfo = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var response, message, showTip;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
_context2.next = 2;
|
|
|
return (0,service/* getAnswerInfo */.lH)(game.identifier);
|
|
|
case 2:
|
|
|
response = _context2.sent;
|
|
|
message = response.message;
|
|
|
if (!(message.length === 0)) {
|
|
|
_context2.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
es_message/* default.info */.ZP.info('本关卡未设置答案');
|
|
|
return _context2.abrupt("return");
|
|
|
case 7:
|
|
|
if (message.length) {
|
|
|
_context2.next = 10;
|
|
|
break;
|
|
|
}
|
|
|
dispatch({
|
|
|
type: constant/* FETCH_ANSWER_INFO */.pl,
|
|
|
payload: {
|
|
|
showTip: true,
|
|
|
isMultiLevel: false,
|
|
|
answerScore: message.answer_score,
|
|
|
selected_unlocked_answer_id: message.answer_id
|
|
|
}
|
|
|
});
|
|
|
return _context2.abrupt("return");
|
|
|
case 10:
|
|
|
showTip = message.filter(function (item) {
|
|
|
return item.answer_contents;
|
|
|
}).length === 0;
|
|
|
dispatch({
|
|
|
type: constant/* FETCH_ANSWER_INFO */.pl,
|
|
|
payload: {
|
|
|
showTip: showTip,
|
|
|
data: message,
|
|
|
isMultiLevel: message.length > 1,
|
|
|
activeIndex: !showTip ? 2 : activeIndex
|
|
|
}
|
|
|
});
|
|
|
case 12:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return _fetchAnswerInfo.apply(this, arguments);
|
|
|
}
|
|
|
function processChooseAnswer(response) {
|
|
|
var choose_answers = response.choose_answers,
|
|
|
message = response.message,
|
|
|
status = response.status;
|
|
|
if (status === 0) {
|
|
|
es_message/* default.info */.ZP.info(message);
|
|
|
return;
|
|
|
}
|
|
|
dispatch({
|
|
|
type: constant/* FETCH_ANSWER_INFO */.pl,
|
|
|
payload: {
|
|
|
showTip: status === 1 ? true : false,
|
|
|
data: choose_answers,
|
|
|
answerScore: message,
|
|
|
loading: false,
|
|
|
activeIndex: status === 1 ? activeIndex : 2
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
function onHideTip() {
|
|
|
dispatch({
|
|
|
type: constant/* HIDE_TIP_MODAL */.NZ
|
|
|
});
|
|
|
}
|
|
|
function onShowTip() {
|
|
|
dispatch({
|
|
|
type: constant/* SHOW_TIP_MODAL */.Rj
|
|
|
});
|
|
|
}
|
|
|
function onViewAnswer() {
|
|
|
return _onViewAnswer.apply(this, arguments);
|
|
|
}
|
|
|
function _onViewAnswer() {
|
|
|
_onViewAnswer = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3() {
|
|
|
var response, respose, status, message, sum;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
setConfirmLoading(true);
|
|
|
if (!(st === 1)) {
|
|
|
_context3.next = 8;
|
|
|
break;
|
|
|
}
|
|
|
_context3.next = 4;
|
|
|
return (0,service/* getChooseUnlockAnswer */.MH)(game.identifier);
|
|
|
case 4:
|
|
|
response = _context3.sent;
|
|
|
if ((response === null || response === void 0 ? void 0 : response.status) !== -1) {
|
|
|
minuxUserGrade(answerScore);
|
|
|
processChooseAnswer(response);
|
|
|
}
|
|
|
_context3.next = 14;
|
|
|
break;
|
|
|
case 8:
|
|
|
if (!selected_unlocked_answer_id) {
|
|
|
_context3.next = 14;
|
|
|
break;
|
|
|
}
|
|
|
_context3.next = 11;
|
|
|
return (0,service/* getUnlockAnswer */.j3)(game.identifier, selected_unlocked_answer_id);
|
|
|
case 11:
|
|
|
respose = _context3.sent;
|
|
|
status = respose.status, message = respose.message;
|
|
|
if (status === -1) {} else {
|
|
|
if (isMultiLevel) {
|
|
|
sum = 0;
|
|
|
data.filter(function (item) {
|
|
|
return !item.answer_contents;
|
|
|
}).forEach(function (item, index) {
|
|
|
if (index <= selected_index && item) {
|
|
|
sum += item.answer_score;
|
|
|
}
|
|
|
});
|
|
|
minuxUserGrade(sum);
|
|
|
} else {
|
|
|
minuxUserGrade(answerScore);
|
|
|
}
|
|
|
fetchAnswerInfo();
|
|
|
onSelect(null);
|
|
|
dispatch({
|
|
|
type: constant/* HIDE_TIP_MODAL */.NZ
|
|
|
});
|
|
|
}
|
|
|
case 14:
|
|
|
setConfirmLoading(false);
|
|
|
case 15:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return _onViewAnswer.apply(this, arguments);
|
|
|
}
|
|
|
function onSelect(id) {
|
|
|
dispatch({
|
|
|
type: constant/* SELECT_UNLOCK_ANSWER */.ym,
|
|
|
payload: id
|
|
|
});
|
|
|
}
|
|
|
function getTaskList() {
|
|
|
return _getTaskList.apply(this, arguments);
|
|
|
}
|
|
|
function _getTaskList() {
|
|
|
_getTaskList = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4() {
|
|
|
var _response, response;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
_context4.prev = 0;
|
|
|
if (!searchParams.get("subject_id")) {
|
|
|
_context4.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
_context4.next = 4;
|
|
|
return (0,service/* fetchPathsTaskList */.SO)(myshixun.identifier, objectSpread2_default()({}, (0,util/* getJsonFromUrl */.oP)()));
|
|
|
case 4:
|
|
|
response = _context4.sent;
|
|
|
_context4.next = 10;
|
|
|
break;
|
|
|
case 7:
|
|
|
_context4.next = 9;
|
|
|
return (0,service/* fetchTaskList */.g6)(myshixun.identifier);
|
|
|
case 9:
|
|
|
response = _context4.sent;
|
|
|
case 10:
|
|
|
dispatch({
|
|
|
type: constant/* GET_TASK_LIST */.sM,
|
|
|
payload: {
|
|
|
taskList: ((_response = response) === null || _response === void 0 ? void 0 : _response.stages) || response,
|
|
|
showTaskList: true
|
|
|
}
|
|
|
});
|
|
|
_context4.next = 16;
|
|
|
break;
|
|
|
case 13:
|
|
|
_context4.prev = 13;
|
|
|
_context4.t0 = _context4["catch"](0);
|
|
|
console.log(_context4.t0);
|
|
|
case 16:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4, null, [[0, 13]]);
|
|
|
}));
|
|
|
return _getTaskList.apply(this, arguments);
|
|
|
}
|
|
|
function onSaveTaskStar(_x, _x2, _x3) {
|
|
|
return _onSaveTaskStar.apply(this, arguments);
|
|
|
} //如果不实时刷新, 需要处理评测,查看答案时间这些变动
|
|
|
function _onSaveTaskStar() {
|
|
|
_onSaveTaskStar = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee5(id, star, index) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee5$(_context5) {
|
|
|
while (1) switch (_context5.prev = _context5.next) {
|
|
|
case 0:
|
|
|
_context5.prev = 0;
|
|
|
_context5.next = 3;
|
|
|
return (0,service/* saveTaskStar */.L5)(id, shixun.id, star);
|
|
|
case 3:
|
|
|
taskList[index].star = star;
|
|
|
dispatch({
|
|
|
type: constant/* SET_TASK_STAR */.ib,
|
|
|
payload: {
|
|
|
taskList: toConsumableArray_default()(taskList)
|
|
|
}
|
|
|
});
|
|
|
_context5.next = 10;
|
|
|
break;
|
|
|
case 7:
|
|
|
_context5.prev = 7;
|
|
|
_context5.t0 = _context5["catch"](0);
|
|
|
console.log(_context5.t0);
|
|
|
case 10:
|
|
|
case "end":
|
|
|
return _context5.stop();
|
|
|
}
|
|
|
}, _callee5, null, [[0, 7]]);
|
|
|
}));
|
|
|
return _onSaveTaskStar.apply(this, arguments);
|
|
|
}
|
|
|
function onViewAllTask() {
|
|
|
getTaskList();
|
|
|
}
|
|
|
function onHideTaskList() {
|
|
|
dispatch({
|
|
|
type: constant/* HIDE_TASK_LIST */.hK
|
|
|
});
|
|
|
}
|
|
|
|
|
|
//和后端商量直接调useInfo接口取实训身份信息
|
|
|
//目前评论中使用到
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (!(shixun !== null && shixun !== void 0 && shixun.identifier)) return;
|
|
|
var infoRes = (0,service_user/* getUserInfo */.bG)({
|
|
|
objective_type: 'shixun',
|
|
|
objective_id: shixun === null || shixun === void 0 ? void 0 : shixun.identifier,
|
|
|
school: 1
|
|
|
});
|
|
|
infoRes.then(function (res) {
|
|
|
var _res$shixun;
|
|
|
setUserInfo(objectSpread2_default()({}, res));
|
|
|
setAllowDisableDiscuss(res === null || res === void 0 ? void 0 : (_res$shixun = res.shixun) === null || _res$shixun === void 0 ? void 0 : _res$shixun.own);
|
|
|
});
|
|
|
}, [shixun === null || shixun === void 0 ? void 0 : shixun.identifier]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
return function () {
|
|
|
dispatch({
|
|
|
type: constant/* HIDE_TASK_LIST */.hK
|
|
|
});
|
|
|
dispatch({
|
|
|
type: constant/* SET_ACTIVE_INDEX */.n_,
|
|
|
payload: 0
|
|
|
});
|
|
|
};
|
|
|
}, [taskId]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
dispatch({
|
|
|
type: constant/* SET_ACTIVE_INDEX */.n_,
|
|
|
payload: searchParams.get("extra") ? 3 : 0
|
|
|
});
|
|
|
}, [searchParams.get("extra")]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (contentEl.current) {
|
|
|
contentEl.current.addEventListener('mousedown', onPreviewImage);
|
|
|
return function () {
|
|
|
var _contentEl$current;
|
|
|
(_contentEl$current = contentEl.current) === null || _contentEl$current === void 0 ? void 0 : _contentEl$current.removeEventListener('mousedown', onPreviewImage);
|
|
|
};
|
|
|
}
|
|
|
}, [contentEl.current]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if ((with_code_file && unity_3d_routes || thiry_party_url) && contentEl.current) {
|
|
|
var onScroll = (0,tasks_util/* debounce */.Ds)(function (e) {
|
|
|
var scrollTop = e.target.scrollTop;
|
|
|
if (scrollTop >= 354) {
|
|
|
dispatch({
|
|
|
type: constant/* TRIGGER_TAB_FIXED */.gK,
|
|
|
payload: true
|
|
|
});
|
|
|
} else {
|
|
|
dispatch({
|
|
|
type: constant/* TRIGGER_TAB_FIXED */.gK,
|
|
|
payload: false
|
|
|
});
|
|
|
}
|
|
|
}, 10);
|
|
|
contentEl.current.addEventListener('scroll', onScroll);
|
|
|
var unSub = mediator/* default.subscribe */.Z.subscribe('evaluate-unity3d-finish', function () {
|
|
|
contentEl.current.scrollTop = 0;
|
|
|
});
|
|
|
return function () {
|
|
|
var _contentEl$current2;
|
|
|
(_contentEl$current2 = contentEl.current) === null || _contentEl$current2 === void 0 ? void 0 : _contentEl$current2.removeEventListener('scroll', onScroll);
|
|
|
unSub();
|
|
|
};
|
|
|
}
|
|
|
}, [with_code_file, unity_3d_routes, thiry_party_url, contentEl.current]);
|
|
|
var position = challenge.position,
|
|
|
score = challenge.score,
|
|
|
subject = challenge.subject;
|
|
|
var headerOption = {
|
|
|
onViewAllTask: onViewAllTask,
|
|
|
position: position,
|
|
|
score: score,
|
|
|
subject: subject
|
|
|
};
|
|
|
function onCreateDiscuss(_x4) {
|
|
|
return _onCreateDiscuss.apply(this, arguments);
|
|
|
}
|
|
|
function _onCreateDiscuss() {
|
|
|
_onCreateDiscuss = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee6(content) {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee6$(_context6) {
|
|
|
while (1) switch (_context6.prev = _context6.next) {
|
|
|
case 0:
|
|
|
_context6.next = 2;
|
|
|
return (0,discuss_service/* createDiscuss */.rd)({
|
|
|
content: content,
|
|
|
container_type: 'Shixun',
|
|
|
container_id: shixun.id,
|
|
|
challenge_id: challenge.id,
|
|
|
position: position
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context6.sent;
|
|
|
if (!(res.status === -3)) {
|
|
|
_context6.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
modal/* default.info */.Z.info({
|
|
|
title: '提示',
|
|
|
className: 'custom-modal-divider ',
|
|
|
icon: null,
|
|
|
content: '你的账号因为发布了不当内容,现已将评论功能屏蔽。',
|
|
|
okText: '确定'
|
|
|
});
|
|
|
return _context6.abrupt("return");
|
|
|
case 6:
|
|
|
console.log(res);
|
|
|
dispatch({
|
|
|
type: constant/* SET_ACTIVE_INDEX */.n_,
|
|
|
payload: 3
|
|
|
});
|
|
|
mediator/* default.publish */.Z.publish('create-discuss');
|
|
|
case 9:
|
|
|
case "end":
|
|
|
return _context6.stop();
|
|
|
}
|
|
|
}, _callee6);
|
|
|
}));
|
|
|
return _onCreateDiscuss.apply(this, arguments);
|
|
|
}
|
|
|
function onTriggerUnity3D() {
|
|
|
dispatch({
|
|
|
type: constant/* TRIGGER_ENLARGE_UNITY3D */.lS,
|
|
|
payload: !enlarge_unity3D
|
|
|
});
|
|
|
}
|
|
|
var answerPanelOption = {
|
|
|
loading: loading,
|
|
|
data: data,
|
|
|
onShowTip: onShowTip,
|
|
|
st: st,
|
|
|
challenge: challenge
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(header, objectSpread2_default()({}, headerOption)), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "content-wrapper",
|
|
|
ref: contentEl,
|
|
|
children: [unity_3d_routes && with_code_file ? /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "unity-3d-container ".concat(enlarge_unity3D ? 'enlarge' : ''),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onTriggerUnity3D,
|
|
|
className: "btn-enlarge ".concat(enlarge_unity3D ? 'enlarge' : ''),
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont ".concat(enlarge_unity3D ? 'icon-suoxiao1' : 'icon-kuoda', " ")
|
|
|
})
|
|
|
}), (userInfo === null || userInfo === void 0 ? void 0 : userInfo.user_id) && /*#__PURE__*/(0,jsx_runtime.jsx)(unity3d_panel, {
|
|
|
userInfo: userInfo,
|
|
|
taskData: taskData,
|
|
|
unity_3d_routes: unity_3d_routes,
|
|
|
onGetUnity3dMessage: onGetUnity3dMessage,
|
|
|
onEvaluateCallback: onEvaluateCallback
|
|
|
})]
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)("ul", {
|
|
|
className: "tab-nav ".concat(tab_fixed ? 'tab-fixed' : ''),
|
|
|
children: tabs.map(function (item) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
onClick: onSetActiveIndex,
|
|
|
id: item.index,
|
|
|
className: activeIndex === item.index ? 'active' : '',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
children: [item.title, item.index === 3 && discusses_count ? /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: discusses_count
|
|
|
}) : null]
|
|
|
})
|
|
|
}, item.title);
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
className: activeIndex === 0 ? "tab-panel-body ".concat(unity_3d_routes && with_code_file ? 'scroll-margin-top' : '') : 'hide',
|
|
|
value: challenge.task_pass
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: activeIndex === 1 ? 'tab-panel-body' : 'hide',
|
|
|
children: propaedeutics ? /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
value: propaedeutics
|
|
|
}) : null
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: activeIndex === 2 ? 'tab-panel-body' : 'hide',
|
|
|
style: {
|
|
|
padding: '0 0 20px 0'
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(answer_panel, objectSpread2_default()({}, answerPanelOption))
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: activeIndex === 3 ? 'tab-panel-body' : 'hide',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(discuss/* default */.Z, {
|
|
|
activeIndex: activeIndex,
|
|
|
userInfo: userInfo,
|
|
|
shixunIdentifier: shixun.identifier,
|
|
|
identity: user.identity,
|
|
|
user: user,
|
|
|
allowDisableDiscuss: allowDisableDiscuss,
|
|
|
taskData: taskData,
|
|
|
chatgpt: chatgpt,
|
|
|
to_user_id: to_user_id,
|
|
|
challengeId: challenge.id
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: activeIndex === 4 ? 'tab-panel-body' : 'hide',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(ranking, {
|
|
|
activeIndex: activeIndex,
|
|
|
taskId: taskId
|
|
|
})
|
|
|
}), searchParams.get("type") !== 'exercises' && !(shixun !== null && shixun !== void 0 && shixun.is_disable_discuss) && !game.homework_common_comment_open && /*#__PURE__*/(0,jsx_runtime.jsx)(discuss_input_editor, {
|
|
|
user: user,
|
|
|
userInfo: userInfo,
|
|
|
user_praise: user_praise,
|
|
|
praise_count: praise_count,
|
|
|
praisePlus: onPlusOrCancelPraise,
|
|
|
onCreateDiscuss: onCreateDiscuss
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(components_modal/* default */.Z, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)(drawer/* default */.Z, {
|
|
|
className: "task-drawer",
|
|
|
width: 420,
|
|
|
title: null,
|
|
|
placement: "left",
|
|
|
closable: false,
|
|
|
open: showTaskList,
|
|
|
onClose: onHideTaskList,
|
|
|
getContainer: function getContainer() {
|
|
|
return document.getElementById('task-left-panel');
|
|
|
},
|
|
|
children: [searchParams.get("subject_id") && /*#__PURE__*/(0,jsx_runtime.jsx)(task_path_list, objectSpread2_default()(objectSpread2_default()({
|
|
|
taskList: toConsumableArray_default()(taskList),
|
|
|
challenge: challenge,
|
|
|
shixun: shixun
|
|
|
}, (0,util/* getJsonFromUrl */.oP)()), {}, {
|
|
|
identity: user.identity,
|
|
|
onSaveTaskStar: onSaveTaskStar
|
|
|
})), !searchParams.get("subject_id") && /*#__PURE__*/(0,jsx_runtime.jsx)(task_list, {
|
|
|
taskList: toConsumableArray_default()(taskList),
|
|
|
challenge: challenge,
|
|
|
shixun: shixun,
|
|
|
identity: user.identity,
|
|
|
onSaveTaskStar: onSaveTaskStar
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
title: "\u63D0\u793A",
|
|
|
open: showTip,
|
|
|
onOk: onViewAnswer,
|
|
|
onCancel: onHideTip,
|
|
|
confirmLoading: confirmLoading,
|
|
|
className: "answer-tip",
|
|
|
children: [is_teacher ? /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u5DF2\u7ECF\u8FC7\u804C\u4E1A\u8BA4\u8BC1\u7684\u6559\u5E08\u53EF\u4EE5\u514D\u91D1\u5E01\u67E5\u770B\u7B54\u6848\u54DF~"
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u5148\u67E5\u770B\u53C2\u8003\u7B54\u6848\uFF0C\u518D\u901A\u8FC7\u8BC4\u6D4B\u7684\u5B66\u751F\uFF0C\u5B9E\u8BAD\u4F5C\u4E1A\u6709\u53EF\u80FD\u662F\u96F6\u5206\u54E6~"
|
|
|
}), isMultiLevel ? /*#__PURE__*/(0,jsx_runtime.jsx)(unlock_answer_list, {
|
|
|
selected_index: selected_index,
|
|
|
selected_unlocked_answer_id: selected_unlocked_answer_id,
|
|
|
onSelect: onSelect,
|
|
|
data: data
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u5C06\u6263\u9664".concat(answerScore, "\u70B9\u91D1\u5E01\uFF0C\u662F\u5426\u786E\u8BA4\u67E5\u770B\u7B54\u6848")
|
|
|
}), is_teacher ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/account/certification",
|
|
|
"class": "to-certification-link",
|
|
|
target: "_blank",
|
|
|
children: "\u7ACB\u5373\u8BA4\u8BC1"
|
|
|
}) : null]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(image_preview/* default */.Z, {})]
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/button/style/index.js + 1 modules
|
|
|
var button_style = __webpack_require__(29913);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/button/index.js
|
|
|
var es_button = __webpack_require__(71577);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/statistic/style/index.js + 1 modules
|
|
|
var statistic_style = __webpack_require__(14558);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/statistic/index.js + 4 modules
|
|
|
var statistic = __webpack_require__(74763);
|
|
|
// EXTERNAL MODULE: ./src/components/useInterval.tsx
|
|
|
var useInterval = __webpack_require__(61891);
|
|
|
;// CONCATENATED MODULE: ./src/components/timer-panel/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function padLeft(s) {
|
|
|
return s.toString().padStart(2, '0');
|
|
|
}
|
|
|
function getTimer(sec) {
|
|
|
var minuts = Math.floor(sec / 60);
|
|
|
var second = sec % 60;
|
|
|
var hour = Math.floor(minuts / 60);
|
|
|
return "".concat(padLeft(hour), ":").concat(padLeft(minuts - hour * 60), ":").concat(padLeft(second));
|
|
|
}
|
|
|
/* harmony default export */ var timer_panel = (function (_ref) {
|
|
|
var defaultTime = _ref.defaultTime,
|
|
|
status = _ref.status,
|
|
|
onUpdateCostTime = _ref.onUpdateCostTime,
|
|
|
lastedGetTaskInfoTime = _ref.lastedGetTaskInfoTime,
|
|
|
_ref$retentionTime = _ref.retentionTime,
|
|
|
retentionTime = _ref$retentionTime === void 0 ? '' : _ref$retentionTime,
|
|
|
_ref$title = _ref.title,
|
|
|
title = _ref$title === void 0 ? '' : _ref$title;
|
|
|
var _useState = (0,react.useState)(defaultTime || 0),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
costTime = _useState2[0],
|
|
|
setCostTime = _useState2[1];
|
|
|
var lastedTime = (0,react.useRef)();
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (lastedGetTaskInfoTime) {
|
|
|
setCostTime(defaultTime);
|
|
|
lastedTime.current = defaultTime;
|
|
|
}
|
|
|
}, [defaultTime, lastedGetTaskInfoTime]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (lastedGetTaskInfoTime) {
|
|
|
var unSub = mediator/* default.subscribe */.Z.subscribe('update-cost-time', function () {
|
|
|
if (status !== 2) {
|
|
|
onUpdateCostTime(lastedTime.current);
|
|
|
}
|
|
|
});
|
|
|
return unSub;
|
|
|
}
|
|
|
}, [lastedGetTaskInfoTime]);
|
|
|
(0,useInterval/* default */.Z)(function () {
|
|
|
if (retentionTime) {
|
|
|
localStorage.setItem(retentionTime, String(costTime + 1));
|
|
|
}
|
|
|
setCostTime(costTime + 1);
|
|
|
lastedTime.current = lastedTime.current + 1;
|
|
|
}, status === 2 ? null : 1000);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
children: [title ? "".concat(title, "\uFF1A") : null, getTimer(costTime)]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/header/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/popconfirm/style/index.js + 1 modules
|
|
|
var popconfirm_style = __webpack_require__(33219);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/popconfirm/index.js + 1 modules
|
|
|
var popconfirm = __webpack_require__(65360);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/tooltip/style/index.js + 1 modules
|
|
|
var tooltip_style = __webpack_require__(38390);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/tooltip/index.js + 3 modules
|
|
|
var tooltip = __webpack_require__(84908);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/action-bar/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var action_barmodules = ({"action-bar-container":"action-bar-container___TDRpf","edit-status":"edit-status___wZI5m","action-bar":"action-bar___bbigU","iconfont":"iconfont___hoZln"});
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/icons/ExclamationCircleOutlined.js
|
|
|
var ExclamationCircleOutlined = __webpack_require__(87588);
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/code-repository/action-bar/notice.gif
|
|
|
var notice = __webpack_require__(60141);
|
|
|
// EXTERNAL MODULE: ./node_modules/react-copy-to-clipboard/lib/index.js
|
|
|
var lib = __webpack_require__(74855);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/action-bar/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function NoticeButton(_ref) {
|
|
|
var onShowNotice = _ref.onShowNotice,
|
|
|
_ref$className = _ref.className,
|
|
|
className = _ref$className === void 0 ? '' : _ref$className;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
title: "\u66F4\u65B0\u901A\u77E5",
|
|
|
onClick: onShowNotice,
|
|
|
className: className,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: notice,
|
|
|
alt: "notice"
|
|
|
})
|
|
|
});
|
|
|
}
|
|
|
/* harmony default export */ function action_bar(_ref2) {
|
|
|
var loading = _ref2.loading,
|
|
|
lastedUpdateTime = _ref2.lastedUpdateTime,
|
|
|
moveY = _ref2.moveY,
|
|
|
code_hidden = _ref2.code_hidden,
|
|
|
hide_code = _ref2.hide_code,
|
|
|
gameStatus = _ref2.gameStatus,
|
|
|
isEditPath = _ref2.isEditPath,
|
|
|
isNotice = _ref2.isNotice,
|
|
|
git_url = _ref2.git_url,
|
|
|
taskData = _ref2.taskData,
|
|
|
onUpdateCode = _ref2.onUpdateCode,
|
|
|
onResetCode = _ref2.onResetCode,
|
|
|
onResetGitCode = _ref2.onResetGitCode,
|
|
|
onShowCodeSetting = _ref2.onShowCodeSetting,
|
|
|
onResetPassedCode = _ref2.onResetPassedCode,
|
|
|
onShowDir = _ref2.onShowDir,
|
|
|
onResizeCodeArea = _ref2.onResizeCodeArea,
|
|
|
onShowNotice = _ref2.onShowNotice,
|
|
|
onRightFullHandler = _ref2.onRightFullHandler,
|
|
|
isResizeLarge = _ref2.isResizeLarge;
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var _useState = (0,react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
isRun = _useState2[0],
|
|
|
setIsRun = _useState2[1];
|
|
|
(0,react.useEffect)(function () {
|
|
|
var unRun = mediator/* default.subscribe */.Z.subscribe('runCodeFinish', function () {
|
|
|
setIsRun(false);
|
|
|
});
|
|
|
return function () {
|
|
|
unRun();
|
|
|
};
|
|
|
}, []);
|
|
|
var opneModal = function opneModal() {
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
title: '恢复初始代码',
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)(ExclamationCircleOutlined/* default */.Z, {}),
|
|
|
content: '你在本文件中修改的内容将丢失,是否确定重新加载初始代码?',
|
|
|
centered: true,
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
onOk: onResetCode
|
|
|
});
|
|
|
};
|
|
|
var opneModalGit = function opneModalGit() {
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
title: '重置代码仓库',
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)(ExclamationCircleOutlined/* default */.Z, {}),
|
|
|
content: '您的所有代码将被还原至初始状态,不影响通关状态与作业成绩。确认重置?',
|
|
|
centered: true,
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
onOk: onResetGitCode
|
|
|
});
|
|
|
};
|
|
|
var onStartRun = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
if (!isRun) {
|
|
|
_context.next = 2;
|
|
|
break;
|
|
|
}
|
|
|
return _context.abrupt("return");
|
|
|
case 2:
|
|
|
// mediator.publish('runCode', { type: 'preparation' });
|
|
|
onUpdateCode();
|
|
|
(0,service/* logOutput */.h$)(params.taskId);
|
|
|
setIsRun(true);
|
|
|
mediator/* default.publish */.Z.publish('show-case-result', true);
|
|
|
setTimeout(function () {
|
|
|
mediator/* default.publish */.Z.publish('runCode', {
|
|
|
type: 'start'
|
|
|
});
|
|
|
}, 100);
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function onStartRun() {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var onStopRun = /*#__PURE__*/function () {
|
|
|
var _ref4 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
if (isRun) {
|
|
|
_context2.next = 2;
|
|
|
break;
|
|
|
}
|
|
|
return _context2.abrupt("return");
|
|
|
case 2:
|
|
|
(0,service/* stopLogOutput */.Yv)(params.taskId);
|
|
|
setIsRun(false);
|
|
|
mediator/* default.publish */.Z.publish('runCode', {
|
|
|
type: 'stop'
|
|
|
});
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function onStopRun() {
|
|
|
return _ref4.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "".concat(action_barmodules["edit-status"], " ml15"),
|
|
|
children: loading ? '保存中...' : lastedUpdateTime === 0 ? '已保存' : '已修改'
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: action_barmodules["action-bar"],
|
|
|
children: [isNotice ? /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
open: true,
|
|
|
title: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: {
|
|
|
color: '#000'
|
|
|
},
|
|
|
children: "\u5173\u5361\u4EFB\u52A1\u7684\u4EE3\u7801\u6587\u4EF6\u6709\u66F4\u65B0\u5566\uFF5E"
|
|
|
}),
|
|
|
color: '#fff',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(NoticeButton, {
|
|
|
onShowNotice: onShowNotice
|
|
|
})
|
|
|
}) : null, hide_code !== 2 && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [code_hidden ? null : /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
title: "\u663E\u793A\u76EE\u5F55",
|
|
|
onClick: onShowDir,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-wenjian "
|
|
|
})
|
|
|
}), git_url ? /*#__PURE__*/(0,jsx_runtime.jsx)(lib.CopyToClipboard, {
|
|
|
text: git_url,
|
|
|
onCopy: function onCopy() {
|
|
|
return es_message/* default.success */.ZP.success('复制成功');
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
title: "\u590D\u5236\u7248\u672C\u5E93\u5730\u5740",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-fuzhi2"
|
|
|
})
|
|
|
})
|
|
|
}) : null, gameStatus === 2 && isEditPath ? /*#__PURE__*/(0,jsx_runtime.jsx)(popconfirm/* default */.Z, {
|
|
|
placement: "bottomRight",
|
|
|
title: "\u4F60\u5728\u672C\u5173\u4E2D\u4FEE\u6539\u7684\u5185\u5BB9\u5C06\u4E22\u5931\uFF0C\u662F\u5426\u786E\u5B9A\u91CD\u65B0\u52A0\u8F7D\u4E0A\u6B21\u901A\u8FC7\u7684\u4EE3\u7801?",
|
|
|
onConfirm: onResetPassedCode,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
title: "\u52A0\u8F7D\u4E0A\u6B21\u901A\u8FC7\u7684\u4EE3\u7801",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-fanhuishangcidaima font-20 "
|
|
|
})
|
|
|
})
|
|
|
}) : null, isEditPath ?
|
|
|
/*#__PURE__*/
|
|
|
// <Popconfirm
|
|
|
// placement="bottomRight"
|
|
|
// title=" 你在本文件中修改的内容将丢失,是否确定重新加载初始代码? "
|
|
|
// onConfirm={onResetCode}
|
|
|
// >
|
|
|
(0,jsx_runtime.jsx)("a", {
|
|
|
title: "\u6062\u590D\u521D\u59CB\u4EE3\u7801",
|
|
|
onClick: opneModal,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-zhongzhi font-20 "
|
|
|
})
|
|
|
}) :
|
|
|
// </Popconfirm>
|
|
|
null, isEditPath && /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
title: "\u91CD\u7F6E\u4EE3\u7801\u4ED3\u5E93",
|
|
|
onClick: opneModalGit,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-zhongzhidaimacangku font12 "
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onShowCodeSetting,
|
|
|
title: "\u8BBE\u7F6E",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-shezhi"
|
|
|
})
|
|
|
})]
|
|
|
}), !(searchParams.get("isFullScreen") === 'true') && /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onRightFullHandler,
|
|
|
title: isResizeLarge ? '退出全屏' : '全屏',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: isResizeLarge ? 'iconfont icon-shousuo' : 'iconfont icon-zhankai'
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
}
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/row/style/index.js
|
|
|
var row_style = __webpack_require__(13062);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/row/index.js
|
|
|
var row = __webpack_require__(71230);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/col/style/index.js
|
|
|
var col_style = __webpack_require__(89032);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/col/index.js
|
|
|
var col = __webpack_require__(15746);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/action-bar/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js
|
|
|
var esm_objectSpread2 = __webpack_require__(1413);
|
|
|
;// CONCATENATED MODULE: ./node_modules/@ant-design/icons-svg/es/asn/CloudServerOutlined.js
|
|
|
// This icon file is generated automatically.
|
|
|
var CloudServerOutlined = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M704 446H320c-4.4 0-8 3.6-8 8v402c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8V454c0-4.4-3.6-8-8-8zm-328 64h272v117H376V510zm272 290H376V683h272v117z" } }, { "tag": "path", "attrs": { "d": "M424 748a32 32 0 1064 0 32 32 0 10-64 0zm0-178a32 32 0 1064 0 32 32 0 10-64 0z" } }, { "tag": "path", "attrs": { "d": "M811.4 368.9C765.6 248 648.9 162 512.2 162S258.8 247.9 213 368.8C126.9 391.5 63.5 470.2 64 563.6 64.6 668 145.6 752.9 247.6 762c4.7.4 8.7-3.3 8.7-8v-60.4c0-4-3-7.4-7-7.9-27-3.4-52.5-15.2-72.1-34.5-24-23.5-37.2-55.1-37.2-88.6 0-28 9.1-54.4 26.2-76.4 16.7-21.4 40.2-36.9 66.1-43.7l37.9-10 13.9-36.7c8.6-22.8 20.6-44.2 35.7-63.5 14.9-19.2 32.6-36 52.4-50 41.1-28.9 89.5-44.2 140-44.2s98.9 15.3 140 44.3c19.9 14 37.5 30.8 52.4 50 15.1 19.3 27.1 40.7 35.7 63.5l13.8 36.6 37.8 10c54.2 14.4 92.1 63.7 92.1 120 0 33.6-13.2 65.1-37.2 88.6-19.5 19.2-44.9 31.1-71.9 34.5-4 .5-6.9 3.9-6.9 7.9V754c0 4.7 4.1 8.4 8.8 8 101.7-9.2 182.5-94 183.2-198.2.6-93.4-62.7-172.1-148.6-194.9z" } }] }, "name": "cloud-server", "theme": "outlined" };
|
|
|
/* harmony default export */ var asn_CloudServerOutlined = (CloudServerOutlined);
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/components/AntdIcon.js + 6 modules
|
|
|
var AntdIcon = __webpack_require__(7918);
|
|
|
;// CONCATENATED MODULE: ./node_modules/@ant-design/icons/es/icons/CloudServerOutlined.js
|
|
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
|
|
var CloudServerOutlined_CloudServerOutlined = function CloudServerOutlined(props, ref) {
|
|
|
return /*#__PURE__*/react.createElement(AntdIcon/* default */.Z, (0,esm_objectSpread2/* default */.Z)((0,esm_objectSpread2/* default */.Z)({}, props), {}, {
|
|
|
ref: ref,
|
|
|
icon: asn_CloudServerOutlined
|
|
|
}));
|
|
|
};
|
|
|
CloudServerOutlined_CloudServerOutlined.displayName = 'CloudServerOutlined';
|
|
|
/* harmony default export */ var icons_CloudServerOutlined = (/*#__PURE__*/react.forwardRef(CloudServerOutlined_CloudServerOutlined));
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/ssh-action-bar/timer.png
|
|
|
var timer_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADJElEQVRYR72Xy4vOYRTHP98FGzsRw8al2FGMBWUyRJmZlFxKsnKZnT+ABRbsWRmXlaKMIrks5JIpyhiFlZExG7fIig3p6EznmX7vO7/L+/6m5tRb7++5nOf7nNvzPaINMbNNwE5gPTA/fq7he/yeAzclPWlVraoWmlkH0A/sA1ZUrY/5UeAaMCDpS9meUgBmdhI4DCwKJX+AB8Az4BvwNcYXAguADcBWYHaMfwYuSnI9uVIIwMyeAhtj1whwAbgh6WfZjcxsLrAbOAKsjbVDkrry9uUCMDP36bzY0C/JD58iZrbHByUNFsw7iIGY+yHJ46ZBpgAws4/AkljVI+l+gXIPyMcx110UeGa2HbgX68YlLc3qawBgZteBdKuq+GgJQDrMzCz+D0ram8YnD4mAOxETqyW9qfB1uwBWAa9D56kUmBMAItVeRrQX+jwLKGpCpQua9qSY8Ozo9BRNADxN/PYjkjrLbp4xaVsWyOzzi3p2TFghAfgALPOCUxTxzaDqWCCsnawwJmm5zKwHuAv8BRZL8hSslGkA8FT8BMwCeh3A+Si1jyRtqTw5FtQFEFZ4CGyeKNVm9gJYBxyXdGaGABwDTgPDDiAVnkOSLs8QgIPAJWDcAfwC5gB9kjwWWpImF0zmdSubzawXuAP8rg0gfJlSyj/3S7paB0AtFwQAL9tevpNsk+TPdamYWYMLagVhprA0g+iSNFSGwMwagvAscNRrgaS+KvR58/EsJ0v8c8omabhIl5m5/z0OznkMpJLqbKejinCUKM1a4j2wS9Lb5vVBWJymOWvqTqX4XfC9lktxC5a4JckJbIOYWSrFo5JW1n6MWrBEbmqaWe5j5My3ree4ZqzkP8eRUulJ9s9CKlbn4NCfpWaNhCSTUpNMWFJlz9AOmAwla2DIeaQ0y4grqVkVCDPLUrEpzLiIlmeZce3MyES845zCiH2wrDGZZMhO1aIx8b6vlLCYmRMOT79sY9LAhLNWq6Leza2ZsyYvs04o8lozJzTeTTnbcanfmmUCMzWnB4I3Vrnd58eAK9NuTnOqmPPHHcCagvb8FXBbUuqEKsH+B6mvmv9ZL+YKAAAAAElFTkSuQmCC";
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/ssh-action-bar/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var ssh_action_bar = (function (_ref) {
|
|
|
var isNotice = _ref.isNotice,
|
|
|
moveY = _ref.moveY,
|
|
|
isActive = _ref.isActive,
|
|
|
tabIndex = _ref.tabIndex,
|
|
|
webssh = _ref.webssh,
|
|
|
socketKeys = _ref.socketKeys,
|
|
|
onCloseSocket = _ref.onCloseSocket,
|
|
|
onReCreateSocket = _ref.onReCreateSocket,
|
|
|
onShowNotice = _ref.onShowNotice,
|
|
|
sshConfigData = _ref.sshConfigData,
|
|
|
onResizeCodeArea = _ref.onResizeCodeArea,
|
|
|
shixun = _ref.shixun,
|
|
|
onRightFullHandler = _ref.onRightFullHandler,
|
|
|
isResizeLarge = _ref.isResizeLarge;
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "action-bar",
|
|
|
children: [isNotice ? /*#__PURE__*/(0,jsx_runtime.jsx)(NoticeButton, {
|
|
|
onShowNotice: onShowNotice
|
|
|
}) : null, webssh === 3 ? /*#__PURE__*/(0,jsx_runtime.jsx)(SSHTimer, {
|
|
|
sshConfigData: sshConfigData,
|
|
|
tabIndex: tabIndex,
|
|
|
isActive: isActive,
|
|
|
socketKeys: socketKeys,
|
|
|
onReCreateSocket: onReCreateSocket,
|
|
|
onCloseSocket: onCloseSocket,
|
|
|
shixun: shixun
|
|
|
}) : !!(sshConfigData !== null && sshConfigData !== void 0 && sshConfigData.remaining_time) ? /*#__PURE__*/(0,jsx_runtime.jsx)(SSHTimer, {
|
|
|
sshConfigData: sshConfigData,
|
|
|
tabIndex: tabIndex,
|
|
|
isActive: isActive,
|
|
|
socketKeys: socketKeys,
|
|
|
onReCreateSocket: onReCreateSocket,
|
|
|
onCloseSocket: onCloseSocket,
|
|
|
shixun: shixun
|
|
|
}) : null, !(searchParams.get("isFullScreen") === 'true') && /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onRightFullHandler,
|
|
|
title: isResizeLarge ? '退出全屏' : '全屏',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: isResizeLarge ? 'iconfont icon-shousuo' : 'iconfont icon-zhankai'
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
|
|
|
//1.考虑到时间差的问题,前端20分钟,中间层配置webssh的存活时间为21分钟。
|
|
|
// 2.websocket断开时的逻辑
|
|
|
// (1)重置环境需要调用删除环境。
|
|
|
// (2)倒计时为0不需要调用删除环境。
|
|
|
// (3)在运行过程中,websocket断开,需要重连,以前的逻辑是:先删除环境,再重新获取连接,等于是重置了环境,可能是pod出错了可能连不上,重置一次,可以保证连接上。
|
|
|
// 但是可能是因为网络断开了连接,直接再连是可以连上的,无需重置环境。
|
|
|
// 这点可以保留以前的逻辑,但可以优化为:尝试连接一次,如果不成功,再重置一次。
|
|
|
|
|
|
var FiveMinute = 300;
|
|
|
function SSHTimer(_ref2) {
|
|
|
var isActive = _ref2.isActive,
|
|
|
socketKeys = _ref2.socketKeys,
|
|
|
webssh = _ref2.webssh,
|
|
|
onCloseSocket = _ref2.onCloseSocket,
|
|
|
onReCreateSocket = _ref2.onReCreateSocket,
|
|
|
sshConfigData = _ref2.sshConfigData,
|
|
|
tabIndex = _ref2.tabIndex,
|
|
|
shixun = _ref2.shixun;
|
|
|
var defaultTime = (sshConfigData === null || sshConfigData === void 0 ? void 0 : sshConfigData.remaining_time) / 1000;
|
|
|
var _useState = (0,react.useState)(webssh === 3 ? 1800 : defaultTime),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
time = _useState2[0],
|
|
|
setTime = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)(false),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
isPlusTime = _useState4[0],
|
|
|
setIsPlusTime = _useState4[1];
|
|
|
var identifier = shixun.identifier;
|
|
|
(0,useInterval/* default */.Z)(function () {
|
|
|
setTime(time - 1);
|
|
|
}, isActive && time > 0 ? 1000 : null);
|
|
|
|
|
|
//如果有操作,则把时间重置为默认时间,中间层在有操作时会自动延长时间
|
|
|
(0,react.useEffect)(function () {
|
|
|
var unSub = mediator/* default.subscribe */.Z.subscribe('on-operating-ssh', function () {
|
|
|
if ((shixun === null || shixun === void 0 ? void 0 : shixun.webssh) != 3) setTime(defaultTime);
|
|
|
});
|
|
|
var unSub2 = mediator/* default.subscribe */.Z.subscribe('update-windows-time', function (data) {
|
|
|
setTime(parseInt(data.remaining_time / 1000));
|
|
|
});
|
|
|
var unSubReCreateSocket = mediator/* default.subscribe */.Z.subscribe('on-recreate-socket', function () {
|
|
|
onReCreateSocket();
|
|
|
});
|
|
|
return function () {
|
|
|
unSub2();
|
|
|
unSub();
|
|
|
unSubReCreateSocket();
|
|
|
};
|
|
|
}, []);
|
|
|
function toShixun() {
|
|
|
_umi_production_exports.history.replace("/shixuns/".concat(identifier, "/challenges"));
|
|
|
}
|
|
|
function opneModal() {
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
title: '命令行重连提醒',
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)(ExclamationCircleOutlined/* default */.Z, {}),
|
|
|
content: '由于长时间没有使用,资源已经被回收。如有需要,可以重连命令行。',
|
|
|
centered: true,
|
|
|
okText: '重连',
|
|
|
cancelText: '退出',
|
|
|
onOk: onReCreate,
|
|
|
onCancel: toShixun
|
|
|
});
|
|
|
}
|
|
|
var opneResetModal = function opneResetModal() {
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
title: '重置命令行',
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)(ExclamationCircleOutlined/* default */.Z, {}),
|
|
|
content: '实验环境将恢复到初始状态,是否确认重置实验环境?',
|
|
|
centered: true,
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
onOk: onReset
|
|
|
});
|
|
|
};
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (time === 0) {
|
|
|
if (shixun.webssh != 3) {
|
|
|
opneModal();
|
|
|
}
|
|
|
socketKeys.forEach(function (key) {
|
|
|
mediator/* default.publish */.Z.publish('close-socket', key);
|
|
|
});
|
|
|
}
|
|
|
if (time === FiveMinute && shixun.webssh != 3) {
|
|
|
setIsPlusTime(true);
|
|
|
}
|
|
|
}, [time]);
|
|
|
function onCancel() {
|
|
|
setIsPlusTime(false);
|
|
|
}
|
|
|
function onShowTip() {
|
|
|
if (shixun.webssh != 3) setIsPlusTime(true);
|
|
|
}
|
|
|
function onAddTime() {
|
|
|
setTime(defaultTime);
|
|
|
mediator/* default.publish */.Z.publish('ssh-add-connect-time');
|
|
|
setIsPlusTime(false);
|
|
|
}
|
|
|
function onReCreate() {
|
|
|
setTime(defaultTime);
|
|
|
//先尝试重新连接socket
|
|
|
//todo 如果资源pod不存在了,则重新申请资源
|
|
|
mediator/* default.publish */.Z.publish('create-socket', tabIndex);
|
|
|
}
|
|
|
function onReset() {
|
|
|
return _onReset.apply(this, arguments);
|
|
|
}
|
|
|
function _onReset() {
|
|
|
_onReset = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
socketKeys.forEach(function (key) {
|
|
|
mediator/* default.publish */.Z.publish('close-socket', key);
|
|
|
});
|
|
|
_context.next = 3;
|
|
|
return onCloseSocket();
|
|
|
case 3:
|
|
|
setTime(defaultTime);
|
|
|
onReCreateSocket();
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _onReset.apply(this, arguments);
|
|
|
}
|
|
|
var goPreviewService = function goPreviewService() {
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
title: '服务预览',
|
|
|
content: '“服务预览”会访问命名行容器的8081端口,如果端口未启动会导致预览失败',
|
|
|
okText: '继续前往',
|
|
|
cancelText: '取消',
|
|
|
onOk: function onOk() {
|
|
|
(0,util/* openNewWindow */.xg)(sshConfigData === null || sshConfigData === void 0 ? void 0 : sshConfigData.mapping_service_url);
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
var getSSH = function getSSH() {
|
|
|
modal/* default.info */.Z.info({
|
|
|
title: 'SSH直连',
|
|
|
width: 600,
|
|
|
centered: true,
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "50px",
|
|
|
children: "\u8D26\u53F7"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
children: sshConfigData === null || sshConfigData === void 0 ? void 0 : sshConfigData.username
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "50px",
|
|
|
children: "\u5730\u5740"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
children: sshConfigData === null || sshConfigData === void 0 ? void 0 : sshConfigData.ssh_address
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "50px",
|
|
|
children: "\u7AEF\u53E3"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
children: sshConfigData === null || sshConfigData === void 0 ? void 0 : sshConfigData.port
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "50px",
|
|
|
children: "\u5BC6\u7801"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
children: sshConfigData === null || sshConfigData === void 0 ? void 0 : sshConfigData.password
|
|
|
})]
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [time > 0 && time <= FiveMinute && shixun.webssh != 3 ? /*#__PURE__*/(0,jsx_runtime.jsx)(Timer, {
|
|
|
title: "\u8D44\u6E90\u56DE\u6536\u5012\u8BA1\u65F6\uFF0C\u70B9\u51FB\u53EF\u5EF6\u957F\uFF08\u6216\u8005\u64CD\u4F5C\u547D\u4EE4\u884C\u81EA\u52A8\u5EF6\u957F\uFF09",
|
|
|
className: "c-red",
|
|
|
time: time,
|
|
|
style: {
|
|
|
display: 'inline-block',
|
|
|
margin: '0 10px 1px 0'
|
|
|
},
|
|
|
callback: onShowTip
|
|
|
}) : null, (sshConfigData === null || sshConfigData === void 0 ? void 0 : sshConfigData.mapping_service_url) && /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
target: "_blank",
|
|
|
onClick: function onClick(e) {
|
|
|
e.preventDefault();
|
|
|
goPreviewService();
|
|
|
},
|
|
|
href: sshConfigData === null || sshConfigData === void 0 ? void 0 : sshConfigData.mapping_service_url,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(icons_CloudServerOutlined, {
|
|
|
className: "font14 c-blue"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "c-blue",
|
|
|
children: " \u670D\u52A1\u9884\u89C8"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
onClick: opneResetModal,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-zhongzhi2 font-16 "
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: " \u91CD\u7F6E\u547D\u4EE4\u884C"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: getSSH,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-congshulianjie font-16 "
|
|
|
}), "SSH\u76F4\u8FDE"]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(components_modal/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
title: [/*#__PURE__*/(0,jsx_runtime.jsx)(ExclamationCircleOutlined/* default */.Z, {
|
|
|
className: "modalIconYellow"
|
|
|
}), '命令行连接时长提醒']
|
|
|
// title="命令行连接时长提醒"
|
|
|
,
|
|
|
wrapClassName: "customModalStyle",
|
|
|
closable: false,
|
|
|
open: isPlusTime && time > 0,
|
|
|
onOk: onAddTime,
|
|
|
onCancel: onCancel,
|
|
|
okText: "\u7ACB\u5373\u5EF6\u957F",
|
|
|
cancelText: "\u4E0D\u9700\u8981",
|
|
|
children: ["\u547D\u4EE4\u884C\u5C06\u4E8E ", Math.round(time / 60), " \u5206\u949F\u540E\u4E2D\u65AD\uFF0C\u9700\u8981\u5EF6\u957F\u4F7F\u7528\u65F6\u95F4\u5417\uFF1F"]
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
}
|
|
|
function Timer(_ref3) {
|
|
|
var title = _ref3.title,
|
|
|
time = _ref3.time,
|
|
|
_ref3$className = _ref3.className,
|
|
|
className = _ref3$className === void 0 ? '' : _ref3$className,
|
|
|
callback = _ref3.callback,
|
|
|
_ref3$desc = _ref3.desc,
|
|
|
desc = _ref3$desc === void 0 ? '' : _ref3$desc,
|
|
|
_ref3$style = _ref3.style,
|
|
|
style = _ref3$style === void 0 ? {} : _ref3$style;
|
|
|
function onClick() {
|
|
|
callback ? callback() : null;
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
onClick: onClick,
|
|
|
title: title,
|
|
|
className: className,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: timer_namespaceObject,
|
|
|
alt: "time",
|
|
|
width: 16,
|
|
|
style: style
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
children: [desc ? "".concat(desc, "\uFF1A") : '', getTimer(time)]
|
|
|
})]
|
|
|
});
|
|
|
}
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/input/style/index.js + 1 modules
|
|
|
var input_style = __webpack_require__(69463);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/input/index.js + 5 modules
|
|
|
var input = __webpack_require__(75008);
|
|
|
// EXTERNAL MODULE: ./src/components/tpi-code-setting/index.less
|
|
|
var tpi_code_setting = __webpack_require__(12867);
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/icons/PoweroffOutlined.js + 1 modules
|
|
|
var PoweroffOutlined = __webpack_require__(81088);
|
|
|
// EXTERNAL MODULE: ./src/service/task.ts
|
|
|
var task = __webpack_require__(48632);
|
|
|
// EXTERNAL MODULE: ./src/components/MultiUpload/index.tsx + 1 modules
|
|
|
var MultiUpload = __webpack_require__(31590);
|
|
|
// EXTERNAL MODULE: ./src/utils/env.ts + 1 modules
|
|
|
var env = __webpack_require__(59758);
|
|
|
;// CONCATENATED MODULE: ./src/components/vnc-setting/record.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var ScreenRecord = /*#__PURE__*/(0,react.forwardRef)(function (_ref, ref) {
|
|
|
var time = _ref.time;
|
|
|
console.log("ScreenRecord:", ref);
|
|
|
var previewRef = (0,react.useRef)();
|
|
|
var _useState = (0,react.useState)(),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
recorder = _useState2[0],
|
|
|
setRecorder = _useState2[1];
|
|
|
var recorderRef = (0,react.useRef)();
|
|
|
var recordingTimeMS = 2000;
|
|
|
var recordingArr = [];
|
|
|
(0,react.useImperativeHandle)(ref, function () {
|
|
|
return {
|
|
|
startScreenRecord: startScreenRecord,
|
|
|
downloadFile: downloadFile
|
|
|
};
|
|
|
});
|
|
|
function startRecording(_x, _x2) {
|
|
|
return _startRecording.apply(this, arguments);
|
|
|
}
|
|
|
function _startRecording() {
|
|
|
_startRecording = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(stream, lengthInMS) {
|
|
|
var data, re;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
data = [];
|
|
|
_context.next = 3;
|
|
|
return new MediaRecorder(stream);
|
|
|
case 3:
|
|
|
re = _context.sent;
|
|
|
re.ondataavailable = function (event) {
|
|
|
data.push(event.data);
|
|
|
};
|
|
|
re.start();
|
|
|
recorderRef.current = re;
|
|
|
window.recorderRefs = re;
|
|
|
re.addEventListener('stop', function (event) {
|
|
|
var videoUrl = URL.createObjectURL(data[0], {
|
|
|
type: 'video/mp4'
|
|
|
});
|
|
|
(0,util/* downLoadLink */.Nd)("xxx.webm", videoUrl);
|
|
|
});
|
|
|
case 9:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _startRecording.apply(this, arguments);
|
|
|
}
|
|
|
function downloadFile() {
|
|
|
if (!window.recorderRefs) {
|
|
|
es_message/* default.warn */.ZP.warn("您还没有开启视频录制,请先去录制视频吧!");
|
|
|
return;
|
|
|
}
|
|
|
var tracks = previewRef.current.srcObject.getTracks();
|
|
|
tracks.forEach(function (track) {
|
|
|
track.stop();
|
|
|
});
|
|
|
window.recorderRefs.addEventListener('dataavailable', function (event) {
|
|
|
var videoUrl = URL.createObjectURL(event.data, {
|
|
|
type: 'video/mp4'
|
|
|
});
|
|
|
(0,util/* downLoadLink */.Nd)("屏幕录制视频.webm", videoUrl);
|
|
|
});
|
|
|
}
|
|
|
;
|
|
|
function startScreenRecord() {
|
|
|
navigator.mediaDevices.getDisplayMedia({
|
|
|
video: true,
|
|
|
audio: true
|
|
|
}).then(function (stream) {
|
|
|
previewRef.current.srcObject = stream;
|
|
|
// downloadButton.href = stream;
|
|
|
recordingArr.push(stream);
|
|
|
previewRef.current.captureStream = previewRef.current.captureStream || previewRef.current.mozCaptureStream;
|
|
|
return new Promise(function (resolve) {
|
|
|
return previewRef.current.onplaying = resolve;
|
|
|
});
|
|
|
}).then(function () {
|
|
|
return startRecording(previewRef.current.captureStream(), recordingTimeMS);
|
|
|
}).then(function (recordedChunks) {})["catch"](function (error) {
|
|
|
if (error.name === "NotFoundError") {
|
|
|
es_message/* default.warn */.ZP.warn("找不到摄像头或麦克风。无法录制.");
|
|
|
} else {
|
|
|
es_message/* default.warn */.ZP.warn(error.name);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
|
|
|
// stop(previewRef.current.srcObject);
|
|
|
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
style: {
|
|
|
position: "absolute",
|
|
|
top: "0",
|
|
|
zIndex: -1
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("video", {
|
|
|
onPause: function onPause() {},
|
|
|
width: "60",
|
|
|
height: "120",
|
|
|
autoPlay: true,
|
|
|
muted: true,
|
|
|
ref: previewRef
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
/* harmony default export */ var record = (ScreenRecord);
|
|
|
;// CONCATENATED MODULE: ./src/components/vnc-setting/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var difficultyDesc = {
|
|
|
1: '简单',
|
|
|
2: '中等',
|
|
|
3: '困难'
|
|
|
};
|
|
|
/* harmony default export */ var vnc_setting = (function (_ref) {
|
|
|
var className = _ref.className,
|
|
|
mirror_description = _ref.mirror_description,
|
|
|
git_url = _ref.git_url,
|
|
|
difficulty = _ref.difficulty,
|
|
|
task_pass = _ref.task_pass,
|
|
|
test_set_permission = _ref.test_set_permission,
|
|
|
onVncAction = _ref.onVncAction,
|
|
|
shixun = _ref.shixun,
|
|
|
window_vnc_url = _ref.window_vnc_url,
|
|
|
linux_vnc = _ref.linux_vnc,
|
|
|
vnc_url = _ref.vnc_url,
|
|
|
position = _ref.position,
|
|
|
unity_3d_routes = _ref.unity_3d_routes;
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
var _useState = (0,react.useState)("8082"),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
portValue = _useState2[0],
|
|
|
setPortValue = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)(false),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
isLoading = _useState4[0],
|
|
|
setIsLoading = _useState4[1];
|
|
|
var recordRef = (0,react.useRef)();
|
|
|
var uploadWorkspace = window_vnc_url ? "C:\/Windows\/AppReadiness\/userfiles" : "/data/workspace/userfiles";
|
|
|
var downloadWorkspace = window_vnc_url ? "C:\/Windows\/AppReadiness\/downloadfiles" : "/data/workspace/downloadfiles";
|
|
|
var restartVac = function restartVac() {
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
title: '重启云主机',
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)(ExclamationCircleOutlined/* default */.Z, {}),
|
|
|
content: '您确定要重启云主机吗?',
|
|
|
centered: true,
|
|
|
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 (0,task/* rebootEsc */.Jd)({
|
|
|
identifier: params.taskId
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
es_message/* default.info */.ZP.info("重启成功");
|
|
|
}
|
|
|
return _context.abrupt("return", '');
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
function onOk() {
|
|
|
return _onOk.apply(this, arguments);
|
|
|
}
|
|
|
return onOk;
|
|
|
}()
|
|
|
});
|
|
|
};
|
|
|
var uploadFile = function uploadFile() {
|
|
|
modal/* default.info */.Z.info({
|
|
|
title: "文件上传",
|
|
|
icon: null,
|
|
|
okText: "关闭",
|
|
|
width: 600,
|
|
|
centered: true,
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "pt10",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(MultiUpload/* default */.Z, {
|
|
|
isDragger: true,
|
|
|
maxSize: 20,
|
|
|
additionalText: "\u9ED8\u8BA4\u5B58\u653E\u76EE\u5F55\u8DEF\u5F84\u4E3A\"".concat(uploadWorkspace, "\""),
|
|
|
action: "".concat(env/* default.API_SERVER */.Z.API_SERVER, "/api/tasks/").concat(params.taskId, "/upload_file?debug=admin"),
|
|
|
onChange: function onChange(fileList) {
|
|
|
if (fileList.every(function (item) {
|
|
|
var _item$response;
|
|
|
return ((_item$response = item.response) === null || _item$response === void 0 ? void 0 : _item$response.status) === 0;
|
|
|
})) {
|
|
|
modal/* default.destroyAll */.Z.destroyAll();
|
|
|
es_message/* default.info */.ZP.info("文件上传成功");
|
|
|
}
|
|
|
console.log("fileList:", fileList);
|
|
|
}
|
|
|
})
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
var downloadFile = function downloadFile() {
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
title: "下载代码",
|
|
|
centered: true,
|
|
|
width: 600,
|
|
|
content: "\u4EE3\u7801\u4E0B\u8F7D\u529F\u80FD\uFF1A\u5C06\u201C".concat(downloadWorkspace, "\u201D\u76EE\u5F55\u8FDB\u884C\u6253\u5305\u5E76\u4E0B\u8F7D"),
|
|
|
onOk: function () {
|
|
|
var _onOk2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
_context2.next = 2;
|
|
|
return (0,utils_fetch/* default */.ZP)("/api/tasks/".concat(params.taskId, "/download_file?debug=admin"), {
|
|
|
method: 'post',
|
|
|
body: {
|
|
|
autoDownload: true
|
|
|
},
|
|
|
headers: {
|
|
|
responseType: 'arraybuffer',
|
|
|
Accept: 'application/vnd.ms-excel;charset=utf-8'
|
|
|
}
|
|
|
});
|
|
|
case 2:
|
|
|
return _context2.abrupt("return", true);
|
|
|
case 3:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
function onOk() {
|
|
|
return _onOk2.apply(this, arguments);
|
|
|
}
|
|
|
return onOk;
|
|
|
}()
|
|
|
});
|
|
|
};
|
|
|
var onStartRecord = function onStartRecord() {
|
|
|
var _recordRef$current, _recordRef$current$st;
|
|
|
(_recordRef$current = recordRef.current) === null || _recordRef$current === void 0 ? void 0 : (_recordRef$current$st = _recordRef$current.startScreenRecord) === null || _recordRef$current$st === void 0 ? void 0 : _recordRef$current$st.call(_recordRef$current);
|
|
|
};
|
|
|
var serverPreview = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3() {
|
|
|
var _res$data;
|
|
|
var res, _res$data2;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
setIsLoading(true);
|
|
|
_context3.next = 3;
|
|
|
return (0,utils_fetch/* default */.ZP)("/api/tasks/".concat(params.taskId, "/port_proxy"), {
|
|
|
method: "post",
|
|
|
body: {
|
|
|
port: portValue,
|
|
|
position: position
|
|
|
}
|
|
|
});
|
|
|
case 3:
|
|
|
res = _context3.sent;
|
|
|
if (res !== null && res !== void 0 && (_res$data = res.data) !== null && _res$data !== void 0 && _res$data.url) {
|
|
|
(0,util/* openNewWindow */.xg)(res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.url);
|
|
|
}
|
|
|
setIsLoading(false);
|
|
|
case 6:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return function serverPreview() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "tpi-code-setting ".concat(className),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("h3", {
|
|
|
children: "\u529F\u80FD"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("section", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
id: "full-screen",
|
|
|
title: "\u5168\u5C4F",
|
|
|
className: "file-item action",
|
|
|
onClick: function onClick() {
|
|
|
onVncAction('full-screen');
|
|
|
},
|
|
|
children: [" ", /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-quanping"
|
|
|
}), "\u5F00\u542F / \u9000\u51FA\u5168\u5C4F "]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
id: "reset-task",
|
|
|
onClick: function onClick() {
|
|
|
return onVncAction('reset-task');
|
|
|
},
|
|
|
className: "file-item action",
|
|
|
title: "\u91CD\u7F6E\u5B9E\u8BAD",
|
|
|
children: [" ", /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-zhongzhishixun"
|
|
|
}), "\u91CD\u7F6E\u5B9E\u8BAD "]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
id: "reset-code",
|
|
|
onClick: function onClick() {
|
|
|
return onVncAction('reset-code');
|
|
|
},
|
|
|
className: "file-item action",
|
|
|
title: "\u91CD\u7F6E\u4EE3\u7801\u4ED3\u5E93",
|
|
|
children: [" ", /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-zhongzhishixun"
|
|
|
}), "\u91CD\u7F6E\u4EE3\u7801\u4ED3\u5E93 "]
|
|
|
}), !unity_3d_routes && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [" ", (window_vnc_url || linux_vnc || vnc_url || (shixun === null || shixun === void 0 ? void 0 : shixun.hide_code) === 2 || (shixun === null || shixun === void 0 ? void 0 : shixun.webssh) === 3) && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
onClick: function onClick() {
|
|
|
return uploadFile();
|
|
|
},
|
|
|
className: "file-item action",
|
|
|
title: "\u4E0A\u4F20\u6587\u4EF6",
|
|
|
children: [" ", /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-shangchuanshipin1"
|
|
|
}), "\u4E0A\u4F20\u6587\u4EF6"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
onClick: function onClick() {
|
|
|
return downloadFile();
|
|
|
},
|
|
|
className: "file-item action",
|
|
|
title: "\u4E0B\u8F7D\u6587\u4EF6",
|
|
|
children: [" ", /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-xiazai3"
|
|
|
}), "\u4E0B\u8F7D\u6587\u4EF6"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
onClick: function onClick() {
|
|
|
return onStartRecord();
|
|
|
},
|
|
|
className: "file-item action",
|
|
|
title: "\u5C4F\u5E55\u5F55\u5236",
|
|
|
children: [" ", /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-jiaruketang1"
|
|
|
}), "\u5C4F\u5E55\u5F55\u5236"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "file-item action w100",
|
|
|
title: "\u670D\u52A1\u9884\u89C8",
|
|
|
children: [" ", /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-suanfasheji"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
align: "middle",
|
|
|
className: "w100",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
onClick: serverPreview,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.Z, {
|
|
|
type: "text",
|
|
|
loading: isLoading,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: {
|
|
|
color: "#ddd",
|
|
|
marginLeft: -11
|
|
|
},
|
|
|
children: "\u670D\u52A1\u9884\u89C8"
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(col/* default */.Z, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "javascript:;",
|
|
|
onClick: serverPreview,
|
|
|
className: "c-blue",
|
|
|
children: "\u7AEF\u53E3\u53F7"
|
|
|
}), " ", /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
onChange: function onChange(e) {
|
|
|
return setPortValue(e.target.value);
|
|
|
},
|
|
|
style: {
|
|
|
width: 50
|
|
|
},
|
|
|
value: portValue
|
|
|
})]
|
|
|
})]
|
|
|
})]
|
|
|
})]
|
|
|
}), window_vnc_url && /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
id: "reset-task",
|
|
|
onClick: restartVac,
|
|
|
className: "file-item action",
|
|
|
title: "\u91CD\u542F\u4E91\u4E3B\u673A",
|
|
|
children: [" ", /*#__PURE__*/(0,jsx_runtime.jsx)(PoweroffOutlined/* default */.Z, {
|
|
|
style: {
|
|
|
marginRight: 21,
|
|
|
color: "#FFF"
|
|
|
},
|
|
|
className: "c-white font16"
|
|
|
}), "\u91CD\u542F\u4E91\u4E3B\u673A "]
|
|
|
}), (shixun === null || shixun === void 0 ? void 0 : shixun.hide_code) !== 2 && /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
id: "reset-task",
|
|
|
onClick: function onClick() {
|
|
|
return onVncAction('reset-code');
|
|
|
},
|
|
|
className: "file-item action",
|
|
|
title: "\u6062\u590D\u521D\u59CB\u4EE3\u7801",
|
|
|
children: [" ", /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-zhongzhi font20",
|
|
|
style: {
|
|
|
marginRight: 19
|
|
|
}
|
|
|
}), "\u6062\u590D\u521D\u59CB\u4EE3\u7801 "]
|
|
|
}), git_url ? /*#__PURE__*/(0,jsx_runtime.jsx)(lib.CopyToClipboard, {
|
|
|
text: git_url,
|
|
|
onCopy: function onCopy() {
|
|
|
return es_message/* default.success */.ZP.success('复制成功');
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
id: "copy-git",
|
|
|
title: "\u590D\u5236\u7248\u672C\u5E93\u5730\u5740",
|
|
|
className: "file-item action",
|
|
|
children: [" ", /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-fuzhibanbenkudizhi1"
|
|
|
}), "\u590D\u5236\u7248\u672C\u5E93\u5730\u5740 "]
|
|
|
})
|
|
|
}) : null, !window_vnc_url && !linux_vnc && /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
id: "copy-cliboard",
|
|
|
className: "file-item action",
|
|
|
onClick: function onClick() {
|
|
|
onVncAction('show-clipboard-box');
|
|
|
},
|
|
|
children: [" ", /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-fuzhiniantie"
|
|
|
}), "\u590D\u5236\u7C98\u8D34 "]
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("h3", {
|
|
|
children: "\u5173\u5361\u914D\u7F6E\u4FE1\u606F"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("section", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "file-item",
|
|
|
title: task_pass ? '允许学员跳关挑战' : '不允许学员跳关挑战',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
children: "\u8DF3\u5173"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: task_pass ? '允许' : '不允许'
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "file-item",
|
|
|
title: test_set_permission ? '允许学员通过金币解锁查看测试集内容' : '不允许学员通过金币解锁查看测试集内容',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
children: "\u6D4B\u8BD5\u96C6\u89E3\u9501"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: test_set_permission ? '允许' : '不允许'
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("h3", {
|
|
|
children: "\u5B9E\u8BAD\u57FA\u672C\u4FE1\u606F"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("section", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "file-item",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
children: "\u5B9E\u8BAD\u96BE\u6613\u5EA6"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: difficultyDesc[difficulty]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "file-item",
|
|
|
style: {
|
|
|
alignItems: 'flex-start'
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
children: "\u5B9E\u9A8C\u73AF\u5883"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "vnc-desc",
|
|
|
title: mirror_description === null || mirror_description === void 0 ? void 0 : mirror_description.join(' '),
|
|
|
children: mirror_description === null || mirror_description === void 0 ? void 0 : mirror_description.join(' ')
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(record, {
|
|
|
ref: recordRef
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/data-sets/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var data_setsmodules = ({"flex_box_center":"flex_box_center___rNE5B","flex_space_between":"flex_space_between___UQz5R","flex_box_vertical_center":"flex_box_vertical_center___LVkcg","flex_box_center_end":"flex_box_center_end___liNMD","flex_box_column":"flex_box_column___en5bA","wrap":"wrap___QHoGE","list":"list___PqCYv","page":"page___TKcdQ"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/data-sets/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _excluded = ["userDetail", "user", "globalSetting", "loading", "dispatch", "onClose", "shixun"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var NavType;
|
|
|
(function (NavType) {
|
|
|
NavType["Classrooms"] = "classrooms";
|
|
|
NavType["Shixuns"] = "shixuns";
|
|
|
NavType["Paths"] = "paths";
|
|
|
NavType["Projects"] = "projects";
|
|
|
NavType["Videos"] = "videos";
|
|
|
NavType["Topics"] = "topics";
|
|
|
NavType["Teach"] = "teach-group";
|
|
|
})(NavType || (NavType = {}));
|
|
|
var Banner = function Banner(_ref) {
|
|
|
var userDetail = _ref.userDetail,
|
|
|
user = _ref.user,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
dispatch = _ref.dispatch,
|
|
|
onClose = _ref.onClose,
|
|
|
shixun = _ref.shixun,
|
|
|
props = objectWithoutProperties_default()(_ref, _excluded);
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
var _useState = (0,react.useState)([]),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
dataList = _useState2[0],
|
|
|
setDataList = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)({}),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
folderName = _useState4[0],
|
|
|
setFolderName = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)(0),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
count = _useState6[0],
|
|
|
setCount = _useState6[1];
|
|
|
var _useState7 = (0,react.useState)(objectSpread2_default()({
|
|
|
page: 1,
|
|
|
limit: 20,
|
|
|
id: shixun.identifier
|
|
|
}, params)),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
query = _useState8[0],
|
|
|
setQuery = _useState8[1];
|
|
|
var visible = (0,react.useCallback)(function () {
|
|
|
return props.visible;
|
|
|
}, [props.visible]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
query.page = 1;
|
|
|
getSetData();
|
|
|
}, [props.visible]);
|
|
|
var getSetData = /*#__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 dispatch({
|
|
|
type: 'shixunsDetail/getSetData',
|
|
|
payload: query
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
if (res) {
|
|
|
setDataList(toConsumableArray_default()(res.data_sets));
|
|
|
setCount(res.data_sets_count);
|
|
|
setFolderName(res.folder_name);
|
|
|
}
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function getSetData() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [!!dataList.length && props.children, /*#__PURE__*/(0,jsx_runtime.jsxs)(drawer/* default */.Z, {
|
|
|
title: "\u6570\u636E\u96C6",
|
|
|
placement: "right",
|
|
|
className: data_setsmodules.wrap,
|
|
|
width: 300,
|
|
|
closable: false,
|
|
|
onClose: onClose,
|
|
|
open: visible(),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "c-grey-999 font14 ml5 mb5",
|
|
|
children: "\u6570\u636E\u96C6\u8DEF\u5F84"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("dl", {
|
|
|
className: data_setsmodules.list,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: folderName,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("dt", {
|
|
|
children: folderName
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("dd", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(lib.CopyToClipboard, {
|
|
|
text: folderName,
|
|
|
onCopy: function onCopy() {
|
|
|
return es_message/* default.success */.ZP.success('复制成功');
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "".concat(data_setsmodules.copy, " current"),
|
|
|
children: "\u70B9\u51FB\u590D\u5236"
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "c-grey-999 font14 ml5 mb5",
|
|
|
children: "\u6587\u4EF6\u8DEF\u5F84"
|
|
|
}), dataList === null || dataList === void 0 ? void 0 : dataList.map(function (item, key) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("dl", {
|
|
|
className: data_setsmodules.list,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: item.title,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("dt", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "icon-wenjian4 mr5"
|
|
|
}), item.title]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("dd", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(lib.CopyToClipboard, {
|
|
|
text: item.file_path,
|
|
|
onCopy: function onCopy() {
|
|
|
return es_message/* default.success */.ZP.success('复制成功');
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "".concat(data_setsmodules.copy, " current"),
|
|
|
children: "\u70B9\u51FB\u590D\u5236"
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "tc",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(pagination/* default */.Z, {
|
|
|
onChange: function onChange(page) {
|
|
|
query.page = page;
|
|
|
getSetData();
|
|
|
},
|
|
|
className: data_setsmodules.page,
|
|
|
size: "small",
|
|
|
total: count,
|
|
|
pageSize: query.limit,
|
|
|
hideOnSinglePage: true
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var data_sets = ((0,_umi_production_exports.connect)(function (_ref3) {
|
|
|
var user = _ref3.user,
|
|
|
userDetail = _ref3.userDetail,
|
|
|
loading = _ref3.loading,
|
|
|
shixunsDetail = _ref3.shixunsDetail,
|
|
|
globalSetting = _ref3.globalSetting;
|
|
|
return {
|
|
|
user: user,
|
|
|
userDetail: userDetail,
|
|
|
shixunsDetail: shixunsDetail,
|
|
|
globalSetting: globalSetting,
|
|
|
loading: loading.models.index
|
|
|
};
|
|
|
})(Banner));
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/header/gold.png
|
|
|
var gold_namespaceObject = "data:image/png;base64,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";
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/header/tool.png
|
|
|
var tool_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAgCAYAAAB6kdqOAAABZ0lEQVRYR+2YrU7FQBBGzzwEPAMSi+M6MARDggNJgiIkWLiSBIFCkyCuQECCQFIcEstb8AYf2ZvmhpbuT9ttUpJWdma+OZ3O7k5rRC5Jh8ARsBPzjdhvgXczew75WSyJpCdgP+aXaP8ws63OQJK2gbdSYJ6Y1Od2WRpmZlb4nIIVqgEFhUKwbXTGByRpDzgBdnu+kr7hD8CLSboGLvqqZYp/dEDK1LR9mZZNXwEys6u+ql3iJbm8E5C3eFOFYn2VrUKS1oADYL1M+gW8mtl3DOK3PQuQpE1gAWzUkn8CZ6Hzqg6bC+gcuPFU4s7MTlOrlAvITQFuGijMbOaSS/pzLwXKB+QdCQKiXqAUkJqP06rs1B00liFNFeqqVQEaXYXmbc6ypn7J3UNtgUa3ysa1D5XLfDw7dedl1BCYZWOcgHJWIKb1f15Z7EkGtq+G/NXEP3DCFPl79xnkTln3u+U4JWJAH/czo/gBVkc5pun3NGoAAAAASUVORK5CYII=";
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/icons/ClockCircleOutlined.js
|
|
|
var ClockCircleOutlined = __webpack_require__(30071);
|
|
|
// EXTERNAL MODULE: ./src/components/Exercise/recordScreen.tsx + 3 modules
|
|
|
var recordScreen = __webpack_require__(78806);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/header/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Countdown = statistic/* default.Countdown */.Z.Countdown;
|
|
|
function TipContent() {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u684C\u9762\u7CFB\u7EDF\u5C06\u6062\u590D\u5230\u521D\u59CB\u72B6\u6001\uFF0C\u60A8\u5728\u7CFB\u7EDF\u4E2D\u521B\u5EFA\u7684\u6570\u636E\u53EF\u80FD\u4F1A\u4E22\u5931\u3002\u8BF7\u786E\u4FDD\u60A8\u7684\u6570\u636E\u5DF2\u4FDD\u5B58\uFF08\u5982\uFF1A\u7248\u672C\u5E93\u4EE3\u7801\u5DF2\u63A8\u9001\u5230\u670D\u52A1\u5668\uFF09\u3002\u662F\u5426\u786E\u8BA4\u91CD\u7F6E\uFF1F"
|
|
|
});
|
|
|
}
|
|
|
/* harmony default export */ var tasks_header = (function (_ref) {
|
|
|
var _exerciseData$exercis7;
|
|
|
var mirror_description = _ref.mirror_description,
|
|
|
difficulty = _ref.difficulty,
|
|
|
git_url = _ref.git_url,
|
|
|
vnc_url = _ref.vnc_url,
|
|
|
window_vnc_url = _ref.window_vnc_url,
|
|
|
linux_vnc = _ref.linux_vnc,
|
|
|
isNotice = _ref.isNotice,
|
|
|
user = _ref.user,
|
|
|
game = _ref.game,
|
|
|
_ref$shixun = _ref.shixun,
|
|
|
shixun = _ref$shixun === void 0 ? {} : _ref$shixun,
|
|
|
_ref$taskData = _ref.taskData,
|
|
|
taskData = _ref$taskData === void 0 ? {} : _ref$taskData,
|
|
|
resetVncLoading = _ref.resetVncLoading,
|
|
|
onUpdateCostTime = _ref.onUpdateCostTime,
|
|
|
lastedGetTaskInfoTime = _ref.lastedGetTaskInfoTime,
|
|
|
onShowNotice = _ref.onShowNotice,
|
|
|
onResetGitCode = _ref.onResetGitCode,
|
|
|
onResetVnc = _ref.onResetVnc,
|
|
|
onBack = _ref.onBack,
|
|
|
onAddVncTime = _ref.onAddVncTime,
|
|
|
onUpdateCode = _ref.onUpdateCode,
|
|
|
unity_3d_routes = _ref.unity_3d_routes,
|
|
|
st = _ref.st;
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
var name = shixun.name,
|
|
|
identifier = shixun.identifier,
|
|
|
task_pass = shixun.task_pass,
|
|
|
test_set_permission = shixun.test_set_permission;
|
|
|
var cost_time = game.cost_time,
|
|
|
status = game.status;
|
|
|
var user_url = user.user_url,
|
|
|
image_url = user.image_url,
|
|
|
_user$grade = user.grade,
|
|
|
grade = _user$grade === void 0 ? 0 : _user$grade;
|
|
|
var _useState = (0,react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
isToolBar = _useState2[0],
|
|
|
setIsToolBar = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)({}),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
exerciseData = _useState4[0],
|
|
|
setExerciseData = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)('#FFF'),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
countDownColor = _useState6[0],
|
|
|
setCountDownColor = _useState6[1];
|
|
|
var _useState7 = (0,react.useState)(null),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
countDownTime = _useState8[0],
|
|
|
setCountDownTime = _useState8[1];
|
|
|
var _useState9 = (0,react.useState)(),
|
|
|
_useState10 = slicedToArray_default()(_useState9, 2),
|
|
|
vncTime = _useState10[0],
|
|
|
setVncTime = _useState10[1];
|
|
|
var _useState11 = (0,react.useState)(false),
|
|
|
_useState12 = slicedToArray_default()(_useState11, 2),
|
|
|
dataSetsVisiable = _useState12[0],
|
|
|
setdataSetsVisiable = _useState12[1];
|
|
|
var countDownRef = (0,react.useRef)();
|
|
|
var countDownRef2 = (0,react.useRef)();
|
|
|
var position = (0,react.useRef)((shixun === null || shixun === void 0 ? void 0 : shixun.webssh) === 3 ? 1 : undefined);
|
|
|
var focusRef = (0,react.useRef)();
|
|
|
var lockExitFullRef = (0,react.useRef)(false);
|
|
|
(0,react.useEffect)(function () {
|
|
|
var unSub = mediator/* default.subscribe */.Z.subscribe('taskTabIndex', function (data) {
|
|
|
if ((shixun === null || shixun === void 0 ? void 0 : shixun.webssh) === 3) position.current = data;
|
|
|
});
|
|
|
return unSub;
|
|
|
}, []);
|
|
|
(0,react.useEffect)(function () {
|
|
|
var _exerciseData$exercis;
|
|
|
clearTimeout(countDownRef.current);
|
|
|
clearTimeout(countDownRef2.current);
|
|
|
if (exerciseData !== null && exerciseData !== void 0 && (_exerciseData$exercis = exerciseData.exercise) !== null && _exerciseData$exercis !== void 0 && _exerciseData$exercis.left_time) {
|
|
|
var _exerciseData$exercis2, _exerciseData$exercis4;
|
|
|
if ((exerciseData === null || exerciseData === void 0 ? void 0 : (_exerciseData$exercis2 = exerciseData.exercise) === null || _exerciseData$exercis2 === void 0 ? void 0 : _exerciseData$exercis2.left_time) > 1800) {
|
|
|
var _exerciseData$exercis3;
|
|
|
countDownRef2.current = setTimeout(function () {
|
|
|
modal/* default.info */.Z.info({
|
|
|
content: '当前距离考试结束还有30分钟',
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)(ClockCircleOutlined/* default */.Z, {}),
|
|
|
okText: '知道了'
|
|
|
});
|
|
|
}, ((exerciseData === null || exerciseData === void 0 ? void 0 : (_exerciseData$exercis3 = exerciseData.exercise) === null || _exerciseData$exercis3 === void 0 ? void 0 : _exerciseData$exercis3.left_time) - 1800) * 1000);
|
|
|
}
|
|
|
if ((exerciseData === null || exerciseData === void 0 ? void 0 : (_exerciseData$exercis4 = exerciseData.exercise) === null || _exerciseData$exercis4 === void 0 ? void 0 : _exerciseData$exercis4.left_time) > 900) {
|
|
|
var _exerciseData$exercis5;
|
|
|
countDownRef.current = setTimeout(function () {
|
|
|
modal/* default.info */.Z.info({
|
|
|
content: '当前距离考试结束还有15分钟',
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)(ClockCircleOutlined/* default */.Z, {}),
|
|
|
okText: '知道了'
|
|
|
});
|
|
|
}, ((exerciseData === null || exerciseData === void 0 ? void 0 : (_exerciseData$exercis5 = exerciseData.exercise) === null || _exerciseData$exercis5 === void 0 ? void 0 : _exerciseData$exercis5.left_time) - 900) * 1000);
|
|
|
}
|
|
|
}
|
|
|
}, [exerciseData]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
function init() {
|
|
|
return _init.apply(this, arguments);
|
|
|
}
|
|
|
function _init() {
|
|
|
_init = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var _res, _res2, _res2$exercise, res, _res3, _res3$exercise, _res4, _res4$exercise, _res5, _res5$exercise;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
if (!(searchParams.get("type") === 'exercises')) {
|
|
|
_context.next = 16;
|
|
|
break;
|
|
|
}
|
|
|
if (!(window.self === window.top)) {
|
|
|
_context.next = 4;
|
|
|
break;
|
|
|
}
|
|
|
window.top.location.href = "/";
|
|
|
return _context.abrupt("return");
|
|
|
case 4:
|
|
|
if (!(searchParams.get("coursesId") === 'coursesId')) {
|
|
|
_context.next = 10;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 7;
|
|
|
return (0,exercise/* startSimulateAnswer */._F)({
|
|
|
categoryId: searchParams.get("exercisesId"),
|
|
|
login: searchParams.get("login")
|
|
|
});
|
|
|
case 7:
|
|
|
res = _context.sent;
|
|
|
_context.next = 13;
|
|
|
break;
|
|
|
case 10:
|
|
|
_context.next = 12;
|
|
|
return (0,exercise/* getExerciseStartAnswer */._B)({
|
|
|
categoryId: searchParams.get("exercisesId"),
|
|
|
login: searchParams.get("login")
|
|
|
});
|
|
|
case 12:
|
|
|
res = _context.sent;
|
|
|
case 13:
|
|
|
setExerciseData(objectSpread2_default()({}, res));
|
|
|
mediator/* default.publish */.Z.publish("exercise-data", res);
|
|
|
if ((_res = res) !== null && _res !== void 0 && _res.left_banner_id && (_res2 = res) !== null && _res2 !== void 0 && (_res2$exercise = _res2.exercise) !== null && _res2$exercise !== void 0 && _res2$exercise.left_time) {
|
|
|
setCountDownTime(Date.now() + ((_res3 = res) === null || _res3 === void 0 ? void 0 : (_res3$exercise = _res3.exercise) === null || _res3$exercise === void 0 ? void 0 : _res3$exercise.left_time) * 1000);
|
|
|
setTimeout(function () {
|
|
|
setCountDownColor('red');
|
|
|
}, (((_res4 = res) === null || _res4 === void 0 ? void 0 : (_res4$exercise = _res4.exercise) === null || _res4$exercise === void 0 ? void 0 : _res4$exercise.left_time) - 300 > 0 ? ((_res5 = res) === null || _res5 === void 0 ? void 0 : (_res5$exercise = _res5.exercise) === null || _res5$exercise === void 0 ? void 0 : _res5$exercise.left_time) - 300 : 0) * 1000);
|
|
|
}
|
|
|
case 16:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _init.apply(this, arguments);
|
|
|
}
|
|
|
init();
|
|
|
mediator/* default.subscribe */.Z.subscribe('update-windows-time', function (data) {
|
|
|
setVncTime(parseInt(data.remaining_time / 1000));
|
|
|
});
|
|
|
if (vnc_url) {
|
|
|
setVncTime(1800);
|
|
|
}
|
|
|
}, []);
|
|
|
(0,react.useEffect)(function () {
|
|
|
var _exerciseData$exercis6;
|
|
|
if (searchParams.get("type") === 'exercises' && exerciseData !== null && exerciseData !== void 0 && (_exerciseData$exercis6 = exerciseData.exercise) !== null && _exerciseData$exercis6 !== void 0 && _exerciseData$exercis6.screen_open) {
|
|
|
recordScreen/* fullchange.forEach */.U.forEach(function (item, index) {
|
|
|
window.addEventListener(item, backExercise, false);
|
|
|
window.addEventListener('blur', backExercise, false);
|
|
|
});
|
|
|
window.focus();
|
|
|
focusRef.current = setInterval(function () {
|
|
|
window.focus();
|
|
|
}, 1000);
|
|
|
// window.onblur = function() {
|
|
|
// if (IsFull()) {
|
|
|
// backExercise();
|
|
|
// exitFull();
|
|
|
// }
|
|
|
// };
|
|
|
// document.addEventListener('webkitfullscreenchange', function(event) {
|
|
|
// backExercise();
|
|
|
// });
|
|
|
}
|
|
|
|
|
|
return function () {
|
|
|
recordScreen/* fullchange.forEach */.U.forEach(function (item, index) {
|
|
|
window.removeEventListener(item, backExercise, false);
|
|
|
});
|
|
|
window.removeEventListener('blur', backExercise, false);
|
|
|
clearInterval(focusRef.current);
|
|
|
};
|
|
|
}, [exerciseData]);
|
|
|
var handleToggleDatasets = function handleToggleDatasets() {
|
|
|
setdataSetsVisiable(!dataSetsVisiable);
|
|
|
};
|
|
|
var backExercise = function backExercise(type) {
|
|
|
if (document.activeElement.tagName !== "IFRAME") {
|
|
|
window.parent.postMessage('backExercise', '*');
|
|
|
if (!lockExitFullRef.current) (0,fullscreen/* exitFull */.BU)();
|
|
|
}
|
|
|
};
|
|
|
function triggerToolBar() {
|
|
|
setIsToolBar(!isToolBar);
|
|
|
}
|
|
|
function onHideToolBar() {
|
|
|
setIsToolBar(false);
|
|
|
}
|
|
|
var params = (0,_umi_production_exports.useParams)(); //会有从课堂或者试卷中跳过来的情况,根据路由参数决定退出跳转的位置
|
|
|
function toShixun() {
|
|
|
if (params.courseId && params.homeworkId) {
|
|
|
location.href = "/classrooms/".concat(params.courseId, "/shixun_homework/").concat(params.homeworkId, "/detail");
|
|
|
return;
|
|
|
}
|
|
|
onBack();
|
|
|
location.href = "/shixuns/".concat(identifier, "/challenges");
|
|
|
}
|
|
|
function onReset() {
|
|
|
if (resetVncLoading) {
|
|
|
return;
|
|
|
}
|
|
|
onResetVnc();
|
|
|
}
|
|
|
function onCancelShixun() {
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
title: '退出实训',
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)(ExclamationCircleOutlined/* default */.Z, {}),
|
|
|
content: '您确定要退出实训吗?',
|
|
|
centered: true,
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
onOk: toShixun
|
|
|
});
|
|
|
}
|
|
|
function onVncAction(name) {
|
|
|
onHideToolBar();
|
|
|
if (name === 'reset-task') {
|
|
|
if (!resetVncLoading) {
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
title: '重置实训',
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)(ExclamationCircleOutlined/* default */.Z, {}),
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsx)(TipContent, {}),
|
|
|
centered: true,
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
onOk: onReset
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
if (name === 'reset-code') {
|
|
|
if (!resetVncLoading) {
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
title: '恢复初始代码',
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)(ExclamationCircleOutlined/* default */.Z, {}),
|
|
|
content: '您在本文件中修改的内容将丢失,是否确定重新加载初始代码?',
|
|
|
centered: true,
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
onOk: onResetGitCode
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
if (name === 'full-screen') {
|
|
|
if ((0,fullscreen/* IsFull */.vp)()) {
|
|
|
(0,fullscreen/* exitFull */.BU)();
|
|
|
} else {
|
|
|
var _document, _document$getElementB;
|
|
|
(0,fullscreen/* requestFullScreen */.Dj)((_document = document) === null || _document === void 0 ? void 0 : (_document$getElementB = _document.getElementById) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.call(_document, 'task-right-panel'));
|
|
|
}
|
|
|
}
|
|
|
if (name === 'show-clipboard-box') {
|
|
|
mediator/* default.publish */.Z.publish('show-clipboard-box');
|
|
|
}
|
|
|
}
|
|
|
var vncSettingOption = {
|
|
|
task_pass: task_pass,
|
|
|
test_set_permission: test_set_permission,
|
|
|
mirror_description: mirror_description,
|
|
|
difficulty: difficulty,
|
|
|
resetVncLoading: resetVncLoading,
|
|
|
git_url: git_url,
|
|
|
onVncAction: onVncAction,
|
|
|
window_vnc_url: window_vnc_url,
|
|
|
linux_vnc: linux_vnc,
|
|
|
vnc_url: vnc_url,
|
|
|
shixun: shixun,
|
|
|
unity_3d_routes: unity_3d_routes,
|
|
|
position: position.current
|
|
|
};
|
|
|
var cutTime = (0,react.useCallback)(function () {
|
|
|
if (!vncTime) {
|
|
|
return null;
|
|
|
}
|
|
|
console.log('VncTimer:', vncTime);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(VncTimer, {
|
|
|
defaultTime: vncTime,
|
|
|
onAddVncTime: onAddVncTime,
|
|
|
onReset: onReset,
|
|
|
toShixun: toShixun,
|
|
|
title: vnc_url ? '实验环境倒计时' : ''
|
|
|
});
|
|
|
}, [vncTime]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "task-header-container",
|
|
|
children: [searchParams.get("type") !== 'exercises' && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "task-user-info",
|
|
|
href: user_url,
|
|
|
target: "_blank",
|
|
|
children: [image_url ? /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
width: "35",
|
|
|
height: "35",
|
|
|
src: "".concat(env/* default.IMG_SERVER */.Z.IMG_SERVER, "/images/").concat(image_url)
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: user.name
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "grade-info",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: gold_namespaceObject,
|
|
|
alt: "gold",
|
|
|
width: 20
|
|
|
}), grade]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("h2", {
|
|
|
className: "shixun-info",
|
|
|
children: [name, searchParams.get("type") !== 'exercises' && shixun.hide_code !== 2 && /*#__PURE__*/(0,jsx_runtime.jsx)(timer_panel, {
|
|
|
lastedGetTaskInfoTime: lastedGetTaskInfoTime,
|
|
|
status: status,
|
|
|
defaultTime: cost_time,
|
|
|
onUpdateCostTime: onUpdateCostTime,
|
|
|
retentionTime: "taskBuildTimes",
|
|
|
title: vnc_url ? '实验总用时' : ''
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [(vnc_url || window_vnc_url || linux_vnc || (taskData === null || taskData === void 0 ? void 0 : taskData.virtual_machine) || (shixun === null || shixun === void 0 ? void 0 : shixun.webssh) === 3 || shixun.hide_code === 2 || unity_3d_routes) && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container ".concat(searchParams.get("type") === 'exercises' ? "hide" : ""),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [window_vnc_url && /*#__PURE__*/(0,jsx_runtime.jsx)(_umi_production_exports.Link, {
|
|
|
onClick: function onClick(e) {
|
|
|
e.preventDefault();
|
|
|
mediator/* default.publish */.Z.publish('send-ctrl-alt-delete');
|
|
|
},
|
|
|
className: "c-grey-c mr20",
|
|
|
children: "\u53D1\u9001CTRL+ALT+DELETE"
|
|
|
}), isNotice ? /*#__PURE__*/(0,jsx_runtime.jsx)(NoticeButton, {
|
|
|
className: "btn-notice",
|
|
|
onShowNotice: onShowNotice
|
|
|
}) : null, cutTime()]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "btn-vnc",
|
|
|
title: "\u5DE5\u5177\u680F",
|
|
|
onClick: triggerToolBar,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
alt: "tool",
|
|
|
src: tool_namespaceObject,
|
|
|
width: 16
|
|
|
}), "\u5DE5\u5177\u680F"]
|
|
|
})]
|
|
|
}), !window_vnc_url && /*#__PURE__*/(0,jsx_runtime.jsx)(data_sets, {
|
|
|
visible: dataSetsVisiable,
|
|
|
onClose: handleToggleDatasets,
|
|
|
shixun: shixun,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "btn-vnc",
|
|
|
title: "\u5DE5\u5177\u680F",
|
|
|
onClick: handleToggleDatasets,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "iconfont font14 mr5 icon-shujuji2 current"
|
|
|
}), "\u6570\u636E\u96C6"]
|
|
|
})
|
|
|
})]
|
|
|
}), searchParams.get("type") !== 'exercises' && /*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment, {
|
|
|
children: vnc_url || window_vnc_url ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
className: "btn-task-out",
|
|
|
onClick: onCancelShixun,
|
|
|
title: "\u9000\u51FA\u5B9E\u8BAD",
|
|
|
children: "\u9000\u51FA\u5B9E\u8BAD"
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
className: "btn-out",
|
|
|
onClick: onCancelShixun,
|
|
|
title: "\u9000\u51FA\u5B9E\u8BAD",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-kaiguan"
|
|
|
})
|
|
|
})
|
|
|
}), (exerciseData === null || exerciseData === void 0 ? void 0 : (_exerciseData$exercis7 = exerciseData.exercise) === null || _exerciseData$exercis7 === void 0 ? void 0 : _exerciseData$exercis7.left_time) && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: {
|
|
|
color: countDownColor
|
|
|
},
|
|
|
className: "iconfont icon-kaoshishichang mr5"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "c-white mr20",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(Countdown, {
|
|
|
className: "flex-wrp ",
|
|
|
valueStyle: {
|
|
|
color: countDownColor,
|
|
|
fontSize: 12,
|
|
|
fontWeight: 'normal'
|
|
|
},
|
|
|
title: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: {
|
|
|
color: countDownColor,
|
|
|
fontSize: 12
|
|
|
},
|
|
|
children: "\u5269\u4F59\u65F6\u95F4\uFF1A"
|
|
|
}),
|
|
|
value: countDownTime,
|
|
|
onFinish: /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3() {
|
|
|
var res, time;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
_context3.next = 2;
|
|
|
return (0,exercise/* submitExerciseAnswer */.VL)({
|
|
|
categoryId: searchParams.get("exercisesId"),
|
|
|
commit_method: 2
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context3.sent;
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
|
|
|
if (st === 0) {
|
|
|
onUpdateCode(1);
|
|
|
}
|
|
|
modal/* default.info */.Z.info({
|
|
|
width: 530,
|
|
|
title: '提示',
|
|
|
centered: true,
|
|
|
okText: '确定',
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "tc font16",
|
|
|
children: ["\u7B54\u9898\u7ED3\u675F\u4E86\uFF0C\u7CFB\u7EDF\u5DF2\u81EA\u52A8\u63D0\u4EA4\u8BD5\u5377", /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), "\u4E0D\u80FD\u518D\u4FEE\u6539\u7B54\u9898"]
|
|
|
}),
|
|
|
onOk: function () {
|
|
|
var _onOk = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
window.parent.location.href = "/classrooms/".concat(searchParams.get("coursesId"), "/exercise/").concat(searchParams.get("exercisesId"), "/detail");
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
function onOk() {
|
|
|
return _onOk.apply(this, arguments);
|
|
|
}
|
|
|
return onOk;
|
|
|
}()
|
|
|
});
|
|
|
}
|
|
|
if ((res === null || res === void 0 ? void 0 : res.status) === -3) {
|
|
|
time = parseInt(res === null || res === void 0 ? void 0 : res.message);
|
|
|
setCountDownTime(Date.now() + time * 1000);
|
|
|
}
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}))
|
|
|
})
|
|
|
})]
|
|
|
}), searchParams.get("type") === 'exercises' && /*#__PURE__*/(0,jsx_runtime.jsxs)(es_button/* default */.Z, {
|
|
|
type: "primary",
|
|
|
onClick: function onClick() {
|
|
|
if (st === 0) {
|
|
|
onUpdateCode(1);
|
|
|
}
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
centered: true,
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
title: '提示',
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "tc",
|
|
|
children: "\u8BF7\u786E\u8BA4\u4F60\u7684\u7B54\u9898\u5185\u5BB9\u5DF2\u7ECF\u63D0\u4EA4\uFF1F"
|
|
|
}),
|
|
|
onOk: function onOk() {
|
|
|
// window.close()
|
|
|
lockExitFullRef.current = true;
|
|
|
backExercise();
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "iconfont icon-yiguanbi mr5 font14"
|
|
|
}), " \u8FD4\u56DE\u8BD5\u5377"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(components_modal/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(drawer/* default */.Z, {
|
|
|
width: 280,
|
|
|
className: "setting-drawer",
|
|
|
title: null,
|
|
|
placement: "right",
|
|
|
closable: false,
|
|
|
open: isToolBar,
|
|
|
onClose: onHideToolBar,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(vnc_setting, objectSpread2_default()({}, vncSettingOption))
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
var header_FiveMinute = 300;
|
|
|
function VncTimer(_ref3) {
|
|
|
var onAddVncTime = _ref3.onAddVncTime,
|
|
|
onReset = _ref3.onReset,
|
|
|
toShixun = _ref3.toShixun,
|
|
|
_ref3$title = _ref3.title,
|
|
|
title = _ref3$title === void 0 ? '' : _ref3$title,
|
|
|
defaultTime = _ref3.defaultTime;
|
|
|
var _useState13 = (0,react.useState)(defaultTime),
|
|
|
_useState14 = slicedToArray_default()(_useState13, 2),
|
|
|
time = _useState14[0],
|
|
|
setTime = _useState14[1];
|
|
|
var _useState15 = (0,react.useState)(false),
|
|
|
_useState16 = slicedToArray_default()(_useState15, 2),
|
|
|
isPlusTime = _useState16[0],
|
|
|
setIsPlusTime = _useState16[1];
|
|
|
(0,useInterval/* default */.Z)(function () {
|
|
|
setTime(time - 1);
|
|
|
}, time > 0 ? 1000 : null);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (time === header_FiveMinute) {
|
|
|
setIsPlusTime(true);
|
|
|
}
|
|
|
}, [time]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (defaultTime < header_FiveMinute) {
|
|
|
setIsPlusTime(true);
|
|
|
}
|
|
|
setTime(defaultTime);
|
|
|
}, [defaultTime]);
|
|
|
function onCancel() {
|
|
|
if (time !== 0) {
|
|
|
setIsPlusTime(false);
|
|
|
} else {
|
|
|
toShixun();
|
|
|
}
|
|
|
}
|
|
|
function onAddTime() {
|
|
|
return _onAddTime.apply(this, arguments);
|
|
|
}
|
|
|
function _onAddTime() {
|
|
|
_onAddTime = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4() {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
setIsPlusTime(false);
|
|
|
if (!(time > 0)) {
|
|
|
_context4.next = 8;
|
|
|
break;
|
|
|
}
|
|
|
_context4.next = 4;
|
|
|
return onAddVncTime();
|
|
|
case 4:
|
|
|
res = _context4.sent;
|
|
|
setTime((res === null || res === void 0 ? void 0 : res.remaining_time) / 1000);
|
|
|
_context4.next = 10;
|
|
|
break;
|
|
|
case 8:
|
|
|
setTime(defaultTime);
|
|
|
onReset();
|
|
|
case 10:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
}));
|
|
|
return _onAddTime.apply(this, arguments);
|
|
|
}
|
|
|
function callback() {
|
|
|
if (time < header_FiveMinute) {
|
|
|
setIsPlusTime(true);
|
|
|
}
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(Timer, {
|
|
|
callback: callback,
|
|
|
title: "\u5B9E\u9A8C\u73AF\u5883\u5012\u8BA1\u65F6",
|
|
|
className: "btn-vnc ".concat(time < header_FiveMinute ? 'color-red' : '', " "),
|
|
|
time: time,
|
|
|
desc: title
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(components_modal/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
title: [/*#__PURE__*/(0,jsx_runtime.jsx)(ExclamationCircleOutlined/* default */.Z, {
|
|
|
className: "modalIconYellow"
|
|
|
}), time !== 0 ? '实验环境延时提醒' : '实验环境重置提醒'],
|
|
|
maskClosable: false,
|
|
|
closable: false,
|
|
|
centered: true,
|
|
|
wrapClassName: "customModalStyle",
|
|
|
open: isPlusTime,
|
|
|
onOk: onAddTime,
|
|
|
onCancel: onCancel,
|
|
|
okText: time !== 0 ? '立即延长' : '重置',
|
|
|
cancelText: time !== 0 ? '不需要' : '退出',
|
|
|
children: time !== 0 ? "\u5F53\u524D\u5B9E\u9A8C\u73AF\u5883\u5C06\u4E8E ".concat(Math.round(time / 60), " \u5206\u949F\u540E\u5173\u95ED\uFF0C\u9700\u8981\u5EF6\u957F\u4F7F\u7528\u65F6\u95F4\u5417\uFF1F") : '由于长时间没有使用,资源已经被回收。如有需要,可以重置实验环境。'
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
}
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/choose-repository/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var choose_repositorymodules = ({"test-set-container":"test-set-container___JHp4n","resize-y-bar":"resize-y-bar___rdi2n","code-area-container":"code-area-container___Wrs1J","xterm-panel":"xterm-panel___Qp8NN","xterm-rows":"xterm-rows___NHMLJ","xterm":"xterm___JuxUK","xterm-screen":"xterm-screen___jNWY5","navs":"navs___isstg","arrow-right":"arrow-right___k6W52","arrow-down":"arrow-down___RJ_Vp","flex-container":"flex-container___fcvlY","iconfont":"iconfont___x63vg","active":"active___tIrbA","action-bar-container":"action-bar-container___WBAJU","action-bar":"action-bar___gNMCV","right-panel":"right-panel___n2hmC","action-container":"action-container___GNaac","setting-drawer":"setting-drawer___UAqT2","oj":"oj___BBHzQ"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/choose-repository/topics/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/radio/style/index.js + 1 modules
|
|
|
var radio_style = __webpack_require__(83822);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/radio/index.js + 4 modules
|
|
|
var es_radio = __webpack_require__(29924);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/choose-repository/topics/topic/A.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var dicts = {
|
|
|
0: 'A',
|
|
|
1: 'B',
|
|
|
2: 'C',
|
|
|
3: 'D',
|
|
|
4: 'E',
|
|
|
5: 'F',
|
|
|
6: 'G',
|
|
|
7: 'H',
|
|
|
8: 'I',
|
|
|
9: 'J',
|
|
|
10: 'K',
|
|
|
11: 'L',
|
|
|
12: 'M',
|
|
|
13: 'N'
|
|
|
};
|
|
|
/* harmony default export */ var A = (function (_ref) {
|
|
|
var category = _ref.category,
|
|
|
_ref$answer = _ref.answer,
|
|
|
answer = _ref$answer === void 0 ? '' : _ref$answer,
|
|
|
index = _ref.index,
|
|
|
option_name = _ref.option_name,
|
|
|
callback = _ref.callback;
|
|
|
var value = dicts[index];
|
|
|
function onSetOption() {
|
|
|
//单选
|
|
|
if (category === 1) {
|
|
|
callback(value);
|
|
|
} else {
|
|
|
var rs = (answer === null || answer === void 0 ? void 0 : answer.split('')) || [];
|
|
|
//复选取消或者选中逻辑
|
|
|
var i = rs.indexOf(value);
|
|
|
if (i >= 0) {
|
|
|
rs.splice(i, 1);
|
|
|
} else {
|
|
|
rs.push(value);
|
|
|
}
|
|
|
callback(rs.join(''));
|
|
|
}
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "flex-container",
|
|
|
onClick: onSetOption,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: {
|
|
|
position: 'relative',
|
|
|
top: 4
|
|
|
},
|
|
|
className: "".concat(category === 1 ? 'radio' : 'checkbox', " ").concat(answer && answer.indexOf(value) >= 0 ? 'active' : '')
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-wrp",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
style: {
|
|
|
lineHeight: 1.7,
|
|
|
fontSize: 16,
|
|
|
whiteSpace: 'nowrap'
|
|
|
},
|
|
|
children: [value, "\u3001"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
className: "subject-body",
|
|
|
value: option_name
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/choose-repository/topics/topic/C.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var C = (function (_ref) {
|
|
|
var callback = _ref.callback,
|
|
|
multi_count = _ref.multi_count,
|
|
|
answer = _ref.answer;
|
|
|
var _useState = (0,react.useState)([]),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
data = _useState2[0],
|
|
|
setData = _useState2[1];
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (multi_count) {
|
|
|
if (answer !== null && answer !== void 0 && answer.length) {
|
|
|
setData(answer);
|
|
|
return;
|
|
|
}
|
|
|
var item = Array.from({
|
|
|
length: multi_count
|
|
|
}).fill('');
|
|
|
setData(item);
|
|
|
}
|
|
|
}, [multi_count, answer]);
|
|
|
console.log(data, answer, 'multi_count');
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "option",
|
|
|
children: data === null || data === void 0 ? void 0 : data.map(function (item, index) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
align: "middle",
|
|
|
className: "mb10 text",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: "mb5",
|
|
|
children: ["\u586B\u7A7A", index + 1, "\u7B54\u6848\uFF1A"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default.TextArea */.Z.TextArea, {
|
|
|
value: item,
|
|
|
onChange: function onChange(e) {
|
|
|
data[index] = e.target.value;
|
|
|
callback(data);
|
|
|
}
|
|
|
}, index)]
|
|
|
});
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/choose-repository/topics/topic/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//(?:class=\")([^ ]+)[ ]+(?:language-)\1
|
|
|
/* harmony default export */ var topic = (function (_ref) {
|
|
|
var id = _ref.id,
|
|
|
answer = _ref.answer,
|
|
|
challenge_question = _ref.challenge_question,
|
|
|
category = _ref.category,
|
|
|
subject = _ref.subject,
|
|
|
onSetAnswers = _ref.onSetAnswers,
|
|
|
question_name = _ref.question_name,
|
|
|
multi_count = _ref.multi_count;
|
|
|
function callback(value) {
|
|
|
onSetAnswers(id, value);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("li", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
className: "subject c-grey-999",
|
|
|
align: "stretch",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "40px",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
className: "mt3",
|
|
|
children: [id + 1, "\u3001"]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: '1',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
value: "".concat(subject),
|
|
|
className: "subject-body"
|
|
|
})
|
|
|
})]
|
|
|
}), question_name === '单选题/多选题' && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "option",
|
|
|
children: challenge_question === null || challenge_question === void 0 ? void 0 : challenge_question.map(function (_ref2, index) {
|
|
|
var option_name = _ref2.option_name;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(A, {
|
|
|
index: index,
|
|
|
option_name: option_name,
|
|
|
answer: answer,
|
|
|
category: category,
|
|
|
callback: callback
|
|
|
}, option_name);
|
|
|
})
|
|
|
}), question_name === '判断题' && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "option",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(es_radio/* default.Group */.ZP.Group, {
|
|
|
className: "mb10",
|
|
|
value: answer || undefined,
|
|
|
onChange: function onChange(e) {
|
|
|
return callback(e.target.value);
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default */.ZP, {
|
|
|
value: "true",
|
|
|
className: "mr40",
|
|
|
children: "\u6B63\u786E"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default */.ZP, {
|
|
|
value: "false",
|
|
|
children: "\u9519\u8BEF"
|
|
|
})]
|
|
|
})
|
|
|
}), question_name === '填空题' && /*#__PURE__*/(0,jsx_runtime.jsx)(C, {
|
|
|
multi_count: multi_count,
|
|
|
callback: callback,
|
|
|
answer: answer
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/choose-repository/topics/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var topics = (function (_ref) {
|
|
|
var chooses = _ref.chooses,
|
|
|
answers = _ref.answers,
|
|
|
onSetAnswers = _ref.onSetAnswers;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("ul", {
|
|
|
className: "choose-container",
|
|
|
children: chooses.map(function (_ref2, index) {
|
|
|
var subject = _ref2.subject,
|
|
|
challenge_question = _ref2.challenge_question,
|
|
|
category = _ref2.category,
|
|
|
question_name = _ref2.question_name,
|
|
|
multi_count = _ref2.multi_count;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(topic, {
|
|
|
id: index,
|
|
|
subject: subject,
|
|
|
challenge_question: challenge_question,
|
|
|
category: category,
|
|
|
answer: answers[index],
|
|
|
onSetAnswers: onSetAnswers,
|
|
|
question_name: question_name,
|
|
|
multi_count: multi_count
|
|
|
}, index);
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/choose-repository/test-cast-list/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/choose-repository/test-cast-list/mark.svg
|
|
|
var mark = __webpack_require__(62888);
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/choose-repository/test-cast-list/success.svg
|
|
|
var success = __webpack_require__(42762);
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/choose-repository/test-cast-list/failer.svg
|
|
|
var failer = __webpack_require__(23024);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/choose-repository/test-cast-list/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var TestCaseItem = function TestCaseItem(_ref) {
|
|
|
var id = _ref.id,
|
|
|
isActive = _ref.isActive,
|
|
|
title = _ref.title,
|
|
|
onActive = _ref.onActive,
|
|
|
had_submmit = _ref.had_submmit,
|
|
|
result = _ref.result,
|
|
|
actual_output = _ref.actual_output,
|
|
|
standard_answer = _ref.standard_answer,
|
|
|
question_name = _ref.question_name;
|
|
|
function onActiveHandler() {
|
|
|
onActive(id);
|
|
|
}
|
|
|
var cls = 'test-case-item';
|
|
|
if (isActive) {
|
|
|
cls += ' active';
|
|
|
}
|
|
|
if (had_submmit) {
|
|
|
cls += ' has-result';
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("li", {
|
|
|
className: cls,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "case-header",
|
|
|
onClick: onActiveHandler,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("h2", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: isActive ? 'arrow-down' : 'arrow-right'
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "test-title",
|
|
|
children: title
|
|
|
})]
|
|
|
}), had_submmit > 0 ? /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
width: 16,
|
|
|
src: result ? success/* default */.Z : failer/* default */.Z
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-suo1"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "item-desc ".concat(isActive ? 'show' : 'hide', " choose-game-item"),
|
|
|
children: had_submmit ? result ? question_name === '填空题' ? /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u6B63\u786E\u7B54\u6848\uFF1A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
children: standard_answer === null || standard_answer === void 0 ? void 0 : standard_answer.map(function (e, i) {
|
|
|
var _e$text;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: ["\u586B\u7A7A", i + 1, "\uFF1A", e === null || e === void 0 ? void 0 : (_e$text = e.text) === null || _e$text === void 0 ? void 0 : _e$text.join('、')]
|
|
|
});
|
|
|
})
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u4F60\u7684\u7B54\u6848\uFF1A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
className: "c-red",
|
|
|
children: actual_output === null || actual_output === void 0 ? void 0 : actual_output.map(function (e, i) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: ["\u586B\u7A7A", i + 1, "\uFF1A", e]
|
|
|
});
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: ["\u6B63\u786E\u9009\u9879\uFF1A", /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
children: standard_answer
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: ["\u4F60\u7684\u9009\u9879\uFF1A", /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
className: "c-red",
|
|
|
children: actual_output
|
|
|
})]
|
|
|
})]
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u9519\u8BEF\uFF0C\u4E0D\u652F\u6301\u67E5\u770B"
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u5C1A\u672A\u63D0\u4EA4\uFF0C\u6682\u4E0D\u652F\u6301\u67E5\u770B"
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
|
|
|
//moveY = 0.01 时,表示测试集最大化
|
|
|
/* harmony default export */ var test_cast_list = (function (_ref2) {
|
|
|
var onResizeSetContainer = _ref2.onResizeSetContainer,
|
|
|
moveY = _ref2.moveY,
|
|
|
had_submmit = _ref2.had_submmit,
|
|
|
_ref2$test_sets = _ref2.test_sets,
|
|
|
test_sets = _ref2$test_sets === void 0 ? [] : _ref2$test_sets,
|
|
|
challenge_chooses_count = _ref2.challenge_chooses_count,
|
|
|
choose_correct_num = _ref2.choose_correct_num;
|
|
|
var _useState = (0,react.useState)(-1),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
index = _useState2[0],
|
|
|
setIndex = _useState2[1];
|
|
|
function trigger(id) {
|
|
|
setIndex(id === index ? -1 : id);
|
|
|
}
|
|
|
var isOk = choose_correct_num === challenge_chooses_count;
|
|
|
function onResizeSet() {
|
|
|
onResizeSetContainer(moveY);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "test-header",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "active",
|
|
|
children: "\u6D4B\u8BD5\u7ED3\u679C"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onResizeSet,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont ".concat(moveY === 0.01 ? 'icon-shousuo' : 'icon-zhankai', " icon-zhankai")
|
|
|
})
|
|
|
})]
|
|
|
}), had_submmit ? /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
className: "test-result ".concat(isOk ? 'success' : 'failer'),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: "count",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
width: 16,
|
|
|
src: isOk ? success/* default */.Z : mark/* default */.Z
|
|
|
}), choose_correct_num, " / ", challenge_chooses_count, " \u5171\u6709", challenge_chooses_count, "\u9898\uFF0C"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: isOk ? '全部通过' : "\u5176\u4E2D".concat(challenge_chooses_count - choose_correct_num, "\u9898\u76EE\u7ED3\u679C\u4E0D\u5339\u914D\u3002\u8BE6\u60C5\u5982\u4E0B\uFF1A")
|
|
|
})]
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)("ul", {
|
|
|
className: "test-case-list",
|
|
|
children: test_sets.map(function (item, i) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(TestCaseItem, objectSpread2_default()(objectSpread2_default()({
|
|
|
had_submmit: had_submmit,
|
|
|
title: "\u9898\u76EE".concat(i + 1)
|
|
|
}, item), {}, {
|
|
|
isActive: index === i,
|
|
|
id: i,
|
|
|
onActive: trigger
|
|
|
}), 'item' + i);
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/footer-bar/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var footer_barmodules = ({"action-container":"action-container___Xcx9G","eval-btn-group":"eval-btn-group___b8ds5","eval-desc":"eval-desc___bIcYm","btn-run":"btn-run___fh7pl","btn-run-self":"btn-run-self___Bwz1A","ghost-link":"ghost-link___Y8dGm","link":"link___PPhWD"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/footer-bar/run.png
|
|
|
var run_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjk3RTBEMDM2MDE3ODExRUI4QzEzQUNFNDcxODM2QjJDIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjk3RTBEMDM3MDE3ODExRUI4QzEzQUNFNDcxODM2QjJDIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6OTdFMEQwMzQwMTc4MTFFQjhDMTNBQ0U0NzE4MzZCMkMiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6OTdFMEQwMzUwMTc4MTFFQjhDMTNBQ0U0NzE4MzZCMkMiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6ejzPSAAACsUlEQVR42ryYz08TQRTHp9vQQkFPlAAHDXjxR2LwoEbhpCXon1DPpf0PbP8UwOhV/QOM8QIXIIRwASNtYo0RIye9FIF4Yf2O+U7ysmnrzM5uX/JJu7sz730zOzvz3mTCMFSONgOWwAK4Aa6CS3x2Ar6BJtgEH8BXJ+9akAVZUAZb4CK0twv2KdPHf2PZiCmBpghyAt6CGrgPJkCeTPCefvaGbY016Su2oGGwKhx+AVUwZjmqim0r7Gtslb6dBBXBLh2cg+cg5yAkSo4+zulzlzGsBOmGLTEqcx5CosyJ0Wp1ExXtUAA77PARTCYoxjBJ3yFjFfoJesGGnzlBVUoUGSNkzK6CSmLO3ElRjHx9Zk6VooICcMiHjQGIMTTEkpCVgsp80AZDls5WPL88xVhtxi5LQZu8uezgLOQqPOUpqip8/RM0wyVer6qjjoK0/QAPPASNMrbWMBtgO3sCMuAdOFXuNg02wLKKZ6eMrTUsaUHzfLCu4lserIEVkIvR38Se14Ju8WJf+VuNozXl2O+Avzf1O/zJuTDu+O77meu8Gme/X4FIrjoqOXOdVyb2WKDStYxrh4Bpp7bLCQo5Bo840W3MxP6tBX3nxbWExGyDu/y1NRP7SAs65MXtBMSscWSOHfuZ2J8CVgfaHnsI+cNPvsb/rmZib+lPbpbLdsdj63jouXV0zNaRxOY67bm5VqKbq0/6kU8r/ciK2qs+wASt3itBkynsWcKVRr8U9owxF3sl+a9Ekl8cUJL/0rYMOkixDNq3LYMGUSi2XQpFg67J9kRZ1EiglK6LsmevV93Xz8lIl8OGiuPiWWCftu9hg2RRvEJzHPOa1cI9DvsQKfJelW3kcUxLfk0+guSB1bbjgVXIPs9sD6wyMY/0nvJI7zq4IvIZnfkdgRY37feuR3p/BRgAhrFnXQBvMBoAAAAASUVORK5CYII=";
|
|
|
// EXTERNAL MODULE: ./node_modules/lodash/lodash.js
|
|
|
var lodash = __webpack_require__(96486);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/footer-bar/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var footer_bar = (function (_ref) {
|
|
|
var _test_sets$;
|
|
|
var st = _ref.st,
|
|
|
prev_game = _ref.prev_game,
|
|
|
next_game = _ref.next_game,
|
|
|
time_limit = _ref.time_limit,
|
|
|
record_consume_time = _ref.record_consume_time,
|
|
|
loading = _ref.loading,
|
|
|
vnc_url = _ref.vnc_url,
|
|
|
linux_vnc = _ref.linux_vnc,
|
|
|
windows_vnc = _ref.windows_vnc,
|
|
|
shixun = _ref.shixun,
|
|
|
game = _ref.game,
|
|
|
onRun = _ref.onRun,
|
|
|
dispatch = _ref.dispatch,
|
|
|
onShowTestCaseList = _ref.onShowTestCaseList,
|
|
|
chooses = _ref.chooses,
|
|
|
unity_3d_routes = _ref.unity_3d_routes,
|
|
|
user = _ref.user,
|
|
|
is_last_game = _ref.is_last_game,
|
|
|
onUpdateCode = _ref.onUpdateCode,
|
|
|
test_sets = _ref.test_sets,
|
|
|
challenge = _ref.challenge,
|
|
|
isU3d = _ref.isU3d,
|
|
|
game_report_id = _ref.game_report_id;
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
var hasNextGame = !is_last_game && !loading && (shixun.status > 0 || (user === null || user === void 0 ? void 0 : user.identity) < 5);
|
|
|
var isFinishChooseRepository = st === 1 && game.status === 2;
|
|
|
var runTextEnum = ['自测运行', '正在启动', '停止运行', '正在停止'];
|
|
|
var _useState = (0,react.useState)(0),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
count = _useState2[0],
|
|
|
setCount = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)(0),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
prevResutCount = _useState4[0],
|
|
|
setPrevResutCount = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)(false),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
showPrevResult = _useState6[0],
|
|
|
setShowPrevResult = _useState6[1];
|
|
|
var _useState7 = (0,react.useState)(false),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
showLogTab = _useState8[0],
|
|
|
setShowLogTab = _useState8[1];
|
|
|
var _useState9 = (0,react.useState)(test_sets === null || test_sets === void 0 ? void 0 : (_test_sets$ = test_sets[0]) === null || _test_sets$ === void 0 ? void 0 : _test_sets$['input']),
|
|
|
_useState10 = slicedToArray_default()(_useState9, 2),
|
|
|
inputValue = _useState10[0],
|
|
|
setInputValue = _useState10[1];
|
|
|
var _useState11 = (0,react.useState)(false),
|
|
|
_useState12 = slicedToArray_default()(_useState11, 2),
|
|
|
loadingRun = _useState12[0],
|
|
|
setLoadingRun = _useState12[1];
|
|
|
var _useState13 = (0,react.useState)(runTextEnum[0]),
|
|
|
_useState14 = slicedToArray_default()(_useState13, 2),
|
|
|
runText = _useState14[0],
|
|
|
setRunText = _useState14[1];
|
|
|
var isRunRef = (0,react.useRef)(false);
|
|
|
var _useState15 = (0,react.useState)(0),
|
|
|
_useState16 = slicedToArray_default()(_useState15, 2),
|
|
|
time = _useState16[0],
|
|
|
settiom = _useState16[1];
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (count > 0) {
|
|
|
setTimeout(function () {
|
|
|
setCount(count - 1);
|
|
|
}, 1000);
|
|
|
}
|
|
|
}, [count]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (time > 0) {
|
|
|
setTimeout(function () {
|
|
|
settiom(time - 1);
|
|
|
}, 1000);
|
|
|
}
|
|
|
}, [time]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (prevResutCount > 0) {
|
|
|
setTimeout(function () {
|
|
|
setPrevResutCount(prevResutCount - 1);
|
|
|
}, 1000);
|
|
|
} else {
|
|
|
// setShowPrevResult(false)
|
|
|
}
|
|
|
}, [prevResutCount]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
var unSub1 = mediator/* default.subscribe */.Z.subscribe('showRunCode', function (status) {
|
|
|
setShowLogTab(status);
|
|
|
});
|
|
|
var unSub2 = mediator/* default.subscribe */.Z.subscribe('caseInputValue', function (value) {
|
|
|
setInputValue(value);
|
|
|
});
|
|
|
var unRun3 = mediator/* default.subscribe */.Z.subscribe('runCodeFinish', function () {
|
|
|
isRunRef.current = false;
|
|
|
setLoadingRun(false);
|
|
|
setRunText(runTextEnum[0]);
|
|
|
if (time > 0) {} else {
|
|
|
settiom(5);
|
|
|
}
|
|
|
});
|
|
|
var unsub = mediator/* default.subscribe */.Z.subscribe('eval-code-finish', function () {
|
|
|
if (unity_3d_routes) {
|
|
|
setShowPrevResult(true);
|
|
|
}
|
|
|
if (st === 1) {} else {
|
|
|
setCount(10);
|
|
|
}
|
|
|
});
|
|
|
return function () {
|
|
|
unsub();
|
|
|
unSub1();
|
|
|
unSub2();
|
|
|
unRun3();
|
|
|
};
|
|
|
}, []);
|
|
|
var toStop = function toStop() {
|
|
|
isRunRef.current = false;
|
|
|
setRunText(runTextEnum[3]);
|
|
|
mediator/* default.publish */.Z.publish('runCode', {
|
|
|
type: 'stop'
|
|
|
});
|
|
|
(0,service/* stopLogOutput */.Yv)(params.taskId);
|
|
|
setTimeout(function () {
|
|
|
if (time > 0) {} else {
|
|
|
settiom(5);
|
|
|
}
|
|
|
setRunText(runTextEnum[0]);
|
|
|
setLoadingRun(false);
|
|
|
settiom(5);
|
|
|
}, 2500);
|
|
|
};
|
|
|
var toRun = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
isRunRef.current = true;
|
|
|
_context2.next = 3;
|
|
|
return onUpdateCode();
|
|
|
case 3:
|
|
|
setRunText(runTextEnum[1]);
|
|
|
mediator/* default.publish */.Z.publish('show-case-result', true);
|
|
|
setTimeout( /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var _res$data, _res$data$data_list;
|
|
|
var res, _res$data2, _res$data3;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return (0,service/* logOutput */.h$)(params.taskId, {
|
|
|
test_case_content: inputValue
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
if (!(res !== null && res !== void 0 && (_res$data = res.data) !== null && _res$data !== void 0 && (_res$data$data_list = _res$data.data_list) !== null && _res$data$data_list !== void 0 && _res$data$data_list.length)) {
|
|
|
_context.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
mediator/* default.publish */.Z.publish('pod-restrict-data', {
|
|
|
identifier: res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.identifier,
|
|
|
data_list: res === null || res === void 0 ? void 0 : (_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.data_list
|
|
|
});
|
|
|
return _context.abrupt("return");
|
|
|
case 6:
|
|
|
mediator/* default.publish */.Z.publish('showRunCodeTab', true);
|
|
|
mediator/* default.publish */.Z.publish('runCode', {
|
|
|
type: 'start'
|
|
|
});
|
|
|
case 8:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
})), 100);
|
|
|
setTimeout(function () {
|
|
|
if (isRunRef.current) {
|
|
|
setRunText(runTextEnum[2]);
|
|
|
setLoadingRun(false);
|
|
|
}
|
|
|
}, 1000);
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function toRun() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var onStartOrStopRun = /*#__PURE__*/function () {
|
|
|
var _ref4 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
setLoadingRun(true);
|
|
|
if (runText === runTextEnum[2]) {
|
|
|
toStop();
|
|
|
} else {
|
|
|
toRun();
|
|
|
}
|
|
|
case 2:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return function onStartOrStopRun() {
|
|
|
return _ref4.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: footer_barmodules["action-container"],
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container ".concat(footer_barmodules["eval-desc"]),
|
|
|
children: [time_limit && challenge !== null && challenge !== void 0 && challenge.with_code_file ? /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u672C\u5173\u6700\u5927\u6267\u884C\u65F6\u95F4\uFF1A".concat(time_limit, "\u79D2")
|
|
|
}) : null, record_consume_time && challenge !== null && challenge !== void 0 && challenge.with_code_file ? /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
children: ["\u672C\u6B21\u8BC4\u6D4B\u8017\u65F6(\u7F16\u8BD1\u3001\u8FD0\u884C\u603B\u65F6\u95F4)\uFF1A", record_consume_time, " \u79D2"]
|
|
|
}) : null, game_report_id ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
target: "_blank",
|
|
|
className: footer_barmodules.link,
|
|
|
href: "/report/".concat(params.taskId, "/").concat(game_report_id),
|
|
|
children: "\u4EE3\u7801\u6027\u80FD\u68C0\u6D4B"
|
|
|
}) : null, (vnc_url || windows_vnc || linux_vnc || isU3d) && (challenge === null || challenge === void 0 ? void 0 : challenge.with_code_file) && /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
title: "\u663E\u793A/\u9690\u85CF\u6D4B\u8BD5\u7ED3\u679C",
|
|
|
onClick: function onClick() {
|
|
|
mediator/* default.publish */.Z.publish('show-case-result');
|
|
|
},
|
|
|
children: "\u663E\u793A/\u9690\u85CF\u6D4B\u8BD5\u7ED3\u679C"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container ".concat(footer_barmodules["eval-btn-group"]),
|
|
|
children: [prev_game && !loading ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/tasks/".concat(prev_game).concat(location.search),
|
|
|
onClick: function onClick(e) {
|
|
|
e.preventDefault();
|
|
|
if (params.courseId && params.homeworkId) {
|
|
|
setTimeout(function () {
|
|
|
return window.location.href = "/tasks/".concat(params.courseId, "/").concat(params.homeworkId, "/").concat(prev_game).concat(location.search);
|
|
|
}, 300);
|
|
|
return;
|
|
|
}
|
|
|
setTimeout(function () {
|
|
|
return window.location.href = "/tasks/".concat(prev_game).concat(location.search);
|
|
|
}, 300);
|
|
|
},
|
|
|
className: footer_barmodules["ghost-link"],
|
|
|
children: "\u4E0A\u4E00\u5173"
|
|
|
}) : null, hasNextGame ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/tasks/".concat(next_game).concat(location.search),
|
|
|
onClick: function onClick(e) {
|
|
|
e.preventDefault();
|
|
|
if (shixun.task_pass || game.status === 2 || (user === null || user === void 0 ? void 0 : user.identity) < 5) {
|
|
|
if (params.courseId && params.homeworkId) {
|
|
|
setTimeout(function () {
|
|
|
return window.location.href = "/tasks/".concat(params.courseId, "/").concat(params.homeworkId, "/").concat(next_game).concat(location.search);
|
|
|
}, 300);
|
|
|
return;
|
|
|
}
|
|
|
setTimeout(function () {
|
|
|
return window.location.href = "/tasks/".concat(next_game).concat(location.search);
|
|
|
}, 300);
|
|
|
return;
|
|
|
}
|
|
|
modal/* default.warning */.Z.warning({
|
|
|
centered: true,
|
|
|
width: 530,
|
|
|
title: '提示',
|
|
|
okText: '我知道了',
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u8BE5\u5B9E\u8DF5\u9879\u76EE\u8BBE\u7F6E\u4E86\u4E0D\u5141\u8BB8\u8DF3\u5173\u3002\u901A\u8FC7\u5F53\u524D\u5173\u5361\u540E\uFF0C\u624D\u80FD\u8FDB\u5165\u4E0B\u4E00\u5173\u3002"
|
|
|
})
|
|
|
});
|
|
|
},
|
|
|
className: footer_barmodules["ghost-link"],
|
|
|
children: "\u4E0B\u4E00\u5173"
|
|
|
}) : null, showPrevResult && (challenge === null || challenge === void 0 ? void 0 : challenge.show_type) === 1 && /*#__PURE__*/(0,jsx_runtime.jsx)("button", {
|
|
|
onClick: function onClick() {
|
|
|
dispatch({
|
|
|
type: 'SHOW_PICTURE_VIEW'
|
|
|
});
|
|
|
},
|
|
|
style: {
|
|
|
minWidth: '72px',
|
|
|
marginRight: 10
|
|
|
}
|
|
|
// isFinishChooseRepository
|
|
|
,
|
|
|
className: "btn-run",
|
|
|
title:
|
|
|
// isFinishChooseRepository
|
|
|
// ? '已通关的选择题任务无法再次测评';
|
|
|
'查看效果',
|
|
|
children: "\u67E5\u770B\u6548\u679C"
|
|
|
}), !!showLogTab && shixun.hide_code !== 2 && !isU3d && /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.Z, {
|
|
|
onClick: (0,lodash.throttle)(onStartOrStopRun, 2000),
|
|
|
loading: loadingRun,
|
|
|
danger: true,
|
|
|
disabled: time > 0
|
|
|
// disabled={loading || count > 0}
|
|
|
,
|
|
|
className: "".concat(footer_barmodules["btn-run-self"], " mr10"),
|
|
|
children: time > 0 ? "".concat(time, "S") : runText
|
|
|
}), (challenge === null || challenge === void 0 ? void 0 : challenge.with_code_file) && /*#__PURE__*/(0,jsx_runtime.jsx)("button", {
|
|
|
onClick: /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
if (!(st === 1)) {
|
|
|
_context4.next = 4;
|
|
|
break;
|
|
|
}
|
|
|
if (!((chooses === null || chooses === void 0 ? void 0 : chooses.length) <= 0)) {
|
|
|
_context4.next = 4;
|
|
|
break;
|
|
|
}
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
centered: true,
|
|
|
// width: 530,
|
|
|
title: '提示',
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "tc",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u60A8\u8FD8\u672A\u6DFB\u52A0\u9898\u76EE\uFF0C\u8BF7\u6DFB\u52A0\u540E\u8BC4\u6D4B\uFF01"
|
|
|
})
|
|
|
}),
|
|
|
okText: "\u786E\u8BA4",
|
|
|
cancelText: '取消'
|
|
|
});
|
|
|
return _context4.abrupt("return");
|
|
|
case 4:
|
|
|
setShowPrevResult(false);
|
|
|
_context4.next = 7;
|
|
|
return onRun();
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
})),
|
|
|
style: {
|
|
|
minWidth: '72px'
|
|
|
}
|
|
|
// isFinishChooseRepository
|
|
|
,
|
|
|
disabled: loading || count > 0,
|
|
|
className: footer_barmodules["btn-run"],
|
|
|
title:
|
|
|
// isFinishChooseRepository
|
|
|
// ? '已通关的选择题任务无法再次测评';
|
|
|
'运行评测',
|
|
|
children: count > 0 ? "".concat(count, "S") : /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [' ', /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: run_namespaceObject,
|
|
|
alt: "run",
|
|
|
width: 18
|
|
|
}), " ", /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
children: "\u8BC4\u6D4B"
|
|
|
}), ' ']
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/components/Exercise/ip.tsx
|
|
|
var Exercise_ip = __webpack_require__(79443);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/choose-repository/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function choose_repository_reducer(state, action) {
|
|
|
switch (action.type) {
|
|
|
case constant/* EVAL_CHOOSE_START */.wj:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
loading: true
|
|
|
});
|
|
|
case constant/* EVAL_CHOOSE_END */.V1:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
loading: false
|
|
|
});
|
|
|
case constant/* SET_CHOOSE_ANSWERS */.OJ:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}
|
|
|
/* harmony default export */ var choose_repository = (function (_ref) {
|
|
|
var taskData = _ref.taskData,
|
|
|
moveY = _ref.moveY,
|
|
|
onResizeYStart = _ref.onResizeYStart,
|
|
|
onResizeSetContainer = _ref.onResizeSetContainer,
|
|
|
onEval = _ref.onEval,
|
|
|
lastedGetTaskInfoTime = _ref.lastedGetTaskInfoTime,
|
|
|
onUpdateCode = _ref.onUpdateCode,
|
|
|
_dispatch = _ref._dispatch;
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
var urlParams = (0,_umi_production_exports.useParams)();
|
|
|
var chooses = taskData.chooses,
|
|
|
choose_test_cases = taskData.choose_test_cases,
|
|
|
game = taskData.game;
|
|
|
var test_sets = choose_test_cases.test_sets,
|
|
|
challenge_chooses_count = choose_test_cases.challenge_chooses_count,
|
|
|
choose_correct_num = choose_test_cases.choose_correct_num,
|
|
|
had_submmit = choose_test_cases.had_submmit;
|
|
|
var getAns = (0,react.useCallback)(function () {
|
|
|
var rs = [];
|
|
|
rs.length = challenge_chooses_count;
|
|
|
if (had_submmit) {
|
|
|
rs = test_sets.map(function (item) {
|
|
|
if (item.question_name === '判断题') {
|
|
|
return item.actual_output === '正确' ? 'true' : item.actual_output === '错误' ? 'false' : undefined;
|
|
|
}
|
|
|
return item.actual_output;
|
|
|
});
|
|
|
}
|
|
|
return rs;
|
|
|
}, [lastedGetTaskInfoTime]);
|
|
|
var _useReducer = (0,react.useReducer)(choose_repository_reducer, {
|
|
|
loading: false,
|
|
|
answers: getAns()
|
|
|
}),
|
|
|
_useReducer2 = slicedToArray_default()(_useReducer, 2),
|
|
|
state = _useReducer2[0],
|
|
|
dispatch = _useReducer2[1];
|
|
|
(0,react.useEffect)(function () {
|
|
|
dispatch({
|
|
|
type: constant/* SET_CHOOSE_ANSWERS */.OJ,
|
|
|
payload: {
|
|
|
answers: getAns()
|
|
|
}
|
|
|
});
|
|
|
}, [lastedGetTaskInfoTime]);
|
|
|
var answers = state.answers,
|
|
|
loading = state.loading;
|
|
|
function onSetAnswers(index, value) {
|
|
|
answers[index] = value;
|
|
|
dispatch({
|
|
|
type: constant/* SET_CHOOSE_ANSWERS */.OJ,
|
|
|
payload: {
|
|
|
answers: answers
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
function verifyAnswer() {
|
|
|
var isOk = true;
|
|
|
for (var i = 0; i < challenge_chooses_count; i++) {
|
|
|
var _answers$i, _answers$i$filter;
|
|
|
if (!answers[i] || Array.isArray(answers[i]) && !((_answers$i = answers[i]) !== null && _answers$i !== void 0 && (_answers$i$filter = _answers$i.filter(function (e) {
|
|
|
return !!e;
|
|
|
})) !== null && _answers$i$filter !== void 0 && _answers$i$filter.length)) {
|
|
|
es_message/* default.info */.ZP.info("\u8BF7\u5148\u7ED9\u7B2C".concat(i + 1, "\u9898\u9009\u62E9\u7B54\u6848\uFF01"));
|
|
|
isOk = false;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
return isOk;
|
|
|
}
|
|
|
function onRun() {
|
|
|
return _onRun.apply(this, arguments);
|
|
|
}
|
|
|
function _onRun() {
|
|
|
_onRun = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var _taskData$challenge, extraParams, ip, response;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
if (!verifyAnswer()) {
|
|
|
_context.next = 12;
|
|
|
break;
|
|
|
}
|
|
|
dispatch({
|
|
|
type: constant/* EVAL_CHOOSE_START */.wj
|
|
|
});
|
|
|
extraParams = urlParams.courseId && urlParams.homeworkId ? {
|
|
|
homework_common_id: urlParams.homeworkId
|
|
|
} : {};
|
|
|
if (!(searchParams.get("ip_limit") === 'inner' || searchParams.get("ip_bind") === "true")) {
|
|
|
_context.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 6;
|
|
|
return (0,Exercise_ip/* findLocalIp */.y)({
|
|
|
ip_limit: searchParams.get("ip_limit"),
|
|
|
ip_bind: searchParams.get("ip_bind") === "true" ? true : false
|
|
|
});
|
|
|
case 6:
|
|
|
ip = _context.sent;
|
|
|
case 7:
|
|
|
_context.next = 9;
|
|
|
return (0,service/* evalateChooseGame */.zl)(game.identifier, objectSpread2_default()({
|
|
|
answer: answers,
|
|
|
challenge_id: taskData === null || taskData === void 0 ? void 0 : (_taskData$challenge = taskData.challenge) === null || _taskData$challenge === void 0 ? void 0 : _taskData$challenge.id,
|
|
|
subject_id: searchParams.get("subject_id") || '',
|
|
|
question_id: searchParams.get("questionId"),
|
|
|
exercise_id: searchParams.get("exercisesId"),
|
|
|
ip: ip
|
|
|
}, extraParams));
|
|
|
case 9:
|
|
|
response = _context.sent;
|
|
|
onEval(response);
|
|
|
dispatch({
|
|
|
type: constant/* EVAL_CHOOSE_END */.V1
|
|
|
});
|
|
|
case 12:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _onRun.apply(this, arguments);
|
|
|
}
|
|
|
var codeAreaHeight = moveY ? "".concat(moveY - 54, "px") : '70%';
|
|
|
var testSetHeight = "calc(100% - 3px - 51px - ".concat(codeAreaHeight, ")");
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: choose_repositorymodules["code-area-container"],
|
|
|
style: {
|
|
|
height: codeAreaHeight
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(topics, {
|
|
|
chooses: chooses,
|
|
|
answers: answers,
|
|
|
onSetAnswers: onSetAnswers
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: choose_repositorymodules["resize-y-bar"],
|
|
|
onMouseDown: onResizeYStart,
|
|
|
draggable: false,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-guangbiao",
|
|
|
draggable: false
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: choose_repositorymodules["test-set-container"],
|
|
|
style: {
|
|
|
height: testSetHeight
|
|
|
},
|
|
|
children: loading ? /*#__PURE__*/(0,jsx_runtime.jsx)(Spinner/* default */.Z, {}) : /*#__PURE__*/(0,jsx_runtime.jsx)(test_cast_list, {
|
|
|
had_submmit: had_submmit,
|
|
|
moveY: moveY,
|
|
|
onResizeSetContainer: onResizeSetContainer,
|
|
|
test_sets: test_sets,
|
|
|
challenge_chooses_count: challenge_chooses_count,
|
|
|
choose_correct_num: choose_correct_num
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: choose_repositorymodules["action-container"],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(footer_bar, objectSpread2_default()(objectSpread2_default()({
|
|
|
onUpdateCode: onUpdateCode
|
|
|
}, taskData), {}, {
|
|
|
loading: loading,
|
|
|
onRun: onRun,
|
|
|
dispatch: _dispatch
|
|
|
}))
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/assets/images/massage.png
|
|
|
var massage_namespaceObject = "data:image/png;base64,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";
|
|
|
;// CONCATENATED MODULE: ./src/components/MessageIcon/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var MessageIcon = function MessageIcon(_ref) {
|
|
|
var userId = _ref.userId,
|
|
|
challengeId = _ref.challengeId;
|
|
|
var _useState = useState(true),
|
|
|
_useState2 = _slicedToArray(_useState, 2),
|
|
|
tooltipOpen = _useState2[0],
|
|
|
setTooltipOpen = _useState2[1];
|
|
|
var moveElement = useRef();
|
|
|
useEffect(function () {
|
|
|
if (moveElement.current) {
|
|
|
var onMouseDown = function onMouseDown(e) {
|
|
|
setTooltipOpen(false);
|
|
|
var box = moveElement.current.getBoundingClientRect();
|
|
|
startLeft = box.left;
|
|
|
startTop = box.top;
|
|
|
startPageX = e.pageX;
|
|
|
startPageY = e.pageY;
|
|
|
dragging = true;
|
|
|
click = true;
|
|
|
document.onselectstart = function () {
|
|
|
return false;
|
|
|
};
|
|
|
};
|
|
|
var onMouseUp = function onMouseUp() {
|
|
|
dragging = false;
|
|
|
document.onselectstart = null;
|
|
|
if (click) {
|
|
|
click = false;
|
|
|
openNewWindow("/chatgpt?id=".concat(userId, "&position=").concat(challengeId));
|
|
|
}
|
|
|
};
|
|
|
var onMouseMove = function onMouseMove(e) {
|
|
|
if (dragging) {
|
|
|
click = false;
|
|
|
var spareWidth = e.pageX - startPageX;
|
|
|
var spareHeight = e.pageY - startPageY;
|
|
|
moveElement.current.style.left = "".concat(startLeft + spareWidth, "px");
|
|
|
moveElement.current.style.top = "".concat(startTop + spareHeight, "px");
|
|
|
}
|
|
|
};
|
|
|
console.log(moveElement.current);
|
|
|
var startLeft = 0;
|
|
|
var startTop = 0;
|
|
|
var startPageX = 0;
|
|
|
var startPageY = 0;
|
|
|
var dragging = false;
|
|
|
var click = false;
|
|
|
moveElement.current.addEventListener('mousedown', onMouseDown);
|
|
|
document.addEventListener('mousemove', onMouseMove);
|
|
|
document.addEventListener('mouseup', onMouseUp);
|
|
|
return function () {
|
|
|
moveElement.current.removeEventListener('mousedown', onMouseDown);
|
|
|
document.removeEventListener('mousemove', onMouseMove);
|
|
|
document.removeEventListener('mouseup', onMouseUp);
|
|
|
};
|
|
|
}
|
|
|
}, [moveElement.current]);
|
|
|
useEffect(function () {
|
|
|
setTimeout(function () {
|
|
|
setTooltipOpen(false);
|
|
|
}, 5000);
|
|
|
}, []);
|
|
|
return /*#__PURE__*/_jsx(_Tooltip, {
|
|
|
open: tooltipOpen,
|
|
|
placement: "topRight",
|
|
|
title: "\u5B66\u4E60\u4E2D\u6709\u7591\u95EE\u53EF\u4EE5\u70B9\u51FB\u8FD9\u91CC\u5411\u6559\u5E08\u8BF7\u6C42\u5E2E\u52A9",
|
|
|
children: /*#__PURE__*/_jsx("div", {
|
|
|
ref: moveElement,
|
|
|
draggable: false,
|
|
|
style: {
|
|
|
width: 54,
|
|
|
height: 54,
|
|
|
position: "fixed",
|
|
|
zIndex: 1000,
|
|
|
bottom: 223,
|
|
|
right: 26,
|
|
|
borderRadius: '50%',
|
|
|
cursor: 'pointer',
|
|
|
overflow: 'hidden'
|
|
|
},
|
|
|
children: /*#__PURE__*/_jsx("img", {
|
|
|
draggable: false,
|
|
|
src: Massage,
|
|
|
width: 54
|
|
|
})
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var components_MessageIcon = ((/* unused pure expression or super */ null && (MessageIcon)));
|
|
|
// EXTERNAL MODULE: ./src/pages/Demo/index.tsx + 15 modules
|
|
|
var Demo = __webpack_require__(64161);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/evaluate-result/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/evaluate-result/passpart.png
|
|
|
var passpart_namespaceObject = "data:image/png;base64,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";
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/evaluate-result/passall.png
|
|
|
var passall_namespaceObject = "data:image/png;base64,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";
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/evaluate-result/empiricgreen.png
|
|
|
var empiricgreen_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjNEMUNCRTZCNDE1MzExRThBREM4QUVGRUEwQjY3M0FFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjNEMUNCRTZDNDE1MzExRThBREM4QUVGRUEwQjY3M0FFIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6M0QxQ0JFNjk0MTUzMTFFOEFEQzhBRUZFQTBCNjczQUUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6M0QxQ0JFNkE0MTUzMTFFOEFEQzhBRUZFQTBCNjczQUUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6xcnMrAAABN0lEQVR42qzTsUtCURTH8fskisZoa4ogcGhpcYuW+gsk+icyGiyEoNVB0i3EWYJwaG2Koj+gBiEqqIasRQlCHCJ8fU+cB4fLldS68BHO755zeQ/vi7L3q4vOuRMsu9HWNTZT/NTHGHY6U5cDMm78lUm5P65/OaDtZXsoB3or2PWythxQ9cInFHBrsjvNHr3eqhxQxIsJS5jAlsl29GlLJpOZooQ979HmsY9zHOMUZ8hjwfTJTC/iIkkR4RIruvmJJXQxhVhfaVr3ryCDcfIvSMM2+lpP4ghveMahGe5rb+z/jTeomXoNG1hH1uQ17f1ZySskaxYPmNH6FR9Ia/0O+XY6gy6SbByYes4MO93r/HYT5V40A3kzcGeCB3whF8hzujfUt3CBhqkbmo30McnFaan8oKZvAQYAarBDzHlRpVIAAAAASUVORK5CYII=";
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/evaluate-result/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//showViewResult 当游戏类型是显示描绘图片或web显示效果 并且编译通过时,增加查看效果
|
|
|
|
|
|
|
|
|
/* harmony default export */ var evaluate_result = (function (_ref) {
|
|
|
var star = _ref.star,
|
|
|
gold = _ref.gold,
|
|
|
experience = _ref.experience,
|
|
|
next_game = _ref.next_game,
|
|
|
next_shixun = _ref.next_shixun,
|
|
|
subject_done = _ref.subject_done,
|
|
|
onCloseResult = _ref.onCloseResult,
|
|
|
isPictureView = _ref.isPictureView,
|
|
|
webDisplayUrl = _ref.webDisplayUrl,
|
|
|
onShowPictureView = _ref.onShowPictureView,
|
|
|
history = _ref.history,
|
|
|
onStarChange = _ref.onStarChange;
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
function onNext() {
|
|
|
onCloseResult();
|
|
|
console.log('`/tasks/${next_game}${location.search}`', "/tasks/".concat(next_game).concat(location.search));
|
|
|
// history.push(`/tasks/${next_game}${location.search}`);
|
|
|
if (params.courseId && params.homeworkId) {
|
|
|
setTimeout(function () {
|
|
|
window.location.href = "/tasks/".concat(params.courseId, "/").concat(params.homeworkId, "/").concat(next_game).concat(location.search);
|
|
|
}, 300);
|
|
|
return;
|
|
|
}
|
|
|
setTimeout(function () {
|
|
|
window.location.href = "/tasks/".concat(next_game).concat(location.search);
|
|
|
}, 300);
|
|
|
}
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
// console.log('---------', had_done);
|
|
|
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "evaluate-result-container",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "evaluate-result-body",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
className: "close-line",
|
|
|
onClick: onCloseResult,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-roundclose",
|
|
|
style: {
|
|
|
fontSize: '32px'
|
|
|
}
|
|
|
})
|
|
|
}), !searchParams.get("subject_id") && /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
width: 652,
|
|
|
src: next_game || !subject_done ? passpart_namespaceObject : passall_namespaceObject,
|
|
|
alt: "\u901A\u5173"
|
|
|
}), searchParams.get("subject_id") && /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
width: 652,
|
|
|
src: subject_done ? passall_namespaceObject : passpart_namespaceObject,
|
|
|
alt: "\u901A\u5173"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "gold-and-experience",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
className: "flex-container",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "gold-circle"
|
|
|
}), " +", gold]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
className: "flex-container",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: empiricgreen_namespaceObject
|
|
|
}), " +", experience]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("footer", {
|
|
|
children: [!star ? /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
className: "star-tip",
|
|
|
children: "\u60A8\u7684\u8BC4\u4EF7\u51B3\u5B9A\u8001\u5E08\u7684\u6C5F\u6E56\u5730\u4F4D~"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(rate/* default */.Z, {
|
|
|
defaultValue: 0,
|
|
|
allowClear: false,
|
|
|
onChange: onStarChange
|
|
|
})]
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "tc",
|
|
|
children: [next_game ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onNext,
|
|
|
children: "\u4E0B\u4E00\u5173"
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onCloseResult,
|
|
|
children: "\u5B8C\u6210"
|
|
|
}), !!next_shixun && /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: function onClick() {
|
|
|
toShixun(next_shixun, null, false, searchParams.get("subject_id"));
|
|
|
},
|
|
|
children: "\u8FDB\u5165\u4E0B\u4E00\u4E2A\u5B9E\u8BAD"
|
|
|
}), isPictureView ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: function onClick() {
|
|
|
onShowPictureView();
|
|
|
onCloseResult();
|
|
|
},
|
|
|
children: "\u67E5\u770B\u6548\u679C"
|
|
|
}) : null, webDisplayUrl ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
target: "_blank",
|
|
|
href: webDisplayUrl,
|
|
|
children: "\u67E5\u770B\u6548\u679C"
|
|
|
}) : null]
|
|
|
}), searchParams.get("subject_id") && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "tc mt15",
|
|
|
children: [next_shixun && !next_game && "已通过本实训的最后一个关卡,可以进入下一个实训中进行实战", subject_done && "恭喜您,本实践课程的最后一个实训已通关"]
|
|
|
})]
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/utils/urlTool.ts
|
|
|
var urlTool = __webpack_require__(63778);
|
|
|
// EXTERNAL MODULE: ./src/components/monaco-editor/index.jsx + 3 modules
|
|
|
var monaco_editor = __webpack_require__(8691);
|
|
|
// EXTERNAL MODULE: ./src/components/PreviewAll/index.tsx + 1 modules
|
|
|
var PreviewAll = __webpack_require__(36579);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/code-area/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var code_areamodules = ({"code-area-container":"code-area-container___bjERn","only-view":"only-view___LP5ZN","monaco-editor-container":"monaco-editor-container___T0gc3","frame":"frame___k7Y9h"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/code-area/notEditablePath.png
|
|
|
var notEditablePath_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIsAAABuCAYAAAAXkODOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjY4Qjc0NjM3NTI4RTExRThBQTE0QjdDODQ4MEFBMzdGIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjY4Qjc0NjM4NTI4RTExRThBQTE0QjdDODQ4MEFBMzdGIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NjhCNzQ2MzU1MjhFMTFFOEFBMTRCN0M4NDgwQUEzN0YiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NjhCNzQ2MzY1MjhFMTFFOEFBMTRCN0M4NDgwQUEzN0YiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6LemY3AAAa7klEQVR42uxd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";
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/code-area/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var code_area = (function (_ref) {
|
|
|
var content = _ref.content,
|
|
|
language = _ref.language,
|
|
|
theme = _ref.theme,
|
|
|
onCodeChange = _ref.onCodeChange,
|
|
|
onSave = _ref.onSave,
|
|
|
monacoOptions = _ref.monacoOptions,
|
|
|
isEditPath = _ref.isEditPath,
|
|
|
hide_code = _ref.hide_code,
|
|
|
code_edit_permission = _ref.code_edit_permission,
|
|
|
onUpdateCode = _ref.onUpdateCode,
|
|
|
forbidCopy = _ref.forbidCopy,
|
|
|
filename = _ref.filename,
|
|
|
file_type = _ref.file_type,
|
|
|
taskData = _ref.taskData;
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
var timeRef = (0,react.useRef)();
|
|
|
var _useState = (0,react.useState)(true),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
loading = _useState2[0],
|
|
|
setLoading = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)({}),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
data = _useState4[0],
|
|
|
setData = _useState4[1];
|
|
|
console.log('content:', {
|
|
|
value: content,
|
|
|
language: language,
|
|
|
theme: theme,
|
|
|
onChange: onCodeChange,
|
|
|
onSave: onSave,
|
|
|
forbidCopy: forbidCopy,
|
|
|
options: monacoOptions,
|
|
|
filename: filename,
|
|
|
file_type: file_type
|
|
|
});
|
|
|
(0,react.useEffect)(function () {
|
|
|
timeRef.current = setInterval(function () {
|
|
|
onUpdateCode();
|
|
|
}, 5 * 60 * 1000);
|
|
|
window.addEventListener('message', messageData);
|
|
|
var unSub1 = mediator/* default.subscribe */.Z.subscribe('vnc-reseting', vncReset);
|
|
|
var unSub2 = mediator/* default.subscribe */.Z.subscribe('vnc-reseting-done', vncResetDone);
|
|
|
return function () {
|
|
|
unSub1();
|
|
|
unSub2();
|
|
|
clearInterval(timeRef.current);
|
|
|
window.removeEventListener('message', messageData);
|
|
|
};
|
|
|
}, []);
|
|
|
var vncReset = function vncReset() {
|
|
|
setData({});
|
|
|
setLoading(true);
|
|
|
};
|
|
|
var vncResetDone = function vncResetDone(res) {
|
|
|
setData(res === null || res === void 0 ? void 0 : res.data);
|
|
|
setTimeout(function () {
|
|
|
setLoading(false);
|
|
|
}, 1000);
|
|
|
};
|
|
|
var messageData = function messageData(data) {
|
|
|
switch (data.data) {
|
|
|
case 'updatecode':
|
|
|
onUpdateCode(1);
|
|
|
break;
|
|
|
case 'vsLoadingDone':
|
|
|
setLoading(false);
|
|
|
break;
|
|
|
}
|
|
|
console.log('data:', data);
|
|
|
};
|
|
|
var getWindowVnc = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3() {
|
|
|
var _taskData$myshixun, _res$data, _res$data$data_list;
|
|
|
var res, _res$data2, _res$data3;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
_context3.next = 2;
|
|
|
return (0,utils_fetch/* default */.ZP)("/api/myshixuns/".concat((_taskData$myshixun = taskData.myshixun) === null || _taskData$myshixun === void 0 ? void 0 : _taskData$myshixun.identifier, "/start.json"), {
|
|
|
method: 'get',
|
|
|
params: objectSpread2_default()({}, params)
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context3.sent;
|
|
|
if (!(res !== null && res !== void 0 && (_res$data = res.data) !== null && _res$data !== void 0 && (_res$data$data_list = _res$data.data_list) !== null && _res$data$data_list !== void 0 && _res$data$data_list.length)) {
|
|
|
_context3.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
mediator/* default.publish */.Z.publish('pod-restrict-data', {
|
|
|
identifier: res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.identifier,
|
|
|
data_list: res === null || res === void 0 ? void 0 : (_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.data_list
|
|
|
});
|
|
|
return _context3.abrupt("return");
|
|
|
case 6:
|
|
|
if (!((res === null || res === void 0 ? void 0 : res.status) === -3)) {
|
|
|
_context3.next = 8;
|
|
|
break;
|
|
|
}
|
|
|
return _context3.abrupt("return", new Promise( /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2(resolve, reject) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
content: '检测到您已经开启了其他实验环境,请先关闭环境后,再连接',
|
|
|
okText: '立即关闭',
|
|
|
cancelText: '稍后关闭',
|
|
|
onOk: function () {
|
|
|
var _onOk = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
clearTimeout(timeout.current);
|
|
|
setPercent(0);
|
|
|
_context.next = 4;
|
|
|
return closeWindowsVnc(params.taskId, res === null || res === void 0 ? void 0 : res.message);
|
|
|
case 4:
|
|
|
// resolve(await getWindowVnc());
|
|
|
setLinkNum(linkNum + 1);
|
|
|
return _context.abrupt("return");
|
|
|
case 6:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
function onOk() {
|
|
|
return _onOk.apply(this, arguments);
|
|
|
}
|
|
|
return onOk;
|
|
|
}()
|
|
|
});
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function (_x, _x2) {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}()));
|
|
|
case 8:
|
|
|
if (!((res === null || res === void 0 ? void 0 : res.status) === -1)) {
|
|
|
_context3.next = 10;
|
|
|
break;
|
|
|
}
|
|
|
throw new String(res === null || res === void 0 ? void 0 : res.message);
|
|
|
case 10:
|
|
|
setData(res === null || res === void 0 ? void 0 : res.data);
|
|
|
mediator/* default.publish */.Z.publish('update-windows-time', res === null || res === void 0 ? void 0 : res.data);
|
|
|
return _context3.abrupt("return", res);
|
|
|
case 13:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return function getWindowVnc() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (hide_code === 2) getWindowVnc();
|
|
|
}, [hide_code]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(react.Fragment, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "monaco-editor-container h100",
|
|
|
children: [hide_code !== 2 && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [isEditPath || code_edit_permission ? null : /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
className: code_areamodules["only-view"],
|
|
|
src: notEditablePath_namespaceObject,
|
|
|
alt: "only-view"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(PreviewAll/* default */.Z, {
|
|
|
filename: filename,
|
|
|
type: file_type === 'office' ? 'download' : file_type,
|
|
|
data: content,
|
|
|
style: {
|
|
|
top: 40,
|
|
|
position: 'absolute',
|
|
|
zIndex: 1
|
|
|
},
|
|
|
monacoEditor: {
|
|
|
value: content,
|
|
|
language: language,
|
|
|
theme: theme,
|
|
|
onChange: onCodeChange,
|
|
|
onSave: onSave,
|
|
|
forbidCopy: forbidCopy,
|
|
|
options: monacoOptions,
|
|
|
insertSpaces: monacoOptions.insertSpaces
|
|
|
}
|
|
|
})]
|
|
|
}), hide_code === 2 && /*#__PURE__*/(0,jsx_runtime.jsx)(spin/* default */.Z, {
|
|
|
spinning: loading,
|
|
|
wrapperClassName: code_areamodules.frame,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("iframe", {
|
|
|
src: data === null || data === void 0 ? void 0 : data.link_url
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/choose-repository/test-cast-list/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var test_cast_listmodules = ({"choose-game-item":"choose-game-item___RYHdh","output-title-container":"output-title-container___P2NjC","output-title":"output-title___ZQJkv","test-case-list":"test-case-list___CYyHP","test-header":"test-header___fSQRn","active":"active___bY0Dq","test-result":"test-result___DQXYd","markdown-body":"markdown-body____rqU_","success":"success___iuAG3","failer":"failer___axTtk","count":"count___B_kHY","test-case-item":"test-case-item___E3CU9","case-header":"case-header___xppld","iconfont":"iconfont___LO1VN","description":"description___j4efR","item-desc":"item-desc___ivltA","show":"show___ntNdM","item-tip":"item-tip___ETPck","arrow-down":"arrow-down___oQMCK","test-title":"test-title___mf3Df","arrow-right":"arrow-right___C6f8W","case-info":"case-info___yX5kK","test-case-run-header":"test-case-run-header___iHZR5","test-case-run-wrp":"test-case-run-wrp___qVT1y","diff-panel-container":"diff-panel-container___OEdXu","line-break":"line-break___Ww59n","empty":"empty___izbJX"});
|
|
|
// EXTERNAL MODULE: ./node_modules/store/dist/store.legacy.js
|
|
|
var store_legacy = __webpack_require__(58971);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/html-code-view/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var linkRegex = /<link(?:.*?)href=[\"\'](.+?)[\"\'](?!<)(?:.*)\>(?:[\n\r\s]*?)(?:<\/link>)*/im;
|
|
|
var scriptRegex = /<script(?:.*?)src=[\"\'](.+?)[\"\'](?!<)(?:.*)\>(?:[\n\r\s]*?)(?:<\/script>)*/im;
|
|
|
var cdns = ['http', 'com', 'net', 'org', 'cdn'];
|
|
|
function is_cdn_link(link) {
|
|
|
var result = false;
|
|
|
for (var i = 0; i < cdns.length; i++) {
|
|
|
if (link.indexOf(cdns[i]) !== -1) {
|
|
|
result = true;
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
return result;
|
|
|
}
|
|
|
var TIMETICKET = 3000;
|
|
|
/* harmony default export */ var html_code_view = (function (_ref) {
|
|
|
var _ref$code = _ref.code,
|
|
|
code = _ref$code === void 0 ? '' : _ref$code,
|
|
|
isActive = _ref.isActive,
|
|
|
myshixunIdentifier = _ref.myshixunIdentifier,
|
|
|
lastedUpdateTime = _ref.lastedUpdateTime,
|
|
|
onFinishDisplayHtml = _ref.onFinishDisplayHtml;
|
|
|
var _useState = (0,react.useState)(0),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
updateNum = _useState2[0],
|
|
|
setUpdateNum = _useState2[1];
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
var iframeRef = (0,react.useRef)();
|
|
|
var el = (0,react.useRef)();
|
|
|
var action = "".concat(tasks_util/* apiPref */.KI, "/api/myshixuns/").concat(myshixunIdentifier, "/html_content.html");
|
|
|
var param = (0,react.useMemo)(function () {
|
|
|
var jsArr = [];
|
|
|
var cssArr = [];
|
|
|
var jsConArr = [];
|
|
|
var cssConArr = [];
|
|
|
var iframe = document.createElement('iframe');
|
|
|
iframe.style.width = '100%';
|
|
|
iframe.style.height = '100%';
|
|
|
iframe.style.border = '0';
|
|
|
try {
|
|
|
iframeRef.current.innerHTML = '';
|
|
|
iframeRef.current.appendChild(iframe);
|
|
|
} catch (e) {}
|
|
|
var content = code;
|
|
|
var dom = document.createElement('div');
|
|
|
dom.innerHTML = code;
|
|
|
code.replace(/<link [^>]*href=['"]([^'"]+)[^>]*>/gi, function (match, capture) {
|
|
|
cssArr.push(capture.indexOf('http') > -1 ? capture : 'https://data.educoder.net/api/sources/get_html_content.html?content_type=text/css&identifier=' + params.taskId + '&path=' + capture);
|
|
|
var newStr = capture.indexOf('http') > -1 ? capture : '<link href="https://data.educoder.net/api/sources/get_html_content.html?content_type=text/css&identifier=' + params.taskId + '&path=' + capture + '" alt="" />';
|
|
|
return newStr;
|
|
|
});
|
|
|
code.replace(/<script [^>]*src=['"]([^'"]+)[^>]*>/gi, function (match, capture) {
|
|
|
jsArr.push(capture.indexOf('http') > -1 ? capture : 'https://data.educoder.net/api/sources/get_html_content.html?content_type=application/javascript&identifier=' + params.taskId + '&path=' + capture);
|
|
|
var newStr = capture.indexOf('http') > -1 ? capture : '<link href="https://data.educoder.net/api/sources/get_html_content.html?content_type=text/css&identifier=' + params.taskId + '&path=' + capture + '" alt="" />';
|
|
|
return newStr;
|
|
|
});
|
|
|
|
|
|
// let regex3 = new RegExp(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi);
|
|
|
|
|
|
code = code.replace(/<img [^>]*src=['"]([^'"]+)[^>]*>/gi, function (match, capture) {
|
|
|
var newStr = capture.indexOf('http') > -1 ? match : match.replace(capture, 'https://data.educoder.net/api/sources/get_html_content?content_type=application/octet-stream&identifier=' + params.taskId + '&path=' + capture);
|
|
|
return newStr;
|
|
|
});
|
|
|
code = code.replace(/<video [^>]*src=['"]([^'"]+)[^>]*>/gi, function (match, capture) {
|
|
|
var newStr = capture.indexOf('http') > -1 ? match : '<video src="https://data.educoder.net/api/sources/get_html_content?content_type=application/octet-stream&identifier=' + params.taskId + '&path=' + capture + '" alt="" />';
|
|
|
return newStr;
|
|
|
});
|
|
|
code.replace(/<script.*?>([\s\S]+?)<\/script>/gim, function (_, js) {
|
|
|
//正则匹配出script中的内容
|
|
|
jsConArr.push(js);
|
|
|
});
|
|
|
code.replace(/<style.*?>([\s\S]+?)<\/style>/gim, function (_, css) {
|
|
|
//正则匹配出script中的内容
|
|
|
cssConArr.push(css);
|
|
|
});
|
|
|
var css = [];
|
|
|
var script = [];
|
|
|
var linkMatches = linkRegex.exec(content);
|
|
|
var scriptMatches = scriptRegex.exec(content);
|
|
|
while (linkMatches) {
|
|
|
var $0 = linkMatches[0];
|
|
|
var $1 = linkMatches[1];
|
|
|
if (is_cdn_link($1)) {
|
|
|
content = content.replace($0, $0.replace(/link/, 'edulink'));
|
|
|
} else {
|
|
|
css.push($1);
|
|
|
content = content.replace(linkRegex, 'EDUCODERCSS');
|
|
|
}
|
|
|
linkMatches = linkRegex.exec(content);
|
|
|
}
|
|
|
while (scriptMatches) {
|
|
|
var _$ = scriptMatches[0];
|
|
|
var _$2 = scriptMatches[1];
|
|
|
if (is_cdn_link(_$2)) {
|
|
|
content = content.replace(_$, _$.replace(/script/g, 'w3scrw3ipttag'));
|
|
|
} else {
|
|
|
script.push(_$2);
|
|
|
content = content.replace(scriptRegex, 'EDUCODERJS');
|
|
|
}
|
|
|
scriptMatches = scriptRegex.exec(content);
|
|
|
}
|
|
|
try {
|
|
|
// console.log('linkMatches:', linkMatches, cssArr, jsArr, code);
|
|
|
iframe.contentWindow.document.write(dom.innerHTML);
|
|
|
cssArr.map(function (item) {
|
|
|
var csstag = document.createElement('link');
|
|
|
csstag.setAttribute('rel', 'stylesheet');
|
|
|
csstag.href = item;
|
|
|
iframe.contentWindow.document.body.appendChild(csstag);
|
|
|
});
|
|
|
// jsArr.map(item => {
|
|
|
// const jstag = document.createElement('script');
|
|
|
// jstag.setAttribute('async', true);
|
|
|
// jstag.src = item;
|
|
|
// iframe.contentWindow.document.body.appendChild(jstag);
|
|
|
// });
|
|
|
|
|
|
cssConArr.map(function (item) {
|
|
|
var csstag2 = document.createElement('style');
|
|
|
csstag2.innerHTML = item;
|
|
|
iframe.contentWindow.document.body.appendChild(csstag2);
|
|
|
});
|
|
|
setTimeout(function () {
|
|
|
// try {
|
|
|
// if (!!dom.querySelectorAll('script').length) {
|
|
|
// for (let i = 0; i < dom.querySelectorAll('script').length; i++) {
|
|
|
// if (dom.querySelectorAll('script')[i].innerHTML != '') {
|
|
|
// var jstag2 = document.createElement('script');
|
|
|
// jstag2.setAttribute('defer', true);
|
|
|
// jstag2.innerHTML = dom.querySelectorAll('script')[i].innerHTML;
|
|
|
// iframe.contentWindow.document.body.appendChild(jstag2);
|
|
|
// }
|
|
|
// }
|
|
|
// }
|
|
|
// } catch (error) {}
|
|
|
}, 6000);
|
|
|
} catch (e) {
|
|
|
if (code != '' && !!code) setTimeout(function () {
|
|
|
setUpdateNum(new Date().getTime());
|
|
|
}, 1000);
|
|
|
}
|
|
|
// html部分 为了防止xss攻击,先将敏感字符转换
|
|
|
// content = content
|
|
|
// .replace(/=/gi, 'w3equalsign')
|
|
|
// .replace(/script/gi, 'w3scrw3ipttag');
|
|
|
|
|
|
return {
|
|
|
content: content,
|
|
|
css: css,
|
|
|
script: script
|
|
|
};
|
|
|
}, [code, updateNum]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (code != '' && !!code) setUpdateNum(updateNum + 1);
|
|
|
}, [isActive]);
|
|
|
|
|
|
//所见即所得
|
|
|
(0,useInterval/* default */.Z)(function () {
|
|
|
var currentTime = new Date().getTime();
|
|
|
if (isActive && el.current && lastedUpdateTime && currentTime > lastedUpdateTime + TIMETICKET) {
|
|
|
// onFinishDisplayHtml();
|
|
|
}
|
|
|
}, TIMETICKET);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (el.current && param && param.content) {
|
|
|
// el.current.setAttribute('action', action);
|
|
|
// el.current.submit();
|
|
|
}
|
|
|
}, [el.current, param, action]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "html-code-view",
|
|
|
style: {
|
|
|
display: isActive ? 'block' : 'none',
|
|
|
width: '100%',
|
|
|
height: '100%'
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("form", {
|
|
|
ref: el,
|
|
|
method: "post",
|
|
|
target: "my-frame",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("input", {
|
|
|
type: "hidden",
|
|
|
name: "contents",
|
|
|
value: param.content
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("input", {
|
|
|
type: "hidden",
|
|
|
name: "educodercss",
|
|
|
value: param.css
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("input", {
|
|
|
type: "hidden",
|
|
|
name: "educoderscript",
|
|
|
value: param.script
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
id: "iframe",
|
|
|
ref: iframeRef,
|
|
|
style: {
|
|
|
background: '#fff',
|
|
|
height: '100%',
|
|
|
width: '100%'
|
|
|
}
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./node_modules/diff-match-patch/index.js
|
|
|
var diff_match_patch = __webpack_require__(52027);
|
|
|
var diff_match_patch_default = /*#__PURE__*/__webpack_require__.n(diff_match_patch);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/test-case-list/diffPanel.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var diffPanelmodules = ({"diff-panel-container":"diff-panel-container___IpXsK","enter":"enter___UGDlZ","line-break":"line-break___hpW53","empty":"empty___BV3pH","diff-panel-container-2":"diff-panel-container-2___RYOLG","outputColorWhite":"outputColorWhite___GkiGp"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/test-case-list/diffPanel.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var dmp = new (diff_match_patch_default())();
|
|
|
dmp.Diff_EditCost = 8;
|
|
|
var diffPanel_initialState = {
|
|
|
oldStr: '',
|
|
|
newStr: ''
|
|
|
};
|
|
|
function diffPanel_reducer(state, action) {
|
|
|
switch (action.type) {
|
|
|
case 'init':
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}
|
|
|
function format(diff, type) {
|
|
|
var pattern_amp = /&/g;
|
|
|
var pattern_lt = /</g;
|
|
|
var pattern_gt = />/g;
|
|
|
var operation = diff[0],
|
|
|
data = diff[1] || '';
|
|
|
var text = data.replace(pattern_amp, '&').replace(pattern_lt, '<').replace(pattern_gt, '>');
|
|
|
var isEmpty = !text.trim();
|
|
|
text = text == '\r' ? '↵' : text;
|
|
|
var text2 = text == '↵' ? ' ' : text;
|
|
|
var classname1 = "".concat(isEmpty ? diffPanelmodules.empty : '', " ").concat(text === '↵' ? diffPanelmodules.enter : '');
|
|
|
var classname2 = "".concat(text === '↵' ? diffPanelmodules.enter : '');
|
|
|
if (type === 'oldStr') {
|
|
|
console.log('type:', type, diff_match_patch.DIFF_DELETE, diff_match_patch.DIFF_EQUAL, operation, text);
|
|
|
switch (operation) {
|
|
|
case diff_match_patch.DIFF_DELETE:
|
|
|
return "<span class=\"".concat(diffPanelmodules.block, "\"><ins class=\"").concat(classname1, "\">") + text2 + '</ins></span>';
|
|
|
case diff_match_patch.DIFF_EQUAL:
|
|
|
return "<span class=\"".concat(classname2, "\">") + text2 + '</span>';
|
|
|
}
|
|
|
} else {
|
|
|
switch (operation) {
|
|
|
case diff_match_patch.DIFF_INSERT:
|
|
|
return "<span class=\"".concat(diffPanelmodules.block, "\"><del class=\"").concat(classname1, "\">") + text2 + '</del></span>';
|
|
|
case diff_match_patch.DIFF_EQUAL:
|
|
|
return "<span class=\"".concat(classname2, "\">") + text2 + '</span>';
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
/* harmony default export */ var diffPanel = (function (_ref) {
|
|
|
var _output, _actual_output;
|
|
|
var output = _ref.output,
|
|
|
actual_output = _ref.actual_output,
|
|
|
compile_success = _ref.compile_success,
|
|
|
result = _ref.result;
|
|
|
var _useReducer = (0,react.useReducer)(diffPanel_reducer, diffPanel_initialState),
|
|
|
_useReducer2 = slicedToArray_default()(_useReducer, 2),
|
|
|
state = _useReducer2[0],
|
|
|
dispatch = _useReducer2[1];
|
|
|
output = (_output = output) === null || _output === void 0 ? void 0 : _output.replace(/\n/g, '\r').replace(/\u0020/g, ' ').replace(/\u0000/g, "\\u0000");
|
|
|
actual_output = (_actual_output = actual_output) === null || _actual_output === void 0 ? void 0 : _actual_output.replace(/\n/g, '\r').replace(/\u0020/g, ' ').replace(/\u0000/g, "\\u0000");
|
|
|
(0,react.useEffect)(function () {
|
|
|
var diffs = dmp.diff_main(output || '', actual_output || '');
|
|
|
dmp.diff_cleanupEfficiency(diffs);
|
|
|
var oldStr = diffs.map(function (diff) {
|
|
|
return format(diff, 'oldStr');
|
|
|
}).join('');
|
|
|
var newStr = diffs.map(function (diff) {
|
|
|
return format(diff, 'newStr');
|
|
|
}).join('');
|
|
|
dispatch({
|
|
|
type: 'init',
|
|
|
payload: {
|
|
|
oldStr: oldStr,
|
|
|
newStr: newStr
|
|
|
}
|
|
|
});
|
|
|
}, [output, actual_output]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: diffPanelmodules["diff-panel-container"],
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
dangerouslySetInnerHTML: {
|
|
|
__html: state.oldStr
|
|
|
}
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: compile_success === 1 && result ? diffPanelmodules.outputColorWhite : "",
|
|
|
dangerouslySetInnerHTML: {
|
|
|
__html: state.newStr
|
|
|
}
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/test-case-list/panel.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var panel_dmp = new (diff_match_patch_default())();
|
|
|
panel_dmp.Diff_EditCost = 8;
|
|
|
var panel_initialState = {
|
|
|
oldStr: '',
|
|
|
newStr: ''
|
|
|
};
|
|
|
function panel_reducer(state, action) {
|
|
|
switch (action.type) {
|
|
|
case 'init':
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}
|
|
|
function panel_format(diff, type) {
|
|
|
var pattern_amp = /&/g;
|
|
|
var pattern_lt = /</g;
|
|
|
var pattern_gt = />/g;
|
|
|
var operation = diff[0],
|
|
|
data = diff[1] || '';
|
|
|
var text = data.replace(pattern_amp, '&').replace(pattern_lt, '<').replace(pattern_gt, '>');
|
|
|
var isEmpty = !text.trim();
|
|
|
if (type === 'oldStr') {
|
|
|
switch (operation) {
|
|
|
case diff_match_patch.DIFF_DELETE:
|
|
|
return "<ins class=".concat(isEmpty ? 'empty' : '', ">") + text + '</ins>';
|
|
|
case diff_match_patch.DIFF_EQUAL:
|
|
|
return '<span>' + text + '</span>';
|
|
|
}
|
|
|
} else {
|
|
|
switch (operation) {
|
|
|
case diff_match_patch.DIFF_INSERT:
|
|
|
return "<del class=".concat(isEmpty ? 'empty' : '', ">") + text + '</del>';
|
|
|
case diff_match_patch.DIFF_EQUAL:
|
|
|
return '<span>' + text + '</span>';
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
/* harmony default export */ var panel = (function (_ref) {
|
|
|
var _output, _actual_output;
|
|
|
var output = _ref.output,
|
|
|
actual_output = _ref.actual_output,
|
|
|
_onClick = _ref.onClick;
|
|
|
var _useReducer = (0,react.useReducer)(panel_reducer, panel_initialState),
|
|
|
_useReducer2 = slicedToArray_default()(_useReducer, 2),
|
|
|
state = _useReducer2[0],
|
|
|
dispatch = _useReducer2[1];
|
|
|
output = (_output = output) === null || _output === void 0 ? void 0 : _output.replace(/\n/g, '\r');
|
|
|
actual_output = (_actual_output = actual_output) === null || _actual_output === void 0 ? void 0 : _actual_output.replace(/\n/g, '\r');
|
|
|
(0,react.useEffect)(function () {
|
|
|
var diffs = panel_dmp.diff_main(output || '', actual_output || '');
|
|
|
panel_dmp.diff_cleanupEfficiency(diffs);
|
|
|
var oldStr = diffs.map(function (diff) {
|
|
|
return panel_format(diff, 'oldStr');
|
|
|
}).join('');
|
|
|
var newStr = diffs.map(function (diff) {
|
|
|
return panel_format(diff, 'newStr');
|
|
|
}).join('');
|
|
|
dispatch({
|
|
|
type: 'init',
|
|
|
payload: {
|
|
|
oldStr: oldStr,
|
|
|
newStr: newStr
|
|
|
}
|
|
|
});
|
|
|
}, [output, actual_output]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "c-white ".concat(diffPanelmodules["diff-panel-container"], " ").concat(diffPanelmodules["diff-panel-container-2"], " ").concat(_onClick ? 'current' : '', " "),
|
|
|
onClick: function onClick() {
|
|
|
return _onClick === null || _onClick === void 0 ? void 0 : _onClick();
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
dangerouslySetInnerHTML: {
|
|
|
__html: state.oldStr
|
|
|
}
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./node_modules/js-base64/base64.js
|
|
|
var base64 = __webpack_require__(19575);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/xterm-panel/log.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var log = (function (_ref) {
|
|
|
var sshConfigData = _ref.sshConfigData,
|
|
|
tpId = _ref.tpId;
|
|
|
var _useState = (0,react.useState)([]),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
logs = _useState2[0],
|
|
|
setLogs = _useState2[1];
|
|
|
var link_url = sshConfigData.link_url,
|
|
|
port = sshConfigData.port;
|
|
|
var socket = (0,react.useRef)();
|
|
|
var stopRef = (0,react.useRef)();
|
|
|
var socketInstanceRef = (0,react.useRef)();
|
|
|
var domRef = (0,react.useRef)();
|
|
|
var isFirstConnected = (0,react.useRef)(false);
|
|
|
var insertData = function insertData(d) {
|
|
|
console.log('insertData:', d);
|
|
|
logs.push(d);
|
|
|
setLogs(toConsumableArray_default()(logs));
|
|
|
};
|
|
|
function createSocket() {
|
|
|
socketInstanceRef.current = new WebSocket(link_url);
|
|
|
socket.current = socketInstanceRef.current;
|
|
|
socketInstanceRef.current.onopen = function () {
|
|
|
socketInstanceRef.current.send(JSON.stringify({
|
|
|
tp: 'log',
|
|
|
data: tpId
|
|
|
}));
|
|
|
};
|
|
|
socketInstanceRef.current.onerror = function (error) {
|
|
|
console.log('------in socket error----', error, socketInstanceRef.current, link_url);
|
|
|
//连接报错后,重新请求资源
|
|
|
// mediator.publish('on-recreate-socket')
|
|
|
};
|
|
|
|
|
|
socketInstanceRef.current.onmessage = function (event) {
|
|
|
if (!isFirstConnected.current) {}
|
|
|
isFirstConnected.current = true;
|
|
|
var data = base64.Base64.decode(event.data.toString());
|
|
|
if (data === 'ProcessFinished') {
|
|
|
closeLink();
|
|
|
setTimeout(function () {
|
|
|
mediator/* default.publish */.Z.publish('runCodeFinish');
|
|
|
}, 1000);
|
|
|
} else if (!stopRef.current) {
|
|
|
insertData(data);
|
|
|
}
|
|
|
};
|
|
|
socketInstanceRef.current.onclose = function (evt) {
|
|
|
// closeLink();
|
|
|
console.log('socket关闭链接', evt);
|
|
|
};
|
|
|
socketInstanceRef.current.ondisconnect = function (event) {
|
|
|
// closeLink();
|
|
|
console.log('socket-disconnect:', event);
|
|
|
};
|
|
|
}
|
|
|
var closeLink = function closeLink() {
|
|
|
stopRef.current = true;
|
|
|
setLogs(toConsumableArray_default()(logs));
|
|
|
};
|
|
|
(0,react.useEffect)(function () {
|
|
|
var unSubCreate = mediator/* default.subscribe */.Z.subscribe('runCode', function (d) {
|
|
|
socketInstanceRef.current = undefined;
|
|
|
console.log('lastedUpdateTime-runCode', mediator/* default */.Z, mediator/* default.channels */.Z.channels);
|
|
|
if (d.type === 'start') {
|
|
|
stopRef.current = false;
|
|
|
logs = [];
|
|
|
setLogs([]);
|
|
|
// setTimeout(() => {
|
|
|
createSocket();
|
|
|
// }, 100);
|
|
|
} else {
|
|
|
closeLink();
|
|
|
}
|
|
|
});
|
|
|
return function () {
|
|
|
unSubCreate();
|
|
|
if (socket.current) {
|
|
|
socket.current.close();
|
|
|
console.log('socket链接主动关闭');
|
|
|
isFirstConnected.current = false;
|
|
|
}
|
|
|
};
|
|
|
}, []);
|
|
|
(0,react.useEffect)(function () {
|
|
|
domRef.current.scrollIntoView({
|
|
|
behavior: 'smooth',
|
|
|
block: 'end'
|
|
|
});
|
|
|
}, [logs]);
|
|
|
var logsDom = (0,react.useCallback)(function () {
|
|
|
var _logs;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("pre", {
|
|
|
className: "font14 ml20 mr20",
|
|
|
children: (_logs = logs) === null || _logs === void 0 ? void 0 : _logs.join('\n')
|
|
|
});
|
|
|
return logs.map(function (item) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("code", {
|
|
|
className: "font14 ml20 mr20",
|
|
|
children: item
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
}, [logs]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "xterm-panel pb10",
|
|
|
ref: domRef,
|
|
|
style: {
|
|
|
fontFamily: 'monospace'
|
|
|
},
|
|
|
children: [logs == '' && !stopRef.current && /*#__PURE__*/(0,jsx_runtime.jsx)(Spinner/* default */.Z, {}), logsDom()]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./node_modules/xterm/lib/xterm.js
|
|
|
var xterm = __webpack_require__(12320);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/test-case-list/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function test_case_list_TestCaseItem(_ref) {
|
|
|
var _taskData$user, _taskData$user2;
|
|
|
var last_compile_output = _ref.last_compile_output,
|
|
|
language = _ref.language,
|
|
|
ts_mem = _ref.ts_mem,
|
|
|
ts_time = _ref.ts_time,
|
|
|
input = _ref.input,
|
|
|
output = _ref.output,
|
|
|
is_invisible = _ref.is_invisible,
|
|
|
actual_output = _ref.actual_output,
|
|
|
is_file = _ref.is_file,
|
|
|
input_file_url = _ref.input_file_url,
|
|
|
output_file_url = _ref.output_file_url,
|
|
|
is_public = _ref.is_public,
|
|
|
result = _ref.result,
|
|
|
compile_success = _ref.compile_success,
|
|
|
title = _ref.title,
|
|
|
isActive = _ref.isActive,
|
|
|
id = _ref.id,
|
|
|
onActive = _ref.onActive,
|
|
|
test_sets_view = _ref.test_sets_view,
|
|
|
allowed_unlock = _ref.allowed_unlock,
|
|
|
identity = _ref.identity,
|
|
|
taskData = _ref.taskData,
|
|
|
setData = _ref.setData,
|
|
|
setMonacoValue = _ref.setMonacoValue;
|
|
|
var _useState = (0,react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
rawOutput = _useState2[0],
|
|
|
setRawOutput = _useState2[1];
|
|
|
var actualOutputRef = (0,react.useRef)();
|
|
|
var outputRef = (0,react.useRef)();
|
|
|
var saveOutput = output;
|
|
|
if (is_file && (taskData === null || taskData === void 0 ? void 0 : (_taskData$user = taskData.user) === null || _taskData$user === void 0 ? void 0 : _taskData$user.identity) < 5) {
|
|
|
is_invisible = false;
|
|
|
}
|
|
|
if (is_invisible && (taskData === null || taskData === void 0 ? void 0 : (_taskData$user2 = taskData.user) === null || _taskData$user2 === void 0 ? void 0 : _taskData$user2.identity) >= 5) {
|
|
|
output = '该预期输出不可查看';
|
|
|
}
|
|
|
function onActiveHandler() {
|
|
|
if (is_public || test_sets_view || identity <= 5) {
|
|
|
onActive(id);
|
|
|
} else {
|
|
|
if (allowed_unlock) {
|
|
|
mediator/* default.publish */.Z.publish('unlock-test-case', id);
|
|
|
} else {
|
|
|
es_message/* default.info */.ZP.info('本测试集不可解锁');
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
var cls = test_cast_listmodules["test-case-item"];
|
|
|
if (isActive) {
|
|
|
cls += ' active';
|
|
|
}
|
|
|
if (last_compile_output) {
|
|
|
cls += " ".concat(test_cast_listmodules["has-result"]);
|
|
|
}
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (rawOutput) {
|
|
|
var term = new xterm.Terminal({
|
|
|
// convertEol: true,
|
|
|
// fontFamily: `'Fira Mono', monospace`,
|
|
|
fontSize: 14,
|
|
|
background: '#1e1e1e',
|
|
|
letterSpacing: 4
|
|
|
});
|
|
|
term.open(actualOutputRef.current);
|
|
|
var actual_output_format = (0,util/* findEndWhitespace */.pp)(actual_output);
|
|
|
term.writeln(actual_output_format);
|
|
|
term.setOption('theme', {
|
|
|
background: '#1e1e1e'
|
|
|
});
|
|
|
window.terms = term;
|
|
|
var term2 = new xterm.Terminal({
|
|
|
convertEol: true,
|
|
|
fontFamily: "'Fira Mono', monospace",
|
|
|
fontSize: 14,
|
|
|
background: '#1e1e1e'
|
|
|
});
|
|
|
term2.open(outputRef.current);
|
|
|
var output_format = output.replaceAll(" ", '\x1b[41m \x1b[0m').replace(/\n/g, "\x1b[41m↵\x1b[0m\r\n");
|
|
|
term2.writeln(output);
|
|
|
term2.setOption('theme', {
|
|
|
background: '#1e1e1e'
|
|
|
});
|
|
|
}
|
|
|
}, [rawOutput]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("li", {
|
|
|
className: cls,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: test_cast_listmodules["case-header"],
|
|
|
onClick: onActiveHandler,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("h2", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: isActive ? test_cast_listmodules["arrow-down"] : test_cast_listmodules["arrow-right"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: test_cast_listmodules["test-title"],
|
|
|
children: title
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: test_cast_listmodules["case-info"],
|
|
|
children: [!ts_mem ? null : /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: test_cast_listmodules.description,
|
|
|
children: ["\u6D88\u8017\u5185\u5B58", ts_mem, "MB"]
|
|
|
}), !ts_time ? null : /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: test_cast_listmodules.description,
|
|
|
children: [' ', "\u4EE3\u7801\u6267\u884C\u65F6\u957F\uFF1A", ts_time, "\u79D2", ' ']
|
|
|
}), !is_public ? test_sets_view || identity <= 5 ? /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-jiesuo"
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-suo1"
|
|
|
}) : null, compile_success > 0 ? /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
width: 16,
|
|
|
src: result ? success/* default */.Z : failer/* default */.Z
|
|
|
}) : null]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "".concat(test_cast_listmodules["item-desc"], " ").concat(isActive ? 'show' : 'hide', " ").concat(test_cast_listmodules["choose-game-item"]),
|
|
|
children: [input ? /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "80px",
|
|
|
children: "\u6D4B\u8BD5\u8F93\u5165\uFF1A"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
style: {
|
|
|
color: '#fff'
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(panel, {
|
|
|
onClick: /*#__PURE__*/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:
|
|
|
if (!is_file) {
|
|
|
_context.next = 12;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 3;
|
|
|
return fetch(input_file_url, {
|
|
|
method: 'Get',
|
|
|
headers: {
|
|
|
'Content-Type': 'application/octet-stream',
|
|
|
Accept: '*/*'
|
|
|
}
|
|
|
});
|
|
|
case 3:
|
|
|
res = _context.sent;
|
|
|
if (!(res.status === -1)) {
|
|
|
_context.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
return _context.abrupt("return");
|
|
|
case 6:
|
|
|
_context.t0 = setMonacoValue;
|
|
|
_context.next = 9;
|
|
|
return res.text();
|
|
|
case 9:
|
|
|
_context.t1 = _context.sent;
|
|
|
(0, _context.t0)(_context.t1);
|
|
|
setTimeout(function () {
|
|
|
setData(input_file_url);
|
|
|
}, 200);
|
|
|
case 12:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
})),
|
|
|
output: input
|
|
|
})
|
|
|
})]
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
className: test_cast_listmodules["output-title-container"],
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u2014\u2014 \u9884\u671F\u8F93\u51FA \u2014\u2014"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: test_cast_listmodules["output-title"],
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u2014\u2014 \u5B9E\u9645\u8F93\u51FA \u2014\u2014"
|
|
|
}), !is_file && /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "c-blue current",
|
|
|
onClick: function onClick() {
|
|
|
return setRawOutput(!rawOutput);
|
|
|
},
|
|
|
children: rawOutput ? '展示格式化输出' : '展示原始输出'
|
|
|
})]
|
|
|
})]
|
|
|
}), is_file && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
"class": test_cast_listmodules["diff-panel-container"],
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "tc",
|
|
|
children: is_invisible ? /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: {
|
|
|
color: '#2ea44f'
|
|
|
},
|
|
|
children: output
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
"class": "underline",
|
|
|
onClick: /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
_context2.next = 2;
|
|
|
return fetch(output_file_url, {
|
|
|
method: 'Get',
|
|
|
headers: {
|
|
|
'Content-Type': 'application/octet-stream',
|
|
|
Accept: '*/*'
|
|
|
}
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context2.sent;
|
|
|
if (!(res.status === -1)) {
|
|
|
_context2.next = 5;
|
|
|
break;
|
|
|
}
|
|
|
return _context2.abrupt("return");
|
|
|
case 5:
|
|
|
_context2.t0 = setMonacoValue;
|
|
|
_context2.next = 8;
|
|
|
return res.text();
|
|
|
case 8:
|
|
|
_context2.t1 = _context2.sent;
|
|
|
(0, _context2.t0)(_context2.t1);
|
|
|
setTimeout(function () {
|
|
|
setData(output_file_url);
|
|
|
}, 200);
|
|
|
case 11:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
})),
|
|
|
children: output
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "tc",
|
|
|
children: !!compile_success ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
"class": "underline",
|
|
|
onClick: /*#__PURE__*/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:
|
|
|
_context3.next = 2;
|
|
|
return (0,utils_fetch/* default */.ZP)(actual_output, {
|
|
|
method: 'Get',
|
|
|
headers: {
|
|
|
'Content-Type': 'application/xml',
|
|
|
Accept: '*/*'
|
|
|
}
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context3.sent;
|
|
|
if (!(res.status === -1)) {
|
|
|
_context3.next = 5;
|
|
|
break;
|
|
|
}
|
|
|
return _context3.abrupt("return");
|
|
|
case 5:
|
|
|
setMonacoValue(res);
|
|
|
setTimeout(function () {
|
|
|
setData(actual_output);
|
|
|
}, 200);
|
|
|
// download(actual_output, output)
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
})),
|
|
|
children: saveOutput
|
|
|
}) : actual_output
|
|
|
})]
|
|
|
}), !is_file && !rawOutput && /*#__PURE__*/(0,jsx_runtime.jsx)(diffPanel, {
|
|
|
compile_success: compile_success,
|
|
|
result: result,
|
|
|
output: output,
|
|
|
actual_output: actual_output
|
|
|
}), !is_file && rawOutput && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
"class": test_cast_listmodules["diff-panel-container"],
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "",
|
|
|
ref: outputRef
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "",
|
|
|
ref: actualOutputRef
|
|
|
})]
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
}
|
|
|
|
|
|
//moveY = 0.01 时,表示测试集最大化
|
|
|
/* harmony default export */ var test_case_list = (function (_ref5) {
|
|
|
var _test_sets$2, _taskData$myshixun;
|
|
|
var onResizeSetContainer = _ref5.onResizeSetContainer,
|
|
|
moveY = _ref5.moveY,
|
|
|
taskData = _ref5.taskData,
|
|
|
isHtml = _ref5.isHtml,
|
|
|
lastedUpdateTime = _ref5.lastedUpdateTime,
|
|
|
content = _ref5.content,
|
|
|
myshixunIdentifier = _ref5.myshixunIdentifier,
|
|
|
test_sets_view = _ref5.test_sets_view,
|
|
|
identity = _ref5.identity,
|
|
|
language = _ref5.language,
|
|
|
allowed_unlock = _ref5.allowed_unlock,
|
|
|
_ref5$test_sets = _ref5.test_sets,
|
|
|
test_sets = _ref5$test_sets === void 0 ? [] : _ref5$test_sets,
|
|
|
test_sets_count = _ref5.test_sets_count,
|
|
|
sets_error_count = _ref5.sets_error_count,
|
|
|
last_compile_output = _ref5.last_compile_output,
|
|
|
onFinishDisplayHtml = _ref5.onFinishDisplayHtml;
|
|
|
var _useState3 = (0,react.useState)(-1),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
index = _useState4[0],
|
|
|
setIndex = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)(''),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
data = _useState6[0],
|
|
|
setData = _useState6[1];
|
|
|
var _useState7 = (0,react.useState)(''),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
monacoValue = _useState8[0],
|
|
|
setMonacoValue = _useState8[1];
|
|
|
var _useState9 = (0,react.useState)(isHtml ? 0 : 1),
|
|
|
_useState10 = slicedToArray_default()(_useState9, 2),
|
|
|
tabIndex = _useState10[0],
|
|
|
setTabIndex = _useState10[1];
|
|
|
var _useState11 = (0,react.useState)(false),
|
|
|
_useState12 = slicedToArray_default()(_useState11, 2),
|
|
|
showLogTab = _useState12[0],
|
|
|
setShowLogTab = _useState12[1];
|
|
|
(0,react.useEffect)(function () {
|
|
|
var _test_sets$;
|
|
|
var unSub1 = mediator/* default.subscribe */.Z.subscribe('showRunCodeTab', function (status) {
|
|
|
setShowLogTab(status);
|
|
|
});
|
|
|
var unSub2 = mediator/* default.subscribe */.Z.subscribe('runCode', function () {
|
|
|
setTabIndex(2);
|
|
|
});
|
|
|
mediator/* default.publish */.Z.publish('caseInputValue', test_sets === null || test_sets === void 0 ? void 0 : (_test_sets$ = test_sets[0]) === null || _test_sets$ === void 0 ? void 0 : _test_sets$['input']);
|
|
|
return function () {
|
|
|
unSub1();
|
|
|
unSub2();
|
|
|
};
|
|
|
}, []);
|
|
|
function trigger(id) {
|
|
|
setIndex(id === index ? -1 : id);
|
|
|
}
|
|
|
function onResizeSet() {
|
|
|
onResizeSetContainer(moveY);
|
|
|
}
|
|
|
function onChangeTab(e) {
|
|
|
setTabIndex(parseInt(e.target.id, 10));
|
|
|
}
|
|
|
var htmlCodeViewOption = {
|
|
|
code: content,
|
|
|
isActive: tabIndex === 0 && isHtml,
|
|
|
myshixunIdentifier: myshixunIdentifier,
|
|
|
onFinishDisplayHtml: onFinishDisplayHtml,
|
|
|
lastedUpdateTime: lastedUpdateTime
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(PreviewAll/* default */.Z, {
|
|
|
close: true,
|
|
|
data: data,
|
|
|
type: !!data.length ? 'txt' : '',
|
|
|
onClose: function onClose() {
|
|
|
return setData('');
|
|
|
},
|
|
|
monacoEditor: {
|
|
|
value: monacoValue,
|
|
|
language: 'txt',
|
|
|
onChange: function onChange() {},
|
|
|
options: {
|
|
|
readOnly: true,
|
|
|
fontSize: 14,
|
|
|
minimap: {
|
|
|
enabled: false
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "test-header",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container",
|
|
|
children: [isHtml ? /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
id: 0,
|
|
|
onClick: onChangeTab,
|
|
|
className: tabIndex === 0 ? 'active' : '',
|
|
|
children: "\u6548\u679C\u663E\u793A"
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
id: 1,
|
|
|
onClick: onChangeTab,
|
|
|
className: tabIndex === 1 ? 'active' : '',
|
|
|
children: "\u6D4B\u8BD5\u7ED3\u679C"
|
|
|
}), !!showLogTab && /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
id: 2,
|
|
|
onClick: onChangeTab,
|
|
|
className: tabIndex === 2 ? 'active' : '',
|
|
|
children: "\u81EA\u6D4B\u8FD0\u884C\u7ED3\u679C"
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onResizeSet,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont ".concat(moveY === 0.01 ? 'icon-shousuo' : 'icon-zhankai', " icon-zhankai")
|
|
|
})
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("section", {
|
|
|
className: "test-case-run-wrp",
|
|
|
style: {
|
|
|
display: tabIndex === 2 ? 'flex' : 'none',
|
|
|
flex: 1,
|
|
|
flexDirection: 'column',
|
|
|
overflow: 'auto',
|
|
|
paddingLeft: 20
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
className: "test-case-run-header",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: '200px',
|
|
|
children: "- \u81EA\u6D4B\u8F93\u5165 -"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "ml12",
|
|
|
children: "- \u8FD0\u884C\u7ED3\u679C -"
|
|
|
})
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
className: "h100 mr10 mb10",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: '200px',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default.TextArea */.Z.TextArea, {
|
|
|
defaultValue: test_sets === null || test_sets === void 0 ? void 0 : (_test_sets$2 = test_sets[0]) === null || _test_sets$2 === void 0 ? void 0 : _test_sets$2['input'],
|
|
|
style: {
|
|
|
height: 'calc(100% - 15px)'
|
|
|
},
|
|
|
onChange: function onChange(e) {
|
|
|
mediator/* default.publish */.Z.publish('caseInputValue', e.target.value);
|
|
|
}
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
style: {
|
|
|
flex: 1,
|
|
|
position: 'absolute',
|
|
|
width: '100%',
|
|
|
height: '100%',
|
|
|
overflow: 'auto'
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(log, {
|
|
|
sshConfigData: {
|
|
|
link_url: "".concat(taskData === null || taskData === void 0 ? void 0 : taskData.wss_url, "/log")
|
|
|
},
|
|
|
tpId: taskData === null || taskData === void 0 ? void 0 : (_taskData$myshixun = taskData.myshixun) === null || _taskData$myshixun === void 0 ? void 0 : _taskData$myshixun.id,
|
|
|
sid: 1
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("section", {
|
|
|
style: {
|
|
|
display: tabIndex === 1 ? 'block' : 'none',
|
|
|
flex: 1
|
|
|
},
|
|
|
children: [last_compile_output ? /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
className: "test-result ".concat(sets_error_count === 0 ? 'success' : 'failer'),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: "count",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
width: 16,
|
|
|
src: sets_error_count === 0 ? success/* default */.Z : mark/* default */.Z
|
|
|
}), test_sets_count - sets_error_count, "/", test_sets_count]
|
|
|
}), sets_error_count == 0 ? /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "count",
|
|
|
children: "\u5168\u90E8\u901A\u8FC7"
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
dangerouslySetInnerHTML: {
|
|
|
__html: last_compile_output
|
|
|
}
|
|
|
})
|
|
|
// <RenderHtml
|
|
|
// className="last-compile-output"
|
|
|
// value={last_compile_output}
|
|
|
// />
|
|
|
]
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)("ul", {
|
|
|
className: "test-case-list",
|
|
|
children: test_sets.map(function (item, i) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(test_case_list_TestCaseItem, objectSpread2_default()(objectSpread2_default()({
|
|
|
setData: setData,
|
|
|
setMonacoValue: setMonacoValue,
|
|
|
allowed_unlock: allowed_unlock,
|
|
|
identity: identity,
|
|
|
test_sets_view: test_sets_view,
|
|
|
language: language,
|
|
|
last_compile_output: last_compile_output,
|
|
|
title: "\u6D4B\u8BD5\u96C6".concat(i + 1)
|
|
|
}, item), {}, {
|
|
|
isActive: index === i,
|
|
|
id: i,
|
|
|
taskData: taskData,
|
|
|
onActive: trigger
|
|
|
}), 'item' + i);
|
|
|
})
|
|
|
})]
|
|
|
}), isHtml ? /*#__PURE__*/(0,jsx_runtime.jsx)(html_code_view, objectSpread2_default()({}, htmlCodeViewOption)) : null]
|
|
|
});
|
|
|
});
|
|
|
function VNCTestList(_ref6) {
|
|
|
var isLarge = _ref6.isLarge,
|
|
|
language = _ref6.language,
|
|
|
_ref6$test_sets = _ref6.test_sets,
|
|
|
test_sets = _ref6$test_sets === void 0 ? [] : _ref6$test_sets,
|
|
|
test_sets_count = _ref6.test_sets_count,
|
|
|
allowed_unlock = _ref6.allowed_unlock,
|
|
|
sets_error_count = _ref6.sets_error_count,
|
|
|
last_compile_output = _ref6.last_compile_output,
|
|
|
test_sets_view = _ref6.test_sets_view,
|
|
|
identity = _ref6.identity,
|
|
|
onResizeSet = _ref6.onResizeSet;
|
|
|
var _useState13 = (0,react.useState)(-1),
|
|
|
_useState14 = slicedToArray_default()(_useState13, 2),
|
|
|
index = _useState14[0],
|
|
|
setIndex = _useState14[1];
|
|
|
function trigger(id) {
|
|
|
setIndex(id === index ? -1 : id);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "test-header",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "active",
|
|
|
children: "\u6D4B\u8BD5\u7ED3\u679C"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onResizeSet,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont ".concat(isLarge ? 'icon-shousuo' : 'icon-zhankai', " icon-zhankai")
|
|
|
})
|
|
|
})]
|
|
|
}), last_compile_output ? /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
className: "test-result ".concat(sets_error_count === 0 ? 'success' : 'failer'),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: "count",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
width: 16,
|
|
|
src: sets_error_count === 0 ? success/* default */.Z : mark/* default */.Z
|
|
|
}), test_sets_count - sets_error_count, "/", test_sets_count]
|
|
|
}), sets_error_count == 0 ? /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: "\u5168\u90E8\u901A\u8FC7"
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
dangerouslySetInnerHTML: {
|
|
|
__html: last_compile_output
|
|
|
}
|
|
|
})
|
|
|
// <RenderHtml value={last_compile_output} />
|
|
|
]
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)("ul", {
|
|
|
className: "test-case-list",
|
|
|
children: test_sets.map(function (item, i) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(test_case_list_TestCaseItem, objectSpread2_default()(objectSpread2_default()({
|
|
|
allowed_unlock: allowed_unlock,
|
|
|
identity: identity,
|
|
|
test_sets_view: test_sets_view,
|
|
|
language: language,
|
|
|
last_compile_output: last_compile_output,
|
|
|
title: "\u6D4B\u8BD5\u96C6".concat(i + 1)
|
|
|
}, item), {}, {
|
|
|
isActive: index === i,
|
|
|
id: i,
|
|
|
onActive: trigger
|
|
|
}), 'item' + i);
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
}
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/vnc-view/index.less
|
|
|
var vnc_view = __webpack_require__(45954);
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/vnc-view/vnc-panel/index.tsx + 3 modules
|
|
|
var vnc_panel = __webpack_require__(43828);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/vnc-view/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var tasks_vnc_view = (function (_ref) {
|
|
|
var taskData = _ref.taskData,
|
|
|
evaluateLoading = _ref.evaluateLoading,
|
|
|
evaluateMessage = _ref.evaluateMessage,
|
|
|
language = _ref.language,
|
|
|
onEval = _ref.onEval;
|
|
|
var vnc_url = taskData.vnc_url,
|
|
|
shixun = taskData.shixun,
|
|
|
test_sets = taskData.test_sets,
|
|
|
test_sets_count = taskData.test_sets_count,
|
|
|
sets_error_count = taskData.sets_error_count,
|
|
|
last_compile_output = taskData.last_compile_output,
|
|
|
game = taskData.game,
|
|
|
allowed_unlock = taskData.allowed_unlock,
|
|
|
user = taskData.user;
|
|
|
var _useState = (0,react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
isLarge = _useState2[0],
|
|
|
setIsLarge = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)(false),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
isPop = _useState4[0],
|
|
|
setIsPop = _useState4[1];
|
|
|
function onResizeSet() {
|
|
|
setIsLarge(!isLarge);
|
|
|
}
|
|
|
function onPop() {
|
|
|
setIsPop(!isPop);
|
|
|
}
|
|
|
var testCaseListOption = {
|
|
|
isLarge: isLarge,
|
|
|
language: language,
|
|
|
test_sets: test_sets,
|
|
|
test_sets_count: test_sets_count,
|
|
|
sets_error_count: sets_error_count,
|
|
|
last_compile_output: last_compile_output,
|
|
|
allowed_unlock: allowed_unlock,
|
|
|
test_sets_view: game.test_sets_view,
|
|
|
identity: user.identity,
|
|
|
onResizeSet: onResizeSet
|
|
|
};
|
|
|
function evalCode() {
|
|
|
setIsPop(true);
|
|
|
onEval();
|
|
|
}
|
|
|
function onShowTestCaseList() {
|
|
|
setIsPop(!isPop);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(vnc_panel/* default */.Z, {
|
|
|
vnc_url: vnc_url,
|
|
|
window_vnc_url: taskData.windows_vnc,
|
|
|
virtual_machine: taskData === null || taskData === void 0 ? void 0 : taskData.virtual_machine,
|
|
|
linux_vnc: taskData.linux_vnc,
|
|
|
taskData: taskData
|
|
|
}), isPop ? /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "vnc-mask"
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "vnc-test-list ".concat(isLarge ? 'large' : isPop ? 'pop' : ''),
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "vnc-test-list-body",
|
|
|
children: [!isLarge ? /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "arrow-container",
|
|
|
onClick: onPop,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont ".concat(isPop ? 'icon-xiajiantou' : 'icon-shangjiantou', " ")
|
|
|
})
|
|
|
}) : null, evaluateLoading ? /*#__PURE__*/(0,jsx_runtime.jsx)(Spinner/* default */.Z, {
|
|
|
message: evaluateMessage,
|
|
|
style: {
|
|
|
color: '#0152d9'
|
|
|
}
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)(VNCTestList, objectSpread2_default()({}, testCaseListOption))]
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/upload/style/index.js + 1 modules
|
|
|
var upload_style = __webpack_require__(13759);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/upload/index.js + 20 modules
|
|
|
var upload = __webpack_require__(7426);
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/icons/UploadOutlined.js + 1 modules
|
|
|
var UploadOutlined = __webpack_require__(88484);
|
|
|
// EXTERNAL MODULE: ./node_modules/crypto-js/index.js
|
|
|
var crypto_js = __webpack_require__(81354);
|
|
|
var crypto_js_default = /*#__PURE__*/__webpack_require__.n(crypto_js);
|
|
|
// EXTERNAL MODULE: ./node_modules/uuid/dist/esm-browser/v4.js + 4 modules
|
|
|
var v4 = __webpack_require__(25934);
|
|
|
// EXTERNAL MODULE: ./node_modules/ali-oss/dist/aliyun-oss-sdk.js
|
|
|
var aliyun_oss_sdk = __webpack_require__(56448);
|
|
|
var aliyun_oss_sdk_default = /*#__PURE__*/__webpack_require__.n(aliyun_oss_sdk);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/OfficeUpload/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var OfficeUploadmodules = ({"flex_box_center":"flex_box_center___RAC1w","flex_space_between":"flex_space_between___lOFsM","flex_box_vertical_center":"flex_box_vertical_center___ugzOq","flex_box_center_end":"flex_box_center_end___Oygpk","flex_box_column":"flex_box_column___axzyr","files":"files___kFNIo"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/OfficeUpload/uploadOffice.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var uploadOffice_excluded = ["user", "cancelUpload", "defaultFilelist", "getData"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var decrypt = function decrypt(word) {
|
|
|
var ENC_KEY = "bf3c199c2470cb477d907b1e0917c17b";
|
|
|
var IV = "5183666c72eec9e4";
|
|
|
var key = crypto_js_default().enc.Utf8.parse(ENC_KEY);
|
|
|
var iv = crypto_js_default().enc.Utf8.parse(IV);
|
|
|
var decrypt = crypto_js_default().AES.decrypt(word, key, {
|
|
|
iv: iv,
|
|
|
mode: (crypto_js_default()).mode.CBC
|
|
|
// padding: CryptoJS.pad.ZeroPadding
|
|
|
});
|
|
|
|
|
|
return decrypt.toString((crypto_js_default()).enc.Utf8);
|
|
|
};
|
|
|
var tempCheckpoint;
|
|
|
var UploadFile = function UploadFile(_ref) {
|
|
|
var user = _ref.user,
|
|
|
cancelUpload = _ref.cancelUpload,
|
|
|
defaultFilelist = _ref.defaultFilelist,
|
|
|
getData = _ref.getData,
|
|
|
props = objectWithoutProperties_default()(_ref, uploadOffice_excluded);
|
|
|
var _useState = (0,react.useState)([]),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
fileList = _useState2[0],
|
|
|
setFileList = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)(""),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
data = _useState4[0],
|
|
|
setData = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)(),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
client = _useState6[0],
|
|
|
setClient = _useState6[1];
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (defaultFilelist) {
|
|
|
setFileList(toConsumableArray_default()(defaultFilelist));
|
|
|
}
|
|
|
}, [defaultFilelist]);
|
|
|
var _props = {
|
|
|
onPreview: function onPreview(e) {
|
|
|
setData(e.download_url);
|
|
|
},
|
|
|
onRemove: function () {
|
|
|
var _onRemove = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(e) {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return (0,utils_fetch/* default */.ZP)("/api/tasks/".concat(props.identifier, "/destroy_attachment"), {
|
|
|
method: "delete",
|
|
|
body: {
|
|
|
id: e.id
|
|
|
}
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
getData();
|
|
|
setFileList(toConsumableArray_default()(fileList.filter(function (item) {
|
|
|
return item.name !== e.name;
|
|
|
})));
|
|
|
props.onChange(fileList.filter(function (item) {
|
|
|
return item.name !== e.name;
|
|
|
}));
|
|
|
case 6:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
function onRemove(_x) {
|
|
|
return _onRemove.apply(this, arguments);
|
|
|
}
|
|
|
return onRemove;
|
|
|
}(),
|
|
|
disabled: props.disabled,
|
|
|
multiple: true,
|
|
|
fileList: fileList,
|
|
|
customRequest: function () {
|
|
|
var _customRequest = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2(options) {
|
|
|
var _user$userInfo, _res$data, _res$data2;
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
_context2.next = 2;
|
|
|
return _uploadFiles(options.file, {
|
|
|
login: user === null || user === void 0 ? void 0 : (_user$userInfo = user.userInfo) === null || _user$userInfo === void 0 ? void 0 : _user$userInfo.login,
|
|
|
container_type: props.container_type,
|
|
|
container_id: props.identifier,
|
|
|
description: props.description,
|
|
|
realFileName: props.realFileName
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context2.sent;
|
|
|
options.onSuccess({
|
|
|
file: options.file,
|
|
|
uid: res === null || res === void 0 ? void 0 : (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.attachment_id,
|
|
|
id: res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.attachment_id
|
|
|
});
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
function customRequest(_x2) {
|
|
|
return _customRequest.apply(this, arguments);
|
|
|
}
|
|
|
return customRequest;
|
|
|
}(),
|
|
|
beforeUpload: function () {
|
|
|
var _beforeUpload = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3(file) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
function beforeUpload(_x3) {
|
|
|
return _beforeUpload.apply(this, arguments);
|
|
|
}
|
|
|
return beforeUpload;
|
|
|
}()
|
|
|
};
|
|
|
var _uploadFiles = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4(file, obj) {
|
|
|
var _res$data3, _res$data4, _res$data5, _res$data6, _res$data7, _res$data8;
|
|
|
var name, res, namearrs, filename;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
obj.file_name = file.name;
|
|
|
name = file.name;
|
|
|
_context4.next = 4;
|
|
|
return (0,utils_fetch/* default */.ZP)('/api/buckets/get_upload_token_for_file.json', {
|
|
|
method: "get"
|
|
|
});
|
|
|
case 4:
|
|
|
res = _context4.sent;
|
|
|
res.data = JSON.parse(decrypt(res.data));
|
|
|
if (!((res === null || res === void 0 ? void 0 : res.status) !== 0)) {
|
|
|
_context4.next = 12;
|
|
|
break;
|
|
|
}
|
|
|
fileList[fileList.findIndex(function (item) {
|
|
|
return item.name === name;
|
|
|
})]['status'] = 'error';
|
|
|
fileList[fileList.findIndex(function (item) {
|
|
|
return item.name === name;
|
|
|
})]['file']['status'] = 'error';
|
|
|
props.onChange(fileList);
|
|
|
es_message/* default.warn */.ZP.warn("上传失败,请重新尝试");
|
|
|
return _context4.abrupt("return");
|
|
|
case 12:
|
|
|
client = new (aliyun_oss_sdk_default())({
|
|
|
endpoint: res === null || res === void 0 ? void 0 : (_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.end_point,
|
|
|
region: res === null || res === void 0 ? void 0 : (_res$data4 = res.data) === null || _res$data4 === void 0 ? void 0 : _res$data4.region,
|
|
|
accessKeyId: res === null || res === void 0 ? void 0 : (_res$data5 = res.data) === null || _res$data5 === void 0 ? void 0 : _res$data5.access_key_id,
|
|
|
accessKeySecret: res === null || res === void 0 ? void 0 : (_res$data6 = res.data) === null || _res$data6 === void 0 ? void 0 : _res$data6.access_key_secret,
|
|
|
bucket: res === null || res === void 0 ? void 0 : (_res$data7 = res.data) === null || _res$data7 === void 0 ? void 0 : _res$data7.bucket,
|
|
|
stsToken: res === null || res === void 0 ? void 0 : (_res$data8 = res.data) === null || _res$data8 === void 0 ? void 0 : _res$data8.security_token
|
|
|
});
|
|
|
console.log('files:', file, res);
|
|
|
setClient(client);
|
|
|
// const filename = uuidv4()
|
|
|
namearrs = file.name.split(".");
|
|
|
namearrs.pop();
|
|
|
filename = obj.realFileName ? namearrs : (0,v4/* default */.Z)();
|
|
|
console.log("obj1111:", obj);
|
|
|
return _context4.abrupt("return", new Promise(function (resolve, reject) {
|
|
|
var _res$data9;
|
|
|
// try {
|
|
|
client.multipartUpload("".concat(props.identifier, "/").concat(filename.join("")).concat(name.indexOf(".") > -1 ? '.' + name.split(".").pop() : ""), new Blob([file], {
|
|
|
type: file.type
|
|
|
}), {
|
|
|
timeout: 3600 * 1000,
|
|
|
partSize: 1002400,
|
|
|
progress: function progress(p, checkpoint, res) {
|
|
|
try {
|
|
|
console.log("进度", p, checkpoint, res);
|
|
|
var index = fileList.findIndex(function (item) {
|
|
|
return item.name === name;
|
|
|
});
|
|
|
fileList[index]['file']['percent'] = p * 100;
|
|
|
if (p === 1) {
|
|
|
fileList[index]['status'] = 'done';
|
|
|
fileList[index]['file']['status'] = 'done';
|
|
|
props.onChange(fileList);
|
|
|
}
|
|
|
fileList[index].tempCheckpoint = checkpoint;
|
|
|
setFileList(toConsumableArray_default()(fileList));
|
|
|
} catch (e) {}
|
|
|
},
|
|
|
// checkpoint: fileList[fileList.findIndex(item => item.name === name)].tempCheckpoint,
|
|
|
callback: {
|
|
|
customValue: {
|
|
|
id: name + ''
|
|
|
},
|
|
|
url: res === null || res === void 0 ? void 0 : (_res$data9 = res.data) === null || _res$data9 === void 0 ? void 0 : _res$data9.callback_url,
|
|
|
host: res === null || res === void 0 ? void 0 : res.data.bucket_host,
|
|
|
body: 'bucket=${bucket}&object=${object}&etag=${etag}&size=${size}&mimeType=${mimeType}&my_var=${x:my_var}&' + (0,utils_fetch/* parseParams */.rz)(obj)
|
|
|
}
|
|
|
}).then(function (result) {
|
|
|
var _result$data;
|
|
|
var status = 'done';
|
|
|
if (((_result$data = result.data) === null || _result$data === void 0 ? void 0 : _result$data.status) === 0) {
|
|
|
getData();
|
|
|
} else {
|
|
|
var _result$data2;
|
|
|
es_message/* default.warn */.ZP.warn((_result$data2 = result.data) === null || _result$data2 === void 0 ? void 0 : _result$data2.message);
|
|
|
status = 'error';
|
|
|
}
|
|
|
props.onChange(fileList);
|
|
|
resolve(result === null || result === void 0 ? void 0 : result.data);
|
|
|
})["catch"](function (err) {
|
|
|
reject(err);
|
|
|
console.log("err:", err);
|
|
|
});
|
|
|
}));
|
|
|
case 20:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
}));
|
|
|
return function _uploadFiles(_x4, _x5) {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (fileList.every(function (item) {
|
|
|
return item === 'done' || item === 'error';
|
|
|
})) {
|
|
|
props.onComplete(fileList);
|
|
|
}
|
|
|
console.log("fileList:", fileList);
|
|
|
}, [fileList]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (cancelUpload) {
|
|
|
var _client;
|
|
|
(_client = client) === null || _client === void 0 ? void 0 : _client.cancel();
|
|
|
}
|
|
|
}, [cancelUpload]);
|
|
|
var toUpload = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee6() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee6$(_context6) {
|
|
|
while (1) switch (_context6.prev = _context6.next) {
|
|
|
case 0:
|
|
|
fileList.map( /*#__PURE__*/function () {
|
|
|
var _ref4 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee5(item) {
|
|
|
var _user$userInfo2, res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee5$(_context5) {
|
|
|
while (1) switch (_context5.prev = _context5.next) {
|
|
|
case 0:
|
|
|
if (!((!item.status || item.status === 'error') && !cancelUpload)) {
|
|
|
_context5.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
item.status = 'uploading';
|
|
|
item.file.status = 'uploading';
|
|
|
_context5.next = 5;
|
|
|
return _uploadFiles(item, {
|
|
|
login: user === null || user === void 0 ? void 0 : (_user$userInfo2 = user.userInfo) === null || _user$userInfo2 === void 0 ? void 0 : _user$userInfo2.login,
|
|
|
container_type: props.container_type,
|
|
|
container_id: props.identifier,
|
|
|
description: props.description,
|
|
|
realFileName: props.realFileName
|
|
|
});
|
|
|
case 5:
|
|
|
res = _context5.sent;
|
|
|
case 6:
|
|
|
case "end":
|
|
|
return _context5.stop();
|
|
|
}
|
|
|
}, _callee5);
|
|
|
}));
|
|
|
return function (_x6) {
|
|
|
return _ref4.apply(this, arguments);
|
|
|
};
|
|
|
}());
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context6.stop();
|
|
|
}
|
|
|
}, _callee6);
|
|
|
}));
|
|
|
return function toUpload() {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: OfficeUploadmodules.files,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(PreviewAll/* default */.Z, {
|
|
|
close: true,
|
|
|
data: encodeURIComponent(data),
|
|
|
type: !!(data !== null && data !== void 0 && data.length) ? "office" : "",
|
|
|
onClose: function onClose() {
|
|
|
return setData("");
|
|
|
}
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(upload/* default */.Z, objectSpread2_default()(objectSpread2_default()({}, _props), {}, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.Z, {
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)(UploadOutlined/* default */.Z, {}),
|
|
|
type: "primary",
|
|
|
children: "\u4E0A\u4F20\u6587\u4EF6"
|
|
|
})
|
|
|
}))]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var uploadOffice = ((0,_umi_production_exports.connect)(function (_ref5) {
|
|
|
var loading = _ref5.loading,
|
|
|
globalSetting = _ref5.globalSetting,
|
|
|
user = _ref5.user;
|
|
|
return {
|
|
|
globalSetting: globalSetting,
|
|
|
loading: loading.models.competitions,
|
|
|
user: user
|
|
|
};
|
|
|
})(UploadFile));
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/OfficeUpload/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var CheckboxGroup = es_checkbox/* default.Group */.Z.Group;
|
|
|
var ShixunsListPage = function ShixunsListPage(_ref) {
|
|
|
var _taskData$game2;
|
|
|
var classroomList = _ref.classroomList,
|
|
|
loading = _ref.loading,
|
|
|
user = _ref.user,
|
|
|
_ref$exercise_id = _ref.exercise_id,
|
|
|
exercise_id = _ref$exercise_id === void 0 ? null : _ref$exercise_id,
|
|
|
_ref$homework_common_ = _ref.homework_common_id,
|
|
|
homework_common_id = _ref$homework_common_ === void 0 ? null : _ref$homework_common_,
|
|
|
setitem = _ref.setitem,
|
|
|
taskData = _ref.taskData,
|
|
|
type = _ref.type,
|
|
|
dispatch = _ref.dispatch;
|
|
|
var _useState = (0,react.useState)(),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
data = _useState2[0],
|
|
|
setData = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)(false),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
uploading = _useState4[0],
|
|
|
setUpLoading = _useState4[1];
|
|
|
(0,react.useEffect)(function () {
|
|
|
getData();
|
|
|
}, []);
|
|
|
var getData = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var _taskData$game, _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,utils_fetch/* default */.ZP)("/api/tasks/".concat(taskData === null || taskData === void 0 ? void 0 : (_taskData$game = taskData.game) === null || _taskData$game === void 0 ? void 0 : _taskData$game.identifier, "/get_user_attachments"), {
|
|
|
method: 'get'
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
res === null || res === void 0 ? void 0 : (_res$attachments = res.attachments) === null || _res$attachments === void 0 ? void 0 : _res$attachments.map(function (item) {
|
|
|
item.status = "done";
|
|
|
item.uid = item.id;
|
|
|
item.name = item.title;
|
|
|
return item;
|
|
|
});
|
|
|
setData(res);
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function getData() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleComplete = function handleComplete(item) {
|
|
|
console.log(item, 444);
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(uploadOffice, {
|
|
|
identifier: taskData === null || taskData === void 0 ? void 0 : (_taskData$game2 = taskData.game) === null || _taskData$game2 === void 0 ? void 0 : _taskData$game2.identifier,
|
|
|
defaultFilelist: data === null || data === void 0 ? void 0 : data.attachments,
|
|
|
container_type: "Game",
|
|
|
uploading: uploading,
|
|
|
onChange: function onChange() {
|
|
|
uploading = false;
|
|
|
setUpLoading(true);
|
|
|
},
|
|
|
height: 300,
|
|
|
maxSize: 100 * 1024 * 1024 * 1024 //字节
|
|
|
,
|
|
|
description: "",
|
|
|
getData: getData,
|
|
|
onComplete: handleComplete,
|
|
|
realFileName: true,
|
|
|
onRemove: function onRemove() {}
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var OfficeUpload = ((0,_umi_production_exports.connect)(function (_ref3) {
|
|
|
var classroomList = _ref3.classroomList,
|
|
|
loading = _ref3.loading,
|
|
|
globalSetting = _ref3.globalSetting,
|
|
|
user = _ref3.user;
|
|
|
return {
|
|
|
classroomList: classroomList,
|
|
|
globalSetting: globalSetting,
|
|
|
loading: loading.effects,
|
|
|
user: user
|
|
|
};
|
|
|
})(ShixunsListPage));
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/icons/LeftOutlined.js
|
|
|
var LeftOutlined = __webpack_require__(37653);
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/icons/RightOutlined.js
|
|
|
var RightOutlined = __webpack_require__(43929);
|
|
|
// EXTERNAL MODULE: ./src/components/tpi-code-setting/CodeSetting.tsx
|
|
|
var CodeSetting = __webpack_require__(77696);
|
|
|
;// CONCATENATED MODULE: ./src/components/tpi-code-setting/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var components_tpi_code_setting = (function (_ref) {
|
|
|
var onFontSizeChange = _ref.onFontSizeChange,
|
|
|
cmFontSize = _ref.cmFontSize,
|
|
|
cmCodeMode = _ref.cmCodeMode,
|
|
|
onCodeModeChange = _ref.onCodeModeChange,
|
|
|
tabToSpace = _ref.tabToSpace,
|
|
|
onTabToSpace = _ref.onTabToSpace,
|
|
|
shixun = _ref.shixun,
|
|
|
autoFormat = _ref.autoFormat,
|
|
|
onAutoFormat = _ref.onAutoFormat;
|
|
|
var task_pass = shixun.task_pass,
|
|
|
forbid_copy = shixun.forbid_copy,
|
|
|
test_set_permission = shixun.test_set_permission;
|
|
|
var opt = {
|
|
|
onFontSizeChange: onFontSizeChange,
|
|
|
cmFontSize: cmFontSize,
|
|
|
cmCodeMode: cmCodeMode,
|
|
|
onCodeModeChange: onCodeModeChange,
|
|
|
tabToSpace: tabToSpace,
|
|
|
onTabToSpace: onTabToSpace,
|
|
|
autoFormat: autoFormat,
|
|
|
onAutoFormat: onAutoFormat
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(CodeSetting/* default */.Z, objectSpread2_default()(objectSpread2_default()({}, opt), {}, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("h3", {
|
|
|
children: "\u5173\u5361\u914D\u7F6E\u4FE1\u606F"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("section", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "file-item",
|
|
|
title: task_pass ? '允许学员跳关挑战' : '不允许学员跳关挑战',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
children: "\u8DF3\u5173"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: task_pass ? '允许' : '不允许'
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "file-item",
|
|
|
title: test_set_permission ? '允许学员通过金币解锁查看测试集内容' : '不允许学员通过金币解锁查看测试集内容',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
children: "\u6D4B\u8BD5\u96C6\u89E3\u9501"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: test_set_permission ? '允许' : '不允许'
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: "file-item",
|
|
|
title: forbid_copy ? '不允许学员粘贴代码' : '允许学员粘贴代码',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("b", {
|
|
|
children: "\u4EE3\u7801\u7C98\u8D34"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: !forbid_copy ? '允许' : '不允许'
|
|
|
})]
|
|
|
})]
|
|
|
})]
|
|
|
}));
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/path-list/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var path_listmodules = ({"path-container":"path-container___KGFjp","active":"active___mpzPi"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/path-list/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
function path_list_A(_ref) {
|
|
|
var callback = _ref.callback,
|
|
|
file = _ref.file,
|
|
|
onHidePathList = _ref.onHidePathList;
|
|
|
function onClickHandle() {
|
|
|
onHidePathList();
|
|
|
callback(file);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onClickHandle,
|
|
|
children: file
|
|
|
});
|
|
|
}
|
|
|
/* harmony default export */ var path_list = (function (_ref2) {
|
|
|
var paths = _ref2.paths,
|
|
|
onChangePath = _ref2.onChangePath,
|
|
|
activePath = _ref2.activePath,
|
|
|
isVisible = _ref2.isVisible,
|
|
|
onHidePathList = _ref2.onHidePathList;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("ul", {
|
|
|
className: path_listmodules["path-container"],
|
|
|
onMouseLeave: onHidePathList,
|
|
|
style: {
|
|
|
display: isVisible ? 'block' : 'none'
|
|
|
},
|
|
|
children: paths.filter(function (f) {
|
|
|
return !!f;
|
|
|
}).map(function (f) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
className: activePath === f ? path_listmodules.active : '',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(path_list_A, {
|
|
|
callback: onChangePath,
|
|
|
file: f,
|
|
|
onHidePathList: onHidePathList
|
|
|
})
|
|
|
}, f);
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/xterm-panel/index.jsx + 1 modules
|
|
|
var xterm_panel = __webpack_require__(77441);
|
|
|
;// CONCATENATED MODULE: ./src/components/TpiDescIcon/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var TpiDescIconmodules = ({"iconWrapper":"iconWrapper___U51IV","minusIcon":"minusIcon___xP_3j","arrowIcon":"arrowIcon___jKd9h"});
|
|
|
;// CONCATENATED MODULE: ./src/assets/images/task/desc.png
|
|
|
var desc_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABKCAYAAAAL8lK4AAAAAXNSR0IArs4c6QAAFrlJREFUeF7tW3uMXNV5/86989jZXXsf7K53Z722F68fGBwbLOOYR6jBqXhUbZQW5KQNKbQRtFJRhZqmpCmPtqEqqH/0r6SoQUpQlUBSoapNQtuoDaQhJSRAUx5JSigB29gGL/a+ZmfmnvNV3znnO+e7d2bZjVS1ldJJzMzeuY9zft/r9z1GwU/5S/2U7x/+H4C1awAqRIB77rnn/yxod911Fyq7OoVr3deKm/nR67itDe07DcIRQEiNQSAAjP2HQE+gv+k/xsRj9jwAe8x+zdfxcbqebuL+7+7lj7n7uy/sKYXj4fn+XuH8LrslIDaOVhFKtcaZJVC9ZfxetaQfSPb0PHRIqYwv6QrAy8dbt2mt7jOIVV4gP8wBoQDtwnnxtGb6n7Kbo2uKADhQ6DgCKgKGNhhBdZ+Vv5bukQfAYe3uHYDQDmx6WWH414bhCmyZ6IXnjyeQaQZTQX9Vw1DNPFsrVw9fcr6atbpSBO9HJ7JPG4235DZuN+UX5BdgF+OlaxdEAARNcEBYKXspGr/ICIC4nsGh8610HRBWGRBA++fQWoOGIYImAPzG+X3P1l5Ie3rgpaMEdBLW5NavYLCWwUDVfOvKvT2XKqVIFvH14xPtezOEO3Ibk4gH9fYPFuZgTSOYifhemESUnpdc7pq8ObBUpUnlrmdwvBYQAPt39oNJyvDiUUJFgQNdCc10e9002IZSmlx/aE/1SwGA19/EnzFo/inTxjo7VnkrVZKuXaxQW5a+tGPekF19AZDgF4SmSA0Rz5Sbz5ugNwPWNHH9ufUe2FzvgW+81AZQKShInWlYbfLvXpOHahqGe/HrV+7tOWQBQMTktbfM82jwvOB4wKkeq13YvLdz56jQoxw3y7ZO3+eu9zZs7Zzvy75CACcdoQ4OUTha7yDD8w1ApZLAdQcG4G+fXgINZQClQCUJACb2s/M93hcAQLVkYOOAWZ7qqw5aAI6exuuNMY84FZaOSdqc8OjSc3uHFqJDAC3vM6w6FkyI1Tvn3b0xSydY9D9FU9u3ow/mGwgvHc0gKVUgSRPrHBWUrGuO93KaQEYxPdyGpJTutwAcO23+0RhzOHhu4Xg4LJE0rEByqi8kbz00h0YAPl86LWkWHCqjirvrrcZ1C38F/8Kg0QZ+/tJB+OK/nAFIKpCmJUjSslf/vA+wDtWvcdtoG0qJuk7NzeHIQoYnjMGUw5eMxcEhsgeW4UlJALxJFEESgBF4HdIU3j46vMgzig45Fx4BYHKkAuPnlOCJF5aglFYgLSeQqAooUn0bBfiZPsT69W8fbUM5TW9Ub5zBG1Cbh4MKr0hAVo7tIcazBgiwpAYE5yqJjF8gKafUQMcnPGmSYZIjj3/WRdv74JWTTTh2WkOpVIakXIGUNk8RnvwNKTwTOE/O6DnnjWeQpsnN6uQZvM8Y/KiVvpdeVymFi2N85muCoxRMrsjiWL0df5D8gB7qiFVXIRQ2H673x6/atx6+/PQcGKMgLVcgScgEyAckniO4KODAdQ6RzOCCiQxUom4gAKz9kxSt10bliYffqD8upReoqg+P7O35emfX3a8vOkJ+LtmyJTx+keF69kfWiQqu4O9/eN96+OtvnoVyuQwqTaFSqgAkqfNX1p+4TUstSFIHQAJwnTp1Fl/SBncGW/HeOu+F3cKY/QVnRqoWJBo1g6XJHMIB4ulzzplF6svOj81JAl6k46xdoBJ4965eeOy785AmKZQrVUhodykBQFogtC2wSoBaBWHnBgNpog6oU2dw3gD2MwD2YayiQoocS0OC4wlQtNtoQow2S7voI6QWMNBW4tJ32AULOtxlXWmq4ILpGjzxwjJAoqBSqVrnR8BI+485hoswAz0IW8c0QH91RCEiUaYqAJT432yjUXnrTNZfQfWBtJTc2WgZWFrKIDMm56joWbRZeqhLQ91n/4nWFLINe47/3mWslqPYD3wenUGf+X52L/7eiX+3x+i8xJ37yokW/OAY2XMCaVqGtOylb1l+1FDiIc73KJgYMDA5hHP7t1cGumaD1z/ySDr64mjt937j4OMa8aKlRhsWl9rQQoCsrb2zcptn0wgqXkhk+BwZWu3Ccimtj/+0Ss8DON0O3IDTa5H80B4TlYAi6pumUEpTSFQZqCjg1hXZnw5aDbBtzMBwHzy7b1vloq4A3H03Jr/6kaU9Pb2lZ9oZwuKygWarDe2WV1Orru4B4SEineVszqphgVk6E4oLy11P9+z6HdcJfIJDIZI2qRWocgqU01kNSUtWs1CVvPlweh7rEwTo3k0aesvqM3u3Vn69e0EEUc0utv40M8lHs7aBZobQzgxk2rgU1PiF2iggU1cHCrFAKzmOv5yVCSLkPDSHQ9YmLrgwBee6A2/c8wLvfJ19JQ4MSn9UCpikdo0+Hwsmy9EgTQEOTBuAJPnIni2lv+yuAYjJ7cv4WrOtJ0l12i0NbZKM5ljt8/QgXY4QLFkGxashb9xHEgaN1TLSYi9payI+jIXQR5uMuQkJwZoVOTyVBpNSFP9B2VgvfQBr2nA/wM5xDeUS7N61qfp8VwCWWnggy8y/0k20IalTZcVYANzNI6V1nN+nnL5aFCh1cDxRssFsQoFESL2gESEn4EqT1yQXqRLnL2ywI9Ljs0yrHVHlpe0TqDPjCBMD8OYFm0sbOgoi3n3DYhPvMYh30sV8M/dQR5LyyYrk2N7meKF8rq/GMHMMqWmgqB7EwEG60NdQj/AmZusU3p8wR6HYz+HUAxJZrVvn/mkD/bXkC+dtLH3AByPednxfbOJ3tMF9zlM7dQxUmZiiJr+gICPzyAR788zLLYL8hEtKrev0PoHMNi6KNCyqei4tJk1b4fm8ruh/+FzJ/OT1TmjVEsDBGQMqTX5t52Tpwa4AIOL4UguOa43Kxc6o4rzwxWWAlgHrbLSlzm4j9DeBor2m0DEuSmbWnOh+bmHspCzp8g6R7dGXBCxPIDAp7lvOgGjjf6rQZXvC/FgrJbjBFLym1QcBdtYRklppats56mhXABotvCkz+GBIWKSagoJMIyw1ATJUkGWOv9ODaOO8WQKAzqONMCCZT0LoGvLIFhwGzqs3XZMD1J9Da7HnBhCB4jhsGTaiVC9K8SGfidpG1+6dAhhdj89tmyxfyPre4QQXm/glbcwvOmLDFVkXhmghdKPFhjtOi7WLJqnSZjUfJ21wG3Xf03XOedJxC5DVBgKSNYOvjxtlzQpACcDou6khhA3rhBP26w30msyIS+cK4MrzkIqhf3zuePoHXQFAxPJiC95Cg+ujbZKERdIDChothGabVV8CIaQbNi4kbTfvpMIgBK2hY9aEnBcnoBgc+zlcF+83WHOsLjpqZqaxlM7hdLifHKCCUik9MDWivt0VgMWWdXzfyRUQQjcosj7yC42WglaGQC0WrZ2krQZ4idpjwjycj3D2T5vvNBuxSX8fljzf12qgMJ3x9Wi1oCPlFZkfc4xdGwG2jKo3No0kkxT+VgLgVmPwU64aI0NRMRpwAYNjrucHtDnaZFB1ClUOKLZj2kybJOqlSu8trxn03s4UtDVCS3tNsMBFcBiUnhIRGmMpsGucxPxCxn7LWzTC4d0APVX1F5vOSW+VcS/nAxab+KBBvEk6QO7KREAE4oUQ6WyPFxKrLzJnYA6Q89bMN0Ruwf6BwqzzLQQkQNug3XRv2aahhRCdD4NMyNbVAK7YRaQ5vaZ+jnpsRQAWmvjvxuAFMfR5TfAO0GpGyORivZ2TH1ZFyfG5OxNqfIKlhaaqZ5L5UMYEq1MTg8RDDzKey89xRRMXYnfUFewYh7mJ4WRUKdXqCgAi9i22YM4YTDpCoI+3+ZJVp/pLqTo/ErOx4FdynV8RpliNu9DnSMiEAAqOOWpqnmjRXq48X8FAH3xhfDC17K8rAI02vifL8HGu0bEq200xKwuZn0gzg9pGYtJ1MZ66FpOcbr5G2jQ/n/1SID+5Enuk7LFD7Y7VKgBX7yE+mh4ZG1QPrwjAwjL+DiLeb9WwYIvumHM05MBabReuuPDItb9A73ypSHZ5c0lJro7AYTEfz3kdrI0y6YpFzmgeTju56sMJloLpMYQ9W5JWul6NjCo1vzIATfw8Gjwikx+O/0yKaPMLyy6M2bDn47kmRyViOy2mTYzPL8j3qVyNwJa0fKWM/Bh9TmxJD1JfJqPsgR0qb4zWwKwz1PhE9hg1xect3v4vngEYH4Cv1odL13ZmPWI+YKGJzxiNF1pJB+/OquWOLbWc9B3Xd4mQZYD0t88DAmW1ocsD5Zmf9eYU6jiecyikexFz9O8U4qZHENbX5HwAs1GRm4g6Q2ykxOSKCsTvPd8QwLdsHq08sBoAZ7XG9dFZuQdJx0cAUJy20vcgWGlTzKbFW5LjNuPoL53vWZ8/xjkDaYzNJegcDwSTHPqbsv2Lt1DIi45PhtlidJFawaF2bB3ChdOUTZXr02PqxIoAIOLYwjKe5DDEPfVi3t7MABqtmPXxZiJnF9zfSt1lhxmRGx+WHCAOrMwyQ59I+WRK3nP3JMJATWajkfBIXyUrS+EzKtgxkcHGIfOtmcnaJd02H7LBpTYezDLzJFd2OOzEeOvnexCglSlYJifo6wEtKpMZ5aTv1d7RXa8JNiESzM9vNGxcMEK7eaa6GmDfZgO1smy++NAq02BfM+DIE7UW4ODWFtSqye9un+y5/x0BWGjhh4zGz3VUasLggoj5HH99jLdZns0DhMRpE22wUrfsjSJHxv8UkCYR7XUML26aTYeOU5Y3MybaZaFlHitQst8XHLYPt/0VhL2b2lCupLu216svvSMA8w1XAostrEKfTvKAbo6nkHwEKYiQWswuuVhCFWfSKtr8MjlVo6BWBuiryEpTnu/nuUG+uuy+A9g4mMHUkH7tXVv7Nq+0+WACCw38KwP4QdYAdnyyHsDl7pyZCG1wzjOOouTCmF9UsUApq8E5pugpd3x+zDGc7ctqUKH/7/OKXRNNWN8DD+yd6btlLQA8lSFebPuDvuGRz7BYApIVysRDVn2jucR2lGRqvg4Y0uy8Y4sOuJh0CW4gyvG5zm+YT1Cwd3IJ0gTfv2/H+kdXBWC+ga9rxI2cQDAT5HGSkLSI7E+qeaTKLpbHmcAuJW9Z3fUOzEk6zhR1Zp6RicpIlXN8YW4JoK+qYWakmUF53Tnv3qbmVgVgroENg9jDWWAuBQ7zAbIq5Dfq099AUz0dzeXjvDnOKAuFzKDmYS4galu3PKSYqBW5CpnVaF8LNvS3nrh09+AV77R56wMQsX+ugfM5/p+jmE71yDk127FGaEdjbQfWcXBftI3pshhL6XZvWQ6XuUbQBgFYIEAiEsTcQIzAeYFsHlqE3rL5+Hv2DP7JqgA0GjjdQnwlqL0cKvIqSmGJxtBcjHYVG6a5jsVRhdjxAesI/ehcLu10WEGaAPRWgFpTzlzCaGykvbKekPcJopfoI1MxBadnbB2eg1KqLrpi79CzqwKw2ML9WYbfzpEemQ1SFbhJyY2P8xSyfOnLAUFxXtm8gDi+A8PxfWJ99l2UwZgXnDuGsGkoAtBZeRL+Q7TculFe6Y96ym2Y7G+8ddW+oTFZ+1uRBywu47VtjV+Wapir3iDA0rLbdKzlOTDC3z7BcfU+AiMCwDU/C46t+TkSRH9fdq6BHsv0ZLN1hVqDTHdXkD6Z1VC1AQPV5t9cfWDkfatJ3/qAhRbemLXxs7INFeKzt8PlliMpxPacyrs6HW3WZXcRDDpmv7M5gN+s1wDWBNaCPVMIY+uiKbhyW75VJh1s4BZhdMaHXME/RnvmoVbSH7v24Mh9awJgbglv14h/li+C5PNxWlSDcoCmy/vdJonB+cTG01p73DjKy0kNU16mw/w9hdjLZxDKqWi/iSnRPM3NDztzzUKSJy7BjddmaVrksl84OPzNtQGwqO/VoO4oNkAlIOwf6CEkbdfxIQl7yduKrfvMPJ8iBjVPOIMkIFxV16n7zCgC1fW7FzIKfT/hmIOm+ogg15mghpHK2Wxw0+i6Q9NqeU0AnF3CP9cGb+ugoqKlbZ2MrMCGUTc5ApO33bwnd7ZPvJ+cZIVmGhLBDkXzhYlODH2iLtHRpMmP4JSxCevSuRevv3Li/LVs3vqAsw38VJaZW3nmJ0jbEqDIwHJ9QrY5P+QQc/DY7u6aEHXwCzFBUqDgcrQuMEOvfTLnkIKrwBL0qqWHjxweP7JmAM4s4mcM4s35jUfUieLEWpzg//6HCPnagUtaigVKsvfQayi23HP5fJwxeqcGiyNRsk7gtK8Kc1BVy5/44Hvrn1wzAG8v4UNG46/Ecjhv0nljaf9Fj7wmNRW5QSdFjvXHmG0WQO6Y9o6jryFX8ZpV1rNQRn3DjddMfHHNAMwu6IcNqhtcIhSzwa51+PCrMOGVeaytWxO1owtU1AQ2se6aFctecfSGc4GcX/LPrrTepBVeevPPTT65ZgDeXsRHtcH3yY6wnLyQZelIkPL9v44ChZj66Gi0huLJSn0Amd/HUpxseMR8IT8IXVo+AaVyOn3TNROvrhmA2QXzFYNwTeypyXyeH5AfhAppqHeUuXa6mNAO8VpmgkGLxACG1CzuExZ8QxjKzp0bfwFCmpE0jsPwtqnqDefn+3/vmA6fXsCvIeJVsWsrWuPS64aw2Mnfu/NzyeV9EhOAEL8XsD9ri+l1nCxdAfwwnd45kQaLx/A337/Zzc+t8aVm5/EJjebyYl4t7U/2BorZl5RycHKy3R1+8JBvpubz+s4eRHyO2KjvNbDGFTUvmzuKt/3Slp8MgNML+FVt8Go3Ll+URtEGRWVGqGgelHzVNgJZJD6yw+Prib4RK2cIpGnmIoX4BQg/oz13DH/7+p9QA07P609rVLdEifgCgxgv53CYS1RWyMjyi/fjgTwIJQeqbVndDT266XE2mWJhVfzURSZKYWYhjtktnzkOT/3bq/M017zaa31/5fRn77xkWs3O4eVaweNaG5WrvHRhbbk+vaj4FD10N6l3HPMhMtfulhOmYXKc55M7I0/RyTbnTsETT/3QvHby7KpmsHN6+NTn/+jyDXZE5s05vF0b+ENtTF+xv+7GWwp1OpkbyNq/nwblSTA2jY66X057ROJT6PKERk3oS3APIL8eeg69mktz8P0fvLz49PNv9K2mAft3jz/3wMcOXBhmhE4t4Lhuw9UazQyaZNogUJV4ozY4aQCq0hZz3IAJlJzuZvOR3l2UviS7ZM0ojuXEZCo/oc5Sd9yjUJrXLTh59D9PfuUbL29YDYDDBzZ97v7fuvDD3X8vULj6OP24chk2goZJncGkATNpDNQNqkmNMGkQ6og44pIW1xfMb0A612J7O2oAe/V87hGlHn+gJfsQLgHjn9+cfet469F/eK5C0+0rvUrUMPjZHTN3/PL2V9YEwGpo0vf/gVhdeBUm2hrqbYQ6INSNMXVtCCBVRwIM6Fhswcs6YC7DEyXykB4L/xB+/+drCzz0RwC2msvwzLPf0y+8/Kb7+XiX1wUzI8ceuvvSjfTVfxsAawGJzvn7E9inZqGOGUyYDOqZBcXUjYEJbbAOkBBIExpxXRiALLC/YvMlTD36RSycPWP+7mtPJws00FB49dXK5prLzj38+x/e+c//KwCsFahHXsD+9jxMqBaBpCeaLdxmdLYrM0jNznGAdFglCTntEkmef6zGn+dm39aPff276dxiMzyyVi3joYunPvHJW3bfywf/xzVgrQCs9bxHnsTaqbdhanl54V2AsMtAtk2B2qSSdLzdbtZf/fHr6tTsWT0+1Pv9qc3rPvTxI+f9UN77vwCByDyXl6nyEwAAAABJRU5ErkJggg==";
|
|
|
;// CONCATENATED MODULE: ./src/assets/images/task/arrow.png
|
|
|
var arrow_namespaceObject = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACIAAAAgCAYAAAB3j6rJAAAAAXNSR0IArs4c6QAAAZdJREFUWEfF2D1Lw1AUxvH/8xHcBHFSaUfrojiKi19FHFwUFQQriLoIxcVVv4O4CCJOOriK7oKTCiLaQY9cCaW2yc1LzU2WDLnn5EdC8pxEDLCZ2SRwDIwCTUmttHZmVgNOALc/kLTtapRWmHTczKaAc2AoWvMNjEh68tTUgQtguGtNXdJ9IUgMwvX1QswsDuHqikESEK7hlqRm3NXwIFqSlnPfGg9iT9J6TsQRsCjJckHKRGSGlI3IBAmBSIWEQnghIRGJkNCIWEgViD5IVYg/kCoRHUjViG7IJvAbx11bG5iVdJvw6l4CDnuOueCbk3SZN9U76Wtmu8BaT4MXYN6DWQX2e2regQVJV3kwf8aAKjF980hVmNjBqApM4oQWGuMdFUNiUmfWUJhUiHsEQ2AyQUJgMkPKxuSClInJDfFgHoFxSZ8J2RQXB8/AmKTXQhAPpibpISljzCwOMyPpujAkwuwAG9GJb6K0/vKFnZmtREHpzn0HNCS1B4JEmOnob8CppI8siWtmDWACOJP0lvo5kaXpf635AX6GXzDZRnW0AAAAAElFTkSuQmCC";
|
|
|
;// CONCATENATED MODULE: ./src/components/TpiDescIcon/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var TpiDescIcon = function TpiDescIcon(_ref) {
|
|
|
var desc = _ref.desc,
|
|
|
visible = _ref.visible;
|
|
|
var moveElement = (0,react.useRef)();
|
|
|
var minusIconElement = (0,react.useRef)();
|
|
|
var _useState = (0,react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
hide = _useState2[0],
|
|
|
setHide = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)(false),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
open = _useState4[0],
|
|
|
setOpen = _useState4[1];
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (moveElement.current) {
|
|
|
var onMouseDown = function onMouseDown(e) {
|
|
|
setOpen(false);
|
|
|
var box = moveElement.current.getBoundingClientRect();
|
|
|
startLeft = box.left;
|
|
|
startTop = box.top;
|
|
|
startPageX = e.pageX;
|
|
|
startPageY = e.pageY;
|
|
|
dragging = true;
|
|
|
click = true;
|
|
|
document.onselectstart = function () {
|
|
|
return false;
|
|
|
};
|
|
|
};
|
|
|
var onMouseUp = function onMouseUp(e) {
|
|
|
e.stopPropagation();
|
|
|
dragging = false;
|
|
|
document.onselectstart = null;
|
|
|
if (click) {
|
|
|
click = false;
|
|
|
if (e.target !== minusIconElement.current) {
|
|
|
setOpen(true);
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
var onMouseMove = function onMouseMove(e) {
|
|
|
if (dragging) {
|
|
|
click = false;
|
|
|
setOpen(false);
|
|
|
var spareWidth = e.pageX - startPageX;
|
|
|
var spareHeight = e.pageY - startPageY;
|
|
|
moveElement.current.style.left = "".concat(startLeft + spareWidth, "px");
|
|
|
moveElement.current.style.top = "".concat(startTop + spareHeight, "px");
|
|
|
}
|
|
|
};
|
|
|
var startLeft = 0;
|
|
|
var startTop = 0;
|
|
|
var startPageX = 0;
|
|
|
var startPageY = 0;
|
|
|
var dragging = false;
|
|
|
var click = false;
|
|
|
moveElement.current.addEventListener('mousedown', onMouseDown);
|
|
|
document.addEventListener('mousemove', onMouseMove);
|
|
|
document.addEventListener('mouseup', onMouseUp);
|
|
|
return function () {
|
|
|
moveElement.current.removeEventListener('mousedown', onMouseDown);
|
|
|
document.removeEventListener('mousemove', onMouseMove);
|
|
|
document.removeEventListener('mouseup', onMouseUp);
|
|
|
};
|
|
|
}
|
|
|
}, [moveElement.current]);
|
|
|
var onClose = function onClose() {
|
|
|
setOpen(false);
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
style: {
|
|
|
display: visible ? 'block' : 'none'
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(drawer/* default */.Z, {
|
|
|
title: "\u4EFB\u52A1\u63CF\u8FF0",
|
|
|
placement: "right",
|
|
|
onClose: onClose,
|
|
|
open: open,
|
|
|
children: desc
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: TpiDescIconmodules.arrowIcon,
|
|
|
onClick: function onClick() {
|
|
|
return setHide(false);
|
|
|
},
|
|
|
style: {
|
|
|
position: 'fixed',
|
|
|
display: hide ? 'block' : 'none',
|
|
|
zIndex: 1000,
|
|
|
bottom: 223
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
draggable: false,
|
|
|
src: arrow_namespaceObject,
|
|
|
alt: ""
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
ref: moveElement,
|
|
|
draggable: false,
|
|
|
className: TpiDescIconmodules.iconWrapper,
|
|
|
style: {
|
|
|
position: 'fixed',
|
|
|
display: hide ? 'none' : 'block',
|
|
|
zIndex: 1000,
|
|
|
bottom: 223,
|
|
|
right: 26,
|
|
|
borderRadius: '50%',
|
|
|
cursor: 'pointer'
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
ref: minusIconElement,
|
|
|
onClick: function onClick() {
|
|
|
setOpen(false);
|
|
|
setHide(true);
|
|
|
},
|
|
|
className: "iconfont icon-yichu1 ".concat(TpiDescIconmodules.minusIcon)
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
draggable: false,
|
|
|
src: desc_namespaceObject
|
|
|
})]
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var components_TpiDescIcon = (TpiDescIcon);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var code_repository_excluded = ["taskData", "moveY", "isHtml", "isNotice", "onResizeYStart", "_dispatch", "codeRepData", "isEditPath", "onEditRepCode", "onUpdateCode", "onResizeSetContainer", "onEval", "evaluateLoading", "evaluateMessage", "onResizeCodeArea", "onShowDir", "onChangePath", "onShowNotice", "onResetCode", "onResetGitCode", "onResetPassedCode", "onFinishDisplayHtml", "onGetUnity3dMessage", "unity_3d_routes", "with_code_file"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var code_repository_initialState = {
|
|
|
theme: (0,urlTool/* fromStore */.G)('cmCodeMode', 'vs-dark'),
|
|
|
fontSize: (0,urlTool/* fromStore */.G)('cmFontSize', 16),
|
|
|
tabToSpace: (0,urlTool/* fromStore */.G)('cmTabToSpace', true),
|
|
|
autoFormat: (0,urlTool/* fromStore */.G)('autoFormat', false),
|
|
|
showEditorSetting: false,
|
|
|
showPathList: false,
|
|
|
tabIndex: 0,
|
|
|
sshConfigData: null,
|
|
|
sshConfigDataArr: [],
|
|
|
sshTabs: []
|
|
|
};
|
|
|
function code_repository_reducer(state, action) {
|
|
|
switch (action.type) {
|
|
|
case constant/* SET_EDITOR_SETTING */.x9:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showEditorSetting: action.payload
|
|
|
});
|
|
|
case constant/* SET_EDITOR_THEME */.$Y:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
theme: action.payload
|
|
|
});
|
|
|
case constant/* SET_EDITOR_FONTSIZE */.Tp:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
fontSize: action.payload
|
|
|
});
|
|
|
case constant/* SET_TAB_INDEX */._0:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
tabIndex: action.payload
|
|
|
});
|
|
|
case constant/* SET_SSH_CONFIGDATA */.ww:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
sshConfigData: action.payload
|
|
|
});
|
|
|
case constant/* SET_SSH_CONFIGDATAARR */.J$:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
sshConfigDataArr: action.payload
|
|
|
});
|
|
|
case constant/* SET_SSH_TABS */.Bt:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
sshTabs: toConsumableArray_default()(action.payload)
|
|
|
});
|
|
|
case constant/* SHOW_PATH_LIST */.Kv:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showPathList: true
|
|
|
});
|
|
|
case constant/* HIDE_PATH_LIST */._F:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showPathList: false
|
|
|
});
|
|
|
case constant/* ON_TAB_TO_SPACE */.um:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
tabToSpace: action.payload
|
|
|
});
|
|
|
case constant/* ON_AUTO_FORMAT */.QF:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
autoFormat: action.payload
|
|
|
});
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}
|
|
|
var code_repository_TIMETICKET = 30000;
|
|
|
/* harmony default export */ var code_repository = (function (_ref) {
|
|
|
var _taskData$challenge, _taskData$challenge2, _taskData$challenge3, _taskData$challenge4, _taskData$challenge5;
|
|
|
var taskData = _ref.taskData,
|
|
|
moveY = _ref.moveY,
|
|
|
isHtml = _ref.isHtml,
|
|
|
isNotice = _ref.isNotice,
|
|
|
onResizeYStart = _ref.onResizeYStart,
|
|
|
_dispatch = _ref._dispatch,
|
|
|
codeRepData = _ref.codeRepData,
|
|
|
isEditPath = _ref.isEditPath,
|
|
|
onEditRepCode = _ref.onEditRepCode,
|
|
|
onUpdateCode = _ref.onUpdateCode,
|
|
|
onResizeSetContainer = _ref.onResizeSetContainer,
|
|
|
onEval = _ref.onEval,
|
|
|
evaluateLoading = _ref.evaluateLoading,
|
|
|
evaluateMessage = _ref.evaluateMessage,
|
|
|
onResizeCodeArea = _ref.onResizeCodeArea,
|
|
|
onShowDir = _ref.onShowDir,
|
|
|
onChangePath = _ref.onChangePath,
|
|
|
onShowNotice = _ref.onShowNotice,
|
|
|
onResetCode = _ref.onResetCode,
|
|
|
onResetGitCode = _ref.onResetGitCode,
|
|
|
onResetPassedCode = _ref.onResetPassedCode,
|
|
|
onFinishDisplayHtml = _ref.onFinishDisplayHtml,
|
|
|
onGetUnity3dMessage = _ref.onGetUnity3dMessage,
|
|
|
unity_3d_routes = _ref.unity_3d_routes,
|
|
|
with_code_file = _ref.with_code_file,
|
|
|
props = objectWithoutProperties_default()(_ref, code_repository_excluded);
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
var codeAreaContainerRef = (0,react.useRef)();
|
|
|
var _useReducer = (0,react.useReducer)(code_repository_reducer, code_repository_initialState),
|
|
|
_useReducer2 = slicedToArray_default()(_useReducer, 2),
|
|
|
state = _useReducer2[0],
|
|
|
dispatch = _useReducer2[1];
|
|
|
var _useState = (0,react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
showCaseList = _useState2[0],
|
|
|
setShowCaseList = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)(),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
vncData = _useState4[0],
|
|
|
setVncData = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)(false),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
isResizeLarge = _useState6[0],
|
|
|
setIsResizeLarge = _useState6[1];
|
|
|
var loading = codeRepData.loading,
|
|
|
content = codeRepData.content,
|
|
|
language = codeRepData.language,
|
|
|
filename = codeRepData.filename,
|
|
|
file_type = codeRepData.file_type,
|
|
|
lastedUpdateTime = codeRepData.lastedUpdateTime,
|
|
|
paths = codeRepData.paths,
|
|
|
currentPath = codeRepData.currentPath;
|
|
|
var fontSize = state.fontSize,
|
|
|
theme = state.theme,
|
|
|
showEditorSetting = state.showEditorSetting,
|
|
|
showPathList = state.showPathList,
|
|
|
tabIndex = state.tabIndex,
|
|
|
sshTabs = state.sshTabs,
|
|
|
tabToSpace = state.tabToSpace,
|
|
|
autoFormat = state.autoFormat,
|
|
|
sshConfigData = state.sshConfigData,
|
|
|
sshConfigDataArr = state.sshConfigDataArr;
|
|
|
var shixun = taskData.shixun,
|
|
|
test_sets = taskData.test_sets,
|
|
|
test_sets_count = taskData.test_sets_count,
|
|
|
sets_error_count = taskData.sets_error_count,
|
|
|
last_compile_output = taskData.last_compile_output,
|
|
|
game = taskData.game,
|
|
|
git_url = taskData.git_url,
|
|
|
myshixun = taskData.myshixun,
|
|
|
user = taskData.user,
|
|
|
allowed_unlock = taskData.allowed_unlock;
|
|
|
var webssh = shixun.webssh,
|
|
|
multi_webssh = shixun.multi_webssh,
|
|
|
hide_code = shixun.hide_code;
|
|
|
var terminal_count = taskData.terminal_count;
|
|
|
var testCaseListOption = {
|
|
|
onFinishDisplayHtml: onFinishDisplayHtml,
|
|
|
allowed_unlock: allowed_unlock,
|
|
|
onResizeSetContainer: onResizeSetContainer,
|
|
|
moveY: moveY,
|
|
|
language: language,
|
|
|
content: content,
|
|
|
isHtml: isHtml,
|
|
|
myshixunIdentifier: myshixun.identifier,
|
|
|
test_sets_view: game.test_sets_view,
|
|
|
identity: user.identity,
|
|
|
lastedUpdateTime: lastedUpdateTime,
|
|
|
test_sets: test_sets,
|
|
|
test_sets_count: test_sets_count,
|
|
|
sets_error_count: sets_error_count,
|
|
|
last_compile_output: last_compile_output
|
|
|
};
|
|
|
var isU3d = unity_3d_routes && !with_code_file || (taskData === null || taskData === void 0 ? void 0 : (_taskData$challenge = taskData.challenge) === null || _taskData$challenge === void 0 ? void 0 : _taskData$challenge.thiry_party);
|
|
|
(0,react.useEffect)(function () {
|
|
|
mediator/* default.subscribe */.Z.subscribe('update-windows-time', function (data) {
|
|
|
setVncData(data);
|
|
|
});
|
|
|
var unSub = mediator/* default.subscribe */.Z.subscribe('show-case-result', function (status) {
|
|
|
onResizeCodeArea(1); //重置moveY为0
|
|
|
if (status) {
|
|
|
setShowCaseList(status);
|
|
|
} else {
|
|
|
showCaseList = !showCaseList;
|
|
|
setShowCaseList(showCaseList);
|
|
|
}
|
|
|
});
|
|
|
return unSub;
|
|
|
}, []);
|
|
|
(0,react.useEffect)(function () {
|
|
|
mediator/* default.publish */.Z.publish('showRunCode', !tabIndex);
|
|
|
mediator/* default.publish */.Z.publish('showRunCodeTab', !tabIndex);
|
|
|
mediator/* default.publish */.Z.publish('taskTabIndex', tabIndex);
|
|
|
}, [tabIndex]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (taskData !== null && taskData !== void 0 && taskData.vnc_url || taskData !== null && taskData !== void 0 && taskData.windows_vnc || taskData !== null && taskData !== void 0 && taskData.linux_vnc || taskData !== null && taskData !== void 0 && taskData.virtual_machine) {
|
|
|
setShowCaseList(false);
|
|
|
state.tabIndex = -1;
|
|
|
setTimeout(function () {
|
|
|
dispatch({
|
|
|
type: constant/* SET_TAB_INDEX */._0,
|
|
|
payload: -1
|
|
|
});
|
|
|
}, 400);
|
|
|
} else if (!isU3d) {
|
|
|
setShowCaseList(true);
|
|
|
}
|
|
|
}, [taskData]);
|
|
|
(0,useInterval/* default */.Z)(function () {
|
|
|
var currentTime = new Date().getTime();
|
|
|
if (isEditPath && lastedUpdateTime && hide_code !== 1 && currentTime > lastedUpdateTime + code_repository_TIMETICKET) {
|
|
|
localStorage.setItem('stat', 'newest');
|
|
|
onUpdateCode();
|
|
|
}
|
|
|
}, code_repository_TIMETICKET);
|
|
|
function onCodeChange(value) {
|
|
|
onEditRepCode(value);
|
|
|
}
|
|
|
function onShowCodeSetting() {
|
|
|
dispatch({
|
|
|
type: constant/* SET_EDITOR_SETTING */.x9,
|
|
|
payload: true
|
|
|
});
|
|
|
}
|
|
|
function onHideCodeSetting() {
|
|
|
dispatch({
|
|
|
type: constant/* SET_EDITOR_SETTING */.x9,
|
|
|
payload: false
|
|
|
});
|
|
|
}
|
|
|
function onFontSizeChange(value) {
|
|
|
dispatch({
|
|
|
type: constant/* SET_EDITOR_FONTSIZE */.Tp,
|
|
|
payload: value
|
|
|
});
|
|
|
(0,urlTool/* toStore */.t)('cmFontSize', value);
|
|
|
}
|
|
|
function onCodeModeChange(value) {
|
|
|
dispatch({
|
|
|
type: constant/* SET_EDITOR_THEME */.$Y,
|
|
|
payload: value
|
|
|
});
|
|
|
(0,urlTool/* toStore */.t)('cmCodeMode', value);
|
|
|
}
|
|
|
function onTabToSpace(checked) {
|
|
|
dispatch({
|
|
|
type: constant/* ON_TAB_TO_SPACE */.um,
|
|
|
payload: checked
|
|
|
});
|
|
|
(0,urlTool/* toStore */.t)('cmTabToSpace', checked);
|
|
|
}
|
|
|
function onAutoFormat(checked) {
|
|
|
dispatch({
|
|
|
type: constant/* ON_AUTO_FORMAT */.QF,
|
|
|
payload: checked
|
|
|
});
|
|
|
(0,urlTool/* toStore */.t)('autoFormat', checked);
|
|
|
}
|
|
|
function onShowPathList() {
|
|
|
dispatch({
|
|
|
type: constant/* SHOW_PATH_LIST */.Kv
|
|
|
});
|
|
|
}
|
|
|
function onHidePathList() {
|
|
|
dispatch({
|
|
|
type: constant/* HIDE_PATH_LIST */._F
|
|
|
});
|
|
|
}
|
|
|
function onTabChange(_x) {
|
|
|
return _onTabChange.apply(this, arguments);
|
|
|
}
|
|
|
function _onTabChange() {
|
|
|
_onTabChange = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(e) {
|
|
|
var id;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
id = /\d/g.test(e) ? e : e.target.id;
|
|
|
if (!(tabIndex == 0)) {
|
|
|
_context.next = 5;
|
|
|
break;
|
|
|
}
|
|
|
if (!(isEditPath && lastedUpdateTime && hide_code !== 1)) {
|
|
|
_context.next = 5;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 5;
|
|
|
return onUpdateCode();
|
|
|
case 5:
|
|
|
dispatch({
|
|
|
type: constant/* SET_TAB_INDEX */._0,
|
|
|
payload: parseInt(id, 10)
|
|
|
});
|
|
|
_context.next = 8;
|
|
|
return (0,service/* commitFiles */.ZH)(game.identifier);
|
|
|
case 8:
|
|
|
_context.next = 10;
|
|
|
return (0,service/* pullFiles */.gn)(game.identifier);
|
|
|
case 10:
|
|
|
if (id == 0) {
|
|
|
_dispatch({
|
|
|
type: constant/* UPDATE_TIMESTRAP */.G9,
|
|
|
payload: Date.now()
|
|
|
});
|
|
|
}
|
|
|
if (webssh === 3) {
|
|
|
setTimeout(function () {
|
|
|
if (id <= 0 && hide_code !== 1 || !sshConfigDataArr.length) return;
|
|
|
init(id);
|
|
|
}, 500);
|
|
|
}
|
|
|
case 12:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _onTabChange.apply(this, arguments);
|
|
|
}
|
|
|
function onAddsshTab() {
|
|
|
var length = sshTabs.length;
|
|
|
if (sshTabs[0] === 3) {
|
|
|
sshTabs.push(2);
|
|
|
} else {
|
|
|
sshTabs.push(length + 2);
|
|
|
}
|
|
|
console.log('sshTabs:', sshTabs);
|
|
|
dispatch({
|
|
|
type: constant/* SET_SSH_TABS */.Bt,
|
|
|
payload: sshTabs
|
|
|
});
|
|
|
}
|
|
|
function onRemoveSshTab(e) {
|
|
|
e.stopPropagation();
|
|
|
e.preventDefault();
|
|
|
var index = parseInt(e.target.id, 10);
|
|
|
sshTabs.splice(index, 1);
|
|
|
dispatch({
|
|
|
type: constant/* SET_SSH_TABS */.Bt,
|
|
|
payload: sshTabs
|
|
|
});
|
|
|
var tabPos = 1;
|
|
|
if (sshTabs.length > 0) {
|
|
|
tabPos = sshTabs[0];
|
|
|
}
|
|
|
dispatch({
|
|
|
type: constant/* SET_TAB_INDEX */._0,
|
|
|
payload: tabPos
|
|
|
});
|
|
|
}
|
|
|
function onCloseSocket() {
|
|
|
if (webssh === 3) {
|
|
|
return (0,service/* resetLinuxVnc */.pK)({
|
|
|
myshixunId: myshixun.identifier,
|
|
|
position: tabIndex,
|
|
|
game_id: game.id
|
|
|
});
|
|
|
} else {
|
|
|
return (0,service/* closeSSh */.OK)(myshixun.identifier);
|
|
|
}
|
|
|
}
|
|
|
function changePathHandler(file) {
|
|
|
dispatch({
|
|
|
type: constant/* SET_TAB_INDEX */._0,
|
|
|
payload: 0
|
|
|
});
|
|
|
onChangePath(file);
|
|
|
}
|
|
|
function onReCreateSocket() {
|
|
|
dispatch({
|
|
|
type: constant/* SET_SSH_CONFIGDATA */.ww,
|
|
|
payload: null
|
|
|
});
|
|
|
init(tabIndex);
|
|
|
}
|
|
|
(0,react.useEffect)(function () {
|
|
|
// dispatch({ type: SET_TAB_INDEX, payload: hide_code ? 1 : 0 });
|
|
|
if (hide_code === 1 && webssh > 0) {
|
|
|
dispatch({
|
|
|
type: constant/* SET_TAB_INDEX */._0,
|
|
|
payload: 1
|
|
|
});
|
|
|
}
|
|
|
}, [hide_code]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (tabIndex > 0) init(state.tabIndex || 1);
|
|
|
}, [tabIndex]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (sshConfigData && tabIndex >= 1) {
|
|
|
setTimeout(function () {
|
|
|
mediator/* default.publish */.Z.publish('create-socket', tabIndex);
|
|
|
}, 100);
|
|
|
}
|
|
|
}, [sshConfigData]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
return function () {
|
|
|
sshTabs.splice(0, 8);
|
|
|
dispatch({
|
|
|
type: constant/* SET_SSH_TABS */.Bt,
|
|
|
payload: sshTabs
|
|
|
});
|
|
|
};
|
|
|
}, [location.pathname]);
|
|
|
function init(_x2) {
|
|
|
return _init.apply(this, arguments);
|
|
|
}
|
|
|
function _init() {
|
|
|
_init = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4(position) {
|
|
|
var _response3, _response3$data, _response3$data$data_, _response6;
|
|
|
var response, _response, _response2, _response2$data, _response4, _response4$data, _response5, _response5$data;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
if (!(webssh === 3)) {
|
|
|
_context4.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
_context4.next = 3;
|
|
|
return (0,service/* openVmSSh */.o4)(myshixun.identifier, {
|
|
|
position: position
|
|
|
});
|
|
|
case 3:
|
|
|
response = _context4.sent;
|
|
|
if (((_response = response) === null || _response === void 0 ? void 0 : _response.status) !== -3) mediator/* default.publish */.Z.publish('update-windows-time', {
|
|
|
remaining_time: (_response2 = response) === null || _response2 === void 0 ? void 0 : (_response2$data = _response2.data) === null || _response2$data === void 0 ? void 0 : _response2$data.remaining_time
|
|
|
});
|
|
|
_context4.next = 10;
|
|
|
break;
|
|
|
case 7:
|
|
|
_context4.next = 9;
|
|
|
return (0,service/* openSSh */.Mu)(myshixun.identifier, {
|
|
|
game_id: game.id
|
|
|
});
|
|
|
case 9:
|
|
|
response = _context4.sent;
|
|
|
case 10:
|
|
|
if (!((_response3 = response) !== null && _response3 !== void 0 && (_response3$data = _response3.data) !== null && _response3$data !== void 0 && (_response3$data$data_ = _response3$data.data_list) !== null && _response3$data$data_ !== void 0 && _response3$data$data_.length)) {
|
|
|
_context4.next = 13;
|
|
|
break;
|
|
|
}
|
|
|
mediator/* default.publish */.Z.publish('pod-restrict-data', {
|
|
|
identifier: (_response4 = response) === null || _response4 === void 0 ? void 0 : (_response4$data = _response4.data) === null || _response4$data === void 0 ? void 0 : _response4$data.identifier,
|
|
|
data_list: (_response5 = response) === null || _response5 === void 0 ? void 0 : (_response5$data = _response5.data) === null || _response5$data === void 0 ? void 0 : _response5$data.data_list
|
|
|
});
|
|
|
return _context4.abrupt("return");
|
|
|
case 13:
|
|
|
if (!(((_response6 = response) === null || _response6 === void 0 ? void 0 : _response6.status) === -3)) {
|
|
|
_context4.next = 15;
|
|
|
break;
|
|
|
}
|
|
|
return _context4.abrupt("return", new Promise( /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3(resolve, reject) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
content: '检测到您已经开启了其他实验环境,请先关闭环境后,再连接',
|
|
|
okText: '立即关闭',
|
|
|
cancelText: '稍后关闭',
|
|
|
onOk: function () {
|
|
|
var _onOk = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var _response7;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
_context2.next = 2;
|
|
|
return (0,service/* closeWindowsVnc */.fA)(params.taskId, (_response7 = response) === null || _response7 === void 0 ? void 0 : _response7.message);
|
|
|
case 2:
|
|
|
init();
|
|
|
return _context2.abrupt("return");
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
function onOk() {
|
|
|
return _onOk.apply(this, arguments);
|
|
|
}
|
|
|
return onOk;
|
|
|
}()
|
|
|
});
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return function (_x3, _x4) {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}()));
|
|
|
case 15:
|
|
|
if (webssh === 3) {
|
|
|
sshConfigDataArr[position - 1] = objectSpread2_default()({}, response.data);
|
|
|
dispatch({
|
|
|
type: constant/* SET_SSH_CONFIGDATAARR */.J$,
|
|
|
payload: toConsumableArray_default()(sshConfigDataArr)
|
|
|
});
|
|
|
setTimeout(function () {
|
|
|
return mediator/* default.publish */.Z.publish('create-socket', position);
|
|
|
}, 300);
|
|
|
} else {
|
|
|
dispatch({
|
|
|
type: constant/* SET_SSH_CONFIGDATA */.ww,
|
|
|
payload: response.data
|
|
|
});
|
|
|
}
|
|
|
case 16:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
}));
|
|
|
return _init.apply(this, arguments);
|
|
|
}
|
|
|
var codeAreaHeight = moveY ? moveY !== '100%' ? "".concat(moveY - 54, "px") : moveY : showCaseList ? '70%' : '100%';
|
|
|
var testSetHeight = moveY === '100%' ? 0 : "calc(100% - 3px - 51px - ".concat(codeAreaHeight, ")");
|
|
|
var socketKeys = [];
|
|
|
if (webssh) {
|
|
|
socketKeys.push(1);
|
|
|
}
|
|
|
if (multi_webssh) {
|
|
|
socketKeys.concat(sshTabs);
|
|
|
}
|
|
|
function onRightFullHandler() {
|
|
|
setIsResizeLarge(!isResizeLarge);
|
|
|
if ((0,fullscreen/* IsFull */.vp)()) {
|
|
|
(0,fullscreen/* exitFull */.BU)();
|
|
|
} else {
|
|
|
(0,fullscreen/* requestFullScreen */.Dj)(document.body);
|
|
|
}
|
|
|
}
|
|
|
var fullChange = function fullChange(e) {
|
|
|
if (e.target.localName !== 'body' || searchParams.get("isFullScreen") === 'true') return;
|
|
|
var taskLeftPanel = document.getElementById('task-left-panel');
|
|
|
var nextElement = taskLeftPanel.nextElementSibling;
|
|
|
if ((0,fullscreen/* IsFull */.vp)()) {
|
|
|
taskLeftPanel.classList.add('hide');
|
|
|
nextElement.classList.add('hide');
|
|
|
setIsResizeLarge(true);
|
|
|
} else {
|
|
|
setIsResizeLarge(false);
|
|
|
taskLeftPanel.classList.remove('hide');
|
|
|
nextElement.classList.remove('hide');
|
|
|
}
|
|
|
};
|
|
|
(0,react.useEffect)(function () {
|
|
|
document.addEventListener((0,fullscreen/* fullscreenChange */.gH)(), fullChange);
|
|
|
return function () {
|
|
|
document.removeEventListener((0,fullscreen/* fullscreenChange */.gH)(), fullChange);
|
|
|
};
|
|
|
}, []);
|
|
|
var codeAreaOption = {
|
|
|
content: content,
|
|
|
language: language,
|
|
|
filename: filename,
|
|
|
file_type: file_type,
|
|
|
onCodeChange: onCodeChange,
|
|
|
theme: theme,
|
|
|
taskData: taskData,
|
|
|
onSave: onUpdateCode,
|
|
|
forbidCopy: shixun.forbid_copy,
|
|
|
isEditPath: isEditPath,
|
|
|
hide_code: hide_code,
|
|
|
code_edit_permission: shixun.code_edit_permission,
|
|
|
monacoOptions: {
|
|
|
fontSize: fontSize,
|
|
|
insertSpaces: tabToSpace,
|
|
|
autoFormat: autoFormat,
|
|
|
readOnly: !isEditPath && !shixun.code_edit_permission
|
|
|
}
|
|
|
};
|
|
|
var actionBarOption = {
|
|
|
loading: loading,
|
|
|
lastedUpdateTime: lastedUpdateTime,
|
|
|
moveY: moveY,
|
|
|
code_hidden: !shixun.show_code_dir,
|
|
|
hide_code: shixun.hide_code,
|
|
|
gameStatus: game.status,
|
|
|
isEditPath: isEditPath,
|
|
|
isNotice: isNotice,
|
|
|
git_url: git_url,
|
|
|
taskData: taskData,
|
|
|
onResetCode: onResetCode,
|
|
|
onResetGitCode: onResetGitCode,
|
|
|
onShowCodeSetting: onShowCodeSetting,
|
|
|
onResetPassedCode: onResetPassedCode,
|
|
|
onShowNotice: onShowNotice,
|
|
|
onShowDir: onShowDir,
|
|
|
onResizeCodeArea: onResizeCodeArea,
|
|
|
onRightFullHandler: onRightFullHandler,
|
|
|
isResizeLarge: isResizeLarge
|
|
|
};
|
|
|
var sshActionBarOption = {
|
|
|
isNotice: isNotice,
|
|
|
moveY: moveY,
|
|
|
tabIndex: tabIndex,
|
|
|
onShowNotice: onShowNotice,
|
|
|
onResizeCodeArea: onResizeCodeArea,
|
|
|
webssh: webssh,
|
|
|
socketKeys: socketKeys,
|
|
|
sshConfigData: state.sshConfigData,
|
|
|
onCloseSocket: onCloseSocket,
|
|
|
isActive: tabIndex >= 1,
|
|
|
onReCreateSocket: onReCreateSocket,
|
|
|
shixun: shixun,
|
|
|
onRightFullHandler: onRightFullHandler,
|
|
|
isResizeLarge: isResizeLarge
|
|
|
};
|
|
|
var tpiCodeSettingOption = {
|
|
|
onFontSizeChange: onFontSizeChange,
|
|
|
cmFontSize: fontSize,
|
|
|
tabToSpace: tabToSpace,
|
|
|
cmCodeMode: theme,
|
|
|
onCodeModeChange: onCodeModeChange,
|
|
|
onTabToSpace: onTabToSpace,
|
|
|
onAutoFormat: onAutoFormat,
|
|
|
autoFormat: autoFormat,
|
|
|
shixun: shixun
|
|
|
};
|
|
|
var calcStyle = (0,react.useMemo)(function () {
|
|
|
var s = {
|
|
|
width: terminal_count * 102
|
|
|
};
|
|
|
if (tabIndex > 2 && terminal_count > 3) {
|
|
|
s.left = -(tabIndex - 2) * 102;
|
|
|
}
|
|
|
return s;
|
|
|
}, [tabIndex]);
|
|
|
console.log('sshConfigDataArr:', sshConfigDataArr);
|
|
|
var getU3d = function getU3d() {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "unity-3d-container",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(unity3d_panel, {
|
|
|
taskData: taskData,
|
|
|
unity_3d_routes: unity_3d_routes,
|
|
|
onGetUnity3dMessage: onGetUnity3dMessage
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(components_TpiDescIcon, {
|
|
|
desc: /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
value: taskData === null || taskData === void 0 ? void 0 : taskData.challenge.task_pass
|
|
|
}),
|
|
|
visible: isResizeLarge
|
|
|
}), isU3d ? getU3d() : /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: choose_repositorymodules["code-area-container"],
|
|
|
ref: codeAreaContainerRef,
|
|
|
style: {
|
|
|
height: codeAreaHeight
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: choose_repositorymodules.navs,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("ul", {
|
|
|
id: "tabsTpi",
|
|
|
children: [((taskData === null || taskData === void 0 ? void 0 : taskData.vnc_url) || (taskData === null || taskData === void 0 ? void 0 : taskData.windows_vnc) || (taskData === null || taskData === void 0 ? void 0 : taskData.linux_vnc) || (taskData === null || taskData === void 0 ? void 0 : taskData.virtual_machine)) && /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
id: -1,
|
|
|
"data-type": "VNC",
|
|
|
className: tabIndex === -1 ? "".concat(choose_repositorymodules.active, " first") : 'first',
|
|
|
onClick: onTabChange,
|
|
|
children: "\u56FE\u5F62\u5316\u7A97\u53E3"
|
|
|
})
|
|
|
}), hide_code !== 1 ? /*#__PURE__*/(0,jsx_runtime.jsxs)("li", {
|
|
|
className: 'flex-container',
|
|
|
style: {
|
|
|
position: 'relative'
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
id: 0,
|
|
|
"data-type": "code",
|
|
|
className: tabIndex === 0 ? "".concat(choose_repositorymodules.active, " first") : 'first',
|
|
|
onClick: onTabChange,
|
|
|
children: ((_taskData$challenge2 = taskData.challenge) === null || _taskData$challenge2 === void 0 ? void 0 : _taskData$challenge2.show_type) === 8 ? '文件目录' : '代码文件'
|
|
|
}), paths.length >= 1 ? /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
onMouseOver: onShowPathList,
|
|
|
className: showPathList ? choose_repositorymodules["arrow-down"] : choose_repositorymodules["arrow-right"]
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)(path_list, {
|
|
|
isVisible: showPathList,
|
|
|
onHidePathList: onHidePathList,
|
|
|
paths: paths,
|
|
|
activePath: currentPath,
|
|
|
onChangePath: changePathHandler
|
|
|
})]
|
|
|
}) : null, !webssh || webssh === 3 ? /*#__PURE__*/(0,jsx_runtime.jsx)("li", {}) : /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
"data-type": "webssh",
|
|
|
className: tabIndex === 1 ? choose_repositorymodules.active : '',
|
|
|
onClick: onTabChange,
|
|
|
id: 1,
|
|
|
children: "\u547D\u4EE4\u884C"
|
|
|
})
|
|
|
}), webssh === 3 && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: choose_repositorymodules["tasks-page-wrp"],
|
|
|
children: [terminal_count > 3 && /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.Z, {
|
|
|
disabled: tabIndex <= 1 ? true : false,
|
|
|
className: choose_repositorymodules["tasks-prev-xterm"],
|
|
|
onClick: function onClick() {
|
|
|
return onTabChange(tabIndex - 1);
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(LeftOutlined/* default */.Z, {})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("ul", {
|
|
|
style: calcStyle,
|
|
|
children: new Array(terminal_count).fill('').map(function (item, key) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
className: tabIndex === key + 1 ? choose_repositorymodules.active : '',
|
|
|
"data-type": "webssh",
|
|
|
onClick: onTabChange,
|
|
|
id: key + 1,
|
|
|
children: ["\u547D\u4EE4\u884C ", key + 1]
|
|
|
})
|
|
|
});
|
|
|
})
|
|
|
}), terminal_count > 3 && /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.Z, {
|
|
|
disabled: tabIndex >= terminal_count ? true : false,
|
|
|
className: choose_repositorymodules["tasks-next-xterm"],
|
|
|
onClick: function onClick() {
|
|
|
return onTabChange(tabIndex + 1);
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(RightOutlined/* default */.Z, {})
|
|
|
})]
|
|
|
}), !!webssh && multi_webssh ? sshTabs.map(function (item, index) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("a", {
|
|
|
id: item,
|
|
|
className: tabIndex === item ? choose_repositorymodules.active : '',
|
|
|
onClick: onTabChange,
|
|
|
children: ["\u547D\u4EE4\u884C", index + 1, /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
title: "\u5173\u95ED\u547D\u4EE4\u884C\u7A97\u53E3",
|
|
|
id: index,
|
|
|
className: "iconfont icon-shanchu_moren",
|
|
|
onClick: onRemoveSshTab
|
|
|
})]
|
|
|
})
|
|
|
}, item);
|
|
|
}) : null, !!webssh && multi_webssh && sshTabs.length < 2 ? /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onAddsshTab,
|
|
|
title: "\u65B0\u5F00\u547D\u4EE4\u884C\u7A97\u53E3",
|
|
|
children: "\uFF0B"
|
|
|
})
|
|
|
}) : null]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: choose_repositorymodules["action-bar-container"],
|
|
|
style: {
|
|
|
display: tabIndex === 0 ? 'flex' : 'none'
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(action_bar, objectSpread2_default()(objectSpread2_default()({}, actionBarOption), {}, {
|
|
|
onUpdateCode: onUpdateCode
|
|
|
}))
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: choose_repositorymodules["action-bar-container"],
|
|
|
style: {
|
|
|
display: tabIndex >= 1 ? 'flex' : 'none'
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(ssh_action_bar, objectSpread2_default()({}, sshActionBarOption))
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "tr",
|
|
|
style: {
|
|
|
marginLeft: 'auto',
|
|
|
marginRight: 20
|
|
|
},
|
|
|
children: ((taskData === null || taskData === void 0 ? void 0 : taskData.vnc_url) || (taskData === null || taskData === void 0 ? void 0 : taskData.windows_vnc) || (taskData === null || taskData === void 0 ? void 0 : taskData.virtual_machine) || (taskData === null || taskData === void 0 ? void 0 : taskData.linux_vnc)) && /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: "c-white current ",
|
|
|
onClick: onRightFullHandler,
|
|
|
style: {
|
|
|
display: tabIndex === 0 ? 'none' : 'inline'
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "iconfont icon-quanping mr5 font12"
|
|
|
}), "\u5168\u5C4F / \u9000\u51FA\u5168\u5C4F"]
|
|
|
})
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
style: {
|
|
|
display: tabIndex === -1 ? 'flex' : 'none'
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(tasks_vnc_view, {
|
|
|
taskData: taskData,
|
|
|
evaluateMessage: evaluateMessage,
|
|
|
language: language,
|
|
|
evaluateLoading: evaluateLoading,
|
|
|
onEval: props.onEvalCode
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("section", {
|
|
|
style: {
|
|
|
display: tabIndex === 0 ? 'block' : 'none',
|
|
|
height: 'calc(100% - 40px)'
|
|
|
},
|
|
|
children: [((_taskData$challenge3 = taskData.challenge) === null || _taskData$challenge3 === void 0 ? void 0 : _taskData$challenge3.show_type) === 8 && /*#__PURE__*/(0,jsx_runtime.jsx)(OfficeUpload, {
|
|
|
taskData: taskData
|
|
|
}), ((_taskData$challenge4 = taskData.challenge) === null || _taskData$challenge4 === void 0 ? void 0 : _taskData$challenge4.show_type) !== 8 && /*#__PURE__*/(0,jsx_runtime.jsx)(code_area, objectSpread2_default()(objectSpread2_default()({}, codeAreaOption), {}, {
|
|
|
onUpdateCode: onUpdateCode
|
|
|
}))]
|
|
|
}), !webssh || webssh === 3 ? null :
|
|
|
/*#__PURE__*/
|
|
|
// {(!webssh) ? null : (
|
|
|
(0,jsx_runtime.jsx)("section", {
|
|
|
style: {
|
|
|
display: tabIndex === 1 ? 'block' : 'none',
|
|
|
height: 'calc(100% - 40px)'
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(xterm_panel/* default */.Z, {
|
|
|
sshConfigData: sshConfigData || {},
|
|
|
sid: 1
|
|
|
})
|
|
|
}), multi_webssh ? sshTabs.map(function (item, index) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("section", {
|
|
|
style: {
|
|
|
display: tabIndex === item ? 'block' : 'none',
|
|
|
height: 'calc(100% - 40px)'
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(xterm_panel/* default */.Z, {
|
|
|
sshConfigData: sshConfigData || {},
|
|
|
sid: item
|
|
|
})
|
|
|
}, "ssh".concat(item));
|
|
|
}) : null, webssh === 3 ? new Array(terminal_count).fill('').map(function (item, index) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("section", {
|
|
|
id: index,
|
|
|
style: {
|
|
|
display: tabIndex === index + 1 ? 'block' : 'none',
|
|
|
height: 'calc(100% - 40px)'
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(xterm_panel/* default */.Z, {
|
|
|
sshConfigData: sshConfigDataArr[index] || {},
|
|
|
sid: index + 1
|
|
|
})
|
|
|
}, "ssh".concat(index + 1));
|
|
|
}) : null]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("section", {}), showCaseList && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: choose_repositorymodules["resize-y-bar"],
|
|
|
onMouseDown: onResizeYStart,
|
|
|
draggable: false,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-guangbiao",
|
|
|
draggable: false
|
|
|
})
|
|
|
}), showCaseList && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: choose_repositorymodules["test-set-container"],
|
|
|
style: {
|
|
|
height: testSetHeight
|
|
|
},
|
|
|
children: evaluateLoading ? /*#__PURE__*/(0,jsx_runtime.jsx)(Spinner/* default */.Z, {
|
|
|
message: evaluateMessage,
|
|
|
style: {
|
|
|
color: '#0152d9'
|
|
|
}
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)(test_case_list, objectSpread2_default()(objectSpread2_default()({}, testCaseListOption), {}, {
|
|
|
taskData: taskData
|
|
|
}))
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: choose_repositorymodules["action-container"],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(footer_bar, objectSpread2_default()(objectSpread2_default()({
|
|
|
onUpdateCode: onUpdateCode
|
|
|
}, taskData), {}, {
|
|
|
dispatch: _dispatch,
|
|
|
loading: evaluateLoading,
|
|
|
isU3d: unity_3d_routes && !with_code_file || (taskData === null || taskData === void 0 ? void 0 : (_taskData$challenge5 = taskData.challenge) === null || _taskData$challenge5 === void 0 ? void 0 : _taskData$challenge5.thiry_party),
|
|
|
onRun: function onRun() {
|
|
|
onEval();
|
|
|
setShowCaseList(true);
|
|
|
}
|
|
|
}))
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(components_modal/* default */.Z, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(drawer/* default */.Z, {
|
|
|
className: choose_repositorymodules["setting-drawer"],
|
|
|
title: null,
|
|
|
placement: "right",
|
|
|
closable: false,
|
|
|
open: showEditorSetting,
|
|
|
onClose: onHideCodeSetting,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(components_tpi_code_setting, objectSpread2_default()({}, tpiCodeSettingOption))
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/nothing.png
|
|
|
var nothing_namespaceObject = "data:image/png;base64,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";
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/classCallCheck.js
|
|
|
var classCallCheck = __webpack_require__(56690);
|
|
|
var classCallCheck_default = /*#__PURE__*/__webpack_require__.n(classCallCheck);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/createClass.js
|
|
|
var createClass = __webpack_require__(89728);
|
|
|
var createClass_default = /*#__PURE__*/__webpack_require__.n(createClass);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/tga.ts
|
|
|
|
|
|
|
|
|
var e = 0,
|
|
|
t = 1,
|
|
|
a = 3,
|
|
|
r = 9,
|
|
|
o = 10,
|
|
|
i = 11,
|
|
|
s = 0,
|
|
|
h = 2,
|
|
|
n = 3,
|
|
|
g = 4,
|
|
|
l = 48;
|
|
|
var _default = /*#__PURE__*/function () {
|
|
|
function _default() {
|
|
|
classCallCheck_default()(this, _default);
|
|
|
}
|
|
|
createClass_default()(_default, [{
|
|
|
key: "_checkHeader",
|
|
|
value: function _checkHeader() {
|
|
|
var t = this.header;
|
|
|
if (t.imageType === e) throw Error("No data");
|
|
|
if (t.hasColorMap) {
|
|
|
if (t.colorMapLength > 256 || 24 !== t.colorMapDepth || 1 !== t.colorMapType) throw Error("Invalid colormap for indexed type");
|
|
|
} else if (t.colorMapType) {
|
|
|
throw Error("Why does the image contain a palette ?");
|
|
|
}
|
|
|
;
|
|
|
if (!t.width || !t.height) throw Error("Invalid image size");
|
|
|
if (8 !== t.pixelDepth && 16 !== t.pixelDepth && 24 !== t.pixelDepth && 32 !== t.pixelDepth) throw Error('Invalid pixel size "' + t.pixelDepth + '"');
|
|
|
}
|
|
|
}, {
|
|
|
key: "_decodeRLE",
|
|
|
value: function _decodeRLE(e, t, a, r) {
|
|
|
var o = new Uint8Array(r),
|
|
|
i = new Uint8Array(a);
|
|
|
var s = 0;
|
|
|
for (; s < r;) {
|
|
|
var _r = e[t++];
|
|
|
var _h = 1 + (127 & _r);
|
|
|
if (128 & _r) {
|
|
|
for (var _r2 = 0; _r2 < a; ++_r2) i[_r2] = e[t + _r2];
|
|
|
t += a;
|
|
|
for (var _e = 0; _e < _h; ++_e) o.set(i, s), s += a;
|
|
|
} else {
|
|
|
_h *= a;
|
|
|
for (var _a = 0; _a < _h; ++_a) o[s + _a] = e[t + _a];
|
|
|
s += _h, t += _h;
|
|
|
}
|
|
|
}
|
|
|
return o;
|
|
|
}
|
|
|
}, {
|
|
|
key: "_getImageData8bits",
|
|
|
value: function _getImageData8bits(e, t, a, r, o, i, s, h, n, g) {
|
|
|
for (var _l = 0, p = o; p !== s; p += i) for (var _o = h; _o !== g; _o += n, _l++) {
|
|
|
var _i = t[_l];
|
|
|
e[4 * (_o + r * p) + 3] = 255, e[4 * (_o + r * p) + 2] = a[3 * _i + 0], e[4 * (_o + r * p) + 1] = a[3 * _i + 1], e[4 * (_o + r * p) + 0] = a[3 * _i + 2];
|
|
|
}
|
|
|
return e;
|
|
|
}
|
|
|
}, {
|
|
|
key: "_getImageData16bits",
|
|
|
value: function _getImageData16bits(e, t, a, r, o, i, s, h, n, g) {
|
|
|
for (var _a2 = 0, _l2 = o; _l2 !== s; _l2 += i) for (var _o2 = h; _o2 !== g; _o2 += n, _a2 += 2) {
|
|
|
var _i2 = t[_a2 + 0] | t[_a2 + 1] << 8;
|
|
|
e[4 * (_o2 + r * _l2) + 0] = (31744 & _i2) >> 7, e[4 * (_o2 + r * _l2) + 1] = (992 & _i2) >> 2, e[4 * (_o2 + r * _l2) + 2] = (31 & _i2) >> 3, e[4 * (_o2 + r * _l2) + 3] = 32768 & _i2 ? 0 : 255;
|
|
|
}
|
|
|
return e;
|
|
|
}
|
|
|
}, {
|
|
|
key: "_getImageData24bits",
|
|
|
value: function _getImageData24bits(e, t, a, r, o, i, s, h, n, g) {
|
|
|
for (var _a3 = 0, _l3 = o; _l3 !== s; _l3 += i) for (var _o3 = h; _o3 !== g; _o3 += n, _a3 += 3) e[4 * (_o3 + r * _l3) + 3] = 255, e[4 * (_o3 + r * _l3) + 2] = t[_a3 + 0], e[4 * (_o3 + r * _l3) + 1] = t[_a3 + 1], e[4 * (_o3 + r * _l3) + 0] = t[_a3 + 2];
|
|
|
return e;
|
|
|
}
|
|
|
}, {
|
|
|
key: "_getImageData32bits",
|
|
|
value: function _getImageData32bits(e, t, a, r, o, i, s, h, n, g) {
|
|
|
for (var _a4 = 0, _l4 = o; _l4 !== s; _l4 += i) for (var _o4 = h; _o4 !== g; _o4 += n, _a4 += 4) e[4 * (_o4 + r * _l4) + 2] = t[_a4 + 0], e[4 * (_o4 + r * _l4) + 1] = t[_a4 + 1], e[4 * (_o4 + r * _l4) + 0] = t[_a4 + 2], e[4 * (_o4 + r * _l4) + 3] = t[_a4 + 3];
|
|
|
return e;
|
|
|
}
|
|
|
}, {
|
|
|
key: "_getImageDataGrey8bits",
|
|
|
value: function _getImageDataGrey8bits(e, t, a, r, o, i, s, h, n, g) {
|
|
|
for (var _a5 = 0, _l5 = o; _l5 !== s; _l5 += i) for (var _o5 = h; _o5 !== g; _o5 += n, _a5++) {
|
|
|
var _i3 = t[_a5];
|
|
|
e[4 * (_o5 + r * _l5) + 0] = _i3, e[4 * (_o5 + r * _l5) + 1] = _i3, e[4 * (_o5 + r * _l5) + 2] = _i3, e[4 * (_o5 + r * _l5) + 3] = 255;
|
|
|
}
|
|
|
return e;
|
|
|
}
|
|
|
}, {
|
|
|
key: "_getImageDataGrey16bits",
|
|
|
value: function _getImageDataGrey16bits(e, t, a, r, o, i, s, h, n, g) {
|
|
|
for (var _a6 = 0, _l6 = o; _l6 !== s; _l6 += i) for (var _o6 = h; _o6 !== g; _o6 += n, _a6 += 2) e[4 * (_o6 + r * _l6) + 0] = t[_a6 + 0], e[4 * (_o6 + r * _l6) + 1] = t[_a6 + 0], e[4 * (_o6 + r * _l6) + 2] = t[_a6 + 0], e[4 * (_o6 + r * _l6) + 3] = t[_a6 + 1];
|
|
|
return e;
|
|
|
}
|
|
|
}, {
|
|
|
key: "open",
|
|
|
value: function open(e, t) {
|
|
|
var _this = this;
|
|
|
var a = new XMLHttpRequest();
|
|
|
return new Promise(function (resolve, reject) {
|
|
|
a.responseType = "arraybuffer", a.open("GET", e, !0), a.onload = function () {
|
|
|
if (a.status === 200) {
|
|
|
_this.load(new Uint8Array(a.response), resolve);
|
|
|
}
|
|
|
_this.imageSourceData = a.response;
|
|
|
t && t();
|
|
|
}, a.send(null);
|
|
|
});
|
|
|
}
|
|
|
}, {
|
|
|
key: "load",
|
|
|
value: function load(e, cb) {
|
|
|
var s = 0;
|
|
|
if (e.length < 18) throw Error("Not enough data to contain header");
|
|
|
var h = {
|
|
|
idLength: e[s++],
|
|
|
colorMapType: e[s++],
|
|
|
imageType: e[s++],
|
|
|
colorMapIndex: e[s++] | e[s++] << 8,
|
|
|
colorMapLength: e[s++] | e[s++] << 8,
|
|
|
colorMapDepth: e[s++],
|
|
|
offsetX: e[s++] | e[s++] << 8,
|
|
|
offsetY: e[s++] | e[s++] << 8,
|
|
|
width: e[s++] | e[s++] << 8,
|
|
|
height: e[s++] | e[s++] << 8,
|
|
|
pixelDepth: e[s++],
|
|
|
flags: e[s++]
|
|
|
};
|
|
|
if (h.hasEncoding = h.imageType === r || h.imageType === o || h.imageType === i, h.hasColorMap = h.imageType === r || h.imageType === t, h.isGreyColor = h.imageType === i || h.imageType === a, this.header = h, this._checkHeader(), (s += h.idLength) >= e.length) throw Error("No data");
|
|
|
if (h.hasColorMap) {
|
|
|
var _t = h.colorMapLength * (h.colorMapDepth >> 3);
|
|
|
this.palette = e.subarray(s, s + _t), s += _t;
|
|
|
}
|
|
|
var n = h.pixelDepth >> 3,
|
|
|
g = h.width * h.height,
|
|
|
l = g * n;
|
|
|
h.hasEncoding ? this.imageData = this._decodeRLE(e, s, n, l) : this.imageData = e.subarray(s, s + (h.hasColorMap ? g : l));
|
|
|
cb(this);
|
|
|
}
|
|
|
}, {
|
|
|
key: "getImageData",
|
|
|
value: function getImageData(e) {
|
|
|
var _this$header = this.header,
|
|
|
t = _this$header.width,
|
|
|
a = _this$header.height,
|
|
|
r = _this$header.flags,
|
|
|
o = _this$header.pixelDepth,
|
|
|
i = _this$header.isGreyColor,
|
|
|
p = (r & l) >> g;
|
|
|
var c, d, m, f, D, y, u;
|
|
|
switch (e || (e = document ? document.createElement("canvas").getContext("2d").createImageData(t, a) : {
|
|
|
width: t,
|
|
|
height: a,
|
|
|
data: new Uint8ClampedArray(t * a * 4)
|
|
|
}), p === h || p === n ? (f = 0, D = 1, y = a) : (f = a - 1, D = -1, y = -1), p === h || p === s ? (c = 0, d = 1, m = t) : (c = t - 1, d = -1, m = -1), o) {
|
|
|
case 8:
|
|
|
u = i ? this._getImageDataGrey8bits : this._getImageData8bits;
|
|
|
break;
|
|
|
case 16:
|
|
|
u = i ? this._getImageDataGrey16bits : this._getImageData16bits;
|
|
|
break;
|
|
|
case 24:
|
|
|
u = this._getImageData24bits;
|
|
|
break;
|
|
|
case 32:
|
|
|
u = this._getImageData32bits;
|
|
|
}
|
|
|
return u.call(this, e.data, this.imageData, this.palette, t, f, D, y, c, d, m), e;
|
|
|
}
|
|
|
}, {
|
|
|
key: "getCanvas",
|
|
|
value: function getCanvas() {
|
|
|
var _this$header2 = this.header,
|
|
|
e = _this$header2.width,
|
|
|
t = _this$header2.height,
|
|
|
a = document.createElement("canvas"),
|
|
|
r = a.getContext("2d"),
|
|
|
o = r.createImageData(e, t);
|
|
|
return a.width = e, a.height = t, r.putImageData(this.getImageData(o), 0, 0), a;
|
|
|
}
|
|
|
}, {
|
|
|
key: "getDataURL",
|
|
|
value: function getDataURL(e) {
|
|
|
return this.getCanvas().toDataURL(e || "image/png");
|
|
|
}
|
|
|
}]);
|
|
|
return _default;
|
|
|
}();
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/img-list.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var img_list = (function (_ref) {
|
|
|
var list = _ref.list,
|
|
|
title = _ref.title,
|
|
|
direction = _ref.direction;
|
|
|
var len = list.length;
|
|
|
var _useState = (0,react.useState)([]),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
data = _useState2[0],
|
|
|
setData = _useState2[1];
|
|
|
var resetData = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var arr, i, item, tga;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
arr = [];
|
|
|
i = 0;
|
|
|
case 2:
|
|
|
if (!(i < list.length)) {
|
|
|
_context.next = 13;
|
|
|
break;
|
|
|
}
|
|
|
item = list[i];
|
|
|
if (!(item.pic_url.indexOf('.tga') > -1)) {
|
|
|
_context.next = 9;
|
|
|
break;
|
|
|
}
|
|
|
tga = new _default();
|
|
|
_context.next = 8;
|
|
|
return tga.open(item.pic_url);
|
|
|
case 8:
|
|
|
item.pic_url = tga.getDataURL();
|
|
|
case 9:
|
|
|
arr.push(item);
|
|
|
case 10:
|
|
|
i++;
|
|
|
_context.next = 2;
|
|
|
break;
|
|
|
case 13:
|
|
|
setData([].concat(arr));
|
|
|
case 14:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function resetData() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
(0,react.useEffect)(function () {
|
|
|
resetData();
|
|
|
}, [list]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "img-list ".concat(!direction ? 'direction' : ''),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("h4", {
|
|
|
children: title
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "list-body",
|
|
|
style: {
|
|
|
padding: '40px 0px'
|
|
|
},
|
|
|
children: len > 0 ? data.map(function (item, key) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
onClick: function onClick() {
|
|
|
mediator/* default.publish */.Z.publish('preview-image', "".concat(tasks_util/* apiPref */.KI).concat(item.pic_url));
|
|
|
},
|
|
|
className: len === 1 ? 'singal' : '',
|
|
|
src: "".concat(item.pic_url.indexOf('data:image/png;base64') > -1 ? item.pic_url : tasks_util/* apiPref */.KI + item.pic_url),
|
|
|
alt: title
|
|
|
}, item.pic_url);
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
alt: "\u7A7A",
|
|
|
className: "nothing",
|
|
|
src: nothing_namespaceObject
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
alt: "\u7A7A",
|
|
|
className: "nothing",
|
|
|
src: nothing_namespaceObject
|
|
|
})]
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/video-panel/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/video-panel/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var video_panel = (function (_ref) {
|
|
|
var url = _ref.url,
|
|
|
poster = _ref.poster;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "video-container",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("video", {
|
|
|
controls: true,
|
|
|
autoPlay: true,
|
|
|
src: url,
|
|
|
preload: "auto",
|
|
|
poster: poster ? poster : '',
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("source", {
|
|
|
type: "video/webm",
|
|
|
src: url
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("source", {
|
|
|
type: "video/mp4",
|
|
|
src: url
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/audio-panel/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/audio-panel/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var audio_panel = (function (_ref) {
|
|
|
var url = _ref.url;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "video-container",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("audio", {
|
|
|
style: {
|
|
|
width: "100%"
|
|
|
},
|
|
|
controls: true,
|
|
|
src: url,
|
|
|
children: [" Your browser does not support the ", /*#__PURE__*/(0,jsx_runtime.jsx)("code", {
|
|
|
children: "audio"
|
|
|
}), " element. "]
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/video-list.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var video_list = (function (_ref) {
|
|
|
var files = _ref.files,
|
|
|
type = _ref.type;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("ul", {
|
|
|
className: "video-list",
|
|
|
children: files.map(function (item, index) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("li", {
|
|
|
children: type === 'mp4' ? /*#__PURE__*/(0,jsx_runtime.jsx)(video_panel, {
|
|
|
url: item.file_url
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)(audio_panel, {
|
|
|
url: item.file_url
|
|
|
})
|
|
|
}, index);
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/qrcode.tsx
|
|
|
|
|
|
|
|
|
/* harmony default export */ var qrcode = (function (_ref) {
|
|
|
var value = _ref.value;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: "data:image/png;base64,".concat(value),
|
|
|
alt: "qrcode"
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/picture-panel/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function getDocHeight(doc) {
|
|
|
var html = doc.documentElement;
|
|
|
var body = doc.body;
|
|
|
var height = Math.max(html.clientHeight, html.scrollHeight, html.offsetHeight, body ? body.clientHeight : 0, body ? body.scrollHeight : 0, 500);
|
|
|
return height;
|
|
|
}
|
|
|
function setIframeHeight(ifrm) {
|
|
|
var doc = ifrm.contentDocument ? ifrm.contentDocument : ifrm.contentWindow.document;
|
|
|
ifrm.style.visibility = 'hidden';
|
|
|
ifrm.style.height = '10px'; // reset to minimal height ...
|
|
|
// IE opt. for bing/msn needs a bit added or scrollbar appears
|
|
|
ifrm.style.height = getDocHeight(doc) + 4 + 'px';
|
|
|
ifrm.style.visibility = 'visible';
|
|
|
}
|
|
|
/* harmony default export */ var picture_panel = (function (_ref) {
|
|
|
var taskId = _ref.taskId,
|
|
|
onHidePictureView = _ref.onHidePictureView;
|
|
|
var _useState = (0,react.useState)({}),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
data = _useState2[0],
|
|
|
setData = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)(),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
verilogData = _useState4[0],
|
|
|
setVerilogData = _useState4[1];
|
|
|
var verilogDataRef = (0,react.useRef)();
|
|
|
var iframeEl = (0,react.useRef)();
|
|
|
var iframeVerilogEl = (0,react.useRef)();
|
|
|
|
|
|
// 方向 true-横false-纵
|
|
|
var _useState5 = (0,react.useState)(true),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
direction = _useState6[0],
|
|
|
setDirection = _useState6[1];
|
|
|
(0,react.useEffect)(function () {
|
|
|
var type = data.type,
|
|
|
iframe_src = data.iframe_src;
|
|
|
if (type === 'html' && iframe_src && iframeEl.current) {
|
|
|
iframeEl.current.contentWindow.document.write(iframe_src);
|
|
|
iframeEl.current.contentWindow.document.close();
|
|
|
setTimeout(function () {
|
|
|
setIframeHeight(iframeEl.current);
|
|
|
}, 100);
|
|
|
}
|
|
|
}, [data, iframeEl.current]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
function init() {
|
|
|
return _init.apply(this, arguments);
|
|
|
}
|
|
|
function _init() {
|
|
|
_init = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var response, _response$user_file, _response$user_file$, res, enc, arr;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return (0,service/* fetchPictures */.gT)(taskId);
|
|
|
case 2:
|
|
|
response = _context.sent;
|
|
|
setData(response);
|
|
|
if (!((response === null || response === void 0 ? void 0 : response.type) == 'verilog')) {
|
|
|
_context.next = 12;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 7;
|
|
|
return (0,utils_fetch/* default */.ZP)(response === null || response === void 0 ? void 0 : (_response$user_file = response.user_file) === null || _response$user_file === void 0 ? void 0 : (_response$user_file$ = _response$user_file[0]) === null || _response$user_file$ === void 0 ? void 0 : _response$user_file$.file_url, {
|
|
|
method: 'get',
|
|
|
headers: {
|
|
|
'Content-Type': 'application/json'
|
|
|
}
|
|
|
});
|
|
|
case 7:
|
|
|
res = _context.sent;
|
|
|
enc = new TextDecoder('utf-8');
|
|
|
arr = new Uint8Array(res);
|
|
|
verilogDataRef.current = JSON.parse(enc.decode(arr));
|
|
|
setVerilogData(JSON.parse(enc.decode(arr)));
|
|
|
case 12:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _init.apply(this, arguments);
|
|
|
}
|
|
|
init();
|
|
|
}, [taskId]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
onLoadVerilog();
|
|
|
}, [verilogData]);
|
|
|
var onLoadVerilog = function onLoadVerilog() {
|
|
|
if (verilogDataRef.current && verilogDataRef.current != '') {
|
|
|
var _iframeVerilogEl$curr;
|
|
|
(_iframeVerilogEl$curr = iframeVerilogEl.current.contentWindow) === null || _iframeVerilogEl$curr === void 0 ? void 0 : _iframeVerilogEl$curr.postMessage({
|
|
|
data: verilogDataRef.current
|
|
|
}, '*');
|
|
|
}
|
|
|
};
|
|
|
var type = data.type,
|
|
|
orignal_picture = data.orignal_picture,
|
|
|
user_picture = data.user_picture,
|
|
|
answer_picture = data.answer_picture,
|
|
|
contents = data.contents,
|
|
|
user_file = data.user_file,
|
|
|
message = data.message,
|
|
|
qrcode_str = data.qrcode_str;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [!type ? /*#__PURE__*/(0,jsx_runtime.jsx)(Spinner/* default */.Z, {
|
|
|
message: message || '加载中...'
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "eval-picture-panel",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "picture-body",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("h3", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u67E5\u770B\u6548\u679C"
|
|
|
}), type === 'image' && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
onClick: function onClick() {
|
|
|
return setDirection(!direction);
|
|
|
},
|
|
|
className: "direction",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
style: {
|
|
|
marginRight: 8,
|
|
|
display: 'inline-block'
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont ".concat(!direction ? 'icon-hengxiang' : 'icon-zongxiang')
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
children: ["\u5207\u6362\u4E3A", !direction ? '横' : '纵', "\u5411\u5BF9\u6BD4"]
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
onClick: onHidePictureView,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-shanchu2"
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
}), type === 'verilog' && /*#__PURE__*/(0,jsx_runtime.jsx)("iframe", {
|
|
|
onLoad: onLoadVerilog,
|
|
|
ref: iframeVerilogEl,
|
|
|
src: "/js/iverilog/index.html",
|
|
|
className: "iverilogFrame"
|
|
|
}), type === 'image' ? /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "flex-container",
|
|
|
style: {
|
|
|
flexDirection: direction ? 'unset' : 'column'
|
|
|
},
|
|
|
children: [orignal_picture.length > 0 ? /*#__PURE__*/(0,jsx_runtime.jsx)(img_list, {
|
|
|
list: orignal_picture,
|
|
|
title: "\u539F\u59CB\u56FE\u7247",
|
|
|
direction: direction
|
|
|
}) : null, answer_picture.length > 0 ? /*#__PURE__*/(0,jsx_runtime.jsx)(img_list, {
|
|
|
list: answer_picture,
|
|
|
title: "\u9884\u671F\u8F93\u51FA",
|
|
|
direction: direction
|
|
|
}) : null, user_picture.length > 0 ? /*#__PURE__*/(0,jsx_runtime.jsx)(img_list, {
|
|
|
list: user_picture,
|
|
|
title: "\u5B9E\u9645\u8F93\u51FA",
|
|
|
direction: direction
|
|
|
}) : null]
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("h2", {
|
|
|
children: "\u5B9E\u9645\u8F93\u51FA"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "output-txt ".concat(type === 'html' ? 'html' : ''),
|
|
|
children: type === 'html' ? /*#__PURE__*/(0,jsx_runtime.jsx)("iframe", {
|
|
|
ref: iframeEl,
|
|
|
style: {
|
|
|
width: '100%',
|
|
|
height: '100%',
|
|
|
border: '1px solid #ccc'
|
|
|
}
|
|
|
}) : type == 'mp4' || type == 'mp3' ? /*#__PURE__*/(0,jsx_runtime.jsx)(video_list, {
|
|
|
files: user_file,
|
|
|
type: type
|
|
|
}) : type === 'qrcode' ? /*#__PURE__*/(0,jsx_runtime.jsx)(qrcode, {
|
|
|
value: qrcode_str
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
style: {
|
|
|
overflow: 'auto',
|
|
|
height: '100%'
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(RenderHtml/* default */.Z, {
|
|
|
value: contents
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/notice/service.js
|
|
|
var _getJsonFromUrl, _getJsonFromUrl2;
|
|
|
|
|
|
|
|
|
|
|
|
//判断是否来自教学课堂助教查看实训
|
|
|
var urlParams = (_getJsonFromUrl = (0,util/* getJsonFromUrl */.oP)()) !== null && _getJsonFromUrl !== void 0 && _getJsonFromUrl.homework_common_id ? {
|
|
|
homework_common_id: (_getJsonFromUrl2 = (0,util/* getJsonFromUrl */.oP)()) === null || _getJsonFromUrl2 === void 0 ? void 0 : _getJsonFromUrl2.homework_common_id
|
|
|
} : {};
|
|
|
function updateSystemTip(id, myshixunId) {
|
|
|
return (0,utils_fetch/* get */.U2)("/tasks/".concat(id, "/system_update.json"), {
|
|
|
myshixun_id: myshixunId
|
|
|
});
|
|
|
}
|
|
|
function syncCode(id) {
|
|
|
return (0,utils_fetch/* get */.U2)("/tasks/".concat(id, "/sync_codes.json"), urlParams);
|
|
|
}
|
|
|
function syncModifiedTime(id) {
|
|
|
return (0,utils_fetch/* get */.U2)("/tasks/".concat(id, "/sync_modify_time"));
|
|
|
}
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/notice/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var tasks_notice = (function (_ref) {
|
|
|
var showNotice = _ref.showNotice,
|
|
|
tpm_cases_modified = _ref.tpm_cases_modified,
|
|
|
tpm_modified = _ref.tpm_modified,
|
|
|
tpm_script_modified = _ref.tpm_script_modified,
|
|
|
st = _ref.st,
|
|
|
taskId = _ref.taskId,
|
|
|
myshixunId = _ref.myshixunId,
|
|
|
onNextCallback = _ref.onNextCallback,
|
|
|
onUpdateCallback = _ref.onUpdateCallback,
|
|
|
onUpdateFailure = _ref.onUpdateFailure;
|
|
|
var isUpdateScript = (tpm_modified || tpm_script_modified) && st === 0;
|
|
|
var _useState = (0,react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
loading = _useState2[0],
|
|
|
setLoading = _useState2[1];
|
|
|
function onUpdateNow() {
|
|
|
return _onUpdateNow.apply(this, arguments);
|
|
|
}
|
|
|
function _onUpdateNow() {
|
|
|
_onUpdateNow = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var response, path, status, mes;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
if (!loading) {
|
|
|
_context.next = 2;
|
|
|
break;
|
|
|
}
|
|
|
return _context.abrupt("return");
|
|
|
case 2:
|
|
|
setLoading(true);
|
|
|
if (!isUpdateScript) {
|
|
|
_context.next = 21;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 6;
|
|
|
return syncCode(taskId);
|
|
|
case 6:
|
|
|
response = _context.sent;
|
|
|
path = response.path, status = response.status;
|
|
|
mes = response.message;
|
|
|
if (!(status === -1)) {
|
|
|
_context.next = 14;
|
|
|
break;
|
|
|
}
|
|
|
es_message/* default.info */.ZP.info(mes || '更新失败,服务端错误');
|
|
|
onUpdateFailure();
|
|
|
_context.next = 19;
|
|
|
break;
|
|
|
case 14:
|
|
|
es_message/* default.info */.ZP.info('更新成功,正在为您重新加载代码...');
|
|
|
if (!tpm_cases_modified) {
|
|
|
_context.next = 18;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 18;
|
|
|
return syncModifiedTime(taskId);
|
|
|
case 18:
|
|
|
onUpdateCallback(path, new Date().getTime());
|
|
|
case 19:
|
|
|
_context.next = 25;
|
|
|
break;
|
|
|
case 21:
|
|
|
_context.next = 23;
|
|
|
return syncModifiedTime(taskId);
|
|
|
case 23:
|
|
|
es_message/* default.info */.ZP.info('更新状态已同步。');
|
|
|
onNextCallback();
|
|
|
case 25:
|
|
|
setLoading(false);
|
|
|
case 26:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _onUpdateNow.apply(this, arguments);
|
|
|
}
|
|
|
function onNextUpdate() {
|
|
|
return _onNextUpdate.apply(this, arguments);
|
|
|
}
|
|
|
function _onNextUpdate() {
|
|
|
_onNextUpdate = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
if (!loading) {
|
|
|
_context2.next = 2;
|
|
|
break;
|
|
|
}
|
|
|
return _context2.abrupt("return");
|
|
|
case 2:
|
|
|
setLoading(true);
|
|
|
if (!isUpdateScript) {
|
|
|
_context2.next = 11;
|
|
|
break;
|
|
|
}
|
|
|
_context2.next = 6;
|
|
|
return updateSystemTip(taskId, myshixunId);
|
|
|
case 6:
|
|
|
if (!tpm_cases_modified) {
|
|
|
_context2.next = 9;
|
|
|
break;
|
|
|
}
|
|
|
_context2.next = 9;
|
|
|
return syncModifiedTime(taskId);
|
|
|
case 9:
|
|
|
_context2.next = 13;
|
|
|
break;
|
|
|
case 11:
|
|
|
_context2.next = 13;
|
|
|
return syncModifiedTime(taskId);
|
|
|
case 13:
|
|
|
setLoading(false);
|
|
|
onNextCallback();
|
|
|
case 15:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return _onNextUpdate.apply(this, arguments);
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
title: "\u66F4\u65B0\u901A\u77E5",
|
|
|
closable: false,
|
|
|
confirmLoading: loading,
|
|
|
open: showNotice,
|
|
|
onOk: onUpdateNow,
|
|
|
onCancel: onNextUpdate,
|
|
|
okText: isUpdateScript ? '立即更新' : '知道了',
|
|
|
cancelText: "\u7A0D\u540E\u518D\u8BF4",
|
|
|
children: tpm_cases_modified && isUpdateScript ? /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: " \u5173\u5361\u4EFB\u52A1\u7684\u4EE3\u7801\u6587\u4EF6\u548C\u6D4B\u8BD5\u96C6\u6709\u66F4\u65B0\u5566~"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u66F4\u65B0\u64CD\u4F5C\u5C06\u4FDD\u7559\u5DF2\u5B8C\u6210\u7684\u8BC4\u6D4B\u8BB0\u5F55\u548C\u6210\u7EE9\u3002"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u8FD8\u672A\u5B8C\u6210\u8BC4\u6D4B\u7684\u4EFB\u52A1\u4EE3\u7801\uFF0C\u8BF7\u81EA\u884C\u4FDD\u5B58\uFF01"
|
|
|
})]
|
|
|
}) : tpm_cases_modified ? /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: ["\u672C\u5173", st === 0 ? '测试集' : '答案', "\u5DF2\u66F4\u65B0\uFF0C\u60A8\u53EF\u4EE5\u91CD\u65B0\u8BC4\u6D4B\u3002"]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u672C\u6B21\u66F4\u65B0\u4E0D\u5F71\u54CD\u5DF2\u83B7\u5F97\u7684\u7ECF\u9A8C\u503C\u3002"
|
|
|
})]
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
children: ["\u5173\u5361\u4EFB\u52A1\u7684\u4EE3\u7801\u6587\u4EF6\u6709\u66F4\u65B0\u5566~", /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), " \u66F4\u65B0\u64CD\u4F5C\u5C06\u4FDD\u7559\u5DF2\u5B8C\u6210\u7684\u8BC4\u6D4B\u8BB0\u5F55\u548C\u6210\u7EE9\u3002", /*#__PURE__*/(0,jsx_runtime.jsx)("br", {}), "\u8FD8\u672A\u5B8C\u6210\u8BC4\u6D4B\u7684\u4EFB\u52A1\u4EE3\u7801\uFF0C\u8BF7\u81EA\u884C\u4FDD\u5B58\uFF01"]
|
|
|
})
|
|
|
});
|
|
|
});
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/resize-enlarge.png
|
|
|
var resize_enlarge = __webpack_require__(21978);
|
|
|
// EXTERNAL MODULE: ./src/pages/tasks/resize-small.png
|
|
|
var resize_small = __webpack_require__(52787);
|
|
|
// EXTERNAL MODULE: ./src/pages/Classrooms/Lists/Exercise/components/Unlock.tsx
|
|
|
var Unlock = __webpack_require__(61050);
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/unity3d-panel/nav.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* harmony default export */ var nav = (function (_ref) {
|
|
|
var prev_game = _ref.prev_game,
|
|
|
next_game = _ref.next_game,
|
|
|
shixun = _ref.shixun,
|
|
|
game = _ref.game;
|
|
|
var hasNextGame = next_game && (game.status === 2 || shixun.status < 2 || shixun.task_pass);
|
|
|
var location = useLocation();
|
|
|
return /*#__PURE__*/_jsxs("div", {
|
|
|
className: "unity-3d-nav",
|
|
|
children: [prev_game ? /*#__PURE__*/_jsx("a", {
|
|
|
href: "/tasks/".concat(prev_game).concat(location.search),
|
|
|
className: "ghost-link",
|
|
|
children: "\u4E0A\u4E00\u5173"
|
|
|
}) : null, hasNextGame ? /*#__PURE__*/_jsx("a", {
|
|
|
href: "/tasks/".concat(next_game).concat(location.search),
|
|
|
className: "ghost-link",
|
|
|
children: "\u4E0B\u4E00\u5173"
|
|
|
}) : null, /*#__PURE__*/_jsx(Unity3dNav, {
|
|
|
next_game: next_game,
|
|
|
prev_game: prev_game,
|
|
|
shixun: shixun,
|
|
|
game: game
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
;// CONCATENATED MODULE: ./src/pages/tasks/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var tasks_excluded = ["gold", "experience", "next_game", "next_shixun", "subject_done"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var tasks_DirectoryTree = tree/* default.DirectoryTree */.Z.DirectoryTree;
|
|
|
var BADSUFS = (/* unused pure expression or super */ null && (['jpg', 'png', 'gif', 'jpeg', 'jar', 'doc', 'pdf', 'xsl', 'ppt', 'mp3', 'mp4']));
|
|
|
var tasks_initialState = {
|
|
|
moveX: '40%',
|
|
|
moveY: 0,
|
|
|
loading: true,
|
|
|
isError: false,
|
|
|
taskData: {
|
|
|
game: {}
|
|
|
},
|
|
|
evalData: null,
|
|
|
lastedGetTaskInfoTime: 0,
|
|
|
codeRepData: {
|
|
|
content: '',
|
|
|
language: 'c',
|
|
|
currentPath: '',
|
|
|
paths: [],
|
|
|
lastedUpdateTime: 0,
|
|
|
loading: false
|
|
|
},
|
|
|
showEvalResult: false,
|
|
|
showPictureView: false,
|
|
|
isPictureView: false,
|
|
|
showDragMask: false,
|
|
|
webDisplayUrl: '',
|
|
|
evaluateLoading: false,
|
|
|
resetVncLoading: false,
|
|
|
evaluateMessage: '',
|
|
|
showNotice: false,
|
|
|
timestamp: '',
|
|
|
showDocuments: false,
|
|
|
repos: null
|
|
|
};
|
|
|
function tasks_reducer(state, action) {
|
|
|
switch (action.type) {
|
|
|
case constant/* MOVE_X */.F_:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
moveX: action.payload
|
|
|
});
|
|
|
case constant/* MOVE_Y */.wQ:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
moveY: action.payload
|
|
|
});
|
|
|
case constant/* SHOW_REP_LOADING */.YI:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
codeRepData: action.payload
|
|
|
});
|
|
|
case constant/* FETCH_REP_CONTENT */.GB:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
codeRepData: action.payload
|
|
|
});
|
|
|
case constant/* EDIT_REP_CODE */.N$:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
codeRepData: objectSpread2_default()(objectSpread2_default()({}, state.codeRepData), action.payload)
|
|
|
});
|
|
|
case constant/* SHOW_EVALUATE_RESULT */.m5:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
evaluateLoading: false,
|
|
|
showEvalResult: true
|
|
|
});
|
|
|
case constant/* UPDATE_TIMESTRAP */.G9:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
timestamp: action.payload
|
|
|
});
|
|
|
case constant/* HIDE_EVALUATE_RESULT */.EP:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showEvalResult: false
|
|
|
});
|
|
|
case constant/* FETCH_TASK_START */.n4:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
loading: true
|
|
|
});
|
|
|
case constant/* UPDATE_TASK_DATA */.z2:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
case constant/* TRIGGER_RIGHT_PANEL_MASK */.i3:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showDragMask: action.payload
|
|
|
});
|
|
|
case constant/* FETCH_TASK_FAILURE */.Ir:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
loading: false,
|
|
|
isError: true
|
|
|
});
|
|
|
case constant/* FETCH_TASK_SUCCESS */.yi:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
case constant/* SHOW_EVALUATE_LOADING */.Ui:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
evaluateLoading: true
|
|
|
});
|
|
|
case constant/* HIDE_EVALUATE_LOADING */.A0:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
evaluateLoading: false
|
|
|
});
|
|
|
case constant/* SET_EVALUATE_MESSAGE */.p2:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
evaluateMessage: action.payload
|
|
|
});
|
|
|
case constant/* SET_SHOW_DIR */.GW:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showDocuments: action.payload
|
|
|
});
|
|
|
case constant/* SET_REPOS */.oP:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), action.payload);
|
|
|
case constant/* SHOW_NOTICE */.dL:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showNotice: true
|
|
|
});
|
|
|
case constant/* HIDE_NOTICE */.Nv:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showNotice: false
|
|
|
});
|
|
|
case constant/* HIDE_PICTURE_VIEW */.OA:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showPictureView: false
|
|
|
});
|
|
|
case constant/* SHOW_PICTURE_VIEW */.vm:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
showPictureView: true
|
|
|
});
|
|
|
case constant/* SET_VNC_LOADING */.RY:
|
|
|
return objectSpread2_default()(objectSpread2_default()({}, state), {}, {
|
|
|
resetVncLoading: action.payload
|
|
|
});
|
|
|
default:
|
|
|
throw new Error();
|
|
|
}
|
|
|
}
|
|
|
//切换关卡或者用户关闭页面时需要保存用户计时与代码
|
|
|
//评测时,刷新测试集,用户金币与关卡任务信息
|
|
|
//react 缺少keep-alive 机制,所以文件目录树也需要放在顶层,在code-repository 中管理,会因为react的组件卸载导致状态丢失。
|
|
|
|
|
|
/* harmony default export */ var tasks = (function (_ref) {
|
|
|
var _leftPanelOption;
|
|
|
var props = Object.assign({}, (objectDestructuringEmpty_default()(_ref), _ref));
|
|
|
var _params = (0,_umi_production_exports.useParams)();
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
var location = (0,_umi_production_exports.useLocation)();
|
|
|
var _useReducer = (0,react.useReducer)(tasks_reducer, tasks_initialState),
|
|
|
_useReducer2 = slicedToArray_default()(_useReducer, 2),
|
|
|
state = _useReducer2[0],
|
|
|
dispatch = _useReducer2[1];
|
|
|
var _useState = (0,react.useState)(_params.taskId),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
taskId = _useState2[0],
|
|
|
setTaskId = _useState2[1];
|
|
|
var exerciseDataRef = (0,react.useRef)();
|
|
|
var resizeXFlag = (0,react.useRef)();
|
|
|
var resizeYFlag = (0,react.useRef)();
|
|
|
var fullscreenOrExit = (0,react.useRef)();
|
|
|
var _useState3 = (0,react.useState)(false),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
loadingContent = _useState4[0],
|
|
|
setLoadingContent = _useState4[1];
|
|
|
(0,react.useEffect)(function () {
|
|
|
setTaskId(_params.taskId);
|
|
|
}, [_params]);
|
|
|
var moveX = state.moveX,
|
|
|
taskData = state.taskData,
|
|
|
moveY = state.moveY,
|
|
|
evalData = state.evalData,
|
|
|
showEvalResult = state.showEvalResult,
|
|
|
codeRepData = state.codeRepData,
|
|
|
loading = state.loading,
|
|
|
evaluateLoading = state.evaluateLoading,
|
|
|
evaluateMessage = state.evaluateMessage,
|
|
|
showDocuments = state.showDocuments,
|
|
|
repos = state.repos,
|
|
|
showPictureView = state.showPictureView,
|
|
|
showNotice = state.showNotice,
|
|
|
webDisplayUrl = state.webDisplayUrl,
|
|
|
isPictureView = state.isPictureView,
|
|
|
resetVncLoading = state.resetVncLoading,
|
|
|
timestamp = state.timestamp,
|
|
|
lastedGetTaskInfoTime = state.lastedGetTaskInfoTime,
|
|
|
showDragMask = state.showDragMask;
|
|
|
var st = taskData.st,
|
|
|
challenge = taskData.challenge,
|
|
|
shixun = taskData.shixun,
|
|
|
to_user_id = taskData.to_user_id,
|
|
|
chatgpt = taskData.chatgpt,
|
|
|
is_teacher = taskData.is_teacher,
|
|
|
game = taskData.game,
|
|
|
has_answer = taskData.has_answer,
|
|
|
vnc_url = taskData.vnc_url,
|
|
|
git_url = taskData.git_url,
|
|
|
user = taskData.user,
|
|
|
myshixun = taskData.myshixun,
|
|
|
discusses_count = taskData.discusses_count,
|
|
|
user_praise = taskData.user_praise,
|
|
|
praise_count = taskData.praise_count,
|
|
|
tpm_cases_modified = taskData.tpm_cases_modified,
|
|
|
tpm_modified = taskData.tpm_modified,
|
|
|
tpm_script_modified = taskData.tpm_script_modified,
|
|
|
mirror_name = taskData.mirror_name,
|
|
|
mirror_description = taskData.mirror_description,
|
|
|
tomcat_url = taskData.tomcat_url,
|
|
|
unity_3d_routes = taskData.unity_3d_routes,
|
|
|
with_code_file = taskData.with_code_file,
|
|
|
unity_3d_result = taskData.unity_3d_result,
|
|
|
next_game = taskData.next_game,
|
|
|
prev_game = taskData.prev_game;
|
|
|
var currentPath = codeRepData.currentPath,
|
|
|
paths = codeRepData.paths,
|
|
|
content = codeRepData.content,
|
|
|
language = codeRepData.language,
|
|
|
lastedUpdateTime = codeRepData.lastedUpdateTime;
|
|
|
var _useState5 = (0,react.useState)(false),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
showLoading = _useState6[0],
|
|
|
setShowLoading = _useState6[1];
|
|
|
var isUpdateScript = (tpm_modified || tpm_script_modified) && st === 0;
|
|
|
var isNotice = (tpm_cases_modified || isUpdateScript) && myshixun.system_tip === true;
|
|
|
var isHtml = (mirror_name || []).indexOf('Html') !== -1;
|
|
|
var isEditPath = (0,react.useMemo)(function () {
|
|
|
if (currentPath && paths) {
|
|
|
return paths.indexOf(currentPath) >= 0;
|
|
|
}
|
|
|
return false;
|
|
|
}, [currentPath, paths]);
|
|
|
var noDragging = (0,react.useMemo)(function () {
|
|
|
return unity_3d_routes && !with_code_file || (challenge === null || challenge === void 0 ? void 0 : challenge.thiry_party) || vnc_url;
|
|
|
}, [vnc_url, with_code_file, unity_3d_routes]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (unity_3d_routes && with_code_file) {
|
|
|
dispatch({
|
|
|
type: constant/* SHOW_EVALUATE_LOADING */.Ui
|
|
|
});
|
|
|
var unsub = mediator/* default.subscribe */.Z.subscribe('unity3d-load-end', function () {
|
|
|
dispatch({
|
|
|
type: constant/* HIDE_EVALUATE_LOADING */.A0
|
|
|
});
|
|
|
});
|
|
|
return unsub;
|
|
|
}
|
|
|
}, [taskId, unity_3d_routes, challenge === null || challenge === void 0 ? void 0 : challenge.thiry_party, with_code_file, dispatch]);
|
|
|
function init(_x) {
|
|
|
return _init.apply(this, arguments);
|
|
|
}
|
|
|
function _init() {
|
|
|
_init = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee5(didCancel) {
|
|
|
var response, status, _st, path, payload, _paths2;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee5$(_context5) {
|
|
|
while (1) switch (_context5.prev = _context5.next) {
|
|
|
case 0:
|
|
|
_context5.prev = 0;
|
|
|
_context5.next = 3;
|
|
|
return (0,service/* fetchTaskInfo */.XO)(taskId);
|
|
|
case 3:
|
|
|
response = _context5.sent;
|
|
|
status = response.status;
|
|
|
if (!(status === 401)) {
|
|
|
_context5.next = 9;
|
|
|
break;
|
|
|
}
|
|
|
return _context5.abrupt("return");
|
|
|
case 9:
|
|
|
if (!(status === -3)) {
|
|
|
_context5.next = 13;
|
|
|
break;
|
|
|
}
|
|
|
(0,util/* bindPhone */.eF)({
|
|
|
onCancel: function onCancel() {
|
|
|
window.location.href = '/';
|
|
|
}
|
|
|
});
|
|
|
_context5.next = 26;
|
|
|
break;
|
|
|
case 13:
|
|
|
if (!(status === 403)) {
|
|
|
_context5.next = 17;
|
|
|
break;
|
|
|
}
|
|
|
history.replace('/403');
|
|
|
_context5.next = 26;
|
|
|
break;
|
|
|
case 17:
|
|
|
if (!(status === 404)) {
|
|
|
_context5.next = 22;
|
|
|
break;
|
|
|
}
|
|
|
history.replace('/404');
|
|
|
return _context5.abrupt("return");
|
|
|
case 22:
|
|
|
_st = response.st, path = response.challenge.path;
|
|
|
payload = {
|
|
|
loading: false,
|
|
|
isError: false,
|
|
|
taskData: response,
|
|
|
lastedGetTaskInfoTime: new Date().getTime(),
|
|
|
codeRepData: codeRepData
|
|
|
};
|
|
|
if (_st === 0 && path) {
|
|
|
_paths2 = path.split(';').filter(function (item) {
|
|
|
return !!item;
|
|
|
});
|
|
|
payload['codeRepData'].currentPath = _paths2[0];
|
|
|
payload['codeRepData'].paths = _paths2;
|
|
|
payload['codeRepData'].lastedUpdateTime = 0;
|
|
|
}
|
|
|
if (!didCancel) {
|
|
|
dispatch({
|
|
|
type: constant/* FETCH_TASK_SUCCESS */.yi,
|
|
|
payload: objectSpread2_default()({}, payload)
|
|
|
});
|
|
|
}
|
|
|
case 26:
|
|
|
_context5.next = 32;
|
|
|
break;
|
|
|
case 28:
|
|
|
_context5.prev = 28;
|
|
|
_context5.t0 = _context5["catch"](0);
|
|
|
console.log(_context5.t0);
|
|
|
if (!didCancel) {
|
|
|
dispatch({
|
|
|
type: constant/* FETCH_TASK_FAILURE */.Ir
|
|
|
});
|
|
|
}
|
|
|
case 32:
|
|
|
case "end":
|
|
|
return _context5.stop();
|
|
|
}
|
|
|
}, _callee5, null, [[0, 28]]);
|
|
|
}));
|
|
|
return _init.apply(this, arguments);
|
|
|
}
|
|
|
(0,react.useEffect)(function () {
|
|
|
var didCancel = false;
|
|
|
init(didCancel);
|
|
|
return function () {
|
|
|
didCancel = true;
|
|
|
};
|
|
|
}, [dispatch, taskId]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
var didCancel = false;
|
|
|
function init() {
|
|
|
return _init2.apply(this, arguments);
|
|
|
}
|
|
|
function _init2() {
|
|
|
_init2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var data, _content, _content2, _data$content, _data$content2, _data$content3;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
dispatch({
|
|
|
type: constant/* SHOW_REP_LOADING */.YI,
|
|
|
payload: objectSpread2_default()(objectSpread2_default()({}, codeRepData), {}, {
|
|
|
loading: true
|
|
|
})
|
|
|
});
|
|
|
if (!(unity_3d_routes && !with_code_file || challenge !== null && challenge !== void 0 && challenge.thiry_party)) {
|
|
|
_context.next = 3;
|
|
|
break;
|
|
|
}
|
|
|
return _context.abrupt("return");
|
|
|
case 3:
|
|
|
_context.next = 5;
|
|
|
return (0,service/* fetchCode */.li)(taskId, {
|
|
|
path: currentPath
|
|
|
});
|
|
|
case 5:
|
|
|
data = _context.sent;
|
|
|
if (!didCancel) {
|
|
|
if (data.status === 0) {
|
|
|
es_message/* default.info */.ZP.info(data.message);
|
|
|
dispatch({
|
|
|
type: constant/* FETCH_REP_CONTENT */.GB,
|
|
|
payload: objectSpread2_default()(objectSpread2_default()({}, codeRepData), {}, {
|
|
|
loading: false
|
|
|
})
|
|
|
});
|
|
|
} else {
|
|
|
try {
|
|
|
// if (!!data?.content?.content?.length) {
|
|
|
if ((data === null || data === void 0 ? void 0 : data.file_type) === 'txt') {
|
|
|
_content = ((_content2 = _content) === null || _content2 === void 0 ? void 0 : _content2.length) === 0 ? _content : window.decodeURIComponent(escape(window.atob(data === null || data === void 0 ? void 0 : (_data$content = data.content) === null || _data$content === void 0 ? void 0 : _data$content.content)));
|
|
|
} else {
|
|
|
_content = data === null || data === void 0 ? void 0 : (_data$content2 = data.content) === null || _data$content2 === void 0 ? void 0 : _data$content2.content;
|
|
|
}
|
|
|
// }
|
|
|
} catch (e) {
|
|
|
_content = window.atob(data === null || data === void 0 ? void 0 : (_data$content3 = data.content) === null || _data$content3 === void 0 ? void 0 : _data$content3.content);
|
|
|
es_message/* default.warn */.ZP.warn('请确认文件字符集编码是否为UTF-8');
|
|
|
console.log('err:', e);
|
|
|
}
|
|
|
dispatch({
|
|
|
type: constant/* FETCH_REP_CONTENT */.GB,
|
|
|
payload: objectSpread2_default()(objectSpread2_default()({}, codeRepData), {}, {
|
|
|
content: _content,
|
|
|
language: data.language,
|
|
|
file_type: data.file_type,
|
|
|
filename: data.filename,
|
|
|
lastedUpdateTime: 0,
|
|
|
loading: false
|
|
|
})
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _init2.apply(this, arguments);
|
|
|
}
|
|
|
if (st === 0 && currentPath && shixun.hide_code !== 1) {
|
|
|
// if (vnc_url || taskData?.windows_vnc) {
|
|
|
// return;
|
|
|
// }
|
|
|
init();
|
|
|
return function () {
|
|
|
didCancel = true;
|
|
|
};
|
|
|
}
|
|
|
}, [st, currentPath, lastedGetTaskInfoTime, timestamp]);
|
|
|
var onUpdateCode = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var evaluate,
|
|
|
p,
|
|
|
paramsFromExercise,
|
|
|
ip,
|
|
|
response,
|
|
|
_args2 = arguments;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
evaluate = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : 0;
|
|
|
if (!(
|
|
|
// shixun?.hide_code !== 1 &&
|
|
|
st === 0 && lastedUpdateTime > 0 && isEditPath || evaluate)) {
|
|
|
_context2.next = 15;
|
|
|
break;
|
|
|
}
|
|
|
p = localStorage.getItem('stat') ? {
|
|
|
stat: 'newest'
|
|
|
} : {};
|
|
|
localStorage.removeItem('stat');
|
|
|
paramsFromExercise = _params.courseId && _params.exerciseId ? {
|
|
|
exercise_id: _params.exerciseId
|
|
|
} : {};
|
|
|
if (!(searchParams.get("ip_limit") === 'inner' || searchParams.get("ip_bind") === "true")) {
|
|
|
_context2.next = 9;
|
|
|
break;
|
|
|
}
|
|
|
_context2.next = 8;
|
|
|
return (0,Exercise_ip/* findLocalIp */.y)({
|
|
|
ip_limit: searchParams.get("ip_limit"),
|
|
|
ip_bind: searchParams.get("ip_bind") === "true" ? true : false
|
|
|
});
|
|
|
case 8:
|
|
|
ip = _context2.sent;
|
|
|
case 9:
|
|
|
_context2.next = 11;
|
|
|
return (0,service/* updateCode */.n4)(myshixun.identifier, objectSpread2_default()(objectSpread2_default()(objectSpread2_default()({
|
|
|
path: currentPath,
|
|
|
evaluate: evaluate,
|
|
|
content: content,
|
|
|
game_id: game.id,
|
|
|
exercise_id: searchParams.get("exercisesId")
|
|
|
}, paramsFromExercise), {}, {
|
|
|
windows: evaluate === 1 && document.getElementById("tabsTpi").querySelectorAll("a[class^='active']")[0].dataset.type
|
|
|
}, p), {}, {
|
|
|
ip: ip
|
|
|
}));
|
|
|
case 11:
|
|
|
response = _context2.sent;
|
|
|
if ((response === null || response === void 0 ? void 0 : response.status) === -5 && typeof (response === null || response === void 0 ? void 0 : response.message) === "string") {
|
|
|
modal/* default.info */.Z.info({
|
|
|
title: '提示',
|
|
|
maskClosable: true,
|
|
|
icon: null,
|
|
|
width: 700,
|
|
|
centered: true,
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: ["\u8BE5\u5B9E\u8DF5\u9879\u76EE\u5DF2\u5728\u6559\u5B66\u8BFE\u5802\u8003\u8BD5\uFF08", /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/classrooms/".concat(response === null || response === void 0 ? void 0 : response.course_identifier, "/exercise/").concat(response === null || response === void 0 ? void 0 : response.exercise_id, "/detail"),
|
|
|
children: response === null || response === void 0 ? void 0 : response.exercise_name
|
|
|
}), "\uFF09\u4E2D\u88AB\u4F7F\u7528\uFF0C\u7528\u6237\u8BD5\u5377\u5DF2\u4EA4\u5377\uFF0C\u7981\u6B62\u518D\u4F5C\u7B54\uFF01"]
|
|
|
})
|
|
|
});
|
|
|
}
|
|
|
dispatch({
|
|
|
type: constant/* EDIT_REP_CODE */.N$,
|
|
|
payload: {
|
|
|
lastedUpdateTime: 0
|
|
|
}
|
|
|
});
|
|
|
return _context2.abrupt("return", response);
|
|
|
case 15:
|
|
|
return _context2.abrupt("return", true);
|
|
|
case 16:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function onUpdateCode() {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
|
|
|
// useEffect(() => {
|
|
|
// onUpdateCode();
|
|
|
// }, [st, lastedUpdateTime, currentPath, content, game?.id, isEditPath])
|
|
|
|
|
|
//保存上下文
|
|
|
var onSaveContent = (0,react.useCallback)(function () {
|
|
|
if (game) {
|
|
|
if (game.status !== 2) {
|
|
|
mediator/* default.publish */.Z.publish('update-cost-time');
|
|
|
}
|
|
|
}
|
|
|
try {
|
|
|
if (myshixun !== null && myshixun !== void 0 && myshixun.identifier) {
|
|
|
var bodys = {
|
|
|
path: currentPath,
|
|
|
evaluate: 0,
|
|
|
content: content,
|
|
|
game_id: game.id,
|
|
|
stat: 'newest'
|
|
|
};
|
|
|
var headers = {
|
|
|
type: 'application/json'
|
|
|
};
|
|
|
var blob = new Blob([JSON.stringify(bodys)], headers);
|
|
|
window.navigator.sendBeacon("".concat(env/* default.API_SERVER */.Z.API_SERVER, "/api/myshixuns/").concat(myshixun === null || myshixun === void 0 ? void 0 : myshixun.identifier, "/update_file.json"), blob);
|
|
|
}
|
|
|
} catch (e) {}
|
|
|
onUpdateCode();
|
|
|
}, [game.status, onUpdateCode]);
|
|
|
|
|
|
//切换关卡
|
|
|
(0,react.useEffect)(function () {
|
|
|
onSaveContent();
|
|
|
var unSub1 = mediator/* default.subscribe */.Z.subscribe("exercise-data", function (data) {
|
|
|
exerciseDataRef.current = data;
|
|
|
});
|
|
|
return function () {
|
|
|
unSub1();
|
|
|
};
|
|
|
}, [location]);
|
|
|
|
|
|
//退出实训
|
|
|
function onBack() {
|
|
|
onSaveContent();
|
|
|
}
|
|
|
|
|
|
//解锁测试集
|
|
|
(0,react.useEffect)(function () {
|
|
|
var unSub = mediator/* default.subscribe */.Z.subscribe('unlock-test-case', function () {
|
|
|
var _Modal$confirm;
|
|
|
modal/* default.confirm */.Z.confirm((_Modal$confirm = {
|
|
|
centered: true,
|
|
|
okText: '确定',
|
|
|
cancelText: '取消',
|
|
|
title: '提示',
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsx)(UnLockTestTip, {
|
|
|
score: challenge.score,
|
|
|
is_teacher: is_teacher
|
|
|
})
|
|
|
}, defineProperty_default()(_Modal$confirm, "centered", true), defineProperty_default()(_Modal$confirm, "onOk", onUnlockTestCase), _Modal$confirm));
|
|
|
});
|
|
|
return unSub;
|
|
|
}, [onUnlockTestCase, challenge, is_teacher]);
|
|
|
var onUnlockTestCase = (0,react.useCallback)( /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3() {
|
|
|
var response, test_sets, message, status, grade;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
_context3.next = 2;
|
|
|
return (0,service/* unlockTestCase */.t$)(game.identifier);
|
|
|
case 2:
|
|
|
response = _context3.sent;
|
|
|
test_sets = response.test_sets, message = response.message, status = response.status;
|
|
|
if (!(status === -1)) {
|
|
|
_context3.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
es_message/* default.info */.ZP.info(message);
|
|
|
return _context3.abrupt("return");
|
|
|
case 7:
|
|
|
grade = taskData['user'].grade;
|
|
|
taskData['user'].grade = grade - challenge.score * 2;
|
|
|
taskData['test_sets'] = test_sets;
|
|
|
taskData['game']['test_sets_view'] = true;
|
|
|
dispatch({
|
|
|
type: constant/* UPDATE_TASK_DATA */.z2,
|
|
|
payload: {
|
|
|
taskData: taskData
|
|
|
}
|
|
|
});
|
|
|
case 12:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
})), [game, challenge, dispatch]);
|
|
|
function pointerEvents(val) {
|
|
|
var arr = document.getElementsByTagName('iframe');
|
|
|
for (var i = 0; i < arr.length; i++) {
|
|
|
arr[i].style['pointer-events'] = val;
|
|
|
}
|
|
|
}
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (!noDragging || vnc_url) {
|
|
|
var onMove = function onMove(e) {
|
|
|
if (resizeXFlag.current) {
|
|
|
dispatch({
|
|
|
type: constant/* MOVE_X */.F_,
|
|
|
payload: e.pageX
|
|
|
});
|
|
|
}
|
|
|
if (resizeYFlag.current) {
|
|
|
pointerEvents('none');
|
|
|
dispatch({
|
|
|
type: constant/* MOVE_Y */.wQ,
|
|
|
payload: e.pageY
|
|
|
});
|
|
|
}
|
|
|
};
|
|
|
var onMouseUp = function onMouseUp() {
|
|
|
pointerEvents('auto');
|
|
|
resizeXFlag.current = false;
|
|
|
resizeYFlag.current = false;
|
|
|
dispatch({
|
|
|
type: constant/* TRIGGER_RIGHT_PANEL_MASK */.i3,
|
|
|
payload: false
|
|
|
});
|
|
|
document.onselectstart = null;
|
|
|
};
|
|
|
document.addEventListener('mousemove', onMove);
|
|
|
document.addEventListener('mouseup', onMouseUp);
|
|
|
return function () {
|
|
|
document.removeEventListener('mousemove', onMove);
|
|
|
document.removeEventListener('mouseup', onMouseUp);
|
|
|
};
|
|
|
}
|
|
|
}, [resizeYFlag.current, resizeXFlag.current, noDragging, dispatch]);
|
|
|
function minuxUserGrade(value) {
|
|
|
var grade = taskData['user'].grade;
|
|
|
taskData['user'].grade = grade - value;
|
|
|
dispatch({
|
|
|
type: constant/* UPDATE_TASK_DATA */.z2,
|
|
|
payload: {
|
|
|
taskData: taskData
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
fullscreenOrExit.current = function () {
|
|
|
state.moveX = state.moveX !== 0.01 ? 0.01 : '40%';
|
|
|
dispatch({
|
|
|
type: constant/* MOVE_X */.F_,
|
|
|
payload: state.moveX
|
|
|
});
|
|
|
};
|
|
|
function onResizeStart() {
|
|
|
if (noDragging) {
|
|
|
fullscreenOrExit.current();
|
|
|
} else {
|
|
|
document.onselectstart = function () {
|
|
|
return false;
|
|
|
};
|
|
|
resizeXFlag.current = true;
|
|
|
dispatch({
|
|
|
type: constant/* TRIGGER_RIGHT_PANEL_MASK */.i3,
|
|
|
payload: true
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
function onResizeYStart() {
|
|
|
document.onselectstart = function () {
|
|
|
return false;
|
|
|
};
|
|
|
resizeYFlag.current = true;
|
|
|
if (taskData !== null && taskData !== void 0 && taskData.vnc_url || taskData !== null && taskData !== void 0 && taskData.windows_vnc || taskData !== null && taskData !== void 0 && taskData.linux_vnc || taskData !== null && taskData !== void 0 && taskData.virtual_machine || (shixun === null || shixun === void 0 ? void 0 : shixun.hide_code) === 2) {
|
|
|
dispatch({
|
|
|
type: constant/* TRIGGER_RIGHT_PANEL_MASK */.i3,
|
|
|
payload: true
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
function onResizeSetContainer(value) {
|
|
|
if (value === 0.01) {
|
|
|
dispatch({
|
|
|
type: constant/* MOVE_Y */.wQ,
|
|
|
payload: 0
|
|
|
});
|
|
|
} else {
|
|
|
dispatch({
|
|
|
type: constant/* MOVE_Y */.wQ,
|
|
|
payload: 0.01
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
function onResizeCodeArea(value) {
|
|
|
if (value === 0) {
|
|
|
dispatch({
|
|
|
type: constant/* MOVE_Y */.wQ,
|
|
|
payload: '100%'
|
|
|
});
|
|
|
} else {
|
|
|
dispatch({
|
|
|
type: constant/* MOVE_Y */.wQ,
|
|
|
payload: 0
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
(0,react.useEffect)(function () {
|
|
|
window.addEventListener('beforeunload', onSaveContent);
|
|
|
return function () {
|
|
|
window.removeEventListener('beforeunload', onSaveContent);
|
|
|
};
|
|
|
}, [onSaveContent]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
var unSub = mediator/* default.subscribe */.Z.subscribe('vnc-enlarge', function () {
|
|
|
fullscreenOrExit.current();
|
|
|
});
|
|
|
return unSub;
|
|
|
}, []);
|
|
|
function onFinishDisplayHtml() {
|
|
|
onUpdateCode();
|
|
|
}
|
|
|
function onResetCode() {
|
|
|
return _onResetCode.apply(this, arguments);
|
|
|
}
|
|
|
function _onResetCode() {
|
|
|
_onResetCode = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee6() {
|
|
|
var response, content, language;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee6$(_context6) {
|
|
|
while (1) switch (_context6.prev = _context6.next) {
|
|
|
case 0:
|
|
|
_context6.next = 2;
|
|
|
return (0,service/* restoreCode */.qK)(taskId, {
|
|
|
path: currentPath
|
|
|
});
|
|
|
case 2:
|
|
|
response = _context6.sent;
|
|
|
content = response.content, language = response.language;
|
|
|
if (!((response === null || response === void 0 ? void 0 : response.status) === -5)) {
|
|
|
_context6.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
modal/* default.info */.Z.info({
|
|
|
title: '提示',
|
|
|
maskClosable: true,
|
|
|
icon: null,
|
|
|
width: 700,
|
|
|
centered: true,
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: ["\u8BE5\u5B9E\u8DF5\u9879\u76EE\u5DF2\u5728\u6559\u5B66\u8BFE\u5802\u8003\u8BD5\uFF08", /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/classrooms/".concat(response === null || response === void 0 ? void 0 : response.course_identifier, "/exercise/").concat(response === null || response === void 0 ? void 0 : response.exercise_id, "/detail"),
|
|
|
children: response === null || response === void 0 ? void 0 : response.exercise_name
|
|
|
}), "\uFF09\u4E2D\u88AB\u4F7F\u7528\uFF0C\u7528\u6237\u8BD5\u5377\u5DF2\u4EA4\u5377\uFF0C\u7981\u6B62\u518D\u4F5C\u7B54\uFF01"]
|
|
|
})
|
|
|
});
|
|
|
return _context6.abrupt("return");
|
|
|
case 7:
|
|
|
dispatch({
|
|
|
type: constant/* FETCH_REP_CONTENT */.GB,
|
|
|
payload: objectSpread2_default()(objectSpread2_default()({}, codeRepData), {}, {
|
|
|
content: content,
|
|
|
language: language,
|
|
|
lastedUpdateTime: 0,
|
|
|
loading: false
|
|
|
})
|
|
|
});
|
|
|
case 8:
|
|
|
case "end":
|
|
|
return _context6.stop();
|
|
|
}
|
|
|
}, _callee6);
|
|
|
}));
|
|
|
return _onResetCode.apply(this, arguments);
|
|
|
}
|
|
|
function onResetGitCode() {
|
|
|
return _onResetGitCode.apply(this, arguments);
|
|
|
}
|
|
|
function _onResetGitCode() {
|
|
|
_onResetGitCode = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee7() {
|
|
|
var _taskData$myshixun;
|
|
|
var response;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee7$(_context7) {
|
|
|
while (1) switch (_context7.prev = _context7.next) {
|
|
|
case 0:
|
|
|
_context7.next = 2;
|
|
|
return (0,service/* resetGitCode */.Tf)(taskData === null || taskData === void 0 ? void 0 : (_taskData$myshixun = taskData.myshixun) === null || _taskData$myshixun === void 0 ? void 0 : _taskData$myshixun.identifier, {});
|
|
|
case 2:
|
|
|
response = _context7.sent;
|
|
|
if (!((response === null || response === void 0 ? void 0 : response.status) === -5)) {
|
|
|
_context7.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
modal/* default.info */.Z.info({
|
|
|
title: '提示',
|
|
|
maskClosable: true,
|
|
|
icon: null,
|
|
|
width: 700,
|
|
|
centered: true,
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: ["\u8BE5\u5B9E\u8DF5\u9879\u76EE\u5DF2\u5728\u6559\u5B66\u8BFE\u5802\u8003\u8BD5\uFF08", /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/classrooms/".concat(response === null || response === void 0 ? void 0 : response.course_identifier, "/exercise/").concat(response === null || response === void 0 ? void 0 : response.exercise_id, "/detail"),
|
|
|
children: response === null || response === void 0 ? void 0 : response.exercise_name
|
|
|
}), "\uFF09\u4E2D\u88AB\u4F7F\u7528\uFF0C\u7528\u6237\u8BD5\u5377\u5DF2\u4EA4\u5377\uFF0C\u7981\u6B62\u518D\u4F5C\u7B54\uFF01"]
|
|
|
})
|
|
|
});
|
|
|
return _context7.abrupt("return");
|
|
|
case 6:
|
|
|
init();
|
|
|
return _context7.abrupt("return", response);
|
|
|
case 8:
|
|
|
case "end":
|
|
|
return _context7.stop();
|
|
|
}
|
|
|
}, _callee7);
|
|
|
}));
|
|
|
return _onResetGitCode.apply(this, arguments);
|
|
|
}
|
|
|
function onResetPassedCode() {
|
|
|
return _onResetPassedCode.apply(this, arguments);
|
|
|
}
|
|
|
function _onResetPassedCode() {
|
|
|
_onResetPassedCode = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee8() {
|
|
|
var response, content, language;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee8$(_context8) {
|
|
|
while (1) switch (_context8.prev = _context8.next) {
|
|
|
case 0:
|
|
|
_context8.next = 2;
|
|
|
return (0,service/* resetPassedCode */.hG)(taskId, {
|
|
|
path: currentPath
|
|
|
});
|
|
|
case 2:
|
|
|
response = _context8.sent;
|
|
|
content = response.content, language = response.language;
|
|
|
if (!((response === null || response === void 0 ? void 0 : response.status) === -5)) {
|
|
|
_context8.next = 7;
|
|
|
break;
|
|
|
}
|
|
|
modal/* default.info */.Z.info({
|
|
|
title: '提示',
|
|
|
maskClosable: true,
|
|
|
icon: null,
|
|
|
width: 700,
|
|
|
centered: true,
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: ["\u8BE5\u5B9E\u8DF5\u9879\u76EE\u5DF2\u5728\u6559\u5B66\u8BFE\u5802\u8003\u8BD5\uFF08", /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/classrooms/".concat(response === null || response === void 0 ? void 0 : response.course_identifier, "/exercise/").concat(response === null || response === void 0 ? void 0 : response.exercise_id, "/detail"),
|
|
|
children: response === null || response === void 0 ? void 0 : response.exercise_name
|
|
|
}), "\uFF09\u4E2D\u88AB\u4F7F\u7528\uFF0C\u7528\u6237\u8BD5\u5377\u5DF2\u4EA4\u5377\uFF0C\u7981\u6B62\u518D\u4F5C\u7B54\uFF01"]
|
|
|
})
|
|
|
});
|
|
|
return _context8.abrupt("return");
|
|
|
case 7:
|
|
|
dispatch({
|
|
|
type: constant/* FETCH_REP_CONTENT */.GB,
|
|
|
payload: objectSpread2_default()(objectSpread2_default()({}, codeRepData), {}, {
|
|
|
content: content,
|
|
|
language: language,
|
|
|
lastedUpdateTime: 0,
|
|
|
loading: false
|
|
|
})
|
|
|
});
|
|
|
case 8:
|
|
|
case "end":
|
|
|
return _context8.stop();
|
|
|
}
|
|
|
}, _callee8);
|
|
|
}));
|
|
|
return _onResetPassedCode.apply(this, arguments);
|
|
|
}
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (st === 0 && challenge && challenge.path) {
|
|
|
var _paths = challenge.path.split(';').filter(function (item) {
|
|
|
return !!item;
|
|
|
});
|
|
|
dispatch({
|
|
|
type: constant/* EDIT_REP_CODE */.N$,
|
|
|
payload: {
|
|
|
currentPath: _paths[0],
|
|
|
paths: _paths
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
}, [challenge, st]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (shixun) {
|
|
|
(0,util/* setDocumentTitle */.Dk)(shixun.name || '实践项目名称-未填写');
|
|
|
}
|
|
|
}, [shixun]);
|
|
|
function onPlusOrCancelPraise() {
|
|
|
return _onPlusOrCancelPraise.apply(this, arguments);
|
|
|
}
|
|
|
function _onPlusOrCancelPraise() {
|
|
|
_onPlusOrCancelPraise = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee9() {
|
|
|
var response, praise_count, praise;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee9$(_context9) {
|
|
|
while (1) switch (_context9.prev = _context9.next) {
|
|
|
case 0:
|
|
|
_context9.next = 2;
|
|
|
return (0,service/* plusOrCancelPraise */.Y0)(taskId);
|
|
|
case 2:
|
|
|
response = _context9.sent;
|
|
|
praise_count = response.praise_count, praise = response.praise;
|
|
|
taskData.praise_count = praise_count;
|
|
|
taskData['user_praise'] = praise;
|
|
|
dispatch({
|
|
|
type: constant/* UPDATE_TASK_DATA */.z2,
|
|
|
payload: {
|
|
|
taskData: taskData
|
|
|
}
|
|
|
});
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context9.stop();
|
|
|
}
|
|
|
}, _callee9);
|
|
|
}));
|
|
|
return _onPlusOrCancelPraise.apply(this, arguments);
|
|
|
}
|
|
|
var onUpdateCostTime = (0,react.useCallback)(function (time) {
|
|
|
function init(_x2) {
|
|
|
return _init3.apply(this, arguments);
|
|
|
}
|
|
|
function _init3() {
|
|
|
_init3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4(time) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
try {
|
|
|
window.navigator.sendBeacon("".concat(env/* default.API_SERVER */.Z.API_SERVER, "/api/tasks/").concat(taskId, "/cost_time.json"), JSON.stringify({
|
|
|
time: time
|
|
|
}));
|
|
|
} catch (e) {}
|
|
|
// await updateCostTime(taskId, { time });
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
}));
|
|
|
return _init3.apply(this, arguments);
|
|
|
}
|
|
|
init(time);
|
|
|
}, [taskId]);
|
|
|
function onSaveTaskStar(_x3) {
|
|
|
return _onSaveTaskStar.apply(this, arguments);
|
|
|
}
|
|
|
function _onSaveTaskStar() {
|
|
|
_onSaveTaskStar = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee10(value) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee10$(_context10) {
|
|
|
while (1) switch (_context10.prev = _context10.next) {
|
|
|
case 0:
|
|
|
_context10.next = 2;
|
|
|
return (0,service/* saveTaskStar */.L5)(taskId, shixun.id, value);
|
|
|
case 2:
|
|
|
taskData['game']['star'] = value;
|
|
|
dispatch({
|
|
|
type: constant/* UPDATE_TASK_DATA */.z2,
|
|
|
payload: {
|
|
|
taskData: taskData
|
|
|
}
|
|
|
});
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context10.stop();
|
|
|
}
|
|
|
}, _callee10);
|
|
|
}));
|
|
|
return _onSaveTaskStar.apply(this, arguments);
|
|
|
}
|
|
|
function onShowDir() {
|
|
|
return _onShowDir.apply(this, arguments);
|
|
|
}
|
|
|
function _onShowDir() {
|
|
|
_onShowDir = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee11() {
|
|
|
var response, trees;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee11$(_context11) {
|
|
|
while (1) switch (_context11.prev = _context11.next) {
|
|
|
case 0:
|
|
|
if (repos) {
|
|
|
_context11.next = 8;
|
|
|
break;
|
|
|
}
|
|
|
_context11.next = 3;
|
|
|
return (0,service/* fetchRepos */.pU)(myshixun.identifier);
|
|
|
case 3:
|
|
|
response = _context11.sent;
|
|
|
trees = response.trees;
|
|
|
dispatch({
|
|
|
type: constant/* SET_REPOS */.oP,
|
|
|
payload: {
|
|
|
showDocuments: true,
|
|
|
repos: (0,tasks_util/* getTreeData */.SI)(trees)
|
|
|
}
|
|
|
});
|
|
|
_context11.next = 9;
|
|
|
break;
|
|
|
case 8:
|
|
|
dispatch({
|
|
|
type: constant/* SET_SHOW_DIR */.GW,
|
|
|
payload: true
|
|
|
});
|
|
|
case 9:
|
|
|
case "end":
|
|
|
return _context11.stop();
|
|
|
}
|
|
|
}, _callee11);
|
|
|
}));
|
|
|
return _onShowDir.apply(this, arguments);
|
|
|
}
|
|
|
function onLoadTreeData(_x4) {
|
|
|
return _onLoadTreeData.apply(this, arguments);
|
|
|
}
|
|
|
function _onLoadTreeData() {
|
|
|
_onLoadTreeData = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee13(node) {
|
|
|
var _node$props, children, eventKey;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee13$(_context13) {
|
|
|
while (1) switch (_context13.prev = _context13.next) {
|
|
|
case 0:
|
|
|
_node$props = node.props, children = _node$props.children, eventKey = _node$props.eventKey;
|
|
|
return _context13.abrupt("return", new Promise( /*#__PURE__*/function () {
|
|
|
var _ref4 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee12(resolve) {
|
|
|
var response, trees, newRepos;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee12$(_context12) {
|
|
|
while (1) switch (_context12.prev = _context12.next) {
|
|
|
case 0:
|
|
|
if (children && children.length > 0) {
|
|
|
resolve();
|
|
|
}
|
|
|
_context12.next = 3;
|
|
|
return (0,service/* fetchRepos */.pU)(myshixun.identifier, {
|
|
|
path: eventKey
|
|
|
});
|
|
|
case 3:
|
|
|
response = _context12.sent;
|
|
|
trees = response.trees;
|
|
|
newRepos = (0,tasks_util/* processTreeData */.Ax)(repos, eventKey, (0,tasks_util/* getTreeData */.SI)(trees, eventKey));
|
|
|
dispatch({
|
|
|
type: constant/* SET_REPOS */.oP,
|
|
|
payload: {
|
|
|
repos: toConsumableArray_default()(newRepos)
|
|
|
}
|
|
|
});
|
|
|
resolve();
|
|
|
case 8:
|
|
|
case "end":
|
|
|
return _context12.stop();
|
|
|
}
|
|
|
}, _callee12);
|
|
|
}));
|
|
|
return function (_x10) {
|
|
|
return _ref4.apply(this, arguments);
|
|
|
};
|
|
|
}()));
|
|
|
case 2:
|
|
|
case "end":
|
|
|
return _context13.stop();
|
|
|
}
|
|
|
}, _callee13);
|
|
|
}));
|
|
|
return _onLoadTreeData.apply(this, arguments);
|
|
|
}
|
|
|
function onHideDocuments() {
|
|
|
dispatch({
|
|
|
type: constant/* SET_SHOW_DIR */.GW,
|
|
|
payload: false
|
|
|
});
|
|
|
}
|
|
|
function onEvalChoose(value) {
|
|
|
var gold = value.gold,
|
|
|
experience = value.experience,
|
|
|
next_game = value.next_game,
|
|
|
next_shixun = value.next_shixun,
|
|
|
subject_done = value.subject_done,
|
|
|
rest = objectWithoutProperties_default()(value, tasks_excluded);
|
|
|
if (!value.challenge_chooses_count) return;
|
|
|
var isOk = rest.challenge_chooses_count === rest.choose_correct_num;
|
|
|
var new_test_cases = {
|
|
|
had_submmit: true,
|
|
|
test_sets: rest.test_sets,
|
|
|
challenge_chooses_count: rest.challenge_chooses_count,
|
|
|
choose_correct_num: rest.choose_correct_num
|
|
|
};
|
|
|
taskData['choose_test_cases'] = new_test_cases;
|
|
|
if (isOk) {
|
|
|
taskData['game'].status = 2;
|
|
|
taskData['next_game'] = next_game;
|
|
|
taskData['user']['grade'] += gold;
|
|
|
}
|
|
|
if (isOk && game.status !== 2) {
|
|
|
mediator/* default.publish */.Z.publish('update-cost-time');
|
|
|
}
|
|
|
dispatch({
|
|
|
type: constant/* UPDATE_TASK_DATA */.z2,
|
|
|
payload: {
|
|
|
taskData: taskData,
|
|
|
evalData: {
|
|
|
gold: gold,
|
|
|
experience: experience,
|
|
|
next_game: next_game,
|
|
|
next_shixun: next_shixun,
|
|
|
subject_done: subject_done
|
|
|
// had_done,
|
|
|
},
|
|
|
|
|
|
showEvalResult: isOk
|
|
|
}
|
|
|
});
|
|
|
//*评测完成后有10秒倒计时
|
|
|
mediator/* default.publish */.Z.publish('eval-code-finish');
|
|
|
}
|
|
|
function onEvalCode(_x5) {
|
|
|
return _onEvalCode.apply(this, arguments);
|
|
|
}
|
|
|
function _onEvalCode() {
|
|
|
_onEvalCode = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee15(type) {
|
|
|
var _rs$data, _rs$data$data_list, response, resubmit, sec_key, content_modified, _exerciseDataRef$curr, _exerciseDataRef$curr2, _exerciseDataRef$curr3, params, _taskData$challenge, _response$content, _response$content2, _response$content3, rs, _rs$data2, _rs$data3, getGameStatus, count, intervalTime, time_out;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee15$(_context15) {
|
|
|
while (1) switch (_context15.prev = _context15.next) {
|
|
|
case 0:
|
|
|
_context15.prev = 0;
|
|
|
dispatch({
|
|
|
type: constant/* SHOW_EVALUATE_LOADING */.Ui
|
|
|
});
|
|
|
// if((unity_3d_routes && !with_code_file) ||
|
|
|
// taskData?.challenge?.thiry_party ){}
|
|
|
_context15.next = 4;
|
|
|
return onUpdateCode(1);
|
|
|
case 4:
|
|
|
response = _context15.sent;
|
|
|
resubmit = response.resubmit, sec_key = response.sec_key, content_modified = response.content_modified;
|
|
|
if (!(response.status === -5 && typeof_default()(response === null || response === void 0 ? void 0 : response.message) === "object")) {
|
|
|
_context15.next = 9;
|
|
|
break;
|
|
|
}
|
|
|
(0,_umi_production_exports.getDvaApp)()._store.dispatch({
|
|
|
type: 'exercise/setActionTabs',
|
|
|
payload: {
|
|
|
key: 'student-unlock',
|
|
|
exerciseParams: objectSpread2_default()(objectSpread2_default()({}, ((_exerciseDataRef$curr = exerciseDataRef.current) === null || _exerciseDataRef$curr === void 0 ? void 0 : _exerciseDataRef$curr.exercise) || {}), {}, {
|
|
|
errorMessage: response === null || response === void 0 ? void 0 : response.message,
|
|
|
exercise_user_id: (_exerciseDataRef$curr2 = exerciseDataRef.current) === null || _exerciseDataRef$curr2 === void 0 ? void 0 : (_exerciseDataRef$curr3 = _exerciseDataRef$curr2.exercise) === null || _exerciseDataRef$curr3 === void 0 ? void 0 : _exerciseDataRef$curr3.exercise_user_id,
|
|
|
id: searchParams.get("exercisesId")
|
|
|
})
|
|
|
}
|
|
|
});
|
|
|
return _context15.abrupt("return");
|
|
|
case 9:
|
|
|
if (!(response.status && response.status < 0)) {
|
|
|
_context15.next = 13;
|
|
|
break;
|
|
|
}
|
|
|
// message.warn(response?.message,'message-key');
|
|
|
mediator/* default.publish */.Z.publish('eval-code-finish');
|
|
|
dispatch({
|
|
|
type: constant/* UPDATE_TASK_DATA */.z2,
|
|
|
payload: {
|
|
|
evaluateLoading: false
|
|
|
}
|
|
|
});
|
|
|
return _context15.abrupt("return");
|
|
|
case 13:
|
|
|
params = {
|
|
|
sec_key: sec_key,
|
|
|
resubmit: resubmit,
|
|
|
first: 1,
|
|
|
content_modified: content_modified
|
|
|
}; // 只有试卷考试才需要下面参数
|
|
|
if (searchParams.get("type") === 'exercises') {
|
|
|
params.extras = {
|
|
|
exercise_id: searchParams.get("exercisesId"),
|
|
|
//试卷id
|
|
|
question_id: searchParams.get("questionId"),
|
|
|
// 题目id
|
|
|
challenge_id: (_taskData$challenge = taskData.challenge) === null || _taskData$challenge === void 0 ? void 0 : _taskData$challenge.id,
|
|
|
// 关卡id
|
|
|
subject_id: searchParams.get("subject_id") || '',
|
|
|
commitID: response === null || response === void 0 ? void 0 : (_response$content = response.content) === null || _response$content === void 0 ? void 0 : _response$content.commitID
|
|
|
};
|
|
|
} else if (_params.courseId && _params.homeworkId) {
|
|
|
params.extras = {
|
|
|
homework_common_id: _params.homeworkId,
|
|
|
commitID: response === null || response === void 0 ? void 0 : (_response$content2 = response.content) === null || _response$content2 === void 0 ? void 0 : _response$content2.commitID
|
|
|
};
|
|
|
} else {
|
|
|
params.extras = {
|
|
|
commitID: response === null || response === void 0 ? void 0 : (_response$content3 = response.content) === null || _response$content3 === void 0 ? void 0 : _response$content3.commitID
|
|
|
};
|
|
|
}
|
|
|
_context15.next = 17;
|
|
|
return (0,service/* codeGameBuild */.Xy)(taskId, params);
|
|
|
case 17:
|
|
|
rs = _context15.sent;
|
|
|
if (!(rs !== null && rs !== void 0 && (_rs$data = rs.data) !== null && _rs$data !== void 0 && (_rs$data$data_list = _rs$data.data_list) !== null && _rs$data$data_list !== void 0 && _rs$data$data_list.length)) {
|
|
|
_context15.next = 21;
|
|
|
break;
|
|
|
}
|
|
|
mediator/* default.publish */.Z.publish('pod-restrict-data', {
|
|
|
identifier: rs === null || rs === void 0 ? void 0 : (_rs$data2 = rs.data) === null || _rs$data2 === void 0 ? void 0 : _rs$data2.identifier,
|
|
|
data_list: rs === null || rs === void 0 ? void 0 : (_rs$data3 = rs.data) === null || _rs$data3 === void 0 ? void 0 : _rs$data3.data_list
|
|
|
});
|
|
|
return _context15.abrupt("return");
|
|
|
case 21:
|
|
|
if (!(rs.status === -1 && searchParams.get("type") === 'exercises')) {
|
|
|
_context15.next = 24;
|
|
|
break;
|
|
|
}
|
|
|
window.parent.location.href = "/classrooms/".concat(searchParams.get("coursesId"), "/exercise/").concat(searchParams.get("exercisesId"), "/detail");
|
|
|
return _context15.abrupt("return");
|
|
|
case 24:
|
|
|
if (rs.status === 1) {
|
|
|
getGameStatus = /*#__PURE__*/function () {
|
|
|
var _ref5 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee14(intervalTime, finalTime, count) {
|
|
|
var _taskData$challenge2;
|
|
|
var excuteTime, source, ds, status, running_code_message, port, web_route, playUrl, isWeb, isOk, isPicture, isShowEvalResult, payload;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee14$(_context14) {
|
|
|
while (1) switch (_context14.prev = _context14.next) {
|
|
|
case 0:
|
|
|
excuteTime = count++ * intervalTime;
|
|
|
if (excuteTime / 1000 > finalTime) {
|
|
|
time_out = true;
|
|
|
}
|
|
|
_context14.next = 4;
|
|
|
return (0,service/* getCodeGameStatus */.Qo)(taskId, {
|
|
|
resubmit: resubmit,
|
|
|
time_out: time_out,
|
|
|
port: rs.port,
|
|
|
sec_key: sec_key,
|
|
|
challenge_id: taskData === null || taskData === void 0 ? void 0 : (_taskData$challenge2 = taskData.challenge) === null || _taskData$challenge2 === void 0 ? void 0 : _taskData$challenge2.id,
|
|
|
subject_id: searchParams.get("subject_id") || ''
|
|
|
});
|
|
|
case 4:
|
|
|
source = _context14.sent;
|
|
|
ds = source;
|
|
|
status = ds.status, running_code_message = ds.running_code_message, port = ds.port, web_route = ds.web_route;
|
|
|
dispatch({
|
|
|
type: constant/* SET_EVALUATE_MESSAGE */.p2,
|
|
|
payload: running_code_message
|
|
|
});
|
|
|
if (+status > -1 || excuteTime / 1000 > finalTime) {
|
|
|
//第一次通关
|
|
|
if (game.status !== 2 && status === 2) {
|
|
|
taskData['game'].status = 2;
|
|
|
taskData['user']['grade'] += ds.gold;
|
|
|
mediator/* default.publish */.Z.publish('update-cost-time');
|
|
|
}
|
|
|
taskData['test_sets'] = ds.test_sets || [];
|
|
|
taskData['last_compile_output'] = ds.last_compile_output;
|
|
|
taskData['test_sets_count'] = ds.test_sets_count;
|
|
|
taskData['sets_error_count'] = ds.sets_error_count;
|
|
|
taskData['record_consume_time'] = ds.record_consume_time;
|
|
|
taskData['next_game'] = ds.next_game;
|
|
|
taskData['prev_game'] = ds.prev_game;
|
|
|
taskData['game_report_id'] = ds.game_report_id;
|
|
|
playUrl = '';
|
|
|
isWeb = mirror_name.indexOf('Web') !== -1 || mirror_name.indexOf('JFinal') !== -1;
|
|
|
if (isWeb && port != -1 && web_route) {
|
|
|
playUrl = "".concat(tomcat_url, ":").concat(port, "/").concat(web_route);
|
|
|
}
|
|
|
isOk = (0,tasks_util/* isCompileOk */.f1)(ds.test_sets);
|
|
|
isPicture = ds.picture > 0 && isOk;
|
|
|
isShowEvalResult = status === 2 && !time_out;
|
|
|
if (time_out) {
|
|
|
es_message/* default.info */.ZP.info('本次评测超时');
|
|
|
} else {
|
|
|
if (!isShowEvalResult) {
|
|
|
es_message/* default.info */.ZP.info('评测未通过,详情参见“测试结果”');
|
|
|
// if (playUrl && playUrl != '') {
|
|
|
// Modal.confirm({
|
|
|
// title: '提示',
|
|
|
// content: '评测未通过,详情参见“测试结果”',
|
|
|
// okText: '查看效果',
|
|
|
// cancelText: '关闭',
|
|
|
// centered: true,
|
|
|
// onOk: () => {
|
|
|
// openNewWindow(playUrl);
|
|
|
// },
|
|
|
// });
|
|
|
// }
|
|
|
}
|
|
|
}
|
|
|
payload = {
|
|
|
taskData: taskData,
|
|
|
evalData: {
|
|
|
gold: ds.gold,
|
|
|
experience: ds.experience,
|
|
|
next_game: ds.next_game,
|
|
|
next_shixun: ds.next_shixun
|
|
|
// had_done: ds.had_done,
|
|
|
},
|
|
|
|
|
|
evaluateLoading: false,
|
|
|
evaluateMessage: '',
|
|
|
webDisplayUrl: playUrl,
|
|
|
// showPictureView:
|
|
|
// unity_3d_routes || challenge?.thiry_party ? false : isPicture,
|
|
|
showPictureView: unity_3d_routes || challenge !== null && challenge !== void 0 && challenge.thiry_party ? false : ds.picture > 0 && status !== 2,
|
|
|
isPictureView: isPicture
|
|
|
};
|
|
|
if (unity_3d_routes && with_code_file || challenge !== null && challenge !== void 0 && challenge.thiry_party) {
|
|
|
//* 新需求
|
|
|
mediator/* default.publish */.Z.publish('evaluate-unity3d-result', {
|
|
|
state: 'user',
|
|
|
data: {
|
|
|
user: user
|
|
|
}
|
|
|
});
|
|
|
mediator/* default.publish */.Z.publish('evaluate-unity3d-finish');
|
|
|
//*评测结果由unity3d给出, 在评测时需要格外等待unity3d给出的消息
|
|
|
if (unity_3d_result) {
|
|
|
mediator/* default.publish */.Z.publish('evaluate-unity3d-result', ds.unity_3d_result);
|
|
|
} else {
|
|
|
if (isOk) {
|
|
|
mediator/* default.publish */.Z.publish('evaluate-unity3d-result', ds.unity_3d_result);
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
payload['showEvalResult'] = isShowEvalResult;
|
|
|
}
|
|
|
dispatch({
|
|
|
type: constant/* UPDATE_TASK_DATA */.z2,
|
|
|
payload: payload
|
|
|
});
|
|
|
//*评测完成后有10秒倒计时
|
|
|
mediator/* default.publish */.Z.publish('eval-code-finish');
|
|
|
} else {
|
|
|
setTimeout(function () {
|
|
|
getGameStatus(intervalTime, challenge.exec_time + 11, count++);
|
|
|
}, intervalTime);
|
|
|
}
|
|
|
case 9:
|
|
|
case "end":
|
|
|
return _context14.stop();
|
|
|
}
|
|
|
}, _callee14);
|
|
|
}));
|
|
|
return function getGameStatus(_x11, _x12, _x13) {
|
|
|
return _ref5.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
count = 1;
|
|
|
intervalTime = 1000;
|
|
|
time_out = false;
|
|
|
getGameStatus(intervalTime, challenge.exec_time + 11, count++);
|
|
|
//* 前端检查评测结果的总时间为关卡设置的评测时长限制 +10s+1s(时间差)
|
|
|
// let timerId = setInterval(() => {
|
|
|
// getGameStatus(
|
|
|
// intervalTime,
|
|
|
// challenge.exec_time + 11,
|
|
|
// count++,
|
|
|
// timerId,
|
|
|
// );
|
|
|
// }, intervalTime);
|
|
|
}
|
|
|
return _context15.abrupt("return", res);
|
|
|
case 28:
|
|
|
_context15.prev = 28;
|
|
|
_context15.t0 = _context15["catch"](0);
|
|
|
console.log('-------eval code', _context15.t0);
|
|
|
case 31:
|
|
|
case "end":
|
|
|
return _context15.stop();
|
|
|
}
|
|
|
}, _callee15, null, [[0, 28]]);
|
|
|
}));
|
|
|
return _onEvalCode.apply(this, arguments);
|
|
|
}
|
|
|
function onEditRepCode(value) {
|
|
|
dispatch({
|
|
|
type: constant/* EDIT_REP_CODE */.N$,
|
|
|
payload: {
|
|
|
content: value,
|
|
|
lastedUpdateTime: new Date().getTime()
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
function onCloseResult() {
|
|
|
dispatch({
|
|
|
type: constant/* HIDE_EVALUATE_RESULT */.EP
|
|
|
});
|
|
|
}
|
|
|
function onHidePictureView() {
|
|
|
dispatch({
|
|
|
type: constant/* HIDE_PICTURE_VIEW */.OA
|
|
|
});
|
|
|
}
|
|
|
function onShowPictureView() {
|
|
|
dispatch({
|
|
|
type: constant/* SHOW_PICTURE_VIEW */.vm
|
|
|
});
|
|
|
}
|
|
|
function onShowNotice() {
|
|
|
dispatch({
|
|
|
type: constant/* SHOW_NOTICE */.dL
|
|
|
});
|
|
|
}
|
|
|
function onSelectRepo(_x6, _x7) {
|
|
|
return _onSelectRepo.apply(this, arguments);
|
|
|
}
|
|
|
function _onSelectRepo() {
|
|
|
_onSelectRepo = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee16(selectedKeys, event) {
|
|
|
var node, path, suf, _res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee16$(_context16) {
|
|
|
while (1) switch (_context16.prev = _context16.next) {
|
|
|
case 0:
|
|
|
node = event.node;
|
|
|
setLoadingContent(true);
|
|
|
if (!node.isLeaf) {
|
|
|
_context16.next = 9;
|
|
|
break;
|
|
|
}
|
|
|
path = selectedKeys[0];
|
|
|
suf = path.split('.').pop().toLowerCase(); // if (BADSUFS.indexOf(suf) >= 0) {
|
|
|
// Message.info(`不支持加载${suf}类型的文件。`);
|
|
|
// return;
|
|
|
// } else {
|
|
|
_context16.next = 7;
|
|
|
return onUpdateCode();
|
|
|
case 7:
|
|
|
_res = _context16.sent;
|
|
|
dispatch({
|
|
|
type: constant/* EDIT_REP_CODE */.N$,
|
|
|
payload: {
|
|
|
currentPath: path
|
|
|
}
|
|
|
});
|
|
|
// }
|
|
|
case 9:
|
|
|
setTimeout(function () {
|
|
|
setLoadingContent(false);
|
|
|
}, 500);
|
|
|
case 10:
|
|
|
case "end":
|
|
|
return _context16.stop();
|
|
|
}
|
|
|
}, _callee16);
|
|
|
}));
|
|
|
return _onSelectRepo.apply(this, arguments);
|
|
|
}
|
|
|
function onChangePath(_x8) {
|
|
|
return _onChangePath.apply(this, arguments);
|
|
|
}
|
|
|
function _onChangePath() {
|
|
|
_onChangePath = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee17(value) {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee17$(_context17) {
|
|
|
while (1) switch (_context17.prev = _context17.next) {
|
|
|
case 0:
|
|
|
setShowLoading(true);
|
|
|
_context17.next = 3;
|
|
|
return onUpdateCode();
|
|
|
case 3:
|
|
|
res = _context17.sent;
|
|
|
setShowLoading(false);
|
|
|
if (res !== null && res !== void 0 && res.content || res === true) {
|
|
|
dispatch({
|
|
|
type: constant/* EDIT_REP_CODE */.N$,
|
|
|
payload: {
|
|
|
currentPath: value
|
|
|
}
|
|
|
});
|
|
|
} else {
|
|
|
modal/* default.warn */.Z.warn({
|
|
|
title: '文件切换失败',
|
|
|
centered: true,
|
|
|
content: '当前文件内容保存失败,请重新切换文件',
|
|
|
okText: '确定'
|
|
|
});
|
|
|
}
|
|
|
case 6:
|
|
|
case "end":
|
|
|
return _context17.stop();
|
|
|
}
|
|
|
}, _callee17);
|
|
|
}));
|
|
|
return _onChangePath.apply(this, arguments);
|
|
|
}
|
|
|
function onNextCallback() {
|
|
|
taskData['myshixun'].system_tip = true;
|
|
|
dispatch({
|
|
|
type: constant/* UPDATE_TASK_DATA */.z2,
|
|
|
payload: {
|
|
|
taskData: taskData,
|
|
|
showNotice: false
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
function onUpdateCallback(newPath, timestamp) {
|
|
|
taskData['challenge'].path = newPath;
|
|
|
taskData['myshixun'].system_tip = false;
|
|
|
dispatch({
|
|
|
type: constant/* UPDATE_TASK_DATA */.z2,
|
|
|
payload: {
|
|
|
taskData: objectSpread2_default()(objectSpread2_default()({}, taskData), {}, {
|
|
|
tpm_cases_modified: false,
|
|
|
tpm_modified: false,
|
|
|
tpm_script_modified: false
|
|
|
}),
|
|
|
showNotice: false,
|
|
|
timestamp: timestamp
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
function onUpdateFailure() {
|
|
|
dispatch({
|
|
|
type: constant/* HIDE_NOTICE */.Nv
|
|
|
});
|
|
|
}
|
|
|
function onResetVnc() {
|
|
|
return _onResetVnc.apply(this, arguments);
|
|
|
}
|
|
|
function _onResetVnc() {
|
|
|
_onResetVnc = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee18() {
|
|
|
var _taskData$challenge3, response, _taskData$myshixun2, new_vnc_url, _taskData$myshixun3, _new_vnc_url, _taskData$myshixun4, _new_vnc_url2;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee18$(_context18) {
|
|
|
while (1) switch (_context18.prev = _context18.next) {
|
|
|
case 0:
|
|
|
_context18.prev = 0;
|
|
|
dispatch({
|
|
|
type: constant/* SET_VNC_LOADING */.RY,
|
|
|
payload: true
|
|
|
});
|
|
|
mediator/* default.publish */.Z.publish('vnc-reseting');
|
|
|
if (!(taskData !== null && taskData !== void 0 && taskData.windows_vnc || taskData !== null && taskData !== void 0 && taskData.virtual_machine)) {
|
|
|
_context18.next = 13;
|
|
|
break;
|
|
|
}
|
|
|
mediator/* default.publish */.Z.publish('reset-linux-windows-loading');
|
|
|
_context18.next = 7;
|
|
|
return (0,service/* resetWindowsVnc */.ZM)({
|
|
|
myshixunId: taskData === null || taskData === void 0 ? void 0 : (_taskData$myshixun2 = taskData.myshixun) === null || _taskData$myshixun2 === void 0 ? void 0 : _taskData$myshixun2.identifier,
|
|
|
game_id: taskData === null || taskData === void 0 ? void 0 : taskData.game.id
|
|
|
});
|
|
|
case 7:
|
|
|
response = _context18.sent;
|
|
|
new_vnc_url = response.data.link_url;
|
|
|
taskData['shixun']['windows_vnc'] = new_vnc_url + '×tamp=' + new Date().getTime();
|
|
|
taskData.windows_vnc++;
|
|
|
_context18.next = 28;
|
|
|
break;
|
|
|
case 13:
|
|
|
if (!(taskData !== null && taskData !== void 0 && taskData.linux_vnc)) {
|
|
|
_context18.next = 23;
|
|
|
break;
|
|
|
}
|
|
|
mediator/* default.publish */.Z.publish('reset-linux-windows-loading');
|
|
|
_context18.next = 17;
|
|
|
return (0,service/* resetLinuxVnc */.pK)({
|
|
|
myshixunId: taskData === null || taskData === void 0 ? void 0 : (_taskData$myshixun3 = taskData.myshixun) === null || _taskData$myshixun3 === void 0 ? void 0 : _taskData$myshixun3.identifier,
|
|
|
game_id: taskData === null || taskData === void 0 ? void 0 : taskData.game.id
|
|
|
});
|
|
|
case 17:
|
|
|
response = _context18.sent;
|
|
|
_new_vnc_url = response.data.link_url;
|
|
|
taskData['shixun']['windows_vnc'] = _new_vnc_url + '×tamp=' + new Date().getTime();
|
|
|
taskData.linux_vnc++;
|
|
|
// mediator.publish('reset-linux-windos-vnc')
|
|
|
_context18.next = 28;
|
|
|
break;
|
|
|
case 23:
|
|
|
_context18.next = 25;
|
|
|
return (0,service/* resetVnc */.rt)({
|
|
|
myshixunId: taskData === null || taskData === void 0 ? void 0 : (_taskData$myshixun4 = taskData.myshixun) === null || _taskData$myshixun4 === void 0 ? void 0 : _taskData$myshixun4.identifier,
|
|
|
game_id: taskData === null || taskData === void 0 ? void 0 : taskData.game.id
|
|
|
});
|
|
|
case 25:
|
|
|
response = _context18.sent;
|
|
|
_new_vnc_url2 = response.data.link_url;
|
|
|
taskData['vnc_url'] = _new_vnc_url2 + '×tamp=' + new Date().getTime();
|
|
|
case 28:
|
|
|
mediator/* default.publish */.Z.publish('vnc-reseting-done', response);
|
|
|
if (taskData !== null && taskData !== void 0 && (_taskData$challenge3 = taskData.challenge) !== null && _taskData$challenge3 !== void 0 && _taskData$challenge3.thiry_party) mediator/* default.publish */.Z.publish('reset-linux-windos-vnc');
|
|
|
dispatch({
|
|
|
type: constant/* UPDATE_TASK_DATA */.z2,
|
|
|
payload: {
|
|
|
taskData: taskData,
|
|
|
resetVncLoading: false
|
|
|
}
|
|
|
});
|
|
|
_context18.next = 36;
|
|
|
break;
|
|
|
case 33:
|
|
|
_context18.prev = 33;
|
|
|
_context18.t0 = _context18["catch"](0);
|
|
|
console.log(_context18.t0);
|
|
|
case 36:
|
|
|
case "end":
|
|
|
return _context18.stop();
|
|
|
}
|
|
|
}, _callee18, null, [[0, 33]]);
|
|
|
}));
|
|
|
return _onResetVnc.apply(this, arguments);
|
|
|
}
|
|
|
function onGetUnity3dMessage(_x9) {
|
|
|
return _onGetUnity3dMessage.apply(this, arguments);
|
|
|
} //代码评测后回调
|
|
|
function _onGetUnity3dMessage() {
|
|
|
_onGetUnity3dMessage = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee19(mes) {
|
|
|
var GameState, Data, challenge, response, status, data;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee19$(_context19) {
|
|
|
while (1) switch (_context19.prev = _context19.next) {
|
|
|
case 0:
|
|
|
GameState = mes.GameState, Data = mes.Data, challenge = mes.challenge;
|
|
|
if (!(challenge === 'info')) {
|
|
|
_context19.next = 5;
|
|
|
break;
|
|
|
}
|
|
|
mediator/* default.publish */.Z.publish('evaluate-unity3d-result', {
|
|
|
state: '3d_callback',
|
|
|
data: {
|
|
|
challenge_info: objectSpread2_default()({}, taskData.challenge)
|
|
|
}
|
|
|
});
|
|
|
//taskData.challenge
|
|
|
_context19.next = 15;
|
|
|
break;
|
|
|
case 5:
|
|
|
if (!(GameState === 'Success')) {
|
|
|
_context19.next = 15;
|
|
|
break;
|
|
|
}
|
|
|
if (!(unity_3d_result || !with_code_file)) {
|
|
|
_context19.next = 14;
|
|
|
break;
|
|
|
}
|
|
|
_context19.next = 9;
|
|
|
return (0,service/* setUnity3dStatus */.JW)(taskId, base64.Base64.encode(taskId + new Date().getTime()), Data);
|
|
|
case 9:
|
|
|
response = _context19.sent;
|
|
|
status = response.status, data = response.data;
|
|
|
if (status == 0) {
|
|
|
if (game.status !== 2) {
|
|
|
taskData['game'].status = 2;
|
|
|
taskData['user']['grade'] += data.gold;
|
|
|
mediator/* default.publish */.Z.publish('update-cost-time');
|
|
|
}
|
|
|
//* 新需求,无代码评测通关需要发送用户和通关时间信息
|
|
|
mediator/* default.publish */.Z.publish('evaluate-unity3d-result', {
|
|
|
state: 'userAndtime',
|
|
|
data: {
|
|
|
user: user,
|
|
|
open_time: data.open_time,
|
|
|
end_time: data.end_time
|
|
|
}
|
|
|
});
|
|
|
dispatch({
|
|
|
type: constant/* UPDATE_TASK_DATA */.z2,
|
|
|
payload: {
|
|
|
taskData: taskData,
|
|
|
evalData: {
|
|
|
gold: data.gold,
|
|
|
experience: data.experience,
|
|
|
next_game: data.next_game
|
|
|
// had_done: data.had_done,
|
|
|
},
|
|
|
|
|
|
evaluateLoading: false,
|
|
|
showEvalResult: true
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
_context19.next = 15;
|
|
|
break;
|
|
|
case 14:
|
|
|
dispatch({
|
|
|
type: constant/* SHOW_EVALUATE_RESULT */.m5
|
|
|
});
|
|
|
case 15:
|
|
|
case "end":
|
|
|
return _context19.stop();
|
|
|
}
|
|
|
}, _callee19);
|
|
|
}));
|
|
|
return _onGetUnity3dMessage.apply(this, arguments);
|
|
|
}
|
|
|
function onEvaluateCallback() {}
|
|
|
function onAddVncTime() {
|
|
|
return _onAddVncTime.apply(this, arguments);
|
|
|
}
|
|
|
function _onAddVncTime() {
|
|
|
_onAddVncTime = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee20() {
|
|
|
var _res2, _res2$data, _res4;
|
|
|
var res, _taskData$myshixun5, _taskData$game, _taskData$myshixun6, _taskData$game2, _taskData$myshixun7, _taskData$game3, _res3;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee20$(_context20) {
|
|
|
while (1) switch (_context20.prev = _context20.next) {
|
|
|
case 0:
|
|
|
if (!(taskData !== null && taskData !== void 0 && taskData.windows_vnc || taskData !== null && taskData !== void 0 && taskData.virtual_machine)) {
|
|
|
_context20.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
_context20.next = 3;
|
|
|
return (0,service/* addWindowsVncTime */.ky)(taskData === null || taskData === void 0 ? void 0 : (_taskData$myshixun5 = taskData.myshixun) === null || _taskData$myshixun5 === void 0 ? void 0 : _taskData$myshixun5.identifier, taskData === null || taskData === void 0 ? void 0 : (_taskData$game = taskData.game) === null || _taskData$game === void 0 ? void 0 : _taskData$game.id);
|
|
|
case 3:
|
|
|
res = _context20.sent;
|
|
|
_context20.next = 15;
|
|
|
break;
|
|
|
case 6:
|
|
|
if (!(taskData !== null && taskData !== void 0 && taskData.linux_vnc || (shixun === null || shixun === void 0 ? void 0 : shixun.webssh) === 3)) {
|
|
|
_context20.next = 12;
|
|
|
break;
|
|
|
}
|
|
|
_context20.next = 9;
|
|
|
return (0,service/* addLinuxVncTime */.s9)(taskData === null || taskData === void 0 ? void 0 : (_taskData$myshixun6 = taskData.myshixun) === null || _taskData$myshixun6 === void 0 ? void 0 : _taskData$myshixun6.identifier, taskData === null || taskData === void 0 ? void 0 : (_taskData$game2 = taskData.game) === null || _taskData$game2 === void 0 ? void 0 : _taskData$game2.id);
|
|
|
case 9:
|
|
|
res = _context20.sent;
|
|
|
_context20.next = 15;
|
|
|
break;
|
|
|
case 12:
|
|
|
_context20.next = 14;
|
|
|
return (0,service/* addVncTime */.Kl)(taskData === null || taskData === void 0 ? void 0 : (_taskData$myshixun7 = taskData.myshixun) === null || _taskData$myshixun7 === void 0 ? void 0 : _taskData$myshixun7.identifier, taskData === null || taskData === void 0 ? void 0 : (_taskData$game3 = taskData.game) === null || _taskData$game3 === void 0 ? void 0 : _taskData$game3.id);
|
|
|
case 14:
|
|
|
res = _context20.sent;
|
|
|
case 15:
|
|
|
if ((_res2 = res) !== null && _res2 !== void 0 && (_res2$data = _res2.data) !== null && _res2$data !== void 0 && _res2$data.remaining_time) {
|
|
|
mediator/* default.publish */.Z.publish('update-windows-time', (_res3 = res) === null || _res3 === void 0 ? void 0 : _res3.data);
|
|
|
}
|
|
|
return _context20.abrupt("return", (_res4 = res) === null || _res4 === void 0 ? void 0 : _res4.data);
|
|
|
case 17:
|
|
|
case "end":
|
|
|
return _context20.stop();
|
|
|
}
|
|
|
}, _callee20);
|
|
|
}));
|
|
|
return _onAddVncTime.apply(this, arguments);
|
|
|
}
|
|
|
var leftPanelWidth = typeof moveX === 'number' && moveX !== 0.01 ? "".concat(moveX, "px") : '40%';
|
|
|
var rightPanelWidth = "calc(100% - 4px - ".concat(leftPanelWidth, ")");
|
|
|
var leftPanelOption = (_leftPanelOption = {
|
|
|
game: game,
|
|
|
taskId: taskId,
|
|
|
user_praise: user_praise,
|
|
|
praise_count: praise_count,
|
|
|
st: st,
|
|
|
challenge: challenge,
|
|
|
rank_name: taskData.rank_name,
|
|
|
shixun: shixun,
|
|
|
is_teacher: is_teacher,
|
|
|
has_answer: has_answer,
|
|
|
unity_3d_routes: unity_3d_routes,
|
|
|
with_code_file: with_code_file,
|
|
|
onEvaluateCallback: onEvaluateCallback,
|
|
|
onGetUnity3dMessage: onGetUnity3dMessage
|
|
|
}, defineProperty_default()(_leftPanelOption, "taskId", taskId), defineProperty_default()(_leftPanelOption, "myshixun", myshixun), defineProperty_default()(_leftPanelOption, "user", user), defineProperty_default()(_leftPanelOption, "discusses_count", discusses_count), defineProperty_default()(_leftPanelOption, "onPlusOrCancelPraise", onPlusOrCancelPraise), defineProperty_default()(_leftPanelOption, "minuxUserGrade", minuxUserGrade), defineProperty_default()(_leftPanelOption, "taskData", taskData), defineProperty_default()(_leftPanelOption, "chatgpt", chatgpt), defineProperty_default()(_leftPanelOption, "to_user_id", to_user_id), _leftPanelOption);
|
|
|
var noticeOption = {
|
|
|
showNotice: showNotice || (tpm_cases_modified || isUpdateScript) && myshixun.system_tip === false,
|
|
|
tpm_cases_modified: tpm_cases_modified,
|
|
|
tpm_modified: tpm_modified,
|
|
|
tpm_script_modified: tpm_script_modified,
|
|
|
st: st,
|
|
|
taskId: taskId,
|
|
|
myshixunId: (myshixun || {}).id,
|
|
|
onNextCallback: onNextCallback,
|
|
|
onUpdateCallback: onUpdateCallback,
|
|
|
onUpdateFailure: onUpdateFailure
|
|
|
};
|
|
|
var evaluateResultOption = objectSpread2_default()(objectSpread2_default()({}, evalData), {}, {
|
|
|
isPictureView: isPictureView,
|
|
|
history: history,
|
|
|
webDisplayUrl: webDisplayUrl,
|
|
|
onShowPictureView: onShowPictureView,
|
|
|
star: game && game.star,
|
|
|
onStarChange: onSaveTaskStar,
|
|
|
onCloseResult: onCloseResult
|
|
|
});
|
|
|
var repositoryOption = {
|
|
|
lastedGetTaskInfoTime: lastedGetTaskInfoTime,
|
|
|
isEditPath: isEditPath,
|
|
|
taskData: taskData,
|
|
|
codeRepData: codeRepData,
|
|
|
moveY: moveY,
|
|
|
evaluateMessage: evaluateMessage,
|
|
|
evaluateLoading: evaluateLoading,
|
|
|
isNotice: isNotice,
|
|
|
isHtml: isHtml,
|
|
|
onChangePath: onChangePath,
|
|
|
onResizeSetContainer: onResizeSetContainer,
|
|
|
onEditRepCode: onEditRepCode,
|
|
|
onUpdateCode: onUpdateCode,
|
|
|
onResizeYStart: onResizeYStart,
|
|
|
onShowDir: onShowDir,
|
|
|
onResetCode: onResetCode,
|
|
|
onResetGitCode: onResetGitCode,
|
|
|
onResizeCodeArea: onResizeCodeArea,
|
|
|
onResetPassedCode: onResetPassedCode,
|
|
|
onFinishDisplayHtml: onFinishDisplayHtml,
|
|
|
onShowNotice: onShowNotice
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [showLoading && /*#__PURE__*/(0,jsx_runtime.jsx)(Spinner/* default */.Z, {
|
|
|
message: "\u6B63\u5728\u4FDD\u5B58\u4EE3\u7801...",
|
|
|
className: "tpi-spin",
|
|
|
spinning: showLoading
|
|
|
}), !loading ? /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "task-wrapper",
|
|
|
children: [showDragMask && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "draging-mask"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(tasks_header, {
|
|
|
difficulty: challenge === null || challenge === void 0 ? void 0 : challenge.difficulty,
|
|
|
mirror_description: mirror_description,
|
|
|
history: history,
|
|
|
git_url: git_url,
|
|
|
shixun: shixun,
|
|
|
taskData: taskData,
|
|
|
lastedGetTaskInfoTime: lastedGetTaskInfoTime,
|
|
|
onAddVncTime: onAddVncTime,
|
|
|
taskId: taskId,
|
|
|
onBack: onBack,
|
|
|
isNotice: isNotice,
|
|
|
resetVncLoading: resetVncLoading,
|
|
|
onResetVnc: onResetVnc,
|
|
|
onResetGitCode: onResetGitCode,
|
|
|
vnc_url: vnc_url,
|
|
|
linux_vnc: taskData === null || taskData === void 0 ? void 0 : taskData.linux_vnc,
|
|
|
window_vnc_url: (taskData === null || taskData === void 0 ? void 0 : taskData.windows_vnc) || (taskData === null || taskData === void 0 ? void 0 : taskData.virtual_machine),
|
|
|
onShowNotice: onShowNotice,
|
|
|
game: game,
|
|
|
user: user,
|
|
|
st: st,
|
|
|
onUpdateCode: onUpdateCode,
|
|
|
onUpdateCostTime: onUpdateCostTime,
|
|
|
unity_3d_routes: unity_3d_routes && !with_code_file || (challenge === null || challenge === void 0 ? void 0 : challenge.thiry_party)
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "tasks-body",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("section", {
|
|
|
id: "task-left-panel",
|
|
|
className: "left-panel ".concat(taskData !== null && taskData !== void 0 && taskData.hideLeftPanel ? "hide" : "", " ").concat(unity_3d_routes && with_code_file ? 'has-unity-3d' : ''),
|
|
|
style: {
|
|
|
width: leftPanelWidth,
|
|
|
display: moveX === 0.01 ? 'none' : ''
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(left_panel, objectSpread2_default()({}, leftPanelOption))
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("section", {
|
|
|
className: "resize-x-bar ".concat(taskData !== null && taskData !== void 0 && taskData.hideLeftPanel ? "hide" : "", " ").concat(noDragging ? 'has-unity-3d' : ''),
|
|
|
onClick: function onClick() {
|
|
|
noDragging && onResizeStart();
|
|
|
},
|
|
|
onMouseDown: function onMouseDown() {
|
|
|
!noDragging && onResizeStart();
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(ResizeIcon, {
|
|
|
noDragging: noDragging,
|
|
|
vnc_url: vnc_url,
|
|
|
moveX: moveX
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("section", {
|
|
|
id: "task-right-panel",
|
|
|
className: "right-panel ".concat(vnc_url || taskData !== null && taskData !== void 0 && taskData.windows_vnc || taskData !== null && taskData !== void 0 && taskData.linux_vnc || taskData !== null && taskData !== void 0 && taskData.virtual_machine ? 'vnc' : ''),
|
|
|
style: {
|
|
|
width: rightPanelWidth,
|
|
|
minWidth: '500px'
|
|
|
},
|
|
|
children: (challenge === null || challenge === void 0 ? void 0 : challenge.show_type) === 7 ? /*#__PURE__*/(0,jsx_runtime.jsx)(Demo["default"], {
|
|
|
taskId: taskId,
|
|
|
taskData: taskData,
|
|
|
onEditRepCode: onEditRepCode
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)(react.Fragment, {
|
|
|
children:
|
|
|
/*#__PURE__*/
|
|
|
// (unity_3d_routes && !with_code_file) ||
|
|
|
// challenge?.thiry_party ? (
|
|
|
// <div className="unity-3d-container">
|
|
|
// <Unity3dPanel
|
|
|
// taskData={taskData}
|
|
|
// unity_3d_routes={unity_3d_routes}
|
|
|
// onGetUnity3dMessage={onGetUnity3dMessage}
|
|
|
// />
|
|
|
// <Unity3dNav
|
|
|
// next_game={next_game}
|
|
|
// prev_game={prev_game}
|
|
|
// shixun={shixun}
|
|
|
// game={game}
|
|
|
// />
|
|
|
// </div>
|
|
|
// ) :
|
|
|
(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [st !== 1 && /*#__PURE__*/(0,jsx_runtime.jsx)(code_repository, objectSpread2_default()(objectSpread2_default()(objectSpread2_default()({}, props), repositoryOption), {}, {
|
|
|
_dispatch: dispatch,
|
|
|
taskData: taskData,
|
|
|
unity_3d_routes: unity_3d_routes,
|
|
|
onGetUnity3dMessage: onGetUnity3dMessage,
|
|
|
onUpdateCode: onUpdateCode,
|
|
|
evaluateMessage: evaluateMessage,
|
|
|
language: language,
|
|
|
evaluateLoading: evaluateLoading,
|
|
|
with_code_file: with_code_file,
|
|
|
onEval: onEvalCode
|
|
|
})), vnc_url || taskData !== null && taskData !== void 0 && taskData.windows_vnc || taskData !== null && taskData !== void 0 && taskData.virtual_machine || taskData !== null && taskData !== void 0 && taskData.linux_vnc ? null : st === 1 ?
|
|
|
/*#__PURE__*/
|
|
|
// // /> // // onEval={onEvalCode} // evaluateLoading={evaluateLoading} // language={language} // evaluateMessage={evaluateMessage} // taskData={taskData} // // <VncView
|
|
|
(0,jsx_runtime.jsx)(choose_repository, objectSpread2_default()({
|
|
|
_dispatch: dispatch,
|
|
|
onEval: onEvalChoose
|
|
|
}, repositoryOption)) : null]
|
|
|
})
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(components_modal/* default */.Z, {
|
|
|
children: [showEvalResult ? /*#__PURE__*/(0,jsx_runtime.jsx)(evaluate_result, objectSpread2_default()({}, evaluateResultOption)) : null, /*#__PURE__*/(0,jsx_runtime.jsx)(drawer/* default */.Z, {
|
|
|
className: "setting-drawer",
|
|
|
title: null,
|
|
|
placement: "right",
|
|
|
width: 400,
|
|
|
closable: false,
|
|
|
open: showDocuments,
|
|
|
onClose: onHideDocuments,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(spin/* default */.Z, {
|
|
|
spinning: loadingContent,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(tasks_DirectoryTree, {
|
|
|
className: "dir-tree",
|
|
|
selectedKeys: ["".concat(currentPath)],
|
|
|
treeData: repos,
|
|
|
onSelect: (0,lodash.throttle)(onSelectRepo, 2000),
|
|
|
loadData: onLoadTreeData
|
|
|
})
|
|
|
})
|
|
|
}), showPictureView ? /*#__PURE__*/(0,jsx_runtime.jsx)(picture_panel, {
|
|
|
taskId: taskId,
|
|
|
onHidePictureView: onHidePictureView
|
|
|
}) : null, /*#__PURE__*/(0,jsx_runtime.jsx)(tasks_notice, objectSpread2_default()({}, noticeOption))]
|
|
|
})]
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)(Spinner/* default */.Z, {
|
|
|
message: "\u52AA\u529B\u8BF7\u6C42\u6570\u636E\u4E2D..",
|
|
|
className: "tpi-spin"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(Unlock/* default */.Z, {
|
|
|
successCb: onEvalCode
|
|
|
})]
|
|
|
});
|
|
|
});
|
|
|
function UnLockTestTip(_ref6) {
|
|
|
var is_teacher = _ref6.is_teacher,
|
|
|
score = _ref6.score;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(react.Fragment, {
|
|
|
children: is_teacher ? /*#__PURE__*/(0,jsx_runtime.jsxs)(react.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u5DF2\u7ECF\u8FC7\u804C\u4E1A\u8BA4\u8BC1\u7684\u6559\u5E08\u53EF\u4EE5\u514D\u91D1\u5E01\u67E5\u770B\u9690\u85CF\u6D4B\u8BD5\u96C6\u3002"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u89E3\u9501\u672C\u5173\u6240\u6709\u6D4B\u8BD5\u96C6\u9700\u8981\u6263\u9664".concat(score * 2, "\u91D1\u5E01\uFF0C\u786E\u5B9A\u8981\u89E3\u9501\u5417\uFF1F")
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
href: "/account/certification",
|
|
|
"class": "to-certification-link",
|
|
|
target: "_blank",
|
|
|
children: "\u7ACB\u5373\u8BA4\u8BC1"
|
|
|
})]
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u89E3\u9501\u672C\u5173\u6240\u6709\u6D4B\u8BD5\u96C6\u9700\u8981\u6263\u9664".concat(score * 2, "\u91D1\u5E01\uFF0C\u786E\u5B9A\u8981\u89E3\u9501\u5417\uFF1F")
|
|
|
})
|
|
|
});
|
|
|
}
|
|
|
function ResizeIcon(_ref7) {
|
|
|
var noDragging = _ref7.noDragging,
|
|
|
moveX = _ref7.moveX,
|
|
|
vnc_url = _ref7.vnc_url;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(react.Fragment, {
|
|
|
children: noDragging ? /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
className: "trapezoid ".concat(moveX === 0.01 ? 'enlarge' : ''),
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: moveX === 0.01 ? resize_enlarge : resize_small,
|
|
|
alt: "resize-icon",
|
|
|
width: 20
|
|
|
})
|
|
|
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
className: "btn-resize",
|
|
|
draggable: false,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("svg", {
|
|
|
width: "16",
|
|
|
height: "13",
|
|
|
viewBox: "0 0 16 13",
|
|
|
draggable: false,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("path", {
|
|
|
draggable: false,
|
|
|
d: "M12.245 7.53H5.647v1.882h6.598v2.823L16 8.471l-3.755-3.765V7.53zM10.353 4.706H3.755v2.823L0 3.765 3.755 0v2.824h6.598v1.882z"
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
});
|
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 48632:
|
|
|
/*!*****************************!*\
|
|
|
!*** ./src/service/task.ts ***!
|
|
|
\*****************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ "Jd": function() { return /* binding */ rebootEsc; },
|
|
|
/* harmony export */ "a$": function() { return /* binding */ getDataSets; },
|
|
|
/* harmony export */ "dU": function() { return /* binding */ getJupyterData; },
|
|
|
/* harmony export */ "fi": function() { return /* binding */ syncCode; },
|
|
|
/* harmony export */ "m_": function() { return /* binding */ resetWithTPI; },
|
|
|
/* harmony export */ "rB": function() { return /* binding */ activeWithTPI; },
|
|
|
/* harmony export */ "rV": function() { return /* binding */ getInfoWithTPI; },
|
|
|
/* harmony export */ "x4": function() { return /* binding */ getTimeInfoWithTPI; },
|
|
|
/* harmony export */ "zE": function() { return /* binding */ saveWithTPI; }
|
|
|
/* harmony export */ });
|
|
|
/* unused harmony export getLatexFileTree */
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_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_SJ5m_develop_node_modules_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/regeneratorRuntime.js */ 17061);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/asyncToGenerator.js */ 17156);
|
|
|
/* harmony import */ var _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2__);
|
|
|
/* harmony import */ var _utils_fetch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/utils/fetch */ 84519);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function saveWithTPI(_x) {
|
|
|
return _saveWithTPI.apply(this, arguments);
|
|
|
}
|
|
|
function _saveWithTPI() {
|
|
|
_saveWithTPI = _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_1___default()().mark(function _callee(params) {
|
|
|
return _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_1___default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
return _context.abrupt("return", (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .ZP)("/api/jupyters/save_with_tpi.json", {
|
|
|
method: 'Get',
|
|
|
params: params
|
|
|
}));
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _saveWithTPI.apply(this, arguments);
|
|
|
}
|
|
|
function getJupyterData(_x2) {
|
|
|
return _getJupyterData.apply(this, arguments);
|
|
|
}
|
|
|
function _getJupyterData() {
|
|
|
_getJupyterData = _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_1___default()().mark(function _callee2(params) {
|
|
|
return _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_1___default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
return _context2.abrupt("return", (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .ZP)("/api/tasks/".concat(params.identifier, "/jupyter.json"), {
|
|
|
method: 'Get',
|
|
|
params: params
|
|
|
}));
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return _getJupyterData.apply(this, arguments);
|
|
|
}
|
|
|
function getInfoWithTPI(_x3) {
|
|
|
return _getInfoWithTPI.apply(this, arguments);
|
|
|
}
|
|
|
function _getInfoWithTPI() {
|
|
|
_getInfoWithTPI = _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_1___default()().mark(function _callee3(params) {
|
|
|
return _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_1___default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
return _context3.abrupt("return", (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .ZP)("/api/myshixuns/".concat(params.identifier, "/start.json"), {
|
|
|
method: 'Get',
|
|
|
params: params
|
|
|
}));
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return _getInfoWithTPI.apply(this, arguments);
|
|
|
}
|
|
|
function getTimeInfoWithTPI(_x4) {
|
|
|
return _getTimeInfoWithTPI.apply(this, arguments);
|
|
|
}
|
|
|
function _getTimeInfoWithTPI() {
|
|
|
_getTimeInfoWithTPI = _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_1___default()().mark(function _callee4(params) {
|
|
|
return _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_1___default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
return _context4.abrupt("return", (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .ZP)("/api/jupyters/timeinfo_with_tpi.json", {
|
|
|
method: 'Get',
|
|
|
params: params
|
|
|
}));
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
}));
|
|
|
return _getTimeInfoWithTPI.apply(this, arguments);
|
|
|
}
|
|
|
function resetWithTPI(_x5) {
|
|
|
return _resetWithTPI.apply(this, arguments);
|
|
|
}
|
|
|
function _resetWithTPI() {
|
|
|
_resetWithTPI = _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_1___default()().mark(function _callee5(params) {
|
|
|
return _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_1___default()().wrap(function _callee5$(_context5) {
|
|
|
while (1) switch (_context5.prev = _context5.next) {
|
|
|
case 0:
|
|
|
return _context5.abrupt("return", (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .ZP)("/api/myshixuns/".concat(params.identifier, "/reset_pod.json"), {
|
|
|
method: 'Get'
|
|
|
// params
|
|
|
}));
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context5.stop();
|
|
|
}
|
|
|
}, _callee5);
|
|
|
}));
|
|
|
return _resetWithTPI.apply(this, arguments);
|
|
|
}
|
|
|
function activeWithTPI(_x6) {
|
|
|
return _activeWithTPI.apply(this, arguments);
|
|
|
}
|
|
|
function _activeWithTPI() {
|
|
|
_activeWithTPI = _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_1___default()().mark(function _callee6(params) {
|
|
|
return _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_1___default()().wrap(function _callee6$(_context6) {
|
|
|
while (1) switch (_context6.prev = _context6.next) {
|
|
|
case 0:
|
|
|
return _context6.abrupt("return", (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .ZP)("/api/jupyters/active_with_tpi.json", {
|
|
|
method: 'Get',
|
|
|
params: params
|
|
|
}));
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context6.stop();
|
|
|
}
|
|
|
}, _callee6);
|
|
|
}));
|
|
|
return _activeWithTPI.apply(this, arguments);
|
|
|
}
|
|
|
function syncCode(_x7) {
|
|
|
return _syncCode.apply(this, arguments);
|
|
|
}
|
|
|
function _syncCode() {
|
|
|
_syncCode = _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_1___default()().mark(function _callee7(params) {
|
|
|
var p;
|
|
|
return _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_1___default()().wrap(function _callee7$(_context7) {
|
|
|
while (1) switch (_context7.prev = _context7.next) {
|
|
|
case 0:
|
|
|
p = _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0___default()({}, params);
|
|
|
delete p.identifier;
|
|
|
return _context7.abrupt("return", (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .ZP)("/api/myshixuns/".concat(params.identifier, "/sync_code.json"), {
|
|
|
method: 'Post',
|
|
|
body: p
|
|
|
}));
|
|
|
case 3:
|
|
|
case "end":
|
|
|
return _context7.stop();
|
|
|
}
|
|
|
}, _callee7);
|
|
|
}));
|
|
|
return _syncCode.apply(this, arguments);
|
|
|
}
|
|
|
function getDataSets(_x8) {
|
|
|
return _getDataSets.apply(this, arguments);
|
|
|
}
|
|
|
|
|
|
// 重启window 云主机
|
|
|
function _getDataSets() {
|
|
|
_getDataSets = _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_1___default()().mark(function _callee8(params) {
|
|
|
return _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_1___default()().wrap(function _callee8$(_context8) {
|
|
|
while (1) switch (_context8.prev = _context8.next) {
|
|
|
case 0:
|
|
|
return _context8.abrupt("return", (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .ZP)("/api/shixuns/".concat(params.identifier, "/get_data_sets.json"), {
|
|
|
method: 'Get',
|
|
|
params: params
|
|
|
}));
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context8.stop();
|
|
|
}
|
|
|
}, _callee8);
|
|
|
}));
|
|
|
return _getDataSets.apply(this, arguments);
|
|
|
}
|
|
|
function rebootEsc(_x9) {
|
|
|
return _rebootEsc.apply(this, arguments);
|
|
|
}
|
|
|
function _rebootEsc() {
|
|
|
_rebootEsc = _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_2___default()( /*#__PURE__*/_root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_1___default()().mark(function _callee9(params) {
|
|
|
return _root_workspace_ppte5yg23_SJ5m_develop_node_modules_babel_runtime_helpers_regeneratorRuntime_js__WEBPACK_IMPORTED_MODULE_1___default()().wrap(function _callee9$(_context9) {
|
|
|
while (1) switch (_context9.prev = _context9.next) {
|
|
|
case 0:
|
|
|
return _context9.abrupt("return", (0,_utils_fetch__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .ZP)("/api/tasks/".concat(params.identifier, "/reboot_esc.json"), {
|
|
|
method: 'post'
|
|
|
}));
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context9.stop();
|
|
|
}
|
|
|
}, _callee9);
|
|
|
}));
|
|
|
return _rebootEsc.apply(this, arguments);
|
|
|
}
|
|
|
function getLatexFileTree(_x10) {
|
|
|
return _getLatexFileTree.apply(this, arguments);
|
|
|
}
|
|
|
function _getLatexFileTree() {
|
|
|
_getLatexFileTree = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee10(params) {
|
|
|
return _regeneratorRuntime().wrap(function _callee10$(_context10) {
|
|
|
while (1) switch (_context10.prev = _context10.next) {
|
|
|
case 0:
|
|
|
return _context10.abrupt("return", Fetch("/api/tasks/".concat(params.taskId, "/get_latex_file_tree.json"), {
|
|
|
method: 'Get',
|
|
|
params: params
|
|
|
}));
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context10.stop();
|
|
|
}
|
|
|
}, _callee10);
|
|
|
}));
|
|
|
return _getLatexFileTree.apply(this, arguments);
|
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 63778:
|
|
|
/*!******************************!*\
|
|
|
!*** ./src/utils/urlTool.ts ***!
|
|
|
\******************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ "G": function() { return /* binding */ fromStore; },
|
|
|
/* harmony export */ "t": function() { return /* binding */ toStore; }
|
|
|
/* harmony export */ });
|
|
|
/* harmony import */ var store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! store */ 58971);
|
|
|
/* harmony import */ var store__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(store__WEBPACK_IMPORTED_MODULE_0__);
|
|
|
var isDev = (/* unused pure expression or super */ null && ("production" === 'development'));
|
|
|
|
|
|
function toStore(key, val) {
|
|
|
var _config = store__WEBPACK_IMPORTED_MODULE_0___default().get('__ec');
|
|
|
if (!_config) _config = {};
|
|
|
_config[key] = val;
|
|
|
store__WEBPACK_IMPORTED_MODULE_0___default().set('__ec', _config);
|
|
|
}
|
|
|
function fromStore(key, defaultVal) {
|
|
|
var _config = store__WEBPACK_IMPORTED_MODULE_0___default().get('__ec');
|
|
|
if (!_config) return defaultVal;
|
|
|
return _config[key] === undefined ? defaultVal : _config[key];
|
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 23024:
|
|
|
/*!*********************************************************************!*\
|
|
|
!*** ./src/pages/tasks/choose-repository/test-cast-list/failer.svg ***!
|
|
|
\*********************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* unused harmony export ReactComponent */
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 67294);
|
|
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
|
var __defProp = Object.defineProperty;
|
|
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
|
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
|
var __defNormalProp = function __defNormalProp(obj, key, value) {
|
|
|
return key in obj ? __defProp(obj, key, {
|
|
|
enumerable: true,
|
|
|
configurable: true,
|
|
|
writable: true,
|
|
|
value: value
|
|
|
}) : obj[key] = value;
|
|
|
};
|
|
|
var __spreadValues = function __spreadValues(a, b) {
|
|
|
for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]);
|
|
|
if (__getOwnPropSymbols) {
|
|
|
var _iterator = _createForOfIteratorHelper(__getOwnPropSymbols(b)),
|
|
|
_step;
|
|
|
try {
|
|
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
|
var prop = _step.value;
|
|
|
if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]);
|
|
|
}
|
|
|
} catch (err) {
|
|
|
_iterator.e(err);
|
|
|
} finally {
|
|
|
_iterator.f();
|
|
|
}
|
|
|
}
|
|
|
return a;
|
|
|
};
|
|
|
|
|
|
var SvgFailer = function SvgFailer(props) {
|
|
|
return /* @__PURE__ */React.createElement("svg", __spreadValues({
|
|
|
width: 36,
|
|
|
height: 36,
|
|
|
xmlns: "http://www.w3.org/2000/svg"
|
|
|
}, props), /* @__PURE__ */React.createElement("title", null, "\u7F16\u7EC4\u5907\u4EFD"), /* @__PURE__ */React.createElement("g", {
|
|
|
fill: "none",
|
|
|
fillRule: "evenodd"
|
|
|
}, /* @__PURE__ */React.createElement("circle", {
|
|
|
fill: "#D55",
|
|
|
cx: 18,
|
|
|
cy: 18,
|
|
|
r: 18
|
|
|
}), /* @__PURE__ */React.createElement("path", {
|
|
|
d: "M18 6a2.818 2.818 0 0 1 2.813 2.994l-.688 11.01a2.129 2.129 0 0 1-4.25 0l-.688-11.01A2.818 2.818 0 0 1 18 6Z",
|
|
|
fill: "#172740"
|
|
|
}), /* @__PURE__ */React.createElement("circle", {
|
|
|
fill: "#172740",
|
|
|
cx: 18,
|
|
|
cy: 26.5,
|
|
|
r: 2.5
|
|
|
})));
|
|
|
};
|
|
|
|
|
|
/* harmony default export */ __webpack_exports__["Z"] = ("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzYiIGhlaWdodD0iMzYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGZpbGw9IiNENTUiIGN4PSIxOCIgY3k9IjE4IiByPSIxOCIvPjxwYXRoIGQ9Ik0xOCA2YTIuODE4IDIuODE4IDAgMCAxIDIuODEzIDIuOTk0bC0uNjg4IDExLjAxYTIuMTI5IDIuMTI5IDAgMCAxLTQuMjUgMGwtLjY4OC0xMS4wMUEyLjgxOCAyLjgxOCAwIDAgMSAxOCA2WiIgZmlsbD0iIzE3Mjc0MCIvPjxjaXJjbGUgZmlsbD0iIzE3Mjc0MCIgY3g9IjE4IiBjeT0iMjYuNSIgcj0iMi41Ii8+PC9nPjwvc3ZnPg==");
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 62888:
|
|
|
/*!*******************************************************************!*\
|
|
|
!*** ./src/pages/tasks/choose-repository/test-cast-list/mark.svg ***!
|
|
|
\*******************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* unused harmony export ReactComponent */
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 67294);
|
|
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
|
var __defProp = Object.defineProperty;
|
|
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
|
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
|
var __defNormalProp = function __defNormalProp(obj, key, value) {
|
|
|
return key in obj ? __defProp(obj, key, {
|
|
|
enumerable: true,
|
|
|
configurable: true,
|
|
|
writable: true,
|
|
|
value: value
|
|
|
}) : obj[key] = value;
|
|
|
};
|
|
|
var __spreadValues = function __spreadValues(a, b) {
|
|
|
for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]);
|
|
|
if (__getOwnPropSymbols) {
|
|
|
var _iterator = _createForOfIteratorHelper(__getOwnPropSymbols(b)),
|
|
|
_step;
|
|
|
try {
|
|
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
|
var prop = _step.value;
|
|
|
if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]);
|
|
|
}
|
|
|
} catch (err) {
|
|
|
_iterator.e(err);
|
|
|
} finally {
|
|
|
_iterator.f();
|
|
|
}
|
|
|
}
|
|
|
return a;
|
|
|
};
|
|
|
|
|
|
var SvgMark = function SvgMark(props) {
|
|
|
return /* @__PURE__ */React.createElement("svg", __spreadValues({
|
|
|
width: 31,
|
|
|
height: 30,
|
|
|
xmlns: "http://www.w3.org/2000/svg"
|
|
|
}, props), /* @__PURE__ */React.createElement("title", null, "\u7F16\u7EC4 7"), /* @__PURE__ */React.createElement("g", {
|
|
|
transform: "translate(2 1)",
|
|
|
fill: "none",
|
|
|
fillRule: "evenodd"
|
|
|
}, /* @__PURE__ */React.createElement("circle", {
|
|
|
stroke: "#D55",
|
|
|
strokeWidth: 2,
|
|
|
cx: 14,
|
|
|
cy: 14,
|
|
|
r: 14
|
|
|
}), /* @__PURE__ */React.createElement("path", {
|
|
|
d: "M14 5a2 2 0 0 1 2 2v8a2 2 0 1 1-4 0V7a2 2 0 0 1 2-2Z",
|
|
|
fill: "#D55"
|
|
|
}), /* @__PURE__ */React.createElement("circle", {
|
|
|
fill: "#D55",
|
|
|
cx: 14,
|
|
|
cy: 21,
|
|
|
r: 2
|
|
|
})));
|
|
|
};
|
|
|
|
|
|
/* harmony default export */ __webpack_exports__["Z"] = ("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzEiIGhlaWdodD0iMzAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMiAxKSIgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIHN0cm9rZT0iI0Q1NSIgc3Ryb2tlLXdpZHRoPSIyIiBjeD0iMTQiIGN5PSIxNCIgcj0iMTQiLz48cGF0aCBkPSJNMTQgNWEyIDIgMCAwIDEgMiAydjhhMiAyIDAgMSAxLTQgMFY3YTIgMiAwIDAgMSAyLTJaIiBmaWxsPSIjRDU1Ii8+PGNpcmNsZSBmaWxsPSIjRDU1IiBjeD0iMTQiIGN5PSIyMSIgcj0iMiIvPjwvZz48L3N2Zz4=");
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 42762:
|
|
|
/*!**********************************************************************!*\
|
|
|
!*** ./src/pages/tasks/choose-repository/test-cast-list/success.svg ***!
|
|
|
\**********************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* unused harmony export ReactComponent */
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 67294);
|
|
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
|
var __defProp = Object.defineProperty;
|
|
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
|
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
|
var __defNormalProp = function __defNormalProp(obj, key, value) {
|
|
|
return key in obj ? __defProp(obj, key, {
|
|
|
enumerable: true,
|
|
|
configurable: true,
|
|
|
writable: true,
|
|
|
value: value
|
|
|
}) : obj[key] = value;
|
|
|
};
|
|
|
var __spreadValues = function __spreadValues(a, b) {
|
|
|
for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]);
|
|
|
if (__getOwnPropSymbols) {
|
|
|
var _iterator = _createForOfIteratorHelper(__getOwnPropSymbols(b)),
|
|
|
_step;
|
|
|
try {
|
|
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
|
var prop = _step.value;
|
|
|
if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]);
|
|
|
}
|
|
|
} catch (err) {
|
|
|
_iterator.e(err);
|
|
|
} finally {
|
|
|
_iterator.f();
|
|
|
}
|
|
|
}
|
|
|
return a;
|
|
|
};
|
|
|
|
|
|
var SvgSuccess = function SvgSuccess(props) {
|
|
|
return /* @__PURE__ */React.createElement("svg", __spreadValues({
|
|
|
width: 36,
|
|
|
height: 36,
|
|
|
xmlns: "http://www.w3.org/2000/svg"
|
|
|
}, props), /* @__PURE__ */React.createElement("title", null, "\u7F16\u7EC4"), /* @__PURE__ */React.createElement("g", {
|
|
|
fill: "none",
|
|
|
fillRule: "evenodd"
|
|
|
}, /* @__PURE__ */React.createElement("circle", {
|
|
|
fill: "#19CB70",
|
|
|
cx: 18,
|
|
|
cy: 18,
|
|
|
r: 18
|
|
|
}), /* @__PURE__ */React.createElement("path", {
|
|
|
stroke: "#172740",
|
|
|
strokeWidth: 4,
|
|
|
strokeLinecap: "round",
|
|
|
strokeLinejoin: "round",
|
|
|
d: "M10 18.85 15.274 24 26 14"
|
|
|
})));
|
|
|
};
|
|
|
|
|
|
/* harmony default export */ __webpack_exports__["Z"] = ("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzYiIGhlaWdodD0iMzYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0ibm9uZSIgZmlsbC1ydWxlPSJldmVub2RkIj48Y2lyY2xlIGZpbGw9IiMxOUNCNzAiIGN4PSIxOCIgY3k9IjE4IiByPSIxOCIvPjxwYXRoIHN0cm9rZT0iIzE3Mjc0MCIgc3Ryb2tlLXdpZHRoPSI0IiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGQ9Ik0xMCAxOC44NSAxNS4yNzQgMjQgMjYgMTQiLz48L2c+PC9zdmc+");
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 12867:
|
|
|
/*!****************************************************!*\
|
|
|
!*** ./src/components/tpi-code-setting/index.less ***!
|
|
|
\****************************************************/
|
|
|
/***/ (function() {
|
|
|
|
|
|
"use strict";
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 81643:
|
|
|
/*!**********************************************************!*\
|
|
|
!*** ./node_modules/antd/es/_util/getRenderPropValue.js ***!
|
|
|
\**********************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ "Z": function() { return /* binding */ getRenderPropValue; }
|
|
|
/* harmony export */ });
|
|
|
var getRenderPropValue = function getRenderPropValue(propValue) {
|
|
|
if (!propValue) {
|
|
|
return null;
|
|
|
}
|
|
|
if (typeof propValue === 'function') {
|
|
|
return propValue();
|
|
|
}
|
|
|
return propValue;
|
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 27049:
|
|
|
/*!***********************************************!*\
|
|
|
!*** ./node_modules/antd/es/divider/index.js ***!
|
|
|
\***********************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ 87462);
|
|
|
/* harmony import */ var _babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime/helpers/esm/defineProperty */ 4942);
|
|
|
/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! classnames */ 94184);
|
|
|
/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_0__);
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ 67294);
|
|
|
/* harmony import */ var _config_provider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../config-provider */ 53124);
|
|
|
|
|
|
|
|
|
var __rest = undefined && undefined.__rest || function (s, e) {
|
|
|
var t = {};
|
|
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
|
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
|
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
|
}
|
|
|
return t;
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Divider = function Divider(props) {
|
|
|
var _classNames;
|
|
|
var _React$useContext = react__WEBPACK_IMPORTED_MODULE_1__.useContext(_config_provider__WEBPACK_IMPORTED_MODULE_2__/* .ConfigContext */ .E_),
|
|
|
getPrefixCls = _React$useContext.getPrefixCls,
|
|
|
direction = _React$useContext.direction;
|
|
|
var customizePrefixCls = props.prefixCls,
|
|
|
_props$type = props.type,
|
|
|
type = _props$type === void 0 ? 'horizontal' : _props$type,
|
|
|
_props$orientation = props.orientation,
|
|
|
orientation = _props$orientation === void 0 ? 'center' : _props$orientation,
|
|
|
orientationMargin = props.orientationMargin,
|
|
|
className = props.className,
|
|
|
children = props.children,
|
|
|
dashed = props.dashed,
|
|
|
plain = props.plain,
|
|
|
restProps = __rest(props, ["prefixCls", "type", "orientation", "orientationMargin", "className", "children", "dashed", "plain"]);
|
|
|
var prefixCls = getPrefixCls('divider', customizePrefixCls);
|
|
|
var orientationPrefix = orientation.length > 0 ? "-".concat(orientation) : orientation;
|
|
|
var hasChildren = !!children;
|
|
|
var hasCustomMarginLeft = orientation === 'left' && orientationMargin != null;
|
|
|
var hasCustomMarginRight = orientation === 'right' && orientationMargin != null;
|
|
|
var classString = classnames__WEBPACK_IMPORTED_MODULE_0___default()(prefixCls, "".concat(prefixCls, "-").concat(type), (_classNames = {}, (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z)(_classNames, "".concat(prefixCls, "-with-text"), hasChildren), (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z)(_classNames, "".concat(prefixCls, "-with-text").concat(orientationPrefix), hasChildren), (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z)(_classNames, "".concat(prefixCls, "-dashed"), !!dashed), (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z)(_classNames, "".concat(prefixCls, "-plain"), !!plain), (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z)(_classNames, "".concat(prefixCls, "-rtl"), direction === 'rtl'), (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z)(_classNames, "".concat(prefixCls, "-no-default-orientation-margin-left"), hasCustomMarginLeft), (0,_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z)(_classNames, "".concat(prefixCls, "-no-default-orientation-margin-right"), hasCustomMarginRight), _classNames), className);
|
|
|
var innerStyle = (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)((0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)({}, hasCustomMarginLeft && {
|
|
|
marginLeft: orientationMargin
|
|
|
}), hasCustomMarginRight && {
|
|
|
marginRight: orientationMargin
|
|
|
});
|
|
|
// Warning children not work in vertical mode
|
|
|
if (false) {}
|
|
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("div", (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)({
|
|
|
className: classString
|
|
|
}, restProps, {
|
|
|
role: "separator"
|
|
|
}), children && type !== 'vertical' && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_1__.createElement("span", {
|
|
|
className: "".concat(prefixCls, "-inner-text"),
|
|
|
style: innerStyle
|
|
|
}, children));
|
|
|
};
|
|
|
/* harmony default export */ __webpack_exports__["Z"] = (Divider);
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 98541:
|
|
|
/*!*****************************************************************!*\
|
|
|
!*** ./node_modules/antd/es/divider/style/index.js + 1 modules ***!
|
|
|
\*****************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/style/default.less
|
|
|
var style_default = __webpack_require__(43146);
|
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/divider/style/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/divider/style/index.js
|
|
|
|
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 65360:
|
|
|
/*!**************************************************************!*\
|
|
|
!*** ./node_modules/antd/es/popconfirm/index.js + 1 modules ***!
|
|
|
\**************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ popconfirm; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js
|
|
|
var esm_extends = __webpack_require__(87462);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 1 modules
|
|
|
var slicedToArray = __webpack_require__(97685);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/node_modules/@ant-design/icons/es/icons/ExclamationCircleFilled.js
|
|
|
var ExclamationCircleFilled = __webpack_require__(29950);
|
|
|
// EXTERNAL MODULE: ./node_modules/classnames/index.js
|
|
|
var classnames = __webpack_require__(94184);
|
|
|
var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
|
|
|
// EXTERNAL MODULE: ./node_modules/rc-util/es/hooks/useMergedState.js
|
|
|
var useMergedState = __webpack_require__(21770);
|
|
|
// EXTERNAL MODULE: ./node_modules/rc-util/es/KeyCode.js
|
|
|
var KeyCode = __webpack_require__(15105);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
|
var react = __webpack_require__(67294);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/config-provider/context.js
|
|
|
var context = __webpack_require__(53124);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/popover/index.js
|
|
|
var popover = __webpack_require__(55241);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/_util/reactNode.js
|
|
|
var reactNode = __webpack_require__(96159);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/button/index.js
|
|
|
var es_button = __webpack_require__(71577);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/button/button.js + 2 modules
|
|
|
var button_button = __webpack_require__(6134);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/_util/ActionButton.js
|
|
|
var ActionButton = __webpack_require__(86743);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/locale-provider/LocaleReceiver.js + 1 modules
|
|
|
var LocaleReceiver = __webpack_require__(23715);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/locale/default.js + 1 modules
|
|
|
var locale_default = __webpack_require__(80779);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/_util/getRenderPropValue.js
|
|
|
var getRenderPropValue = __webpack_require__(81643);
|
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/popconfirm/PurePanel.js
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Overlay = function Overlay(props) {
|
|
|
var prefixCls = props.prefixCls,
|
|
|
okButtonProps = props.okButtonProps,
|
|
|
cancelButtonProps = props.cancelButtonProps,
|
|
|
title = props.title,
|
|
|
cancelText = props.cancelText,
|
|
|
okText = props.okText,
|
|
|
okType = props.okType,
|
|
|
icon = props.icon,
|
|
|
_props$showCancel = props.showCancel,
|
|
|
showCancel = _props$showCancel === void 0 ? true : _props$showCancel,
|
|
|
close = props.close,
|
|
|
onConfirm = props.onConfirm,
|
|
|
onCancel = props.onCancel;
|
|
|
var _React$useContext = react.useContext(context/* ConfigContext */.E_),
|
|
|
getPrefixCls = _React$useContext.getPrefixCls;
|
|
|
return /*#__PURE__*/react.createElement(LocaleReceiver/* default */.Z, {
|
|
|
componentName: "Popconfirm",
|
|
|
defaultLocale: locale_default/* default.Popconfirm */.Z.Popconfirm
|
|
|
}, function (contextLocale) {
|
|
|
return /*#__PURE__*/react.createElement("div", {
|
|
|
className: "".concat(prefixCls, "-inner-content")
|
|
|
}, /*#__PURE__*/react.createElement("div", {
|
|
|
className: "".concat(prefixCls, "-message")
|
|
|
}, icon && /*#__PURE__*/react.createElement("span", {
|
|
|
className: "".concat(prefixCls, "-message-icon")
|
|
|
}, icon), /*#__PURE__*/react.createElement("div", {
|
|
|
className: "".concat(prefixCls, "-message-title")
|
|
|
}, (0,getRenderPropValue/* getRenderPropValue */.Z)(title))), /*#__PURE__*/react.createElement("div", {
|
|
|
className: "".concat(prefixCls, "-buttons")
|
|
|
}, showCancel && /*#__PURE__*/react.createElement(es_button/* default */.Z, (0,esm_extends/* default */.Z)({
|
|
|
onClick: onCancel,
|
|
|
size: "small"
|
|
|
}, cancelButtonProps), cancelText !== null && cancelText !== void 0 ? cancelText : contextLocale.cancelText), /*#__PURE__*/react.createElement(ActionButton/* default */.Z, {
|
|
|
buttonProps: (0,esm_extends/* default */.Z)((0,esm_extends/* default */.Z)({
|
|
|
size: 'small'
|
|
|
}, (0,button_button/* convertLegacyProps */.n)(okType)), okButtonProps),
|
|
|
actionFn: onConfirm,
|
|
|
close: close,
|
|
|
prefixCls: getPrefixCls('btn'),
|
|
|
quitOnNullishReturnValue: true,
|
|
|
emitEvent: true
|
|
|
}, okText !== null && okText !== void 0 ? okText : contextLocale.okText)));
|
|
|
});
|
|
|
};
|
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/popconfirm/index.js
|
|
|
|
|
|
|
|
|
var _this = undefined;
|
|
|
var __rest = undefined && undefined.__rest || function (s, e) {
|
|
|
var t = {};
|
|
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
|
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
|
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
|
}
|
|
|
return t;
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Popconfirm = /*#__PURE__*/react.forwardRef(function (props, ref) {
|
|
|
var _React$useContext = react.useContext(context/* ConfigContext */.E_),
|
|
|
getPrefixCls = _React$useContext.getPrefixCls;
|
|
|
var _useMergedState = (0,useMergedState/* default */.Z)(false, {
|
|
|
value: props.open !== undefined ? props.open : props.visible,
|
|
|
defaultValue: props.defaultOpen !== undefined ? props.defaultOpen : props.defaultVisible
|
|
|
}),
|
|
|
_useMergedState2 = (0,slicedToArray/* default */.Z)(_useMergedState, 2),
|
|
|
open = _useMergedState2[0],
|
|
|
setOpen = _useMergedState2[1];
|
|
|
// const isDestroyed = useDestroyed();
|
|
|
var settingOpen = function settingOpen(value, e) {
|
|
|
var _a, _b;
|
|
|
setOpen(value, true);
|
|
|
(_a = props.onVisibleChange) === null || _a === void 0 ? void 0 : _a.call(props, value, e);
|
|
|
(_b = props.onOpenChange) === null || _b === void 0 ? void 0 : _b.call(props, value, e);
|
|
|
};
|
|
|
var close = function close(e) {
|
|
|
settingOpen(false, e);
|
|
|
};
|
|
|
var onConfirm = function onConfirm(e) {
|
|
|
var _a;
|
|
|
return (_a = props.onConfirm) === null || _a === void 0 ? void 0 : _a.call(_this, e);
|
|
|
};
|
|
|
var onCancel = function onCancel(e) {
|
|
|
var _a;
|
|
|
settingOpen(false, e);
|
|
|
(_a = props.onCancel) === null || _a === void 0 ? void 0 : _a.call(_this, e);
|
|
|
};
|
|
|
var _onKeyDown = function onKeyDown(e) {
|
|
|
if (e.keyCode === KeyCode/* default.ESC */.Z.ESC && open) {
|
|
|
settingOpen(false, e);
|
|
|
}
|
|
|
};
|
|
|
var onOpenChange = function onOpenChange(value) {
|
|
|
var _props$disabled = props.disabled,
|
|
|
disabled = _props$disabled === void 0 ? false : _props$disabled;
|
|
|
if (disabled) {
|
|
|
return;
|
|
|
}
|
|
|
settingOpen(value);
|
|
|
};
|
|
|
var customizePrefixCls = props.prefixCls,
|
|
|
_props$placement = props.placement,
|
|
|
placement = _props$placement === void 0 ? 'top' : _props$placement,
|
|
|
_props$trigger = props.trigger,
|
|
|
trigger = _props$trigger === void 0 ? 'click' : _props$trigger,
|
|
|
_props$okType = props.okType,
|
|
|
okType = _props$okType === void 0 ? 'primary' : _props$okType,
|
|
|
_props$icon = props.icon,
|
|
|
icon = _props$icon === void 0 ? /*#__PURE__*/react.createElement(ExclamationCircleFilled/* default */.Z, null) : _props$icon,
|
|
|
children = props.children,
|
|
|
overlayClassName = props.overlayClassName,
|
|
|
restProps = __rest(props, ["prefixCls", "placement", "trigger", "okType", "icon", "children", "overlayClassName"]);
|
|
|
var prefixCls = getPrefixCls('popover', customizePrefixCls);
|
|
|
var prefixClsConfirm = getPrefixCls('popconfirm', customizePrefixCls);
|
|
|
var overlayClassNames = classnames_default()(prefixClsConfirm, overlayClassName);
|
|
|
return /*#__PURE__*/react.createElement(popover/* default */.Z, (0,esm_extends/* default */.Z)({}, restProps, {
|
|
|
trigger: trigger,
|
|
|
prefixCls: prefixCls,
|
|
|
placement: placement,
|
|
|
onOpenChange: onOpenChange,
|
|
|
open: open,
|
|
|
ref: ref,
|
|
|
overlayClassName: overlayClassNames,
|
|
|
_overlay: /*#__PURE__*/react.createElement(Overlay, (0,esm_extends/* default */.Z)({
|
|
|
okType: okType,
|
|
|
icon: icon
|
|
|
}, props, {
|
|
|
prefixCls: prefixCls,
|
|
|
close: close,
|
|
|
onConfirm: onConfirm,
|
|
|
onCancel: onCancel
|
|
|
}))
|
|
|
}), (0,reactNode/* cloneElement */.Tm)(children, {
|
|
|
onKeyDown: function onKeyDown(e) {
|
|
|
var _a, _b;
|
|
|
if ( /*#__PURE__*/react.isValidElement(children)) {
|
|
|
(_b = children === null || children === void 0 ? void 0 : (_a = children.props).onKeyDown) === null || _b === void 0 ? void 0 : _b.call(_a, e);
|
|
|
}
|
|
|
_onKeyDown(e);
|
|
|
}
|
|
|
}));
|
|
|
});
|
|
|
/* harmony default export */ var popconfirm = (Popconfirm);
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 33219:
|
|
|
/*!********************************************************************!*\
|
|
|
!*** ./node_modules/antd/es/popconfirm/style/index.js + 1 modules ***!
|
|
|
\********************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/style/default.less
|
|
|
var style_default = __webpack_require__(43146);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/button/style/index.js + 1 modules
|
|
|
var style = __webpack_require__(29913);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/popover/style/index.js + 1 modules
|
|
|
var popover_style = __webpack_require__(63942);
|
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/popconfirm/style/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/popconfirm/style/index.js
|
|
|
|
|
|
// style dependencies
|
|
|
// deps-lint-skip: tooltip, popover
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 55241:
|
|
|
/*!***********************************************!*\
|
|
|
!*** ./node_modules/antd/es/popover/index.js ***!
|
|
|
\***********************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ 87462);
|
|
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ 67294);
|
|
|
/* harmony import */ var _config_provider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../config-provider */ 53124);
|
|
|
/* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../tooltip */ 84908);
|
|
|
/* harmony import */ var _util_getRenderPropValue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_util/getRenderPropValue */ 81643);
|
|
|
/* harmony import */ var _util_motion__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../_util/motion */ 33603);
|
|
|
|
|
|
var __rest = undefined && undefined.__rest || function (s, e) {
|
|
|
var t = {};
|
|
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
|
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
|
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
|
}
|
|
|
return t;
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Overlay = function Overlay(_ref) {
|
|
|
var title = _ref.title,
|
|
|
content = _ref.content,
|
|
|
prefixCls = _ref.prefixCls;
|
|
|
if (!title && !content) {
|
|
|
return null;
|
|
|
}
|
|
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, title && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", {
|
|
|
className: "".concat(prefixCls, "-title")
|
|
|
}, (0,_util_getRenderPropValue__WEBPACK_IMPORTED_MODULE_1__/* .getRenderPropValue */ .Z)(title)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("div", {
|
|
|
className: "".concat(prefixCls, "-inner-content")
|
|
|
}, (0,_util_getRenderPropValue__WEBPACK_IMPORTED_MODULE_1__/* .getRenderPropValue */ .Z)(content)));
|
|
|
};
|
|
|
var Popover = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(function (props, ref) {
|
|
|
var customizePrefixCls = props.prefixCls,
|
|
|
title = props.title,
|
|
|
content = props.content,
|
|
|
_overlay = props._overlay,
|
|
|
_props$placement = props.placement,
|
|
|
placement = _props$placement === void 0 ? 'top' : _props$placement,
|
|
|
_props$trigger = props.trigger,
|
|
|
trigger = _props$trigger === void 0 ? 'hover' : _props$trigger,
|
|
|
_props$mouseEnterDela = props.mouseEnterDelay,
|
|
|
mouseEnterDelay = _props$mouseEnterDela === void 0 ? 0.1 : _props$mouseEnterDela,
|
|
|
_props$mouseLeaveDela = props.mouseLeaveDelay,
|
|
|
mouseLeaveDelay = _props$mouseLeaveDela === void 0 ? 0.1 : _props$mouseLeaveDela,
|
|
|
_props$overlayStyle = props.overlayStyle,
|
|
|
overlayStyle = _props$overlayStyle === void 0 ? {} : _props$overlayStyle,
|
|
|
otherProps = __rest(props, ["prefixCls", "title", "content", "_overlay", "placement", "trigger", "mouseEnterDelay", "mouseLeaveDelay", "overlayStyle"]);
|
|
|
var _React$useContext = react__WEBPACK_IMPORTED_MODULE_0__.useContext(_config_provider__WEBPACK_IMPORTED_MODULE_2__/* .ConfigContext */ .E_),
|
|
|
getPrefixCls = _React$useContext.getPrefixCls;
|
|
|
var prefixCls = getPrefixCls('popover', customizePrefixCls);
|
|
|
var rootPrefixCls = getPrefixCls();
|
|
|
return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(_tooltip__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .Z, (0,_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .Z)({
|
|
|
placement: placement,
|
|
|
trigger: trigger,
|
|
|
mouseEnterDelay: mouseEnterDelay,
|
|
|
mouseLeaveDelay: mouseLeaveDelay,
|
|
|
overlayStyle: overlayStyle
|
|
|
}, otherProps, {
|
|
|
prefixCls: prefixCls,
|
|
|
ref: ref,
|
|
|
overlay: _overlay || /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Overlay, {
|
|
|
prefixCls: prefixCls,
|
|
|
title: title,
|
|
|
content: content
|
|
|
}),
|
|
|
transitionName: (0,_util_motion__WEBPACK_IMPORTED_MODULE_5__/* .getTransitionName */ .mL)(rootPrefixCls, 'zoom-big', otherProps.transitionName)
|
|
|
}));
|
|
|
});
|
|
|
if (false) {}
|
|
|
/* harmony default export */ __webpack_exports__["Z"] = (Popover);
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 63942:
|
|
|
/*!*****************************************************************!*\
|
|
|
!*** ./node_modules/antd/es/popover/style/index.js + 1 modules ***!
|
|
|
\*****************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/style/default.less
|
|
|
var style_default = __webpack_require__(43146);
|
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/popover/style/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/popover/style/index.js
|
|
|
|
|
|
|
|
|
// style dependencies
|
|
|
// deps-lint-skip: tooltip
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 61460:
|
|
|
/*!********************************************************!*\
|
|
|
!*** ./node_modules/antd/es/rate/index.js + 6 modules ***!
|
|
|
\********************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ rate; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js
|
|
|
var esm_extends = __webpack_require__(87462);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js
|
|
|
var objectSpread2 = __webpack_require__(1413);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
|
var react = __webpack_require__(67294);
|
|
|
;// CONCATENATED MODULE: ./node_modules/@ant-design/icons-svg/es/asn/StarFilled.js
|
|
|
// This icon file is generated automatically.
|
|
|
var StarFilled = { "icon": { "tag": "svg", "attrs": { "viewBox": "64 64 896 896", "focusable": "false" }, "children": [{ "tag": "path", "attrs": { "d": "M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3a32.05 32.05 0 00.6 45.3l183.7 179.1-43.4 252.9a31.95 31.95 0 0046.4 33.7L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3z" } }] }, "name": "star", "theme": "filled" };
|
|
|
/* harmony default export */ var asn_StarFilled = (StarFilled);
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/node_modules/@ant-design/icons/es/components/AntdIcon.js + 3 modules
|
|
|
var AntdIcon = __webpack_require__(93771);
|
|
|
;// CONCATENATED MODULE: ./node_modules/antd/node_modules/@ant-design/icons/es/icons/StarFilled.js
|
|
|
|
|
|
// GENERATE BY ./scripts/generate.ts
|
|
|
// DON NOT EDIT IT MANUALLY
|
|
|
|
|
|
|
|
|
|
|
|
var StarFilled_StarFilled = function StarFilled(props, ref) {
|
|
|
return /*#__PURE__*/react.createElement(AntdIcon/* default */.Z, (0,objectSpread2/* default */.Z)((0,objectSpread2/* default */.Z)({}, props), {}, {
|
|
|
ref: ref,
|
|
|
icon: asn_StarFilled
|
|
|
}));
|
|
|
};
|
|
|
StarFilled_StarFilled.displayName = 'StarFilled';
|
|
|
/* harmony default export */ var icons_StarFilled = (/*#__PURE__*/react.forwardRef(StarFilled_StarFilled));
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js
|
|
|
var defineProperty = __webpack_require__(4942);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js
|
|
|
var classCallCheck = __webpack_require__(15671);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/createClass.js
|
|
|
var createClass = __webpack_require__(43144);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js
|
|
|
var inherits = __webpack_require__(60136);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/createSuper.js + 1 modules
|
|
|
var createSuper = __webpack_require__(51630);
|
|
|
// EXTERNAL MODULE: ./node_modules/rc-util/es/Dom/findDOMNode.js
|
|
|
var findDOMNode = __webpack_require__(34203);
|
|
|
// EXTERNAL MODULE: ./node_modules/classnames/index.js
|
|
|
var classnames = __webpack_require__(94184);
|
|
|
var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
|
|
|
// EXTERNAL MODULE: ./node_modules/rc-util/es/KeyCode.js
|
|
|
var KeyCode = __webpack_require__(15105);
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-rate/es/util.js
|
|
|
function getScroll(w) {
|
|
|
var ret = w.pageXOffset;
|
|
|
var method = 'scrollLeft';
|
|
|
|
|
|
if (typeof ret !== 'number') {
|
|
|
var d = w.document; // ie6,7,8 standard mode
|
|
|
|
|
|
ret = d.documentElement[method];
|
|
|
|
|
|
if (typeof ret !== 'number') {
|
|
|
// quirks mode
|
|
|
ret = d.body[method];
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return ret;
|
|
|
}
|
|
|
|
|
|
function getClientPosition(elem) {
|
|
|
var x;
|
|
|
var y;
|
|
|
var doc = elem.ownerDocument;
|
|
|
var body = doc.body;
|
|
|
var docElem = doc && doc.documentElement;
|
|
|
var box = elem.getBoundingClientRect();
|
|
|
x = box.left;
|
|
|
y = box.top;
|
|
|
x -= docElem.clientLeft || body.clientLeft || 0;
|
|
|
y -= docElem.clientTop || body.clientTop || 0;
|
|
|
return {
|
|
|
left: x,
|
|
|
top: y
|
|
|
};
|
|
|
}
|
|
|
|
|
|
function getOffsetLeft(el) {
|
|
|
var pos = getClientPosition(el);
|
|
|
var doc = el.ownerDocument; // Only IE use `parentWindow`
|
|
|
|
|
|
var w = doc.defaultView || doc.parentWindow;
|
|
|
pos.left += getScroll(w);
|
|
|
return pos.left;
|
|
|
}
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-rate/es/Star.js
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Star = /*#__PURE__*/function (_React$Component) {
|
|
|
(0,inherits/* default */.Z)(Star, _React$Component);
|
|
|
|
|
|
var _super = (0,createSuper/* default */.Z)(Star);
|
|
|
|
|
|
function Star() {
|
|
|
var _this;
|
|
|
|
|
|
(0,classCallCheck/* default */.Z)(this, Star);
|
|
|
|
|
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
args[_key] = arguments[_key];
|
|
|
}
|
|
|
|
|
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
|
|
|
|
_this.onHover = function (e) {
|
|
|
var _this$props = _this.props,
|
|
|
onHover = _this$props.onHover,
|
|
|
index = _this$props.index;
|
|
|
onHover(e, index);
|
|
|
};
|
|
|
|
|
|
_this.onClick = function (e) {
|
|
|
var _this$props2 = _this.props,
|
|
|
onClick = _this$props2.onClick,
|
|
|
index = _this$props2.index;
|
|
|
onClick(e, index);
|
|
|
};
|
|
|
|
|
|
_this.onKeyDown = function (e) {
|
|
|
var _this$props3 = _this.props,
|
|
|
onClick = _this$props3.onClick,
|
|
|
index = _this$props3.index;
|
|
|
|
|
|
if (e.keyCode === 13) {
|
|
|
onClick(e, index);
|
|
|
}
|
|
|
};
|
|
|
|
|
|
return _this;
|
|
|
}
|
|
|
|
|
|
(0,createClass/* default */.Z)(Star, [{
|
|
|
key: "getClassName",
|
|
|
value: function getClassName() {
|
|
|
var _this$props4 = this.props,
|
|
|
prefixCls = _this$props4.prefixCls,
|
|
|
index = _this$props4.index,
|
|
|
value = _this$props4.value,
|
|
|
allowHalf = _this$props4.allowHalf,
|
|
|
focused = _this$props4.focused;
|
|
|
var starValue = index + 1;
|
|
|
var className = prefixCls;
|
|
|
|
|
|
if (value === 0 && index === 0 && focused) {
|
|
|
className += " ".concat(prefixCls, "-focused");
|
|
|
} else if (allowHalf && value + 0.5 >= starValue && value < starValue) {
|
|
|
className += " ".concat(prefixCls, "-half ").concat(prefixCls, "-active");
|
|
|
|
|
|
if (focused) {
|
|
|
className += " ".concat(prefixCls, "-focused");
|
|
|
}
|
|
|
} else {
|
|
|
className += starValue <= value ? " ".concat(prefixCls, "-full") : " ".concat(prefixCls, "-zero");
|
|
|
|
|
|
if (starValue === value && focused) {
|
|
|
className += " ".concat(prefixCls, "-focused");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return className;
|
|
|
}
|
|
|
}, {
|
|
|
key: "render",
|
|
|
value: function render() {
|
|
|
var onHover = this.onHover,
|
|
|
onClick = this.onClick,
|
|
|
onKeyDown = this.onKeyDown;
|
|
|
var _this$props5 = this.props,
|
|
|
disabled = _this$props5.disabled,
|
|
|
prefixCls = _this$props5.prefixCls,
|
|
|
character = _this$props5.character,
|
|
|
characterRender = _this$props5.characterRender,
|
|
|
index = _this$props5.index,
|
|
|
count = _this$props5.count,
|
|
|
value = _this$props5.value;
|
|
|
var characterNode = typeof character === 'function' ? character(this.props) : character;
|
|
|
var start = /*#__PURE__*/react.createElement("li", {
|
|
|
className: this.getClassName()
|
|
|
}, /*#__PURE__*/react.createElement("div", {
|
|
|
onClick: disabled ? null : onClick,
|
|
|
onKeyDown: disabled ? null : onKeyDown,
|
|
|
onMouseMove: disabled ? null : onHover,
|
|
|
role: "radio",
|
|
|
"aria-checked": value > index ? 'true' : 'false',
|
|
|
"aria-posinset": index + 1,
|
|
|
"aria-setsize": count,
|
|
|
tabIndex: disabled ? -1 : 0
|
|
|
}, /*#__PURE__*/react.createElement("div", {
|
|
|
className: "".concat(prefixCls, "-first")
|
|
|
}, characterNode), /*#__PURE__*/react.createElement("div", {
|
|
|
className: "".concat(prefixCls, "-second")
|
|
|
}, characterNode)));
|
|
|
|
|
|
if (characterRender) {
|
|
|
start = characterRender(start, this.props);
|
|
|
}
|
|
|
|
|
|
return start;
|
|
|
}
|
|
|
}]);
|
|
|
|
|
|
return Star;
|
|
|
}(react.Component);
|
|
|
|
|
|
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-rate/es/Rate.js
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function noop() {}
|
|
|
|
|
|
var Rate = /*#__PURE__*/function (_React$Component) {
|
|
|
(0,inherits/* default */.Z)(Rate, _React$Component);
|
|
|
|
|
|
var _super = (0,createSuper/* default */.Z)(Rate);
|
|
|
|
|
|
function Rate(props) {
|
|
|
var _this;
|
|
|
|
|
|
(0,classCallCheck/* default */.Z)(this, Rate);
|
|
|
|
|
|
_this = _super.call(this, props);
|
|
|
_this.stars = void 0;
|
|
|
_this.rate = void 0;
|
|
|
|
|
|
_this.onHover = function (event, index) {
|
|
|
var onHoverChange = _this.props.onHoverChange;
|
|
|
|
|
|
var hoverValue = _this.getStarValue(index, event.pageX);
|
|
|
|
|
|
var cleanedValue = _this.state.cleanedValue;
|
|
|
|
|
|
if (hoverValue !== cleanedValue) {
|
|
|
_this.setState({
|
|
|
hoverValue: hoverValue,
|
|
|
cleanedValue: null
|
|
|
});
|
|
|
}
|
|
|
|
|
|
onHoverChange(hoverValue);
|
|
|
};
|
|
|
|
|
|
_this.onMouseLeave = function () {
|
|
|
var onHoverChange = _this.props.onHoverChange;
|
|
|
|
|
|
_this.setState({
|
|
|
hoverValue: undefined,
|
|
|
cleanedValue: null
|
|
|
});
|
|
|
|
|
|
onHoverChange(undefined);
|
|
|
};
|
|
|
|
|
|
_this.onClick = function (event, index) {
|
|
|
var allowClear = _this.props.allowClear;
|
|
|
var value = _this.state.value;
|
|
|
|
|
|
var newValue = _this.getStarValue(index, event.pageX);
|
|
|
|
|
|
var isReset = false;
|
|
|
|
|
|
if (allowClear) {
|
|
|
isReset = newValue === value;
|
|
|
}
|
|
|
|
|
|
_this.onMouseLeave();
|
|
|
|
|
|
_this.changeValue(isReset ? 0 : newValue);
|
|
|
|
|
|
_this.setState({
|
|
|
cleanedValue: isReset ? newValue : null
|
|
|
});
|
|
|
};
|
|
|
|
|
|
_this.onFocus = function () {
|
|
|
var onFocus = _this.props.onFocus;
|
|
|
|
|
|
_this.setState({
|
|
|
focused: true
|
|
|
});
|
|
|
|
|
|
if (onFocus) {
|
|
|
onFocus();
|
|
|
}
|
|
|
};
|
|
|
|
|
|
_this.onBlur = function () {
|
|
|
var onBlur = _this.props.onBlur;
|
|
|
|
|
|
_this.setState({
|
|
|
focused: false
|
|
|
});
|
|
|
|
|
|
if (onBlur) {
|
|
|
onBlur();
|
|
|
}
|
|
|
};
|
|
|
|
|
|
_this.onKeyDown = function (event) {
|
|
|
var keyCode = event.keyCode;
|
|
|
var _this$props = _this.props,
|
|
|
count = _this$props.count,
|
|
|
allowHalf = _this$props.allowHalf,
|
|
|
onKeyDown = _this$props.onKeyDown,
|
|
|
direction = _this$props.direction;
|
|
|
var reverse = direction === 'rtl';
|
|
|
var value = _this.state.value;
|
|
|
|
|
|
if (keyCode === KeyCode/* default.RIGHT */.Z.RIGHT && value < count && !reverse) {
|
|
|
if (allowHalf) {
|
|
|
value += 0.5;
|
|
|
} else {
|
|
|
value += 1;
|
|
|
}
|
|
|
|
|
|
_this.changeValue(value);
|
|
|
|
|
|
event.preventDefault();
|
|
|
} else if (keyCode === KeyCode/* default.LEFT */.Z.LEFT && value > 0 && !reverse) {
|
|
|
if (allowHalf) {
|
|
|
value -= 0.5;
|
|
|
} else {
|
|
|
value -= 1;
|
|
|
}
|
|
|
|
|
|
_this.changeValue(value);
|
|
|
|
|
|
event.preventDefault();
|
|
|
} else if (keyCode === KeyCode/* default.RIGHT */.Z.RIGHT && value > 0 && reverse) {
|
|
|
if (allowHalf) {
|
|
|
value -= 0.5;
|
|
|
} else {
|
|
|
value -= 1;
|
|
|
}
|
|
|
|
|
|
_this.changeValue(value);
|
|
|
|
|
|
event.preventDefault();
|
|
|
} else if (keyCode === KeyCode/* default.LEFT */.Z.LEFT && value < count && reverse) {
|
|
|
if (allowHalf) {
|
|
|
value += 0.5;
|
|
|
} else {
|
|
|
value += 1;
|
|
|
}
|
|
|
|
|
|
_this.changeValue(value);
|
|
|
|
|
|
event.preventDefault();
|
|
|
}
|
|
|
|
|
|
if (onKeyDown) {
|
|
|
onKeyDown(event);
|
|
|
}
|
|
|
};
|
|
|
|
|
|
_this.saveRef = function (index) {
|
|
|
return function (node) {
|
|
|
_this.stars[index] = node;
|
|
|
};
|
|
|
};
|
|
|
|
|
|
_this.saveRate = function (node) {
|
|
|
_this.rate = node;
|
|
|
};
|
|
|
|
|
|
var _value = props.value;
|
|
|
|
|
|
if (_value === undefined) {
|
|
|
_value = props.defaultValue;
|
|
|
}
|
|
|
|
|
|
_this.stars = {};
|
|
|
_this.state = {
|
|
|
value: _value,
|
|
|
focused: false,
|
|
|
cleanedValue: null
|
|
|
};
|
|
|
return _this;
|
|
|
}
|
|
|
|
|
|
(0,createClass/* default */.Z)(Rate, [{
|
|
|
key: "componentDidMount",
|
|
|
value: function componentDidMount() {
|
|
|
var _this$props2 = this.props,
|
|
|
autoFocus = _this$props2.autoFocus,
|
|
|
disabled = _this$props2.disabled;
|
|
|
|
|
|
if (autoFocus && !disabled) {
|
|
|
this.focus();
|
|
|
}
|
|
|
}
|
|
|
}, {
|
|
|
key: "getStarDOM",
|
|
|
value: function getStarDOM(index) {
|
|
|
return (0,findDOMNode/* default */.Z)(this.stars[index]);
|
|
|
}
|
|
|
}, {
|
|
|
key: "getStarValue",
|
|
|
value: function getStarValue(index, x) {
|
|
|
var _this$props3 = this.props,
|
|
|
allowHalf = _this$props3.allowHalf,
|
|
|
direction = _this$props3.direction;
|
|
|
var reverse = direction === 'rtl';
|
|
|
var value = index + 1;
|
|
|
|
|
|
if (allowHalf) {
|
|
|
var starEle = this.getStarDOM(index);
|
|
|
var leftDis = getOffsetLeft(starEle);
|
|
|
var width = starEle.clientWidth;
|
|
|
|
|
|
if (reverse && x - leftDis > width / 2) {
|
|
|
value -= 0.5;
|
|
|
} else if (!reverse && x - leftDis < width / 2) {
|
|
|
value -= 0.5;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return value;
|
|
|
}
|
|
|
}, {
|
|
|
key: "focus",
|
|
|
value: function focus() {
|
|
|
var disabled = this.props.disabled;
|
|
|
|
|
|
if (!disabled) {
|
|
|
this.rate.focus();
|
|
|
}
|
|
|
}
|
|
|
}, {
|
|
|
key: "blur",
|
|
|
value: function blur() {
|
|
|
var disabled = this.props.disabled;
|
|
|
|
|
|
if (!disabled) {
|
|
|
this.rate.blur();
|
|
|
}
|
|
|
}
|
|
|
}, {
|
|
|
key: "changeValue",
|
|
|
value: function changeValue(value) {
|
|
|
var onChange = this.props.onChange;
|
|
|
|
|
|
if (!('value' in this.props)) {
|
|
|
this.setState({
|
|
|
value: value
|
|
|
});
|
|
|
}
|
|
|
|
|
|
onChange(value);
|
|
|
}
|
|
|
}, {
|
|
|
key: "render",
|
|
|
value: function render() {
|
|
|
var _this$props4 = this.props,
|
|
|
count = _this$props4.count,
|
|
|
allowHalf = _this$props4.allowHalf,
|
|
|
style = _this$props4.style,
|
|
|
prefixCls = _this$props4.prefixCls,
|
|
|
disabled = _this$props4.disabled,
|
|
|
className = _this$props4.className,
|
|
|
character = _this$props4.character,
|
|
|
characterRender = _this$props4.characterRender,
|
|
|
tabIndex = _this$props4.tabIndex,
|
|
|
direction = _this$props4.direction;
|
|
|
var _this$state = this.state,
|
|
|
value = _this$state.value,
|
|
|
hoverValue = _this$state.hoverValue,
|
|
|
focused = _this$state.focused;
|
|
|
var stars = [];
|
|
|
var disabledClass = disabled ? "".concat(prefixCls, "-disabled") : '';
|
|
|
|
|
|
for (var index = 0; index < count; index += 1) {
|
|
|
stars.push( /*#__PURE__*/react.createElement(Star, {
|
|
|
ref: this.saveRef(index),
|
|
|
index: index,
|
|
|
count: count,
|
|
|
disabled: disabled,
|
|
|
prefixCls: "".concat(prefixCls, "-star"),
|
|
|
allowHalf: allowHalf,
|
|
|
value: hoverValue === undefined ? value : hoverValue,
|
|
|
onClick: this.onClick,
|
|
|
onHover: this.onHover,
|
|
|
key: index,
|
|
|
character: character,
|
|
|
characterRender: characterRender,
|
|
|
focused: focused
|
|
|
}));
|
|
|
}
|
|
|
|
|
|
var rateClassName = classnames_default()(prefixCls, disabledClass, className, (0,defineProperty/* default */.Z)({}, "".concat(prefixCls, "-rtl"), direction === 'rtl'));
|
|
|
return /*#__PURE__*/react.createElement("ul", {
|
|
|
className: rateClassName,
|
|
|
style: style,
|
|
|
onMouseLeave: disabled ? null : this.onMouseLeave,
|
|
|
tabIndex: disabled ? -1 : tabIndex,
|
|
|
onFocus: disabled ? null : this.onFocus,
|
|
|
onBlur: disabled ? null : this.onBlur,
|
|
|
onKeyDown: disabled ? null : this.onKeyDown,
|
|
|
ref: this.saveRate,
|
|
|
role: "radiogroup"
|
|
|
}, stars);
|
|
|
}
|
|
|
}], [{
|
|
|
key: "getDerivedStateFromProps",
|
|
|
value: function getDerivedStateFromProps(nextProps, state) {
|
|
|
if ('value' in nextProps && nextProps.value !== undefined) {
|
|
|
return (0,objectSpread2/* default */.Z)((0,objectSpread2/* default */.Z)({}, state), {}, {
|
|
|
value: nextProps.value
|
|
|
});
|
|
|
}
|
|
|
|
|
|
return state;
|
|
|
}
|
|
|
}]);
|
|
|
|
|
|
return Rate;
|
|
|
}(react.Component);
|
|
|
|
|
|
Rate.defaultProps = {
|
|
|
defaultValue: 0,
|
|
|
count: 5,
|
|
|
allowHalf: false,
|
|
|
allowClear: true,
|
|
|
style: {},
|
|
|
prefixCls: 'rc-rate',
|
|
|
onChange: noop,
|
|
|
character: '★',
|
|
|
onHoverChange: noop,
|
|
|
tabIndex: 0,
|
|
|
direction: 'ltr'
|
|
|
};
|
|
|
/* harmony default export */ var es_Rate = (Rate);
|
|
|
;// CONCATENATED MODULE: ./node_modules/rc-rate/es/index.js
|
|
|
|
|
|
/* harmony default export */ var es = (es_Rate);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/config-provider/context.js
|
|
|
var context = __webpack_require__(53124);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/tooltip/index.js + 3 modules
|
|
|
var tooltip = __webpack_require__(84908);
|
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/rate/index.js
|
|
|
|
|
|
var __rest = undefined && undefined.__rest || function (s, e) {
|
|
|
var t = {};
|
|
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
|
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
|
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
|
}
|
|
|
return t;
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var rate_Rate = /*#__PURE__*/react.forwardRef(function (props, ref) {
|
|
|
var prefixCls = props.prefixCls,
|
|
|
tooltips = props.tooltips,
|
|
|
_props$character = props.character,
|
|
|
character = _props$character === void 0 ? /*#__PURE__*/react.createElement(icons_StarFilled, null) : _props$character,
|
|
|
rest = __rest(props, ["prefixCls", "tooltips", "character"]);
|
|
|
var characterRender = function characterRender(node, _ref) {
|
|
|
var index = _ref.index;
|
|
|
if (!tooltips) {
|
|
|
return node;
|
|
|
}
|
|
|
return /*#__PURE__*/react.createElement(tooltip/* default */.Z, {
|
|
|
title: tooltips[index]
|
|
|
}, node);
|
|
|
};
|
|
|
var _React$useContext = react.useContext(context/* ConfigContext */.E_),
|
|
|
getPrefixCls = _React$useContext.getPrefixCls,
|
|
|
direction = _React$useContext.direction;
|
|
|
var ratePrefixCls = getPrefixCls('rate', prefixCls);
|
|
|
return /*#__PURE__*/react.createElement(es, (0,esm_extends/* default */.Z)({
|
|
|
ref: ref,
|
|
|
character: character,
|
|
|
characterRender: characterRender
|
|
|
}, rest, {
|
|
|
prefixCls: ratePrefixCls,
|
|
|
direction: direction
|
|
|
}));
|
|
|
});
|
|
|
if (false) {}
|
|
|
/* harmony default export */ var rate = (rate_Rate);
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 50936:
|
|
|
/*!**************************************************************!*\
|
|
|
!*** ./node_modules/antd/es/rate/style/index.js + 1 modules ***!
|
|
|
\**************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __unused_webpack___webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/style/default.less
|
|
|
var style_default = __webpack_require__(43146);
|
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/rate/style/index.less
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/tooltip/style/index.js + 1 modules
|
|
|
var style = __webpack_require__(38390);
|
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/rate/style/index.js
|
|
|
|
|
|
|
|
|
// style dependencies
|
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 4977:
|
|
|
/*!********************************************!*\
|
|
|
!*** ./src/assets/images/icons/nodata.png ***!
|
|
|
\********************************************/
|
|
|
/***/ (function(module) {
|
|
|
|
|
|
"use strict";
|
|
|
module.exports = "data:image/png;base64,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";
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 60141:
|
|
|
/*!***************************************************************!*\
|
|
|
!*** ./src/pages/tasks/code-repository/action-bar/notice.gif ***!
|
|
|
\***************************************************************/
|
|
|
/***/ (function(module) {
|
|
|
|
|
|
"use strict";
|
|
|
module.exports = "data:image/gif;base64,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";
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 21978:
|
|
|
/*!********************************************!*\
|
|
|
!*** ./src/pages/tasks/resize-enlarge.png ***!
|
|
|
\********************************************/
|
|
|
/***/ (function(module) {
|
|
|
|
|
|
"use strict";
|
|
|
module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAACgCAYAAAB+HS7YAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjczMUZFNjhCMDE3NzExRUJCOEU5RDg5RTZBOTI5QTU3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjczMUZFNjhDMDE3NzExRUJCOEU5RDg5RTZBOTI5QTU3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NzMxRkU2ODkwMTc3MTFFQkI4RTlEODlFNkE5MjlBNTciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NzMxRkU2OEEwMTc3MTFFQkI4RTlEODlFNkE5MjlBNTciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7zBaLcAAACAElEQVR42uzdzyvDcRzH8ffsZiVc/IjbkOTuShN/gXIgYi5y2AlpFBL/AAdLiXBgBwfUxplmyU2tRK4sTey0+H6+RbKD7Gtfb/V817t963t59Nnn9f58+7aap6LO/yq6KmN13OoJq1MehcD3erS6rUT0VrnVC5qBpgLagWXagQIQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAABUCD6Lbkr5L2W2uv9bS3LR4vd6iAb/9BaaBfa7K+oa8+0exEwmOheT5+UXnV9zd2SEHeztSU12ldw+2tjRLbH/X/lQbktqaansluwLtelPs85XKZmRFggN9eseMSbVJ9+Js2HHCizoHRwb7ZWN12V5VtYPaacJdOUmcJNy1o67QhLt6FheScNcfFkyqmxr9eoGHsWMZD8/qBCYvLmV4NCS5XE4f8PrmVnoHRySbzeoLyf1DWnr6huxPdWPGrJhZObOC6ga12Wtmz5m9p/Kom5yZt1Or8mFhbWNLIuubOh+3fjrrXAUWMutcAxY661wBOpl1RQc6nXVFBf7GrHMEPEskP65PE+d5901anc46R68+/rp4/QYQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAP8dMKMdGNcMNH9eMaUR+GR11Oo2q6/eBBgA/5+hicfO9/sAAAAASUVORK5CYII=";
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 52787:
|
|
|
/*!******************************************!*\
|
|
|
!*** ./src/pages/tasks/resize-small.png ***!
|
|
|
\******************************************/
|
|
|
/***/ (function(module) {
|
|
|
|
|
|
"use strict";
|
|
|
module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAACgCAYAAAB+HS7YAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTM4IDc5LjE1OTgyNCwgMjAxNi8wOS8xNC0wMTowOTowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTcgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjc0MDQ0OTA3MDE3NzExRUJCNjY1QzBDMDY3NUI5QTQ3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjc0MDQ0OTA4MDE3NzExRUJCNjY1QzBDMDY3NUI5QTQ3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NzQwNDQ5MDUwMTc3MTFFQkI2NjVDMEMwNjc1QjlBNDciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NzQwNDQ5MDYwMTc3MTFFQkI2NjVDMEMwNjc1QjlBNDciLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4CEd39AAACAklEQVR42uzYvyuFURjA8Yf7TpSw+BHbvSTZrXTFX6AMRLiLySSE8ismg8FAIsKAwcCA/eqSbEqJrEgMd7pxzi3iUgbn8KTvU0/37b7Lp/Oe5+k5JygoC4uJiMkpk1GTeaIoApOVJuMm80VhZJuc1Ip7BUZFcWRr23NfAQUgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQL8FWAoFJLpseFP/+9ur8v9zUU67fN3kVVQFn52jcvNzZH52RlpaqiXwvLIh3cW9j4y32dG4BpXUlwkG0vzUlNdpe8TW9T+zqYznFNgY7ROdrc2pLSkWF+RdLe3yurCXHrvuY7gp5U6MTIgsY42b20mcFGpPiPQUKlO96CPSnUG9FWpToA+K9UJsLIinK5atcNC39Co7O0f6gWmUinp6umVk9MzveNWMpmUlo6YXF5d650Hb+/upbm1M/2rdmC1K2hX0q6o2ona7kW7J+3eVDvy26ruHxnXfSZZWF6VxZU13Ycmnz3SCdBnj3Q28vvqkU4PTT56pPODu+se6eVmwWWP9Hb1YavaVndmxBPHb89HiZO/ufpQWyQAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECPD/AB+1Aw+0AwdNPmgGnpusNblt8kkb8EWAAQAq85VNhqprywAAAABJRU5ErkJggg==";
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 42480:
|
|
|
/*!************************!*\
|
|
|
!*** crypto (ignored) ***!
|
|
|
\************************/
|
|
|
/***/ (function() {
|
|
|
|
|
|
/* (ignored) */
|
|
|
|
|
|
/***/ })
|
|
|
|
|
|
}]); |