OneDrive 文件下载直链

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

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==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)
})

})();

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