You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
NewEduCoderBuild/p__Shixuns__New__ImagePrevi...

1440 lines
61 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

"use strict";
(self["webpackChunk"] = self["webpackChunk"] || []).push([[99674],{
/***/ 82982:
/*!*****************************************!*\
!*** ./src/components/NoData/index.tsx ***!
\*****************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
/* harmony import */ var _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/@babel/runtime/helpers/objectSpread2.js */ 42122);
/* harmony import */ var _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ 67294);
/* harmony import */ var _assets_images_icons_nodata_png__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/assets/images/icons/nodata.png */ 4977);
/* harmony import */ var antd__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! antd */ 71577);
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ 85893);
var noData = function noData(_ref) {
var img = _ref.img,
_ref$buttonProps = _ref.buttonProps,
buttonProps = _ref$buttonProps === void 0 ? {} : _ref$buttonProps,
_ref$styles = _ref.styles,
styles = _ref$styles === void 0 ? {} : _ref$styles,
customText = _ref.customText,
ButtonText = _ref.ButtonText,
ButtonClick = _ref.ButtonClick,
Buttonclass = _ref.Buttonclass,
ButtonTwo = _ref.ButtonTwo,
imgStyles = _ref.imgStyles,
_ref$loading = _ref.loading,
loading = _ref$loading === void 0 ? false : _ref$loading;
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("section", {
className: "tc animated fadeIn",
style: _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0___default()(_root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0___default()({}, {
color: '#999',
margin: '100px auto',
visibility: loading ? 'hidden' : 'visible'
}), styles),
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("img", {
src: img || _assets_images_icons_nodata_png__WEBPACK_IMPORTED_MODULE_2__,
style: _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0___default()({}, imgStyles)
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("p", {
className: "mt20 font14",
children: customText || '暂时还没有相关数据哦!'
}), ButtonText && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)(antd__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .ZP, _root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0___default()(_root_workspace_ppte5yg23_local_v9_node_modules_babel_runtime_helpers_objectSpread2_js__WEBPACK_IMPORTED_MODULE_0___default()({
className: Buttonclass,
onClick: ButtonClick
}, buttonProps), {}, {
children: ButtonText
})), ButtonTwo && ButtonTwo]
});
};
/* harmony default export */ __webpack_exports__["Z"] = (noData);
/***/ }),
/***/ 14270:
/*!******************************************************************!*\
!*** ./src/pages/Shixuns/New/ImagePreview/index.tsx + 6 modules ***!
\******************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);
// EXPORTS
__webpack_require__.d(__webpack_exports__, {
"default": function() { return /* binding */ ImagePreview; }
});
// 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);
// EXTERNAL MODULE: ./src/.umi-production/exports.ts
var _umi_production_exports = __webpack_require__(88275);
// EXTERNAL MODULE: ./node_modules/antd/es/message/index.js + 4 modules
var message = __webpack_require__(2453);
// EXTERNAL MODULE: ./node_modules/antd/es/modal/index.js + 39 modules
var modal = __webpack_require__(72423);
// EXTERNAL MODULE: ./node_modules/antd/es/checkbox/index.js + 3 modules
var es_checkbox = __webpack_require__(84567);
// EXTERNAL MODULE: ./node_modules/antd/es/row/index.js
var row = __webpack_require__(71230);
// EXTERNAL MODULE: ./node_modules/antd/es/col/index.js
var col = __webpack_require__(15746);
// EXTERNAL MODULE: ./node_modules/antd/es/button/index.js
var es_button = __webpack_require__(71577);
// EXTERNAL MODULE: ./src/pages/tasks/vnc-view/index.less
var vnc_view = __webpack_require__(45954);
// 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/createForOfIteratorHelper.js
var createForOfIteratorHelper = __webpack_require__(74704);
var createForOfIteratorHelper_default = /*#__PURE__*/__webpack_require__.n(createForOfIteratorHelper);
// EXTERNAL MODULE: ./node_modules/js-base64/base64.js
var base64 = __webpack_require__(19575);
// EXTERNAL MODULE: ./node_modules/xterm/lib/xterm.js
var xterm = __webpack_require__(12320);
// EXTERNAL MODULE: ./node_modules/xterm/css/xterm.css
var css_xterm = __webpack_require__(89629);
;// CONCATENATED MODULE: ./src/pages/Shixuns/New/ImagePreview/xterm-panel/index.less?modules
// extracted by mini-css-extract-plugin
/* harmony default export */ var xterm_panelmodules = ({"xterm-panel":"xterm-panel___S5eQ3"});
// EXTERNAL MODULE: ./src/components/mediator.js
var mediator = __webpack_require__(91562);
// EXTERNAL MODULE: ./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js
var ResizeObserver_es = __webpack_require__(91033);
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
var jsx_runtime = __webpack_require__(85893);
;// CONCATENATED MODULE: ./src/pages/Shixuns/New/ImagePreview/xterm-panel/index.jsx
var TimeTicket = 30000;
//建立 websockt 来交互
//根据容器大小计算行数和列数并做到自适应
//socket 与 term 需要分开初始化 因为socket 可能重置连接
//mediator 监听消息如果和id匹配则建立连接重置或关闭连接
/* harmony default export */ var xterm_panel = (function (_ref) {
var _ref$itemData = _ref.itemData,
itemData = _ref$itemData === void 0 ? {} : _ref$itemData,
startInit = _ref.startInit;
var _useState = (0,react.useState)(null),
_useState2 = slicedToArray_default()(_useState, 2),
term = _useState2[0],
setTerm = _useState2[1];
var _useState3 = (0,react.useState)({}),
_useState4 = slicedToArray_default()(_useState3, 2),
sshConfigData = _useState4[0],
setSshConfigData = _useState4[1];
var password = sshConfigData.password,
port = sshConfigData.port,
link_url = sshConfigData.link_url;
var el = (0,react.useRef)();
var socket = (0,react.useRef)();
var isFirstConnected = (0,react.useRef)(false);
var user_mirror_id = itemData.user_mirror_id,
tab_type = itemData.tab_type,
index_tab = itemData.index_tab;
(0,react.useEffect)(function () {
getInitData();
}, []);
function getColsAndRows(width, height, term) {
var w = term._core._renderService.dimensions.actualCellWidth || 9.5;
var h = term._core._renderService.dimensions.actualCellHeight || 18;
var rows = Math.floor(height / h);
var cols = Math.floor(width / w);
return [cols, rows];
}
function onLayout(term, el) {
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) {
var _getColsAndRows = getColsAndRows(entry.target.offsetWidth, entry.target.offsetHeight, term),
_getColsAndRows2 = slicedToArray_default()(_getColsAndRows, 2),
cols = _getColsAndRows2[0],
rows = _getColsAndRows2[1];
console.log('cols, rows', cols, rows);
mediator/* default.publish */.Z.publish("ssh-xterm-resize-".concat(index_tab), {
columns: cols,
rows: rows,
width: entry.target.offsetWidth,
height: entry.target.offsetHeight
});
term.resize(cols, rows);
var data1 = base64.Base64.decode('IA==');
var data = base64.Base64.decode('CBtbSw==');
term.write(data1);
term.write(data);
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
});
ro.observe(el);
return ro;
}
function getInitData() {
return _getInitData.apply(this, arguments);
} //term init
function _getInitData() {
_getInitData = 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 startInit(user_mirror_id, tab_type);
case 2:
response = _context.sent;
if ((response === null || response === void 0 ? void 0 : response.status) === 0) {
setSshConfigData(response.data);
setTimeout(function () {
return mediator/* default.publish */.Z.publish("create-socket-".concat(index_tab));
}, 300);
}
case 4:
case "end":
return _context.stop();
}
}, _callee);
}));
return _getInitData.apply(this, arguments);
}
(0,react.useEffect)(function () {
if (el.current && link_url) {
var _term = new xterm.Terminal({
fontSize: 16,
rendererType: 'dom'
});
_term.open(el.current);
_term.onData(function (data) {
if (socket.current) {
if (socket.current.readyState === 1) {
socket.current.send(JSON.stringify({
tp: 'client',
data: data
}));
}
}
});
_term.write('Connecting...');
setTerm(_term);
var ro = onLayout(_term, el.current);
return function () {
_term.dispose();
el.current && (ro === null || ro === void 0 ? void 0 : ro.unobserve(el.current));
};
}
}, [link_url, el.current]);
(0,react.useEffect)(function () {
if (term && link_url) {
var createSocket = function createSocket() {
var socketInstance = new WebSocket(link_url);
socket.current = socketInstance;
socketInstance.onopen = function () {
var container = term.element.parentElement;
if (container) {
var width = container.offsetWidth;
var height = container.offsetHeight;
console.log('init', {
tp: 'init',
data: objectSpread2_default()(objectSpread2_default()({}, sshConfigData), {}, {
secret: password,
width: width,
height: height,
rows: term.rows,
columns: term.cols
})
});
socketInstance.send(JSON.stringify({
tp: 'init',
data: objectSpread2_default()(objectSpread2_default()({}, sshConfigData), {}, {
secret: password,
width: width,
height: height,
rows: term.rows,
columns: term.cols
})
}));
}
term.focus();
};
socketInstance.onerror = function (error) {
console.log('------in socket error----', error, socketInstance, link_url);
};
socketInstance.onmessage = function (event) {
if (!isFirstConnected.current) {
term.write('\r');
// term.focus()
setTimeout(function () {
// term.clear();
}, 1000);
}
isFirstConnected.current = true;
console.log('event:', event);
var data = base64.Base64.decode(event.data.toString());
var w = term._core._renderService.dimensions.actualCellWidth || 9.5;
console.log('data:', data, w, term);
term.write(data);
};
var tid = setInterval(function () {
if (socket.current) {
var _socket$current;
(_socket$current = socket.current) === null || _socket$current === void 0 ? void 0 : _socket$current.send(JSON.stringify({
tp: 'h'
}));
}
}, TimeTicket);
socketInstance.onclose = function (evt) {
if (tid) {
clearInterval(tid);
}
console.log(tid, 'tid', index_tab);
term.write('\r\nconnection closed');
setTimeout(function () {
createSocket();
}, 10 * 1000);
};
};
var unSubCreate = mediator/* default.subscribe */.Z.subscribe("create-socket-".concat(index_tab), function () {
createSocket();
});
var unSubResize = mediator/* default.subscribe */.Z.subscribe("ssh-xterm-resize-".concat(index_tab), function (option) {
if (socket.current && socket.current.readyState === 1) {
socket.current.send(JSON.stringify({
tp: 'resize',
data: objectSpread2_default()({}, option)
}));
}
});
return function () {
unSubCreate();
unSubResize();
if (socket.current) {
socket.current.close();
isFirstConnected.current = false;
}
};
}
}, [term, link_url, port]);
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
ref: el,
className: xterm_panelmodules["xterm-panel"],
children: !link_url ? /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
style: {
color: '#fff'
},
children: "\u6B63\u5728\u8FDE\u63A5\u547D\u4EE4\u884C\u670D\u52A1..."
}) : null
});
});
// EXTERNAL MODULE: ./node_modules/antd/es/spin/index.js + 1 modules
var spin = __webpack_require__(57953);
;// CONCATENATED MODULE: ./src/pages/Shixuns/New/ImagePreview/vnc-panel/index.jsx
/* harmony default export */ var vnc_panel = (function (_ref) {
var _ref$itemData = _ref.itemData,
itemData = _ref$itemData === void 0 ? {} : _ref$itemData,
startInit = _ref.startInit;
var _useState = (0,react.useState)({}),
_useState2 = slicedToArray_default()(_useState, 2),
data = _useState2[0],
setData = _useState2[1];
var _useState3 = (0,react.useState)(true),
_useState4 = slicedToArray_default()(_useState3, 2),
loading = _useState4[0],
setLoading = _useState4[1];
var user_mirror_id = itemData.user_mirror_id,
tab_type = itemData.tab_type;
(0,react.useEffect)(function () {
getData();
}, []);
var getData = /*#__PURE__*/function () {
var _ref2 = 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:
setLoading(true);
_context.next = 3;
return startInit(user_mirror_id, tab_type);
case 3:
response = _context.sent;
if ((response === null || response === void 0 ? void 0 : response.status) === 0) {
setData(response.data);
}
setLoading(false);
case 6:
case "end":
return _context.stop();
}
}, _callee);
}));
return function getData() {
return _ref2.apply(this, arguments);
};
}();
return /*#__PURE__*/(0,jsx_runtime.jsx)(jsx_runtime.Fragment, {
children: loading ? /*#__PURE__*/(0,jsx_runtime.jsx)(spin/* default */.Z, {
style: {
width: '100%',
marginTop: 200
}
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("iframe", {
style: {
height: '100%',
width: '100%'
},
frameBorder: "0",
src: data === null || data === void 0 ? void 0 : data.vnc_url
})
});
});
// EXTERNAL MODULE: ./src/components/ui-customization/index.tsx + 32 modules
var ui_customization = __webpack_require__(35567);
;// CONCATENATED MODULE: ./src/pages/Shixuns/New/ImagePreview/Timer.tsx
var Timer = function Timer(_ref) {
var _ref$value = _ref.value,
value = _ref$value === void 0 ? null : _ref$value,
onAddTime = _ref.onAddTime,
goBack = _ref.goBack,
updateTime = _ref.updateTime,
errorCode = _ref.errorCode;
var _useState = (0,react.useState)(null),
_useState2 = slicedToArray_default()(_useState, 2),
time = _useState2[0],
setTime = _useState2[1]; //变化的值,用于做事件处理
var _useState3 = (0,react.useState)(null),
_useState4 = slicedToArray_default()(_useState3, 2),
countdownTime = _useState4[0],
setCountdownTime = _useState4[1]; //倒计时总时
var _useState5 = (0,react.useState)(false),
_useState6 = slicedToArray_default()(_useState5, 2),
isPlusTime = _useState6[0],
setIsPlusTime = _useState6[1];
var _useState7 = (0,react.useState)(false),
_useState8 = slicedToArray_default()(_useState7, 2),
btnLoading = _useState8[0],
setBtnLoading = _useState8[1];
var initTime = (0,react.useRef)(true);
(0,react.useEffect)(function () {
setCountdownTime(Date.now() + value);
if (typeof value === 'number' && initTime.current && value < 300000) {
initTime.current = false;
setIsPlusTime(true);
}
}, [value]);
(0,react.useEffect)(function () {
if (time === 300 || time === 180 || time === 60 || time === 0) {
setIsPlusTime(true);
}
}, [time]);
(0,react.useEffect)(function () {
window.addEventListener("visibilitychange", handleFocus);
return function () {
window.removeEventListener("visibilitychange", handleFocus);
};
}, [errorCode]);
var handleFocus = /*#__PURE__*/function () {
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
var res, _res$data, _res$data2, remainingTime;
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
if (!(document.visibilityState === 'visible' && !errorCode)) {
_context.next = 5;
break;
}
_context.next = 3;
return updateTime();
case 3:
res = _context.sent;
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
remainingTime = (res === null || res === void 0 ? void 0 : (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.expireTime) > 0 ? res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.expireTime : 0;
setCountdownTime(Date.now() + remainingTime);
setIsPlusTime(remainingTime <= 300000);
if (remainingTime === 0) {
setTime(0);
}
}
case 5:
case "end":
return _context.stop();
}
}, _callee);
}));
return function handleFocus() {
return _ref2.apply(this, arguments);
};
}();
var handleAddTime = /*#__PURE__*/function () {
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
setBtnLoading(true);
if (!(time > 0)) {
_context2.next = 6;
break;
}
_context2.next = 4;
return onAddTime();
case 4:
_context2.next = 7;
break;
case 6:
goBack();
case 7:
setBtnLoading(false);
setIsPlusTime(false);
case 9:
case "end":
return _context2.stop();
}
}, _callee2);
}));
return function handleAddTime() {
return _ref3.apply(this, arguments);
};
}();
//处理秒的事件
var onTimeChange = function onTimeChange(c) {
setTime(c);
};
var onCancel = function onCancel() {
setIsPlusTime(false);
};
return /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(ui_customization/* CustomCountdown */.O5, {
onChange: onTimeChange,
value: countdownTime,
valueStyle: {
color: '#FFF',
fontSize: 12,
width: 54
}
}), /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
title: time !== 0 ? '实验环境延时提醒' : '实验环境结束提醒',
maskClosable: false,
closable: false,
centered: true,
open: isPlusTime,
onOk: handleAddTime,
cancelButtonProps: {
style: {
display: time !== 0 ? 'inline-block' : 'none'
}
},
confirmLoading: btnLoading,
onCancel: onCancel,
okText: time !== 0 ? '立即延长' : '退出',
cancelText: "\u4E0D\u9700\u8981",
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") : '实验环境倒计时结束,资源已经被回收。'
})]
});
};
/* harmony default export */ var ImagePreview_Timer = (Timer);
// EXTERNAL MODULE: ./src/utils/env.ts + 1 modules
var env = __webpack_require__(59758);
;// CONCATENATED MODULE: ./src/pages/Shixuns/New/ImagePreview/index.less?modules
// extracted by mini-css-extract-plugin
/* harmony default export */ var ImagePreviewmodules = ({"wrap":"wrap___nt3l8","header":"header___pWY1w","cutDown":"cutDown___LErwR","container":"container____IeqS","errorData":"errorData___pJ481"});
// EXTERNAL MODULE: ./src/utils/fetch.ts
var fetch = __webpack_require__(84519);
// EXTERNAL MODULE: ./src/pages/tasks/code-repository/HorizontalTabs/index.tsx + 1 modules
var HorizontalTabs = __webpack_require__(84975);
;// CONCATENATED MODULE: ./src/assets/images/shixun/nodata.png
var nodata_namespaceObject = "data:image/png;base64,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";
;// CONCATENATED MODULE: ./src/pages/Shixuns/New/ImagePreview/index.tsx
var Page = function Page(_ref) {
var _user$userInfo2, _user$userInfo3;
var dispatch = _ref.dispatch,
user = _ref.user;
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
searchParams = _useSearchParams2[0];
var params = (0,_umi_production_exports.useParams)();
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),
btnLoading = _useState4[0],
setBtnLoading = _useState4[1];
var _useState5 = (0,react.useState)(true),
_useState6 = slicedToArray_default()(_useState5, 2),
loading = _useState6[0],
setLoading = _useState6[1];
var _useState7 = (0,react.useState)([]),
_useState8 = slicedToArray_default()(_useState7, 2),
tabs = _useState8[0],
setTabs = _useState8[1];
var _useState9 = (0,react.useState)({}),
_useState10 = slicedToArray_default()(_useState9, 2),
tabActiveParams = _useState10[0],
setTabActiveParams = _useState10[1];
var _useState11 = (0,react.useState)(null),
_useState12 = slicedToArray_default()(_useState11, 2),
deadline = _useState12[0],
setDeadline = _useState12[1];
var _useState13 = (0,react.useState)(false),
_useState14 = slicedToArray_default()(_useState13, 2),
errorCode = _useState14[0],
setErrorCode = _useState14[1];
(0,react.useEffect)(function () {
dispatch({
type: "globalSetting/headerFooterToggle",
payload: false
});
return function () {
dispatch({
type: "globalSetting/headerFooterToggle",
payload: true
});
};
}, []);
(0,react.useEffect)(function () {
getData();
}, []);
var startInit = /*#__PURE__*/function () {
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(id, tab_type) {
var res, _res$data, _res$data2;
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
setLoading(true);
_context.next = 3;
return (0,fetch/* default */.ZP)("/api/user_mirrors/".concat(id, "/start.json"), {
method: 'post',
body: {
tab_type: tab_type
}
});
case 3:
res = _context.sent;
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
setErrorCode(!!(res !== null && res !== void 0 && (_res$data = res.data) !== null && _res$data !== void 0 && _res$data.code));
setDeadline(res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.remaining_time);
setLoading(false);
// setDeadline(280000)
}
return _context.abrupt("return", res);
case 6:
case "end":
return _context.stop();
}
}, _callee);
}));
return function startInit(_x, _x2) {
return _ref2.apply(this, arguments);
};
}();
var getData = /*#__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,fetch/* default */.ZP)("/api/user_mirrors/".concat(params === null || params === void 0 ? void 0 : params.id, ".json"), {
method: 'get'
});
case 2:
res = _context2.sent;
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
setData(res === null || res === void 0 ? void 0 : res.data);
}
case 4:
case "end":
return _context2.stop();
}
}, _callee2);
}));
return function getData() {
return _ref3.apply(this, arguments);
};
}();
var updateTime = /*#__PURE__*/function () {
var _ref4 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3() {
var res;
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
while (1) switch (_context3.prev = _context3.next) {
case 0:
_context3.next = 2;
return (0,fetch/* default */.ZP)("/api/user_mirrors/".concat(params === null || params === void 0 ? void 0 : params.id, "/check.json"), {
method: 'get'
});
case 2:
res = _context3.sent;
return _context3.abrupt("return", res);
case 4:
case "end":
return _context3.stop();
}
}, _callee3);
}));
return function updateTime() {
return _ref4.apply(this, arguments);
};
}();
var handleAddTime = /*#__PURE__*/function () {
var _ref5 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4() {
var res, _res$data3;
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
while (1) switch (_context4.prev = _context4.next) {
case 0:
_context4.next = 2;
return (0,fetch/* default */.ZP)("/api/user_mirrors/".concat(params === null || params === void 0 ? void 0 : params.id, "/active.json"), {
method: 'post',
body: {
tab_type: tabActiveParams === null || tabActiveParams === void 0 ? void 0 : tabActiveParams.tab_type
}
});
case 2:
res = _context4.sent;
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
setDeadline(res === null || res === void 0 ? void 0 : (_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.remaining_time);
message/* default.success */.ZP.success('延长成功');
}
case 4:
case "end":
return _context4.stop();
}
}, _callee4);
}));
return function handleAddTime() {
return _ref5.apply(this, arguments);
};
}();
var goBack = function goBack() {
var _user$userInfo;
_umi_production_exports.history.push("/users/".concat((_user$userInfo = user.userInfo) === null || _user$userInfo === void 0 ? void 0 : _user$userInfo.login, "/experiment-img"));
};
var handleExit = function handleExit() {
var checked = false;
modal/* default.confirm */.Z.confirm({
title: '退出环境',
icon: null,
content: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
style: {
margin: '10px auto'
},
children: "\u60A8\u786E\u5B9A\u8981\u9000\u51FA\u73AF\u5883\u5417\uFF1F"
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_checkbox/* default */.Z, {
onChange: function onChange(e) {
return checked = e.target.checked;
},
children: "\u9000\u51FA\u73AF\u5883\u65F6\uFF0C\u7ACB\u5373\u91CA\u653E\u73AF\u5883\u8D44\u6E90"
})]
}),
centered: true,
okText: '确定',
cancelText: '取消',
onOk: function () {
var _onOk = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee5() {
var res;
return regeneratorRuntime_default()().wrap(function _callee5$(_context5) {
while (1) switch (_context5.prev = _context5.next) {
case 0:
if (checked) {
_context5.next = 3;
break;
}
goBack();
return _context5.abrupt("return");
case 3:
_context5.next = 5;
return (0,fetch/* default */.ZP)("/api/user_mirrors/".concat(params === null || params === void 0 ? void 0 : params.id, "/exit_delete_pod.json"), {
method: 'post',
body: {
tab_type: tabActiveParams === null || tabActiveParams === void 0 ? void 0 : tabActiveParams.tab_type
}
});
case 5:
res = _context5.sent;
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
goBack();
}
case 7:
case "end":
return _context5.stop();
}
}, _callee5);
}));
function onOk() {
return _onOk.apply(this, arguments);
}
return onOk;
}()
});
};
var handleSave = /*#__PURE__*/function () {
var _ref6 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee6() {
var res;
return regeneratorRuntime_default()().wrap(function _callee6$(_context6) {
while (1) switch (_context6.prev = _context6.next) {
case 0:
setBtnLoading(true);
_context6.next = 3;
return (0,fetch/* default */.ZP)("/api/user_mirrors/".concat(params === null || params === void 0 ? void 0 : params.id, "/save_image.json"), {
method: 'post',
body: {
tab_type: tabActiveParams === null || tabActiveParams === void 0 ? void 0 : tabActiveParams.tab_type,
operation: searchParams === null || searchParams === void 0 ? void 0 : searchParams.get('operation')
}
});
case 3:
res = _context6.sent;
if ((res === null || res === void 0 ? void 0 : res.status) === 0) {
message/* default.success */.ZP.success('保存成功');
goBack();
}
setBtnLoading(false);
case 6:
case "end":
return _context6.stop();
}
}, _callee6);
}));
return function handleSave() {
return _ref6.apply(this, arguments);
};
}();
var errorData = function errorData() {
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
className: ImagePreviewmodules.errorData,
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
src: nodata_namespaceObject,
width: 139
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
className: "font14 mt20",
style: {
color: '#F6F7F9'
},
children: "\u955C\u50CF\u65E0\u6CD5\u8FD0\u884C"
})]
});
};
return /*#__PURE__*/(0,jsx_runtime.jsxs)("section", {
className: ImagePreviewmodules.wrap,
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
align: "middle",
className: ImagePreviewmodules.header,
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)(col/* default */.Z, {
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
alt: "\u7528\u6237\u5934\u50CF",
src: "".concat(env/* default.IMG_SERVER */.Z.IMG_SERVER, "/images/").concat(user === null || user === void 0 ? void 0 : (_user$userInfo2 = user.userInfo) === null || _user$userInfo2 === void 0 ? void 0 : _user$userInfo2.image_url),
width: 34,
height: 34,
style: {
borderRadius: '50%'
}
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
className: "ml10",
children: user === null || user === void 0 ? void 0 : (_user$userInfo3 = user.userInfo) === null || _user$userInfo3 === void 0 ? void 0 : _user$userInfo3.real_name
})]
}), /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
flex: "1",
className: "tc",
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
className: "mr10 font18",
children: data === null || data === void 0 ? void 0 : data.type_name
})
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
align: "middle",
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
className: "iconfont icon-shijian1 mr5 font14"
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
className: "font12",
children: "\u5B9E\u9A8C\u73AF\u5883\u5012\u8BA1\u65F6\uFF1A"
}), /*#__PURE__*/(0,jsx_runtime.jsx)(ImagePreview_Timer, {
value: deadline,
errorCode: errorCode,
updateTime: updateTime,
onAddTime: handleAddTime,
goBack: goBack
}), !!(searchParams !== null && searchParams !== void 0 && searchParams.get('operation')) && (data === null || data === void 0 ? void 0 : data.can_save) && /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
disabled: errorCode || loading,
loading: btnLoading,
className: "ml40",
onClick: handleSave,
type: "primary",
children: "\u4FDD\u5B58\u955C\u50CF"
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
className: "icon-kaiguan font16 current ml30",
onClick: handleExit
})]
})]
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
style: {
background: '#111C24'
},
children: /*#__PURE__*/(0,jsx_runtime.jsx)(HorizontalTabs/* default */.Z, {
initTabs: (data === null || data === void 0 ? void 0 : data.tabs) || [],
tabs: tabs,
copyProhibited: true,
setTabs: setTabs,
value: tabActiveParams,
onChange: function onChange(v) {
return setTabActiveParams(v);
}
})
}), /*#__PURE__*/(0,jsx_runtime.jsx)("aside", {
className: ImagePreviewmodules.container,
children: errorCode ? errorData() : tabs.map(function (item) {
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
style: {
display: item.index_tab === tabActiveParams.index_tab ? 'block' : 'none',
position: 'relative',
overflow: 'hidden',
height: '100%'
},
children: [item.active && item.tab_type === 3 && /*#__PURE__*/(0,jsx_runtime.jsx)(vnc_panel, {
itemData: item,
startInit: startInit
}), item.active && item.tab_type === 4 && /*#__PURE__*/(0,jsx_runtime.jsx)(xterm_panel, {
itemData: item,
startInit: startInit
})]
}, item.index_tab);
})
})]
});
};
/* harmony default export */ var ImagePreview = ((0,_umi_production_exports.connect)(function (_ref7) {
var user = _ref7.user,
globalSetting = _ref7.globalSetting;
return {
globalSetting: globalSetting,
user: user
};
})(Page));
/***/ }),
/***/ 84975:
/*!******************************************************************************!*\
!*** ./src/pages/tasks/code-repository/HorizontalTabs/index.tsx + 1 modules ***!
\******************************************************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
// EXPORTS
__webpack_require__.d(__webpack_exports__, {
"Z": function() { return /* binding */ code_repository_HorizontalTabs; }
});
// 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/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/react/index.js
var react = __webpack_require__(67294);
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/HorizontalTabs/index.less?modules
// extracted by mini-css-extract-plugin
/* harmony default export */ var HorizontalTabsmodules = ({"scrollbar":"scrollbar___lLOKh","scrollbarContent":"scrollbarContent___J5uQ6","scrollbarTrack":"scrollbarTrack___ptQqt","scrollbarThumb":"scrollbarThumb___GFuZv","item":"item___MSfbI","icon":"icon___AXhP9","dot":"dot___BA766","active":"active___Rkf93","pathActive":"pathActive___l4hB4","paths":"paths___gzBRM"});
// EXTERNAL MODULE: ./node_modules/antd/es/modal/index.js + 39 modules
var modal = __webpack_require__(72423);
// EXTERNAL MODULE: ./node_modules/antd/es/dropdown/index.js + 1 modules
var dropdown = __webpack_require__(85418);
// EXTERNAL MODULE: ./node_modules/lodash/lodash.js
var lodash = __webpack_require__(96486);
// EXTERNAL MODULE: ./src/components/mediator.js
var mediator = __webpack_require__(91562);
// EXTERNAL MODULE: ./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js
var ResizeObserver_es = __webpack_require__(91033);
// EXTERNAL MODULE: ./src/utils/util.tsx
var util = __webpack_require__(29427);
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
var jsx_runtime = __webpack_require__(85893);
;// CONCATENATED MODULE: ./src/pages/tasks/code-repository/HorizontalTabs/index.tsx
var HorizontalTabs = function HorizontalTabs(_ref) {
var _ref$initTabs = _ref.initTabs,
initTabs = _ref$initTabs === void 0 ? [] : _ref$initTabs,
_ref$tabs = _ref.tabs,
tabs = _ref$tabs === void 0 ? [] : _ref$tabs,
setTabs = _ref.setTabs,
value = _ref.value,
onChange = _ref.onChange,
_ref$codeUpdate = _ref.codeUpdate,
codeUpdate = _ref$codeUpdate === void 0 ? false : _ref$codeUpdate,
_ref$paths = _ref.paths,
paths = _ref$paths === void 0 ? [] : _ref$paths,
activePath = _ref.activePath,
onChangePath = _ref.onChangePath,
codeLoading = _ref.codeLoading,
_ref$copyProhibited = _ref.copyProhibited,
copyProhibited = _ref$copyProhibited === void 0 ? false : _ref$copyProhibited;
var _useState = (0,react.useState)(false),
_useState2 = slicedToArray_default()(_useState, 2),
visible = _useState2[0],
setVisible = _useState2[1];
var _useState3 = (0,react.useState)(false),
_useState4 = slicedToArray_default()(_useState3, 2),
open = _useState4[0],
setOpen = _useState4[1];
var moveElement = (0,react.useRef)();
var scrollbar = (0,react.useRef)();
var scrollbarContent = (0,react.useRef)();
var init = (0,react.useRef)(false);
(0,react.useEffect)(function () {
var unSub = mediator/* default.subscribe */.Z.subscribe('send-tabs-result-data', function (data) {
var cloneTabs = (0,lodash.cloneDeep)(tabs);
var index = cloneTabs.findIndex(function (e) {
return e.index_tab === data.index_tab;
});
cloneTabs[index].resData = data;
setTabs(cloneTabs);
});
return unSub;
}, [tabs]);
(0,react.useEffect)(function () {
var resizeObserver1 = 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;
var width = entry.contentRect.width;
// 处理宽度变化的逻辑
handleObserverSize();
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
});
var resizeObserver2 = 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;
var width = entry.contentRect.width;
// 处理宽度变化的逻辑
handleObserverSize();
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
});
if (scrollbar.current) {
resizeObserver1.observe(scrollbar.current);
resizeObserver2.observe(scrollbarContent.current);
}
return function () {
resizeObserver1.disconnect();
resizeObserver2.disconnect();
};
}, []);
(0,react.useEffect)(function () {
if (!!initTabs.length && !init.current) {
var newTabs = initTabs.map(function (e, i) {
return objectSpread2_default()(objectSpread2_default()({}, e), {}, {
active: i === 0 ? true : false,
resetKey: 1,
resData: {}
});
});
setTabs((0,lodash.cloneDeep)(newTabs));
onChange(newTabs[0]);
init.current = false;
}
}, [initTabs === null || initTabs === void 0 ? void 0 : initTabs.length]);
(0,react.useEffect)(function () {
if (moveElement.current) {
var onMouseDown = function onMouseDown(e) {
startLeft = moveElement.current.offsetLeft;
startPageX = e.pageX;
dragging = true;
document.onselectstart = function () {
return false;
};
(0,util/* pointerEvents */.kk)('none');
};
var onMouseUp = function onMouseUp() {
dragging = false;
document.onselectstart = null;
(0,util/* pointerEvents */.kk)('auto');
};
var onMouseMove = function onMouseMove(e) {
if (dragging) {
var spareWidth = e.pageX - startPageX; //移动的距离
var finalLeft = startLeft + spareWidth; //渲染的left
var maxLeft = scrollbar.current.clientWidth - moveElement.current.clientWidth; //可以向左偏移的最大值
//左边到顶不用滚动
if (finalLeft <= 0) {
finalLeft = 0;
}
//右边到顶不用滚动
if (finalLeft >= maxLeft) {
finalLeft = maxLeft;
}
moveElement.current.style.left = "".concat(finalLeft, "px");
scrollbarContent.current.style.transform = "translateX(".concat(-(finalLeft / scrollbar.current.clientWidth * scrollbarContent.current.clientWidth), "px)");
}
};
var startLeft = 0;
var startPageX = 0;
var dragging = false;
moveElement.current.addEventListener('mousedown', onMouseDown);
document.addEventListener('mousemove', onMouseMove);
document.addEventListener('mouseup', onMouseUp);
return function () {
var _moveElement$current, _document, _document2;
(_moveElement$current = moveElement.current) === null || _moveElement$current === void 0 ? void 0 : _moveElement$current.removeEventListener('mousedown', onMouseDown);
(_document = document) === null || _document === void 0 ? void 0 : _document.removeEventListener('mousemove', onMouseMove);
(_document2 = document) === null || _document2 === void 0 ? void 0 : _document2.removeEventListener('mouseup', onMouseUp);
};
}
}, [moveElement.current, value]);
(0,react.useEffect)(function () {
scrollbarContent.current.addEventListener('wheel', handleWheelEvent, {
passive: false
});
return function () {
var _scrollbarContent$cur;
(_scrollbarContent$cur = scrollbarContent.current) === null || _scrollbarContent$cur === void 0 ? void 0 : _scrollbarContent$cur.removeEventListener('wheel', handleWheelEvent, {
passive: false
});
};
}, [scrollbarContent.current]);
var handleObserverSize = function handleObserverSize() {
try {
if (scrollbarContent.current.clientWidth > scrollbar.current.clientWidth) {
var _moveElement$current$;
var barWidth = scrollbar.current.clientWidth / scrollbarContent.current.clientWidth * scrollbar.current.clientWidth;
var left = Number((_moveElement$current$ = moveElement.current.style.left) === null || _moveElement$current$ === void 0 ? void 0 : _moveElement$current$.replace('px', ''));
var finalLeft = left;
if (left + barWidth >= scrollbar.current.clientWidth) {
//往右偏移量
finalLeft = left - (left + barWidth - scrollbar.current.clientWidth);
}
moveElement.current.style.width = "".concat(barWidth, "px");
moveElement.current.style.left = "".concat(finalLeft, "px");
scrollbarContent.current.style.transform = "translateX(".concat(-(finalLeft / scrollbar.current.clientWidth * scrollbarContent.current.clientWidth), "px)");
setVisible(true);
} else {
moveElement.current.style.left = "".concat(0, "px");
scrollbarContent.current.style.transform = "translateX(0px)";
setVisible(false);
}
} catch (e) {}
};
var handleWheelEvent = function handleWheelEvent(event) {
//不出现滚动条时,阻止滑动
if (scrollbarContent.current.clientWidth <= scrollbar.current.clientWidth) return;
// 获取滚轮滚动的方向和滚动量
var deltaX = 0; // 水平方向上的滚动量
if (navigator.userAgent.indexOf('Macintosh') !== -1) {
// 用户在Mac系统上
deltaX = event.deltaX;
} else {
// 用户在其他操作系统上
if (event.shiftKey) {
deltaX = event.deltaX || event.deltaY;
} else {
deltaX = event.deltaX;
}
}
var transformValue = scrollbarContent.current.style.transform;
// 提取 translateX 的值
var match = transformValue.match(/translateX\(([-0-9.]+)px\)/);
var transformLeft = match ? parseFloat(match[1]) : 0;
transformLeft = Math.abs(transformLeft);
transformLeft = transformLeft + deltaX;
//向左控制
if (transformLeft <= 0) {
transformLeft = 0;
}
//向右控制
var maxLeft = scrollbarContent.current.clientWidth - scrollbar.current.clientWidth;
if (transformLeft >= maxLeft) {
transformLeft = maxLeft;
}
var finalLeft = transformLeft / scrollbarContent.current.clientWidth * scrollbar.current.clientWidth;
moveElement.current.style.left = "".concat(finalLeft, "px");
scrollbarContent.current.style.transform = "translateX(".concat(-transformLeft, "px)");
// 阻止滚轮默认行为(如果需要禁用默认滚动行为)
event.preventDefault();
};
var onCopy = function onCopy(item, i, e) {
e.stopPropagation();
if (tabs.length === 10) {
modal/* default.info */.Z.info({
title: "提示",
icon: null,
okText: "我知道了",
width: 600,
centered: true,
content: "实验界面窗口数量已达上限10个不允许再复制窗口。"
});
return;
}
var cloneTabs = (0,lodash.cloneDeep)(tabs);
var index = String(Math.random()).slice(-10);
var str = item.index_tab.split('-')[0];
var cloneItem = objectSpread2_default()(objectSpread2_default()({}, item), {}, {
active: false,
index_tab: "".concat(str, "-").concat(index),
isCopy: true
});
cloneTabs.splice(i + 1, 0, cloneItem);
setTabs(cloneTabs);
};
var onDelete = function onDelete(item, i, e) {
e.stopPropagation();
var cloneTabs = (0,lodash.cloneDeep)(tabs);
cloneTabs.splice(i, 1);
if (item.index_tab === value.index_tab) {
cloneTabs[i - 1].active = true;
onChange(cloneTabs[i - 1]);
}
setTabs(cloneTabs);
};
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
className: HorizontalTabsmodules.scrollbar,
ref: scrollbar,
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
className: HorizontalTabsmodules.scrollbarContent,
ref: scrollbarContent,
children: tabs.map(function (e, i) {
var _compact;
var index_tab = e.index_tab,
isCopy = e.isCopy,
tab_type = e.tab_type,
name = e.name;
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
onClick: function onClick() {
if (index_tab === value.index_tab) return; //激活标签不允许重复点击
var cloneItem = objectSpread2_default()(objectSpread2_default()({}, e), {}, {
active: true
});
var cloneTabs = (0,lodash.cloneDeep)(tabs);
cloneTabs[i] = cloneItem;
onChange(cloneItem);
setTabs(cloneTabs);
},
className: value.index_tab === index_tab ? "".concat(HorizontalTabsmodules.item, " ").concat(HorizontalTabsmodules.active) : HorizontalTabsmodules.item,
children: [tab_type === 1 && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
title: "\u4EE3\u7801\u7F16\u8F91\u5668",
style: {
color: '#3B86A0'
},
className: "iconfont icon-daimabianjiqi1"
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
children: name
}), !!activePath && /*#__PURE__*/(0,jsx_runtime.jsx)(dropdown/* default */.Z, {
className: HorizontalTabsmodules.icon,
overlayClassName: HorizontalTabsmodules.paths,
onOpenChange: function onOpenChange(e) {
setOpen(e);
},
disabled: codeLoading,
menu: {
items: (_compact = (0,lodash.compact)(paths)) === null || _compact === void 0 ? void 0 : _compact.map(function (e) {
return {
key: e,
label: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
className: activePath === e ? HorizontalTabsmodules.pathActive : '',
children: e
}),
onClick: function onClick() {
if (activePath !== e) {
setOpen(false);
onChangePath(e);
}
}
};
})
},
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
children: open ? /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
className: "iconfont icon-a-xialazhankai"
}) : /*#__PURE__*/(0,jsx_runtime.jsx)("b", {
className: "iconfont icon-shouqi4"
})
})
}), codeUpdate && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
className: HorizontalTabsmodules.dot
})]
}), tab_type === 2 && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
style: {
color: '#608B4E'
},
title: "VSCode\u7F16\u8F91\u5668",
className: "iconfont icon-vscode"
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
children: name
})]
}), tab_type === 3 && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
style: {
color: '#608B4E'
},
title: "\u56FE\u5F62\u5316\u684C\u9762",
className: "iconfont icon-tuxinghuazhuomian"
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
children: name
})]
}), tab_type === 4 && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
style: {
color: '#3B86A0'
},
title: "\u547D\u4EE4\u884C\u7EC8\u7AEF",
className: "iconfont icon-minglinghang"
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
children: name
}), !copyProhibited && /*#__PURE__*/(0,jsx_runtime.jsx)("aside", {
title: "\u590D\u5236",
onClick: function onClick(k) {
return onCopy(e, i, k);
},
className: "iconfont icon-fuzhihuanjing font14 ml10 current"
}), isCopy && /*#__PURE__*/(0,jsx_runtime.jsx)("aside", {
title: "\u5173\u95ED",
onClick: function onClick(k) {
return onDelete(e, i, k);
},
className: "iconfont icon-guanbishiyanhuanjing font14 ml10 current"
})]
}), tab_type === 5 && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
style: {
color: '#3B86A0'
},
title: "\u5BB9\u5668\u5185\u670D\u52A1",
className: "iconfont icon-rongqi1"
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
children: name
})]
})]
}, index_tab);
})
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
style: {
display: visible ? 'block' : 'none'
},
className: HorizontalTabsmodules.scrollbarTrack,
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
ref: moveElement,
className: HorizontalTabsmodules.scrollbarThumb
})
})]
});
};
/* harmony default export */ var code_repository_HorizontalTabs = (HorizontalTabs);
/***/ }),
/***/ 45954:
/*!*********************************************!*\
!*** ./src/pages/tasks/vnc-view/index.less ***!
\*********************************************/
/***/ (function() {
// extracted by mini-css-extract-plugin
/***/ })
}]);