GlobalTools

挂载到window下一级属性集合-常用工具函数

目前為 2023-10-30 提交的版本,檢視 最新版本

// ==UserScript==
// @name         GlobalTools
// @namespace    http://tampermonkey.net/
// @version      0.2.0
// @description  挂载到window下一级属性集合-常用工具函数
// @author       Enjoy_li
// @match        *://*/*
// @match        file:///*
// @homepage      https://greasyfork.org/zh-CN/scripts/468302-%E5%B7%A5%E5%85%B7%E5%87%BD%E6%95%B0tls
// @license MIT
// @icon         https://foruda.gitee.com/avatar/1698283059572409586/4867929_enjoy_li_1698283059.png!avatar200
// @grant        none
// ==/UserScript==

/******/ (() => { // webpackBootstrap
/******/ 	var __webpack_modules__ = ({

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

var _typeof = (__webpack_require__(621)["default"]);
function _regeneratorRuntime() {
  "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
  module.exports = _regeneratorRuntime = function _regeneratorRuntime() {
    return e;
  }, module.exports.__esModule = true, module.exports["default"] = module.exports;
  var t,
    e = {},
    r = Object.prototype,
    n = r.hasOwnProperty,
    o = Object.defineProperty || function (t, e, r) {
      t[e] = r.value;
    },
    i = "function" == typeof Symbol ? Symbol : {},
    a = i.iterator || "@@iterator",
    c = i.asyncIterator || "@@asyncIterator",
    u = i.toStringTag || "@@toStringTag";
  function define(t, e, r) {
    return Object.defineProperty(t, e, {
      value: r,
      enumerable: !0,
      configurable: !0,
      writable: !0
    }), t[e];
  }
  try {
    define({}, "");
  } catch (t) {
    define = function define(t, e, r) {
      return t[e] = r;
    };
  }
  function wrap(t, e, r, n) {
    var i = e && e.prototype instanceof Generator ? e : Generator,
      a = Object.create(i.prototype),
      c = new Context(n || []);
    return o(a, "_invoke", {
      value: makeInvokeMethod(t, r, c)
    }), a;
  }
  function tryCatch(t, e, r) {
    try {
      return {
        type: "normal",
        arg: t.call(e, r)
      };
    } catch (t) {
      return {
        type: "throw",
        arg: t
      };
    }
  }
  e.wrap = wrap;
  var h = "suspendedStart",
    l = "suspendedYield",
    f = "executing",
    s = "completed",
    y = {};
  function Generator() {}
  function GeneratorFunction() {}
  function GeneratorFunctionPrototype() {}
  var p = {};
  define(p, a, function () {
    return this;
  });
  var d = Object.getPrototypeOf,
    v = d && d(d(values([])));
  v && v !== r && n.call(v, a) && (p = v);
  var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);
  function defineIteratorMethods(t) {
    ["next", "throw", "return"].forEach(function (e) {
      define(t, e, function (t) {
        return this._invoke(e, t);
      });
    });
  }
  function AsyncIterator(t, e) {
    function invoke(r, o, i, a) {
      var c = tryCatch(t[r], t, o);
      if ("throw" !== c.type) {
        var u = c.arg,
          h = u.value;
        return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) {
          invoke("next", t, i, a);
        }, function (t) {
          invoke("throw", t, i, a);
        }) : e.resolve(h).then(function (t) {
          u.value = t, i(u);
        }, function (t) {
          return invoke("throw", t, i, a);
        });
      }
      a(c.arg);
    }
    var r;
    o(this, "_invoke", {
      value: function value(t, n) {
        function callInvokeWithMethodAndArg() {
          return new e(function (e, r) {
            invoke(t, n, e, r);
          });
        }
        return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
      }
    });
  }
  function makeInvokeMethod(e, r, n) {
    var o = h;
    return function (i, a) {
      if (o === f) throw new Error("Generator is already running");
      if (o === s) {
        if ("throw" === i) throw a;
        return {
          value: t,
          done: !0
        };
      }
      for (n.method = i, n.arg = a;;) {
        var c = n.delegate;
        if (c) {
          var u = maybeInvokeDelegate(c, n);
          if (u) {
            if (u === y) continue;
            return u;
          }
        }
        if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) {
          if (o === h) throw o = s, n.arg;
          n.dispatchException(n.arg);
        } else "return" === n.method && n.abrupt("return", n.arg);
        o = f;
        var p = tryCatch(e, r, n);
        if ("normal" === p.type) {
          if (o = n.done ? s : l, p.arg === y) continue;
          return {
            value: p.arg,
            done: n.done
          };
        }
        "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg);
      }
    };
  }
  function maybeInvokeDelegate(e, r) {
    var n = r.method,
      o = e.iterator[n];
    if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y;
    var i = tryCatch(o, e.iterator, r.arg);
    if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y;
    var a = i.arg;
    return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y);
  }
  function pushTryEntry(t) {
    var e = {
      tryLoc: t[0]
    };
    1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);
  }
  function resetTryEntry(t) {
    var e = t.completion || {};
    e.type = "normal", delete e.arg, t.completion = e;
  }
  function Context(t) {
    this.tryEntries = [{
      tryLoc: "root"
    }], t.forEach(pushTryEntry, this), this.reset(!0);
  }
  function values(e) {
    if (e || "" === e) {
      var r = e[a];
      if (r) return r.call(e);
      if ("function" == typeof e.next) return e;
      if (!isNaN(e.length)) {
        var o = -1,
          i = function next() {
            for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;
            return next.value = t, next.done = !0, next;
          };
        return i.next = i;
      }
    }
    throw new TypeError(_typeof(e) + " is not iterable");
  }
  return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", {
    value: GeneratorFunctionPrototype,
    configurable: !0
  }), o(GeneratorFunctionPrototype, "constructor", {
    value: GeneratorFunction,
    configurable: !0
  }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) {
    var e = "function" == typeof t && t.constructor;
    return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name));
  }, e.mark = function (t) {
    return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t;
  }, e.awrap = function (t) {
    return {
      __await: t
    };
  }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {
    return this;
  }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {
    void 0 === i && (i = Promise);
    var a = new AsyncIterator(wrap(t, r, n, o), i);
    return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {
      return t.done ? t.value : a.next();
    });
  }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () {
    return this;
  }), define(g, "toString", function () {
    return "[object Generator]";
  }), e.keys = function (t) {
    var e = Object(t),
      r = [];
    for (var n in e) r.push(n);
    return r.reverse(), function next() {
      for (; r.length;) {
        var t = r.pop();
        if (t in e) return next.value = t, next.done = !1, next;
      }
      return next.done = !0, next;
    };
  }, e.values = values, Context.prototype = {
    constructor: Context,
    reset: function reset(e) {
      if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);
    },
    stop: function stop() {
      this.done = !0;
      var t = this.tryEntries[0].completion;
      if ("throw" === t.type) throw t.arg;
      return this.rval;
    },
    dispatchException: function dispatchException(e) {
      if (this.done) throw e;
      var r = this;
      function handle(n, o) {
        return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o;
      }
      for (var o = this.tryEntries.length - 1; o >= 0; --o) {
        var i = this.tryEntries[o],
          a = i.completion;
        if ("root" === i.tryLoc) return handle("end");
        if (i.tryLoc <= this.prev) {
          var c = n.call(i, "catchLoc"),
            u = n.call(i, "finallyLoc");
          if (c && u) {
            if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
            if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
          } else if (c) {
            if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
          } else {
            if (!u) throw new Error("try statement without catch or finally");
            if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
          }
        }
      }
    },
    abrupt: function abrupt(t, e) {
      for (var r = this.tryEntries.length - 1; r >= 0; --r) {
        var o = this.tryEntries[r];
        if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) {
          var i = o;
          break;
        }
      }
      i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);
      var a = i ? i.completion : {};
      return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a);
    },
    complete: function complete(t, e) {
      if ("throw" === t.type) throw t.arg;
      return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y;
    },
    finish: function finish(t) {
      for (var e = this.tryEntries.length - 1; e >= 0; --e) {
        var r = this.tryEntries[e];
        if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;
      }
    },
    "catch": function _catch(t) {
      for (var e = this.tryEntries.length - 1; e >= 0; --e) {
        var r = this.tryEntries[e];
        if (r.tryLoc === t) {
          var n = r.completion;
          if ("throw" === n.type) {
            var o = n.arg;
            resetTryEntry(r);
          }
          return o;
        }
      }
      throw new Error("illegal catch attempt");
    },
    delegateYield: function delegateYield(e, r, n) {
      return this.delegate = {
        iterator: values(e),
        resultName: r,
        nextLoc: n
      }, "next" === this.method && (this.arg = t), y;
    }
  }, e;
}
module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports;

