nicecode-v2/packages/func/es/file/index.js

412 lines
24 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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); }
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; 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; }
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); }); }; }
function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }
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."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
import Base64 from 'base-64';
import JSZip from 'jszip';
import FileSaver from 'file-saver';
import { matchS3Prefix } from "../utils";
import { get, isString } from 'lodash-es';
/**
*
* @param url 需要转为图片的链接
* @returns 图片的 dom
*/
export var urlToImg = function urlToImg(url) {
var resImage = new Promise(function (resolve) {
var image = new Image();
image.crossOrigin = '';
image.src = url;
image.onload = function () {
resolve(image);
};
});
return resImage;
};
export var base64DecodeImageKey = function base64DecodeImageKey(base64ImgKey) {
var tempStr = base64ImgKey;
if (matchS3Prefix(tempStr)) {
tempStr = tempStr.replace(/^v[0-9]_/, '');
tempStr = Base64.decode(tempStr);
}
//分离bucket
var _tempStr$split = tempStr.split('_'),
_tempStr$split2 = _toArray(_tempStr$split),
bucket = _tempStr$split2[0],
pathArr = _tempStr$split2.slice(1);
return tempStr = "".concat(bucket, "/").concat(pathArr.join('_'));
};
/**
* 通过url获取图片的base64字符串
* @param src 图片链接
* @param outputFormat 图片格式
* @returns base64 @string
*/
export var getBase64ByUrl = function getBase64ByUrl(src) {
var outputFormat = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'image/png';
return new Promise(function (resolve, reject) {
var xhr = new XMLHttpRequest();
xhr.open('GET', src, true);
xhr.responseType = 'arraybuffer';
xhr.onload = function (e) {
if (Number(xhr.status) === 200) {
var uInt8Array = new Uint8Array(xhr.response);
var i = uInt8Array.length;
var binaryString = new Array(i);
while (i--) {
binaryString[i] = String.fromCharCode(uInt8Array[i]);
}
var data = binaryString.join('');
var base64 = window.btoa(data);
var dataUrl = 'data:' + (outputFormat || 'image/png') + ';base64,' + base64;
resolve(dataUrl);
} else {
reject(e);
}
};
xhr.onerror = function (e) {
reject(e);
};
xhr.send();
});
};
/**
* 把文件转base64
* @param file @file 文件
* @returns @string
*/
export var fileToBase64 = function fileToBase64(file) {
return new Promise(function (resolve, reject) {
var reader = new FileReader();
// 传入一个参数对象即可得到基于该参数对象的文本内容
reader.readAsDataURL(file);
reader.onload = function (e) {
// target.result 该属性表示目标对象的DataURL
resolve(e === null || e === void 0 ? void 0 : e.target.result);
};
reader.onerror = function (e) {
reject(e);
};
});
};
/**
*
* @param image @file 图片文件
* @param width @number 宽度
* @param height @number 高度
* @returns @string base64
*/
export var getBase64Image = function getBase64Image(image, width, height) {
// width、height调用时传入具体像素值控制大小 ,不传则默认图像大小
var canvas = document.createElement('canvas');
canvas.width = width !== undefined ? width : image.width;
canvas.height = height !== undefined ? height : image.height;
var ctx = canvas.getContext('2d');
ctx === null || ctx === void 0 || ctx.drawImage(image, 0, 0, canvas.width, canvas.height);
var ext = image.src.substring(image.src.lastIndexOf('.') + 1).toLowerCase();
var dataURL = canvas.toDataURL('image/' + ext);
return dataURL;
};
/**
* 通过图片获取base64
* @param src 图片地址
* @returns @string
*/
export var getBase64ByImage = function getBase64ByImage(src) {
return new Promise(function (resolve, reject) {
var image = new Image();
var timestamp = new Date().getTime();
var imgUrl = src + '?' + timestamp;
image.src = imgUrl;
image.onload = function () {
function getBase64Image(img) {
var canvas = document.createElement('canvas');
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext('2d');
ctx === null || ctx === void 0 || ctx.drawImage(img, 0, 0, img.width, img.height);
var ext = img.src.substring(img.src.lastIndexOf('.') + 1).toLowerCase();
var dataURL = canvas.toDataURL('image/' + ext);
return dataURL;
}
var base64 = getBase64Image(image);
resolve(base64);
};
image.onerror = function (e) {
reject(e);
};
});
};
/**
* url转base64
* @param {String} url - url地址
*/
export var urlToBase64V2 = function urlToBase64V2(url) {
return new Promise(function (resolve, reject) {
var image = new Image();
image.onload = function () {
var _canvas$getContext;
var canvas = document.createElement('canvas');
canvas.width = image.naturalWidth;
canvas.height = image.naturalHeight;
// 将图片插入画布并开始绘制
canvas === null || canvas === void 0 || (_canvas$getContext = canvas.getContext('2d')) === null || _canvas$getContext === void 0 || _canvas$getContext.drawImage(image, 0, 0);
// result
var result = canvas.toDataURL('image/png');
resolve(result);
};
// CORS 策略会存在跨域问题https://stackoverflow.com/questions/20424279/canvas-todataurl-securityerror
var imgUrl = url;
image.setAttribute('crossOrigin', 'Anonymous');
image.src = imgUrl;
// 图片加载失败的错误处理
image.onerror = function () {
reject(new Error('Images fail to load'));
};
}).catch(function (error) {
throw new Error(error);
});
};
/**
* base64转Blob
* @param {String} base64 - base64
*/
export function base64toBlob(base64) {
if (!base64) return;
var arr = base64.split(','),
// @ts-ignore
mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]),
n = bstr.length,
u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr], {
type: mime
});
}
/**
* 图片集打包压缩下载
* 1. url -> base64 -> blob
* 2. 将blob加入jsZip文件夹内用file-saver保存
* @param {Array<{url:string,name:string}>} imgDataList
* @param {string} zipName
*/
export var downloadPackageImages = /*#__PURE__*/function () {
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(imgDataList, zipName) {
var imgDataDownLoadList, imgBlobList, imageSuffix, zip, img, _i, src, suffix, base64ByUrl, blob, i;
return _regeneratorRuntime().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
imgDataDownLoadList = []; // 传入列表中可下载图片的集合
imgBlobList = []; // 图片转blob的集合
imageSuffix = []; // 图片后缀集
zip = new JSZip();
img = zip.folder(zipName);
_context.prev = 5;
_i = 0;
case 7:
if (!(_i < imgDataList.length)) {
_context.next = 22;
break;
}
src = imgDataList[_i].url;
suffix = src.substring(src.lastIndexOf('.'));
_context.next = 12;
return urlToBase64V2(imgDataList[_i].url);
case 12:
base64ByUrl = _context.sent;
if (base64ByUrl) {
_context.next = 15;
break;
}
return _context.abrupt("continue", 19);
case 15:
// @ts-ignore
blob = base64toBlob(base64ByUrl);
imgDataDownLoadList.push(imgDataList[_i]);
imgBlobList.push(blob);
imageSuffix.push(suffix);
case 19:
_i++;
_context.next = 7;
break;
case 22:
if (!(imgBlobList.length === 0)) {
_context.next = 24;
break;
}
throw new Error('The number of pictures is zero !');
case 24:
if (imgBlobList.length > 0) {
for (i = 0; i < imgBlobList.length; i++) {
img === null || img === void 0 || img.file(imgDataDownLoadList[i].name + get(imageSuffix, ".".concat(i), imageSuffix[0]),
// @ts-ignore
imgBlobList[i], {
base64: true
});
}
}
zip.generateAsync({
type: 'blob'
}).then(function (content) {
FileSaver.saveAs(content, zipName + '.zip'); // 利用file-saver保存文件
});
_context.next = 31;
break;
case 28:
_context.prev = 28;
_context.t0 = _context["catch"](5);
throw new Error(_context.t0);
case 31:
case "end":
return _context.stop();
}
}, _callee, null, [[5, 28]]);
}));
return function downloadPackageImages(_x, _x2) {
return _ref.apply(this, arguments);
};
}();
//文件size转单位
export function getFileSize(size) {
if (!size) return '';
var num = 1024.0; //byte
if (size < num) return size + 'B';
if (size < Math.pow(num, 2)) return (size / num).toFixed(2) + 'K'; //kb
if (size < Math.pow(num, 3)) return (size / Math.pow(num, 2)).toFixed(2) + 'M'; //M
if (size < Math.pow(num, 4)) return (size / Math.pow(num, 3)).toFixed(2) + 'G'; //G
return (size / Math.pow(num, 4)).toFixed(2) + 'T'; //T
}
// Base64转Blob
export var dataURLToBlob = function dataURLToBlob(dataurl) {
var arr = dataurl.split(',');
var mime = arr[0].match(/:(.*?);/)[1];
var bstr = atob(arr[1]);
var n = bstr.length;
var u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr], {
type: mime
});
};
/**
* key 转 http 链接
* @param originImgkey 图片的值 ,可以是 base64 也可以是 http链接
* @param host 图片的域值
* @returns {string}
*/
export var generateImg = function generateImg(_imgKey) {
var host = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'http://10.0.0.120';
var imgKey = _imgKey;
var imgUrl = '';
//判空
if (!imgKey) return '';
if (/(http|https):\/\/([\w.]+\/?)\S*/ig.test(imgKey)) {
return imgKey;
}
try {
if (matchS3Prefix(imgKey)) {
imgKey = base64DecodeImageKey(imgKey);
if (imgKey.endsWith('/')) {
var i = imgKey.substring(0, imgKey.length - 1);
imgKey = i;
}
}
imgUrl = "".concat(host, "/file/").concat(imgKey);
if (_imgKey.includes('v3')) {
imgUrl = "".concat(host, "/minio/").concat(imgKey);
}
} catch (error) {
console.error(error);
imgUrl = '';
}
return imgUrl;
};
/**
* 获取指定字符串后面的部分
* @param imageKey v1_开头的字符串
* @returns
*/
export var getImageKey = function getImageKey(imageKey, preFix) {
var splitIndex = preFix || 'v1_';
if (imageKey.startsWith(splitIndex)) {
return window.atob(imageKey.split(splitIndex)[1]).replace('_', '/');
} else {
return imageKey;
}
};
/**
* 获取图片
* @param img 图片的url链接
* @param odRect
* @returns file
*/
export var getFileByRect = /*#__PURE__*/function () {
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(img, odRect) {
var _commonCanvas$parentN;
var image, url, commonCanvas, commonCtx, base64, blobData, file;
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
if (!isString(img)) {
_context2.next = 7;
break;
}
url = generateImg(img);
_context2.next = 4;
return urlToImg(url);
case 4:
image = _context2.sent;
_context2.next = 8;
break;
case 7:
image = img;
case 8:
commonCanvas = document.createElement('canvas');
commonCanvas.width = odRect.w * image.width;
commonCanvas.height = odRect.h * image.height;
commonCanvas.style.display = 'none';
document.body.appendChild(commonCanvas);
commonCtx = commonCanvas.getContext('2d');
commonCtx === null || commonCtx === void 0 || commonCtx.translate(-odRect.x * image.width, -odRect.y * image.height);
commonCtx === null || commonCtx === void 0 || commonCtx.drawImage(image, 0, 0);
base64 = commonCanvas.toDataURL('image/jpeg');
blobData = dataURLToBlob(base64);
(_commonCanvas$parentN = commonCanvas.parentNode) === null || _commonCanvas$parentN === void 0 || _commonCanvas$parentN.removeChild(commonCanvas);
file = new window.File([blobData], "".concat(new Date().getTime()), {
type: 'image/jpeg'
});
return _context2.abrupt("return", file);
case 21:
case "end":
return _context2.stop();
}
}, _callee2);
}));
return function getFileByRect(_x3, _x4) {
return _ref2.apply(this, arguments);
};
}();