|
|
"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
|
|
|
|
|
|
|
|
|
/***/ })
|
|
|
|
|
|
}]); |