|
|
(self["webpackChunk"] = self["webpackChunk"] || []).push([[39332,9188,4977,8423],{
|
|
|
|
|
|
/***/ 93899:
|
|
|
/*!**********************************************************!*\
|
|
|
!*** ./src/components/CoverUpload/index.tsx + 1 modules ***!
|
|
|
\**********************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ components_CoverUpload; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/slicedToArray.js
|
|
|
var slicedToArray = __webpack_require__(27424);
|
|
|
var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
|
var react = __webpack_require__(67294);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/button/index.js
|
|
|
var es_button = __webpack_require__(71577);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/message/index.js + 4 modules
|
|
|
var message = __webpack_require__(2453);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/upload/index.js + 24 modules
|
|
|
var upload = __webpack_require__(31365);
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/icons/UploadOutlined.js + 1 modules
|
|
|
var UploadOutlined = __webpack_require__(88484);
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/icons/CloseCircleFilled.js + 1 modules
|
|
|
var CloseCircleFilled = __webpack_require__(4340);
|
|
|
// EXTERNAL MODULE: ./src/utils/env.ts + 1 modules
|
|
|
var env = __webpack_require__(59758);
|
|
|
;// CONCATENATED MODULE: ./src/components/CoverUpload/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var CoverUploadmodules = ({"img":"img___BgL9D"});
|
|
|
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(85893);
|
|
|
;// CONCATENATED MODULE: ./src/components/CoverUpload/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var CoverUpload = function CoverUpload(_ref) {
|
|
|
var value = _ref.value,
|
|
|
onChange = _ref.onChange,
|
|
|
getFileProgress = _ref.getFileProgress;
|
|
|
var _useState = (0,react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
imgLoading = _useState2[0],
|
|
|
setImgLoading = _useState2[1];
|
|
|
var uploadButton = /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
loading: imgLoading,
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)(UploadOutlined/* default */.Z, {}),
|
|
|
children: "\u9009\u62E9\u4E0A\u4F20\u6587\u4EF6"
|
|
|
});
|
|
|
var renderImg = function renderImg() {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: CoverUploadmodules.img,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: env/* default.API_SERVER */.Z.API_SERVER + "/api/attachments/" + value,
|
|
|
alt: "avatar",
|
|
|
style: {
|
|
|
width: 288
|
|
|
}
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(CloseCircleFilled/* default */.Z, {
|
|
|
onClick: function onClick() {
|
|
|
return onChange('');
|
|
|
},
|
|
|
style: {
|
|
|
fontSize: '16px',
|
|
|
color: 'red'
|
|
|
}
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
var handleChange = function handleChange(info) {
|
|
|
if (getFileProgress) {
|
|
|
getFileProgress(info);
|
|
|
}
|
|
|
if (info.file.status === 'uploading') {
|
|
|
setImgLoading(true);
|
|
|
return;
|
|
|
}
|
|
|
if (info.file.status === 'done') {
|
|
|
var _info$file, _info$file$response, _info$file3, _info$file3$response;
|
|
|
setImgLoading(false);
|
|
|
if (info.file.status === 'done' && ((_info$file = info.file) === null || _info$file === void 0 ? void 0 : (_info$file$response = _info$file.response) === null || _info$file$response === void 0 ? void 0 : _info$file$response.status) === -1) {
|
|
|
var _info$file2, _info$file2$response;
|
|
|
message/* default.error */.ZP.error((_info$file2 = info.file) === null || _info$file2 === void 0 ? void 0 : (_info$file2$response = _info$file2.response) === null || _info$file2$response === void 0 ? void 0 : _info$file2$response.message);
|
|
|
// onChange()
|
|
|
return;
|
|
|
}
|
|
|
onChange(info === null || info === void 0 ? void 0 : (_info$file3 = info.file) === null || _info$file3 === void 0 ? void 0 : (_info$file3$response = _info$file3.response) === null || _info$file3$response === void 0 ? void 0 : _info$file3$response.id);
|
|
|
}
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(react.Fragment, {
|
|
|
children: value ? renderImg() : /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(upload/* default */.Z, {
|
|
|
withCredentials: true,
|
|
|
name: "file",
|
|
|
showUploadList: false,
|
|
|
action: "".concat(env/* default.API_SERVER */.Z.API_SERVER, "/api/attachments.json"),
|
|
|
onChange: handleChange,
|
|
|
accept: "image/*",
|
|
|
children: uploadButton
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "mt20 c-light-black",
|
|
|
children: "\u8BF4\u660E\uFF1A\u652F\u6301\u4E0A\u4F20jpg/png\u7B49\u683C\u5F0F\u6587\u4EF6\uFF0C\u6587\u4EF6\u5927\u5C0F\u4E0D\u80FD\u8D85\u8FC72M,\u5EFA\u8BAE\u4F7F\u7528288*158\u50CF\u7D20\uFF1B"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "c-light-black",
|
|
|
children: "\u5982\u4E0D\u4E0A\u4F20\uFF0C\u9ED8\u8BA4\u4F7F\u7528\u7CFB\u7EDF\u56FE\u7247\u3002"
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var components_CoverUpload = (CoverUpload);
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 8423:
|
|
|
/*!*********************************************************!*\
|
|
|
!*** ./src/components/Video/Play/index.jsx + 1 modules ***!
|
|
|
\*********************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ Play; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/slicedToArray.js
|
|
|
var slicedToArray = __webpack_require__(27424);
|
|
|
var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/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/react/index.js
|
|
|
var react = __webpack_require__(67294);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/message/index.js + 4 modules
|
|
|
var message = __webpack_require__(2453);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/dropdown/index.js + 1 modules
|
|
|
var dropdown = __webpack_require__(85418);
|
|
|
// EXTERNAL MODULE: ./node_modules/flv.js/src/flv.js + 38 modules
|
|
|
var flv = __webpack_require__(99160);
|
|
|
// EXTERNAL MODULE: ./node_modules/hls.js/dist/hls.js
|
|
|
var dist_hls = __webpack_require__(67631);
|
|
|
var hls_default = /*#__PURE__*/__webpack_require__.n(dist_hls);
|
|
|
// EXTERNAL MODULE: ./src/utils/authority.ts
|
|
|
var authority = __webpack_require__(7);
|
|
|
// EXTERNAL MODULE: ./node_modules/react-copy-to-clipboard/lib/index.js
|
|
|
var lib = __webpack_require__(74855);
|
|
|
// EXTERNAL MODULE: ./src/utils/fullscreen.ts
|
|
|
var fullscreen = __webpack_require__(15994);
|
|
|
;// CONCATENATED MODULE: ./src/components/Video/Play/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var Playmodules = ({"watermark":"watermark___hNYlv","videovideo":"videovideo___ovOkV","animate__loop":"animate__loop___mvL6s","upDown":"upDown___SlgHv","container":"container___g1WYG","video-container":"video-container___XPkWR","video-controls":"video-controls___to0Zq","hide":"hide___NA3DV","video-progress":"video-progress___gqHsd","seek":"seek___iZHBm","seek-tooltip":"seek-tooltip___uWyXx","bottom-controls":"bottom-controls___uoIBm","left-controls":"left-controls___mBEx4","right-controls":"right-controls___e9L6r","rateOverlay":"rateOverlay___HHBWe","controlText":"controlText___M_BWR","volume-controls":"volume-controls___fa3mE","fullscreen-button":"fullscreen-button___ur0es","fullscreen-button1":"fullscreen-button1___rfaXm","pip-button":"pip-button___GFO8W","playback-animation":"playback-animation___ndURq","volume":"volume___OTmpP","hidden":"hidden___o7GkT"});
|
|
|
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(85893);
|
|
|
;// CONCATENATED MODULE: ./src/components/Video/Play/index.jsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function formatTime(timeInSeconds) {
|
|
|
if (isNaN(timeInSeconds)) {
|
|
|
return {
|
|
|
minutes: '00',
|
|
|
seconds: '00'
|
|
|
};
|
|
|
}
|
|
|
var result = new Date(timeInSeconds * 1000).toISOString().substr(11, 8);
|
|
|
return {
|
|
|
hour: result.substr(0, 2),
|
|
|
minutes: result.substr(3, 2),
|
|
|
seconds: result.substr(6, 2)
|
|
|
};
|
|
|
}
|
|
|
Object.defineProperty(HTMLMediaElement.prototype, 'playing', {
|
|
|
get: function get() {
|
|
|
return !!(this.currentTime > 0 && !this.paused && !this.ended && this.readyState > 2);
|
|
|
}
|
|
|
});
|
|
|
function compareNumbers(a, b) {
|
|
|
return a - b;
|
|
|
}
|
|
|
function getTotalEffectTime(pos) {
|
|
|
pos.sort(compareNumbers);
|
|
|
var sum = 0;
|
|
|
for (var i = 0; i < pos.length - 1; i++) {
|
|
|
var v = Math.abs(pos[i + 1] - pos[i]);
|
|
|
if (v < 21) {
|
|
|
sum += v;
|
|
|
}
|
|
|
}
|
|
|
return sum;
|
|
|
}
|
|
|
var regex = /(android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini)/i;
|
|
|
//接口文档 https://www.showdoc.cc/educoder?page_id=4029884447803706
|
|
|
|
|
|
/* harmony default export */ var Play = (/*#__PURE__*/(0,react.forwardRef)(function (_ref, ref) {
|
|
|
var _src, _src2, _src2$split;
|
|
|
var allow_skip = _ref.allow_skip,
|
|
|
src = _ref.src,
|
|
|
toLog = _ref.toLog,
|
|
|
videoId = _ref.videoId,
|
|
|
logWatchHistory = _ref.logWatchHistory,
|
|
|
_ref$courseId = _ref.courseId,
|
|
|
courseId = _ref$courseId === void 0 ? null : _ref$courseId,
|
|
|
startTime = _ref.startTime,
|
|
|
_ref$handlePause = _ref.handlePause,
|
|
|
handlePause = _ref$handlePause === void 0 ? function () {} : _ref$handlePause,
|
|
|
_ref$handlePlay = _ref.handlePlay,
|
|
|
handlePlay = _ref$handlePlay === void 0 ? function () {} : _ref$handlePlay,
|
|
|
_ref$handlePlayEnded = _ref.handlePlayEnded,
|
|
|
handlePlayEnded = _ref$handlePlayEnded === void 0 ? function () {} : _ref$handlePlayEnded;
|
|
|
src = (_src = src) === null || _src === void 0 ? void 0 : _src.replace('http://', 'https://');
|
|
|
var suf = (_src2 = src) === null || _src2 === void 0 ? void 0 : (_src2$split = _src2.split('.')) === null || _src2$split === void 0 ? void 0 : _src2$split.pop();
|
|
|
var isFlv = suf === 'flv';
|
|
|
var el = (0,react.useRef)();
|
|
|
var watermarkRef = (0,react.useRef)();
|
|
|
var warpEl = (0,react.useRef)();
|
|
|
var pauseIcon = (0,react.useRef)();
|
|
|
var playIcon = (0,react.useRef)();
|
|
|
var seekEl = (0,react.useRef)();
|
|
|
var progressBarEl = (0,react.useRef)();
|
|
|
var durationEl = (0,react.useRef)();
|
|
|
var timeElapsedEl = (0,react.useRef)();
|
|
|
var seekTooltipEl = (0,react.useRef)();
|
|
|
var noMuteVolEl = (0,react.useRef)();
|
|
|
var highVolEl = (0,react.useRef)();
|
|
|
var lowVolEl = (0,react.useRef)();
|
|
|
var volumeEl = (0,react.useRef)();
|
|
|
var deviceMatch = navigator.userAgent.toLowerCase().match(regex);
|
|
|
var device = deviceMatch ? deviceMatch[0] : 'pc';
|
|
|
var firstOnPlayFlag = (0,react.useRef)(false);
|
|
|
var user = (0,authority/* userInfo */.eY)();
|
|
|
var totalDuration = 0;
|
|
|
var sumTimePlayed = 0;
|
|
|
var lastUpdatedTime = 0;
|
|
|
var logId = null;
|
|
|
var initLog = false;
|
|
|
var timeTick = 20; //记录频率 默认20s
|
|
|
var logCount = 1;
|
|
|
var isLoging = false;
|
|
|
var isSeeking = false;
|
|
|
var pos = []; //播放时间点集
|
|
|
|
|
|
(0,react.useImperativeHandle)(ref, function () {
|
|
|
return {
|
|
|
getLastUpdatedTime: function getLastUpdatedTime() {
|
|
|
return el.current.currentTime;
|
|
|
},
|
|
|
getDuration: function getDuration() {
|
|
|
return el.current.duration;
|
|
|
}
|
|
|
};
|
|
|
});
|
|
|
message/* default.config */.ZP.config({
|
|
|
maxCount: 1,
|
|
|
getContainer: function getContainer() {
|
|
|
return warpEl.current;
|
|
|
}
|
|
|
});
|
|
|
var log = (0,react.useCallback)(function (callback) {
|
|
|
var isEnd = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
|
var params = {
|
|
|
point: el.current.currentTime
|
|
|
};
|
|
|
if (logId) {
|
|
|
params['log_id'] = logId;
|
|
|
params['watch_duration'] = getTotalEffectTime(pos); //当前观看视频时长,拖放进度条,重复的视频片段观看时,不会把重复的时长累积进来,最大时长是视频的总时长
|
|
|
params['total_duration'] = sumTimePlayed; //累计观看视频时长,拖放进度条,重复的视频片段观看时,重复观看时长要累积进来
|
|
|
} else {
|
|
|
if (courseId) {
|
|
|
params['video_id'] = parseInt(videoId, 10);
|
|
|
params['course_id'] = courseId;
|
|
|
} else {
|
|
|
params['video_id'] = videoId;
|
|
|
}
|
|
|
params['duration'] = totalDuration;
|
|
|
params['device'] = device;
|
|
|
}
|
|
|
if (isEnd) {
|
|
|
params['ed'] = '1';
|
|
|
}
|
|
|
function getLogId() {
|
|
|
return _getLogId.apply(this, arguments);
|
|
|
}
|
|
|
function _getLogId() {
|
|
|
_getLogId = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var id;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
isLoging = true;
|
|
|
_context.next = 3;
|
|
|
return logWatchHistory(params);
|
|
|
case 3:
|
|
|
id = _context.sent;
|
|
|
logId = id;
|
|
|
isLoging = false;
|
|
|
if (callback) {
|
|
|
callback();
|
|
|
}
|
|
|
case 7:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return _getLogId.apply(this, arguments);
|
|
|
}
|
|
|
getLogId();
|
|
|
}, [videoId, courseId]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
var _src3;
|
|
|
if (el.current) {
|
|
|
pauseIcon.current.style.display = 'none';
|
|
|
playIcon.current.style.display = 'block';
|
|
|
}
|
|
|
message/* default.destroy */.ZP.destroy();
|
|
|
var player = null;
|
|
|
if (flv/* default.isSupported */.Z.isSupported && isFlv && src && ((_src3 = src) === null || _src3 === void 0 ? void 0 : _src3.indexOf('.m3u8')) < 0) {
|
|
|
player = flv/* default.createPlayer */.Z.createPlayer({
|
|
|
type: 'flv',
|
|
|
volume: 0.8,
|
|
|
cors: true,
|
|
|
url: src,
|
|
|
muted: false
|
|
|
});
|
|
|
if (el.current) {
|
|
|
player.attachMediaElement(el.current);
|
|
|
player.load();
|
|
|
}
|
|
|
} else {
|
|
|
el.current.setAttribute('src', src);
|
|
|
}
|
|
|
updateVolumeIcon();
|
|
|
return function () {
|
|
|
if (player) {
|
|
|
player.unload();
|
|
|
player.pause();
|
|
|
player.destroy();
|
|
|
player = null;
|
|
|
}
|
|
|
};
|
|
|
}, [el, isFlv, src]);
|
|
|
function playIconStatus() {
|
|
|
if (el.current.paused) {
|
|
|
pauseIcon.current.style.display = 'none';
|
|
|
playIcon.current.style.display = 'block';
|
|
|
} else {
|
|
|
pauseIcon.current.style.display = 'block';
|
|
|
playIcon.current.style.display = 'none';
|
|
|
}
|
|
|
}
|
|
|
function updateVolumeIcon() {
|
|
|
noMuteVolEl.current.style.display = 'none';
|
|
|
lowVolEl.current.style.display = 'none';
|
|
|
highVolEl.current.style.display = 'none';
|
|
|
if (el.current.muted || el.current.volume === 0) {
|
|
|
noMuteVolEl.current.style.display = 'block';
|
|
|
} else if (el.current.volume > 0 && el.current.volume <= 0.5) {
|
|
|
lowVolEl.current.style.display = 'block';
|
|
|
} else {
|
|
|
highVolEl.current.style.display = 'block';
|
|
|
}
|
|
|
}
|
|
|
(0,react.useEffect)(function () {
|
|
|
var playButton = document.getElementById('play');
|
|
|
var playbackIcons = document.querySelectorAll('.playback-icons use');
|
|
|
function onPlay() {
|
|
|
handlePlay();
|
|
|
if (startTime && !firstOnPlayFlag.current) {
|
|
|
el.current.currentTime = startTime;
|
|
|
}
|
|
|
firstOnPlayFlag.current = true;
|
|
|
pos.push(el.current.currentTime);
|
|
|
if (!initLog) {
|
|
|
initLog = true;
|
|
|
if (toLog) {
|
|
|
log();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//循环播放, 累计时长不能清空
|
|
|
function onEnded() {
|
|
|
return _onEnded.apply(this, arguments);
|
|
|
}
|
|
|
function _onEnded() {
|
|
|
_onEnded = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
playIconStatus();
|
|
|
pos.push(el.current.currentTime);
|
|
|
if (toLog) {
|
|
|
log(function () {
|
|
|
logId = null;
|
|
|
lastUpdatedTime = 0;
|
|
|
initLog = false;
|
|
|
isLoging = false;
|
|
|
isSeeking = false;
|
|
|
pos = []; //有效时长重新累计,算新的一遍
|
|
|
sumTimePlayed = 0;
|
|
|
logCount = 1;
|
|
|
}, true);
|
|
|
}
|
|
|
case 3:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return _onEnded.apply(this, arguments);
|
|
|
}
|
|
|
function updateProgress() {
|
|
|
// seekEl.current.value = Math.floor(el.current.currentTime);
|
|
|
// progressBarEl.current.value = Math.floor(el.current.currentTime);
|
|
|
|
|
|
seekEl.current.value = Math.round(el.current.currentTime);
|
|
|
progressBarEl.current.value = Math.round(el.current.currentTime);
|
|
|
}
|
|
|
function updateTimeElapsed() {
|
|
|
var time = formatTime(Math.round(el.current.currentTime));
|
|
|
timeElapsedEl.current.innerText = "".concat(time.hour > 0 ? time.hour + ':' : '').concat(time.minutes, ":").concat(time.seconds);
|
|
|
timeElapsedEl.current.setAttribute('datetime', "".concat(time.hour > 0 ? ' ' + time.hour + ' ' : '').concat(time.minutes, "m ").concat(time.seconds, "s"));
|
|
|
}
|
|
|
function initializeVideo() {
|
|
|
var videoDuration = Math.round(el.current.duration);
|
|
|
seekEl.current.setAttribute('max', videoDuration);
|
|
|
progressBarEl.current.setAttribute('max', videoDuration);
|
|
|
var time = formatTime(videoDuration);
|
|
|
durationEl.current.innerText = "".concat(time.hour > 0 ? time.hour + ':' : '').concat(time.minutes, ":").concat(time.seconds);
|
|
|
durationEl.current.setAttribute('datetime', "".concat(time.hour > 0 ? ' ' + time.hour + ' ' : '').concat(time.minutes, "m ").concat(time.seconds, "s"));
|
|
|
}
|
|
|
function onTimeupdate() {
|
|
|
var videoDuration = Math.round(el.current.duration);
|
|
|
seekEl.current.setAttribute('max', videoDuration);
|
|
|
progressBarEl.current.setAttribute('max', videoDuration);
|
|
|
var time = formatTime(videoDuration);
|
|
|
durationEl.current.innerText = "".concat(time.hour > 0 ? time.hour + ':' : '').concat(time.minutes, ":").concat(time.seconds);
|
|
|
durationEl.current.setAttribute('datetime', "".concat(time.hour > 0 ? ' ' + time.hour + ' ' : '').concat(time.minutes, "m ").concat(time.seconds, "s"));
|
|
|
updateProgress();
|
|
|
updateTimeElapsed();
|
|
|
var _watermarkRef$current = watermarkRef.current.getBoundingClientRect(),
|
|
|
width = _watermarkRef$current.width,
|
|
|
height = _watermarkRef$current.height,
|
|
|
x = _watermarkRef$current.x,
|
|
|
y = _watermarkRef$current.y;
|
|
|
if (x < 0 || y < 0 || !width) {
|
|
|
// el.current.src = '';
|
|
|
// el.current.pause();
|
|
|
// message.warning({
|
|
|
// content: '当前操作非法,已禁止观看视频',
|
|
|
// key: 'watermarkRef',
|
|
|
// });
|
|
|
return;
|
|
|
}
|
|
|
if (!isSeeking) {
|
|
|
var newTime = el.current.currentTime;
|
|
|
var timeDiff = newTime - lastUpdatedTime;
|
|
|
//currenttime update before Seeking & Seeked fired
|
|
|
if (Math.abs(timeDiff) < 10) {
|
|
|
sumTimePlayed += Math.abs(timeDiff);
|
|
|
lastUpdatedTime = newTime;
|
|
|
if (!isLoging) {
|
|
|
if (sumTimePlayed - logCount * timeTick >= 0) {
|
|
|
logCount++;
|
|
|
pos.push(lastUpdatedTime);
|
|
|
if (toLog) {
|
|
|
log();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
lastUpdatedTime = newTime;
|
|
|
if (toLog) {
|
|
|
log();
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
function onSeeking() {
|
|
|
isSeeking = true;
|
|
|
}
|
|
|
function onSeeked() {
|
|
|
if (el.current.playing) {
|
|
|
pos.push(el.current.currentTime, lastUpdatedTime);
|
|
|
}
|
|
|
lastUpdatedTime = el.current.currentTime;
|
|
|
isSeeking = false;
|
|
|
}
|
|
|
function onCanPlay() {
|
|
|
totalDuration = el.current.duration;
|
|
|
if (totalDuration <= 20) {
|
|
|
timeTick = totalDuration / 3;
|
|
|
}
|
|
|
el.current.addEventListener('play', onPlay);
|
|
|
}
|
|
|
function onFullscreenchange(e) {
|
|
|
e.preventDefault();
|
|
|
if ((0,fullscreen/* IsFull */.vp)()) {
|
|
|
el.current.style.width = '100%';
|
|
|
el.current.style.height = '100%';
|
|
|
} else {
|
|
|
el.current.style.cssText = '';
|
|
|
}
|
|
|
}
|
|
|
function onPause() {
|
|
|
handlePause();
|
|
|
}
|
|
|
function skipAhead(event) {
|
|
|
if (!allow_skip) {
|
|
|
message/* default.warning */.ZP.warning('该视频禁止快进/后退播放');
|
|
|
return;
|
|
|
}
|
|
|
var skipTo = event.target.dataset.seek ? event.target.dataset.seek : event.target.value;
|
|
|
el.current.currentTime = skipTo;
|
|
|
progressBarEl.current.value = skipTo;
|
|
|
seekEl.current.value = skipTo;
|
|
|
}
|
|
|
function updateSeekTooltip(event) {
|
|
|
var skipTo = Math.round(event.offsetX / event.target.clientWidth * parseInt(event.target.getAttribute('max'), 10));
|
|
|
seekEl.current.setAttribute('data-seek', skipTo);
|
|
|
var t = formatTime(skipTo);
|
|
|
seekTooltipEl.current.textContent = "".concat(t.hour > 0 ? t.hour + ':' : '').concat(t.minutes, ":").concat(t.seconds);
|
|
|
var rect = el.current.getBoundingClientRect();
|
|
|
seekTooltipEl.current.style.left = "".concat(event.pageX - rect.left, "px");
|
|
|
}
|
|
|
function handleKeyDown(e) {
|
|
|
switch (e.code) {
|
|
|
case 'Space':
|
|
|
e.preventDefault(); //除了需求相关的按键外其余的按键需要保留默认行为,所以preventDefault写在switch里面
|
|
|
togglePlay();
|
|
|
break;
|
|
|
case 'ArrowRight':
|
|
|
e.preventDefault();
|
|
|
if (!allow_skip) {
|
|
|
message/* default.warning */.ZP.warning('该视频禁止快进/后退播放');
|
|
|
break;
|
|
|
}
|
|
|
if (el.current.currentTime >= el.current.duration) {
|
|
|
break;
|
|
|
}
|
|
|
el.current.currentTime = parseInt(el.current.currentTime) + 5;
|
|
|
updateProgress();
|
|
|
break;
|
|
|
case 'ArrowLeft':
|
|
|
e.preventDefault();
|
|
|
if (!allow_skip) {
|
|
|
message/* default.warning */.ZP.warning('该视频禁止快进/后退播放');
|
|
|
break;
|
|
|
}
|
|
|
if (el.current.currentTime === 0) {
|
|
|
break;
|
|
|
}
|
|
|
el.current.currentTime = parseInt(el.current.currentTime) - 5;
|
|
|
updateProgress();
|
|
|
break;
|
|
|
case 'ArrowUp':
|
|
|
e.preventDefault();
|
|
|
if (el.current.volume < 1) {
|
|
|
el.current.volume = (parseInt(el.current.volume * 10) + 1) / 10;
|
|
|
}
|
|
|
break;
|
|
|
case 'ArrowDown':
|
|
|
e.preventDefault();
|
|
|
if (el.current.volume > 0) {
|
|
|
el.current.volume = (parseInt(el.current.volume * 10) - 1) / 10;
|
|
|
}
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
warpEl.current.addEventListener((0,fullscreen/* fullscreenChange */.gH)(), onFullscreenchange);
|
|
|
el.current.addEventListener('canplay', onCanPlay);
|
|
|
el.current.addEventListener('ended', onEnded);
|
|
|
el.current.addEventListener('seeking', onSeeking);
|
|
|
el.current.addEventListener('seeked', onSeeked);
|
|
|
el.current.addEventListener('loadedmetadata', initializeVideo);
|
|
|
seekEl.current.addEventListener('mousemove', updateSeekTooltip);
|
|
|
seekEl.current.addEventListener('input', skipAhead);
|
|
|
el.current.addEventListener('timeupdate', onTimeupdate);
|
|
|
el.current.addEventListener('pause', onPause);
|
|
|
el.current.addEventListener('volumechange', updateVolumeIcon);
|
|
|
document.addEventListener('keydown', handleKeyDown);
|
|
|
return function () {
|
|
|
var _el$current, _el$current2, _el$current3, _el$current4, _el$current5, _seekEl$current, _seekEl$current2, _el$current6, _el$current7, _el$current8, _el$current9, _el$current10;
|
|
|
(_el$current = el.current) === null || _el$current === void 0 ? void 0 : _el$current.removeEventListener('canplay', onCanPlay);
|
|
|
(_el$current2 = el.current) === null || _el$current2 === void 0 ? void 0 : _el$current2.removeEventListener('play', onPlay);
|
|
|
(_el$current3 = el.current) === null || _el$current3 === void 0 ? void 0 : _el$current3.removeEventListener('ended', onEnded);
|
|
|
(_el$current4 = el.current) === null || _el$current4 === void 0 ? void 0 : _el$current4.removeEventListener('seeking', onSeeking);
|
|
|
(_el$current5 = el.current) === null || _el$current5 === void 0 ? void 0 : _el$current5.removeEventListener('seeked', onSeeked);
|
|
|
(_seekEl$current = seekEl.current) === null || _seekEl$current === void 0 ? void 0 : _seekEl$current.removeEventListener('mousemove', updateSeekTooltip);
|
|
|
(_seekEl$current2 = seekEl.current) === null || _seekEl$current2 === void 0 ? void 0 : _seekEl$current2.removeEventListener('input', skipAhead);
|
|
|
(_el$current6 = el.current) === null || _el$current6 === void 0 ? void 0 : _el$current6.removeEventListener('timeupdate', onTimeupdate);
|
|
|
(_el$current7 = el.current) === null || _el$current7 === void 0 ? void 0 : _el$current7.removeEventListener('pause', onPause);
|
|
|
(_el$current8 = el.current) === null || _el$current8 === void 0 ? void 0 : _el$current8.removeEventListener('loadedmetadata', initializeVideo);
|
|
|
(_el$current9 = el.current) === null || _el$current9 === void 0 ? void 0 : _el$current9.removeEventListener('volumechange', updateVolumeIcon);
|
|
|
document.removeEventListener('keydown', handleKeyDown);
|
|
|
if ((_el$current10 = el.current) !== null && _el$current10 !== void 0 && _el$current10.playing) {
|
|
|
pos.push(lastUpdatedTime, el.current.currentTime);
|
|
|
if (toLog) {
|
|
|
log();
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
}, [el, src]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
var _src4;
|
|
|
el.current.onended = function () {
|
|
|
handlePlayEnded(el);
|
|
|
};
|
|
|
el.current.oncontextmenu = function () {
|
|
|
return false;
|
|
|
};
|
|
|
if (((_src4 = src) === null || _src4 === void 0 ? void 0 : _src4.indexOf('.m3u8')) > -1) {
|
|
|
if (el.current.canPlayType('application/vnd.apple.mpegurl')) {
|
|
|
el.current.src = src;
|
|
|
} else if (hls_default().isSupported()) {
|
|
|
var hls = new (hls_default())();
|
|
|
hls.loadSource(src);
|
|
|
hls.attachMedia(el.current);
|
|
|
}
|
|
|
}
|
|
|
}, [src]);
|
|
|
var _useState = (0,react.useState)(1.0),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
videoSpeed = _useState2[0],
|
|
|
setVideoSpeed = _useState2[1];
|
|
|
var togglePlay = function togglePlay() {
|
|
|
if (el.current.paused || el.current.ended) {
|
|
|
el.current.play();
|
|
|
} else {
|
|
|
el.current.pause();
|
|
|
}
|
|
|
playIconStatus();
|
|
|
};
|
|
|
function toggleMute() {
|
|
|
el.current.muted = !el.current.muted;
|
|
|
if (el.current.muted) {
|
|
|
volumeEl.current.setAttribute('data-volume', volume.value);
|
|
|
volumeEl.current.value = 0;
|
|
|
} else {
|
|
|
volumeEl.current.value = volumeEl.current.dataset.volume;
|
|
|
}
|
|
|
}
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
style: {
|
|
|
position: 'relative'
|
|
|
},
|
|
|
ref: warpEl,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
ref: watermarkRef,
|
|
|
className: "".concat(Playmodules.watermark, " animated_alternate animate__animated_10s animate__infinite animate__stepstart ").concat(Playmodules.animate__loop),
|
|
|
children: user ? user.login : ' '
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Playmodules.container,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Playmodules["video-container"],
|
|
|
id: "video-container",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Playmodules["playback-animation"],
|
|
|
id: "playback-animation",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("svg", {
|
|
|
className: Playmodules["playback-icons"],
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("use", {
|
|
|
className: "hidden",
|
|
|
href: "#play-icon"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("use", {
|
|
|
href: "#pause"
|
|
|
})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("video", {
|
|
|
className: Playmodules.video,
|
|
|
id: "video",
|
|
|
preload: "auto",
|
|
|
disablePictureInPicture: true,
|
|
|
ref: el,
|
|
|
autoPlay: false
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: "".concat(Playmodules["video-controls"], " "),
|
|
|
id: "video-controls",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Playmodules["bottom-controls"],
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Playmodules["left-controls"],
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("button", {
|
|
|
"data-title": "\u64AD\u653E/\u6682\u505C",
|
|
|
id: "play",
|
|
|
onClick: togglePlay,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("svg", {
|
|
|
className: Playmodules["playback-icons"],
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("use", {
|
|
|
ref: playIcon,
|
|
|
href: "#play-icon"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("use", {
|
|
|
ref: pauseIcon,
|
|
|
style: {
|
|
|
display: 'none'
|
|
|
},
|
|
|
href: "#pause"
|
|
|
})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Playmodules.time,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("time", {
|
|
|
id: "time-elapsed",
|
|
|
ref: timeElapsedEl,
|
|
|
children: "00:00"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: " / "
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("time", {
|
|
|
id: "duration",
|
|
|
ref: durationEl,
|
|
|
children: "00:00"
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Playmodules["right-controls"],
|
|
|
children: [allow_skip && /*#__PURE__*/(0,jsx_runtime.jsx)(dropdown/* default */.Z, {
|
|
|
placement: "top",
|
|
|
overlayClassName: Playmodules.rateOverlay,
|
|
|
getPopupContainer: function getPopupContainer(trigger) {
|
|
|
return trigger.parentNode;
|
|
|
},
|
|
|
menu: {
|
|
|
items: [{
|
|
|
key: '1',
|
|
|
label: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
onClick: function onClick() {
|
|
|
setVideoSpeed(1);
|
|
|
el.current.playbackRate = 1;
|
|
|
},
|
|
|
children: "1.0x"
|
|
|
})
|
|
|
}, {
|
|
|
key: '2',
|
|
|
label: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
onClick: function onClick() {
|
|
|
setVideoSpeed(1.5);
|
|
|
el.current.playbackRate = 1.5;
|
|
|
},
|
|
|
children: "1.5x"
|
|
|
})
|
|
|
}, {
|
|
|
key: '3',
|
|
|
label: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
onClick: function onClick() {
|
|
|
setVideoSpeed(2);
|
|
|
el.current.playbackRate = 2;
|
|
|
},
|
|
|
children: "2.0x"
|
|
|
})
|
|
|
}]
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "".concat(Playmodules.controlText, " mr5"),
|
|
|
children: "\u500D\u901F"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(lib.CopyToClipboard, {
|
|
|
text: src,
|
|
|
onCopy: function onCopy() {
|
|
|
return message/* default.success */.ZP.success('复制成功');
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("button", {
|
|
|
"data-title": '复制链接',
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "icon-lianjie2 iconfont",
|
|
|
style: {
|
|
|
fontSize: '12px',
|
|
|
color: 'white'
|
|
|
}
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Playmodules["volume-controls"],
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("button", {
|
|
|
"data-title": "\u5F00\u542F/\u5173\u95ED\u58F0\u97F3",
|
|
|
className: Playmodules["volume-button"],
|
|
|
id: "volume-button",
|
|
|
onClick: toggleMute,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
ref: noMuteVolEl,
|
|
|
className: "icon-a-bianzu8 iconfont",
|
|
|
style: {
|
|
|
fontSize: '14px',
|
|
|
color: 'white'
|
|
|
}
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
ref: lowVolEl,
|
|
|
className: "icon-shengyinkaibeifen iconfont",
|
|
|
style: {
|
|
|
fontSize: '14px',
|
|
|
color: 'white'
|
|
|
}
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
ref: highVolEl,
|
|
|
className: "icon-shengyinkai iconfont",
|
|
|
style: {
|
|
|
fontSize: '14px',
|
|
|
color: 'white'
|
|
|
}
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("input", {
|
|
|
className: Playmodules.volume,
|
|
|
id: "volume",
|
|
|
value: "1",
|
|
|
"data-mute": "0.5",
|
|
|
type: "range",
|
|
|
max: "1",
|
|
|
min: "0",
|
|
|
step: "0.01",
|
|
|
ref: volumeEl,
|
|
|
style: {
|
|
|
display: 'none'
|
|
|
},
|
|
|
onClick: updateVolumeIcon
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("button", {
|
|
|
"data-title": "\u5168\u5C4F/\u9000\u51FA\u5168\u5C4F",
|
|
|
className: Playmodules["fullscreen-button"],
|
|
|
onClick: function onClick() {
|
|
|
if ((0,fullscreen/* IsFull */.vp)()) {
|
|
|
(0,fullscreen/* exitFull */.BU)();
|
|
|
} else {
|
|
|
(0,fullscreen/* requestFullScreen */.Dj)(warpEl.current);
|
|
|
}
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "icon-fangda1 iconfont",
|
|
|
style: {
|
|
|
fontSize: '12px',
|
|
|
color: 'white'
|
|
|
}
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Playmodules["video-progress"],
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("progress", {
|
|
|
ref: progressBarEl,
|
|
|
value: "0",
|
|
|
min: "0"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("input", {
|
|
|
className: Playmodules.seek,
|
|
|
ref: seekEl,
|
|
|
value: "0",
|
|
|
min: "0",
|
|
|
type: "range",
|
|
|
step: "1"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Playmodules["seek-tooltip"],
|
|
|
ref: seekTooltipEl,
|
|
|
id: "seek-tooltip",
|
|
|
children: "00:00"
|
|
|
})]
|
|
|
})]
|
|
|
})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("svg", {
|
|
|
style: {
|
|
|
display: 'none'
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("defs", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("symbol", {
|
|
|
id: "pause",
|
|
|
viewBox: "0 0 24 24",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("path", {
|
|
|
d: "M14.016 5.016h3.984v13.969h-3.984v-13.969zM6 18.984v-13.969h3.984v13.969h-3.984z"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("symbol", {
|
|
|
id: "play-icon",
|
|
|
viewBox: "0 0 24 24",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("path", {
|
|
|
d: "M8.016 5.016l10.969 6.984-10.969 6.984v-13.969z"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("symbol", {
|
|
|
id: "volume-high",
|
|
|
viewBox: "0 0 24 24",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("path", {
|
|
|
d: "M14.016 3.234q3.047 0.656 5.016 3.117t1.969 5.648-1.969 5.648-5.016 3.117v-2.063q2.203-0.656 3.586-2.484t1.383-4.219-1.383-4.219-3.586-2.484v-2.063zM16.5 12q0 2.813-2.484 4.031v-8.063q1.031 0.516 1.758 1.688t0.727 2.344zM3 9h3.984l5.016-5.016v16.031l-5.016-5.016h-3.984v-6z"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("symbol", {
|
|
|
id: "volume-low",
|
|
|
viewBox: "0 0 24 24",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("path", {
|
|
|
d: "M5.016 9h3.984l5.016-5.016v16.031l-5.016-5.016h-3.984v-6zM18.516 12q0 2.766-2.531 4.031v-8.063q1.031 0.516 1.781 1.711t0.75 2.32z"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("symbol", {
|
|
|
id: "volume-mute",
|
|
|
viewBox: "0 0 24 24",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("path", {
|
|
|
d: "M12 3.984v4.219l-2.109-2.109zM4.266 3l16.734 16.734-1.266 1.266-2.063-2.063q-1.547 1.313-3.656 1.828v-2.063q1.172-0.328 2.25-1.172l-4.266-4.266v6.75l-5.016-5.016h-3.984v-6h4.734l-4.734-4.734zM18.984 12q0-2.391-1.383-4.219t-3.586-2.484v-2.063q3.047 0.656 5.016 3.117t1.969 5.648q0 2.203-1.031 4.172l-1.5-1.547q0.516-1.266 0.516-2.625zM16.5 12q0 0.422-0.047 0.609l-2.438-2.438v-2.203q1.031 0.516 1.758 1.688t0.727 2.344z"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("symbol", {
|
|
|
id: "fullscreen",
|
|
|
viewBox: "0 0 24 24",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("path", {
|
|
|
d: "M14.016 5.016h4.969v4.969h-1.969v-3h-3v-1.969zM17.016 17.016v-3h1.969v4.969h-4.969v-1.969h3zM5.016 9.984v-4.969h4.969v1.969h-3v3h-1.969zM6.984 14.016v3h3v1.969h-4.969v-4.969h1.969z"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("symbol", {
|
|
|
id: "fullscreen-exit",
|
|
|
viewBox: "0 0 24 24",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("path", {
|
|
|
d: "M15.984 8.016h3v1.969h-4.969v-4.969h1.969v3zM14.016 18.984v-4.969h4.969v1.969h-3v3h-1.969zM8.016 8.016v-3h1.969v4.969h-4.969v-1.969h3zM5.016 15.984v-1.969h4.969v4.969h-1.969v-3h-3z"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("symbol", {
|
|
|
id: "pip",
|
|
|
viewBox: "0 0 24 24",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("path", {
|
|
|
d: "M21 19.031v-14.063h-18v14.063h18zM23.016 18.984q0 0.797-0.609 1.406t-1.406 0.609h-18q-0.797 0-1.406-0.609t-0.609-1.406v-14.016q0-0.797 0.609-1.383t1.406-0.586h18q0.797 0 1.406 0.586t0.609 1.383v14.016zM18.984 11.016v6h-7.969v-6h7.969z"
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
}));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 25127:
|
|
|
/*!*****************************************************************!*\
|
|
|
!*** ./src/pages/Classrooms/Lists/Video/index.tsx + 12 modules ***!
|
|
|
\*****************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
// ESM COMPAT FLAG
|
|
|
__webpack_require__.r(__webpack_exports__);
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"default": function() { return /* binding */ Video; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/regeneratorRuntime.js
|
|
|
var regeneratorRuntime = __webpack_require__(17061);
|
|
|
var regeneratorRuntime_default = /*#__PURE__*/__webpack_require__.n(regeneratorRuntime);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/asyncToGenerator.js
|
|
|
var asyncToGenerator = __webpack_require__(17156);
|
|
|
var asyncToGenerator_default = /*#__PURE__*/__webpack_require__.n(asyncToGenerator);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/objectSpread2.js
|
|
|
var objectSpread2 = __webpack_require__(42122);
|
|
|
var objectSpread2_default = /*#__PURE__*/__webpack_require__.n(objectSpread2);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/slicedToArray.js
|
|
|
var slicedToArray = __webpack_require__(27424);
|
|
|
var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js
|
|
|
var objectWithoutProperties = __webpack_require__(70215);
|
|
|
var objectWithoutProperties_default = /*#__PURE__*/__webpack_require__.n(objectWithoutProperties);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
|
var react = __webpack_require__(67294);
|
|
|
// EXTERNAL MODULE: ./src/.umi-production/exports.ts + 8 modules
|
|
|
var _umi_production_exports = __webpack_require__(89214);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/menu/index.js + 11 modules
|
|
|
var menu = __webpack_require__(68508);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/layout/index.js
|
|
|
var layout = __webpack_require__(97183);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/modal/index.js + 39 modules
|
|
|
var modal = __webpack_require__(72423);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/row/index.js
|
|
|
var row = __webpack_require__(71230);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/tooltip/index.js + 3 modules
|
|
|
var tooltip = __webpack_require__(83062);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/spin/index.js + 1 modules
|
|
|
var spin = __webpack_require__(57953);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/pagination/index.js + 11 modules
|
|
|
var pagination = __webpack_require__(83338);
|
|
|
// EXTERNAL MODULE: ./src/utils/authority.ts
|
|
|
var authority = __webpack_require__(7);
|
|
|
// EXTERNAL MODULE: ./src/components/NoData/index.tsx
|
|
|
var NoData = __webpack_require__(82982);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/message/index.js + 4 modules
|
|
|
var message = __webpack_require__(2453);
|
|
|
// EXTERNAL MODULE: ./src/utils/fetch.ts
|
|
|
var fetch = __webpack_require__(84519);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(85893);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Classrooms/Lists/Video/components/DelTasks.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var DelShixun = function DelShixun(_ref) {
|
|
|
var classroomList = _ref.classroomList,
|
|
|
dispatch = _ref.dispatch,
|
|
|
cb = _ref.cb;
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
params['id'] = params['coursesId'];
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
title: "\u63D0\u793A",
|
|
|
open: classroomList.actionTabs.key === '删除' ? true : false,
|
|
|
okText: "\u786E\u5B9A",
|
|
|
cancelText: "\u53D6\u6D88",
|
|
|
onOk: /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return (0,fetch/* default */.ZP)("/api/courses/".concat(params.id, "/delete_course_video.json"), {
|
|
|
method: 'delete',
|
|
|
body: {
|
|
|
video_id: classroomList.actionTabs.data.link ? classroomList.actionTabs.data.id : classroomList.actionTabs.data.course_video_id,
|
|
|
is_link: classroomList.actionTabs.data.link ? true : ''
|
|
|
}
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
if (res.status === 0) {
|
|
|
message/* default.success */.ZP.success('删除成功');
|
|
|
dispatch({
|
|
|
type: 'classroomList/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
dispatch({
|
|
|
type: 'classroomList/setUpdateData',
|
|
|
payload: Math.random()
|
|
|
});
|
|
|
dispatch({
|
|
|
type: 'classroomList/getClassroomLeftMenus',
|
|
|
payload: {
|
|
|
id: params.coursesId
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
})),
|
|
|
onCancel: function onCancel() {
|
|
|
dispatch({
|
|
|
type: 'classroomList/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
children: "\u662F\u5426\u786E\u8BA4\u5220\u9664\uFF1F"
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var DelTasks = ((0,_umi_production_exports.connect)(function (_ref3) {
|
|
|
var classroomList = _ref3.classroomList;
|
|
|
return {
|
|
|
classroomList: classroomList
|
|
|
};
|
|
|
})(DelShixun));
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/defineProperty.js
|
|
|
var defineProperty = __webpack_require__(38416);
|
|
|
var defineProperty_default = /*#__PURE__*/__webpack_require__.n(defineProperty);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/tree-select/index.js + 67 modules
|
|
|
var tree_select = __webpack_require__(42167);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/form/index.js + 17 modules
|
|
|
var es_form = __webpack_require__(25159);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/button/index.js
|
|
|
var es_button = __webpack_require__(71577);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/input/index.js + 5 modules
|
|
|
var input = __webpack_require__(79531);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/upload/index.js + 24 modules
|
|
|
var upload = __webpack_require__(31365);
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/icons/UploadOutlined.js + 1 modules
|
|
|
var UploadOutlined = __webpack_require__(88484);
|
|
|
// EXTERNAL MODULE: ./node_modules/@ant-design/icons/es/icons/CloseCircleFilled.js + 1 modules
|
|
|
var CloseCircleFilled = __webpack_require__(4340);
|
|
|
// EXTERNAL MODULE: ./src/utils/env.ts + 1 modules
|
|
|
var env = __webpack_require__(59758);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Classrooms/Lists/Video/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var Videomodules = ({"flex_box_center":"flex_box_center___ZHxNf","flex_space_between":"flex_space_between___SMaaw","flex_box_vertical_center":"flex_box_vertical_center___xMq2f","flex_box_center_end":"flex_box_center_end___qU72x","flex_box_column":"flex_box_column___ik6jh","bg":"bg___x4BYS","menu":"menu___YqpjW","desc":"desc___n62tO","otherLink":"otherLink___jkav5","card":"card___BlTD5","img":"img___AYe38"});
|
|
|
// EXTERNAL MODULE: ./src/utils/util.tsx
|
|
|
var util = __webpack_require__(29427);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Classrooms/Lists/Video/components/AddLink.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var TreeNode = tree_select/* default.TreeNode */.Z.TreeNode;
|
|
|
var EditAttendance = function EditAttendance(_ref) {
|
|
|
var _classroomList$action9, _classroomList$action10, _ref3;
|
|
|
var classroomList = _ref.classroomList,
|
|
|
loading = _ref.loading,
|
|
|
user = _ref.user,
|
|
|
dispatch = _ref.dispatch;
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
params['id'] = params['coursesId'];
|
|
|
var detailAttendancesDetail = classroomList.detailAttendancesDetail,
|
|
|
actionTabs = classroomList.actionTabs;
|
|
|
var _Form$useForm = es_form/* default.useForm */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
var _useState = (0,react.useState)(''),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
attachment_id = _useState2[0],
|
|
|
setImageUrl = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)(false),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
imgLoading = _useState4[0],
|
|
|
setImgLoading = _useState4[1];
|
|
|
(0,react.useEffect)(function () {
|
|
|
var _classroomList$action, _classroomList$action2;
|
|
|
if (((_classroomList$action = classroomList.actionTabs) === null || _classroomList$action === void 0 ? void 0 : _classroomList$action.key) === '增加外链' && (_classroomList$action2 = classroomList.actionTabs) !== null && _classroomList$action2 !== void 0 && _classroomList$action2.data) {
|
|
|
var _classroomList$action3, _classroomList$action4, _classroomList$action5, _classroomList$action6, _classroomList$action7, _classroomList$action8;
|
|
|
form.setFieldsValue({
|
|
|
name: (_classroomList$action3 = classroomList.actionTabs) === null || _classroomList$action3 === void 0 ? void 0 : (_classroomList$action4 = _classroomList$action3.data) === null || _classroomList$action4 === void 0 ? void 0 : _classroomList$action4.title,
|
|
|
link: (_classroomList$action5 = classroomList.actionTabs) === null || _classroomList$action5 === void 0 ? void 0 : (_classroomList$action6 = _classroomList$action5.data) === null || _classroomList$action6 === void 0 ? void 0 : _classroomList$action6.link
|
|
|
});
|
|
|
setImageUrl((_classroomList$action7 = classroomList.actionTabs) === null || _classroomList$action7 === void 0 ? void 0 : (_classroomList$action8 = _classroomList$action7.data) === null || _classroomList$action8 === void 0 ? void 0 : _classroomList$action8.attachment_id);
|
|
|
}
|
|
|
}, [(_classroomList$action9 = classroomList.actionTabs) === null || _classroomList$action9 === void 0 ? void 0 : _classroomList$action9.key]);
|
|
|
var uploadButton = /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
loading: imgLoading,
|
|
|
icon: /*#__PURE__*/(0,jsx_runtime.jsx)(UploadOutlined/* default */.Z, {}),
|
|
|
children: "\u9009\u62E9\u4E0A\u4F20\u6587\u4EF6"
|
|
|
});
|
|
|
var renderImg = function renderImg() {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Videomodules.img,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: env/* default.API_SERVER */.Z.API_SERVER + "/api/attachments/" + attachment_id,
|
|
|
alt: "avatar",
|
|
|
style: {
|
|
|
width: 288
|
|
|
}
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(CloseCircleFilled/* default */.Z, {
|
|
|
onClick: function onClick() {
|
|
|
return setImageUrl('');
|
|
|
},
|
|
|
style: {
|
|
|
fontSize: '16px',
|
|
|
color: 'red'
|
|
|
}
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
var handleChange = function handleChange(info) {
|
|
|
if (info.file.status === 'uploading') {
|
|
|
setImgLoading(true);
|
|
|
return;
|
|
|
}
|
|
|
if (info.file.status === 'done') {
|
|
|
var _info$file, _info$file$response;
|
|
|
setImgLoading(false);
|
|
|
setImageUrl(info === null || info === void 0 ? void 0 : (_info$file = info.file) === null || _info$file === void 0 ? void 0 : (_info$file$response = _info$file.response) === null || _info$file$response === void 0 ? void 0 : _info$file$response.id);
|
|
|
}
|
|
|
};
|
|
|
var cancel = function cancel() {
|
|
|
form.resetFields();
|
|
|
dispatch({
|
|
|
type: 'classroomList/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
setImageUrl('');
|
|
|
setImgLoading(false);
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
title: (_classroomList$action10 = classroomList.actionTabs) !== null && _classroomList$action10 !== void 0 && _classroomList$action10.data ? '编辑外链视频' : "增加外链",
|
|
|
open: classroomList.actionTabs.key === '增加外链' ? true : false,
|
|
|
okText: "\u786E\u5B9A",
|
|
|
cancelText: "\u53D6\u6D88",
|
|
|
width: 640,
|
|
|
okButtonProps: {
|
|
|
loading: imgLoading
|
|
|
},
|
|
|
bodyStyle: {
|
|
|
minHeight: 200
|
|
|
},
|
|
|
onOk: /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var _classroomList$action11;
|
|
|
var formValue, res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.t0 = (objectSpread2_default());
|
|
|
_context.t1 = {};
|
|
|
_context.next = 4;
|
|
|
return form.validateFields();
|
|
|
case 4:
|
|
|
_context.t2 = _context.sent;
|
|
|
formValue = (0, _context.t0)(_context.t1, _context.t2);
|
|
|
setImgLoading(true);
|
|
|
if ((_classroomList$action11 = classroomList.actionTabs) !== null && _classroomList$action11 !== void 0 && _classroomList$action11.data) {
|
|
|
_context.next = 13;
|
|
|
break;
|
|
|
}
|
|
|
_context.next = 10;
|
|
|
return (0,fetch/* default */.ZP)("/api/courses/".concat(params.id, "/course_videos.json"), {
|
|
|
method: 'post',
|
|
|
body: objectSpread2_default()(objectSpread2_default()({}, formValue), {}, {
|
|
|
category_id: params.categoryId === '0' ? '' : params.categoryId,
|
|
|
attachment_id: attachment_id
|
|
|
})
|
|
|
});
|
|
|
case 10:
|
|
|
_context.t3 = _context.sent;
|
|
|
_context.next = 16;
|
|
|
break;
|
|
|
case 13:
|
|
|
_context.next = 15;
|
|
|
return (0,fetch/* default */.ZP)("/api/course_videos/".concat(actionTabs.data.id, ".json"), {
|
|
|
method: 'put',
|
|
|
body: objectSpread2_default()(objectSpread2_default()({}, formValue), {}, {
|
|
|
title: formValue.name,
|
|
|
new_attachment_id: attachment_id
|
|
|
})
|
|
|
});
|
|
|
case 15:
|
|
|
_context.t3 = _context.sent;
|
|
|
case 16:
|
|
|
res = _context.t3;
|
|
|
if (!(res.status === 0)) {
|
|
|
_context.next = 23;
|
|
|
break;
|
|
|
}
|
|
|
(0,util/* trackEvent */.L9)(['教学课堂', '视频', '增加外链']);
|
|
|
message/* default.success */.ZP.success('修改成功');
|
|
|
dispatch({
|
|
|
type: 'classroomList/setUpdateData',
|
|
|
payload: Math.random()
|
|
|
});
|
|
|
cancel();
|
|
|
return _context.abrupt("return");
|
|
|
case 23:
|
|
|
setImgLoading(false);
|
|
|
case 24:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
})),
|
|
|
onCancel: function onCancel() {
|
|
|
cancel();
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, {
|
|
|
form: form,
|
|
|
initialValues: (_ref3 = {}, defineProperty_default()(_ref3, 'name', ''), defineProperty_default()(_ref3, 'link', ''), _ref3),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u89C6\u9891\u6807\u9898",
|
|
|
name: "name",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入!'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
maxLength: 60
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u89C6\u9891\u94FE\u63A5",
|
|
|
name: "link",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入!'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
// name="file"
|
|
|
label: "\u4E0A\u4F20\u5C01\u9762\u56FE:",
|
|
|
children: attachment_id ? renderImg() : /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(upload/* default */.Z, {
|
|
|
withCredentials: true,
|
|
|
name: "file",
|
|
|
showUploadList: false,
|
|
|
action: "".concat(env/* default.API_SERVER */.Z.API_SERVER, "/api/attachments.json"),
|
|
|
onChange: handleChange,
|
|
|
accept: "image/*",
|
|
|
children: uploadButton
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "mt20 c-light-black",
|
|
|
children: "\u8BF4\u660E\uFF1A\u652F\u6301\u4E0A\u4F20jpg/png\u7B49\u683C\u5F0F\u6587\u4EF6\uFF0C\u6587\u4EF6\u5927\u5C0F\u4E0D\u80FD\u8D85\u8FC72M,\u5EFA\u8BAE\u4F7F\u7528288*158\u50CF\u7D20\uFF1B"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: "c-light-black",
|
|
|
children: "\u5982\u4E0D\u4E0A\u4F20\uFF0C\u9ED8\u8BA4\u4F7F\u7528\u7CFB\u7EDF\u56FE\u7247\u3002"
|
|
|
})]
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var AddLink = ((0,_umi_production_exports.connect)(function (_ref4) {
|
|
|
var classroomList = _ref4.classroomList,
|
|
|
user = _ref4.user,
|
|
|
loading = _ref4.loading;
|
|
|
return {
|
|
|
classroomList: classroomList,
|
|
|
user: user,
|
|
|
loading: loading
|
|
|
};
|
|
|
})(EditAttendance));
|
|
|
;// CONCATENATED MODULE: ./src/pages/Classrooms/Lists/Video/components/Edit.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var Edit_TreeNode = tree_select/* default.TreeNode */.Z.TreeNode;
|
|
|
var Edit_EditAttendance = function EditAttendance(_ref) {
|
|
|
var _ref3;
|
|
|
var classroomList = _ref.classroomList,
|
|
|
loading = _ref.loading,
|
|
|
dispatch = _ref.dispatch;
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
params['id'] = params['coursesId'];
|
|
|
var detailAttendancesDetail = classroomList.detailAttendancesDetail,
|
|
|
actionTabs = classroomList.actionTabs;
|
|
|
var _Form$useForm = es_form/* default.useForm */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
title: "\u89C6\u9891\u6807\u9898\u7F16\u8F91",
|
|
|
open: classroomList.actionTabs.key === '编辑' ? true : false,
|
|
|
okText: "\u786E\u5B9A",
|
|
|
cancelText: "\u53D6\u6D88",
|
|
|
bodyStyle: {
|
|
|
minHeight: 200
|
|
|
},
|
|
|
onOk: /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var formValue, res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.t0 = (objectSpread2_default());
|
|
|
_context.t1 = {};
|
|
|
_context.next = 4;
|
|
|
return form.validateFields();
|
|
|
case 4:
|
|
|
_context.t2 = _context.sent;
|
|
|
formValue = (0, _context.t0)(_context.t1, _context.t2);
|
|
|
_context.next = 8;
|
|
|
return (0,fetch/* default */.ZP)("/api/course_videos/".concat(actionTabs.data.id, ".json"), {
|
|
|
method: 'put',
|
|
|
body: objectSpread2_default()({}, formValue)
|
|
|
});
|
|
|
case 8:
|
|
|
res = _context.sent;
|
|
|
if (res.status === 0) {
|
|
|
message/* default.success */.ZP.success('修改成功');
|
|
|
dispatch({
|
|
|
type: 'classroomList/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
}
|
|
|
case 10:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
})),
|
|
|
onCancel: function onCancel() {
|
|
|
dispatch({
|
|
|
type: 'classroomList/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
},
|
|
|
children: actionTabs.data && /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, {
|
|
|
form: form,
|
|
|
initialValues: (_ref3 = {}, defineProperty_default()(_ref3, 'name', actionTabs.data.title), defineProperty_default()(_ref3, 'link', actionTabs.data.link), _ref3),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u89C6\u9891\u6807\u9898",
|
|
|
name: "name",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入!'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
maxLength: 60
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u89C6\u9891\u94FE\u63A5",
|
|
|
name: "link",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入!'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {})
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var Edit = ((0,_umi_production_exports.connect)(function (_ref4) {
|
|
|
var classroomList = _ref4.classroomList,
|
|
|
loading = _ref4.loading;
|
|
|
return {
|
|
|
classroomList: classroomList,
|
|
|
loading: loading
|
|
|
};
|
|
|
})(Edit_EditAttendance));
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/radio/index.js + 5 modules
|
|
|
var es_radio = __webpack_require__(78045);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/table/index.js + 90 modules
|
|
|
var table = __webpack_require__(63889);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/checkbox/index.js + 3 modules
|
|
|
var es_checkbox = __webpack_require__(84567);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/progress/index.js + 11 modules
|
|
|
var progress = __webpack_require__(69814);
|
|
|
// EXTERNAL MODULE: ./src/components/CoverUpload/index.tsx + 1 modules
|
|
|
var CoverUpload = __webpack_require__(93899);
|
|
|
// EXTERNAL MODULE: ./src/utils/aliyunUpload.ts
|
|
|
var aliyunUpload = __webpack_require__(77320);
|
|
|
// EXTERNAL MODULE: ./src/service/user.ts
|
|
|
var service_user = __webpack_require__(58839);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Classrooms/Lists/Video/components/VideoEdit.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var VideoEdit_TreeNode = tree_select/* default.TreeNode */.Z.TreeNode;
|
|
|
var VideoEdit_EditAttendance = function EditAttendance(_ref) {
|
|
|
var _video$file$name;
|
|
|
var classroomList = _ref.classroomList,
|
|
|
user = _ref.user,
|
|
|
loading = _ref.loading,
|
|
|
dispatch = _ref.dispatch;
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
params['id'] = params['coursesId'];
|
|
|
var detailAttendancesDetail = classroomList.detailAttendancesDetail,
|
|
|
actionTabs = classroomList.actionTabs;
|
|
|
var _Form$useForm = es_form/* default.useForm */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
var _useState = (0,react.useState)(false),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
imgLoading = _useState2[0],
|
|
|
setImgLoading = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)([]),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
tabsList = _useState4[0],
|
|
|
setTabsList = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)(),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
video = _useState6[0],
|
|
|
setVideo = _useState6[1];
|
|
|
var files = (0,react.useRef)();
|
|
|
var uploader = (0,react.useRef)();
|
|
|
var fileTypes = ["avi", "flv", "f4v", "m4v", "mov", "mp4", "rmvb", "swf", "webm", "wmv"];
|
|
|
var uploadNameSizeSeperator = ' ';
|
|
|
var _useState7 = (0,react.useState)(null),
|
|
|
_useState8 = slicedToArray_default()(_useState7, 2),
|
|
|
videoId = _useState8[0],
|
|
|
setvideoId = _useState8[1];
|
|
|
var _useState9 = (0,react.useState)(null),
|
|
|
_useState10 = slicedToArray_default()(_useState9, 2),
|
|
|
nowVideoId = _useState10[0],
|
|
|
setNowVideoId = _useState10[1];
|
|
|
(0,react.useEffect)(function () {
|
|
|
var _actionTabs$data, _actionTabs$data2;
|
|
|
if (classroomList.actionTabs.key === '编辑视频') form.setFieldsValue({
|
|
|
title: actionTabs.data.title,
|
|
|
attachment_id: actionTabs === null || actionTabs === void 0 ? void 0 : (_actionTabs$data = actionTabs.data) === null || _actionTabs$data === void 0 ? void 0 : _actionTabs$data.attachment_id,
|
|
|
allow_skip: actionTabs === null || actionTabs === void 0 ? void 0 : (_actionTabs$data2 = actionTabs.data) === null || _actionTabs$data2 === void 0 ? void 0 : _actionTabs$data2.allow_skip
|
|
|
});
|
|
|
!!asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var _actionTabs$data3;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
if ((_actionTabs$data3 = actionTabs.data) !== null && _actionTabs$data3 !== void 0 && _actionTabs$data3.course_video_id) {
|
|
|
getTabsList();
|
|
|
}
|
|
|
case 1:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}))();
|
|
|
}, [classroomList.actionTabs.key]);
|
|
|
var getTabsList = /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2() {
|
|
|
var _actionTabs$params, _actionTabs$data4;
|
|
|
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/courses/".concat((_actionTabs$params = actionTabs.params) === null || _actionTabs$params === void 0 ? void 0 : _actionTabs$params.coursesId, "/course_videos/video_history?course_video_id=").concat((_actionTabs$data4 = actionTabs.data) === null || _actionTabs$data4 === void 0 ? void 0 : _actionTabs$data4.course_video_id), {
|
|
|
method: "get"
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context2.sent;
|
|
|
setTabsList(res.data);
|
|
|
res.data.forEach(function (item) {
|
|
|
if (item.checked) {
|
|
|
setvideoId(item.id);
|
|
|
setNowVideoId(item.id);
|
|
|
}
|
|
|
});
|
|
|
case 5:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function getTabsList() {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var columns = [{
|
|
|
title: "",
|
|
|
dataIndex: 'checked',
|
|
|
align: 'center',
|
|
|
// render: (text: boolean, record: any, index: number) =><Checkbox checked={text} onChange={()=>handleChange(record)} />
|
|
|
render: function render(text, record, index) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default.Group */.ZP.Group, {
|
|
|
onChange: function onChange() {
|
|
|
return handleChange(record);
|
|
|
},
|
|
|
value: nowVideoId,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default */.ZP, {
|
|
|
value: record.id
|
|
|
})
|
|
|
});
|
|
|
}
|
|
|
}, {
|
|
|
title: "视频名称",
|
|
|
width: 300,
|
|
|
dataIndex: 'title'
|
|
|
}, {
|
|
|
title: "版本号",
|
|
|
dataIndex: 'version'
|
|
|
}, {
|
|
|
title: "操作",
|
|
|
render: function render(text, record, index) {
|
|
|
return record.id != videoId && /*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
type: "link",
|
|
|
danger: true,
|
|
|
onClick: function onClick() {
|
|
|
return handleDeleteVideo(record);
|
|
|
},
|
|
|
children: "\u5220\u9664"
|
|
|
});
|
|
|
}
|
|
|
}];
|
|
|
var handleDeleteVideo = /*#__PURE__*/function () {
|
|
|
var _ref4 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee3(record) {
|
|
|
var _actionTabs$params2;
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee3$(_context3) {
|
|
|
while (1) switch (_context3.prev = _context3.next) {
|
|
|
case 0:
|
|
|
if (!(tabsList.length == 1)) {
|
|
|
_context3.next = 2;
|
|
|
break;
|
|
|
}
|
|
|
return _context3.abrupt("return");
|
|
|
case 2:
|
|
|
_context3.next = 4;
|
|
|
return (0,fetch/* default */.ZP)("/api/courses/".concat((_actionTabs$params2 = actionTabs.params) === null || _actionTabs$params2 === void 0 ? void 0 : _actionTabs$params2.coursesId, "/delete_course_video.json"), {
|
|
|
method: 'delete',
|
|
|
body: {
|
|
|
video_id: record.id,
|
|
|
is_link: classroomList.actionTabs.data.link ? true : ''
|
|
|
}
|
|
|
});
|
|
|
case 4:
|
|
|
res = _context3.sent;
|
|
|
if (res.message == "success") getTabsList();
|
|
|
case 6:
|
|
|
case "end":
|
|
|
return _context3.stop();
|
|
|
}
|
|
|
}, _callee3);
|
|
|
}));
|
|
|
return function handleDeleteVideo(_x) {
|
|
|
return _ref4.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var handleChange = function handleChange(record) {
|
|
|
setTabsList(tabsList.map(function (item) {
|
|
|
if (item.id == record.id) {
|
|
|
item.checked = true;
|
|
|
setNowVideoId(record.id);
|
|
|
} else item.checked = false;
|
|
|
return item;
|
|
|
}));
|
|
|
};
|
|
|
var handleUpload = function handleUpload(e) {
|
|
|
var _user$userInfo;
|
|
|
var file = e.target.files[0];
|
|
|
if (!file) return;
|
|
|
var fileSize = file.size / 1024 / 1024 / 1024;
|
|
|
var fileType = file.name.split(".").slice(-1)[0].toLowerCase();
|
|
|
if (fileSize > 1) {
|
|
|
message/* default.error */.ZP.error("".concat(file.name, " \u6587\u4EF6\u65E0\u6CD5\u4E0A\u4F20\u3002\u8D85\u8FC7\u6587\u4EF6\u5927\u5C0F\u9650\u5236(1G)"));
|
|
|
return;
|
|
|
}
|
|
|
if (fileTypes.indexOf(fileType) == -1) {
|
|
|
message/* default.error */.ZP.error("".concat(file.name, " \u6587\u4EF6\u65E0\u6CD5\u4E0A\u4F20,\u5F53\u524D\u4EC5\u9650\u652F\u6301").concat(fileTypes.join(", "), "\u6587\u4EF6"));
|
|
|
return;
|
|
|
}
|
|
|
var userData = '{"Vod":{}}';
|
|
|
if (uploader.current) {
|
|
|
uploader.current.addFile(file, null, null, null, userData);
|
|
|
return;
|
|
|
}
|
|
|
var videoInfo = {};
|
|
|
(0,aliyunUpload/* getUploader */.o)((_user$userInfo = user.userInfo) === null || _user$userInfo === void 0 ? void 0 : _user$userInfo.login, '', {
|
|
|
create: !uploader,
|
|
|
onUploadProgress: function onUploadProgress(uploadInfo, totalSize, progress) {
|
|
|
videoInfo = objectSpread2_default()(objectSpread2_default()({}, uploadInfo), {}, {
|
|
|
loaded: Math.ceil(progress * 100)
|
|
|
});
|
|
|
setVideo(videoInfo);
|
|
|
},
|
|
|
onUploadFailed: function onUploadFailed(uploadInfo) {
|
|
|
message/* default.info */.ZP.info('视频云服务出现异常,请重新上传。');
|
|
|
},
|
|
|
onUploadEnd: function onUploadEnd(uploadInfo) {},
|
|
|
onUploadSucceed: function onUploadSucceed(uploadInfo) {},
|
|
|
onUploadError: function onUploadError(uploadInfo) {},
|
|
|
gotUploader: function () {
|
|
|
var _gotUploader = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee4(_uploader) {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee4$(_context4) {
|
|
|
while (1) switch (_context4.prev = _context4.next) {
|
|
|
case 0:
|
|
|
_uploader.addFile(file, null, null, null, userData);
|
|
|
uploader.current = _uploader;
|
|
|
case 2:
|
|
|
case "end":
|
|
|
return _context4.stop();
|
|
|
}
|
|
|
}, _callee4);
|
|
|
}));
|
|
|
function gotUploader(_x2) {
|
|
|
return _gotUploader.apply(this, arguments);
|
|
|
}
|
|
|
return gotUploader;
|
|
|
}()
|
|
|
});
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
title: "\u89C6\u9891\u7F16\u8F91",
|
|
|
open: classroomList.actionTabs.key === '编辑视频' ? true : false,
|
|
|
okText: "\u786E\u5B9A",
|
|
|
cancelText: "\u53D6\u6D88",
|
|
|
width: 640,
|
|
|
destroyOnClose: true,
|
|
|
confirmLoading: imgLoading,
|
|
|
onOk: /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee5() {
|
|
|
var _actionTabs$data6;
|
|
|
var formValue, body, _user$userInfo2, _actionTabs$data5, res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee5$(_context5) {
|
|
|
while (1) switch (_context5.prev = _context5.next) {
|
|
|
case 0:
|
|
|
if (!(video && video.loaded != 100)) {
|
|
|
_context5.next = 3;
|
|
|
break;
|
|
|
}
|
|
|
message/* default.warning */.ZP.warning("视频上传中请稍等!");
|
|
|
return _context5.abrupt("return");
|
|
|
case 3:
|
|
|
_context5.t0 = (objectSpread2_default());
|
|
|
_context5.t1 = {};
|
|
|
_context5.next = 7;
|
|
|
return form.validateFields();
|
|
|
case 7:
|
|
|
_context5.t2 = _context5.sent;
|
|
|
formValue = (0, _context5.t0)(_context5.t1, _context5.t2);
|
|
|
body = objectSpread2_default()({}, formValue);
|
|
|
if (!video) {
|
|
|
_context5.next = 15;
|
|
|
break;
|
|
|
}
|
|
|
_context5.next = 13;
|
|
|
return (0,service_user/* batchPublish */.dt)({
|
|
|
username: (_user$userInfo2 = user.userInfo) === null || _user$userInfo2 === void 0 ? void 0 : _user$userInfo2.login,
|
|
|
videos: [{
|
|
|
video_id: video.videoId,
|
|
|
title: form.getFieldValue("title"),
|
|
|
filename: video.file.name,
|
|
|
attachment_id: form.getFieldValue("attachment_id"),
|
|
|
course_id: params.coursesId,
|
|
|
category_id: '',
|
|
|
course_video_id: (_actionTabs$data5 = actionTabs.data) === null || _actionTabs$data5 === void 0 ? void 0 : _actionTabs$data5.course_video_id
|
|
|
}]
|
|
|
});
|
|
|
case 13:
|
|
|
_context5.next = 16;
|
|
|
break;
|
|
|
case 15:
|
|
|
tabsList.forEach(function (item) {
|
|
|
if (item.checked) body["set_id"] = item.id;
|
|
|
});
|
|
|
case 16:
|
|
|
_context5.next = 18;
|
|
|
return (0,fetch/* default */.ZP)("/api/course_videos/".concat(actionTabs === null || actionTabs === void 0 ? void 0 : (_actionTabs$data6 = actionTabs.data) === null || _actionTabs$data6 === void 0 ? void 0 : _actionTabs$data6.course_video_id, "/change_cover.json"), {
|
|
|
method: 'put',
|
|
|
body: body
|
|
|
});
|
|
|
case 18:
|
|
|
res = _context5.sent;
|
|
|
if (res) {
|
|
|
message/* default.success */.ZP.success('修改成功');
|
|
|
dispatch({
|
|
|
type: 'classroomList/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
dispatch({
|
|
|
type: 'classroomList/setUpdateData',
|
|
|
payload: Math.random()
|
|
|
});
|
|
|
}
|
|
|
setVideo(void 0);
|
|
|
case 21:
|
|
|
case "end":
|
|
|
return _context5.stop();
|
|
|
}
|
|
|
}, _callee5);
|
|
|
})),
|
|
|
onCancel: function onCancel() {
|
|
|
dispatch({
|
|
|
type: 'classroomList/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
setVideo(void 0);
|
|
|
if (uploader.current) {
|
|
|
var _uploader$current, _uploader$current$del;
|
|
|
(_uploader$current = uploader.current) === null || _uploader$current === void 0 ? void 0 : (_uploader$current$del = _uploader$current.deleteFile) === null || _uploader$current$del === void 0 ? void 0 : _uploader$current$del.call(_uploader$current, uploader.current._curIndex);
|
|
|
}
|
|
|
},
|
|
|
children: actionTabs.data && /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, {
|
|
|
form: form,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u89C6\u9891\u6807\u9898",
|
|
|
name: "title",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入!'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
maxLength: 60
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
name: "attachment_id",
|
|
|
label: "\u4E0A\u4F20\u5C01\u9762\u56FE:",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(CoverUpload/* default */.Z, {
|
|
|
getFileProgress: function getFileProgress(info) {
|
|
|
if (info.file.status === 'uploading') {
|
|
|
setImgLoading(true);
|
|
|
return;
|
|
|
}
|
|
|
if (info.file.status === 'done') {
|
|
|
setImgLoading(false);
|
|
|
}
|
|
|
}
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(table/* default */.Z, {
|
|
|
pagination: false,
|
|
|
columns: columns,
|
|
|
dataSource: tabsList
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
name: "allow_skip",
|
|
|
label: "\u64AD\u653E\u8BBE\u7F6E",
|
|
|
valuePropName: "checked",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_checkbox/* default */.Z, {
|
|
|
children: "\u5141\u8BB8\u5FEB\u8FDB\u64AD\u653E"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default.Item */.Z.Item, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_button/* default */.ZP, {
|
|
|
disabled: video,
|
|
|
type: "primary",
|
|
|
style: {
|
|
|
marginBottom: "10px"
|
|
|
},
|
|
|
ghost: true,
|
|
|
onClick: function onClick() {
|
|
|
return files.current.click();
|
|
|
},
|
|
|
children: "\u66F4\u65B0\u7248\u672C"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("input", {
|
|
|
ref: files,
|
|
|
type: "file",
|
|
|
id: "fileUpload",
|
|
|
style: {
|
|
|
display: "none"
|
|
|
},
|
|
|
onChange: handleUpload,
|
|
|
accept: ".mkv, .flv, .f4v, .rmvb, .swf, video/mp4,video/x-m4v,video/flv,video/f4v,video/rmvb,video/swf,video/*"
|
|
|
}), video && /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
style: {
|
|
|
fontSize: "8px",
|
|
|
color: "#333",
|
|
|
display: 'flex',
|
|
|
alignItems: "center"
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "icon-lianjie2 iconfont",
|
|
|
style: {
|
|
|
marginRight: "10px",
|
|
|
color: "#52c41a",
|
|
|
fontSize: "8px"
|
|
|
}
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: ((_video$file$name = video.file.name) === null || _video$file$name === void 0 ? void 0 : _video$file$name.indexOf(uploadNameSizeSeperator)) === -1 ? "".concat(video.file.name).concat(uploadNameSizeSeperator).concat((0,util/* bytesToSize */.RD)(video.file.size)) : video.file.name
|
|
|
}), video.loaded == 100 && /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
style: {
|
|
|
marginLeft: "auto",
|
|
|
cursor: "pointer"
|
|
|
},
|
|
|
className: "icon-shanchu iconfont",
|
|
|
onClick: function onClick() {
|
|
|
setVideo(void 0);
|
|
|
files.current.value = "";
|
|
|
}
|
|
|
})]
|
|
|
}), video.loaded != 100 && /*#__PURE__*/(0,jsx_runtime.jsx)(progress/* default */.Z, {
|
|
|
size: "small",
|
|
|
percent: video.loaded,
|
|
|
status: video.loaded == 100 ? "normal" : 'active'
|
|
|
})]
|
|
|
})]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default.Item */.Z.Item, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
className: "c-light-black",
|
|
|
children: "\u4E0A\u4F20\u8BF4\u660E\uFF1A\u76EE\u524D\u4E0D\u652F\u6301\u65AD\u70B9\u7EED\u4F20\uFF0C\u5355\u4E2A\u89C6\u9891\u6587\u4EF6\u6700\u5927\u9650\u52361G\uFF0C\u89C6\u9891\u6587\u4EF6\u4E0A\u4F20\u89C4\u683C\uFF1Aavi\u3001flv\u3001f4v\u3001m4v\u3001mov\u3001mp4\u3001rmvb\u3001swf\u3001webm\u3001wmv"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("p", {
|
|
|
className: "c-light-black",
|
|
|
children: "\u6E29\u99A8\u63D0\u793A\uFF1A\u4E3A\u4E86\u66F4\u597D\u7684\u64AD\u653E\u4F53\u9A8C\uFF0C\u5EFA\u8BAE\u60A8\u4F18\u5148\u4E0A\u4F20MP4\u683C\u5F0F\u3002\u5982\u679C\u60A8\u662F\u81EA\u5DF1\u5F55\u5236\u89C6\u9891\uFF0C\u5EFA\u8BAE\u60A8\u4FDD\u5B58\u7684\u65F6\u5019\u5C06\u89C6\u9891\u7F16\u7801\u8BBE\u7F6E\u4E3AAVC(H264)"
|
|
|
})]
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var VideoEdit = ((0,_umi_production_exports.connect)(function (_ref6) {
|
|
|
var classroomList = _ref6.classroomList,
|
|
|
loading = _ref6.loading,
|
|
|
user = _ref6.user;
|
|
|
return {
|
|
|
classroomList: classroomList,
|
|
|
loading: loading,
|
|
|
user: user
|
|
|
};
|
|
|
})(VideoEdit_EditAttendance));
|
|
|
;// CONCATENATED MODULE: ./src/pages/Classrooms/Lists/Video/components/VideoLinkEdit.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var VideoLinkEdit_TreeNode = tree_select/* default.TreeNode */.Z.TreeNode;
|
|
|
var VideoLinkEdit_EditAttendance = function EditAttendance(_ref) {
|
|
|
var _actionTabs$data, _actionTabs$data2;
|
|
|
var classroomList = _ref.classroomList,
|
|
|
user = _ref.user,
|
|
|
loading = _ref.loading,
|
|
|
dispatch = _ref.dispatch;
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
params['id'] = params['coursesId'];
|
|
|
var detailAttendancesDetail = classroomList.detailAttendancesDetail,
|
|
|
actionTabs = classroomList.actionTabs;
|
|
|
var _Form$useForm = es_form/* default.useForm */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (classroomList.actionTabs.key === '编辑视频') form.setFieldsValue({
|
|
|
title: actionTabs.data.title
|
|
|
});
|
|
|
}, [classroomList.actionTabs.key]);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
title: "\u89C6\u9891\u6807\u9898\u7F16\u8F91",
|
|
|
open: classroomList.actionTabs.key === '编辑外链' ? true : false,
|
|
|
okText: "\u786E\u5B9A",
|
|
|
cancelText: "\u53D6\u6D88",
|
|
|
destroyOnClose: true,
|
|
|
onOk: /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var formValue, res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.t0 = (objectSpread2_default());
|
|
|
_context.t1 = {};
|
|
|
_context.next = 4;
|
|
|
return form.validateFields();
|
|
|
case 4:
|
|
|
_context.t2 = _context.sent;
|
|
|
formValue = (0, _context.t0)(_context.t1, _context.t2);
|
|
|
_context.next = 8;
|
|
|
return (0,fetch/* default */.ZP)("/api/course_videos/".concat(actionTabs.data.id, ".json"), {
|
|
|
method: 'put',
|
|
|
body: objectSpread2_default()({}, formValue)
|
|
|
});
|
|
|
case 8:
|
|
|
res = _context.sent;
|
|
|
if (res) {
|
|
|
message/* default.success */.ZP.success('修改成功');
|
|
|
dispatch({
|
|
|
type: 'classroomList/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
dispatch({
|
|
|
type: 'classroomList/setUpdateData',
|
|
|
payload: Math.random()
|
|
|
});
|
|
|
}
|
|
|
case 10:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
})),
|
|
|
onCancel: function onCancel() {
|
|
|
dispatch({
|
|
|
type: 'classroomList/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
},
|
|
|
children: actionTabs.data && /*#__PURE__*/(0,jsx_runtime.jsxs)(es_form/* default */.Z, {
|
|
|
form: form,
|
|
|
initialValues: {
|
|
|
name: actionTabs === null || actionTabs === void 0 ? void 0 : (_actionTabs$data = actionTabs.data) === null || _actionTabs$data === void 0 ? void 0 : _actionTabs$data.title,
|
|
|
link: actionTabs === null || actionTabs === void 0 ? void 0 : (_actionTabs$data2 = actionTabs.data) === null || _actionTabs$data2 === void 0 ? void 0 : _actionTabs$data2.link
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u89C6\u9891\u6807\u9898",
|
|
|
name: "name",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入!'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
maxLength: 60
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u89C6\u9891\u94FE\u63A5",
|
|
|
name: "link",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入!'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
maxLength: 60
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var VideoLinkEdit = ((0,_umi_production_exports.connect)(function (_ref3) {
|
|
|
var classroomList = _ref3.classroomList,
|
|
|
loading = _ref3.loading,
|
|
|
user = _ref3.user;
|
|
|
return {
|
|
|
classroomList: classroomList,
|
|
|
loading: loading,
|
|
|
user: user
|
|
|
};
|
|
|
})(VideoLinkEdit_EditAttendance));
|
|
|
// EXTERNAL MODULE: ./src/pages/Classrooms/Lists/components/TabMenu/index.tsx + 1 modules
|
|
|
var TabMenu = __webpack_require__(15582);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Classrooms/Lists/Video/components/MoveCatalog.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var MoveCatalog_TreeNode = tree_select/* default.TreeNode */.Z.TreeNode;
|
|
|
var MoveCatalog_EditAttendance = function EditAttendance(_ref) {
|
|
|
var classroomList = _ref.classroomList,
|
|
|
loading = _ref.loading,
|
|
|
dispatch = _ref.dispatch;
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
params['id'] = params['coursesId'];
|
|
|
var detailLeftMenus = classroomList.detailLeftMenus,
|
|
|
actionTabs = classroomList.actionTabs;
|
|
|
var _Form$useForm = es_form/* default.useForm */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
title: "\u79FB\u52A8\u5230",
|
|
|
open: classroomList.actionTabs.key === '移动目录' ? true : false,
|
|
|
okText: "\u786E\u5B9A",
|
|
|
cancelText: "\u53D6\u6D88",
|
|
|
width: 400,
|
|
|
bodyStyle: {
|
|
|
minHeight: 200
|
|
|
},
|
|
|
onOk: /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var formValue, res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.t0 = (objectSpread2_default());
|
|
|
_context.t1 = {};
|
|
|
_context.next = 4;
|
|
|
return form.validateFields();
|
|
|
case 4:
|
|
|
_context.t2 = _context.sent;
|
|
|
formValue = (0, _context.t0)(_context.t1, _context.t2);
|
|
|
_context.next = 8;
|
|
|
return (0,fetch/* default */.ZP)("/api/courses/".concat(params.id, "/move_to_category.json"), {
|
|
|
method: 'post',
|
|
|
body: {
|
|
|
new_category_id: formValue.new_category_id,
|
|
|
video_ids: actionTabs.data.id
|
|
|
}
|
|
|
});
|
|
|
case 8:
|
|
|
res = _context.sent;
|
|
|
if (res.status === 0) {
|
|
|
message/* default.success */.ZP.success('操作成功');
|
|
|
dispatch({
|
|
|
type: 'classroomList/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
dispatch({
|
|
|
type: 'classroomList/setUpdateData',
|
|
|
payload: Math.random()
|
|
|
});
|
|
|
dispatch({
|
|
|
type: 'classroomList/getClassroomLeftMenus',
|
|
|
payload: {
|
|
|
id: params === null || params === void 0 ? void 0 : params.id
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
case 10:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
})),
|
|
|
onCancel: function onCancel() {
|
|
|
dispatch({
|
|
|
type: 'classroomList/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
},
|
|
|
children: detailLeftMenus.course_modules && /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z, {
|
|
|
form: form,
|
|
|
initialValues: {
|
|
|
// ['link']: actionTabs.data.link,
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "",
|
|
|
name: "new_category_id",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入!'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default.Group */.ZP.Group, {
|
|
|
children: detailLeftMenus === null || detailLeftMenus === void 0 ? void 0 : detailLeftMenus.course_modules.filter(function (v) {
|
|
|
return v.type === "video";
|
|
|
})[0]['second_category'].filter(function (r) {
|
|
|
return r.category_name !== '未分配目录';
|
|
|
}).map(function (v, k) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(es_radio/* default */.ZP, {
|
|
|
style: {
|
|
|
display: 'block'
|
|
|
},
|
|
|
value: v.category_id,
|
|
|
children: v.category_name
|
|
|
});
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var MoveCatalog = ((0,_umi_production_exports.connect)(function (_ref3) {
|
|
|
var classroomList = _ref3.classroomList,
|
|
|
loading = _ref3.loading;
|
|
|
return {
|
|
|
classroomList: classroomList,
|
|
|
loading: loading
|
|
|
};
|
|
|
})(MoveCatalog_EditAttendance));
|
|
|
;// CONCATENATED MODULE: ./src/pages/Classrooms/Lists/Video/components/AddCategory.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var AddCategory_TreeNode = tree_select/* default.TreeNode */.Z.TreeNode;
|
|
|
var AddCategory_EditAttendance = function EditAttendance(_ref) {
|
|
|
var _ref3;
|
|
|
var classroomList = _ref.classroomList,
|
|
|
loading = _ref.loading,
|
|
|
dispatch = _ref.dispatch;
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
params['id'] = params['coursesId'];
|
|
|
var detailLeftMenus = classroomList.detailLeftMenus,
|
|
|
actionTabs = classroomList.actionTabs;
|
|
|
var videoData = detailLeftMenus.course_modules && detailLeftMenus.course_modules.filter(function (v) {
|
|
|
return v.type === 'video';
|
|
|
});
|
|
|
var _Form$useForm = es_form/* default.useForm */.Z.useForm(),
|
|
|
_Form$useForm2 = slicedToArray_default()(_Form$useForm, 1),
|
|
|
form = _Form$useForm2[0];
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
centered: true,
|
|
|
title: "\u65B0\u5EFA\u5B50\u76EE\u5F55",
|
|
|
open: classroomList.actionTabs.key === '新建子目录' ? true : false,
|
|
|
okText: "\u786E\u5B9A",
|
|
|
cancelText: "\u53D6\u6D88",
|
|
|
bodyStyle: {
|
|
|
minHeight: 130
|
|
|
},
|
|
|
onOk: /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var formValue, res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
;
|
|
|
_context.t0 = (objectSpread2_default());
|
|
|
_context.t1 = {};
|
|
|
_context.next = 5;
|
|
|
return form.validateFields();
|
|
|
case 5:
|
|
|
_context.t2 = _context.sent;
|
|
|
formValue = (0, _context.t0)(_context.t1, _context.t2);
|
|
|
_context.next = 9;
|
|
|
return (0,fetch/* default */.ZP)("/api/course_modules/".concat(videoData[0].id, "/add_second_category.json"), {
|
|
|
method: 'post',
|
|
|
body: objectSpread2_default()({}, formValue)
|
|
|
});
|
|
|
case 9:
|
|
|
res = _context.sent;
|
|
|
if (res.status === 0) {
|
|
|
message/* default.success */.ZP.success('修改成功');
|
|
|
dispatch({
|
|
|
type: 'classroomList/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
dispatch({
|
|
|
type: 'classroomList/setUpdateData',
|
|
|
payload: Math.random()
|
|
|
});
|
|
|
}
|
|
|
case 11:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
})),
|
|
|
onCancel: function onCancel() {
|
|
|
dispatch({
|
|
|
type: 'classroomList/setActionTabs',
|
|
|
payload: {}
|
|
|
});
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default */.Z, {
|
|
|
form: form,
|
|
|
initialValues: (_ref3 = {}, defineProperty_default()(_ref3, 'name', ''), defineProperty_default()(_ref3, 'link', ''), _ref3),
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(es_form/* default.Item */.Z.Item, {
|
|
|
label: "\u5B50\u76EE\u5F55\u540D\u79F0",
|
|
|
name: "name",
|
|
|
rules: [{
|
|
|
required: true,
|
|
|
message: '请输入!'
|
|
|
}],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
maxLength: 60
|
|
|
})
|
|
|
})
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var AddCategory = ((0,_umi_production_exports.connect)(function (_ref4) {
|
|
|
var classroomList = _ref4.classroomList,
|
|
|
loading = _ref4.loading;
|
|
|
return {
|
|
|
classroomList: classroomList,
|
|
|
loading: loading
|
|
|
};
|
|
|
})(AddCategory_EditAttendance));
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/card/index.js + 4 modules
|
|
|
var card = __webpack_require__(4393);
|
|
|
// EXTERNAL MODULE: ./src/assets/images/video/default.png
|
|
|
var video_default = __webpack_require__(55988);
|
|
|
// EXTERNAL MODULE: ./src/assets/images/video/play.png
|
|
|
var play = __webpack_require__(36193);
|
|
|
// EXTERNAL MODULE: ./node_modules/react-copy-to-clipboard/lib/index.js
|
|
|
var lib = __webpack_require__(74855);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Classrooms/Lists/Video/Items/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var Itemsmodules = ({"flex_box_center":"flex_box_center___pyP1D","flex_space_between":"flex_space_between___I466c","flex_box_vertical_center":"flex_box_vertical_center___jio7d","flex_box_center_end":"flex_box_center_end___dwYOB","flex_box_column":"flex_box_column___OglHp","wrap":"wrap___CB76m","mask":"mask___OFMeI","playIconWrap":"playIconWrap___qgHXl","playIcon":"playIcon___bV87f","linkWrap":"linkWrap___T2hZF","link":"link___cwP_L","imgWrap":"imgWrap___V2WRr","cardBottom":"cardBottom___lpKQb","bottomTitle":"bottomTitle___L4GzG","timeWrap":"timeWrap___okx_C","time":"time___IoUOF","bottomActionWrap":"bottomActionWrap___PdPWh","peopleWrap":"peopleWrap____eq2u","actionIcon":"actionIcon___TDO4d"});
|
|
|
// EXTERNAL MODULE: ./src/components/Video/Modal/index.tsx + 1 modules
|
|
|
var Modal = __webpack_require__(41262);
|
|
|
// EXTERNAL MODULE: ./node_modules/js-base64/base64.js
|
|
|
var base64 = __webpack_require__(19575);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Classrooms/Lists/Video/Items/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var DEFAULT_VIDEO_WIDTH_IN_MD = "90%"; // 400
|
|
|
var DEFAULT_VIDEO_HEIGHT_IN_MD = "55%"; // 400
|
|
|
|
|
|
var Items = function Items(_ref) {
|
|
|
var _detailLeftMenus$cour, _detailLeftMenus$cour2, _classroomList$detail, _classroomList$detail2;
|
|
|
var data = _ref.data,
|
|
|
isReview = _ref.isReview,
|
|
|
dispatch = _ref.dispatch,
|
|
|
userid = _ref.userid,
|
|
|
classroomList = _ref.classroomList,
|
|
|
_ref$onDelete = _ref.onDelete,
|
|
|
onDelete = _ref$onDelete === void 0 ? function () {} : _ref$onDelete,
|
|
|
_ref$logWatchHistory = _ref.logWatchHistory,
|
|
|
logWatchHistory = _ref$logWatchHistory === void 0 ? function () {} : _ref$logWatchHistory;
|
|
|
var _useState = (0,react.useState)(),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
visible = _useState2[0],
|
|
|
setVisible = _useState2[1];
|
|
|
var _useState3 = (0,react.useState)({}),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
currentVideo = _useState4[0],
|
|
|
setCurrentVideo = _useState4[1];
|
|
|
var _useState5 = (0,react.useState)(objectSpread2_default()({}, (0,_umi_production_exports.useParams)())),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
params = _useState6[0],
|
|
|
setParams = _useState6[1];
|
|
|
var detailLeftMenus = classroomList.detailLeftMenus;
|
|
|
var SecondCategory = detailLeftMenus === null || detailLeftMenus === void 0 ? void 0 : (_detailLeftMenus$cour = detailLeftMenus.course_modules) === null || _detailLeftMenus$cour === void 0 ? void 0 : (_detailLeftMenus$cour2 = _detailLeftMenus$cour.filter(function (item) {
|
|
|
return item.type === "video";
|
|
|
})[0].second_category) === null || _detailLeftMenus$cour2 === void 0 ? void 0 : _detailLeftMenus$cour2.length;
|
|
|
params['id'] = params['coursesId'];
|
|
|
if (params['categoryId'] != 0) params['category_id'] = params['categoryId'];
|
|
|
var handleVideoClick = function handleVideoClick(item) {
|
|
|
if (item.link) {
|
|
|
return;
|
|
|
}
|
|
|
setVisible(true);
|
|
|
setCurrentVideo({
|
|
|
videoId: item.id,
|
|
|
course_id: params['coursesId'],
|
|
|
file_url: item.play_url || item.file_url,
|
|
|
copyUrl: getCopyText(item.play_url || item.file_url, item.cover_url),
|
|
|
allow_skip: item.allow_skip,
|
|
|
logWatchHistory: logWatchHistory
|
|
|
});
|
|
|
};
|
|
|
var getCopyText = function getCopyText(file_url, cover_url) {
|
|
|
var url = base64.Base64.decode(file_url);
|
|
|
if (file_url) {
|
|
|
return "<video src=\"".concat(url, "\" controls=\"true\" controlslist=\"nodownload\" width=\"").concat(DEFAULT_VIDEO_WIDTH_IN_MD, "\" height=\"").concat(DEFAULT_VIDEO_HEIGHT_IN_MD, "\" poster=\"").concat(cover_url, "\">\u60A8\u7684\u6D4F\u89C8\u5668\u4E0D\u652F\u6301 video \u6807\u7B7E\u3002</video>");
|
|
|
}
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [classroomList === null || classroomList === void 0 ? void 0 : (_classroomList$detail = classroomList.detailVideoList) === null || _classroomList$detail === void 0 ? void 0 : (_classroomList$detail2 = _classroomList$detail.videos) === null || _classroomList$detail2 === void 0 ? void 0 : _classroomList$detail2.map(function (item, key) {
|
|
|
var _item$cover_url;
|
|
|
var imgUrl = item !== null && item !== void 0 && item.cover_url ? item !== null && item !== void 0 && (_item$cover_url = item.cover_url) !== null && _item$cover_url !== void 0 && _item$cover_url.includes('https') ? item.cover_url : env/* default.API_SERVER */.Z.API_SERVER + item.cover_url : video_default;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
className: Itemsmodules.wrap,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(card/* default */.Z, {
|
|
|
className: "animated fadeIn ".concat(Itemsmodules.cardWrap),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(spin/* default */.Z, {
|
|
|
tip: "\u6B63\u5728\u8F6C\u7801\uFF0C\u8BF7\u7A0D\u7B49...",
|
|
|
spinning: !item.transcoded && !item.link,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: Itemsmodules.imgWrap,
|
|
|
onClick: function onClick() {
|
|
|
!isReview && handleVideoClick(item);
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: imgUrl
|
|
|
}), item.link && /*#__PURE__*/(0,jsx_runtime.jsx)("a", {
|
|
|
className: Itemsmodules.linkWrap,
|
|
|
href: item.link,
|
|
|
onClick: /*#__PURE__*/asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return (0,fetch/* default */.ZP)("/api/watch_video_histories/click_link_histories.json", {
|
|
|
method: 'post',
|
|
|
body: {
|
|
|
video_link_id: item.id,
|
|
|
device: 'pc'
|
|
|
}
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
case 3:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
})),
|
|
|
target: "_blank",
|
|
|
title: item.title,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: Itemsmodules.link,
|
|
|
children: "\u5916\u94FE"
|
|
|
})
|
|
|
}), !isReview && /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Itemsmodules.mask
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Itemsmodules.playIconWrap,
|
|
|
children: !item.link && /*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
className: Itemsmodules.playIcon,
|
|
|
src: play
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Itemsmodules.cardBottom,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Itemsmodules.bottomTitle,
|
|
|
children: item.title
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Itemsmodules.timeWrap,
|
|
|
children: (item.total_time || parseInt(item.total_time) > 0) && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: Itemsmodules.time,
|
|
|
children: "\u7D2F\u8BA1\u5B66\u4E60\u65F6\u957F\uFF1A".concat((0,util/* toTimeFormat */.li)(parseInt(item.total_time)))
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Itemsmodules.bottomActionWrap,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: Itemsmodules.peopleWrap,
|
|
|
children: !!item.people_num && /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u89C2\u770B\u4EBA\u6570",
|
|
|
placement: "top",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "icon-dianjiliang iconfont font12",
|
|
|
children: item.people_num
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
children: [(userid === item.user_id || !isReview && SecondCategory > 0 && (0,authority/* isAdminOrCreator */.aN)()) && /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u79FB\u52A8",
|
|
|
placement: "top",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "".concat(Itemsmodules.actionIcon, " icon-yidong iconfont"),
|
|
|
onClick: function onClick() {
|
|
|
dispatch({
|
|
|
type: 'classroomList/setActionTabs',
|
|
|
payload: {
|
|
|
key: '移动目录',
|
|
|
params: params,
|
|
|
data: item
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
style: {
|
|
|
marginTop: '1px',
|
|
|
display: 'inline-block'
|
|
|
}
|
|
|
})
|
|
|
}), (0,authority/* isAdminOrTeacher */.G5)() && !isReview && !item.link ? /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u7EDF\u8BA1",
|
|
|
placement: "top",
|
|
|
children: (0,authority/* isAdminOrTeacher */.G5)() ? /*#__PURE__*/(0,jsx_runtime.jsxs)(_umi_production_exports.Link, {
|
|
|
to: "/classrooms/".concat(params.coursesId, "/video/").concat((data === null || data === void 0 ? void 0 : data.category_id) || (data === null || data === void 0 ? void 0 : data.course_module_id), "/statistics/").concat(item.course_video_id, "?title=").concat(item.title),
|
|
|
children: [" ", /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "icon-tongji1 iconfont ".concat(Itemsmodules.actionIcon),
|
|
|
style: {
|
|
|
marginTop: '1px',
|
|
|
display: 'inline-block'
|
|
|
}
|
|
|
})]
|
|
|
}) : null
|
|
|
}) : null, (0,authority/* isStudent */.dE)() && !isReview && !item.link ? /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u7EDF\u8BA1",
|
|
|
placement: "top",
|
|
|
children: (0,authority/* isStudent */.dE)() ? /*#__PURE__*/(0,jsx_runtime.jsx)(_umi_production_exports.Link, {
|
|
|
className: "font16",
|
|
|
to: "/classrooms/".concat(params.coursesId, "/video/").concat((data === null || data === void 0 ? void 0 : data.category_id) || (data === null || data === void 0 ? void 0 : data.course_module_id), "/studentstatistics"),
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "icon-tongji1 iconfont ".concat(Itemsmodules.actionIcon),
|
|
|
style: {
|
|
|
marginTop: '1px',
|
|
|
display: 'inline-block'
|
|
|
}
|
|
|
})
|
|
|
}) : null
|
|
|
}) : null, (userid === item.user_id || (0,authority/* isAdminOrCreator */.aN)()) && /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u7F16\u8F91",
|
|
|
placement: "top",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "".concat(Itemsmodules.actionIcon, " icon-bianji1 iconfont"),
|
|
|
onClick: function onClick() {
|
|
|
dispatch({
|
|
|
type: 'classroomList/setActionTabs',
|
|
|
payload: {
|
|
|
key: item.link ? '增加外链' : '编辑视频',
|
|
|
params: params,
|
|
|
data: item //data有无数据判断是增加还是编辑外链视频
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
|
|
|
style: {
|
|
|
marginTop: '1px',
|
|
|
display: 'inline-block'
|
|
|
}
|
|
|
})
|
|
|
}), !isReview && !item.link && /*#__PURE__*/(0,jsx_runtime.jsx)(lib.CopyToClipboard, {
|
|
|
text: getCopyText(item.play_url || item.file_url, item.cover_url),
|
|
|
onCopy: function onCopy() {
|
|
|
return message/* default.success */.ZP.success('复制成功');
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u590D\u5236\u94FE\u63A5",
|
|
|
placement: "top",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "".concat(Itemsmodules.actionIcon, " icon-fuzhi iconfont")
|
|
|
})
|
|
|
})
|
|
|
}), (userid === item.user_id || (0,authority/* isAdminOrCreatorOrOperation */.Rb)()) && /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u5220\u9664",
|
|
|
placement: "top",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "".concat(Itemsmodules.actionIcon, " icon-shanchu iconfont"),
|
|
|
onClick: function onClick() {
|
|
|
dispatch({
|
|
|
type: 'classroomList/setActionTabs',
|
|
|
payload: {
|
|
|
key: '删除',
|
|
|
params: params,
|
|
|
data: item
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
style: {
|
|
|
marginTop: '1px',
|
|
|
display: 'inline-block'
|
|
|
}
|
|
|
})
|
|
|
})]
|
|
|
})]
|
|
|
})]
|
|
|
})]
|
|
|
})
|
|
|
}, item.id);
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(Modal/* VideoModal */.K, objectSpread2_default()(objectSpread2_default()({}, currentVideo), {}, {
|
|
|
visible: visible,
|
|
|
width: 800,
|
|
|
onClose: function onClose() {
|
|
|
setVisible(false);
|
|
|
setCurrentVideo({});
|
|
|
}
|
|
|
}))]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var Video_Items = ((0,_umi_production_exports.connect)(function (_ref3) {
|
|
|
var classroomList = _ref3.classroomList;
|
|
|
return {
|
|
|
classroomList: classroomList
|
|
|
};
|
|
|
})(Items));
|
|
|
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/toConsumableArray.js
|
|
|
var toConsumableArray = __webpack_require__(861);
|
|
|
var toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Classrooms/Lists/Video/HtmlDrag/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var HtmlDragmodules = ({"root":"root___egCyx","title":"title___CK8yp"});
|
|
|
;// CONCATENATED MODULE: ./src/pages/Classrooms/Lists/Video/HtmlDrag/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var HtmlDrag = function HtmlDrag(_ref) {
|
|
|
var _ref$dataSource = _ref.dataSource,
|
|
|
dataSource = _ref$dataSource === void 0 ? [] : _ref$dataSource,
|
|
|
count = _ref.count,
|
|
|
dispatch = _ref.dispatch;
|
|
|
var params = (0,_umi_production_exports.useParams)();
|
|
|
var _useState = (0,react.useState)([]),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
data = _useState2[0],
|
|
|
setData = _useState2[1];
|
|
|
var dragged = (0,react.useRef)(null);
|
|
|
var target = (0,react.useRef)(null);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (!!dataSource) {
|
|
|
setData(toConsumableArray_default()(dataSource));
|
|
|
}
|
|
|
}, [dataSource]);
|
|
|
|
|
|
/**
|
|
|
* @function 数组重排序
|
|
|
*
|
|
|
*/
|
|
|
var handleData = function handleData() {
|
|
|
dragged.current.style.opacity = '1';
|
|
|
dragged.current.style.transform = 'scale(1)';
|
|
|
var from = dragged.current.dataset.id; // 拖动元素id
|
|
|
var to = target.current.dataset.id; // 放置目标id
|
|
|
if (from !== to) {
|
|
|
var newData = toConsumableArray_default()(data);
|
|
|
// 删除原位置拖动元素;指定位置插入拖动元素
|
|
|
newData.splice(to, 0, newData.splice(from, 1)[0]);
|
|
|
setData(newData);
|
|
|
dragged.current = target.current; // 改变dragged,便于
|
|
|
onSortEdit(data[from], Number(to) + 1);
|
|
|
}
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* @function 规定当元素被拖动时,会发生什么
|
|
|
* */
|
|
|
var onDragStart = function onDragStart(e) {
|
|
|
dragged.current = e.target;
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* @function 元素被拖动到一个有效目标时触发的事件;第一个触发
|
|
|
* @description 元素被拖动到一个有效目标时,以下数据依次触发 dragenter,dragover,drop
|
|
|
* */
|
|
|
var onDragEnter = function onDragEnter(e) {
|
|
|
e.preventDefault(); // 阻止默认事件
|
|
|
if (e.target.tagName !== 'LI') {
|
|
|
return;
|
|
|
}
|
|
|
target.current = e.target;
|
|
|
target.current.style.opacity = '0.2';
|
|
|
target.current.style.transform = 'scale(1.1)';
|
|
|
handleData();
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* @function 元素被拖动到一个有效目标时触发的事件;第二个触发
|
|
|
* @description
|
|
|
* 默认地,无法将数据/元素放置到其他元素中。如果需要设置允许放置,
|
|
|
* 我们必须阻止对元素的默认处理方式。
|
|
|
* 这要通过调用 ondragover 事件的 event.preventDefault() 方法
|
|
|
* */
|
|
|
var onDragOver = function onDragOver(e) {
|
|
|
e.preventDefault();
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
* @function 元素被拖动到一个有效目标时触发的事件;第三个(最后)触发
|
|
|
* @description 元素被拖动到一个有效目标时,以下数据依次触发 dragenter,dragover,drop
|
|
|
* */
|
|
|
var onDrop = function onDrop(e) {
|
|
|
e.preventDefault();
|
|
|
dragged.current.style.opacity = '1';
|
|
|
dragged.current.style.transform = 'scale(1)';
|
|
|
};
|
|
|
var onSortEdit = /*#__PURE__*/function () {
|
|
|
var _ref2 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee(item, position) {
|
|
|
var res;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
_context.next = 2;
|
|
|
return (0,fetch/* default */.ZP)("/api/courses/".concat(params === null || params === void 0 ? void 0 : params.coursesId, "/sort_video.json"), {
|
|
|
method: 'put',
|
|
|
body: {
|
|
|
course_id: params.coursesId,
|
|
|
video_id: (item === null || item === void 0 ? void 0 : item.course_video_id) || (item === null || item === void 0 ? void 0 : item.id),
|
|
|
position: Number(position)
|
|
|
}
|
|
|
});
|
|
|
case 2:
|
|
|
res = _context.sent;
|
|
|
return _context.abrupt("return", res);
|
|
|
case 4:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
return function onSortEdit(_x, _x2) {
|
|
|
return _ref2.apply(this, arguments);
|
|
|
};
|
|
|
}();
|
|
|
var listItems = data.map(function (item, index) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("li", {
|
|
|
"data-id": index,
|
|
|
style: {
|
|
|
background: item.bgColor
|
|
|
},
|
|
|
draggable: "true",
|
|
|
onDragStart: onDragStart,
|
|
|
onDragOver: onDragOver,
|
|
|
onDrop: onDrop,
|
|
|
onDragEnter: onDragEnter,
|
|
|
"data-item": JSON.stringify(item),
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("img", {
|
|
|
src: (item === null || item === void 0 ? void 0 : item.cover_url) || video_default
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
title: item.title,
|
|
|
className: HtmlDragmodules.title,
|
|
|
children: item.title
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsxs)("p", {
|
|
|
className: "ml10 mb10",
|
|
|
children: ["\u7D2F\u8BA1\u5B66\u4E60\u65F6\u95F4", (0,util/* toTimeFormat */.li)(parseInt(item.total_time))]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(input/* default */.Z, {
|
|
|
className: "ml10 mb10",
|
|
|
style: {
|
|
|
width: 100
|
|
|
},
|
|
|
placeholder: index + 1,
|
|
|
onBlur: /*#__PURE__*/function () {
|
|
|
var _ref3 = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee2(e) {
|
|
|
var reg, result;
|
|
|
return regeneratorRuntime_default()().wrap(function _callee2$(_context2) {
|
|
|
while (1) switch (_context2.prev = _context2.next) {
|
|
|
case 0:
|
|
|
if (e.target.value) {
|
|
|
_context2.next = 2;
|
|
|
break;
|
|
|
}
|
|
|
return _context2.abrupt("return");
|
|
|
case 2:
|
|
|
reg = /^([1-9][0-9]*)$/;
|
|
|
if (reg.test(e.target.value)) {
|
|
|
_context2.next = 6;
|
|
|
break;
|
|
|
}
|
|
|
message/* default.info */.ZP.info('请输入大于0的正整数');
|
|
|
return _context2.abrupt("return");
|
|
|
case 6:
|
|
|
if (!(parseInt(e.target.value) > count)) {
|
|
|
_context2.next = 9;
|
|
|
break;
|
|
|
}
|
|
|
message/* default.info */.ZP.info('数字不能大于总数量');
|
|
|
return _context2.abrupt("return");
|
|
|
case 9:
|
|
|
_context2.next = 11;
|
|
|
return onSortEdit(item, e.target.value);
|
|
|
case 11:
|
|
|
result = _context2.sent;
|
|
|
if ((result === null || result === void 0 ? void 0 : result.status) === 0) {
|
|
|
dispatch({
|
|
|
type: 'classroomList/setUpdateData',
|
|
|
payload: Math.random()
|
|
|
});
|
|
|
}
|
|
|
case 13:
|
|
|
case "end":
|
|
|
return _context2.stop();
|
|
|
}
|
|
|
}, _callee2);
|
|
|
}));
|
|
|
return function (_x3) {
|
|
|
return _ref3.apply(this, arguments);
|
|
|
};
|
|
|
}()
|
|
|
})]
|
|
|
}, index);
|
|
|
});
|
|
|
console.log(data, 2222);
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("aside", {
|
|
|
className: HtmlDragmodules.root,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("ul", {
|
|
|
className: "contain",
|
|
|
children: listItems
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var Video_HtmlDrag = (HtmlDrag);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Classrooms/Lists/Video/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var _excluded = ["classroomList", "globalSetting", "loading", "user", "dispatch"];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var SubMenu = menu/* default.SubMenu */.Z.SubMenu;
|
|
|
var Content = layout/* default.Content */.Z.Content,
|
|
|
Sider = layout/* default.Sider */.Z.Sider;
|
|
|
var ShixunsListPage = function ShixunsListPage(_ref) {
|
|
|
var _detailVideoList$vide, _classroomList$detail;
|
|
|
var classroomList = _ref.classroomList,
|
|
|
globalSetting = _ref.globalSetting,
|
|
|
loading = _ref.loading,
|
|
|
user = _ref.user,
|
|
|
dispatch = _ref.dispatch,
|
|
|
props = objectWithoutProperties_default()(_ref, _excluded);
|
|
|
var param = (0,_umi_production_exports.useParams)();
|
|
|
var _useState = (0,react.useState)({
|
|
|
page: 1,
|
|
|
limit: 15
|
|
|
}),
|
|
|
_useState2 = slicedToArray_default()(_useState, 2),
|
|
|
params = _useState2[0],
|
|
|
setParams = _useState2[1];
|
|
|
var detailVideoList = classroomList.detailVideoList,
|
|
|
updateData = classroomList.updateData;
|
|
|
var _useState3 = (0,react.useState)({}),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
selectArrs = _useState4[0],
|
|
|
setSelectArrs = _useState4[1];
|
|
|
params['id'] = param['coursesId'];
|
|
|
//排序or正常显示
|
|
|
var _useState5 = (0,react.useState)(true),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
isSort = _useState6[0],
|
|
|
setIsSort = _useState6[1];
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (updateData) {
|
|
|
dispatch({
|
|
|
type: 'classroomList/getVideoList',
|
|
|
payload: objectSpread2_default()({}, params)
|
|
|
});
|
|
|
}
|
|
|
}, [updateData]);
|
|
|
(0,react.useEffect)(function () {
|
|
|
if (param['categoryId'] != 0) params['category_id'] = param['categoryId'];
|
|
|
setTimeout(function () {
|
|
|
dispatch({
|
|
|
type: 'classroomList/setUpdateData',
|
|
|
payload: Math.random()
|
|
|
});
|
|
|
}, 200);
|
|
|
return function () {
|
|
|
// dispatch({
|
|
|
// type: 'classroomList/setUpdateData',
|
|
|
// payload: '',
|
|
|
// });
|
|
|
};
|
|
|
}, [location.pathname]);
|
|
|
var onShowSizeChange = function onShowSizeChange(current, pageSize) {
|
|
|
params.page = current;
|
|
|
setParams(objectSpread2_default()({}, params));
|
|
|
dispatch({
|
|
|
type: 'classroomList/getVideoList',
|
|
|
payload: objectSpread2_default()({}, params)
|
|
|
});
|
|
|
};
|
|
|
var onMenuSelect = function onMenuSelect(v) {
|
|
|
if (v.key === 'all') {
|
|
|
_umi_production_exports.history.push("/classrooms/".concat(params.id, "/video"));
|
|
|
} else {
|
|
|
_umi_production_exports.history.push("/classrooms/".concat(params.id, "/live_video"));
|
|
|
}
|
|
|
};
|
|
|
var Menus = [{
|
|
|
name: '视频',
|
|
|
id: 'all',
|
|
|
total: detailVideoList === null || detailVideoList === void 0 ? void 0 : detailVideoList.videos_count
|
|
|
}, {
|
|
|
name: '直播',
|
|
|
id: 1,
|
|
|
total: detailVideoList === null || detailVideoList === void 0 ? void 0 : detailVideoList.lives_count
|
|
|
}];
|
|
|
var pollsStatus = {
|
|
|
1: '未发布',
|
|
|
2: '提交中',
|
|
|
3: '已截止',
|
|
|
4: '已结束'
|
|
|
};
|
|
|
var handleDelete = function handleDelete(id) {
|
|
|
modal/* default.confirm */.Z.confirm({
|
|
|
title: '提示',
|
|
|
centered: true,
|
|
|
content: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Videomodules.modal,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u8BE5\u89C6\u9891\u5C06\u88AB\u5220\u9664\uFF0C\u4E0D\u53EF\u6062\u590D"
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
children: "\u662F\u5426\u786E\u8BA4\u5220\u9664?"
|
|
|
})]
|
|
|
}),
|
|
|
okText: '确认',
|
|
|
cancelText: '取消',
|
|
|
onOk: function () {
|
|
|
var _onOk = asyncToGenerator_default()( /*#__PURE__*/regeneratorRuntime_default()().mark(function _callee() {
|
|
|
return regeneratorRuntime_default()().wrap(function _callee$(_context) {
|
|
|
while (1) switch (_context.prev = _context.next) {
|
|
|
case 0:
|
|
|
case "end":
|
|
|
return _context.stop();
|
|
|
}
|
|
|
}, _callee);
|
|
|
}));
|
|
|
function onOk() {
|
|
|
return _onOk.apply(this, arguments);
|
|
|
}
|
|
|
return onOk;
|
|
|
}()
|
|
|
});
|
|
|
};
|
|
|
var handleLogWatchHistory = function handleLogWatchHistory(query) {
|
|
|
return dispatch({
|
|
|
type: 'userDetail/logWatchHistory',
|
|
|
payload: query
|
|
|
});
|
|
|
};
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("section", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(TabMenu/* default */.Z, {
|
|
|
isLoading: false,
|
|
|
tabDataSource: Menus,
|
|
|
isAdmin: (0,authority/* isAdmin */.GJ)(),
|
|
|
onTabMenuClick: onMenuSelect,
|
|
|
defaultSelectedKeys: ['all'],
|
|
|
showControlButton: isSort && (0,authority/* isAdminOrTeacher */.G5)(),
|
|
|
buttonText: "\u4E0A\u4F20\u89C6\u9891",
|
|
|
buttonIcon: "icon-shangchuan3 font18",
|
|
|
extraNode: (0,authority/* isAdmin */.GJ)() && /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
align: "middle",
|
|
|
className: "mr20",
|
|
|
children: [isSort && (0,authority/* isAdmin */.GJ)() && /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "c-blue font16 mr20 current",
|
|
|
onClick: function onClick(e) {
|
|
|
dispatch({
|
|
|
type: 'classroomList/setActionTabs',
|
|
|
payload: {
|
|
|
key: '新建子目录',
|
|
|
params: params
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(tooltip/* default */.Z, {
|
|
|
title: "\u65B0\u5EFA\u5B50\u76EE\u5F55",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-xinjianmulu1 font14"
|
|
|
})
|
|
|
})
|
|
|
}), isSort && (0,authority/* isAdmin */.GJ)() && /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
onClick: function onClick() {
|
|
|
return _umi_production_exports.history.push("/classrooms/".concat(param.coursesId, "/video/").concat((detailVideoList === null || detailVideoList === void 0 ? void 0 : detailVideoList.category_id) || (detailVideoList === null || detailVideoList === void 0 ? void 0 : detailVideoList.course_module_id), "/statistics"));
|
|
|
},
|
|
|
className: "font14 mr20 c-blue font14 current",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-tongji4 font14 mr5"
|
|
|
}), "\u7EDF\u8BA1\u603B\u89C8"]
|
|
|
}), isSort && (0,authority/* isStudent */.dE)() && /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
onClick: function onClick() {
|
|
|
return _umi_production_exports.history.push("/classrooms/".concat(param.coursesId, "/video/").concat((detailVideoList === null || detailVideoList === void 0 ? void 0 : detailVideoList.category_id) || (detailVideoList === null || detailVideoList === void 0 ? void 0 : detailVideoList.course_module_id), "/studentstatistics"));
|
|
|
},
|
|
|
className: "font14 mr20 c-blue font14 current",
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-tongji4 font14 mr5"
|
|
|
}), "\u7EDF\u8BA1\u603B\u89C8"]
|
|
|
}), isSort && (0,authority/* isAdmin */.GJ)() && /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: "c-blue font14 mr20 current",
|
|
|
onClick: function onClick(e) {
|
|
|
e.preventDefault();
|
|
|
dispatch({
|
|
|
type: 'classroomList/setActionTabs',
|
|
|
payload: {
|
|
|
key: '增加外链',
|
|
|
params: params
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-lianjie2 font14 mr5"
|
|
|
}), "\u589E\u52A0\u5916\u94FE"]
|
|
|
}), ((0,authority/* isAdminOrTeacher */.G5)() || (0,authority/* isAssistant */.Rm)()) && /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
style: {
|
|
|
display: 'flex',
|
|
|
alignItems: 'center'
|
|
|
},
|
|
|
className: "c-blue font14 current",
|
|
|
onClick: function onClick() {
|
|
|
setIsSort(!isSort);
|
|
|
if (!isSort) {
|
|
|
dispatch({
|
|
|
type: 'classroomList/setUpdateData',
|
|
|
payload: Math.random()
|
|
|
});
|
|
|
}
|
|
|
},
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-tiaozhengpaixu2 mr5"
|
|
|
}), isSort ? '调整排序' : '结束排序']
|
|
|
})]
|
|
|
}),
|
|
|
onButtonClick: function onButtonClick() {
|
|
|
_umi_production_exports.history.push(param.categoryId ? "/classrooms/".concat(param.coursesId, "/video/").concat(user.userInfo.login, "/upload?categoryId=").concat(param.categoryId) : "/classrooms/".concat(param.coursesId, "/video/").concat(user.userInfo.login, "/upload"));
|
|
|
}
|
|
|
}), (detailVideoList === null || detailVideoList === void 0 ? void 0 : detailVideoList.videos_count) === 0 && /*#__PURE__*/(0,jsx_runtime.jsx)(NoData/* default */.Z, {}), !!(detailVideoList !== null && detailVideoList !== void 0 && (_detailVideoList$vide = detailVideoList.videos) !== null && _detailVideoList$vide !== void 0 && _detailVideoList$vide.length) && /*#__PURE__*/(0,jsx_runtime.jsx)(spin/* default */.Z, {
|
|
|
spinning: loading['classroomList/getVideoList'],
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: Videomodules.card,
|
|
|
children: [!!isSort && /*#__PURE__*/(0,jsx_runtime.jsx)(Video_Items, {
|
|
|
dispatch: dispatch,
|
|
|
data: objectSpread2_default()({}, detailVideoList),
|
|
|
userid: user.userInfo.user_id,
|
|
|
isReview: params.category === 'pending',
|
|
|
onDelete: handleDelete,
|
|
|
logWatchHistory: handleLogWatchHistory
|
|
|
}), !isSort && /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
style: {
|
|
|
height: 20
|
|
|
}
|
|
|
}), !isSort && /*#__PURE__*/(0,jsx_runtime.jsx)(Video_HtmlDrag, {
|
|
|
dataSource: detailVideoList === null || detailVideoList === void 0 ? void 0 : detailVideoList.videos,
|
|
|
count: classroomList === null || classroomList === void 0 ? void 0 : (_classroomList$detail = classroomList.detailVideoList) === null || _classroomList$detail === void 0 ? void 0 : _classroomList$detail.videos_count,
|
|
|
dispatch: dispatch
|
|
|
})]
|
|
|
})
|
|
|
}), isSort && /*#__PURE__*/(0,jsx_runtime.jsx)("aside", {
|
|
|
className: "tc mb50 mt30",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(pagination/* default */.Z, {
|
|
|
hideOnSinglePage: true,
|
|
|
showSizeChanger: false,
|
|
|
onChange: onShowSizeChange,
|
|
|
defaultCurrent: 1,
|
|
|
pageSize: 15,
|
|
|
current: params.page || 1,
|
|
|
total: detailVideoList === null || detailVideoList === void 0 ? void 0 : detailVideoList.videos_count
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(DelTasks, {}), /*#__PURE__*/(0,jsx_runtime.jsx)(Edit, {
|
|
|
data: selectArrs
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(VideoEdit, {}), /*#__PURE__*/(0,jsx_runtime.jsx)(MoveCatalog, {}), /*#__PURE__*/(0,jsx_runtime.jsx)(AddLink, {}), /*#__PURE__*/(0,jsx_runtime.jsx)(AddCategory, {}), /*#__PURE__*/(0,jsx_runtime.jsx)(VideoLinkEdit, {})]
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var Video = ((0,_umi_production_exports.connect)(function (_ref2) {
|
|
|
var classroomList = _ref2.classroomList,
|
|
|
loading = _ref2.loading,
|
|
|
user = _ref2.user,
|
|
|
globalSetting = _ref2.globalSetting;
|
|
|
return {
|
|
|
user: user,
|
|
|
classroomList: classroomList,
|
|
|
globalSetting: globalSetting,
|
|
|
loading: loading.effects
|
|
|
};
|
|
|
})(ShixunsListPage));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 15582:
|
|
|
/*!*****************************************************************************!*\
|
|
|
!*** ./src/pages/Classrooms/Lists/components/TabMenu/index.tsx + 1 modules ***!
|
|
|
\*****************************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ components_TabMenu; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
|
var react = __webpack_require__(67294);
|
|
|
// 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/menu/index.js + 11 modules
|
|
|
var menu = __webpack_require__(68508);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/dropdown/index.js + 1 modules
|
|
|
var dropdown = __webpack_require__(85418);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Classrooms/Lists/components/TabMenu/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var TabMenumodules = ({"tabMenuContainer":"tabMenuContainer___uf5IP","control":"control___GheLs","iconH":"iconH___Wzw_r","selectBtn":"selectBtn___mfEnI"});
|
|
|
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(85893);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Classrooms/Lists/components/TabMenu/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var TabMenu = function TabMenu(_ref) {
|
|
|
var isLoading = _ref.isLoading,
|
|
|
addText = _ref.addText,
|
|
|
tabDataSource = _ref.tabDataSource,
|
|
|
isAdmin = _ref.isAdmin,
|
|
|
defaultSelectedKeys = _ref.defaultSelectedKeys,
|
|
|
onTabMenuClick = _ref.onTabMenuClick,
|
|
|
getDropdownMenu = _ref.getDropdownMenu,
|
|
|
showControlButton = _ref.showControlButton,
|
|
|
buttonText = _ref.buttonText,
|
|
|
_ref$buttonIcon = _ref.buttonIcon,
|
|
|
buttonIcon = _ref$buttonIcon === void 0 ? 'icon-tianjiadaohang' : _ref$buttonIcon,
|
|
|
extraNode = _ref.extraNode,
|
|
|
_ref$onButtonClick = _ref.onButtonClick,
|
|
|
onButtonClick = _ref$onButtonClick === void 0 ? function () {} : _ref$onButtonClick;
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: TabMenumodules.tabMenuContainer,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)(row/* default */.Z, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
flex: "1",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(menu/* default */.Z, {
|
|
|
onSelect: function onSelect(v) {
|
|
|
return !isLoading ? onTabMenuClick(v) : {};
|
|
|
},
|
|
|
mode: "horizontal",
|
|
|
selectedKeys: defaultSelectedKeys,
|
|
|
children: tabDataSource.map(function (item) {
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)(menu/* default.Item */.Z.Item, {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "c-grey-666",
|
|
|
children: item.name
|
|
|
}), item.total !== undefined && isAdmin && /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
className: "c-grey-999 ml20",
|
|
|
children: item.total || 0
|
|
|
})]
|
|
|
}, typeof item.index === 'number' ? item.index : item.id);
|
|
|
})
|
|
|
})
|
|
|
}), isAdmin && /*#__PURE__*/(0,jsx_runtime.jsx)(col/* default */.Z, {
|
|
|
className: "mr20",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
|
|
|
className: TabMenumodules.control,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
|
|
|
className: TabMenumodules.extra,
|
|
|
children: extraNode
|
|
|
}), showControlButton && /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
onClick: onButtonClick,
|
|
|
style: {
|
|
|
cursor: 'pointer'
|
|
|
},
|
|
|
className: TabMenumodules.selectBtn,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont ".concat(buttonIcon)
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: buttonText
|
|
|
})]
|
|
|
}), !!getDropdownMenu && /*#__PURE__*/(0,jsx_runtime.jsx)(dropdown/* default */.Z, {
|
|
|
className: "ml10",
|
|
|
dropdownRender: getDropdownMenu,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsxs)("span", {
|
|
|
className: TabMenumodules.selectBtn,
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("i", {
|
|
|
className: "iconfont icon-tianjiadaohang"
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("span", {
|
|
|
children: addText ? addText : '创建试卷'
|
|
|
})]
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
})]
|
|
|
})
|
|
|
});
|
|
|
};
|
|
|
/* harmony default export */ var components_TabMenu = (TabMenu);
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 77320:
|
|
|
/*!***********************************!*\
|
|
|
!*** ./src/utils/aliyunUpload.ts ***!
|
|
|
\***********************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ "o": function() { return /* binding */ getUploader; }
|
|
|
/* harmony export */ });
|
|
|
/* harmony import */ var _utils_fetch__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @/utils/fetch */ 84519);
|
|
|
/* harmony import */ var aliyun_vod_upload_ll__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! aliyun-vod-upload-ll */ 69548);
|
|
|
/* harmony import */ var aliyun_vod_upload_ll__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(aliyun_vod_upload_ll__WEBPACK_IMPORTED_MODULE_1__);
|
|
|
|
|
|
|
|
|
var login = '';
|
|
|
var uploader;
|
|
|
var virtual_classroom_id = '';
|
|
|
function createUploader(options) {
|
|
|
doCreateUploader(options);
|
|
|
}
|
|
|
function doCreateUploader(options) {
|
|
|
uploader = new (aliyun_vod_upload_ll__WEBPACK_IMPORTED_MODULE_1___default().Vod)({
|
|
|
timeout: 60000,
|
|
|
partSize: 1048576,
|
|
|
parallel: 5,
|
|
|
retryCount: 3,
|
|
|
retryDuration: 2,
|
|
|
region: 'ap-southeast-1',
|
|
|
userId: 1829848226361863,
|
|
|
enableUploadProgress: false,
|
|
|
addFileSuccess: function addFileSuccess(uploadInfo) {
|
|
|
console.log("addFileSuccess: " + uploadInfo.file.name);
|
|
|
options.addFileSuccess && options.addFileSuccess(uploadInfo);
|
|
|
uploader.startUpload();
|
|
|
},
|
|
|
// 开始上传
|
|
|
onUploadstarted: function onUploadstarted(uploadInfo) {
|
|
|
var fileName = uploadInfo.file.name;
|
|
|
if (!uploadInfo.videoId) {
|
|
|
var createUrl = "/api/users/".concat(login, "/video_auths.json");
|
|
|
var _random = ''; // Math.random().toString().substring(3, 6)+'-'
|
|
|
(0,_utils_fetch__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .ZP)(createUrl, {
|
|
|
method: 'Post',
|
|
|
body: {
|
|
|
title: _random + fileName,
|
|
|
file_name: _random + fileName,
|
|
|
virtual_classroom_id: virtual_classroom_id
|
|
|
}
|
|
|
}).then(function (response) {
|
|
|
if (response) {
|
|
|
var data = response.data;
|
|
|
var uploadAuth = data.UploadAuth;
|
|
|
var uploadAddress = data.UploadAddress;
|
|
|
var videoId = data.VideoId;
|
|
|
uploader.setUploadAuthAndAddress(uploadInfo, uploadAuth, uploadAddress, videoId);
|
|
|
}
|
|
|
})["catch"](function (error) {
|
|
|
uploader.deleteFile(uploader._curIndex);
|
|
|
uploader.nextUpload();
|
|
|
console.log(error);
|
|
|
});
|
|
|
console.log('文件开始上传...');
|
|
|
} else {
|
|
|
// 如果videoId有值,根据videoId刷新上传凭证
|
|
|
var refreshUrl = "/api/users/".concat(login, "/video_auths.json");
|
|
|
(0,_utils_fetch__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .ZP)(refreshUrl, {
|
|
|
method: 'put',
|
|
|
body: {
|
|
|
video_id: uploadInfo.videoId,
|
|
|
title: fileName,
|
|
|
file_name: fileName,
|
|
|
virtual_classroom_id: virtual_classroom_id
|
|
|
}
|
|
|
}).then(function (response) {
|
|
|
if (response.status == -1) {
|
|
|
options.onUploadError && options.onUploadError(uploadInfo);
|
|
|
return;
|
|
|
}
|
|
|
var data = response.data;
|
|
|
var uploadAuth = data.UploadAuth;
|
|
|
var uploadAddress = data.UploadAddress;
|
|
|
var videoId = data.VideoId;
|
|
|
uploader.setUploadAuthAndAddress(uploadInfo, uploadAuth, uploadAddress);
|
|
|
})["catch"](function (error) {
|
|
|
uploader.deleteFile(uploader._curIndex);
|
|
|
uploader.nextUpload();
|
|
|
console.log(error);
|
|
|
});
|
|
|
}
|
|
|
},
|
|
|
// 文件上传成功
|
|
|
onUploadSucceed: function onUploadSucceed(uploadInfo) {
|
|
|
options.onUploadSucceed && options.onUploadSucceed(uploadInfo);
|
|
|
console.log('文件上传成功!');
|
|
|
},
|
|
|
// 文件上传失败
|
|
|
onUploadFailed: function onUploadFailed(uploadInfo, code, message) {
|
|
|
options.onUploadFailed && options.onUploadFailed(uploadInfo);
|
|
|
console.log('文件上传失败!');
|
|
|
},
|
|
|
// 取消文件上传
|
|
|
onUploadCanceled: function onUploadCanceled(uploadInfo, code, message) {
|
|
|
console.log('文件上传已暂停!');
|
|
|
},
|
|
|
// 文件上传进度,单位:字节, 可以在这个函数中拿到上传进度并显示在页面上
|
|
|
onUploadProgress: function onUploadProgress(uploadInfo, totalSize, progress) {
|
|
|
options.onUploadProgress && options.onUploadProgress(uploadInfo, totalSize, progress);
|
|
|
var progressPercent = Math.ceil(progress * 100);
|
|
|
console.log('文件上传中...');
|
|
|
},
|
|
|
// 上传凭证超时
|
|
|
onUploadTokenExpired: function onUploadTokenExpired(uploadInfo) {
|
|
|
console.log('文件上传超时!');
|
|
|
var refreshUrl = "/api/users/".concat(login, "/video_auths.json");
|
|
|
(0,_utils_fetch__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .ZP)(refreshUrl, {
|
|
|
method: 'put',
|
|
|
body: {
|
|
|
video_id: uploadInfo.videoId
|
|
|
}
|
|
|
}).then(function (response) {
|
|
|
var data = response.data;
|
|
|
var uploadAuth = data.UploadAuth;
|
|
|
uploader.resumeUploadWithAuth(uploadAuth);
|
|
|
})["catch"](function (error) {
|
|
|
console.log(error);
|
|
|
});
|
|
|
},
|
|
|
// 全部文件上传结束
|
|
|
onUploadEnd: function onUploadEnd(uploadInfo) {
|
|
|
options.onUploadEnd && options.onUploadEnd(uploadInfo);
|
|
|
console.log("onUploadEnd: uploaded all the files");
|
|
|
}
|
|
|
});
|
|
|
if (options.gotUploader) {
|
|
|
options.gotUploader(uploader);
|
|
|
}
|
|
|
}
|
|
|
function getUploader(_login, _virtual_classroom_id, options) {
|
|
|
_login && (login = _login);
|
|
|
_virtual_classroom_id && (virtual_classroom_id = _virtual_classroom_id);
|
|
|
// if (!uploader || options.create == true) {
|
|
|
createUploader(options);
|
|
|
// }
|
|
|
}
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 15994:
|
|
|
/*!*********************************!*\
|
|
|
!*** ./src/utils/fullscreen.ts ***!
|
|
|
\*********************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ "BU": function() { return /* binding */ exitFull; },
|
|
|
/* harmony export */ "Dj": function() { return /* binding */ requestFullScreen; },
|
|
|
/* harmony export */ "gH": function() { return /* binding */ fullscreenChange; },
|
|
|
/* harmony export */ "vp": function() { return /* binding */ IsFull; }
|
|
|
/* harmony export */ });
|
|
|
function requestFullScreen(element) {
|
|
|
try {
|
|
|
if (element.mozRequestFullScreen) {
|
|
|
element.mozRequestFullScreen();
|
|
|
} else if (element.webkitRequestFullScreen) {
|
|
|
element.webkitRequestFullScreen();
|
|
|
}
|
|
|
} catch (e) {
|
|
|
console.log(e, ":e");
|
|
|
}
|
|
|
}
|
|
|
function exitFull() {
|
|
|
if (window.top.document.webkitExitFullscreen) {
|
|
|
window.top.document.webkitExitFullscreen();
|
|
|
} else if (document.exitFullscreen) {
|
|
|
window.top.document.exitFullscreen();
|
|
|
} else if (document.msExitFullscreen) {
|
|
|
window.top.document.msExitFullscreen();
|
|
|
} else if (document.mozCancelFullScreen) {
|
|
|
window.top.document.mozCancelFullScreen();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// esliint disabled
|
|
|
var fullscreenChange = function fullscreenChange() {
|
|
|
//['fullscreenchange','msfullscreenchange','webkitfullscreenchange', 'mozfullscreenchange']
|
|
|
if (document.webkitExitFullscreen) {
|
|
|
// document.webkitExitFullscreen()
|
|
|
return 'webkitfullscreenchange';
|
|
|
} else if (document.exitFullscreen) {
|
|
|
// document.exitFullscreen()
|
|
|
return 'fullscreenchange';
|
|
|
} else if (document.msExitFullscreen) {
|
|
|
// document.msExitFullscreen()
|
|
|
return 'msfullscreenchange';
|
|
|
} else if (document.mozCancelFullScreen) {
|
|
|
// document.mozCancelFullScreen()
|
|
|
return 'mozfullscreenchange';
|
|
|
}
|
|
|
};
|
|
|
|
|
|
//判断是否全屏
|
|
|
function IsFull() {
|
|
|
var fullscreenElement = window.top.document.fullscreenElement || window.top.document.mozFullscreenElement || window.top.document.webkitFullscreenElement;
|
|
|
var fullscreenEnabled = document.fullscreenEnabled || document.mozFullscreenEnabled || document.webkitFullscreenEnabled;
|
|
|
console.log("fullscreenElement", fullscreenElement);
|
|
|
if (fullscreenElement == null) {
|
|
|
return false;
|
|
|
} else {
|
|
|
return true;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// document.addEventListener("mozfullscreenchange", function (event) {
|
|
|
// console.log("mozfullscreenchange ", event);
|
|
|
// if (IsFull()) {
|
|
|
// console.log('进入全屏')
|
|
|
// $("#closescreen").show();
|
|
|
// $("#openscreen").hide();
|
|
|
// } else {
|
|
|
// console.log('退出全屏')
|
|
|
// $("#closescreen").hide();
|
|
|
// $("#openscreen").show();
|
|
|
// }
|
|
|
// });
|
|
|
// document.addEventListener("webkitfullscreenchange", function (event) {
|
|
|
// console.log("webkitfullscreenchange", event);
|
|
|
// if (IsFull()) {
|
|
|
// console.log('进入全屏')
|
|
|
// $("#closescreen").show();
|
|
|
// $("#openscreen").hide();
|
|
|
// } else {
|
|
|
// console.log('退出全屏')
|
|
|
// $("#closescreen").hide();
|
|
|
// $("#openscreen").show();
|
|
|
// }
|
|
|
// });
|
|
|
// document.addEventListener("msfullscreenchange", function (event) {
|
|
|
// console.log("msfullscreenchange", event);
|
|
|
// if (IsFull()) {
|
|
|
// console.log('进入全屏')
|
|
|
// $("#closescreen").show();
|
|
|
// $("#openscreen").hide();
|
|
|
// } else {
|
|
|
// console.log('退出全屏')
|
|
|
// $("#closescreen").hide();
|
|
|
// $("#openscreen").show();
|
|
|
// }
|
|
|
// });
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 4393:
|
|
|
/*!********************************************************!*\
|
|
|
!*** ./node_modules/antd/es/card/index.js + 4 modules ***!
|
|
|
\********************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
"Z": function() { return /* binding */ card; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/classnames/index.js
|
|
|
var classnames = __webpack_require__(94184);
|
|
|
var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/node_modules/rc-util/es/omit.js
|
|
|
var omit = __webpack_require__(10366);
|
|
|
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
|
var react = __webpack_require__(67294);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/config-provider/context.js
|
|
|
var context = __webpack_require__(53124);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/config-provider/hooks/useSize.js
|
|
|
var useSize = __webpack_require__(98675);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/skeleton/index.js + 12 modules
|
|
|
var skeleton = __webpack_require__(21687);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/tabs/index.js + 28 modules
|
|
|
var es_tabs = __webpack_require__(34755);
|
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/card/Grid.js
|
|
|
var __rest = undefined && undefined.__rest || function (s, e) {
|
|
|
var t = {};
|
|
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
|
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
|
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
|
}
|
|
|
return t;
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const Grid = _a => {
|
|
|
var {
|
|
|
prefixCls,
|
|
|
className,
|
|
|
hoverable = true
|
|
|
} = _a,
|
|
|
props = __rest(_a, ["prefixCls", "className", "hoverable"]);
|
|
|
const {
|
|
|
getPrefixCls
|
|
|
} = react.useContext(context/* ConfigContext */.E_);
|
|
|
const prefix = getPrefixCls('card', prefixCls);
|
|
|
const classString = classnames_default()(`${prefix}-grid`, className, {
|
|
|
[`${prefix}-grid-hoverable`]: hoverable
|
|
|
});
|
|
|
return /*#__PURE__*/react.createElement("div", Object.assign({}, props, {
|
|
|
className: classString
|
|
|
}));
|
|
|
};
|
|
|
/* harmony default export */ var card_Grid = (Grid);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/style/index.js
|
|
|
var style = __webpack_require__(14747);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/theme/util/genComponentStyleHook.js
|
|
|
var genComponentStyleHook = __webpack_require__(67968);
|
|
|
// EXTERNAL MODULE: ./node_modules/antd/es/theme/util/statistic.js
|
|
|
var statistic = __webpack_require__(45503);
|
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/card/style/index.js
|
|
|
|
|
|
|
|
|
// ============================== Styles ==============================
|
|
|
// ============================== Head ==============================
|
|
|
const genCardHeadStyle = token => {
|
|
|
const {
|
|
|
antCls,
|
|
|
componentCls,
|
|
|
headerHeight,
|
|
|
cardPaddingBase,
|
|
|
tabsMarginBottom
|
|
|
} = token;
|
|
|
return Object.assign(Object.assign({
|
|
|
display: 'flex',
|
|
|
justifyContent: 'center',
|
|
|
flexDirection: 'column',
|
|
|
minHeight: headerHeight,
|
|
|
marginBottom: -1,
|
|
|
padding: `0 ${cardPaddingBase}px`,
|
|
|
color: token.colorTextHeading,
|
|
|
fontWeight: token.fontWeightStrong,
|
|
|
fontSize: token.headerFontSize,
|
|
|
background: token.headerBg,
|
|
|
borderBottom: `${token.lineWidth}px ${token.lineType} ${token.colorBorderSecondary}`,
|
|
|
borderRadius: `${token.borderRadiusLG}px ${token.borderRadiusLG}px 0 0`
|
|
|
}, (0,style/* clearFix */.dF)()), {
|
|
|
'&-wrapper': {
|
|
|
width: '100%',
|
|
|
display: 'flex',
|
|
|
alignItems: 'center'
|
|
|
},
|
|
|
'&-title': Object.assign(Object.assign({
|
|
|
display: 'inline-block',
|
|
|
flex: 1
|
|
|
}, style/* textEllipsis */.vS), {
|
|
|
[`
|
|
|
> ${componentCls}-typography,
|
|
|
> ${componentCls}-typography-edit-content
|
|
|
`]: {
|
|
|
insetInlineStart: 0,
|
|
|
marginTop: 0,
|
|
|
marginBottom: 0
|
|
|
}
|
|
|
}),
|
|
|
[`${antCls}-tabs-top`]: {
|
|
|
clear: 'both',
|
|
|
marginBottom: tabsMarginBottom,
|
|
|
color: token.colorText,
|
|
|
fontWeight: 'normal',
|
|
|
fontSize: token.fontSize,
|
|
|
'&-bar': {
|
|
|
borderBottom: `${token.lineWidth}px ${token.lineType} ${token.colorBorderSecondary}`
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
// ============================== Grid ==============================
|
|
|
const genCardGridStyle = token => {
|
|
|
const {
|
|
|
cardPaddingBase,
|
|
|
colorBorderSecondary,
|
|
|
cardShadow,
|
|
|
lineWidth
|
|
|
} = token;
|
|
|
return {
|
|
|
width: '33.33%',
|
|
|
padding: cardPaddingBase,
|
|
|
border: 0,
|
|
|
borderRadius: 0,
|
|
|
boxShadow: `
|
|
|
${lineWidth}px 0 0 0 ${colorBorderSecondary},
|
|
|
0 ${lineWidth}px 0 0 ${colorBorderSecondary},
|
|
|
${lineWidth}px ${lineWidth}px 0 0 ${colorBorderSecondary},
|
|
|
${lineWidth}px 0 0 0 ${colorBorderSecondary} inset,
|
|
|
0 ${lineWidth}px 0 0 ${colorBorderSecondary} inset;
|
|
|
`,
|
|
|
transition: `all ${token.motionDurationMid}`,
|
|
|
'&-hoverable:hover': {
|
|
|
position: 'relative',
|
|
|
zIndex: 1,
|
|
|
boxShadow: cardShadow
|
|
|
}
|
|
|
};
|
|
|
};
|
|
|
// ============================== Actions ==============================
|
|
|
const genCardActionsStyle = token => {
|
|
|
const {
|
|
|
componentCls,
|
|
|
iconCls,
|
|
|
actionsLiMargin,
|
|
|
cardActionsIconSize,
|
|
|
colorBorderSecondary,
|
|
|
actionsBg
|
|
|
} = token;
|
|
|
return Object.assign(Object.assign({
|
|
|
margin: 0,
|
|
|
padding: 0,
|
|
|
listStyle: 'none',
|
|
|
background: actionsBg,
|
|
|
borderTop: `${token.lineWidth}px ${token.lineType} ${colorBorderSecondary}`,
|
|
|
display: 'flex',
|
|
|
borderRadius: `0 0 ${token.borderRadiusLG}px ${token.borderRadiusLG}px `
|
|
|
}, (0,style/* clearFix */.dF)()), {
|
|
|
'& > li': {
|
|
|
margin: actionsLiMargin,
|
|
|
color: token.colorTextDescription,
|
|
|
textAlign: 'center',
|
|
|
'> span': {
|
|
|
position: 'relative',
|
|
|
display: 'block',
|
|
|
minWidth: token.cardActionsIconSize * 2,
|
|
|
fontSize: token.fontSize,
|
|
|
lineHeight: token.lineHeight,
|
|
|
cursor: 'pointer',
|
|
|
'&:hover': {
|
|
|
color: token.colorPrimary,
|
|
|
transition: `color ${token.motionDurationMid}`
|
|
|
},
|
|
|
[`a:not(${componentCls}-btn), > ${iconCls}`]: {
|
|
|
display: 'inline-block',
|
|
|
width: '100%',
|
|
|
color: token.colorTextDescription,
|
|
|
lineHeight: `${token.fontSize * token.lineHeight}px`,
|
|
|
transition: `color ${token.motionDurationMid}`,
|
|
|
'&:hover': {
|
|
|
color: token.colorPrimary
|
|
|
}
|
|
|
},
|
|
|
[`> ${iconCls}`]: {
|
|
|
fontSize: cardActionsIconSize,
|
|
|
lineHeight: `${cardActionsIconSize * token.lineHeight}px`
|
|
|
}
|
|
|
},
|
|
|
'&:not(:last-child)': {
|
|
|
borderInlineEnd: `${token.lineWidth}px ${token.lineType} ${colorBorderSecondary}`
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
};
|
|
|
// ============================== Meta ==============================
|
|
|
const genCardMetaStyle = token => Object.assign(Object.assign({
|
|
|
margin: `-${token.marginXXS}px 0`,
|
|
|
display: 'flex'
|
|
|
}, (0,style/* clearFix */.dF)()), {
|
|
|
'&-avatar': {
|
|
|
paddingInlineEnd: token.padding
|
|
|
},
|
|
|
'&-detail': {
|
|
|
overflow: 'hidden',
|
|
|
flex: 1,
|
|
|
'> div:not(:last-child)': {
|
|
|
marginBottom: token.marginXS
|
|
|
}
|
|
|
},
|
|
|
'&-title': Object.assign({
|
|
|
color: token.colorTextHeading,
|
|
|
fontWeight: token.fontWeightStrong,
|
|
|
fontSize: token.fontSizeLG
|
|
|
}, style/* textEllipsis */.vS),
|
|
|
'&-description': {
|
|
|
color: token.colorTextDescription
|
|
|
}
|
|
|
});
|
|
|
// ============================== Inner ==============================
|
|
|
const genCardTypeInnerStyle = token => {
|
|
|
const {
|
|
|
componentCls,
|
|
|
cardPaddingBase,
|
|
|
colorFillAlter
|
|
|
} = token;
|
|
|
return {
|
|
|
[`${componentCls}-head`]: {
|
|
|
padding: `0 ${cardPaddingBase}px`,
|
|
|
background: colorFillAlter,
|
|
|
'&-title': {
|
|
|
fontSize: token.fontSize
|
|
|
}
|
|
|
},
|
|
|
[`${componentCls}-body`]: {
|
|
|
padding: `${token.padding}px ${cardPaddingBase}px`
|
|
|
}
|
|
|
};
|
|
|
};
|
|
|
// ============================== Loading ==============================
|
|
|
const genCardLoadingStyle = token => {
|
|
|
const {
|
|
|
componentCls
|
|
|
} = token;
|
|
|
return {
|
|
|
overflow: 'hidden',
|
|
|
[`${componentCls}-body`]: {
|
|
|
userSelect: 'none'
|
|
|
}
|
|
|
};
|
|
|
};
|
|
|
// ============================== Basic ==============================
|
|
|
const genCardStyle = token => {
|
|
|
const {
|
|
|
antCls,
|
|
|
componentCls,
|
|
|
cardShadow,
|
|
|
cardHeadPadding,
|
|
|
colorBorderSecondary,
|
|
|
boxShadowTertiary,
|
|
|
cardPaddingBase,
|
|
|
extraColor
|
|
|
} = token;
|
|
|
return {
|
|
|
[componentCls]: Object.assign(Object.assign({}, (0,style/* resetComponent */.Wf)(token)), {
|
|
|
position: 'relative',
|
|
|
background: token.colorBgContainer,
|
|
|
borderRadius: token.borderRadiusLG,
|
|
|
[`&:not(${componentCls}-bordered)`]: {
|
|
|
boxShadow: boxShadowTertiary
|
|
|
},
|
|
|
[`${componentCls}-head`]: genCardHeadStyle(token),
|
|
|
[`${componentCls}-extra`]: {
|
|
|
// https://stackoverflow.com/a/22429853/3040605
|
|
|
marginInlineStart: 'auto',
|
|
|
color: extraColor,
|
|
|
fontWeight: 'normal',
|
|
|
fontSize: token.fontSize
|
|
|
},
|
|
|
[`${componentCls}-body`]: Object.assign({
|
|
|
padding: cardPaddingBase,
|
|
|
borderRadius: ` 0 0 ${token.borderRadiusLG}px ${token.borderRadiusLG}px`
|
|
|
}, (0,style/* clearFix */.dF)()),
|
|
|
[`${componentCls}-grid`]: genCardGridStyle(token),
|
|
|
[`${componentCls}-cover`]: {
|
|
|
'> *': {
|
|
|
display: 'block',
|
|
|
width: '100%'
|
|
|
},
|
|
|
[`img, img + ${antCls}-image-mask`]: {
|
|
|
borderRadius: `${token.borderRadiusLG}px ${token.borderRadiusLG}px 0 0`
|
|
|
}
|
|
|
},
|
|
|
[`${componentCls}-actions`]: genCardActionsStyle(token),
|
|
|
[`${componentCls}-meta`]: genCardMetaStyle(token)
|
|
|
}),
|
|
|
[`${componentCls}-bordered`]: {
|
|
|
border: `${token.lineWidth}px ${token.lineType} ${colorBorderSecondary}`,
|
|
|
[`${componentCls}-cover`]: {
|
|
|
marginTop: -1,
|
|
|
marginInlineStart: -1,
|
|
|
marginInlineEnd: -1
|
|
|
}
|
|
|
},
|
|
|
[`${componentCls}-hoverable`]: {
|
|
|
cursor: 'pointer',
|
|
|
transition: `box-shadow ${token.motionDurationMid}, border-color ${token.motionDurationMid}`,
|
|
|
'&:hover': {
|
|
|
borderColor: 'transparent',
|
|
|
boxShadow: cardShadow
|
|
|
}
|
|
|
},
|
|
|
[`${componentCls}-contain-grid`]: {
|
|
|
[`${componentCls}-body`]: {
|
|
|
display: 'flex',
|
|
|
flexWrap: 'wrap'
|
|
|
},
|
|
|
[`&:not(${componentCls}-loading) ${componentCls}-body`]: {
|
|
|
marginBlockStart: -token.lineWidth,
|
|
|
marginInlineStart: -token.lineWidth,
|
|
|
padding: 0
|
|
|
}
|
|
|
},
|
|
|
[`${componentCls}-contain-tabs`]: {
|
|
|
[`> ${componentCls}-head`]: {
|
|
|
[`${componentCls}-head-title, ${componentCls}-extra`]: {
|
|
|
paddingTop: cardHeadPadding
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
[`${componentCls}-type-inner`]: genCardTypeInnerStyle(token),
|
|
|
[`${componentCls}-loading`]: genCardLoadingStyle(token),
|
|
|
[`${componentCls}-rtl`]: {
|
|
|
direction: 'rtl'
|
|
|
}
|
|
|
};
|
|
|
};
|
|
|
// ============================== Size ==============================
|
|
|
const genCardSizeStyle = token => {
|
|
|
const {
|
|
|
componentCls,
|
|
|
cardPaddingSM,
|
|
|
headerHeightSM,
|
|
|
headerFontSizeSM
|
|
|
} = token;
|
|
|
return {
|
|
|
[`${componentCls}-small`]: {
|
|
|
[`> ${componentCls}-head`]: {
|
|
|
minHeight: headerHeightSM,
|
|
|
padding: `0 ${cardPaddingSM}px`,
|
|
|
fontSize: headerFontSizeSM,
|
|
|
[`> ${componentCls}-head-wrapper`]: {
|
|
|
[`> ${componentCls}-extra`]: {
|
|
|
fontSize: token.fontSize
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
[`> ${componentCls}-body`]: {
|
|
|
padding: cardPaddingSM
|
|
|
}
|
|
|
},
|
|
|
[`${componentCls}-small${componentCls}-contain-tabs`]: {
|
|
|
[`> ${componentCls}-head`]: {
|
|
|
[`${componentCls}-head-title, ${componentCls}-extra`]: {
|
|
|
minHeight: headerHeightSM,
|
|
|
paddingTop: 0,
|
|
|
display: 'flex',
|
|
|
alignItems: 'center'
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
};
|
|
|
// ============================== Export ==============================
|
|
|
/* harmony default export */ var card_style = ((0,genComponentStyleHook/* default */.Z)('Card', token => {
|
|
|
const cardToken = (0,statistic/* merge */.TS)(token, {
|
|
|
cardShadow: token.boxShadowCard,
|
|
|
cardHeadPadding: token.padding,
|
|
|
cardPaddingBase: token.paddingLG,
|
|
|
cardActionsIconSize: token.fontSize,
|
|
|
cardPaddingSM: 12 // Fixed padding.
|
|
|
});
|
|
|
|
|
|
return [
|
|
|
// Style
|
|
|
genCardStyle(cardToken),
|
|
|
// Size
|
|
|
genCardSizeStyle(cardToken)];
|
|
|
}, token => ({
|
|
|
headerBg: 'transparent',
|
|
|
headerFontSize: token.fontSizeLG,
|
|
|
headerFontSizeSM: token.fontSize,
|
|
|
headerHeight: token.fontSizeLG * token.lineHeightLG + token.padding * 2,
|
|
|
headerHeightSM: token.fontSize * token.lineHeight + token.paddingXS * 2,
|
|
|
actionsBg: token.colorBgContainer,
|
|
|
actionsLiMargin: `${token.paddingSM}px 0`,
|
|
|
tabsMarginBottom: -token.padding - token.lineWidth,
|
|
|
extraColor: token.colorText
|
|
|
})));
|
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/card/Card.js
|
|
|
var Card_rest = undefined && undefined.__rest || function (s, e) {
|
|
|
var t = {};
|
|
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
|
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
|
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
|
}
|
|
|
return t;
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function getAction(actions) {
|
|
|
return actions.map((action, index) =>
|
|
|
/*#__PURE__*/
|
|
|
// eslint-disable-next-line react/no-array-index-key
|
|
|
react.createElement("li", {
|
|
|
style: {
|
|
|
width: `${100 / actions.length}%`
|
|
|
},
|
|
|
key: `action-${index}`
|
|
|
}, /*#__PURE__*/react.createElement("span", null, action)));
|
|
|
}
|
|
|
const Card = /*#__PURE__*/react.forwardRef((props, ref) => {
|
|
|
const {
|
|
|
prefixCls: customizePrefixCls,
|
|
|
className,
|
|
|
rootClassName,
|
|
|
style,
|
|
|
extra,
|
|
|
headStyle = {},
|
|
|
bodyStyle = {},
|
|
|
title,
|
|
|
loading,
|
|
|
bordered = true,
|
|
|
size: customizeSize,
|
|
|
type,
|
|
|
cover,
|
|
|
actions,
|
|
|
tabList,
|
|
|
children,
|
|
|
activeTabKey,
|
|
|
defaultActiveTabKey,
|
|
|
tabBarExtraContent,
|
|
|
hoverable,
|
|
|
tabProps = {}
|
|
|
} = props,
|
|
|
others = Card_rest(props, ["prefixCls", "className", "rootClassName", "style", "extra", "headStyle", "bodyStyle", "title", "loading", "bordered", "size", "type", "cover", "actions", "tabList", "children", "activeTabKey", "defaultActiveTabKey", "tabBarExtraContent", "hoverable", "tabProps"]);
|
|
|
const {
|
|
|
getPrefixCls,
|
|
|
direction,
|
|
|
card
|
|
|
} = react.useContext(context/* ConfigContext */.E_);
|
|
|
const onTabChange = key => {
|
|
|
var _a;
|
|
|
(_a = props.onTabChange) === null || _a === void 0 ? void 0 : _a.call(props, key);
|
|
|
};
|
|
|
const isContainGrid = react.useMemo(() => {
|
|
|
let containGrid = false;
|
|
|
react.Children.forEach(children, element => {
|
|
|
if (element && element.type && element.type === card_Grid) {
|
|
|
containGrid = true;
|
|
|
}
|
|
|
});
|
|
|
return containGrid;
|
|
|
}, [children]);
|
|
|
const prefixCls = getPrefixCls('card', customizePrefixCls);
|
|
|
const [wrapSSR, hashId] = card_style(prefixCls);
|
|
|
const loadingBlock = /*#__PURE__*/react.createElement(skeleton/* default */.Z, {
|
|
|
loading: true,
|
|
|
active: true,
|
|
|
paragraph: {
|
|
|
rows: 4
|
|
|
},
|
|
|
title: false
|
|
|
}, children);
|
|
|
const hasActiveTabKey = activeTabKey !== undefined;
|
|
|
const extraProps = Object.assign(Object.assign({}, tabProps), {
|
|
|
[hasActiveTabKey ? 'activeKey' : 'defaultActiveKey']: hasActiveTabKey ? activeTabKey : defaultActiveTabKey,
|
|
|
tabBarExtraContent
|
|
|
});
|
|
|
let head;
|
|
|
const mergedSize = (0,useSize/* default */.Z)(customizeSize);
|
|
|
const tabSize = !mergedSize || mergedSize === 'default' ? 'large' : mergedSize;
|
|
|
const tabs = tabList ? /*#__PURE__*/react.createElement(es_tabs/* default */.Z, Object.assign({
|
|
|
size: tabSize
|
|
|
}, extraProps, {
|
|
|
className: `${prefixCls}-head-tabs`,
|
|
|
onChange: onTabChange,
|
|
|
items: tabList.map(_a => {
|
|
|
var {
|
|
|
tab
|
|
|
} = _a,
|
|
|
item = Card_rest(_a, ["tab"]);
|
|
|
return Object.assign({
|
|
|
label: tab
|
|
|
}, item);
|
|
|
})
|
|
|
})) : null;
|
|
|
if (title || extra || tabs) {
|
|
|
head = /*#__PURE__*/react.createElement("div", {
|
|
|
className: `${prefixCls}-head`,
|
|
|
style: headStyle
|
|
|
}, /*#__PURE__*/react.createElement("div", {
|
|
|
className: `${prefixCls}-head-wrapper`
|
|
|
}, title && /*#__PURE__*/react.createElement("div", {
|
|
|
className: `${prefixCls}-head-title`
|
|
|
}, title), extra && /*#__PURE__*/react.createElement("div", {
|
|
|
className: `${prefixCls}-extra`
|
|
|
}, extra)), tabs);
|
|
|
}
|
|
|
const coverDom = cover ? /*#__PURE__*/react.createElement("div", {
|
|
|
className: `${prefixCls}-cover`
|
|
|
}, cover) : null;
|
|
|
const body = /*#__PURE__*/react.createElement("div", {
|
|
|
className: `${prefixCls}-body`,
|
|
|
style: bodyStyle
|
|
|
}, loading ? loadingBlock : children);
|
|
|
const actionDom = actions && actions.length ? /*#__PURE__*/react.createElement("ul", {
|
|
|
className: `${prefixCls}-actions`
|
|
|
}, getAction(actions)) : null;
|
|
|
const divProps = (0,omit/* default */.Z)(others, ['onTabChange']);
|
|
|
const classString = classnames_default()(prefixCls, card === null || card === void 0 ? void 0 : card.className, {
|
|
|
[`${prefixCls}-loading`]: loading,
|
|
|
[`${prefixCls}-bordered`]: bordered,
|
|
|
[`${prefixCls}-hoverable`]: hoverable,
|
|
|
[`${prefixCls}-contain-grid`]: isContainGrid,
|
|
|
[`${prefixCls}-contain-tabs`]: tabList && tabList.length,
|
|
|
[`${prefixCls}-${mergedSize}`]: mergedSize,
|
|
|
[`${prefixCls}-type-${type}`]: !!type,
|
|
|
[`${prefixCls}-rtl`]: direction === 'rtl'
|
|
|
}, className, rootClassName, hashId);
|
|
|
const mergedStyle = Object.assign(Object.assign({}, card === null || card === void 0 ? void 0 : card.style), style);
|
|
|
return wrapSSR( /*#__PURE__*/react.createElement("div", Object.assign({
|
|
|
ref: ref
|
|
|
}, divProps, {
|
|
|
className: classString,
|
|
|
style: mergedStyle
|
|
|
}), head, coverDom, body, actionDom));
|
|
|
});
|
|
|
/* harmony default export */ var card_Card = (Card);
|
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/card/Meta.js
|
|
|
var Meta_rest = undefined && undefined.__rest || function (s, e) {
|
|
|
var t = {};
|
|
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
|
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
|
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
|
}
|
|
|
return t;
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
const Meta = props => {
|
|
|
const {
|
|
|
prefixCls: customizePrefixCls,
|
|
|
className,
|
|
|
avatar,
|
|
|
title,
|
|
|
description
|
|
|
} = props,
|
|
|
others = Meta_rest(props, ["prefixCls", "className", "avatar", "title", "description"]);
|
|
|
const {
|
|
|
getPrefixCls
|
|
|
} = react.useContext(context/* ConfigContext */.E_);
|
|
|
const prefixCls = getPrefixCls('card', customizePrefixCls);
|
|
|
const classString = classnames_default()(`${prefixCls}-meta`, className);
|
|
|
const avatarDom = avatar ? /*#__PURE__*/react.createElement("div", {
|
|
|
className: `${prefixCls}-meta-avatar`
|
|
|
}, avatar) : null;
|
|
|
const titleDom = title ? /*#__PURE__*/react.createElement("div", {
|
|
|
className: `${prefixCls}-meta-title`
|
|
|
}, title) : null;
|
|
|
const descriptionDom = description ? /*#__PURE__*/react.createElement("div", {
|
|
|
className: `${prefixCls}-meta-description`
|
|
|
}, description) : null;
|
|
|
const MetaDetail = titleDom || descriptionDom ? /*#__PURE__*/react.createElement("div", {
|
|
|
className: `${prefixCls}-meta-detail`
|
|
|
}, titleDom, descriptionDom) : null;
|
|
|
return /*#__PURE__*/react.createElement("div", Object.assign({}, others, {
|
|
|
className: classString
|
|
|
}), avatarDom, MetaDetail);
|
|
|
};
|
|
|
/* harmony default export */ var card_Meta = (Meta);
|
|
|
;// CONCATENATED MODULE: ./node_modules/antd/es/card/index.js
|
|
|
'use client';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const es_card_Card = card_Card;
|
|
|
es_card_Card.Grid = card_Grid;
|
|
|
es_card_Card.Meta = card_Meta;
|
|
|
if (false) {}
|
|
|
/* harmony default export */ var card = (es_card_Card);
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 97183:
|
|
|
/*!**********************************************!*\
|
|
|
!*** ./node_modules/antd/es/layout/index.js ***!
|
|
|
\**********************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony import */ var _layout__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./layout */ 84321);
|
|
|
/* harmony import */ var _Sider__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Sider */ 7293);
|
|
|
'use client';
|
|
|
|
|
|
|
|
|
|
|
|
const Layout = _layout__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .ZP;
|
|
|
Layout.Header = _layout__WEBPACK_IMPORTED_MODULE_0__/* .Header */ .h4;
|
|
|
Layout.Footer = _layout__WEBPACK_IMPORTED_MODULE_0__/* .Footer */ .$_;
|
|
|
Layout.Content = _layout__WEBPACK_IMPORTED_MODULE_0__/* .Content */ .VY;
|
|
|
Layout.Sider = _Sider__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .Z;
|
|
|
/* harmony default export */ __webpack_exports__["Z"] = (Layout);
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 20640:
|
|
|
/*!*************************************************!*\
|
|
|
!*** ./node_modules/copy-to-clipboard/index.js ***!
|
|
|
\*************************************************/
|
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
var deselectCurrent = __webpack_require__(/*! toggle-selection */ 11742);
|
|
|
|
|
|
var clipboardToIE11Formatting = {
|
|
|
"text/plain": "Text",
|
|
|
"text/html": "Url",
|
|
|
"default": "Text"
|
|
|
}
|
|
|
|
|
|
var defaultMessage = "Copy to clipboard: #{key}, Enter";
|
|
|
|
|
|
function format(message) {
|
|
|
var copyKey = (/mac os x/i.test(navigator.userAgent) ? "⌘" : "Ctrl") + "+C";
|
|
|
return message.replace(/#{\s*key\s*}/g, copyKey);
|
|
|
}
|
|
|
|
|
|
function copy(text, options) {
|
|
|
var debug,
|
|
|
message,
|
|
|
reselectPrevious,
|
|
|
range,
|
|
|
selection,
|
|
|
mark,
|
|
|
success = false;
|
|
|
if (!options) {
|
|
|
options = {};
|
|
|
}
|
|
|
debug = options.debug || false;
|
|
|
try {
|
|
|
reselectPrevious = deselectCurrent();
|
|
|
|
|
|
range = document.createRange();
|
|
|
selection = document.getSelection();
|
|
|
|
|
|
mark = document.createElement("span");
|
|
|
mark.textContent = text;
|
|
|
// avoid screen readers from reading out loud the text
|
|
|
mark.ariaHidden = "true"
|
|
|
// reset user styles for span element
|
|
|
mark.style.all = "unset";
|
|
|
// prevents scrolling to the end of the page
|
|
|
mark.style.position = "fixed";
|
|
|
mark.style.top = 0;
|
|
|
mark.style.clip = "rect(0, 0, 0, 0)";
|
|
|
// used to preserve spaces and line breaks
|
|
|
mark.style.whiteSpace = "pre";
|
|
|
// do not inherit user-select (it may be `none`)
|
|
|
mark.style.webkitUserSelect = "text";
|
|
|
mark.style.MozUserSelect = "text";
|
|
|
mark.style.msUserSelect = "text";
|
|
|
mark.style.userSelect = "text";
|
|
|
mark.addEventListener("copy", function(e) {
|
|
|
e.stopPropagation();
|
|
|
if (options.format) {
|
|
|
e.preventDefault();
|
|
|
if (typeof e.clipboardData === "undefined") { // IE 11
|
|
|
debug && console.warn("unable to use e.clipboardData");
|
|
|
debug && console.warn("trying IE specific stuff");
|
|
|
window.clipboardData.clearData();
|
|
|
var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting["default"]
|
|
|
window.clipboardData.setData(format, text);
|
|
|
} else { // all other browsers
|
|
|
e.clipboardData.clearData();
|
|
|
e.clipboardData.setData(options.format, text);
|
|
|
}
|
|
|
}
|
|
|
if (options.onCopy) {
|
|
|
e.preventDefault();
|
|
|
options.onCopy(e.clipboardData);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
document.body.appendChild(mark);
|
|
|
|
|
|
range.selectNodeContents(mark);
|
|
|
selection.addRange(range);
|
|
|
|
|
|
var successful = document.execCommand("copy");
|
|
|
if (!successful) {
|
|
|
throw new Error("copy command was unsuccessful");
|
|
|
}
|
|
|
success = true;
|
|
|
} catch (err) {
|
|
|
debug && console.error("unable to copy using execCommand: ", err);
|
|
|
debug && console.warn("trying IE specific stuff");
|
|
|
try {
|
|
|
window.clipboardData.setData(options.format || "text", text);
|
|
|
options.onCopy && options.onCopy(window.clipboardData);
|
|
|
success = true;
|
|
|
} catch (err) {
|
|
|
debug && console.error("unable to copy using clipboardData: ", err);
|
|
|
debug && console.error("falling back to prompt");
|
|
|
message = format("message" in options ? options.message : defaultMessage);
|
|
|
window.prompt(message, text);
|
|
|
}
|
|
|
} finally {
|
|
|
if (selection) {
|
|
|
if (typeof selection.removeRange == "function") {
|
|
|
selection.removeRange(range);
|
|
|
} else {
|
|
|
selection.removeAllRanges();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (mark) {
|
|
|
document.body.removeChild(mark);
|
|
|
}
|
|
|
reselectPrevious();
|
|
|
}
|
|
|
|
|
|
return success;
|
|
|
}
|
|
|
|
|
|
module.exports = copy;
|
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 19575:
|
|
|
/*!******************************************!*\
|
|
|
!*** ./node_modules/js-base64/base64.js ***!
|
|
|
\******************************************/
|
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
|
|
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
|
|
|
* base64.js
|
|
|
*
|
|
|
* Licensed under the BSD 3-Clause License.
|
|
|
* http://opensource.org/licenses/BSD-3-Clause
|
|
|
*
|
|
|
* References:
|
|
|
* http://en.wikipedia.org/wiki/Base64
|
|
|
*/
|
|
|
;(function (global, factory) {
|
|
|
true
|
|
|
? module.exports = factory(global)
|
|
|
: 0
|
|
|
}((
|
|
|
typeof self !== 'undefined' ? self
|
|
|
: typeof window !== 'undefined' ? window
|
|
|
: typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g
|
|
|
: this
|
|
|
), function(global) {
|
|
|
'use strict';
|
|
|
// existing version for noConflict()
|
|
|
global = global || {};
|
|
|
var _Base64 = global.Base64;
|
|
|
var version = "2.6.4";
|
|
|
// constants
|
|
|
var b64chars
|
|
|
= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
|
|
|
var b64tab = function(bin) {
|
|
|
var t = {};
|
|
|
for (var i = 0, l = bin.length; i < l; i++) t[bin.charAt(i)] = i;
|
|
|
return t;
|
|
|
}(b64chars);
|
|
|
var fromCharCode = String.fromCharCode;
|
|
|
// encoder stuff
|
|
|
var cb_utob = function(c) {
|
|
|
if (c.length < 2) {
|
|
|
var cc = c.charCodeAt(0);
|
|
|
return cc < 0x80 ? c
|
|
|
: cc < 0x800 ? (fromCharCode(0xc0 | (cc >>> 6))
|
|
|
+ fromCharCode(0x80 | (cc & 0x3f)))
|
|
|
: (fromCharCode(0xe0 | ((cc >>> 12) & 0x0f))
|
|
|
+ fromCharCode(0x80 | ((cc >>> 6) & 0x3f))
|
|
|
+ fromCharCode(0x80 | ( cc & 0x3f)));
|
|
|
} else {
|
|
|
var cc = 0x10000
|
|
|
+ (c.charCodeAt(0) - 0xD800) * 0x400
|
|
|
+ (c.charCodeAt(1) - 0xDC00);
|
|
|
return (fromCharCode(0xf0 | ((cc >>> 18) & 0x07))
|
|
|
+ fromCharCode(0x80 | ((cc >>> 12) & 0x3f))
|
|
|
+ fromCharCode(0x80 | ((cc >>> 6) & 0x3f))
|
|
|
+ fromCharCode(0x80 | ( cc & 0x3f)));
|
|
|
}
|
|
|
};
|
|
|
var re_utob = /[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;
|
|
|
var utob = function(u) {
|
|
|
return u.replace(re_utob, cb_utob);
|
|
|
};
|
|
|
var cb_encode = function(ccc) {
|
|
|
var padlen = [0, 2, 1][ccc.length % 3],
|
|
|
ord = ccc.charCodeAt(0) << 16
|
|
|
| ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8)
|
|
|
| ((ccc.length > 2 ? ccc.charCodeAt(2) : 0)),
|
|
|
chars = [
|
|
|
b64chars.charAt( ord >>> 18),
|
|
|
b64chars.charAt((ord >>> 12) & 63),
|
|
|
padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63),
|
|
|
padlen >= 1 ? '=' : b64chars.charAt(ord & 63)
|
|
|
];
|
|
|
return chars.join('');
|
|
|
};
|
|
|
var btoa = global.btoa && typeof global.btoa == 'function'
|
|
|
? function(b){ return global.btoa(b) } : function(b) {
|
|
|
if (b.match(/[^\x00-\xFF]/)) throw new RangeError(
|
|
|
'The string contains invalid characters.'
|
|
|
);
|
|
|
return b.replace(/[\s\S]{1,3}/g, cb_encode);
|
|
|
};
|
|
|
var _encode = function(u) {
|
|
|
return btoa(utob(String(u)));
|
|
|
};
|
|
|
var mkUriSafe = function (b64) {
|
|
|
return b64.replace(/[+\/]/g, function(m0) {
|
|
|
return m0 == '+' ? '-' : '_';
|
|
|
}).replace(/=/g, '');
|
|
|
};
|
|
|
var encode = function(u, urisafe) {
|
|
|
return urisafe ? mkUriSafe(_encode(u)) : _encode(u);
|
|
|
};
|
|
|
var encodeURI = function(u) { return encode(u, true) };
|
|
|
var fromUint8Array;
|
|
|
if (global.Uint8Array) fromUint8Array = function(a, urisafe) {
|
|
|
// return btoa(fromCharCode.apply(null, a));
|
|
|
var b64 = '';
|
|
|
for (var i = 0, l = a.length; i < l; i += 3) {
|
|
|
var a0 = a[i], a1 = a[i+1], a2 = a[i+2];
|
|
|
var ord = a0 << 16 | a1 << 8 | a2;
|
|
|
b64 += b64chars.charAt( ord >>> 18)
|
|
|
+ b64chars.charAt((ord >>> 12) & 63)
|
|
|
+ ( typeof a1 != 'undefined'
|
|
|
? b64chars.charAt((ord >>> 6) & 63) : '=')
|
|
|
+ ( typeof a2 != 'undefined'
|
|
|
? b64chars.charAt( ord & 63) : '=');
|
|
|
}
|
|
|
return urisafe ? mkUriSafe(b64) : b64;
|
|
|
};
|
|
|
// decoder stuff
|
|
|
var re_btou = /[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g;
|
|
|
var cb_btou = function(cccc) {
|
|
|
switch(cccc.length) {
|
|
|
case 4:
|
|
|
var cp = ((0x07 & cccc.charCodeAt(0)) << 18)
|
|
|
| ((0x3f & cccc.charCodeAt(1)) << 12)
|
|
|
| ((0x3f & cccc.charCodeAt(2)) << 6)
|
|
|
| (0x3f & cccc.charCodeAt(3)),
|
|
|
offset = cp - 0x10000;
|
|
|
return (fromCharCode((offset >>> 10) + 0xD800)
|
|
|
+ fromCharCode((offset & 0x3FF) + 0xDC00));
|
|
|
case 3:
|
|
|
return fromCharCode(
|
|
|
((0x0f & cccc.charCodeAt(0)) << 12)
|
|
|
| ((0x3f & cccc.charCodeAt(1)) << 6)
|
|
|
| (0x3f & cccc.charCodeAt(2))
|
|
|
);
|
|
|
default:
|
|
|
return fromCharCode(
|
|
|
((0x1f & cccc.charCodeAt(0)) << 6)
|
|
|
| (0x3f & cccc.charCodeAt(1))
|
|
|
);
|
|
|
}
|
|
|
};
|
|
|
var btou = function(b) {
|
|
|
return b.replace(re_btou, cb_btou);
|
|
|
};
|
|
|
var cb_decode = function(cccc) {
|
|
|
var len = cccc.length,
|
|
|
padlen = len % 4,
|
|
|
n = (len > 0 ? b64tab[cccc.charAt(0)] << 18 : 0)
|
|
|
| (len > 1 ? b64tab[cccc.charAt(1)] << 12 : 0)
|
|
|
| (len > 2 ? b64tab[cccc.charAt(2)] << 6 : 0)
|
|
|
| (len > 3 ? b64tab[cccc.charAt(3)] : 0),
|
|
|
chars = [
|
|
|
fromCharCode( n >>> 16),
|
|
|
fromCharCode((n >>> 8) & 0xff),
|
|
|
fromCharCode( n & 0xff)
|
|
|
];
|
|
|
chars.length -= [0, 0, 2, 1][padlen];
|
|
|
return chars.join('');
|
|
|
};
|
|
|
var _atob = global.atob && typeof global.atob == 'function'
|
|
|
? function(a){ return global.atob(a) } : function(a){
|
|
|
return a.replace(/\S{1,4}/g, cb_decode);
|
|
|
};
|
|
|
var atob = function(a) {
|
|
|
return _atob(String(a).replace(/[^A-Za-z0-9\+\/]/g, ''));
|
|
|
};
|
|
|
var _decode = function(a) { return btou(_atob(a)) };
|
|
|
var _fromURI = function(a) {
|
|
|
return String(a).replace(/[-_]/g, function(m0) {
|
|
|
return m0 == '-' ? '+' : '/'
|
|
|
}).replace(/[^A-Za-z0-9\+\/]/g, '');
|
|
|
};
|
|
|
var decode = function(a){
|
|
|
return _decode(_fromURI(a));
|
|
|
};
|
|
|
var toUint8Array;
|
|
|
if (global.Uint8Array) toUint8Array = function(a) {
|
|
|
return Uint8Array.from(atob(_fromURI(a)), function(c) {
|
|
|
return c.charCodeAt(0);
|
|
|
});
|
|
|
};
|
|
|
var noConflict = function() {
|
|
|
var Base64 = global.Base64;
|
|
|
global.Base64 = _Base64;
|
|
|
return Base64;
|
|
|
};
|
|
|
// export Base64
|
|
|
global.Base64 = {
|
|
|
VERSION: version,
|
|
|
atob: atob,
|
|
|
btoa: btoa,
|
|
|
fromBase64: decode,
|
|
|
toBase64: encode,
|
|
|
utob: utob,
|
|
|
encode: encode,
|
|
|
encodeURI: encodeURI,
|
|
|
btou: btou,
|
|
|
decode: decode,
|
|
|
noConflict: noConflict,
|
|
|
fromUint8Array: fromUint8Array,
|
|
|
toUint8Array: toUint8Array
|
|
|
};
|
|
|
// if ES5 is available, make Base64.extendString() available
|
|
|
if (typeof Object.defineProperty === 'function') {
|
|
|
var noEnum = function(v){
|
|
|
return {value:v,enumerable:false,writable:true,configurable:true};
|
|
|
};
|
|
|
global.Base64.extendString = function () {
|
|
|
Object.defineProperty(
|
|
|
String.prototype, 'fromBase64', noEnum(function () {
|
|
|
return decode(this)
|
|
|
}));
|
|
|
Object.defineProperty(
|
|
|
String.prototype, 'toBase64', noEnum(function (urisafe) {
|
|
|
return encode(this, urisafe)
|
|
|
}));
|
|
|
Object.defineProperty(
|
|
|
String.prototype, 'toBase64URI', noEnum(function () {
|
|
|
return encode(this, true)
|
|
|
}));
|
|
|
};
|
|
|
}
|
|
|
//
|
|
|
// export Base64 to the namespace
|
|
|
//
|
|
|
if (global['Meteor']) { // Meteor.js
|
|
|
Base64 = global.Base64;
|
|
|
}
|
|
|
// module.exports and AMD are mutually exclusive.
|
|
|
// module.exports has precedence.
|
|
|
if ( true && module.exports) {
|
|
|
module.exports.Base64 = global.Base64;
|
|
|
}
|
|
|
else if (true) {
|
|
|
// AMD. Register as an anonymous module.
|
|
|
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function(){ return global.Base64 }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
|
|
|
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
|
|
|
}
|
|
|
// that's it!
|
|
|
return {Base64: global.Base64}
|
|
|
}));
|
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 74300:
|
|
|
/*!***************************************************************!*\
|
|
|
!*** ./node_modules/react-copy-to-clipboard/lib/Component.js ***!
|
|
|
\***************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
Object.defineProperty(exports, "__esModule", ({
|
|
|
value: true
|
|
|
}));
|
|
|
exports.CopyToClipboard = void 0;
|
|
|
|
|
|
var _react = _interopRequireDefault(__webpack_require__(/*! react */ 67294));
|
|
|
|
|
|
var _copyToClipboard = _interopRequireDefault(__webpack_require__(/*! copy-to-clipboard */ 20640));
|
|
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
|
|
|
|
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
|
|
|
|
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
|
|
|
|
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
|
|
|
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
|
|
|
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
|
|
|
|
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
|
|
|
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
|
|
|
|
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
|
|
|
|
|
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
|
|
|
|
|
|
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
|
|
|
|
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
|
|
|
|
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
|
|
|
|
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
|
|
|
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
|
|
|
|
var CopyToClipboard =
|
|
|
/*#__PURE__*/
|
|
|
function (_React$PureComponent) {
|
|
|
_inherits(CopyToClipboard, _React$PureComponent);
|
|
|
|
|
|
function CopyToClipboard() {
|
|
|
var _getPrototypeOf2;
|
|
|
|
|
|
var _this;
|
|
|
|
|
|
_classCallCheck(this, CopyToClipboard);
|
|
|
|
|
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
|
args[_key] = arguments[_key];
|
|
|
}
|
|
|
|
|
|
_this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(CopyToClipboard)).call.apply(_getPrototypeOf2, [this].concat(args)));
|
|
|
|
|
|
_defineProperty(_assertThisInitialized(_this), "onClick", function (event) {
|
|
|
var _this$props = _this.props,
|
|
|
text = _this$props.text,
|
|
|
onCopy = _this$props.onCopy,
|
|
|
children = _this$props.children,
|
|
|
options = _this$props.options;
|
|
|
|
|
|
var elem = _react["default"].Children.only(children);
|
|
|
|
|
|
var result = (0, _copyToClipboard["default"])(text, options);
|
|
|
|
|
|
if (onCopy) {
|
|
|
onCopy(text, result);
|
|
|
} // Bypass onClick if it was present
|
|
|
|
|
|
|
|
|
if (elem && elem.props && typeof elem.props.onClick === 'function') {
|
|
|
elem.props.onClick(event);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
return _this;
|
|
|
}
|
|
|
|
|
|
_createClass(CopyToClipboard, [{
|
|
|
key: "render",
|
|
|
value: function render() {
|
|
|
var _this$props2 = this.props,
|
|
|
_text = _this$props2.text,
|
|
|
_onCopy = _this$props2.onCopy,
|
|
|
_options = _this$props2.options,
|
|
|
children = _this$props2.children,
|
|
|
props = _objectWithoutProperties(_this$props2, ["text", "onCopy", "options", "children"]);
|
|
|
|
|
|
var elem = _react["default"].Children.only(children);
|
|
|
|
|
|
return _react["default"].cloneElement(elem, _objectSpread({}, props, {
|
|
|
onClick: this.onClick
|
|
|
}));
|
|
|
}
|
|
|
}]);
|
|
|
|
|
|
return CopyToClipboard;
|
|
|
}(_react["default"].PureComponent);
|
|
|
|
|
|
exports.CopyToClipboard = CopyToClipboard;
|
|
|
|
|
|
_defineProperty(CopyToClipboard, "defaultProps", {
|
|
|
onCopy: undefined,
|
|
|
options: undefined
|
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 74855:
|
|
|
/*!***********************************************************!*\
|
|
|
!*** ./node_modules/react-copy-to-clipboard/lib/index.js ***!
|
|
|
\***********************************************************/
|
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
var _require = __webpack_require__(/*! ./Component */ 74300),
|
|
|
CopyToClipboard = _require.CopyToClipboard;
|
|
|
|
|
|
CopyToClipboard.CopyToClipboard = CopyToClipboard;
|
|
|
module.exports = CopyToClipboard;
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 11742:
|
|
|
/*!************************************************!*\
|
|
|
!*** ./node_modules/toggle-selection/index.js ***!
|
|
|
\************************************************/
|
|
|
/***/ (function(module) {
|
|
|
|
|
|
|
|
|
module.exports = function () {
|
|
|
var selection = document.getSelection();
|
|
|
if (!selection.rangeCount) {
|
|
|
return function () {};
|
|
|
}
|
|
|
var active = document.activeElement;
|
|
|
|
|
|
var ranges = [];
|
|
|
for (var i = 0; i < selection.rangeCount; i++) {
|
|
|
ranges.push(selection.getRangeAt(i));
|
|
|
}
|
|
|
|
|
|
switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML
|
|
|
case 'INPUT':
|
|
|
case 'TEXTAREA':
|
|
|
active.blur();
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
active = null;
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
selection.removeAllRanges();
|
|
|
return function () {
|
|
|
selection.type === 'Caret' &&
|
|
|
selection.removeAllRanges();
|
|
|
|
|
|
if (!selection.rangeCount) {
|
|
|
ranges.forEach(function(range) {
|
|
|
selection.addRange(range);
|
|
|
});
|
|
|
}
|
|
|
|
|
|
active &&
|
|
|
active.focus();
|
|
|
};
|
|
|
};
|
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 4977:
|
|
|
/*!********************************************!*\
|
|
|
!*** ./src/assets/images/icons/nodata.png ***!
|
|
|
\********************************************/
|
|
|
/***/ (function(module) {
|
|
|
|
|
|
"use strict";
|
|
|
module.exports = "data:image/png;base64,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";
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 36193:
|
|
|
/*!******************************************!*\
|
|
|
!*** ./src/assets/images/video/play.png ***!
|
|
|
\******************************************/
|
|
|
/***/ (function(module) {
|
|
|
|
|
|
"use strict";
|
|
|
module.exports = "data:image/png;base64,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";
|
|
|
|
|
|
/***/ })
|
|
|
|
|
|
}]); |