|
|
(self["webpackChunk"] = self["webpackChunk"] || []).push([[54928],{
|
|
|
|
|
|
/***/ 78263:
|
|
|
/*!***********************************************************************!*\
|
|
|
!*** ./src/pages/Classrooms/Lists/LearningPath/index.tsx + 2 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 */ LearningPath; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.2@@babel/runtime/helpers/objectSpread2.js
|
|
|
var objectSpread2 = __webpack_require__(26801);
|
|
|
var objectSpread2_default = /*#__PURE__*/__webpack_require__.n(objectSpread2);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@babel_runtime@7.23.2@@babel/runtime/helpers/slicedToArray.js
|
|
|
var slicedToArray = __webpack_require__(11006);
|
|
|
var slicedToArray_default = /*#__PURE__*/__webpack_require__.n(slicedToArray);
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js
|
|
|
var _react_17_0_2_react = __webpack_require__(59301);
|
|
|
// EXTERNAL MODULE: ./src/.umi-production/exports.ts + 8 modules
|
|
|
var _umi_production_exports = __webpack_require__(66660);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/skeleton/index.js + 12 modules
|
|
|
var skeleton = __webpack_require__(59981);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/modal/index.js + 16 modules
|
|
|
var modal = __webpack_require__(43418);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Classrooms/Lists/LearningPath/index.less?modules
|
|
|
// extracted by mini-css-extract-plugin
|
|
|
/* harmony default export */ var LearningPathmodules = ({"flex_box_center":"flex_box_center___yF0Vb","flex_space_between":"flex_space_between___vsNYO","flex_box_vertical_center":"flex_box_vertical_center___C4UqH","flex_box_center_end":"flex_box_center_end___EGtmE","flex_box_column":"flex_box_column___uX9g9","bg":"bg___sRga2","menu":"menu___s8xQl","desc":"desc___poG1Z","listItem":"listItem___ml9kN","info":"info___Z8R2Z","add":"add___jH8te","addForm":"addForm___O999t","attendanceCode":"attendanceCode___hPKyl","signInStatus":"signInStatus___usMPT","colorE02020":"colorE02020___hZvSz","color0152d9":"color0152d9___RgXzd","colorFA6400":"colorFA6400___g2yU6","iframe":"iframe___HRzMh"});
|
|
|
// EXTERNAL MODULE: ./src/utils/authority.ts
|
|
|
var authority = __webpack_require__(76107);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Classrooms/Lists/LearningPath/data.ts
|
|
|
var learningData = {
|
|
|
init: [{
|
|
|
"stage_name": "初始学习",
|
|
|
"parent": 9999999,
|
|
|
"key": 0
|
|
|
}, {
|
|
|
"stage_name": "绪论",
|
|
|
"parent": 0,
|
|
|
"key": 1
|
|
|
}, {
|
|
|
"discipline_name": "绪论",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "2",
|
|
|
"parent": 1,
|
|
|
"key": "11"
|
|
|
}, {
|
|
|
"shixun_name": "绪论1",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/f066ae1a9a8f418f837e5bf8d02b2690/76df907c20efd95bea0fa23424f10693-hd.m3u8",
|
|
|
"parent": "11",
|
|
|
"key": "111"
|
|
|
}, {
|
|
|
"shixun_name": "绪论2",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/068ca7853da448c794eeffb0dee8bed4/5bb446a882043683e37474ff408f601b-hd.m3u8",
|
|
|
"parent": "11",
|
|
|
"key": "112"
|
|
|
}, {
|
|
|
"shixun_name": "C++开发环境应用入门",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/zxb937qn/challenges",
|
|
|
"parent": "11",
|
|
|
"key": "113"
|
|
|
}, {
|
|
|
"stage_name": "简单程序设计",
|
|
|
"parent": 0,
|
|
|
"key": 2
|
|
|
}, {
|
|
|
"discipline_name": "基础数据类型和表达式",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "1",
|
|
|
"parent": 2,
|
|
|
"key": "21"
|
|
|
}, {
|
|
|
"shixun_name": "基础数据类型和表达式",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/f5f9c87860cb4a98ba86da37b5bfac70/8d50a9c4d5d4d3382c09bad3f4c5dcb6-hd.m3u8",
|
|
|
"parent": "21",
|
|
|
"key": "211"
|
|
|
}, {
|
|
|
"shixun_name": "C++简单程序设计",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/lg5afhzv/challenges",
|
|
|
"parent": "21",
|
|
|
"key": "212"
|
|
|
}, {
|
|
|
"discipline_name": "判断语句",
|
|
|
"shixun_count": "2",
|
|
|
"video_count": "2",
|
|
|
"parent": 2,
|
|
|
"key": "22"
|
|
|
}, {
|
|
|
"shixun_name": "if语句",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/3b4e821b200443948c553e4c6b51d940/b9601216238e60440192c2deb58adc53-hd.m3u8",
|
|
|
"parent": "22",
|
|
|
"key": "221"
|
|
|
}, {
|
|
|
"shixun_name": "C++选择结构——(if多重选择)",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/23xkyrmn/challenges",
|
|
|
"parent": "22",
|
|
|
"key": "222"
|
|
|
}, {
|
|
|
"shixun_name": "switch语句",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/3b4e821b200443948c553e4c6b51d940/b9601216238e60440192c2deb58adc53-hd.m3u8",
|
|
|
"parent": "22",
|
|
|
"key": "223"
|
|
|
}, {
|
|
|
"shixun_name": "C++选择结构——(巧用switch)",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/sm3c5a7v/challenges",
|
|
|
"parent": "22",
|
|
|
"key": "224"
|
|
|
}, {
|
|
|
"discipline_name": "循环",
|
|
|
"shixun_count": "2",
|
|
|
"video_count": "2",
|
|
|
"parent": 2,
|
|
|
"key": "23"
|
|
|
}, {
|
|
|
"shixun_name": "while语句",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/dda06371a1594f5d865479a0fadc77bb/cb504e3af36ebe2ba979e8fe5fbb2222-hd.m3u8",
|
|
|
"parent": "23",
|
|
|
"key": "231"
|
|
|
}, {
|
|
|
"shixun_name": "C++循环结构——(熟悉while)",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/8yhf4sn6/challenges",
|
|
|
"parent": "23",
|
|
|
"key": "232"
|
|
|
}, {
|
|
|
"shixun_name": "for语句",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/503194c483f44ccfacc7f9ee14cda70a/36cbd964c6657d1bbc43eb33b98f0c51-hd.m3u8",
|
|
|
"parent": "23",
|
|
|
"key": "233"
|
|
|
}, {
|
|
|
"shixun_name": "C++选择结构——(巧用switch)",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/sm3c5a7v/challenges",
|
|
|
"parent": "23",
|
|
|
"key": "234"
|
|
|
}, {
|
|
|
"stage_name": "函数",
|
|
|
"parent": 0,
|
|
|
"key": 3
|
|
|
}, {
|
|
|
"discipline_name": "函数的定义与调用",
|
|
|
"shixun_count": "2",
|
|
|
"video_count": "1",
|
|
|
"parent": 3,
|
|
|
"key": "31"
|
|
|
}, {
|
|
|
"shixun_name": "函数的定义与调用",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/c10e39b3afb14ad0b890368aa1751821/ef361445294452e1d9bfacae80b3ec2f-hd.m3u8",
|
|
|
"parent": "31",
|
|
|
"key": "311"
|
|
|
}, {
|
|
|
"shixun_name": "C++函数的定义与调用1",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/3q4isevr/challenges",
|
|
|
"parent": "31",
|
|
|
"key": "312"
|
|
|
}, {
|
|
|
"shixun_name": "C++函数的定义与调用2",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/tlhxwo64/challenges",
|
|
|
"parent": "31",
|
|
|
"key": "313"
|
|
|
}, {
|
|
|
"discipline_name": "传输传递",
|
|
|
"shixun_count": "2",
|
|
|
"video_count": "1",
|
|
|
"parent": 3,
|
|
|
"key": "32"
|
|
|
}, {
|
|
|
"shixun_name": "函数的参数",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://www.educoder.net/video/7785?subject_id=jpl5vs26",
|
|
|
"parent": "32",
|
|
|
"key": "321"
|
|
|
}, {
|
|
|
"shixun_name": "C++参数传递1",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/2phrn8yk/challenges",
|
|
|
"parent": "32",
|
|
|
"key": "322"
|
|
|
}, {
|
|
|
"shixun_name": "C++参数传递2",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/xsq7p4a6/challenges",
|
|
|
"parent": "32",
|
|
|
"key": "323"
|
|
|
}, {
|
|
|
"discipline_name": "函数重载",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "1",
|
|
|
"parent": 3,
|
|
|
"key": "33"
|
|
|
}, {
|
|
|
"shixun_name": "函数重载",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://www.educoder.net/video/7785?subject_id=jpl5vs26",
|
|
|
"parent": "33",
|
|
|
"key": "331"
|
|
|
}, {
|
|
|
"shixun_name": "C++函数重载",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/6hbqpv7e/challenges",
|
|
|
"parent": "33",
|
|
|
"key": "332"
|
|
|
}, {
|
|
|
"discipline_name": "递归函数",
|
|
|
"shixun_count": "2",
|
|
|
"video_count": "1",
|
|
|
"parent": 3,
|
|
|
"key": "34"
|
|
|
}, {
|
|
|
"shixun_name": "函数的递归调用",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/51a0935ddc884f1b9f6c1395f2011425/7308cd65a7fe1d13eebe2600054d29c7-hd.m3u8",
|
|
|
"parent": "34",
|
|
|
"key": "341"
|
|
|
}, {
|
|
|
"shixun_name": "递归函数编写入门",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/4qjw9t32/challenges",
|
|
|
"parent": "34",
|
|
|
"key": "342"
|
|
|
}, {
|
|
|
"shixun_name": "逆序输出(使用递归解决)",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/oxtrf27l/challenges",
|
|
|
"parent": "34",
|
|
|
"key": "343"
|
|
|
}, {
|
|
|
"stage_name": "类和对象",
|
|
|
"parent": 0,
|
|
|
"key": 4
|
|
|
}, {
|
|
|
"discipline_name": "构造函数和析构函数",
|
|
|
"shixun_count": "2",
|
|
|
"video_count": "1",
|
|
|
"parent": 4,
|
|
|
"key": "41"
|
|
|
}, {
|
|
|
"shixun_name": "构造函数和析构函数",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/b4e17c1e8c8d449f862af9ea94fa9522/bad9e739addf73679a70e38a9d2cc32c-hd.m3u8",
|
|
|
"parent": "41",
|
|
|
"key": "411"
|
|
|
}, {
|
|
|
"shixun_name": "定义和使用结构",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/igwom4hs/challenges",
|
|
|
"parent": "41",
|
|
|
"key": "412"
|
|
|
}, {
|
|
|
"shixun_name": "定义和使用结构体",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/5yo6rw3f/challenges",
|
|
|
"parent": "41",
|
|
|
"key": "413"
|
|
|
}, {
|
|
|
"stage_name": "数据的共享与保护",
|
|
|
"parent": 0,
|
|
|
"key": 5
|
|
|
}, {
|
|
|
"discipline_name": "数据的共享与保护",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "1",
|
|
|
"parent": 5,
|
|
|
"key": "51"
|
|
|
}, {
|
|
|
"shixun_name": "数据的共享与保护",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/fde33b24ff2b4bf5bc5e238dc473df8e/3cf407a74af29554226084d17fa17858-hd.m3u8",
|
|
|
"parent": "51",
|
|
|
"key": "511"
|
|
|
}, {
|
|
|
"shixun_name": "C++程序的结构",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/yqbh3fx5/challenges",
|
|
|
"parent": "51",
|
|
|
"key": "512"
|
|
|
}, {
|
|
|
"stage_name": "数组、指针与字符串",
|
|
|
"parent": 0,
|
|
|
"key": 6
|
|
|
}, {
|
|
|
"discipline_name": "数组",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "1",
|
|
|
"parent": 6,
|
|
|
"key": "61"
|
|
|
}, {
|
|
|
"shixun_name": "数组",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://www.educoder.net/video/7785?subject_id=jpl5vs26",
|
|
|
"parent": "61",
|
|
|
"key": "611"
|
|
|
}, {
|
|
|
"shixun_name": "平均成绩与简单统计",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/4wcfgm5q/challenges",
|
|
|
"parent": "61",
|
|
|
"key": "612"
|
|
|
}, {
|
|
|
"discipline_name": "指针",
|
|
|
"shixun_count": "3",
|
|
|
"video_count": "1",
|
|
|
"parent": 6,
|
|
|
"key": "62"
|
|
|
}, {
|
|
|
"shixun_name": "指针",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/00a5448862c84c42b1a369ac2be88ae9/9b9627710a725e570ede478663c2589d-hd.m3u8",
|
|
|
"parent": "62",
|
|
|
"key": "621"
|
|
|
}, {
|
|
|
"shixun_name": "指针练手-字符串倒序",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/lkn6xuc3/challenges",
|
|
|
"parent": "62",
|
|
|
"key": "622"
|
|
|
}, {
|
|
|
"shixun_name": "指针数组-单词倒序",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/vtk73ny2/challenges",
|
|
|
"parent": "62",
|
|
|
"key": "623"
|
|
|
}, {
|
|
|
"shixun_name": "用指针解决问题-文本格式处理",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/xfnp73fz/challenges",
|
|
|
"parent": "62",
|
|
|
"key": "624"
|
|
|
}, {
|
|
|
"stage_name": "类的继承",
|
|
|
"parent": 0,
|
|
|
"key": 7
|
|
|
}, {
|
|
|
"discipline_name": "类的继承",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "3",
|
|
|
"parent": 7,
|
|
|
"key": "71"
|
|
|
}, {
|
|
|
"shixun_name": "类的继承(1)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/1eedcdb9ec43442c93780f04859c9aa9/631b8c88eb263877d24637d5b8d54dc5-hd.m3u8",
|
|
|
"parent": "71",
|
|
|
"key": "711"
|
|
|
}, {
|
|
|
"shixun_name": "类的继承(2)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/fc1e7d8d8140469ba1bc01ee64fcc3c1/9256d13f4a14ae17ba9cac9f895b8a9d-hd.m3u8",
|
|
|
"parent": "71",
|
|
|
"key": "712"
|
|
|
}, {
|
|
|
"shixun_name": "类的继承(3)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://www.educoder.net/video/7806?subject_id=jpl5vs26",
|
|
|
"parent": "71",
|
|
|
"key": "713"
|
|
|
}, {
|
|
|
"shixun_name": "继承与派生",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/f83ipgyo/challenges",
|
|
|
"parent": "71",
|
|
|
"key": "714"
|
|
|
}, {
|
|
|
"stage_name": "多态性",
|
|
|
"parent": 0,
|
|
|
"key": 8
|
|
|
}, {
|
|
|
"discipline_name": "多态性",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "2",
|
|
|
"parent": 8,
|
|
|
"key": "81"
|
|
|
}, {
|
|
|
"shixun_name": "多态性(1)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/5a960b51ebf346d2b77afb3b70d00768/73d6fa00824f4c73b885d33f688c3294-hd.m3u8",
|
|
|
"parent": "81",
|
|
|
"key": "811"
|
|
|
}, {
|
|
|
"shixun_name": "多态性(2)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/08fe97a36e184cf1bf27cdd7a24794c9/625c4e9e863840443f5332ccc02761fc-hd.m3u8",
|
|
|
"parent": "81",
|
|
|
"key": "812"
|
|
|
}, {
|
|
|
"shixun_name": "虚函数与多态性",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/9pjmg7uf/challenges",
|
|
|
"parent": "81",
|
|
|
"key": "813"
|
|
|
}, {
|
|
|
"stage_name": "模板与群体数据",
|
|
|
"parent": 0,
|
|
|
"key": 9
|
|
|
}, {
|
|
|
"discipline_name": "模板与群体数据",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "3",
|
|
|
"parent": 9,
|
|
|
"key": "91"
|
|
|
}, {
|
|
|
"shixun_name": "模板与群体数据(1)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/8dcf418d2d16404d91af1780f669e549/eb538592d8a3b98e1c2f7f844f85b778-hd.m3u8",
|
|
|
"parent": "91",
|
|
|
"key": "911"
|
|
|
}, {
|
|
|
"shixun_name": "模板与群体数据(2)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/459f2693af7b48f8b854033e666a77f8/f5b140c5adc0f24ac56b72492373306a-hd.m3u8",
|
|
|
"parent": "91",
|
|
|
"key": "912"
|
|
|
}, {
|
|
|
"shixun_name": "模板与群体数据(3)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/ccea50bc15d2468aab99aff19eb69e16/a5ecac1ee0c07360d07880187a787085-hd.m3u8",
|
|
|
"parent": "91",
|
|
|
"key": "913"
|
|
|
}, {
|
|
|
"shixun_name": "群体类和群体数据的组织",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/kfv3my9o/challenges",
|
|
|
"parent": "91",
|
|
|
"key": "914"
|
|
|
}, {
|
|
|
"stage_name": "泛型程序设计与C++标准模板库",
|
|
|
"parent": 0,
|
|
|
"key": 10
|
|
|
}, {
|
|
|
"discipline_name": "泛型程序设计与C++标准模板库",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "3",
|
|
|
"parent": 10,
|
|
|
"key": "101"
|
|
|
}, {
|
|
|
"shixun_name": "泛型程序设计与C++标准模板库(1)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/2f3154d695a542fbaba5c483d8d7f7a9/aea4302c51501634469ed4b91462c810-hd.m3u8",
|
|
|
"parent": "101",
|
|
|
"key": "1011"
|
|
|
}, {
|
|
|
"shixun_name": "泛型程序设计与C++标准模板库(2)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/23be6a61e4e54db398b9172b1213a1f2/3f1e88f97957369e29ef2bde63640004-hd.m3u8",
|
|
|
"parent": "101",
|
|
|
"key": "1012"
|
|
|
}, {
|
|
|
"shixun_name": "泛型程序设计与C++标准模板库(3)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/a5887adcc34445bba695de7dcadb781e/0fb3a6a6ad38f7a107054c5f2f0de262-hd.m3u8",
|
|
|
"parent": "101",
|
|
|
"key": "1013"
|
|
|
}, {
|
|
|
"shixun_name": "泛型程序设计与C++标准模板库",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/hmtw5iq6/challenges",
|
|
|
"parent": "101",
|
|
|
"key": "1014"
|
|
|
}, {
|
|
|
"stage_name": "流类库与输入/输出11",
|
|
|
"parent": 0,
|
|
|
"key": 1911
|
|
|
}, {
|
|
|
"discipline_name": "流类库与输入/输出",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "2",
|
|
|
"parent": 1911,
|
|
|
"key": 9111
|
|
|
}, {
|
|
|
"shixun_name": "流类库与输入输出(1)22222",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/c9e76b949ee847fbb89a926220526692/b80ff8d09a87bfde1064f5b73ae7c34b-hd.m3u8",
|
|
|
"parent": 9111,
|
|
|
"key": "91111"
|
|
|
}, {
|
|
|
"shixun_name": "流类库与输入输出(2)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/65c02365a4ad40858b69b8cbe3ca4aa1/18a2c5697d4a84a971c500565509f038-hd.m3u8",
|
|
|
"parent": "9111",
|
|
|
"key": "91112"
|
|
|
}, {
|
|
|
"shixun_name": "流类库与输入/输出",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/hsvuixpm/challenges",
|
|
|
"parent": "9111",
|
|
|
"key": "91113"
|
|
|
}, {
|
|
|
"stage_name": "异常处理",
|
|
|
"parent": 0,
|
|
|
"key": 12
|
|
|
}, {
|
|
|
"discipline_name": "异常处理",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "1",
|
|
|
"parent": 12,
|
|
|
"key": "121"
|
|
|
}, {
|
|
|
"shixun_name": "异常处理",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/c95499dd4c064584914e32fca9563717/98a8be24326e3eb35375713f5ccbb8bb-hd.m3u8",
|
|
|
"parent": "121",
|
|
|
"key": "1211"
|
|
|
}, {
|
|
|
"shixun_name": "编写异常处理的类",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/nlt6f7ae/challenges",
|
|
|
"parent": "121",
|
|
|
"key": "1212"
|
|
|
}].map(function (item) {
|
|
|
item.parent = Number(item.parent);
|
|
|
item.key = Number(item.key);
|
|
|
return item;
|
|
|
}),
|
|
|
review: [{
|
|
|
"stage_name": "复习学习",
|
|
|
"parent": 9999999,
|
|
|
"key": 0
|
|
|
}, {
|
|
|
"stage_name": "简单程序设计",
|
|
|
"parent": 0,
|
|
|
"key": 1
|
|
|
}, {
|
|
|
"discipline_name": "基础数据类型和表达式",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "1",
|
|
|
"parent": 1,
|
|
|
"key": "11"
|
|
|
}, {
|
|
|
"shixun_name": "基础数据类型和表达式",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/f5f9c87860cb4a98ba86da37b5bfac70/8d50a9c4d5d4d3382c09bad3f4c5dcb6-hd.m3u8",
|
|
|
"parent": "11",
|
|
|
"key": "111"
|
|
|
}, {
|
|
|
"shixun_name": "C++简单程序设计",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/lg5afhzv/challenges",
|
|
|
"parent": "11",
|
|
|
"key": "112"
|
|
|
}, {
|
|
|
"discipline_name": "循环",
|
|
|
"shixun_count": "2",
|
|
|
"video_count": "2",
|
|
|
"parent": 1,
|
|
|
"key": "12"
|
|
|
}, {
|
|
|
"shixun_name": "while语句",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/dda06371a1594f5d865479a0fadc77bb/cb504e3af36ebe2ba979e8fe5fbb2222-hd.m3u8",
|
|
|
"parent": "12",
|
|
|
"key": "121"
|
|
|
}, {
|
|
|
"shixun_name": "C++循环结构——(熟悉while)",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/8yhf4sn6/challenges",
|
|
|
"parent": "12",
|
|
|
"key": "122"
|
|
|
}, {
|
|
|
"shixun_name": "for语句",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/503194c483f44ccfacc7f9ee14cda70a/36cbd964c6657d1bbc43eb33b98f0c51-hd.m3u8",
|
|
|
"parent": "12",
|
|
|
"key": "123"
|
|
|
}, {
|
|
|
"shixun_name": "C++选择结构——(巧用switch)",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/sm3c5a7v/challenges",
|
|
|
"parent": "12",
|
|
|
"key": "124"
|
|
|
}, {
|
|
|
"stage_name": "函数",
|
|
|
"parent": 0,
|
|
|
"key": 2
|
|
|
}, {
|
|
|
"discipline_name": "函数的定义与调用",
|
|
|
"shixun_count": "2",
|
|
|
"video_count": "1",
|
|
|
"parent": 2,
|
|
|
"key": "21"
|
|
|
}, {
|
|
|
"shixun_name": "函数的定义与调用",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/c10e39b3afb14ad0b890368aa1751821/ef361445294452e1d9bfacae80b3ec2f-hd.m3u8",
|
|
|
"parent": "21",
|
|
|
"key": "211"
|
|
|
}, {
|
|
|
"shixun_name": "C++函数的定义与调用1",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/3q4isevr/challenges",
|
|
|
"parent": "21",
|
|
|
"key": "212"
|
|
|
}, {
|
|
|
"shixun_name": "C++函数的定义与调用2",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/tlhxwo64/challenges",
|
|
|
"parent": "21",
|
|
|
"key": "213"
|
|
|
}, {
|
|
|
"discipline_name": "传输传递",
|
|
|
"shixun_count": "2",
|
|
|
"video_count": "1",
|
|
|
"parent": 2,
|
|
|
"key": "22"
|
|
|
}, {
|
|
|
"shixun_name": "函数的参数",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://www.educoder.net/video/7785?subject_id=jpl5vs26",
|
|
|
"parent": "22",
|
|
|
"key": "221"
|
|
|
}, {
|
|
|
"shixun_name": "C++参数传递1",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/2phrn8yk/challenges",
|
|
|
"parent": "22",
|
|
|
"key": "222"
|
|
|
}, {
|
|
|
"shixun_name": "C++参数传递2",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/xsq7p4a6/challenges",
|
|
|
"parent": "22",
|
|
|
"key": "223"
|
|
|
}, {
|
|
|
"discipline_name": "递归函数",
|
|
|
"shixun_count": "2",
|
|
|
"video_count": "2",
|
|
|
"parent": 2,
|
|
|
"key": "23"
|
|
|
}, {
|
|
|
"shixun_name": "函数的递归调用",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/51a0935ddc884f1b9f6c1395f2011425/7308cd65a7fe1d13eebe2600054d29c7-hd.m3u8",
|
|
|
"parent": "23",
|
|
|
"key": "231"
|
|
|
}, {
|
|
|
"shixun_name": "递归函数编写入门",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/4qjw9t32/challenges",
|
|
|
"parent": "23",
|
|
|
"key": "232"
|
|
|
}, {
|
|
|
"shixun_name": "逆序输出(使用递归解决)",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/oxtrf27l/challenges",
|
|
|
"parent": "23",
|
|
|
"key": "233"
|
|
|
}, {
|
|
|
"stage_name": "类和对象",
|
|
|
"parent": 0,
|
|
|
"key": 3
|
|
|
}, {
|
|
|
"discipline_name": "构造函数和析构函数",
|
|
|
"shixun_count": "2",
|
|
|
"video_count": "1",
|
|
|
"parent": 3,
|
|
|
"key": "31"
|
|
|
}, {
|
|
|
"shixun_name": "构造函数和析构函数",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/b4e17c1e8c8d449f862af9ea94fa9522/bad9e739addf73679a70e38a9d2cc32c-hd.m3u8",
|
|
|
"parent": "31",
|
|
|
"key": "311"
|
|
|
}, {
|
|
|
"shixun_name": "定义和使用结构",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/igwom4hs/challenges",
|
|
|
"parent": "31",
|
|
|
"key": "312"
|
|
|
}, {
|
|
|
"shixun_name": "定义和使用结构体",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/5yo6rw3f/challenges",
|
|
|
"parent": "31",
|
|
|
"key": "313"
|
|
|
}, {
|
|
|
"stage_name": "数据的共享与保护",
|
|
|
"parent": 0,
|
|
|
"key": 4
|
|
|
}, {
|
|
|
"discipline_name": "数据的共享与保护",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "1",
|
|
|
"parent": 4,
|
|
|
"key": "41"
|
|
|
}, {
|
|
|
"shixun_name": "数据的共享与保护",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/fde33b24ff2b4bf5bc5e238dc473df8e/3cf407a74af29554226084d17fa17858-hd.m3u8",
|
|
|
"parent": "41",
|
|
|
"key": "411"
|
|
|
}, {
|
|
|
"shixun_name": "C++程序的结构",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/yqbh3fx5/challenges",
|
|
|
"parent": "41",
|
|
|
"key": "412"
|
|
|
}, {
|
|
|
"stage_name": "数组、指针与字符串",
|
|
|
"parent": 0,
|
|
|
"key": 5
|
|
|
}, {
|
|
|
"discipline_name": "数组",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "1",
|
|
|
"parent": 5,
|
|
|
"key": "51"
|
|
|
}, {
|
|
|
"shixun_name": "数组",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://www.educoder.net/video/7785?subject_id=jpl5vs26",
|
|
|
"parent": "51",
|
|
|
"key": "511"
|
|
|
}, {
|
|
|
"shixun_name": "平均成绩与简单统计",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/4wcfgm5q/challenges",
|
|
|
"parent": "51",
|
|
|
"key": "512"
|
|
|
}, {
|
|
|
"discipline_name": "指针",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "1",
|
|
|
"parent": 5,
|
|
|
"key": "52"
|
|
|
}, {
|
|
|
"shixun_name": "指针",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/00a5448862c84c42b1a369ac2be88ae9/9b9627710a725e570ede478663c2589d-hd.m3u8",
|
|
|
"parent": "52",
|
|
|
"key": "521"
|
|
|
}, {
|
|
|
"shixun_name": "用指针解决问题-文本格式处理",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/xfnp73fz/challenges",
|
|
|
"parent": "52",
|
|
|
"key": "522"
|
|
|
}, {
|
|
|
"stage_name": "类的继承",
|
|
|
"parent": 0,
|
|
|
"key": 6
|
|
|
}, {
|
|
|
"discipline_name": "类的继承",
|
|
|
"shixun_count": "0",
|
|
|
"video_count": "2",
|
|
|
"parent": 6,
|
|
|
"key": "61"
|
|
|
}, {
|
|
|
"shixun_name": "类的继承(1)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/1eedcdb9ec43442c93780f04859c9aa9/631b8c88eb263877d24637d5b8d54dc5-hd.m3u8",
|
|
|
"parent": "61",
|
|
|
"key": "611"
|
|
|
}, {
|
|
|
"shixun_name": "类的继承(2)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/fc1e7d8d8140469ba1bc01ee64fcc3c1/9256d13f4a14ae17ba9cac9f895b8a9d-hd.m3u8",
|
|
|
"parent": "61",
|
|
|
"key": "612"
|
|
|
}, {
|
|
|
"stage_name": "多态性",
|
|
|
"parent": 0,
|
|
|
"key": 7
|
|
|
}, {
|
|
|
"discipline_name": "多态性",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "2",
|
|
|
"parent": 7,
|
|
|
"key": "71"
|
|
|
}, {
|
|
|
"shixun_name": "多态性(1)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/5a960b51ebf346d2b77afb3b70d00768/73d6fa00824f4c73b885d33f688c3294-hd.m3u8",
|
|
|
"parent": "71",
|
|
|
"key": "711"
|
|
|
}, {
|
|
|
"shixun_name": "多态性(2)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/08fe97a36e184cf1bf27cdd7a24794c9/625c4e9e863840443f5332ccc02761fc-hd.m3u8",
|
|
|
"parent": "71",
|
|
|
"key": "712"
|
|
|
}, {
|
|
|
"shixun_name": "虚函数与多态性",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/9pjmg7uf/challenges",
|
|
|
"parent": "71",
|
|
|
"key": "713"
|
|
|
}, {
|
|
|
"stage_name": "模板与群体数据",
|
|
|
"parent": 0,
|
|
|
"key": 8
|
|
|
}, {
|
|
|
"discipline_name": "模板与群体数据",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "1",
|
|
|
"parent": 8,
|
|
|
"key": "81"
|
|
|
}, {
|
|
|
"shixun_name": "模板与群体数据(1)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/8dcf418d2d16404d91af1780f669e549/eb538592d8a3b98e1c2f7f844f85b778-hd.m3u8",
|
|
|
"parent": "81",
|
|
|
"key": "811"
|
|
|
}, {
|
|
|
"shixun_name": "群体类和群体数据的组织",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/kfv3my9o/challenges",
|
|
|
"parent": "81",
|
|
|
"key": "812"
|
|
|
}, {
|
|
|
"stage_name": "泛型程序设计与C++标准模板库",
|
|
|
"parent": 0,
|
|
|
"key": 9
|
|
|
}, {
|
|
|
"discipline_name": "泛型程序设计与C++标准模板库",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "1",
|
|
|
"parent": 9,
|
|
|
"key": "91"
|
|
|
}, {
|
|
|
"shixun_name": "泛型程序设计与C++标准模板库(1)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/2f3154d695a542fbaba5c483d8d7f7a9/aea4302c51501634469ed4b91462c810-hd.m3u8",
|
|
|
"parent": "91",
|
|
|
"key": "911"
|
|
|
}, {
|
|
|
"shixun_name": "泛型程序设计与C++标准模板库",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/hmtw5iq6/challenges",
|
|
|
"parent": "91",
|
|
|
"key": "912"
|
|
|
}, {
|
|
|
"stage_name": "流类库与输入/输出",
|
|
|
"parent": 0,
|
|
|
"key": 10
|
|
|
}, {
|
|
|
"discipline_name": "流类库与输入/输出",
|
|
|
"shixun_count": "0",
|
|
|
"video_count": "2",
|
|
|
"parent": 10,
|
|
|
"key": "101"
|
|
|
}, {
|
|
|
"shixun_name": "流类库与输入输出(1)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/c9e76b949ee847fbb89a926220526692/b80ff8d09a87bfde1064f5b73ae7c34b-hd.m3u8",
|
|
|
"parent": "101",
|
|
|
"key": "1011"
|
|
|
}, {
|
|
|
"shixun_name": "流类库与输入输出(2)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/65c02365a4ad40858b69b8cbe3ca4aa1/18a2c5697d4a84a971c500565509f038-hd.m3u8",
|
|
|
"parent": "101",
|
|
|
"key": "1012"
|
|
|
}, {
|
|
|
"shixun_name": "流类库与输入/输出",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/hsvuixpm/challenges",
|
|
|
"parent": "101",
|
|
|
"key": "1013"
|
|
|
}, {
|
|
|
"stage_name": "异常处理",
|
|
|
"parent": 0,
|
|
|
"key": 9911
|
|
|
}, {
|
|
|
"discipline_name": "异常处理",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "1",
|
|
|
"parent": 9911,
|
|
|
"key": "99111"
|
|
|
}, {
|
|
|
"shixun_name": "异常处理",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/c95499dd4c064584914e32fca9563717/98a8be24326e3eb35375713f5ccbb8bb-hd.m3u8",
|
|
|
"parent": "99111",
|
|
|
"key": "991111"
|
|
|
}, {
|
|
|
"shixun_name": "编写异常处理的类",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/nlt6f7ae/challenges",
|
|
|
"parent": "99111",
|
|
|
"key": "991112"
|
|
|
}].map(function (item) {
|
|
|
item.parent = Number(item.parent);
|
|
|
item.key = Number(item.key);
|
|
|
return item;
|
|
|
}),
|
|
|
before: [{
|
|
|
"stage_name": "考前学习",
|
|
|
"parent": 9999999,
|
|
|
"key": 0
|
|
|
}, {
|
|
|
"stage_name": "绪论",
|
|
|
"parent": 0,
|
|
|
"key": 1
|
|
|
}, {
|
|
|
"discipline_name": "绪论",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "2",
|
|
|
"parent": 1,
|
|
|
"key": "11"
|
|
|
}, {
|
|
|
"shixun_name": "绪论1",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/f066ae1a9a8f418f837e5bf8d02b2690/76df907c20efd95bea0fa23424f10693-hd.m3u8",
|
|
|
"parent": "11",
|
|
|
"key": "111"
|
|
|
}, {
|
|
|
"shixun_name": "绪论2",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/068ca7853da448c794eeffb0dee8bed4/5bb446a882043683e37474ff408f601b-hd.m3u8",
|
|
|
"parent": "11",
|
|
|
"key": "112"
|
|
|
}, {
|
|
|
"shixun_name": "C++开发环境应用入门",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/zxb937qn/challenges",
|
|
|
"parent": "11",
|
|
|
"key": "113"
|
|
|
}, {
|
|
|
"stage_name": "简单程序设计",
|
|
|
"parent": 0,
|
|
|
"key": 2
|
|
|
}, {
|
|
|
"discipline_name": "基础数据类型和表达式",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "1",
|
|
|
"parent": 2,
|
|
|
"key": "21"
|
|
|
}, {
|
|
|
"shixun_name": "基础数据类型和表达式",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/f5f9c87860cb4a98ba86da37b5bfac70/8d50a9c4d5d4d3382c09bad3f4c5dcb6-hd.m3u8",
|
|
|
"parent": "21",
|
|
|
"key": "211"
|
|
|
}, {
|
|
|
"shixun_name": "C++简单程序设计",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/lg5afhzv/challenges",
|
|
|
"parent": "21",
|
|
|
"key": "212"
|
|
|
}, {
|
|
|
"stage_name": "函数",
|
|
|
"parent": 0,
|
|
|
"key": 3
|
|
|
}, {
|
|
|
"discipline_name": "函数的定义与调用",
|
|
|
"shixun_count": "2",
|
|
|
"video_count": "1",
|
|
|
"parent": 3,
|
|
|
"key": "31"
|
|
|
}, {
|
|
|
"shixun_name": "函数的定义与调用",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/c10e39b3afb14ad0b890368aa1751821/ef361445294452e1d9bfacae80b3ec2f-hd.m3u8",
|
|
|
"parent": "31",
|
|
|
"key": "311"
|
|
|
}, {
|
|
|
"shixun_name": "C++函数的定义与调用1",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/3q4isevr/challenges",
|
|
|
"parent": "31",
|
|
|
"key": "312"
|
|
|
}, {
|
|
|
"shixun_name": "C++函数的定义与调用2",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/tlhxwo64/challenges",
|
|
|
"parent": "31",
|
|
|
"key": "313"
|
|
|
}, {
|
|
|
"discipline_name": "递归函数",
|
|
|
"shixun_count": "2",
|
|
|
"video_count": "1",
|
|
|
"parent": 3,
|
|
|
"key": "32"
|
|
|
}, {
|
|
|
"shixun_name": "函数的递归调用",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/51a0935ddc884f1b9f6c1395f2011425/7308cd65a7fe1d13eebe2600054d29c7-hd.m3u8",
|
|
|
"parent": "32",
|
|
|
"key": "321"
|
|
|
}, {
|
|
|
"shixun_name": "递归函数编写入门",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/4qjw9t32/challenges",
|
|
|
"parent": "32",
|
|
|
"key": "322"
|
|
|
}, {
|
|
|
"shixun_name": "逆序输出(使用递归解决)",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/oxtrf27l/challenges",
|
|
|
"parent": "32",
|
|
|
"key": "323"
|
|
|
}, {
|
|
|
"stage_name": "类和对象",
|
|
|
"parent": 0,
|
|
|
"key": 4
|
|
|
}, {
|
|
|
"discipline_name": "构造函数和析构函数",
|
|
|
"shixun_count": "2",
|
|
|
"video_count": "1",
|
|
|
"parent": 4,
|
|
|
"key": "41"
|
|
|
}, {
|
|
|
"shixun_name": "构造函数和析构函数",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/b4e17c1e8c8d449f862af9ea94fa9522/bad9e739addf73679a70e38a9d2cc32c-hd.m3u8",
|
|
|
"parent": "41",
|
|
|
"key": "411"
|
|
|
}, {
|
|
|
"shixun_name": "定义和使用结构",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/igwom4hs/challenges",
|
|
|
"parent": "41",
|
|
|
"key": "412"
|
|
|
}, {
|
|
|
"shixun_name": "定义和使用结构体",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/5yo6rw3f/challenges",
|
|
|
"parent": "41",
|
|
|
"key": "413"
|
|
|
}, {
|
|
|
"stage_name": "数据的共享与保护",
|
|
|
"parent": 0,
|
|
|
"key": 5
|
|
|
}, {
|
|
|
"discipline_name": "数据的共享与保护",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "1",
|
|
|
"parent": 5,
|
|
|
"key": "51"
|
|
|
}, {
|
|
|
"shixun_name": "数据的共享与保护",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/fde33b24ff2b4bf5bc5e238dc473df8e/3cf407a74af29554226084d17fa17858-hd.m3u8",
|
|
|
"parent": "51",
|
|
|
"key": "511"
|
|
|
}, {
|
|
|
"shixun_name": "C++程序的结构",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/yqbh3fx5/challenges",
|
|
|
"parent": "51",
|
|
|
"key": "512"
|
|
|
}, {
|
|
|
"stage_name": "数组、指针与字符串",
|
|
|
"parent": 0,
|
|
|
"key": 6
|
|
|
}, {
|
|
|
"discipline_name": "数组",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "1",
|
|
|
"parent": 6,
|
|
|
"key": "61"
|
|
|
}, {
|
|
|
"shixun_name": "数组",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://www.educoder.net/video/7785?subject_id=jpl5vs26",
|
|
|
"parent": "61",
|
|
|
"key": "611"
|
|
|
}, {
|
|
|
"shixun_name": "平均成绩与简单统计",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/4wcfgm5q/challenges",
|
|
|
"parent": "61",
|
|
|
"key": "612"
|
|
|
}, {
|
|
|
"stage_name": "类的继承",
|
|
|
"parent": 0,
|
|
|
"key": 7
|
|
|
}, {
|
|
|
"discipline_name": "类的继承",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "3",
|
|
|
"parent": 7,
|
|
|
"key": "71"
|
|
|
}, {
|
|
|
"shixun_name": "类的继承(1)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/1eedcdb9ec43442c93780f04859c9aa9/631b8c88eb263877d24637d5b8d54dc5-hd.m3u8",
|
|
|
"parent": "71",
|
|
|
"key": "711"
|
|
|
}, {
|
|
|
"shixun_name": "类的继承(2)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/fc1e7d8d8140469ba1bc01ee64fcc3c1/9256d13f4a14ae17ba9cac9f895b8a9d-hd.m3u8",
|
|
|
"parent": "71",
|
|
|
"key": "712"
|
|
|
}, {
|
|
|
"shixun_name": "类的继承(3)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://www.educoder.net/video/7806?subject_id=jpl5vs26",
|
|
|
"parent": "71",
|
|
|
"key": "713"
|
|
|
}, {
|
|
|
"shixun_name": "继承与派生",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/f83ipgyo/challenges",
|
|
|
"parent": "71",
|
|
|
"key": "714"
|
|
|
}, {
|
|
|
"stage_name": "模板与群体数据",
|
|
|
"parent": 0,
|
|
|
"key": 8
|
|
|
}, {
|
|
|
"discipline_name": "模板与群体数据",
|
|
|
"shixun_count": "0",
|
|
|
"video_count": "1",
|
|
|
"parent": 8,
|
|
|
"key": "81"
|
|
|
}, {
|
|
|
"shixun_name": "模板与群体数据(1)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/8dcf418d2d16404d91af1780f669e549/eb538592d8a3b98e1c2f7f844f85b778-hd.m3u8",
|
|
|
"parent": "81",
|
|
|
"key": "811"
|
|
|
}, {
|
|
|
"stage_name": "泛型程序设计与C++标准模板库",
|
|
|
"parent": 0,
|
|
|
"key": 9
|
|
|
}, {
|
|
|
"discipline_name": "泛型程序设计与C++标准模板库",
|
|
|
"shixun_count": "0",
|
|
|
"video_count": "1",
|
|
|
"parent": 9,
|
|
|
"key": "91"
|
|
|
}, {
|
|
|
"shixun_name": "泛型程序设计与C++标准模板库(1)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/2f3154d695a542fbaba5c483d8d7f7a9/aea4302c51501634469ed4b91462c810-hd.m3u8",
|
|
|
"parent": "91",
|
|
|
"key": "911"
|
|
|
}, {
|
|
|
"shixun_name": "泛型程序设计与C++标准模板库(2)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/23be6a61e4e54db398b9172b1213a1f2/3f1e88f97957369e29ef2bde63640004-hd.m3u8",
|
|
|
"parent": "91",
|
|
|
"key": "912"
|
|
|
}, {
|
|
|
"stage_name": "流类库与输入/输出",
|
|
|
"parent": 0,
|
|
|
"key": 10
|
|
|
}, {
|
|
|
"discipline_name": "流类库与输入/输出",
|
|
|
"shixun_count": "0",
|
|
|
"video_count": "1",
|
|
|
"parent": 10,
|
|
|
"key": "101"
|
|
|
}, {
|
|
|
"shixun_name": "流类库与输入输出(1)",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/c9e76b949ee847fbb89a926220526692/b80ff8d09a87bfde1064f5b73ae7c34b-hd.m3u8",
|
|
|
"parent": "101",
|
|
|
"key": "1011"
|
|
|
}, {
|
|
|
"stage_name": "异常处理",
|
|
|
"parent": 0,
|
|
|
"key": 9911
|
|
|
}, {
|
|
|
"discipline_name": "异常处理",
|
|
|
"shixun_count": "1",
|
|
|
"video_count": "1",
|
|
|
"parent": 9911,
|
|
|
"key": "99111"
|
|
|
}, {
|
|
|
"shixun_name": "异常处理",
|
|
|
"shixun_type": "视频",
|
|
|
"url": "https://video.educoder.net/c95499dd4c064584914e32fca9563717/98a8be24326e3eb35375713f5ccbb8bb-hd.m3u8",
|
|
|
"parent": "99111",
|
|
|
"key": "991111"
|
|
|
}, {
|
|
|
"shixun_name": "编写异常处理的类",
|
|
|
"shixun_type": "实训",
|
|
|
"url": "https://www.educoder.net/shixuns/nlt6f7ae/challenges",
|
|
|
"parent": "99111",
|
|
|
"key": "991112"
|
|
|
}].map(function (item) {
|
|
|
item.parent = Number(item.parent);
|
|
|
item.key = Number(item.key);
|
|
|
return item;
|
|
|
})
|
|
|
};
|
|
|
// EXTERNAL MODULE: ./src/pages/Classrooms/Lists/components/TabMenu/index.tsx + 1 modules
|
|
|
var TabMenu = __webpack_require__(63989);
|
|
|
// EXTERNAL MODULE: ./src/components/Video/Play/index.jsx + 1 modules
|
|
|
var Play = __webpack_require__(74321);
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(37712);
|
|
|
;// CONCATENATED MODULE: ./src/pages/Classrooms/Lists/LearningPath/index.tsx
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var ShixunsListPage = function ShixunsListPage(_ref) {
|
|
|
var classroomList = _ref.classroomList,
|
|
|
loading = _ref.loading,
|
|
|
dispatch = _ref.dispatch;
|
|
|
var _useSearchParams = (0,_umi_production_exports.useSearchParams)(),
|
|
|
_useSearchParams2 = slicedToArray_default()(_useSearchParams, 1),
|
|
|
searchParams = _useSearchParams2[0];
|
|
|
var _useState = (0,_react_17_0_2_react.useState)(objectSpread2_default()({}, (0,_umi_production_exports.useParams)())),
|
|
|
_useState2 = slicedToArray_default()(_useState, 1),
|
|
|
params = _useState2[0];
|
|
|
var _useState3 = (0,_react_17_0_2_react.useState)("init"),
|
|
|
_useState4 = slicedToArray_default()(_useState3, 2),
|
|
|
currentKey = _useState4[0],
|
|
|
setCurrentKey = _useState4[1];
|
|
|
var _useState5 = (0,_react_17_0_2_react.useState)(""),
|
|
|
_useState6 = slicedToArray_default()(_useState5, 2),
|
|
|
videoUrl = _useState6[0],
|
|
|
setVideoUrl = _useState6[1];
|
|
|
var iframeRef = (0,_react_17_0_2_react.useRef)();
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
var key = searchParams.get("tabId");
|
|
|
if (key) {
|
|
|
setCurrentKey(key);
|
|
|
params.status = key;
|
|
|
//似乎没用到
|
|
|
}
|
|
|
}, [params['categoryId'], searchParams.get("tabId")]);
|
|
|
var onMenuSelect = function onMenuSelect(v) {
|
|
|
setCurrentKey(v.key);
|
|
|
};
|
|
|
var Menus = [{
|
|
|
name: '初始学习',
|
|
|
id: 'init'
|
|
|
}, {
|
|
|
name: '复习学习',
|
|
|
id: 'review'
|
|
|
}, {
|
|
|
name: '考前学习',
|
|
|
id: 'before'
|
|
|
}];
|
|
|
var onMessage = function onMessage(data) {
|
|
|
if (data.data.type === "playVideo") {
|
|
|
setVideoUrl(data.data.url);
|
|
|
}
|
|
|
};
|
|
|
(0,_react_17_0_2_react.useEffect)(function () {
|
|
|
if (currentKey) {
|
|
|
sendData();
|
|
|
}
|
|
|
window.addEventListener("message", onMessage);
|
|
|
}, [currentKey]);
|
|
|
var sendData = function sendData() {
|
|
|
var _iframeRef$current$co;
|
|
|
(_iframeRef$current$co = iframeRef.current.contentWindow) === null || _iframeRef$current$co === void 0 || _iframeRef$current$co.postMessage({
|
|
|
data: learningData[currentKey]
|
|
|
}, '*');
|
|
|
// Fetch(`/api/courses/${params.coursesId}/ilearning_study.json`, {
|
|
|
// method: 'get',
|
|
|
// params: {
|
|
|
// scene: currentKey == 'init' ? 0 : (currentKey == 'review' ? 1 : 2)
|
|
|
// }
|
|
|
// }).then((res) => {
|
|
|
// if (res.status === 0) {
|
|
|
// iframeRef.current.contentWindow?.postMessage(
|
|
|
// {
|
|
|
// data: learningData[currentKey]
|
|
|
// // data: res?.data?.stages
|
|
|
// },
|
|
|
// '*',
|
|
|
// );
|
|
|
|
|
|
// }
|
|
|
// })
|
|
|
};
|
|
|
|
|
|
return /*#__PURE__*/(0,jsx_runtime.jsxs)("section", {
|
|
|
children: [/*#__PURE__*/(0,jsx_runtime.jsx)(TabMenu/* default */.Z, {
|
|
|
isLoading: loading['classroomList/getClassroomAttendancesList'],
|
|
|
tabDataSource: Menus,
|
|
|
isAdmin: (0,authority/* isAdmin */.GJ)(),
|
|
|
onTabMenuClick: onMenuSelect,
|
|
|
defaultSelectedKeys: [currentKey]
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)("section", {
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(skeleton/* default */.Z, {
|
|
|
loading: loading['classroomList/getClassroomAttendancesList'],
|
|
|
active: true,
|
|
|
avatar: {
|
|
|
size: 40
|
|
|
},
|
|
|
paragraph: {
|
|
|
rows: 5
|
|
|
},
|
|
|
className: "mt30",
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)("iframe", {
|
|
|
src: "/knowledgegraph/parseTree.html",
|
|
|
onLoad: sendData,
|
|
|
className: LearningPathmodules.iframe,
|
|
|
ref: iframeRef
|
|
|
})
|
|
|
})
|
|
|
}), /*#__PURE__*/(0,jsx_runtime.jsx)(modal/* default */.Z, {
|
|
|
open: !!videoUrl,
|
|
|
onCancel: function onCancel() {
|
|
|
return setVideoUrl("");
|
|
|
},
|
|
|
width: 800,
|
|
|
footer: null,
|
|
|
bodyStyle: {
|
|
|
padding: 0
|
|
|
},
|
|
|
centered: true,
|
|
|
destroyOnClose: true,
|
|
|
children: /*#__PURE__*/(0,jsx_runtime.jsx)(Play/* default */.Z
|
|
|
// ref={videoRef}
|
|
|
// startTime={video_item?.last_point}
|
|
|
, {
|
|
|
src: videoUrl,
|
|
|
autoPlay: true,
|
|
|
toLog: false
|
|
|
// videoId={video_item?.video_id}
|
|
|
// logWatchHistory={handlLogWatchHistory}
|
|
|
// handlePause={handlePause}
|
|
|
// handlePlay={handlePlay}
|
|
|
// videoSpeed={radioValue}
|
|
|
// handlePlayEnded={handlePlayEnded}
|
|
|
})
|
|
|
})]
|
|
|
});
|
|
|
};
|
|
|
|
|
|
/* harmony default export */ var LearningPath = ((0,_umi_production_exports.connect)(function (_ref2) {
|
|
|
var classroomList = _ref2.classroomList,
|
|
|
loading = _ref2.loading,
|
|
|
globalSetting = _ref2.globalSetting;
|
|
|
return {
|
|
|
classroomList: classroomList,
|
|
|
globalSetting: globalSetting,
|
|
|
loading: loading.effects
|
|
|
};
|
|
|
})(ShixunsListPage));
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 63989:
|
|
|
/*!*****************************************************************************!*\
|
|
|
!*** ./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@17.0.2@react/index.js
|
|
|
var _react_17_0_2_react = __webpack_require__(59301);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/row/index.js
|
|
|
var row = __webpack_require__(95237);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/col/index.js
|
|
|
var col = __webpack_require__(43604);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/menu/index.js + 11 modules
|
|
|
var menu = __webpack_require__(20834);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/dropdown/index.js + 1 modules
|
|
|
var dropdown = __webpack_require__(38854);
|
|
|
;// 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@17.0.2@react/jsx-runtime.js
|
|
|
var jsx_runtime = __webpack_require__(37712);
|
|
|
;// 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 */.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);
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 38854:
|
|
|
/*!************************************************************************!*\
|
|
|
!*** ./node_modules/_antd@5.9.0@antd/es/dropdown/index.js + 1 modules ***!
|
|
|
\************************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
Z: function() { return /* binding */ es_dropdown; }
|
|
|
});
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/dropdown/dropdown.js
|
|
|
var dropdown = __webpack_require__(91857);
|
|
|
// EXTERNAL MODULE: ./node_modules/_classnames@2.3.2@classnames/index.js
|
|
|
var _classnames_2_3_2_classnames = __webpack_require__(12124);
|
|
|
var _classnames_2_3_2_classnames_default = /*#__PURE__*/__webpack_require__.n(_classnames_2_3_2_classnames);
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js
|
|
|
var _react_17_0_2_react = __webpack_require__(59301);
|
|
|
// EXTERNAL MODULE: ./node_modules/_@ant-design_icons@5.2.6@@ant-design/icons/es/icons/EllipsisOutlined.js + 1 modules
|
|
|
var EllipsisOutlined = __webpack_require__(93319);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/button/index.js
|
|
|
var es_button = __webpack_require__(3113);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/config-provider/context.js
|
|
|
var context = __webpack_require__(36355);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/space/index.js + 3 modules
|
|
|
var space = __webpack_require__(81327);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/space/Compact.js
|
|
|
var Compact = __webpack_require__(33234);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/dropdown/style/index.js + 1 modules
|
|
|
var style = __webpack_require__(47211);
|
|
|
;// CONCATENATED MODULE: ./node_modules/_antd@5.9.0@antd/es/dropdown/dropdown-button.js
|
|
|
"use client";
|
|
|
|
|
|
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 DropdownButton = props => {
|
|
|
const {
|
|
|
getPopupContainer: getContextPopupContainer,
|
|
|
getPrefixCls,
|
|
|
direction
|
|
|
} = _react_17_0_2_react.useContext(context/* ConfigContext */.E_);
|
|
|
const {
|
|
|
prefixCls: customizePrefixCls,
|
|
|
type = 'default',
|
|
|
danger,
|
|
|
disabled,
|
|
|
loading,
|
|
|
onClick,
|
|
|
htmlType,
|
|
|
children,
|
|
|
className,
|
|
|
menu,
|
|
|
arrow,
|
|
|
autoFocus,
|
|
|
overlay,
|
|
|
trigger,
|
|
|
align,
|
|
|
open,
|
|
|
onOpenChange,
|
|
|
placement,
|
|
|
getPopupContainer,
|
|
|
href,
|
|
|
icon = /*#__PURE__*/_react_17_0_2_react.createElement(EllipsisOutlined/* default */.Z, null),
|
|
|
title,
|
|
|
buttonsRender = buttons => buttons,
|
|
|
mouseEnterDelay,
|
|
|
mouseLeaveDelay,
|
|
|
overlayClassName,
|
|
|
overlayStyle,
|
|
|
destroyPopupOnHide,
|
|
|
dropdownRender
|
|
|
} = props,
|
|
|
restProps = __rest(props, ["prefixCls", "type", "danger", "disabled", "loading", "onClick", "htmlType", "children", "className", "menu", "arrow", "autoFocus", "overlay", "trigger", "align", "open", "onOpenChange", "placement", "getPopupContainer", "href", "icon", "title", "buttonsRender", "mouseEnterDelay", "mouseLeaveDelay", "overlayClassName", "overlayStyle", "destroyPopupOnHide", "dropdownRender"]);
|
|
|
const prefixCls = getPrefixCls('dropdown', customizePrefixCls);
|
|
|
const buttonPrefixCls = `${prefixCls}-button`;
|
|
|
const [wrapSSR, hashId] = (0,style/* default */.Z)(prefixCls);
|
|
|
const dropdownProps = {
|
|
|
menu,
|
|
|
arrow,
|
|
|
autoFocus,
|
|
|
align,
|
|
|
disabled,
|
|
|
trigger: disabled ? [] : trigger,
|
|
|
onOpenChange,
|
|
|
getPopupContainer: getPopupContainer || getContextPopupContainer,
|
|
|
mouseEnterDelay,
|
|
|
mouseLeaveDelay,
|
|
|
overlayClassName,
|
|
|
overlayStyle,
|
|
|
destroyPopupOnHide,
|
|
|
dropdownRender
|
|
|
};
|
|
|
const {
|
|
|
compactSize,
|
|
|
compactItemClassnames
|
|
|
} = (0,Compact/* useCompactItemContext */.ri)(prefixCls, direction);
|
|
|
const classes = _classnames_2_3_2_classnames_default()(buttonPrefixCls, compactItemClassnames, className, hashId);
|
|
|
if ('overlay' in props) {
|
|
|
dropdownProps.overlay = overlay;
|
|
|
}
|
|
|
if ('open' in props) {
|
|
|
dropdownProps.open = open;
|
|
|
}
|
|
|
if ('placement' in props) {
|
|
|
dropdownProps.placement = placement;
|
|
|
} else {
|
|
|
dropdownProps.placement = direction === 'rtl' ? 'bottomLeft' : 'bottomRight';
|
|
|
}
|
|
|
const leftButton = /*#__PURE__*/_react_17_0_2_react.createElement(es_button/* default */.ZP, {
|
|
|
type: type,
|
|
|
danger: danger,
|
|
|
disabled: disabled,
|
|
|
loading: loading,
|
|
|
onClick: onClick,
|
|
|
htmlType: htmlType,
|
|
|
href: href,
|
|
|
title: title
|
|
|
}, children);
|
|
|
const rightButton = /*#__PURE__*/_react_17_0_2_react.createElement(es_button/* default */.ZP, {
|
|
|
type: type,
|
|
|
danger: danger,
|
|
|
icon: icon
|
|
|
});
|
|
|
const [leftButtonToRender, rightButtonToRender] = buttonsRender([leftButton, rightButton]);
|
|
|
return wrapSSR( /*#__PURE__*/_react_17_0_2_react.createElement(space/* default */.Z.Compact, Object.assign({
|
|
|
className: classes,
|
|
|
size: compactSize,
|
|
|
block: true
|
|
|
}, restProps), leftButtonToRender, /*#__PURE__*/_react_17_0_2_react.createElement(dropdown/* default */.Z, Object.assign({}, dropdownProps), rightButtonToRender)));
|
|
|
};
|
|
|
DropdownButton.__ANT_BUTTON = true;
|
|
|
/* harmony default export */ var dropdown_button = (DropdownButton);
|
|
|
;// CONCATENATED MODULE: ./node_modules/_antd@5.9.0@antd/es/dropdown/index.js
|
|
|
"use client";
|
|
|
|
|
|
|
|
|
|
|
|
const Dropdown = dropdown/* default */.Z;
|
|
|
Dropdown.Button = dropdown_button;
|
|
|
/* harmony default export */ var es_dropdown = (Dropdown);
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 81327:
|
|
|
/*!*********************************************************************!*\
|
|
|
!*** ./node_modules/_antd@5.9.0@antd/es/space/index.js + 3 modules ***!
|
|
|
\*********************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
// EXPORTS
|
|
|
__webpack_require__.d(__webpack_exports__, {
|
|
|
Z: function() { return /* binding */ space; }
|
|
|
});
|
|
|
|
|
|
// UNUSED EXPORTS: SpaceContext
|
|
|
|
|
|
// EXTERNAL MODULE: ./node_modules/_react@17.0.2@react/index.js
|
|
|
var _react_17_0_2_react = __webpack_require__(59301);
|
|
|
// EXTERNAL MODULE: ./node_modules/_classnames@2.3.2@classnames/index.js
|
|
|
var _classnames_2_3_2_classnames = __webpack_require__(12124);
|
|
|
var _classnames_2_3_2_classnames_default = /*#__PURE__*/__webpack_require__.n(_classnames_2_3_2_classnames);
|
|
|
// EXTERNAL MODULE: ./node_modules/_rc-util@5.38.1@rc-util/es/Children/toArray.js
|
|
|
var toArray = __webpack_require__(45659);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/config-provider/context.js
|
|
|
var context = __webpack_require__(36355);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/space/Compact.js
|
|
|
var Compact = __webpack_require__(33234);
|
|
|
;// CONCATENATED MODULE: ./node_modules/_antd@5.9.0@antd/es/space/context.js
|
|
|
|
|
|
const SpaceContext = /*#__PURE__*/_react_17_0_2_react.createContext({
|
|
|
latestIndex: 0
|
|
|
});
|
|
|
const SpaceContextProvider = SpaceContext.Provider;
|
|
|
;// CONCATENATED MODULE: ./node_modules/_antd@5.9.0@antd/es/space/Item.js
|
|
|
"use client";
|
|
|
|
|
|
|
|
|
|
|
|
const Item = _ref => {
|
|
|
let {
|
|
|
className,
|
|
|
index,
|
|
|
children,
|
|
|
split,
|
|
|
style
|
|
|
} = _ref;
|
|
|
const {
|
|
|
latestIndex
|
|
|
} = _react_17_0_2_react.useContext(SpaceContext);
|
|
|
if (children === null || children === undefined) {
|
|
|
return null;
|
|
|
}
|
|
|
return /*#__PURE__*/_react_17_0_2_react.createElement(_react_17_0_2_react.Fragment, null, /*#__PURE__*/_react_17_0_2_react.createElement("div", {
|
|
|
className: className,
|
|
|
style: style
|
|
|
}, children), index < latestIndex && split && /*#__PURE__*/_react_17_0_2_react.createElement("span", {
|
|
|
className: `${className}-split`
|
|
|
}, split));
|
|
|
};
|
|
|
/* harmony default export */ var space_Item = (Item);
|
|
|
// EXTERNAL MODULE: ./node_modules/_antd@5.9.0@antd/es/space/style/index.js + 1 modules
|
|
|
var space_style = __webpack_require__(2856);
|
|
|
;// CONCATENATED MODULE: ./node_modules/_antd@5.9.0@antd/es/space/utils.js
|
|
|
function isPresetSize(size) {
|
|
|
return ['small', 'middle', 'large'].includes(size);
|
|
|
}
|
|
|
function isValidGapNumber(size) {
|
|
|
if (!size) {
|
|
|
// The case of size = 0 is deliberately excluded here, because the default value of the gap attribute in CSS is 0, so if the user passes 0 in, we can directly ignore it.
|
|
|
return false;
|
|
|
}
|
|
|
return typeof size === 'number' && !Number.isNaN(size);
|
|
|
}
|
|
|
;// CONCATENATED MODULE: ./node_modules/_antd@5.9.0@antd/es/space/index.js
|
|
|
"use client";
|
|
|
|
|
|
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 Space = /*#__PURE__*/_react_17_0_2_react.forwardRef((props, ref) => {
|
|
|
var _a, _b;
|
|
|
const {
|
|
|
getPrefixCls,
|
|
|
space,
|
|
|
direction: directionConfig
|
|
|
} = _react_17_0_2_react.useContext(context/* ConfigContext */.E_);
|
|
|
const {
|
|
|
size = (space === null || space === void 0 ? void 0 : space.size) || 'small',
|
|
|
align,
|
|
|
className,
|
|
|
rootClassName,
|
|
|
children,
|
|
|
direction = 'horizontal',
|
|
|
prefixCls: customizePrefixCls,
|
|
|
split,
|
|
|
style,
|
|
|
wrap = false,
|
|
|
classNames: customClassNames,
|
|
|
styles
|
|
|
} = props,
|
|
|
otherProps = __rest(props, ["size", "align", "className", "rootClassName", "children", "direction", "prefixCls", "split", "style", "wrap", "classNames", "styles"]);
|
|
|
const [horizontalSize, verticalSize] = Array.isArray(size) ? size : [size, size];
|
|
|
const isPresetVerticalSize = isPresetSize(verticalSize);
|
|
|
const isPresetHorizontalSize = isPresetSize(horizontalSize);
|
|
|
const isValidVerticalSize = isValidGapNumber(verticalSize);
|
|
|
const isValidHorizontalSize = isValidGapNumber(horizontalSize);
|
|
|
const childNodes = (0,toArray/* default */.Z)(children, {
|
|
|
keepEmpty: true
|
|
|
});
|
|
|
const mergedAlign = align === undefined && direction === 'horizontal' ? 'center' : align;
|
|
|
const prefixCls = getPrefixCls('space', customizePrefixCls);
|
|
|
const [wrapSSR, hashId] = (0,space_style/* default */.Z)(prefixCls);
|
|
|
const cls = _classnames_2_3_2_classnames_default()(prefixCls, space === null || space === void 0 ? void 0 : space.className, hashId, `${prefixCls}-${direction}`, {
|
|
|
[`${prefixCls}-rtl`]: directionConfig === 'rtl',
|
|
|
[`${prefixCls}-align-${mergedAlign}`]: mergedAlign,
|
|
|
[`${prefixCls}-gap-row-${verticalSize}`]: isPresetVerticalSize,
|
|
|
[`${prefixCls}-gap-col-${horizontalSize}`]: isPresetHorizontalSize
|
|
|
}, className, rootClassName);
|
|
|
const itemClassName = _classnames_2_3_2_classnames_default()(`${prefixCls}-item`, (_a = customClassNames === null || customClassNames === void 0 ? void 0 : customClassNames.item) !== null && _a !== void 0 ? _a : (_b = space === null || space === void 0 ? void 0 : space.classNames) === null || _b === void 0 ? void 0 : _b.item);
|
|
|
// Calculate latest one
|
|
|
let latestIndex = 0;
|
|
|
const nodes = childNodes.map((child, i) => {
|
|
|
var _a, _b;
|
|
|
if (child !== null && child !== undefined) {
|
|
|
latestIndex = i;
|
|
|
}
|
|
|
const key = child && child.key || `${itemClassName}-${i}`;
|
|
|
return /*#__PURE__*/_react_17_0_2_react.createElement(space_Item, {
|
|
|
className: itemClassName,
|
|
|
key: key,
|
|
|
index: i,
|
|
|
split: split,
|
|
|
style: (_a = styles === null || styles === void 0 ? void 0 : styles.item) !== null && _a !== void 0 ? _a : (_b = space === null || space === void 0 ? void 0 : space.styles) === null || _b === void 0 ? void 0 : _b.item
|
|
|
}, child);
|
|
|
});
|
|
|
const spaceContext = _react_17_0_2_react.useMemo(() => ({
|
|
|
latestIndex
|
|
|
}), [latestIndex]);
|
|
|
// =========================== Render ===========================
|
|
|
if (childNodes.length === 0) {
|
|
|
return null;
|
|
|
}
|
|
|
const gapStyle = {};
|
|
|
if (wrap) {
|
|
|
gapStyle.flexWrap = 'wrap';
|
|
|
}
|
|
|
if (!isPresetHorizontalSize && isValidHorizontalSize) {
|
|
|
gapStyle.columnGap = horizontalSize;
|
|
|
}
|
|
|
if (!isPresetVerticalSize && isValidVerticalSize) {
|
|
|
gapStyle.rowGap = verticalSize;
|
|
|
}
|
|
|
return wrapSSR( /*#__PURE__*/_react_17_0_2_react.createElement("div", Object.assign({
|
|
|
ref: ref,
|
|
|
className: cls,
|
|
|
style: Object.assign(Object.assign(Object.assign({}, gapStyle), space === null || space === void 0 ? void 0 : space.style), style)
|
|
|
}, otherProps), /*#__PURE__*/_react_17_0_2_react.createElement(SpaceContextProvider, {
|
|
|
value: spaceContext
|
|
|
}, nodes)));
|
|
|
});
|
|
|
if (false) {}
|
|
|
const CompoundedSpace = Space;
|
|
|
CompoundedSpace.Compact = Compact/* default */.ZP;
|
|
|
/* harmony default export */ var space = (CompoundedSpace);
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 92899:
|
|
|
/*!***************************************************************!*\
|
|
|
!*** ./node_modules/_antd@5.9.0@antd/es/style/motion/move.js ***!
|
|
|
\***************************************************************/
|
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
|
/* harmony export */ Fm: function() { return /* binding */ initMoveMotion; }
|
|
|
/* harmony export */ });
|
|
|
/* unused harmony exports moveDownIn, moveDownOut, moveLeftIn, moveLeftOut, moveRightIn, moveRightOut, moveUpIn, moveUpOut */
|
|
|
/* harmony import */ var _ant_design_cssinjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @ant-design/cssinjs */ 84608);
|
|
|
/* harmony import */ var _motion__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./motion */ 95406);
|
|
|
|
|
|
|
|
|
const moveDownIn = new _ant_design_cssinjs__WEBPACK_IMPORTED_MODULE_0__.Keyframes('antMoveDownIn', {
|
|
|
'0%': {
|
|
|
transform: 'translate3d(0, 100%, 0)',
|
|
|
transformOrigin: '0 0',
|
|
|
opacity: 0
|
|
|
},
|
|
|
'100%': {
|
|
|
transform: 'translate3d(0, 0, 0)',
|
|
|
transformOrigin: '0 0',
|
|
|
opacity: 1
|
|
|
}
|
|
|
});
|
|
|
const moveDownOut = new _ant_design_cssinjs__WEBPACK_IMPORTED_MODULE_0__.Keyframes('antMoveDownOut', {
|
|
|
'0%': {
|
|
|
transform: 'translate3d(0, 0, 0)',
|
|
|
transformOrigin: '0 0',
|
|
|
opacity: 1
|
|
|
},
|
|
|
'100%': {
|
|
|
transform: 'translate3d(0, 100%, 0)',
|
|
|
transformOrigin: '0 0',
|
|
|
opacity: 0
|
|
|
}
|
|
|
});
|
|
|
const moveLeftIn = new _ant_design_cssinjs__WEBPACK_IMPORTED_MODULE_0__.Keyframes('antMoveLeftIn', {
|
|
|
'0%': {
|
|
|
transform: 'translate3d(-100%, 0, 0)',
|
|
|
transformOrigin: '0 0',
|
|
|
opacity: 0
|
|
|
},
|
|
|
'100%': {
|
|
|
transform: 'translate3d(0, 0, 0)',
|
|
|
transformOrigin: '0 0',
|
|
|
opacity: 1
|
|
|
}
|
|
|
});
|
|
|
const moveLeftOut = new _ant_design_cssinjs__WEBPACK_IMPORTED_MODULE_0__.Keyframes('antMoveLeftOut', {
|
|
|
'0%': {
|
|
|
transform: 'translate3d(0, 0, 0)',
|
|
|
transformOrigin: '0 0',
|
|
|
opacity: 1
|
|
|
},
|
|
|
'100%': {
|
|
|
transform: 'translate3d(-100%, 0, 0)',
|
|
|
transformOrigin: '0 0',
|
|
|
opacity: 0
|
|
|
}
|
|
|
});
|
|
|
const moveRightIn = new _ant_design_cssinjs__WEBPACK_IMPORTED_MODULE_0__.Keyframes('antMoveRightIn', {
|
|
|
'0%': {
|
|
|
transform: 'translate3d(100%, 0, 0)',
|
|
|
transformOrigin: '0 0',
|
|
|
opacity: 0
|
|
|
},
|
|
|
'100%': {
|
|
|
transform: 'translate3d(0, 0, 0)',
|
|
|
transformOrigin: '0 0',
|
|
|
opacity: 1
|
|
|
}
|
|
|
});
|
|
|
const moveRightOut = new _ant_design_cssinjs__WEBPACK_IMPORTED_MODULE_0__.Keyframes('antMoveRightOut', {
|
|
|
'0%': {
|
|
|
transform: 'translate3d(0, 0, 0)',
|
|
|
transformOrigin: '0 0',
|
|
|
opacity: 1
|
|
|
},
|
|
|
'100%': {
|
|
|
transform: 'translate3d(100%, 0, 0)',
|
|
|
transformOrigin: '0 0',
|
|
|
opacity: 0
|
|
|
}
|
|
|
});
|
|
|
const moveUpIn = new _ant_design_cssinjs__WEBPACK_IMPORTED_MODULE_0__.Keyframes('antMoveUpIn', {
|
|
|
'0%': {
|
|
|
transform: 'translate3d(0, -100%, 0)',
|
|
|
transformOrigin: '0 0',
|
|
|
opacity: 0
|
|
|
},
|
|
|
'100%': {
|
|
|
transform: 'translate3d(0, 0, 0)',
|
|
|
transformOrigin: '0 0',
|
|
|
opacity: 1
|
|
|
}
|
|
|
});
|
|
|
const moveUpOut = new _ant_design_cssinjs__WEBPACK_IMPORTED_MODULE_0__.Keyframes('antMoveUpOut', {
|
|
|
'0%': {
|
|
|
transform: 'translate3d(0, 0, 0)',
|
|
|
transformOrigin: '0 0',
|
|
|
opacity: 1
|
|
|
},
|
|
|
'100%': {
|
|
|
transform: 'translate3d(0, -100%, 0)',
|
|
|
transformOrigin: '0 0',
|
|
|
opacity: 0
|
|
|
}
|
|
|
});
|
|
|
const moveMotion = {
|
|
|
'move-up': {
|
|
|
inKeyframes: moveUpIn,
|
|
|
outKeyframes: moveUpOut
|
|
|
},
|
|
|
'move-down': {
|
|
|
inKeyframes: moveDownIn,
|
|
|
outKeyframes: moveDownOut
|
|
|
},
|
|
|
'move-left': {
|
|
|
inKeyframes: moveLeftIn,
|
|
|
outKeyframes: moveLeftOut
|
|
|
},
|
|
|
'move-right': {
|
|
|
inKeyframes: moveRightIn,
|
|
|
outKeyframes: moveRightOut
|
|
|
}
|
|
|
};
|
|
|
const initMoveMotion = (token, motionName) => {
|
|
|
const {
|
|
|
antCls
|
|
|
} = token;
|
|
|
const motionCls = `${antCls}-${motionName}`;
|
|
|
const {
|
|
|
inKeyframes,
|
|
|
outKeyframes
|
|
|
} = moveMotion[motionName];
|
|
|
return [(0,_motion__WEBPACK_IMPORTED_MODULE_1__/* .initMotion */ .R)(motionCls, inKeyframes, outKeyframes, token.motionDurationMid), {
|
|
|
[`
|
|
|
${motionCls}-enter,
|
|
|
${motionCls}-appear
|
|
|
`]: {
|
|
|
opacity: 0,
|
|
|
animationTimingFunction: token.motionEaseOutCirc
|
|
|
},
|
|
|
[`${motionCls}-leave`]: {
|
|
|
animationTimingFunction: token.motionEaseInOutCirc
|
|
|
}
|
|
|
}];
|
|
|
};
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 25769:
|
|
|
/*!**************************************************************************!*\
|
|
|
!*** ./node_modules/_copy-to-clipboard@3.3.3@copy-to-clipboard/index.js ***!
|
|
|
\**************************************************************************/
|
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
var deselectCurrent = __webpack_require__(/*! toggle-selection */ 98040);
|
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 83145:
|
|
|
/*!**********************************************************************************************!*\
|
|
|
!*** ./node_modules/_react-copy-to-clipboard@5.0.2@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 */ 59301));
|
|
|
|
|
|
var _copyToClipboard = _interopRequireDefault(__webpack_require__(/*! copy-to-clipboard */ 25769));
|
|
|
|
|
|
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
|
|
|
});
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 56102:
|
|
|
/*!******************************************************************************************!*\
|
|
|
!*** ./node_modules/_react-copy-to-clipboard@5.0.2@react-copy-to-clipboard/lib/index.js ***!
|
|
|
\******************************************************************************************/
|
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
|
|
"use strict";
|
|
|
|
|
|
|
|
|
var _require = __webpack_require__(/*! ./Component */ 83145),
|
|
|
CopyToClipboard = _require.CopyToClipboard;
|
|
|
|
|
|
CopyToClipboard.CopyToClipboard = CopyToClipboard;
|
|
|
module.exports = CopyToClipboard;
|
|
|
|
|
|
/***/ }),
|
|
|
|
|
|
/***/ 98040:
|
|
|
/*!************************************************************************!*\
|
|
|
!*** ./node_modules/_toggle-selection@1.0.6@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();
|
|
|
};
|
|
|
};
|
|
|
|
|
|
|
|
|
/***/ })
|
|
|
|
|
|
}]); |