// ==UserScript==
// @name WELearn网课助手
// @namespace https://github.com/SSmJaE/WELearnHelper
// @description 显示WE Learn随行课堂题目答案;支持班级测试;自动答题;刷时长;开放自定义设置
// @version 0.9.2
// @author SSmJaE
// @license GPL-3.0
// @compatible Chrome
// @match https://course.sflep.com/*
// @match https://welearn.sflep.com/*
// @match https://courseappserver.sflep.com/*
// @match https://centercourseware.sflep.com/*
// @run-at document-end
// @connect localhost
// @connect 47.100.166.53
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_setClipboard
// @grant GM_xmlhttpRequest
// @grant unsafeWindow
// @require https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.min.js
// ==/UserScript==
/******/ (function(modules) { // webpackBootstrap
/******/ // install a JSONP callback for chunk loading
/******/ function webpackJsonpCallback(data) {
/******/ var chunkIds = data[0];
/******/ var moreModules = data[1];
/******/
/******/
/******/ // add "moreModules" to the modules object,
/******/ // then flag all "chunkIds" as loaded and fire callback
/******/ var moduleId, chunkId, i = 0, resolves = [];
/******/ for(;i < chunkIds.length; i++) {
/******/ chunkId = chunkIds[i];
/******/ if(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {
/******/ resolves.push(installedChunks[chunkId][0]);
/******/ }
/******/ installedChunks[chunkId] = 0;
/******/ }
/******/ for(moduleId in moreModules) {
/******/ if(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {
/******/ modules[moduleId] = moreModules[moduleId];
/******/ }
/******/ }
/******/ if(parentJsonpFunction) parentJsonpFunction(data);
/******/
/******/ while(resolves.length) {
/******/ resolves.shift()();
/******/ }
/******/
/******/ };
/******/
/******/
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // object to store loaded and loading chunks
/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched
/******/ // Promise = chunk loading, 0 = chunk loaded
/******/ var installedChunks = {
/******/ 0: 0
/******/ };
/******/
/******/
/******/
/******/ // script path function
/******/ function jsonpScriptSrc(chunkId) {
/******/ return __webpack_require__.p + "" + chunkId + ".WELearnHelper0.9.2.user.js"
/******/ }
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/ // The chunk loading function for additional chunks
/******/ // Since all referenced chunks are already included
/******/ // in this file, this function is empty here.
/******/ __webpack_require__.e = function requireEnsure() {
/******/ return Promise.resolve();
/******/ };
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // on error function for async loading
/******/ __webpack_require__.oe = function(err) { console.error(err); throw err; };
/******/
/******/ var jsonpArray = window["webpackJsonp"] = window["webpackJsonp"] || [];
/******/ var oldJsonpFunction = jsonpArray.push.bind(jsonpArray);
/******/ jsonpArray.push = webpackJsonpCallback;
/******/ jsonpArray = jsonpArray.slice();
/******/ for(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);
/******/ var parentJsonpFunction = oldJsonpFunction;
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 78);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(46);
/***/ }),
/* 1 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return store; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return BASE_URL; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return DEBUG_MODE; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return VERSION; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return QUERY_INTERVAL; });
/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42);
var _package_json__WEBPACK_IMPORTED_MODULE_1___namespace = /*#__PURE__*/__webpack_require__.t(42, 1);
var store = {
messages: [],
USER_SETTINGS: {},
collapse: false,
showExamQueryButton: false,
showExamUploadButton: false
}; // *--------------------以下为常量
var BASE_URL;
var DEBUG_MODE;
if (false) {} else {
BASE_URL = "http://47.100.166.53/api/welearn";
DEBUG_MODE = false;
}
var VERSION = _package_json__WEBPACK_IMPORTED_MODULE_1__[/* version */ "a"];
var QUERY_INTERVAL = 3000; //单位ms
/***/ }),
/* 2 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _asyncToGenerator; });
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
try {
var info = gen[key](arg);
var value = info.value;
} catch (error) {
reject(error);
return;
}
if (info.done) {
resolve(value);
} else {
Promise.resolve(value).then(_next, _throw);
}
}
function _asyncToGenerator(fn) {
return function () {
var self = this,
args = arguments;
return new Promise(function (resolve, reject) {
var gen = fn.apply(self, args);
function _next(value) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
}
function _throw(err) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
}
_next(undefined);
});
};
}
/***/ }),
/* 3 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return addMessage; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return clearMessage; });
/* harmony import */ var _babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
/* harmony import */ var _babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);
/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _src_utils_common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4);
/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(1);
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function addMessage(_x) {
return _addMessage.apply(this, arguments);
}
/** 清空消息 */
function _addMessage() {
_addMessage = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee2(message) {
var type,
scrollDown,
add,
_add,
_iterator,
_step,
line,
_args2 = arguments;
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_add = function _add3() {
_add = Object(_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.mark(function _callee(finalInfo, finalType) {
var single,
_args = arguments;
return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_2___default.a.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
single = _args.length > 2 && _args[2] !== undefined ? _args[2] : true;
if (!(finalType !== "hr")) {
_context.next = 4;
break;
}
if (!(finalInfo === "")) {
_context.next = 4;
break;
}
return _context.abrupt("return");
case 4:
_index__WEBPACK_IMPORTED_MODULE_4__[/* store */ "e"].messages.push({
info: finalInfo,
type: finalType
});
if (!(_index__WEBPACK_IMPORTED_MODULE_4__[/* store */ "e"].USER_SETTINGS.autoSlide && single === true)) {
_context.next = 9;
break;
}
_context.next = 8;
return Object(_src_utils_common__WEBPACK_IMPORTED_MODULE_3__[/* sleep */ "h"])(10);
case 8:
//等待message渲染完成,不然不会拉到最底
scrollDown();
case 9:
case "end":
return _context.stop();
}
}
}, _callee);
}));
return _add.apply(this, arguments);
};
add = function _add2(_x2, _x3) {
return _add.apply(this, arguments);
};
scrollDown = function _scrollDown() {
document.querySelector("#container-messages").scrollBy(0, 1000);
};
type = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : "normal";
if (!Array.isArray(message)) {
_context2.next = 30;
break;
}
_iterator = _createForOfIteratorHelper(message);
_context2.prev = 6;
_iterator.s();
case 8:
if ((_step = _iterator.n()).done) {
_context2.next = 19;
break;
}
line = _step.value;
if (!(Object(_babel_runtime_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(line) === "object")) {
_context2.next = 15;
break;
}
_context2.next = 13;
return add(line.info, line.type, false);
case 13:
_context2.next = 17;
break;
case 15:
_context2.next = 17;
return add(String(line), type !== null && type !== void 0 ? type : "normal", false);
case 17:
_context2.next = 8;
break;
case 19:
_context2.next = 24;
break;
case 21:
_context2.prev = 21;
_context2.t0 = _context2["catch"](6);
_iterator.e(_context2.t0);
case 24:
_context2.prev = 24;
_iterator.f();
return _context2.finish(24);
case 27:
scrollDown();
_context2.next = 32;
break;
case 30:
_context2.next = 32;
return add(String(message), type);
case 32:
case "end":
return _context2.stop();
}
}
}, _callee2, null, [[6, 21, 24, 27]]);
}));
return _addMessage.apply(this, arguments);
}
function clearMessage() {
_index__WEBPACK_IMPORTED_MODULE_4__[/* store */ "e"].messages = [];
}
/***/ }),
/* 4 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
// EXPORTS
__webpack_require__.d(__webpack_exports__, "c", function() { return /* binding */ injectToContent; });
__webpack_require__.d(__webpack_exports__, "h", function() { return /* binding */ common_sleep; });
__webpack_require__.d(__webpack_exports__, "d", function() { return /* binding */ makeDraggable; });
__webpack_require__.d(__webpack_exports__, "f", function() { return /* binding */ requestErrorHandler; });
__webpack_require__.d(__webpack_exports__, "e", function() { return /* binding */ perSession; });
__webpack_require__.d(__webpack_exports__, "g", function() { return /* binding */ setValue; });
__webpack_require__.d(__webpack_exports__, "b", function() { return /* binding */ getValue; });
__webpack_require__.d(__webpack_exports__, "a", function() { return /* binding */ copyToClipboard; });
// UNUSED EXPORTS: appendToSideBar
// EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js
var asyncToGenerator = __webpack_require__(2);
// EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/regenerator/index.js
var regenerator = __webpack_require__(0);
var regenerator_default = /*#__PURE__*/__webpack_require__.n(regenerator);
// EXTERNAL MODULE: ./src/store/actions.ts
var actions = __webpack_require__(3);
// EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/classCallCheck.js
var classCallCheck = __webpack_require__(11);
// EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/createClass.js
var createClass = __webpack_require__(12);
// EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/defineProperty.js
var defineProperty = __webpack_require__(7);
// CONCATENATED MODULE: ./src/utils/bridge.ts
function sleep(ms) {
return new Promise(function (resolve) {
return setTimeout(resolve, ms);
});
}
/**inject和content公用的消息组件*/
var bridge_Communication = /*#__PURE__*/function () {
function Communication(serviceType, serviceSource, serviceTarget) {
Object(classCallCheck["a" /* default */])(this, Communication);
Object(defineProperty["a" /* default */])(this, "sessions", new Set());
Object(defineProperty["a" /* default */])(this, "responses", {});
this.serviceType = serviceType;
this.serviceSource = serviceSource;
this.serviceTarget = serviceTarget;
this.listen();
}
Object(createClass["a" /* default */])(Communication, [{
key: "emit",
value: function emit(event, payload) {}
}, {
key: "listen",
value: function listen() {
var _this = this;
window.addEventListener("message", /*#__PURE__*/function () {
var _ref = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee(event) {
var data, response, payload, key, value, defaultValue, returnValue;
return regenerator_default.a.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
// console.error(event);
data = event.data;
if (!(data.extension === "unipus-helper")) {
_context.next = 33;
break;
}
if (!(data.serviceTarget === _this.serviceSource && data.serviceSource === _this.serviceTarget)) {
_context.next = 33;
break;
}
if (!(data.type === "request")) {
_context.next = 32;
break;
}
if (!(data.serviceSource === "inject" && data.serviceTarget === "content")) {
_context.next = 30;
break;
}
payload = JSON.parse(data.payload);
_context.t0 = payload.type;
_context.next = _context.t0 === "fetch" ? 9 : _context.t0 === "setValue" ? 13 : _context.t0 === "getValue" ? 19 : 26;
break;
case 9:
_context.next = 11;
return new Promise(function (resolve) {
return chrome.runtime.sendMessage(data.payload, function (response) {
// console.error(554321);
// console.error(response);
resolve(response);
});
});
case 11:
response = _context.sent;
return _context.abrupt("break", 28);
case 13:
key = payload.key;
value = payload.value;
_context.next = 17;
return new Promise(function (resolve) {
chrome.storage.sync.set(Object(defineProperty["a" /* default */])({}, key, value), function () {
console.log("".concat(key, " is set to ") + value);
resolve();
});
});
case 17:
response = {};
return _context.abrupt("break", 28);
case 19:
key = payload.key;
defaultValue = payload.defaultValue;
_context.next = 23;
return new Promise(function (resolve) {
chrome.storage.sync.get(key, function (result) {
// console.error(`${key} currently is ` + result[key]);
var temp;
try {
temp = JSON.parse(result[key]);
} catch (e) {
temp = result[key];
}
resolve(temp);
});
});
case 23:
returnValue = _context.sent;
response = returnValue ? returnValue : defaultValue;
return _context.abrupt("break", 28);
case 26:
response = "no event handler for " + payload.type;
return _context.abrupt("break", 28);
case 28:
_context.next = 31;
break;
case 30:
response = {};
case 31:
window.postMessage({
extension: "unipus-helper",
sessionId: data.sessionId,
serviceType: _this.serviceType,
serviceSource: _this.serviceSource,
serviceTarget: _this.serviceTarget,
type: "response",
status: "200",
payload: response
}, "*");
case 32:
if (data.type === "response") {
// console.error(
// `${this.serviceType} ${this.serviceSource} receive server ${this.serviceTarget}'s response`,
// );
_this.responses[data.sessionId] = data.payload;
_this.sessions.delete(data.sessionId);
}
case 33:
case "end":
return _context.stop();
}
}
}, _callee);
}));
return function (_x) {
return _ref.apply(this, arguments);
};
}());
}
/**模拟网络请求 */
}, {
key: "request",
value: function request(message) {
var _this2 = this;
return new Promise( /*#__PURE__*/function () {
var _ref2 = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee2(resolve, reject) {
var sessionId, response;
return regenerator_default.a.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
if (!(_this2.serviceSource === "content" && _this2.serviceTarget === "background")) {
_context2.next = 4;
break;
}
chrome.runtime.sendMessage(message, function (response) {
resolve(response);
});
_context2.next = 13;
break;
case 4:
sessionId = String(Math.random());
window.postMessage({
extension: "unipus-helper",
sessionId: sessionId,
serviceType: _this2.serviceType,
serviceSource: _this2.serviceSource,
serviceTarget: _this2.serviceTarget,
type: "request",
payload: JSON.stringify(message)
}, "*");
_this2.sessions.add(sessionId);
case 7:
if (false) {}
if (!_this2.sessions.has(sessionId)) {
response = _this2.responses[sessionId];
delete _this2.responses[sessionId];
resolve(response);
}
_context2.next = 11;
return sleep(50);
case 11:
_context2.next = 7;
break;
case 13:
case "end":
return _context2.stop();
}
}
}, _callee2);
}));
return function (_x2, _x3) {
return _ref2.apply(this, arguments);
};
}());
}
}]);
return Communication;
}();
/* harmony default export */ var bridge = (bridge_Communication);
// CONCATENATED MODULE: ./src/utils/common.ts
var injectToContent = false ? undefined : {};
function common_sleep(ms) {
return new Promise(function (resolve) {
return setTimeout(resolve, ms);
});
}
function getProperty(ele, prop) {
return parseInt(window.getComputedStyle(ele)[prop], 10);
}
/**实现拖动,带边界检测*/
function makeDraggable(handle, container) {
var draggable = false,
pastX,
pastY,
containerLeft,
containerTop,
containerWidth,
containerHeight,
windowWidth,
windowHeight;
handle.addEventListener("mousedown", function (e) {
handle.style.cursor = "grabbing";
draggable = true;
pastX = e.clientX;
pastY = e.clientY;
containerLeft = getProperty(container, "left");
containerTop = getProperty(container, "top");
containerWidth = getProperty(container, "width");
containerHeight = getProperty(container, "height");
windowWidth = window.innerWidth;
windowHeight = window.innerHeight;
}, false);
document.addEventListener("mousemove", function (e) {
if (draggable === true) {
var currentX = e.clientX,
currentY = e.clientY,
diffX = currentX - pastX,
diffY = currentY - pastY;
var targetX = containerLeft + diffX;
var targetY = containerTop + diffY;
if (targetX <= 0) targetX = 0;
if (targetY <= 0) targetY = 0;
if (targetX >= windowWidth - containerWidth) targetX = windowWidth - containerWidth;
if (targetY >= windowHeight - containerHeight) targetY = windowHeight - containerHeight;
container.style.left = targetX + "px";
container.style.top = targetY + "px";
}
});
handle.addEventListener("mouseup", function () {
handle.style.cursor = "grab";
draggable = false;
containerLeft = getProperty(container, "left");
containerTop = getProperty(container, "top");
}, false); //防止意外未退出拖动状态
document.body.addEventListener("keydown", function (e) {
if (e.key === "Escape") {
handle.style.cursor = "grab";
draggable = false;
containerLeft = getProperty(container, "left");
containerTop = getProperty(container, "top");
}
}, false);
}
function errorMessageFactory(error) {
var message = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "请求异常,稍后再试";
var mode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : "message";
var toDisplay = "";
switch (mode) {
case "message":
toDisplay += message;
break;
case "originError":
toDisplay += "".concat(error.message);
break;
case "both":
toDisplay += message + "
".concat(error.message);
break;
}
Object(actions["a" /* addMessage */])("".concat(toDisplay), "error");
}
/** 通过装饰器,实现请求失败时,输出定制化的提示信息
*
* 如果不对request进行装饰器包裹,异常直接输出至console
*
* 如果使用了装饰器,但是未提供message,输出默认值
*/
function requestErrorHandler() {
var message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "请求异常,稍后再试";
var mode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "message";
return function (target, propertyKey, descriptor) {
var originalMethod = descriptor.value;
descriptor.value = function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
// let result = undefined;
// try {
// if (originalMethod && typeof originalMethod.then === "function") {
// originalMethod.catch((error: Error) => {
// throw error;
// });
// }
// result = originalMethod.apply(this, args);
// } catch (error) {
// errorMessageFactory(error as Error, message, mode);
// } finally {
// return result;
// }
var result = originalMethod.apply(this, args);
result.catch(function (error) {
errorMessageFactory(error, message, mode);
});
return result;
};
return descriptor;
};
}
/** 通过装饰器,实现每次会话仅请求一次——限流 */
function perSession(storageKey) {
return function (target, propertyKey, descriptor) {
var originalMethod = descriptor.value;
descriptor.value = function () {
var hasChecked = sessionStorage.getItem(storageKey);
if (!hasChecked) {
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
var result = originalMethod.apply(this, args);
console.log("".concat(storageKey, "\u672A\u6267\u884C\u8FC7\uFF0C\u5F00\u59CB\u6267\u884C"));
sessionStorage.setItem(storageKey, new Date().toISOString());
return result;
} else {
console.log("".concat(storageKey, "\u5DF2\u6267\u884C\u8FC7\uFF0C\u653E\u5F03\u6267\u884C"));
return Promise.resolve();
}
};
return descriptor;
};
}
/**调用GM_setValue或者chrome.storage
*
* 如果调用的是GM_setValue,会对value进行JSON.stringify */
function setValue(_x, _x2) {
return _setValue.apply(this, arguments);
}
/**调用GM_getValue或者chrome.storage
*
* 如果调用的是GM_getValue,返回JSON.parse后的结果 */
function _setValue() {
_setValue = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee(key, value) {
return regenerator_default.a.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
typeof GM_setValue === "function" || function GM_setValue() {};
if (true) {
_context.next = 6;
break;
}
_context.next = 4;
return injectToContent.request({
type: "setValue",
key: key,
value: value
});
case 4:
_context.next = 7;
break;
case 6:
GM_setValue(key, JSON.stringify(value));
case 7:
case "end":
return _context.stop();
}
}
}, _callee);
}));
return _setValue.apply(this, arguments);
}
function getValue(_x3, _x4) {
return _getValue.apply(this, arguments);
}
/**针对带数字索引的答案 */
function _getValue() {
_getValue = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee2(key, defaultValue) {
var returnValue, temp;
return regenerator_default.a.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
typeof GM_getValue === "function" || function GM_getValue() {};
if (true) {
_context2.next = 7;
break;
}
_context2.next = 4;
return injectToContent.request({
type: "getValue",
key: key,
defaultValue: defaultValue
});
case 4:
returnValue = _context2.sent;
_context2.next = 9;
break;
case 7:
temp = GM_getValue(key, defaultValue);
try {
returnValue = JSON.parse(temp);
} catch (error) {
returnValue = temp;
}
case 9:
return _context2.abrupt("return", returnValue);
case 10:
case "end":
return _context2.stop();
}
}
}, _callee2);
}));
return _getValue.apply(this, arguments);
}
function copyToClipboard(_x5) {
return _copyToClipboard.apply(this, arguments);
}
/**
* 注册按钮至侧边栏,class应为iconfont class
*/
function _copyToClipboard() {
_copyToClipboard = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee3(text) {
var copyFrom;
return regenerator_default.a.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
// await navigator.clipboard.writeText(text.replace(/^.*、/, ""));
copyFrom = document.createElement("textarea");
copyFrom.textContent = text.replace(/^.*、/, "");
document.body.appendChild(copyFrom);
copyFrom.select();
document.execCommand("copy");
copyFrom.blur();
document.body.removeChild(copyFrom);
case 7:
case "end":
return _context3.stop();
}
}
}, _callee3);
}));
return _copyToClipboard.apply(this, arguments);
}
function appendToSideBar(id, className, name) {
try {
if (!document.querySelector("sidebar-button-style")) {
var buttonStyle = document.createElement("style");
buttonStyle.id = "sidebar-button-style";
buttonStyle.setAttribute("type", "text/css");
buttonStyle.innerHTML = "\n .courseware_sidebar_2 .sidebar-button {\n color: white;\n z-index: 100;\n font-size: 23px;\n cursor: pointer;\n position: relative;\n left: 15px;\n top: 5px;\n text-align: center; \n }\n\n .courseware_sidebar_2 .sidebar-button:hover {\n color: rgb(0,230,227);\n background: #3b3b3b 100px 100px;\n }\n \n .courseware_sidebar_2 .sidebar-button a { \n color: #494949; \n font-size: 14px; \n line-height: 20px;\n position: relative;\n left: -15px;\n }\n\n .courseware_sidebar_2 .sidebar-button:hover a {\n color: #ccc;\n }\n ";
document.body.append(buttonStyle);
}
var button = document.createElement("span");
button.id = "".concat(id);
button.className = "sidebar-button ".concat(className);
button.innerHTML = "".concat(name, "");
document.querySelector(".courseware_sidebar_2 ul.c_s_2 li").appendChild(button);
return button; //可以跨域添加元素,但是无法跨域操作元素
// (top.frames[0].document.querySelector(
// "container-setting-button",
// ) as HTMLElement).style.display = "none";
//todo 还是说,必须要分成两步?不然解释不了为什么上方可以修改style
} catch (error) {
console.log(error);
}
}
/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
// css base code, injected by the css-loader
// eslint-disable-next-line func-names
module.exports = function (useSourceMap) {
var list = []; // return the list of modules as css string
list.toString = function toString() {
return this.map(function (item) {
var content = cssWithMappingToString(item, useSourceMap);
if (item[2]) {
return "@media ".concat(item[2], " {").concat(content, "}");
}
return content;
}).join('');
}; // import a list of modules into the list
// eslint-disable-next-line func-names
list.i = function (modules, mediaQuery, dedupe) {
if (typeof modules === 'string') {
// eslint-disable-next-line no-param-reassign
modules = [[null, modules, '']];
}
var alreadyImportedModules = {};
if (dedupe) {
for (var i = 0; i < this.length; i++) {
// eslint-disable-next-line prefer-destructuring
var id = this[i][0];
if (id != null) {
alreadyImportedModules[id] = true;
}
}
}
for (var _i = 0; _i < modules.length; _i++) {
var item = [].concat(modules[_i]);
if (dedupe && alreadyImportedModules[item[0]]) {
// eslint-disable-next-line no-continue
continue;
}
if (mediaQuery) {
if (!item[2]) {
item[2] = mediaQuery;
} else {
item[2] = "".concat(mediaQuery, " and ").concat(item[2]);
}
}
list.push(item);
}
};
return list;
};
function cssWithMappingToString(item, useSourceMap) {
var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring
var cssMapping = item[3];
if (!cssMapping) {
return content;
}
if (useSourceMap && typeof btoa === 'function') {
var sourceMapping = toComment(cssMapping);
var sourceURLs = cssMapping.sources.map(function (source) {
return "/*# sourceURL=".concat(cssMapping.sourceRoot || '').concat(source, " */");
});
return [content].concat(sourceURLs).concat([sourceMapping]).join('\n');
}
return [content].join('\n');
} // Adapted from convert-source-map (MIT)
function toComment(sourceMap) {
// eslint-disable-next-line no-undef
var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64);
return "/*# ".concat(data, " */");
}
/***/ }),
/* 6 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _typeof; });
function _typeof(obj) {
"@babel/helpers - typeof";
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
return typeof obj;
} : function (obj) {
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
}, _typeof(obj);
}
/***/ }),
/* 7 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _defineProperty; });
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;
}
/***/ }),
/* 8 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
// EXPORTS
__webpack_require__.d(__webpack_exports__, "a", function() { return /* binding */ requests_Requests; });
// EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js
var asyncToGenerator = __webpack_require__(2);
// EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/classCallCheck.js
var classCallCheck = __webpack_require__(11);
// EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/createClass.js
var createClass = __webpack_require__(12);
// EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/typeof.js
var esm_typeof = __webpack_require__(6);
// EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/regenerator/index.js
var regenerator = __webpack_require__(0);
var regenerator_default = /*#__PURE__*/__webpack_require__.n(regenerator);
// EXTERNAL MODULE: ./src/store/index.ts
var store = __webpack_require__(1);
// EXTERNAL MODULE: ./src/store/actions.ts
var actions = __webpack_require__(3);
// EXTERNAL MODULE: ./src/utils/common.ts + 1 modules
var common = __webpack_require__(4);
// EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/defineProperty.js
var defineProperty = __webpack_require__(7);
// EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js
var assertThisInitialized = __webpack_require__(9);
// EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/inherits.js
var inherits = __webpack_require__(16);
// EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js
var possibleConstructorReturn = __webpack_require__(15);
// EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js
var getPrototypeOf = __webpack_require__(10);
// EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js
var setPrototypeOf = __webpack_require__(17);
// CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/isNativeFunction.js
function _isNativeFunction(fn) {
return Function.toString.call(fn).indexOf("[native code]") !== -1;
}
// CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js
function _isNativeReflectConstruct() {
if (typeof Reflect === "undefined" || !Reflect.construct) return false;
if (Reflect.construct.sham) return false;
if (typeof Proxy === "function") return true;
try {
Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
return true;
} catch (e) {
return false;
}
}
// CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/construct.js
function construct_construct(Parent, args, Class) {
if (_isNativeReflectConstruct()) {
construct_construct = Reflect.construct;
} else {
construct_construct = function _construct(Parent, args, Class) {
var a = [null];
a.push.apply(a, args);
var Constructor = Function.bind.apply(Parent, a);
var instance = new Constructor();
if (Class) Object(setPrototypeOf["a" /* default */])(instance, Class.prototype);
return instance;
};
}
return construct_construct.apply(null, arguments);
}
// CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js
function wrapNativeSuper_wrapNativeSuper(Class) {
var _cache = typeof Map === "function" ? new Map() : undefined;
wrapNativeSuper_wrapNativeSuper = function _wrapNativeSuper(Class) {
if (Class === null || !_isNativeFunction(Class)) return Class;
if (typeof Class !== "function") {
throw new TypeError("Super expression must either be null or a function");
}
if (typeof _cache !== "undefined") {
if (_cache.has(Class)) return _cache.get(Class);
_cache.set(Class, Wrapper);
}
function Wrapper() {
return construct_construct(Class, arguments, Object(getPrototypeOf["a" /* default */])(this).constructor);
}
Wrapper.prototype = Object.create(Class.prototype, {
constructor: {
value: Wrapper,
enumerable: false,
writable: true,
configurable: true
}
});
return Object(setPrototypeOf["a" /* default */])(Wrapper, Class);
};
return wrapNativeSuper_wrapNativeSuper(Class);
}
// CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js
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;
}
// CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js
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;
}
// EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+@babel+runtime@7.17.8/node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 3 modules
var slicedToArray = __webpack_require__(18);
// EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmmirror.com+query-string@7.1.1/node_modules/query-string/index.js
var query_string = __webpack_require__(25);
// CONCATENATED MODULE: ./src/utils/request-base.ts
var _excluded = ["body", "query"];
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); 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 = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function generateFinalUrl(url) {
return url.startsWith("/") ? store["a" /* BASE_URL */] + url : url;
}
if (typeof GM_xmlhttpRequest !== "function") {
var _GM_xmlhttpRequest = function _GM_xmlhttpRequest() {};
}
/**对GM_xmlhttpRequest的封装,以实现一致的fetch风格的request通用接口 */
function requestOfGm(url) {
var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
method: "GET",
headers: {},
body: undefined,
query: undefined
};
//可以直接传入object,而不用每次手动stringify
var body = Object(esm_typeof["a" /* default */])(init.body) === "object" ? JSON.stringify(init.body) : init.body; //可以以对象形式传入查询字符串
url = Object(esm_typeof["a" /* default */])(init.query) === "object" ? query_string["stringifyUrl"]({
url: url,
query: init.query
}) : url;
return new Promise(function (resolve, reject) {
GM_xmlhttpRequest({
url: generateFinalUrl(url),
method: init.method,
headers: init.headers,
data: body,
timeout: 5000,
responseType: "json",
onload: function onload(response) {
var code = response.status;
if (code >= 200 && code <= 300) {
response.json = function () {
return new Promise(function (resolve) {
return resolve(response.response);
});
};
response.text = function () {
return new Promise(function (resolve) {
return resolve(response.responseText);
});
};
resolve(response);
} else reject(response);
},
onabort: function onabort(response) {
return reject(response);
},
onerror: function onerror(response) {
return reject(response);
},
ontimeout: function ontimeout(response) {
return reject(response);
}
});
});
}
/**原生fetch并不支持query,所以还是要自己实现 */
function generateFinalUrlWithQueryParams(url, query) {
for (var _i = 0, _Object$entries = Object.entries(query || {}); _i < _Object$entries.length; _i++) {
var _Object$entries$_i = Object(slicedToArray["a" /* default */])(_Object$entries[_i], 2),
value = _Object$entries$_i[1];
if (Object(esm_typeof["a" /* default */])(value) === "object") throw new Error("query params不应为嵌套对象,拍平或者手动序列化子对象");
}
var absoluteUrl = url.startsWith("/") ? store["a" /* BASE_URL */] + url : url;
return query_string["stringifyUrl"]({
url: absoluteUrl,
query: query
});
}
/**对crx sendMessage的封装,以实现一致的fetch风格的request通用接口 */
function requestOfCrx(_x) {
return _requestOfCrx.apply(this, arguments);
}
function _requestOfCrx() {
_requestOfCrx = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee2(url) {
var init,
_args2 = arguments;
return regenerator_default.a.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
init = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : {
method: "GET",
headers: {},
body: undefined,
query: undefined
};
return _context2.abrupt("return", new Promise( /*#__PURE__*/function () {
var _ref = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee(resolve, reject) {
var body, query, realisticInit, response, text;
return regenerator_default.a.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
body = init.body, query = init.query, realisticInit = _objectWithoutProperties(init, _excluded); //todo background return interface
_context.next = 3;
return common["c" /* injectToContent */].request({
type: "fetch",
url: generateFinalUrlWithQueryParams(url, init.query),
init: _objectSpread(_objectSpread({}, realisticInit), {}, {
body: JSON.stringify(body)
})
});
case 3:
response = _context.sent;
text = response ? response.text : undefined;
response.json = function () {
return new Promise(function (resolve) {
return resolve(JSON.parse(text));
});
};
response.text = function () {
return new Promise(function (resolve) {
return resolve(text);
});
};
response.ok ? resolve(response) : reject(response);
case 8:
case "end":
return _context.stop();
}
}
}, _callee);
}));
return function (_x2, _x3) {
return _ref.apply(this, arguments);
};
}()));
case 2:
case "end":
return _context2.stop();
}
}
}, _callee2);
}));
return _requestOfCrx.apply(this, arguments);
}
/* harmony default export */ var request_base = ( false ? undefined : requestOfGm);
// CONCATENATED MODULE: ./src/utils/proxy.ts
function proxy_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function proxy_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? proxy_ownKeys(Object(source), !0).forEach(function (key) { Object(defineProperty["a" /* default */])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : proxy_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function _createSuper(Derived) { var hasNativeReflectConstruct = proxy_isNativeReflectConstruct(); return function _createSuperInternal() { var Super = Object(getPrototypeOf["a" /* default */])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = Object(getPrototypeOf["a" /* default */])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return Object(possibleConstructorReturn["a" /* default */])(this, result); }; }
function proxy_isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
var proxy_RequestProxy = /*#__PURE__*/function (_Function) {
Object(inherits["a" /* default */])(RequestProxy, _Function);
var _super = _createSuper(RequestProxy);
function RequestProxy() {
var _this;
Object(classCallCheck["a" /* default */])(this, RequestProxy);
_this = _super.call(this, "...args", "return this.__self__.__call__(...args)");
var self = _this.bind(Object(assertThisInitialized["a" /* default */])(_this));
_this.__self__ = self;
return Object(possibleConstructorReturn["a" /* default */])(_this, self);
}
Object(createClass["a" /* default */])(RequestProxy, [{
key: "__call__",
value: function __call__(url) {
var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
method: "GET"
};
return request_base(url, init);
}
}, {
key: "post",
value: function post(url) {
var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return request_base(url, proxy_objectSpread(proxy_objectSpread({}, init), {}, {
method: "POST"
}));
}
}, {
key: "delete",
value: function _delete(url) {
var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return request_base(url, proxy_objectSpread(proxy_objectSpread({}, init), {}, {
method: "DELETE"
}));
}
}, {
key: "put",
value: function put(url) {
var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return request_base(url, proxy_objectSpread(proxy_objectSpread({}, init), {}, {
method: "PUT"
}));
}
}, {
key: "patch",
value: function patch(url) {
var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return request_base(url, proxy_objectSpread(proxy_objectSpread({}, init), {}, {
method: "PATCH"
}));
}
}, {
key: "get",
value: function get(url) {
var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return request_base(url, proxy_objectSpread(proxy_objectSpread({}, init), {}, {
method: "GET"
}));
}
}, {
key: "head",
value: function head(url) {
var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return request_base(url, proxy_objectSpread(proxy_objectSpread({}, init), {}, {
method: "HEAD"
}));
}
}, {
key: "options",
value: function options(url) {
var init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return request_base(url, proxy_objectSpread(proxy_objectSpread({}, init), {}, {
method: "OPTIONS"
}));
}
}]);
return RequestProxy;
}( /*#__PURE__*/wrapNativeSuper_wrapNativeSuper(Function));
/**提供类似axios的接口
*
* 既可以axios(url, init)——默认请求方式为get
*
* 也可以axios.get() axios.post()
*/
var finalRequest = new proxy_RequestProxy();
/* harmony default export */ var proxy = (finalRequest);
// CONCATENATED MODULE: ./src/utils/requests.ts
var __decorate = undefined && undefined.__decorate || function (decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if ((typeof Reflect === "undefined" ? "undefined" : Object(esm_typeof["a" /* default */])(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
}
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = undefined && undefined.__metadata || function (k, v) {
if ((typeof Reflect === "undefined" ? "undefined" : Object(esm_typeof["a" /* default */])(Reflect)) === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var QueryTypes;
(function (QueryTypes) {
QueryTypes[QueryTypes["queryByTaskId"] = 0] = "queryByTaskId";
QueryTypes[QueryTypes["queryByQuestionId"] = 1] = "queryByQuestionId";
QueryTypes[QueryTypes["queryByDomString"] = 2] = "queryByDomString";
})(QueryTypes || (QueryTypes = {}));
var requests_Requests = /*#__PURE__*/function () {
function Requests() {
Object(classCallCheck["a" /* default */])(this, Requests);
}
Object(createClass["a" /* default */])(Requests, null, [{
key: "checkVersion",
value: function () {
var _checkVersion = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee() {
var response, returnJson;
return regenerator_default.a.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return proxy.post("/version/", {
body: {
version: store["d" /* VERSION */]
}
});
case 2:
response = _context.sent;
_context.next = 5;
return response.json();
case 5:
returnJson = _context.sent;
if (!(returnJson.status === false)) {
_context.next = 10;
break;
}
throw new Error(returnJson.error);
case 10:
Object(actions["a" /* addMessage */])(returnJson.data, "info");
case 11:
case "end":
return _context.stop();
}
}
}, _callee);
}));
function checkVersion() {
return _checkVersion.apply(this, arguments);
}
return checkVersion;
}()
}, {
key: "queryByTaskId",
value: function () {
var _queryByTaskId = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee2(taskId) {
var response;
return regenerator_default.a.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return proxy.post("/query/", {
body: {
queryType: QueryTypes.queryByTaskId,
taskId: taskId
}
});
case 2:
response = _context2.sent;
_context2.next = 5;
return response.json();
case 5:
return _context2.abrupt("return", _context2.sent);
case 6:
case "end":
return _context2.stop();
}
}
}, _callee2);
}));
function queryByTaskId(_x) {
return _queryByTaskId.apply(this, arguments);
}
return queryByTaskId;
}()
}, {
key: "queryByQuestionId",
value: function () {
var _queryByQuestionId = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee3(questionId) {
var response, returnJson;
return regenerator_default.a.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
_context3.next = 2;
return proxy.post("/query/", {
body: {
queryType: QueryTypes.queryByQuestionId,
questionId: questionId
}
});
case 2:
response = _context3.sent;
_context3.next = 5;
return response.json();
case 5:
returnJson = _context3.sent;
if (!(returnJson.status === false)) {
_context3.next = 10;
break;
}
throw new Error(returnJson.error);
case 10:
return _context3.abrupt("return", returnJson.data);
case 11:
case "end":
return _context3.stop();
}
}
}, _callee3);
}));
function queryByQuestionId(_x2) {
return _queryByQuestionId.apply(this, arguments);
}
return queryByQuestionId;
}()
}, {
key: "queryByDomString",
value: function () {
var _queryByDomString = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee4(domString) {
var response, returnJson;
return regenerator_default.a.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_context4.next = 2;
return proxy.post("/query/", {
body: {
queryType: QueryTypes.queryByDomString,
domString: domString
}
});
case 2:
response = _context4.sent;
_context4.next = 5;
return response.json();
case 5:
returnJson = _context4.sent;
if (!(returnJson.status === false)) {
_context4.next = 10;
break;
}
throw new Error(returnJson.error);
case 10:
return _context4.abrupt("return", returnJson.data);
case 11:
case "end":
return _context4.stop();
}
}
}, _callee4);
}));
function queryByDomString(_x3) {
return _queryByDomString.apply(this, arguments);
}
return queryByDomString;
}()
}, {
key: "collectAll",
value: function () {
var _collectAll = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee5(taskId, domString) {
var response, returnJson;
return regenerator_default.a.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
_context5.next = 2;
return proxy.post("/collect/", {
body: {
taskId: taskId,
domString: domString
}
});
case 2:
response = _context5.sent;
_context5.next = 5;
return response.json();
case 5:
returnJson = _context5.sent;
if (!(returnJson.status === false)) {
_context5.next = 10;
break;
}
throw new Error(returnJson.error);
case 10:
Object(actions["a" /* addMessage */])("当前页面答案收录成功,可以切换至下一页面,手动点击查询按钮上传,或者上传其它练习的答案", "info");
case 11:
case "end":
return _context5.stop();
}
}
}, _callee5);
}));
function collectAll(_x4, _x5) {
return _collectAll.apply(this, arguments);
}
return collectAll;
}() // @requestErrorHandler("上传失败")
}, {
key: "upload",
value: function () {
var _upload = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee6() {
var byUser,
response,
returnJson,
_args6 = arguments;
return regenerator_default.a.wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
byUser = _args6.length > 0 && _args6[0] !== undefined ? _args6[0] : false;
_context6.next = 3;
return proxy.post("/upload/", {
body: {
url: location.href,
cookie: document.cookie
}
});
case 3:
response = _context6.sent;
_context6.next = 6;
return response.json();
case 6:
returnJson = _context6.sent;
if (byUser) {
if (returnJson.status) {
Object(actions["a" /* addMessage */])("成功上传练习", "success");
} else {
Object(actions["a" /* addMessage */])("练习上传失败", "error");
Object(actions["a" /* addMessage */])(returnJson.error, "error");
}
}
case 8:
case "end":
return _context6.stop();
}
}
}, _callee6);
}));
function upload() {
return _upload.apply(this, arguments);
}
return upload;
}()
}, {
key: "getCourseCatalog",
value: function () {
var _getCourseCatalog = Object(asyncToGenerator["a" /* default */])( /*#__PURE__*/regenerator_default.a.mark(function _callee7() {
var response, returnJson;
return regenerator_default.a.wrap(function _callee7$(_context7) {
while (1) {
switch (_context7.prev = _context7.next) {
case 0:
_context7.next = 2;
return proxy.post("/catalog/");
case 2:
response = _context7.sent;
_context7.next = 5;
return response.json();
case 5:
returnJson = _context7.sent;
if (!(returnJson.status === false)) {
_context7.next = 10;
break;
}
throw new Error(returnJson.error);
case 10:
Object(actions["a" /* addMessage */])("成功获取了最新的课程目录", "success");
return _context7.abrupt("return", returnJson.data);
case 12:
case "end":
return _context7.stop();
}
}
}, _callee7);
}));
function getCourseCatalog() {
return _getCourseCatalog.apply(this, arguments);
}
return getCourseCatalog;
}()
}]);
return Requests;
}();
__decorate([Object(common["f" /* requestErrorHandler */])("脚本版本查询异常"), Object(common["e" /* perSession */])("LAST_CHECK_DATE"), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise)], requests_Requests, "checkVersion", null);
__decorate([Object(common["f" /* requestErrorHandler */])("答案查询失败", "both"), __metadata("design:type", Function), __metadata("design:paramtypes", [Number]), __metadata("design:returntype", Promise)], requests_Requests, "queryByTaskId", null);
__decorate([Object(common["f" /* requestErrorHandler */])("答案查询失败", "both"), __metadata("design:type", Function), __metadata("design:paramtypes", [String]), __metadata("design:returntype", Promise)], requests_Requests, "queryByQuestionId", null);
__decorate([Object(common["f" /* requestErrorHandler */])("答案查询失败", "both"), __metadata("design:type", Function), __metadata("design:paramtypes", [String]), __metadata("design:returntype", Promise)], requests_Requests, "queryByDomString", null);
__decorate([Object(common["f" /* requestErrorHandler */])("答案收录失败"), __metadata("design:type", Function), __metadata("design:paramtypes", [Number, String]), __metadata("design:returntype", Promise)], requests_Requests, "collectAll", null);
__decorate([Object(common["f" /* requestErrorHandler */])("课程目录获取失败", "both"), Object(common["e" /* perSession */])("HAS_GET_COURSE_CATALOG"), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Promise)], requests_Requests, "getCourseCatalog", null);
/***/ }),
/* 9 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _assertThisInitialized; });
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
/***/ }),
/* 10 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _getPrototypeOf; });
function _getPrototypeOf(o) {
_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
};
return _getPrototypeOf(o);
}
/***/ }),
/* 11 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _classCallCheck; });
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
/***/ }),
/* 12 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _createClass; });
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);
Object.defineProperty(Constructor, "prototype", {
writable: false
});
return Constructor;
}
/***/ }),
/* 13 */
/***/ (function(module, exports) {
module.exports = Vue;
/***/ }),
/* 14 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var isOldIE = function isOldIE() {
var memo;
return function memorize() {
if (typeof memo === 'undefined') {
// Test for IE <= 9 as proposed by Browserhacks
// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
// Tests for existence of standard globals is to allow style-loader
// to operate correctly into non-standard environments
// @see https://github.com/webpack-contrib/style-loader/issues/177
memo = Boolean(window && document && document.all && !window.atob);
}
return memo;
};
}();
var getTarget = function getTarget() {
var memo = {};
return function memorize(target) {
if (typeof memo[target] === 'undefined') {
var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself
if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
try {
// This will throw an exception if access to iframe is blocked
// due to cross-origin restrictions
styleTarget = styleTarget.contentDocument.head;
} catch (e) {
// istanbul ignore next
styleTarget = null;
}
}
memo[target] = styleTarget;
}
return memo[target];
};
}();
var stylesInDom = [];
function getIndexByIdentifier(identifier) {
var result = -1;
for (var i = 0; i < stylesInDom.length; i++) {
if (stylesInDom[i].identifier === identifier) {
result = i;
break;
}
}
return result;
}
function modulesToDom(list, options) {
var idCountMap = {};
var identifiers = [];
for (var i = 0; i < list.length; i++) {
var item = list[i];
var id = options.base ? item[0] + options.base : item[0];
var count = idCountMap[id] || 0;
var identifier = "".concat(id, " ").concat(count);
idCountMap[id] = count + 1;
var index = getIndexByIdentifier(identifier);
var obj = {
css: item[1],
media: item[2],
sourceMap: item[3]
};
if (index !== -1) {
stylesInDom[index].references++;
stylesInDom[index].updater(obj);
} else {
stylesInDom.push({
identifier: identifier,
updater: addStyle(obj, options),
references: 1
});
}
identifiers.push(identifier);
}
return identifiers;
}
function insertStyleElement(options) {
var style = document.createElement('style');
var attributes = options.attributes || {};
if (typeof attributes.nonce === 'undefined') {
var nonce = true ? __webpack_require__.nc : undefined;
if (nonce) {
attributes.nonce = nonce;
}
}
Object.keys(attributes).forEach(function (key) {
style.setAttribute(key, attributes[key]);
});
if (typeof options.insert === 'function') {
options.insert(style);
} else {
var target = getTarget(options.insert || 'head');
if (!target) {
throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
}
target.appendChild(style);
}
return style;
}
function removeStyleElement(style) {
// istanbul ignore if
if (style.parentNode === null) {
return false;
}
style.parentNode.removeChild(style);
}
/* istanbul ignore next */
var replaceText = function replaceText() {
var textStore = [];
return function replace(index, replacement) {
textStore[index] = replacement;
return textStore.filter(Boolean).join('\n');
};
}();
function applyToSingletonTag(style, index, remove, obj) {
var css = remove ? '' : obj.media ? "@media ".concat(obj.media, " {").concat(obj.css, "}") : obj.css; // For old IE
/* istanbul ignore if */
if (style.styleSheet) {
style.styleSheet.cssText = replaceText(index, css);
} else {
var cssNode = document.createTextNode(css);
var childNodes = style.childNodes;
if (childNodes[index]) {
style.removeChild(childNodes[index]);
}
if (childNodes.length) {
style.insertBefore(cssNode, childNodes[index]);
} else {
style.appendChild(cssNode);
}
}
}
function applyToTag(style, options, obj) {
var css = obj.css;
var media = obj.media;
var sourceMap = obj.sourceMap;
if (media) {
style.setAttribute('media', media);
} else {
style.removeAttribute('media');
}
if (sourceMap && typeof btoa !== 'undefined') {
css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
} // For old IE
/* istanbul ignore if */
if (style.styleSheet) {
style.styleSheet.cssText = css;
} else {
while (style.firstChild) {
style.removeChild(style.firstChild);
}
style.appendChild(document.createTextNode(css));
}
}
var singleton = null;
var singletonCounter = 0;
function addStyle(obj, options) {
var style;
var update;
var remove;
if (options.singleton) {
var styleIndex = singletonCounter++;
style = singleton || (singleton = insertStyleElement(options));
update = applyToSingletonTag.bind(null, style, styleIndex, false);
remove = applyToSingletonTag.bind(null, style, styleIndex, true);
} else {
style = insertStyleElement(options);
update = applyToTag.bind(null, style, options);
remove = function remove() {
removeStyleElement(style);
};
}
update(obj);
return function updateStyle(newObj) {
if (newObj) {
if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {
return;
}
update(obj = newObj);
} else {
remove();
}
};
}
module.exports = function (list, options) {
options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of