OneDrive 文件下载直链

获得 OneDrive 文件下载直链的 TamperMonkey 插件

// ==UserScript==
// @name         OneDrive 文件下载直链
// @namespace    http://tampermonkey.net/
// @version      1.2.6
// @description  获得 OneDrive 文件下载直链的 TamperMonkey 插件
// @author       KAAAsS
// @license      MIT
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @match        https://*.sharepoint.com/*
// @match        https://*.sharepoint.cn/*
// @grant        GM_cookie
// @grant        GM_setClipboard
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_xmlhttpRequest
// @require      https://cdn.staticfile.org/vue/2.6.12/vue.min.js
// @require      https://cdn.staticfile.org/element-ui/2.14.1/index.min.js
// @connect      *
// @noframes
// ==/UserScript==

/******/ (() => { // webpackBootstrap
/******/ 	"use strict";
/******/ 	var __webpack_modules__ = ({

/***/ 452:
/***/ ((module, __webpack_exports__, __webpack_require__) => {

/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(645);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
// Imports

var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
// Module
___CSS_LOADER_EXPORT___.push([module.id, "*{padding:0;margin:0}body{font-size:14px}.app .el-tag{height:20px;line-height:20px;border-radius:10px;padding:0 6px}.app-container{background-color:#ffffff;padding:10px}\n", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);


/***/ }),

/***/ 857:
/***/ ((module, __webpack_exports__, __webpack_require__) => {

/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(645);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
// Imports

var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
// Module
___CSS_LOADER_EXPORT___.push([module.id, "*[data-v-5ef48958]{margin:0;padding:0}\n", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);


/***/ }),

/***/ 75:
/***/ ((module, __webpack_exports__, __webpack_require__) => {

/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(645);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
// Imports

var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
// Module
___CSS_LOADER_EXPORT___.push([module.id, ".header[data-v-61dd7a3d]{display:flex;align-items:center;padding:10px}.header i[data-v-61dd7a3d]{font-size:20px}.header h3[data-v-61dd7a3d]{margin:0 10px;font-size:20px}\n", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);


/***/ }),

/***/ 205:
/***/ ((module, __webpack_exports__, __webpack_require__) => {

/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(645);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
// Imports

var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
// Module
___CSS_LOADER_EXPORT___.push([module.id, ".body[data-v-593a5798]{position:fixed;z-index:1999;left:0;top:0;height:100%;width:420px;background-color:#fff;transition:all 0.5s;box-shadow:2px 3px 3px 0 rgba(0,0,0,0.1)}.btn-toggle[data-v-593a5798]{transition:all 0.5s;border-radius:30px 0 0 30px;width:30px;height:60px;background-color:#0078d4;cursor:pointer;position:absolute;right:0;top:50%;transform:translateY(-50%);text-align:center;z-index:2999}.btn-toggle svg[data-v-593a5798]{height:20px;width:20px;position:absolute;right:5px;top:20px;transition:all 0.5s}.body-hide[data-v-593a5798]{left:-420px;box-shadow:2px 3px 3px 0 rgba(0,0,0,0)}.body-hide .btn-toggle[data-v-593a5798]{border-radius:0 30px 30px 0;right:-30px}.body-hide .btn-toggle svg[data-v-593a5798]{transform:rotate(180deg)}\n", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);


/***/ }),

/***/ 296:
/***/ ((module, __webpack_exports__, __webpack_require__) => {

/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Z": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(645);
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
// Imports

var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
// Module
___CSS_LOADER_EXPORT___.push([module.id, "\n.app-container[data-v-62c87fde] {\r\n  height: 100%;\n}\n.el-scrollbar[data-v-62c87fde] {\r\n  height: 100%;\n}\n.box .el-scrollbar__wrap[data-v-62c87fde] {\r\n  overflow: scroll;\r\n  width: 110%;\r\n  height: 120%;\n}\n.blank[data-v-62c87fde] {\r\n  height: 100px;\n}\n.sub-container[data-v-62c87fde] {\r\n  margin-top: 20px;\n}\n.sub-title[data-v-62c87fde] {\r\n  margin-bottom: 15px;\n}\n.btn-group-files[data-v-62c87fde] {\r\n  margin-top: 20px;\r\n  margin-bottom: 10px;\n}\r\n", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);


/***/ }),

/***/ 645:
/***/ ((module) => {



/*
  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 (cssWithMappingToString) {
  var list = []; // return the list of modules as css string

  list.toString = function toString() {
    return this.map(function (item) {
      var content = cssWithMappingToString(item);

      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;
};

/***/ }),

/***/ 379:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {



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 : 0;

    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 <style>
  // tags it will allow on a page

  if (!options.singleton && typeof options.singleton !== 'boolean') {
    options.singleton = isOldIE();
  }

  list = list || [];
  var lastIdentifiers = modulesToDom(list, options);
  return function update(newList) {
    newList = newList || [];

    if (Object.prototype.toString.call(newList) !== '[object Array]') {
      return;
    }

    for (var i = 0; i < lastIdentifiers.length; i++) {
      var identifier = lastIdentifiers[i];
      var index = getIndexByIdentifier(identifier);
      stylesInDom[index].references--;
    }

    var newLastIdentifiers = modulesToDom(newList, options);

    for (var _i = 0; _i < lastIdentifiers.length; _i++) {
      var _identifier = lastIdentifiers[_i];

      var _index = getIndexByIdentifier(_identifier);

      if (stylesInDom[_index].references === 0) {
        stylesInDom[_index].updater();

        stylesInDom.splice(_index, 1);
      }
    }

    lastIdentifiers = newLastIdentifiers;
  };
};

/***/ }),

/***/ 223:
/***/ ((module) => {

module.exports = element-ui;

/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// The module cache
/******/ 	var __webpack_module_cache__ = {};
/******/ 	
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/ 		// Check if module is in cache
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
/******/ 		if (cachedModule !== undefined) {
/******/ 			return cachedModule.exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = __webpack_module_cache__[moduleId] = {
/******/ 			id: moduleId,
/******/ 			// no module.loaded needed
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/************************************************************************/
/******/ 	/* webpack/runtime/compat get default export */
/******/ 	(() => {
/******/ 		// getDefaultExport function for compatibility with non-harmony modules
/******/ 		__webpack_require__.n = (module) => {
/******/ 			var getter = module && module.__esModule ?
/******/ 				() => (module['default']) :
/******/ 				() => (module);
/******/ 			__webpack_require__.d(getter, { a: getter });
/******/ 			return getter;
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/define property getters */
/******/ 	(() => {
/******/ 		// define getter functions for harmony exports
/******/ 		__webpack_require__.d = (exports, definition) => {
/******/ 			for(var key in definition) {
/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ 				}
/******/ 			}
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
/******/ 	(() => {
/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ 	})();
/******/ 	
/************************************************************************/
var __webpack_exports__ = {};
// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.
(() => {

;// CONCATENATED MODULE: external "Vue"
const external_Vue_namespaceObject = Vue;
var external_Vue_default = /*#__PURE__*/__webpack_require__.n(external_Vue_namespaceObject);
;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/app.vue?vue&type=template&id=5ef48958&scoped=true&
var render = function() {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c("div", { staticClass: "app" }, [_c("PluginDrawer")], 1)
}
var staticRenderFns = []
render._withStripped = true


;// CONCATENATED MODULE: ./src/app.vue?vue&type=template&id=5ef48958&scoped=true&

;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/PluginDrawer.vue?vue&type=template&id=593a5798&scoped=true&
var PluginDrawervue_type_template_id_593a5798_scoped_true_render = function() {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c(
    "div",
    [
      _c(
        "div",
        { staticClass: "body", class: { "body-hide": _vm.isHide } },
        [
          _c("Header"),
          _vm._v(" "),
          _c("PluginPanel", {
            ref: "panel",
            on: { onOpenAriaDialog: _vm.handleOpenAriaDialog }
          }),
          _vm._v(" "),
          _c(
            "div",
            { staticClass: "btn-toggle", on: { click: _vm.hide } },
            [_c("ArrowIcon")],
            1
          )
        ],
        1
      ),
      _vm._v(" "),
      _c("AriaConfigDialog", { ref: "ariaDialog" })
    ],
    1
  )
}
var PluginDrawervue_type_template_id_593a5798_scoped_true_staticRenderFns = []
PluginDrawervue_type_template_id_593a5798_scoped_true_render._withStripped = true


;// CONCATENATED MODULE: ./src/components/PluginDrawer.vue?vue&type=template&id=593a5798&scoped=true&

;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Header.vue?vue&type=template&id=61dd7a3d&scoped=true&
var Headervue_type_template_id_61dd7a3d_scoped_true_render = function() {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c(
    "div",
    { staticClass: "header" },
    [
      _c("i", { staticClass: "el-icon-link" }),
      _vm._v(" "),
      _c("h3", [_vm._v(_vm._s(_vm.AppName))]),
      _vm._v(" "),
      _c("el-tag", [_vm._v("v" + _vm._s(_vm.AppVersion))])
    ],
    1
  )
}
var Headervue_type_template_id_61dd7a3d_scoped_true_staticRenderFns = []
Headervue_type_template_id_61dd7a3d_scoped_true_render._withStripped = true


;// CONCATENATED MODULE: ./src/components/Header.vue?vue&type=template&id=61dd7a3d&scoped=true&

;// CONCATENATED MODULE: ./src/config/index.js
const AppName = "OneDrive 文件下载直链"
const AppVersion = "1.2.6"
const AppEnv = "production"
const isDev = AppEnv === 'development'


;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Header.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//



/* harmony default export */ const Headervue_type_script_lang_js_ = ({
  name: 'Header',
  data() {
    return {
      AppName: AppName,
      AppVersion: AppVersion,
    }
  }
});

;// CONCATENATED MODULE: ./src/components/Header.vue?vue&type=script&lang=js&
 /* harmony default export */ const components_Headervue_type_script_lang_js_ = (Headervue_type_script_lang_js_); 
// EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js
var injectStylesIntoStyleTag = __webpack_require__(379);
var injectStylesIntoStyleTag_default = /*#__PURE__*/__webpack_require__.n(injectStylesIntoStyleTag);
// EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Header.vue?vue&type=style&index=0&id=61dd7a3d&lang=scss&scoped=true&
var Headervue_type_style_index_0_id_61dd7a3d_lang_scss_scoped_true_ = __webpack_require__(75);
;// CONCATENATED MODULE: ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/Header.vue?vue&type=style&index=0&id=61dd7a3d&lang=scss&scoped=true&

            

var options = {};

options.insert = "head";
options.singleton = false;

var update = injectStylesIntoStyleTag_default()(Headervue_type_style_index_0_id_61dd7a3d_lang_scss_scoped_true_/* default */.Z, options);



/* harmony default export */ const components_Headervue_type_style_index_0_id_61dd7a3d_lang_scss_scoped_true_ = (Headervue_type_style_index_0_id_61dd7a3d_lang_scss_scoped_true_/* default.locals */.Z.locals || {});
;// CONCATENATED MODULE: ./src/components/Header.vue?vue&type=style&index=0&id=61dd7a3d&lang=scss&scoped=true&

;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
/* globals __VUE_SSR_CONTEXT__ */

// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
// This module is a runtime utility for cleaner component module output and will
// be included in the final webpack user bundle.

function normalizeComponent (
  scriptExports,
  render,
  staticRenderFns,
  functionalTemplate,
  injectStyles,
  scopeId,
  moduleIdentifier, /* server only */
  shadowMode /* vue-cli only */
) {
  // Vue.extend constructor export interop
  var options = typeof scriptExports === 'function'
    ? scriptExports.options
    : scriptExports

  // render functions
  if (render) {
    options.render = render
    options.staticRenderFns = staticRenderFns
    options._compiled = true
  }

  // functional template
  if (functionalTemplate) {
    options.functional = true
  }

  // scopedId
  if (scopeId) {
    options._scopeId = 'data-v-' + scopeId
  }

  var hook
  if (moduleIdentifier) { // server build
    hook = function (context) {
      // 2.3 injection
      context =
        context || // cached call
        (this.$vnode && this.$vnode.ssrContext) || // stateful
        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
      // 2.2 with runInNewContext: true
      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
        context = __VUE_SSR_CONTEXT__
      }
      // inject component styles
      if (injectStyles) {
        injectStyles.call(this, context)
      }
      // register component module identifier for async chunk inferrence
      if (context && context._registeredComponents) {
        context._registeredComponents.add(moduleIdentifier)
      }
    }
    // used by ssr in case component is cached and beforeCreate
    // never gets called
    options._ssrRegister = hook
  } else if (injectStyles) {
    hook = shadowMode
      ? function () {
        injectStyles.call(
          this,
          (options.functional ? this.parent : this).$root.$options.shadowRoot
        )
      }
      : injectStyles
  }

  if (hook) {
    if (options.functional) {
      // for template-only hot-reload because in that case the render fn doesn't
      // go through the normalizer
      options._injectStyles = hook
      // register for functional component in vue file
      var originalRender = options.render
      options.render = function renderWithStyleInjection (h, context) {
        hook.call(context)
        return originalRender(h, context)
      }
    } else {
      // inject component registration as beforeCreate hook
      var existing = options.beforeCreate
      options.beforeCreate = existing
        ? [].concat(existing, hook)
        : [hook]
    }
  }

  return {
    exports: scriptExports,
    options: options
  }
}

;// CONCATENATED MODULE: ./src/components/Header.vue



;


/* normalize component */

var component = normalizeComponent(
  components_Headervue_type_script_lang_js_,
  Headervue_type_template_id_61dd7a3d_scoped_true_render,
  Headervue_type_template_id_61dd7a3d_scoped_true_staticRenderFns,
  false,
  null,
  "61dd7a3d",
  null
  
)

/* hot reload */
if (false) { var api; }
component.options.__file = "src/components/Header.vue"
/* harmony default export */ const Header = (component.exports);
;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/icons/ArrowIcon.vue?vue&type=template&id=41f57a04&scoped=true&
var ArrowIconvue_type_template_id_41f57a04_scoped_true_render = function() {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c(
    "svg",
    {
      staticClass: "icon",
      attrs: {
        t: "1589962875590",
        viewBox: "0 0 1024 1024",
        version: "1.1",
        xmlns: "http://www.w3.org/2000/svg",
        "p-id": "2601"
      }
    },
    [
      _c("path", {
        attrs: {
          d:
            "M730.020653 1018.946715l91.277028-89.978692a16.760351 16.760351 0 0 0 5.114661-11.803064 15.343983 15.343983 0 0 0-5.114661-11.803064l-400.123871-393.435467L821.691117 118.254899a17.075099 17.075099 0 0 0 0-23.606129L730.020653 4.670079a17.232473 17.232473 0 0 0-23.999564 0L202.030255 500.08402a16.445603 16.445603 0 0 0-4.721226 11.803064 15.265296 15.265296 0 0 0 5.114661 11.803064l503.597399 495.413941a17.153786 17.153786 0 0 0 23.999564 0z m0 0",
          fill: "#FFFFFF",
          "p-id": "2602"
        }
      })
    ]
  )
}
var ArrowIconvue_type_template_id_41f57a04_scoped_true_staticRenderFns = []
ArrowIconvue_type_template_id_41f57a04_scoped_true_render._withStripped = true


;// CONCATENATED MODULE: ./src/icons/ArrowIcon.vue?vue&type=template&id=41f57a04&scoped=true&

;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/icons/ArrowIcon.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

/* harmony default export */ const ArrowIconvue_type_script_lang_js_ = ({
  name: "ArrowIcon"
});

;// CONCATENATED MODULE: ./src/icons/ArrowIcon.vue?vue&type=script&lang=js&
 /* harmony default export */ const icons_ArrowIconvue_type_script_lang_js_ = (ArrowIconvue_type_script_lang_js_); 
;// CONCATENATED MODULE: ./src/icons/ArrowIcon.vue





/* normalize component */
;
var ArrowIcon_component = normalizeComponent(
  icons_ArrowIconvue_type_script_lang_js_,
  ArrowIconvue_type_template_id_41f57a04_scoped_true_render,
  ArrowIconvue_type_template_id_41f57a04_scoped_true_staticRenderFns,
  false,
  null,
  "41f57a04",
  null
  
)

/* hot reload */
if (false) { var ArrowIcon_api; }
ArrowIcon_component.options.__file = "src/icons/ArrowIcon.vue"
/* harmony default export */ const ArrowIcon = (ArrowIcon_component.exports);
;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/PluginPanel.vue?vue&type=template&id=62c87fde&scoped=true&
var PluginPanelvue_type_template_id_62c87fde_scoped_true_render = function() {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c(
    "div",
    { staticClass: "app-container" },
    [
      _c("el-scrollbar", [
        _c(
          "div",
          { staticClass: "sub-container" },
          [
            _c(
              "div",
              { staticClass: "btn-group-files" },
              [
                this.cookie !== ""
                  ? _c(
                      "el-button",
                      {
                        attrs: { type: "primary", size: "mini" },
                        on: {
                          click: function($event) {
                            return _vm.handleIdm()
                          }
                        }
                      },
                      [_vm._v("IDM 下载\n        ")]
                    )
                  : _vm._e(),
                _vm._v(" "),
                this.cookie !== ""
                  ? _c(
                      "el-button",
                      {
                        attrs: { type: "primary", size: "mini" },
                        on: {
                          click: function($event) {
                            return _vm.handleAria()
                          }
                        }
                      },
                      [_vm._v("Aria 下载\n        ")]
                    )
                  : _vm._e(),
                _vm._v(" "),
                _c(
                  "el-button",
                  {
                    attrs: { size: "mini" },
                    on: {
                      click: function($event) {
                        return _vm.handleCopyFile()
                      }
                    }
                  },
                  [_vm._v("复制链接")]
                ),
                _vm._v(" "),
                _c(
                  "el-tooltip",
                  {
                    staticClass: "item",
                    attrs: {
                      effect: "dark",
                      content: "不太好用,建议优先使用 IDM 或 Aria 推送",
                      placement: "top-start"
                    }
                  },
                  [
                    _c(
                      "el-button",
                      {
                        attrs: { size: "mini" },
                        on: {
                          click: function($event) {
                            return _vm.handleBatchDownload()
                          }
                        }
                      },
                      [_vm._v("批量下载")]
                    )
                  ],
                  1
                )
              ],
              1
            ),
            _vm._v(" "),
            _c(
              "el-table",
              {
                ref: "filesTable",
                staticStyle: { width: "100%" },
                attrs: { data: _vm.fileList, "tooltip-effect": "dark" },
                on: { "selection-change": _vm.handleSelectionChange }
              },
              [
                _c("el-table-column", {
                  attrs: { type: "selection", width: "55" }
                }),
                _vm._v(" "),
                _c("el-table-column", {
                  attrs: { prop: "filename", label: "文件名" }
                }),
                _vm._v(" "),
                _c("el-table-column", {
                  attrs: { label: "操作" },
                  scopedSlots: _vm._u([
                    {
                      key: "default",
                      fn: function(scope) {
                        return [
                          _c(
                            "el-button",
                            {
                              attrs: { type: "primary", size: "mini" },
                              on: {
                                click: function($event) {
                                  return _vm.handleDownload(
                                    scope.row.directLink
                                  )
                                }
                              }
                            },
                            [_vm._v("下载\n            ")]
                          ),
                          _vm._v(" "),
                          _c(
                            "el-button",
                            {
                              attrs: { size: "mini" },
                              on: {
                                click: function($event) {
                                  return _vm.handleCopyLink(
                                    scope.row.directLink
                                  )
                                }
                              }
                            },
                            [_vm._v("复制链接\n            ")]
                          )
                        ]
                      }
                    }
                  ])
                })
              ],
              1
            )
          ],
          1
        ),
        _vm._v(" "),
        _c("div", { staticClass: "sub-container" }, [
          _c("h3", { staticClass: "sub-title" }, [_vm._v("Cookie 信息")]),
          _vm._v(" "),
          this.cookie === ""
            ? _c(
                "div",
                { staticClass: "not-tampermonkey-beta" },
                [
                  _c("el-alert", {
                    attrs: {
                      title: "无法获得 Cookie 信息",
                      type: "info",
                      description:
                        "由于您没有使用 Tampermonkey Beta,因此无法自动获得 Cookie。请在“开发者选项-Application-Cookie”中,\n          复制 FedAuth 对应的值。然后在 AriaNG 的“自定义请求头”填写:Cookie: FedAuth=复制的值",
                      "show-icon": "",
                      closable: false
                    }
                  })
                ],
                1
              )
            : _vm._e(),
          _vm._v(" "),
          this.cookie !== ""
            ? _c(
                "div",
                { staticClass: "tampermonkey-beta" },
                [
                  _c("el-alert", {
                    staticStyle: { "margin-bottom": "15px" },
                    attrs: {
                      title: "Cookie 信息",
                      type: "success",
                      description: "下载时在 AriaNG 的“自定义请求头”填写",
                      "show-icon": "",
                      closable: false
                    }
                  }),
                  _vm._v(" "),
                  _c("el-input", {
                    attrs: { type: "textarea", rows: 3, placeholder: "Cookie" },
                    model: {
                      value: _vm.cookie,
                      callback: function($$v) {
                        _vm.cookie = $$v
                      },
                      expression: "cookie"
                    }
                  }),
                  _vm._v(" "),
                  _c(
                    "div",
                    { staticClass: "btn-group-files" },
                    [
                      _c(
                        "el-button",
                        {
                          attrs: { type: "primary" },
                          on: {
                            click: function($event) {
                              return _vm.handleCopyCookie()
                            }
                          }
                        },
                        [_vm._v("复制")]
                      )
                    ],
                    1
                  )
                ],
                1
              )
            : _vm._e()
        ]),
        _vm._v(" "),
        _c("div", { staticClass: "sub-container" }, [
          _c("h3", { staticClass: "sub-title" }, [_vm._v("设置")]),
          _vm._v(" "),
          _c(
            "div",
            { staticClass: "btn-group-files" },
            [
              _c(
                "el-button",
                {
                  on: {
                    click: function($event) {
                      return _vm.handleConfigAria()
                    }
                  }
                },
                [_vm._v("配置 Aria RPC")]
              )
            ],
            1
          )
        ]),
        _vm._v(" "),
        _c("div", { staticClass: "blank" })
      ])
    ],
    1
  )
}
var PluginPanelvue_type_template_id_62c87fde_scoped_true_staticRenderFns = []
PluginPanelvue_type_template_id_62c87fde_scoped_true_render._withStripped = true


;// CONCATENATED MODULE: ./src/components/PluginPanel.vue?vue&type=template&id=62c87fde&scoped=true&

;// CONCATENATED MODULE: ./src/logic/mock.js
/**
 * 获得文件列表
 * @param allowCache 是否允许缓存
 * @returns {Promise<(boolean|*[])[]|boolean[]>} [是否新数据, 数据]
 */
const getFileList = async (allowCache) => {
    let ret = [];
    for (let i = 0; i < 20; i++) {
        ret.push({
            filename: '文件名1.rar',
            directLink: 'https://aaaaaaaaaaaaaaaaaaaa.bbb/ccccc.ddddd?eeeeeeeeeee'
        })
    }
    return [true, ret];
};

/**
 * 获得 Cookie Mock
 * @returns {Promise<unknown>}
 */
const getCookie = async () => {
    return "Cookie: FedAuth=";
};

/**
 * 复制到剪切板
 * @returns {Promise<boolean>}
 */
const setClipboard = async () => {
    return true;
}

/**
 * 取得 Aria 配置
 * @returns {{downloadPath: string, apiBase: string, token: string}|null}
 */
const getAriaConfig = () => {
    if (!window._aria_config) {
        return null;
    }
    return window._aria_config;
};

/**
 * 设置 Aria 配置
 * @param conf
 */
const setAriaConfig = (conf) => {
    console.log('设置新的 Aria 配置:', JSON.stringify(conf));
    window._aria_config = conf;
};

/* harmony default export */ const mock = ({
    getFileList,
    getCookie,
    setClipboard,
    getAriaConfig,
    setAriaConfig
});
;// CONCATENATED MODULE: ./src/logic/actual.js
let cachedUrl = null,
    cachedFileList = null;

/**
 * 获得文件列表
 * @param allowCache 是否允许缓存
 * @returns {Promise<(boolean|*[])[]|boolean[]>} [是否新数据, 数据]
 */
const actual_getFileList = async (allowCache) => {
    let fileList = [];

    // 解析路径参数
    let url = document.location;
    let host = url.host;
    let param = new URLSearchParams(url.search);
    let loc = param.get('id');

    // 检查 Cache
    if (allowCache) {
        if (url.search === cachedUrl) {
            console.log("从缓存中解析:", cachedUrl);
            return [false, cachedFileList];
        }
    }

    // 请求文件列表
    let response = await fetch(`https://${host}${loc}`, {
        method: 'PROPFIND',
        credentials: 'include'
    });
    if (!response.ok) {
        // 失败
        if (response.status !== 404) {
            throw new Error(`无法解析OneDrive文件列表: ${response.status}`);
        }
        // 获取单文件信息
        let directLink = encodeURI(`https://${host}${loc}`);
        let parts = loc.split('/');
        let filename = parts[parts.length - 1];
        // 单个文件
        fileList.push({filename, directLink});
    } else {
        // 成功:多个文件
        // 解析返回
        let xmlRaw = await response.text();
        let parser = new DOMParser();
        let xmlDoc = parser.parseFromString(xmlRaw, "text/xml");
        let fileEls = xmlDoc.getElementsByTagName('D:response');
        for (const el of fileEls) {
            let isFolderEl = el.getElementsByTagName('D:isFolder');
            // 当前不支持递归查找,所以跳过文件夹
            if (isFolderEl.length >= 1 && isFolderEl[0].textContent === 't') {
                continue;
            }
            // 获得文件 URL
            let hrefEl = el.getElementsByTagName('D:href');
            let directLink = "";
            if (hrefEl.length >= 1) {
                // Sharepoint 返回中包含 Unicode 字符,需要转义
                directLink = encodeURI(hrefEl[0].textContent);
                directLink = directLink.replaceAll('%25', '%');
            }
            // 获得文件名
            let nameEl = el.getElementsByTagName('D:displayname');
            let filename = "";
            if (nameEl.length >= 1) {
                filename = nameEl[0].textContent;
            }
            // 拼接结果
            fileList.push({filename, directLink});
        }
    }

    // 缓存
    cachedUrl = url.search;
    cachedFileList = fileList;
    return [true, fileList];
};

/**
 * 获得 Cookie 信息
 * @returns {Promise<unknown>}
 */
const getCookieNative = (param) => {
    return new Promise(function (resolve, reject) {
        GM_cookie.list(param, (cookie, error) => {
            if (error) {
                reject(error);
                return;
            }
            console.log(cookie);
            if (cookie.length > 0) {
                resolve(cookie[0].value);
            } else {
                resolve(null);
            }
        });
    });
};

/**
 * 获得 Cookie
 * @returns {Promise<unknown>}
 */
const actual_getCookie = async () => {
    let host = document.location.host;
    const cookieKeys = [
        {name: 'FedAuth', domain: host}, // 防止多站点之间 Cookie 混淆
        {name: 'CCSInfo', domain: '.sharepoint.com'}, // 海外版
        {name: 'rtFa', domain: '.sharepoint.com'},
        {name: 'CCSInfo', domain: '.sharepoint.cn'}, // 世纪互联
        {name: 'rtFa', domain: '.sharepoint.cn'},
    ];
    let cookies = await Promise.all(cookieKeys.map(getCookieNative));
    let cookie = 'cookie: ';
    cookieKeys.forEach((param, idx) => {
        let value = cookies[idx];
        if (value) {
            cookie += `${param.name}=${value}; `;
        }
    });
    console.log("获得 Cookie:", cookies);
    return cookie;
};

/**
 * 复制到剪切板
 * @returns {Promise<boolean>}
 */
const actual_setClipboard = (val) => {
    return new Promise(function (resolve) {
        GM_setClipboard(val, "text");
        resolve(true);
    });
}

const KEY_ARIA_CONF = "aria_conf";

/**
 * 取得 Aria 配置
 * @returns {{downloadPath: string, apiBase: string, token: string}}
 */
const actual_getAriaConfig = () => {
    let json = GM_getValue(KEY_ARIA_CONF, "null");
    return JSON.parse(json);
};

/**
 * 设置 Aria 配置
 * @param conf
 */
const actual_setAriaConfig = (conf) => {
    GM_setValue(KEY_ARIA_CONF, JSON.stringify(conf));
};

/* harmony default export */ const actual = ({
    getFileList: actual_getFileList,
    getCookie: actual_getCookie,
    setClipboard: actual_setClipboard,
    getAriaConfig: actual_getAriaConfig,
    setAriaConfig: actual_setAriaConfig
});

;// CONCATENATED MODULE: ./src/logic/index.js




let selected = actual;
// 开发环境启用 Mock
if (isDev) {
    selected = mock;
}

// 函数
const logic_getFileList = selected.getFileList;
const logic_getCookie = selected.getCookie;
const logic_setClipboard = selected.setClipboard;

/**
 * 构造 IDM 下载列表
 * @param fileLists
 * @param cookie
 * @returns {string}
 */
const buildEf2File = (fileLists, cookie) => {
    return fileLists
        .map(link => `<\r\n${link}\r\n${cookie}\r\n>`)
        .join("\r\n") + "\r\n\r\n";
};

const logic_getAriaConfig = selected.getAriaConfig;
const logic_setAriaConfig = selected.setAriaConfig;

/**
 * 发送 Aria RPC 下载请求
 * @param fileLists
 * @param cookie
 */
const sendAriaRequest = async (fileLists, cookie) => {
    const conf = logic_getAriaConfig();
    if (!conf) {
        return "no_config";
    }
    // 构造 RPC Payload
    let params = {header: [cookie]};
    if (conf.downloadPath.length > 0) {
        params.dir = conf.downloadPath;
    }
    // 发送
    const downloadSingle = async (link) => {
        let payload = {
            jsonrpc: "2.0",
            method: "aria2.addUri",
            id: "sharepoint-list-plugin",
            params: [
                `token:${conf.token}`,
                [link],
                params
            ]
        };
        console.log("发送 Aria RPC:", conf.apiBase, JSON.stringify(payload));
        if (isDev) {
            let headers = new Headers();
            headers.append('Content-Type', 'application/json;charset=UTF-8');
            let response = await fetch(conf.apiBase, {
                method: 'POST',
                body: JSON.stringify(payload),
                headers
            });
            if (!response.ok) {
                throw new Error(response.statusText);
            }
            return await response.json();
        } else {
            // 由于 Mixed-Content,所以只能用 GM_xmlhttpRequest 请求
            return await new Promise(function (resolve, reject) {
                GM_xmlhttpRequest({
                    method: 'POST',
                    responseType: 'json',
                    url: conf.apiBase,
                    data: JSON.stringify(payload),
                    timeout: 3000,
                    onload(res) {
                        if (res.status === 200) {
                            if (res.response.result) {
                                // 正常返回
                                resolve(res.response);
                            } else {
                                // 其它错误
                                reject(`下载错误!${res.response.message}`);
                            }
                        } else {
                            reject(`创建任务失败!${res.responseText}`);
                            console.error("创建任务失败!", res);
                        }
                    },
                    ontimeout(res) {
                        reject("连接超时!");
                        console.error("连接超时!", res);
                    },
                    onerror(res) {
                        reject("无法发送 Aria 下载请求!请尝试添加服务器路径到用户域名白名单。");
                        console.error("无法发送 Aria 下载请求!", res);
                    }
                });
            });
        }
    };
    return Promise.all(fileLists.map(downloadSingle));
};

;// CONCATENATED MODULE: ./src/utils/index.js
/**
 * 加载样式
 * @param {String} url
 */
const loadStyle = (url) => {
    const head = document.getElementsByTagName('head')[0];
    const link = document.createElement('link');
    link.rel = 'stylesheet';
    link.type = 'text/css';
    link.href = url;
    link.media = 'all';
    head.appendChild(link);
}

/**
 * 触发文本文件下载
 * @param content
 * @param filename
 */
const downloadClob = (content, filename) => {
    let elDownload = document.createElement('a');
    elDownload.download = filename;
    elDownload.style.display = 'none';
    let blob = new Blob([content]);
    elDownload.href = URL.createObjectURL(blob);
    document.body.appendChild(elDownload);
    elDownload.click();
    document.body.removeChild(elDownload);
};
;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AriaConfigDialog.vue?vue&type=template&id=93e08cfa&scoped=true&
var AriaConfigDialogvue_type_template_id_93e08cfa_scoped_true_render = function() {
  var _vm = this
  var _h = _vm.$createElement
  var _c = _vm._self._c || _h
  return _c(
    "el-dialog",
    {
      attrs: { title: "配置 Aria RPC", visible: _vm.visible },
      on: {
        "update:visible": function($event) {
          _vm.visible = $event
        }
      }
    },
    [
      _c(
        "el-form",
        { attrs: { model: _vm.form } },
        [
          _c(
            "el-form-item",
            { attrs: { label: "Aria RPC 地址" } },
            [
              _c("el-input", {
                attrs: { autocomplete: "off" },
                model: {
                  value: _vm.form.apiBase,
                  callback: function($$v) {
                    _vm.$set(_vm.form, "apiBase", $$v)
                  },
                  expression: "form.apiBase"
                }
              })
            ],
            1
          ),
          _vm._v(" "),
          _c(
            "el-form-item",
            { attrs: { label: "Aria RPC Token" } },
            [
              _c("el-input", {
                attrs: { autocomplete: "off" },
                model: {
                  value: _vm.form.token,
                  callback: function($$v) {
                    _vm.$set(_vm.form, "token", $$v)
                  },
                  expression: "form.token"
                }
              })
            ],
            1
          ),
          _vm._v(" "),
          _c(
            "el-form-item",
            { attrs: { label: "下载位置" } },
            [
              _c("el-input", {
                attrs: { autocomplete: "off" },
                model: {
                  value: _vm.form.downloadPath,
                  callback: function($$v) {
                    _vm.$set(_vm.form, "downloadPath", $$v)
                  },
                  expression: "form.downloadPath"
                }
              })
            ],
            1
          )
        ],
        1
      ),
      _vm._v(" "),
      _c(
        "div",
        {
          staticClass: "dialog-footer",
          attrs: { slot: "footer" },
          slot: "footer"
        },
        [
          _c(
            "el-button",
            {
              on: {
                click: function($event) {
                  _vm.visible = false
                }
              }
            },
            [_vm._v("取 消")]
          ),
          _vm._v(" "),
          _c(
            "el-button",
            {
              attrs: { type: "primary" },
              on: {
                click: function($event) {
                  return _vm.handleConfirm()
                }
              }
            },
            [_vm._v("确 定")]
          )
        ],
        1
      )
    ],
    1
  )
}
var AriaConfigDialogvue_type_template_id_93e08cfa_scoped_true_staticRenderFns = []
AriaConfigDialogvue_type_template_id_93e08cfa_scoped_true_render._withStripped = true


;// CONCATENATED MODULE: ./src/components/AriaConfigDialog.vue?vue&type=template&id=93e08cfa&scoped=true&

;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/AriaConfigDialog.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//



/* harmony default export */ const AriaConfigDialogvue_type_script_lang_js_ = ({
  name: "AriaConfigDialog",
  data() {
    return {
      visible: false,
      form: {
        apiBase: '',
        token: '',
        downloadPath: '',
      },
    };
  },
  mounted() {
    let conf = logic_getAriaConfig();
    if (conf != null) {
      this.form = conf;
    }
  },
  methods: {
    open() {
      this.visible = true;
    },
    handleConfirm() {
      // 关闭对话框
      this.visible = false;
      logic_setAriaConfig(this.form);
      this.$message.success("设置成功!");
    }
  }
});

;// CONCATENATED MODULE: ./src/components/AriaConfigDialog.vue?vue&type=script&lang=js&
 /* harmony default export */ const components_AriaConfigDialogvue_type_script_lang_js_ = (AriaConfigDialogvue_type_script_lang_js_); 
;// CONCATENATED MODULE: ./src/components/AriaConfigDialog.vue





/* normalize component */
;
var AriaConfigDialog_component = normalizeComponent(
  components_AriaConfigDialogvue_type_script_lang_js_,
  AriaConfigDialogvue_type_template_id_93e08cfa_scoped_true_render,
  AriaConfigDialogvue_type_template_id_93e08cfa_scoped_true_staticRenderFns,
  false,
  null,
  "93e08cfa",
  null
  
)

/* hot reload */
if (false) { var AriaConfigDialog_api; }
AriaConfigDialog_component.options.__file = "src/components/AriaConfigDialog.vue"
/* harmony default export */ const AriaConfigDialog = (AriaConfigDialog_component.exports);
;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/PluginPanel.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//





/* harmony default export */ const PluginPanelvue_type_script_lang_js_ = ({
  name: "PluginPanel",
  components: {AriaConfigDialog: AriaConfigDialog},
  data() {
    return {
      fileList: null,
      cookie: null,
      multipleSelection: [],
    }
  },

  mounted() {
    this.loadFileList(true);
    this.loadCookie();
  },

  methods: {
    loadFileList(silent) {
      logic_getFileList(true).then(data => {
        const [isNew, fileList] = data;
        this.fileList = fileList;
        // 全选
        if (isNew) {
          this.$nextTick(() => {
            this.$refs.filesTable.clearSelection();
            this.$refs.filesTable.toggleAllSelection();
          });
        }
      }).catch(e => {
        console.log("无法读取文件列表", e);
        if (!silent) {
          this.$message.error(`读取文件列表失败!${e}`);
        }
      })
    },
    loadCookie() {
      logic_getCookie().then(data => {
        this.cookie = data;
      }).catch(e => {
        console.log("无法读取 Cookie", e);
        this.cookie = "";
      })
    },
    getSelectedLinks() {
      return this.multipleSelection.map(obj => obj.directLink);
    },
    handleSelectionChange(val) {
      this.multipleSelection = val;
    },
    handleCopyFile() {
      let links = this.getSelectedLinks();
      if (links.length < 1) {
        this.$message.error("请选择要下载的文件!");
        return;
      }
      logic_setClipboard(links.join("\n")).then(() => {
        this.$message.success("复制成功!");
      });
    },
    handleCopyCookie() {
      logic_setClipboard(this.cookie).then(() => {
        this.$message.success("复制成功!");
      });
    },
    handleDownload(url) {
      window.open(url, "_blank");
    },
    handleCopyLink(url) {
      logic_setClipboard(url).then(() => {
        this.$message.success("复制成功!");
      });
    },
    handleBatchDownload() {
      let links = this.getSelectedLinks();
      if (links.length < 1) {
        this.$message.error("请选择要下载的文件!");
        return;
      }
      links.forEach(link => window.open(link, "_blank"));
    },
    handleIdm() {
      let ef2 = buildEf2File(this.getSelectedLinks(), this.cookie);
      downloadClob(ef2, 'download.ef2');
      this.$message.success("成功!请在 IDM 中导入此文件下载");
    },
    handleAria() {
      sendAriaRequest(this.getSelectedLinks(), this.cookie)
          .then(ret => {
            // 检查是否成功
            if (ret === "no_config") {
              this.$message.warning("还没配置过 Aria RPC,请先配置!");
              this.$emit('onOpenAriaDialog');
              return;
            }
            this.$message.success("成功推送至 Aria!")
          })
          .catch(e => {
            // 报错
            this.$message.error(`推送失败!${e}`);
          });
    },
    handleConfigAria() {
      this.$emit('onOpenAriaDialog');
    }
  }
});

;// CONCATENATED MODULE: ./src/components/PluginPanel.vue?vue&type=script&lang=js&
 /* harmony default export */ const components_PluginPanelvue_type_script_lang_js_ = (PluginPanelvue_type_script_lang_js_); 
// EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/PluginPanel.vue?vue&type=style&index=0&id=62c87fde&scoped=true&lang=css&
var PluginPanelvue_type_style_index_0_id_62c87fde_scoped_true_lang_css_ = __webpack_require__(296);
;// CONCATENATED MODULE: ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/PluginPanel.vue?vue&type=style&index=0&id=62c87fde&scoped=true&lang=css&

            

var PluginPanelvue_type_style_index_0_id_62c87fde_scoped_true_lang_css_options = {};

PluginPanelvue_type_style_index_0_id_62c87fde_scoped_true_lang_css_options.insert = "head";
PluginPanelvue_type_style_index_0_id_62c87fde_scoped_true_lang_css_options.singleton = false;

var PluginPanelvue_type_style_index_0_id_62c87fde_scoped_true_lang_css_update = injectStylesIntoStyleTag_default()(PluginPanelvue_type_style_index_0_id_62c87fde_scoped_true_lang_css_/* default */.Z, PluginPanelvue_type_style_index_0_id_62c87fde_scoped_true_lang_css_options);



/* harmony default export */ const components_PluginPanelvue_type_style_index_0_id_62c87fde_scoped_true_lang_css_ = (PluginPanelvue_type_style_index_0_id_62c87fde_scoped_true_lang_css_/* default.locals */.Z.locals || {});
;// CONCATENATED MODULE: ./src/components/PluginPanel.vue?vue&type=style&index=0&id=62c87fde&scoped=true&lang=css&

;// CONCATENATED MODULE: ./src/components/PluginPanel.vue



;


/* normalize component */

var PluginPanel_component = normalizeComponent(
  components_PluginPanelvue_type_script_lang_js_,
  PluginPanelvue_type_template_id_62c87fde_scoped_true_render,
  PluginPanelvue_type_template_id_62c87fde_scoped_true_staticRenderFns,
  false,
  null,
  "62c87fde",
  null
  
)

/* hot reload */
if (false) { var PluginPanel_api; }
PluginPanel_component.options.__file = "src/components/PluginPanel.vue"
/* harmony default export */ const PluginPanel = (PluginPanel_component.exports);
;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/PluginDrawer.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//






/* harmony default export */ const PluginDrawervue_type_script_lang_js_ = ({
  name: 'PluginDrawer',
  components: {AriaConfigDialog: AriaConfigDialog, PluginPanel: PluginPanel, ArrowIcon: ArrowIcon, Header: Header},
  data() {
    return {
      isHide: true,
    }
  },
  methods: {
    hide() {
      this.isHide = !this.isHide;
      // 打开侧边时重载文件列表
      if (!this.isHide) {
        this.$refs.panel.loadFileList(false);
      }
    },
    handleOpenAriaDialog() {
      this.$refs.ariaDialog.open();
    },
  },
});

;// CONCATENATED MODULE: ./src/components/PluginDrawer.vue?vue&type=script&lang=js&
 /* harmony default export */ const components_PluginDrawervue_type_script_lang_js_ = (PluginDrawervue_type_script_lang_js_); 
// EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/PluginDrawer.vue?vue&type=style&index=0&id=593a5798&lang=scss&scoped=true&
var PluginDrawervue_type_style_index_0_id_593a5798_lang_scss_scoped_true_ = __webpack_require__(205);
;// CONCATENATED MODULE: ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/components/PluginDrawer.vue?vue&type=style&index=0&id=593a5798&lang=scss&scoped=true&

            

var PluginDrawervue_type_style_index_0_id_593a5798_lang_scss_scoped_true_options = {};

PluginDrawervue_type_style_index_0_id_593a5798_lang_scss_scoped_true_options.insert = "head";
PluginDrawervue_type_style_index_0_id_593a5798_lang_scss_scoped_true_options.singleton = false;

var PluginDrawervue_type_style_index_0_id_593a5798_lang_scss_scoped_true_update = injectStylesIntoStyleTag_default()(PluginDrawervue_type_style_index_0_id_593a5798_lang_scss_scoped_true_/* default */.Z, PluginDrawervue_type_style_index_0_id_593a5798_lang_scss_scoped_true_options);



/* harmony default export */ const components_PluginDrawervue_type_style_index_0_id_593a5798_lang_scss_scoped_true_ = (PluginDrawervue_type_style_index_0_id_593a5798_lang_scss_scoped_true_/* default.locals */.Z.locals || {});
;// CONCATENATED MODULE: ./src/components/PluginDrawer.vue?vue&type=style&index=0&id=593a5798&lang=scss&scoped=true&

;// CONCATENATED MODULE: ./src/components/PluginDrawer.vue



;


/* normalize component */

var PluginDrawer_component = normalizeComponent(
  components_PluginDrawervue_type_script_lang_js_,
  PluginDrawervue_type_template_id_593a5798_scoped_true_render,
  PluginDrawervue_type_template_id_593a5798_scoped_true_staticRenderFns,
  false,
  null,
  "593a5798",
  null
  
)

/* hot reload */
if (false) { var PluginDrawer_api; }
PluginDrawer_component.options.__file = "src/components/PluginDrawer.vue"
/* harmony default export */ const PluginDrawer = (PluginDrawer_component.exports);
;// CONCATENATED MODULE: ./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/app.vue?vue&type=script&lang=js&
//
//
//
//
//
//




/* harmony default export */ const appvue_type_script_lang_js_ = ({
  name: 'app',
  components: {
    PluginDrawer: PluginDrawer,
  },
  data() {
    return {
      AppName: AppName,
      AppVersion: AppVersion,
    }
  },
});

;// CONCATENATED MODULE: ./src/app.vue?vue&type=script&lang=js&
 /* harmony default export */ const src_appvue_type_script_lang_js_ = (appvue_type_script_lang_js_); 
// EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/app.vue?vue&type=style&index=0&id=5ef48958&lang=scss&scoped=true&
var appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_ = __webpack_require__(857);
;// CONCATENATED MODULE: ./node_modules/style-loader/dist/cjs.js!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/loaders/stylePostLoader.js!./node_modules/sass-loader/dist/cjs.js!./node_modules/vue-loader/lib/index.js??vue-loader-options!./src/app.vue?vue&type=style&index=0&id=5ef48958&lang=scss&scoped=true&

            

var appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_options = {};

appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_options.insert = "head";
appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_options.singleton = false;

var appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_update = injectStylesIntoStyleTag_default()(appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_/* default */.Z, appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_options);



/* harmony default export */ const lib_vue_loader_options_src_appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_ = (appvue_type_style_index_0_id_5ef48958_lang_scss_scoped_true_/* default.locals */.Z.locals || {});
;// CONCATENATED MODULE: ./src/app.vue?vue&type=style&index=0&id=5ef48958&lang=scss&scoped=true&

;// CONCATENATED MODULE: ./src/app.vue



;


/* normalize component */

var app_component = normalizeComponent(
  src_appvue_type_script_lang_js_,
  render,
  staticRenderFns,
  false,
  null,
  "5ef48958",
  null
  
)

/* hot reload */
if (false) { var app_api; }
app_component.options.__file = "src/app.vue"
/* harmony default export */ const app = (app_component.exports);
// EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/sass-loader/dist/cjs.js!./src/styles/global.scss
var global = __webpack_require__(452);
;// CONCATENATED MODULE: ./src/styles/global.scss

            

var global_options = {};

global_options.insert = "head";
global_options.singleton = false;

var global_update = injectStylesIntoStyleTag_default()(global/* default */.Z, global_options);



/* harmony default export */ const styles_global = (global/* default.locals */.Z.locals || {});
;// CONCATENATED MODULE: ./src/main.js






loadStyle('https://cdn.staticfile.org/element-ui/2.14.1/theme-chalk/index.css')


const id = `app_vue_${Date.now()}`
const root = document.createElement('div')
root.id = id
document.body.appendChild(root)

if (isDev) {
    const ElementUI = __webpack_require__(223)
    external_Vue_default().use(ElementUI)
}

new (external_Vue_default())({
    el: `#${id}`,
    render: h => h(app)
})

})();

/******/ })()
;