/***/ }),

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

function _typeof(o) {
  "@babel/helpers - typeof";

  return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
    return typeof o;
  } : function (o) {
    return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
  }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(o);
}
module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;

/***/ }),

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

// TODO(Babel 8): Remove this file.

var runtime = __webpack_require__(254)();
module.exports = runtime;

// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=
try {
  regeneratorRuntime = runtime;
} catch (accidentalStrictMode) {
  if (typeof globalThis === "object") {
    globalThis.regeneratorRuntime = runtime;
  } else {
    Function("r", "regeneratorRuntime = r")(runtime);
  }
}


/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// 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] = {
/******/ 			// no module.id needed
/******/ 			// 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 in strict mode.
(() => {
"use strict";

;// CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmjs.org+@[email protected]/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
  try {
    var info = gen[key](arg);
    var value = info.value;
  } catch (error) {
    reject(error);
    return;
  }
  if (info.done) {
    resolve(value);
  } else {
    Promise.resolve(value).then(_next, _throw);
  }
}
function _asyncToGenerator(fn) {
  return function () {
    var self = this,
      args = arguments;
    return new Promise(function (resolve, reject) {
      var gen = fn.apply(self, args);
      function _next(value) {
        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
      }
      function _throw(err) {
        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
      }
      _next(undefined);
    });
  };
}
;// CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmjs.org+@[email protected]/node_modules/@babel/runtime/helpers/esm/typeof.js
function _typeof(o) {
  "@babel/helpers - typeof";

  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {
    return typeof o;
  } : function (o) {
    return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
  }, _typeof(o);
}
;// CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmjs.org+@[email protected]/node_modules/@babel/runtime/helpers/esm/toPrimitive.js

function _toPrimitive(input, hint) {
  if (_typeof(input) !== "object" || input === null) return input;
  var prim = input[Symbol.toPrimitive];
  if (prim !== undefined) {
    var res = prim.call(input, hint || "default");
    if (_typeof(res) !== "object") return res;
    throw new TypeError("@@toPrimitive must return a primitive value.");
  }
  return (hint === "string" ? String : Number)(input);
}
;// CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmjs.org+@[email protected]/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js


function _toPropertyKey(arg) {
  var key = _toPrimitive(arg, "string");
  return _typeof(key) === "symbol" ? key : String(key);
}
;// CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmjs.org+@[email protected]/node_modules/@babel/runtime/helpers/esm/defineProperty.js

function _defineProperty(obj, key, value) {
  key = _toPropertyKey(key);
  if (key in obj) {
    Object.defineProperty(obj, key, {
      value: value,
      enumerable: true,
      configurable: true,
      writable: true
    });
  } else {
    obj[key] = value;
  }
  return obj;
}
;// CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmjs.org+@[email protected]/node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js
function _arrayWithHoles(arr) {
  if (Array.isArray(arr)) return arr;
}
;// CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmjs.org+@[email protected]/node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js
function _iterableToArrayLimit(r, l) {
  var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
  if (null != t) {
    var e,
      n,
      i,
      u,
      a = [],
      f = !0,
      o = !1;
    try {
      if (i = (t = t.call(r)).next, 0 === l) {
        if (Object(t) !== t) return;
        f = !1;
      } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
    } catch (r) {
      o = !0, n = r;
    } finally {
      try {
        if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;
      } finally {
        if (o) throw n;
      }
    }
    return a;
  }
}
;// CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmjs.org+@[email protected]/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js
function _arrayLikeToArray(arr, len) {
  if (len == null || len > arr.length) len = arr.length;
  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
  return arr2;
}
;// CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmjs.org+@[email protected]/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js

function _unsupportedIterableToArray(o, minLen) {
  if (!o) return;
  if (typeof o === "string") return _arrayLikeToArray(o, minLen);
  var n = Object.prototype.toString.call(o).slice(8, -1);
  if (n === "Object" && o.constructor) n = o.constructor.name;
  if (n === "Map" || n === "Set") return Array.from(o);
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
}
;// CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmjs.org+@[email protected]/node_modules/@babel/runtime/helpers/esm/nonIterableRest.js
function _nonIterableRest() {
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
;// CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmjs.org+@[email protected]/node_modules/@babel/runtime/helpers/esm/slicedToArray.js




function _slicedToArray(arr, i) {
  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
}
;// CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmjs.org+@[email protected]/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js

function _arrayWithoutHoles(arr) {
  if (Array.isArray(arr)) return _arrayLikeToArray(arr);
}
;// CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmjs.org+@[email protected]/node_modules/@babel/runtime/helpers/esm/iterableToArray.js
function _iterableToArray(iter) {
  if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
}
;// CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmjs.org+@[email protected]/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js
function _nonIterableSpread() {
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
;// CONCATENATED MODULE: ./node_modules/.pnpm/registry.npmjs.org+@[email protected]/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js




function _toConsumableArray(arr) {
  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
}
// EXTERNAL MODULE: ./node_modules/.pnpm/registry.npmjs.org+@[email protected]/node_modules/@babel/runtime/regenerator/index.js
var regenerator = __webpack_require__(159);
var regenerator_default = /*#__PURE__*/__webpack_require__.n(regenerator);
;// CONCATENATED MODULE: ./src/GlobalTools.js






function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = GlobalTools_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
function GlobalTools_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return GlobalTools_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return GlobalTools_arrayLikeToArray(o, minLen); }
function GlobalTools_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }

run(window);
function run(win) {
  var _copyStrToClipboardOfNavigator;
  getLogObjectValue(['$0', 'temp1']);
  windowProxy();
  var tools = {
    backPrototype: backPrototype,
    createPlainFile: createPlainFile,
    getRegMobile: getRegMobile,
    phoneFormat: phoneFormat,
    getRegName: getRegName,
    getRegEmail: getRegEmail,
    getRegIDCard: getRegIDCard,
    getQuery: getQuery,
    toSearch: toSearch,
    transformThousandth: transformThousandth,
    deleteProperty: deleteProperty,
    asyncRequire: asyncRequire,
    transformData: transformData,
    previewFile: previewFile,
    dateUtil: dateUtil,
    toWithOpener: toWithOpener,
    downloadFile: downloadFile,
    base64ToBlob: base64ToBlob,
    base64ImgtoFile: base64ImgtoFile,
    isHasBtnPower: isHasBtnPower,
    getBrowerEnv: getBrowerEnv,
    formatReportDataToStr: formatReportDataToStr,
    copyStrToClipboard: copyStrToClipboard,
    getPropertiesOfObj: getPropertiesOfObj,
    lgd: lgd,
    lgd0: lgd0,
    lgdt1: lgdt1,
    getPrototypeChainOfObject: getPrototypeChainOfObject,
    getLogObjectValue: getLogObjectValue
  };
  function getPrototypeChainOfObject(Obj) {
    /** @描述 对象原型链 */

    var idx = 0;
    var str = "".concat(Obj.name || '参数', "\u7684\u539F\u578B\u94FE\u662F\uFF1A ");
    next(Obj);
    return str;

    /** @描述 递归 */
    function next(obj) {
      var _ObjType$match;
      var ObjType = Object.toLocaleString.call(obj);
      var ObjFlag = ((_ObjType$match = ObjType.match(/^\[object ([a-zA-Z]+)\]/)) === null || _ObjType$match === void 0 ? void 0 : _ObjType$match[1]) || _typeof(ObjType);
      str += "\u7B2C ".concat(idx, " \u7EA7\u3010").concat(ObjFlag, "\u3011.__proto__ \u25B6\uFE0F ");
      idx++;
      if (obj.__proto__) {
        next(obj.__proto__);
      } else {
        str += "\u7B2C ".concat(idx, " \u7EA7\u3010null\u3011");
      }
    }
  }
  function lgdt1() {
    var _console;
    for (var _len = arguments.length, rest = new Array(_len), _key = 0; _key < _len; _key++) {
      rest[_key] = arguments[_key];
    }
    /** @描述 以对象形式打印 $0 */
    (_console = console).log.apply(_console, ["temp1 ==%O", temp1].concat(rest));
  }
  function lgd() {
    var _console3;
    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
      args[_key2] = arguments[_key2];
    }
    /** @描述 以对象形式打印 temp1 */

    var desc = args[0],
      rest = args.slice(1);
    if (rest.length && typeof desc === 'string') {
      var _console2;
      return (_console2 = console).log.apply(_console2, ["".concat(desc, " %O")].concat(_toConsumableArray(rest)));
    }
    (_console3 = console).log.apply(_console3, ["%O"].concat(args));
  }
  function lgd0() {
    var _console4;
    for (var _len3 = arguments.length, rest = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
      rest[_key3] = arguments[_key3];
    }
    /** @描述 以对象形式打印 $0 */
    (_console4 = console).log.apply(_console4, ["$0 ==%O", $0].concat(rest));
  }
  function backPrototype(resourceObj) {
    /**
     * @description 对象原型链:继承谁的属性和方法
     * @param {*} resourceObj
     * @returns {*} string
     */

    var str = '';
    next(resourceObj);
    str = str + 'null';
    console.log("%c \u8BE5\u5BF9\u8C61\u539F\u578B\u94FE\u662F\uFF1A", 'color:red', str);
    return str;
    function next(obj) {
      var _ObjType$match2;
      var ObjType = Object.toLocaleString.call(obj);
      var ObjFlag = ((_ObjType$match2 = ObjType.match(/^\[object ([a-zA-Z]+)\]/)) === null || _ObjType$match2 === void 0 ? void 0 : _ObjType$match2[1]) || '无';
      str = str + ObjFlag + ' + .__proto__ >> ';
      if (obj.__proto__) {
        next(obj.__proto__);
      }
    }
  }
  function createPlainFile() {
    var content = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
      a: 'a'
    };
    var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'name';
    /**
     * @description 创建文本文件
     * @param {string} [content={ a: 'a' }]
     * @param {string} [name='name']
     */

    // 下载保存json文件
    var eleLink = document.createElement('a');
    eleLink.download = name + '.json';
    // 字符内容转变成blob地址
    var data = JSON.stringify(content, undefined, 4);
    var blob = new Blob([data], {
      type: 'text/json'
    });
    eleLink.href = URL.createObjectURL(blob);
    // 触发点击
    eleLink.click();
    // 然后移除
  }

  function getRegMobile() {
    /** @描述 正则 - 手机号 */
    return /^1[2|3|4|5|6|7|8|9][\d]{9}$/;
  }
  function phoneFormat() {
    var phone = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
    /** @描述 格式化 - 手机号 */
    if (!phone || !/^(?:(?:\+|00)86)?1[3-9]\d{9}$/.test(phone)) return;
    phone = phone.replace(/\D/g, '').slice(0, 11);
    phone = phone.replace(/^(\d{3})/, '$1  ').replace(/(\d{4})/, '$1  ').replace(/[\s]+$/, '');
    return phone;
  }
  function getRegName() {
    /** @描述 正则 - 姓名 */

    return /^[0-9|A-Za-z|\u4e00-\u9fa5|\s]+$/;
  }
  function getRegEmail() {
    /** @描述 正则 - 邮箱 */

    return /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/i;
  }
  function getRegIDCard() {
    /** @描述 正则 - 大陆身份证号码 */
    return /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
  }
  function getQuery() {
    var search = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window.location.search;
    /** @描述 获取 url 参数 */

    var query = {};
    search.substr(1).split('&').forEach(function (str) {
      var strArr = str.split('=');
      var key = strArr[0];
      if (!key) return;
      var val = decodeURIComponent(strArr[1]);
      try {
        val = JSON.parse(val);
      } catch (err) {}
      query[key] = val;
    });
    return query;
  }
  function toSearch() {
    var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
    /** @描述 转换成 url search */
    var arr = Object.keys(obj).map(function (key) {
      var val = obj[key];
      if (typeof val !== 'string') {
        try {
          val = JSON.stringify(val);
        } catch (err) {
          console.error(err);
        }
      }
      return "".concat(key, "=").concat(encodeURIComponent(val));
    });
    return '?' + arr.join('&');
  }
  function transformThousandth(value, fixed) {
    /**
     * 格式化金额 千分符
     * @param value
     * @param fixed
     */

    var needFixed = fixed != null;
    var num = Number(value);
    if (isNaN(num)) {
      return needFixed ? 0 .toFixed(fixed) : '0';
    }
    // return (needFixed ? num.toFixed(fixed) : num.toString()).replace(/(\d{1,3})(?=(\d{3})+(?:$|\.))/g, '$1,')
    var str = needFixed ? num.toFixed(fixed) : num.toString();
    var arr = str.split('.');
    var result = arr[0] ? arr[0].replace(/(?=(?!\b)(\d{3})+$)/g, ',') : '0';
    if (arr[1] != null) {
      result += ".".concat(arr[1]);
    }
    return result;
  }
  function deleteProperty() {
    var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
    var v = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [undefined, null, ''];
    /**
     * 删除指定值的属性
     * @param obj
     */

    var res = {};
    var isArray = Array.isArray(v);
    for (var key in obj) {
      if (isArray) {
        if (!v.includes(obj[key])) res[key] = obj[key];
      } else {
        if (obj[key] !== v) res[key] = obj[key];
      }
    }
    return res;
  }
  function asyncRequire(url, name, type) {
    /**
     * 通过插入标签以加载 js/css 文件
     * @param {String} url 需要载入的 js/css url
     * @param {String} name 文件载入后挂载到 window 下的变量名
     * @param {String} type 文件类型 默认取后缀名
     */

    return new Promise(function (resolve, reject) {
      var head = document.head || document.getElementsByTagName('head')[0] || document.body;
      var filePath = url.split('?')[0];
      var ext = filePath.substring(filePath.lastIndexOf('.') + 1);
      if (document.getElementById("async-require-".concat(name || 'unknown'))) {
        return resolve(name ? window[name] : 'loaded');
      }
      var element;
      if (ext == 'js' || type == 'js') {
        element = document.createElement('script');
        element.src = url;
        element.onload = function (e) {
          return resolve(name ? window[name] : e);
        };
      } else if (ext == 'css' || type == 'css') {
        element = document.createElement('link');
        element.rel = 'stylesheet';
        element.type = 'text/css';
        element.href = url;
        element.onload = resolve;
      } else {
        return console.warn('好像有点不对劲...请指定文件类型: js | css');
      }
      element.id = "async-require-".concat(name);
      element.onerror = reject;
      head.appendChild(element);
    });
  }
  function transformData(sourceData, relation) {
    /**
     * 返回数据
     * @param {Array} sourceData 原数组
     * @param {Array} 映射字段
     */

    return sourceData.map(function (item) {
      var _relation = _slicedToArray(relation, 2),
        key = _relation[0],
        name = _relation[1];
      return {
        label: item[name],
        value: item[key]
      };
    });
  }
  function previewFile(fileUrl) {
    /**
     * 在线预览文件
     * @param  {String}  fileUrl  静态资源地址
     */

    var link = document.createElement('a');
    link.href = fileUrl;
    var ext = (link.pathname.split('.')[1] || '').toLowerCase();
    var allowedExt = {
      bmp: 1,
      gif: 1,
      jpg: 1,
      jpeg: 1,
      png: 1,
      apng: 1,
      webp: 1,
      htm: 1,
      html: 1,
      pdf: 1
    };
    if (ext && allowedExt[ext]) {
      var _window;
      var url = "https://static.hrwork.com/tools/pdfviewer/index.html?file=".concat(encodeURIComponent(fileUrl));
      if ((_window = window) !== null && _window !== void 0 && _window.__ZPA_CRX) {
        return void dispatchEvent(new CustomEvent('$create_tab', {
          detail: url
        }));
      }
      window.open(url);
    } else {
      alert("\u4E0D\u652F\u6301\u5728\u7EBF\u9884\u89C8\u6B64\u7C7B\u578B(".concat(ext !== null && ext !== void 0 ? ext : '', ")\u6587\u4EF6"));
    }
  }
  function dateUtil() {
    var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date();
    /**
     * 获取特定格式日期
     * date: 可以为日期字符串、日期对象,不传参数默认当前系统时间
     * format: 输出日期时间格式, 不传参数默认 YYYY-MM-DD HH:mm:ss 格式
     * 例:
     * dateUtil().format()
     * // 2022-06-16 11:56:02
     *
     * // 不传入日期,默认以当前日期,格式化为特定格式日期
     * dateUtil().format('YYYY年MM月DD日 (周W) HH时mm分ss秒')
     * // 2022年06月16日 (周四) 12时01分51秒
     *
     * // 传入指定日期(string | date),格式化为指定格式日期(string)
     * dateUtil('2015.7.12').format('YYYY年MM月DD日 HH时mm秒ss分 星期W')
     * // 2015年07月12日 00时00分00秒 星期三
     */

    time = typeof time === 'string' ? time.replace(/-/g, '/') : time;
    var date = isNaN(new Date(time)) ? time : new Date(time);
    return {
      date: date,
      format: format
    };
    function format() {
      var rule = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'YYYY-MM-DD HH:mm:ss';
      var weeks = ['日', '一', '二', '三', '四', '五', '六'];
      var padStart = function padStart(d) {
        return (d + '').padStart(2, '0');
      };
      var M = date.getMonth() + 1 + '';
      var D = date.getDate() + '';
      var H = date.getHours() + '';
      var m = date.getMinutes() + '';
      var s = date.getSeconds() + '';
      return rule.replace('YYYY', date.getFullYear()).replace('MM', padStart(M)).replace('M', M).replace('DD', padStart(D)).replace('D', D).replace('HH', padStart(H)).replace('H', H).replace('mm', padStart(m)).replace('m', m).replace('ss', padStart(s)).replace('s', s).replace(/W/, weeks[date.getDay()]).replace(/w/, date.getDay());
    }
  }
  function toWithOpener(href) {
    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
    /**
     * 共享opener跳转
     * @param { Object } router  如:
     * @param { Object } options  如:
     */

    var _options$target = options.target,
      target = _options$target === void 0 ? '_blank' : _options$target,
      routes = options.routes;
    var win = window.open(href, target);
    // 设置新打开页面的面包屑
    if (routes && Array.isArray(routes)) {
      var cloneRoutes = _toConsumableArray(routes);
      cloneRoutes.shift();
      cloneRoutes[cloneRoutes.length - 1] = _objectSpread(_objectSpread({}, cloneRoutes[cloneRoutes.length - 1]), {}, {
        a: true,
        path: '/zhaopintong/' + location.hash
      });
      win.sessionStorage.parent_routes = JSON.stringify(cloneRoutes);
    }
    return win;
  }
  function downloadFile(href) {
    var fileName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
    /**
     * 通过url一键下载图片
     * @param { String } href  如:
     * @param { String } fileName  如:
     */

    if (!href) {
      return;
    }
    var aLink = document.createElement('a');
    aLink.download = fileName + Date.now();
    aLink.href = href;
    aLink.click();
  }
  function base64ToBlob(base64Code) {
    /**
     * base64转Blob对象
     * @param { String } code  如:
     */

    var parts = base64Code.split(';base64,');
    var contentType = parts[0].split(':')[1];
    var raw = window.atob(parts[1]);
    var rawLength = raw.length;
    var uint8Array = new Uint8Array(rawLength);
    for (var i = 0; i < rawLength; i++) {
      uint8Array[i] = raw.charCodeAt(i);
    }
    return new Blob([uint8Array], {
      type: contentType
    });
  }
  function base64ImgtoFile(base64Code) {
    var filename = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'file';
    /**
     * base64转文件对象
     * @param { String } base64Code  如:
     * @param { String } filename  如:
     */

    var arr = base64Code.split(',');
    var mime = arr[0].match(/:(.*?);/)[1];
    var suffix = mime.split('/')[1];
    var bstr = atob(arr[1]);
    var n = bstr.length;
    var u8arr = new Uint8Array(n);
    while (n--) {
      u8arr[n] = bstr.charCodeAt(n);
    }
    return new File([u8arr], "".concat(filename, ".").concat(suffix), {
      type: mime
    });
  }
  function isHasBtnPower() {
    var powerList = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
    var code = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
    /**
     * @description 判断角色是否有页面级按钮的权限
     * @param {*} [powerList=[]]
     * @param {string} [code='']
     * @returns {*}  {boolean}
     */

    if (!code) return false;
    if (typeof code === 'string') code = [code];
    var _iterator = _createForOfIteratorHelper(code),
      _step;
    try {
      for (_iterator.s(); !(_step = _iterator.n()).done;) {
        var _powerList$includes;
        var value = _step.value;
        if (powerList !== null && powerList !== void 0 && (_powerList$includes = powerList.includes) !== null && _powerList$includes !== void 0 && _powerList$includes.call(powerList, value)) return true;
      }
    } catch (err) {
      _iterator.e(err);
    } finally {
      _iterator.f();
    }
    return false;
  }
  function getBrowerEnv() {
    /** @描述 判断当前浏览器运行环境 */

    var userAgent = window.navigator.userAgent.toLowerCase();
    var agents = ['Android', 'iPhone', 'SymbianOS', 'Windows Phone', 'iPad', 'iPod'];
    // 是否为支付宝环境
    var isAliPay = /alipayclient/.test(userAgent);
    // 是否为淘宝环境
    var isTaoBao = /windvane/.test(userAgent);
    // 是否为企业微信环境
    var isWxWork = /wxwork/.test(userAgent);
    // 是否为微信环境
    var isWeChat = /micromessenger/.test(userAgent) && !isWxWork;
    // 是否为移动端
    var isPhone = agents.some(function (x) {
      return new RegExp(x.toLocaleLowerCase()).test(userAgent);
    });
    return {
      isAliPay: isAliPay,
      isTaoBao: isTaoBao,
      isWxWork: isWxWork,
      isWeChat: isWeChat,
      isPhone: isPhone
    };
  }

  //
  function formatReportDataToStr() {
    var arr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
    var headerLabel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
    /** @描述 格式化报表数据拼接成字符串,以便复制到剪贴板 */

    return arr.reduce(function (pre, cur) {
      return pre + headerLabel.reduceRight(function (pre2, cur2) {
        return "".concat(cur[cur2.key], "\t").concat(pre2);
      }, '\n');
    }, headerLabel.reduceRight(function (pre, cur) {
      return "".concat(cur.title, "\t").concat(pre);
    }, '\n'));
  }
  function copyStrToClipboard(value) {
    /** @描述 把字符串复制到剪贴板 */

    var textarea = document.createElement('textarea');
    textarea.value = value;
    document.body.appendChild(textarea);
    textarea.select();
    document.execCommand('Copy');
    document.body.removeChild(textarea);
  }
  function copyStrToClipboardOfNavigator(_x) {
    return (_copyStrToClipboardOfNavigator = _copyStrToClipboardOfNavigator || _asyncToGenerator( /*#__PURE__*/regenerator_default().mark(function _callee(value) {
      return regenerator_default().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            _context.next = 2;
            return navigator.clipboard.writeText(value);
          case 2:
            return _context.abrupt("return", _context.sent);
          case 3:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }))).apply(this, arguments);
  }
  function getPropertiesOfObj(_ref) {
    var _ref$obj = _ref.obj,
      obj = _ref$obj === void 0 ? {} : _ref$obj,
      _ref$keys = _ref.keys,
      keys = _ref$keys === void 0 ? [] : _ref$keys;
    /**
     * @描述 获取对象的指定属性集合
     * @param {*} { obj = {}, keys = [] }
     * @returns {*}
     */

    var newObj = {};
    keys.forEach(function (key) {
      newObj[key] = obj[key];
    });
    return newObj;
  }

  /** @描述 定义以对象形式 获取window属性值 */
  function getLogObjectValue(arr) {
    var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
    var suffix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '_o';
    var win2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : win;
    /** @描述 定义以对象形式 获取window属性值 */
    arr.forEach(function (newKey) {
      Object.defineProperty(win2, "".concat(prefix).concat(newKey).concat(suffix), {
        get: function get() {
          return console.log('%O', win2[newKey]);
        }
      });
    });
  }

  /** @描述 代理window,读取属性时,即打印对象 */
  function windowProxy() {
    var win2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : win;
    /** @描述 代理window,读取属性时,即打印对象 */
    var result;
    win2.enjoy_wp = new Proxy(win2, {
      get: function get(obj, prop) {
        result = obj[prop];
        console.log("\uD83C\uDF8F ".concat(prop, "=%O"), result);
        return result;
      }
    });
  }
  if (win.enjoy_tl) {
    console.error('win.enjoy_tl已经存在,请使用win.enjoy_tls');
    if (!win.enjoy_tls) win.enjoy_tls = tools;
    return;
  }
  win.enjoy_tl = tools;
  Object.defineProperty(tools, 'fns', {
    /** @描述 对象下的函数名列表 */get: function get() {
      return Object.keys(tools);
    }
  });
}
})();

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