examTeamApp/unpackage/dist/dev/mp-weixin/common/vendor.js

32989 lines
1.1 MiB
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.

(global["webpackJsonp"] = global["webpackJsonp"] || []).push([["common/vendor"],{
/***/ 1:
/*!*********************************************************!*\
!*** ./node_modules/@dcloudio/uni-mp-weixin/dist/wx.js ***!
\*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var objectKeys = ['qy', 'env', 'error', 'version', 'lanDebug', 'cloud', 'serviceMarket', 'router', 'worklet', '__webpack_require_UNI_MP_PLUGIN__'];
var singlePageDisableKey = ['lanDebug', 'router', 'worklet'];
var target = typeof globalThis !== 'undefined' ? globalThis : function () {
return this;
}();
var key = ['w', 'x'].join('');
var oldWx = target[key];
var launchOption = oldWx.getLaunchOptionsSync ? oldWx.getLaunchOptionsSync() : null;
function isWxKey(key) {
if (launchOption && launchOption.scene === 1154 && singlePageDisableKey.includes(key)) {
return false;
}
return objectKeys.indexOf(key) > -1 || typeof oldWx[key] === 'function';
}
function initWx() {
var newWx = {};
for (var _key in oldWx) {
if (isWxKey(_key)) {
// TODO wrapper function
newWx[_key] = oldWx[_key];
}
}
return newWx;
}
target[key] = initWx();
var _default = target[key];
exports.default = _default;
/***/ }),
/***/ 10:
/*!****************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/nonIterableRest.js ***!
\****************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
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.");
}
module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 11:
/*!***************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/defineProperty.js ***!
\***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ 12);
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;
}
module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 12:
/*!**************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/toPropertyKey.js ***!
\**************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var _typeof = __webpack_require__(/*! ./typeof.js */ 13)["default"];
var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ 14);
function toPropertyKey(t) {
var i = toPrimitive(t, "string");
return "symbol" == _typeof(i) ? i : i + "";
}
module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 13:
/*!*******************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/typeof.js ***!
\*******************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
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;
/***/ }),
/***/ 14:
/*!************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/toPrimitive.js ***!
\************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var _typeof = __webpack_require__(/*! ./typeof.js */ 13)["default"];
function toPrimitive(t, r) {
if ("object" != _typeof(t) || !t) return t;
var e = t[Symbol.toPrimitive];
if (void 0 !== e) {
var i = e.call(t, r || "default");
if ("object" != _typeof(i)) return i;
throw new TypeError("@@toPrimitive must return a primitive value.");
}
return ("string" === r ? String : Number)(t);
}
module.exports = toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 15:
/*!**********************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/construct.js ***!
\**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ 16);
var isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ 17);
function _construct(t, e, r) {
if (isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);
var o = [null];
o.push.apply(o, e);
var p = new (t.bind.apply(t, o))();
return r && setPrototypeOf(p, r.prototype), p;
}
module.exports = _construct, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 16:
/*!***************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/setPrototypeOf.js ***!
\***************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
function _setPrototypeOf(o, p) {
module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
}, module.exports.__esModule = true, module.exports["default"] = module.exports;
return _setPrototypeOf(o, p);
}
module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 17:
/*!*************************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js ***!
\*************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
function _isNativeReflectConstruct() {
try {
var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
} catch (t) {}
return (module.exports = _isNativeReflectConstruct = function _isNativeReflectConstruct() {
return !!t;
}, module.exports.__esModule = true, module.exports["default"] = module.exports)();
}
module.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 18:
/*!******************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/toConsumableArray.js ***!
\******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ 19);
var iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ 20);
var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ 8);
var nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ 21);
function _toConsumableArray(arr) {
return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
}
module.exports = _toConsumableArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 19:
/*!******************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js ***!
\******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ 9);
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) return arrayLikeToArray(arr);
}
module.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 2:
/*!************************************************************!*\
!*** ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js ***!
\************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/* WEBPACK VAR INJECTION */(function(wx, global) {
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createApp = createApp;
exports.createComponent = createComponent;
exports.createPage = createPage;
exports.createPlugin = createPlugin;
exports.createSubpackageApp = createSubpackageApp;
exports.default = void 0;
var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ 5));
var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 11));
var _construct2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/construct */ 15));
var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ 18));
var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 13));
var _uniI18n = __webpack_require__(/*! @dcloudio/uni-i18n */ 22);
var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 25));
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
var realAtob;
var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
var b64re = /^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/;
if (typeof atob !== 'function') {
realAtob = function realAtob(str) {
str = String(str).replace(/[\t\n\f\r ]+/g, '');
if (!b64re.test(str)) {
throw new Error("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");
}
// Adding the padding if missing, for semplicity
str += '=='.slice(2 - (str.length & 3));
var bitmap;
var result = '';
var r1;
var r2;
var i = 0;
for (; i < str.length;) {
bitmap = b64.indexOf(str.charAt(i++)) << 18 | b64.indexOf(str.charAt(i++)) << 12 | (r1 = b64.indexOf(str.charAt(i++))) << 6 | (r2 = b64.indexOf(str.charAt(i++)));
result += r1 === 64 ? String.fromCharCode(bitmap >> 16 & 255) : r2 === 64 ? String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255) : String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255, bitmap & 255);
}
return result;
};
} else {
// 注意atob只能在全局对象上调用例如`const Base64 = {atob};Base64.atob('xxxx')`是错误的用法
realAtob = atob;
}
function b64DecodeUnicode(str) {
return decodeURIComponent(realAtob(str).split('').map(function (c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
}
function getCurrentUserInfo() {
var token = wx.getStorageSync('uni_id_token') || '';
var tokenArr = token.split('.');
if (!token || tokenArr.length !== 3) {
return {
uid: null,
role: [],
permission: [],
tokenExpired: 0
};
}
var userInfo;
try {
userInfo = JSON.parse(b64DecodeUnicode(tokenArr[1]));
} catch (error) {
throw new Error('获取当前用户信息出错,详细错误信息为:' + error.message);
}
userInfo.tokenExpired = userInfo.exp * 1000;
delete userInfo.exp;
delete userInfo.iat;
return userInfo;
}
function uniIdMixin(Vue) {
Vue.prototype.uniIDHasRole = function (roleId) {
var _getCurrentUserInfo = getCurrentUserInfo(),
role = _getCurrentUserInfo.role;
return role.indexOf(roleId) > -1;
};
Vue.prototype.uniIDHasPermission = function (permissionId) {
var _getCurrentUserInfo2 = getCurrentUserInfo(),
permission = _getCurrentUserInfo2.permission;
return this.uniIDHasRole('admin') || permission.indexOf(permissionId) > -1;
};
Vue.prototype.uniIDTokenValid = function () {
var _getCurrentUserInfo3 = getCurrentUserInfo(),
tokenExpired = _getCurrentUserInfo3.tokenExpired;
return tokenExpired > Date.now();
};
}
var _toString = Object.prototype.toString;
var hasOwnProperty = Object.prototype.hasOwnProperty;
function isFn(fn) {
return typeof fn === 'function';
}
function isStr(str) {
return typeof str === 'string';
}
function isObject(obj) {
return obj !== null && (0, _typeof2.default)(obj) === 'object';
}
function isPlainObject(obj) {
return _toString.call(obj) === '[object Object]';
}
function hasOwn(obj, key) {
return hasOwnProperty.call(obj, key);
}
function noop() {}
/**
* Create a cached version of a pure function.
*/
function cached(fn) {
var cache = Object.create(null);
return function cachedFn(str) {
var hit = cache[str];
return hit || (cache[str] = fn(str));
};
}
/**
* Camelize a hyphen-delimited string.
*/
var camelizeRE = /-(\w)/g;
var camelize = cached(function (str) {
return str.replace(camelizeRE, function (_, c) {
return c ? c.toUpperCase() : '';
});
});
function sortObject(obj) {
var sortObj = {};
if (isPlainObject(obj)) {
Object.keys(obj).sort().forEach(function (key) {
sortObj[key] = obj[key];
});
}
return !Object.keys(sortObj) ? obj : sortObj;
}
var HOOKS = ['invoke', 'success', 'fail', 'complete', 'returnValue'];
var globalInterceptors = {};
var scopedInterceptors = {};
function mergeHook(parentVal, childVal) {
var res = childVal ? parentVal ? parentVal.concat(childVal) : Array.isArray(childVal) ? childVal : [childVal] : parentVal;
return res ? dedupeHooks(res) : res;
}
function dedupeHooks(hooks) {
var res = [];
for (var i = 0; i < hooks.length; i++) {
if (res.indexOf(hooks[i]) === -1) {
res.push(hooks[i]);
}
}
return res;
}
function removeHook(hooks, hook) {
var index = hooks.indexOf(hook);
if (index !== -1) {
hooks.splice(index, 1);
}
}
function mergeInterceptorHook(interceptor, option) {
Object.keys(option).forEach(function (hook) {
if (HOOKS.indexOf(hook) !== -1 && isFn(option[hook])) {
interceptor[hook] = mergeHook(interceptor[hook], option[hook]);
}
});
}
function removeInterceptorHook(interceptor, option) {
if (!interceptor || !option) {
return;
}
Object.keys(option).forEach(function (hook) {
if (HOOKS.indexOf(hook) !== -1 && isFn(option[hook])) {
removeHook(interceptor[hook], option[hook]);
}
});
}
function addInterceptor(method, option) {
if (typeof method === 'string' && isPlainObject(option)) {
mergeInterceptorHook(scopedInterceptors[method] || (scopedInterceptors[method] = {}), option);
} else if (isPlainObject(method)) {
mergeInterceptorHook(globalInterceptors, method);
}
}
function removeInterceptor(method, option) {
if (typeof method === 'string') {
if (isPlainObject(option)) {
removeInterceptorHook(scopedInterceptors[method], option);
} else {
delete scopedInterceptors[method];
}
} else if (isPlainObject(method)) {
removeInterceptorHook(globalInterceptors, method);
}
}
function wrapperHook(hook, params) {
return function (data) {
return hook(data, params) || data;
};
}
function isPromise(obj) {
return !!obj && ((0, _typeof2.default)(obj) === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
}
function queue(hooks, data, params) {
var promise = false;
for (var i = 0; i < hooks.length; i++) {
var hook = hooks[i];
if (promise) {
promise = Promise.resolve(wrapperHook(hook, params));
} else {
var res = hook(data, params);
if (isPromise(res)) {
promise = Promise.resolve(res);
}
if (res === false) {
return {
then: function then() {}
};
}
}
}
return promise || {
then: function then(callback) {
return callback(data);
}
};
}
function wrapperOptions(interceptor) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
['success', 'fail', 'complete'].forEach(function (name) {
if (Array.isArray(interceptor[name])) {
var oldCallback = options[name];
options[name] = function callbackInterceptor(res) {
queue(interceptor[name], res, options).then(function (res) {
/* eslint-disable no-mixed-operators */
return isFn(oldCallback) && oldCallback(res) || res;
});
};
}
});
return options;
}
function wrapperReturnValue(method, returnValue) {
var returnValueHooks = [];
if (Array.isArray(globalInterceptors.returnValue)) {
returnValueHooks.push.apply(returnValueHooks, (0, _toConsumableArray2.default)(globalInterceptors.returnValue));
}
var interceptor = scopedInterceptors[method];
if (interceptor && Array.isArray(interceptor.returnValue)) {
returnValueHooks.push.apply(returnValueHooks, (0, _toConsumableArray2.default)(interceptor.returnValue));
}
returnValueHooks.forEach(function (hook) {
returnValue = hook(returnValue) || returnValue;
});
return returnValue;
}
function getApiInterceptorHooks(method) {
var interceptor = Object.create(null);
Object.keys(globalInterceptors).forEach(function (hook) {
if (hook !== 'returnValue') {
interceptor[hook] = globalInterceptors[hook].slice();
}
});
var scopedInterceptor = scopedInterceptors[method];
if (scopedInterceptor) {
Object.keys(scopedInterceptor).forEach(function (hook) {
if (hook !== 'returnValue') {
interceptor[hook] = (interceptor[hook] || []).concat(scopedInterceptor[hook]);
}
});
}
return interceptor;
}
function invokeApi(method, api, options) {
for (var _len = arguments.length, params = new Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {
params[_key - 3] = arguments[_key];
}
var interceptor = getApiInterceptorHooks(method);
if (interceptor && Object.keys(interceptor).length) {
if (Array.isArray(interceptor.invoke)) {
var res = queue(interceptor.invoke, options);
return res.then(function (options) {
// 重新访问 getApiInterceptorHooks, 允许 invoke 中再次调用 addInterceptor,removeInterceptor
return api.apply(void 0, [wrapperOptions(getApiInterceptorHooks(method), options)].concat(params));
});
} else {
return api.apply(void 0, [wrapperOptions(interceptor, options)].concat(params));
}
}
return api.apply(void 0, [options].concat(params));
}
var promiseInterceptor = {
returnValue: function returnValue(res) {
if (!isPromise(res)) {
return res;
}
return new Promise(function (resolve, reject) {
res.then(function (res) {
if (res[0]) {
reject(res[0]);
} else {
resolve(res[1]);
}
});
});
}
};
var SYNC_API_RE = /^\$|Window$|WindowStyle$|sendHostEvent|sendNativeEvent|restoreGlobal|requireGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64|getLocale|setLocale|invokePushCallback|getWindowInfo|getDeviceInfo|getAppBaseInfo|getSystemSetting|getAppAuthorizeSetting|initUTS|requireUTS|registerUTS/;
var CONTEXT_API_RE = /^create|Manager$/;
// Context例外情况
var CONTEXT_API_RE_EXC = ['createBLEConnection'];
// 同步例外情况
var ASYNC_API = ['createBLEConnection', 'createPushMessage'];
var CALLBACK_API_RE = /^on|^off/;
function isContextApi(name) {
return CONTEXT_API_RE.test(name) && CONTEXT_API_RE_EXC.indexOf(name) === -1;
}
function isSyncApi(name) {
return SYNC_API_RE.test(name) && ASYNC_API.indexOf(name) === -1;
}
function isCallbackApi(name) {
return CALLBACK_API_RE.test(name) && name !== 'onPush';
}
function handlePromise(promise) {
return promise.then(function (data) {
return [null, data];
}).catch(function (err) {
return [err];
});
}
function shouldPromise(name) {
if (isContextApi(name) || isSyncApi(name) || isCallbackApi(name)) {
return false;
}
return true;
}
/* eslint-disable no-extend-native */
if (!Promise.prototype.finally) {
Promise.prototype.finally = function (callback) {
var promise = this.constructor;
return this.then(function (value) {
return promise.resolve(callback()).then(function () {
return value;
});
}, function (reason) {
return promise.resolve(callback()).then(function () {
throw reason;
});
});
};
}
function promisify(name, api) {
if (!shouldPromise(name) || !isFn(api)) {
return api;
}
return function promiseApi() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
for (var _len2 = arguments.length, params = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
params[_key2 - 1] = arguments[_key2];
}
if (isFn(options.success) || isFn(options.fail) || isFn(options.complete)) {
return wrapperReturnValue(name, invokeApi.apply(void 0, [name, api, options].concat(params)));
}
return wrapperReturnValue(name, handlePromise(new Promise(function (resolve, reject) {
invokeApi.apply(void 0, [name, api, Object.assign({}, options, {
success: resolve,
fail: reject
})].concat(params));
})));
};
}
var EPS = 1e-4;
var BASE_DEVICE_WIDTH = 750;
var isIOS = false;
var deviceWidth = 0;
var deviceDPR = 0;
function checkDeviceWidth() {
var _wx$getSystemInfoSync = wx.getSystemInfoSync(),
platform = _wx$getSystemInfoSync.platform,
pixelRatio = _wx$getSystemInfoSync.pixelRatio,
windowWidth = _wx$getSystemInfoSync.windowWidth; // uni=>wx runtime 编译目标是 uni 对象,内部不允许直接使用 uni
deviceWidth = windowWidth;
deviceDPR = pixelRatio;
isIOS = platform === 'ios';
}
function upx2px(number, newDeviceWidth) {
if (deviceWidth === 0) {
checkDeviceWidth();
}
number = Number(number);
if (number === 0) {
return 0;
}
var result = number / BASE_DEVICE_WIDTH * (newDeviceWidth || deviceWidth);
if (result < 0) {
result = -result;
}
result = Math.floor(result + EPS);
if (result === 0) {
if (deviceDPR === 1 || !isIOS) {
result = 1;
} else {
result = 0.5;
}
}
return number < 0 ? -result : result;
}
var LOCALE_ZH_HANS = 'zh-Hans';
var LOCALE_ZH_HANT = 'zh-Hant';
var LOCALE_EN = 'en';
var LOCALE_FR = 'fr';
var LOCALE_ES = 'es';
var messages = {};
var locale;
{
locale = normalizeLocale(wx.getSystemInfoSync().language) || LOCALE_EN;
}
function initI18nMessages() {
if (!isEnableLocale()) {
return;
}
var localeKeys = Object.keys(__uniConfig.locales);
if (localeKeys.length) {
localeKeys.forEach(function (locale) {
var curMessages = messages[locale];
var userMessages = __uniConfig.locales[locale];
if (curMessages) {
Object.assign(curMessages, userMessages);
} else {
messages[locale] = userMessages;
}
});
}
}
initI18nMessages();
var i18n = (0, _uniI18n.initVueI18n)(locale, {});
var t = i18n.t;
var i18nMixin = i18n.mixin = {
beforeCreate: function beforeCreate() {
var _this = this;
var unwatch = i18n.i18n.watchLocale(function () {
_this.$forceUpdate();
});
this.$once('hook:beforeDestroy', function () {
unwatch();
});
},
methods: {
$$t: function $$t(key, values) {
return t(key, values);
}
}
};
var setLocale = i18n.setLocale;
var getLocale = i18n.getLocale;
function initAppLocale(Vue, appVm, locale) {
var state = Vue.observable({
locale: locale || i18n.getLocale()
});
var localeWatchers = [];
appVm.$watchLocale = function (fn) {
localeWatchers.push(fn);
};
Object.defineProperty(appVm, '$locale', {
get: function get() {
return state.locale;
},
set: function set(v) {
state.locale = v;
localeWatchers.forEach(function (watch) {
return watch(v);
});
}
});
}
function isEnableLocale() {
return typeof __uniConfig !== 'undefined' && __uniConfig.locales && !!Object.keys(__uniConfig.locales).length;
}
function include(str, parts) {
return !!parts.find(function (part) {
return str.indexOf(part) !== -1;
});
}
function startsWith(str, parts) {
return parts.find(function (part) {
return str.indexOf(part) === 0;
});
}
function normalizeLocale(locale, messages) {
if (!locale) {
return;
}
locale = locale.trim().replace(/_/g, '-');
if (messages && messages[locale]) {
return locale;
}
locale = locale.toLowerCase();
if (locale === 'chinese') {
// 支付宝
return LOCALE_ZH_HANS;
}
if (locale.indexOf('zh') === 0) {
if (locale.indexOf('-hans') > -1) {
return LOCALE_ZH_HANS;
}
if (locale.indexOf('-hant') > -1) {
return LOCALE_ZH_HANT;
}
if (include(locale, ['-tw', '-hk', '-mo', '-cht'])) {
return LOCALE_ZH_HANT;
}
return LOCALE_ZH_HANS;
}
var lang = startsWith(locale, [LOCALE_EN, LOCALE_FR, LOCALE_ES]);
if (lang) {
return lang;
}
}
// export function initI18n() {
// const localeKeys = Object.keys(__uniConfig.locales || {})
// if (localeKeys.length) {
// localeKeys.forEach((locale) =>
// i18n.add(locale, __uniConfig.locales[locale])
// )
// }
// }
function getLocale$1() {
// 优先使用 $locale
if (isFn(getApp)) {
var app = getApp({
allowDefault: true
});
if (app && app.$vm) {
return app.$vm.$locale;
}
}
return normalizeLocale(wx.getSystemInfoSync().language) || LOCALE_EN;
}
function setLocale$1(locale) {
var app = isFn(getApp) ? getApp() : false;
if (!app) {
return false;
}
var oldLocale = app.$vm.$locale;
if (oldLocale !== locale) {
app.$vm.$locale = locale;
onLocaleChangeCallbacks.forEach(function (fn) {
return fn({
locale: locale
});
});
return true;
}
return false;
}
var onLocaleChangeCallbacks = [];
function onLocaleChange(fn) {
if (onLocaleChangeCallbacks.indexOf(fn) === -1) {
onLocaleChangeCallbacks.push(fn);
}
}
if (typeof global !== 'undefined') {
global.getLocale = getLocale$1;
}
var interceptors = {
promiseInterceptor: promiseInterceptor
};
var baseApi = /*#__PURE__*/Object.freeze({
__proto__: null,
upx2px: upx2px,
getLocale: getLocale$1,
setLocale: setLocale$1,
onLocaleChange: onLocaleChange,
addInterceptor: addInterceptor,
removeInterceptor: removeInterceptor,
interceptors: interceptors
});
function findExistsPageIndex(url) {
var pages = getCurrentPages();
var len = pages.length;
while (len--) {
var page = pages[len];
if (page.$page && page.$page.fullPath === url) {
return len;
}
}
return -1;
}
var redirectTo = {
name: function name(fromArgs) {
if (fromArgs.exists === 'back' && fromArgs.delta) {
return 'navigateBack';
}
return 'redirectTo';
},
args: function args(fromArgs) {
if (fromArgs.exists === 'back' && fromArgs.url) {
var existsPageIndex = findExistsPageIndex(fromArgs.url);
if (existsPageIndex !== -1) {
var delta = getCurrentPages().length - 1 - existsPageIndex;
if (delta > 0) {
fromArgs.delta = delta;
}
}
}
}
};
var previewImage = {
args: function args(fromArgs) {
var currentIndex = parseInt(fromArgs.current);
if (isNaN(currentIndex)) {
return;
}
var urls = fromArgs.urls;
if (!Array.isArray(urls)) {
return;
}
var len = urls.length;
if (!len) {
return;
}
if (currentIndex < 0) {
currentIndex = 0;
} else if (currentIndex >= len) {
currentIndex = len - 1;
}
if (currentIndex > 0) {
fromArgs.current = urls[currentIndex];
fromArgs.urls = urls.filter(function (item, index) {
return index < currentIndex ? item !== urls[currentIndex] : true;
});
} else {
fromArgs.current = urls[0];
}
return {
indicator: false,
loop: false
};
}
};
var UUID_KEY = '__DC_STAT_UUID';
var deviceId;
function useDeviceId(result) {
deviceId = deviceId || wx.getStorageSync(UUID_KEY);
if (!deviceId) {
deviceId = Date.now() + '' + Math.floor(Math.random() * 1e7);
wx.setStorage({
key: UUID_KEY,
data: deviceId
});
}
result.deviceId = deviceId;
}
function addSafeAreaInsets(result) {
if (result.safeArea) {
var safeArea = result.safeArea;
result.safeAreaInsets = {
top: safeArea.top,
left: safeArea.left,
right: result.windowWidth - safeArea.right,
bottom: result.screenHeight - safeArea.bottom
};
}
}
function populateParameters(result) {
var _result$brand = result.brand,
brand = _result$brand === void 0 ? '' : _result$brand,
_result$model = result.model,
model = _result$model === void 0 ? '' : _result$model,
_result$system = result.system,
system = _result$system === void 0 ? '' : _result$system,
_result$language = result.language,
language = _result$language === void 0 ? '' : _result$language,
theme = result.theme,
version = result.version,
platform = result.platform,
fontSizeSetting = result.fontSizeSetting,
SDKVersion = result.SDKVersion,
pixelRatio = result.pixelRatio,
deviceOrientation = result.deviceOrientation;
// const isQuickApp = "mp-weixin".indexOf('quickapp-webview') !== -1
var extraParam = {};
// osName osVersion
var osName = '';
var osVersion = '';
{
osName = system.split(' ')[0] || '';
osVersion = system.split(' ')[1] || '';
}
var hostVersion = version;
// deviceType
var deviceType = getGetDeviceType(result, model);
// deviceModel
var deviceBrand = getDeviceBrand(brand);
// hostName
var _hostName = getHostName(result);
// deviceOrientation
var _deviceOrientation = deviceOrientation; // 仅 微信 百度 支持
// devicePixelRatio
var _devicePixelRatio = pixelRatio;
// SDKVersion
var _SDKVersion = SDKVersion;
// hostLanguage
var hostLanguage = language.replace(/_/g, '-');
// wx.getAccountInfoSync
var parameters = {
appId: "__UNI__20604F1",
appName: "Reedaw",
appVersion: "1.3.4",
appVersionCode: "134",
appLanguage: getAppLanguage(hostLanguage),
uniCompileVersion: "4.24",
uniRuntimeVersion: "4.24",
uniPlatform: undefined || "mp-weixin",
deviceBrand: deviceBrand,
deviceModel: model,
deviceType: deviceType,
devicePixelRatio: _devicePixelRatio,
deviceOrientation: _deviceOrientation,
osName: osName.toLocaleLowerCase(),
osVersion: osVersion,
hostTheme: theme,
hostVersion: hostVersion,
hostLanguage: hostLanguage,
hostName: _hostName,
hostSDKVersion: _SDKVersion,
hostFontSizeSetting: fontSizeSetting,
windowTop: 0,
windowBottom: 0,
// TODO
osLanguage: undefined,
osTheme: undefined,
ua: undefined,
hostPackageName: undefined,
browserName: undefined,
browserVersion: undefined
};
Object.assign(result, parameters, extraParam);
}
function getGetDeviceType(result, model) {
var deviceType = result.deviceType || 'phone';
{
var deviceTypeMaps = {
ipad: 'pad',
windows: 'pc',
mac: 'pc'
};
var deviceTypeMapsKeys = Object.keys(deviceTypeMaps);
var _model = model.toLocaleLowerCase();
for (var index = 0; index < deviceTypeMapsKeys.length; index++) {
var _m = deviceTypeMapsKeys[index];
if (_model.indexOf(_m) !== -1) {
deviceType = deviceTypeMaps[_m];
break;
}
}
}
return deviceType;
}
function getDeviceBrand(brand) {
var deviceBrand = brand;
if (deviceBrand) {
deviceBrand = brand.toLocaleLowerCase();
}
return deviceBrand;
}
function getAppLanguage(defaultLanguage) {
return getLocale$1 ? getLocale$1() : defaultLanguage;
}
function getHostName(result) {
var _platform = 'WeChat';
var _hostName = result.hostName || _platform; // mp-jd
{
if (result.environment) {
_hostName = result.environment;
} else if (result.host && result.host.env) {
_hostName = result.host.env;
}
}
return _hostName;
}
var getSystemInfo = {
returnValue: function returnValue(result) {
useDeviceId(result);
addSafeAreaInsets(result);
populateParameters(result);
}
};
var showActionSheet = {
args: function args(fromArgs) {
if ((0, _typeof2.default)(fromArgs) === 'object') {
fromArgs.alertText = fromArgs.title;
}
}
};
var getAppBaseInfo = {
returnValue: function returnValue(result) {
var _result = result,
version = _result.version,
language = _result.language,
SDKVersion = _result.SDKVersion,
theme = _result.theme;
var _hostName = getHostName(result);
var hostLanguage = language.replace('_', '-');
result = sortObject(Object.assign(result, {
appId: "__UNI__20604F1",
appName: "Reedaw",
appVersion: "1.3.4",
appVersionCode: "134",
appLanguage: getAppLanguage(hostLanguage),
hostVersion: version,
hostLanguage: hostLanguage,
hostName: _hostName,
hostSDKVersion: SDKVersion,
hostTheme: theme
}));
}
};
var getDeviceInfo = {
returnValue: function returnValue(result) {
var _result2 = result,
brand = _result2.brand,
model = _result2.model;
var deviceType = getGetDeviceType(result, model);
var deviceBrand = getDeviceBrand(brand);
useDeviceId(result);
result = sortObject(Object.assign(result, {
deviceType: deviceType,
deviceBrand: deviceBrand,
deviceModel: model
}));
}
};
var getWindowInfo = {
returnValue: function returnValue(result) {
addSafeAreaInsets(result);
result = sortObject(Object.assign(result, {
windowTop: 0,
windowBottom: 0
}));
}
};
var getAppAuthorizeSetting = {
returnValue: function returnValue(result) {
var locationReducedAccuracy = result.locationReducedAccuracy;
result.locationAccuracy = 'unsupported';
if (locationReducedAccuracy === true) {
result.locationAccuracy = 'reduced';
} else if (locationReducedAccuracy === false) {
result.locationAccuracy = 'full';
}
}
};
// import navigateTo from 'uni-helpers/navigate-to'
var compressImage = {
args: function args(fromArgs) {
// https://developers.weixin.qq.com/community/develop/doc/000c08940c865011298e0a43256800?highLine=compressHeight
if (fromArgs.compressedHeight && !fromArgs.compressHeight) {
fromArgs.compressHeight = fromArgs.compressedHeight;
}
if (fromArgs.compressedWidth && !fromArgs.compressWidth) {
fromArgs.compressWidth = fromArgs.compressedWidth;
}
}
};
var protocols = {
redirectTo: redirectTo,
// navigateTo, // 由于在微信开发者工具的页面参数会显示__id__参数因此暂时关闭mp-weixin对于navigateTo的AOP
previewImage: previewImage,
getSystemInfo: getSystemInfo,
getSystemInfoSync: getSystemInfo,
showActionSheet: showActionSheet,
getAppBaseInfo: getAppBaseInfo,
getDeviceInfo: getDeviceInfo,
getWindowInfo: getWindowInfo,
getAppAuthorizeSetting: getAppAuthorizeSetting,
compressImage: compressImage
};
var todos = ['vibrate', 'preloadPage', 'unPreloadPage', 'loadSubPackage'];
var canIUses = [];
var CALLBACKS = ['success', 'fail', 'cancel', 'complete'];
function processCallback(methodName, method, returnValue) {
return function (res) {
return method(processReturnValue(methodName, res, returnValue));
};
}
function processArgs(methodName, fromArgs) {
var argsOption = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var returnValue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
var keepFromArgs = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
if (isPlainObject(fromArgs)) {
// 一般 api 的参数解析
var toArgs = keepFromArgs === true ? fromArgs : {}; // returnValue 为 false 时,说明是格式化返回值,直接在返回值对象上修改赋值
if (isFn(argsOption)) {
argsOption = argsOption(fromArgs, toArgs) || {};
}
for (var key in fromArgs) {
if (hasOwn(argsOption, key)) {
var keyOption = argsOption[key];
if (isFn(keyOption)) {
keyOption = keyOption(fromArgs[key], fromArgs, toArgs);
}
if (!keyOption) {
// 不支持的参数
console.warn("The '".concat(methodName, "' method of platform '\u5FAE\u4FE1\u5C0F\u7A0B\u5E8F' does not support option '").concat(key, "'"));
} else if (isStr(keyOption)) {
// 重写参数 key
toArgs[keyOption] = fromArgs[key];
} else if (isPlainObject(keyOption)) {
// {name:newName,value:value}可重新指定参数 key:value
toArgs[keyOption.name ? keyOption.name : key] = keyOption.value;
}
} else if (CALLBACKS.indexOf(key) !== -1) {
if (isFn(fromArgs[key])) {
toArgs[key] = processCallback(methodName, fromArgs[key], returnValue);
}
} else {
if (!keepFromArgs) {
toArgs[key] = fromArgs[key];
}
}
}
return toArgs;
} else if (isFn(fromArgs)) {
fromArgs = processCallback(methodName, fromArgs, returnValue);
}
return fromArgs;
}
function processReturnValue(methodName, res, returnValue) {
var keepReturnValue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
if (isFn(protocols.returnValue)) {
// 处理通用 returnValue
res = protocols.returnValue(methodName, res);
}
return processArgs(methodName, res, returnValue, {}, keepReturnValue);
}
function wrapper(methodName, method) {
if (hasOwn(protocols, methodName)) {
var protocol = protocols[methodName];
if (!protocol) {
// 暂不支持的 api
return function () {
console.error("Platform '\u5FAE\u4FE1\u5C0F\u7A0B\u5E8F' does not support '".concat(methodName, "'."));
};
}
return function (arg1, arg2) {
// 目前 api 最多两个参数
var options = protocol;
if (isFn(protocol)) {
options = protocol(arg1);
}
arg1 = processArgs(methodName, arg1, options.args, options.returnValue);
var args = [arg1];
if (typeof arg2 !== 'undefined') {
args.push(arg2);
}
if (isFn(options.name)) {
methodName = options.name(arg1);
} else if (isStr(options.name)) {
methodName = options.name;
}
var returnValue = wx[methodName].apply(wx, args);
if (isSyncApi(methodName)) {
// 同步 api
return processReturnValue(methodName, returnValue, options.returnValue, isContextApi(methodName));
}
return returnValue;
};
}
return method;
}
var todoApis = Object.create(null);
var TODOS = ['onTabBarMidButtonTap', 'subscribePush', 'unsubscribePush', 'onPush', 'offPush', 'share'];
function createTodoApi(name) {
return function todoApi(_ref) {
var fail = _ref.fail,
complete = _ref.complete;
var res = {
errMsg: "".concat(name, ":fail method '").concat(name, "' not supported")
};
isFn(fail) && fail(res);
isFn(complete) && complete(res);
};
}
TODOS.forEach(function (name) {
todoApis[name] = createTodoApi(name);
});
var providers = {
oauth: ['weixin'],
share: ['weixin'],
payment: ['wxpay'],
push: ['weixin']
};
function getProvider(_ref2) {
var service = _ref2.service,
success = _ref2.success,
fail = _ref2.fail,
complete = _ref2.complete;
var res = false;
if (providers[service]) {
res = {
errMsg: 'getProvider:ok',
service: service,
provider: providers[service]
};
isFn(success) && success(res);
} else {
res = {
errMsg: 'getProvider:fail service not found'
};
isFn(fail) && fail(res);
}
isFn(complete) && complete(res);
}
var extraApi = /*#__PURE__*/Object.freeze({
__proto__: null,
getProvider: getProvider
});
var getEmitter = function () {
var Emitter;
return function getUniEmitter() {
if (!Emitter) {
Emitter = new _vue.default();
}
return Emitter;
};
}();
function apply(ctx, method, args) {
return ctx[method].apply(ctx, args);
}
function $on() {
return apply(getEmitter(), '$on', Array.prototype.slice.call(arguments));
}
function $off() {
return apply(getEmitter(), '$off', Array.prototype.slice.call(arguments));
}
function $once() {
return apply(getEmitter(), '$once', Array.prototype.slice.call(arguments));
}
function $emit() {
return apply(getEmitter(), '$emit', Array.prototype.slice.call(arguments));
}
var eventApi = /*#__PURE__*/Object.freeze({
__proto__: null,
$on: $on,
$off: $off,
$once: $once,
$emit: $emit
});
/**
* 框架内 try-catch
*/
/**
* 开发者 try-catch
*/
function tryCatch(fn) {
return function () {
try {
return fn.apply(fn, arguments);
} catch (e) {
// TODO
console.error(e);
}
};
}
function getApiCallbacks(params) {
var apiCallbacks = {};
for (var name in params) {
var param = params[name];
if (isFn(param)) {
apiCallbacks[name] = tryCatch(param);
delete params[name];
}
}
return apiCallbacks;
}
var cid;
var cidErrMsg;
var enabled;
function normalizePushMessage(message) {
try {
return JSON.parse(message);
} catch (e) {}
return message;
}
function invokePushCallback(args) {
if (args.type === 'enabled') {
enabled = true;
} else if (args.type === 'clientId') {
cid = args.cid;
cidErrMsg = args.errMsg;
invokeGetPushCidCallbacks(cid, args.errMsg);
} else if (args.type === 'pushMsg') {
var message = {
type: 'receive',
data: normalizePushMessage(args.message)
};
for (var i = 0; i < onPushMessageCallbacks.length; i++) {
var callback = onPushMessageCallbacks[i];
callback(message);
// 该消息已被阻止
if (message.stopped) {
break;
}
}
} else if (args.type === 'click') {
onPushMessageCallbacks.forEach(function (callback) {
callback({
type: 'click',
data: normalizePushMessage(args.message)
});
});
}
}
var getPushCidCallbacks = [];
function invokeGetPushCidCallbacks(cid, errMsg) {
getPushCidCallbacks.forEach(function (callback) {
callback(cid, errMsg);
});
getPushCidCallbacks.length = 0;
}
function getPushClientId(args) {
if (!isPlainObject(args)) {
args = {};
}
var _getApiCallbacks = getApiCallbacks(args),
success = _getApiCallbacks.success,
fail = _getApiCallbacks.fail,
complete = _getApiCallbacks.complete;
var hasSuccess = isFn(success);
var hasFail = isFn(fail);
var hasComplete = isFn(complete);
Promise.resolve().then(function () {
if (typeof enabled === 'undefined') {
enabled = false;
cid = '';
cidErrMsg = 'uniPush is not enabled';
}
getPushCidCallbacks.push(function (cid, errMsg) {
var res;
if (cid) {
res = {
errMsg: 'getPushClientId:ok',
cid: cid
};
hasSuccess && success(res);
} else {
res = {
errMsg: 'getPushClientId:fail' + (errMsg ? ' ' + errMsg : '')
};
hasFail && fail(res);
}
hasComplete && complete(res);
});
if (typeof cid !== 'undefined') {
invokeGetPushCidCallbacks(cid, cidErrMsg);
}
});
}
var onPushMessageCallbacks = [];
// 不使用 defineOnApi 实现,是因为 defineOnApi 依赖 UniServiceJSBridge ,该对象目前在小程序上未提供,故简单实现
var onPushMessage = function onPushMessage(fn) {
if (onPushMessageCallbacks.indexOf(fn) === -1) {
onPushMessageCallbacks.push(fn);
}
};
var offPushMessage = function offPushMessage(fn) {
if (!fn) {
onPushMessageCallbacks.length = 0;
} else {
var index = onPushMessageCallbacks.indexOf(fn);
if (index > -1) {
onPushMessageCallbacks.splice(index, 1);
}
}
};
var baseInfo = wx.getAppBaseInfo && wx.getAppBaseInfo();
if (!baseInfo) {
baseInfo = wx.getSystemInfoSync();
}
var host = baseInfo ? baseInfo.host : null;
var shareVideoMessage = host && host.env === 'SAAASDK' ? wx.miniapp.shareVideoMessage : wx.shareVideoMessage;
var api = /*#__PURE__*/Object.freeze({
__proto__: null,
shareVideoMessage: shareVideoMessage,
getPushClientId: getPushClientId,
onPushMessage: onPushMessage,
offPushMessage: offPushMessage,
invokePushCallback: invokePushCallback
});
var mocks = ['__route__', '__wxExparserNodeId__', '__wxWebviewId__'];
function findVmByVueId(vm, vuePid) {
var $children = vm.$children;
// 优先查找直属(反向查找:https://github.com/dcloudio/uni-app/issues/1200)
for (var i = $children.length - 1; i >= 0; i--) {
var childVm = $children[i];
if (childVm.$scope._$vueId === vuePid) {
return childVm;
}
}
// 反向递归查找
var parentVm;
for (var _i = $children.length - 1; _i >= 0; _i--) {
parentVm = findVmByVueId($children[_i], vuePid);
if (parentVm) {
return parentVm;
}
}
}
function initBehavior(options) {
return Behavior(options);
}
function isPage() {
return !!this.route;
}
function initRelation(detail) {
this.triggerEvent('__l', detail);
}
function selectAllComponents(mpInstance, selector, $refs) {
var components = mpInstance.selectAllComponents(selector) || [];
components.forEach(function (component) {
var ref = component.dataset.ref;
$refs[ref] = component.$vm || toSkip(component);
{
if (component.dataset.vueGeneric === 'scoped') {
component.selectAllComponents('.scoped-ref').forEach(function (scopedComponent) {
selectAllComponents(scopedComponent, selector, $refs);
});
}
}
});
}
function syncRefs(refs, newRefs) {
var oldKeys = (0, _construct2.default)(Set, (0, _toConsumableArray2.default)(Object.keys(refs)));
var newKeys = Object.keys(newRefs);
newKeys.forEach(function (key) {
var oldValue = refs[key];
var newValue = newRefs[key];
if (Array.isArray(oldValue) && Array.isArray(newValue) && oldValue.length === newValue.length && newValue.every(function (value) {
return oldValue.includes(value);
})) {
return;
}
refs[key] = newValue;
oldKeys.delete(key);
});
oldKeys.forEach(function (key) {
delete refs[key];
});
return refs;
}
function initRefs(vm) {
var mpInstance = vm.$scope;
var refs = {};
Object.defineProperty(vm, '$refs', {
get: function get() {
var $refs = {};
selectAllComponents(mpInstance, '.vue-ref', $refs);
// TODO 暂不考虑 for 中的 scoped
var forComponents = mpInstance.selectAllComponents('.vue-ref-in-for') || [];
forComponents.forEach(function (component) {
var ref = component.dataset.ref;
if (!$refs[ref]) {
$refs[ref] = [];
}
$refs[ref].push(component.$vm || toSkip(component));
});
return syncRefs(refs, $refs);
}
});
}
function handleLink(event) {
var _ref3 = event.detail || event.value,
vuePid = _ref3.vuePid,
vueOptions = _ref3.vueOptions; // detail 是微信,value 是百度(dipatch)
var parentVm;
if (vuePid) {
parentVm = findVmByVueId(this.$vm, vuePid);
}
if (!parentVm) {
parentVm = this.$vm;
}
vueOptions.parent = parentVm;
}
function markMPComponent(component) {
// 在 Vue 中标记为小程序组件
var IS_MP = '__v_isMPComponent';
Object.defineProperty(component, IS_MP, {
configurable: true,
enumerable: false,
value: true
});
return component;
}
function toSkip(obj) {
var OB = '__ob__';
var SKIP = '__v_skip';
if (isObject(obj) && Object.isExtensible(obj)) {
// 避免被 @vue/composition-api 观测
Object.defineProperty(obj, OB, {
configurable: true,
enumerable: false,
value: (0, _defineProperty2.default)({}, SKIP, true)
});
}
return obj;
}
var WORKLET_RE = /_(.*)_worklet_factory_/;
function initWorkletMethods(mpMethods, vueMethods) {
if (vueMethods) {
Object.keys(vueMethods).forEach(function (name) {
var matches = name.match(WORKLET_RE);
if (matches) {
var workletName = matches[1];
mpMethods[name] = vueMethods[name];
mpMethods[workletName] = vueMethods[workletName];
}
});
}
}
var MPPage = Page;
var MPComponent = Component;
var customizeRE = /:/g;
var customize = cached(function (str) {
return camelize(str.replace(customizeRE, '-'));
});
function initTriggerEvent(mpInstance) {
var oldTriggerEvent = mpInstance.triggerEvent;
var newTriggerEvent = function newTriggerEvent(event) {
for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
args[_key3 - 1] = arguments[_key3];
}
// 事件名统一转驼峰格式,仅处理:当前组件为 vue 组件、当前组件为 vue 组件子组件
if (this.$vm || this.dataset && this.dataset.comType) {
event = customize(event);
} else {
// 针对微信/QQ小程序单独补充驼峰格式事件以兼容历史项目
var newEvent = customize(event);
if (newEvent !== event) {
oldTriggerEvent.apply(this, [newEvent].concat(args));
}
}
return oldTriggerEvent.apply(this, [event].concat(args));
};
try {
// 京东小程序 triggerEvent 为只读
mpInstance.triggerEvent = newTriggerEvent;
} catch (error) {
mpInstance._triggerEvent = newTriggerEvent;
}
}
function initHook(name, options, isComponent) {
var oldHook = options[name];
options[name] = function () {
markMPComponent(this);
initTriggerEvent(this);
if (oldHook) {
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
args[_key4] = arguments[_key4];
}
return oldHook.apply(this, args);
}
};
}
if (!MPPage.__$wrappered) {
MPPage.__$wrappered = true;
Page = function Page() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
initHook('onLoad', options);
return MPPage(options);
};
Page.after = MPPage.after;
Component = function Component() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
initHook('created', options);
return MPComponent(options);
};
}
var PAGE_EVENT_HOOKS = ['onPullDownRefresh', 'onReachBottom', 'onAddToFavorites', 'onShareTimeline', 'onShareAppMessage', 'onPageScroll', 'onResize', 'onTabItemTap'];
function initMocks(vm, mocks) {
var mpInstance = vm.$mp[vm.mpType];
mocks.forEach(function (mock) {
if (hasOwn(mpInstance, mock)) {
vm[mock] = mpInstance[mock];
}
});
}
function hasHook(hook, vueOptions) {
if (!vueOptions) {
return true;
}
if (_vue.default.options && Array.isArray(_vue.default.options[hook])) {
return true;
}
vueOptions = vueOptions.default || vueOptions;
if (isFn(vueOptions)) {
if (isFn(vueOptions.extendOptions[hook])) {
return true;
}
if (vueOptions.super && vueOptions.super.options && Array.isArray(vueOptions.super.options[hook])) {
return true;
}
return false;
}
if (isFn(vueOptions[hook]) || Array.isArray(vueOptions[hook])) {
return true;
}
var mixins = vueOptions.mixins;
if (Array.isArray(mixins)) {
return !!mixins.find(function (mixin) {
return hasHook(hook, mixin);
});
}
}
function initHooks(mpOptions, hooks, vueOptions) {
hooks.forEach(function (hook) {
if (hasHook(hook, vueOptions)) {
mpOptions[hook] = function (args) {
return this.$vm && this.$vm.__call_hook(hook, args);
};
}
});
}
function initUnknownHooks(mpOptions, vueOptions) {
var excludes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
findHooks(vueOptions).forEach(function (hook) {
return initHook$1(mpOptions, hook, excludes);
});
}
function findHooks(vueOptions) {
var hooks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
if (vueOptions) {
Object.keys(vueOptions).forEach(function (name) {
if (name.indexOf('on') === 0 && isFn(vueOptions[name])) {
hooks.push(name);
}
});
}
return hooks;
}
function initHook$1(mpOptions, hook, excludes) {
if (excludes.indexOf(hook) === -1 && !hasOwn(mpOptions, hook)) {
mpOptions[hook] = function (args) {
return this.$vm && this.$vm.__call_hook(hook, args);
};
}
}
function initVueComponent(Vue, vueOptions) {
vueOptions = vueOptions.default || vueOptions;
var VueComponent;
if (isFn(vueOptions)) {
VueComponent = vueOptions;
} else {
VueComponent = Vue.extend(vueOptions);
}
vueOptions = VueComponent.options;
return [VueComponent, vueOptions];
}
function initSlots(vm, vueSlots) {
if (Array.isArray(vueSlots) && vueSlots.length) {
var $slots = Object.create(null);
vueSlots.forEach(function (slotName) {
$slots[slotName] = true;
});
vm.$scopedSlots = vm.$slots = $slots;
}
}
function initVueIds(vueIds, mpInstance) {
vueIds = (vueIds || '').split(',');
var len = vueIds.length;
if (len === 1) {
mpInstance._$vueId = vueIds[0];
} else if (len === 2) {
mpInstance._$vueId = vueIds[0];
mpInstance._$vuePid = vueIds[1];
}
}
function initData(vueOptions, context) {
var data = vueOptions.data || {};
var methods = vueOptions.methods || {};
if (typeof data === 'function') {
try {
data = data.call(context); // 支持 Vue.prototype 上挂的数据
} catch (e) {
if (Object({"NODE_ENV":"development","VUE_APP_DARK_MODE":"false","VUE_APP_NAME":"Reedaw","VUE_APP_PLATFORM":"mp-weixin","BASE_URL":"/"}).VUE_APP_DEBUG) {
console.warn('根据 Vue 的 data 函数初始化小程序 data 失败,请尽量确保 data 函数中不访问 vm 对象,否则可能影响首次数据渲染速度。', data);
}
}
} else {
try {
// 对 data 格式化
data = JSON.parse(JSON.stringify(data));
} catch (e) {}
}
if (!isPlainObject(data)) {
data = {};
}
Object.keys(methods).forEach(function (methodName) {
if (context.__lifecycle_hooks__.indexOf(methodName) === -1 && !hasOwn(data, methodName)) {
data[methodName] = methods[methodName];
}
});
return data;
}
var PROP_TYPES = [String, Number, Boolean, Object, Array, null];
function createObserver(name) {
return function observer(newVal, oldVal) {
if (this.$vm) {
this.$vm[name] = newVal; // 为了触发其他非 render watcher
}
};
}
function initBehaviors(vueOptions, initBehavior) {
var vueBehaviors = vueOptions.behaviors;
var vueExtends = vueOptions.extends;
var vueMixins = vueOptions.mixins;
var vueProps = vueOptions.props;
if (!vueProps) {
vueOptions.props = vueProps = [];
}
var behaviors = [];
if (Array.isArray(vueBehaviors)) {
vueBehaviors.forEach(function (behavior) {
behaviors.push(behavior.replace('uni://', "wx".concat("://")));
if (behavior === 'uni://form-field') {
if (Array.isArray(vueProps)) {
vueProps.push('name');
vueProps.push('value');
} else {
vueProps.name = {
type: String,
default: ''
};
vueProps.value = {
type: [String, Number, Boolean, Array, Object, Date],
default: ''
};
}
}
});
}
if (isPlainObject(vueExtends) && vueExtends.props) {
behaviors.push(initBehavior({
properties: initProperties(vueExtends.props, true)
}));
}
if (Array.isArray(vueMixins)) {
vueMixins.forEach(function (vueMixin) {
if (isPlainObject(vueMixin) && vueMixin.props) {
behaviors.push(initBehavior({
properties: initProperties(vueMixin.props, true)
}));
}
});
}
return behaviors;
}
function parsePropType(key, type, defaultValue, file) {
// [String]=>String
if (Array.isArray(type) && type.length === 1) {
return type[0];
}
return type;
}
function initProperties(props) {
var isBehavior = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var file = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
var options = arguments.length > 3 ? arguments[3] : undefined;
var properties = {};
if (!isBehavior) {
properties.vueId = {
type: String,
value: ''
};
{
if (options.virtualHost) {
properties.virtualHostStyle = {
type: null,
value: ''
};
properties.virtualHostClass = {
type: null,
value: ''
};
}
}
// scopedSlotsCompiler auto
properties.scopedSlotsCompiler = {
type: String,
value: ''
};
properties.vueSlots = {
// 小程序不能直接定义 $slots 的 props所以通过 vueSlots 转换到 $slots
type: null,
value: [],
observer: function observer(newVal, oldVal) {
var $slots = Object.create(null);
newVal.forEach(function (slotName) {
$slots[slotName] = true;
});
this.setData({
$slots: $slots
});
}
};
}
if (Array.isArray(props)) {
// ['title']
props.forEach(function (key) {
properties[key] = {
type: null,
observer: createObserver(key)
};
});
} else if (isPlainObject(props)) {
// {title:{type:String,default:''},content:String}
Object.keys(props).forEach(function (key) {
var opts = props[key];
if (isPlainObject(opts)) {
// title:{type:String,default:''}
var value = opts.default;
if (isFn(value)) {
value = value();
}
opts.type = parsePropType(key, opts.type);
properties[key] = {
type: PROP_TYPES.indexOf(opts.type) !== -1 ? opts.type : null,
value: value,
observer: createObserver(key)
};
} else {
// content:String
var type = parsePropType(key, opts);
properties[key] = {
type: PROP_TYPES.indexOf(type) !== -1 ? type : null,
observer: createObserver(key)
};
}
});
}
return properties;
}
function wrapper$1(event) {
// TODO 又得兼容 mpvue 的 mp 对象
try {
event.mp = JSON.parse(JSON.stringify(event));
} catch (e) {}
event.stopPropagation = noop;
event.preventDefault = noop;
event.target = event.target || {};
if (!hasOwn(event, 'detail')) {
event.detail = {};
}
if (hasOwn(event, 'markerId')) {
event.detail = (0, _typeof2.default)(event.detail) === 'object' ? event.detail : {};
event.detail.markerId = event.markerId;
}
if (isPlainObject(event.detail)) {
event.target = Object.assign({}, event.target, event.detail);
}
return event;
}
function getExtraValue(vm, dataPathsArray) {
var context = vm;
dataPathsArray.forEach(function (dataPathArray) {
var dataPath = dataPathArray[0];
var value = dataPathArray[2];
if (dataPath || typeof value !== 'undefined') {
// ['','',index,'disable']
var propPath = dataPathArray[1];
var valuePath = dataPathArray[3];
var vFor;
if (Number.isInteger(dataPath)) {
vFor = dataPath;
} else if (!dataPath) {
vFor = context;
} else if (typeof dataPath === 'string' && dataPath) {
if (dataPath.indexOf('#s#') === 0) {
vFor = dataPath.substr(3);
} else {
vFor = vm.__get_value(dataPath, context);
}
}
if (Number.isInteger(vFor)) {
context = value;
} else if (!propPath) {
context = vFor[value];
} else {
if (Array.isArray(vFor)) {
context = vFor.find(function (vForItem) {
return vm.__get_value(propPath, vForItem) === value;
});
} else if (isPlainObject(vFor)) {
context = Object.keys(vFor).find(function (vForKey) {
return vm.__get_value(propPath, vFor[vForKey]) === value;
});
} else {
console.error('v-for 暂不支持循环数据:', vFor);
}
}
if (valuePath) {
context = vm.__get_value(valuePath, context);
}
}
});
return context;
}
function processEventExtra(vm, extra, event, __args__) {
var extraObj = {};
if (Array.isArray(extra) && extra.length) {
/**
*[
* ['data.items', 'data.id', item.data.id],
* ['metas', 'id', meta.id]
*],
*[
* ['data.items', 'data.id', item.data.id],
* ['metas', 'id', meta.id]
*],
*'test'
*/
extra.forEach(function (dataPath, index) {
if (typeof dataPath === 'string') {
if (!dataPath) {
// model,prop.sync
extraObj['$' + index] = vm;
} else {
if (dataPath === '$event') {
// $event
extraObj['$' + index] = event;
} else if (dataPath === 'arguments') {
extraObj['$' + index] = event.detail ? event.detail.__args__ || __args__ : __args__;
} else if (dataPath.indexOf('$event.') === 0) {
// $event.target.value
extraObj['$' + index] = vm.__get_value(dataPath.replace('$event.', ''), event);
} else {
extraObj['$' + index] = vm.__get_value(dataPath);
}
}
} else {
extraObj['$' + index] = getExtraValue(vm, dataPath);
}
});
}
return extraObj;
}
function getObjByArray(arr) {
var obj = {};
for (var i = 1; i < arr.length; i++) {
var element = arr[i];
obj[element[0]] = element[1];
}
return obj;
}
function processEventArgs(vm, event) {
var args = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
var extra = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
var isCustom = arguments.length > 4 ? arguments[4] : undefined;
var methodName = arguments.length > 5 ? arguments[5] : undefined;
var isCustomMPEvent = false; // wxcomponent 组件,传递原始 event 对象
// fixed 用户直接触发 mpInstance.triggerEvent
var __args__ = isPlainObject(event.detail) ? event.detail.__args__ || [event.detail] : [event.detail];
if (isCustom) {
// 自定义事件
isCustomMPEvent = event.currentTarget && event.currentTarget.dataset && event.currentTarget.dataset.comType === 'wx';
if (!args.length) {
// 无参数,直接传入 event 或 detail 数组
if (isCustomMPEvent) {
return [event];
}
return __args__;
}
}
var extraObj = processEventExtra(vm, extra, event, __args__);
var ret = [];
args.forEach(function (arg) {
if (arg === '$event') {
if (methodName === '__set_model' && !isCustom) {
// input v-model value
ret.push(event.target.value);
} else {
if (isCustom && !isCustomMPEvent) {
ret.push(__args__[0]);
} else {
// wxcomponent 组件或内置组件
ret.push(event);
}
}
} else {
if (Array.isArray(arg) && arg[0] === 'o') {
ret.push(getObjByArray(arg));
} else if (typeof arg === 'string' && hasOwn(extraObj, arg)) {
ret.push(extraObj[arg]);
} else {
ret.push(arg);
}
}
});
return ret;
}
var ONCE = '~';
var CUSTOM = '^';
function isMatchEventType(eventType, optType) {
return eventType === optType || optType === 'regionchange' && (eventType === 'begin' || eventType === 'end');
}
function getContextVm(vm) {
var $parent = vm.$parent;
// 父组件是 scoped slots 或者其他自定义组件时继续查找
while ($parent && $parent.$parent && ($parent.$options.generic || $parent.$parent.$options.generic || $parent.$scope._$vuePid)) {
$parent = $parent.$parent;
}
return $parent && $parent.$parent;
}
function handleEvent(event) {
var _this2 = this;
event = wrapper$1(event);
// [['tap',[['handle',[1,2,a]],['handle1',[1,2,a]]]]]
var dataset = (event.currentTarget || event.target).dataset;
if (!dataset) {
return console.warn('事件信息不存在');
}
var eventOpts = dataset.eventOpts || dataset['event-opts']; // 支付宝 web-view 组件 dataset 非驼峰
if (!eventOpts) {
return console.warn('事件信息不存在');
}
// [['handle',[1,2,a]],['handle1',[1,2,a]]]
var eventType = event.type;
var ret = [];
eventOpts.forEach(function (eventOpt) {
var type = eventOpt[0];
var eventsArray = eventOpt[1];
var isCustom = type.charAt(0) === CUSTOM;
type = isCustom ? type.slice(1) : type;
var isOnce = type.charAt(0) === ONCE;
type = isOnce ? type.slice(1) : type;
if (eventsArray && isMatchEventType(eventType, type)) {
eventsArray.forEach(function (eventArray) {
var methodName = eventArray[0];
if (methodName) {
var handlerCtx = _this2.$vm;
if (handlerCtx.$options.generic) {
// mp-weixin,mp-toutiao 抽象节点模拟 scoped slots
handlerCtx = getContextVm(handlerCtx) || handlerCtx;
}
if (methodName === '$emit') {
handlerCtx.$emit.apply(handlerCtx, processEventArgs(_this2.$vm, event, eventArray[1], eventArray[2], isCustom, methodName));
return;
}
var handler = handlerCtx[methodName];
if (!isFn(handler)) {
var _type = _this2.$vm.mpType === 'page' ? 'Page' : 'Component';
var path = _this2.route || _this2.is;
throw new Error("".concat(_type, " \"").concat(path, "\" does not have a method \"").concat(methodName, "\""));
}
if (isOnce) {
if (handler.once) {
return;
}
handler.once = true;
}
var params = processEventArgs(_this2.$vm, event, eventArray[1], eventArray[2], isCustom, methodName);
params = Array.isArray(params) ? params : [];
// 参数尾部增加原始事件对象用于复杂表达式内获取额外数据
if (/=\s*\S+\.eventParams\s*\|\|\s*\S+\[['"]event-params['"]\]/.test(handler.toString())) {
// eslint-disable-next-line no-sparse-arrays
params = params.concat([,,,,,,,,,, event]);
}
ret.push(handler.apply(handlerCtx, params));
}
});
}
});
if (eventType === 'input' && ret.length === 1 && typeof ret[0] !== 'undefined') {
return ret[0];
}
}
var eventChannels = {};
function getEventChannel(id) {
var eventChannel = eventChannels[id];
delete eventChannels[id];
return eventChannel;
}
var hooks = ['onShow', 'onHide', 'onError', 'onPageNotFound', 'onThemeChange', 'onUnhandledRejection'];
function initEventChannel() {
_vue.default.prototype.getOpenerEventChannel = function () {
// 微信小程序使用自身getOpenerEventChannel
{
return this.$scope.getOpenerEventChannel();
}
};
var callHook = _vue.default.prototype.__call_hook;
_vue.default.prototype.__call_hook = function (hook, args) {
if (hook === 'onLoad' && args && args.__id__) {
this.__eventChannel__ = getEventChannel(args.__id__);
delete args.__id__;
}
return callHook.call(this, hook, args);
};
}
function initScopedSlotsParams() {
var center = {};
var parents = {};
function currentId(fn) {
var vueIds = this.$options.propsData.vueId;
if (vueIds) {
var vueId = vueIds.split(',')[0];
fn(vueId);
}
}
_vue.default.prototype.$hasSSP = function (vueId) {
var slot = center[vueId];
if (!slot) {
parents[vueId] = this;
this.$on('hook:destroyed', function () {
delete parents[vueId];
});
}
return slot;
};
_vue.default.prototype.$getSSP = function (vueId, name, needAll) {
var slot = center[vueId];
if (slot) {
var params = slot[name] || [];
if (needAll) {
return params;
}
return params[0];
}
};
_vue.default.prototype.$setSSP = function (name, value) {
var index = 0;
currentId.call(this, function (vueId) {
var slot = center[vueId];
var params = slot[name] = slot[name] || [];
params.push(value);
index = params.length - 1;
});
return index;
};
_vue.default.prototype.$initSSP = function () {
currentId.call(this, function (vueId) {
center[vueId] = {};
});
};
_vue.default.prototype.$callSSP = function () {
currentId.call(this, function (vueId) {
if (parents[vueId]) {
parents[vueId].$forceUpdate();
}
});
};
_vue.default.mixin({
destroyed: function destroyed() {
var propsData = this.$options.propsData;
var vueId = propsData && propsData.vueId;
if (vueId) {
delete center[vueId];
delete parents[vueId];
}
}
});
}
function parseBaseApp(vm, _ref4) {
var mocks = _ref4.mocks,
initRefs = _ref4.initRefs;
initEventChannel();
{
initScopedSlotsParams();
}
if (vm.$options.store) {
_vue.default.prototype.$store = vm.$options.store;
}
uniIdMixin(_vue.default);
_vue.default.prototype.mpHost = "mp-weixin";
_vue.default.mixin({
beforeCreate: function beforeCreate() {
if (!this.$options.mpType) {
return;
}
this.mpType = this.$options.mpType;
this.$mp = (0, _defineProperty2.default)({
data: {}
}, this.mpType, this.$options.mpInstance);
this.$scope = this.$options.mpInstance;
delete this.$options.mpType;
delete this.$options.mpInstance;
if (this.mpType === 'page' && typeof getApp === 'function') {
// hack vue-i18n
var app = getApp();
if (app.$vm && app.$vm.$i18n) {
this._i18n = app.$vm.$i18n;
}
}
if (this.mpType !== 'app') {
initRefs(this);
initMocks(this, mocks);
}
}
});
var appOptions = {
onLaunch: function onLaunch(args) {
if (this.$vm) {
// 已经初始化过了,主要是为了百度,百度 onShow 在 onLaunch 之前
return;
}
{
if (wx.canIUse && !wx.canIUse('nextTick')) {
// 事实 上2.2.3 即可,简单使用 2.3.0 的 nextTick 判断
console.error('当前微信基础库版本过低,请将 微信开发者工具-详情-项目设置-调试基础库版本 更换为`2.3.0`以上');
}
}
this.$vm = vm;
this.$vm.$mp = {
app: this
};
this.$vm.$scope = this;
// vm 上也挂载 globalData
this.$vm.globalData = this.globalData;
this.$vm._isMounted = true;
this.$vm.__call_hook('mounted', args);
this.$vm.__call_hook('onLaunch', args);
}
};
// 兼容旧版本 globalData
appOptions.globalData = vm.$options.globalData || {};
// 将 methods 中的方法挂在 getApp() 中
var methods = vm.$options.methods;
if (methods) {
Object.keys(methods).forEach(function (name) {
appOptions[name] = methods[name];
});
}
initAppLocale(_vue.default, vm, normalizeLocale(wx.getSystemInfoSync().language) || LOCALE_EN);
initHooks(appOptions, hooks);
initUnknownHooks(appOptions, vm.$options);
return appOptions;
}
function parseApp(vm) {
return parseBaseApp(vm, {
mocks: mocks,
initRefs: initRefs
});
}
function createApp(vm) {
App(parseApp(vm));
return vm;
}
var encodeReserveRE = /[!'()*]/g;
var encodeReserveReplacer = function encodeReserveReplacer(c) {
return '%' + c.charCodeAt(0).toString(16);
};
var commaRE = /%2C/g;
// fixed encodeURIComponent which is more conformant to RFC3986:
// - escapes [!'()*]
// - preserve commas
var encode = function encode(str) {
return encodeURIComponent(str).replace(encodeReserveRE, encodeReserveReplacer).replace(commaRE, ',');
};
function stringifyQuery(obj) {
var encodeStr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : encode;
var res = obj ? Object.keys(obj).map(function (key) {
var val = obj[key];
if (val === undefined) {
return '';
}
if (val === null) {
return encodeStr(key);
}
if (Array.isArray(val)) {
var result = [];
val.forEach(function (val2) {
if (val2 === undefined) {
return;
}
if (val2 === null) {
result.push(encodeStr(key));
} else {
result.push(encodeStr(key) + '=' + encodeStr(val2));
}
});
return result.join('&');
}
return encodeStr(key) + '=' + encodeStr(val);
}).filter(function (x) {
return x.length > 0;
}).join('&') : null;
return res ? "?".concat(res) : '';
}
function parseBaseComponent(vueComponentOptions) {
var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
isPage = _ref5.isPage,
initRelation = _ref5.initRelation;
var needVueOptions = arguments.length > 2 ? arguments[2] : undefined;
var _initVueComponent = initVueComponent(_vue.default, vueComponentOptions),
_initVueComponent2 = (0, _slicedToArray2.default)(_initVueComponent, 2),
VueComponent = _initVueComponent2[0],
vueOptions = _initVueComponent2[1];
var options = _objectSpread({
multipleSlots: true,
// styleIsolation: 'apply-shared',
addGlobalClass: true
}, vueOptions.options || {});
{
// 微信 multipleSlots 部分情况有 bug导致内容顺序错乱 如 u-list提供覆盖选项
if (vueOptions['mp-weixin'] && vueOptions['mp-weixin'].options) {
Object.assign(options, vueOptions['mp-weixin'].options);
}
}
var componentOptions = {
options: options,
data: initData(vueOptions, _vue.default.prototype),
behaviors: initBehaviors(vueOptions, initBehavior),
properties: initProperties(vueOptions.props, false, vueOptions.__file, options),
lifetimes: {
attached: function attached() {
var properties = this.properties;
var options = {
mpType: isPage.call(this) ? 'page' : 'component',
mpInstance: this,
propsData: properties
};
initVueIds(properties.vueId, this);
// 处理父子关系
initRelation.call(this, {
vuePid: this._$vuePid,
vueOptions: options
});
// 初始化 vue 实例
this.$vm = new VueComponent(options);
// 处理$slots,$scopedSlots暂不支持动态变化$slots
initSlots(this.$vm, properties.vueSlots);
// 触发首次 setData
this.$vm.$mount();
},
ready: function ready() {
// 当组件 props 默认值为 true初始化时传入 false 会导致 created,ready 触发, 但 attached 不触发
// https://developers.weixin.qq.com/community/develop/doc/00066ae2844cc0f8eb883e2a557800
if (this.$vm) {
this.$vm._isMounted = true;
this.$vm.__call_hook('mounted');
this.$vm.__call_hook('onReady');
}
},
detached: function detached() {
this.$vm && this.$vm.$destroy();
}
},
pageLifetimes: {
show: function show(args) {
this.$vm && this.$vm.__call_hook('onPageShow', args);
},
hide: function hide() {
this.$vm && this.$vm.__call_hook('onPageHide');
},
resize: function resize(size) {
this.$vm && this.$vm.__call_hook('onPageResize', size);
}
},
methods: {
__l: handleLink,
__e: handleEvent
}
};
// externalClasses
if (vueOptions.externalClasses) {
componentOptions.externalClasses = vueOptions.externalClasses;
}
if (Array.isArray(vueOptions.wxsCallMethods)) {
vueOptions.wxsCallMethods.forEach(function (callMethod) {
componentOptions.methods[callMethod] = function (args) {
return this.$vm[callMethod](args);
};
});
}
if (needVueOptions) {
return [componentOptions, vueOptions, VueComponent];
}
if (isPage) {
return componentOptions;
}
return [componentOptions, VueComponent];
}
function parseComponent(vueComponentOptions, needVueOptions) {
return parseBaseComponent(vueComponentOptions, {
isPage: isPage,
initRelation: initRelation
}, needVueOptions);
}
var hooks$1 = ['onShow', 'onHide', 'onUnload'];
hooks$1.push.apply(hooks$1, PAGE_EVENT_HOOKS);
function parseBasePage(vuePageOptions) {
var _parseComponent = parseComponent(vuePageOptions, true),
_parseComponent2 = (0, _slicedToArray2.default)(_parseComponent, 2),
pageOptions = _parseComponent2[0],
vueOptions = _parseComponent2[1];
initHooks(pageOptions.methods, hooks$1, vueOptions);
pageOptions.methods.onLoad = function (query) {
this.options = query;
var copyQuery = Object.assign({}, query);
delete copyQuery.__id__;
this.$page = {
fullPath: '/' + (this.route || this.is) + stringifyQuery(copyQuery)
};
this.$vm.$mp.query = query; // 兼容 mpvue
this.$vm.__call_hook('onLoad', query);
};
{
initUnknownHooks(pageOptions.methods, vuePageOptions, ['onReady']);
}
{
initWorkletMethods(pageOptions.methods, vueOptions.methods);
}
return pageOptions;
}
function parsePage(vuePageOptions) {
return parseBasePage(vuePageOptions);
}
function createPage(vuePageOptions) {
{
return Component(parsePage(vuePageOptions));
}
}
function createComponent(vueOptions) {
{
return Component(parseComponent(vueOptions));
}
}
function createSubpackageApp(vm) {
var appOptions = parseApp(vm);
var app = getApp({
allowDefault: true
});
vm.$scope = app;
var globalData = app.globalData;
if (globalData) {
Object.keys(appOptions.globalData).forEach(function (name) {
if (!hasOwn(globalData, name)) {
globalData[name] = appOptions.globalData[name];
}
});
}
Object.keys(appOptions).forEach(function (name) {
if (!hasOwn(app, name)) {
app[name] = appOptions[name];
}
});
if (isFn(appOptions.onShow) && wx.onAppShow) {
wx.onAppShow(function () {
for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
args[_key5] = arguments[_key5];
}
vm.__call_hook('onShow', args);
});
}
if (isFn(appOptions.onHide) && wx.onAppHide) {
wx.onAppHide(function () {
for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
args[_key6] = arguments[_key6];
}
vm.__call_hook('onHide', args);
});
}
if (isFn(appOptions.onLaunch)) {
var args = wx.getLaunchOptionsSync && wx.getLaunchOptionsSync();
vm.__call_hook('onLaunch', args);
}
return vm;
}
function createPlugin(vm) {
var appOptions = parseApp(vm);
if (isFn(appOptions.onShow) && wx.onAppShow) {
wx.onAppShow(function () {
for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {
args[_key7] = arguments[_key7];
}
vm.__call_hook('onShow', args);
});
}
if (isFn(appOptions.onHide) && wx.onAppHide) {
wx.onAppHide(function () {
for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {
args[_key8] = arguments[_key8];
}
vm.__call_hook('onHide', args);
});
}
if (isFn(appOptions.onLaunch)) {
var args = wx.getLaunchOptionsSync && wx.getLaunchOptionsSync();
vm.__call_hook('onLaunch', args);
}
return vm;
}
todos.forEach(function (todoApi) {
protocols[todoApi] = false;
});
canIUses.forEach(function (canIUseApi) {
var apiName = protocols[canIUseApi] && protocols[canIUseApi].name ? protocols[canIUseApi].name : canIUseApi;
if (!wx.canIUse(apiName)) {
protocols[canIUseApi] = false;
}
});
var uni = {};
if (typeof Proxy !== 'undefined' && "mp-weixin" !== 'app-plus') {
uni = new Proxy({}, {
get: function get(target, name) {
if (hasOwn(target, name)) {
return target[name];
}
if (baseApi[name]) {
return baseApi[name];
}
if (api[name]) {
return promisify(name, api[name]);
}
{
if (extraApi[name]) {
return promisify(name, extraApi[name]);
}
if (todoApis[name]) {
return promisify(name, todoApis[name]);
}
}
if (eventApi[name]) {
return eventApi[name];
}
return promisify(name, wrapper(name, wx[name]));
},
set: function set(target, name, value) {
target[name] = value;
return true;
}
});
} else {
Object.keys(baseApi).forEach(function (name) {
uni[name] = baseApi[name];
});
{
Object.keys(todoApis).forEach(function (name) {
uni[name] = promisify(name, todoApis[name]);
});
Object.keys(extraApi).forEach(function (name) {
uni[name] = promisify(name, extraApi[name]);
});
}
Object.keys(eventApi).forEach(function (name) {
uni[name] = eventApi[name];
});
Object.keys(api).forEach(function (name) {
uni[name] = promisify(name, api[name]);
});
Object.keys(wx).forEach(function (name) {
if (hasOwn(wx, name) || hasOwn(protocols, name)) {
uni[name] = promisify(name, wrapper(name, wx[name]));
}
});
}
wx.createApp = createApp;
wx.createPage = createPage;
wx.createComponent = createComponent;
wx.createSubpackageApp = createSubpackageApp;
wx.createPlugin = createPlugin;
var uni$1 = uni;
var _default = uni$1;
exports.default = _default;
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/wx.js */ 1)["default"], __webpack_require__(/*! ./../../../webpack/buildin/global.js */ 3)))
/***/ }),
/***/ 20:
/*!****************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/iterableToArray.js ***!
\****************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
function _iterableToArray(iter) {
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
}
module.exports = _iterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 21:
/*!******************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/nonIterableSpread.js ***!
\******************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
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.");
}
module.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 22:
/*!*************************************************************!*\
!*** ./node_modules/@dcloudio/uni-i18n/dist/uni-i18n.es.js ***!
\*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/* WEBPACK VAR INJECTION */(function(uni, global) {
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.LOCALE_ZH_HANT = exports.LOCALE_ZH_HANS = exports.LOCALE_FR = exports.LOCALE_ES = exports.LOCALE_EN = exports.I18n = exports.Formatter = void 0;
exports.compileI18nJsonStr = compileI18nJsonStr;
exports.hasI18nJson = hasI18nJson;
exports.initVueI18n = initVueI18n;
exports.isI18nStr = isI18nStr;
exports.isString = void 0;
exports.normalizeLocale = normalizeLocale;
exports.parseI18nJson = parseI18nJson;
exports.resolveLocale = resolveLocale;
var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ 5));
var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ 23));
var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ 24));
var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 13));
var isObject = function isObject(val) {
return val !== null && (0, _typeof2.default)(val) === 'object';
};
var defaultDelimiters = ['{', '}'];
var BaseFormatter = /*#__PURE__*/function () {
function BaseFormatter() {
(0, _classCallCheck2.default)(this, BaseFormatter);
this._caches = Object.create(null);
}
(0, _createClass2.default)(BaseFormatter, [{
key: "interpolate",
value: function interpolate(message, values) {
var delimiters = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultDelimiters;
if (!values) {
return [message];
}
var tokens = this._caches[message];
if (!tokens) {
tokens = parse(message, delimiters);
this._caches[message] = tokens;
}
return compile(tokens, values);
}
}]);
return BaseFormatter;
}();
exports.Formatter = BaseFormatter;
var RE_TOKEN_LIST_VALUE = /^(?:\d)+/;
var RE_TOKEN_NAMED_VALUE = /^(?:\w)+/;
function parse(format, _ref) {
var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
startDelimiter = _ref2[0],
endDelimiter = _ref2[1];
var tokens = [];
var position = 0;
var text = '';
while (position < format.length) {
var char = format[position++];
if (char === startDelimiter) {
if (text) {
tokens.push({
type: 'text',
value: text
});
}
text = '';
var sub = '';
char = format[position++];
while (char !== undefined && char !== endDelimiter) {
sub += char;
char = format[position++];
}
var isClosed = char === endDelimiter;
var type = RE_TOKEN_LIST_VALUE.test(sub) ? 'list' : isClosed && RE_TOKEN_NAMED_VALUE.test(sub) ? 'named' : 'unknown';
tokens.push({
value: sub,
type: type
});
}
// else if (char === '%') {
// // when found rails i18n syntax, skip text capture
// if (format[position] !== '{') {
// text += char
// }
// }
else {
text += char;
}
}
text && tokens.push({
type: 'text',
value: text
});
return tokens;
}
function compile(tokens, values) {
var compiled = [];
var index = 0;
var mode = Array.isArray(values) ? 'list' : isObject(values) ? 'named' : 'unknown';
if (mode === 'unknown') {
return compiled;
}
while (index < tokens.length) {
var token = tokens[index];
switch (token.type) {
case 'text':
compiled.push(token.value);
break;
case 'list':
compiled.push(values[parseInt(token.value, 10)]);
break;
case 'named':
if (mode === 'named') {
compiled.push(values[token.value]);
} else {
if (true) {
console.warn("Type of token '".concat(token.type, "' and format of value '").concat(mode, "' don't match!"));
}
}
break;
case 'unknown':
if (true) {
console.warn("Detect 'unknown' type of token!");
}
break;
}
index++;
}
return compiled;
}
var LOCALE_ZH_HANS = 'zh-Hans';
exports.LOCALE_ZH_HANS = LOCALE_ZH_HANS;
var LOCALE_ZH_HANT = 'zh-Hant';
exports.LOCALE_ZH_HANT = LOCALE_ZH_HANT;
var LOCALE_EN = 'en';
exports.LOCALE_EN = LOCALE_EN;
var LOCALE_FR = 'fr';
exports.LOCALE_FR = LOCALE_FR;
var LOCALE_ES = 'es';
exports.LOCALE_ES = LOCALE_ES;
var hasOwnProperty = Object.prototype.hasOwnProperty;
var hasOwn = function hasOwn(val, key) {
return hasOwnProperty.call(val, key);
};
var defaultFormatter = new BaseFormatter();
function include(str, parts) {
return !!parts.find(function (part) {
return str.indexOf(part) !== -1;
});
}
function startsWith(str, parts) {
return parts.find(function (part) {
return str.indexOf(part) === 0;
});
}
function normalizeLocale(locale, messages) {
if (!locale) {
return;
}
locale = locale.trim().replace(/_/g, '-');
if (messages && messages[locale]) {
return locale;
}
locale = locale.toLowerCase();
if (locale === 'chinese') {
// 支付宝
return LOCALE_ZH_HANS;
}
if (locale.indexOf('zh') === 0) {
if (locale.indexOf('-hans') > -1) {
return LOCALE_ZH_HANS;
}
if (locale.indexOf('-hant') > -1) {
return LOCALE_ZH_HANT;
}
if (include(locale, ['-tw', '-hk', '-mo', '-cht'])) {
return LOCALE_ZH_HANT;
}
return LOCALE_ZH_HANS;
}
var locales = [LOCALE_EN, LOCALE_FR, LOCALE_ES];
if (messages && Object.keys(messages).length > 0) {
locales = Object.keys(messages);
}
var lang = startsWith(locale, locales);
if (lang) {
return lang;
}
}
var I18n = /*#__PURE__*/function () {
function I18n(_ref3) {
var locale = _ref3.locale,
fallbackLocale = _ref3.fallbackLocale,
messages = _ref3.messages,
watcher = _ref3.watcher,
formater = _ref3.formater;
(0, _classCallCheck2.default)(this, I18n);
this.locale = LOCALE_EN;
this.fallbackLocale = LOCALE_EN;
this.message = {};
this.messages = {};
this.watchers = [];
if (fallbackLocale) {
this.fallbackLocale = fallbackLocale;
}
this.formater = formater || defaultFormatter;
this.messages = messages || {};
this.setLocale(locale || LOCALE_EN);
if (watcher) {
this.watchLocale(watcher);
}
}
(0, _createClass2.default)(I18n, [{
key: "setLocale",
value: function setLocale(locale) {
var _this = this;
var oldLocale = this.locale;
this.locale = normalizeLocale(locale, this.messages) || this.fallbackLocale;
if (!this.messages[this.locale]) {
// 可能初始化时不存在
this.messages[this.locale] = {};
}
this.message = this.messages[this.locale];
// 仅发生变化时,通知
if (oldLocale !== this.locale) {
this.watchers.forEach(function (watcher) {
watcher(_this.locale, oldLocale);
});
}
}
}, {
key: "getLocale",
value: function getLocale() {
return this.locale;
}
}, {
key: "watchLocale",
value: function watchLocale(fn) {
var _this2 = this;
var index = this.watchers.push(fn) - 1;
return function () {
_this2.watchers.splice(index, 1);
};
}
}, {
key: "add",
value: function add(locale, message) {
var override = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
var curMessages = this.messages[locale];
if (curMessages) {
if (override) {
Object.assign(curMessages, message);
} else {
Object.keys(message).forEach(function (key) {
if (!hasOwn(curMessages, key)) {
curMessages[key] = message[key];
}
});
}
} else {
this.messages[locale] = message;
}
}
}, {
key: "f",
value: function f(message, values, delimiters) {
return this.formater.interpolate(message, values, delimiters).join('');
}
}, {
key: "t",
value: function t(key, locale, values) {
var message = this.message;
if (typeof locale === 'string') {
locale = normalizeLocale(locale, this.messages);
locale && (message = this.messages[locale]);
} else {
values = locale;
}
if (!hasOwn(message, key)) {
console.warn("Cannot translate the value of keypath ".concat(key, ". Use the value of keypath as default."));
return key;
}
return this.formater.interpolate(message[key], values).join('');
}
}]);
return I18n;
}();
exports.I18n = I18n;
function watchAppLocale(appVm, i18n) {
// 需要保证 watch 的触发在组件渲染之前
if (appVm.$watchLocale) {
// vue2
appVm.$watchLocale(function (newLocale) {
i18n.setLocale(newLocale);
});
} else {
appVm.$watch(function () {
return appVm.$locale;
}, function (newLocale) {
i18n.setLocale(newLocale);
});
}
}
function getDefaultLocale() {
if (typeof uni !== 'undefined' && uni.getLocale) {
return uni.getLocale();
}
// 小程序平台uni 和 uni-i18n 互相引用,导致访问不到 uni故在 global 上挂了 getLocale
if (typeof global !== 'undefined' && global.getLocale) {
return global.getLocale();
}
return LOCALE_EN;
}
function initVueI18n(locale) {
var messages = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var fallbackLocale = arguments.length > 2 ? arguments[2] : undefined;
var watcher = arguments.length > 3 ? arguments[3] : undefined;
// 兼容旧版本入参
if (typeof locale !== 'string') {
var _ref4 = [messages, locale];
locale = _ref4[0];
messages = _ref4[1];
}
if (typeof locale !== 'string') {
// 因为小程序平台uni-i18n 和 uni 互相引用,导致此时访问 uni 时,为 undefined
locale = getDefaultLocale();
}
if (typeof fallbackLocale !== 'string') {
fallbackLocale = typeof __uniConfig !== 'undefined' && __uniConfig.fallbackLocale || LOCALE_EN;
}
var i18n = new I18n({
locale: locale,
fallbackLocale: fallbackLocale,
messages: messages,
watcher: watcher
});
var _t = function t(key, values) {
if (typeof getApp !== 'function') {
// app view
/* eslint-disable no-func-assign */
_t = function t(key, values) {
return i18n.t(key, values);
};
} else {
var isWatchedAppLocale = false;
_t = function t(key, values) {
var appVm = getApp().$vm;
// 可能$vm还不存在比如在支付宝小程序中组件定义较早在props的default里使用了t()函数如uni-goods-nav此时app还未初始化
// options: {
// type: Array,
// default () {
// return [{
// icon: 'shop',
// text: t("uni-goods-nav.options.shop"),
// }, {
// icon: 'cart',
// text: t("uni-goods-nav.options.cart")
// }]
// }
// },
if (appVm) {
// 触发响应式
appVm.$locale;
if (!isWatchedAppLocale) {
isWatchedAppLocale = true;
watchAppLocale(appVm, i18n);
}
}
return i18n.t(key, values);
};
}
return _t(key, values);
};
return {
i18n: i18n,
f: function f(message, values, delimiters) {
return i18n.f(message, values, delimiters);
},
t: function t(key, values) {
return _t(key, values);
},
add: function add(locale, message) {
var override = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
return i18n.add(locale, message, override);
},
watch: function watch(fn) {
return i18n.watchLocale(fn);
},
getLocale: function getLocale() {
return i18n.getLocale();
},
setLocale: function setLocale(newLocale) {
return i18n.setLocale(newLocale);
}
};
}
var isString = function isString(val) {
return typeof val === 'string';
};
exports.isString = isString;
var formater;
function hasI18nJson(jsonObj, delimiters) {
if (!formater) {
formater = new BaseFormatter();
}
return walkJsonObj(jsonObj, function (jsonObj, key) {
var value = jsonObj[key];
if (isString(value)) {
if (isI18nStr(value, delimiters)) {
return true;
}
} else {
return hasI18nJson(value, delimiters);
}
});
}
function parseI18nJson(jsonObj, values, delimiters) {
if (!formater) {
formater = new BaseFormatter();
}
walkJsonObj(jsonObj, function (jsonObj, key) {
var value = jsonObj[key];
if (isString(value)) {
if (isI18nStr(value, delimiters)) {
jsonObj[key] = compileStr(value, values, delimiters);
}
} else {
parseI18nJson(value, values, delimiters);
}
});
return jsonObj;
}
function compileI18nJsonStr(jsonStr, _ref5) {
var locale = _ref5.locale,
locales = _ref5.locales,
delimiters = _ref5.delimiters;
if (!isI18nStr(jsonStr, delimiters)) {
return jsonStr;
}
if (!formater) {
formater = new BaseFormatter();
}
var localeValues = [];
Object.keys(locales).forEach(function (name) {
if (name !== locale) {
localeValues.push({
locale: name,
values: locales[name]
});
}
});
localeValues.unshift({
locale: locale,
values: locales[locale]
});
try {
return JSON.stringify(compileJsonObj(JSON.parse(jsonStr), localeValues, delimiters), null, 2);
} catch (e) {}
return jsonStr;
}
function isI18nStr(value, delimiters) {
return value.indexOf(delimiters[0]) > -1;
}
function compileStr(value, values, delimiters) {
return formater.interpolate(value, values, delimiters).join('');
}
function compileValue(jsonObj, key, localeValues, delimiters) {
var value = jsonObj[key];
if (isString(value)) {
// 存在国际化
if (isI18nStr(value, delimiters)) {
jsonObj[key] = compileStr(value, localeValues[0].values, delimiters);
if (localeValues.length > 1) {
// 格式化国际化语言
var valueLocales = jsonObj[key + 'Locales'] = {};
localeValues.forEach(function (localValue) {
valueLocales[localValue.locale] = compileStr(value, localValue.values, delimiters);
});
}
}
} else {
compileJsonObj(value, localeValues, delimiters);
}
}
function compileJsonObj(jsonObj, localeValues, delimiters) {
walkJsonObj(jsonObj, function (jsonObj, key) {
compileValue(jsonObj, key, localeValues, delimiters);
});
return jsonObj;
}
function walkJsonObj(jsonObj, walk) {
if (Array.isArray(jsonObj)) {
for (var i = 0; i < jsonObj.length; i++) {
if (walk(jsonObj, i)) {
return true;
}
}
} else if (isObject(jsonObj)) {
for (var key in jsonObj) {
if (walk(jsonObj, key)) {
return true;
}
}
}
return false;
}
function resolveLocale(locales) {
return function (locale) {
if (!locale) {
return locale;
}
locale = normalizeLocale(locale) || locale;
return resolveLocaleChain(locale).find(function (locale) {
return locales.indexOf(locale) > -1;
});
};
}
function resolveLocaleChain(locale) {
var chain = [];
var tokens = locale.split('-');
while (tokens.length) {
chain.push(tokens.join('-'));
tokens.pop();
}
return chain;
}
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 2)["default"], __webpack_require__(/*! ./../../../webpack/buildin/global.js */ 3)))
/***/ }),
/***/ 23:
/*!***************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/classCallCheck.js ***!
\***************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 24:
/*!************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/createClass.js ***!
\************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ 12);
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
Object.defineProperty(Constructor, "prototype", {
writable: false
});
return Constructor;
}
module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 25:
/*!******************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/mp-vue/dist/mp.runtime.esm.js ***!
\******************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* WEBPACK VAR INJECTION */(function(global) {/*!
* Vue.js v2.6.11
* (c) 2014-2023 Evan You
* Released under the MIT License.
*/
/* */
var emptyObject = Object.freeze({});
// These helpers produce better VM code in JS engines due to their
// explicitness and function inlining.
function isUndef (v) {
return v === undefined || v === null
}
function isDef (v) {
return v !== undefined && v !== null
}
function isTrue (v) {
return v === true
}
function isFalse (v) {
return v === false
}
/**
* Check if value is primitive.
*/
function isPrimitive (value) {
return (
typeof value === 'string' ||
typeof value === 'number' ||
// $flow-disable-line
typeof value === 'symbol' ||
typeof value === 'boolean'
)
}
/**
* Quick object check - this is primarily used to tell
* Objects from primitive values when we know the value
* is a JSON-compliant type.
*/
function isObject (obj) {
return obj !== null && typeof obj === 'object'
}
/**
* Get the raw type string of a value, e.g., [object Object].
*/
var _toString = Object.prototype.toString;
function toRawType (value) {
return _toString.call(value).slice(8, -1)
}
/**
* Strict object type check. Only returns true
* for plain JavaScript objects.
*/
function isPlainObject (obj) {
return _toString.call(obj) === '[object Object]'
}
function isRegExp (v) {
return _toString.call(v) === '[object RegExp]'
}
/**
* Check if val is a valid array index.
*/
function isValidArrayIndex (val) {
var n = parseFloat(String(val));
return n >= 0 && Math.floor(n) === n && isFinite(val)
}
function isPromise (val) {
return (
isDef(val) &&
typeof val.then === 'function' &&
typeof val.catch === 'function'
)
}
/**
* Convert a value to a string that is actually rendered.
*/
function toString (val) {
return val == null
? ''
: Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)
? JSON.stringify(val, null, 2)
: String(val)
}
/**
* Convert an input value to a number for persistence.
* If the conversion fails, return original string.
*/
function toNumber (val) {
var n = parseFloat(val);
return isNaN(n) ? val : n
}
/**
* Make a map and return a function for checking if a key
* is in that map.
*/
function makeMap (
str,
expectsLowerCase
) {
var map = Object.create(null);
var list = str.split(',');
for (var i = 0; i < list.length; i++) {
map[list[i]] = true;
}
return expectsLowerCase
? function (val) { return map[val.toLowerCase()]; }
: function (val) { return map[val]; }
}
/**
* Check if a tag is a built-in tag.
*/
var isBuiltInTag = makeMap('slot,component', true);
/**
* Check if an attribute is a reserved attribute.
*/
var isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');
/**
* Remove an item from an array.
*/
function remove (arr, item) {
if (arr.length) {
var index = arr.indexOf(item);
if (index > -1) {
return arr.splice(index, 1)
}
}
}
/**
* Check whether an object has the property.
*/
var hasOwnProperty = Object.prototype.hasOwnProperty;
function hasOwn (obj, key) {
return hasOwnProperty.call(obj, key)
}
/**
* Create a cached version of a pure function.
*/
function cached (fn) {
var cache = Object.create(null);
return (function cachedFn (str) {
var hit = cache[str];
return hit || (cache[str] = fn(str))
})
}
/**
* Camelize a hyphen-delimited string.
*/
var camelizeRE = /-(\w)/g;
var camelize = cached(function (str) {
return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })
});
/**
* Capitalize a string.
*/
var capitalize = cached(function (str) {
return str.charAt(0).toUpperCase() + str.slice(1)
});
/**
* Hyphenate a camelCase string.
*/
var hyphenateRE = /\B([A-Z])/g;
var hyphenate = cached(function (str) {
return str.replace(hyphenateRE, '-$1').toLowerCase()
});
/**
* Simple bind polyfill for environments that do not support it,
* e.g., PhantomJS 1.x. Technically, we don't need this anymore
* since native bind is now performant enough in most browsers.
* But removing it would mean breaking code that was able to run in
* PhantomJS 1.x, so this must be kept for backward compatibility.
*/
/* istanbul ignore next */
function polyfillBind (fn, ctx) {
function boundFn (a) {
var l = arguments.length;
return l
? l > 1
? fn.apply(ctx, arguments)
: fn.call(ctx, a)
: fn.call(ctx)
}
boundFn._length = fn.length;
return boundFn
}
function nativeBind (fn, ctx) {
return fn.bind(ctx)
}
var bind = Function.prototype.bind
? nativeBind
: polyfillBind;
/**
* Convert an Array-like object to a real Array.
*/
function toArray (list, start) {
start = start || 0;
var i = list.length - start;
var ret = new Array(i);
while (i--) {
ret[i] = list[i + start];
}
return ret
}
/**
* Mix properties into target object.
*/
function extend (to, _from) {
for (var key in _from) {
to[key] = _from[key];
}
return to
}
/**
* Merge an Array of Objects into a single Object.
*/
function toObject (arr) {
var res = {};
for (var i = 0; i < arr.length; i++) {
if (arr[i]) {
extend(res, arr[i]);
}
}
return res
}
/* eslint-disable no-unused-vars */
/**
* Perform no operation.
* Stubbing args to make Flow happy without leaving useless transpiled code
* with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).
*/
function noop (a, b, c) {}
/**
* Always return false.
*/
var no = function (a, b, c) { return false; };
/* eslint-enable no-unused-vars */
/**
* Return the same value.
*/
var identity = function (_) { return _; };
/**
* Check if two values are loosely equal - that is,
* if they are plain objects, do they have the same shape?
*/
function looseEqual (a, b) {
if (a === b) { return true }
var isObjectA = isObject(a);
var isObjectB = isObject(b);
if (isObjectA && isObjectB) {
try {
var isArrayA = Array.isArray(a);
var isArrayB = Array.isArray(b);
if (isArrayA && isArrayB) {
return a.length === b.length && a.every(function (e, i) {
return looseEqual(e, b[i])
})
} else if (a instanceof Date && b instanceof Date) {
return a.getTime() === b.getTime()
} else if (!isArrayA && !isArrayB) {
var keysA = Object.keys(a);
var keysB = Object.keys(b);
return keysA.length === keysB.length && keysA.every(function (key) {
return looseEqual(a[key], b[key])
})
} else {
/* istanbul ignore next */
return false
}
} catch (e) {
/* istanbul ignore next */
return false
}
} else if (!isObjectA && !isObjectB) {
return String(a) === String(b)
} else {
return false
}
}
/**
* Return the first index at which a loosely equal value can be
* found in the array (if value is a plain object, the array must
* contain an object of the same shape), or -1 if it is not present.
*/
function looseIndexOf (arr, val) {
for (var i = 0; i < arr.length; i++) {
if (looseEqual(arr[i], val)) { return i }
}
return -1
}
/**
* Ensure a function is called only once.
*/
function once (fn) {
var called = false;
return function () {
if (!called) {
called = true;
fn.apply(this, arguments);
}
}
}
var ASSET_TYPES = [
'component',
'directive',
'filter'
];
var LIFECYCLE_HOOKS = [
'beforeCreate',
'created',
'beforeMount',
'mounted',
'beforeUpdate',
'updated',
'beforeDestroy',
'destroyed',
'activated',
'deactivated',
'errorCaptured',
'serverPrefetch'
];
/* */
var config = ({
/**
* Option merge strategies (used in core/util/options)
*/
// $flow-disable-line
optionMergeStrategies: Object.create(null),
/**
* Whether to suppress warnings.
*/
silent: false,
/**
* Show production mode tip message on boot?
*/
productionTip: "development" !== 'production',
/**
* Whether to enable devtools
*/
devtools: "development" !== 'production',
/**
* Whether to record perf
*/
performance: false,
/**
* Error handler for watcher errors
*/
errorHandler: null,
/**
* Warn handler for watcher warns
*/
warnHandler: null,
/**
* Ignore certain custom elements
*/
ignoredElements: [],
/**
* Custom user key aliases for v-on
*/
// $flow-disable-line
keyCodes: Object.create(null),
/**
* Check if a tag is reserved so that it cannot be registered as a
* component. This is platform-dependent and may be overwritten.
*/
isReservedTag: no,
/**
* Check if an attribute is reserved so that it cannot be used as a component
* prop. This is platform-dependent and may be overwritten.
*/
isReservedAttr: no,
/**
* Check if a tag is an unknown element.
* Platform-dependent.
*/
isUnknownElement: no,
/**
* Get the namespace of an element
*/
getTagNamespace: noop,
/**
* Parse the real tag name for the specific platform.
*/
parsePlatformTagName: identity,
/**
* Check if an attribute must be bound using property, e.g. value
* Platform-dependent.
*/
mustUseProp: no,
/**
* Perform updates asynchronously. Intended to be used by Vue Test Utils
* This will significantly reduce performance if set to false.
*/
async: true,
/**
* Exposed for legacy reasons
*/
_lifecycleHooks: LIFECYCLE_HOOKS
});
/* */
/**
* unicode letters used for parsing html tags, component names and property paths.
* using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname
* skipping \u10000-\uEFFFF due to it freezing up PhantomJS
*/
var unicodeRegExp = /a-zA-Z\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u037D\u037F-\u1FFF\u200C-\u200D\u203F-\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD/;
/**
* Check if a string starts with $ or _
*/
function isReserved (str) {
var c = (str + '').charCodeAt(0);
return c === 0x24 || c === 0x5F
}
/**
* Define a property.
*/
function def (obj, key, val, enumerable) {
Object.defineProperty(obj, key, {
value: val,
enumerable: !!enumerable,
writable: true,
configurable: true
});
}
/**
* Parse simple path.
*/
var bailRE = new RegExp(("[^" + (unicodeRegExp.source) + ".$_\\d]"));
function parsePath (path) {
if (bailRE.test(path)) {
return
}
var segments = path.split('.');
return function (obj) {
for (var i = 0; i < segments.length; i++) {
if (!obj) { return }
obj = obj[segments[i]];
}
return obj
}
}
/* */
// can we use __proto__?
var hasProto = '__proto__' in {};
// Browser environment sniffing
var inBrowser = typeof window !== 'undefined';
var inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;
var weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();
var UA = inBrowser && window.navigator.userAgent.toLowerCase();
var isIE = UA && /msie|trident/.test(UA);
var isIE9 = UA && UA.indexOf('msie 9.0') > 0;
var isEdge = UA && UA.indexOf('edge/') > 0;
var isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');
var isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');
var isChrome = UA && /chrome\/\d+/.test(UA) && !isEdge;
var isPhantomJS = UA && /phantomjs/.test(UA);
var isFF = UA && UA.match(/firefox\/(\d+)/);
// Firefox has a "watch" function on Object.prototype...
var nativeWatch = ({}).watch;
if (inBrowser) {
try {
var opts = {};
Object.defineProperty(opts, 'passive', ({
get: function get () {
}
})); // https://github.com/facebook/flow/issues/285
window.addEventListener('test-passive', null, opts);
} catch (e) {}
}
// this needs to be lazy-evaled because vue may be required before
// vue-server-renderer can set VUE_ENV
var _isServer;
var isServerRendering = function () {
if (_isServer === undefined) {
/* istanbul ignore if */
if (!inBrowser && !inWeex && typeof global !== 'undefined') {
// detect presence of vue-server-renderer and avoid
// Webpack shimming the process
_isServer = global['process'] && global['process'].env.VUE_ENV === 'server';
} else {
_isServer = false;
}
}
return _isServer
};
// detect devtools
var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;
/* istanbul ignore next */
function isNative (Ctor) {
return typeof Ctor === 'function' && /native code/.test(Ctor.toString())
}
var hasSymbol =
typeof Symbol !== 'undefined' && isNative(Symbol) &&
typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);
var _Set;
/* istanbul ignore if */ // $flow-disable-line
if (typeof Set !== 'undefined' && isNative(Set)) {
// use native Set when available.
_Set = Set;
} else {
// a non-standard Set polyfill that only works with primitive keys.
_Set = /*@__PURE__*/(function () {
function Set () {
this.set = Object.create(null);
}
Set.prototype.has = function has (key) {
return this.set[key] === true
};
Set.prototype.add = function add (key) {
this.set[key] = true;
};
Set.prototype.clear = function clear () {
this.set = Object.create(null);
};
return Set;
}());
}
/* */
var warn = noop;
var tip = noop;
var generateComponentTrace = (noop); // work around flow check
var formatComponentName = (noop);
if (true) {
var hasConsole = typeof console !== 'undefined';
var classifyRE = /(?:^|[-_])(\w)/g;
var classify = function (str) { return str
.replace(classifyRE, function (c) { return c.toUpperCase(); })
.replace(/[-_]/g, ''); };
warn = function (msg, vm) {
var trace = vm ? generateComponentTrace(vm) : '';
if (config.warnHandler) {
config.warnHandler.call(null, msg, vm, trace);
} else if (hasConsole && (!config.silent)) {
console.error(("[Vue warn]: " + msg + trace));
}
};
tip = function (msg, vm) {
if (hasConsole && (!config.silent)) {
console.warn("[Vue tip]: " + msg + (
vm ? generateComponentTrace(vm) : ''
));
}
};
formatComponentName = function (vm, includeFile) {
if (vm.$root === vm) {
if (vm.$options && vm.$options.__file) { // fixed by xxxxxx
return ('') + vm.$options.__file
}
return '<Root>'
}
var options = typeof vm === 'function' && vm.cid != null
? vm.options
: vm._isVue
? vm.$options || vm.constructor.options
: vm;
var name = options.name || options._componentTag;
var file = options.__file;
if (!name && file) {
var match = file.match(/([^/\\]+)\.vue$/);
name = match && match[1];
}
return (
(name ? ("<" + (classify(name)) + ">") : "<Anonymous>") +
(file && includeFile !== false ? (" at " + file) : '')
)
};
var repeat = function (str, n) {
var res = '';
while (n) {
if (n % 2 === 1) { res += str; }
if (n > 1) { str += str; }
n >>= 1;
}
return res
};
generateComponentTrace = function (vm) {
if (vm._isVue && vm.$parent) {
var tree = [];
var currentRecursiveSequence = 0;
while (vm && vm.$options.name !== 'PageBody') {
if (tree.length > 0) {
var last = tree[tree.length - 1];
if (last.constructor === vm.constructor) {
currentRecursiveSequence++;
vm = vm.$parent;
continue
} else if (currentRecursiveSequence > 0) {
tree[tree.length - 1] = [last, currentRecursiveSequence];
currentRecursiveSequence = 0;
}
}
!vm.$options.isReserved && tree.push(vm);
vm = vm.$parent;
}
return '\n\nfound in\n\n' + tree
.map(function (vm, i) { return ("" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)
? ((formatComponentName(vm[0])) + "... (" + (vm[1]) + " recursive calls)")
: formatComponentName(vm))); })
.join('\n')
} else {
return ("\n\n(found in " + (formatComponentName(vm)) + ")")
}
};
}
/* */
var uid = 0;
/**
* A dep is an observable that can have multiple
* directives subscribing to it.
*/
var Dep = function Dep () {
this.id = uid++;
this.subs = [];
};
Dep.prototype.addSub = function addSub (sub) {
this.subs.push(sub);
};
Dep.prototype.removeSub = function removeSub (sub) {
remove(this.subs, sub);
};
Dep.prototype.depend = function depend () {
if (Dep.SharedObject.target) {
Dep.SharedObject.target.addDep(this);
}
};
Dep.prototype.notify = function notify () {
// stabilize the subscriber list first
var subs = this.subs.slice();
if ( true && !config.async) {
// subs aren't sorted in scheduler if not running async
// we need to sort them now to make sure they fire in correct
// order
subs.sort(function (a, b) { return a.id - b.id; });
}
for (var i = 0, l = subs.length; i < l; i++) {
subs[i].update();
}
};
// The current target watcher being evaluated.
// This is globally unique because only one watcher
// can be evaluated at a time.
// fixed by xxxxxx (nvue shared vuex)
/* eslint-disable no-undef */
Dep.SharedObject = {};
Dep.SharedObject.target = null;
Dep.SharedObject.targetStack = [];
function pushTarget (target) {
Dep.SharedObject.targetStack.push(target);
Dep.SharedObject.target = target;
Dep.target = target;
}
function popTarget () {
Dep.SharedObject.targetStack.pop();
Dep.SharedObject.target = Dep.SharedObject.targetStack[Dep.SharedObject.targetStack.length - 1];
Dep.target = Dep.SharedObject.target;
}
/* */
var VNode = function VNode (
tag,
data,
children,
text,
elm,
context,
componentOptions,
asyncFactory
) {
this.tag = tag;
this.data = data;
this.children = children;
this.text = text;
this.elm = elm;
this.ns = undefined;
this.context = context;
this.fnContext = undefined;
this.fnOptions = undefined;
this.fnScopeId = undefined;
this.key = data && data.key;
this.componentOptions = componentOptions;
this.componentInstance = undefined;
this.parent = undefined;
this.raw = false;
this.isStatic = false;
this.isRootInsert = true;
this.isComment = false;
this.isCloned = false;
this.isOnce = false;
this.asyncFactory = asyncFactory;
this.asyncMeta = undefined;
this.isAsyncPlaceholder = false;
};
var prototypeAccessors = { child: { configurable: true } };
// DEPRECATED: alias for componentInstance for backwards compat.
/* istanbul ignore next */
prototypeAccessors.child.get = function () {
return this.componentInstance
};
Object.defineProperties( VNode.prototype, prototypeAccessors );
var createEmptyVNode = function (text) {
if ( text === void 0 ) text = '';
var node = new VNode();
node.text = text;
node.isComment = true;
return node
};
function createTextVNode (val) {
return new VNode(undefined, undefined, undefined, String(val))
}
// optimized shallow clone
// used for static nodes and slot nodes because they may be reused across
// multiple renders, cloning them avoids errors when DOM manipulations rely
// on their elm reference.
function cloneVNode (vnode) {
var cloned = new VNode(
vnode.tag,
vnode.data,
// #7975
// clone children array to avoid mutating original in case of cloning
// a child.
vnode.children && vnode.children.slice(),
vnode.text,
vnode.elm,
vnode.context,
vnode.componentOptions,
vnode.asyncFactory
);
cloned.ns = vnode.ns;
cloned.isStatic = vnode.isStatic;
cloned.key = vnode.key;
cloned.isComment = vnode.isComment;
cloned.fnContext = vnode.fnContext;
cloned.fnOptions = vnode.fnOptions;
cloned.fnScopeId = vnode.fnScopeId;
cloned.asyncMeta = vnode.asyncMeta;
cloned.isCloned = true;
return cloned
}
/*
* not type checking this file because flow doesn't play well with
* dynamically accessing methods on Array prototype
*/
var arrayProto = Array.prototype;
var arrayMethods = Object.create(arrayProto);
var methodsToPatch = [
'push',
'pop',
'shift',
'unshift',
'splice',
'sort',
'reverse'
];
/**
* Intercept mutating methods and emit events
*/
methodsToPatch.forEach(function (method) {
// cache original method
var original = arrayProto[method];
def(arrayMethods, method, function mutator () {
var args = [], len = arguments.length;
while ( len-- ) args[ len ] = arguments[ len ];
var result = original.apply(this, args);
var ob = this.__ob__;
var inserted;
switch (method) {
case 'push':
case 'unshift':
inserted = args;
break
case 'splice':
inserted = args.slice(2);
break
}
if (inserted) { ob.observeArray(inserted); }
// notify change
ob.dep.notify();
return result
});
});
/* */
var arrayKeys = Object.getOwnPropertyNames(arrayMethods);
/**
* In some cases we may want to disable observation inside a component's
* update computation.
*/
var shouldObserve = true;
function toggleObserving (value) {
shouldObserve = value;
}
/**
* Observer class that is attached to each observed
* object. Once attached, the observer converts the target
* object's property keys into getter/setters that
* collect dependencies and dispatch updates.
*/
var Observer = function Observer (value) {
this.value = value;
this.dep = new Dep();
this.vmCount = 0;
def(value, '__ob__', this);
if (Array.isArray(value)) {
if (hasProto) {
{// fixed by xxxxxx 微信小程序使用 plugins 之后,数组方法被直接挂载到了数组对象上,需要执行 copyAugment 逻辑
if(value.push !== value.__proto__.push){
copyAugment(value, arrayMethods, arrayKeys);
} else {
protoAugment(value, arrayMethods);
}
}
} else {
copyAugment(value, arrayMethods, arrayKeys);
}
this.observeArray(value);
} else {
this.walk(value);
}
};
/**
* Walk through all properties and convert them into
* getter/setters. This method should only be called when
* value type is Object.
*/
Observer.prototype.walk = function walk (obj) {
var keys = Object.keys(obj);
for (var i = 0; i < keys.length; i++) {
defineReactive$$1(obj, keys[i]);
}
};
/**
* Observe a list of Array items.
*/
Observer.prototype.observeArray = function observeArray (items) {
for (var i = 0, l = items.length; i < l; i++) {
observe(items[i]);
}
};
// helpers
/**
* Augment a target Object or Array by intercepting
* the prototype chain using __proto__
*/
function protoAugment (target, src) {
/* eslint-disable no-proto */
target.__proto__ = src;
/* eslint-enable no-proto */
}
/**
* Augment a target Object or Array by defining
* hidden properties.
*/
/* istanbul ignore next */
function copyAugment (target, src, keys) {
for (var i = 0, l = keys.length; i < l; i++) {
var key = keys[i];
def(target, key, src[key]);
}
}
/**
* Attempt to create an observer instance for a value,
* returns the new observer if successfully observed,
* or the existing observer if the value already has one.
*/
function observe (value, asRootData) {
if (!isObject(value) || value instanceof VNode) {
return
}
var ob;
if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {
ob = value.__ob__;
} else if (
shouldObserve &&
!isServerRendering() &&
(Array.isArray(value) || isPlainObject(value)) &&
Object.isExtensible(value) &&
!value._isVue &&
!value.__v_isMPComponent
) {
ob = new Observer(value);
}
if (asRootData && ob) {
ob.vmCount++;
}
return ob
}
/**
* Define a reactive property on an Object.
*/
function defineReactive$$1 (
obj,
key,
val,
customSetter,
shallow
) {
var dep = new Dep();
var property = Object.getOwnPropertyDescriptor(obj, key);
if (property && property.configurable === false) {
return
}
// cater for pre-defined getter/setters
var getter = property && property.get;
var setter = property && property.set;
if ((!getter || setter) && arguments.length === 2) {
val = obj[key];
}
var childOb = !shallow && observe(val);
Object.defineProperty(obj, key, {
enumerable: true,
configurable: true,
get: function reactiveGetter () {
var value = getter ? getter.call(obj) : val;
if (Dep.SharedObject.target) { // fixed by xxxxxx
dep.depend();
if (childOb) {
childOb.dep.depend();
if (Array.isArray(value)) {
dependArray(value);
}
}
}
return value
},
set: function reactiveSetter (newVal) {
var value = getter ? getter.call(obj) : val;
/* eslint-disable no-self-compare */
if (newVal === value || (newVal !== newVal && value !== value)) {
return
}
/* eslint-enable no-self-compare */
if ( true && customSetter) {
customSetter();
}
// #7981: for accessor properties without setter
if (getter && !setter) { return }
if (setter) {
setter.call(obj, newVal);
} else {
val = newVal;
}
childOb = !shallow && observe(newVal);
dep.notify();
}
});
}
/**
* Set a property on an object. Adds the new property and
* triggers change notification if the property doesn't
* already exist.
*/
function set (target, key, val) {
if ( true &&
(isUndef(target) || isPrimitive(target))
) {
warn(("Cannot set reactive property on undefined, null, or primitive value: " + ((target))));
}
if (Array.isArray(target) && isValidArrayIndex(key)) {
target.length = Math.max(target.length, key);
target.splice(key, 1, val);
return val
}
if (key in target && !(key in Object.prototype)) {
target[key] = val;
return val
}
var ob = (target).__ob__;
if (target._isVue || (ob && ob.vmCount)) {
true && warn(
'Avoid adding reactive properties to a Vue instance or its root $data ' +
'at runtime - declare it upfront in the data option.'
);
return val
}
if (!ob) {
target[key] = val;
return val
}
defineReactive$$1(ob.value, key, val);
ob.dep.notify();
return val
}
/**
* Delete a property and trigger change if necessary.
*/
function del (target, key) {
if ( true &&
(isUndef(target) || isPrimitive(target))
) {
warn(("Cannot delete reactive property on undefined, null, or primitive value: " + ((target))));
}
if (Array.isArray(target) && isValidArrayIndex(key)) {
target.splice(key, 1);
return
}
var ob = (target).__ob__;
if (target._isVue || (ob && ob.vmCount)) {
true && warn(
'Avoid deleting properties on a Vue instance or its root $data ' +
'- just set it to null.'
);
return
}
if (!hasOwn(target, key)) {
return
}
delete target[key];
if (!ob) {
return
}
ob.dep.notify();
}
/**
* Collect dependencies on array elements when the array is touched, since
* we cannot intercept array element access like property getters.
*/
function dependArray (value) {
for (var e = (void 0), i = 0, l = value.length; i < l; i++) {
e = value[i];
e && e.__ob__ && e.__ob__.dep.depend();
if (Array.isArray(e)) {
dependArray(e);
}
}
}
/* */
/**
* Option overwriting strategies are functions that handle
* how to merge a parent option value and a child option
* value into the final value.
*/
var strats = config.optionMergeStrategies;
/**
* Options with restrictions
*/
if (true) {
strats.el = strats.propsData = function (parent, child, vm, key) {
if (!vm) {
warn(
"option \"" + key + "\" can only be used during instance " +
'creation with the `new` keyword.'
);
}
return defaultStrat(parent, child)
};
}
/**
* Helper that recursively merges two data objects together.
*/
function mergeData (to, from) {
if (!from) { return to }
var key, toVal, fromVal;
var keys = hasSymbol
? Reflect.ownKeys(from)
: Object.keys(from);
for (var i = 0; i < keys.length; i++) {
key = keys[i];
// in case the object is already observed...
if (key === '__ob__') { continue }
toVal = to[key];
fromVal = from[key];
if (!hasOwn(to, key)) {
set(to, key, fromVal);
} else if (
toVal !== fromVal &&
isPlainObject(toVal) &&
isPlainObject(fromVal)
) {
mergeData(toVal, fromVal);
}
}
return to
}
/**
* Data
*/
function mergeDataOrFn (
parentVal,
childVal,
vm
) {
if (!vm) {
// in a Vue.extend merge, both should be functions
if (!childVal) {
return parentVal
}
if (!parentVal) {
return childVal
}
// when parentVal & childVal are both present,
// we need to return a function that returns the
// merged result of both functions... no need to
// check if parentVal is a function here because
// it has to be a function to pass previous merges.
return function mergedDataFn () {
return mergeData(
typeof childVal === 'function' ? childVal.call(this, this) : childVal,
typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal
)
}
} else {
return function mergedInstanceDataFn () {
// instance merge
var instanceData = typeof childVal === 'function'
? childVal.call(vm, vm)
: childVal;
var defaultData = typeof parentVal === 'function'
? parentVal.call(vm, vm)
: parentVal;
if (instanceData) {
return mergeData(instanceData, defaultData)
} else {
return defaultData
}
}
}
}
strats.data = function (
parentVal,
childVal,
vm
) {
if (!vm) {
if (childVal && typeof childVal !== 'function') {
true && warn(
'The "data" option should be a function ' +
'that returns a per-instance value in component ' +
'definitions.',
vm
);
return parentVal
}
return mergeDataOrFn(parentVal, childVal)
}
return mergeDataOrFn(parentVal, childVal, vm)
};
/**
* Hooks and props are merged as arrays.
*/
function mergeHook (
parentVal,
childVal
) {
var res = childVal
? parentVal
? parentVal.concat(childVal)
: Array.isArray(childVal)
? childVal
: [childVal]
: parentVal;
return res
? dedupeHooks(res)
: res
}
function dedupeHooks (hooks) {
var res = [];
for (var i = 0; i < hooks.length; i++) {
if (res.indexOf(hooks[i]) === -1) {
res.push(hooks[i]);
}
}
return res
}
LIFECYCLE_HOOKS.forEach(function (hook) {
strats[hook] = mergeHook;
});
/**
* Assets
*
* When a vm is present (instance creation), we need to do
* a three-way merge between constructor options, instance
* options and parent options.
*/
function mergeAssets (
parentVal,
childVal,
vm,
key
) {
var res = Object.create(parentVal || null);
if (childVal) {
true && assertObjectType(key, childVal, vm);
return extend(res, childVal)
} else {
return res
}
}
ASSET_TYPES.forEach(function (type) {
strats[type + 's'] = mergeAssets;
});
/**
* Watchers.
*
* Watchers hashes should not overwrite one
* another, so we merge them as arrays.
*/
strats.watch = function (
parentVal,
childVal,
vm,
key
) {
// work around Firefox's Object.prototype.watch...
if (parentVal === nativeWatch) { parentVal = undefined; }
if (childVal === nativeWatch) { childVal = undefined; }
/* istanbul ignore if */
if (!childVal) { return Object.create(parentVal || null) }
if (true) {
assertObjectType(key, childVal, vm);
}
if (!parentVal) { return childVal }
var ret = {};
extend(ret, parentVal);
for (var key$1 in childVal) {
var parent = ret[key$1];
var child = childVal[key$1];
if (parent && !Array.isArray(parent)) {
parent = [parent];
}
ret[key$1] = parent
? parent.concat(child)
: Array.isArray(child) ? child : [child];
}
return ret
};
/**
* Other object hashes.
*/
strats.props =
strats.methods =
strats.inject =
strats.computed = function (
parentVal,
childVal,
vm,
key
) {
if (childVal && "development" !== 'production') {
assertObjectType(key, childVal, vm);
}
if (!parentVal) { return childVal }
var ret = Object.create(null);
extend(ret, parentVal);
if (childVal) { extend(ret, childVal); }
return ret
};
strats.provide = mergeDataOrFn;
/**
* Default strategy.
*/
var defaultStrat = function (parentVal, childVal) {
return childVal === undefined
? parentVal
: childVal
};
/**
* Validate component names
*/
function checkComponents (options) {
for (var key in options.components) {
validateComponentName(key);
}
}
function validateComponentName (name) {
if (!new RegExp(("^[a-zA-Z][\\-\\.0-9_" + (unicodeRegExp.source) + "]*$")).test(name)) {
warn(
'Invalid component name: "' + name + '". Component names ' +
'should conform to valid custom element name in html5 specification.'
);
}
if (isBuiltInTag(name) || config.isReservedTag(name)) {
warn(
'Do not use built-in or reserved HTML elements as component ' +
'id: ' + name
);
}
}
/**
* Ensure all props option syntax are normalized into the
* Object-based format.
*/
function normalizeProps (options, vm) {
var props = options.props;
if (!props) { return }
var res = {};
var i, val, name;
if (Array.isArray(props)) {
i = props.length;
while (i--) {
val = props[i];
if (typeof val === 'string') {
name = camelize(val);
res[name] = { type: null };
} else if (true) {
warn('props must be strings when using array syntax.');
}
}
} else if (isPlainObject(props)) {
for (var key in props) {
val = props[key];
name = camelize(key);
res[name] = isPlainObject(val)
? val
: { type: val };
}
} else if (true) {
warn(
"Invalid value for option \"props\": expected an Array or an Object, " +
"but got " + (toRawType(props)) + ".",
vm
);
}
options.props = res;
}
/**
* Normalize all injections into Object-based format
*/
function normalizeInject (options, vm) {
var inject = options.inject;
if (!inject) { return }
var normalized = options.inject = {};
if (Array.isArray(inject)) {
for (var i = 0; i < inject.length; i++) {
normalized[inject[i]] = { from: inject[i] };
}
} else if (isPlainObject(inject)) {
for (var key in inject) {
var val = inject[key];
normalized[key] = isPlainObject(val)
? extend({ from: key }, val)
: { from: val };
}
} else if (true) {
warn(
"Invalid value for option \"inject\": expected an Array or an Object, " +
"but got " + (toRawType(inject)) + ".",
vm
);
}
}
/**
* Normalize raw function directives into object format.
*/
function normalizeDirectives (options) {
var dirs = options.directives;
if (dirs) {
for (var key in dirs) {
var def$$1 = dirs[key];
if (typeof def$$1 === 'function') {
dirs[key] = { bind: def$$1, update: def$$1 };
}
}
}
}
function assertObjectType (name, value, vm) {
if (!isPlainObject(value)) {
warn(
"Invalid value for option \"" + name + "\": expected an Object, " +
"but got " + (toRawType(value)) + ".",
vm
);
}
}
/**
* Merge two option objects into a new one.
* Core utility used in both instantiation and inheritance.
*/
function mergeOptions (
parent,
child,
vm
) {
if (true) {
checkComponents(child);
}
if (typeof child === 'function') {
child = child.options;
}
normalizeProps(child, vm);
normalizeInject(child, vm);
normalizeDirectives(child);
// Apply extends and mixins on the child options,
// but only if it is a raw options object that isn't
// the result of another mergeOptions call.
// Only merged options has the _base property.
if (!child._base) {
if (child.extends) {
parent = mergeOptions(parent, child.extends, vm);
}
if (child.mixins) {
for (var i = 0, l = child.mixins.length; i < l; i++) {
parent = mergeOptions(parent, child.mixins[i], vm);
}
}
}
var options = {};
var key;
for (key in parent) {
mergeField(key);
}
for (key in child) {
if (!hasOwn(parent, key)) {
mergeField(key);
}
}
function mergeField (key) {
var strat = strats[key] || defaultStrat;
options[key] = strat(parent[key], child[key], vm, key);
}
return options
}
/**
* Resolve an asset.
* This function is used because child instances need access
* to assets defined in its ancestor chain.
*/
function resolveAsset (
options,
type,
id,
warnMissing
) {
/* istanbul ignore if */
if (typeof id !== 'string') {
return
}
var assets = options[type];
// check local registration variations first
if (hasOwn(assets, id)) { return assets[id] }
var camelizedId = camelize(id);
if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }
var PascalCaseId = capitalize(camelizedId);
if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }
// fallback to prototype chain
var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];
if ( true && warnMissing && !res) {
warn(
'Failed to resolve ' + type.slice(0, -1) + ': ' + id,
options
);
}
return res
}
/* */
function validateProp (
key,
propOptions,
propsData,
vm
) {
var prop = propOptions[key];
var absent = !hasOwn(propsData, key);
var value = propsData[key];
// boolean casting
var booleanIndex = getTypeIndex(Boolean, prop.type);
if (booleanIndex > -1) {
if (absent && !hasOwn(prop, 'default')) {
value = false;
} else if (value === '' || value === hyphenate(key)) {
// only cast empty string / same name to boolean if
// boolean has higher priority
var stringIndex = getTypeIndex(String, prop.type);
if (stringIndex < 0 || booleanIndex < stringIndex) {
value = true;
}
}
}
// check default value
if (value === undefined) {
value = getPropDefaultValue(vm, prop, key);
// since the default value is a fresh copy,
// make sure to observe it.
var prevShouldObserve = shouldObserve;
toggleObserving(true);
observe(value);
toggleObserving(prevShouldObserve);
}
if (
true
) {
assertProp(prop, key, value, vm, absent);
}
return value
}
/**
* Get the default value of a prop.
*/
function getPropDefaultValue (vm, prop, key) {
// no default, return undefined
if (!hasOwn(prop, 'default')) {
return undefined
}
var def = prop.default;
// warn against non-factory defaults for Object & Array
if ( true && isObject(def)) {
warn(
'Invalid default value for prop "' + key + '": ' +
'Props with type Object/Array must use a factory function ' +
'to return the default value.',
vm
);
}
// the raw prop value was also undefined from previous render,
// return previous default value to avoid unnecessary watcher trigger
if (vm && vm.$options.propsData &&
vm.$options.propsData[key] === undefined &&
vm._props[key] !== undefined
) {
return vm._props[key]
}
// call factory function for non-Function types
// a value is Function if its prototype is function even across different execution context
return typeof def === 'function' && getType(prop.type) !== 'Function'
? def.call(vm)
: def
}
/**
* Assert whether a prop is valid.
*/
function assertProp (
prop,
name,
value,
vm,
absent
) {
if (prop.required && absent) {
warn(
'Missing required prop: "' + name + '"',
vm
);
return
}
if (value == null && !prop.required) {
return
}
var type = prop.type;
var valid = !type || type === true;
var expectedTypes = [];
if (type) {
if (!Array.isArray(type)) {
type = [type];
}
for (var i = 0; i < type.length && !valid; i++) {
var assertedType = assertType(value, type[i]);
expectedTypes.push(assertedType.expectedType || '');
valid = assertedType.valid;
}
}
if (!valid) {
warn(
getInvalidTypeMessage(name, value, expectedTypes),
vm
);
return
}
var validator = prop.validator;
if (validator) {
if (!validator(value)) {
warn(
'Invalid prop: custom validator check failed for prop "' + name + '".',
vm
);
}
}
}
var simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;
function assertType (value, type) {
var valid;
var expectedType = getType(type);
if (simpleCheckRE.test(expectedType)) {
var t = typeof value;
valid = t === expectedType.toLowerCase();
// for primitive wrapper objects
if (!valid && t === 'object') {
valid = value instanceof type;
}
} else if (expectedType === 'Object') {
valid = isPlainObject(value);
} else if (expectedType === 'Array') {
valid = Array.isArray(value);
} else {
valid = value instanceof type;
}
return {
valid: valid,
expectedType: expectedType
}
}
/**
* Use function string name to check built-in types,
* because a simple equality check will fail when running
* across different vms / iframes.
*/
function getType (fn) {
var match = fn && fn.toString().match(/^\s*function (\w+)/);
return match ? match[1] : ''
}
function isSameType (a, b) {
return getType(a) === getType(b)
}
function getTypeIndex (type, expectedTypes) {
if (!Array.isArray(expectedTypes)) {
return isSameType(expectedTypes, type) ? 0 : -1
}
for (var i = 0, len = expectedTypes.length; i < len; i++) {
if (isSameType(expectedTypes[i], type)) {
return i
}
}
return -1
}
function getInvalidTypeMessage (name, value, expectedTypes) {
var message = "Invalid prop: type check failed for prop \"" + name + "\"." +
" Expected " + (expectedTypes.map(capitalize).join(', '));
var expectedType = expectedTypes[0];
var receivedType = toRawType(value);
var expectedValue = styleValue(value, expectedType);
var receivedValue = styleValue(value, receivedType);
// check if we need to specify expected value
if (expectedTypes.length === 1 &&
isExplicable(expectedType) &&
!isBoolean(expectedType, receivedType)) {
message += " with value " + expectedValue;
}
message += ", got " + receivedType + " ";
// check if we need to specify received value
if (isExplicable(receivedType)) {
message += "with value " + receivedValue + ".";
}
return message
}
function styleValue (value, type) {
if (type === 'String') {
return ("\"" + value + "\"")
} else if (type === 'Number') {
return ("" + (Number(value)))
} else {
return ("" + value)
}
}
function isExplicable (value) {
var explicitTypes = ['string', 'number', 'boolean'];
return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })
}
function isBoolean () {
var args = [], len = arguments.length;
while ( len-- ) args[ len ] = arguments[ len ];
return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })
}
/* */
function handleError (err, vm, info) {
// Deactivate deps tracking while processing error handler to avoid possible infinite rendering.
// See: https://github.com/vuejs/vuex/issues/1505
pushTarget();
try {
if (vm) {
var cur = vm;
while ((cur = cur.$parent)) {
var hooks = cur.$options.errorCaptured;
if (hooks) {
for (var i = 0; i < hooks.length; i++) {
try {
var capture = hooks[i].call(cur, err, vm, info) === false;
if (capture) { return }
} catch (e) {
globalHandleError(e, cur, 'errorCaptured hook');
}
}
}
}
}
globalHandleError(err, vm, info);
} finally {
popTarget();
}
}
function invokeWithErrorHandling (
handler,
context,
args,
vm,
info
) {
var res;
try {
res = args ? handler.apply(context, args) : handler.call(context);
if (res && !res._isVue && isPromise(res) && !res._handled) {
res.catch(function (e) { return handleError(e, vm, info + " (Promise/async)"); });
// issue #9511
// avoid catch triggering multiple times when nested calls
res._handled = true;
}
} catch (e) {
handleError(e, vm, info);
}
return res
}
function globalHandleError (err, vm, info) {
if (config.errorHandler) {
try {
return config.errorHandler.call(null, err, vm, info)
} catch (e) {
// if the user intentionally throws the original error in the handler,
// do not log it twice
if (e !== err) {
logError(e, null, 'config.errorHandler');
}
}
}
logError(err, vm, info);
}
function logError (err, vm, info) {
if (true) {
warn(("Error in " + info + ": \"" + (err.toString()) + "\""), vm);
}
/* istanbul ignore else */
if ((inBrowser || inWeex) && typeof console !== 'undefined') {
console.error(err);
} else {
throw err
}
}
/* */
var callbacks = [];
var pending = false;
function flushCallbacks () {
pending = false;
var copies = callbacks.slice(0);
callbacks.length = 0;
for (var i = 0; i < copies.length; i++) {
copies[i]();
}
}
// Here we have async deferring wrappers using microtasks.
// In 2.5 we used (macro) tasks (in combination with microtasks).
// However, it has subtle problems when state is changed right before repaint
// (e.g. #6813, out-in transitions).
// Also, using (macro) tasks in event handler would cause some weird behaviors
// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).
// So we now use microtasks everywhere, again.
// A major drawback of this tradeoff is that there are some scenarios
// where microtasks have too high a priority and fire in between supposedly
// sequential events (e.g. #4521, #6690, which have workarounds)
// or even between bubbling of the same event (#6566).
var timerFunc;
// The nextTick behavior leverages the microtask queue, which can be accessed
// via either native Promise.then or MutationObserver.
// MutationObserver has wider support, however it is seriously bugged in
// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It
// completely stops working after triggering a few times... so, if native
// Promise is available, we will use it:
/* istanbul ignore next, $flow-disable-line */
if (typeof Promise !== 'undefined' && isNative(Promise)) {
var p = Promise.resolve();
timerFunc = function () {
p.then(flushCallbacks);
// In problematic UIWebViews, Promise.then doesn't completely break, but
// it can get stuck in a weird state where callbacks are pushed into the
// microtask queue but the queue isn't being flushed, until the browser
// needs to do some other work, e.g. handle a timer. Therefore we can
// "force" the microtask queue to be flushed by adding an empty timer.
if (isIOS) { setTimeout(noop); }
};
} else if (!isIE && typeof MutationObserver !== 'undefined' && (
isNative(MutationObserver) ||
// PhantomJS and iOS 7.x
MutationObserver.toString() === '[object MutationObserverConstructor]'
)) {
// Use MutationObserver where native Promise is not available,
// e.g. PhantomJS, iOS7, Android 4.4
// (#6466 MutationObserver is unreliable in IE11)
var counter = 1;
var observer = new MutationObserver(flushCallbacks);
var textNode = document.createTextNode(String(counter));
observer.observe(textNode, {
characterData: true
});
timerFunc = function () {
counter = (counter + 1) % 2;
textNode.data = String(counter);
};
} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {
// Fallback to setImmediate.
// Technically it leverages the (macro) task queue,
// but it is still a better choice than setTimeout.
timerFunc = function () {
setImmediate(flushCallbacks);
};
} else {
// Fallback to setTimeout.
timerFunc = function () {
setTimeout(flushCallbacks, 0);
};
}
function nextTick (cb, ctx) {
var _resolve;
callbacks.push(function () {
if (cb) {
try {
cb.call(ctx);
} catch (e) {
handleError(e, ctx, 'nextTick');
}
} else if (_resolve) {
_resolve(ctx);
}
});
if (!pending) {
pending = true;
timerFunc();
}
// $flow-disable-line
if (!cb && typeof Promise !== 'undefined') {
return new Promise(function (resolve) {
_resolve = resolve;
})
}
}
/* */
/* not type checking this file because flow doesn't play well with Proxy */
var initProxy;
if (true) {
var allowedGlobals = makeMap(
'Infinity,undefined,NaN,isFinite,isNaN,' +
'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +
'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +
'require' // for Webpack/Browserify
);
var warnNonPresent = function (target, key) {
warn(
"Property or method \"" + key + "\" is not defined on the instance but " +
'referenced during render. Make sure that this property is reactive, ' +
'either in the data option, or for class-based components, by ' +
'initializing the property. ' +
'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',
target
);
};
var warnReservedPrefix = function (target, key) {
warn(
"Property \"" + key + "\" must be accessed with \"$data." + key + "\" because " +
'properties starting with "$" or "_" are not proxied in the Vue instance to ' +
'prevent conflicts with Vue internals. ' +
'See: https://vuejs.org/v2/api/#data',
target
);
};
var hasProxy =
typeof Proxy !== 'undefined' && isNative(Proxy);
if (hasProxy) {
var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');
config.keyCodes = new Proxy(config.keyCodes, {
set: function set (target, key, value) {
if (isBuiltInModifier(key)) {
warn(("Avoid overwriting built-in modifier in config.keyCodes: ." + key));
return false
} else {
target[key] = value;
return true
}
}
});
}
var hasHandler = {
has: function has (target, key) {
var has = key in target;
var isAllowed = allowedGlobals(key) ||
(typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));
if (!has && !isAllowed) {
if (key in target.$data) { warnReservedPrefix(target, key); }
else { warnNonPresent(target, key); }
}
return has || !isAllowed
}
};
var getHandler = {
get: function get (target, key) {
if (typeof key === 'string' && !(key in target)) {
if (key in target.$data) { warnReservedPrefix(target, key); }
else { warnNonPresent(target, key); }
}
return target[key]
}
};
initProxy = function initProxy (vm) {
if (hasProxy) {
// determine which proxy handler to use
var options = vm.$options;
var handlers = options.render && options.render._withStripped
? getHandler
: hasHandler;
vm._renderProxy = new Proxy(vm, handlers);
} else {
vm._renderProxy = vm;
}
};
}
/* */
var seenObjects = new _Set();
/**
* Recursively traverse an object to evoke all converted
* getters, so that every nested property inside the object
* is collected as a "deep" dependency.
*/
function traverse (val) {
_traverse(val, seenObjects);
seenObjects.clear();
}
function _traverse (val, seen) {
var i, keys;
var isA = Array.isArray(val);
if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {
return
}
if (val.__ob__) {
var depId = val.__ob__.dep.id;
if (seen.has(depId)) {
return
}
seen.add(depId);
}
if (isA) {
i = val.length;
while (i--) { _traverse(val[i], seen); }
} else {
keys = Object.keys(val);
i = keys.length;
while (i--) { _traverse(val[keys[i]], seen); }
}
}
var mark;
var measure;
if (true) {
var perf = inBrowser && window.performance;
/* istanbul ignore if */
if (
perf &&
perf.mark &&
perf.measure &&
perf.clearMarks &&
perf.clearMeasures
) {
mark = function (tag) { return perf.mark(tag); };
measure = function (name, startTag, endTag) {
perf.measure(name, startTag, endTag);
perf.clearMarks(startTag);
perf.clearMarks(endTag);
// perf.clearMeasures(name)
};
}
}
/* */
var normalizeEvent = cached(function (name) {
var passive = name.charAt(0) === '&';
name = passive ? name.slice(1) : name;
var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first
name = once$$1 ? name.slice(1) : name;
var capture = name.charAt(0) === '!';
name = capture ? name.slice(1) : name;
return {
name: name,
once: once$$1,
capture: capture,
passive: passive
}
});
function createFnInvoker (fns, vm) {
function invoker () {
var arguments$1 = arguments;
var fns = invoker.fns;
if (Array.isArray(fns)) {
var cloned = fns.slice();
for (var i = 0; i < cloned.length; i++) {
invokeWithErrorHandling(cloned[i], null, arguments$1, vm, "v-on handler");
}
} else {
// return handler return value for single handlers
return invokeWithErrorHandling(fns, null, arguments, vm, "v-on handler")
}
}
invoker.fns = fns;
return invoker
}
function updateListeners (
on,
oldOn,
add,
remove$$1,
createOnceHandler,
vm
) {
var name, def$$1, cur, old, event;
for (name in on) {
def$$1 = cur = on[name];
old = oldOn[name];
event = normalizeEvent(name);
if (isUndef(cur)) {
true && warn(
"Invalid handler for event \"" + (event.name) + "\": got " + String(cur),
vm
);
} else if (isUndef(old)) {
if (isUndef(cur.fns)) {
cur = on[name] = createFnInvoker(cur, vm);
}
if (isTrue(event.once)) {
cur = on[name] = createOnceHandler(event.name, cur, event.capture);
}
add(event.name, cur, event.capture, event.passive, event.params);
} else if (cur !== old) {
old.fns = cur;
on[name] = old;
}
}
for (name in oldOn) {
if (isUndef(on[name])) {
event = normalizeEvent(name);
remove$$1(event.name, oldOn[name], event.capture);
}
}
}
/* */
/* */
// fixed by xxxxxx (mp properties)
function extractPropertiesFromVNodeData(data, Ctor, res, context) {
var propOptions = Ctor.options.mpOptions && Ctor.options.mpOptions.properties;
if (isUndef(propOptions)) {
return res
}
var externalClasses = Ctor.options.mpOptions.externalClasses || [];
var attrs = data.attrs;
var props = data.props;
if (isDef(attrs) || isDef(props)) {
for (var key in propOptions) {
var altKey = hyphenate(key);
var result = checkProp(res, props, key, altKey, true) ||
checkProp(res, attrs, key, altKey, false);
// externalClass
if (
result &&
res[key] &&
externalClasses.indexOf(altKey) !== -1 &&
context[camelize(res[key])]
) {
// 赋值 externalClass 真正的值(模板里 externalClass 的值可能是字符串)
res[key] = context[camelize(res[key])];
}
}
}
return res
}
function extractPropsFromVNodeData (
data,
Ctor,
tag,
context// fixed by xxxxxx
) {
// we are only extracting raw values here.
// validation and default values are handled in the child
// component itself.
var propOptions = Ctor.options.props;
if (isUndef(propOptions)) {
// fixed by xxxxxx
return extractPropertiesFromVNodeData(data, Ctor, {}, context)
}
var res = {};
var attrs = data.attrs;
var props = data.props;
if (isDef(attrs) || isDef(props)) {
for (var key in propOptions) {
var altKey = hyphenate(key);
if (true) {
var keyInLowerCase = key.toLowerCase();
if (
key !== keyInLowerCase &&
attrs && hasOwn(attrs, keyInLowerCase)
) {
tip(
"Prop \"" + keyInLowerCase + "\" is passed to component " +
(formatComponentName(tag || Ctor)) + ", but the declared prop name is" +
" \"" + key + "\". " +
"Note that HTML attributes are case-insensitive and camelCased " +
"props need to use their kebab-case equivalents when using in-DOM " +
"templates. You should probably use \"" + altKey + "\" instead of \"" + key + "\"."
);
}
}
checkProp(res, props, key, altKey, true) ||
checkProp(res, attrs, key, altKey, false);
}
}
// fixed by xxxxxx
return extractPropertiesFromVNodeData(data, Ctor, res, context)
}
function checkProp (
res,
hash,
key,
altKey,
preserve
) {
if (isDef(hash)) {
if (hasOwn(hash, key)) {
res[key] = hash[key];
if (!preserve) {
delete hash[key];
}
return true
} else if (hasOwn(hash, altKey)) {
res[key] = hash[altKey];
if (!preserve) {
delete hash[altKey];
}
return true
}
}
return false
}
/* */
// The template compiler attempts to minimize the need for normalization by
// statically analyzing the template at compile time.
//
// For plain HTML markup, normalization can be completely skipped because the
// generated render function is guaranteed to return Array<VNode>. There are
// two cases where extra normalization is needed:
// 1. When the children contains components - because a functional component
// may return an Array instead of a single root. In this case, just a simple
// normalization is needed - if any child is an Array, we flatten the whole
// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep
// because functional components already normalize their own children.
function simpleNormalizeChildren (children) {
for (var i = 0; i < children.length; i++) {
if (Array.isArray(children[i])) {
return Array.prototype.concat.apply([], children)
}
}
return children
}
// 2. When the children contains constructs that always generated nested Arrays,
// e.g. <template>, <slot>, v-for, or when the children is provided by user
// with hand-written render functions / JSX. In such cases a full normalization
// is needed to cater to all possible types of children values.
function normalizeChildren (children) {
return isPrimitive(children)
? [createTextVNode(children)]
: Array.isArray(children)
? normalizeArrayChildren(children)
: undefined
}
function isTextNode (node) {
return isDef(node) && isDef(node.text) && isFalse(node.isComment)
}
function normalizeArrayChildren (children, nestedIndex) {
var res = [];
var i, c, lastIndex, last;
for (i = 0; i < children.length; i++) {
c = children[i];
if (isUndef(c) || typeof c === 'boolean') { continue }
lastIndex = res.length - 1;
last = res[lastIndex];
// nested
if (Array.isArray(c)) {
if (c.length > 0) {
c = normalizeArrayChildren(c, ((nestedIndex || '') + "_" + i));
// merge adjacent text nodes
if (isTextNode(c[0]) && isTextNode(last)) {
res[lastIndex] = createTextVNode(last.text + (c[0]).text);
c.shift();
}
res.push.apply(res, c);
}
} else if (isPrimitive(c)) {
if (isTextNode(last)) {
// merge adjacent text nodes
// this is necessary for SSR hydration because text nodes are
// essentially merged when rendered to HTML strings
res[lastIndex] = createTextVNode(last.text + c);
} else if (c !== '') {
// convert primitive to vnode
res.push(createTextVNode(c));
}
} else {
if (isTextNode(c) && isTextNode(last)) {
// merge adjacent text nodes
res[lastIndex] = createTextVNode(last.text + c.text);
} else {
// default key for nested array children (likely generated by v-for)
if (isTrue(children._isVList) &&
isDef(c.tag) &&
isUndef(c.key) &&
isDef(nestedIndex)) {
c.key = "__vlist" + nestedIndex + "_" + i + "__";
}
res.push(c);
}
}
}
return res
}
/* */
function initProvide (vm) {
var provide = vm.$options.provide;
if (provide) {
vm._provided = typeof provide === 'function'
? provide.call(vm)
: provide;
}
}
function initInjections (vm) {
var result = resolveInject(vm.$options.inject, vm);
if (result) {
toggleObserving(false);
Object.keys(result).forEach(function (key) {
/* istanbul ignore else */
if (true) {
defineReactive$$1(vm, key, result[key], function () {
warn(
"Avoid mutating an injected value directly since the changes will be " +
"overwritten whenever the provided component re-renders. " +
"injection being mutated: \"" + key + "\"",
vm
);
});
} else {}
});
toggleObserving(true);
}
}
function resolveInject (inject, vm) {
if (inject) {
// inject is :any because flow is not smart enough to figure out cached
var result = Object.create(null);
var keys = hasSymbol
? Reflect.ownKeys(inject)
: Object.keys(inject);
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
// #6574 in case the inject object is observed...
if (key === '__ob__') { continue }
var provideKey = inject[key].from;
var source = vm;
while (source) {
if (source._provided && hasOwn(source._provided, provideKey)) {
result[key] = source._provided[provideKey];
break
}
source = source.$parent;
}
if (!source) {
if ('default' in inject[key]) {
var provideDefault = inject[key].default;
result[key] = typeof provideDefault === 'function'
? provideDefault.call(vm)
: provideDefault;
} else if (true) {
warn(("Injection \"" + key + "\" not found"), vm);
}
}
}
return result
}
}
/* */
/**
* Runtime helper for resolving raw children VNodes into a slot object.
*/
function resolveSlots (
children,
context
) {
if (!children || !children.length) {
return {}
}
var slots = {};
for (var i = 0, l = children.length; i < l; i++) {
var child = children[i];
var data = child.data;
// remove slot attribute if the node is resolved as a Vue slot node
if (data && data.attrs && data.attrs.slot) {
delete data.attrs.slot;
}
// named slots should only be respected if the vnode was rendered in the
// same context.
if ((child.context === context || child.fnContext === context) &&
data && data.slot != null
) {
var name = data.slot;
var slot = (slots[name] || (slots[name] = []));
if (child.tag === 'template') {
slot.push.apply(slot, child.children || []);
} else {
slot.push(child);
}
} else {
// fixed by xxxxxx 临时 hack 掉 uni-app 中的异步 name slot page
if(child.asyncMeta && child.asyncMeta.data && child.asyncMeta.data.slot === 'page'){
(slots['page'] || (slots['page'] = [])).push(child);
}else{
(slots.default || (slots.default = [])).push(child);
}
}
}
// ignore slots that contains only whitespace
for (var name$1 in slots) {
if (slots[name$1].every(isWhitespace)) {
delete slots[name$1];
}
}
return slots
}
function isWhitespace (node) {
return (node.isComment && !node.asyncFactory) || node.text === ' '
}
/* */
function normalizeScopedSlots (
slots,
normalSlots,
prevSlots
) {
var res;
var hasNormalSlots = Object.keys(normalSlots).length > 0;
var isStable = slots ? !!slots.$stable : !hasNormalSlots;
var key = slots && slots.$key;
if (!slots) {
res = {};
} else if (slots._normalized) {
// fast path 1: child component re-render only, parent did not change
return slots._normalized
} else if (
isStable &&
prevSlots &&
prevSlots !== emptyObject &&
key === prevSlots.$key &&
!hasNormalSlots &&
!prevSlots.$hasNormal
) {
// fast path 2: stable scoped slots w/ no normal slots to proxy,
// only need to normalize once
return prevSlots
} else {
res = {};
for (var key$1 in slots) {
if (slots[key$1] && key$1[0] !== '$') {
res[key$1] = normalizeScopedSlot(normalSlots, key$1, slots[key$1]);
}
}
}
// expose normal slots on scopedSlots
for (var key$2 in normalSlots) {
if (!(key$2 in res)) {
res[key$2] = proxyNormalSlot(normalSlots, key$2);
}
}
// avoriaz seems to mock a non-extensible $scopedSlots object
// and when that is passed down this would cause an error
if (slots && Object.isExtensible(slots)) {
(slots)._normalized = res;
}
def(res, '$stable', isStable);
def(res, '$key', key);
def(res, '$hasNormal', hasNormalSlots);
return res
}
function normalizeScopedSlot(normalSlots, key, fn) {
var normalized = function () {
var res = arguments.length ? fn.apply(null, arguments) : fn({});
res = res && typeof res === 'object' && !Array.isArray(res)
? [res] // single vnode
: normalizeChildren(res);
return res && (
res.length === 0 ||
(res.length === 1 && res[0].isComment) // #9658
) ? undefined
: res
};
// this is a slot using the new v-slot syntax without scope. although it is
// compiled as a scoped slot, render fn users would expect it to be present
// on this.$slots because the usage is semantically a normal slot.
if (fn.proxy) {
Object.defineProperty(normalSlots, key, {
get: normalized,
enumerable: true,
configurable: true
});
}
return normalized
}
function proxyNormalSlot(slots, key) {
return function () { return slots[key]; }
}
/* */
/**
* Runtime helper for rendering v-for lists.
*/
function renderList (
val,
render
) {
var ret, i, l, keys, key;
if (Array.isArray(val) || typeof val === 'string') {
ret = new Array(val.length);
for (i = 0, l = val.length; i < l; i++) {
ret[i] = render(val[i], i, i, i); // fixed by xxxxxx
}
} else if (typeof val === 'number') {
ret = new Array(val);
for (i = 0; i < val; i++) {
ret[i] = render(i + 1, i, i, i); // fixed by xxxxxx
}
} else if (isObject(val)) {
if (hasSymbol && val[Symbol.iterator]) {
ret = [];
var iterator = val[Symbol.iterator]();
var result = iterator.next();
while (!result.done) {
ret.push(render(result.value, ret.length, i, i++)); // fixed by xxxxxx
result = iterator.next();
}
} else {
keys = Object.keys(val);
ret = new Array(keys.length);
for (i = 0, l = keys.length; i < l; i++) {
key = keys[i];
ret[i] = render(val[key], key, i, i); // fixed by xxxxxx
}
}
}
if (!isDef(ret)) {
ret = [];
}
(ret)._isVList = true;
return ret
}
/* */
/**
* Runtime helper for rendering <slot>
*/
function renderSlot (
name,
fallback,
props,
bindObject
) {
var scopedSlotFn = this.$scopedSlots[name];
var nodes;
if (scopedSlotFn) { // scoped slot
props = props || {};
if (bindObject) {
if ( true && !isObject(bindObject)) {
warn(
'slot v-bind without argument expects an Object',
this
);
}
props = extend(extend({}, bindObject), props);
}
// fixed by xxxxxx app-plus scopedSlot
nodes = scopedSlotFn(props, this, props._i) || fallback;
} else {
nodes = this.$slots[name] || fallback;
}
var target = props && props.slot;
if (target) {
return this.$createElement('template', { slot: target }, nodes)
} else {
return nodes
}
}
/* */
/**
* Runtime helper for resolving filters
*/
function resolveFilter (id) {
return resolveAsset(this.$options, 'filters', id, true) || identity
}
/* */
function isKeyNotMatch (expect, actual) {
if (Array.isArray(expect)) {
return expect.indexOf(actual) === -1
} else {
return expect !== actual
}
}
/**
* Runtime helper for checking keyCodes from config.
* exposed as Vue.prototype._k
* passing in eventKeyName as last argument separately for backwards compat
*/
function checkKeyCodes (
eventKeyCode,
key,
builtInKeyCode,
eventKeyName,
builtInKeyName
) {
var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;
if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {
return isKeyNotMatch(builtInKeyName, eventKeyName)
} else if (mappedKeyCode) {
return isKeyNotMatch(mappedKeyCode, eventKeyCode)
} else if (eventKeyName) {
return hyphenate(eventKeyName) !== key
}
}
/* */
/**
* Runtime helper for merging v-bind="object" into a VNode's data.
*/
function bindObjectProps (
data,
tag,
value,
asProp,
isSync
) {
if (value) {
if (!isObject(value)) {
true && warn(
'v-bind without argument expects an Object or Array value',
this
);
} else {
if (Array.isArray(value)) {
value = toObject(value);
}
var hash;
var loop = function ( key ) {
if (
key === 'class' ||
key === 'style' ||
isReservedAttribute(key)
) {
hash = data;
} else {
var type = data.attrs && data.attrs.type;
hash = asProp || config.mustUseProp(tag, type, key)
? data.domProps || (data.domProps = {})
: data.attrs || (data.attrs = {});
}
var camelizedKey = camelize(key);
var hyphenatedKey = hyphenate(key);
if (!(camelizedKey in hash) && !(hyphenatedKey in hash)) {
hash[key] = value[key];
if (isSync) {
var on = data.on || (data.on = {});
on[("update:" + key)] = function ($event) {
value[key] = $event;
};
}
}
};
for (var key in value) loop( key );
}
}
return data
}
/* */
/**
* Runtime helper for rendering static trees.
*/
function renderStatic (
index,
isInFor
) {
var cached = this._staticTrees || (this._staticTrees = []);
var tree = cached[index];
// if has already-rendered static tree and not inside v-for,
// we can reuse the same tree.
if (tree && !isInFor) {
return tree
}
// otherwise, render a fresh tree.
tree = cached[index] = this.$options.staticRenderFns[index].call(
this._renderProxy,
null,
this // for render fns generated for functional component templates
);
markStatic(tree, ("__static__" + index), false);
return tree
}
/**
* Runtime helper for v-once.
* Effectively it means marking the node as static with a unique key.
*/
function markOnce (
tree,
index,
key
) {
markStatic(tree, ("__once__" + index + (key ? ("_" + key) : "")), true);
return tree
}
function markStatic (
tree,
key,
isOnce
) {
if (Array.isArray(tree)) {
for (var i = 0; i < tree.length; i++) {
if (tree[i] && typeof tree[i] !== 'string') {
markStaticNode(tree[i], (key + "_" + i), isOnce);
}
}
} else {
markStaticNode(tree, key, isOnce);
}
}
function markStaticNode (node, key, isOnce) {
node.isStatic = true;
node.key = key;
node.isOnce = isOnce;
}
/* */
function bindObjectListeners (data, value) {
if (value) {
if (!isPlainObject(value)) {
true && warn(
'v-on without argument expects an Object value',
this
);
} else {
var on = data.on = data.on ? extend({}, data.on) : {};
for (var key in value) {
var existing = on[key];
var ours = value[key];
on[key] = existing ? [].concat(existing, ours) : ours;
}
}
}
return data
}
/* */
function resolveScopedSlots (
fns, // see flow/vnode
res,
// the following are added in 2.6
hasDynamicKeys,
contentHashKey
) {
res = res || { $stable: !hasDynamicKeys };
for (var i = 0; i < fns.length; i++) {
var slot = fns[i];
if (Array.isArray(slot)) {
resolveScopedSlots(slot, res, hasDynamicKeys);
} else if (slot) {
// marker for reverse proxying v-slot without scope on this.$slots
if (slot.proxy) {
slot.fn.proxy = true;
}
res[slot.key] = slot.fn;
}
}
if (contentHashKey) {
(res).$key = contentHashKey;
}
return res
}
/* */
function bindDynamicKeys (baseObj, values) {
for (var i = 0; i < values.length; i += 2) {
var key = values[i];
if (typeof key === 'string' && key) {
baseObj[values[i]] = values[i + 1];
} else if ( true && key !== '' && key !== null) {
// null is a special value for explicitly removing a binding
warn(
("Invalid value for dynamic directive argument (expected string or null): " + key),
this
);
}
}
return baseObj
}
// helper to dynamically append modifier runtime markers to event names.
// ensure only append when value is already string, otherwise it will be cast
// to string and cause the type check to miss.
function prependModifier (value, symbol) {
return typeof value === 'string' ? symbol + value : value
}
/* */
function installRenderHelpers (target) {
target._o = markOnce;
target._n = toNumber;
target._s = toString;
target._l = renderList;
target._t = renderSlot;
target._q = looseEqual;
target._i = looseIndexOf;
target._m = renderStatic;
target._f = resolveFilter;
target._k = checkKeyCodes;
target._b = bindObjectProps;
target._v = createTextVNode;
target._e = createEmptyVNode;
target._u = resolveScopedSlots;
target._g = bindObjectListeners;
target._d = bindDynamicKeys;
target._p = prependModifier;
}
/* */
function FunctionalRenderContext (
data,
props,
children,
parent,
Ctor
) {
var this$1 = this;
var options = Ctor.options;
// ensure the createElement function in functional components
// gets a unique context - this is necessary for correct named slot check
var contextVm;
if (hasOwn(parent, '_uid')) {
contextVm = Object.create(parent);
// $flow-disable-line
contextVm._original = parent;
} else {
// the context vm passed in is a functional context as well.
// in this case we want to make sure we are able to get a hold to the
// real context instance.
contextVm = parent;
// $flow-disable-line
parent = parent._original;
}
var isCompiled = isTrue(options._compiled);
var needNormalization = !isCompiled;
this.data = data;
this.props = props;
this.children = children;
this.parent = parent;
this.listeners = data.on || emptyObject;
this.injections = resolveInject(options.inject, parent);
this.slots = function () {
if (!this$1.$slots) {
normalizeScopedSlots(
data.scopedSlots,
this$1.$slots = resolveSlots(children, parent)
);
}
return this$1.$slots
};
Object.defineProperty(this, 'scopedSlots', ({
enumerable: true,
get: function get () {
return normalizeScopedSlots(data.scopedSlots, this.slots())
}
}));
// support for compiled functional template
if (isCompiled) {
// exposing $options for renderStatic()
this.$options = options;
// pre-resolve slots for renderSlot()
this.$slots = this.slots();
this.$scopedSlots = normalizeScopedSlots(data.scopedSlots, this.$slots);
}
if (options._scopeId) {
this._c = function (a, b, c, d) {
var vnode = createElement(contextVm, a, b, c, d, needNormalization);
if (vnode && !Array.isArray(vnode)) {
vnode.fnScopeId = options._scopeId;
vnode.fnContext = parent;
}
return vnode
};
} else {
this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };
}
}
installRenderHelpers(FunctionalRenderContext.prototype);
function createFunctionalComponent (
Ctor,
propsData,
data,
contextVm,
children
) {
var options = Ctor.options;
var props = {};
var propOptions = options.props;
if (isDef(propOptions)) {
for (var key in propOptions) {
props[key] = validateProp(key, propOptions, propsData || emptyObject);
}
} else {
if (isDef(data.attrs)) { mergeProps(props, data.attrs); }
if (isDef(data.props)) { mergeProps(props, data.props); }
}
var renderContext = new FunctionalRenderContext(
data,
props,
children,
contextVm,
Ctor
);
var vnode = options.render.call(null, renderContext._c, renderContext);
if (vnode instanceof VNode) {
return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options, renderContext)
} else if (Array.isArray(vnode)) {
var vnodes = normalizeChildren(vnode) || [];
var res = new Array(vnodes.length);
for (var i = 0; i < vnodes.length; i++) {
res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options, renderContext);
}
return res
}
}
function cloneAndMarkFunctionalResult (vnode, data, contextVm, options, renderContext) {
// #7817 clone node before setting fnContext, otherwise if the node is reused
// (e.g. it was from a cached normal slot) the fnContext causes named slots
// that should not be matched to match.
var clone = cloneVNode(vnode);
clone.fnContext = contextVm;
clone.fnOptions = options;
if (true) {
(clone.devtoolsMeta = clone.devtoolsMeta || {}).renderContext = renderContext;
}
if (data.slot) {
(clone.data || (clone.data = {})).slot = data.slot;
}
return clone
}
function mergeProps (to, from) {
for (var key in from) {
to[camelize(key)] = from[key];
}
}
/* */
/* */
/* */
/* */
// inline hooks to be invoked on component VNodes during patch
var componentVNodeHooks = {
init: function init (vnode, hydrating) {
if (
vnode.componentInstance &&
!vnode.componentInstance._isDestroyed &&
vnode.data.keepAlive
) {
// kept-alive components, treat as a patch
var mountedNode = vnode; // work around flow
componentVNodeHooks.prepatch(mountedNode, mountedNode);
} else {
var child = vnode.componentInstance = createComponentInstanceForVnode(
vnode,
activeInstance
);
child.$mount(hydrating ? vnode.elm : undefined, hydrating);
}
},
prepatch: function prepatch (oldVnode, vnode) {
var options = vnode.componentOptions;
var child = vnode.componentInstance = oldVnode.componentInstance;
updateChildComponent(
child,
options.propsData, // updated props
options.listeners, // updated listeners
vnode, // new parent vnode
options.children // new children
);
},
insert: function insert (vnode) {
var context = vnode.context;
var componentInstance = vnode.componentInstance;
if (!componentInstance._isMounted) {
callHook(componentInstance, 'onServiceCreated');
callHook(componentInstance, 'onServiceAttached');
componentInstance._isMounted = true;
callHook(componentInstance, 'mounted');
}
if (vnode.data.keepAlive) {
if (context._isMounted) {
// vue-router#1212
// During updates, a kept-alive component's child components may
// change, so directly walking the tree here may call activated hooks
// on incorrect children. Instead we push them into a queue which will
// be processed after the whole patch process ended.
queueActivatedComponent(componentInstance);
} else {
activateChildComponent(componentInstance, true /* direct */);
}
}
},
destroy: function destroy (vnode) {
var componentInstance = vnode.componentInstance;
if (!componentInstance._isDestroyed) {
if (!vnode.data.keepAlive) {
componentInstance.$destroy();
} else {
deactivateChildComponent(componentInstance, true /* direct */);
}
}
}
};
var hooksToMerge = Object.keys(componentVNodeHooks);
function createComponent (
Ctor,
data,
context,
children,
tag
) {
if (isUndef(Ctor)) {
return
}
var baseCtor = context.$options._base;
// plain options object: turn it into a constructor
if (isObject(Ctor)) {
Ctor = baseCtor.extend(Ctor);
}
// if at this stage it's not a constructor or an async component factory,
// reject.
if (typeof Ctor !== 'function') {
if (true) {
warn(("Invalid Component definition: " + (String(Ctor))), context);
}
return
}
// async component
var asyncFactory;
if (isUndef(Ctor.cid)) {
asyncFactory = Ctor;
Ctor = resolveAsyncComponent(asyncFactory, baseCtor);
if (Ctor === undefined) {
// return a placeholder node for async component, which is rendered
// as a comment node but preserves all the raw information for the node.
// the information will be used for async server-rendering and hydration.
return createAsyncPlaceholder(
asyncFactory,
data,
context,
children,
tag
)
}
}
data = data || {};
// resolve constructor options in case global mixins are applied after
// component constructor creation
resolveConstructorOptions(Ctor);
// transform component v-model data into props & events
if (isDef(data.model)) {
transformModel(Ctor.options, data);
}
// extract props
var propsData = extractPropsFromVNodeData(data, Ctor, tag, context); // fixed by xxxxxx
// functional component
if (isTrue(Ctor.options.functional)) {
return createFunctionalComponent(Ctor, propsData, data, context, children)
}
// extract listeners, since these needs to be treated as
// child component listeners instead of DOM listeners
var listeners = data.on;
// replace with listeners with .native modifier
// so it gets processed during parent component patch.
data.on = data.nativeOn;
if (isTrue(Ctor.options.abstract)) {
// abstract components do not keep anything
// other than props & listeners & slot
// work around flow
var slot = data.slot;
data = {};
if (slot) {
data.slot = slot;
}
}
// install component management hooks onto the placeholder node
installComponentHooks(data);
// return a placeholder vnode
var name = Ctor.options.name || tag;
var vnode = new VNode(
("vue-component-" + (Ctor.cid) + (name ? ("-" + name) : '')),
data, undefined, undefined, undefined, context,
{ Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },
asyncFactory
);
return vnode
}
function createComponentInstanceForVnode (
vnode, // we know it's MountedComponentVNode but flow doesn't
parent // activeInstance in lifecycle state
) {
var options = {
_isComponent: true,
_parentVnode: vnode,
parent: parent
};
// check inline-template render functions
var inlineTemplate = vnode.data.inlineTemplate;
if (isDef(inlineTemplate)) {
options.render = inlineTemplate.render;
options.staticRenderFns = inlineTemplate.staticRenderFns;
}
return new vnode.componentOptions.Ctor(options)
}
function installComponentHooks (data) {
var hooks = data.hook || (data.hook = {});
for (var i = 0; i < hooksToMerge.length; i++) {
var key = hooksToMerge[i];
var existing = hooks[key];
var toMerge = componentVNodeHooks[key];
if (existing !== toMerge && !(existing && existing._merged)) {
hooks[key] = existing ? mergeHook$1(toMerge, existing) : toMerge;
}
}
}
function mergeHook$1 (f1, f2) {
var merged = function (a, b) {
// flow complains about extra args which is why we use any
f1(a, b);
f2(a, b);
};
merged._merged = true;
return merged
}
// transform component v-model info (value and callback) into
// prop and event handler respectively.
function transformModel (options, data) {
var prop = (options.model && options.model.prop) || 'value';
var event = (options.model && options.model.event) || 'input'
;(data.attrs || (data.attrs = {}))[prop] = data.model.value;
var on = data.on || (data.on = {});
var existing = on[event];
var callback = data.model.callback;
if (isDef(existing)) {
if (
Array.isArray(existing)
? existing.indexOf(callback) === -1
: existing !== callback
) {
on[event] = [callback].concat(existing);
}
} else {
on[event] = callback;
}
}
/* */
var SIMPLE_NORMALIZE = 1;
var ALWAYS_NORMALIZE = 2;
// wrapper function for providing a more flexible interface
// without getting yelled at by flow
function createElement (
context,
tag,
data,
children,
normalizationType,
alwaysNormalize
) {
if (Array.isArray(data) || isPrimitive(data)) {
normalizationType = children;
children = data;
data = undefined;
}
if (isTrue(alwaysNormalize)) {
normalizationType = ALWAYS_NORMALIZE;
}
return _createElement(context, tag, data, children, normalizationType)
}
function _createElement (
context,
tag,
data,
children,
normalizationType
) {
if (isDef(data) && isDef((data).__ob__)) {
true && warn(
"Avoid using observed data object as vnode data: " + (JSON.stringify(data)) + "\n" +
'Always create fresh vnode data objects in each render!',
context
);
return createEmptyVNode()
}
// object syntax in v-bind
if (isDef(data) && isDef(data.is)) {
tag = data.is;
}
if (!tag) {
// in case of component :is set to falsy value
return createEmptyVNode()
}
// warn against non-primitive key
if ( true &&
isDef(data) && isDef(data.key) && !isPrimitive(data.key)
) {
{
warn(
'Avoid using non-primitive value as key, ' +
'use string/number value instead.',
context
);
}
}
// support single function children as default scoped slot
if (Array.isArray(children) &&
typeof children[0] === 'function'
) {
data = data || {};
data.scopedSlots = { default: children[0] };
children.length = 0;
}
if (normalizationType === ALWAYS_NORMALIZE) {
children = normalizeChildren(children);
} else if (normalizationType === SIMPLE_NORMALIZE) {
children = simpleNormalizeChildren(children);
}
var vnode, ns;
if (typeof tag === 'string') {
var Ctor;
ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);
if (config.isReservedTag(tag)) {
// platform built-in elements
if ( true && isDef(data) && isDef(data.nativeOn)) {
warn(
("The .native modifier for v-on is only valid on components but it was used on <" + tag + ">."),
context
);
}
vnode = new VNode(
config.parsePlatformTagName(tag), data, children,
undefined, undefined, context
);
} else if ((!data || !data.pre) && isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {
// component
vnode = createComponent(Ctor, data, context, children, tag);
} else {
// unknown or unlisted namespaced elements
// check at runtime because it may get assigned a namespace when its
// parent normalizes children
vnode = new VNode(
tag, data, children,
undefined, undefined, context
);
}
} else {
// direct component options / constructor
vnode = createComponent(tag, data, context, children);
}
if (Array.isArray(vnode)) {
return vnode
} else if (isDef(vnode)) {
if (isDef(ns)) { applyNS(vnode, ns); }
if (isDef(data)) { registerDeepBindings(data); }
return vnode
} else {
return createEmptyVNode()
}
}
function applyNS (vnode, ns, force) {
vnode.ns = ns;
if (vnode.tag === 'foreignObject') {
// use default namespace inside foreignObject
ns = undefined;
force = true;
}
if (isDef(vnode.children)) {
for (var i = 0, l = vnode.children.length; i < l; i++) {
var child = vnode.children[i];
if (isDef(child.tag) && (
isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {
applyNS(child, ns, force);
}
}
}
}
// ref #5318
// necessary to ensure parent re-render when deep bindings like :style and
// :class are used on slot nodes
function registerDeepBindings (data) {
if (isObject(data.style)) {
traverse(data.style);
}
if (isObject(data.class)) {
traverse(data.class);
}
}
/* */
function initRender (vm) {
vm._vnode = null; // the root of the child tree
vm._staticTrees = null; // v-once cached trees
var options = vm.$options;
var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree
var renderContext = parentVnode && parentVnode.context;
vm.$slots = resolveSlots(options._renderChildren, renderContext);
vm.$scopedSlots = emptyObject;
// bind the createElement fn to this instance
// so that we get proper render context inside it.
// args order: tag, data, children, normalizationType, alwaysNormalize
// internal version is used by render functions compiled from templates
vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };
// normalization is always applied for the public version, used in
// user-written render functions.
vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };
// $attrs & $listeners are exposed for easier HOC creation.
// they need to be reactive so that HOCs using them are always updated
var parentData = parentVnode && parentVnode.data;
/* istanbul ignore else */
if (true) {
defineReactive$$1(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {
!isUpdatingChildComponent && warn("$attrs is readonly.", vm);
}, true);
defineReactive$$1(vm, '$listeners', options._parentListeners || emptyObject, function () {
!isUpdatingChildComponent && warn("$listeners is readonly.", vm);
}, true);
} else {}
}
var currentRenderingInstance = null;
function renderMixin (Vue) {
// install runtime convenience helpers
installRenderHelpers(Vue.prototype);
Vue.prototype.$nextTick = function (fn) {
return nextTick(fn, this)
};
Vue.prototype._render = function () {
var vm = this;
var ref = vm.$options;
var render = ref.render;
var _parentVnode = ref._parentVnode;
if (_parentVnode) {
vm.$scopedSlots = normalizeScopedSlots(
_parentVnode.data.scopedSlots,
vm.$slots,
vm.$scopedSlots
);
}
// set parent vnode. this allows render functions to have access
// to the data on the placeholder node.
vm.$vnode = _parentVnode;
// render self
var vnode;
try {
// There's no need to maintain a stack because all render fns are called
// separately from one another. Nested component's render fns are called
// when parent component is patched.
currentRenderingInstance = vm;
vnode = render.call(vm._renderProxy, vm.$createElement);
} catch (e) {
handleError(e, vm, "render");
// return error render result,
// or previous vnode to prevent render error causing blank component
/* istanbul ignore else */
if ( true && vm.$options.renderError) {
try {
vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);
} catch (e) {
handleError(e, vm, "renderError");
vnode = vm._vnode;
}
} else {
vnode = vm._vnode;
}
} finally {
currentRenderingInstance = null;
}
// if the returned array contains only a single node, allow it
if (Array.isArray(vnode) && vnode.length === 1) {
vnode = vnode[0];
}
// return empty vnode in case the render function errored out
if (!(vnode instanceof VNode)) {
if ( true && Array.isArray(vnode)) {
warn(
'Multiple root nodes returned from render function. Render function ' +
'should return a single root node.',
vm
);
}
vnode = createEmptyVNode();
}
// set parent
vnode.parent = _parentVnode;
return vnode
};
}
/* */
function ensureCtor (comp, base) {
if (
comp.__esModule ||
(hasSymbol && comp[Symbol.toStringTag] === 'Module')
) {
comp = comp.default;
}
return isObject(comp)
? base.extend(comp)
: comp
}
function createAsyncPlaceholder (
factory,
data,
context,
children,
tag
) {
var node = createEmptyVNode();
node.asyncFactory = factory;
node.asyncMeta = { data: data, context: context, children: children, tag: tag };
return node
}
function resolveAsyncComponent (
factory,
baseCtor
) {
if (isTrue(factory.error) && isDef(factory.errorComp)) {
return factory.errorComp
}
if (isDef(factory.resolved)) {
return factory.resolved
}
var owner = currentRenderingInstance;
if (owner && isDef(factory.owners) && factory.owners.indexOf(owner) === -1) {
// already pending
factory.owners.push(owner);
}
if (isTrue(factory.loading) && isDef(factory.loadingComp)) {
return factory.loadingComp
}
if (owner && !isDef(factory.owners)) {
var owners = factory.owners = [owner];
var sync = true;
var timerLoading = null;
var timerTimeout = null
;(owner).$on('hook:destroyed', function () { return remove(owners, owner); });
var forceRender = function (renderCompleted) {
for (var i = 0, l = owners.length; i < l; i++) {
(owners[i]).$forceUpdate();
}
if (renderCompleted) {
owners.length = 0;
if (timerLoading !== null) {
clearTimeout(timerLoading);
timerLoading = null;
}
if (timerTimeout !== null) {
clearTimeout(timerTimeout);
timerTimeout = null;
}
}
};
var resolve = once(function (res) {
// cache resolved
factory.resolved = ensureCtor(res, baseCtor);
// invoke callbacks only if this is not a synchronous resolve
// (async resolves are shimmed as synchronous during SSR)
if (!sync) {
forceRender(true);
} else {
owners.length = 0;
}
});
var reject = once(function (reason) {
true && warn(
"Failed to resolve async component: " + (String(factory)) +
(reason ? ("\nReason: " + reason) : '')
);
if (isDef(factory.errorComp)) {
factory.error = true;
forceRender(true);
}
});
var res = factory(resolve, reject);
if (isObject(res)) {
if (isPromise(res)) {
// () => Promise
if (isUndef(factory.resolved)) {
res.then(resolve, reject);
}
} else if (isPromise(res.component)) {
res.component.then(resolve, reject);
if (isDef(res.error)) {
factory.errorComp = ensureCtor(res.error, baseCtor);
}
if (isDef(res.loading)) {
factory.loadingComp = ensureCtor(res.loading, baseCtor);
if (res.delay === 0) {
factory.loading = true;
} else {
timerLoading = setTimeout(function () {
timerLoading = null;
if (isUndef(factory.resolved) && isUndef(factory.error)) {
factory.loading = true;
forceRender(false);
}
}, res.delay || 200);
}
}
if (isDef(res.timeout)) {
timerTimeout = setTimeout(function () {
timerTimeout = null;
if (isUndef(factory.resolved)) {
reject(
true
? ("timeout (" + (res.timeout) + "ms)")
: undefined
);
}
}, res.timeout);
}
}
}
sync = false;
// return in case resolved synchronously
return factory.loading
? factory.loadingComp
: factory.resolved
}
}
/* */
function isAsyncPlaceholder (node) {
return node.isComment && node.asyncFactory
}
/* */
function getFirstComponentChild (children) {
if (Array.isArray(children)) {
for (var i = 0; i < children.length; i++) {
var c = children[i];
if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {
return c
}
}
}
}
/* */
/* */
function initEvents (vm) {
vm._events = Object.create(null);
vm._hasHookEvent = false;
// init parent attached events
var listeners = vm.$options._parentListeners;
if (listeners) {
updateComponentListeners(vm, listeners);
}
}
var target;
function add (event, fn) {
target.$on(event, fn);
}
function remove$1 (event, fn) {
target.$off(event, fn);
}
function createOnceHandler (event, fn) {
var _target = target;
return function onceHandler () {
var res = fn.apply(null, arguments);
if (res !== null) {
_target.$off(event, onceHandler);
}
}
}
function updateComponentListeners (
vm,
listeners,
oldListeners
) {
target = vm;
updateListeners(listeners, oldListeners || {}, add, remove$1, createOnceHandler, vm);
target = undefined;
}
function eventsMixin (Vue) {
var hookRE = /^hook:/;
Vue.prototype.$on = function (event, fn) {
var vm = this;
if (Array.isArray(event)) {
for (var i = 0, l = event.length; i < l; i++) {
vm.$on(event[i], fn);
}
} else {
(vm._events[event] || (vm._events[event] = [])).push(fn);
// optimize hook:event cost by using a boolean flag marked at registration
// instead of a hash lookup
if (hookRE.test(event)) {
vm._hasHookEvent = true;
}
}
return vm
};
Vue.prototype.$once = function (event, fn) {
var vm = this;
function on () {
vm.$off(event, on);
fn.apply(vm, arguments);
}
on.fn = fn;
vm.$on(event, on);
return vm
};
Vue.prototype.$off = function (event, fn) {
var vm = this;
// all
if (!arguments.length) {
vm._events = Object.create(null);
return vm
}
// array of events
if (Array.isArray(event)) {
for (var i$1 = 0, l = event.length; i$1 < l; i$1++) {
vm.$off(event[i$1], fn);
}
return vm
}
// specific event
var cbs = vm._events[event];
if (!cbs) {
return vm
}
if (!fn) {
vm._events[event] = null;
return vm
}
// specific handler
var cb;
var i = cbs.length;
while (i--) {
cb = cbs[i];
if (cb === fn || cb.fn === fn) {
cbs.splice(i, 1);
break
}
}
return vm
};
Vue.prototype.$emit = function (event) {
var vm = this;
if (true) {
var lowerCaseEvent = event.toLowerCase();
if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {
tip(
"Event \"" + lowerCaseEvent + "\" is emitted in component " +
(formatComponentName(vm)) + " but the handler is registered for \"" + event + "\". " +
"Note that HTML attributes are case-insensitive and you cannot use " +
"v-on to listen to camelCase events when using in-DOM templates. " +
"You should probably use \"" + (hyphenate(event)) + "\" instead of \"" + event + "\"."
);
}
}
var cbs = vm._events[event];
if (cbs) {
cbs = cbs.length > 1 ? toArray(cbs) : cbs;
var args = toArray(arguments, 1);
var info = "event handler for \"" + event + "\"";
for (var i = 0, l = cbs.length; i < l; i++) {
invokeWithErrorHandling(cbs[i], vm, args, vm, info);
}
}
return vm
};
}
/* */
var activeInstance = null;
var isUpdatingChildComponent = false;
function setActiveInstance(vm) {
var prevActiveInstance = activeInstance;
activeInstance = vm;
return function () {
activeInstance = prevActiveInstance;
}
}
function initLifecycle (vm) {
var options = vm.$options;
// locate first non-abstract parent
var parent = options.parent;
if (parent && !options.abstract) {
while (parent.$options.abstract && parent.$parent) {
parent = parent.$parent;
}
parent.$children.push(vm);
}
vm.$parent = parent;
vm.$root = parent ? parent.$root : vm;
vm.$children = [];
vm.$refs = {};
vm._watcher = null;
vm._inactive = null;
vm._directInactive = false;
vm._isMounted = false;
vm._isDestroyed = false;
vm._isBeingDestroyed = false;
}
function lifecycleMixin (Vue) {
Vue.prototype._update = function (vnode, hydrating) {
var vm = this;
var prevEl = vm.$el;
var prevVnode = vm._vnode;
var restoreActiveInstance = setActiveInstance(vm);
vm._vnode = vnode;
// Vue.prototype.__patch__ is injected in entry points
// based on the rendering backend used.
if (!prevVnode) {
// initial render
vm.$el = vm.__patch__(vm.$el, vnode, hydrating, false /* removeOnly */);
} else {
// updates
vm.$el = vm.__patch__(prevVnode, vnode);
}
restoreActiveInstance();
// update __vue__ reference
if (prevEl) {
prevEl.__vue__ = null;
}
if (vm.$el) {
vm.$el.__vue__ = vm;
}
// if parent is an HOC, update its $el as well
if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {
vm.$parent.$el = vm.$el;
}
// updated hook is called by the scheduler to ensure that children are
// updated in a parent's updated hook.
};
Vue.prototype.$forceUpdate = function () {
var vm = this;
if (vm._watcher) {
vm._watcher.update();
}
};
Vue.prototype.$destroy = function () {
var vm = this;
if (vm._isBeingDestroyed) {
return
}
callHook(vm, 'beforeDestroy');
vm._isBeingDestroyed = true;
// remove self from parent
var parent = vm.$parent;
if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {
remove(parent.$children, vm);
}
// teardown watchers
if (vm._watcher) {
vm._watcher.teardown();
}
var i = vm._watchers.length;
while (i--) {
vm._watchers[i].teardown();
}
// remove reference from data ob
// frozen object may not have observer.
if (vm._data.__ob__) {
vm._data.__ob__.vmCount--;
}
// call the last hook...
vm._isDestroyed = true;
// invoke destroy hooks on current rendered tree
vm.__patch__(vm._vnode, null);
// fire destroyed hook
callHook(vm, 'destroyed');
// turn off all instance listeners.
vm.$off();
// remove __vue__ reference
if (vm.$el) {
vm.$el.__vue__ = null;
}
// release circular reference (#6759)
if (vm.$vnode) {
vm.$vnode.parent = null;
}
};
}
function updateChildComponent (
vm,
propsData,
listeners,
parentVnode,
renderChildren
) {
if (true) {
isUpdatingChildComponent = true;
}
// determine whether component has slot children
// we need to do this before overwriting $options._renderChildren.
// check if there are dynamic scopedSlots (hand-written or compiled but with
// dynamic slot names). Static scoped slots compiled from template has the
// "$stable" marker.
var newScopedSlots = parentVnode.data.scopedSlots;
var oldScopedSlots = vm.$scopedSlots;
var hasDynamicScopedSlot = !!(
(newScopedSlots && !newScopedSlots.$stable) ||
(oldScopedSlots !== emptyObject && !oldScopedSlots.$stable) ||
(newScopedSlots && vm.$scopedSlots.$key !== newScopedSlots.$key)
);
// Any static slot children from the parent may have changed during parent's
// update. Dynamic scoped slots may also have changed. In such cases, a forced
// update is necessary to ensure correctness.
var needsForceUpdate = !!(
renderChildren || // has new static slots
vm.$options._renderChildren || // has old static slots
hasDynamicScopedSlot
);
vm.$options._parentVnode = parentVnode;
vm.$vnode = parentVnode; // update vm's placeholder node without re-render
if (vm._vnode) { // update child tree's parent
vm._vnode.parent = parentVnode;
}
vm.$options._renderChildren = renderChildren;
// update $attrs and $listeners hash
// these are also reactive so they may trigger child update if the child
// used them during render
vm.$attrs = parentVnode.data.attrs || emptyObject;
vm.$listeners = listeners || emptyObject;
// update props
if (propsData && vm.$options.props) {
toggleObserving(false);
var props = vm._props;
var propKeys = vm.$options._propKeys || [];
for (var i = 0; i < propKeys.length; i++) {
var key = propKeys[i];
var propOptions = vm.$options.props; // wtf flow?
props[key] = validateProp(key, propOptions, propsData, vm);
}
toggleObserving(true);
// keep a copy of raw propsData
vm.$options.propsData = propsData;
}
// fixed by xxxxxx update properties(mp runtime)
vm._$updateProperties && vm._$updateProperties(vm);
// update listeners
listeners = listeners || emptyObject;
var oldListeners = vm.$options._parentListeners;
vm.$options._parentListeners = listeners;
updateComponentListeners(vm, listeners, oldListeners);
// resolve slots + force update if has children
if (needsForceUpdate) {
vm.$slots = resolveSlots(renderChildren, parentVnode.context);
vm.$forceUpdate();
}
if (true) {
isUpdatingChildComponent = false;
}
}
function isInInactiveTree (vm) {
while (vm && (vm = vm.$parent)) {
if (vm._inactive) { return true }
}
return false
}
function activateChildComponent (vm, direct) {
if (direct) {
vm._directInactive = false;
if (isInInactiveTree(vm)) {
return
}
} else if (vm._directInactive) {
return
}
if (vm._inactive || vm._inactive === null) {
vm._inactive = false;
for (var i = 0; i < vm.$children.length; i++) {
activateChildComponent(vm.$children[i]);
}
callHook(vm, 'activated');
}
}
function deactivateChildComponent (vm, direct) {
if (direct) {
vm._directInactive = true;
if (isInInactiveTree(vm)) {
return
}
}
if (!vm._inactive) {
vm._inactive = true;
for (var i = 0; i < vm.$children.length; i++) {
deactivateChildComponent(vm.$children[i]);
}
callHook(vm, 'deactivated');
}
}
function callHook (vm, hook) {
// #7573 disable dep collection when invoking lifecycle hooks
pushTarget();
var handlers = vm.$options[hook];
var info = hook + " hook";
if (handlers) {
for (var i = 0, j = handlers.length; i < j; i++) {
invokeWithErrorHandling(handlers[i], vm, null, vm, info);
}
}
if (vm._hasHookEvent) {
vm.$emit('hook:' + hook);
}
popTarget();
}
/* */
var MAX_UPDATE_COUNT = 100;
var queue = [];
var activatedChildren = [];
var has = {};
var circular = {};
var waiting = false;
var flushing = false;
var index = 0;
/**
* Reset the scheduler's state.
*/
function resetSchedulerState () {
index = queue.length = activatedChildren.length = 0;
has = {};
if (true) {
circular = {};
}
waiting = flushing = false;
}
// Async edge case #6566 requires saving the timestamp when event listeners are
// attached. However, calling performance.now() has a perf overhead especially
// if the page has thousands of event listeners. Instead, we take a timestamp
// every time the scheduler flushes and use that for all event listeners
// attached during that flush.
var currentFlushTimestamp = 0;
// Async edge case fix requires storing an event listener's attach timestamp.
var getNow = Date.now;
// Determine what event timestamp the browser is using. Annoyingly, the
// timestamp can either be hi-res (relative to page load) or low-res
// (relative to UNIX epoch), so in order to compare time we have to use the
// same timestamp type when saving the flush timestamp.
// All IE versions use low-res event timestamps, and have problematic clock
// implementations (#9632)
if (inBrowser && !isIE) {
var performance = window.performance;
if (
performance &&
typeof performance.now === 'function' &&
getNow() > document.createEvent('Event').timeStamp
) {
// if the event timestamp, although evaluated AFTER the Date.now(), is
// smaller than it, it means the event is using a hi-res timestamp,
// and we need to use the hi-res version for event listener timestamps as
// well.
getNow = function () { return performance.now(); };
}
}
/**
* Flush both queues and run the watchers.
*/
function flushSchedulerQueue () {
currentFlushTimestamp = getNow();
flushing = true;
var watcher, id;
// Sort queue before flush.
// This ensures that:
// 1. Components are updated from parent to child. (because parent is always
// created before the child)
// 2. A component's user watchers are run before its render watcher (because
// user watchers are created before the render watcher)
// 3. If a component is destroyed during a parent component's watcher run,
// its watchers can be skipped.
queue.sort(function (a, b) { return a.id - b.id; });
// do not cache length because more watchers might be pushed
// as we run existing watchers
for (index = 0; index < queue.length; index++) {
watcher = queue[index];
if (watcher.before) {
watcher.before();
}
id = watcher.id;
has[id] = null;
watcher.run();
// in dev build, check and stop circular updates.
if ( true && has[id] != null) {
circular[id] = (circular[id] || 0) + 1;
if (circular[id] > MAX_UPDATE_COUNT) {
warn(
'You may have an infinite update loop ' + (
watcher.user
? ("in watcher with expression \"" + (watcher.expression) + "\"")
: "in a component render function."
),
watcher.vm
);
break
}
}
}
// keep copies of post queues before resetting state
var activatedQueue = activatedChildren.slice();
var updatedQueue = queue.slice();
resetSchedulerState();
// call component updated and activated hooks
callActivatedHooks(activatedQueue);
callUpdatedHooks(updatedQueue);
// devtool hook
/* istanbul ignore if */
if (devtools && config.devtools) {
devtools.emit('flush');
}
}
function callUpdatedHooks (queue) {
var i = queue.length;
while (i--) {
var watcher = queue[i];
var vm = watcher.vm;
if (vm._watcher === watcher && vm._isMounted && !vm._isDestroyed) {
callHook(vm, 'updated');
}
}
}
/**
* Queue a kept-alive component that was activated during patch.
* The queue will be processed after the entire tree has been patched.
*/
function queueActivatedComponent (vm) {
// setting _inactive to false here so that a render function can
// rely on checking whether it's in an inactive tree (e.g. router-view)
vm._inactive = false;
activatedChildren.push(vm);
}
function callActivatedHooks (queue) {
for (var i = 0; i < queue.length; i++) {
queue[i]._inactive = true;
activateChildComponent(queue[i], true /* true */);
}
}
/**
* Push a watcher into the watcher queue.
* Jobs with duplicate IDs will be skipped unless it's
* pushed when the queue is being flushed.
*/
function queueWatcher (watcher) {
var id = watcher.id;
if (has[id] == null) {
has[id] = true;
if (!flushing) {
queue.push(watcher);
} else {
// if already flushing, splice the watcher based on its id
// if already past its id, it will be run next immediately.
var i = queue.length - 1;
while (i > index && queue[i].id > watcher.id) {
i--;
}
queue.splice(i + 1, 0, watcher);
}
// queue the flush
if (!waiting) {
waiting = true;
if ( true && !config.async) {
flushSchedulerQueue();
return
}
nextTick(flushSchedulerQueue);
}
}
}
/* */
var uid$2 = 0;
/**
* A watcher parses an expression, collects dependencies,
* and fires callback when the expression value changes.
* This is used for both the $watch() api and directives.
*/
var Watcher = function Watcher (
vm,
expOrFn,
cb,
options,
isRenderWatcher
) {
this.vm = vm;
if (isRenderWatcher) {
vm._watcher = this;
}
vm._watchers.push(this);
// options
if (options) {
this.deep = !!options.deep;
this.user = !!options.user;
this.lazy = !!options.lazy;
this.sync = !!options.sync;
this.before = options.before;
} else {
this.deep = this.user = this.lazy = this.sync = false;
}
this.cb = cb;
this.id = ++uid$2; // uid for batching
this.active = true;
this.dirty = this.lazy; // for lazy watchers
this.deps = [];
this.newDeps = [];
this.depIds = new _Set();
this.newDepIds = new _Set();
this.expression = true
? expOrFn.toString()
: undefined;
// parse expression for getter
if (typeof expOrFn === 'function') {
this.getter = expOrFn;
} else {
this.getter = parsePath(expOrFn);
if (!this.getter) {
this.getter = noop;
true && warn(
"Failed watching path: \"" + expOrFn + "\" " +
'Watcher only accepts simple dot-delimited paths. ' +
'For full control, use a function instead.',
vm
);
}
}
this.value = this.lazy
? undefined
: this.get();
};
/**
* Evaluate the getter, and re-collect dependencies.
*/
Watcher.prototype.get = function get () {
pushTarget(this);
var value;
var vm = this.vm;
try {
value = this.getter.call(vm, vm);
} catch (e) {
if (this.user) {
handleError(e, vm, ("getter for watcher \"" + (this.expression) + "\""));
} else {
throw e
}
} finally {
// "touch" every property so they are all tracked as
// dependencies for deep watching
if (this.deep) {
traverse(value);
}
popTarget();
this.cleanupDeps();
}
return value
};
/**
* Add a dependency to this directive.
*/
Watcher.prototype.addDep = function addDep (dep) {
var id = dep.id;
if (!this.newDepIds.has(id)) {
this.newDepIds.add(id);
this.newDeps.push(dep);
if (!this.depIds.has(id)) {
dep.addSub(this);
}
}
};
/**
* Clean up for dependency collection.
*/
Watcher.prototype.cleanupDeps = function cleanupDeps () {
var i = this.deps.length;
while (i--) {
var dep = this.deps[i];
if (!this.newDepIds.has(dep.id)) {
dep.removeSub(this);
}
}
var tmp = this.depIds;
this.depIds = this.newDepIds;
this.newDepIds = tmp;
this.newDepIds.clear();
tmp = this.deps;
this.deps = this.newDeps;
this.newDeps = tmp;
this.newDeps.length = 0;
};
/**
* Subscriber interface.
* Will be called when a dependency changes.
*/
Watcher.prototype.update = function update () {
/* istanbul ignore else */
if (this.lazy) {
this.dirty = true;
} else if (this.sync) {
this.run();
} else {
queueWatcher(this);
}
};
/**
* Scheduler job interface.
* Will be called by the scheduler.
*/
Watcher.prototype.run = function run () {
if (this.active) {
var value = this.get();
if (
value !== this.value ||
// Deep watchers and watchers on Object/Arrays should fire even
// when the value is the same, because the value may
// have mutated.
isObject(value) ||
this.deep
) {
// set new value
var oldValue = this.value;
this.value = value;
if (this.user) {
try {
this.cb.call(this.vm, value, oldValue);
} catch (e) {
handleError(e, this.vm, ("callback for watcher \"" + (this.expression) + "\""));
}
} else {
this.cb.call(this.vm, value, oldValue);
}
}
}
};
/**
* Evaluate the value of the watcher.
* This only gets called for lazy watchers.
*/
Watcher.prototype.evaluate = function evaluate () {
this.value = this.get();
this.dirty = false;
};
/**
* Depend on all deps collected by this watcher.
*/
Watcher.prototype.depend = function depend () {
var i = this.deps.length;
while (i--) {
this.deps[i].depend();
}
};
/**
* Remove self from all dependencies' subscriber list.
*/
Watcher.prototype.teardown = function teardown () {
if (this.active) {
// remove self from vm's watcher list
// this is a somewhat expensive operation so we skip it
// if the vm is being destroyed.
if (!this.vm._isBeingDestroyed) {
remove(this.vm._watchers, this);
}
var i = this.deps.length;
while (i--) {
this.deps[i].removeSub(this);
}
this.active = false;
}
};
/* */
var sharedPropertyDefinition = {
enumerable: true,
configurable: true,
get: noop,
set: noop
};
function proxy (target, sourceKey, key) {
sharedPropertyDefinition.get = function proxyGetter () {
return this[sourceKey][key]
};
sharedPropertyDefinition.set = function proxySetter (val) {
this[sourceKey][key] = val;
};
Object.defineProperty(target, key, sharedPropertyDefinition);
}
function initState (vm) {
vm._watchers = [];
var opts = vm.$options;
if (opts.props) { initProps(vm, opts.props); }
if (opts.methods) { initMethods(vm, opts.methods); }
if (opts.data) {
initData(vm);
} else {
observe(vm._data = {}, true /* asRootData */);
}
if (opts.computed) { initComputed(vm, opts.computed); }
if (opts.watch && opts.watch !== nativeWatch) {
initWatch(vm, opts.watch);
}
}
function initProps (vm, propsOptions) {
var propsData = vm.$options.propsData || {};
var props = vm._props = {};
// cache prop keys so that future props updates can iterate using Array
// instead of dynamic object key enumeration.
var keys = vm.$options._propKeys = [];
var isRoot = !vm.$parent;
// root instance props should be converted
if (!isRoot) {
toggleObserving(false);
}
var loop = function ( key ) {
keys.push(key);
var value = validateProp(key, propsOptions, propsData, vm);
/* istanbul ignore else */
if (true) {
var hyphenatedKey = hyphenate(key);
if (isReservedAttribute(hyphenatedKey) ||
config.isReservedAttr(hyphenatedKey)) {
warn(
("\"" + hyphenatedKey + "\" is a reserved attribute and cannot be used as component prop."),
vm
);
}
defineReactive$$1(props, key, value, function () {
if (!isRoot && !isUpdatingChildComponent) {
{
if(vm.mpHost === 'mp-baidu' || vm.mpHost === 'mp-kuaishou' || vm.mpHost === 'mp-xhs'){//百度、快手、小红书 observer 在 setData callback 之后触发,直接忽略该 warn
return
}
//fixed by xxxxxx __next_tick_pending,uni://form-field 时不告警
if(
key === 'value' &&
Array.isArray(vm.$options.behaviors) &&
vm.$options.behaviors.indexOf('uni://form-field') !== -1
){
return
}
if(vm._getFormData){
return
}
var $parent = vm.$parent;
while($parent){
if($parent.__next_tick_pending){
return
}
$parent = $parent.$parent;
}
}
warn(
"Avoid mutating a prop directly since the value will be " +
"overwritten whenever the parent component re-renders. " +
"Instead, use a data or computed property based on the prop's " +
"value. Prop being mutated: \"" + key + "\"",
vm
);
}
});
} else {}
// static props are already proxied on the component's prototype
// during Vue.extend(). We only need to proxy props defined at
// instantiation here.
if (!(key in vm)) {
proxy(vm, "_props", key);
}
};
for (var key in propsOptions) loop( key );
toggleObserving(true);
}
function initData (vm) {
var data = vm.$options.data;
data = vm._data = typeof data === 'function'
? getData(data, vm)
: data || {};
if (!isPlainObject(data)) {
data = {};
true && warn(
'data functions should return an object:\n' +
'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',
vm
);
}
// proxy data on instance
var keys = Object.keys(data);
var props = vm.$options.props;
var methods = vm.$options.methods;
var i = keys.length;
while (i--) {
var key = keys[i];
if (true) {
if (methods && hasOwn(methods, key)) {
warn(
("Method \"" + key + "\" has already been defined as a data property."),
vm
);
}
}
if (props && hasOwn(props, key)) {
true && warn(
"The data property \"" + key + "\" is already declared as a prop. " +
"Use prop default value instead.",
vm
);
} else if (!isReserved(key)) {
proxy(vm, "_data", key);
}
}
// observe data
observe(data, true /* asRootData */);
}
function getData (data, vm) {
// #7573 disable dep collection when invoking data getters
pushTarget();
try {
return data.call(vm, vm)
} catch (e) {
handleError(e, vm, "data()");
return {}
} finally {
popTarget();
}
}
var computedWatcherOptions = { lazy: true };
function initComputed (vm, computed) {
// $flow-disable-line
var watchers = vm._computedWatchers = Object.create(null);
// computed properties are just getters during SSR
var isSSR = isServerRendering();
for (var key in computed) {
var userDef = computed[key];
var getter = typeof userDef === 'function' ? userDef : userDef.get;
if ( true && getter == null) {
warn(
("Getter is missing for computed property \"" + key + "\"."),
vm
);
}
if (!isSSR) {
// create internal watcher for the computed property.
watchers[key] = new Watcher(
vm,
getter || noop,
noop,
computedWatcherOptions
);
}
// component-defined computed properties are already defined on the
// component prototype. We only need to define computed properties defined
// at instantiation here.
if (!(key in vm)) {
defineComputed(vm, key, userDef);
} else if (true) {
if (key in vm.$data) {
warn(("The computed property \"" + key + "\" is already defined in data."), vm);
} else if (vm.$options.props && key in vm.$options.props) {
warn(("The computed property \"" + key + "\" is already defined as a prop."), vm);
}
}
}
}
function defineComputed (
target,
key,
userDef
) {
var shouldCache = !isServerRendering();
if (typeof userDef === 'function') {
sharedPropertyDefinition.get = shouldCache
? createComputedGetter(key)
: createGetterInvoker(userDef);
sharedPropertyDefinition.set = noop;
} else {
sharedPropertyDefinition.get = userDef.get
? shouldCache && userDef.cache !== false
? createComputedGetter(key)
: createGetterInvoker(userDef.get)
: noop;
sharedPropertyDefinition.set = userDef.set || noop;
}
if ( true &&
sharedPropertyDefinition.set === noop) {
sharedPropertyDefinition.set = function () {
warn(
("Computed property \"" + key + "\" was assigned to but it has no setter."),
this
);
};
}
Object.defineProperty(target, key, sharedPropertyDefinition);
}
function createComputedGetter (key) {
return function computedGetter () {
var watcher = this._computedWatchers && this._computedWatchers[key];
if (watcher) {
if (watcher.dirty) {
watcher.evaluate();
}
if (Dep.SharedObject.target) {// fixed by xxxxxx
watcher.depend();
}
return watcher.value
}
}
}
function createGetterInvoker(fn) {
return function computedGetter () {
return fn.call(this, this)
}
}
function initMethods (vm, methods) {
var props = vm.$options.props;
for (var key in methods) {
if (true) {
if (typeof methods[key] !== 'function') {
warn(
"Method \"" + key + "\" has type \"" + (typeof methods[key]) + "\" in the component definition. " +
"Did you reference the function correctly?",
vm
);
}
if (props && hasOwn(props, key)) {
warn(
("Method \"" + key + "\" has already been defined as a prop."),
vm
);
}
if ((key in vm) && isReserved(key)) {
warn(
"Method \"" + key + "\" conflicts with an existing Vue instance method. " +
"Avoid defining component methods that start with _ or $."
);
}
}
vm[key] = typeof methods[key] !== 'function' ? noop : bind(methods[key], vm);
}
}
function initWatch (vm, watch) {
for (var key in watch) {
var handler = watch[key];
if (Array.isArray(handler)) {
for (var i = 0; i < handler.length; i++) {
createWatcher(vm, key, handler[i]);
}
} else {
createWatcher(vm, key, handler);
}
}
}
function createWatcher (
vm,
expOrFn,
handler,
options
) {
if (isPlainObject(handler)) {
options = handler;
handler = handler.handler;
}
if (typeof handler === 'string') {
handler = vm[handler];
}
return vm.$watch(expOrFn, handler, options)
}
function stateMixin (Vue) {
// flow somehow has problems with directly declared definition object
// when using Object.defineProperty, so we have to procedurally build up
// the object here.
var dataDef = {};
dataDef.get = function () { return this._data };
var propsDef = {};
propsDef.get = function () { return this._props };
if (true) {
dataDef.set = function () {
warn(
'Avoid replacing instance root $data. ' +
'Use nested data properties instead.',
this
);
};
propsDef.set = function () {
warn("$props is readonly.", this);
};
}
Object.defineProperty(Vue.prototype, '$data', dataDef);
Object.defineProperty(Vue.prototype, '$props', propsDef);
Vue.prototype.$set = set;
Vue.prototype.$delete = del;
Vue.prototype.$watch = function (
expOrFn,
cb,
options
) {
var vm = this;
if (isPlainObject(cb)) {
return createWatcher(vm, expOrFn, cb, options)
}
options = options || {};
options.user = true;
var watcher = new Watcher(vm, expOrFn, cb, options);
if (options.immediate) {
try {
cb.call(vm, watcher.value);
} catch (error) {
handleError(error, vm, ("callback for immediate watcher \"" + (watcher.expression) + "\""));
}
}
return function unwatchFn () {
watcher.teardown();
}
};
}
/* */
var uid$3 = 0;
function initMixin (Vue) {
Vue.prototype._init = function (options) {
var vm = this;
// a uid
vm._uid = uid$3++;
var startTag, endTag;
/* istanbul ignore if */
if ( true && config.performance && mark) {
startTag = "vue-perf-start:" + (vm._uid);
endTag = "vue-perf-end:" + (vm._uid);
mark(startTag);
}
// a flag to avoid this being observed
vm._isVue = true;
// merge options
if (options && options._isComponent) {
// optimize internal component instantiation
// since dynamic options merging is pretty slow, and none of the
// internal component options needs special treatment.
initInternalComponent(vm, options);
} else {
vm.$options = mergeOptions(
resolveConstructorOptions(vm.constructor),
options || {},
vm
);
}
/* istanbul ignore else */
if (true) {
initProxy(vm);
} else {}
// expose real self
vm._self = vm;
initLifecycle(vm);
initEvents(vm);
initRender(vm);
callHook(vm, 'beforeCreate');
!vm._$fallback && initInjections(vm); // resolve injections before data/props
initState(vm);
!vm._$fallback && initProvide(vm); // resolve provide after data/props
!vm._$fallback && callHook(vm, 'created');
/* istanbul ignore if */
if ( true && config.performance && mark) {
vm._name = formatComponentName(vm, false);
mark(endTag);
measure(("vue " + (vm._name) + " init"), startTag, endTag);
}
if (vm.$options.el) {
vm.$mount(vm.$options.el);
}
};
}
function initInternalComponent (vm, options) {
var opts = vm.$options = Object.create(vm.constructor.options);
// doing this because it's faster than dynamic enumeration.
var parentVnode = options._parentVnode;
opts.parent = options.parent;
opts._parentVnode = parentVnode;
var vnodeComponentOptions = parentVnode.componentOptions;
opts.propsData = vnodeComponentOptions.propsData;
opts._parentListeners = vnodeComponentOptions.listeners;
opts._renderChildren = vnodeComponentOptions.children;
opts._componentTag = vnodeComponentOptions.tag;
if (options.render) {
opts.render = options.render;
opts.staticRenderFns = options.staticRenderFns;
}
}
function resolveConstructorOptions (Ctor) {
var options = Ctor.options;
if (Ctor.super) {
var superOptions = resolveConstructorOptions(Ctor.super);
var cachedSuperOptions = Ctor.superOptions;
if (superOptions !== cachedSuperOptions) {
// super option changed,
// need to resolve new options.
Ctor.superOptions = superOptions;
// check if there are any late-modified/attached options (#4976)
var modifiedOptions = resolveModifiedOptions(Ctor);
// update base extend options
if (modifiedOptions) {
extend(Ctor.extendOptions, modifiedOptions);
}
options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);
if (options.name) {
options.components[options.name] = Ctor;
}
}
}
return options
}
function resolveModifiedOptions (Ctor) {
var modified;
var latest = Ctor.options;
var sealed = Ctor.sealedOptions;
for (var key in latest) {
if (latest[key] !== sealed[key]) {
if (!modified) { modified = {}; }
modified[key] = latest[key];
}
}
return modified
}
function Vue (options) {
if ( true &&
!(this instanceof Vue)
) {
warn('Vue is a constructor and should be called with the `new` keyword');
}
this._init(options);
}
initMixin(Vue);
stateMixin(Vue);
eventsMixin(Vue);
lifecycleMixin(Vue);
renderMixin(Vue);
/* */
function initUse (Vue) {
Vue.use = function (plugin) {
var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));
if (installedPlugins.indexOf(plugin) > -1) {
return this
}
// additional parameters
var args = toArray(arguments, 1);
args.unshift(this);
if (typeof plugin.install === 'function') {
plugin.install.apply(plugin, args);
} else if (typeof plugin === 'function') {
plugin.apply(null, args);
}
installedPlugins.push(plugin);
return this
};
}
/* */
function initMixin$1 (Vue) {
Vue.mixin = function (mixin) {
this.options = mergeOptions(this.options, mixin);
return this
};
}
/* */
function initExtend (Vue) {
/**
* Each instance constructor, including Vue, has a unique
* cid. This enables us to create wrapped "child
* constructors" for prototypal inheritance and cache them.
*/
Vue.cid = 0;
var cid = 1;
/**
* Class inheritance
*/
Vue.extend = function (extendOptions) {
extendOptions = extendOptions || {};
var Super = this;
var SuperId = Super.cid;
var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});
if (cachedCtors[SuperId]) {
return cachedCtors[SuperId]
}
var name = extendOptions.name || Super.options.name;
if ( true && name) {
validateComponentName(name);
}
var Sub = function VueComponent (options) {
this._init(options);
};
Sub.prototype = Object.create(Super.prototype);
Sub.prototype.constructor = Sub;
Sub.cid = cid++;
Sub.options = mergeOptions(
Super.options,
extendOptions
);
Sub['super'] = Super;
// For props and computed properties, we define the proxy getters on
// the Vue instances at extension time, on the extended prototype. This
// avoids Object.defineProperty calls for each instance created.
if (Sub.options.props) {
initProps$1(Sub);
}
if (Sub.options.computed) {
initComputed$1(Sub);
}
// allow further extension/mixin/plugin usage
Sub.extend = Super.extend;
Sub.mixin = Super.mixin;
Sub.use = Super.use;
// create asset registers, so extended classes
// can have their private assets too.
ASSET_TYPES.forEach(function (type) {
Sub[type] = Super[type];
});
// enable recursive self-lookup
if (name) {
Sub.options.components[name] = Sub;
}
// keep a reference to the super options at extension time.
// later at instantiation we can check if Super's options have
// been updated.
Sub.superOptions = Super.options;
Sub.extendOptions = extendOptions;
Sub.sealedOptions = extend({}, Sub.options);
// cache constructor
cachedCtors[SuperId] = Sub;
return Sub
};
}
function initProps$1 (Comp) {
var props = Comp.options.props;
for (var key in props) {
proxy(Comp.prototype, "_props", key);
}
}
function initComputed$1 (Comp) {
var computed = Comp.options.computed;
for (var key in computed) {
defineComputed(Comp.prototype, key, computed[key]);
}
}
/* */
function initAssetRegisters (Vue) {
/**
* Create asset registration methods.
*/
ASSET_TYPES.forEach(function (type) {
Vue[type] = function (
id,
definition
) {
if (!definition) {
return this.options[type + 's'][id]
} else {
/* istanbul ignore if */
if ( true && type === 'component') {
validateComponentName(id);
}
if (type === 'component' && isPlainObject(definition)) {
definition.name = definition.name || id;
definition = this.options._base.extend(definition);
}
if (type === 'directive' && typeof definition === 'function') {
definition = { bind: definition, update: definition };
}
this.options[type + 's'][id] = definition;
return definition
}
};
});
}
/* */
function getComponentName (opts) {
return opts && (opts.Ctor.options.name || opts.tag)
}
function matches (pattern, name) {
if (Array.isArray(pattern)) {
return pattern.indexOf(name) > -1
} else if (typeof pattern === 'string') {
return pattern.split(',').indexOf(name) > -1
} else if (isRegExp(pattern)) {
return pattern.test(name)
}
/* istanbul ignore next */
return false
}
function pruneCache (keepAliveInstance, filter) {
var cache = keepAliveInstance.cache;
var keys = keepAliveInstance.keys;
var _vnode = keepAliveInstance._vnode;
for (var key in cache) {
var cachedNode = cache[key];
if (cachedNode) {
var name = getComponentName(cachedNode.componentOptions);
if (name && !filter(name)) {
pruneCacheEntry(cache, key, keys, _vnode);
}
}
}
}
function pruneCacheEntry (
cache,
key,
keys,
current
) {
var cached$$1 = cache[key];
if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {
cached$$1.componentInstance.$destroy();
}
cache[key] = null;
remove(keys, key);
}
var patternTypes = [String, RegExp, Array];
var KeepAlive = {
name: 'keep-alive',
abstract: true,
props: {
include: patternTypes,
exclude: patternTypes,
max: [String, Number]
},
created: function created () {
this.cache = Object.create(null);
this.keys = [];
},
destroyed: function destroyed () {
for (var key in this.cache) {
pruneCacheEntry(this.cache, key, this.keys);
}
},
mounted: function mounted () {
var this$1 = this;
this.$watch('include', function (val) {
pruneCache(this$1, function (name) { return matches(val, name); });
});
this.$watch('exclude', function (val) {
pruneCache(this$1, function (name) { return !matches(val, name); });
});
},
render: function render () {
var slot = this.$slots.default;
var vnode = getFirstComponentChild(slot);
var componentOptions = vnode && vnode.componentOptions;
if (componentOptions) {
// check pattern
var name = getComponentName(componentOptions);
var ref = this;
var include = ref.include;
var exclude = ref.exclude;
if (
// not included
(include && (!name || !matches(include, name))) ||
// excluded
(exclude && name && matches(exclude, name))
) {
return vnode
}
var ref$1 = this;
var cache = ref$1.cache;
var keys = ref$1.keys;
var key = vnode.key == null
// same constructor may get registered as different local components
// so cid alone is not enough (#3269)
? componentOptions.Ctor.cid + (componentOptions.tag ? ("::" + (componentOptions.tag)) : '')
: vnode.key;
if (cache[key]) {
vnode.componentInstance = cache[key].componentInstance;
// make current key freshest
remove(keys, key);
keys.push(key);
} else {
cache[key] = vnode;
keys.push(key);
// prune oldest entry
if (this.max && keys.length > parseInt(this.max)) {
pruneCacheEntry(cache, keys[0], keys, this._vnode);
}
}
vnode.data.keepAlive = true;
}
return vnode || (slot && slot[0])
}
};
var builtInComponents = {
KeepAlive: KeepAlive
};
/* */
function initGlobalAPI (Vue) {
// config
var configDef = {};
configDef.get = function () { return config; };
if (true) {
configDef.set = function () {
warn(
'Do not replace the Vue.config object, set individual fields instead.'
);
};
}
Object.defineProperty(Vue, 'config', configDef);
// exposed util methods.
// NOTE: these are not considered part of the public API - avoid relying on
// them unless you are aware of the risk.
Vue.util = {
warn: warn,
extend: extend,
mergeOptions: mergeOptions,
defineReactive: defineReactive$$1
};
Vue.set = set;
Vue.delete = del;
Vue.nextTick = nextTick;
// 2.6 explicit observable API
Vue.observable = function (obj) {
observe(obj);
return obj
};
Vue.options = Object.create(null);
ASSET_TYPES.forEach(function (type) {
Vue.options[type + 's'] = Object.create(null);
});
// this is used to identify the "base" constructor to extend all plain-object
// components with in Weex's multi-instance scenarios.
Vue.options._base = Vue;
extend(Vue.options.components, builtInComponents);
initUse(Vue);
initMixin$1(Vue);
initExtend(Vue);
initAssetRegisters(Vue);
}
initGlobalAPI(Vue);
Object.defineProperty(Vue.prototype, '$isServer', {
get: isServerRendering
});
Object.defineProperty(Vue.prototype, '$ssrContext', {
get: function get () {
/* istanbul ignore next */
return this.$vnode && this.$vnode.ssrContext
}
});
// expose FunctionalRenderContext for ssr runtime helper installation
Object.defineProperty(Vue, 'FunctionalRenderContext', {
value: FunctionalRenderContext
});
Vue.version = '2.6.11';
/**
* https://raw.githubusercontent.com/Tencent/westore/master/packages/westore/utils/diff.js
*/
var ARRAYTYPE = '[object Array]';
var OBJECTTYPE = '[object Object]';
var NULLTYPE = '[object Null]';
var UNDEFINEDTYPE = '[object Undefined]';
// const FUNCTIONTYPE = '[object Function]'
function diff(current, pre) {
var result = {};
syncKeys(current, pre);
_diff(current, pre, '', result);
return result
}
function syncKeys(current, pre) {
if (current === pre) { return }
var rootCurrentType = type(current);
var rootPreType = type(pre);
if (rootCurrentType == OBJECTTYPE && rootPreType == OBJECTTYPE) {
if(Object.keys(current).length >= Object.keys(pre).length){
for (var key in pre) {
var currentValue = current[key];
if (currentValue === undefined) {
current[key] = null;
} else {
syncKeys(currentValue, pre[key]);
}
}
}
} else if (rootCurrentType == ARRAYTYPE && rootPreType == ARRAYTYPE) {
if (current.length >= pre.length) {
pre.forEach(function (item, index) {
syncKeys(current[index], item);
});
}
}
}
function nullOrUndefined(currentType, preType) {
if(
(currentType === NULLTYPE || currentType === UNDEFINEDTYPE) &&
(preType === NULLTYPE || preType === UNDEFINEDTYPE)
) {
return false
}
return true
}
function _diff(current, pre, path, result) {
if (current === pre) { return }
var rootCurrentType = type(current);
var rootPreType = type(pre);
if (rootCurrentType == OBJECTTYPE) {
if (rootPreType != OBJECTTYPE || Object.keys(current).length < Object.keys(pre).length) {
setResult(result, path, current);
} else {
var loop = function ( key ) {
var currentValue = current[key];
var preValue = pre[key];
var currentType = type(currentValue);
var preType = type(preValue);
if (currentType != ARRAYTYPE && currentType != OBJECTTYPE) {
if (currentValue !== pre[key] && nullOrUndefined(currentType, preType)) {
setResult(result, (path == '' ? '' : path + ".") + key, currentValue);
}
} else if (currentType == ARRAYTYPE) {
if (preType != ARRAYTYPE) {
setResult(result, (path == '' ? '' : path + ".") + key, currentValue);
} else {
if (currentValue.length < preValue.length) {
setResult(result, (path == '' ? '' : path + ".") + key, currentValue);
} else {
currentValue.forEach(function (item, index) {
_diff(item, preValue[index], (path == '' ? '' : path + ".") + key + '[' + index + ']', result);
});
}
}
} else if (currentType == OBJECTTYPE) {
if (preType != OBJECTTYPE || Object.keys(currentValue).length < Object.keys(preValue).length) {
setResult(result, (path == '' ? '' : path + ".") + key, currentValue);
} else {
for (var subKey in currentValue) {
_diff(currentValue[subKey], preValue[subKey], (path == '' ? '' : path + ".") + key + '.' + subKey, result);
}
}
}
};
for (var key in current) loop( key );
}
} else if (rootCurrentType == ARRAYTYPE) {
if (rootPreType != ARRAYTYPE) {
setResult(result, path, current);
} else {
if (current.length < pre.length) {
setResult(result, path, current);
} else {
current.forEach(function (item, index) {
_diff(item, pre[index], path + '[' + index + ']', result);
});
}
}
} else {
setResult(result, path, current);
}
}
function setResult(result, k, v) {
// if (type(v) != FUNCTIONTYPE) {
result[k] = v;
// }
}
function type(obj) {
return Object.prototype.toString.call(obj)
}
/* */
function flushCallbacks$1(vm) {
if (vm.__next_tick_callbacks && vm.__next_tick_callbacks.length) {
if (Object({"NODE_ENV":"development","VUE_APP_DARK_MODE":"false","VUE_APP_NAME":"Reedaw","VUE_APP_PLATFORM":"mp-weixin","BASE_URL":"/"}).VUE_APP_DEBUG) {
var mpInstance = vm.$scope;
console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + vm._uid +
']:flushCallbacks[' + vm.__next_tick_callbacks.length + ']');
}
var copies = vm.__next_tick_callbacks.slice(0);
vm.__next_tick_callbacks.length = 0;
for (var i = 0; i < copies.length; i++) {
copies[i]();
}
}
}
function hasRenderWatcher(vm) {
return queue.find(function (watcher) { return vm._watcher === watcher; })
}
function nextTick$1(vm, cb) {
//1.nextTick 之前 已 setData 且 setData 还未回调完成
//2.nextTick 之前存在 render watcher
if (!vm.__next_tick_pending && !hasRenderWatcher(vm)) {
if(Object({"NODE_ENV":"development","VUE_APP_DARK_MODE":"false","VUE_APP_NAME":"Reedaw","VUE_APP_PLATFORM":"mp-weixin","BASE_URL":"/"}).VUE_APP_DEBUG){
var mpInstance = vm.$scope;
console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + vm._uid +
']:nextVueTick');
}
return nextTick(cb, vm)
}else{
if(Object({"NODE_ENV":"development","VUE_APP_DARK_MODE":"false","VUE_APP_NAME":"Reedaw","VUE_APP_PLATFORM":"mp-weixin","BASE_URL":"/"}).VUE_APP_DEBUG){
var mpInstance$1 = vm.$scope;
console.log('[' + (+new Date) + '][' + (mpInstance$1.is || mpInstance$1.route) + '][' + vm._uid +
']:nextMPTick');
}
}
var _resolve;
if (!vm.__next_tick_callbacks) {
vm.__next_tick_callbacks = [];
}
vm.__next_tick_callbacks.push(function () {
if (cb) {
try {
cb.call(vm);
} catch (e) {
handleError(e, vm, 'nextTick');
}
} else if (_resolve) {
_resolve(vm);
}
});
// $flow-disable-line
if (!cb && typeof Promise !== 'undefined') {
return new Promise(function (resolve) {
_resolve = resolve;
})
}
}
/* */
function clearInstance(key, value) {
// 简易去除 Vue 和小程序组件实例
if (value) {
if (value._isVue || value.__v_isMPComponent) {
return {}
}
}
return value
}
function cloneWithData(vm) {
// 确保当前 vm 所有数据被同步
var ret = Object.create(null);
var dataKeys = [].concat(
Object.keys(vm._data || {}),
Object.keys(vm._computedWatchers || {}));
dataKeys.reduce(function(ret, key) {
ret[key] = vm[key];
return ret
}, ret);
// vue-composition-api
var compositionApiState = vm.__composition_api_state__ || vm.__secret_vfa_state__;
var rawBindings = compositionApiState && compositionApiState.rawBindings;
if (rawBindings) {
Object.keys(rawBindings).forEach(function (key) {
ret[key] = vm[key];
});
}
//TODO 需要把无用数据处理掉,比如 list=>l0 则 list 需要移除,否则多传输一份数据
Object.assign(ret, vm.$mp.data || {});
if (
Array.isArray(vm.$options.behaviors) &&
vm.$options.behaviors.indexOf('uni://form-field') !== -1
) { //form-field
ret['name'] = vm.name;
ret['value'] = vm.value;
}
return JSON.parse(JSON.stringify(ret, clearInstance))
}
var patch = function(oldVnode, vnode) {
var this$1 = this;
if (vnode === null) { //destroy
return
}
if (this.mpType === 'page' || this.mpType === 'component') {
var mpInstance = this.$scope;
var data = Object.create(null);
try {
data = cloneWithData(this);
} catch (err) {
console.error(err);
}
data.__webviewId__ = mpInstance.data.__webviewId__;
var mpData = Object.create(null);
Object.keys(data).forEach(function (key) { //仅同步 data 中有的数据
mpData[key] = mpInstance.data[key];
});
var diffData = this.$shouldDiffData === false ? data : diff(data, mpData);
if (Object.keys(diffData).length) {
if (Object({"NODE_ENV":"development","VUE_APP_DARK_MODE":"false","VUE_APP_NAME":"Reedaw","VUE_APP_PLATFORM":"mp-weixin","BASE_URL":"/"}).VUE_APP_DEBUG) {
console.log('[' + (+new Date) + '][' + (mpInstance.is || mpInstance.route) + '][' + this._uid +
']差量更新',
JSON.stringify(diffData));
}
this.__next_tick_pending = true;
mpInstance.setData(diffData, function () {
this$1.__next_tick_pending = false;
flushCallbacks$1(this$1);
});
} else {
flushCallbacks$1(this);
}
}
};
/* */
function createEmptyRender() {
}
function mountComponent$1(
vm,
el,
hydrating
) {
if (!vm.mpType) {//main.js 中的 new Vue
return vm
}
if (vm.mpType === 'app') {
vm.$options.render = createEmptyRender;
}
if (!vm.$options.render) {
vm.$options.render = createEmptyRender;
if (true) {
/* istanbul ignore if */
if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||
vm.$options.el || el) {
warn(
'You are using the runtime-only build of Vue where the template ' +
'compiler is not available. Either pre-compile the templates into ' +
'render functions, or use the compiler-included build.',
vm
);
} else {
warn(
'Failed to mount component: template or render function not defined.',
vm
);
}
}
}
!vm._$fallback && callHook(vm, 'beforeMount');
var updateComponent = function () {
vm._update(vm._render(), hydrating);
};
// we set this to vm._watcher inside the watcher's constructor
// since the watcher's initial patch may call $forceUpdate (e.g. inside child
// component's mounted hook), which relies on vm._watcher being already defined
new Watcher(vm, updateComponent, noop, {
before: function before() {
if (vm._isMounted && !vm._isDestroyed) {
callHook(vm, 'beforeUpdate');
}
}
}, true /* isRenderWatcher */);
hydrating = false;
return vm
}
/* */
function renderClass (
staticClass,
dynamicClass
) {
if (isDef(staticClass) || isDef(dynamicClass)) {
return concat(staticClass, stringifyClass(dynamicClass))
}
/* istanbul ignore next */
return ''
}
function concat (a, b) {
return a ? b ? (a + ' ' + b) : a : (b || '')
}
function stringifyClass (value) {
if (Array.isArray(value)) {
return stringifyArray(value)
}
if (isObject(value)) {
return stringifyObject(value)
}
if (typeof value === 'string') {
return value
}
/* istanbul ignore next */
return ''
}
function stringifyArray (value) {
var res = '';
var stringified;
for (var i = 0, l = value.length; i < l; i++) {
if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {
if (res) { res += ' '; }
res += stringified;
}
}
return res
}
function stringifyObject (value) {
var res = '';
for (var key in value) {
if (value[key]) {
if (res) { res += ' '; }
res += key;
}
}
return res
}
/* */
var parseStyleText = cached(function (cssText) {
var res = {};
var listDelimiter = /;(?![^(]*\))/g;
var propertyDelimiter = /:(.+)/;
cssText.split(listDelimiter).forEach(function (item) {
if (item) {
var tmp = item.split(propertyDelimiter);
tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());
}
});
return res
});
// normalize possible array / string values into Object
function normalizeStyleBinding (bindingStyle) {
if (Array.isArray(bindingStyle)) {
return toObject(bindingStyle)
}
if (typeof bindingStyle === 'string') {
return parseStyleText(bindingStyle)
}
return bindingStyle
}
/* */
var MP_METHODS = ['createSelectorQuery', 'createIntersectionObserver', 'selectAllComponents', 'selectComponent'];
function getTarget(obj, path) {
var parts = path.split('.');
var key = parts[0];
if (key.indexOf('__$n') === 0) { //number index
key = parseInt(key.replace('__$n', ''));
}
if (parts.length === 1) {
return obj[key]
}
return getTarget(obj[key], parts.slice(1).join('.'))
}
function internalMixin(Vue) {
Vue.config.errorHandler = function(err, vm, info) {
Vue.util.warn(("Error in " + info + ": \"" + (err.toString()) + "\""), vm);
console.error(err);
/* eslint-disable no-undef */
var app = typeof getApp === 'function' && getApp();
if (app && app.onError) {
app.onError(err);
}
};
var oldEmit = Vue.prototype.$emit;
Vue.prototype.$emit = function(event) {
if (this.$scope && event) {
var triggerEvent = this.$scope['_triggerEvent'] || this.$scope['triggerEvent'];
if (triggerEvent) {
try {
triggerEvent.call(this.$scope, event, {
__args__: toArray(arguments, 1)
});
} catch (error) {
}
}
}
return oldEmit.apply(this, arguments)
};
Vue.prototype.$nextTick = function(fn) {
return nextTick$1(this, fn)
};
MP_METHODS.forEach(function (method) {
Vue.prototype[method] = function(args) {
if (this.$scope && this.$scope[method]) {
return this.$scope[method](args)
}
// mp-alipay
if (typeof my === 'undefined') {
return
}
if (method === 'createSelectorQuery') {
/* eslint-disable no-undef */
return my.createSelectorQuery(args)
} else if (method === 'createIntersectionObserver') {
/* eslint-disable no-undef */
return my.createIntersectionObserver(args)
}
// TODO mp-alipay 暂不支持 selectAllComponents,selectComponent
};
});
Vue.prototype.__init_provide = initProvide;
Vue.prototype.__init_injections = initInjections;
Vue.prototype.__call_hook = function(hook, args) {
var vm = this;
// #7573 disable dep collection when invoking lifecycle hooks
pushTarget();
var handlers = vm.$options[hook];
var info = hook + " hook";
var ret;
if (handlers) {
for (var i = 0, j = handlers.length; i < j; i++) {
ret = invokeWithErrorHandling(handlers[i], vm, args ? [args] : null, vm, info);
}
}
if (vm._hasHookEvent) {
vm.$emit('hook:' + hook, args);
}
popTarget();
return ret
};
Vue.prototype.__set_model = function(target, key, value, modifiers) {
if (Array.isArray(modifiers)) {
if (modifiers.indexOf('trim') !== -1) {
value = value.trim();
}
if (modifiers.indexOf('number') !== -1) {
value = this._n(value);
}
}
if (!target) {
target = this;
}
// 解决动态属性添加
Vue.set(target, key, value);
};
Vue.prototype.__set_sync = function(target, key, value) {
if (!target) {
target = this;
}
// 解决动态属性添加
Vue.set(target, key, value);
};
Vue.prototype.__get_orig = function(item) {
if (isPlainObject(item)) {
return item['$orig'] || item
}
return item
};
Vue.prototype.__get_value = function(dataPath, target) {
return getTarget(target || this, dataPath)
};
Vue.prototype.__get_class = function(dynamicClass, staticClass) {
return renderClass(staticClass, dynamicClass)
};
Vue.prototype.__get_style = function(dynamicStyle, staticStyle) {
if (!dynamicStyle && !staticStyle) {
return ''
}
var dynamicStyleObj = normalizeStyleBinding(dynamicStyle);
var styleObj = staticStyle ? extend(staticStyle, dynamicStyleObj) : dynamicStyleObj;
return Object.keys(styleObj).map(function (name) { return ((hyphenate(name)) + ":" + (styleObj[name])); }).join(';')
};
Vue.prototype.__map = function(val, iteratee) {
//TODO 暂不考虑 string
var ret, i, l, keys, key;
if (Array.isArray(val)) {
ret = new Array(val.length);
for (i = 0, l = val.length; i < l; i++) {
ret[i] = iteratee(val[i], i);
}
return ret
} else if (isObject(val)) {
keys = Object.keys(val);
ret = Object.create(null);
for (i = 0, l = keys.length; i < l; i++) {
key = keys[i];
ret[key] = iteratee(val[key], key, i);
}
return ret
} else if (typeof val === 'number') {
ret = new Array(val);
for (i = 0, l = val; i < l; i++) {
// 第一个参数暂时仍和小程序一致
ret[i] = iteratee(i, i);
}
return ret
}
return []
};
}
/* */
var LIFECYCLE_HOOKS$1 = [
//App
'onLaunch',
'onShow',
'onHide',
'onUniNViewMessage',
'onPageNotFound',
'onThemeChange',
'onError',
'onUnhandledRejection',
//Page
'onInit',
'onLoad',
// 'onShow',
'onReady',
// 'onHide',
'onUnload',
'onPullDownRefresh',
'onReachBottom',
'onTabItemTap',
'onAddToFavorites',
'onShareTimeline',
'onShareAppMessage',
'onResize',
'onPageScroll',
'onNavigationBarButtonTap',
'onBackPress',
'onNavigationBarSearchInputChanged',
'onNavigationBarSearchInputConfirmed',
'onNavigationBarSearchInputClicked',
'onUploadDouyinVideo',
'onNFCReadMessage',
//Component
// 'onReady', // 兼容旧版本,应该移除该事件
'onPageShow',
'onPageHide',
'onPageResize'
];
function lifecycleMixin$1(Vue) {
//fixed vue-class-component
var oldExtend = Vue.extend;
Vue.extend = function(extendOptions) {
extendOptions = extendOptions || {};
var methods = extendOptions.methods;
if (methods) {
Object.keys(methods).forEach(function (methodName) {
if (LIFECYCLE_HOOKS$1.indexOf(methodName)!==-1) {
extendOptions[methodName] = methods[methodName];
delete methods[methodName];
}
});
}
return oldExtend.call(this, extendOptions)
};
var strategies = Vue.config.optionMergeStrategies;
var mergeHook = strategies.created;
LIFECYCLE_HOOKS$1.forEach(function (hook) {
strategies[hook] = mergeHook;
});
Vue.prototype.__lifecycle_hooks__ = LIFECYCLE_HOOKS$1;
}
/* */
// install platform patch function
Vue.prototype.__patch__ = patch;
// public mount method
Vue.prototype.$mount = function(
el ,
hydrating
) {
return mountComponent$1(this, el, hydrating)
};
lifecycleMixin$1(Vue);
internalMixin(Vue);
/* */
/* harmony default export */ __webpack_exports__["default"] = (Vue);
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../webpack/buildin/global.js */ 3)))
/***/ }),
/***/ 26:
/*!********************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/pages.json ***!
\********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
/***/ }),
/***/ 3:
/*!***********************************!*\
!*** (webpack)/buildin/global.js ***!
\***********************************/
/*! no static exports found */
/***/ (function(module, exports) {
var g;
// This works in non-strict mode
g = (function() {
return this;
})();
try {
// This works if eval is allowed (see CSP)
g = g || new Function("return this")();
} catch (e) {
// This works if the window reference is available
if (typeof window === "object") g = window;
}
// g can still be undefined, but nothing to do about it...
// We return undefined, instead of nothing here, so it's
// easier to handle this case. if(!global) { ...}
module.exports = g;
/***/ }),
/***/ 32:
/*!**********************************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js ***!
\**********************************************************************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return normalizeComponent; });
/* 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 */
components, // fixed by xxxxxx auto components
renderjs // fixed by xxxxxx renderjs
) {
// Vue.extend constructor export interop
var options = typeof scriptExports === 'function'
? scriptExports.options
: scriptExports
// fixed by xxxxxx auto components
if (components) {
if (!options.components) {
options.components = {}
}
var hasOwn = Object.prototype.hasOwnProperty
for (var name in components) {
if (hasOwn.call(components, name) && !hasOwn.call(options.components, name)) {
options.components[name] = components[name]
}
}
}
// fixed by xxxxxx renderjs
if (renderjs) {
if(typeof renderjs.beforeCreate === 'function'){
renderjs.beforeCreate = [renderjs.beforeCreate]
}
(renderjs.beforeCreate || (renderjs.beforeCreate = [])).unshift(function() {
this[renderjs.__module] = this
});
(options.mixins || (options.mixins = [])).push(renderjs)
}
// 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, 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 functioal 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
}
}
/***/ }),
/***/ 33:
/*!************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/store/index.js ***!
\************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/* WEBPACK VAR INJECTION */(function(uni) {
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 25));
var _vuex = _interopRequireDefault(__webpack_require__(/*! vuex */ 34));
var _actions = _interopRequireDefault(__webpack_require__(/*! ./actions.js */ 35));
_vue.default.use(_vuex.default);
var _default = new _vuex.default.Store({
// state: 存储基本数据
state: {
user: {
id: "",
head_pic: null,
nickname: "",
birthday: "",
gender: 0,
sex: 0,
age: 0,
stage: "",
height: "",
weight: "",
address: "",
head_data: 0,
card_order: [],
card_data_list: [],
target_current: {},
vitalcapacity_data: []
},
accountNumber: {
create_time: "",
head_pic: "",
last_update_time: "",
my_email: "",
my_tel: "",
nickname: ""
},
MeasureSkip: null,
MeasureResult: {
body_type_name: "",
body_type_unit: "",
body_type_value: "",
bottom_list: [],
cplist: {
moodlist: [],
nutritionlist: [],
sleeplist: [],
sportlist: []
},
literature: [],
record_time: "",
score_name: "",
score_unit: "",
score_value: "",
target_current: {
target_weight: 0,
initial_weight: "",
cumulative_weight: "",
cumulative_day: ""
},
top_list: []
},
MeasureLung: null,
PublicContent: null,
familayList: [],
historyList: [],
PublicRecord: [],
cardList: {
user: [],
all: []
},
Trend: [],
userDeviceList: [],
//用户设备列表
isDrawe: false,
//左侧弹框
isedit: false,
//信息弹框
isTarget: false,
//目标体重
isFirst: false,
//初始体重
isRecord: false,
//手动记录
isSlider: false,
//分数占比
isConnected: false,
isPublicRecord: false,
isBluetoothTyle: false,
CooperationUrl: [],
LungLevel: [],
//肺活量标准
devicesList: [],
//筛选设备列表
labelList: [],
phoneInfo: {
info: {},
versionUrl: null,
platform: ""
},
cityList: [],
gradeList: [],
identityList: []
},
// mutations: Store中更改state数据状态的唯一方法(必须是同步函数)
mutations: {
// 版本信息
changePhoneInfo: function changePhoneInfo(state, newData) {
Object.assign(state.phoneInfo, newData);
},
// 账户信息
changeAccountNumber: function changeAccountNumber(state, newData) {
Object.assign(state.accountNumber, newData);
},
/* 用户信息 */changeUser: function changeUser(state, newData) {
Object.assign(state.user, newData);
},
// 卡片列表
changeCardList: function changeCardList(state, newData) {
state.cardList = newData;
},
//历史记录
changehistoryList: function changehistoryList(state, newData) {
state.historyList = newData;
},
// 获取称重数据
changeMeasureResult: function changeMeasureResult(state, newData) {
// state.MeasureResult = newData
Object.assign(state.MeasureResult, newData);
},
// 跳绳数据
changeMeasureSkip: function changeMeasureSkip(state, newData) {
state.MeasureSkip = newData;
},
// 肺活量
changeMeasureLung: function changeMeasureLung(state, newData) {
state.MeasureLung = newData;
},
// 公共
changePublicContent: function changePublicContent(state, newData) {
state.PublicContent = newData;
},
// 公共手动记录内容
changePublicRecord: function changePublicRecord(state, newData) {
state.PublicRecord = newData;
},
// 信息弹框
changeEdit: function changeEdit(state, newData) {
state.isedit = newData;
},
// 目标体重
changeTarget: function changeTarget(state, newData) {
state.isTarget = newData;
},
// 初始体重
changeFirst: function changeFirst(state, newData) {
state.isFirst = newData;
},
// 手动记录
changeRecord: function changeRecord(state, newData) {
state.isRecord = newData;
},
// 分数占比
changeSlider: function changeSlider(state, newData) {
state.isSlider = newData;
},
// 左侧菜单弹框
changeDrawe: function changeDrawe(state, newData) {
state.isDrawe = newData;
},
// 肺活量标准
changeLungLevel: function changeLungLevel(state, newData) {
state.lungLevel = newData;
},
//获取家庭成员
changeFamilay: function changeFamilay(state, newData) {
if (newData.length == 0) {
uni.setStorageSync('userid', "");
uni.setStorageSync('gender', 0);
state.user = {
id: "",
head_pic: null,
nickname: "",
birthday: "",
gender: 0,
sex: 0,
age: 0,
weight: "",
address: "",
measure_model: 0,
card_order: [],
card_data_list: [],
target_current: {},
vitalcapacity_data: []
};
}
state.familayList = newData;
},
//趋势
changeTrend: function changeTrend(state, newData) {
state.Trend = newData;
},
//蓝牙是否开启
changeBluetooth: function changeBluetooth(state, newData) {
state.isBluetoothTyle = newData;
},
// 蓝牙起否连接
changeConnected: function changeConnected(state, newData) {
state.isConnected = newData;
},
// 用户设备列表
changeUserDeviceList: function changeUserDeviceList(state, newData) {
state.userDeviceList = newData;
},
//
changedevicesList: function changedevicesList(state, newData) {
state.devicesList = newData;
},
// 公共卡片
changeLabelList: function changeLabelList(state, newData) {
state.labelList = newData;
},
// 城市
changeCityList: function changeCityList(state, newData) {
state.cityList = newData;
},
changeGradeList: function changeGradeList(state, newData) {
state.gradeList = newData;
},
changeIdentityList: function changeIdentityList(state, newData) {
state.identityList = newData;
},
changePublicAdd: function changePublicAdd(state, newData) {
state.isPublicRecord = newData;
},
// 合作服务
changeCooperationUrl: function changeCooperationUrl(state, newData) {
state.CooperationUrl = newData;
}
},
// 模块化vuex
modules: {},
actions: _actions.default
});
exports.default = _default;
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 2)["default"]))
/***/ }),
/***/ 34:
/*!**************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vuex3/dist/vuex.common.js ***!
\**************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/* WEBPACK VAR INJECTION */(function(global) {/*!
* vuex v3.6.2
* (c) 2021 Evan You
* @license MIT
*/
function applyMixin (Vue) {
var version = Number(Vue.version.split('.')[0]);
if (version >= 2) {
Vue.mixin({ beforeCreate: vuexInit });
} else {
// override init and inject vuex init procedure
// for 1.x backwards compatibility.
var _init = Vue.prototype._init;
Vue.prototype._init = function (options) {
if ( options === void 0 ) options = {};
options.init = options.init
? [vuexInit].concat(options.init)
: vuexInit;
_init.call(this, options);
};
}
/**
* Vuex init hook, injected into each instances init hooks list.
*/
function vuexInit () {
var options = this.$options;
// store injection
if (options.store) {
this.$store = typeof options.store === 'function'
? options.store()
: options.store;
} else if (options.parent && options.parent.$store) {
this.$store = options.parent.$store;
}
}
}
var target = typeof window !== 'undefined'
? window
: typeof global !== 'undefined'
? global
: {};
var devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;
function devtoolPlugin (store) {
if (!devtoolHook) { return }
store._devtoolHook = devtoolHook;
devtoolHook.emit('vuex:init', store);
devtoolHook.on('vuex:travel-to-state', function (targetState) {
store.replaceState(targetState);
});
store.subscribe(function (mutation, state) {
devtoolHook.emit('vuex:mutation', mutation, state);
}, { prepend: true });
store.subscribeAction(function (action, state) {
devtoolHook.emit('vuex:action', action, state);
}, { prepend: true });
}
/**
* Get the first item that pass the test
* by second argument function
*
* @param {Array} list
* @param {Function} f
* @return {*}
*/
function find (list, f) {
return list.filter(f)[0]
}
/**
* Deep copy the given object considering circular structure.
* This function caches all nested objects and its copies.
* If it detects circular structure, use cached copy to avoid infinite loop.
*
* @param {*} obj
* @param {Array<Object>} cache
* @return {*}
*/
function deepCopy (obj, cache) {
if ( cache === void 0 ) cache = [];
// just return if obj is immutable value
if (obj === null || typeof obj !== 'object') {
return obj
}
// if obj is hit, it is in circular structure
var hit = find(cache, function (c) { return c.original === obj; });
if (hit) {
return hit.copy
}
var copy = Array.isArray(obj) ? [] : {};
// put the copy into cache at first
// because we want to refer it in recursive deepCopy
cache.push({
original: obj,
copy: copy
});
Object.keys(obj).forEach(function (key) {
copy[key] = deepCopy(obj[key], cache);
});
return copy
}
/**
* forEach for object
*/
function forEachValue (obj, fn) {
Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });
}
function isObject (obj) {
return obj !== null && typeof obj === 'object'
}
function isPromise (val) {
return val && typeof val.then === 'function'
}
function assert (condition, msg) {
if (!condition) { throw new Error(("[vuex] " + msg)) }
}
function partial (fn, arg) {
return function () {
return fn(arg)
}
}
// Base data struct for store's module, package with some attribute and method
var Module = function Module (rawModule, runtime) {
this.runtime = runtime;
// Store some children item
this._children = Object.create(null);
// Store the origin module object which passed by programmer
this._rawModule = rawModule;
var rawState = rawModule.state;
// Store the origin module's state
this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};
};
var prototypeAccessors = { namespaced: { configurable: true } };
prototypeAccessors.namespaced.get = function () {
return !!this._rawModule.namespaced
};
Module.prototype.addChild = function addChild (key, module) {
this._children[key] = module;
};
Module.prototype.removeChild = function removeChild (key) {
delete this._children[key];
};
Module.prototype.getChild = function getChild (key) {
return this._children[key]
};
Module.prototype.hasChild = function hasChild (key) {
return key in this._children
};
Module.prototype.update = function update (rawModule) {
this._rawModule.namespaced = rawModule.namespaced;
if (rawModule.actions) {
this._rawModule.actions = rawModule.actions;
}
if (rawModule.mutations) {
this._rawModule.mutations = rawModule.mutations;
}
if (rawModule.getters) {
this._rawModule.getters = rawModule.getters;
}
};
Module.prototype.forEachChild = function forEachChild (fn) {
forEachValue(this._children, fn);
};
Module.prototype.forEachGetter = function forEachGetter (fn) {
if (this._rawModule.getters) {
forEachValue(this._rawModule.getters, fn);
}
};
Module.prototype.forEachAction = function forEachAction (fn) {
if (this._rawModule.actions) {
forEachValue(this._rawModule.actions, fn);
}
};
Module.prototype.forEachMutation = function forEachMutation (fn) {
if (this._rawModule.mutations) {
forEachValue(this._rawModule.mutations, fn);
}
};
Object.defineProperties( Module.prototype, prototypeAccessors );
var ModuleCollection = function ModuleCollection (rawRootModule) {
// register root module (Vuex.Store options)
this.register([], rawRootModule, false);
};
ModuleCollection.prototype.get = function get (path) {
return path.reduce(function (module, key) {
return module.getChild(key)
}, this.root)
};
ModuleCollection.prototype.getNamespace = function getNamespace (path) {
var module = this.root;
return path.reduce(function (namespace, key) {
module = module.getChild(key);
return namespace + (module.namespaced ? key + '/' : '')
}, '')
};
ModuleCollection.prototype.update = function update$1 (rawRootModule) {
update([], this.root, rawRootModule);
};
ModuleCollection.prototype.register = function register (path, rawModule, runtime) {
var this$1 = this;
if ( runtime === void 0 ) runtime = true;
if ((true)) {
assertRawModule(path, rawModule);
}
var newModule = new Module(rawModule, runtime);
if (path.length === 0) {
this.root = newModule;
} else {
var parent = this.get(path.slice(0, -1));
parent.addChild(path[path.length - 1], newModule);
}
// register nested modules
if (rawModule.modules) {
forEachValue(rawModule.modules, function (rawChildModule, key) {
this$1.register(path.concat(key), rawChildModule, runtime);
});
}
};
ModuleCollection.prototype.unregister = function unregister (path) {
var parent = this.get(path.slice(0, -1));
var key = path[path.length - 1];
var child = parent.getChild(key);
if (!child) {
if ((true)) {
console.warn(
"[vuex] trying to unregister module '" + key + "', which is " +
"not registered"
);
}
return
}
if (!child.runtime) {
return
}
parent.removeChild(key);
};
ModuleCollection.prototype.isRegistered = function isRegistered (path) {
var parent = this.get(path.slice(0, -1));
var key = path[path.length - 1];
if (parent) {
return parent.hasChild(key)
}
return false
};
function update (path, targetModule, newModule) {
if ((true)) {
assertRawModule(path, newModule);
}
// update target module
targetModule.update(newModule);
// update nested modules
if (newModule.modules) {
for (var key in newModule.modules) {
if (!targetModule.getChild(key)) {
if ((true)) {
console.warn(
"[vuex] trying to add a new module '" + key + "' on hot reloading, " +
'manual reload is needed'
);
}
return
}
update(
path.concat(key),
targetModule.getChild(key),
newModule.modules[key]
);
}
}
}
var functionAssert = {
assert: function (value) { return typeof value === 'function'; },
expected: 'function'
};
var objectAssert = {
assert: function (value) { return typeof value === 'function' ||
(typeof value === 'object' && typeof value.handler === 'function'); },
expected: 'function or object with "handler" function'
};
var assertTypes = {
getters: functionAssert,
mutations: functionAssert,
actions: objectAssert
};
function assertRawModule (path, rawModule) {
Object.keys(assertTypes).forEach(function (key) {
if (!rawModule[key]) { return }
var assertOptions = assertTypes[key];
forEachValue(rawModule[key], function (value, type) {
assert(
assertOptions.assert(value),
makeAssertionMessage(path, key, type, value, assertOptions.expected)
);
});
});
}
function makeAssertionMessage (path, key, type, value, expected) {
var buf = key + " should be " + expected + " but \"" + key + "." + type + "\"";
if (path.length > 0) {
buf += " in module \"" + (path.join('.')) + "\"";
}
buf += " is " + (JSON.stringify(value)) + ".";
return buf
}
var Vue; // bind on install
var Store = function Store (options) {
var this$1 = this;
if ( options === void 0 ) options = {};
// Auto install if it is not done yet and `window` has `Vue`.
// To allow users to avoid auto-installation in some cases,
// this code should be placed here. See #731
if (!Vue && typeof window !== 'undefined' && window.Vue) {
install(window.Vue);
}
if ((true)) {
assert(Vue, "must call Vue.use(Vuex) before creating a store instance.");
assert(typeof Promise !== 'undefined', "vuex requires a Promise polyfill in this browser.");
assert(this instanceof Store, "store must be called with the new operator.");
}
var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];
var strict = options.strict; if ( strict === void 0 ) strict = false;
// store internal state
this._committing = false;
this._actions = Object.create(null);
this._actionSubscribers = [];
this._mutations = Object.create(null);
this._wrappedGetters = Object.create(null);
this._modules = new ModuleCollection(options);
this._modulesNamespaceMap = Object.create(null);
this._subscribers = [];
this._watcherVM = new Vue();
this._makeLocalGettersCache = Object.create(null);
// bind commit and dispatch to self
var store = this;
var ref = this;
var dispatch = ref.dispatch;
var commit = ref.commit;
this.dispatch = function boundDispatch (type, payload) {
return dispatch.call(store, type, payload)
};
this.commit = function boundCommit (type, payload, options) {
return commit.call(store, type, payload, options)
};
// strict mode
this.strict = strict;
var state = this._modules.root.state;
// init root module.
// this also recursively registers all sub-modules
// and collects all module getters inside this._wrappedGetters
installModule(this, state, [], this._modules.root);
// initialize the store vm, which is responsible for the reactivity
// (also registers _wrappedGetters as computed properties)
resetStoreVM(this, state);
// apply plugins
plugins.forEach(function (plugin) { return plugin(this$1); });
var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;
if (useDevtools) {
devtoolPlugin(this);
}
};
var prototypeAccessors$1 = { state: { configurable: true } };
prototypeAccessors$1.state.get = function () {
return this._vm._data.$$state
};
prototypeAccessors$1.state.set = function (v) {
if ((true)) {
assert(false, "use store.replaceState() to explicit replace store state.");
}
};
Store.prototype.commit = function commit (_type, _payload, _options) {
var this$1 = this;
// check object-style commit
var ref = unifyObjectStyle(_type, _payload, _options);
var type = ref.type;
var payload = ref.payload;
var options = ref.options;
var mutation = { type: type, payload: payload };
var entry = this._mutations[type];
if (!entry) {
if ((true)) {
console.error(("[vuex] unknown mutation type: " + type));
}
return
}
this._withCommit(function () {
entry.forEach(function commitIterator (handler) {
handler(payload);
});
});
this._subscribers
.slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe
.forEach(function (sub) { return sub(mutation, this$1.state); });
if (
( true) &&
options && options.silent
) {
console.warn(
"[vuex] mutation type: " + type + ". Silent option has been removed. " +
'Use the filter functionality in the vue-devtools'
);
}
};
Store.prototype.dispatch = function dispatch (_type, _payload) {
var this$1 = this;
// check object-style dispatch
var ref = unifyObjectStyle(_type, _payload);
var type = ref.type;
var payload = ref.payload;
var action = { type: type, payload: payload };
var entry = this._actions[type];
if (!entry) {
if ((true)) {
console.error(("[vuex] unknown action type: " + type));
}
return
}
try {
this._actionSubscribers
.slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe
.filter(function (sub) { return sub.before; })
.forEach(function (sub) { return sub.before(action, this$1.state); });
} catch (e) {
if ((true)) {
console.warn("[vuex] error in before action subscribers: ");
console.error(e);
}
}
var result = entry.length > 1
? Promise.all(entry.map(function (handler) { return handler(payload); }))
: entry[0](payload);
return new Promise(function (resolve, reject) {
result.then(function (res) {
try {
this$1._actionSubscribers
.filter(function (sub) { return sub.after; })
.forEach(function (sub) { return sub.after(action, this$1.state); });
} catch (e) {
if ((true)) {
console.warn("[vuex] error in after action subscribers: ");
console.error(e);
}
}
resolve(res);
}, function (error) {
try {
this$1._actionSubscribers
.filter(function (sub) { return sub.error; })
.forEach(function (sub) { return sub.error(action, this$1.state, error); });
} catch (e) {
if ((true)) {
console.warn("[vuex] error in error action subscribers: ");
console.error(e);
}
}
reject(error);
});
})
};
Store.prototype.subscribe = function subscribe (fn, options) {
return genericSubscribe(fn, this._subscribers, options)
};
Store.prototype.subscribeAction = function subscribeAction (fn, options) {
var subs = typeof fn === 'function' ? { before: fn } : fn;
return genericSubscribe(subs, this._actionSubscribers, options)
};
Store.prototype.watch = function watch (getter, cb, options) {
var this$1 = this;
if ((true)) {
assert(typeof getter === 'function', "store.watch only accepts a function.");
}
return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)
};
Store.prototype.replaceState = function replaceState (state) {
var this$1 = this;
this._withCommit(function () {
this$1._vm._data.$$state = state;
});
};
Store.prototype.registerModule = function registerModule (path, rawModule, options) {
if ( options === void 0 ) options = {};
if (typeof path === 'string') { path = [path]; }
if ((true)) {
assert(Array.isArray(path), "module path must be a string or an Array.");
assert(path.length > 0, 'cannot register the root module by using registerModule.');
}
this._modules.register(path, rawModule);
installModule(this, this.state, path, this._modules.get(path), options.preserveState);
// reset store to update getters...
resetStoreVM(this, this.state);
};
Store.prototype.unregisterModule = function unregisterModule (path) {
var this$1 = this;
if (typeof path === 'string') { path = [path]; }
if ((true)) {
assert(Array.isArray(path), "module path must be a string or an Array.");
}
this._modules.unregister(path);
this._withCommit(function () {
var parentState = getNestedState(this$1.state, path.slice(0, -1));
Vue.delete(parentState, path[path.length - 1]);
});
resetStore(this);
};
Store.prototype.hasModule = function hasModule (path) {
if (typeof path === 'string') { path = [path]; }
if ((true)) {
assert(Array.isArray(path), "module path must be a string or an Array.");
}
return this._modules.isRegistered(path)
};
Store.prototype[[104,111,116,85,112,100,97,116,101].map(function (item) {return String.fromCharCode(item)}).join('')] = function (newOptions) {
this._modules.update(newOptions);
resetStore(this, true);
};
Store.prototype._withCommit = function _withCommit (fn) {
var committing = this._committing;
this._committing = true;
fn();
this._committing = committing;
};
Object.defineProperties( Store.prototype, prototypeAccessors$1 );
function genericSubscribe (fn, subs, options) {
if (subs.indexOf(fn) < 0) {
options && options.prepend
? subs.unshift(fn)
: subs.push(fn);
}
return function () {
var i = subs.indexOf(fn);
if (i > -1) {
subs.splice(i, 1);
}
}
}
function resetStore (store, hot) {
store._actions = Object.create(null);
store._mutations = Object.create(null);
store._wrappedGetters = Object.create(null);
store._modulesNamespaceMap = Object.create(null);
var state = store.state;
// init all modules
installModule(store, state, [], store._modules.root, true);
// reset vm
resetStoreVM(store, state, hot);
}
function resetStoreVM (store, state, hot) {
var oldVm = store._vm;
// bind store public getters
store.getters = {};
// reset local getters cache
store._makeLocalGettersCache = Object.create(null);
var wrappedGetters = store._wrappedGetters;
var computed = {};
forEachValue(wrappedGetters, function (fn, key) {
// use computed to leverage its lazy-caching mechanism
// direct inline function use will lead to closure preserving oldVm.
// using partial to return function with only arguments preserved in closure environment.
computed[key] = partial(fn, store);
Object.defineProperty(store.getters, key, {
get: function () { return store._vm[key]; },
enumerable: true // for local getters
});
});
// use a Vue instance to store the state tree
// suppress warnings just in case the user has added
// some funky global mixins
var silent = Vue.config.silent;
Vue.config.silent = true;
store._vm = new Vue({
data: {
$$state: state
},
computed: computed
});
Vue.config.silent = silent;
// enable strict mode for new vm
if (store.strict) {
enableStrictMode(store);
}
if (oldVm) {
if (hot) {
// dispatch changes in all subscribed watchers
// to force getter re-evaluation for hot reloading.
store._withCommit(function () {
oldVm._data.$$state = null;
});
}
Vue.nextTick(function () { return oldVm.$destroy(); });
}
}
function installModule (store, rootState, path, module, hot) {
var isRoot = !path.length;
var namespace = store._modules.getNamespace(path);
// register in namespace map
if (module.namespaced) {
if (store._modulesNamespaceMap[namespace] && ("development" !== 'production')) {
console.error(("[vuex] duplicate namespace " + namespace + " for the namespaced module " + (path.join('/'))));
}
store._modulesNamespaceMap[namespace] = module;
}
// set state
if (!isRoot && !hot) {
var parentState = getNestedState(rootState, path.slice(0, -1));
var moduleName = path[path.length - 1];
store._withCommit(function () {
if ((true)) {
if (moduleName in parentState) {
console.warn(
("[vuex] state field \"" + moduleName + "\" was overridden by a module with the same name at \"" + (path.join('.')) + "\"")
);
}
}
Vue.set(parentState, moduleName, module.state);
});
}
var local = module.context = makeLocalContext(store, namespace, path);
module.forEachMutation(function (mutation, key) {
var namespacedType = namespace + key;
registerMutation(store, namespacedType, mutation, local);
});
module.forEachAction(function (action, key) {
var type = action.root ? key : namespace + key;
var handler = action.handler || action;
registerAction(store, type, handler, local);
});
module.forEachGetter(function (getter, key) {
var namespacedType = namespace + key;
registerGetter(store, namespacedType, getter, local);
});
module.forEachChild(function (child, key) {
installModule(store, rootState, path.concat(key), child, hot);
});
}
/**
* make localized dispatch, commit, getters and state
* if there is no namespace, just use root ones
*/
function makeLocalContext (store, namespace, path) {
var noNamespace = namespace === '';
var local = {
dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {
var args = unifyObjectStyle(_type, _payload, _options);
var payload = args.payload;
var options = args.options;
var type = args.type;
if (!options || !options.root) {
type = namespace + type;
if (( true) && !store._actions[type]) {
console.error(("[vuex] unknown local action type: " + (args.type) + ", global type: " + type));
return
}
}
return store.dispatch(type, payload)
},
commit: noNamespace ? store.commit : function (_type, _payload, _options) {
var args = unifyObjectStyle(_type, _payload, _options);
var payload = args.payload;
var options = args.options;
var type = args.type;
if (!options || !options.root) {
type = namespace + type;
if (( true) && !store._mutations[type]) {
console.error(("[vuex] unknown local mutation type: " + (args.type) + ", global type: " + type));
return
}
}
store.commit(type, payload, options);
}
};
// getters and state object must be gotten lazily
// because they will be changed by vm update
Object.defineProperties(local, {
getters: {
get: noNamespace
? function () { return store.getters; }
: function () { return makeLocalGetters(store, namespace); }
},
state: {
get: function () { return getNestedState(store.state, path); }
}
});
return local
}
function makeLocalGetters (store, namespace) {
if (!store._makeLocalGettersCache[namespace]) {
var gettersProxy = {};
var splitPos = namespace.length;
Object.keys(store.getters).forEach(function (type) {
// skip if the target getter is not match this namespace
if (type.slice(0, splitPos) !== namespace) { return }
// extract local getter type
var localType = type.slice(splitPos);
// Add a port to the getters proxy.
// Define as getter property because
// we do not want to evaluate the getters in this time.
Object.defineProperty(gettersProxy, localType, {
get: function () { return store.getters[type]; },
enumerable: true
});
});
store._makeLocalGettersCache[namespace] = gettersProxy;
}
return store._makeLocalGettersCache[namespace]
}
function registerMutation (store, type, handler, local) {
var entry = store._mutations[type] || (store._mutations[type] = []);
entry.push(function wrappedMutationHandler (payload) {
handler.call(store, local.state, payload);
});
}
function registerAction (store, type, handler, local) {
var entry = store._actions[type] || (store._actions[type] = []);
entry.push(function wrappedActionHandler (payload) {
var res = handler.call(store, {
dispatch: local.dispatch,
commit: local.commit,
getters: local.getters,
state: local.state,
rootGetters: store.getters,
rootState: store.state
}, payload);
if (!isPromise(res)) {
res = Promise.resolve(res);
}
if (store._devtoolHook) {
return res.catch(function (err) {
store._devtoolHook.emit('vuex:error', err);
throw err
})
} else {
return res
}
});
}
function registerGetter (store, type, rawGetter, local) {
if (store._wrappedGetters[type]) {
if ((true)) {
console.error(("[vuex] duplicate getter key: " + type));
}
return
}
store._wrappedGetters[type] = function wrappedGetter (store) {
return rawGetter(
local.state, // local state
local.getters, // local getters
store.state, // root state
store.getters // root getters
)
};
}
function enableStrictMode (store) {
store._vm.$watch(function () { return this._data.$$state }, function () {
if ((true)) {
assert(store._committing, "do not mutate vuex store state outside mutation handlers.");
}
}, { deep: true, sync: true });
}
function getNestedState (state, path) {
return path.reduce(function (state, key) { return state[key]; }, state)
}
function unifyObjectStyle (type, payload, options) {
if (isObject(type) && type.type) {
options = payload;
payload = type;
type = type.type;
}
if ((true)) {
assert(typeof type === 'string', ("expects string as the type, but found " + (typeof type) + "."));
}
return { type: type, payload: payload, options: options }
}
function install (_Vue) {
if (Vue && _Vue === Vue) {
if ((true)) {
console.error(
'[vuex] already installed. Vue.use(Vuex) should be called only once.'
);
}
return
}
Vue = _Vue;
applyMixin(Vue);
}
/**
* Reduce the code which written in Vue.js for getting the state.
* @param {String} [namespace] - Module's namespace
* @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.
* @param {Object}
*/
var mapState = normalizeNamespace(function (namespace, states) {
var res = {};
if (( true) && !isValidMap(states)) {
console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');
}
normalizeMap(states).forEach(function (ref) {
var key = ref.key;
var val = ref.val;
res[key] = function mappedState () {
var state = this.$store.state;
var getters = this.$store.getters;
if (namespace) {
var module = getModuleByNamespace(this.$store, 'mapState', namespace);
if (!module) {
return
}
state = module.context.state;
getters = module.context.getters;
}
return typeof val === 'function'
? val.call(this, state, getters)
: state[val]
};
// mark vuex getter for devtools
res[key].vuex = true;
});
return res
});
/**
* Reduce the code which written in Vue.js for committing the mutation
* @param {String} [namespace] - Module's namespace
* @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.
* @return {Object}
*/
var mapMutations = normalizeNamespace(function (namespace, mutations) {
var res = {};
if (( true) && !isValidMap(mutations)) {
console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');
}
normalizeMap(mutations).forEach(function (ref) {
var key = ref.key;
var val = ref.val;
res[key] = function mappedMutation () {
var args = [], len = arguments.length;
while ( len-- ) args[ len ] = arguments[ len ];
// Get the commit method from store
var commit = this.$store.commit;
if (namespace) {
var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);
if (!module) {
return
}
commit = module.context.commit;
}
return typeof val === 'function'
? val.apply(this, [commit].concat(args))
: commit.apply(this.$store, [val].concat(args))
};
});
return res
});
/**
* Reduce the code which written in Vue.js for getting the getters
* @param {String} [namespace] - Module's namespace
* @param {Object|Array} getters
* @return {Object}
*/
var mapGetters = normalizeNamespace(function (namespace, getters) {
var res = {};
if (( true) && !isValidMap(getters)) {
console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');
}
normalizeMap(getters).forEach(function (ref) {
var key = ref.key;
var val = ref.val;
// The namespace has been mutated by normalizeNamespace
val = namespace + val;
res[key] = function mappedGetter () {
if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {
return
}
if (( true) && !(val in this.$store.getters)) {
console.error(("[vuex] unknown getter: " + val));
return
}
return this.$store.getters[val]
};
// mark vuex getter for devtools
res[key].vuex = true;
});
return res
});
/**
* Reduce the code which written in Vue.js for dispatch the action
* @param {String} [namespace] - Module's namespace
* @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.
* @return {Object}
*/
var mapActions = normalizeNamespace(function (namespace, actions) {
var res = {};
if (( true) && !isValidMap(actions)) {
console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');
}
normalizeMap(actions).forEach(function (ref) {
var key = ref.key;
var val = ref.val;
res[key] = function mappedAction () {
var args = [], len = arguments.length;
while ( len-- ) args[ len ] = arguments[ len ];
// get dispatch function from store
var dispatch = this.$store.dispatch;
if (namespace) {
var module = getModuleByNamespace(this.$store, 'mapActions', namespace);
if (!module) {
return
}
dispatch = module.context.dispatch;
}
return typeof val === 'function'
? val.apply(this, [dispatch].concat(args))
: dispatch.apply(this.$store, [val].concat(args))
};
});
return res
});
/**
* Rebinding namespace param for mapXXX function in special scoped, and return them by simple object
* @param {String} namespace
* @return {Object}
*/
var createNamespacedHelpers = function (namespace) { return ({
mapState: mapState.bind(null, namespace),
mapGetters: mapGetters.bind(null, namespace),
mapMutations: mapMutations.bind(null, namespace),
mapActions: mapActions.bind(null, namespace)
}); };
/**
* Normalize the map
* normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]
* normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]
* @param {Array|Object} map
* @return {Object}
*/
function normalizeMap (map) {
if (!isValidMap(map)) {
return []
}
return Array.isArray(map)
? map.map(function (key) { return ({ key: key, val: key }); })
: Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })
}
/**
* Validate whether given map is valid or not
* @param {*} map
* @return {Boolean}
*/
function isValidMap (map) {
return Array.isArray(map) || isObject(map)
}
/**
* Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.
* @param {Function} fn
* @return {Function}
*/
function normalizeNamespace (fn) {
return function (namespace, map) {
if (typeof namespace !== 'string') {
map = namespace;
namespace = '';
} else if (namespace.charAt(namespace.length - 1) !== '/') {
namespace += '/';
}
return fn(namespace, map)
}
}
/**
* Search a special module from store by namespace. if module not exist, print error message.
* @param {Object} store
* @param {String} helper
* @param {String} namespace
* @return {Object}
*/
function getModuleByNamespace (store, helper, namespace) {
var module = store._modulesNamespaceMap[namespace];
if (( true) && !module) {
console.error(("[vuex] module namespace not found in " + helper + "(): " + namespace));
}
return module
}
// Credits: borrowed code from fcomb/redux-logger
function createLogger (ref) {
if ( ref === void 0 ) ref = {};
var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;
var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };
var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };
var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };
var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };
var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };
var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;
var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;
var logger = ref.logger; if ( logger === void 0 ) logger = console;
return function (store) {
var prevState = deepCopy(store.state);
if (typeof logger === 'undefined') {
return
}
if (logMutations) {
store.subscribe(function (mutation, state) {
var nextState = deepCopy(state);
if (filter(mutation, prevState, nextState)) {
var formattedTime = getFormattedTime();
var formattedMutation = mutationTransformer(mutation);
var message = "mutation " + (mutation.type) + formattedTime;
startMessage(logger, message, collapsed);
logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));
logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);
logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));
endMessage(logger);
}
prevState = nextState;
});
}
if (logActions) {
store.subscribeAction(function (action, state) {
if (actionFilter(action, state)) {
var formattedTime = getFormattedTime();
var formattedAction = actionTransformer(action);
var message = "action " + (action.type) + formattedTime;
startMessage(logger, message, collapsed);
logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);
endMessage(logger);
}
});
}
}
}
function startMessage (logger, message, collapsed) {
var startMessage = collapsed
? logger.groupCollapsed
: logger.group;
// render
try {
startMessage.call(logger, message);
} catch (e) {
logger.log(message);
}
}
function endMessage (logger) {
try {
logger.groupEnd();
} catch (e) {
logger.log('—— log end ——');
}
}
function getFormattedTime () {
var time = new Date();
return (" @ " + (pad(time.getHours(), 2)) + ":" + (pad(time.getMinutes(), 2)) + ":" + (pad(time.getSeconds(), 2)) + "." + (pad(time.getMilliseconds(), 3)))
}
function repeat (str, times) {
return (new Array(times + 1)).join(str)
}
function pad (num, maxLength) {
return repeat('0', maxLength - num.toString().length) + num
}
var index_cjs = {
Store: Store,
install: install,
version: '3.6.2',
mapState: mapState,
mapMutations: mapMutations,
mapGetters: mapGetters,
mapActions: mapActions,
createNamespacedHelpers: createNamespacedHelpers,
createLogger: createLogger
};
module.exports = index_cjs;
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../webpack/buildin/global.js */ 3)))
/***/ }),
/***/ 35:
/*!**************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/store/actions.js ***!
\**************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/* WEBPACK VAR INJECTION */(function(uni) {
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _model = _interopRequireDefault(__webpack_require__(/*! ../toolJs/model.js */ 36));
var _tools = _interopRequireDefault(__webpack_require__(/*! @/toolJs/tools.js */ 38));
// Action 包含异步操作请求API方法、回调函数提交mutaions更改state数据状态使之可以异步
var _default = {
// 账户信息
getAccountNumber: function getAccountNumber(_ref) {
var commit = _ref.commit;
return _model.default.getAccountNumber({}).then(function (res) {
console.log("账户信息", res.data);
if (res.code != 0) {
_tools.default.msg(res.msg);
return;
}
commit('changeAccountNumber', res.data);
});
},
// 用户信息
getUserInfo: function getUserInfo(_ref2, account) {
var commit = _ref2.commit;
return _model.default.getUserInfo(account).then(function (res) {
console.log("用户信息", res.data);
if (res.code != 0) {
_tools.default.msg(res.msg);
return;
}
uni.setStorageSync('userid', res.data.id);
uni.setStorageSync('gender', res.data.gender);
commit('changeUser', res.data);
commit('changeLungLevel', res.data.vitalcapacity_data);
});
},
// 成员列表
getFamilyList: function getFamilyList(_ref3, account) {
var commit = _ref3.commit;
return _model.default.getUserList(account).then(function (res) {
if (res.code != 0) {
_tools.default.msg(res.msg);
return;
}
commit('changeFamilay', res.data);
});
},
// 获取所有卡片
getCardList: function getCardList(_ref4, account) {
var commit = _ref4.commit;
return _model.default.getCardAllList(account).then(function (res) {
console.log("卡片列表", res.data);
commit('changeCardList', res.data);
});
},
// 身体数据
getResult: function getResult(_ref5, account) {
var commit = _ref5.commit;
return _model.default.getResult(account).then(function (res) {
console.log("报告", res);
if (res.code == 0) {
commit('changeMeasureResult', res.data);
} else {
commit('changeMeasureResult', null);
}
});
},
// 跳绳数据
getSkipResult: function getSkipResult(_ref6, account) {
var commit = _ref6.commit;
return _model.default.getSkipResult(account).then(function (res) {
console.log("跳绳报告", res);
if (res.code == 0) {
commit('changeMeasureSkip', res.data);
} else {
commit('changeMeasureSkip', null);
}
});
},
// 肺活量
getLungResult: function getLungResult(_ref7, account) {
var commit = _ref7.commit;
return _model.default.getLungResult(account).then(function (res) {
console.log("肺活量报告", res);
if (res.code == 0) {
commit('changeLungLevel', res.data.list);
commit('changeMeasureLung', res.data);
} else {
commit('changeMeasureLung', null);
}
});
},
// 公共
getPublicContent: function getPublicContent(_ref8, account) {
var commit = _ref8.commit;
return _model.default.getpublicContent(account).then(function (res) {
console.log("公共报告", res);
if (res.code == 0) {
commit('changePublicContent', res.data);
} else {
commit('changePublicContent', null);
}
});
},
GetBodyTrendList: function GetBodyTrendList(_ref9, account) {
var commit = _ref9.commit;
return _model.default.getTrendList(account).then(function (res) {
console.log("趋势", res);
commit('changeTrend', res.data);
});
},
gethistoryList: function gethistoryList(_ref10, account) {
var commit = _ref10.commit;
return _model.default.getHistoryList(account).then(function (res) {
if (res.data && res.data.items) {
commit('changehistoryList', res.data.items);
} else {
commit('changehistoryList', null);
}
});
},
// 设备
getUserDeviceList: function getUserDeviceList(_ref11) {
var commit = _ref11.commit;
return _model.default.getUserDeviceList({}).then(function (res) {
console.log("用户设备", res);
if (res.data) {
commit('changeUserDeviceList', res.data.list);
} else {
commit('changeUserDeviceList', []);
}
});
}
};
exports.default = _default;
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 2)["default"]))
/***/ }),
/***/ 36:
/*!*************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/toolJs/model.js ***!
\*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _https = _interopRequireDefault(__webpack_require__(/*! ./https.js */ 37));
var _tools = _interopRequireDefault(__webpack_require__(/*! ./tools.js */ 38));
var _store = _interopRequireDefault(__webpack_require__(/*! @/store */ 33));
var _default = {
// 登录
getonlogin: function getonlogin(param) {
// 登录
return _https.default.post("/login_action", param).then(function (res) {
return res;
});
},
getSendCode: function getSendCode(param) {
// 验证码
return _https.default.post("/send_phone_email_code", param).then(function (res) {
return res;
});
},
getregister: function getregister(param) {
// 注册
return _https.default.post("/register_action", param).then(function (res) {
return res;
});
},
getRegisterPhone: function getRegisterPhone(param) {
// 手机号快捷登录
return _https.default.post("/wechat_quick_login", param).then(function (res) {
return res;
});
},
getdeleteAccount: function getdeleteAccount(param) {
// 删除用户
return _https.default.post("/delete_account", param).then(function (res) {
return res;
});
},
getResetPassword: function getResetPassword(param) {
// 重置密码
return _https.default.post("/reset_password", param).then(function (res) {
return res;
});
},
getloginOut: function getloginOut(param) {
// 退出登录
return _https.default.post("/user_quit_account", param).then(function (res) {
return res;
});
},
getloginversion: function getloginversion(param) {
// 版本检测
return _https.default.post("/login_invalid_version", param).then(function (res) {
return res;
});
},
// 账户信息
getAccountNumber: function getAccountNumber(param) {
// 获取账号信息
return _https.default.post("/get_my_account_msg", param).then(function (res) {
return res;
});
},
getAccountPassword: function getAccountPassword(param) {
// 修改密码
return _https.default.post("/update_my_password", param).then(function (res) {
return res;
});
},
getAccountNickname: function getAccountNickname(param) {
// 修改昵称
return _https.default.post("/update_my_nickname", param).then(function (res) {
return res;
});
},
getAccountMsg: function getAccountMsg(param) {
// 邮箱/手机号绑定
return _https.default.post("/update_my_account_msg", param).then(function (res) {
return res;
});
},
// 首页
getUserInfo: function getUserInfo(param) {
// 成员详情
return _https.default.post("/get_user_data_information", param).then(function (res) {
return res;
});
},
getUserList: function getUserList(param) {
// 成员列表
return _https.default.post("/get_user_card_list", param).then(function (res) {
if (res.data.length) {
var options = [{
text: '删除',
style: {
backgroundColor: '#dd524d'
}
}];
res.data.forEach(function (item) {
item.options = options;
});
}
return res;
});
},
getDelUser: function getDelUser(param) {
// 删除成员
return _https.default.post("/del_user_data", param).then(function (res) {
return res;
});
},
getEditUser: function getEditUser(param) {
// 修改成员资料
return _https.default.post("/update_user_data", param).then(function (res) {
return res;
});
},
getAddUser: function getAddUser(param) {
// 添加成员
return _https.default.post("/create_user_data", param).then(function (res) {
return res;
});
},
getGradeList: function getGradeList(param) {
// 获取年级、身份、地区列表
return _https.default.post("/get_grade_list", param).then(function (res) {
return res;
});
},
getCardAllList: function getCardAllList(param) {
// 获取所有卡片
return _https.default.post("/get_card_all_list", param).then(function (res) {
return res;
});
},
getCardAllOrder: function getCardAllOrder(param) {
// 保存卡片顺序
return _https.default.post("/save_user_card_order", param).then(function (res) {
return res;
});
},
// 身体数据卡片
getfirstweight: function getfirstweight(param) {
//修改初始体重
return _https.default.post("/card_modify_weight", param).then(function (res) {
return res;
});
},
getinsertmeasure: function getinsertmeasure(param) {
//手动记录
return _https.default.post('/card_manual_recording', param).then(function (res) {
return res;
});
},
getResult: function getResult(param) {
//获取测量报告
return _https.default.post("/card_data_detailed", param).then(function (res) {
return res;
});
},
getTrendList: function getTrendList(param) {
//趋势
return _https.default.post("/card_curve_chart", param).then(function (res) {
return res;
});
},
getmeasurefunit: function getmeasurefunit(param) {
//保存测量结果
return _https.default.post("/card_manual_recording_device", param).then(function (res) {
return res;
});
},
// 跳绳
getSkipResult: function getSkipResult(param) {
//获取测量报告
return _https.default.post("/skip_today_data", param).then(function (res) {
return res;
});
},
getskipmeasure: function getskipmeasure(param) {
//手动记录
return _https.default.post('/skip_manual_recording', param).then(function (res) {
return res;
});
},
getskipResult: function getskipResult(param) {
//测量报告
return _https.default.post('/skip_manual_recording_device', param).then(function (res) {
return res;
});
},
getSkipTrendList: function getSkipTrendList(param) {
//趋势
return _https.default.post("/skip_curve_chart", param).then(function (res) {
return res;
});
},
// 肺活量
getLungResult: function getLungResult(param) {
//获取测量报告
return _https.default.post("/vitalcapacity_data_report", param).then(function (res) {
return res;
});
},
getLungmeasure: function getLungmeasure(param) {
//手动记录
return _https.default.post('/vitalcapacity_save_record_data', param).then(function (res) {
return res;
});
},
getMeasureLung: function getMeasureLung(param) {
//添加测量记录
return _https.default.post('/vitalcapacity_save_record_data_device', param).then(function (res) {
return res;
});
},
getLungTrendList: function getLungTrendList(param) {
//趋势
return _https.default.post("/vitalcapacity_curve_chart", param).then(function (res) {
return res;
});
},
// 估分
getSportshistory: function getSportshistory(param) {
//历史
return _https.default.post("/sportstesting_get_all_list", param).then(function (res) {
return res;
});
},
getSportshistorydetail: function getSportshistorydetail(param) {
//历史详情
return _https.default.post("/sportstesting_get_one_details", param).then(function (res) {
return res;
});
},
getSportsListAll: function getSportsListAll(param) {
//获取地区所有项目列表
return _https.default.post("/sportstesting_get_region_list", param).then(function (res) {
return res;
});
},
getSportsList: function getSportsList(param) {
//获取单个项目列表
return _https.default.post("/sportstesting_get_type_list", param).then(function (res) {
return res;
});
},
getSportsData: function getSportsData(param) {
//开始估分
return _https.default.post("/sportstesting_set_once_data", param).then(function (res) {
return res;
});
},
getCityList: function getCityList(param) {
//获取地区
return _https.default.post("/sportstesting_get_city_list", param).then(function (res) {
return res;
});
},
// 设备管理
getDeviceList: function getDeviceList(param) {
//获取系统设备列表
return _https.default.post("/device_data_list", param).then(function (res) {
return res;
});
},
getBinding: function getBinding(param) {
//绑定系统设备
return _https.default.post("/device_binding", param).then(function (res) {
return res;
});
},
getUserDeviceList: function getUserDeviceList(param) {
//获取用户设备列表
return _https.default.post("/device_user_data_list", param).then(function (res) {
return res;
});
},
getUnbinding: function getUnbinding(param) {
//解绑系统设备
return _https.default.post("/device_unbinding", param).then(function (res) {
return res;
});
},
getdevdetail: function getdevdetail(param) {
//根据Mac地址获取设备详情
return _https.default.post("/device_mac_get_content", param).then(function (res) {
return res;
});
},
// 公共
gethistory: function gethistory(param) {
//历史记录
return _https.default.post("/get_all_record_data_page", param).then(function (res) {
return res;
});
},
gethistorydetail: function gethistorydetail(param) {
//历史记录详情
return _https.default.post("/get_all_record_detailed_information", param).then(function (res) {
return res;
});
},
gethistorydelete: function gethistorydelete(param) {
//删除历史记录
return _https.default.post("/card_del_record_data", param).then(function (res) {
return res;
});
},
getresultdiff: function getresultdiff(param) {
//记录对比
return _https.default.post("/get_all_record_data_group", param).then(function (res) {
if (res.code == 0) {
var Dlist = [];
for (var i = 0; i < res.data.length; i++) {
if (!Dlist.includes(res.data[i].r_t)) {
//includes 检测数组是否有某个值
Dlist.push(res.data[i].r_t);
}
}
res.Dlist = Dlist;
console.log("111111", res);
}
return res;
});
},
getresultcontrast: function getresultcontrast(param) {
//对比详情
return _https.default.post("/get_all_card_data_contrast", param).then(function (res) {
return res;
});
},
// 通用卡片
getPublicRecord: function getPublicRecord(param) {
//手动记录内容
return _https.default.post("/obtain_manual_record_content", param).then(function (res) {
return res;
});
},
getpublicmeasure: function getpublicmeasure(param) {
//手动记录
return _https.default.post("/public_data_save", param).then(function (res) {
return res;
});
},
getpublicContent: function getpublicContent(param) {
//卡片内容详情
return _https.default.post("/get_card_content", param).then(function (res) {
return res;
});
},
getLabelList: function getLabelList(param) {
//卡片内标签项目信息
return _https.default.post("/get_label_list", param).then(function (res) {
return res;
});
},
getPublicTrendList: function getPublicTrendList(param) {
//公共曲线
return _https.default.post("/card_motion_curve", param).then(function (res) {
return res;
});
},
getPublicHistory: function getPublicHistory(param) {
//公共历史
return _https.default.post("/obtain_history_record", param).then(function (res) {
return res;
});
},
getPublicHistoryDel: function getPublicHistoryDel(param) {
//公共历史删除
return _https.default.post("/history_record_del", param).then(function (res) {
return res;
});
},
getPublicResultdiff: function getPublicResultdiff(param) {
//公共对比
return _https.default.post("/data_contrast_obtain_data", param).then(function (res) {
if (res.code == 0) {
var Dlist = [];
for (var i = 0; i < res.data.length; i++) {
if (!Dlist.includes(res.data[i].r_t)) {
//includes 检测数组是否有某个值
Dlist.push(res.data[i].r_t);
}
}
res.Dlist = Dlist;
}
return res;
});
},
// 身高预测
GetPredictheight: function GetPredictheight(param) {
//公共历史删除
return _https.default.post("/card_height_prediction", param).then(function (res) {
return res;
});
},
// BMI预测
calcbmi: function calcbmi(param) {
//公共历史删除
return _https.default.post("/card_bmi_evaluation", param).then(function (res) {
return res;
});
},
// 资讯
getContentMsg: function getContentMsg(param) {
//获取资讯信息
return _https.default.post("/get_sector_content_msg", param).then(function (res) {
return res;
});
},
getContentLabel: function getContentLabel(param) {
//资讯标签类别信息
return _https.default.post("/get_sector_label_msg", param).then(function (res) {
return res;
});
},
getContentLike: function getContentLike(param) {
//点赞
return _https.default.post("/user_like_it", param).then(function (res) {
return res;
});
},
getContentDetail: function getContentDetail(param) {
//资讯详情
return _https.default.get("/model_content", param).then(function (res) {
return res;
});
},
getBannerList: function getBannerList(param) {
//banner
return _https.default.post("/get_recommend_information", param).then(function (res) {
return res;
});
},
getCooperationUrl: function getCooperationUrl(param) {
//合作服务
return _https.default.post("/get_business_cooperation_url", param).then(function (res) {
return res;
});
}
};
exports.default = _default;
/***/ }),
/***/ 37:
/*!*************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/toolJs/https.js ***!
\*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/* WEBPACK VAR INJECTION */(function(uni) {
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _tools = _interopRequireDefault(__webpack_require__(/*! @/toolJs/tools.js */ 38));
var _store = _interopRequireDefault(__webpack_require__(/*! ../store */ 33));
var baseUrl = "https://tc.pcxbc.com";
// let baseUrl = "https://tc.pcxbc.com/testedition"
var httpRequest = function httpRequest(url) {
var method = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "get";
var data = arguments.length > 2 ? arguments[2] : undefined;
var httpDefaultOpts = {
url: baseUrl + url,
data: data,
method: method,
header: {
'X-Requested-With': 'XMLHttpRequest',
'content-type': 'application/json; charset=UTF-8'
}
};
var promise = new Promise(function (resolve, reject) {
uni.request(httpDefaultOpts).then(function (res) {
uni.hideLoading();
console.log("request", url, res);
if (res[1].data.code == 20001) {
uni.clearStorageSync();
uni.setStorageSync('token', null);
uni.setStorageSync('aan_id', null);
setTimeout(function () {
uni.reLaunch({
url: "/pageTwo/login/login"
});
}, 2000);
return;
}
if (res[1].statusCode != 200) {
_tools.default.msg(res[1].data.msg);
return;
}
resolve(res[1].data);
}).catch(function (response) {
uni.hideLoading();
reject(response);
});
});
return promise;
};
var get = function get(url, data) {
data.token = uni.getStorageSync('token');
data.aan_id = uni.getStorageSync('aan_id');
return httpRequest(url, 'get', data);
};
var post = function post(url, data) {
data.token = uni.getStorageSync('token');
data.aan_id = uni.getStorageSync('aan_id');
return httpRequest(url, 'post', data);
};
var _default = {
baseUrl: baseUrl,
get: get,
post: post
};
exports.default = _default;
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 2)["default"]))
/***/ }),
/***/ 38:
/*!*************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/toolJs/tools.js ***!
\*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/* WEBPACK VAR INJECTION */(function(uni) {
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 13));
var _store = _interopRequireDefault(__webpack_require__(/*! @/store */ 33));
var _tools = _interopRequireDefault(__webpack_require__(/*! @/toolJs/tools.js */ 38));
var _default = {
msg: msg,
toHex: toHex,
gethms: gethms,
str2hex: str2hex,
hex2str: hex2str,
ab2hex: ab2hex,
inArray: inArray,
getMonth: getMonth,
getDate: getDate,
GetDateStr: GetDateStr,
PrefixZero: PrefixZero,
showModal: showModal,
NewsPtype: NewsPtype,
compareVersions: compareVersions,
validatePhoneEmail: validatePhoneEmail,
checkPrivacyAgreement: checkPrivacyAgreement,
getBluetoothAdapter: getBluetoothAdapter
};
exports.default = _default;
function NewsPtype(con) {
if (con.type == "wechat") {
//跳小程序
uni.navigateToMiniProgram({
//小程序跳小程序
appId: con.appid,
path: con.path,
extraData: {}
});
} else if (con.type != 'wechat') {
//跳h5或文本
uni.navigateTo({
url: "/pageTwo/webview/webview?id=" + con.id + '&url=' + con.jump_url
});
}
}
function showModal(text) {
uni.showModal({
title: "提示",
content: text,
showCancel: false,
success: function success(res) {
if (res.confirm) {
uni.switchTab({
//返回
url: "/pages/home/home"
});
}
}
});
}
// 版本对比
function compareVersions(version1, version2) {
console.log("版本对比", version1, version2);
// 将版本号拆分成数字数组
var arr1 = version1.split('.').map(Number);
;
var arr2 = version2.split('.').map(Number);
;
// 遍历数字数组进行逐段比较
for (var i = 0; i < Math.max(arr1.length, arr2.length); i++) {
var num1 = parseInt(arr1[i] || 0); // 如果数组长度不够则将缺失部分补0
var num2 = parseInt(arr2[i] || 0);
if (num1 < num2) {
return -1; // 版本1小于版本2
} else if (num1 > num2) {
return 1; // 版本1大于版本2
}
}
return 0; // 版本1等于版本2
}
// 2进制位数不足补0
function PrefixZero(num, n) {
return (Array(n).join(0) + num).slice(-n);
}
//转16进制位数不足补0
function toHex(num, length) {
return num.toString(16).padStart(length, '0');
}
function inArray(arr, key, val) {
if (!arr || !arr.length || (0, _typeof2.default)(arr) != 'object' || !Array.isArray(arr)) {
return -1;
}
for (var i = 0; i < arr.length; i++) {
if (!key) {
if (arr[i] == val) {
return i;
}
} else if (arr[i][key] === val) {
return i;
}
}
return -1;
}
function validatePhoneEmail(input) {
var phoneRegex = /^(\+?\d{1,4})?[-\s.]?\(?(\d{3})\)?[-\s.]?(\d{3})[-\s.]?(\d{4})$/;
var emailRegex = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
var isPhone = phoneRegex.test(input);
var isEmail = emailRegex.test(input);
return {
isPhone: isPhone,
isEmail: isEmail
};
}
function msg(str) {
uni.showToast({
title: str,
icon: 'none',
duration: 3000
});
}
function ab2hex(buffer, split) {
var hexArr = Array.prototype.map.call(new Uint8Array(buffer), function (bit) {
return ('00' + bit.toString(16)).slice(-2);
});
return hexArr.join(split);
}
function hex2str(arr) {
var decoder = new TextDecoder('utf8');
var uint8 = new Uint8Array(arr);
var res = decoder.decode(uint8);
return res;
}
function str2hex(str) {
var encoder = new TextEncoder('utf8');
return encoder.encode(str);
}
// 跳绳分秒时间选择
function gethms(type) {
var mindata = [];
var secondData = [];
var timeList = [];
for (var i = 0; i <= 59; i++) {
i = i > 9 ? i : '0' + i;
mindata.push(i + '分');
}
for (var i = 0; i <= 59; i++) {
i = i > 9 ? i : '0' + i;
secondData.push(i + '秒');
}
timeList[0] = mindata;
timeList[1] = secondData;
return timeList;
}
function getMonth(dates, months) {
var d = new Date(dates.substring(0, 10));
var year = d.getFullYear();
var month = d.getMonth() + 1;
if (Math.abs(months) > 12) {
months = months % 12;
}
;
if (months != 0) {
if (month + months > 12) {
year++;
month = (month + months) % 12;
} else if (month + months < 1) {
year--;
month = 12 + month + months;
} else {
month = month + months;
}
;
}
;
month = month < 10 ? "0" + month : month;
var date = d.getDate();
if (month == "01" || month == "03" || month == "05" || month == "07" || month == "08" || month == "10" || month == "12") {
return year + "-" + month + "-01" + "~" + year + "-" + month + "-31";
} else if (month == "02") {
if (year % 4 == 0 && year % 100 != 0 || year % 100 == 0 && year % 400 == 0) {
return year + '-' + month + "-01" + "~" + year + "-" + month + "-29";
} else {
return year + '-' + month + "-01" + "~" + year + "-" + month + "-28";
}
;
} else {
return year + '-' + month + "-01" + "~" + year + "-" + month + "-30";
}
;
}
;
function getDate(type) {
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
month = month > 9 ? month : '0' + month;
day = day > 9 ? day : '0' + day;
if (type === 'tow') {
year = year - 2;
return "".concat(year, "-").concat(month, "-").concat(day);
}
if (type === 'start') {
year = year;
return "".concat(year, "-").concat(month, "-").concat(day);
}
if (type === 'end') {
year = year + 60;
return "".concat(year, "-").concat(month, "-").concat(day);
}
if (type === 'year') {
year = year;
return "".concat(year);
}
if (type === 'month') {
year = year;
return "".concat(year, "-").concat(month);
}
if (type == "m") {
if (month == "01" || month == "03" || month == "05" || month == "07" || month == "08" || month == "10" || month == "12") {
return year + "-" + month + "-01" + "~" + year + "-" + month + "-31";
} else if (month == "02") {
if (year % 4 == 0 && year % 100 != 0 || year % 100 == 0 && year % 400 == 0) {
return year + "-" + month + "-01" + "~" + year + "-" + month + "-29";
} else {
return year + "-" + month + "-01" + "~" + year + "-" + month + "-28";
}
;
} else {
return year + "-" + month + "-01" + "~" + year + "-" + month + "-30";
}
;
}
}
//获取AddDayCount天后的日期
function GetDateStr(AddDayCount) {
var dd = new Date();
dd.setDate(dd.getDate() + AddDayCount);
var y = dd.getFullYear();
var m = dd.getMonth() + 1 < 10 ? "0" + (dd.getMonth() + 1) : dd.getMonth() + 1; //获取当前月份的日期不足10补0
var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate(); //获取当前几号不足10补0
return y + "-" + m + "-" + d;
}
//用于检查用户是否同意隐私协议
function checkPrivacyAgreement() {
// 这里应该是获取用户同意状态的逻辑,例如从本地存储或服务端获取
var isAgreed = uni.getStorageSync('isPrivacyAgreed');
return !!isAgreed;
}
function getBluetoothAdapter(err) {
var textLink = "";
if (err.errMsg == "openBluetoothAdapter:fail auth denied" || err.errMsg === "openBluetoothAdapter:fail auth deny" || err.errMsg === "openBluetoothAdapter:fail authorize no response") {
uni.showModal({
title: "提示",
content: "需要您授权使用手机蓝牙",
showCancel: false,
success: function success(modalSuccess) {
uni.openSetting({
success: function success(settingdata) {
if (settingdata.authSetting["scope.bluetooth"]) {
uni.openBluetoothAdapter({
success: function success(e) {
_store.default.commit("changeBluetooth", true);
textLink = "蓝牙权限获取成功,重新连接蓝牙";
return textLink;
},
fail: function fail(err) {
textLink = "请打开手机蓝牙后,开始测量";
console.log('初始化蓝牙失败:' + err.errMsg);
return textLink;
}
});
} else {
textLink = "获取权限失败,将无法使用手机蓝牙进行测量";
return textLink;
}
}
});
}
});
} else {
textLink = "请打开手机蓝牙后,开始测量";
return textLink;
}
}
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 2)["default"]))
/***/ }),
/***/ 39:
/*!*****************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/toolJs/Bluetooth.js ***!
\*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/* WEBPACK VAR INJECTION */(function(uni) {
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _store = _interopRequireDefault(__webpack_require__(/*! @/store */ 33));
var _Bluetooth = _interopRequireDefault(__webpack_require__(/*! @/toolJs/Bluetooth.js */ 39));
var _tools = _interopRequireDefault(__webpack_require__(/*! @/toolJs/tools.js */ 38));
var myTime;
var devicesList = [];
var _default = {
str2Num: str2Num,
handleDevicesMac: handleDevicesMac,
openBluetoothAdapter: openBluetoothAdapter,
startBluetoothDeviceDiscovery: startBluetoothDeviceDiscovery,
onBluetoothDeviceFound: onBluetoothDeviceFound,
getBluetoothAdapter: getBluetoothAdapter,
handleDevice: handleDevice,
onBLEConnectionStateChange: onBLEConnectionStateChange,
closeBLEConnection: closeBLEConnection,
closeBluetoothAdapter: closeBluetoothAdapter,
stopBluetoothDevicesDiscovery: stopBluetoothDevicesDiscovery
}; // 蓝牙连接
exports.default = _default;
function openBluetoothAdapter() {
uni.openBluetoothAdapter({
success: function success(e) {
_store.default.commit("changeBluetooth", true);
_Bluetooth.default.startBluetoothDeviceDiscovery();
console.log('初始化蓝牙成功:' + e.errMsg);
},
fail: function fail(e) {
_Bluetooth.default.getBluetoothAdapter(e);
}
});
}
// 开始搜寻附近的蓝牙外围设备
function startBluetoothDeviceDiscovery() {
devicesList = [];
uni.startBluetoothDevicesDiscovery({
allowDuplicatesKey: true,
interval: 200,
//上报设备的间隔
services: [],
success: function success(res) {
_Bluetooth.default.onBluetoothDeviceFound();
},
fail: function fail(res) {
_tools.default.msg("请确定设备是开机状态、手机蓝牙权限已打开!");
}
});
}
/**
* 发现外围设备
*/
function onBluetoothDeviceFound() {
uni.onBluetoothDeviceFound(function (res) {
console.log('开始监听寻找到新设备的事件', res);
res.devices.forEach(function (device) {
if (!device.name && !device.localName) {
return;
}
if (device.name.indexOf('YPC') != -1) {
var buff = device.name.slice(7, 19);
device.macAddr = _Bluetooth.default.str2Num(buff);
device.deviceId = device.deviceId;
_Bluetooth.default.stopBluetoothDevicesDiscovery();
_Bluetooth.default.handleDevice(device);
console.log("ypc", device);
return;
}
});
});
}
// 蓝牙过滤
function handleDevice(device) {
var foundDevices = devicesList;
var idx = _tools.default.inArray(foundDevices, "deviceId", device.deviceId);
console.log("ind", idx, devicesList, device);
if (idx === -1) {
devicesList.push(device);
_store.default.commit("changedevicesList", devicesList);
return;
}
}
/**
* 停止搜索蓝牙设备
*/
function stopBluetoothDevicesDiscovery() {
uni.stopBluetoothDevicesDiscovery({
success: function success(e) {
console.log("停止搜索蓝牙设备", e);
}
});
}
// 监听蓝牙连接状态
function onBLEConnectionStateChange() {
uni.onBLEConnectionStateChange(function (res) {
console.log("蓝牙连接状态", JSON.stringify(res));
if (!res.connected) {
_Bluetooth.default.closeBLEConnection();
_Bluetooth.default.closeBluetoothAdapter();
}
_store.default.commit("changeConnected", res.connected);
});
}
/**
* 断开蓝牙模块
*/
function closeBluetoothAdapter() {
uni.closeBluetoothAdapter({
success: function success(res) {
console.log('蓝牙模块关闭成功');
}
});
}
/**
* 断开蓝牙连接
*/
function closeBLEConnection(deviceId) {
console.log("deviceId", deviceId);
uni.closeBLEConnection({
deviceId: deviceId,
success: function success(res) {
console.log('断开蓝牙连接成功');
_store.default.commit("changeConnected", false);
}
});
}
function str2Num(str) {
var result = "";
for (var i = 0; i < str.length - 2; i++) {
result += str[i];
if (i % 2 === 1) result += ':';
}
return result + str.slice(-2);
}
// 蓝牙连接
function handleDevicesMac(device, acd_id) {
console.log("卡片设备", device, acd_id);
// if (device == 'true' || device || device == true) {
uni.openBluetoothAdapter({
success: function success(e) {
_store.default.commit("changeBluetooth", true);
uni.navigateTo({
url: "/pageTwo/devices/search?id=" + acd_id + '&device=' + device
});
console.log('初始化蓝牙成功:' + e.errMsg);
},
fail: function fail(err) {
console.log('初始化蓝牙失败:' + err.errMsg);
return _Bluetooth.default.getBluetoothAdapter(err);
}
});
// } else {
// $tools.msg("请先添加设备!")
// setTimeout(function() {
// uni.navigateTo({
// url: "/pageTwo/business/business"
// })
// }, 500)
// }
}
// 蓝牙连接失败
function getBluetoothAdapter(err) {
if (err.errMsg == "openBluetoothAdapter:fail auth denied" || err.errMsg === "openBluetoothAdapter:fail auth deny" || err.errMsg === "openBluetoothAdapter:fail authorize no response") {
uni.showModal({
title: "提示",
content: "需要您授权使用手机蓝牙",
showCancel: false,
success: function success(modalSuccess) {
uni.openSetting({
success: function success(settingdata) {
if (settingdata.authSetting["scope.bluetooth"]) {
uni.openBluetoothAdapter({
success: function success(e) {
uni.showToast({
title: "获取权限成功,请继续去测量",
icon: "none"
});
_store.default.commit("changeBluetooth", true);
},
fail: function fail(err) {
_tools.default.showModal("手机蓝牙未打开");
console.log('初始化蓝牙失败:' + err.errMsg);
}
});
} else {
uni.showToast({
title: "获取权限失败,将无法使用手机蓝牙进行测量",
icon: "none"
});
}
}
});
}
});
} else {
_tools.default.showModal("手机蓝牙未打开");
}
}
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 2)["default"]))
/***/ }),
/***/ 4:
/*!**********************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/interopRequireDefault.js ***!
\**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
"default": obj
};
}
module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 40:
/*!***************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/language/index.js ***!
\***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _en = _interopRequireDefault(__webpack_require__(/*! ./en.json */ 41));
var _zhHans = _interopRequireDefault(__webpack_require__(/*! ./zh-Hans.json */ 42));
var _zhHant = _interopRequireDefault(__webpack_require__(/*! ./zh-Hant.json */ 43));
var _ja = _interopRequireDefault(__webpack_require__(/*! ./ja.json */ 44));
var _default = {
en: _en.default,
// 中文
'zh-Hans': _zhHans.default,
//简体
'zh-Hant': _zhHant.default,
//繁体
ja: _ja.default //日语
};
exports.default = _default;
/***/ }),
/***/ 41:
/*!**************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/language/en.json ***!
\**************************************************************/
/*! exports provided: index.title, index.home, index.component, index.api, index.schema, index.demo, index.demo-description, index.detail, index.language, index.language-info, index.system-language, index.application-language, index.language-change-confirm, default */
/***/ (function(module) {
module.exports = JSON.parse("{\"index.title\":\"Hello i18n\",\"index.home\":\"Home\",\"index.component\":\"Component\",\"index.api\":\"API\",\"index.schema\":\"Schema\",\"index.demo\":\"uni-app globalization\",\"index.demo-description\":\"Include uni-framework, manifest.json, pages.json, tabbar, Page, Component, API, Schema\",\"index.detail\":\"Detail\",\"index.language\":\"Language\",\"index.language-info\":\"Settings\",\"index.system-language\":\"System language\",\"index.application-language\":\"Application language\",\"index.language-change-confirm\":\"Applying this setting will restart the app\"}");
/***/ }),
/***/ 42:
/*!*******************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/language/zh-Hans.json ***!
\*******************************************************************/
/*! exports provided: login.title, login.phone, login.code, login.sendcode, login.agreement, login.agreementContnt, login.btn, login.ForgotPassword, login.register, login.valtips, login.phonetip, login.phonetipsTwo, login.codeTips, index.home, index.age, index.birthday, index.region, index.body, index.height, index.weight, index.BMI, index.none, index.look, default */
/***/ (function(module) {
module.exports = JSON.parse("{\"login.title\":\"登录\",\"login.phone\":\"手机号/邮箱\",\"login.code\":\"验证码\",\"login.sendcode\":\"发送验证码\",\"login.agreement\":\"我已阅读并授权\",\"login.agreementContnt\":\"《中招体测用户隐私协议》\",\"login.btn\":\"登录\",\"login.ForgotPassword\":\"忘记密码\",\"login.register\":\"马上注册\",\"login.valtips\":\"请勾选同意《中招体测用户隐私协议》\",\"login.phonetip\":\"请输入手机号码\",\"login.phonetipsTwo\":\"请输入正确的手机号码\",\"login.codeTips\":\"请输入验证码\",\"index.home\":\"主页\",\"index.age\":\"年龄\",\"index.birthday\":\"出生日期\",\"index.region\":\"当前地区\",\"index.body\":\"身体数据\",\"index.height\":\"身高\",\"index.weight\":\"体重\",\"index.BMI\":\"BMI\",\"index.none\":\"暂无\",\"index.look\":\"查看详情\"}");
/***/ }),
/***/ 43:
/*!*******************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/language/zh-Hant.json ***!
\*******************************************************************/
/*! exports provided: index.title, index.home, index.component, index.api, index.schema, index.demo, index.demo-description, index.detail, index.language, index.language-info, index.system-language, index.application-language, index.language-change-confirm, default */
/***/ (function(module) {
module.exports = JSON.parse("{\"index.title\":\"Hello i18n\",\"index.home\":\"主頁\",\"index.component\":\"組件\",\"index.api\":\"API\",\"index.schema\":\"Schema\",\"index.demo\":\"uni-app 國際化演示\",\"index.demo-description\":\"包含 uni-framework、manifest.json、pages.json、tabbar、頁面、組件、API、Schema\",\"index.detail\":\"詳情\",\"index.language\":\"語言\",\"index.language-info\":\"語言信息\",\"index.system-language\":\"系統語言\",\"index.application-language\":\"應用語言\",\"index.language-change-confirm\":\"應用此設置將重啟App\"}");
/***/ }),
/***/ 434:
/*!*************************************************************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/uni_modules/uni-icons/components/uni-icons/uniicons_file_vue.js ***!
\*************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.fontData = void 0;
var fontData = [{
"font_class": "arrow-down",
"unicode": "\uE6BE"
}, {
"font_class": "arrow-left",
"unicode": "\uE6BC"
}, {
"font_class": "arrow-right",
"unicode": "\uE6BB"
}, {
"font_class": "arrow-up",
"unicode": "\uE6BD"
}, {
"font_class": "auth",
"unicode": "\uE6AB"
}, {
"font_class": "auth-filled",
"unicode": "\uE6CC"
}, {
"font_class": "back",
"unicode": "\uE6B9"
}, {
"font_class": "bars",
"unicode": "\uE627"
}, {
"font_class": "calendar",
"unicode": "\uE6A0"
}, {
"font_class": "calendar-filled",
"unicode": "\uE6C0"
}, {
"font_class": "camera",
"unicode": "\uE65A"
}, {
"font_class": "camera-filled",
"unicode": "\uE658"
}, {
"font_class": "cart",
"unicode": "\uE631"
}, {
"font_class": "cart-filled",
"unicode": "\uE6D0"
}, {
"font_class": "chat",
"unicode": "\uE65D"
}, {
"font_class": "chat-filled",
"unicode": "\uE659"
}, {
"font_class": "chatboxes",
"unicode": "\uE696"
}, {
"font_class": "chatboxes-filled",
"unicode": "\uE692"
}, {
"font_class": "chatbubble",
"unicode": "\uE697"
}, {
"font_class": "chatbubble-filled",
"unicode": "\uE694"
}, {
"font_class": "checkbox",
"unicode": "\uE62B"
}, {
"font_class": "checkbox-filled",
"unicode": "\uE62C"
}, {
"font_class": "checkmarkempty",
"unicode": "\uE65C"
}, {
"font_class": "circle",
"unicode": "\uE65B"
}, {
"font_class": "circle-filled",
"unicode": "\uE65E"
}, {
"font_class": "clear",
"unicode": "\uE66D"
}, {
"font_class": "close",
"unicode": "\uE673"
}, {
"font_class": "closeempty",
"unicode": "\uE66C"
}, {
"font_class": "cloud-download",
"unicode": "\uE647"
}, {
"font_class": "cloud-download-filled",
"unicode": "\uE646"
}, {
"font_class": "cloud-upload",
"unicode": "\uE645"
}, {
"font_class": "cloud-upload-filled",
"unicode": "\uE648"
}, {
"font_class": "color",
"unicode": "\uE6CF"
}, {
"font_class": "color-filled",
"unicode": "\uE6C9"
}, {
"font_class": "compose",
"unicode": "\uE67F"
}, {
"font_class": "contact",
"unicode": "\uE693"
}, {
"font_class": "contact-filled",
"unicode": "\uE695"
}, {
"font_class": "down",
"unicode": "\uE6B8"
}, {
"font_class": "bottom",
"unicode": "\uE6B8"
}, {
"font_class": "download",
"unicode": "\uE68D"
}, {
"font_class": "download-filled",
"unicode": "\uE681"
}, {
"font_class": "email",
"unicode": "\uE69E"
}, {
"font_class": "email-filled",
"unicode": "\uE69A"
}, {
"font_class": "eye",
"unicode": "\uE651"
}, {
"font_class": "eye-filled",
"unicode": "\uE66A"
}, {
"font_class": "eye-slash",
"unicode": "\uE6B3"
}, {
"font_class": "eye-slash-filled",
"unicode": "\uE6B4"
}, {
"font_class": "fire",
"unicode": "\uE6A1"
}, {
"font_class": "fire-filled",
"unicode": "\uE6C5"
}, {
"font_class": "flag",
"unicode": "\uE65F"
}, {
"font_class": "flag-filled",
"unicode": "\uE660"
}, {
"font_class": "folder-add",
"unicode": "\uE6A9"
}, {
"font_class": "folder-add-filled",
"unicode": "\uE6C8"
}, {
"font_class": "font",
"unicode": "\uE6A3"
}, {
"font_class": "forward",
"unicode": "\uE6BA"
}, {
"font_class": "gear",
"unicode": "\uE664"
}, {
"font_class": "gear-filled",
"unicode": "\uE661"
}, {
"font_class": "gift",
"unicode": "\uE6A4"
}, {
"font_class": "gift-filled",
"unicode": "\uE6C4"
}, {
"font_class": "hand-down",
"unicode": "\uE63D"
}, {
"font_class": "hand-down-filled",
"unicode": "\uE63C"
}, {
"font_class": "hand-up",
"unicode": "\uE63F"
}, {
"font_class": "hand-up-filled",
"unicode": "\uE63E"
}, {
"font_class": "headphones",
"unicode": "\uE630"
}, {
"font_class": "heart",
"unicode": "\uE639"
}, {
"font_class": "heart-filled",
"unicode": "\uE641"
}, {
"font_class": "help",
"unicode": "\uE679"
}, {
"font_class": "help-filled",
"unicode": "\uE674"
}, {
"font_class": "home",
"unicode": "\uE662"
}, {
"font_class": "home-filled",
"unicode": "\uE663"
}, {
"font_class": "image",
"unicode": "\uE670"
}, {
"font_class": "image-filled",
"unicode": "\uE678"
}, {
"font_class": "images",
"unicode": "\uE650"
}, {
"font_class": "images-filled",
"unicode": "\uE64B"
}, {
"font_class": "info",
"unicode": "\uE669"
}, {
"font_class": "info-filled",
"unicode": "\uE649"
}, {
"font_class": "left",
"unicode": "\uE6B7"
}, {
"font_class": "link",
"unicode": "\uE6A5"
}, {
"font_class": "list",
"unicode": "\uE644"
}, {
"font_class": "location",
"unicode": "\uE6AE"
}, {
"font_class": "location-filled",
"unicode": "\uE6AF"
}, {
"font_class": "locked",
"unicode": "\uE66B"
}, {
"font_class": "locked-filled",
"unicode": "\uE668"
}, {
"font_class": "loop",
"unicode": "\uE633"
}, {
"font_class": "mail-open",
"unicode": "\uE643"
}, {
"font_class": "mail-open-filled",
"unicode": "\uE63A"
}, {
"font_class": "map",
"unicode": "\uE667"
}, {
"font_class": "map-filled",
"unicode": "\uE666"
}, {
"font_class": "map-pin",
"unicode": "\uE6AD"
}, {
"font_class": "map-pin-ellipse",
"unicode": "\uE6AC"
}, {
"font_class": "medal",
"unicode": "\uE6A2"
}, {
"font_class": "medal-filled",
"unicode": "\uE6C3"
}, {
"font_class": "mic",
"unicode": "\uE671"
}, {
"font_class": "mic-filled",
"unicode": "\uE677"
}, {
"font_class": "micoff",
"unicode": "\uE67E"
}, {
"font_class": "micoff-filled",
"unicode": "\uE6B0"
}, {
"font_class": "minus",
"unicode": "\uE66F"
}, {
"font_class": "minus-filled",
"unicode": "\uE67D"
}, {
"font_class": "more",
"unicode": "\uE64D"
}, {
"font_class": "more-filled",
"unicode": "\uE64E"
}, {
"font_class": "navigate",
"unicode": "\uE66E"
}, {
"font_class": "navigate-filled",
"unicode": "\uE67A"
}, {
"font_class": "notification",
"unicode": "\uE6A6"
}, {
"font_class": "notification-filled",
"unicode": "\uE6C1"
}, {
"font_class": "paperclip",
"unicode": "\uE652"
}, {
"font_class": "paperplane",
"unicode": "\uE672"
}, {
"font_class": "paperplane-filled",
"unicode": "\uE675"
}, {
"font_class": "person",
"unicode": "\uE699"
}, {
"font_class": "person-filled",
"unicode": "\uE69D"
}, {
"font_class": "personadd",
"unicode": "\uE69F"
}, {
"font_class": "personadd-filled",
"unicode": "\uE698"
}, {
"font_class": "personadd-filled-copy",
"unicode": "\uE6D1"
}, {
"font_class": "phone",
"unicode": "\uE69C"
}, {
"font_class": "phone-filled",
"unicode": "\uE69B"
}, {
"font_class": "plus",
"unicode": "\uE676"
}, {
"font_class": "plus-filled",
"unicode": "\uE6C7"
}, {
"font_class": "plusempty",
"unicode": "\uE67B"
}, {
"font_class": "pulldown",
"unicode": "\uE632"
}, {
"font_class": "pyq",
"unicode": "\uE682"
}, {
"font_class": "qq",
"unicode": "\uE680"
}, {
"font_class": "redo",
"unicode": "\uE64A"
}, {
"font_class": "redo-filled",
"unicode": "\uE655"
}, {
"font_class": "refresh",
"unicode": "\uE657"
}, {
"font_class": "refresh-filled",
"unicode": "\uE656"
}, {
"font_class": "refreshempty",
"unicode": "\uE6BF"
}, {
"font_class": "reload",
"unicode": "\uE6B2"
}, {
"font_class": "right",
"unicode": "\uE6B5"
}, {
"font_class": "scan",
"unicode": "\uE62A"
}, {
"font_class": "search",
"unicode": "\uE654"
}, {
"font_class": "settings",
"unicode": "\uE653"
}, {
"font_class": "settings-filled",
"unicode": "\uE6CE"
}, {
"font_class": "shop",
"unicode": "\uE62F"
}, {
"font_class": "shop-filled",
"unicode": "\uE6CD"
}, {
"font_class": "smallcircle",
"unicode": "\uE67C"
}, {
"font_class": "smallcircle-filled",
"unicode": "\uE665"
}, {
"font_class": "sound",
"unicode": "\uE684"
}, {
"font_class": "sound-filled",
"unicode": "\uE686"
}, {
"font_class": "spinner-cycle",
"unicode": "\uE68A"
}, {
"font_class": "staff",
"unicode": "\uE6A7"
}, {
"font_class": "staff-filled",
"unicode": "\uE6CB"
}, {
"font_class": "star",
"unicode": "\uE688"
}, {
"font_class": "star-filled",
"unicode": "\uE68F"
}, {
"font_class": "starhalf",
"unicode": "\uE683"
}, {
"font_class": "trash",
"unicode": "\uE687"
}, {
"font_class": "trash-filled",
"unicode": "\uE685"
}, {
"font_class": "tune",
"unicode": "\uE6AA"
}, {
"font_class": "tune-filled",
"unicode": "\uE6CA"
}, {
"font_class": "undo",
"unicode": "\uE64F"
}, {
"font_class": "undo-filled",
"unicode": "\uE64C"
}, {
"font_class": "up",
"unicode": "\uE6B6"
}, {
"font_class": "top",
"unicode": "\uE6B6"
}, {
"font_class": "upload",
"unicode": "\uE690"
}, {
"font_class": "upload-filled",
"unicode": "\uE68E"
}, {
"font_class": "videocam",
"unicode": "\uE68C"
}, {
"font_class": "videocam-filled",
"unicode": "\uE689"
}, {
"font_class": "vip",
"unicode": "\uE6A8"
}, {
"font_class": "vip-filled",
"unicode": "\uE6C6"
}, {
"font_class": "wallet",
"unicode": "\uE6B1"
}, {
"font_class": "wallet-filled",
"unicode": "\uE6C2"
}, {
"font_class": "weibo",
"unicode": "\uE68B"
}, {
"font_class": "weixin",
"unicode": "\uE691"
}];
// export const fontData = JSON.parse<IconsDataItem>(fontDataJson)
exports.fontData = fontData;
/***/ }),
/***/ 44:
/*!**************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/language/ja.json ***!
\**************************************************************/
/*! exports provided: index.title, index.home, index.component, index.api, index.schema, index.demo, index.demo-description, index.detail, index.language, index.language-info, index.system-language, index.application-language, index.language-change-confirm, default */
/***/ (function(module) {
module.exports = JSON.parse("{\"index.title\":\"Hello i18n\",\"index.home\":\"ホーム\",\"index.component\":\"コンポーネント\",\"index.api\":\"API\",\"index.schema\":\"Schema\",\"index.demo\":\"uni-app globalization\",\"index.demo-description\":\"ユニフレームワーク、manifest.json、pages.json、タブバー、ページ、コンポーネント、APIを含める、Schema\",\"index.detail\":\"詳細\",\"index.language\":\"言語\",\"index.language-info\":\"設定\",\"index.system-language\":\"システム言語\",\"index.application-language\":\"アプリケーション言語\",\"index.language-change-confirm\":\"この設定を適用すると、アプリが再起動します\"}");
/***/ }),
/***/ 45:
/*!********************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/video.json ***!
\********************************************************/
/*! exports provided: video, default */
/***/ (function(module) {
module.exports = JSON.parse("{\"video\":[{\"name\":\"50\",\"video\":\"/pageTwo/static/50.mp3\"},{\"name\":\"100\",\"video\":\"/pageTwo/static/100.mp3\"},{\"name\":\"150\",\"video\":\"/pageTwo/static/150.mp3\"},{\"name\":\"200\",\"video\":\"/pageTwo/static/200.mp3\"},{\"name\":\"250\",\"video\":\"/pageTwo/static/250.mp3\"},{\"name\":\"300\",\"video\":\"/pageTwo/static/300.mp3\"},{\"name\":\"350\",\"video\":\"/pageTwo/static/350.mp3\"},{\"name\":\"400\",\"video\":\"/pageTwo/static/400.mp3\"},{\"name\":\"450\",\"video\":\"/pageTwo/static/450.mp3\"},{\"name\":\"500\",\"video\":\"/pageTwo/static/500.mp3\"},{\"name\":\"550\",\"video\":\"/pageTwo/static/550.mp3\"},{\"name\":\"600\",\"video\":\"/pageTwo/static/600.mp3\"},{\"name\":\"650\",\"video\":\"/pageTwo/static/650.mp3\"},{\"name\":\"700\",\"video\":\"/pageTwo/static/700.mp3\"},{\"name\":\"750\",\"video\":\"/pageTwo/static/750.mp3\"},{\"name\":\"800\",\"video\":\"/pageTwo/static/800.mp3\"},{\"name\":\"850\",\"video\":\"/pageTwo/static/850.mp3\"},{\"name\":\"900\",\"video\":\"/pageTwo/static/900.mp3\"},{\"name\":\"950\",\"video\":\"/pageTwo/static/950.mp3\"},{\"name\":\"1000\",\"video\":\"/pageTwo/static/1000.mp3\"}]}");
/***/ }),
/***/ 456:
/*!************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/uni-cloud/dist/index.js ***!
\************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/* WEBPACK VAR INJECTION */(function(global, uni, wx) {
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 457));
var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ 459));
var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ 5));
var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 13));
var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ 18));
var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 460));
var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 11));
var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ 461));
var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ 462));
var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ 463));
var _wrapNativeSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/wrapNativeSuper */ 464));
var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ 23));
var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ 24));
var _pages = _interopRequireDefault(__webpack_require__(/*! @/pages.json */ 466));
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e33) { throw _e33; }, 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(_e34) { didErr = true; err = _e34; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
"undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self && self;
function t(e) {
return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
}
function n(e, t, n) {
return e(n = {
path: t,
exports: {},
require: function require(e, t) {
return function () {
throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs");
}(null == t && n.path);
}
}, n.exports), n.exports;
}
var s = n(function (e, t) {
var n;
e.exports = (n = n || function (e, t) {
var n = Object.create || function () {
function e() {}
return function (t) {
var n;
return e.prototype = t, n = new e(), e.prototype = null, n;
};
}(),
s = {},
r = s.lib = {},
i = r.Base = {
extend: function extend(e) {
var t = n(this);
return e && t.mixIn(e), t.hasOwnProperty("init") && this.init !== t.init || (t.init = function () {
t.$super.init.apply(this, arguments);
}), t.init.prototype = t, t.$super = this, t;
},
create: function create() {
var e = this.extend();
return e.init.apply(e, arguments), e;
},
init: function init() {},
mixIn: function mixIn(e) {
for (var t in e) {
e.hasOwnProperty(t) && (this[t] = e[t]);
}
e.hasOwnProperty("toString") && (this.toString = e.toString);
},
clone: function clone() {
return this.init.prototype.extend(this);
}
},
o = r.WordArray = i.extend({
init: function init(e, n) {
e = this.words = e || [], this.sigBytes = n != t ? n : 4 * e.length;
},
toString: function toString(e) {
return (e || c).stringify(this);
},
concat: function concat(e) {
var t = this.words,
n = e.words,
s = this.sigBytes,
r = e.sigBytes;
if (this.clamp(), s % 4) for (var i = 0; i < r; i++) {
var o = n[i >>> 2] >>> 24 - i % 4 * 8 & 255;
t[s + i >>> 2] |= o << 24 - (s + i) % 4 * 8;
} else for (i = 0; i < r; i += 4) {
t[s + i >>> 2] = n[i >>> 2];
}
return this.sigBytes += r, this;
},
clamp: function clamp() {
var t = this.words,
n = this.sigBytes;
t[n >>> 2] &= 4294967295 << 32 - n % 4 * 8, t.length = e.ceil(n / 4);
},
clone: function clone() {
var e = i.clone.call(this);
return e.words = this.words.slice(0), e;
},
random: function random(t) {
for (var n, s = [], r = function r(t) {
t = t;
var n = 987654321,
s = 4294967295;
return function () {
var r = ((n = 36969 * (65535 & n) + (n >> 16) & s) << 16) + (t = 18e3 * (65535 & t) + (t >> 16) & s) & s;
return r /= 4294967296, (r += .5) * (e.random() > .5 ? 1 : -1);
};
}, i = 0; i < t; i += 4) {
var a = r(4294967296 * (n || e.random()));
n = 987654071 * a(), s.push(4294967296 * a() | 0);
}
return new o.init(s, t);
}
}),
a = s.enc = {},
c = a.Hex = {
stringify: function stringify(e) {
for (var t = e.words, n = e.sigBytes, s = [], r = 0; r < n; r++) {
var i = t[r >>> 2] >>> 24 - r % 4 * 8 & 255;
s.push((i >>> 4).toString(16)), s.push((15 & i).toString(16));
}
return s.join("");
},
parse: function parse(e) {
for (var t = e.length, n = [], s = 0; s < t; s += 2) {
n[s >>> 3] |= parseInt(e.substr(s, 2), 16) << 24 - s % 8 * 4;
}
return new o.init(n, t / 2);
}
},
u = a.Latin1 = {
stringify: function stringify(e) {
for (var t = e.words, n = e.sigBytes, s = [], r = 0; r < n; r++) {
var i = t[r >>> 2] >>> 24 - r % 4 * 8 & 255;
s.push(String.fromCharCode(i));
}
return s.join("");
},
parse: function parse(e) {
for (var t = e.length, n = [], s = 0; s < t; s++) {
n[s >>> 2] |= (255 & e.charCodeAt(s)) << 24 - s % 4 * 8;
}
return new o.init(n, t);
}
},
h = a.Utf8 = {
stringify: function stringify(e) {
try {
return decodeURIComponent(escape(u.stringify(e)));
} catch (e) {
throw new Error("Malformed UTF-8 data");
}
},
parse: function parse(e) {
return u.parse(unescape(encodeURIComponent(e)));
}
},
l = r.BufferedBlockAlgorithm = i.extend({
reset: function reset() {
this._data = new o.init(), this._nDataBytes = 0;
},
_append: function _append(e) {
"string" == typeof e && (e = h.parse(e)), this._data.concat(e), this._nDataBytes += e.sigBytes;
},
_process: function _process(t) {
var n = this._data,
s = n.words,
r = n.sigBytes,
i = this.blockSize,
a = r / (4 * i),
c = (a = t ? e.ceil(a) : e.max((0 | a) - this._minBufferSize, 0)) * i,
u = e.min(4 * c, r);
if (c) {
for (var h = 0; h < c; h += i) {
this._doProcessBlock(s, h);
}
var l = s.splice(0, c);
n.sigBytes -= u;
}
return new o.init(l, u);
},
clone: function clone() {
var e = i.clone.call(this);
return e._data = this._data.clone(), e;
},
_minBufferSize: 0
});
r.Hasher = l.extend({
cfg: i.extend(),
init: function init(e) {
this.cfg = this.cfg.extend(e), this.reset();
},
reset: function reset() {
l.reset.call(this), this._doReset();
},
update: function update(e) {
return this._append(e), this._process(), this;
},
finalize: function finalize(e) {
return e && this._append(e), this._doFinalize();
},
blockSize: 16,
_createHelper: function _createHelper(e) {
return function (t, n) {
return new e.init(n).finalize(t);
};
},
_createHmacHelper: function _createHmacHelper(e) {
return function (t, n) {
return new d.HMAC.init(e, n).finalize(t);
};
}
});
var d = s.algo = {};
return s;
}(Math), n);
}),
r = s,
i = (n(function (e, t) {
var n;
e.exports = (n = r, function (e) {
var t = n,
s = t.lib,
r = s.WordArray,
i = s.Hasher,
o = t.algo,
a = [];
!function () {
for (var t = 0; t < 64; t++) {
a[t] = 4294967296 * e.abs(e.sin(t + 1)) | 0;
}
}();
var c = o.MD5 = i.extend({
_doReset: function _doReset() {
this._hash = new r.init([1732584193, 4023233417, 2562383102, 271733878]);
},
_doProcessBlock: function _doProcessBlock(e, t) {
for (var n = 0; n < 16; n++) {
var s = t + n,
r = e[s];
e[s] = 16711935 & (r << 8 | r >>> 24) | 4278255360 & (r << 24 | r >>> 8);
}
var i = this._hash.words,
o = e[t + 0],
c = e[t + 1],
p = e[t + 2],
f = e[t + 3],
g = e[t + 4],
m = e[t + 5],
y = e[t + 6],
_ = e[t + 7],
w = e[t + 8],
v = e[t + 9],
I = e[t + 10],
S = e[t + 11],
b = e[t + 12],
k = e[t + 13],
A = e[t + 14],
C = e[t + 15],
P = i[0],
T = i[1],
x = i[2],
O = i[3];
P = u(P, T, x, O, o, 7, a[0]), O = u(O, P, T, x, c, 12, a[1]), x = u(x, O, P, T, p, 17, a[2]), T = u(T, x, O, P, f, 22, a[3]), P = u(P, T, x, O, g, 7, a[4]), O = u(O, P, T, x, m, 12, a[5]), x = u(x, O, P, T, y, 17, a[6]), T = u(T, x, O, P, _, 22, a[7]), P = u(P, T, x, O, w, 7, a[8]), O = u(O, P, T, x, v, 12, a[9]), x = u(x, O, P, T, I, 17, a[10]), T = u(T, x, O, P, S, 22, a[11]), P = u(P, T, x, O, b, 7, a[12]), O = u(O, P, T, x, k, 12, a[13]), x = u(x, O, P, T, A, 17, a[14]), P = h(P, T = u(T, x, O, P, C, 22, a[15]), x, O, c, 5, a[16]), O = h(O, P, T, x, y, 9, a[17]), x = h(x, O, P, T, S, 14, a[18]), T = h(T, x, O, P, o, 20, a[19]), P = h(P, T, x, O, m, 5, a[20]), O = h(O, P, T, x, I, 9, a[21]), x = h(x, O, P, T, C, 14, a[22]), T = h(T, x, O, P, g, 20, a[23]), P = h(P, T, x, O, v, 5, a[24]), O = h(O, P, T, x, A, 9, a[25]), x = h(x, O, P, T, f, 14, a[26]), T = h(T, x, O, P, w, 20, a[27]), P = h(P, T, x, O, k, 5, a[28]), O = h(O, P, T, x, p, 9, a[29]), x = h(x, O, P, T, _, 14, a[30]), P = l(P, T = h(T, x, O, P, b, 20, a[31]), x, O, m, 4, a[32]), O = l(O, P, T, x, w, 11, a[33]), x = l(x, O, P, T, S, 16, a[34]), T = l(T, x, O, P, A, 23, a[35]), P = l(P, T, x, O, c, 4, a[36]), O = l(O, P, T, x, g, 11, a[37]), x = l(x, O, P, T, _, 16, a[38]), T = l(T, x, O, P, I, 23, a[39]), P = l(P, T, x, O, k, 4, a[40]), O = l(O, P, T, x, o, 11, a[41]), x = l(x, O, P, T, f, 16, a[42]), T = l(T, x, O, P, y, 23, a[43]), P = l(P, T, x, O, v, 4, a[44]), O = l(O, P, T, x, b, 11, a[45]), x = l(x, O, P, T, C, 16, a[46]), P = d(P, T = l(T, x, O, P, p, 23, a[47]), x, O, o, 6, a[48]), O = d(O, P, T, x, _, 10, a[49]), x = d(x, O, P, T, A, 15, a[50]), T = d(T, x, O, P, m, 21, a[51]), P = d(P, T, x, O, b, 6, a[52]), O = d(O, P, T, x, f, 10, a[53]), x = d(x, O, P, T, I, 15, a[54]), T = d(T, x, O, P, c, 21, a[55]), P = d(P, T, x, O, w, 6, a[56]), O = d(O, P, T, x, C, 10, a[57]), x = d(x, O, P, T, y, 15, a[58]), T = d(T, x, O, P, k, 21, a[59]), P = d(P, T, x, O, g, 6, a[60]), O = d(O, P, T, x, S, 10, a[61]), x = d(x, O, P, T, p, 15, a[62]), T = d(T, x, O, P, v, 21, a[63]), i[0] = i[0] + P | 0, i[1] = i[1] + T | 0, i[2] = i[2] + x | 0, i[3] = i[3] + O | 0;
},
_doFinalize: function _doFinalize() {
var t = this._data,
n = t.words,
s = 8 * this._nDataBytes,
r = 8 * t.sigBytes;
n[r >>> 5] |= 128 << 24 - r % 32;
var i = e.floor(s / 4294967296),
o = s;
n[15 + (r + 64 >>> 9 << 4)] = 16711935 & (i << 8 | i >>> 24) | 4278255360 & (i << 24 | i >>> 8), n[14 + (r + 64 >>> 9 << 4)] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), t.sigBytes = 4 * (n.length + 1), this._process();
for (var a = this._hash, c = a.words, u = 0; u < 4; u++) {
var h = c[u];
c[u] = 16711935 & (h << 8 | h >>> 24) | 4278255360 & (h << 24 | h >>> 8);
}
return a;
},
clone: function clone() {
var e = i.clone.call(this);
return e._hash = this._hash.clone(), e;
}
});
function u(e, t, n, s, r, i, o) {
var a = e + (t & n | ~t & s) + r + o;
return (a << i | a >>> 32 - i) + t;
}
function h(e, t, n, s, r, i, o) {
var a = e + (t & s | n & ~s) + r + o;
return (a << i | a >>> 32 - i) + t;
}
function l(e, t, n, s, r, i, o) {
var a = e + (t ^ n ^ s) + r + o;
return (a << i | a >>> 32 - i) + t;
}
function d(e, t, n, s, r, i, o) {
var a = e + (n ^ (t | ~s)) + r + o;
return (a << i | a >>> 32 - i) + t;
}
t.MD5 = i._createHelper(c), t.HmacMD5 = i._createHmacHelper(c);
}(Math), n.MD5);
}), n(function (e, t) {
var n;
e.exports = (n = r, void function () {
var e = n,
t = e.lib.Base,
s = e.enc.Utf8;
e.algo.HMAC = t.extend({
init: function init(e, t) {
e = this._hasher = new e.init(), "string" == typeof t && (t = s.parse(t));
var n = e.blockSize,
r = 4 * n;
t.sigBytes > r && (t = e.finalize(t)), t.clamp();
for (var i = this._oKey = t.clone(), o = this._iKey = t.clone(), a = i.words, c = o.words, u = 0; u < n; u++) {
a[u] ^= 1549556828, c[u] ^= 909522486;
}
i.sigBytes = o.sigBytes = r, this.reset();
},
reset: function reset() {
var e = this._hasher;
e.reset(), e.update(this._iKey);
},
update: function update(e) {
return this._hasher.update(e), this;
},
finalize: function finalize(e) {
var t = this._hasher,
n = t.finalize(e);
return t.reset(), t.finalize(this._oKey.clone().concat(n));
}
});
}());
}), n(function (e, t) {
e.exports = r.HmacMD5;
})),
o = n(function (e, t) {
e.exports = r.enc.Utf8;
}),
a = n(function (e, t) {
var n;
e.exports = (n = r, function () {
var e = n,
t = e.lib.WordArray;
function s(e, n, s) {
for (var r = [], i = 0, o = 0; o < n; o++) {
if (o % 4) {
var a = s[e.charCodeAt(o - 1)] << o % 4 * 2,
c = s[e.charCodeAt(o)] >>> 6 - o % 4 * 2;
r[i >>> 2] |= (a | c) << 24 - i % 4 * 8, i++;
}
}
return t.create(r, i);
}
e.enc.Base64 = {
stringify: function stringify(e) {
var t = e.words,
n = e.sigBytes,
s = this._map;
e.clamp();
for (var r = [], i = 0; i < n; i += 3) {
for (var o = (t[i >>> 2] >>> 24 - i % 4 * 8 & 255) << 16 | (t[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255) << 8 | t[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255, a = 0; a < 4 && i + .75 * a < n; a++) {
r.push(s.charAt(o >>> 6 * (3 - a) & 63));
}
}
var c = s.charAt(64);
if (c) for (; r.length % 4;) {
r.push(c);
}
return r.join("");
},
parse: function parse(e) {
var t = e.length,
n = this._map,
r = this._reverseMap;
if (!r) {
r = this._reverseMap = [];
for (var i = 0; i < n.length; i++) {
r[n.charCodeAt(i)] = i;
}
}
var o = n.charAt(64);
if (o) {
var a = e.indexOf(o);
-1 !== a && (t = a);
}
return s(e, t, r);
},
_map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
};
}(), n.enc.Base64);
});
var c = "FUNCTION",
u = "OBJECT",
h = "CLIENT_DB",
l = "pending",
d = "fulfilled",
p = "rejected";
function f(e) {
return Object.prototype.toString.call(e).slice(8, -1).toLowerCase();
}
function g(e) {
return "object" === f(e);
}
function m(e) {
return "function" == typeof e;
}
function y(e) {
return function () {
try {
return e.apply(e, arguments);
} catch (e) {
console.error(e);
}
};
}
var _ = "REJECTED",
w = "NOT_PENDING";
var v = /*#__PURE__*/function () {
function v() {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
e = _ref.createPromise,
_ref$retryRule = _ref.retryRule,
t = _ref$retryRule === void 0 ? _ : _ref$retryRule;
(0, _classCallCheck2.default)(this, v);
this.createPromise = e, this.status = null, this.promise = null, this.retryRule = t;
}
(0, _createClass2.default)(v, [{
key: "needRetry",
get: function get() {
if (!this.status) return !0;
switch (this.retryRule) {
case _:
return this.status === p;
case w:
return this.status !== l;
}
}
}, {
key: "exec",
value: function exec() {
var _this = this;
return this.needRetry ? (this.status = l, this.promise = this.createPromise().then(function (e) {
return _this.status = d, Promise.resolve(e);
}, function (e) {
return _this.status = p, Promise.reject(e);
}), this.promise) : this.promise;
}
}]);
return v;
}();
function I(e) {
return e && "string" == typeof e ? JSON.parse(e) : e;
}
var S = "development" === "development",
b = "mp-weixin",
k = "true" === undefined || !0 === undefined,
A = I([]),
C = "h5" === b ? "web" : "app-plus" === b ? "app" : b,
P = I(undefined),
T = I([]) || [],
x = true;
var O = "";
try {
O = (__webpack_require__(/*! uni-stat-config */ 467).default || __webpack_require__(/*! uni-stat-config */ 467)).appid;
} catch (e) {}
var E = {};
function L(e) {
var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var n, s;
return n = E, s = e, Object.prototype.hasOwnProperty.call(n, s) || (E[e] = t), E[e];
}
"app" === C && (E = uni._globalUniCloudObj ? uni._globalUniCloudObj : uni._globalUniCloudObj = {});
var R = ["invoke", "success", "fail", "complete"],
U = L("_globalUniCloudInterceptor");
function N(e, t) {
U[e] || (U[e] = {}), g(t) && Object.keys(t).forEach(function (n) {
R.indexOf(n) > -1 && function (e, t, n) {
var s = U[e][t];
s || (s = U[e][t] = []), -1 === s.indexOf(n) && m(n) && s.push(n);
}(e, n, t[n]);
});
}
function D(e, t) {
U[e] || (U[e] = {}), g(t) ? Object.keys(t).forEach(function (n) {
R.indexOf(n) > -1 && function (e, t, n) {
var s = U[e][t];
if (!s) return;
var r = s.indexOf(n);
r > -1 && s.splice(r, 1);
}(e, n, t[n]);
}) : delete U[e];
}
function M(e, t) {
return e && 0 !== e.length ? e.reduce(function (e, n) {
return e.then(function () {
return n(t);
});
}, Promise.resolve()) : Promise.resolve();
}
function q(e, t) {
return U[e] && U[e][t] || [];
}
function F(e) {
N("callObject", e);
}
var K = L("_globalUniCloudListener"),
j = "response",
$ = "needLogin",
B = "refreshToken",
W = "clientdb",
H = "cloudfunction",
z = "cloudobject";
function J(e) {
return K[e] || (K[e] = []), K[e];
}
function V(e, t) {
var n = J(e);
n.includes(t) || n.push(t);
}
function G(e, t) {
var n = J(e),
s = n.indexOf(t);
-1 !== s && n.splice(s, 1);
}
function Y(e, t) {
var n = J(e);
for (var _e2 = 0; _e2 < n.length; _e2++) {
(0, n[_e2])(t);
}
}
var Q,
X = !1;
function Z() {
return Q || (Q = new Promise(function (e) {
X && e(), function t() {
if ("function" == typeof getCurrentPages) {
var _t2 = getCurrentPages();
_t2 && _t2[0] && (X = !0, e());
}
X || setTimeout(function () {
t();
}, 30);
}();
}), Q);
}
function ee(e) {
var t = {};
for (var _n2 in e) {
var _s2 = e[_n2];
m(_s2) && (t[_n2] = y(_s2));
}
return t;
}
var te = /*#__PURE__*/function (_Error) {
(0, _inherits2.default)(te, _Error);
var _super = _createSuper(te);
function te(e) {
var _this2;
(0, _classCallCheck2.default)(this, te);
_this2 = _super.call(this, e.message), _this2.errMsg = e.message || e.errMsg || "unknown system error", _this2.code = _this2.errCode = e.code || e.errCode || "SYSTEM_ERROR", _this2.errSubject = _this2.subject = e.subject || e.errSubject, _this2.cause = e.cause, _this2.requestId = e.requestId;
return _this2;
}
(0, _createClass2.default)(te, [{
key: "toJson",
value: function toJson() {
var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
if (!(e >= 10)) return e++, {
errCode: this.errCode,
errMsg: this.errMsg,
errSubject: this.errSubject,
cause: this.cause && this.cause.toJson ? this.cause.toJson(e) : this.cause
};
}
}]);
return te;
}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
var ne = {
request: function request(e) {
return uni.request(e);
},
uploadFile: function uploadFile(e) {
return uni.uploadFile(e);
},
setStorageSync: function setStorageSync(e, t) {
return uni.setStorageSync(e, t);
},
getStorageSync: function getStorageSync(e) {
return uni.getStorageSync(e);
},
removeStorageSync: function removeStorageSync(e) {
return uni.removeStorageSync(e);
},
clearStorageSync: function clearStorageSync() {
return uni.clearStorageSync();
},
connectSocket: function connectSocket(e) {
return uni.connectSocket(e);
}
};
function se() {
return {
token: ne.getStorageSync("uni_id_token") || ne.getStorageSync("uniIdToken"),
tokenExpired: ne.getStorageSync("uni_id_token_expired")
};
}
function re() {
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
e = _ref2.token,
t = _ref2.tokenExpired;
e && ne.setStorageSync("uni_id_token", e), t && ne.setStorageSync("uni_id_token_expired", t);
}
var ie, oe;
function ae() {
return ie || (ie = uni.getSystemInfoSync()), ie;
}
function ce() {
var e, t;
try {
if (uni.getLaunchOptionsSync) {
if (uni.getLaunchOptionsSync.toString().indexOf("not yet implemented") > -1) return;
var _uni$getLaunchOptions = uni.getLaunchOptionsSync(),
_n3 = _uni$getLaunchOptions.scene,
_s3 = _uni$getLaunchOptions.channel;
e = _s3, t = _n3;
}
} catch (e) {}
return {
channel: e,
scene: t
};
}
var ue = {};
function he() {
var e = uni.getLocale && uni.getLocale() || "en";
if (oe) return _objectSpread(_objectSpread(_objectSpread({}, ue), oe), {}, {
locale: e,
LOCALE: e
});
var t = ae(),
n = t.deviceId,
s = t.osName,
r = t.uniPlatform,
i = t.appId,
o = ["appId", "appLanguage", "appName", "appVersion", "appVersionCode", "appWgtVersion", "browserName", "browserVersion", "deviceBrand", "deviceId", "deviceModel", "deviceType", "osName", "osVersion", "romName", "romVersion", "ua", "hostName", "hostVersion", "uniPlatform", "uniRuntimeVersion", "uniRuntimeVersionCode", "uniCompilerVersion", "uniCompilerVersionCode"];
for (var _e3 in t) {
Object.hasOwnProperty.call(t, _e3) && -1 === o.indexOf(_e3) && delete t[_e3];
}
return oe = _objectSpread(_objectSpread({
PLATFORM: r,
OS: s,
APPID: i,
DEVICEID: n
}, ce()), t), _objectSpread(_objectSpread(_objectSpread({}, ue), oe), {}, {
locale: e,
LOCALE: e
});
}
var le = {
sign: function sign(e, t) {
var n = "";
return Object.keys(e).sort().forEach(function (t) {
e[t] && (n = n + "&" + t + "=" + e[t]);
}), n = n.slice(1), i(n, t).toString();
},
wrappedRequest: function wrappedRequest(e, t) {
return new Promise(function (n, s) {
t(Object.assign(e, {
complete: function complete(e) {
e || (e = {}), S && "web" === C && e.errMsg && 0 === e.errMsg.indexOf("request:fail") && console.warn("发布H5需要在uniCloud后台操作绑定安全域名否则会因为跨域问题而无法访问。教程参考https://uniapp.dcloud.io/uniCloud/quickstart?id=useinh5");
var t = e.data && e.data.header && e.data.header["x-serverless-request-id"] || e.header && e.header["request-id"];
if (!e.statusCode || e.statusCode >= 400) {
var _n4 = e.data && e.data.error && e.data.error.code || "SYS_ERR",
_r = e.data && e.data.error && e.data.error.message || e.errMsg || "request:fail";
return s(new te({
code: _n4,
message: _r,
requestId: t
}));
}
var r = e.data;
if (r.error) return s(new te({
code: r.error.code,
message: r.error.message,
requestId: t
}));
r.result = r.data, r.requestId = t, delete r.data, n(r);
}
}));
});
},
toBase64: function toBase64(e) {
return a.stringify(o.parse(e));
}
};
var de = /*#__PURE__*/function () {
function de(e) {
var _this3 = this;
(0, _classCallCheck2.default)(this, de);
["spaceId", "clientSecret"].forEach(function (t) {
if (!Object.prototype.hasOwnProperty.call(e, t)) throw new Error("".concat(t, " required"));
}), this.config = Object.assign({}, {
endpoint: 0 === e.spaceId.indexOf("mp-") ? "https://api.next.bspapp.com" : "https://api.bspapp.com"
}, e), this.config.provider = "aliyun", this.config.requestUrl = this.config.endpoint + "/client", this.config.envType = this.config.envType || "public", this.config.accessTokenKey = "access_token_" + this.config.spaceId, this.adapter = ne, this._getAccessTokenPromiseHub = new v({
createPromise: function createPromise() {
return _this3.requestAuth(_this3.setupRequest({
method: "serverless.auth.user.anonymousAuthorize",
params: "{}"
}, "auth")).then(function (e) {
if (!e.result || !e.result.accessToken) throw new te({
code: "AUTH_FAILED",
message: "获取accessToken失败"
});
_this3.setAccessToken(e.result.accessToken);
});
},
retryRule: w
});
}
(0, _createClass2.default)(de, [{
key: "hasAccessToken",
get: function get() {
return !!this.accessToken;
}
}, {
key: "setAccessToken",
value: function setAccessToken(e) {
this.accessToken = e;
}
}, {
key: "requestWrapped",
value: function requestWrapped(e) {
return le.wrappedRequest(e, this.adapter.request);
}
}, {
key: "requestAuth",
value: function requestAuth(e) {
return this.requestWrapped(e);
}
}, {
key: "request",
value: function request(e, t) {
var _this4 = this;
return Promise.resolve().then(function () {
return _this4.hasAccessToken ? t ? _this4.requestWrapped(e) : _this4.requestWrapped(e).catch(function (t) {
return new Promise(function (e, n) {
!t || "GATEWAY_INVALID_TOKEN" !== t.code && "InvalidParameter.InvalidToken" !== t.code ? n(t) : e();
}).then(function () {
return _this4.getAccessToken();
}).then(function () {
var t = _this4.rebuildRequest(e);
return _this4.request(t, !0);
});
}) : _this4.getAccessToken().then(function () {
var t = _this4.rebuildRequest(e);
return _this4.request(t, !0);
});
});
}
}, {
key: "rebuildRequest",
value: function rebuildRequest(e) {
var t = Object.assign({}, e);
return t.data.token = this.accessToken, t.header["x-basement-token"] = this.accessToken, t.header["x-serverless-sign"] = le.sign(t.data, this.config.clientSecret), t;
}
}, {
key: "setupRequest",
value: function setupRequest(e, t) {
var n = Object.assign({}, e, {
spaceId: this.config.spaceId,
timestamp: Date.now()
}),
s = {
"Content-Type": "application/json"
};
return "auth" !== t && (n.token = this.accessToken, s["x-basement-token"] = this.accessToken), s["x-serverless-sign"] = le.sign(n, this.config.clientSecret), {
url: this.config.requestUrl,
method: "POST",
data: n,
dataType: "json",
header: s
};
}
}, {
key: "getAccessToken",
value: function getAccessToken() {
return this._getAccessTokenPromiseHub.exec();
}
}, {
key: "authorize",
value: function () {
var _authorize = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
return _regenerator.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return this.getAccessToken();
case 2:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function authorize() {
return _authorize.apply(this, arguments);
}
return authorize;
}()
}, {
key: "callFunction",
value: function callFunction(e) {
var t = {
method: "serverless.function.runtime.invoke",
params: JSON.stringify({
functionTarget: e.name,
functionArgs: e.data || {}
})
};
return this.request(this.setupRequest(t));
}
}, {
key: "getOSSUploadOptionsFromPath",
value: function getOSSUploadOptionsFromPath(e) {
var t = {
method: "serverless.file.resource.generateProximalSign",
params: JSON.stringify(e)
};
return this.request(this.setupRequest(t));
}
}, {
key: "uploadFileToOSS",
value: function uploadFileToOSS(_ref3) {
var _this5 = this;
var e = _ref3.url,
t = _ref3.formData,
n = _ref3.name,
s = _ref3.filePath,
r = _ref3.fileType,
i = _ref3.onUploadProgress;
return new Promise(function (o, a) {
var c = _this5.adapter.uploadFile({
url: e,
formData: t,
name: n,
filePath: s,
fileType: r,
header: {
"X-OSS-server-side-encrpytion": "AES256"
},
success: function success(e) {
e && e.statusCode < 400 ? o(e) : a(new te({
code: "UPLOAD_FAILED",
message: "文件上传失败"
}));
},
fail: function fail(e) {
a(new te({
code: e.code || "UPLOAD_FAILED",
message: e.message || e.errMsg || "文件上传失败"
}));
}
});
"function" == typeof i && c && "function" == typeof c.onProgressUpdate && c.onProgressUpdate(function (e) {
i({
loaded: e.totalBytesSent,
total: e.totalBytesExpectedToSend
});
});
});
}
}, {
key: "reportOSSUpload",
value: function reportOSSUpload(e) {
var t = {
method: "serverless.file.resource.report",
params: JSON.stringify(e)
};
return this.request(this.setupRequest(t));
}
}, {
key: "uploadFile",
value: function () {
var _uploadFile = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(_ref4) {
var e, t, _ref4$fileType, n, _ref4$cloudPathAsReal, s, r, i, o, a, c, u, h, l, d, p, g, m, y, _, _e4, w;
return _regenerator.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
e = _ref4.filePath, t = _ref4.cloudPath, _ref4$fileType = _ref4.fileType, n = _ref4$fileType === void 0 ? "image" : _ref4$fileType, _ref4$cloudPathAsReal = _ref4.cloudPathAsRealPath, s = _ref4$cloudPathAsReal === void 0 ? !1 : _ref4$cloudPathAsReal, r = _ref4.onUploadProgress, i = _ref4.config;
if (!("string" !== f(t))) {
_context2.next = 3;
break;
}
throw new te({
code: "INVALID_PARAM",
message: "cloudPath必须为字符串类型"
});
case 3:
if (t = t.trim()) {
_context2.next = 5;
break;
}
throw new te({
code: "INVALID_PARAM",
message: "cloudPath不可为空"
});
case 5:
if (!/:\/\//.test(t)) {
_context2.next = 7;
break;
}
throw new te({
code: "INVALID_PARAM",
message: "cloudPath不合法"
});
case 7:
o = i && i.envType || this.config.envType;
if (!(s && ("/" !== t[0] && (t = "/" + t), t.indexOf("\\") > -1))) {
_context2.next = 10;
break;
}
throw new te({
code: "INVALID_PARAM",
message: "使用cloudPath作为路径时cloudPath不可包含“\\”"
});
case 10:
_context2.next = 12;
return this.getOSSUploadOptionsFromPath({
env: o,
filename: s ? t.split("/").pop() : t,
fileId: s ? t : void 0
});
case 12:
a = _context2.sent.result;
c = "https://" + a.cdnDomain + "/" + a.ossPath;
u = a.securityToken;
h = a.accessKeyId;
l = a.signature;
d = a.host;
p = a.ossPath;
g = a.id;
m = a.policy;
y = a.ossCallbackUrl;
_ = {
"Cache-Control": "max-age=2592000",
"Content-Disposition": "attachment",
OSSAccessKeyId: h,
Signature: l,
host: d,
id: g,
key: p,
policy: m,
success_action_status: 200
};
if (u && (_["x-oss-security-token"] = u), y) {
_e4 = JSON.stringify({
callbackUrl: y,
callbackBody: JSON.stringify({
fileId: g,
spaceId: this.config.spaceId
}),
callbackBodyType: "application/json"
});
_.callback = le.toBase64(_e4);
}
w = {
url: "https://" + a.host,
formData: _,
fileName: "file",
name: "file",
filePath: e,
fileType: n
};
_context2.next = 27;
return this.uploadFileToOSS(Object.assign({}, w, {
onUploadProgress: r
}));
case 27:
if (!y) {
_context2.next = 29;
break;
}
return _context2.abrupt("return", {
success: !0,
filePath: e,
fileID: c
});
case 29:
_context2.next = 31;
return this.reportOSSUpload({
id: g
});
case 31:
if (!_context2.sent.success) {
_context2.next = 33;
break;
}
return _context2.abrupt("return", {
success: !0,
filePath: e,
fileID: c
});
case 33:
throw new te({
code: "UPLOAD_FAILED",
message: "文件上传失败"
});
case 34:
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}));
function uploadFile(_x) {
return _uploadFile.apply(this, arguments);
}
return uploadFile;
}()
}, {
key: "getTempFileURL",
value: function getTempFileURL() {
var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
e = _ref5.fileList;
return new Promise(function (t, n) {
Array.isArray(e) && 0 !== e.length || n(new te({
code: "INVALID_PARAM",
message: "fileList的元素必须是非空的字符串"
})), t({
fileList: e.map(function (e) {
return {
fileID: e,
tempFileURL: e
};
})
});
});
}
}, {
key: "getFileInfo",
value: function () {
var _getFileInfo = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
var _ref6,
e,
t,
_args3 = arguments;
return _regenerator.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
_ref6 = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {}, e = _ref6.fileList;
if (!(!Array.isArray(e) || 0 === e.length)) {
_context3.next = 3;
break;
}
throw new te({
code: "INVALID_PARAM",
message: "fileList的元素必须是非空的字符串"
});
case 3:
t = {
method: "serverless.file.resource.info",
params: JSON.stringify({
id: e.map(function (e) {
return e.split("?")[0];
}).join(",")
})
};
_context3.next = 6;
return this.request(this.setupRequest(t));
case 6:
_context3.t0 = _context3.sent.result;
return _context3.abrupt("return", {
fileList: _context3.t0
});
case 8:
case "end":
return _context3.stop();
}
}
}, _callee3, this);
}));
function getFileInfo() {
return _getFileInfo.apply(this, arguments);
}
return getFileInfo;
}()
}]);
return de;
}();
var pe = {
init: function init(e) {
var t = new de(e),
n = {
signInAnonymously: function signInAnonymously() {
return t.authorize();
},
getLoginState: function getLoginState() {
return Promise.resolve(!1);
}
};
return t.auth = function () {
return n;
}, t.customAuth = t.auth, t;
}
};
var fe = "undefined" != typeof location && "http:" === location.protocol ? "http:" : "https:";
var ge;
!function (e) {
e.local = "local", e.none = "none", e.session = "session";
}(ge || (ge = {}));
var me = function me() {},
ye = n(function (e, t) {
var n;
e.exports = (n = r, function (e) {
var t = n,
s = t.lib,
r = s.WordArray,
i = s.Hasher,
o = t.algo,
a = [],
c = [];
!function () {
function t(t) {
for (var n = e.sqrt(t), s = 2; s <= n; s++) {
if (!(t % s)) return !1;
}
return !0;
}
function n(e) {
return 4294967296 * (e - (0 | e)) | 0;
}
for (var s = 2, r = 0; r < 64;) {
t(s) && (r < 8 && (a[r] = n(e.pow(s, .5))), c[r] = n(e.pow(s, 1 / 3)), r++), s++;
}
}();
var u = [],
h = o.SHA256 = i.extend({
_doReset: function _doReset() {
this._hash = new r.init(a.slice(0));
},
_doProcessBlock: function _doProcessBlock(e, t) {
for (var n = this._hash.words, s = n[0], r = n[1], i = n[2], o = n[3], a = n[4], h = n[5], l = n[6], d = n[7], p = 0; p < 64; p++) {
if (p < 16) u[p] = 0 | e[t + p];else {
var f = u[p - 15],
g = (f << 25 | f >>> 7) ^ (f << 14 | f >>> 18) ^ f >>> 3,
m = u[p - 2],
y = (m << 15 | m >>> 17) ^ (m << 13 | m >>> 19) ^ m >>> 10;
u[p] = g + u[p - 7] + y + u[p - 16];
}
var _ = s & r ^ s & i ^ r & i,
w = (s << 30 | s >>> 2) ^ (s << 19 | s >>> 13) ^ (s << 10 | s >>> 22),
v = d + ((a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25)) + (a & h ^ ~a & l) + c[p] + u[p];
d = l, l = h, h = a, a = o + v | 0, o = i, i = r, r = s, s = v + (w + _) | 0;
}
n[0] = n[0] + s | 0, n[1] = n[1] + r | 0, n[2] = n[2] + i | 0, n[3] = n[3] + o | 0, n[4] = n[4] + a | 0, n[5] = n[5] + h | 0, n[6] = n[6] + l | 0, n[7] = n[7] + d | 0;
},
_doFinalize: function _doFinalize() {
var t = this._data,
n = t.words,
s = 8 * this._nDataBytes,
r = 8 * t.sigBytes;
return n[r >>> 5] |= 128 << 24 - r % 32, n[14 + (r + 64 >>> 9 << 4)] = e.floor(s / 4294967296), n[15 + (r + 64 >>> 9 << 4)] = s, t.sigBytes = 4 * n.length, this._process(), this._hash;
},
clone: function clone() {
var e = i.clone.call(this);
return e._hash = this._hash.clone(), e;
}
});
t.SHA256 = i._createHelper(h), t.HmacSHA256 = i._createHmacHelper(h);
}(Math), n.SHA256);
}),
_e = ye,
we = n(function (e, t) {
e.exports = r.HmacSHA256;
});
var ve = function ve() {
var e;
if (!Promise) {
e = function e() {}, e.promise = {};
var _t3 = function _t3() {
throw new te({
message: 'Your Node runtime does support ES6 Promises. Set "global.Promise" to your preferred implementation of promises.'
});
};
return Object.defineProperty(e.promise, "then", {
get: _t3
}), Object.defineProperty(e.promise, "catch", {
get: _t3
}), e;
}
var t = new Promise(function (t, n) {
e = function e(_e5, s) {
return _e5 ? n(_e5) : t(s);
};
});
return e.promise = t, e;
};
function Ie(e) {
return void 0 === e;
}
function Se(e) {
return "[object Null]" === Object.prototype.toString.call(e);
}
var be;
function ke(e) {
var t = (n = e, "[object Array]" === Object.prototype.toString.call(n) ? e : [e]);
var n;
var _iterator = _createForOfIteratorHelper(t),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var _e6 = _step.value;
var _t4 = _e6.isMatch,
_n5 = _e6.genAdapter,
_s4 = _e6.runtime;
if (_t4()) return {
adapter: _n5(),
runtime: _s4
};
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
}
!function (e) {
e.WEB = "web", e.WX_MP = "wx_mp";
}(be || (be = {}));
var Ae = {
adapter: null,
runtime: void 0
},
Ce = ["anonymousUuidKey"];
var Pe = /*#__PURE__*/function (_me) {
(0, _inherits2.default)(Pe, _me);
var _super2 = _createSuper(Pe);
function Pe() {
var _this6;
(0, _classCallCheck2.default)(this, Pe);
_this6 = _super2.call(this), Ae.adapter.root.tcbObject || (Ae.adapter.root.tcbObject = {});
return _this6;
}
(0, _createClass2.default)(Pe, [{
key: "setItem",
value: function setItem(e, t) {
Ae.adapter.root.tcbObject[e] = t;
}
}, {
key: "getItem",
value: function getItem(e) {
return Ae.adapter.root.tcbObject[e];
}
}, {
key: "removeItem",
value: function removeItem(e) {
delete Ae.adapter.root.tcbObject[e];
}
}, {
key: "clear",
value: function clear() {
delete Ae.adapter.root.tcbObject;
}
}]);
return Pe;
}(me);
function Te(e, t) {
switch (e) {
case "local":
return t.localStorage || new Pe();
case "none":
return new Pe();
default:
return t.sessionStorage || new Pe();
}
}
var xe = /*#__PURE__*/function () {
function xe(e) {
(0, _classCallCheck2.default)(this, xe);
if (!this._storage) {
this._persistence = Ae.adapter.primaryStorage || e.persistence, this._storage = Te(this._persistence, Ae.adapter);
var _t5 = "access_token_".concat(e.env),
_n6 = "access_token_expire_".concat(e.env),
_s5 = "refresh_token_".concat(e.env),
_r2 = "anonymous_uuid_".concat(e.env),
_i = "login_type_".concat(e.env),
_o = "user_info_".concat(e.env);
this.keys = {
accessTokenKey: _t5,
accessTokenExpireKey: _n6,
refreshTokenKey: _s5,
anonymousUuidKey: _r2,
loginTypeKey: _i,
userInfoKey: _o
};
}
}
(0, _createClass2.default)(xe, [{
key: "updatePersistence",
value: function updatePersistence(e) {
if (e === this._persistence) return;
var t = "local" === this._persistence;
this._persistence = e;
var n = Te(e, Ae.adapter);
for (var _e7 in this.keys) {
var _s6 = this.keys[_e7];
if (t && Ce.includes(_e7)) continue;
var _r3 = this._storage.getItem(_s6);
Ie(_r3) || Se(_r3) || (n.setItem(_s6, _r3), this._storage.removeItem(_s6));
}
this._storage = n;
}
}, {
key: "setStore",
value: function setStore(e, t, n) {
if (!this._storage) return;
var s = {
version: n || "localCachev1",
content: t
},
r = JSON.stringify(s);
try {
this._storage.setItem(e, r);
} catch (e) {
throw e;
}
}
}, {
key: "getStore",
value: function getStore(e, t) {
try {
if (!this._storage) return;
} catch (e) {
return "";
}
t = t || "localCachev1";
var n = this._storage.getItem(e);
if (!n) return "";
if (n.indexOf(t) >= 0) {
return JSON.parse(n).content;
}
return "";
}
}, {
key: "removeStore",
value: function removeStore(e) {
this._storage.removeItem(e);
}
}]);
return xe;
}();
var Oe = {},
Ee = {};
function Le(e) {
return Oe[e];
}
var Re = /*#__PURE__*/(0, _createClass2.default)(function Re(e, t) {
(0, _classCallCheck2.default)(this, Re);
this.data = t || null, this.name = e;
});
var Ue = /*#__PURE__*/function (_Re) {
(0, _inherits2.default)(Ue, _Re);
var _super3 = _createSuper(Ue);
function Ue(e, t) {
var _this7;
(0, _classCallCheck2.default)(this, Ue);
_this7 = _super3.call(this, "error", {
error: e,
data: t
}), _this7.error = e;
return _this7;
}
return (0, _createClass2.default)(Ue);
}(Re);
var Ne = new ( /*#__PURE__*/function () {
function _class() {
(0, _classCallCheck2.default)(this, _class);
this._listeners = {};
}
(0, _createClass2.default)(_class, [{
key: "on",
value: function on(e, t) {
return function (e, t, n) {
n[e] = n[e] || [], n[e].push(t);
}(e, t, this._listeners), this;
}
}, {
key: "off",
value: function off(e, t) {
return function (e, t, n) {
if (n && n[e]) {
var _s7 = n[e].indexOf(t);
-1 !== _s7 && n[e].splice(_s7, 1);
}
}(e, t, this._listeners), this;
}
}, {
key: "fire",
value: function fire(e, t) {
if (e instanceof Ue) return console.error(e.error), this;
var n = "string" == typeof e ? new Re(e, t || {}) : e;
var s = n.name;
if (this._listens(s)) {
n.target = this;
var _e8 = this._listeners[s] ? (0, _toConsumableArray2.default)(this._listeners[s]) : [];
var _iterator2 = _createForOfIteratorHelper(_e8),
_step2;
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
var _t6 = _step2.value;
_t6.call(this, n);
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
}
return this;
}
}, {
key: "_listens",
value: function _listens(e) {
return this._listeners[e] && this._listeners[e].length > 0;
}
}]);
return _class;
}())();
function De(e, t) {
Ne.on(e, t);
}
function Me(e) {
var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
Ne.fire(e, t);
}
function qe(e, t) {
Ne.off(e, t);
}
var Fe = "loginStateChanged",
Ke = "loginStateExpire",
je = "loginTypeChanged",
$e = "anonymousConverted",
Be = "refreshAccessToken";
var We;
!function (e) {
e.ANONYMOUS = "ANONYMOUS", e.WECHAT = "WECHAT", e.WECHAT_PUBLIC = "WECHAT-PUBLIC", e.WECHAT_OPEN = "WECHAT-OPEN", e.CUSTOM = "CUSTOM", e.EMAIL = "EMAIL", e.USERNAME = "USERNAME", e.NULL = "NULL";
}(We || (We = {}));
var He = ["auth.getJwt", "auth.logout", "auth.signInWithTicket", "auth.signInAnonymously", "auth.signIn", "auth.fetchAccessTokenWithRefreshToken", "auth.signUpWithEmailAndPassword", "auth.activateEndUserMail", "auth.sendPasswordResetEmail", "auth.resetPasswordWithToken", "auth.isUsernameRegistered"],
ze = {
"X-SDK-Version": "1.3.5"
};
function Je(e, t, n) {
var s = e[t];
e[t] = function (t) {
var r = {},
i = {};
n.forEach(function (n) {
var _n$call = n.call(e, t),
s = _n$call.data,
o = _n$call.headers;
Object.assign(r, s), Object.assign(i, o);
});
var o = t.data;
return o && function () {
var e;
if (e = o, "[object FormData]" !== Object.prototype.toString.call(e)) t.data = _objectSpread(_objectSpread({}, o), r);else for (var _e9 in r) {
o.append(_e9, r[_e9]);
}
}(), t.headers = _objectSpread(_objectSpread({}, t.headers || {}), i), s.call(e, t);
};
}
function Ve() {
var e = Math.random().toString(16).slice(2);
return {
data: {
seqId: e
},
headers: _objectSpread(_objectSpread({}, ze), {}, {
"x-seqid": e
})
};
}
var Ge = /*#__PURE__*/function () {
function Ge() {
var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
(0, _classCallCheck2.default)(this, Ge);
var t;
this.config = e, this._reqClass = new Ae.adapter.reqClass({
timeout: this.config.timeout,
timeoutMsg: "\u8BF7\u6C42\u5728".concat(this.config.timeout / 1e3, "s\u5185\u672A\u5B8C\u6210\uFF0C\u5DF2\u4E2D\u65AD"),
restrictedMethods: ["post"]
}), this._cache = Le(this.config.env), this._localCache = (t = this.config.env, Ee[t]), Je(this._reqClass, "post", [Ve]), Je(this._reqClass, "upload", [Ve]), Je(this._reqClass, "download", [Ve]);
}
(0, _createClass2.default)(Ge, [{
key: "post",
value: function () {
var _post = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(e) {
return _regenerator.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_context4.next = 2;
return this._reqClass.post(e);
case 2:
return _context4.abrupt("return", _context4.sent);
case 3:
case "end":
return _context4.stop();
}
}
}, _callee4, this);
}));
function post(_x2) {
return _post.apply(this, arguments);
}
return post;
}()
}, {
key: "upload",
value: function () {
var _upload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(e) {
return _regenerator.default.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
_context5.next = 2;
return this._reqClass.upload(e);
case 2:
return _context5.abrupt("return", _context5.sent);
case 3:
case "end":
return _context5.stop();
}
}
}, _callee5, this);
}));
function upload(_x3) {
return _upload.apply(this, arguments);
}
return upload;
}()
}, {
key: "download",
value: function () {
var _download = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(e) {
return _regenerator.default.wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
_context6.next = 2;
return this._reqClass.download(e);
case 2:
return _context6.abrupt("return", _context6.sent);
case 3:
case "end":
return _context6.stop();
}
}
}, _callee6, this);
}));
function download(_x4) {
return _download.apply(this, arguments);
}
return download;
}()
}, {
key: "refreshAccessToken",
value: function () {
var _refreshAccessToken2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {
var e, t;
return _regenerator.default.wrap(function _callee7$(_context7) {
while (1) {
switch (_context7.prev = _context7.next) {
case 0:
this._refreshAccessTokenPromise || (this._refreshAccessTokenPromise = this._refreshAccessToken());
_context7.prev = 1;
_context7.next = 4;
return this._refreshAccessTokenPromise;
case 4:
e = _context7.sent;
_context7.next = 10;
break;
case 7:
_context7.prev = 7;
_context7.t0 = _context7["catch"](1);
t = _context7.t0;
case 10:
if (!(this._refreshAccessTokenPromise = null, this._shouldRefreshAccessTokenHook = null, t)) {
_context7.next = 12;
break;
}
throw t;
case 12:
return _context7.abrupt("return", e);
case 13:
case "end":
return _context7.stop();
}
}
}, _callee7, this, [[1, 7]]);
}));
function refreshAccessToken() {
return _refreshAccessToken2.apply(this, arguments);
}
return refreshAccessToken;
}()
}, {
key: "_refreshAccessToken",
value: function () {
var _refreshAccessToken3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {
var _this$_cache$keys, e, t, n, s, r, i, o, a, _e10, _e11, _t7, _s8;
return _regenerator.default.wrap(function _callee8$(_context8) {
while (1) {
switch (_context8.prev = _context8.next) {
case 0:
_this$_cache$keys = this._cache.keys, e = _this$_cache$keys.accessTokenKey, t = _this$_cache$keys.accessTokenExpireKey, n = _this$_cache$keys.refreshTokenKey, s = _this$_cache$keys.loginTypeKey, r = _this$_cache$keys.anonymousUuidKey;
this._cache.removeStore(e), this._cache.removeStore(t);
i = this._cache.getStore(n);
if (i) {
_context8.next = 5;
break;
}
throw new te({
message: "未登录CloudBase"
});
case 5:
o = {
refresh_token: i
};
_context8.next = 8;
return this.request("auth.fetchAccessTokenWithRefreshToken", o);
case 8:
a = _context8.sent;
if (!a.data.code) {
_context8.next = 21;
break;
}
_e10 = a.data.code;
if (!("SIGN_PARAM_INVALID" === _e10 || "REFRESH_TOKEN_EXPIRED" === _e10 || "INVALID_REFRESH_TOKEN" === _e10)) {
_context8.next = 20;
break;
}
if (!(this._cache.getStore(s) === We.ANONYMOUS && "INVALID_REFRESH_TOKEN" === _e10)) {
_context8.next = 19;
break;
}
_e11 = this._cache.getStore(r);
_t7 = this._cache.getStore(n);
_context8.next = 17;
return this.send("auth.signInAnonymously", {
anonymous_uuid: _e11,
refresh_token: _t7
});
case 17:
_s8 = _context8.sent;
return _context8.abrupt("return", (this.setRefreshToken(_s8.refresh_token), this._refreshAccessToken()));
case 19:
Me(Ke), this._cache.removeStore(n);
case 20:
throw new te({
code: a.data.code,
message: "\u5237\u65B0access token\u5931\u8D25\uFF1A".concat(a.data.code)
});
case 21:
if (!a.data.access_token) {
_context8.next = 23;
break;
}
return _context8.abrupt("return", (Me(Be), this._cache.setStore(e, a.data.access_token), this._cache.setStore(t, a.data.access_token_expire + Date.now()), {
accessToken: a.data.access_token,
accessTokenExpire: a.data.access_token_expire
}));
case 23:
a.data.refresh_token && (this._cache.removeStore(n), this._cache.setStore(n, a.data.refresh_token), this._refreshAccessToken());
case 24:
case "end":
return _context8.stop();
}
}
}, _callee8, this);
}));
function _refreshAccessToken() {
return _refreshAccessToken3.apply(this, arguments);
}
return _refreshAccessToken;
}()
}, {
key: "getAccessToken",
value: function () {
var _getAccessToken = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() {
var _this$_cache$keys2, e, t, n, s, r, i;
return _regenerator.default.wrap(function _callee9$(_context9) {
while (1) {
switch (_context9.prev = _context9.next) {
case 0:
_this$_cache$keys2 = this._cache.keys, e = _this$_cache$keys2.accessTokenKey, t = _this$_cache$keys2.accessTokenExpireKey, n = _this$_cache$keys2.refreshTokenKey;
if (this._cache.getStore(n)) {
_context9.next = 3;
break;
}
throw new te({
message: "refresh token不存在登录状态异常"
});
case 3:
s = this._cache.getStore(e), r = this._cache.getStore(t), i = !0;
_context9.t0 = this._shouldRefreshAccessTokenHook;
if (!_context9.t0) {
_context9.next = 9;
break;
}
_context9.next = 8;
return this._shouldRefreshAccessTokenHook(s, r);
case 8:
_context9.t0 = !_context9.sent;
case 9:
_context9.t1 = _context9.t0;
if (!_context9.t1) {
_context9.next = 12;
break;
}
i = !1;
case 12:
return _context9.abrupt("return", (!s || !r || r < Date.now()) && i ? this.refreshAccessToken() : {
accessToken: s,
accessTokenExpire: r
});
case 13:
case "end":
return _context9.stop();
}
}
}, _callee9, this);
}));
function getAccessToken() {
return _getAccessToken.apply(this, arguments);
}
return getAccessToken;
}()
}, {
key: "request",
value: function () {
var _request = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(e, t, n) {
var s, r, i, _e12, o, _e13, _e14, a, c, u, h, l, d, p, f, g;
return _regenerator.default.wrap(function _callee10$(_context10) {
while (1) {
switch (_context10.prev = _context10.next) {
case 0:
s = "x-tcb-trace_".concat(this.config.env);
r = "application/x-www-form-urlencoded";
i = _objectSpread({
action: e,
env: this.config.env,
dataVersion: "2019-08-16"
}, t);
if (!(-1 === He.indexOf(e))) {
_context10.next = 10;
break;
}
_e12 = this._cache.keys.refreshTokenKey;
_context10.t0 = this._cache.getStore(_e12);
if (!_context10.t0) {
_context10.next = 10;
break;
}
_context10.next = 9;
return this.getAccessToken();
case 9:
i.access_token = _context10.sent.accessToken;
case 10:
if ("storage.uploadFile" === e) {
o = new FormData();
for (_e13 in o) {
o.hasOwnProperty(_e13) && void 0 !== o[_e13] && o.append(_e13, i[_e13]);
}
r = "multipart/form-data";
} else {
r = "application/json", o = {};
for (_e14 in i) {
void 0 !== i[_e14] && (o[_e14] = i[_e14]);
}
}
a = {
headers: {
"content-type": r
}
};
n && n.onUploadProgress && (a.onUploadProgress = n.onUploadProgress);
c = this._localCache.getStore(s);
c && (a.headers["X-TCB-Trace"] = c);
u = t.parse, h = t.inQuery, l = t.search;
d = {
env: this.config.env
};
u && (d.parse = !0), h && (d = _objectSpread(_objectSpread({}, h), d));
p = function (e, t) {
var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var s = /\?/.test(t);
var r = "";
for (var _e15 in n) {
"" === r ? !s && (t += "?") : r += "&", r += "".concat(_e15, "=").concat(encodeURIComponent(n[_e15]));
}
return /^http(s)?\:\/\//.test(t += r) ? t : "".concat(e).concat(t);
}(fe, "//tcb-api.tencentcloudapi.com/web", d);
l && (p += l);
_context10.next = 22;
return this.post(_objectSpread({
url: p,
data: o
}, a));
case 22:
f = _context10.sent;
g = f.header && f.header["x-tcb-trace"];
if (!(g && this._localCache.setStore(s, g), 200 !== Number(f.status) && 200 !== Number(f.statusCode) || !f.data)) {
_context10.next = 26;
break;
}
throw new te({
code: "NETWORK_ERROR",
message: "network request error"
});
case 26:
return _context10.abrupt("return", f);
case 27:
case "end":
return _context10.stop();
}
}
}, _callee10, this);
}));
function request(_x5, _x6, _x7) {
return _request.apply(this, arguments);
}
return request;
}()
}, {
key: "send",
value: function () {
var _send = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(e) {
var t,
n,
_n7,
_args11 = arguments;
return _regenerator.default.wrap(function _callee11$(_context11) {
while (1) {
switch (_context11.prev = _context11.next) {
case 0:
t = _args11.length > 1 && _args11[1] !== undefined ? _args11[1] : {};
_context11.next = 3;
return this.request(e, t, {
onUploadProgress: t.onUploadProgress
});
case 3:
n = _context11.sent;
if (!("ACCESS_TOKEN_EXPIRED" === n.data.code && -1 === He.indexOf(e))) {
_context11.next = 13;
break;
}
_context11.next = 7;
return this.refreshAccessToken();
case 7:
_context11.next = 9;
return this.request(e, t, {
onUploadProgress: t.onUploadProgress
});
case 9:
_n7 = _context11.sent;
if (!_n7.data.code) {
_context11.next = 12;
break;
}
throw new te({
code: _n7.data.code,
message: _n7.data.message
});
case 12:
return _context11.abrupt("return", _n7.data);
case 13:
if (!n.data.code) {
_context11.next = 15;
break;
}
throw new te({
code: n.data.code,
message: n.data.message
});
case 15:
return _context11.abrupt("return", n.data);
case 16:
case "end":
return _context11.stop();
}
}
}, _callee11, this);
}));
function send(_x8) {
return _send.apply(this, arguments);
}
return send;
}()
}, {
key: "setRefreshToken",
value: function setRefreshToken(e) {
var _this$_cache$keys3 = this._cache.keys,
t = _this$_cache$keys3.accessTokenKey,
n = _this$_cache$keys3.accessTokenExpireKey,
s = _this$_cache$keys3.refreshTokenKey;
this._cache.removeStore(t), this._cache.removeStore(n), this._cache.setStore(s, e);
}
}]);
return Ge;
}();
var Ye = {};
function Qe(e) {
return Ye[e];
}
var Xe = /*#__PURE__*/function () {
function Xe(e) {
(0, _classCallCheck2.default)(this, Xe);
this.config = e, this._cache = Le(e.env), this._request = Qe(e.env);
}
(0, _createClass2.default)(Xe, [{
key: "setRefreshToken",
value: function setRefreshToken(e) {
var _this$_cache$keys4 = this._cache.keys,
t = _this$_cache$keys4.accessTokenKey,
n = _this$_cache$keys4.accessTokenExpireKey,
s = _this$_cache$keys4.refreshTokenKey;
this._cache.removeStore(t), this._cache.removeStore(n), this._cache.setStore(s, e);
}
}, {
key: "setAccessToken",
value: function setAccessToken(e, t) {
var _this$_cache$keys5 = this._cache.keys,
n = _this$_cache$keys5.accessTokenKey,
s = _this$_cache$keys5.accessTokenExpireKey;
this._cache.setStore(n, e), this._cache.setStore(s, t);
}
}, {
key: "refreshUserInfo",
value: function () {
var _refreshUserInfo = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12() {
var _yield$this$_request$, e;
return _regenerator.default.wrap(function _callee12$(_context12) {
while (1) {
switch (_context12.prev = _context12.next) {
case 0:
_context12.next = 2;
return this._request.send("auth.getUserInfo", {});
case 2:
_yield$this$_request$ = _context12.sent;
e = _yield$this$_request$.data;
return _context12.abrupt("return", (this.setLocalUserInfo(e), e));
case 5:
case "end":
return _context12.stop();
}
}
}, _callee12, this);
}));
function refreshUserInfo() {
return _refreshUserInfo.apply(this, arguments);
}
return refreshUserInfo;
}()
}, {
key: "setLocalUserInfo",
value: function setLocalUserInfo(e) {
var t = this._cache.keys.userInfoKey;
this._cache.setStore(t, e);
}
}]);
return Xe;
}();
var Ze = /*#__PURE__*/function () {
function Ze(e) {
(0, _classCallCheck2.default)(this, Ze);
if (!e) throw new te({
code: "PARAM_ERROR",
message: "envId is not defined"
});
this._envId = e, this._cache = Le(this._envId), this._request = Qe(this._envId), this.setUserInfo();
}
(0, _createClass2.default)(Ze, [{
key: "linkWithTicket",
value: function linkWithTicket(e) {
if ("string" != typeof e) throw new te({
code: "PARAM_ERROR",
message: "ticket must be string"
});
return this._request.send("auth.linkWithTicket", {
ticket: e
});
}
}, {
key: "linkWithRedirect",
value: function linkWithRedirect(e) {
e.signInWithRedirect();
}
}, {
key: "updatePassword",
value: function updatePassword(e, t) {
return this._request.send("auth.updatePassword", {
oldPassword: t,
newPassword: e
});
}
}, {
key: "updateEmail",
value: function updateEmail(e) {
return this._request.send("auth.updateEmail", {
newEmail: e
});
}
}, {
key: "updateUsername",
value: function updateUsername(e) {
if ("string" != typeof e) throw new te({
code: "PARAM_ERROR",
message: "username must be a string"
});
return this._request.send("auth.updateUsername", {
username: e
});
}
}, {
key: "getLinkedUidList",
value: function () {
var _getLinkedUidList = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13() {
var _yield$this$_request$2, e, t, n;
return _regenerator.default.wrap(function _callee13$(_context13) {
while (1) {
switch (_context13.prev = _context13.next) {
case 0:
_context13.next = 2;
return this._request.send("auth.getLinkedUidList", {});
case 2:
_yield$this$_request$2 = _context13.sent;
e = _yield$this$_request$2.data;
t = !1;
n = e.users;
return _context13.abrupt("return", (n.forEach(function (e) {
e.wxOpenId && e.wxPublicId && (t = !0);
}), {
users: n,
hasPrimaryUid: t
}));
case 7:
case "end":
return _context13.stop();
}
}
}, _callee13, this);
}));
function getLinkedUidList() {
return _getLinkedUidList.apply(this, arguments);
}
return getLinkedUidList;
}()
}, {
key: "setPrimaryUid",
value: function setPrimaryUid(e) {
return this._request.send("auth.setPrimaryUid", {
uid: e
});
}
}, {
key: "unlink",
value: function unlink(e) {
return this._request.send("auth.unlink", {
platform: e
});
}
}, {
key: "update",
value: function () {
var _update = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14(e) {
var t, n, s, r, i, o, _yield$this$_request$3, a;
return _regenerator.default.wrap(function _callee14$(_context14) {
while (1) {
switch (_context14.prev = _context14.next) {
case 0:
t = e.nickName;
n = e.gender;
s = e.avatarUrl;
r = e.province;
i = e.country;
o = e.city;
_context14.next = 8;
return this._request.send("auth.updateUserInfo", {
nickName: t,
gender: n,
avatarUrl: s,
province: r,
country: i,
city: o
});
case 8:
_yield$this$_request$3 = _context14.sent;
a = _yield$this$_request$3.data;
this.setLocalUserInfo(a);
case 11:
case "end":
return _context14.stop();
}
}
}, _callee14, this);
}));
function update(_x9) {
return _update.apply(this, arguments);
}
return update;
}()
}, {
key: "refresh",
value: function () {
var _refresh = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15() {
var _yield$this$_request$4, e;
return _regenerator.default.wrap(function _callee15$(_context15) {
while (1) {
switch (_context15.prev = _context15.next) {
case 0:
_context15.next = 2;
return this._request.send("auth.getUserInfo", {});
case 2:
_yield$this$_request$4 = _context15.sent;
e = _yield$this$_request$4.data;
return _context15.abrupt("return", (this.setLocalUserInfo(e), e));
case 5:
case "end":
return _context15.stop();
}
}
}, _callee15, this);
}));
function refresh() {
return _refresh.apply(this, arguments);
}
return refresh;
}()
}, {
key: "setUserInfo",
value: function setUserInfo() {
var _this8 = this;
var e = this._cache.keys.userInfoKey,
t = this._cache.getStore(e);
["uid", "loginType", "openid", "wxOpenId", "wxPublicId", "unionId", "qqMiniOpenId", "email", "hasPassword", "customUserId", "nickName", "gender", "avatarUrl"].forEach(function (e) {
_this8[e] = t[e];
}), this.location = {
country: t.country,
province: t.province,
city: t.city
};
}
}, {
key: "setLocalUserInfo",
value: function setLocalUserInfo(e) {
var t = this._cache.keys.userInfoKey;
this._cache.setStore(t, e), this.setUserInfo();
}
}]);
return Ze;
}();
var et = /*#__PURE__*/function () {
function et(e) {
(0, _classCallCheck2.default)(this, et);
if (!e) throw new te({
code: "PARAM_ERROR",
message: "envId is not defined"
});
this._cache = Le(e);
var _this$_cache$keys6 = this._cache.keys,
t = _this$_cache$keys6.refreshTokenKey,
n = _this$_cache$keys6.accessTokenKey,
s = _this$_cache$keys6.accessTokenExpireKey,
r = this._cache.getStore(t),
i = this._cache.getStore(n),
o = this._cache.getStore(s);
this.credential = {
refreshToken: r,
accessToken: i,
accessTokenExpire: o
}, this.user = new Ze(e);
}
(0, _createClass2.default)(et, [{
key: "isAnonymousAuth",
get: function get() {
return this.loginType === We.ANONYMOUS;
}
}, {
key: "isCustomAuth",
get: function get() {
return this.loginType === We.CUSTOM;
}
}, {
key: "isWeixinAuth",
get: function get() {
return this.loginType === We.WECHAT || this.loginType === We.WECHAT_OPEN || this.loginType === We.WECHAT_PUBLIC;
}
}, {
key: "loginType",
get: function get() {
return this._cache.getStore(this._cache.keys.loginTypeKey);
}
}]);
return et;
}();
var tt = /*#__PURE__*/function (_Xe) {
(0, _inherits2.default)(tt, _Xe);
var _super4 = _createSuper(tt);
function tt() {
(0, _classCallCheck2.default)(this, tt);
return _super4.apply(this, arguments);
}
(0, _createClass2.default)(tt, [{
key: "signIn",
value: function () {
var _signIn = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() {
var _this$_cache$keys7, e, t, n, s, r, _e16;
return _regenerator.default.wrap(function _callee16$(_context16) {
while (1) {
switch (_context16.prev = _context16.next) {
case 0:
this._cache.updatePersistence("local");
_this$_cache$keys7 = this._cache.keys;
e = _this$_cache$keys7.anonymousUuidKey;
t = _this$_cache$keys7.refreshTokenKey;
n = this._cache.getStore(e) || void 0;
s = this._cache.getStore(t) || void 0;
_context16.next = 8;
return this._request.send("auth.signInAnonymously", {
anonymous_uuid: n,
refresh_token: s
});
case 8:
r = _context16.sent;
if (!(r.uuid && r.refresh_token)) {
_context16.next = 20;
break;
}
this._setAnonymousUUID(r.uuid);
this.setRefreshToken(r.refresh_token);
_context16.next = 14;
return this._request.refreshAccessToken();
case 14:
Me(Fe);
Me(je, {
env: this.config.env,
loginType: We.ANONYMOUS,
persistence: "local"
});
_e16 = new et(this.config.env);
_context16.next = 19;
return _e16.user.refresh();
case 19:
return _context16.abrupt("return", _e16);
case 20:
throw new te({
message: "匿名登录失败"
});
case 21:
case "end":
return _context16.stop();
}
}
}, _callee16, this);
}));
function signIn() {
return _signIn.apply(this, arguments);
}
return signIn;
}()
}, {
key: "linkAndRetrieveDataWithTicket",
value: function () {
var _linkAndRetrieveDataWithTicket = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17(e) {
var _this$_cache$keys8, t, n, s, r, i;
return _regenerator.default.wrap(function _callee17$(_context17) {
while (1) {
switch (_context17.prev = _context17.next) {
case 0:
_this$_cache$keys8 = this._cache.keys;
t = _this$_cache$keys8.anonymousUuidKey;
n = _this$_cache$keys8.refreshTokenKey;
s = this._cache.getStore(t);
r = this._cache.getStore(n);
_context17.next = 7;
return this._request.send("auth.linkAndRetrieveDataWithTicket", {
anonymous_uuid: s,
refresh_token: r,
ticket: e
});
case 7:
i = _context17.sent;
if (!i.refresh_token) {
_context17.next = 16;
break;
}
this._clearAnonymousUUID();
this.setRefreshToken(i.refresh_token);
_context17.next = 13;
return this._request.refreshAccessToken();
case 13:
Me($e, {
env: this.config.env
});
Me(je, {
loginType: We.CUSTOM,
persistence: "local"
});
return _context17.abrupt("return", {
credential: {
refreshToken: i.refresh_token
}
});
case 16:
throw new te({
message: "匿名转化失败"
});
case 17:
case "end":
return _context17.stop();
}
}
}, _callee17, this);
}));
function linkAndRetrieveDataWithTicket(_x10) {
return _linkAndRetrieveDataWithTicket.apply(this, arguments);
}
return linkAndRetrieveDataWithTicket;
}()
}, {
key: "_setAnonymousUUID",
value: function _setAnonymousUUID(e) {
var _this$_cache$keys9 = this._cache.keys,
t = _this$_cache$keys9.anonymousUuidKey,
n = _this$_cache$keys9.loginTypeKey;
this._cache.removeStore(t), this._cache.setStore(t, e), this._cache.setStore(n, We.ANONYMOUS);
}
}, {
key: "_clearAnonymousUUID",
value: function _clearAnonymousUUID() {
this._cache.removeStore(this._cache.keys.anonymousUuidKey);
}
}]);
return tt;
}(Xe);
var nt = /*#__PURE__*/function (_Xe2) {
(0, _inherits2.default)(nt, _Xe2);
var _super5 = _createSuper(nt);
function nt() {
(0, _classCallCheck2.default)(this, nt);
return _super5.apply(this, arguments);
}
(0, _createClass2.default)(nt, [{
key: "signIn",
value: function () {
var _signIn2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18(e) {
var t, n;
return _regenerator.default.wrap(function _callee18$(_context18) {
while (1) {
switch (_context18.prev = _context18.next) {
case 0:
if (!("string" != typeof e)) {
_context18.next = 2;
break;
}
throw new te({
code: "PARAM_ERROR",
message: "ticket must be a string"
});
case 2:
t = this._cache.keys.refreshTokenKey;
_context18.next = 5;
return this._request.send("auth.signInWithTicket", {
ticket: e,
refresh_token: this._cache.getStore(t) || ""
});
case 5:
n = _context18.sent;
if (!n.refresh_token) {
_context18.next = 15;
break;
}
this.setRefreshToken(n.refresh_token);
_context18.next = 10;
return this._request.refreshAccessToken();
case 10:
Me(Fe);
Me(je, {
env: this.config.env,
loginType: We.CUSTOM,
persistence: this.config.persistence
});
_context18.next = 14;
return this.refreshUserInfo();
case 14:
return _context18.abrupt("return", new et(this.config.env));
case 15:
throw new te({
message: "自定义登录失败"
});
case 16:
case "end":
return _context18.stop();
}
}
}, _callee18, this);
}));
function signIn(_x11) {
return _signIn2.apply(this, arguments);
}
return signIn;
}()
}]);
return nt;
}(Xe);
var st = /*#__PURE__*/function (_Xe3) {
(0, _inherits2.default)(st, _Xe3);
var _super6 = _createSuper(st);
function st() {
(0, _classCallCheck2.default)(this, st);
return _super6.apply(this, arguments);
}
(0, _createClass2.default)(st, [{
key: "signIn",
value: function () {
var _signIn3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19(e, t) {
var n, s, r, i, o;
return _regenerator.default.wrap(function _callee19$(_context19) {
while (1) {
switch (_context19.prev = _context19.next) {
case 0:
if (!("string" != typeof e)) {
_context19.next = 2;
break;
}
throw new te({
code: "PARAM_ERROR",
message: "email must be a string"
});
case 2:
n = this._cache.keys.refreshTokenKey;
_context19.next = 5;
return this._request.send("auth.signIn", {
loginType: "EMAIL",
email: e,
password: t,
refresh_token: this._cache.getStore(n) || ""
});
case 5:
s = _context19.sent;
r = s.refresh_token;
i = s.access_token;
o = s.access_token_expire;
if (!r) {
_context19.next = 22;
break;
}
this.setRefreshToken(r);
if (!(i && o)) {
_context19.next = 15;
break;
}
this.setAccessToken(i, o);
_context19.next = 17;
break;
case 15:
_context19.next = 17;
return this._request.refreshAccessToken();
case 17:
_context19.next = 19;
return this.refreshUserInfo();
case 19:
Me(Fe);
Me(je, {
env: this.config.env,
loginType: We.EMAIL,
persistence: this.config.persistence
});
return _context19.abrupt("return", new et(this.config.env));
case 22:
throw s.code ? new te({
code: s.code,
message: "\u90AE\u7BB1\u767B\u5F55\u5931\u8D25: ".concat(s.message)
}) : new te({
message: "邮箱登录失败"
});
case 23:
case "end":
return _context19.stop();
}
}
}, _callee19, this);
}));
function signIn(_x12, _x13) {
return _signIn3.apply(this, arguments);
}
return signIn;
}()
}, {
key: "activate",
value: function () {
var _activate = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee20(e) {
return _regenerator.default.wrap(function _callee20$(_context20) {
while (1) {
switch (_context20.prev = _context20.next) {
case 0:
return _context20.abrupt("return", this._request.send("auth.activateEndUserMail", {
token: e
}));
case 1:
case "end":
return _context20.stop();
}
}
}, _callee20, this);
}));
function activate(_x14) {
return _activate.apply(this, arguments);
}
return activate;
}()
}, {
key: "resetPasswordWithToken",
value: function () {
var _resetPasswordWithToken = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee21(e, t) {
return _regenerator.default.wrap(function _callee21$(_context21) {
while (1) {
switch (_context21.prev = _context21.next) {
case 0:
return _context21.abrupt("return", this._request.send("auth.resetPasswordWithToken", {
token: e,
newPassword: t
}));
case 1:
case "end":
return _context21.stop();
}
}
}, _callee21, this);
}));
function resetPasswordWithToken(_x15, _x16) {
return _resetPasswordWithToken.apply(this, arguments);
}
return resetPasswordWithToken;
}()
}]);
return st;
}(Xe);
var rt = /*#__PURE__*/function (_Xe4) {
(0, _inherits2.default)(rt, _Xe4);
var _super7 = _createSuper(rt);
function rt() {
(0, _classCallCheck2.default)(this, rt);
return _super7.apply(this, arguments);
}
(0, _createClass2.default)(rt, [{
key: "signIn",
value: function () {
var _signIn4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee22(e, t) {
var n, s, r, i, o;
return _regenerator.default.wrap(function _callee22$(_context22) {
while (1) {
switch (_context22.prev = _context22.next) {
case 0:
if (!("string" != typeof e)) {
_context22.next = 2;
break;
}
throw new te({
code: "PARAM_ERROR",
message: "username must be a string"
});
case 2:
"string" != typeof t && (t = "", console.warn("password is empty"));
n = this._cache.keys.refreshTokenKey;
_context22.next = 6;
return this._request.send("auth.signIn", {
loginType: We.USERNAME,
username: e,
password: t,
refresh_token: this._cache.getStore(n) || ""
});
case 6:
s = _context22.sent;
r = s.refresh_token;
i = s.access_token_expire;
o = s.access_token;
if (!r) {
_context22.next = 23;
break;
}
this.setRefreshToken(r);
if (!(o && i)) {
_context22.next = 16;
break;
}
this.setAccessToken(o, i);
_context22.next = 18;
break;
case 16:
_context22.next = 18;
return this._request.refreshAccessToken();
case 18:
_context22.next = 20;
return this.refreshUserInfo();
case 20:
Me(Fe);
Me(je, {
env: this.config.env,
loginType: We.USERNAME,
persistence: this.config.persistence
});
return _context22.abrupt("return", new et(this.config.env));
case 23:
throw s.code ? new te({
code: s.code,
message: "\u7528\u6237\u540D\u5BC6\u7801\u767B\u5F55\u5931\u8D25: ".concat(s.message)
}) : new te({
message: "用户名密码登录失败"
});
case 24:
case "end":
return _context22.stop();
}
}
}, _callee22, this);
}));
function signIn(_x17, _x18) {
return _signIn4.apply(this, arguments);
}
return signIn;
}()
}]);
return rt;
}(Xe);
var it = /*#__PURE__*/function () {
function it(e) {
(0, _classCallCheck2.default)(this, it);
this.config = e, this._cache = Le(e.env), this._request = Qe(e.env), this._onAnonymousConverted = this._onAnonymousConverted.bind(this), this._onLoginTypeChanged = this._onLoginTypeChanged.bind(this), De(je, this._onLoginTypeChanged);
}
(0, _createClass2.default)(it, [{
key: "currentUser",
get: function get() {
var e = this.hasLoginState();
return e && e.user || null;
}
}, {
key: "loginType",
get: function get() {
return this._cache.getStore(this._cache.keys.loginTypeKey);
}
}, {
key: "anonymousAuthProvider",
value: function anonymousAuthProvider() {
return new tt(this.config);
}
}, {
key: "customAuthProvider",
value: function customAuthProvider() {
return new nt(this.config);
}
}, {
key: "emailAuthProvider",
value: function emailAuthProvider() {
return new st(this.config);
}
}, {
key: "usernameAuthProvider",
value: function usernameAuthProvider() {
return new rt(this.config);
}
}, {
key: "signInAnonymously",
value: function () {
var _signInAnonymously = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee23() {
return _regenerator.default.wrap(function _callee23$(_context23) {
while (1) {
switch (_context23.prev = _context23.next) {
case 0:
return _context23.abrupt("return", new tt(this.config).signIn());
case 1:
case "end":
return _context23.stop();
}
}
}, _callee23, this);
}));
function signInAnonymously() {
return _signInAnonymously.apply(this, arguments);
}
return signInAnonymously;
}()
}, {
key: "signInWithEmailAndPassword",
value: function () {
var _signInWithEmailAndPassword = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24(e, t) {
return _regenerator.default.wrap(function _callee24$(_context24) {
while (1) {
switch (_context24.prev = _context24.next) {
case 0:
return _context24.abrupt("return", new st(this.config).signIn(e, t));
case 1:
case "end":
return _context24.stop();
}
}
}, _callee24, this);
}));
function signInWithEmailAndPassword(_x19, _x20) {
return _signInWithEmailAndPassword.apply(this, arguments);
}
return signInWithEmailAndPassword;
}()
}, {
key: "signInWithUsernameAndPassword",
value: function signInWithUsernameAndPassword(e, t) {
return new rt(this.config).signIn(e, t);
}
}, {
key: "linkAndRetrieveDataWithTicket",
value: function () {
var _linkAndRetrieveDataWithTicket2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee25(e) {
return _regenerator.default.wrap(function _callee25$(_context25) {
while (1) {
switch (_context25.prev = _context25.next) {
case 0:
this._anonymousAuthProvider || (this._anonymousAuthProvider = new tt(this.config)), De($e, this._onAnonymousConverted);
_context25.next = 3;
return this._anonymousAuthProvider.linkAndRetrieveDataWithTicket(e);
case 3:
return _context25.abrupt("return", _context25.sent);
case 4:
case "end":
return _context25.stop();
}
}
}, _callee25, this);
}));
function linkAndRetrieveDataWithTicket(_x21) {
return _linkAndRetrieveDataWithTicket2.apply(this, arguments);
}
return linkAndRetrieveDataWithTicket;
}()
}, {
key: "signOut",
value: function () {
var _signOut = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee26() {
var _this$_cache$keys10, e, t, n, s, r;
return _regenerator.default.wrap(function _callee26$(_context26) {
while (1) {
switch (_context26.prev = _context26.next) {
case 0:
if (!(this.loginType === We.ANONYMOUS)) {
_context26.next = 2;
break;
}
throw new te({
message: "匿名用户不支持登出操作"
});
case 2:
_this$_cache$keys10 = this._cache.keys, e = _this$_cache$keys10.refreshTokenKey, t = _this$_cache$keys10.accessTokenKey, n = _this$_cache$keys10.accessTokenExpireKey, s = this._cache.getStore(e);
if (s) {
_context26.next = 5;
break;
}
return _context26.abrupt("return");
case 5:
_context26.next = 7;
return this._request.send("auth.logout", {
refresh_token: s
});
case 7:
r = _context26.sent;
return _context26.abrupt("return", (this._cache.removeStore(e), this._cache.removeStore(t), this._cache.removeStore(n), Me(Fe), Me(je, {
env: this.config.env,
loginType: We.NULL,
persistence: this.config.persistence
}), r));
case 9:
case "end":
return _context26.stop();
}
}
}, _callee26, this);
}));
function signOut() {
return _signOut.apply(this, arguments);
}
return signOut;
}()
}, {
key: "signUpWithEmailAndPassword",
value: function () {
var _signUpWithEmailAndPassword = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee27(e, t) {
return _regenerator.default.wrap(function _callee27$(_context27) {
while (1) {
switch (_context27.prev = _context27.next) {
case 0:
return _context27.abrupt("return", this._request.send("auth.signUpWithEmailAndPassword", {
email: e,
password: t
}));
case 1:
case "end":
return _context27.stop();
}
}
}, _callee27, this);
}));
function signUpWithEmailAndPassword(_x22, _x23) {
return _signUpWithEmailAndPassword.apply(this, arguments);
}
return signUpWithEmailAndPassword;
}()
}, {
key: "sendPasswordResetEmail",
value: function () {
var _sendPasswordResetEmail = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee28(e) {
return _regenerator.default.wrap(function _callee28$(_context28) {
while (1) {
switch (_context28.prev = _context28.next) {
case 0:
return _context28.abrupt("return", this._request.send("auth.sendPasswordResetEmail", {
email: e
}));
case 1:
case "end":
return _context28.stop();
}
}
}, _callee28, this);
}));
function sendPasswordResetEmail(_x24) {
return _sendPasswordResetEmail.apply(this, arguments);
}
return sendPasswordResetEmail;
}()
}, {
key: "onLoginStateChanged",
value: function onLoginStateChanged(e) {
var _this9 = this;
De(Fe, function () {
var t = _this9.hasLoginState();
e.call(_this9, t);
});
var t = this.hasLoginState();
e.call(this, t);
}
}, {
key: "onLoginStateExpired",
value: function onLoginStateExpired(e) {
De(Ke, e.bind(this));
}
}, {
key: "onAccessTokenRefreshed",
value: function onAccessTokenRefreshed(e) {
De(Be, e.bind(this));
}
}, {
key: "onAnonymousConverted",
value: function onAnonymousConverted(e) {
De($e, e.bind(this));
}
}, {
key: "onLoginTypeChanged",
value: function onLoginTypeChanged(e) {
var _this10 = this;
De(je, function () {
var t = _this10.hasLoginState();
e.call(_this10, t);
});
}
}, {
key: "getAccessToken",
value: function () {
var _getAccessToken2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee29() {
return _regenerator.default.wrap(function _callee29$(_context29) {
while (1) {
switch (_context29.prev = _context29.next) {
case 0:
_context29.next = 2;
return this._request.getAccessToken();
case 2:
_context29.t0 = _context29.sent.accessToken;
_context29.t1 = this.config.env;
return _context29.abrupt("return", {
accessToken: _context29.t0,
env: _context29.t1
});
case 5:
case "end":
return _context29.stop();
}
}
}, _callee29, this);
}));
function getAccessToken() {
return _getAccessToken2.apply(this, arguments);
}
return getAccessToken;
}()
}, {
key: "hasLoginState",
value: function hasLoginState() {
var e = this._cache.keys.refreshTokenKey;
return this._cache.getStore(e) ? new et(this.config.env) : null;
}
}, {
key: "isUsernameRegistered",
value: function () {
var _isUsernameRegistered = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee30(e) {
var _yield$this$_request$5, t;
return _regenerator.default.wrap(function _callee30$(_context30) {
while (1) {
switch (_context30.prev = _context30.next) {
case 0:
if (!("string" != typeof e)) {
_context30.next = 2;
break;
}
throw new te({
code: "PARAM_ERROR",
message: "username must be a string"
});
case 2:
_context30.next = 4;
return this._request.send("auth.isUsernameRegistered", {
username: e
});
case 4:
_yield$this$_request$5 = _context30.sent;
t = _yield$this$_request$5.data;
return _context30.abrupt("return", t && t.isRegistered);
case 7:
case "end":
return _context30.stop();
}
}
}, _callee30, this);
}));
function isUsernameRegistered(_x25) {
return _isUsernameRegistered.apply(this, arguments);
}
return isUsernameRegistered;
}()
}, {
key: "getLoginState",
value: function getLoginState() {
return Promise.resolve(this.hasLoginState());
}
}, {
key: "signInWithTicket",
value: function () {
var _signInWithTicket = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee31(e) {
return _regenerator.default.wrap(function _callee31$(_context31) {
while (1) {
switch (_context31.prev = _context31.next) {
case 0:
return _context31.abrupt("return", new nt(this.config).signIn(e));
case 1:
case "end":
return _context31.stop();
}
}
}, _callee31, this);
}));
function signInWithTicket(_x26) {
return _signInWithTicket.apply(this, arguments);
}
return signInWithTicket;
}()
}, {
key: "shouldRefreshAccessToken",
value: function shouldRefreshAccessToken(e) {
this._request._shouldRefreshAccessTokenHook = e.bind(this);
}
}, {
key: "getUserInfo",
value: function getUserInfo() {
return this._request.send("auth.getUserInfo", {}).then(function (e) {
return e.code ? e : _objectSpread(_objectSpread({}, e.data), {}, {
requestId: e.seqId
});
});
}
}, {
key: "getAuthHeader",
value: function getAuthHeader() {
var _this$_cache$keys11 = this._cache.keys,
e = _this$_cache$keys11.refreshTokenKey,
t = _this$_cache$keys11.accessTokenKey,
n = this._cache.getStore(e);
return {
"x-cloudbase-credentials": this._cache.getStore(t) + "/@@/" + n
};
}
}, {
key: "_onAnonymousConverted",
value: function _onAnonymousConverted(e) {
var t = e.data.env;
t === this.config.env && this._cache.updatePersistence(this.config.persistence);
}
}, {
key: "_onLoginTypeChanged",
value: function _onLoginTypeChanged(e) {
var _e$data = e.data,
t = _e$data.loginType,
n = _e$data.persistence,
s = _e$data.env;
s === this.config.env && (this._cache.updatePersistence(n), this._cache.setStore(this._cache.keys.loginTypeKey, t));
}
}]);
return it;
}();
var ot = function ot(e, t) {
t = t || ve();
var n = Qe(this.config.env),
s = e.cloudPath,
r = e.filePath,
i = e.onUploadProgress,
_e$fileType = e.fileType,
o = _e$fileType === void 0 ? "image" : _e$fileType;
return n.send("storage.getUploadMetadata", {
path: s
}).then(function (e) {
var _e$data2 = e.data,
a = _e$data2.url,
c = _e$data2.authorization,
u = _e$data2.token,
h = _e$data2.fileId,
l = _e$data2.cosFileId,
d = e.requestId,
p = {
key: s,
signature: c,
"x-cos-meta-fileid": l,
success_action_status: "201",
"x-cos-security-token": u
};
n.upload({
url: a,
data: p,
file: r,
name: s,
fileType: o,
onUploadProgress: i
}).then(function (e) {
201 === e.statusCode ? t(null, {
fileID: h,
requestId: d
}) : t(new te({
code: "STORAGE_REQUEST_FAIL",
message: "STORAGE_REQUEST_FAIL: ".concat(e.data)
}));
}).catch(function (e) {
t(e);
});
}).catch(function (e) {
t(e);
}), t.promise;
},
at = function at(e, t) {
t = t || ve();
var n = Qe(this.config.env),
s = e.cloudPath;
return n.send("storage.getUploadMetadata", {
path: s
}).then(function (e) {
t(null, e);
}).catch(function (e) {
t(e);
}), t.promise;
},
ct = function ct(_ref7, t) {
var e = _ref7.fileList;
if (t = t || ve(), !e || !Array.isArray(e)) return {
code: "INVALID_PARAM",
message: "fileList必须是非空的数组"
};
var _iterator3 = _createForOfIteratorHelper(e),
_step3;
try {
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
var _t8 = _step3.value;
if (!_t8 || "string" != typeof _t8) return {
code: "INVALID_PARAM",
message: "fileList的元素必须是非空的字符串"
};
}
} catch (err) {
_iterator3.e(err);
} finally {
_iterator3.f();
}
var n = {
fileid_list: e
};
return Qe(this.config.env).send("storage.batchDeleteFile", n).then(function (e) {
e.code ? t(null, e) : t(null, {
fileList: e.data.delete_list,
requestId: e.requestId
});
}).catch(function (e) {
t(e);
}), t.promise;
},
ut = function ut(_ref8, t) {
var e = _ref8.fileList;
t = t || ve(), e && Array.isArray(e) || t(null, {
code: "INVALID_PARAM",
message: "fileList必须是非空的数组"
});
var n = [];
var _iterator4 = _createForOfIteratorHelper(e),
_step4;
try {
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
var _s9 = _step4.value;
"object" == (0, _typeof2.default)(_s9) ? (_s9.hasOwnProperty("fileID") && _s9.hasOwnProperty("maxAge") || t(null, {
code: "INVALID_PARAM",
message: "fileList的元素必须是包含fileID和maxAge的对象"
}), n.push({
fileid: _s9.fileID,
max_age: _s9.maxAge
})) : "string" == typeof _s9 ? n.push({
fileid: _s9
}) : t(null, {
code: "INVALID_PARAM",
message: "fileList的元素必须是字符串"
});
}
} catch (err) {
_iterator4.e(err);
} finally {
_iterator4.f();
}
var s = {
file_list: n
};
return Qe(this.config.env).send("storage.batchGetDownloadUrl", s).then(function (e) {
e.code ? t(null, e) : t(null, {
fileList: e.data.download_list,
requestId: e.requestId
});
}).catch(function (e) {
t(e);
}), t.promise;
},
ht = /*#__PURE__*/function () {
var _ref10 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32(_ref9, t) {
var e, n, s, r;
return _regenerator.default.wrap(function _callee32$(_context32) {
while (1) {
switch (_context32.prev = _context32.next) {
case 0:
e = _ref9.fileID;
_context32.next = 3;
return ut.call(this, {
fileList: [{
fileID: e,
maxAge: 600
}]
});
case 3:
n = _context32.sent.fileList[0];
if (!("SUCCESS" !== n.code)) {
_context32.next = 6;
break;
}
return _context32.abrupt("return", t ? t(n) : new Promise(function (e) {
e(n);
}));
case 6:
s = Qe(this.config.env);
r = n.download_url;
if (!(r = encodeURI(r), !t)) {
_context32.next = 10;
break;
}
return _context32.abrupt("return", s.download({
url: r
}));
case 10:
_context32.t0 = t;
_context32.next = 13;
return s.download({
url: r
});
case 13:
_context32.t1 = _context32.sent;
(0, _context32.t0)(_context32.t1);
case 15:
case "end":
return _context32.stop();
}
}
}, _callee32, this);
}));
return function ht(_x27, _x28) {
return _ref10.apply(this, arguments);
};
}(),
lt = function lt(_ref11, i) {
var e = _ref11.name,
t = _ref11.data,
n = _ref11.query,
s = _ref11.parse,
r = _ref11.search;
var o = i || ve();
var a;
try {
a = t ? JSON.stringify(t) : "";
} catch (e) {
return Promise.reject(e);
}
if (!e) return Promise.reject(new te({
code: "PARAM_ERROR",
message: "函数名不能为空"
}));
var c = {
inQuery: n,
parse: s,
search: r,
function_name: e,
request_data: a
};
return Qe(this.config.env).send("functions.invokeFunction", c).then(function (e) {
if (e.code) o(null, e);else {
var _t9 = e.data.response_data;
if (s) o(null, {
result: _t9,
requestId: e.requestId
});else try {
_t9 = JSON.parse(e.data.response_data), o(null, {
result: _t9,
requestId: e.requestId
});
} catch (e) {
o(new te({
message: "response data must be json"
}));
}
}
return o.promise;
}).catch(function (e) {
o(e);
}), o.promise;
},
dt = {
timeout: 15e3,
persistence: "session"
},
pt = {};
var ft = /*#__PURE__*/function () {
function ft(e) {
(0, _classCallCheck2.default)(this, ft);
this.config = e || this.config, this.authObj = void 0;
}
(0, _createClass2.default)(ft, [{
key: "init",
value: function init(e) {
switch (Ae.adapter || (this.requestClient = new Ae.adapter.reqClass({
timeout: e.timeout || 5e3,
timeoutMsg: "\u8BF7\u6C42\u5728".concat((e.timeout || 5e3) / 1e3, "s\u5185\u672A\u5B8C\u6210\uFF0C\u5DF2\u4E2D\u65AD")
})), this.config = _objectSpread(_objectSpread({}, dt), e), !0) {
case this.config.timeout > 6e5:
console.warn("timeout大于可配置上限[10分钟],已重置为上限数值"), this.config.timeout = 6e5;
break;
case this.config.timeout < 100:
console.warn("timeout小于可配置下限[100ms],已重置为下限数值"), this.config.timeout = 100;
}
return new ft(this.config);
}
}, {
key: "auth",
value: function auth() {
var _ref12 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
e = _ref12.persistence;
if (this.authObj) return this.authObj;
var t = e || Ae.adapter.primaryStorage || dt.persistence;
var n;
return t !== this.config.persistence && (this.config.persistence = t), function (e) {
var t = e.env;
Oe[t] = new xe(e), Ee[t] = new xe(_objectSpread(_objectSpread({}, e), {}, {
persistence: "local"
}));
}(this.config), n = this.config, Ye[n.env] = new Ge(n), this.authObj = new it(this.config), this.authObj;
}
}, {
key: "on",
value: function on(e, t) {
return De.apply(this, [e, t]);
}
}, {
key: "off",
value: function off(e, t) {
return qe.apply(this, [e, t]);
}
}, {
key: "callFunction",
value: function callFunction(e, t) {
return lt.apply(this, [e, t]);
}
}, {
key: "deleteFile",
value: function deleteFile(e, t) {
return ct.apply(this, [e, t]);
}
}, {
key: "getTempFileURL",
value: function getTempFileURL(e, t) {
return ut.apply(this, [e, t]);
}
}, {
key: "downloadFile",
value: function downloadFile(e, t) {
return ht.apply(this, [e, t]);
}
}, {
key: "uploadFile",
value: function uploadFile(e, t) {
return ot.apply(this, [e, t]);
}
}, {
key: "getUploadMetadata",
value: function getUploadMetadata(e, t) {
return at.apply(this, [e, t]);
}
}, {
key: "registerExtension",
value: function registerExtension(e) {
pt[e.name] = e;
}
}, {
key: "invokeExtension",
value: function () {
var _invokeExtension = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(e, t) {
var n;
return _regenerator.default.wrap(function _callee33$(_context33) {
while (1) {
switch (_context33.prev = _context33.next) {
case 0:
n = pt[e];
if (n) {
_context33.next = 3;
break;
}
throw new te({
message: "\u6269\u5C55".concat(e, " \u5FC5\u987B\u5148\u6CE8\u518C")
});
case 3:
_context33.next = 5;
return n.invoke(t, this);
case 5:
return _context33.abrupt("return", _context33.sent);
case 6:
case "end":
return _context33.stop();
}
}
}, _callee33, this);
}));
function invokeExtension(_x29, _x30) {
return _invokeExtension.apply(this, arguments);
}
return invokeExtension;
}()
}, {
key: "useAdapters",
value: function useAdapters(e) {
var _ref13 = ke(e) || {},
t = _ref13.adapter,
n = _ref13.runtime;
t && (Ae.adapter = t), n && (Ae.runtime = n);
}
}]);
return ft;
}();
var gt = new ft();
function mt(e, t, n) {
void 0 === n && (n = {});
var s = /\?/.test(t),
r = "";
for (var i in n) {
"" === r ? !s && (t += "?") : r += "&", r += i + "=" + encodeURIComponent(n[i]);
}
return /^http(s)?:\/\//.test(t += r) ? t : "" + e + t;
}
var yt = /*#__PURE__*/function () {
function yt() {
(0, _classCallCheck2.default)(this, yt);
}
(0, _createClass2.default)(yt, [{
key: "post",
value: function post(e) {
var t = e.url,
n = e.data,
s = e.headers;
return new Promise(function (e, r) {
ne.request({
url: mt("https:", t),
data: n,
method: "POST",
header: s,
success: function success(t) {
e(t);
},
fail: function fail(e) {
r(e);
}
});
});
}
}, {
key: "upload",
value: function upload(e) {
return new Promise(function (t, n) {
var s = e.url,
r = e.file,
i = e.data,
o = e.headers,
a = e.fileType,
c = ne.uploadFile({
url: mt("https:", s),
name: "file",
formData: Object.assign({}, i),
filePath: r,
fileType: a,
header: o,
success: function success(e) {
var n = {
statusCode: e.statusCode,
data: e.data || {}
};
200 === e.statusCode && i.success_action_status && (n.statusCode = parseInt(i.success_action_status, 10)), t(n);
},
fail: function fail(e) {
n(new Error(e.errMsg || "uploadFile:fail"));
}
});
"function" == typeof e.onUploadProgress && c && "function" == typeof c.onProgressUpdate && c.onProgressUpdate(function (t) {
e.onUploadProgress({
loaded: t.totalBytesSent,
total: t.totalBytesExpectedToSend
});
});
});
}
}]);
return yt;
}();
var _t = {
setItem: function setItem(e, t) {
ne.setStorageSync(e, t);
},
getItem: function getItem(e) {
return ne.getStorageSync(e);
},
removeItem: function removeItem(e) {
ne.removeStorageSync(e);
},
clear: function clear() {
ne.clearStorageSync();
}
};
var wt = {
genAdapter: function genAdapter() {
return {
root: {},
reqClass: yt,
localStorage: _t,
primaryStorage: "local"
};
},
isMatch: function isMatch() {
return !0;
},
runtime: "uni_app"
};
gt.useAdapters(wt);
var vt = gt,
It = vt.init;
vt.init = function (e) {
e.env = e.spaceId;
var t = It.call(this, e);
t.config.provider = "tencent", t.config.spaceId = e.spaceId;
var n = t.auth;
return t.auth = function (e) {
var t = n.call(this, e);
return ["linkAndRetrieveDataWithTicket", "signInAnonymously", "signOut", "getAccessToken", "getLoginState", "signInWithTicket", "getUserInfo"].forEach(function (e) {
var n;
t[e] = (n = t[e], function (e) {
e = e || {};
var _ee = ee(e),
t = _ee.success,
s = _ee.fail,
r = _ee.complete;
if (!(t || s || r)) return n.call(this, e);
n.call(this, e).then(function (e) {
t && t(e), r && r(e);
}, function (e) {
s && s(e), r && r(e);
});
}).bind(t);
}), t;
}, t.customAuth = t.auth, t;
};
var St = vt;
var bt = /*#__PURE__*/function (_de) {
(0, _inherits2.default)(bt, _de);
var _super8 = _createSuper(bt);
function bt() {
(0, _classCallCheck2.default)(this, bt);
return _super8.apply(this, arguments);
}
(0, _createClass2.default)(bt, [{
key: "getAccessToken",
value: function getAccessToken() {
var _this11 = this;
return new Promise(function (e, t) {
var n = "Anonymous_Access_token";
_this11.setAccessToken(n), e(n);
});
}
}, {
key: "setupRequest",
value: function setupRequest(e, t) {
var n = Object.assign({}, e, {
spaceId: this.config.spaceId,
timestamp: Date.now()
}),
s = {
"Content-Type": "application/json"
};
"auth" !== t && (n.token = this.accessToken, s["x-basement-token"] = this.accessToken), s["x-serverless-sign"] = le.sign(n, this.config.clientSecret);
var r = he();
s["x-client-info"] = encodeURIComponent(JSON.stringify(r));
var _se = se(),
i = _se.token;
return s["x-client-token"] = i, {
url: this.config.requestUrl,
method: "POST",
data: n,
dataType: "json",
header: JSON.parse(JSON.stringify(s))
};
}
}, {
key: "uploadFileToOSS",
value: function uploadFileToOSS(_ref14) {
var _this12 = this;
var e = _ref14.url,
t = _ref14.formData,
n = _ref14.name,
s = _ref14.filePath,
r = _ref14.fileType,
i = _ref14.onUploadProgress;
return new Promise(function (o, a) {
var c = _this12.adapter.uploadFile({
url: e,
formData: t,
name: n,
filePath: s,
fileType: r,
success: function success(e) {
e && e.statusCode < 400 ? o(e) : a(new te({
code: "UPLOAD_FAILED",
message: "文件上传失败"
}));
},
fail: function fail(e) {
a(new te({
code: e.code || "UPLOAD_FAILED",
message: e.message || e.errMsg || "文件上传失败"
}));
}
});
"function" == typeof i && c && "function" == typeof c.onProgressUpdate && c.onProgressUpdate(function (e) {
i({
loaded: e.totalBytesSent,
total: e.totalBytesExpectedToSend
});
});
});
}
}, {
key: "uploadFile",
value: function uploadFile(_ref15) {
var _this13 = this;
var e = _ref15.filePath,
t = _ref15.cloudPath,
_ref15$fileType = _ref15.fileType,
n = _ref15$fileType === void 0 ? "image" : _ref15$fileType,
s = _ref15.onUploadProgress;
if (!t) throw new te({
code: "CLOUDPATH_REQUIRED",
message: "cloudPath不可为空"
});
var r;
return this.getOSSUploadOptionsFromPath({
cloudPath: t
}).then(function (t) {
var _t$result = t.result,
i = _t$result.url,
o = _t$result.formData,
a = _t$result.name;
r = t.result.fileUrl;
var c = {
url: i,
formData: o,
name: a,
filePath: e,
fileType: n
};
return _this13.uploadFileToOSS(Object.assign({}, c, {
onUploadProgress: s
}));
}).then(function () {
return _this13.reportOSSUpload({
cloudPath: t
});
}).then(function (t) {
return new Promise(function (n, s) {
t.success ? n({
success: !0,
filePath: e,
fileID: r
}) : s(new te({
code: "UPLOAD_FAILED",
message: "文件上传失败"
}));
});
});
}
}, {
key: "deleteFile",
value: function deleteFile(_ref16) {
var e = _ref16.fileList;
var t = {
method: "serverless.file.resource.delete",
params: JSON.stringify({
fileList: e
})
};
return this.request(this.setupRequest(t)).then(function (e) {
if (e.success) return e.result;
throw new te({
code: "DELETE_FILE_FAILED",
message: "删除文件失败"
});
});
}
}, {
key: "getTempFileURL",
value: function getTempFileURL() {
var _ref17 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
e = _ref17.fileList,
t = _ref17.maxAge;
if (!Array.isArray(e) || 0 === e.length) throw new te({
code: "INVALID_PARAM",
message: "fileList的元素必须是非空的字符串"
});
var n = {
method: "serverless.file.resource.getTempFileURL",
params: JSON.stringify({
fileList: e,
maxAge: t
})
};
return this.request(this.setupRequest(n)).then(function (e) {
if (e.success) return {
fileList: e.result.fileList.map(function (e) {
return {
fileID: e.fileID,
tempFileURL: e.tempFileURL
};
})
};
throw new te({
code: "GET_TEMP_FILE_URL_FAILED",
message: "获取临时文件链接失败"
});
});
}
}]);
return bt;
}(de);
var kt = {
init: function init(e) {
var t = new bt(e),
n = {
signInAnonymously: function signInAnonymously() {
return t.authorize();
},
getLoginState: function getLoginState() {
return Promise.resolve(!1);
}
};
return t.auth = function () {
return n;
}, t.customAuth = t.auth, t;
}
},
At = n(function (e, t) {
e.exports = r.enc.Hex;
});
function Ct() {
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (e) {
var t = 16 * Math.random() | 0;
return ("x" === e ? t : 3 & t | 8).toString(16);
});
}
function Pt() {
var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var n = t.data,
s = t.functionName,
r = t.method,
i = t.headers,
_t$signHeaderKeys = t.signHeaderKeys,
o = _t$signHeaderKeys === void 0 ? [] : _t$signHeaderKeys,
a = t.config,
c = Date.now(),
u = Ct(),
h = Object.assign({}, i, {
"x-from-app-id": a.spaceAppId,
"x-from-env-id": a.spaceId,
"x-to-env-id": a.spaceId,
"x-from-instance-id": c,
"x-from-function-name": s,
"x-client-timestamp": c,
"x-alipay-source": "client",
"x-request-id": u,
"x-alipay-callid": u,
"x-trace-id": u
}),
l = ["x-from-app-id", "x-from-env-id", "x-to-env-id", "x-from-instance-id", "x-from-function-name", "x-client-timestamp"].concat(o),
_ref18 = e.split("?") || [],
_ref19 = (0, _slicedToArray2.default)(_ref18, 2),
_ref19$ = _ref19[0],
d = _ref19$ === void 0 ? "" : _ref19$,
_ref19$2 = _ref19[1],
p = _ref19$2 === void 0 ? "" : _ref19$2,
f = function (e) {
var t = e.signedHeaders.join(";"),
n = e.signedHeaders.map(function (t) {
return "".concat(t.toLowerCase(), ":").concat(e.headers[t], "\n");
}).join(""),
s = _e(e.body).toString(At),
r = "".concat(e.method.toUpperCase(), "\n").concat(e.path, "\n").concat(e.query, "\n").concat(n, "\n").concat(t, "\n").concat(s, "\n"),
i = _e(r).toString(At),
o = "HMAC-SHA256\n".concat(e.timestamp, "\n").concat(i, "\n"),
a = we(o, e.secretKey).toString(At);
return "HMAC-SHA256 Credential=".concat(e.secretId, ", SignedHeaders=").concat(t, ", Signature=").concat(a);
}({
path: d,
query: p,
method: r,
headers: h,
timestamp: c,
body: JSON.stringify(n),
secretId: a.accessKey,
secretKey: a.secretKey,
signedHeaders: l.sort()
});
return {
url: "".concat(a.endpoint).concat(e),
headers: Object.assign({}, h, {
Authorization: f
})
};
}
function Tt(_ref20) {
var e = _ref20.url,
t = _ref20.data,
_ref20$method = _ref20.method,
n = _ref20$method === void 0 ? "POST" : _ref20$method,
_ref20$headers = _ref20.headers,
s = _ref20$headers === void 0 ? {} : _ref20$headers;
return new Promise(function (r, i) {
ne.request({
url: e,
method: n,
data: "object" == (0, _typeof2.default)(t) ? JSON.stringify(t) : t,
header: s,
dataType: "json",
complete: function complete() {
var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var t = s["x-trace-id"] || "";
if (!e.statusCode || e.statusCode >= 400) {
var _ref21 = e.data || {},
_n8 = _ref21.message,
_s10 = _ref21.errMsg,
_r4 = _ref21.trace_id;
return i(new te({
code: "SYS_ERR",
message: _n8 || _s10 || "request:fail",
requestId: _r4 || t
}));
}
r({
status: e.statusCode,
data: e.data,
headers: e.header,
requestId: t
});
}
});
});
}
function xt(e, t) {
var n = e.path,
s = e.data,
_e$method = e.method,
r = _e$method === void 0 ? "GET" : _e$method,
_Pt = Pt(n, {
functionName: "",
data: s,
method: r,
headers: {
"x-alipay-cloud-mode": "oss",
"x-data-api-type": "oss",
"x-expire-timestamp": Date.now() + 6e4
},
signHeaderKeys: ["x-data-api-type", "x-expire-timestamp"],
config: t
}),
i = _Pt.url,
o = _Pt.headers;
return Tt({
url: i,
data: s,
method: r,
headers: o
}).then(function (e) {
var t = e.data || {};
if (!t.success) throw new te({
code: e.errCode,
message: e.errMsg,
requestId: e.requestId
});
return t.data || {};
}).catch(function (e) {
throw new te({
code: e.errCode,
message: e.errMsg,
requestId: e.requestId
});
});
}
function Ot() {
var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
var t = e.trim().replace(/^cloud:\/\//, ""),
n = t.indexOf("/");
if (n <= 0) throw new te({
code: "INVALID_PARAM",
message: "fileID不合法"
});
var s = t.substring(0, n),
r = t.substring(n + 1);
return s !== this.config.spaceId && console.warn("file ".concat(e, " does not belong to env ").concat(this.config.spaceId)), r;
}
function Et() {
var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
return "cloud://".concat(this.config.spaceId, "/").concat(e.replace(/^\/+/, ""));
}
var Lt = /*#__PURE__*/function () {
function Lt(e) {
(0, _classCallCheck2.default)(this, Lt);
this.config = e;
}
(0, _createClass2.default)(Lt, [{
key: "signedURL",
value: function signedURL(e) {
var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var n = "/ws/function/".concat(e),
s = this.config.wsEndpoint.replace(/^ws(s)?:\/\//, ""),
r = Object.assign({}, t, {
accessKeyId: this.config.accessKey,
signatureNonce: Ct(),
timestamp: "" + Date.now()
}),
i = [n, ["accessKeyId", "authorization", "signatureNonce", "timestamp"].sort().map(function (e) {
return r[e] ? "".concat(e, "=").concat(r[e]) : null;
}).filter(Boolean).join("&"), "host:".concat(s)].join("\n"),
o = ["HMAC-SHA256", _e(i).toString(At)].join("\n"),
a = we(o, this.config.secretKey).toString(At),
c = Object.keys(r).map(function (e) {
return "".concat(e, "=").concat(encodeURIComponent(r[e]));
}).join("&");
return "".concat(this.config.wsEndpoint).concat(n, "?").concat(c, "&signature=").concat(a);
}
}]);
return Lt;
}();
var Rt = /*#__PURE__*/function () {
function Rt(e) {
(0, _classCallCheck2.default)(this, Rt);
if (["spaceId", "spaceAppId", "accessKey", "secretKey"].forEach(function (t) {
if (!Object.prototype.hasOwnProperty.call(e, t)) throw new Error("".concat(t, " required"));
}), e.endpoint) {
if ("string" != typeof e.endpoint) throw new Error("endpoint must be string");
if (!/^https:\/\//.test(e.endpoint)) throw new Error("endpoint must start with https://");
e.endpoint = e.endpoint.replace(/\/$/, "");
}
this.config = Object.assign({}, e, {
endpoint: e.endpoint || "https://".concat(e.spaceId, ".api-hz.cloudbasefunction.cn"),
wsEndpoint: e.wsEndpoint || "wss://".concat(e.spaceId, ".api-hz.cloudbasefunction.cn")
}), this._websocket = new Lt(this.config);
}
(0, _createClass2.default)(Rt, [{
key: "callFunction",
value: function callFunction(e) {
return function (e, t) {
var n = e.name,
s = e.data,
_e$async = e.async,
r = _e$async === void 0 ? !1 : _e$async,
i = "POST",
o = {
"x-to-function-name": n
};
r && (o["x-function-invoke-type"] = "async");
var _Pt2 = Pt("/functions/invokeFunction", {
functionName: n,
data: s,
method: i,
headers: o,
signHeaderKeys: ["x-to-function-name"],
config: t
}),
a = _Pt2.url,
c = _Pt2.headers;
return Tt({
url: a,
data: s,
method: i,
headers: c
}).then(function (e) {
var t = 0;
if (r) {
var _n9 = e.data || {};
t = "200" === _n9.errCode ? 0 : _n9.errCode, e.data = _n9.data || {}, e.errMsg = _n9.errMsg;
}
if (0 !== t) throw new te({
code: t,
message: e.errMsg,
requestId: e.requestId
});
return {
errCode: t,
success: 0 === t,
requestId: e.requestId,
result: e.data
};
}).catch(function (e) {
throw new te({
code: e.errCode,
message: e.errMsg,
requestId: e.requestId
});
});
}(e, this.config);
}
}, {
key: "uploadFileToOSS",
value: function uploadFileToOSS(_ref22) {
var e = _ref22.url,
t = _ref22.filePath,
n = _ref22.fileType,
s = _ref22.formData,
r = _ref22.onUploadProgress;
return new Promise(function (i, o) {
var a = ne.uploadFile({
url: e,
filePath: t,
fileType: n,
formData: s,
name: "file",
success: function success(e) {
e && e.statusCode < 400 ? i(e) : o(new te({
code: "UPLOAD_FAILED",
message: "文件上传失败"
}));
},
fail: function fail(e) {
o(new te({
code: e.code || "UPLOAD_FAILED",
message: e.message || e.errMsg || "文件上传失败"
}));
}
});
"function" == typeof r && a && "function" == typeof a.onProgressUpdate && a.onProgressUpdate(function (e) {
r({
loaded: e.totalBytesSent,
total: e.totalBytesExpectedToSend
});
});
});
}
}, {
key: "uploadFile",
value: function () {
var _uploadFile2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee34(_ref23) {
var e, _ref23$cloudPath, t, _ref23$fileType, n, s, r, i, o, a, c;
return _regenerator.default.wrap(function _callee34$(_context34) {
while (1) {
switch (_context34.prev = _context34.next) {
case 0:
e = _ref23.filePath, _ref23$cloudPath = _ref23.cloudPath, t = _ref23$cloudPath === void 0 ? "" : _ref23$cloudPath, _ref23$fileType = _ref23.fileType, n = _ref23$fileType === void 0 ? "image" : _ref23$fileType, s = _ref23.onUploadProgress;
if (!("string" !== f(t))) {
_context34.next = 3;
break;
}
throw new te({
code: "INVALID_PARAM",
message: "cloudPath必须为字符串类型"
});
case 3:
if (t = t.trim()) {
_context34.next = 5;
break;
}
throw new te({
code: "INVALID_PARAM",
message: "cloudPath不可为空"
});
case 5:
if (!/:\/\//.test(t)) {
_context34.next = 7;
break;
}
throw new te({
code: "INVALID_PARAM",
message: "cloudPath不合法"
});
case 7:
_context34.next = 9;
return xt({
path: "/".concat(t.replace(/^\//, ""), "?post_url")
}, this.config);
case 9:
r = _context34.sent;
i = r.file_id;
o = r.upload_url;
a = r.form_data;
c = a && a.reduce(function (e, t) {
return e[t.key] = t.value, e;
}, {});
return _context34.abrupt("return", this.uploadFileToOSS({
url: o,
filePath: e,
fileType: n,
formData: c,
onUploadProgress: s
}).then(function () {
return {
fileID: i
};
}));
case 15:
case "end":
return _context34.stop();
}
}
}, _callee34, this);
}));
function uploadFile(_x31) {
return _uploadFile2.apply(this, arguments);
}
return uploadFile;
}()
}, {
key: "getTempFileURL",
value: function () {
var _getTempFileURL = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee35(_ref24) {
var _this14 = this;
var e;
return _regenerator.default.wrap(function _callee35$(_context35) {
while (1) {
switch (_context35.prev = _context35.next) {
case 0:
e = _ref24.fileList;
return _context35.abrupt("return", new Promise(function (t, n) {
(!e || e.length < 0) && n(new te({
errCode: "INVALID_PARAM",
errMsg: "fileList不能为空数组"
})), e.length > 50 && n(new te({
errCode: "INVALID_PARAM",
errMsg: "fileList数组长度不能超过50"
}));
var s = [];
var _iterator5 = _createForOfIteratorHelper(e),
_step5;
try {
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
var _t10 = _step5.value;
"string" !== f(_t10) && n(new te({
errCode: "INVALID_PARAM",
errMsg: "fileList的元素必须是非空的字符串"
}));
var _e17 = Ot.call(_this14, _t10);
s.push({
file_id: _e17,
expire: 600
});
}
} catch (err) {
_iterator5.e(err);
} finally {
_iterator5.f();
}
xt({
path: "/?download_url",
data: {
file_list: s
},
method: "POST"
}, _this14.config).then(function (e) {
var _e$file_list = e.file_list,
n = _e$file_list === void 0 ? [] : _e$file_list;
t({
fileList: n.map(function (e) {
return {
fileID: Et.call(_this14, e.file_id),
tempFileURL: e.download_url
};
})
});
}).catch(function (e) {
return n(e);
});
}));
case 2:
case "end":
return _context35.stop();
}
}
}, _callee35);
}));
function getTempFileURL(_x32) {
return _getTempFileURL.apply(this, arguments);
}
return getTempFileURL;
}()
}, {
key: "connectWebSocket",
value: function () {
var _connectWebSocket = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee36(e) {
var t, n;
return _regenerator.default.wrap(function _callee36$(_context36) {
while (1) {
switch (_context36.prev = _context36.next) {
case 0:
t = e.name, n = e.query;
return _context36.abrupt("return", ne.connectSocket({
url: this._websocket.signedURL(t, n),
complete: function complete() {}
}));
case 2:
case "end":
return _context36.stop();
}
}
}, _callee36, this);
}));
function connectWebSocket(_x33) {
return _connectWebSocket.apply(this, arguments);
}
return connectWebSocket;
}()
}]);
return Rt;
}();
var Ut = {
init: function init(e) {
e.provider = "alipay";
var t = new Rt(e);
return t.auth = function () {
return {
signInAnonymously: function signInAnonymously() {
return Promise.resolve();
},
getLoginState: function getLoginState() {
return Promise.resolve(!0);
}
};
}, t;
}
};
function Nt(_ref25) {
var e = _ref25.data;
var t;
t = he();
var n = JSON.parse(JSON.stringify(e || {}));
if (Object.assign(n, {
clientInfo: t
}), !n.uniIdToken) {
var _se2 = se(),
_e18 = _se2.token;
_e18 && (n.uniIdToken = _e18);
}
return n;
}
function Dt() {
return _Dt.apply(this, arguments);
}
function _Dt() {
_Dt = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee57() {
var _this27 = this;
var _ref67,
e,
t,
_this$__dev__,
n,
s,
r,
i,
o,
a,
_args6 = arguments;
return _regenerator.default.wrap(function _callee57$(_context57) {
while (1) {
switch (_context57.prev = _context57.next) {
case 0:
_ref67 = _args6.length > 0 && _args6[0] !== undefined ? _args6[0] : {}, e = _ref67.name, t = _ref67.data;
_context57.next = 3;
return this.__dev__.initLocalNetwork();
case 3:
_this$__dev__ = this.__dev__, n = _this$__dev__.localAddress, s = _this$__dev__.localPort, r = {
aliyun: "aliyun",
tencent: "tcb",
alipay: "alipay"
}[this.config.provider], i = this.config.spaceId, o = "http://".concat(n, ":").concat(s, "/system/check-function"), a = "http://".concat(n, ":").concat(s, "/cloudfunctions/").concat(e);
return _context57.abrupt("return", new Promise(function (t, n) {
ne.request({
method: "POST",
url: o,
data: {
name: e,
platform: C,
provider: r,
spaceId: i
},
timeout: 3e3,
success: function success(e) {
t(e);
},
fail: function fail() {
t({
data: {
code: "NETWORK_ERROR",
message: "连接本地调试服务失败,请检查客户端是否和主机在同一局域网下,自动切换为已部署的云函数。"
}
});
}
});
}).then(function () {
var _ref68 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
e = _ref68.data;
var _ref69 = e || {},
t = _ref69.code,
n = _ref69.message;
return {
code: 0 === t ? 0 : t || "SYS_ERR",
message: n || "SYS_ERR"
};
}).then(function (_ref70) {
var n = _ref70.code,
s = _ref70.message;
if (0 !== n) {
switch (n) {
case "MODULE_ENCRYPTED":
console.error("\u6B64\u4E91\u51FD\u6570\uFF08".concat(e, "\uFF09\u4F9D\u8D56\u52A0\u5BC6\u516C\u5171\u6A21\u5757\u4E0D\u53EF\u672C\u5730\u8C03\u8BD5\uFF0C\u81EA\u52A8\u5207\u6362\u4E3A\u4E91\u7AEF\u5DF2\u90E8\u7F72\u7684\u4E91\u51FD\u6570"));
break;
case "FUNCTION_ENCRYPTED":
console.error("\u6B64\u4E91\u51FD\u6570\uFF08".concat(e, "\uFF09\u5DF2\u52A0\u5BC6\u4E0D\u53EF\u672C\u5730\u8C03\u8BD5\uFF0C\u81EA\u52A8\u5207\u6362\u4E3A\u4E91\u7AEF\u5DF2\u90E8\u7F72\u7684\u4E91\u51FD\u6570"));
break;
case "ACTION_ENCRYPTED":
console.error(s || "需要访问加密的uni-clientDB-action自动切换为云端环境");
break;
case "NETWORK_ERROR":
console.error(s || "连接本地调试服务失败,请检查客户端是否和主机在同一局域网下");
break;
case "SWITCH_TO_CLOUD":
break;
default:
{
var _e30 = "\u68C0\u6D4B\u672C\u5730\u8C03\u8BD5\u670D\u52A1\u51FA\u73B0\u9519\u8BEF\uFF1A".concat(s, "\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u73AF\u5883\u6216\u91CD\u542F\u5BA2\u6237\u7AEF\u518D\u8BD5");
throw console.error(_e30), new Error(_e30);
}
}
return _this27._callCloudFunction({
name: e,
data: t
});
}
return new Promise(function (e, n) {
var s = Nt.call(_this27, {
data: t
});
ne.request({
method: "POST",
url: a,
data: {
provider: r,
platform: C,
param: s
},
success: function success() {
var _ref71 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
t = _ref71.statusCode,
s = _ref71.data;
return !t || t >= 400 ? n(new te({
code: s.code || "SYS_ERR",
message: s.message || "request:fail"
})) : e({
result: s
});
},
fail: function fail(e) {
n(new te({
code: e.code || e.errCode || "SYS_ERR",
message: e.message || e.errMsg || "request:fail"
}));
}
});
});
}));
case 5:
case "end":
return _context57.stop();
}
}
}, _callee57, this);
}));
return _Dt.apply(this, arguments);
}
var Mt = [{
rule: /fc_function_not_found|FUNCTION_NOT_FOUND/,
content: ",云函数[{functionName}]在云端不存在,请检查此云函数名称是否正确以及该云函数是否已上传到服务空间",
mode: "append"
}];
var qt = /[\\^$.*+?()[\]{}|]/g,
Ft = RegExp(qt.source);
function Kt(e, t, n) {
return e.replace(new RegExp((s = t) && Ft.test(s) ? s.replace(qt, "\\$&") : s, "g"), n);
var s;
}
var jt = "none",
$t = "request",
Bt = "response",
Wt = "both";
var Ht = /*#__PURE__*/function () {
function Ht() {
var _ref26 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
e = _ref26.secretType,
t = _ref26.uniCloudIns;
(0, _classCallCheck2.default)(this, Ht);
this.clientType = "", this.secretType = e || jt, this.uniCloudIns = t;
var _this$uniCloudIns$con = this.uniCloudIns.config,
n = _this$uniCloudIns$con.provider,
s = _this$uniCloudIns$con.spaceId;
var r;
this.provider = n, this.spaceId = s, this.scopedGlobalCache = (r = this.uniCloudIns, L("_globalUniCloudSecureNetworkCache__{spaceId}".replace("{spaceId}", r.config.spaceId)));
}
(0, _createClass2.default)(Ht, [{
key: "getSystemInfo",
value: function getSystemInfo() {
return this._systemInfo || (this._systemInfo = ae()), this._systemInfo;
}
}, {
key: "appId",
get: function get() {
return this.getSystemInfo().appId;
}
}, {
key: "deviceId",
get: function get() {
return this.getSystemInfo().deviceId;
}
}, {
key: "encryptData",
value: function () {
var _encryptData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee37(e) {
return _regenerator.default.wrap(function _callee37$(_context37) {
while (1) {
switch (_context37.prev = _context37.next) {
case 0:
return _context37.abrupt("return", this.secretType === jt ? e : this.platformEncryptData(e));
case 1:
case "end":
return _context37.stop();
}
}
}, _callee37, this);
}));
function encryptData(_x34) {
return _encryptData.apply(this, arguments);
}
return encryptData;
}()
}, {
key: "decryptResult",
value: function () {
var _decryptResult = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee38(e) {
var _ref27, t, n;
return _regenerator.default.wrap(function _callee38$(_context38) {
while (1) {
switch (_context38.prev = _context38.next) {
case 0:
if (!(this.secretType === jt)) {
_context38.next = 2;
break;
}
return _context38.abrupt("return", e);
case 2:
_ref27 = e || {}, t = _ref27.errCode, n = _ref27.content;
return _context38.abrupt("return", t || !n ? e : this.secretType === $t ? n : this.platformDecryptResult(e));
case 4:
case "end":
return _context38.stop();
}
}
}, _callee38, this);
}));
function decryptResult(_x35) {
return _decryptResult.apply(this, arguments);
}
return decryptResult;
}()
}, {
key: "wrapVerifyClientCallFunction",
value: function wrapVerifyClientCallFunction(e) {
var t = this;
return /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39() {
var _ref29,
n,
_ref29$data,
s,
r,
_args39 = arguments;
return _regenerator.default.wrap(function _callee39$(_context39) {
while (1) {
switch (_context39.prev = _context39.next) {
case 0:
_ref29 = _args39.length > 0 && _args39[0] !== undefined ? _args39[0] : {}, n = _ref29.name, _ref29$data = _ref29.data, s = _ref29$data === void 0 ? {} : _ref29$data;
_context39.next = 3;
return t.prepare();
case 3:
_context39.next = 5;
return t.platformGetSignOption();
case 5:
(s = JSON.parse(JSON.stringify(s)))._uniCloudOptions = _context39.sent;
_context39.next = 8;
return e({
name: n,
data: s
});
case 8:
r = _context39.sent;
_context39.t0 = t.isClientKeyNotFound(r);
if (!_context39.t0) {
_context39.next = 19;
break;
}
_context39.next = 13;
return t.prepare({
forceUpdate: !0
});
case 13:
_context39.next = 15;
return t.platformGetSignOption();
case 15:
s._uniCloudOptions = _context39.sent;
_context39.next = 18;
return e({
name: n,
data: s
});
case 18:
r = _context39.sent;
case 19:
return _context39.abrupt("return", r);
case 20:
case "end":
return _context39.stop();
}
}
}, _callee39);
}));
}
}, {
key: "wrapEncryptDataCallFunction",
value: function wrapEncryptDataCallFunction(e) {
var t = this;
return /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee40() {
var _ref31,
n,
_ref31$data,
s,
r,
i,
_r5,
_args40 = arguments;
return _regenerator.default.wrap(function _callee40$(_context40) {
while (1) {
switch (_context40.prev = _context40.next) {
case 0:
_ref31 = _args40.length > 0 && _args40[0] !== undefined ? _args40[0] : {}, n = _ref31.name, _ref31$data = _ref31.data, s = _ref31$data === void 0 ? {} : _ref31$data;
_context40.next = 3;
return t.prepare();
case 3:
_context40.next = 5;
return t.encryptData(s);
case 5:
r = _context40.sent;
_context40.next = 8;
return e({
name: n,
data: r
});
case 8:
i = _context40.sent;
if (!t.isClientKeyNotFound(i)) {
_context40.next = 21;
break;
}
_context40.next = 12;
return t.prepare({
forceUpdate: !0
});
case 12:
_context40.next = 14;
return t.encryptData(s);
case 14:
_r5 = _context40.sent;
_context40.next = 17;
return t.platformGetSignOption();
case 17:
s._uniCloudOptions = _context40.sent;
_context40.next = 20;
return e({
name: n,
data: _r5
});
case 20:
i = _context40.sent;
case 21:
_context40.next = 23;
return t.decryptResult(i.result);
case 23:
i.result = _context40.sent;
return _context40.abrupt("return", i);
case 25:
case "end":
return _context40.stop();
}
}
}, _callee40);
}));
}
}]);
return Ht;
}();
/*! MIT License. Copyright 2015-2018 Richard Moore <me@ricmoo.com>. See LICENSE.txt. */
function zt(e) {
return parseInt(e) === e;
}
function Jt(e) {
if (!zt(e.length)) return !1;
for (var t = 0; t < e.length; t++) {
if (!zt(e[t]) || e[t] < 0 || e[t] > 255) return !1;
}
return !0;
}
function Vt(e, t) {
if (e.buffer && "Uint8Array" === e.name) return t && (e = e.slice ? e.slice() : Array.prototype.slice.call(e)), e;
if (Array.isArray(e)) {
if (!Jt(e)) throw new Error("Array contains invalid value: " + e);
return new Uint8Array(e);
}
if (zt(e.length) && Jt(e)) return new Uint8Array(e);
throw new Error("unsupported array-like object");
}
function Gt(e) {
return new Uint8Array(e);
}
function Yt(e, t, n, s, r) {
null == s && null == r || (e = e.slice ? e.slice(s, r) : Array.prototype.slice.call(e, s, r)), t.set(e, n);
}
var Qt,
Xt = {
toBytes: function toBytes(e) {
var t = [],
n = 0;
for (e = encodeURI(e); n < e.length;) {
var s = e.charCodeAt(n++);
37 === s ? (t.push(parseInt(e.substr(n, 2), 16)), n += 2) : t.push(s);
}
return Vt(t);
},
fromBytes: function fromBytes(e) {
for (var t = [], n = 0; n < e.length;) {
var s = e[n];
s < 128 ? (t.push(String.fromCharCode(s)), n++) : s > 191 && s < 224 ? (t.push(String.fromCharCode((31 & s) << 6 | 63 & e[n + 1])), n += 2) : (t.push(String.fromCharCode((15 & s) << 12 | (63 & e[n + 1]) << 6 | 63 & e[n + 2])), n += 3);
}
return t.join("");
}
},
Zt = (Qt = "0123456789abcdef", {
toBytes: function toBytes(e) {
for (var t = [], n = 0; n < e.length; n += 2) {
t.push(parseInt(e.substr(n, 2), 16));
}
return t;
},
fromBytes: function fromBytes(e) {
for (var t = [], n = 0; n < e.length; n++) {
var s = e[n];
t.push(Qt[(240 & s) >> 4] + Qt[15 & s]);
}
return t.join("");
}
}),
en = {
16: 10,
24: 12,
32: 14
},
tn = [1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145],
nn = [99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22],
sn = [82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125],
rn = [3328402341, 4168907908, 4000806809, 4135287693, 4294111757, 3597364157, 3731845041, 2445657428, 1613770832, 33620227, 3462883241, 1445669757, 3892248089, 3050821474, 1303096294, 3967186586, 2412431941, 528646813, 2311702848, 4202528135, 4026202645, 2992200171, 2387036105, 4226871307, 1101901292, 3017069671, 1604494077, 1169141738, 597466303, 1403299063, 3832705686, 2613100635, 1974974402, 3791519004, 1033081774, 1277568618, 1815492186, 2118074177, 4126668546, 2211236943, 1748251740, 1369810420, 3521504564, 4193382664, 3799085459, 2883115123, 1647391059, 706024767, 134480908, 2512897874, 1176707941, 2646852446, 806885416, 932615841, 168101135, 798661301, 235341577, 605164086, 461406363, 3756188221, 3454790438, 1311188841, 2142417613, 3933566367, 302582043, 495158174, 1479289972, 874125870, 907746093, 3698224818, 3025820398, 1537253627, 2756858614, 1983593293, 3084310113, 2108928974, 1378429307, 3722699582, 1580150641, 327451799, 2790478837, 3117535592, 0, 3253595436, 1075847264, 3825007647, 2041688520, 3059440621, 3563743934, 2378943302, 1740553945, 1916352843, 2487896798, 2555137236, 2958579944, 2244988746, 3151024235, 3320835882, 1336584933, 3992714006, 2252555205, 2588757463, 1714631509, 293963156, 2319795663, 3925473552, 67240454, 4269768577, 2689618160, 2017213508, 631218106, 1269344483, 2723238387, 1571005438, 2151694528, 93294474, 1066570413, 563977660, 1882732616, 4059428100, 1673313503, 2008463041, 2950355573, 1109467491, 537923632, 3858759450, 4260623118, 3218264685, 2177748300, 403442708, 638784309, 3287084079, 3193921505, 899127202, 2286175436, 773265209, 2479146071, 1437050866, 4236148354, 2050833735, 3362022572, 3126681063, 840505643, 3866325909, 3227541664, 427917720, 2655997905, 2749160575, 1143087718, 1412049534, 999329963, 193497219, 2353415882, 3354324521, 1807268051, 672404540, 2816401017, 3160301282, 369822493, 2916866934, 3688947771, 1681011286, 1949973070, 336202270, 2454276571, 201721354, 1210328172, 3093060836, 2680341085, 3184776046, 1135389935, 3294782118, 965841320, 831886756, 3554993207, 4068047243, 3588745010, 2345191491, 1849112409, 3664604599, 26054028, 2983581028, 2622377682, 1235855840, 3630984372, 2891339514, 4092916743, 3488279077, 3395642799, 4101667470, 1202630377, 268961816, 1874508501, 4034427016, 1243948399, 1546530418, 941366308, 1470539505, 1941222599, 2546386513, 3421038627, 2715671932, 3899946140, 1042226977, 2521517021, 1639824860, 227249030, 260737669, 3765465232, 2084453954, 1907733956, 3429263018, 2420656344, 100860677, 4160157185, 470683154, 3261161891, 1781871967, 2924959737, 1773779408, 394692241, 2579611992, 974986535, 664706745, 3655459128, 3958962195, 731420851, 571543859, 3530123707, 2849626480, 126783113, 865375399, 765172662, 1008606754, 361203602, 3387549984, 2278477385, 2857719295, 1344809080, 2782912378, 59542671, 1503764984, 160008576, 437062935, 1707065306, 3622233649, 2218934982, 3496503480, 2185314755, 697932208, 1512910199, 504303377, 2075177163, 2824099068, 1841019862, 739644986],
on = [2781242211, 2230877308, 2582542199, 2381740923, 234877682, 3184946027, 2984144751, 1418839493, 1348481072, 50462977, 2848876391, 2102799147, 434634494, 1656084439, 3863849899, 2599188086, 1167051466, 2636087938, 1082771913, 2281340285, 368048890, 3954334041, 3381544775, 201060592, 3963727277, 1739838676, 4250903202, 3930435503, 3206782108, 4149453988, 2531553906, 1536934080, 3262494647, 484572669, 2923271059, 1783375398, 1517041206, 1098792767, 49674231, 1334037708, 1550332980, 4098991525, 886171109, 150598129, 2481090929, 1940642008, 1398944049, 1059722517, 201851908, 1385547719, 1699095331, 1587397571, 674240536, 2704774806, 252314885, 3039795866, 151914247, 908333586, 2602270848, 1038082786, 651029483, 1766729511, 3447698098, 2682942837, 454166793, 2652734339, 1951935532, 775166490, 758520603, 3000790638, 4004797018, 4217086112, 4137964114, 1299594043, 1639438038, 3464344499, 2068982057, 1054729187, 1901997871, 2534638724, 4121318227, 1757008337, 0, 750906861, 1614815264, 535035132, 3363418545, 3988151131, 3201591914, 1183697867, 3647454910, 1265776953, 3734260298, 3566750796, 3903871064, 1250283471, 1807470800, 717615087, 3847203498, 384695291, 3313910595, 3617213773, 1432761139, 2484176261, 3481945413, 283769337, 100925954, 2180939647, 4037038160, 1148730428, 3123027871, 3813386408, 4087501137, 4267549603, 3229630528, 2315620239, 2906624658, 3156319645, 1215313976, 82966005, 3747855548, 3245848246, 1974459098, 1665278241, 807407632, 451280895, 251524083, 1841287890, 1283575245, 337120268, 891687699, 801369324, 3787349855, 2721421207, 3431482436, 959321879, 1469301956, 4065699751, 2197585534, 1199193405, 2898814052, 3887750493, 724703513, 2514908019, 2696962144, 2551808385, 3516813135, 2141445340, 1715741218, 2119445034, 2872807568, 2198571144, 3398190662, 700968686, 3547052216, 1009259540, 2041044702, 3803995742, 487983883, 1991105499, 1004265696, 1449407026, 1316239930, 504629770, 3683797321, 168560134, 1816667172, 3837287516, 1570751170, 1857934291, 4014189740, 2797888098, 2822345105, 2754712981, 936633572, 2347923833, 852879335, 1133234376, 1500395319, 3084545389, 2348912013, 1689376213, 3533459022, 3762923945, 3034082412, 4205598294, 133428468, 634383082, 2949277029, 2398386810, 3913789102, 403703816, 3580869306, 2297460856, 1867130149, 1918643758, 607656988, 4049053350, 3346248884, 1368901318, 600565992, 2090982877, 2632479860, 557719327, 3717614411, 3697393085, 2249034635, 2232388234, 2430627952, 1115438654, 3295786421, 2865522278, 3633334344, 84280067, 33027830, 303828494, 2747425121, 1600795957, 4188952407, 3496589753, 2434238086, 1486471617, 658119965, 3106381470, 953803233, 334231800, 3005978776, 857870609, 3151128937, 1890179545, 2298973838, 2805175444, 3056442267, 574365214, 2450884487, 550103529, 1233637070, 4289353045, 2018519080, 2057691103, 2399374476, 4166623649, 2148108681, 387583245, 3664101311, 836232934, 3330556482, 3100665960, 3280093505, 2955516313, 2002398509, 287182607, 3413881008, 4238890068, 3597515707, 975967766],
an = [1671808611, 2089089148, 2006576759, 2072901243, 4061003762, 1807603307, 1873927791, 3310653893, 810573872, 16974337, 1739181671, 729634347, 4263110654, 3613570519, 2883997099, 1989864566, 3393556426, 2191335298, 3376449993, 2106063485, 4195741690, 1508618841, 1204391495, 4027317232, 2917941677, 3563566036, 2734514082, 2951366063, 2629772188, 2767672228, 1922491506, 3227229120, 3082974647, 4246528509, 2477669779, 644500518, 911895606, 1061256767, 4144166391, 3427763148, 878471220, 2784252325, 3845444069, 4043897329, 1905517169, 3631459288, 827548209, 356461077, 67897348, 3344078279, 593839651, 3277757891, 405286936, 2527147926, 84871685, 2595565466, 118033927, 305538066, 2157648768, 3795705826, 3945188843, 661212711, 2999812018, 1973414517, 152769033, 2208177539, 745822252, 439235610, 455947803, 1857215598, 1525593178, 2700827552, 1391895634, 994932283, 3596728278, 3016654259, 695947817, 3812548067, 795958831, 2224493444, 1408607827, 3513301457, 0, 3979133421, 543178784, 4229948412, 2982705585, 1542305371, 1790891114, 3410398667, 3201918910, 961245753, 1256100938, 1289001036, 1491644504, 3477767631, 3496721360, 4012557807, 2867154858, 4212583931, 1137018435, 1305975373, 861234739, 2241073541, 1171229253, 4178635257, 33948674, 2139225727, 1357946960, 1011120188, 2679776671, 2833468328, 1374921297, 2751356323, 1086357568, 2408187279, 2460827538, 2646352285, 944271416, 4110742005, 3168756668, 3066132406, 3665145818, 560153121, 271589392, 4279952895, 4077846003, 3530407890, 3444343245, 202643468, 322250259, 3962553324, 1608629855, 2543990167, 1154254916, 389623319, 3294073796, 2817676711, 2122513534, 1028094525, 1689045092, 1575467613, 422261273, 1939203699, 1621147744, 2174228865, 1339137615, 3699352540, 577127458, 712922154, 2427141008, 2290289544, 1187679302, 3995715566, 3100863416, 339486740, 3732514782, 1591917662, 186455563, 3681988059, 3762019296, 844522546, 978220090, 169743370, 1239126601, 101321734, 611076132, 1558493276, 3260915650, 3547250131, 2901361580, 1655096418, 2443721105, 2510565781, 3828863972, 2039214713, 3878868455, 3359869896, 928607799, 1840765549, 2374762893, 3580146133, 1322425422, 2850048425, 1823791212, 1459268694, 4094161908, 3928346602, 1706019429, 2056189050, 2934523822, 135794696, 3134549946, 2022240376, 628050469, 779246638, 472135708, 2800834470, 3032970164, 3327236038, 3894660072, 3715932637, 1956440180, 522272287, 1272813131, 3185336765, 2340818315, 2323976074, 1888542832, 1044544574, 3049550261, 1722469478, 1222152264, 50660867, 4127324150, 236067854, 1638122081, 895445557, 1475980887, 3117443513, 2257655686, 3243809217, 489110045, 2662934430, 3778599393, 4162055160, 2561878936, 288563729, 1773916777, 3648039385, 2391345038, 2493985684, 2612407707, 505560094, 2274497927, 3911240169, 3460925390, 1442818645, 678973480, 3749357023, 2358182796, 2717407649, 2306869641, 219617805, 3218761151, 3862026214, 1120306242, 1756942440, 1103331905, 2578459033, 762796589, 252780047, 2966125488, 1425844308, 3151392187, 372911126],
cn = [1667474886, 2088535288, 2004326894, 2071694838, 4075949567, 1802223062, 1869591006, 3318043793, 808472672, 16843522, 1734846926, 724270422, 4278065639, 3621216949, 2880169549, 1987484396, 3402253711, 2189597983, 3385409673, 2105378810, 4210693615, 1499065266, 1195886990, 4042263547, 2913856577, 3570689971, 2728590687, 2947541573, 2627518243, 2762274643, 1920112356, 3233831835, 3082273397, 4261223649, 2475929149, 640051788, 909531756, 1061110142, 4160160501, 3435941763, 875846760, 2779116625, 3857003729, 4059105529, 1903268834, 3638064043, 825316194, 353713962, 67374088, 3351728789, 589522246, 3284360861, 404236336, 2526454071, 84217610, 2593830191, 117901582, 303183396, 2155911963, 3806477791, 3958056653, 656894286, 2998062463, 1970642922, 151591698, 2206440989, 741110872, 437923380, 454765878, 1852748508, 1515908788, 2694904667, 1381168804, 993742198, 3604373943, 3014905469, 690584402, 3823320797, 791638366, 2223281939, 1398011302, 3520161977, 0, 3991743681, 538992704, 4244381667, 2981218425, 1532751286, 1785380564, 3419096717, 3200178535, 960056178, 1246420628, 1280103576, 1482221744, 3486468741, 3503319995, 4025428677, 2863326543, 4227536621, 1128514950, 1296947098, 859002214, 2240123921, 1162203018, 4193849577, 33687044, 2139062782, 1347481760, 1010582648, 2678045221, 2829640523, 1364325282, 2745433693, 1077985408, 2408548869, 2459086143, 2644360225, 943212656, 4126475505, 3166494563, 3065430391, 3671750063, 555836226, 269496352, 4294908645, 4092792573, 3537006015, 3452783745, 202118168, 320025894, 3974901699, 1600119230, 2543297077, 1145359496, 387397934, 3301201811, 2812801621, 2122220284, 1027426170, 1684319432, 1566435258, 421079858, 1936954854, 1616945344, 2172753945, 1330631070, 3705438115, 572679748, 707427924, 2425400123, 2290647819, 1179044492, 4008585671, 3099120491, 336870440, 3739122087, 1583276732, 185277718, 3688593069, 3772791771, 842159716, 976899700, 168435220, 1229577106, 101059084, 606366792, 1549591736, 3267517855, 3553849021, 2897014595, 1650632388, 2442242105, 2509612081, 3840161747, 2038008818, 3890688725, 3368567691, 926374254, 1835907034, 2374863873, 3587531953, 1313788572, 2846482505, 1819063512, 1448540844, 4109633523, 3941213647, 1701162954, 2054852340, 2930698567, 134748176, 3132806511, 2021165296, 623210314, 774795868, 471606328, 2795958615, 3031746419, 3334885783, 3907527627, 3722280097, 1953799400, 522133822, 1263263126, 3183336545, 2341176845, 2324333839, 1886425312, 1044267644, 3048588401, 1718004428, 1212733584, 50529542, 4143317495, 235803164, 1633788866, 892690282, 1465383342, 3115962473, 2256965911, 3250673817, 488449850, 2661202215, 3789633753, 4177007595, 2560144171, 286339874, 1768537042, 3654906025, 2391705863, 2492770099, 2610673197, 505291324, 2273808917, 3924369609, 3469625735, 1431699370, 673740880, 3755965093, 2358021891, 2711746649, 2307489801, 218961690, 3217021541, 3873845719, 1111672452, 1751693520, 1094828930, 2576986153, 757954394, 252645662, 2964376443, 1414855848, 3149649517, 370555436],
un = [1374988112, 2118214995, 437757123, 975658646, 1001089995, 530400753, 2902087851, 1273168787, 540080725, 2910219766, 2295101073, 4110568485, 1340463100, 3307916247, 641025152, 3043140495, 3736164937, 632953703, 1172967064, 1576976609, 3274667266, 2169303058, 2370213795, 1809054150, 59727847, 361929877, 3211623147, 2505202138, 3569255213, 1484005843, 1239443753, 2395588676, 1975683434, 4102977912, 2572697195, 666464733, 3202437046, 4035489047, 3374361702, 2110667444, 1675577880, 3843699074, 2538681184, 1649639237, 2976151520, 3144396420, 4269907996, 4178062228, 1883793496, 2403728665, 2497604743, 1383856311, 2876494627, 1917518562, 3810496343, 1716890410, 3001755655, 800440835, 2261089178, 3543599269, 807962610, 599762354, 33778362, 3977675356, 2328828971, 2809771154, 4077384432, 1315562145, 1708848333, 101039829, 3509871135, 3299278474, 875451293, 2733856160, 92987698, 2767645557, 193195065, 1080094634, 1584504582, 3178106961, 1042385657, 2531067453, 3711829422, 1306967366, 2438237621, 1908694277, 67556463, 1615861247, 429456164, 3602770327, 2302690252, 1742315127, 2968011453, 126454664, 3877198648, 2043211483, 2709260871, 2084704233, 4169408201, 0, 159417987, 841739592, 504459436, 1817866830, 4245618683, 260388950, 1034867998, 908933415, 168810852, 1750902305, 2606453969, 607530554, 202008497, 2472011535, 3035535058, 463180190, 2160117071, 1641816226, 1517767529, 470948374, 3801332234, 3231722213, 1008918595, 303765277, 235474187, 4069246893, 766945465, 337553864, 1475418501, 2943682380, 4003061179, 2743034109, 4144047775, 1551037884, 1147550661, 1543208500, 2336434550, 3408119516, 3069049960, 3102011747, 3610369226, 1113818384, 328671808, 2227573024, 2236228733, 3535486456, 2935566865, 3341394285, 496906059, 3702665459, 226906860, 2009195472, 733156972, 2842737049, 294930682, 1206477858, 2835123396, 2700099354, 1451044056, 573804783, 2269728455, 3644379585, 2362090238, 2564033334, 2801107407, 2776292904, 3669462566, 1068351396, 742039012, 1350078989, 1784663195, 1417561698, 4136440770, 2430122216, 775550814, 2193862645, 2673705150, 1775276924, 1876241833, 3475313331, 3366754619, 270040487, 3902563182, 3678124923, 3441850377, 1851332852, 3969562369, 2203032232, 3868552805, 2868897406, 566021896, 4011190502, 3135740889, 1248802510, 3936291284, 699432150, 832877231, 708780849, 3332740144, 899835584, 1951317047, 4236429990, 3767586992, 866637845, 4043610186, 1106041591, 2144161806, 395441711, 1984812685, 1139781709, 3433712980, 3835036895, 2664543715, 1282050075, 3240894392, 1181045119, 2640243204, 25965917, 4203181171, 4211818798, 3009879386, 2463879762, 3910161971, 1842759443, 2597806476, 933301370, 1509430414, 3943906441, 3467192302, 3076639029, 3776767469, 2051518780, 2631065433, 1441952575, 404016761, 1942435775, 1408749034, 1610459739, 3745345300, 2017778566, 3400528769, 3110650942, 941896748, 3265478751, 371049330, 3168937228, 675039627, 4279080257, 967311729, 135050206, 3635733660, 1683407248, 2076935265, 3576870512, 1215061108, 3501741890],
hn = [1347548327, 1400783205, 3273267108, 2520393566, 3409685355, 4045380933, 2880240216, 2471224067, 1428173050, 4138563181, 2441661558, 636813900, 4233094615, 3620022987, 2149987652, 2411029155, 1239331162, 1730525723, 2554718734, 3781033664, 46346101, 310463728, 2743944855, 3328955385, 3875770207, 2501218972, 3955191162, 3667219033, 768917123, 3545789473, 692707433, 1150208456, 1786102409, 2029293177, 1805211710, 3710368113, 3065962831, 401639597, 1724457132, 3028143674, 409198410, 2196052529, 1620529459, 1164071807, 3769721975, 2226875310, 486441376, 2499348523, 1483753576, 428819965, 2274680428, 3075636216, 598438867, 3799141122, 1474502543, 711349675, 129166120, 53458370, 2592523643, 2782082824, 4063242375, 2988687269, 3120694122, 1559041666, 730517276, 2460449204, 4042459122, 2706270690, 3446004468, 3573941694, 533804130, 2328143614, 2637442643, 2695033685, 839224033, 1973745387, 957055980, 2856345839, 106852767, 1371368976, 4181598602, 1033297158, 2933734917, 1179510461, 3046200461, 91341917, 1862534868, 4284502037, 605657339, 2547432937, 3431546947, 2003294622, 3182487618, 2282195339, 954669403, 3682191598, 1201765386, 3917234703, 3388507166, 0, 2198438022, 1211247597, 2887651696, 1315723890, 4227665663, 1443857720, 507358933, 657861945, 1678381017, 560487590, 3516619604, 975451694, 2970356327, 261314535, 3535072918, 2652609425, 1333838021, 2724322336, 1767536459, 370938394, 182621114, 3854606378, 1128014560, 487725847, 185469197, 2918353863, 3106780840, 3356761769, 2237133081, 1286567175, 3152976349, 4255350624, 2683765030, 3160175349, 3309594171, 878443390, 1988838185, 3704300486, 1756818940, 1673061617, 3403100636, 272786309, 1075025698, 545572369, 2105887268, 4174560061, 296679730, 1841768865, 1260232239, 4091327024, 3960309330, 3497509347, 1814803222, 2578018489, 4195456072, 575138148, 3299409036, 446754879, 3629546796, 4011996048, 3347532110, 3252238545, 4270639778, 915985419, 3483825537, 681933534, 651868046, 2755636671, 3828103837, 223377554, 2607439820, 1649704518, 3270937875, 3901806776, 1580087799, 4118987695, 3198115200, 2087309459, 2842678573, 3016697106, 1003007129, 2802849917, 1860738147, 2077965243, 164439672, 4100872472, 32283319, 2827177882, 1709610350, 2125135846, 136428751, 3874428392, 3652904859, 3460984630, 3572145929, 3593056380, 2939266226, 824852259, 818324884, 3224740454, 930369212, 2801566410, 2967507152, 355706840, 1257309336, 4148292826, 243256656, 790073846, 2373340630, 1296297904, 1422699085, 3756299780, 3818836405, 457992840, 3099667487, 2135319889, 77422314, 1560382517, 1945798516, 788204353, 1521706781, 1385356242, 870912086, 325965383, 2358957921, 2050466060, 2388260884, 2313884476, 4006521127, 901210569, 3990953189, 1014646705, 1503449823, 1062597235, 2031621326, 3212035895, 3931371469, 1533017514, 350174575, 2256028891, 2177544179, 1052338372, 741876788, 1606591296, 1914052035, 213705253, 2334669897, 1107234197, 1899603969, 3725069491, 2631447780, 2422494913, 1635502980, 1893020342, 1950903388, 1120974935],
ln = [2807058932, 1699970625, 2764249623, 1586903591, 1808481195, 1173430173, 1487645946, 59984867, 4199882800, 1844882806, 1989249228, 1277555970, 3623636965, 3419915562, 1149249077, 2744104290, 1514790577, 459744698, 244860394, 3235995134, 1963115311, 4027744588, 2544078150, 4190530515, 1608975247, 2627016082, 2062270317, 1507497298, 2200818878, 567498868, 1764313568, 3359936201, 2305455554, 2037970062, 1047239e3, 1910319033, 1337376481, 2904027272, 2892417312, 984907214, 1243112415, 830661914, 861968209, 2135253587, 2011214180, 2927934315, 2686254721, 731183368, 1750626376, 4246310725, 1820824798, 4172763771, 3542330227, 48394827, 2404901663, 2871682645, 671593195, 3254988725, 2073724613, 145085239, 2280796200, 2779915199, 1790575107, 2187128086, 472615631, 3029510009, 4075877127, 3802222185, 4107101658, 3201631749, 1646252340, 4270507174, 1402811438, 1436590835, 3778151818, 3950355702, 3963161475, 4020912224, 2667994737, 273792366, 2331590177, 104699613, 95345982, 3175501286, 2377486676, 1560637892, 3564045318, 369057872, 4213447064, 3919042237, 1137477952, 2658625497, 1119727848, 2340947849, 1530455833, 4007360968, 172466556, 266959938, 516552836, 0, 2256734592, 3980931627, 1890328081, 1917742170, 4294704398, 945164165, 3575528878, 958871085, 3647212047, 2787207260, 1423022939, 775562294, 1739656202, 3876557655, 2530391278, 2443058075, 3310321856, 547512796, 1265195639, 437656594, 3121275539, 719700128, 3762502690, 387781147, 218828297, 3350065803, 2830708150, 2848461854, 428169201, 122466165, 3720081049, 1627235199, 648017665, 4122762354, 1002783846, 2117360635, 695634755, 3336358691, 4234721005, 4049844452, 3704280881, 2232435299, 574624663, 287343814, 612205898, 1039717051, 840019705, 2708326185, 793451934, 821288114, 1391201670, 3822090177, 376187827, 3113855344, 1224348052, 1679968233, 2361698556, 1058709744, 752375421, 2431590963, 1321699145, 3519142200, 2734591178, 188127444, 2177869557, 3727205754, 2384911031, 3215212461, 2648976442, 2450346104, 3432737375, 1180849278, 331544205, 3102249176, 4150144569, 2952102595, 2159976285, 2474404304, 766078933, 313773861, 2570832044, 2108100632, 1668212892, 3145456443, 2013908262, 418672217, 3070356634, 2594734927, 1852171925, 3867060991, 3473416636, 3907448597, 2614737639, 919489135, 164948639, 2094410160, 2997825956, 590424639, 2486224549, 1723872674, 3157750862, 3399941250, 3501252752, 3625268135, 2555048196, 3673637356, 1343127501, 4130281361, 3599595085, 2957853679, 1297403050, 81781910, 3051593425, 2283490410, 532201772, 1367295589, 3926170974, 895287692, 1953757831, 1093597963, 492483431, 3528626907, 1446242576, 1192455638, 1636604631, 209336225, 344873464, 1015671571, 669961897, 3375740769, 3857572124, 2973530695, 3747192018, 1933530610, 3464042516, 935293895, 3454686199, 2858115069, 1863638845, 3683022916, 4085369519, 3292445032, 875313188, 1080017571, 3279033885, 621591778, 1233856572, 2504130317, 24197544, 3017672716, 3835484340, 3247465558, 2220981195, 3060847922, 1551124588, 1463996600],
dn = [4104605777, 1097159550, 396673818, 660510266, 2875968315, 2638606623, 4200115116, 3808662347, 821712160, 1986918061, 3430322568, 38544885, 3856137295, 718002117, 893681702, 1654886325, 2975484382, 3122358053, 3926825029, 4274053469, 796197571, 1290801793, 1184342925, 3556361835, 2405426947, 2459735317, 1836772287, 1381620373, 3196267988, 1948373848, 3764988233, 3385345166, 3263785589, 2390325492, 1480485785, 3111247143, 3780097726, 2293045232, 548169417, 3459953789, 3746175075, 439452389, 1362321559, 1400849762, 1685577905, 1806599355, 2174754046, 137073913, 1214797936, 1174215055, 3731654548, 2079897426, 1943217067, 1258480242, 529487843, 1437280870, 3945269170, 3049390895, 3313212038, 923313619, 679998e3, 3215307299, 57326082, 377642221, 3474729866, 2041877159, 133361907, 1776460110, 3673476453, 96392454, 878845905, 2801699524, 777231668, 4082475170, 2330014213, 4142626212, 2213296395, 1626319424, 1906247262, 1846563261, 562755902, 3708173718, 1040559837, 3871163981, 1418573201, 3294430577, 114585348, 1343618912, 2566595609, 3186202582, 1078185097, 3651041127, 3896688048, 2307622919, 425408743, 3371096953, 2081048481, 1108339068, 2216610296, 0, 2156299017, 736970802, 292596766, 1517440620, 251657213, 2235061775, 2933202493, 758720310, 265905162, 1554391400, 1532285339, 908999204, 174567692, 1474760595, 4002861748, 2610011675, 3234156416, 3693126241, 2001430874, 303699484, 2478443234, 2687165888, 585122620, 454499602, 151849742, 2345119218, 3064510765, 514443284, 4044981591, 1963412655, 2581445614, 2137062819, 19308535, 1928707164, 1715193156, 4219352155, 1126790795, 600235211, 3992742070, 3841024952, 836553431, 1669664834, 2535604243, 3323011204, 1243905413, 3141400786, 4180808110, 698445255, 2653899549, 2989552604, 2253581325, 3252932727, 3004591147, 1891211689, 2487810577, 3915653703, 4237083816, 4030667424, 2100090966, 865136418, 1229899655, 953270745, 3399679628, 3557504664, 4118925222, 2061379749, 3079546586, 2915017791, 983426092, 2022837584, 1607244650, 2118541908, 2366882550, 3635996816, 972512814, 3283088770, 1568718495, 3499326569, 3576539503, 621982671, 2895723464, 410887952, 2623762152, 1002142683, 645401037, 1494807662, 2595684844, 1335535747, 2507040230, 4293295786, 3167684641, 367585007, 3885750714, 1865862730, 2668221674, 2960971305, 2763173681, 1059270954, 2777952454, 2724642869, 1320957812, 2194319100, 2429595872, 2815956275, 77089521, 3973773121, 3444575871, 2448830231, 1305906550, 4021308739, 2857194700, 2516901860, 3518358430, 1787304780, 740276417, 1699839814, 1592394909, 2352307457, 2272556026, 188821243, 1729977011, 3687994002, 274084841, 3594982253, 3613494426, 2701949495, 4162096729, 322734571, 2837966542, 1640576439, 484830689, 1202797690, 3537852828, 4067639125, 349075736, 3342319475, 4157467219, 4255800159, 1030690015, 1155237496, 2951971274, 1757691577, 607398968, 2738905026, 499347990, 3794078908, 1011452712, 227885567, 2818666809, 213114376, 3034881240, 1455525988, 3414450555, 850817237, 1817998408, 3092726480],
pn = [0, 235474187, 470948374, 303765277, 941896748, 908933415, 607530554, 708780849, 1883793496, 2118214995, 1817866830, 1649639237, 1215061108, 1181045119, 1417561698, 1517767529, 3767586992, 4003061179, 4236429990, 4069246893, 3635733660, 3602770327, 3299278474, 3400528769, 2430122216, 2664543715, 2362090238, 2193862645, 2835123396, 2801107407, 3035535058, 3135740889, 3678124923, 3576870512, 3341394285, 3374361702, 3810496343, 3977675356, 4279080257, 4043610186, 2876494627, 2776292904, 3076639029, 3110650942, 2472011535, 2640243204, 2403728665, 2169303058, 1001089995, 899835584, 666464733, 699432150, 59727847, 226906860, 530400753, 294930682, 1273168787, 1172967064, 1475418501, 1509430414, 1942435775, 2110667444, 1876241833, 1641816226, 2910219766, 2743034109, 2976151520, 3211623147, 2505202138, 2606453969, 2302690252, 2269728455, 3711829422, 3543599269, 3240894392, 3475313331, 3843699074, 3943906441, 4178062228, 4144047775, 1306967366, 1139781709, 1374988112, 1610459739, 1975683434, 2076935265, 1775276924, 1742315127, 1034867998, 866637845, 566021896, 800440835, 92987698, 193195065, 429456164, 395441711, 1984812685, 2017778566, 1784663195, 1683407248, 1315562145, 1080094634, 1383856311, 1551037884, 101039829, 135050206, 437757123, 337553864, 1042385657, 807962610, 573804783, 742039012, 2531067453, 2564033334, 2328828971, 2227573024, 2935566865, 2700099354, 3001755655, 3168937228, 3868552805, 3902563182, 4203181171, 4102977912, 3736164937, 3501741890, 3265478751, 3433712980, 1106041591, 1340463100, 1576976609, 1408749034, 2043211483, 2009195472, 1708848333, 1809054150, 832877231, 1068351396, 766945465, 599762354, 159417987, 126454664, 361929877, 463180190, 2709260871, 2943682380, 3178106961, 3009879386, 2572697195, 2538681184, 2236228733, 2336434550, 3509871135, 3745345300, 3441850377, 3274667266, 3910161971, 3877198648, 4110568485, 4211818798, 2597806476, 2497604743, 2261089178, 2295101073, 2733856160, 2902087851, 3202437046, 2968011453, 3936291284, 3835036895, 4136440770, 4169408201, 3535486456, 3702665459, 3467192302, 3231722213, 2051518780, 1951317047, 1716890410, 1750902305, 1113818384, 1282050075, 1584504582, 1350078989, 168810852, 67556463, 371049330, 404016761, 841739592, 1008918595, 775550814, 540080725, 3969562369, 3801332234, 4035489047, 4269907996, 3569255213, 3669462566, 3366754619, 3332740144, 2631065433, 2463879762, 2160117071, 2395588676, 2767645557, 2868897406, 3102011747, 3069049960, 202008497, 33778362, 270040487, 504459436, 875451293, 975658646, 675039627, 641025152, 2084704233, 1917518562, 1615861247, 1851332852, 1147550661, 1248802510, 1484005843, 1451044056, 933301370, 967311729, 733156972, 632953703, 260388950, 25965917, 328671808, 496906059, 1206477858, 1239443753, 1543208500, 1441952575, 2144161806, 1908694277, 1675577880, 1842759443, 3610369226, 3644379585, 3408119516, 3307916247, 4011190502, 3776767469, 4077384432, 4245618683, 2809771154, 2842737049, 3144396420, 3043140495, 2673705150, 2438237621, 2203032232, 2370213795],
fn = [0, 185469197, 370938394, 487725847, 741876788, 657861945, 975451694, 824852259, 1483753576, 1400783205, 1315723890, 1164071807, 1950903388, 2135319889, 1649704518, 1767536459, 2967507152, 3152976349, 2801566410, 2918353863, 2631447780, 2547432937, 2328143614, 2177544179, 3901806776, 3818836405, 4270639778, 4118987695, 3299409036, 3483825537, 3535072918, 3652904859, 2077965243, 1893020342, 1841768865, 1724457132, 1474502543, 1559041666, 1107234197, 1257309336, 598438867, 681933534, 901210569, 1052338372, 261314535, 77422314, 428819965, 310463728, 3409685355, 3224740454, 3710368113, 3593056380, 3875770207, 3960309330, 4045380933, 4195456072, 2471224067, 2554718734, 2237133081, 2388260884, 3212035895, 3028143674, 2842678573, 2724322336, 4138563181, 4255350624, 3769721975, 3955191162, 3667219033, 3516619604, 3431546947, 3347532110, 2933734917, 2782082824, 3099667487, 3016697106, 2196052529, 2313884476, 2499348523, 2683765030, 1179510461, 1296297904, 1347548327, 1533017514, 1786102409, 1635502980, 2087309459, 2003294622, 507358933, 355706840, 136428751, 53458370, 839224033, 957055980, 605657339, 790073846, 2373340630, 2256028891, 2607439820, 2422494913, 2706270690, 2856345839, 3075636216, 3160175349, 3573941694, 3725069491, 3273267108, 3356761769, 4181598602, 4063242375, 4011996048, 3828103837, 1033297158, 915985419, 730517276, 545572369, 296679730, 446754879, 129166120, 213705253, 1709610350, 1860738147, 1945798516, 2029293177, 1239331162, 1120974935, 1606591296, 1422699085, 4148292826, 4233094615, 3781033664, 3931371469, 3682191598, 3497509347, 3446004468, 3328955385, 2939266226, 2755636671, 3106780840, 2988687269, 2198438022, 2282195339, 2501218972, 2652609425, 1201765386, 1286567175, 1371368976, 1521706781, 1805211710, 1620529459, 2105887268, 1988838185, 533804130, 350174575, 164439672, 46346101, 870912086, 954669403, 636813900, 788204353, 2358957921, 2274680428, 2592523643, 2441661558, 2695033685, 2880240216, 3065962831, 3182487618, 3572145929, 3756299780, 3270937875, 3388507166, 4174560061, 4091327024, 4006521127, 3854606378, 1014646705, 930369212, 711349675, 560487590, 272786309, 457992840, 106852767, 223377554, 1678381017, 1862534868, 1914052035, 2031621326, 1211247597, 1128014560, 1580087799, 1428173050, 32283319, 182621114, 401639597, 486441376, 768917123, 651868046, 1003007129, 818324884, 1503449823, 1385356242, 1333838021, 1150208456, 1973745387, 2125135846, 1673061617, 1756818940, 2970356327, 3120694122, 2802849917, 2887651696, 2637442643, 2520393566, 2334669897, 2149987652, 3917234703, 3799141122, 4284502037, 4100872472, 3309594171, 3460984630, 3545789473, 3629546796, 2050466060, 1899603969, 1814803222, 1730525723, 1443857720, 1560382517, 1075025698, 1260232239, 575138148, 692707433, 878443390, 1062597235, 243256656, 91341917, 409198410, 325965383, 3403100636, 3252238545, 3704300486, 3620022987, 3874428392, 3990953189, 4042459122, 4227665663, 2460449204, 2578018489, 2226875310, 2411029155, 3198115200, 3046200461, 2827177882, 2743944855],
gn = [0, 218828297, 437656594, 387781147, 875313188, 958871085, 775562294, 590424639, 1750626376, 1699970625, 1917742170, 2135253587, 1551124588, 1367295589, 1180849278, 1265195639, 3501252752, 3720081049, 3399941250, 3350065803, 3835484340, 3919042237, 4270507174, 4085369519, 3102249176, 3051593425, 2734591178, 2952102595, 2361698556, 2177869557, 2530391278, 2614737639, 3145456443, 3060847922, 2708326185, 2892417312, 2404901663, 2187128086, 2504130317, 2555048196, 3542330227, 3727205754, 3375740769, 3292445032, 3876557655, 3926170974, 4246310725, 4027744588, 1808481195, 1723872674, 1910319033, 2094410160, 1608975247, 1391201670, 1173430173, 1224348052, 59984867, 244860394, 428169201, 344873464, 935293895, 984907214, 766078933, 547512796, 1844882806, 1627235199, 2011214180, 2062270317, 1507497298, 1423022939, 1137477952, 1321699145, 95345982, 145085239, 532201772, 313773861, 830661914, 1015671571, 731183368, 648017665, 3175501286, 2957853679, 2807058932, 2858115069, 2305455554, 2220981195, 2474404304, 2658625497, 3575528878, 3625268135, 3473416636, 3254988725, 3778151818, 3963161475, 4213447064, 4130281361, 3599595085, 3683022916, 3432737375, 3247465558, 3802222185, 4020912224, 4172763771, 4122762354, 3201631749, 3017672716, 2764249623, 2848461854, 2331590177, 2280796200, 2431590963, 2648976442, 104699613, 188127444, 472615631, 287343814, 840019705, 1058709744, 671593195, 621591778, 1852171925, 1668212892, 1953757831, 2037970062, 1514790577, 1463996600, 1080017571, 1297403050, 3673637356, 3623636965, 3235995134, 3454686199, 4007360968, 3822090177, 4107101658, 4190530515, 2997825956, 3215212461, 2830708150, 2779915199, 2256734592, 2340947849, 2627016082, 2443058075, 172466556, 122466165, 273792366, 492483431, 1047239e3, 861968209, 612205898, 695634755, 1646252340, 1863638845, 2013908262, 1963115311, 1446242576, 1530455833, 1277555970, 1093597963, 1636604631, 1820824798, 2073724613, 1989249228, 1436590835, 1487645946, 1337376481, 1119727848, 164948639, 81781910, 331544205, 516552836, 1039717051, 821288114, 669961897, 719700128, 2973530695, 3157750862, 2871682645, 2787207260, 2232435299, 2283490410, 2667994737, 2450346104, 3647212047, 3564045318, 3279033885, 3464042516, 3980931627, 3762502690, 4150144569, 4199882800, 3070356634, 3121275539, 2904027272, 2686254721, 2200818878, 2384911031, 2570832044, 2486224549, 3747192018, 3528626907, 3310321856, 3359936201, 3950355702, 3867060991, 4049844452, 4234721005, 1739656202, 1790575107, 2108100632, 1890328081, 1402811438, 1586903591, 1233856572, 1149249077, 266959938, 48394827, 369057872, 418672217, 1002783846, 919489135, 567498868, 752375421, 209336225, 24197544, 376187827, 459744698, 945164165, 895287692, 574624663, 793451934, 1679968233, 1764313568, 2117360635, 1933530610, 1343127501, 1560637892, 1243112415, 1192455638, 3704280881, 3519142200, 3336358691, 3419915562, 3907448597, 3857572124, 4075877127, 4294704398, 3029510009, 3113855344, 2927934315, 2744104290, 2159976285, 2377486676, 2594734927, 2544078150],
mn = [0, 151849742, 303699484, 454499602, 607398968, 758720310, 908999204, 1059270954, 1214797936, 1097159550, 1517440620, 1400849762, 1817998408, 1699839814, 2118541908, 2001430874, 2429595872, 2581445614, 2194319100, 2345119218, 3034881240, 3186202582, 2801699524, 2951971274, 3635996816, 3518358430, 3399679628, 3283088770, 4237083816, 4118925222, 4002861748, 3885750714, 1002142683, 850817237, 698445255, 548169417, 529487843, 377642221, 227885567, 77089521, 1943217067, 2061379749, 1640576439, 1757691577, 1474760595, 1592394909, 1174215055, 1290801793, 2875968315, 2724642869, 3111247143, 2960971305, 2405426947, 2253581325, 2638606623, 2487810577, 3808662347, 3926825029, 4044981591, 4162096729, 3342319475, 3459953789, 3576539503, 3693126241, 1986918061, 2137062819, 1685577905, 1836772287, 1381620373, 1532285339, 1078185097, 1229899655, 1040559837, 923313619, 740276417, 621982671, 439452389, 322734571, 137073913, 19308535, 3871163981, 4021308739, 4104605777, 4255800159, 3263785589, 3414450555, 3499326569, 3651041127, 2933202493, 2815956275, 3167684641, 3049390895, 2330014213, 2213296395, 2566595609, 2448830231, 1305906550, 1155237496, 1607244650, 1455525988, 1776460110, 1626319424, 2079897426, 1928707164, 96392454, 213114376, 396673818, 514443284, 562755902, 679998e3, 865136418, 983426092, 3708173718, 3557504664, 3474729866, 3323011204, 4180808110, 4030667424, 3945269170, 3794078908, 2507040230, 2623762152, 2272556026, 2390325492, 2975484382, 3092726480, 2738905026, 2857194700, 3973773121, 3856137295, 4274053469, 4157467219, 3371096953, 3252932727, 3673476453, 3556361835, 2763173681, 2915017791, 3064510765, 3215307299, 2156299017, 2307622919, 2459735317, 2610011675, 2081048481, 1963412655, 1846563261, 1729977011, 1480485785, 1362321559, 1243905413, 1126790795, 878845905, 1030690015, 645401037, 796197571, 274084841, 425408743, 38544885, 188821243, 3613494426, 3731654548, 3313212038, 3430322568, 4082475170, 4200115116, 3780097726, 3896688048, 2668221674, 2516901860, 2366882550, 2216610296, 3141400786, 2989552604, 2837966542, 2687165888, 1202797690, 1320957812, 1437280870, 1554391400, 1669664834, 1787304780, 1906247262, 2022837584, 265905162, 114585348, 499347990, 349075736, 736970802, 585122620, 972512814, 821712160, 2595684844, 2478443234, 2293045232, 2174754046, 3196267988, 3079546586, 2895723464, 2777952454, 3537852828, 3687994002, 3234156416, 3385345166, 4142626212, 4293295786, 3841024952, 3992742070, 174567692, 57326082, 410887952, 292596766, 777231668, 660510266, 1011452712, 893681702, 1108339068, 1258480242, 1343618912, 1494807662, 1715193156, 1865862730, 1948373848, 2100090966, 2701949495, 2818666809, 3004591147, 3122358053, 2235061775, 2352307457, 2535604243, 2653899549, 3915653703, 3764988233, 4219352155, 4067639125, 3444575871, 3294430577, 3746175075, 3594982253, 836553431, 953270745, 600235211, 718002117, 367585007, 484830689, 133361907, 251657213, 2041877159, 1891211689, 1806599355, 1654886325, 1568718495, 1418573201, 1335535747, 1184342925];
function yn(e) {
for (var t = [], n = 0; n < e.length; n += 4) {
t.push(e[n] << 24 | e[n + 1] << 16 | e[n + 2] << 8 | e[n + 3]);
}
return t;
}
var _n = /*#__PURE__*/function () {
function _n(e) {
(0, _classCallCheck2.default)(this, _n);
if (!(this instanceof _n)) throw Error("AES must be instanitated with `new`");
Object.defineProperty(this, "key", {
value: Vt(e, !0)
}), this._prepare();
}
(0, _createClass2.default)(_n, [{
key: "_prepare",
value: function _prepare() {
var e = en[this.key.length];
if (null == e) throw new Error("invalid key size (must be 16, 24 or 32 bytes)");
this._Ke = [], this._Kd = [];
for (var t = 0; t <= e; t++) {
this._Ke.push([0, 0, 0, 0]), this._Kd.push([0, 0, 0, 0]);
}
var n,
s = 4 * (e + 1),
r = this.key.length / 4,
i = yn(this.key);
for (t = 0; t < r; t++) {
n = t >> 2, this._Ke[n][t % 4] = i[t], this._Kd[e - n][t % 4] = i[t];
}
for (var o, a = 0, c = r; c < s;) {
if (o = i[r - 1], i[0] ^= nn[o >> 16 & 255] << 24 ^ nn[o >> 8 & 255] << 16 ^ nn[255 & o] << 8 ^ nn[o >> 24 & 255] ^ tn[a] << 24, a += 1, 8 != r) for (t = 1; t < r; t++) {
i[t] ^= i[t - 1];
} else {
for (t = 1; t < r / 2; t++) {
i[t] ^= i[t - 1];
}
o = i[r / 2 - 1], i[r / 2] ^= nn[255 & o] ^ nn[o >> 8 & 255] << 8 ^ nn[o >> 16 & 255] << 16 ^ nn[o >> 24 & 255] << 24;
for (t = r / 2 + 1; t < r; t++) {
i[t] ^= i[t - 1];
}
}
for (t = 0; t < r && c < s;) {
u = c >> 2, h = c % 4, this._Ke[u][h] = i[t], this._Kd[e - u][h] = i[t++], c++;
}
}
for (var u = 1; u < e; u++) {
for (var h = 0; h < 4; h++) {
o = this._Kd[u][h], this._Kd[u][h] = pn[o >> 24 & 255] ^ fn[o >> 16 & 255] ^ gn[o >> 8 & 255] ^ mn[255 & o];
}
}
}
}, {
key: "encrypt",
value: function encrypt(e) {
if (16 != e.length) throw new Error("invalid plaintext size (must be 16 bytes)");
for (var t = this._Ke.length - 1, n = [0, 0, 0, 0], s = yn(e), r = 0; r < 4; r++) {
s[r] ^= this._Ke[0][r];
}
for (var i = 1; i < t; i++) {
for (r = 0; r < 4; r++) {
n[r] = rn[s[r] >> 24 & 255] ^ on[s[(r + 1) % 4] >> 16 & 255] ^ an[s[(r + 2) % 4] >> 8 & 255] ^ cn[255 & s[(r + 3) % 4]] ^ this._Ke[i][r];
}
s = n.slice();
}
var o,
a = Gt(16);
for (r = 0; r < 4; r++) {
o = this._Ke[t][r], a[4 * r] = 255 & (nn[s[r] >> 24 & 255] ^ o >> 24), a[4 * r + 1] = 255 & (nn[s[(r + 1) % 4] >> 16 & 255] ^ o >> 16), a[4 * r + 2] = 255 & (nn[s[(r + 2) % 4] >> 8 & 255] ^ o >> 8), a[4 * r + 3] = 255 & (nn[255 & s[(r + 3) % 4]] ^ o);
}
return a;
}
}, {
key: "decrypt",
value: function decrypt(e) {
if (16 != e.length) throw new Error("invalid ciphertext size (must be 16 bytes)");
for (var t = this._Kd.length - 1, n = [0, 0, 0, 0], s = yn(e), r = 0; r < 4; r++) {
s[r] ^= this._Kd[0][r];
}
for (var i = 1; i < t; i++) {
for (r = 0; r < 4; r++) {
n[r] = un[s[r] >> 24 & 255] ^ hn[s[(r + 3) % 4] >> 16 & 255] ^ ln[s[(r + 2) % 4] >> 8 & 255] ^ dn[255 & s[(r + 1) % 4]] ^ this._Kd[i][r];
}
s = n.slice();
}
var o,
a = Gt(16);
for (r = 0; r < 4; r++) {
o = this._Kd[t][r], a[4 * r] = 255 & (sn[s[r] >> 24 & 255] ^ o >> 24), a[4 * r + 1] = 255 & (sn[s[(r + 3) % 4] >> 16 & 255] ^ o >> 16), a[4 * r + 2] = 255 & (sn[s[(r + 2) % 4] >> 8 & 255] ^ o >> 8), a[4 * r + 3] = 255 & (sn[255 & s[(r + 1) % 4]] ^ o);
}
return a;
}
}]);
return _n;
}();
var wn = /*#__PURE__*/function () {
function wn(e) {
(0, _classCallCheck2.default)(this, wn);
if (!(this instanceof wn)) throw Error("AES must be instanitated with `new`");
this.description = "Electronic Code Block", this.name = "ecb", this._aes = new _n(e);
}
(0, _createClass2.default)(wn, [{
key: "encrypt",
value: function encrypt(e) {
if ((e = Vt(e)).length % 16 != 0) throw new Error("invalid plaintext size (must be multiple of 16 bytes)");
for (var t = Gt(e.length), n = Gt(16), s = 0; s < e.length; s += 16) {
Yt(e, n, 0, s, s + 16), Yt(n = this._aes.encrypt(n), t, s);
}
return t;
}
}, {
key: "decrypt",
value: function decrypt(e) {
if ((e = Vt(e)).length % 16 != 0) throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");
for (var t = Gt(e.length), n = Gt(16), s = 0; s < e.length; s += 16) {
Yt(e, n, 0, s, s + 16), Yt(n = this._aes.decrypt(n), t, s);
}
return t;
}
}]);
return wn;
}();
var vn = /*#__PURE__*/function () {
function vn(e, t) {
(0, _classCallCheck2.default)(this, vn);
if (!(this instanceof vn)) throw Error("AES must be instanitated with `new`");
if (this.description = "Cipher Block Chaining", this.name = "cbc", t) {
if (16 != t.length) throw new Error("invalid initialation vector size (must be 16 bytes)");
} else t = Gt(16);
this._lastCipherblock = Vt(t, !0), this._aes = new _n(e);
}
(0, _createClass2.default)(vn, [{
key: "encrypt",
value: function encrypt(e) {
if ((e = Vt(e)).length % 16 != 0) throw new Error("invalid plaintext size (must be multiple of 16 bytes)");
for (var t = Gt(e.length), n = Gt(16), s = 0; s < e.length; s += 16) {
Yt(e, n, 0, s, s + 16);
for (var r = 0; r < 16; r++) {
n[r] ^= this._lastCipherblock[r];
}
this._lastCipherblock = this._aes.encrypt(n), Yt(this._lastCipherblock, t, s);
}
return t;
}
}, {
key: "decrypt",
value: function decrypt(e) {
if ((e = Vt(e)).length % 16 != 0) throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");
for (var t = Gt(e.length), n = Gt(16), s = 0; s < e.length; s += 16) {
Yt(e, n, 0, s, s + 16), n = this._aes.decrypt(n);
for (var r = 0; r < 16; r++) {
t[s + r] = n[r] ^ this._lastCipherblock[r];
}
Yt(e, this._lastCipherblock, 0, s, s + 16);
}
return t;
}
}]);
return vn;
}();
var In = /*#__PURE__*/function () {
function In(e, t, n) {
(0, _classCallCheck2.default)(this, In);
if (!(this instanceof In)) throw Error("AES must be instanitated with `new`");
if (this.description = "Cipher Feedback", this.name = "cfb", t) {
if (16 != t.length) throw new Error("invalid initialation vector size (must be 16 size)");
} else t = Gt(16);
n || (n = 1), this.segmentSize = n, this._shiftRegister = Vt(t, !0), this._aes = new _n(e);
}
(0, _createClass2.default)(In, [{
key: "encrypt",
value: function encrypt(e) {
if (e.length % this.segmentSize != 0) throw new Error("invalid plaintext size (must be segmentSize bytes)");
for (var t, n = Vt(e, !0), s = 0; s < n.length; s += this.segmentSize) {
t = this._aes.encrypt(this._shiftRegister);
for (var r = 0; r < this.segmentSize; r++) {
n[s + r] ^= t[r];
}
Yt(this._shiftRegister, this._shiftRegister, 0, this.segmentSize), Yt(n, this._shiftRegister, 16 - this.segmentSize, s, s + this.segmentSize);
}
return n;
}
}, {
key: "decrypt",
value: function decrypt(e) {
if (e.length % this.segmentSize != 0) throw new Error("invalid ciphertext size (must be segmentSize bytes)");
for (var t, n = Vt(e, !0), s = 0; s < n.length; s += this.segmentSize) {
t = this._aes.encrypt(this._shiftRegister);
for (var r = 0; r < this.segmentSize; r++) {
n[s + r] ^= t[r];
}
Yt(this._shiftRegister, this._shiftRegister, 0, this.segmentSize), Yt(e, this._shiftRegister, 16 - this.segmentSize, s, s + this.segmentSize);
}
return n;
}
}]);
return In;
}();
var Sn = /*#__PURE__*/function () {
function Sn(e, t) {
(0, _classCallCheck2.default)(this, Sn);
if (!(this instanceof Sn)) throw Error("AES must be instanitated with `new`");
if (this.description = "Output Feedback", this.name = "ofb", t) {
if (16 != t.length) throw new Error("invalid initialation vector size (must be 16 bytes)");
} else t = Gt(16);
this._lastPrecipher = Vt(t, !0), this._lastPrecipherIndex = 16, this._aes = new _n(e);
}
(0, _createClass2.default)(Sn, [{
key: "encrypt",
value: function encrypt(e) {
for (var t = Vt(e, !0), n = 0; n < t.length; n++) {
16 === this._lastPrecipherIndex && (this._lastPrecipher = this._aes.encrypt(this._lastPrecipher), this._lastPrecipherIndex = 0), t[n] ^= this._lastPrecipher[this._lastPrecipherIndex++];
}
return t;
}
}, {
key: "decrypt",
value: function decrypt(e) {
return this.encrypt(e);
}
}]);
return Sn;
}();
var bn = /*#__PURE__*/function () {
function bn(e) {
(0, _classCallCheck2.default)(this, bn);
if (!(this instanceof bn)) throw Error("Counter must be instanitated with `new`");
0 === e || e || (e = 1), "number" == typeof e ? (this._counter = Gt(16), this.setValue(e)) : this.setBytes(e);
}
(0, _createClass2.default)(bn, [{
key: "setValue",
value: function setValue(e) {
if ("number" != typeof e || parseInt(e) != e) throw new Error("invalid counter value (must be an integer)");
if (e > Number.MAX_SAFE_INTEGER) throw new Error("integer value out of safe range");
for (var t = 15; t >= 0; --t) {
this._counter[t] = e % 256, e = parseInt(e / 256);
}
}
}, {
key: "setBytes",
value: function setBytes(e) {
if (16 != (e = Vt(e, !0)).length) throw new Error("invalid counter bytes size (must be 16 bytes)");
this._counter = e;
}
}, {
key: "increment",
value: function increment() {
for (var e = 15; e >= 0; e--) {
if (255 !== this._counter[e]) {
this._counter[e]++;
break;
}
this._counter[e] = 0;
}
}
}]);
return bn;
}();
var kn = /*#__PURE__*/function () {
function kn(e, t) {
(0, _classCallCheck2.default)(this, kn);
if (!(this instanceof kn)) throw Error("AES must be instanitated with `new`");
this.description = "Counter", this.name = "ctr", t instanceof bn || (t = new bn(t)), this._counter = t, this._remainingCounter = null, this._remainingCounterIndex = 16, this._aes = new _n(e);
}
(0, _createClass2.default)(kn, [{
key: "encrypt",
value: function encrypt(e) {
for (var t = Vt(e, !0), n = 0; n < t.length; n++) {
16 === this._remainingCounterIndex && (this._remainingCounter = this._aes.encrypt(this._counter._counter), this._remainingCounterIndex = 0, this._counter.increment()), t[n] ^= this._remainingCounter[this._remainingCounterIndex++];
}
return t;
}
}, {
key: "decrypt",
value: function decrypt(e) {
return this.encrypt(e);
}
}]);
return kn;
}();
var An = {
AES: _n,
Counter: bn,
ModeOfOperation: {
ecb: wn,
cbc: vn,
cfb: In,
ofb: Sn,
ctr: kn
},
utils: {
hex: Zt,
utf8: Xt
},
padding: {
pkcs7: {
pad: function pad(e) {
var t = 16 - (e = Vt(e, !0)).length % 16,
n = Gt(e.length + t);
Yt(e, n);
for (var s = e.length; s < n.length; s++) {
n[s] = t;
}
return n;
},
strip: function strip(e) {
if ((e = Vt(e, !0)).length < 16) throw new Error("PKCS#7 invalid length");
var t = e[e.length - 1];
if (t > 16) throw new Error("PKCS#7 padding byte out of range");
for (var n = e.length - t, s = 0; s < t; s++) {
if (e[n + s] !== t) throw new Error("PKCS#7 invalid padding byte");
}
var r = Gt(n);
return Yt(e, r, 0, 0, n), r;
}
}
},
_arrayTest: {
coerceArray: Vt,
createArray: Gt,
copyArray: Yt
}
};
function Cn(e, t, n) {
var s = new Uint8Array(uni.base64ToArrayBuffer(t)),
r = An.utils.utf8.toBytes(n),
i = An.utils.utf8.toBytes(e),
o = new An.ModeOfOperation.cbc(s, r),
a = An.padding.pkcs7.pad(i),
c = o.encrypt(a);
return uni.arrayBufferToBase64(c);
}
var Pn = {
code: 2e4,
message: "System error"
},
Tn = {
code: 20101,
message: "Invalid client"
},
xn = {
code: 20102,
message: "Get encrypt key failed"
},
On = {
10001: "Secure network is not supported on current playground or unimpsdk",
10003: "Config missing in current app. If the problem pesist, please contact DCloud.",
10009: "Encrypt payload failed",
10010: "Decrypt response failed"
};
function En(e) {
var _ref32 = e || {},
t = _ref32.errSubject,
n = _ref32.subject,
s = _ref32.errCode,
r = _ref32.errMsg,
i = _ref32.code,
o = _ref32.message,
a = _ref32.cause;
return new te({
subject: t || n || "uni-secure-network",
code: s || i || Pn.code,
message: r || o,
cause: a
});
}
var Ln,
Rn,
Un = null;
var Nn = /*#__PURE__*/function (_Ht) {
(0, _inherits2.default)(Nn, _Ht);
var _super9 = _createSuper(Nn);
function Nn(e) {
var _this15;
(0, _classCallCheck2.default)(this, Nn);
_this15 = _super9.call(this, e), _this15.clientType = "mp-weixin", _this15.userEncryptKey = null;
return _this15;
}
(0, _createClass2.default)(Nn, [{
key: "isLogin",
value: function isLogin() {
return !!this.scopedGlobalCache.mpWeixinCode || !!this.scopedGlobalCache.mpWeixinOpenid;
}
}, {
key: "prepare",
value: function () {
var _prepare2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee41() {
return _regenerator.default.wrap(function _callee41$(_context41) {
while (1) {
switch (_context41.prev = _context41.next) {
case 0:
if (this.isLogin()) {
_context41.next = 7;
break;
}
if (this.scopedGlobalCache.initPromise) {
_context41.next = 3;
break;
}
throw new Error("`uniCloud.initSecureNetworkByWeixin` has not yet been called");
case 3:
_context41.next = 5;
return this.scopedGlobalCache.initPromise;
case 5:
if (this.isLogin()) {
_context41.next = 7;
break;
}
throw new Error("uniCloud.initSecureNetworkByWeixin` has not yet been called or successfully excuted");
case 7:
case "end":
return _context41.stop();
}
}
}, _callee41, this);
}));
function prepare() {
return _prepare2.apply(this, arguments);
}
return prepare;
}()
}, {
key: "getUserEncryptKey",
value: function () {
var _getUserEncryptKey = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee42() {
var _this16 = this;
var e;
return _regenerator.default.wrap(function _callee42$(_context42) {
while (1) {
switch (_context42.prev = _context42.next) {
case 0:
if (!this.userEncryptKey) {
_context42.next = 2;
break;
}
return _context42.abrupt("return", this.userEncryptKey);
case 2:
if (!(Un && Un.expireTime)) {
_context42.next = 6;
break;
}
e = Date.now();
if (!(Un.expireTime - e > 0)) {
_context42.next = 6;
break;
}
return _context42.abrupt("return", (this.userEncryptKey = Un, this.userEncryptKey));
case 6:
return _context42.abrupt("return", new Promise(function (e, t) {
uni.getUserCryptoManager().getLatestUserKey({
success: function success(t) {
Un = t, _this16.userEncryptKey = t, e(_this16.userEncryptKey);
},
fail: function fail(e) {
t(En(_objectSpread(_objectSpread({}, xn), {}, {
cause: e
})));
}
});
}));
case 7:
case "end":
return _context42.stop();
}
}
}, _callee42, this);
}));
function getUserEncryptKey() {
return _getUserEncryptKey.apply(this, arguments);
}
return getUserEncryptKey;
}()
}, {
key: "getWxAppId",
value: function getWxAppId() {
return wx.getAccountInfoSync().miniProgram.appId;
}
}, {
key: "platformGetSignOption",
value: function () {
var _platformGetSignOption = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee43() {
var _yield$this$getUserEn, e, t, n;
return _regenerator.default.wrap(function _callee43$(_context43) {
while (1) {
switch (_context43.prev = _context43.next) {
case 0:
_context43.next = 2;
return this.getUserEncryptKey();
case 2:
_yield$this$getUserEn = _context43.sent;
e = _yield$this$getUserEn.encryptKey;
t = _yield$this$getUserEn.iv;
n = _yield$this$getUserEn.version;
return _context43.abrupt("return", {
verifyClientSign: Cn(JSON.stringify({
data: JSON.stringify({}),
appId: this.appId,
deviceId: this.deviceId,
wxAppId: this.getWxAppId(),
simulator: "devtools" === ae().platform,
timestamp: Date.now()
}), e, t),
encryptKeyId: n,
mpWeixinCode: this.scopedGlobalCache.mpWeixinCode,
mpWeixinOpenid: this.scopedGlobalCache.mpWeixinOpenid
});
case 7:
case "end":
return _context43.stop();
}
}
}, _callee43, this);
}));
function platformGetSignOption() {
return _platformGetSignOption.apply(this, arguments);
}
return platformGetSignOption;
}()
}, {
key: "platformEncryptData",
value: function () {
var _platformEncryptData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee44(e) {
var _yield$this$getUserEn2, t, n, s, r;
return _regenerator.default.wrap(function _callee44$(_context44) {
while (1) {
switch (_context44.prev = _context44.next) {
case 0:
_context44.next = 2;
return this.getUserEncryptKey();
case 2:
_yield$this$getUserEn2 = _context44.sent;
t = _yield$this$getUserEn2.encryptKey;
n = _yield$this$getUserEn2.iv;
s = _yield$this$getUserEn2.version;
r = {
secretType: this.secretType,
encryptKeyId: s,
mpWeixinCode: this.scopedGlobalCache.mpWeixinCode,
mpWeixinOpenid: this.scopedGlobalCache.mpWeixinOpenid
};
return _context44.abrupt("return", this.secretType === Bt ? {
content: e,
_uniCloudOptions: r
} : {
content: Cn(JSON.stringify({
data: JSON.stringify(e),
appId: this.appId,
deviceId: this.deviceId,
wxAppId: this.getWxAppId(),
simulator: "devtools" === ae().platform,
timestamp: Date.now()
}), t, n),
_uniCloudOptions: r
});
case 8:
case "end":
return _context44.stop();
}
}
}, _callee44, this);
}));
function platformEncryptData(_x36) {
return _platformEncryptData.apply(this, arguments);
}
return platformEncryptData;
}()
}, {
key: "platformDecryptResult",
value: function () {
var _platformDecryptResult = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee45(e) {
var t, _yield$this$getUserEn3, n, s;
return _regenerator.default.wrap(function _callee45$(_context45) {
while (1) {
switch (_context45.prev = _context45.next) {
case 0:
t = e.content;
_context45.next = 3;
return this.getUserEncryptKey();
case 3:
_yield$this$getUserEn3 = _context45.sent;
n = _yield$this$getUserEn3.encryptKey;
s = _yield$this$getUserEn3.iv;
return _context45.abrupt("return", JSON.parse(function (e, t, n) {
var s = new Uint8Array(uni.base64ToArrayBuffer(e)),
r = new Uint8Array(uni.base64ToArrayBuffer(t)),
i = An.utils.utf8.toBytes(n),
o = new An.ModeOfOperation.cbc(r, i),
a = An.padding.pkcs7.strip(o.decrypt(s));
return An.utils.utf8.fromBytes(a);
}(t, n, s)));
case 7:
case "end":
return _context45.stop();
}
}
}, _callee45, this);
}));
function platformDecryptResult(_x37) {
return _platformDecryptResult.apply(this, arguments);
}
return platformDecryptResult;
}()
}, {
key: "isClientKeyNotFound",
value: function isClientKeyNotFound() {
return !1;
}
}]);
return Nn;
}(Ht);
function Dn(e) {
var t = ["hasClientKey", "encryptGetClientKeyPayload", "setClientKey", "encrypt", "decrypt"],
n = {};
var _loop = function _loop(_s11) {
var r = t[_s11];
n[r] = function () {
for (var _len = arguments.length, t = new Array(_len), _key = 0; _key < _len; _key++) {
t[_key] = arguments[_key];
}
return new Promise(function (n, s) {
"function" == typeof e[r] ? e[r].apply(e, t.concat([function () {
var _ref33 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
e = _ref33.type,
t = _ref33.data,
r = _ref33.errCode,
i = _ref33.errMsg,
o = _ref33.errSubject,
a = _ref33.message;
"success" === e ? n(t) : s(En({
errCode: r,
errMsg: On[r] || i || a,
errSubject: o
}));
}])) : s(En({
message: "请检查manifest.json内是否开启安全网络模块另外注意标准基座不支持安全网络模块"
}));
});
};
};
for (var _s11 = 0; _s11 < t.length; _s11++) {
_loop(_s11);
}
return n;
}
var Mn = /*#__PURE__*/function (_Ht2) {
(0, _inherits2.default)(Mn, _Ht2);
var _super10 = _createSuper(Mn);
function Mn(e) {
var _this17;
(0, _classCallCheck2.default)(this, Mn);
_this17 = _super10.call(this, e), _this17.clientType = "app", _this17.appUtils = _objectSpread({}, Dn(uni.requireNativePlugin("plus"))), _this17.systemInfo = Ln || (Ln = ae());
return _this17;
}
(0, _createClass2.default)(Mn, [{
key: "hasClientKey",
value: function () {
var _hasClientKey = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee46() {
return _regenerator.default.wrap(function _callee46$(_context46) {
while (1) {
switch (_context46.prev = _context46.next) {
case 0:
_context46.next = 2;
return this.appUtils.hasClientKey({
provider: this.provider,
spaceId: this.spaceId
});
case 2:
this._hasClientKey = _context46.sent;
return _context46.abrupt("return", this._hasClientKey);
case 4:
case "end":
return _context46.stop();
}
}
}, _callee46, this);
}));
function hasClientKey() {
return _hasClientKey.apply(this, arguments);
}
return hasClientKey;
}()
}, {
key: "getAppClientKey",
value: function () {
var _getAppClientKey = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee47() {
var _yield$this$appUtils$, e, t, n, s, r;
return _regenerator.default.wrap(function _callee47$(_context47) {
while (1) {
switch (_context47.prev = _context47.next) {
case 0:
_context47.next = 2;
return this.appUtils.encryptGetClientKeyPayload({
data: JSON.stringify({})
});
case 2:
_yield$this$appUtils$ = _context47.sent;
e = _yield$this$appUtils$.data;
t = _yield$this$appUtils$.key;
_context47.next = 7;
return this.uniCloudIns.callFunction({
name: "DCloud-clientDB",
data: {
redirectTo: "encryption",
action: "getAppClientKey",
data: e,
key: t
}
});
case 7:
_context47.t0 = _context47.sent.result;
if (_context47.t0) {
_context47.next = 10;
break;
}
_context47.t0 = {};
case 10:
n = _context47.t0;
if (!(0 !== n.errCode)) {
_context47.next = 13;
break;
}
throw function (e) {
return new te({
subject: e.errSubject || "uni-secure-network",
code: e.errCode || e.code || Pn.code,
message: e.errMsg || e.message
});
}(n);
case 13:
s = n.clientKey, r = n.key;
_context47.next = 16;
return this.appUtils.setClientKey({
provider: this.provider,
spaceId: this.spaceId,
clientKey: s,
key: r
});
case 16:
case "end":
return _context47.stop();
}
}
}, _callee47, this);
}));
function getAppClientKey() {
return _getAppClientKey.apply(this, arguments);
}
return getAppClientKey;
}()
}, {
key: "ensureClientKey",
value: function () {
var _ensureClientKey = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee48() {
var _this18 = this;
var _ref34,
_ref34$forceUpdate,
e,
_args48 = arguments;
return _regenerator.default.wrap(function _callee48$(_context48) {
while (1) {
switch (_context48.prev = _context48.next) {
case 0:
_ref34 = _args48.length > 0 && _args48[0] !== undefined ? _args48[0] : {}, _ref34$forceUpdate = _ref34.forceUpdate, e = _ref34$forceUpdate === void 0 ? !1 : _ref34$forceUpdate;
_context48.t1 = !0;
_context48.next = 4;
return this.hasClientKey();
case 4:
_context48.t2 = _context48.sent;
_context48.t0 = _context48.t1 !== _context48.t2;
if (_context48.t0) {
_context48.next = 8;
break;
}
_context48.t0 = e;
case 8:
if (!_context48.t0) {
_context48.next = 10;
break;
}
return _context48.abrupt("return", (e && this.scopedGlobalCache.initPromise && this.scopedGlobalCache.initStatus === l || !e && this.scopedGlobalCache.initPromise && this.scopedGlobalCache.initStatus !== p || (this.scopedGlobalCache.initPromise = this.getAppClientKey(), this.scopedGlobalCache.initPromise.then(function (e) {
_this18.scopedGlobalCache.initStatus = d;
}).catch(function (e) {
throw _this18.scopedGlobalCache.initStatus = p, e;
}), this.scopedGlobalCache.initStatus = l), this.scopedGlobalCache.initPromise));
case 10:
case "end":
return _context48.stop();
}
}
}, _callee48, this);
}));
function ensureClientKey() {
return _ensureClientKey.apply(this, arguments);
}
return ensureClientKey;
}()
}, {
key: "prepare",
value: function () {
var _prepare3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee49() {
var _ref35,
_ref35$forceUpdate,
e,
_args49 = arguments;
return _regenerator.default.wrap(function _callee49$(_context49) {
while (1) {
switch (_context49.prev = _context49.next) {
case 0:
_ref35 = _args49.length > 0 && _args49[0] !== undefined ? _args49[0] : {}, _ref35$forceUpdate = _ref35.forceUpdate, e = _ref35$forceUpdate === void 0 ? !1 : _ref35$forceUpdate;
_context49.next = 3;
return this.ensureClientKey({
forceUpdate: e
});
case 3:
case "end":
return _context49.stop();
}
}
}, _callee49, this);
}));
function prepare() {
return _prepare3.apply(this, arguments);
}
return prepare;
}()
}, {
key: "platformGetSignOption",
value: function () {
var _platformGetSignOption2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee50() {
var _yield$this$appUtils$2, e, t;
return _regenerator.default.wrap(function _callee50$(_context50) {
while (1) {
switch (_context50.prev = _context50.next) {
case 0:
_context50.next = 2;
return this.appUtils.encrypt({
provider: this.provider,
spaceId: this.spaceId,
data: JSON.stringify({})
});
case 2:
_yield$this$appUtils$2 = _context50.sent;
e = _yield$this$appUtils$2.data;
t = _yield$this$appUtils$2.key;
return _context50.abrupt("return", {
verifyClientSign: e,
encryptKeyId: t
});
case 6:
case "end":
return _context50.stop();
}
}
}, _callee50, this);
}));
function platformGetSignOption() {
return _platformGetSignOption2.apply(this, arguments);
}
return platformGetSignOption;
}()
}, {
key: "platformEncryptData",
value: function () {
var _platformEncryptData2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee51(e) {
var _yield$this$appUtils$3, t, n, s;
return _regenerator.default.wrap(function _callee51$(_context51) {
while (1) {
switch (_context51.prev = _context51.next) {
case 0:
_context51.next = 2;
return this.appUtils.encrypt({
provider: this.provider,
spaceId: this.spaceId,
data: JSON.stringify(e)
});
case 2:
_yield$this$appUtils$3 = _context51.sent;
t = _yield$this$appUtils$3.data;
n = _yield$this$appUtils$3.key;
s = {
secretType: this.secretType,
encryptKeyId: n
};
return _context51.abrupt("return", this.secretType === Bt ? {
content: e,
_uniCloudOptions: s
} : {
content: t,
_uniCloudOptions: s
});
case 7:
case "end":
return _context51.stop();
}
}
}, _callee51, this);
}));
function platformEncryptData(_x38) {
return _platformEncryptData2.apply(this, arguments);
}
return platformEncryptData;
}()
}, {
key: "platformDecryptResult",
value: function () {
var _platformDecryptResult2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee52(e) {
var t, _e$_uniCloudOptions, n, s, r;
return _regenerator.default.wrap(function _callee52$(_context52) {
while (1) {
switch (_context52.prev = _context52.next) {
case 0:
t = e.content;
_e$_uniCloudOptions = e._uniCloudOptions;
n = _e$_uniCloudOptions === void 0 ? {} : _e$_uniCloudOptions;
s = n.encryptKeyId;
_context52.next = 6;
return this.appUtils.decrypt({
provider: this.provider,
spaceId: this.spaceId,
data: t,
key: s
});
case 6:
r = _context52.sent;
return _context52.abrupt("return", JSON.parse(r.data));
case 8:
case "end":
return _context52.stop();
}
}
}, _callee52, this);
}));
function platformDecryptResult(_x39) {
return _platformDecryptResult2.apply(this, arguments);
}
return platformDecryptResult;
}()
}, {
key: "isClientKeyNotFound",
value: function isClientKeyNotFound() {
var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var t = e.result || {};
return 70009 === t.errCode && "uni-secure-network" === t.errSubject;
}
}]);
return Mn;
}(Ht);
function qn() {
var _ref36 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
e = _ref36.secretType;
return e === $t || e === Bt || e === Wt;
}
function Fn() {
var _ref37 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
e = _ref37.name,
_ref37$data = _ref37.data,
t = _ref37$data === void 0 ? {} : _ref37$data;
return "app" === C && "DCloud-clientDB" === e && "encryption" === t.redirectTo && "getAppClientKey" === t.action;
}
function Kn() {
var _ref38 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
e = _ref38.provider,
t = _ref38.spaceId,
n = _ref38.functionName;
var _ae = ae(),
s = _ae.appId,
r = _ae.uniPlatform,
i = _ae.osName;
var o = r;
"app" === r && (o = i);
var a = function () {
var _ref39 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
e = _ref39.provider,
t = _ref39.spaceId;
var n = A;
if (!n) return {};
e = function (e) {
return "tencent" === e ? "tcb" : e;
}(e);
var s = n.find(function (n) {
return n.provider === e && n.spaceId === t;
});
return s && s.config;
}({
provider: e,
spaceId: t
});
if (!a || !a.accessControl || !a.accessControl.enable) return !1;
var c = a.accessControl.function || {},
u = Object.keys(c);
if (0 === u.length) return !0;
var h = function (e, t) {
var n, s, r;
for (var _i2 = 0; _i2 < e.length; _i2++) {
var _o2 = e[_i2];
_o2 !== t ? "*" !== _o2 ? _o2.split(",").map(function (e) {
return e.trim();
}).indexOf(t) > -1 && (s = _o2) : r = _o2 : n = _o2;
}
return n || s || r;
}(u, n);
if (!h) return !1;
if ((c[h] || []).find(function () {
var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return e.appId === s && (e.platform || "").toLowerCase() === o.toLowerCase();
})) return !0;
throw console.error("\u6B64\u5E94\u7528[appId: ".concat(s, ", platform: ").concat(o, "]\u4E0D\u5728\u4E91\u7AEF\u914D\u7F6E\u7684\u5141\u8BB8\u8BBF\u95EE\u7684\u5E94\u7528\u5217\u8868\u5185\uFF0C\u53C2\u8003\uFF1Ahttps://uniapp.dcloud.net.cn/uniCloud/secure-network.html#verify-client")), En(Tn);
}
function jn(_ref40) {
var e = _ref40.functionName,
t = _ref40.result,
n = _ref40.logPvd;
if (S && this.__dev__.debugLog && t && t.requestId) {
var _s12 = JSON.stringify({
spaceId: this.config.spaceId,
functionName: e,
requestId: t.requestId
});
console.log("[".concat(n, "-request]").concat(_s12, "[/").concat(n, "-request]"));
}
}
function $n(e) {
var t = e.callFunction,
n = function n(_n10) {
var _this19 = this;
var s = _n10.name;
_n10.data = Nt.call(e, {
data: _n10.data
});
var r = {
aliyun: "aliyun",
tencent: "tcb",
tcb: "tcb",
alipay: "alipay"
}[this.config.provider],
i = qn(_n10),
o = Fn(_n10),
a = i || o;
return t.call(this, _n10).then(function (e) {
return e.errCode = 0, !a && jn.call(_this19, {
functionName: s,
result: e,
logPvd: r
}), Promise.resolve(e);
}, function (e) {
return !a && jn.call(_this19, {
functionName: s,
result: e,
logPvd: r
}), e && e.message && (e.message = function () {
var _ref41 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref41$message = _ref41.message,
e = _ref41$message === void 0 ? "" : _ref41$message,
_ref41$extraInfo = _ref41.extraInfo,
t = _ref41$extraInfo === void 0 ? {} : _ref41$extraInfo,
_ref41$formatter = _ref41.formatter,
n = _ref41$formatter === void 0 ? [] : _ref41$formatter;
for (var _s13 = 0; _s13 < n.length; _s13++) {
var _n$_s = n[_s13],
_r6 = _n$_s.rule,
_i3 = _n$_s.content,
_o3 = _n$_s.mode,
_a = e.match(_r6);
if (!_a) continue;
var _c = _i3;
for (var _e19 = 1; _e19 < _a.length; _e19++) {
_c = Kt(_c, "{$".concat(_e19, "}"), _a[_e19]);
}
for (var _e20 in t) {
_c = Kt(_c, "{".concat(_e20, "}"), t[_e20]);
}
return "replace" === _o3 ? _c : e + _c;
}
return e;
}({
message: "[".concat(_n10.name, "]: ").concat(e.message),
formatter: Mt,
extraInfo: {
functionName: s
}
})), Promise.reject(e);
});
};
e.callFunction = function (t) {
var _e$config = e.config,
s = _e$config.provider,
r = _e$config.spaceId,
i = t.name;
var o, a;
if (t.data = t.data || {}, S && e.__dev__.debugInfo && !e.__dev__.debugInfo.forceRemote && T ? (e._callCloudFunction || (e._callCloudFunction = n, e._callLocalFunction = Dt), o = Dt) : o = n, o = o.bind(e), Fn(t)) a = n.call(e, t);else if (function (_ref42) {
var e = _ref42.name,
_ref42$data = _ref42.data,
t = _ref42$data === void 0 ? {} : _ref42$data;
return "mp-weixin" === C && "uni-id-co" === e && "secureNetworkHandshakeByWeixin" === t.method;
}(t)) a = o.call(e, t);else if (qn(t)) {
a = new Rn({
secretType: t.secretType,
uniCloudIns: e
}).wrapEncryptDataCallFunction(n.bind(e))(t);
} else if (Kn({
provider: s,
spaceId: r,
functionName: i
})) {
a = new Rn({
secretType: t.secretType,
uniCloudIns: e
}).wrapVerifyClientCallFunction(n.bind(e))(t);
} else a = o(t);
return Object.defineProperty(a, "result", {
get: function get() {
return console.warn("当前返回结果为Promise类型不可直接访问其result属性详情请参考https://uniapp.dcloud.net.cn/uniCloud/faq?id=promise"), {};
}
}), a.then(function (e) {
return "undefined" != typeof UTSJSONObject && (e.result = new UTSJSONObject(e.result)), e;
});
};
}
Rn = "mp-weixin" !== C && "app" !== C ? /*#__PURE__*/function () {
function _class2() {
(0, _classCallCheck2.default)(this, _class2);
throw En({
message: "Platform ".concat(C, " is not supported by secure network")
});
}
return (0, _createClass2.default)(_class2);
}() : k ? "mp-weixin" === C ? Nn : Mn : /*#__PURE__*/function () {
function _class3() {
(0, _classCallCheck2.default)(this, _class3);
throw En({
message: "Platform ".concat(C, " is not enabled, please check whether secure network module is enabled in your manifest.json")
});
}
return (0, _createClass2.default)(_class3);
}();
var Bn = Symbol("CLIENT_DB_INTERNAL");
function Wn(e, t) {
return e.then = "DoNotReturnProxyWithAFunctionNamedThen", e._internalType = Bn, e.inspect = null, e.__ob__ = void 0, new Proxy(e, {
get: function get(e, n, s) {
if ("_uniClient" === n) return null;
if ("symbol" == (0, _typeof2.default)(n)) return e[n];
if (n in e || "string" != typeof n) {
var _t11 = e[n];
return "function" == typeof _t11 ? _t11.bind(e) : _t11;
}
return t.get(e, n, s);
}
});
}
function Hn(e) {
return {
on: function on(t, n) {
e[t] = e[t] || [], e[t].indexOf(n) > -1 || e[t].push(n);
},
off: function off(t, n) {
e[t] = e[t] || [];
var s = e[t].indexOf(n);
-1 !== s && e[t].splice(s, 1);
}
};
}
var zn = ["db.Geo", "db.command", "command.aggregate"];
function Jn(e, t) {
return zn.indexOf("".concat(e, ".").concat(t)) > -1;
}
function Vn(e) {
switch (f(e)) {
case "array":
return e.map(function (e) {
return Vn(e);
});
case "object":
return e._internalType === Bn || Object.keys(e).forEach(function (t) {
e[t] = Vn(e[t]);
}), e;
case "regexp":
return {
$regexp: {
source: e.source,
flags: e.flags
}
};
case "date":
return {
$date: e.toISOString()
};
default:
return e;
}
}
function Gn(e) {
return e && e.content && e.content.$method;
}
var Yn = /*#__PURE__*/function () {
function Yn(e, t, n) {
(0, _classCallCheck2.default)(this, Yn);
this.content = e, this.prevStage = t || null, this.udb = null, this._database = n;
}
(0, _createClass2.default)(Yn, [{
key: "toJSON",
value: function toJSON() {
var e = this;
var t = [e.content];
for (; e.prevStage;) {
e = e.prevStage, t.push(e.content);
}
return {
$db: t.reverse().map(function (e) {
return {
$method: e.$method,
$param: Vn(e.$param)
};
})
};
}
}, {
key: "toString",
value: function toString() {
return JSON.stringify(this.toJSON());
}
}, {
key: "getAction",
value: function getAction() {
var e = this.toJSON().$db.find(function (e) {
return "action" === e.$method;
});
return e && e.$param && e.$param[0];
}
}, {
key: "getCommand",
value: function getCommand() {
return {
$db: this.toJSON().$db.filter(function (e) {
return "action" !== e.$method;
})
};
}
}, {
key: "isAggregate",
get: function get() {
var e = this;
for (; e;) {
var t = Gn(e),
_n11 = Gn(e.prevStage);
if ("aggregate" === t && "collection" === _n11 || "pipeline" === t) return !0;
e = e.prevStage;
}
return !1;
}
}, {
key: "isCommand",
get: function get() {
var e = this;
for (; e;) {
if ("command" === Gn(e)) return !0;
e = e.prevStage;
}
return !1;
}
}, {
key: "isAggregateCommand",
get: function get() {
var e = this;
for (; e;) {
var t = Gn(e),
_n12 = Gn(e.prevStage);
if ("aggregate" === t && "command" === _n12) return !0;
e = e.prevStage;
}
return !1;
}
}, {
key: "getNextStageFn",
value: function getNextStageFn(e) {
var t = this;
return function () {
return Qn({
$method: e,
$param: Vn(Array.from(arguments))
}, t, t._database);
};
}
}, {
key: "count",
get: function get() {
return this.isAggregate ? this.getNextStageFn("count") : function () {
return this._send("count", Array.from(arguments));
};
}
}, {
key: "remove",
get: function get() {
return this.isCommand ? this.getNextStageFn("remove") : function () {
return this._send("remove", Array.from(arguments));
};
}
}, {
key: "get",
value: function get() {
return this._send("get", Array.from(arguments));
}
}, {
key: "add",
get: function get() {
return this.isCommand ? this.getNextStageFn("add") : function () {
return this._send("add", Array.from(arguments));
};
}
}, {
key: "update",
value: function update() {
return this._send("update", Array.from(arguments));
}
}, {
key: "end",
value: function end() {
return this._send("end", Array.from(arguments));
}
}, {
key: "set",
get: function get() {
return this.isCommand ? this.getNextStageFn("set") : function () {
throw new Error("JQL禁止使用set方法");
};
}
}, {
key: "_send",
value: function _send(e, t) {
var n = this.getAction(),
s = this.getCommand();
if (s.$db.push({
$method: e,
$param: Vn(t)
}), S) {
var _e21 = s.$db.find(function (e) {
return "collection" === e.$method;
}),
_t12 = _e21 && _e21.$param;
_t12 && 1 === _t12.length && "string" == typeof _e21.$param[0] && _e21.$param[0].indexOf(",") > -1 && console.warn("检测到使用JQL语法联表查询时未使用getTemp先过滤主表数据在主表数据量大的情况下可能会查询缓慢。\n- 如何优化请参考此文档https://uniapp.dcloud.net.cn/uniCloud/jql?id=lookup-with-temp \n- 如果主表数据量很小请忽略此信息,项目发行时不会出现此提示。");
}
return this._database._callCloudFunction({
action: n,
command: s
});
}
}]);
return Yn;
}();
function Qn(e, t, n) {
return Wn(new Yn(e, t, n), {
get: function get(e, t) {
var s = "db";
return e && e.content && (s = e.content.$method), Jn(s, t) ? Qn({
$method: t
}, e, n) : function () {
return Qn({
$method: t,
$param: Vn(Array.from(arguments))
}, e, n);
};
}
});
}
function Xn(_ref43) {
var e = _ref43.path,
t = _ref43.method;
return /*#__PURE__*/function () {
function _class4() {
(0, _classCallCheck2.default)(this, _class4);
this.param = Array.from(arguments);
}
(0, _createClass2.default)(_class4, [{
key: "toJSON",
value: function toJSON() {
return {
$newDb: [].concat((0, _toConsumableArray2.default)(e.map(function (e) {
return {
$method: e
};
})), [{
$method: t,
$param: this.param
}])
};
}
}, {
key: "toString",
value: function toString() {
return JSON.stringify(this.toJSON());
}
}]);
return _class4;
}();
}
function Zn(e) {
var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return Wn(new e(t), {
get: function get(e, t) {
return Jn("db", t) ? Qn({
$method: t
}, null, e) : function () {
return Qn({
$method: t,
$param: Vn(Array.from(arguments))
}, null, e);
};
}
});
}
var es = /*#__PURE__*/function (_ref44) {
(0, _inherits2.default)(es, _ref44);
var _super11 = _createSuper(es);
function es() {
(0, _classCallCheck2.default)(this, es);
return _super11.apply(this, arguments);
}
(0, _createClass2.default)(es, [{
key: "_parseResult",
value: function _parseResult(e) {
return this._isJQL ? e.result : e;
}
}, {
key: "_callCloudFunction",
value: function _callCloudFunction(_ref45) {
var _this20 = this;
var e = _ref45.action,
t = _ref45.command,
n = _ref45.multiCommand,
s = _ref45.queryList;
function r(e, t) {
if (n && s) for (var _n13 = 0; _n13 < s.length; _n13++) {
var _r7 = s[_n13];
_r7.udb && "function" == typeof _r7.udb.setResult && (t ? _r7.udb.setResult(t) : _r7.udb.setResult(e.result.dataList[_n13]));
}
}
var i = this,
o = this._isJQL ? "databaseForJQL" : "database";
function a(e) {
return i._callback("error", [e]), M(q(o, "fail"), e).then(function () {
return M(q(o, "complete"), e);
}).then(function () {
return r(null, e), Y(j, {
type: W,
content: e
}), Promise.reject(e);
});
}
var c = M(q(o, "invoke")),
u = this._uniClient;
return c.then(function () {
return u.callFunction({
name: "DCloud-clientDB",
type: h,
data: {
action: e,
command: t,
multiCommand: n
}
});
}).then(function (e) {
var _e$result = e.result,
t = _e$result.code,
n = _e$result.message,
s = _e$result.token,
c = _e$result.tokenExpired,
_e$result$systemInfo = _e$result.systemInfo,
u = _e$result$systemInfo === void 0 ? [] : _e$result$systemInfo;
if (u) for (var _e22 = 0; _e22 < u.length; _e22++) {
var _u$_e = u[_e22],
_t13 = _u$_e.level,
_n14 = _u$_e.message,
_s14 = _u$_e.detail,
_r8 = console["app" === C && "warn" === _t13 ? "error" : _t13] || console.log;
var _i4 = "[System Info]" + _n14;
_s14 && (_i4 = "".concat(_i4, "\n\u8BE6\u7EC6\u4FE1\u606F\uFF1A").concat(_s14)), _r8(_i4);
}
if (t) {
return a(new te({
code: t,
message: n,
requestId: e.requestId
}));
}
e.result.errCode = e.result.errCode || e.result.code, e.result.errMsg = e.result.errMsg || e.result.message, s && c && (re({
token: s,
tokenExpired: c
}), _this20._callbackAuth("refreshToken", [{
token: s,
tokenExpired: c
}]), _this20._callback("refreshToken", [{
token: s,
tokenExpired: c
}]), Y(B, {
token: s,
tokenExpired: c
}));
var h = [{
prop: "affectedDocs",
tips: "affectedDocs不再推荐使用请使用inserted/deleted/updated/data.length替代"
}, {
prop: "code",
tips: "code不再推荐使用请使用errCode替代"
}, {
prop: "message",
tips: "message不再推荐使用请使用errMsg替代"
}];
var _loop2 = function _loop2(_t14) {
var _h$_t = h[_t14],
n = _h$_t.prop,
s = _h$_t.tips;
if (n in e.result) {
var _t15 = e.result[n];
Object.defineProperty(e.result, n, {
get: function get() {
return console.warn(s), _t15;
}
});
}
};
for (var _t14 = 0; _t14 < h.length; _t14++) {
_loop2(_t14);
}
return function (e) {
return M(q(o, "success"), e).then(function () {
return M(q(o, "complete"), e);
}).then(function () {
r(e, null);
var t = i._parseResult(e);
return Y(j, {
type: W,
content: t
}), Promise.resolve(t);
});
}(e);
}, function (e) {
/fc_function_not_found|FUNCTION_NOT_FOUND/g.test(e.message) && console.warn("clientDB未初始化请在web控制台保存一次schema以开启clientDB");
return a(new te({
code: e.code || "SYSTEM_ERROR",
message: e.message,
requestId: e.requestId
}));
});
}
}]);
return es;
}( /*#__PURE__*/function () {
function _class5() {
var _ref46 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref46$uniClient = _ref46.uniClient,
e = _ref46$uniClient === void 0 ? {} : _ref46$uniClient,
_ref46$isJQL = _ref46.isJQL,
t = _ref46$isJQL === void 0 ? !1 : _ref46$isJQL;
(0, _classCallCheck2.default)(this, _class5);
this._uniClient = e, this._authCallBacks = {}, this._dbCallBacks = {}, e._isDefault && (this._dbCallBacks = L("_globalUniCloudDatabaseCallback")), t || (this.auth = Hn(this._authCallBacks)), this._isJQL = t, Object.assign(this, Hn(this._dbCallBacks)), this.env = Wn({}, {
get: function get(e, t) {
return {
$env: t
};
}
}), this.Geo = Wn({}, {
get: function get(e, t) {
return Xn({
path: ["Geo"],
method: t
});
}
}), this.serverDate = Xn({
path: [],
method: "serverDate"
}), this.RegExp = Xn({
path: [],
method: "RegExp"
});
}
(0, _createClass2.default)(_class5, [{
key: "getCloudEnv",
value: function getCloudEnv(e) {
if ("string" != typeof e || !e.trim()) throw new Error("getCloudEnv参数错误");
return {
$env: e.replace("$cloudEnv_", "")
};
}
}, {
key: "_callback",
value: function _callback(e, t) {
var n = this._dbCallBacks;
n[e] && n[e].forEach(function (e) {
e.apply(void 0, (0, _toConsumableArray2.default)(t));
});
}
}, {
key: "_callbackAuth",
value: function _callbackAuth(e, t) {
var n = this._authCallBacks;
n[e] && n[e].forEach(function (e) {
e.apply(void 0, (0, _toConsumableArray2.default)(t));
});
}
}, {
key: "multiSend",
value: function multiSend() {
var e = Array.from(arguments),
t = e.map(function (e) {
var t = e.getAction(),
n = e.getCommand();
if ("getTemp" !== n.$db[n.$db.length - 1].$method) throw new Error("multiSend只支持子命令内使用getTemp");
return {
action: t,
command: n
};
});
return this._callCloudFunction({
multiCommand: t,
queryList: e
});
}
}]);
return _class5;
}());
var ts = "token无效跳转登录页面",
ns = "token过期跳转登录页面",
ss = {
TOKEN_INVALID_TOKEN_EXPIRED: ns,
TOKEN_INVALID_INVALID_CLIENTID: ts,
TOKEN_INVALID: ts,
TOKEN_INVALID_WRONG_TOKEN: ts,
TOKEN_INVALID_ANONYMOUS_USER: ts
},
rs = {
"uni-id-token-expired": ns,
"uni-id-check-token-failed": ts,
"uni-id-token-not-exist": ts,
"uni-id-check-device-feature-failed": ts
};
function is(e, t) {
var n = "";
return n = e ? "".concat(e, "/").concat(t) : t, n.replace(/^\//, "");
}
function os() {
var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
var n = [],
s = [];
return e.forEach(function (e) {
!0 === e.needLogin ? n.push(is(t, e.path)) : !1 === e.needLogin && s.push(is(t, e.path));
}), {
needLoginPage: n,
notNeedLoginPage: s
};
}
function as(e) {
return e.split("?")[0].replace(/^\//, "");
}
function cs() {
return function (e) {
var t = e && e.$page && e.$page.fullPath || "";
return t ? ("/" !== t.charAt(0) && (t = "/" + t), t) : t;
}(function () {
var e = getCurrentPages();
return e[e.length - 1];
}());
}
function us() {
return as(cs());
}
function hs() {
var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
if (!e) return !1;
if (!(t && t.list && t.list.length)) return !1;
var n = t.list,
s = as(e);
return n.some(function (e) {
return e.pagePath === s;
});
}
var ls = !!_pages.default.uniIdRouter;
var _ref47 = function () {
var _ref28 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _pages.default,
_ref28$pages = _ref28.pages,
t = _ref28$pages === void 0 ? [] : _ref28$pages,
_ref28$subPackages = _ref28.subPackages,
n = _ref28$subPackages === void 0 ? [] : _ref28$subPackages,
_ref28$uniIdRouter = _ref28.uniIdRouter,
s = _ref28$uniIdRouter === void 0 ? {} : _ref28$uniIdRouter,
_ref28$tabBar = _ref28.tabBar,
r = _ref28$tabBar === void 0 ? {} : _ref28$tabBar;
var i = s.loginPage,
_s$needLogin = s.needLogin,
o = _s$needLogin === void 0 ? [] : _s$needLogin,
_s$resToLogin = s.resToLogin,
a = _s$resToLogin === void 0 ? !0 : _s$resToLogin,
_os = os(t),
c = _os.needLoginPage,
u = _os.notNeedLoginPage,
_ref30 = function () {
var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var t = [],
n = [];
return e.forEach(function (e) {
var s = e.root,
_e$pages = e.pages,
r = _e$pages === void 0 ? [] : _e$pages,
_os2 = os(r, s),
i = _os2.needLoginPage,
o = _os2.notNeedLoginPage;
t.push.apply(t, (0, _toConsumableArray2.default)(i)), n.push.apply(n, (0, _toConsumableArray2.default)(o));
}), {
needLoginPage: t,
notNeedLoginPage: n
};
}(n),
h = _ref30.needLoginPage,
l = _ref30.notNeedLoginPage;
return {
loginPage: i,
routerNeedLogin: o,
resToLogin: a,
needLoginPage: [].concat((0, _toConsumableArray2.default)(c), (0, _toConsumableArray2.default)(h)),
notNeedLoginPage: [].concat((0, _toConsumableArray2.default)(u), (0, _toConsumableArray2.default)(l)),
loginPageInTabBar: hs(i, r)
};
}(),
ds = _ref47.loginPage,
ps = _ref47.routerNeedLogin,
fs = _ref47.resToLogin,
gs = _ref47.needLoginPage,
ms = _ref47.notNeedLoginPage,
ys = _ref47.loginPageInTabBar;
if (gs.indexOf(ds) > -1) throw new Error("Login page [".concat(ds, "] should not be \"needLogin\", please check your pages.json"));
function _s(e) {
var t = us();
if ("/" === e.charAt(0)) return e;
var _e$split = e.split("?"),
_e$split2 = (0, _slicedToArray2.default)(_e$split, 2),
n = _e$split2[0],
s = _e$split2[1],
r = n.replace(/^\//, "").split("/"),
i = t.split("/");
i.pop();
for (var _e23 = 0; _e23 < r.length; _e23++) {
var _t16 = r[_e23];
".." === _t16 ? i.pop() : "." !== _t16 && i.push(_t16);
}
return "" === i[0] && i.shift(), "/" + i.join("/") + (s ? "?" + s : "");
}
function ws(e) {
var t = as(_s(e));
return !(ms.indexOf(t) > -1) && (gs.indexOf(t) > -1 || ps.some(function (t) {
return function (e, t) {
return new RegExp(t).test(e);
}(e, t);
}));
}
function vs(_ref48) {
var e = _ref48.redirect;
var t = as(e),
n = as(ds);
return us() !== n && t !== n;
}
function Is() {
var _ref49 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
e = _ref49.api,
t = _ref49.redirect;
if (!t || !vs({
redirect: t
})) return;
var n = function (e, t) {
return "/" !== e.charAt(0) && (e = "/" + e), t ? e.indexOf("?") > -1 ? e + "&uniIdRedirectUrl=".concat(encodeURIComponent(t)) : e + "?uniIdRedirectUrl=".concat(encodeURIComponent(t)) : e;
}(ds, t);
ys ? "navigateTo" !== e && "redirectTo" !== e || (e = "switchTab") : "switchTab" === e && (e = "navigateTo");
var s = {
navigateTo: uni.navigateTo,
redirectTo: uni.redirectTo,
switchTab: uni.switchTab,
reLaunch: uni.reLaunch
};
setTimeout(function () {
s[e]({
url: n
});
}, 0);
}
function Ss() {
var _ref50 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
e = _ref50.url;
var t = {
abortLoginPageJump: !1,
autoToLoginPage: !1
},
n = function () {
var _se3 = se(),
e = _se3.token,
t = _se3.tokenExpired;
var n;
if (e) {
if (t < Date.now()) {
var _e24 = "uni-id-token-expired";
n = {
errCode: _e24,
errMsg: rs[_e24]
};
}
} else {
var _e25 = "uni-id-check-token-failed";
n = {
errCode: _e25,
errMsg: rs[_e25]
};
}
return n;
}();
if (ws(e) && n) {
n.uniIdRedirectUrl = e;
if (J($).length > 0) return setTimeout(function () {
Y($, n);
}, 0), t.abortLoginPageJump = !0, t;
t.autoToLoginPage = !0;
}
return t;
}
function bs() {
!function () {
var e = cs(),
_Ss = Ss({
url: e
}),
t = _Ss.abortLoginPageJump,
n = _Ss.autoToLoginPage;
t || n && Is({
api: "redirectTo",
redirect: e
});
}();
var e = ["navigateTo", "redirectTo", "reLaunch", "switchTab"];
var _loop3 = function _loop3(_t17) {
var n = e[_t17];
uni.addInterceptor(n, {
invoke: function invoke(e) {
var _Ss2 = Ss({
url: e.url
}),
t = _Ss2.abortLoginPageJump,
s = _Ss2.autoToLoginPage;
return t ? e : s ? (Is({
api: n,
redirect: _s(e.url)
}), !1) : e;
}
});
};
for (var _t17 = 0; _t17 < e.length; _t17++) {
_loop3(_t17);
}
}
function ks() {
this.onResponse(function (e) {
var t = e.type,
n = e.content;
var s = !1;
switch (t) {
case "cloudobject":
s = function (e) {
if ("object" != (0, _typeof2.default)(e)) return !1;
var _ref51 = e || {},
t = _ref51.errCode;
return t in rs;
}(n);
break;
case "clientdb":
s = function (e) {
if ("object" != (0, _typeof2.default)(e)) return !1;
var _ref52 = e || {},
t = _ref52.errCode;
return t in ss;
}(n);
}
s && function () {
var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var t = J($);
Z().then(function () {
var n = cs();
if (n && vs({
redirect: n
})) return t.length > 0 ? Y($, Object.assign({
uniIdRedirectUrl: n
}, e)) : void (ds && Is({
api: "navigateTo",
redirect: n
}));
});
}(n);
});
}
function As(e) {
!function (e) {
e.onResponse = function (e) {
V(j, e);
}, e.offResponse = function (e) {
G(j, e);
};
}(e), function (e) {
e.onNeedLogin = function (e) {
V($, e);
}, e.offNeedLogin = function (e) {
G($, e);
}, ls && (L("_globalUniCloudStatus").needLoginInit || (L("_globalUniCloudStatus").needLoginInit = !0, Z().then(function () {
bs.call(e);
}), fs && ks.call(e)));
}(e), function (e) {
e.onRefreshToken = function (e) {
V(B, e);
}, e.offRefreshToken = function (e) {
G(B, e);
};
}(e);
}
var Cs;
var Ps = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
Ts = /^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/;
function xs() {
var e = se().token || "",
t = e.split(".");
if (!e || 3 !== t.length) return {
uid: null,
role: [],
permission: [],
tokenExpired: 0
};
var n;
try {
n = JSON.parse((s = t[1], decodeURIComponent(Cs(s).split("").map(function (e) {
return "%" + ("00" + e.charCodeAt(0).toString(16)).slice(-2);
}).join(""))));
} catch (e) {
throw new Error("获取当前用户信息出错,详细错误信息为:" + e.message);
}
var s;
return n.tokenExpired = 1e3 * n.exp, delete n.exp, delete n.iat, n;
}
Cs = "function" != typeof atob ? function (e) {
if (e = String(e).replace(/[\t\n\f\r ]+/g, ""), !Ts.test(e)) throw new Error("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");
var t;
e += "==".slice(2 - (3 & e.length));
for (var n, s, r = "", i = 0; i < e.length;) {
t = Ps.indexOf(e.charAt(i++)) << 18 | Ps.indexOf(e.charAt(i++)) << 12 | (n = Ps.indexOf(e.charAt(i++))) << 6 | (s = Ps.indexOf(e.charAt(i++))), r += 64 === n ? String.fromCharCode(t >> 16 & 255) : 64 === s ? String.fromCharCode(t >> 16 & 255, t >> 8 & 255) : String.fromCharCode(t >> 16 & 255, t >> 8 & 255, 255 & t);
}
return r;
} : atob;
var Os = n(function (e, t) {
Object.defineProperty(t, "__esModule", {
value: !0
});
var n = "chooseAndUploadFile:ok",
s = "chooseAndUploadFile:fail";
function r(e, t) {
return e.tempFiles.forEach(function (e, n) {
e.name || (e.name = e.path.substring(e.path.lastIndexOf("/") + 1)), t && (e.fileType = t), e.cloudPath = Date.now() + "_" + n + e.name.substring(e.name.lastIndexOf("."));
}), e.tempFilePaths || (e.tempFilePaths = e.tempFiles.map(function (e) {
return e.path;
})), e;
}
function i(e, t, _ref53) {
var s = _ref53.onChooseFile,
r = _ref53.onUploadProgress;
return t.then(function (e) {
if (s) {
var _t18 = s(e);
if (void 0 !== _t18) return Promise.resolve(_t18).then(function (t) {
return void 0 === t ? e : t;
});
}
return e;
}).then(function (t) {
return !1 === t ? {
errMsg: n,
tempFilePaths: [],
tempFiles: []
} : function (e, t) {
var s = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5;
var r = arguments.length > 3 ? arguments[3] : undefined;
(t = Object.assign({}, t)).errMsg = n;
var i = t.tempFiles,
o = i.length;
var a = 0;
return new Promise(function (n) {
for (; a < s;) {
c();
}
function c() {
var s = a++;
if (s >= o) return void (!i.find(function (e) {
return !e.url && !e.errMsg;
}) && n(t));
var u = i[s];
e.uploadFile({
provider: u.provider,
filePath: u.path,
cloudPath: u.cloudPath,
fileType: u.fileType,
cloudPathAsRealPath: u.cloudPathAsRealPath,
onUploadProgress: function onUploadProgress(e) {
e.index = s, e.tempFile = u, e.tempFilePath = u.path, r && r(e);
}
}).then(function (e) {
u.url = e.fileID, s < o && c();
}).catch(function (e) {
u.errMsg = e.errMsg || e.message, s < o && c();
});
}
});
}(e, t, 5, r);
});
}
t.initChooseAndUploadFile = function (e) {
return function () {
var t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
type: "all"
};
return "image" === t.type ? i(e, function (e) {
var t = e.count,
n = e.sizeType,
_e$sourceType = e.sourceType,
i = _e$sourceType === void 0 ? ["album", "camera"] : _e$sourceType,
o = e.extension;
return new Promise(function (e, a) {
uni.chooseImage({
count: t,
sizeType: n,
sourceType: i,
extension: o,
success: function success(t) {
e(r(t, "image"));
},
fail: function fail(e) {
a({
errMsg: e.errMsg.replace("chooseImage:fail", s)
});
}
});
});
}(t), t) : "video" === t.type ? i(e, function (e) {
var t = e.camera,
n = e.compressed,
i = e.maxDuration,
_e$sourceType2 = e.sourceType,
o = _e$sourceType2 === void 0 ? ["album", "camera"] : _e$sourceType2,
a = e.extension;
return new Promise(function (e, c) {
uni.chooseVideo({
camera: t,
compressed: n,
maxDuration: i,
sourceType: o,
extension: a,
success: function success(t) {
var n = t.tempFilePath,
s = t.duration,
i = t.size,
o = t.height,
a = t.width;
e(r({
errMsg: "chooseVideo:ok",
tempFilePaths: [n],
tempFiles: [{
name: t.tempFile && t.tempFile.name || "",
path: n,
size: i,
type: t.tempFile && t.tempFile.type || "",
width: a,
height: o,
duration: s,
fileType: "video",
cloudPath: ""
}]
}, "video"));
},
fail: function fail(e) {
c({
errMsg: e.errMsg.replace("chooseVideo:fail", s)
});
}
});
});
}(t), t) : i(e, function (e) {
var t = e.count,
n = e.extension;
return new Promise(function (e, i) {
var o = uni.chooseFile;
if ("undefined" != typeof wx && "function" == typeof wx.chooseMessageFile && (o = wx.chooseMessageFile), "function" != typeof o) return i({
errMsg: s + " 请指定 type 类型,该平台仅支持选择 image 或 video。"
});
o({
type: "all",
count: t,
extension: n,
success: function success(t) {
e(r(t));
},
fail: function fail(e) {
i({
errMsg: e.errMsg.replace("chooseFile:fail", s)
});
}
});
});
}(t), t);
};
};
}),
Es = t(Os);
var Ls = "manual";
function Rs(e) {
return {
props: {
localdata: {
type: Array,
default: function _default() {
return [];
}
},
options: {
type: [Object, Array],
default: function _default() {
return {};
}
},
spaceInfo: {
type: Object,
default: function _default() {
return {};
}
},
collection: {
type: [String, Array],
default: ""
},
action: {
type: String,
default: ""
},
field: {
type: String,
default: ""
},
orderby: {
type: String,
default: ""
},
where: {
type: [String, Object],
default: ""
},
pageData: {
type: String,
default: "add"
},
pageCurrent: {
type: Number,
default: 1
},
pageSize: {
type: Number,
default: 20
},
getcount: {
type: [Boolean, String],
default: !1
},
gettree: {
type: [Boolean, String],
default: !1
},
gettreepath: {
type: [Boolean, String],
default: !1
},
startwith: {
type: String,
default: ""
},
limitlevel: {
type: Number,
default: 10
},
groupby: {
type: String,
default: ""
},
groupField: {
type: String,
default: ""
},
distinct: {
type: [Boolean, String],
default: !1
},
foreignKey: {
type: String,
default: ""
},
loadtime: {
type: String,
default: "auto"
},
manual: {
type: Boolean,
default: !1
}
},
data: function data() {
return {
mixinDatacomLoading: !1,
mixinDatacomHasMore: !1,
mixinDatacomResData: [],
mixinDatacomErrorMessage: "",
mixinDatacomPage: {},
mixinDatacomError: null
};
},
created: function created() {
var _this21 = this;
this.mixinDatacomPage = {
current: this.pageCurrent,
size: this.pageSize,
count: 0
}, this.$watch(function () {
var e = [];
return ["pageCurrent", "pageSize", "localdata", "collection", "action", "field", "orderby", "where", "getont", "getcount", "gettree", "groupby", "groupField", "distinct"].forEach(function (t) {
e.push(_this21[t]);
}), e;
}, function (e, t) {
if (_this21.loadtime === Ls) return;
var n = !1;
var s = [];
for (var _r9 = 2; _r9 < e.length; _r9++) {
e[_r9] !== t[_r9] && (s.push(e[_r9]), n = !0);
}
e[0] !== t[0] && (_this21.mixinDatacomPage.current = _this21.pageCurrent), _this21.mixinDatacomPage.size = _this21.pageSize, _this21.onMixinDatacomPropsChange(n, s);
});
},
methods: {
onMixinDatacomPropsChange: function onMixinDatacomPropsChange(e, t) {},
mixinDatacomEasyGet: function mixinDatacomEasyGet() {
var _this22 = this;
var _ref54 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
_ref54$getone = _ref54.getone,
e = _ref54$getone === void 0 ? !1 : _ref54$getone,
t = _ref54.success,
n = _ref54.fail;
this.mixinDatacomLoading || (this.mixinDatacomLoading = !0, this.mixinDatacomErrorMessage = "", this.mixinDatacomError = null, this.mixinDatacomGet().then(function (n) {
_this22.mixinDatacomLoading = !1;
var _n$result = n.result,
s = _n$result.data,
r = _n$result.count;
_this22.getcount && (_this22.mixinDatacomPage.count = r), _this22.mixinDatacomHasMore = s.length < _this22.pageSize;
var i = e ? s.length ? s[0] : void 0 : s;
_this22.mixinDatacomResData = i, t && t(i);
}).catch(function (e) {
_this22.mixinDatacomLoading = !1, _this22.mixinDatacomErrorMessage = e, _this22.mixinDatacomError = e, n && n(e);
}));
},
mixinDatacomGet: function mixinDatacomGet() {
var _n15;
var t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var n;
t = t || {}, n = "undefined" != typeof __uniX && __uniX ? e.databaseForJQL(this.spaceInfo) : e.database(this.spaceInfo);
var s = t.action || this.action;
s && (n = n.action(s));
var r = t.collection || this.collection;
n = Array.isArray(r) ? (_n15 = n).collection.apply(_n15, (0, _toConsumableArray2.default)(r)) : n.collection(r);
var i = t.where || this.where;
i && Object.keys(i).length && (n = n.where(i));
var o = t.field || this.field;
o && (n = n.field(o));
var a = t.foreignKey || this.foreignKey;
a && (n = n.foreignKey(a));
var c = t.groupby || this.groupby;
c && (n = n.groupBy(c));
var u = t.groupField || this.groupField;
u && (n = n.groupField(u));
!0 === (void 0 !== t.distinct ? t.distinct : this.distinct) && (n = n.distinct());
var h = t.orderby || this.orderby;
h && (n = n.orderBy(h));
var l = void 0 !== t.pageCurrent ? t.pageCurrent : this.mixinDatacomPage.current,
d = void 0 !== t.pageSize ? t.pageSize : this.mixinDatacomPage.size,
p = void 0 !== t.getcount ? t.getcount : this.getcount,
f = void 0 !== t.gettree ? t.gettree : this.gettree,
g = void 0 !== t.gettreepath ? t.gettreepath : this.gettreepath,
m = {
getCount: p
},
y = {
limitLevel: void 0 !== t.limitlevel ? t.limitlevel : this.limitlevel,
startWith: void 0 !== t.startwith ? t.startwith : this.startwith
};
return f && (m.getTree = y), g && (m.getTreePath = y), n = n.skip(d * (l - 1)).limit(d).get(m), n;
}
}
};
}
function Us(e) {
return function (t) {
var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
n = function (e) {
var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return e.customUI = t.customUI || e.customUI, e.parseSystemError = t.parseSystemError || e.parseSystemError, Object.assign(e.loadingOptions, t.loadingOptions), Object.assign(e.errorOptions, t.errorOptions), "object" == (0, _typeof2.default)(t.secretMethods) && (e.secretMethods = t.secretMethods), e;
}({
customUI: !1,
loadingOptions: {
title: "加载中...",
mask: !0
},
errorOptions: {
type: "modal",
retry: !1
}
}, n);
var _n16 = n,
s = _n16.customUI,
r = _n16.loadingOptions,
i = _n16.errorOptions,
o = _n16.parseSystemError,
a = !s;
return new Proxy({}, {
get: function get(s, c) {
switch (c) {
case "toString":
return "[object UniCloudObject]";
case "toJSON":
return {};
}
return function () {
var _ref55 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
e = _ref55.fn,
t = _ref55.interceptorName,
n = _ref55.getCallbackArgs;
return /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee53() {
var _len2,
s,
_key2,
r,
i,
o,
_args = arguments;
return _regenerator.default.wrap(function _callee53$(_context53) {
while (1) {
switch (_context53.prev = _context53.next) {
case 0:
for (_len2 = _args.length, s = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
s[_key2] = _args[_key2];
}
r = n ? n({
params: s
}) : {};
_context53.prev = 2;
_context53.next = 5;
return M(q(t, "invoke"), _objectSpread({}, r));
case 5:
_context53.next = 7;
return e.apply(void 0, s);
case 7:
i = _context53.sent;
_context53.next = 10;
return M(q(t, "success"), _objectSpread(_objectSpread({}, r), {}, {
result: i
}));
case 10:
return _context53.abrupt("return", i);
case 13:
_context53.prev = 13;
_context53.t0 = _context53["catch"](2);
o = _context53.t0;
_context53.next = 18;
return M(q(t, "fail"), _objectSpread(_objectSpread({}, r), {}, {
error: o
}));
case 18:
throw o;
case 19:
_context53.prev = 19;
_context53.next = 22;
return M(q(t, "complete"), o ? _objectSpread(_objectSpread({}, r), {}, {
error: o
}) : _objectSpread(_objectSpread({}, r), {}, {
result: i
}));
case 22:
return _context53.finish(19);
case 23:
case "end":
return _context53.stop();
}
}
}, _callee53, null, [[2, 13, 19, 23]]);
}));
}({
fn: function () {
var _s15 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee55() {
var l,
_len3,
h,
_key3,
d,
p,
_ref57,
f,
g,
m,
y,
_e26,
_yield,
_t19,
_n17,
_args4 = arguments;
return _regenerator.default.wrap(function _callee55$(_context55) {
while (1) {
switch (_context55.prev = _context55.next) {
case 0:
a && uni.showLoading({
title: r.title,
mask: r.mask
});
for (_len3 = _args4.length, h = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
h[_key3] = _args4[_key3];
}
d = {
name: t,
type: u,
data: {
method: c,
params: h
}
};
"object" == (0, _typeof2.default)(n.secretMethods) && function (e, t) {
var n = t.data.method,
s = e.secretMethods || {},
r = s[n] || s["*"];
r && (t.secretType = r);
}(n, d);
p = !1;
_context55.prev = 5;
_context55.next = 8;
return e.callFunction(d);
case 8:
l = _context55.sent;
_context55.next = 14;
break;
case 11:
_context55.prev = 11;
_context55.t0 = _context55["catch"](5);
p = !0, l = {
result: new te(_context55.t0)
};
case 14:
_ref57 = l.result || {}, f = _ref57.errSubject, g = _ref57.errCode, m = _ref57.errMsg, y = _ref57.newToken;
if (!(a && uni.hideLoading(), y && y.token && y.tokenExpired && (re(y), Y(B, _objectSpread({}, y))), g)) {
_context55.next = 39;
break;
}
_e26 = m;
if (!(p && o)) {
_context55.next = 24;
break;
}
_context55.next = 20;
return o({
objectName: t,
methodName: c,
params: h,
errSubject: f,
errCode: g,
errMsg: m
});
case 20:
_context55.t1 = _context55.sent.errMsg;
if (_context55.t1) {
_context55.next = 23;
break;
}
_context55.t1 = m;
case 23:
_e26 = _context55.t1;
case 24:
if (!a) {
_context55.next = 37;
break;
}
if (!("toast" === i.type)) {
_context55.next = 29;
break;
}
uni.showToast({
title: _e26,
icon: "none"
});
_context55.next = 37;
break;
case 29:
if (!("modal" !== i.type)) {
_context55.next = 31;
break;
}
throw new Error("Invalid errorOptions.type: ".concat(i.type));
case 31:
_context55.next = 33;
return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee54() {
var _ref59,
e,
t,
n,
s,
r,
_args2 = arguments;
return _regenerator.default.wrap(function _callee54$(_context54) {
while (1) {
switch (_context54.prev = _context54.next) {
case 0:
_ref59 = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {}, e = _ref59.title, t = _ref59.content, n = _ref59.showCancel, s = _ref59.cancelText, r = _ref59.confirmText;
return _context54.abrupt("return", new Promise(function (i, o) {
uni.showModal({
title: e,
content: t,
showCancel: n,
cancelText: s,
confirmText: r,
success: function success(e) {
i(e);
},
fail: function fail() {
i({
confirm: !1,
cancel: !0
});
}
});
}));
case 2:
case "end":
return _context54.stop();
}
}
}, _callee54);
}))({
title: "提示",
content: _e26,
showCancel: i.retry,
cancelText: "取消",
confirmText: i.retry ? "重试" : "确定"
});
case 33:
_yield = _context55.sent;
_t19 = _yield.confirm;
if (!(i.retry && _t19)) {
_context55.next = 37;
break;
}
return _context55.abrupt("return", s.apply(void 0, h));
case 37:
_n17 = new te({
subject: f,
code: g,
message: m,
requestId: l.requestId
});
throw _n17.detail = l.result, Y(j, {
type: z,
content: _n17
}), _n17;
case 39:
return _context55.abrupt("return", (Y(j, {
type: z,
content: l.result
}), l.result));
case 40:
case "end":
return _context55.stop();
}
}
}, _callee55, null, [[5, 11]]);
}));
function s() {
return _s15.apply(this, arguments);
}
return s;
}(),
interceptorName: "callObject",
getCallbackArgs: function getCallbackArgs() {
var _ref60 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
e = _ref60.params;
return {
objectName: t,
methodName: c,
params: e
};
}
});
}
});
};
}
function Ns(e) {
return L("_globalUniCloudSecureNetworkCache__{spaceId}".replace("{spaceId}", e.config.spaceId));
}
function Ds() {
return _Ds.apply(this, arguments);
}
function _Ds() {
_Ds = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee58() {
var _ref72,
e,
_ref72$callLoginByWei,
t,
n,
s,
r,
_args7 = arguments;
return _regenerator.default.wrap(function _callee58$(_context58) {
while (1) {
switch (_context58.prev = _context58.next) {
case 0:
_ref72 = _args7.length > 0 && _args7[0] !== undefined ? _args7[0] : {}, e = _ref72.openid, _ref72$callLoginByWei = _ref72.callLoginByWeixin, t = _ref72$callLoginByWei === void 0 ? !1 : _ref72$callLoginByWei;
n = Ns(this);
if (!("mp-weixin" !== C)) {
_context58.next = 4;
break;
}
throw new Error("[SecureNetwork] API `initSecureNetworkByWeixin` is not supported on platform `".concat(C, "`"));
case 4:
if (!(e && t)) {
_context58.next = 6;
break;
}
throw new Error("[SecureNetwork] openid and callLoginByWeixin cannot be passed at the same time");
case 6:
if (!e) {
_context58.next = 8;
break;
}
return _context58.abrupt("return", (n.mpWeixinOpenid = e, {}));
case 8:
_context58.next = 10;
return new Promise(function (e, t) {
uni.login({
success: function success(t) {
e(t.code);
},
fail: function fail(e) {
t(new Error(e.errMsg));
}
});
});
case 10:
s = _context58.sent;
r = this.importObject("uni-id-co", {
customUI: !0
});
_context58.next = 14;
return r.secureNetworkHandshakeByWeixin({
code: s,
callLoginByWeixin: t
});
case 14:
n.mpWeixinCode = s;
return _context58.abrupt("return", {
code: s
});
case 16:
case "end":
return _context58.stop();
}
}
}, _callee58, this);
}));
return _Ds.apply(this, arguments);
}
function Ms(_x40) {
return _Ms.apply(this, arguments);
}
function _Ms() {
_Ms = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee59(e) {
var t;
return _regenerator.default.wrap(function _callee59$(_context59) {
while (1) {
switch (_context59.prev = _context59.next) {
case 0:
t = Ns(this);
return _context59.abrupt("return", (t.initPromise || (t.initPromise = Ds.call(this, e).then(function (e) {
return e;
}).catch(function (e) {
throw delete t.initPromise, e;
})), t.initPromise));
case 2:
case "end":
return _context59.stop();
}
}
}, _callee59, this);
}));
return _Ms.apply(this, arguments);
}
function qs(e) {
return function () {
var _ref61 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
t = _ref61.openid,
_ref61$callLoginByWei = _ref61.callLoginByWeixin,
n = _ref61$callLoginByWei === void 0 ? !1 : _ref61$callLoginByWei;
return Ms.call(e, {
openid: t,
callLoginByWeixin: n
});
};
}
function Fs(e) {
!function (e) {
ue = e;
}(e);
}
function Ks(e) {
var t = {
getSystemInfo: uni.getSystemInfo,
getPushClientId: uni.getPushClientId
};
return function (n) {
return new Promise(function (s, r) {
t[e](_objectSpread(_objectSpread({}, n), {}, {
success: function success(e) {
s(e);
},
fail: function fail(e) {
r(e);
}
}));
});
};
}
var js = /*#__PURE__*/function (_ref62) {
(0, _inherits2.default)(js, _ref62);
var _super12 = _createSuper(js);
function js() {
var _this23;
(0, _classCallCheck2.default)(this, js);
_this23 = _super12.call(this), _this23._uniPushMessageCallback = _this23._receivePushMessage.bind((0, _assertThisInitialized2.default)(_this23)), _this23._currentMessageId = -1, _this23._payloadQueue = [];
return _this23;
}
(0, _createClass2.default)(js, [{
key: "init",
value: function init() {
var _this24 = this;
return Promise.all([Ks("getSystemInfo")(), Ks("getPushClientId")()]).then(function () {
var _ref63 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [],
_ref64 = (0, _slicedToArray2.default)(_ref63, 2),
_ref64$ = _ref64[0];
_ref64$ = _ref64$ === void 0 ? {} : _ref64$;
var e = _ref64$.appId,
_ref64$2 = _ref64[1];
_ref64$2 = _ref64$2 === void 0 ? {} : _ref64$2;
var t = _ref64$2.cid;
if (!e) throw new Error("Invalid appId, please check the manifest.json file");
if (!t) throw new Error("Invalid push client id");
_this24._appId = e, _this24._pushClientId = t, _this24._seqId = Date.now() + "-" + Math.floor(9e5 * Math.random() + 1e5), _this24.emit("open"), _this24._initMessageListener();
}, function (e) {
throw _this24.emit("error", e), _this24.close(), e;
});
}
}, {
key: "open",
value: function () {
var _open = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee56() {
return _regenerator.default.wrap(function _callee56$(_context56) {
while (1) {
switch (_context56.prev = _context56.next) {
case 0:
return _context56.abrupt("return", this.init());
case 1:
case "end":
return _context56.stop();
}
}
}, _callee56, this);
}));
function open() {
return _open.apply(this, arguments);
}
return open;
}()
}, {
key: "_isUniCloudSSE",
value: function _isUniCloudSSE(e) {
if ("receive" !== e.type) return !1;
var t = e && e.data && e.data.payload;
return !(!t || "UNI_CLOUD_SSE" !== t.channel || t.seqId !== this._seqId);
}
}, {
key: "_receivePushMessage",
value: function _receivePushMessage(e) {
if (!this._isUniCloudSSE(e)) return;
var t = e && e.data && e.data.payload,
n = t.action,
s = t.messageId,
r = t.message;
this._payloadQueue.push({
action: n,
messageId: s,
message: r
}), this._consumMessage();
}
}, {
key: "_consumMessage",
value: function _consumMessage() {
var _this25 = this;
for (;;) {
var _e27 = this._payloadQueue.find(function (e) {
return e.messageId === _this25._currentMessageId + 1;
});
if (!_e27) break;
this._currentMessageId++, this._parseMessagePayload(_e27);
}
}
}, {
key: "_parseMessagePayload",
value: function _parseMessagePayload(e) {
var t = e.action,
n = e.messageId,
s = e.message;
"end" === t ? this._end({
messageId: n,
message: s
}) : "message" === t && this._appendMessage({
messageId: n,
message: s
});
}
}, {
key: "_appendMessage",
value: function _appendMessage() {
var _ref65 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
e = _ref65.messageId,
t = _ref65.message;
this.emit("message", t);
}
}, {
key: "_end",
value: function _end() {
var _ref66 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
e = _ref66.messageId,
t = _ref66.message;
this.emit("end", t), this.close();
}
}, {
key: "_initMessageListener",
value: function _initMessageListener() {
uni.onPushMessage(this._uniPushMessageCallback);
}
}, {
key: "_destroy",
value: function _destroy() {
uni.offPushMessage(this._uniPushMessageCallback);
}
}, {
key: "toJSON",
value: function toJSON() {
return {
appId: this._appId,
pushClientId: this._pushClientId,
seqId: this._seqId
};
}
}, {
key: "close",
value: function close() {
this._destroy(), this.emit("close");
}
}]);
return js;
}( /*#__PURE__*/function () {
function _class6() {
(0, _classCallCheck2.default)(this, _class6);
this._callback = {};
}
(0, _createClass2.default)(_class6, [{
key: "addListener",
value: function addListener(e, t) {
this._callback[e] || (this._callback[e] = []), this._callback[e].push(t);
}
}, {
key: "on",
value: function on(e, t) {
return this.addListener(e, t);
}
}, {
key: "removeListener",
value: function removeListener(e, t) {
if (!t) throw new Error('The "listener" argument must be of type function. Received undefined');
var n = this._callback[e];
if (!n) return;
var s = function (e, t) {
for (var _n18 = e.length - 1; _n18 >= 0; _n18--) {
if (e[_n18] === t) return _n18;
}
return -1;
}(n, t);
n.splice(s, 1);
}
}, {
key: "off",
value: function off(e, t) {
return this.removeListener(e, t);
}
}, {
key: "removeAllListener",
value: function removeAllListener(e) {
delete this._callback[e];
}
}, {
key: "emit",
value: function emit(e) {
var n = this._callback[e];
for (var _len4 = arguments.length, t = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
t[_key4 - 1] = arguments[_key4];
}
if (n) for (var _e28 = 0; _e28 < n.length; _e28++) {
n[_e28].apply(n, t);
}
}
}]);
return _class6;
}());
function $s(_x41, _x42) {
return _$s.apply(this, arguments);
}
function _$s() {
_$s = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee60(e, t) {
var n, _e31, s;
return _regenerator.default.wrap(function _callee60$(_context60) {
while (1) {
switch (_context60.prev = _context60.next) {
case 0:
n = "http://".concat(e, ":").concat(t, "/system/ping");
_context60.prev = 1;
_context60.next = 4;
return s = {
url: n,
timeout: 500
}, new Promise(function (e, t) {
ne.request(_objectSpread(_objectSpread({}, s), {}, {
success: function success(t) {
e(t);
},
fail: function fail(e) {
t(e);
}
}));
});
case 4:
_e31 = _context60.sent;
return _context60.abrupt("return", !(!_e31.data || 0 !== _e31.data.code));
case 8:
_context60.prev = 8;
_context60.t0 = _context60["catch"](1);
return _context60.abrupt("return", !1);
case 11:
case "end":
return _context60.stop();
}
}
}, _callee60, null, [[1, 8]]);
}));
return _$s.apply(this, arguments);
}
function Bs(_x43) {
return _Bs.apply(this, arguments);
}
function _Bs() {
_Bs = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee62(e) {
var _ae2, _e32, _t21, t, _t$debugInfo, n, s, _yield2, r, i, o;
return _regenerator.default.wrap(function _callee62$(_context62) {
while (1) {
switch (_context62.prev = _context62.next) {
case 0:
if (S) {
_context62.next = 2;
break;
}
return _context62.abrupt("return", Promise.resolve());
case 2:
if ("app" === C) {
_ae2 = ae(), _e32 = _ae2.osName, _t21 = _ae2.osVersion;
"ios" === _e32 && function (e) {
if (!e || "string" != typeof e) return 0;
var t = e.match(/^(\d+)./);
return t && t[1] ? parseInt(t[1]) : 0;
}(_t21) >= 14 && console.warn("iOS 14及以上版本连接uniCloud本地调试服务需要允许客户端查找并连接到本地网络上的设备仅开发期间需要发行后不需要");
}
t = e.__dev__;
if (t.debugInfo) {
_context62.next = 6;
break;
}
return _context62.abrupt("return");
case 6:
_t$debugInfo = t.debugInfo;
n = _t$debugInfo.address;
s = _t$debugInfo.servePort;
_context62.next = 11;
return function () {
var _ref73 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee61(e, t) {
var n, _s16, _r10;
return _regenerator.default.wrap(function _callee61$(_context61) {
while (1) {
switch (_context61.prev = _context61.next) {
case 0:
_s16 = 0;
case 1:
if (!(_s16 < e.length)) {
_context61.next = 11;
break;
}
_r10 = e[_s16];
_context61.next = 5;
return $s(_r10, t);
case 5:
if (!_context61.sent) {
_context61.next = 8;
break;
}
n = _r10;
return _context61.abrupt("break", 11);
case 8:
_s16++;
_context61.next = 1;
break;
case 11:
return _context61.abrupt("return", {
address: n,
port: t
});
case 12:
case "end":
return _context61.stop();
}
}
}, _callee61);
}));
return function (_x44, _x45) {
return _ref73.apply(this, arguments);
};
}()(n, s);
case 11:
_yield2 = _context62.sent;
r = _yield2.address;
if (!r) {
_context62.next = 15;
break;
}
return _context62.abrupt("return", (t.localAddress = r, void (t.localPort = s)));
case 15:
i = console["app" === C ? "error" : "warn"];
o = "";
if (!("remote" === t.debugInfo.initialLaunchType ? (t.debugInfo.forceRemote = !0, o = "当前客户端和HBuilderX不在同一局域网下或其他网络原因无法连接HBuilderXuniCloud本地调试服务不对当前客户端生效。\n- 如果不使用uniCloud本地调试服务请直接忽略此信息。\n- 如需使用uniCloud本地调试服务请将客户端与主机连接到同一局域网下并重新运行到客户端。") : o = "无法连接uniCloud本地调试服务请检查当前客户端是否与主机在同一局域网下。\n- 如需使用uniCloud本地调试服务请将客户端与主机连接到同一局域网下并重新运行到客户端。", o += "\n- 如果在HBuilderX开启的状态下切换过网络环境请重启HBuilderX后再试\n- 检查系统防火墙是否拦截了HBuilderX自带的nodejs\n- 检查是否错误的使用拦截器修改uni.request方法的参数", "web" === C && (o += "\n- 部分浏览器开启节流模式之后访问本地地址受限,请检查是否启用了节流模式"), 0 === C.indexOf("mp-") && (o += "\n- 小程序中如何使用uniCloud请参考https://uniapp.dcloud.net.cn/uniCloud/publish.html#useinmp"), !t.debugInfo.forceRemote)) {
_context62.next = 19;
break;
}
throw new Error(o);
case 19:
i(o);
case 20:
case "end":
return _context62.stop();
}
}
}, _callee62);
}));
return _Bs.apply(this, arguments);
}
function Ws(e) {
e._initPromiseHub || (e._initPromiseHub = new v({
createPromise: function createPromise() {
var t = Promise.resolve();
var n;
n = 1, t = new Promise(function (e) {
setTimeout(function () {
e();
}, n);
});
var s = e.auth();
return t.then(function () {
return s.getLoginState();
}).then(function (e) {
return e ? Promise.resolve() : s.signInAnonymously();
});
}
}));
}
var Hs = {
tcb: St,
tencent: St,
aliyun: pe,
private: kt,
alipay: Ut
};
var zs = new ( /*#__PURE__*/function () {
function _class7() {
(0, _classCallCheck2.default)(this, _class7);
}
(0, _createClass2.default)(_class7, [{
key: "init",
value: function init(e) {
var t = {};
var n = Hs[e.provider];
if (!n) throw new Error("未提供正确的provider参数");
t = n.init(e), S && function (e) {
if (!S) return;
var t = {};
e.__dev__ = t, t.debugLog = S && ("web" === C && navigator.userAgent.indexOf("HBuilderX") > 0 || "app" === C);
var n = P;
n && !n.code && (t.debugInfo = n);
var s = new v({
createPromise: function createPromise() {
return Bs(e);
}
});
t.initLocalNetwork = function () {
return s.exec();
};
}(t), Ws(t), $n(t), function (e) {
var t = e.uploadFile;
e.uploadFile = function (e) {
return t.call(this, e);
};
}(t), function (e) {
e.database = function (t) {
if (t && Object.keys(t).length > 0) return e.init(t).database();
if (this._database) return this._database;
var n = Zn(es, {
uniClient: e
});
return this._database = n, n;
}, e.databaseForJQL = function (t) {
if (t && Object.keys(t).length > 0) return e.init(t).databaseForJQL();
if (this._databaseForJQL) return this._databaseForJQL;
var n = Zn(es, {
uniClient: e,
isJQL: !0
});
return this._databaseForJQL = n, n;
};
}(t), function (e) {
e.getCurrentUserInfo = xs, e.chooseAndUploadFile = Es.initChooseAndUploadFile(e), Object.assign(e, {
get mixinDatacom() {
return Rs(e);
}
}), e.SSEChannel = js, e.initSecureNetworkByWeixin = qs(e), e.setCustomClientInfo = Fs, e.importObject = Us(e);
}(t);
return ["callFunction", "uploadFile", "deleteFile", "getTempFileURL", "downloadFile", "chooseAndUploadFile"].forEach(function (e) {
if (!t[e]) return;
var n = t[e];
t[e] = function () {
return n.apply(t, Array.from(arguments));
}, t[e] = function (e, t) {
return function (n) {
var _this26 = this;
var s = !1;
if ("callFunction" === t) {
var _e29 = n && n.type || c;
s = _e29 !== c;
}
var r = "callFunction" === t && !s,
i = this._initPromiseHub.exec();
n = n || {};
var _ee2 = ee(n),
o = _ee2.success,
a = _ee2.fail,
u = _ee2.complete,
h = i.then(function () {
return s ? Promise.resolve() : M(q(t, "invoke"), n);
}).then(function () {
return e.call(_this26, n);
}).then(function (e) {
return s ? Promise.resolve(e) : M(q(t, "success"), e).then(function () {
return M(q(t, "complete"), e);
}).then(function () {
return r && Y(j, {
type: H,
content: e
}), Promise.resolve(e);
});
}, function (e) {
return s ? Promise.reject(e) : M(q(t, "fail"), e).then(function () {
return M(q(t, "complete"), e);
}).then(function () {
return Y(j, {
type: H,
content: e
}), Promise.reject(e);
});
});
if (!(o || a || u)) return h;
h.then(function (e) {
o && o(e), u && u(e), r && Y(j, {
type: H,
content: e
});
}, function (e) {
a && a(e), u && u(e), r && Y(j, {
type: H,
content: e
});
});
};
}(t[e], e).bind(t);
}), t.init = this.init, t;
}
}]);
return _class7;
}())();
(function () {
var e = T;
var t = {};
if (e && 1 === e.length) t = e[0], zs = zs.init(t), zs._isDefault = !0;else {
var _t20 = ["auth", "callFunction", "uploadFile", "deleteFile", "getTempFileURL", "downloadFile", "database", "getCurrentUSerInfo", "importObject"];
var _n19;
_n19 = e && e.length > 0 ? "应用有多个服务空间请通过uniCloud.init方法指定要使用的服务空间" : x ? "应用未关联服务空间请在uniCloud目录右键关联服务空间" : "uni-app cli项目内使用uniCloud需要使用HBuilderX的运行菜单运行项目且需要在uniCloud目录关联服务空间", _t20.forEach(function (e) {
zs[e] = function () {
return console.error(_n19), Promise.reject(new te({
code: "SYS_ERR",
message: _n19
}));
};
});
}
Object.assign(zs, {
get mixinDatacom() {
return Rs(zs);
}
}), As(zs), zs.addInterceptor = N, zs.removeInterceptor = D, zs.interceptObject = F, S && "web" === C && (window.uniCloud = zs);
})();
var Js = zs;
exports.default = Js;
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../webpack/buildin/global.js */ 3), __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 2)["default"], __webpack_require__(/*! ./node_modules/@dcloudio/uni-mp-weixin/dist/wx.js */ 1)["default"]))
/***/ }),
/***/ 457:
/*!************************************************************************************************!*\
!*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/@babel/runtime/regenerator/index.js ***!
\************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
// TODO(Babel 8): Remove this file.
var runtime = __webpack_require__(/*! @babel/runtime/helpers/regeneratorRuntime */ 458)();
module.exports = runtime;
/***/ }),
/***/ 458:
/*!*******************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/regeneratorRuntime.js ***!
\*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var _typeof = __webpack_require__(/*! ./typeof.js */ 13)["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 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 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 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;
/***/ }),
/***/ 459:
/*!**********************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/assertThisInitialized.js ***!
\**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
module.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 46:
/*!****************************************************!*\
!*** ./node_modules/vue-i18n/dist/vue-i18n.esm.js ***!
\****************************************************/
/*! exports provided: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/*!
* vue-i18n v8.28.2
* (c) 2022 kazuya kawaguchi
* Released under the MIT License.
*/
/* */
/**
* constants
*/
var numberFormatKeys = [
'compactDisplay',
'currency',
'currencyDisplay',
'currencySign',
'localeMatcher',
'notation',
'numberingSystem',
'signDisplay',
'style',
'unit',
'unitDisplay',
'useGrouping',
'minimumIntegerDigits',
'minimumFractionDigits',
'maximumFractionDigits',
'minimumSignificantDigits',
'maximumSignificantDigits'
];
var dateTimeFormatKeys = [
'dateStyle',
'timeStyle',
'calendar',
'localeMatcher',
"hour12",
"hourCycle",
"timeZone",
"formatMatcher",
'weekday',
'era',
'year',
'month',
'day',
'hour',
'minute',
'second',
'timeZoneName' ];
/**
* utilities
*/
function warn (msg, err) {
if (typeof console !== 'undefined') {
console.warn('[vue-i18n] ' + msg);
/* istanbul ignore if */
if (err) {
console.warn(err.stack);
}
}
}
function error (msg, err) {
if (typeof console !== 'undefined') {
console.error('[vue-i18n] ' + msg);
/* istanbul ignore if */
if (err) {
console.error(err.stack);
}
}
}
var isArray = Array.isArray;
function isObject (obj) {
return obj !== null && typeof obj === 'object'
}
function isBoolean (val) {
return typeof val === 'boolean'
}
function isString (val) {
return typeof val === 'string'
}
var toString = Object.prototype.toString;
var OBJECT_STRING = '[object Object]';
function isPlainObject (obj) {
return toString.call(obj) === OBJECT_STRING
}
function isNull (val) {
return val === null || val === undefined
}
function isFunction (val) {
return typeof val === 'function'
}
function parseArgs () {
var args = [], len = arguments.length;
while ( len-- ) args[ len ] = arguments[ len ];
var locale = null;
var params = null;
if (args.length === 1) {
if (isObject(args[0]) || isArray(args[0])) {
params = args[0];
} else if (typeof args[0] === 'string') {
locale = args[0];
}
} else if (args.length === 2) {
if (typeof args[0] === 'string') {
locale = args[0];
}
/* istanbul ignore if */
if (isObject(args[1]) || isArray(args[1])) {
params = args[1];
}
}
return { locale: locale, params: params }
}
function looseClone (obj) {
return JSON.parse(JSON.stringify(obj))
}
function remove (arr, item) {
if (arr.delete(item)) {
return arr
}
}
function arrayFrom (arr) {
var ret = [];
arr.forEach(function (a) { return ret.push(a); });
return ret
}
function includes (arr, item) {
return !!~arr.indexOf(item)
}
var hasOwnProperty = Object.prototype.hasOwnProperty;
function hasOwn (obj, key) {
return hasOwnProperty.call(obj, key)
}
function merge (target) {
var arguments$1 = arguments;
var output = Object(target);
for (var i = 1; i < arguments.length; i++) {
var source = arguments$1[i];
if (source !== undefined && source !== null) {
var key = (void 0);
for (key in source) {
if (hasOwn(source, key)) {
if (isObject(source[key])) {
output[key] = merge(output[key], source[key]);
} else {
output[key] = source[key];
}
}
}
}
}
return output
}
function looseEqual (a, b) {
if (a === b) { return true }
var isObjectA = isObject(a);
var isObjectB = isObject(b);
if (isObjectA && isObjectB) {
try {
var isArrayA = isArray(a);
var isArrayB = isArray(b);
if (isArrayA && isArrayB) {
return a.length === b.length && a.every(function (e, i) {
return looseEqual(e, b[i])
})
} else if (!isArrayA && !isArrayB) {
var keysA = Object.keys(a);
var keysB = Object.keys(b);
return keysA.length === keysB.length && keysA.every(function (key) {
return looseEqual(a[key], b[key])
})
} else {
/* istanbul ignore next */
return false
}
} catch (e) {
/* istanbul ignore next */
return false
}
} else if (!isObjectA && !isObjectB) {
return String(a) === String(b)
} else {
return false
}
}
/**
* Sanitizes html special characters from input strings. For mitigating risk of XSS attacks.
* @param rawText The raw input from the user that should be escaped.
*/
function escapeHtml(rawText) {
return rawText
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
.replace(/"/g, '&quot;')
.replace(/'/g, '&apos;')
}
/**
* Escapes html tags and special symbols from all provided params which were returned from parseArgs().params.
* This method performs an in-place operation on the params object.
*
* @param {any} params Parameters as provided from `parseArgs().params`.
* May be either an array of strings or a string->any map.
*
* @returns The manipulated `params` object.
*/
function escapeParams(params) {
if(params != null) {
Object.keys(params).forEach(function (key) {
if(typeof(params[key]) == 'string') {
params[key] = escapeHtml(params[key]);
}
});
}
return params
}
/* */
function extend (Vue) {
if (!Vue.prototype.hasOwnProperty('$i18n')) {
// $FlowFixMe
Object.defineProperty(Vue.prototype, '$i18n', {
get: function get () { return this._i18n }
});
}
Vue.prototype.$t = function (key) {
var values = [], len = arguments.length - 1;
while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];
var i18n = this.$i18n;
return i18n._t.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this ].concat( values ))
};
Vue.prototype.$tc = function (key, choice) {
var values = [], len = arguments.length - 2;
while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];
var i18n = this.$i18n;
return i18n._tc.apply(i18n, [ key, i18n.locale, i18n._getMessages(), this, choice ].concat( values ))
};
Vue.prototype.$te = function (key, locale) {
var i18n = this.$i18n;
return i18n._te(key, i18n.locale, i18n._getMessages(), locale)
};
Vue.prototype.$d = function (value) {
var ref;
var args = [], len = arguments.length - 1;
while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];
return (ref = this.$i18n).d.apply(ref, [ value ].concat( args ))
};
Vue.prototype.$n = function (value) {
var ref;
var args = [], len = arguments.length - 1;
while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];
return (ref = this.$i18n).n.apply(ref, [ value ].concat( args ))
};
}
/* */
/**
* Mixin
*
* If `bridge` mode, empty mixin is returned,
* else regulary mixin implementation is returned.
*/
function defineMixin (bridge) {
if ( bridge === void 0 ) bridge = false;
function mounted () {
if (this !== this.$root && this.$options.__INTLIFY_META__ && this.$el) {
this.$el.setAttribute('data-intlify', this.$options.__INTLIFY_META__);
}
}
return bridge
? { mounted: mounted } // delegate `vue-i18n-bridge` mixin implementation
: { // regulary
beforeCreate: function beforeCreate () {
var options = this.$options;
options.i18n = options.i18n || ((options.__i18nBridge || options.__i18n) ? {} : null);
if (options.i18n) {
if (options.i18n instanceof VueI18n) {
// init locale messages via custom blocks
if ((options.__i18nBridge || options.__i18n)) {
try {
var localeMessages = options.i18n && options.i18n.messages ? options.i18n.messages : {};
var _i18n = options.__i18nBridge || options.__i18n;
_i18n.forEach(function (resource) {
localeMessages = merge(localeMessages, JSON.parse(resource));
});
Object.keys(localeMessages).forEach(function (locale) {
options.i18n.mergeLocaleMessage(locale, localeMessages[locale]);
});
} catch (e) {
if (true) {
error("Cannot parse locale messages via custom blocks.", e);
}
}
}
this._i18n = options.i18n;
this._i18nWatcher = this._i18n.watchI18nData();
} else if (isPlainObject(options.i18n)) {
var rootI18n = this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n
? this.$root.$i18n
: null;
// component local i18n
if (rootI18n) {
options.i18n.root = this.$root;
options.i18n.formatter = rootI18n.formatter;
options.i18n.fallbackLocale = rootI18n.fallbackLocale;
options.i18n.formatFallbackMessages = rootI18n.formatFallbackMessages;
options.i18n.silentTranslationWarn = rootI18n.silentTranslationWarn;
options.i18n.silentFallbackWarn = rootI18n.silentFallbackWarn;
options.i18n.pluralizationRules = rootI18n.pluralizationRules;
options.i18n.preserveDirectiveContent = rootI18n.preserveDirectiveContent;
}
// init locale messages via custom blocks
if ((options.__i18nBridge || options.__i18n)) {
try {
var localeMessages$1 = options.i18n && options.i18n.messages ? options.i18n.messages : {};
var _i18n$1 = options.__i18nBridge || options.__i18n;
_i18n$1.forEach(function (resource) {
localeMessages$1 = merge(localeMessages$1, JSON.parse(resource));
});
options.i18n.messages = localeMessages$1;
} catch (e) {
if (true) {
warn("Cannot parse locale messages via custom blocks.", e);
}
}
}
var ref = options.i18n;
var sharedMessages = ref.sharedMessages;
if (sharedMessages && isPlainObject(sharedMessages)) {
options.i18n.messages = merge(options.i18n.messages, sharedMessages);
}
this._i18n = new VueI18n(options.i18n);
this._i18nWatcher = this._i18n.watchI18nData();
if (options.i18n.sync === undefined || !!options.i18n.sync) {
this._localeWatcher = this.$i18n.watchLocale();
}
if (rootI18n) {
rootI18n.onComponentInstanceCreated(this._i18n);
}
} else {
if (true) {
warn("Cannot be interpreted 'i18n' option.");
}
}
} else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {
// root i18n
this._i18n = this.$root.$i18n;
} else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {
// parent i18n
this._i18n = options.parent.$i18n;
}
},
beforeMount: function beforeMount () {
var options = this.$options;
options.i18n = options.i18n || ((options.__i18nBridge || options.__i18n) ? {} : null);
if (options.i18n) {
if (options.i18n instanceof VueI18n) {
// init locale messages via custom blocks
this._i18n.subscribeDataChanging(this);
this._subscribing = true;
} else if (isPlainObject(options.i18n)) {
this._i18n.subscribeDataChanging(this);
this._subscribing = true;
} else {
if (true) {
warn("Cannot be interpreted 'i18n' option.");
}
}
} else if (this.$root && this.$root.$i18n && this.$root.$i18n instanceof VueI18n) {
this._i18n.subscribeDataChanging(this);
this._subscribing = true;
} else if (options.parent && options.parent.$i18n && options.parent.$i18n instanceof VueI18n) {
this._i18n.subscribeDataChanging(this);
this._subscribing = true;
}
},
mounted: mounted,
beforeDestroy: function beforeDestroy () {
if (!this._i18n) { return }
var self = this;
this.$nextTick(function () {
if (self._subscribing) {
self._i18n.unsubscribeDataChanging(self);
delete self._subscribing;
}
if (self._i18nWatcher) {
self._i18nWatcher();
self._i18n.destroyVM();
delete self._i18nWatcher;
}
if (self._localeWatcher) {
self._localeWatcher();
delete self._localeWatcher;
}
});
}
}
}
/* */
var interpolationComponent = {
name: 'i18n',
functional: true,
props: {
tag: {
type: [String, Boolean, Object],
default: 'span'
},
path: {
type: String,
required: true
},
locale: {
type: String
},
places: {
type: [Array, Object]
}
},
render: function render (h, ref) {
var data = ref.data;
var parent = ref.parent;
var props = ref.props;
var slots = ref.slots;
var $i18n = parent.$i18n;
if (!$i18n) {
if (true) {
warn('Cannot find VueI18n instance!');
}
return
}
var path = props.path;
var locale = props.locale;
var places = props.places;
var params = slots();
var children = $i18n.i(
path,
locale,
onlyHasDefaultPlace(params) || places
? useLegacyPlaces(params.default, places)
: params
);
var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';
return tag ? h(tag, data, children) : children
}
};
function onlyHasDefaultPlace (params) {
var prop;
for (prop in params) {
if (prop !== 'default') { return false }
}
return Boolean(prop)
}
function useLegacyPlaces (children, places) {
var params = places ? createParamsFromPlaces(places) : {};
if (!children) { return params }
// Filter empty text nodes
children = children.filter(function (child) {
return child.tag || child.text.trim() !== ''
});
var everyPlace = children.every(vnodeHasPlaceAttribute);
if ( true && everyPlace) {
warn('`place` attribute is deprecated in next major version. Please switch to Vue slots.');
}
return children.reduce(
everyPlace ? assignChildPlace : assignChildIndex,
params
)
}
function createParamsFromPlaces (places) {
if (true) {
warn('`places` prop is deprecated in next major version. Please switch to Vue slots.');
}
return Array.isArray(places)
? places.reduce(assignChildIndex, {})
: Object.assign({}, places)
}
function assignChildPlace (params, child) {
if (child.data && child.data.attrs && child.data.attrs.place) {
params[child.data.attrs.place] = child;
}
return params
}
function assignChildIndex (params, child, index) {
params[index] = child;
return params
}
function vnodeHasPlaceAttribute (vnode) {
return Boolean(vnode.data && vnode.data.attrs && vnode.data.attrs.place)
}
/* */
var numberComponent = {
name: 'i18n-n',
functional: true,
props: {
tag: {
type: [String, Boolean, Object],
default: 'span'
},
value: {
type: Number,
required: true
},
format: {
type: [String, Object]
},
locale: {
type: String
}
},
render: function render (h, ref) {
var props = ref.props;
var parent = ref.parent;
var data = ref.data;
var i18n = parent.$i18n;
if (!i18n) {
if (true) {
warn('Cannot find VueI18n instance!');
}
return null
}
var key = null;
var options = null;
if (isString(props.format)) {
key = props.format;
} else if (isObject(props.format)) {
if (props.format.key) {
key = props.format.key;
}
// Filter out number format options only
options = Object.keys(props.format).reduce(function (acc, prop) {
var obj;
if (includes(numberFormatKeys, prop)) {
return Object.assign({}, acc, ( obj = {}, obj[prop] = props.format[prop], obj ))
}
return acc
}, null);
}
var locale = props.locale || i18n.locale;
var parts = i18n._ntp(props.value, locale, key, options);
var values = parts.map(function (part, index) {
var obj;
var slot = data.scopedSlots && data.scopedSlots[part.type];
return slot ? slot(( obj = {}, obj[part.type] = part.value, obj.index = index, obj.parts = parts, obj )) : part.value
});
var tag = (!!props.tag && props.tag !== true) || props.tag === false ? props.tag : 'span';
return tag
? h(tag, {
attrs: data.attrs,
'class': data['class'],
staticClass: data.staticClass
}, values)
: values
}
};
/* */
function bind (el, binding, vnode) {
if (!assert(el, vnode)) { return }
t(el, binding, vnode);
}
function update (el, binding, vnode, oldVNode) {
if (!assert(el, vnode)) { return }
var i18n = vnode.context.$i18n;
if (localeEqual(el, vnode) &&
(looseEqual(binding.value, binding.oldValue) &&
looseEqual(el._localeMessage, i18n.getLocaleMessage(i18n.locale)))) { return }
t(el, binding, vnode);
}
function unbind (el, binding, vnode, oldVNode) {
var vm = vnode.context;
if (!vm) {
warn('Vue instance does not exists in VNode context');
return
}
var i18n = vnode.context.$i18n || {};
if (!binding.modifiers.preserve && !i18n.preserveDirectiveContent) {
el.textContent = '';
}
el._vt = undefined;
delete el['_vt'];
el._locale = undefined;
delete el['_locale'];
el._localeMessage = undefined;
delete el['_localeMessage'];
}
function assert (el, vnode) {
var vm = vnode.context;
if (!vm) {
warn('Vue instance does not exists in VNode context');
return false
}
if (!vm.$i18n) {
warn('VueI18n instance does not exists in Vue instance');
return false
}
return true
}
function localeEqual (el, vnode) {
var vm = vnode.context;
return el._locale === vm.$i18n.locale
}
function t (el, binding, vnode) {
var ref$1, ref$2;
var value = binding.value;
var ref = parseValue(value);
var path = ref.path;
var locale = ref.locale;
var args = ref.args;
var choice = ref.choice;
if (!path && !locale && !args) {
warn('value type not supported');
return
}
if (!path) {
warn('`path` is required in v-t directive');
return
}
var vm = vnode.context;
if (choice != null) {
el._vt = el.textContent = (ref$1 = vm.$i18n).tc.apply(ref$1, [ path, choice ].concat( makeParams(locale, args) ));
} else {
el._vt = el.textContent = (ref$2 = vm.$i18n).t.apply(ref$2, [ path ].concat( makeParams(locale, args) ));
}
el._locale = vm.$i18n.locale;
el._localeMessage = vm.$i18n.getLocaleMessage(vm.$i18n.locale);
}
function parseValue (value) {
var path;
var locale;
var args;
var choice;
if (isString(value)) {
path = value;
} else if (isPlainObject(value)) {
path = value.path;
locale = value.locale;
args = value.args;
choice = value.choice;
}
return { path: path, locale: locale, args: args, choice: choice }
}
function makeParams (locale, args) {
var params = [];
locale && params.push(locale);
if (args && (Array.isArray(args) || isPlainObject(args))) {
params.push(args);
}
return params
}
var Vue;
function install (_Vue, options) {
if ( options === void 0 ) options = { bridge: false };
/* istanbul ignore if */
if ( true && install.installed && _Vue === Vue) {
warn('already installed.');
return
}
install.installed = true;
Vue = _Vue;
var version = (Vue.version && Number(Vue.version.split('.')[0])) || -1;
/* istanbul ignore if */
if ( true && version < 2) {
warn(("vue-i18n (" + (install.version) + ") need to use Vue 2.0 or later (Vue: " + (Vue.version) + ")."));
return
}
extend(Vue);
Vue.mixin(defineMixin(options.bridge));
Vue.directive('t', { bind: bind, update: update, unbind: unbind });
Vue.component(interpolationComponent.name, interpolationComponent);
Vue.component(numberComponent.name, numberComponent);
// use simple mergeStrategies to prevent i18n instance lose '__proto__'
var strats = Vue.config.optionMergeStrategies;
strats.i18n = function (parentVal, childVal) {
return childVal === undefined
? parentVal
: childVal
};
}
/* */
var BaseFormatter = function BaseFormatter () {
this._caches = Object.create(null);
};
BaseFormatter.prototype.interpolate = function interpolate (message, values) {
if (!values) {
return [message]
}
var tokens = this._caches[message];
if (!tokens) {
tokens = parse(message);
this._caches[message] = tokens;
}
return compile(tokens, values)
};
var RE_TOKEN_LIST_VALUE = /^(?:\d)+/;
var RE_TOKEN_NAMED_VALUE = /^(?:\w)+/;
function parse (format) {
var tokens = [];
var position = 0;
var text = '';
while (position < format.length) {
var char = format[position++];
if (char === '{') {
if (text) {
tokens.push({ type: 'text', value: text });
}
text = '';
var sub = '';
char = format[position++];
while (char !== undefined && char !== '}') {
sub += char;
char = format[position++];
}
var isClosed = char === '}';
var type = RE_TOKEN_LIST_VALUE.test(sub)
? 'list'
: isClosed && RE_TOKEN_NAMED_VALUE.test(sub)
? 'named'
: 'unknown';
tokens.push({ value: sub, type: type });
} else if (char === '%') {
// when found rails i18n syntax, skip text capture
if (format[(position)] !== '{') {
text += char;
}
} else {
text += char;
}
}
text && tokens.push({ type: 'text', value: text });
return tokens
}
function compile (tokens, values) {
var compiled = [];
var index = 0;
var mode = Array.isArray(values)
? 'list'
: isObject(values)
? 'named'
: 'unknown';
if (mode === 'unknown') { return compiled }
while (index < tokens.length) {
var token = tokens[index];
switch (token.type) {
case 'text':
compiled.push(token.value);
break
case 'list':
compiled.push(values[parseInt(token.value, 10)]);
break
case 'named':
if (mode === 'named') {
compiled.push((values)[token.value]);
} else {
if (true) {
warn(("Type of token '" + (token.type) + "' and format of value '" + mode + "' don't match!"));
}
}
break
case 'unknown':
if (true) {
warn("Detect 'unknown' type of token!");
}
break
}
index++;
}
return compiled
}
/* */
/**
* Path parser
* - Inspired:
* Vue.js Path parser
*/
// actions
var APPEND = 0;
var PUSH = 1;
var INC_SUB_PATH_DEPTH = 2;
var PUSH_SUB_PATH = 3;
// states
var BEFORE_PATH = 0;
var IN_PATH = 1;
var BEFORE_IDENT = 2;
var IN_IDENT = 3;
var IN_SUB_PATH = 4;
var IN_SINGLE_QUOTE = 5;
var IN_DOUBLE_QUOTE = 6;
var AFTER_PATH = 7;
var ERROR = 8;
var pathStateMachine = [];
pathStateMachine[BEFORE_PATH] = {
'ws': [BEFORE_PATH],
'ident': [IN_IDENT, APPEND],
'[': [IN_SUB_PATH],
'eof': [AFTER_PATH]
};
pathStateMachine[IN_PATH] = {
'ws': [IN_PATH],
'.': [BEFORE_IDENT],
'[': [IN_SUB_PATH],
'eof': [AFTER_PATH]
};
pathStateMachine[BEFORE_IDENT] = {
'ws': [BEFORE_IDENT],
'ident': [IN_IDENT, APPEND],
'0': [IN_IDENT, APPEND],
'number': [IN_IDENT, APPEND]
};
pathStateMachine[IN_IDENT] = {
'ident': [IN_IDENT, APPEND],
'0': [IN_IDENT, APPEND],
'number': [IN_IDENT, APPEND],
'ws': [IN_PATH, PUSH],
'.': [BEFORE_IDENT, PUSH],
'[': [IN_SUB_PATH, PUSH],
'eof': [AFTER_PATH, PUSH]
};
pathStateMachine[IN_SUB_PATH] = {
"'": [IN_SINGLE_QUOTE, APPEND],
'"': [IN_DOUBLE_QUOTE, APPEND],
'[': [IN_SUB_PATH, INC_SUB_PATH_DEPTH],
']': [IN_PATH, PUSH_SUB_PATH],
'eof': ERROR,
'else': [IN_SUB_PATH, APPEND]
};
pathStateMachine[IN_SINGLE_QUOTE] = {
"'": [IN_SUB_PATH, APPEND],
'eof': ERROR,
'else': [IN_SINGLE_QUOTE, APPEND]
};
pathStateMachine[IN_DOUBLE_QUOTE] = {
'"': [IN_SUB_PATH, APPEND],
'eof': ERROR,
'else': [IN_DOUBLE_QUOTE, APPEND]
};
/**
* Check if an expression is a literal value.
*/
var literalValueRE = /^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;
function isLiteral (exp) {
return literalValueRE.test(exp)
}
/**
* Strip quotes from a string
*/
function stripQuotes (str) {
var a = str.charCodeAt(0);
var b = str.charCodeAt(str.length - 1);
return a === b && (a === 0x22 || a === 0x27)
? str.slice(1, -1)
: str
}
/**
* Determine the type of a character in a keypath.
*/
function getPathCharType (ch) {
if (ch === undefined || ch === null) { return 'eof' }
var code = ch.charCodeAt(0);
switch (code) {
case 0x5B: // [
case 0x5D: // ]
case 0x2E: // .
case 0x22: // "
case 0x27: // '
return ch
case 0x5F: // _
case 0x24: // $
case 0x2D: // -
return 'ident'
case 0x09: // Tab
case 0x0A: // Newline
case 0x0D: // Return
case 0xA0: // No-break space
case 0xFEFF: // Byte Order Mark
case 0x2028: // Line Separator
case 0x2029: // Paragraph Separator
return 'ws'
}
return 'ident'
}
/**
* Format a subPath, return its plain form if it is
* a literal string or number. Otherwise prepend the
* dynamic indicator (*).
*/
function formatSubPath (path) {
var trimmed = path.trim();
// invalid leading 0
if (path.charAt(0) === '0' && isNaN(path)) { return false }
return isLiteral(trimmed) ? stripQuotes(trimmed) : '*' + trimmed
}
/**
* Parse a string path into an array of segments
*/
function parse$1 (path) {
var keys = [];
var index = -1;
var mode = BEFORE_PATH;
var subPathDepth = 0;
var c;
var key;
var newChar;
var type;
var transition;
var action;
var typeMap;
var actions = [];
actions[PUSH] = function () {
if (key !== undefined) {
keys.push(key);
key = undefined;
}
};
actions[APPEND] = function () {
if (key === undefined) {
key = newChar;
} else {
key += newChar;
}
};
actions[INC_SUB_PATH_DEPTH] = function () {
actions[APPEND]();
subPathDepth++;
};
actions[PUSH_SUB_PATH] = function () {
if (subPathDepth > 0) {
subPathDepth--;
mode = IN_SUB_PATH;
actions[APPEND]();
} else {
subPathDepth = 0;
if (key === undefined) { return false }
key = formatSubPath(key);
if (key === false) {
return false
} else {
actions[PUSH]();
}
}
};
function maybeUnescapeQuote () {
var nextChar = path[index + 1];
if ((mode === IN_SINGLE_QUOTE && nextChar === "'") ||
(mode === IN_DOUBLE_QUOTE && nextChar === '"')) {
index++;
newChar = '\\' + nextChar;
actions[APPEND]();
return true
}
}
while (mode !== null) {
index++;
c = path[index];
if (c === '\\' && maybeUnescapeQuote()) {
continue
}
type = getPathCharType(c);
typeMap = pathStateMachine[mode];
transition = typeMap[type] || typeMap['else'] || ERROR;
if (transition === ERROR) {
return // parse error
}
mode = transition[0];
action = actions[transition[1]];
if (action) {
newChar = transition[2];
newChar = newChar === undefined
? c
: newChar;
if (action() === false) {
return
}
}
if (mode === AFTER_PATH) {
return keys
}
}
}
var I18nPath = function I18nPath () {
this._cache = Object.create(null);
};
/**
* External parse that check for a cache hit first
*/
I18nPath.prototype.parsePath = function parsePath (path) {
var hit = this._cache[path];
if (!hit) {
hit = parse$1(path);
if (hit) {
this._cache[path] = hit;
}
}
return hit || []
};
/**
* Get path value from path string
*/
I18nPath.prototype.getPathValue = function getPathValue (obj, path) {
if (!isObject(obj)) { return null }
var paths = this.parsePath(path);
if (paths.length === 0) {
return null
} else {
var length = paths.length;
var last = obj;
var i = 0;
while (i < length) {
var value = last[paths[i]];
if (value === undefined || value === null) {
return null
}
last = value;
i++;
}
return last
}
};
/* */
var htmlTagMatcher = /<\/?[\w\s="/.':;#-\/]+>/;
var linkKeyMatcher = /(?:@(?:\.[a-zA-Z]+)?:(?:[\w\-_|./]+|\([\w\-_:|./]+\)))/g;
var linkKeyPrefixMatcher = /^@(?:\.([a-zA-Z]+))?:/;
var bracketsMatcher = /[()]/g;
var defaultModifiers = {
'upper': function (str) { return str.toLocaleUpperCase(); },
'lower': function (str) { return str.toLocaleLowerCase(); },
'capitalize': function (str) { return ("" + (str.charAt(0).toLocaleUpperCase()) + (str.substr(1))); }
};
var defaultFormatter = new BaseFormatter();
var VueI18n = function VueI18n (options) {
var this$1 = this;
if ( options === void 0 ) options = {};
// Auto install if it is not done yet and `window` has `Vue`.
// To allow users to avoid auto-installation in some cases,
// this code should be placed here. See #290
/* istanbul ignore if */
if (!Vue && typeof window !== 'undefined' && window.Vue) {
install(window.Vue);
}
var locale = options.locale || 'en-US';
var fallbackLocale = options.fallbackLocale === false
? false
: options.fallbackLocale || 'en-US';
var messages = options.messages || {};
var dateTimeFormats = options.dateTimeFormats || options.datetimeFormats || {};
var numberFormats = options.numberFormats || {};
this._vm = null;
this._formatter = options.formatter || defaultFormatter;
this._modifiers = options.modifiers || {};
this._missing = options.missing || null;
this._root = options.root || null;
this._sync = options.sync === undefined ? true : !!options.sync;
this._fallbackRoot = options.fallbackRoot === undefined
? true
: !!options.fallbackRoot;
this._fallbackRootWithEmptyString = options.fallbackRootWithEmptyString === undefined
? true
: !!options.fallbackRootWithEmptyString;
this._formatFallbackMessages = options.formatFallbackMessages === undefined
? false
: !!options.formatFallbackMessages;
this._silentTranslationWarn = options.silentTranslationWarn === undefined
? false
: options.silentTranslationWarn;
this._silentFallbackWarn = options.silentFallbackWarn === undefined
? false
: !!options.silentFallbackWarn;
this._dateTimeFormatters = {};
this._numberFormatters = {};
this._path = new I18nPath();
this._dataListeners = new Set();
this._componentInstanceCreatedListener = options.componentInstanceCreatedListener || null;
this._preserveDirectiveContent = options.preserveDirectiveContent === undefined
? false
: !!options.preserveDirectiveContent;
this.pluralizationRules = options.pluralizationRules || {};
this._warnHtmlInMessage = options.warnHtmlInMessage || 'off';
this._postTranslation = options.postTranslation || null;
this._escapeParameterHtml = options.escapeParameterHtml || false;
if ('__VUE_I18N_BRIDGE__' in options) {
this.__VUE_I18N_BRIDGE__ = options.__VUE_I18N_BRIDGE__;
}
/**
* @param choice {number} a choice index given by the input to $tc: `$tc('path.to.rule', choiceIndex)`
* @param choicesLength {number} an overall amount of available choices
* @returns a final choice index
*/
this.getChoiceIndex = function (choice, choicesLength) {
var thisPrototype = Object.getPrototypeOf(this$1);
if (thisPrototype && thisPrototype.getChoiceIndex) {
var prototypeGetChoiceIndex = (thisPrototype.getChoiceIndex);
return (prototypeGetChoiceIndex).call(this$1, choice, choicesLength)
}
// Default (old) getChoiceIndex implementation - english-compatible
var defaultImpl = function (_choice, _choicesLength) {
_choice = Math.abs(_choice);
if (_choicesLength === 2) {
return _choice
? _choice > 1
? 1
: 0
: 1
}
return _choice ? Math.min(_choice, 2) : 0
};
if (this$1.locale in this$1.pluralizationRules) {
return this$1.pluralizationRules[this$1.locale].apply(this$1, [choice, choicesLength])
} else {
return defaultImpl(choice, choicesLength)
}
};
this._exist = function (message, key) {
if (!message || !key) { return false }
if (!isNull(this$1._path.getPathValue(message, key))) { return true }
// fallback for flat key
if (message[key]) { return true }
return false
};
if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {
Object.keys(messages).forEach(function (locale) {
this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);
});
}
this._initVM({
locale: locale,
fallbackLocale: fallbackLocale,
messages: messages,
dateTimeFormats: dateTimeFormats,
numberFormats: numberFormats
});
};
var prototypeAccessors = { vm: { configurable: true },messages: { configurable: true },dateTimeFormats: { configurable: true },numberFormats: { configurable: true },availableLocales: { configurable: true },locale: { configurable: true },fallbackLocale: { configurable: true },formatFallbackMessages: { configurable: true },missing: { configurable: true },formatter: { configurable: true },silentTranslationWarn: { configurable: true },silentFallbackWarn: { configurable: true },preserveDirectiveContent: { configurable: true },warnHtmlInMessage: { configurable: true },postTranslation: { configurable: true },sync: { configurable: true } };
VueI18n.prototype._checkLocaleMessage = function _checkLocaleMessage (locale, level, message) {
var paths = [];
var fn = function (level, locale, message, paths) {
if (isPlainObject(message)) {
Object.keys(message).forEach(function (key) {
var val = message[key];
if (isPlainObject(val)) {
paths.push(key);
paths.push('.');
fn(level, locale, val, paths);
paths.pop();
paths.pop();
} else {
paths.push(key);
fn(level, locale, val, paths);
paths.pop();
}
});
} else if (isArray(message)) {
message.forEach(function (item, index) {
if (isPlainObject(item)) {
paths.push(("[" + index + "]"));
paths.push('.');
fn(level, locale, item, paths);
paths.pop();
paths.pop();
} else {
paths.push(("[" + index + "]"));
fn(level, locale, item, paths);
paths.pop();
}
});
} else if (isString(message)) {
var ret = htmlTagMatcher.test(message);
if (ret) {
var msg = "Detected HTML in message '" + message + "' of keypath '" + (paths.join('')) + "' at '" + locale + "'. Consider component interpolation with '<i18n>' to avoid XSS. See https://bit.ly/2ZqJzkp";
if (level === 'warn') {
warn(msg);
} else if (level === 'error') {
error(msg);
}
}
}
};
fn(level, locale, message, paths);
};
VueI18n.prototype._initVM = function _initVM (data) {
var silent = Vue.config.silent;
Vue.config.silent = true;
this._vm = new Vue({ data: data, __VUE18N__INSTANCE__: true });
Vue.config.silent = silent;
};
VueI18n.prototype.destroyVM = function destroyVM () {
this._vm.$destroy();
};
VueI18n.prototype.subscribeDataChanging = function subscribeDataChanging (vm) {
this._dataListeners.add(vm);
};
VueI18n.prototype.unsubscribeDataChanging = function unsubscribeDataChanging (vm) {
remove(this._dataListeners, vm);
};
VueI18n.prototype.watchI18nData = function watchI18nData () {
var this$1 = this;
return this._vm.$watch('$data', function () {
var listeners = arrayFrom(this$1._dataListeners);
var i = listeners.length;
while(i--) {
Vue.nextTick(function () {
listeners[i] && listeners[i].$forceUpdate();
});
}
}, { deep: true })
};
VueI18n.prototype.watchLocale = function watchLocale (composer) {
if (!composer) {
/* istanbul ignore if */
if (!this._sync || !this._root) { return null }
var target = this._vm;
return this._root.$i18n.vm.$watch('locale', function (val) {
target.$set(target, 'locale', val);
target.$forceUpdate();
}, { immediate: true })
} else {
// deal with vue-i18n-bridge
if (!this.__VUE_I18N_BRIDGE__) { return null }
var self = this;
var target$1 = this._vm;
return this.vm.$watch('locale', function (val) {
target$1.$set(target$1, 'locale', val);
if (self.__VUE_I18N_BRIDGE__ && composer) {
composer.locale.value = val;
}
target$1.$forceUpdate();
}, { immediate: true })
}
};
VueI18n.prototype.onComponentInstanceCreated = function onComponentInstanceCreated (newI18n) {
if (this._componentInstanceCreatedListener) {
this._componentInstanceCreatedListener(newI18n, this);
}
};
prototypeAccessors.vm.get = function () { return this._vm };
prototypeAccessors.messages.get = function () { return looseClone(this._getMessages()) };
prototypeAccessors.dateTimeFormats.get = function () { return looseClone(this._getDateTimeFormats()) };
prototypeAccessors.numberFormats.get = function () { return looseClone(this._getNumberFormats()) };
prototypeAccessors.availableLocales.get = function () { return Object.keys(this.messages).sort() };
prototypeAccessors.locale.get = function () { return this._vm.locale };
prototypeAccessors.locale.set = function (locale) {
this._vm.$set(this._vm, 'locale', locale);
};
prototypeAccessors.fallbackLocale.get = function () { return this._vm.fallbackLocale };
prototypeAccessors.fallbackLocale.set = function (locale) {
this._localeChainCache = {};
this._vm.$set(this._vm, 'fallbackLocale', locale);
};
prototypeAccessors.formatFallbackMessages.get = function () { return this._formatFallbackMessages };
prototypeAccessors.formatFallbackMessages.set = function (fallback) { this._formatFallbackMessages = fallback; };
prototypeAccessors.missing.get = function () { return this._missing };
prototypeAccessors.missing.set = function (handler) { this._missing = handler; };
prototypeAccessors.formatter.get = function () { return this._formatter };
prototypeAccessors.formatter.set = function (formatter) { this._formatter = formatter; };
prototypeAccessors.silentTranslationWarn.get = function () { return this._silentTranslationWarn };
prototypeAccessors.silentTranslationWarn.set = function (silent) { this._silentTranslationWarn = silent; };
prototypeAccessors.silentFallbackWarn.get = function () { return this._silentFallbackWarn };
prototypeAccessors.silentFallbackWarn.set = function (silent) { this._silentFallbackWarn = silent; };
prototypeAccessors.preserveDirectiveContent.get = function () { return this._preserveDirectiveContent };
prototypeAccessors.preserveDirectiveContent.set = function (preserve) { this._preserveDirectiveContent = preserve; };
prototypeAccessors.warnHtmlInMessage.get = function () { return this._warnHtmlInMessage };
prototypeAccessors.warnHtmlInMessage.set = function (level) {
var this$1 = this;
var orgLevel = this._warnHtmlInMessage;
this._warnHtmlInMessage = level;
if (orgLevel !== level && (level === 'warn' || level === 'error')) {
var messages = this._getMessages();
Object.keys(messages).forEach(function (locale) {
this$1._checkLocaleMessage(locale, this$1._warnHtmlInMessage, messages[locale]);
});
}
};
prototypeAccessors.postTranslation.get = function () { return this._postTranslation };
prototypeAccessors.postTranslation.set = function (handler) { this._postTranslation = handler; };
prototypeAccessors.sync.get = function () { return this._sync };
prototypeAccessors.sync.set = function (val) { this._sync = val; };
VueI18n.prototype._getMessages = function _getMessages () { return this._vm.messages };
VueI18n.prototype._getDateTimeFormats = function _getDateTimeFormats () { return this._vm.dateTimeFormats };
VueI18n.prototype._getNumberFormats = function _getNumberFormats () { return this._vm.numberFormats };
VueI18n.prototype._warnDefault = function _warnDefault (locale, key, result, vm, values, interpolateMode) {
if (!isNull(result)) { return result }
if (this._missing) {
var missingRet = this._missing.apply(null, [locale, key, vm, values]);
if (isString(missingRet)) {
return missingRet
}
} else {
if ( true && !this._isSilentTranslationWarn(key)) {
warn(
"Cannot translate the value of keypath '" + key + "'. " +
'Use the value of keypath as default.'
);
}
}
if (this._formatFallbackMessages) {
var parsedArgs = parseArgs.apply(void 0, values);
return this._render(key, interpolateMode, parsedArgs.params, key)
} else {
return key
}
};
VueI18n.prototype._isFallbackRoot = function _isFallbackRoot (val) {
return (this._fallbackRootWithEmptyString? !val : isNull(val)) && !isNull(this._root) && this._fallbackRoot
};
VueI18n.prototype._isSilentFallbackWarn = function _isSilentFallbackWarn (key) {
return this._silentFallbackWarn instanceof RegExp
? this._silentFallbackWarn.test(key)
: this._silentFallbackWarn
};
VueI18n.prototype._isSilentFallback = function _isSilentFallback (locale, key) {
return this._isSilentFallbackWarn(key) && (this._isFallbackRoot() || locale !== this.fallbackLocale)
};
VueI18n.prototype._isSilentTranslationWarn = function _isSilentTranslationWarn (key) {
return this._silentTranslationWarn instanceof RegExp
? this._silentTranslationWarn.test(key)
: this._silentTranslationWarn
};
VueI18n.prototype._interpolate = function _interpolate (
locale,
message,
key,
host,
interpolateMode,
values,
visitedLinkStack
) {
if (!message) { return null }
var pathRet = this._path.getPathValue(message, key);
if (isArray(pathRet) || isPlainObject(pathRet)) { return pathRet }
var ret;
if (isNull(pathRet)) {
/* istanbul ignore else */
if (isPlainObject(message)) {
ret = message[key];
if (!(isString(ret) || isFunction(ret))) {
if ( true && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {
warn(("Value of key '" + key + "' is not a string or function !"));
}
return null
}
} else {
return null
}
} else {
/* istanbul ignore else */
if (isString(pathRet) || isFunction(pathRet)) {
ret = pathRet;
} else {
if ( true && !this._isSilentTranslationWarn(key) && !this._isSilentFallback(locale, key)) {
warn(("Value of key '" + key + "' is not a string or function!"));
}
return null
}
}
// Check for the existence of links within the translated string
if (isString(ret) && (ret.indexOf('@:') >= 0 || ret.indexOf('@.') >= 0)) {
ret = this._link(locale, message, ret, host, 'raw', values, visitedLinkStack);
}
return this._render(ret, interpolateMode, values, key)
};
VueI18n.prototype._link = function _link (
locale,
message,
str,
host,
interpolateMode,
values,
visitedLinkStack
) {
var ret = str;
// Match all the links within the local
// We are going to replace each of
// them with its translation
var matches = ret.match(linkKeyMatcher);
// eslint-disable-next-line no-autofix/prefer-const
for (var idx in matches) {
// ie compatible: filter custom array
// prototype method
if (!matches.hasOwnProperty(idx)) {
continue
}
var link = matches[idx];
var linkKeyPrefixMatches = link.match(linkKeyPrefixMatcher);
var linkPrefix = linkKeyPrefixMatches[0];
var formatterName = linkKeyPrefixMatches[1];
// Remove the leading @:, @.case: and the brackets
var linkPlaceholder = link.replace(linkPrefix, '').replace(bracketsMatcher, '');
if (includes(visitedLinkStack, linkPlaceholder)) {
if (true) {
warn(("Circular reference found. \"" + link + "\" is already visited in the chain of " + (visitedLinkStack.reverse().join(' <- '))));
}
return ret
}
visitedLinkStack.push(linkPlaceholder);
// Translate the link
var translated = this._interpolate(
locale, message, linkPlaceholder, host,
interpolateMode === 'raw' ? 'string' : interpolateMode,
interpolateMode === 'raw' ? undefined : values,
visitedLinkStack
);
if (this._isFallbackRoot(translated)) {
if ( true && !this._isSilentTranslationWarn(linkPlaceholder)) {
warn(("Fall back to translate the link placeholder '" + linkPlaceholder + "' with root locale."));
}
/* istanbul ignore if */
if (!this._root) { throw Error('unexpected error') }
var root = this._root.$i18n;
translated = root._translate(
root._getMessages(), root.locale, root.fallbackLocale,
linkPlaceholder, host, interpolateMode, values
);
}
translated = this._warnDefault(
locale, linkPlaceholder, translated, host,
isArray(values) ? values : [values],
interpolateMode
);
if (this._modifiers.hasOwnProperty(formatterName)) {
translated = this._modifiers[formatterName](translated);
} else if (defaultModifiers.hasOwnProperty(formatterName)) {
translated = defaultModifiers[formatterName](translated);
}
visitedLinkStack.pop();
// Replace the link with the translated
ret = !translated ? ret : ret.replace(link, translated);
}
return ret
};
VueI18n.prototype._createMessageContext = function _createMessageContext (values, formatter, path, interpolateMode) {
var this$1 = this;
var _list = isArray(values) ? values : [];
var _named = isObject(values) ? values : {};
var list = function (index) { return _list[index]; };
var named = function (key) { return _named[key]; };
var messages = this._getMessages();
var locale = this.locale;
return {
list: list,
named: named,
values: values,
formatter: formatter,
path: path,
messages: messages,
locale: locale,
linked: function (linkedKey) { return this$1._interpolate(locale, messages[locale] || {}, linkedKey, null, interpolateMode, undefined, [linkedKey]); }
}
};
VueI18n.prototype._render = function _render (message, interpolateMode, values, path) {
if (isFunction(message)) {
return message(
this._createMessageContext(values, this._formatter || defaultFormatter, path, interpolateMode)
)
}
var ret = this._formatter.interpolate(message, values, path);
// If the custom formatter refuses to work - apply the default one
if (!ret) {
ret = defaultFormatter.interpolate(message, values, path);
}
// if interpolateMode is **not** 'string' ('row'),
// return the compiled data (e.g. ['foo', VNode, 'bar']) with formatter
return interpolateMode === 'string' && !isString(ret) ? ret.join('') : ret
};
VueI18n.prototype._appendItemToChain = function _appendItemToChain (chain, item, blocks) {
var follow = false;
if (!includes(chain, item)) {
follow = true;
if (item) {
follow = item[item.length - 1] !== '!';
item = item.replace(/!/g, '');
chain.push(item);
if (blocks && blocks[item]) {
follow = blocks[item];
}
}
}
return follow
};
VueI18n.prototype._appendLocaleToChain = function _appendLocaleToChain (chain, locale, blocks) {
var follow;
var tokens = locale.split('-');
do {
var item = tokens.join('-');
follow = this._appendItemToChain(chain, item, blocks);
tokens.splice(-1, 1);
} while (tokens.length && (follow === true))
return follow
};
VueI18n.prototype._appendBlockToChain = function _appendBlockToChain (chain, block, blocks) {
var follow = true;
for (var i = 0; (i < block.length) && (isBoolean(follow)); i++) {
var locale = block[i];
if (isString(locale)) {
follow = this._appendLocaleToChain(chain, locale, blocks);
}
}
return follow
};
VueI18n.prototype._getLocaleChain = function _getLocaleChain (start, fallbackLocale) {
if (start === '') { return [] }
if (!this._localeChainCache) {
this._localeChainCache = {};
}
var chain = this._localeChainCache[start];
if (!chain) {
if (!fallbackLocale) {
fallbackLocale = this.fallbackLocale;
}
chain = [];
// first block defined by start
var block = [start];
// while any intervening block found
while (isArray(block)) {
block = this._appendBlockToChain(
chain,
block,
fallbackLocale
);
}
// last block defined by default
var defaults;
if (isArray(fallbackLocale)) {
defaults = fallbackLocale;
} else if (isObject(fallbackLocale)) {
/* $FlowFixMe */
if (fallbackLocale['default']) {
defaults = fallbackLocale['default'];
} else {
defaults = null;
}
} else {
defaults = fallbackLocale;
}
// convert defaults to array
if (isString(defaults)) {
block = [defaults];
} else {
block = defaults;
}
if (block) {
this._appendBlockToChain(
chain,
block,
null
);
}
this._localeChainCache[start] = chain;
}
return chain
};
VueI18n.prototype._translate = function _translate (
messages,
locale,
fallback,
key,
host,
interpolateMode,
args
) {
var chain = this._getLocaleChain(locale, fallback);
var res;
for (var i = 0; i < chain.length; i++) {
var step = chain[i];
res =
this._interpolate(step, messages[step], key, host, interpolateMode, args, [key]);
if (!isNull(res)) {
if (step !== locale && "development" !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {
warn(("Fall back to translate the keypath '" + key + "' with '" + step + "' locale."));
}
return res
}
}
return null
};
VueI18n.prototype._t = function _t (key, _locale, messages, host) {
var ref;
var values = [], len = arguments.length - 4;
while ( len-- > 0 ) values[ len ] = arguments[ len + 4 ];
if (!key) { return '' }
var parsedArgs = parseArgs.apply(void 0, values);
if(this._escapeParameterHtml) {
parsedArgs.params = escapeParams(parsedArgs.params);
}
var locale = parsedArgs.locale || _locale;
var ret = this._translate(
messages, locale, this.fallbackLocale, key,
host, 'string', parsedArgs.params
);
if (this._isFallbackRoot(ret)) {
if ( true && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {
warn(("Fall back to translate the keypath '" + key + "' with root locale."));
}
/* istanbul ignore if */
if (!this._root) { throw Error('unexpected error') }
return (ref = this._root).$t.apply(ref, [ key ].concat( values ))
} else {
ret = this._warnDefault(locale, key, ret, host, values, 'string');
if (this._postTranslation && ret !== null && ret !== undefined) {
ret = this._postTranslation(ret, key);
}
return ret
}
};
VueI18n.prototype.t = function t (key) {
var ref;
var values = [], len = arguments.length - 1;
while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];
return (ref = this)._t.apply(ref, [ key, this.locale, this._getMessages(), null ].concat( values ))
};
VueI18n.prototype._i = function _i (key, locale, messages, host, values) {
var ret =
this._translate(messages, locale, this.fallbackLocale, key, host, 'raw', values);
if (this._isFallbackRoot(ret)) {
if ( true && !this._isSilentTranslationWarn(key)) {
warn(("Fall back to interpolate the keypath '" + key + "' with root locale."));
}
if (!this._root) { throw Error('unexpected error') }
return this._root.$i18n.i(key, locale, values)
} else {
return this._warnDefault(locale, key, ret, host, [values], 'raw')
}
};
VueI18n.prototype.i = function i (key, locale, values) {
/* istanbul ignore if */
if (!key) { return '' }
if (!isString(locale)) {
locale = this.locale;
}
return this._i(key, locale, this._getMessages(), null, values)
};
VueI18n.prototype._tc = function _tc (
key,
_locale,
messages,
host,
choice
) {
var ref;
var values = [], len = arguments.length - 5;
while ( len-- > 0 ) values[ len ] = arguments[ len + 5 ];
if (!key) { return '' }
if (choice === undefined) {
choice = 1;
}
var predefined = { 'count': choice, 'n': choice };
var parsedArgs = parseArgs.apply(void 0, values);
parsedArgs.params = Object.assign(predefined, parsedArgs.params);
values = parsedArgs.locale === null ? [parsedArgs.params] : [parsedArgs.locale, parsedArgs.params];
return this.fetchChoice((ref = this)._t.apply(ref, [ key, _locale, messages, host ].concat( values )), choice)
};
VueI18n.prototype.fetchChoice = function fetchChoice (message, choice) {
/* istanbul ignore if */
if (!message || !isString(message)) { return null }
var choices = message.split('|');
choice = this.getChoiceIndex(choice, choices.length);
if (!choices[choice]) { return message }
return choices[choice].trim()
};
VueI18n.prototype.tc = function tc (key, choice) {
var ref;
var values = [], len = arguments.length - 2;
while ( len-- > 0 ) values[ len ] = arguments[ len + 2 ];
return (ref = this)._tc.apply(ref, [ key, this.locale, this._getMessages(), null, choice ].concat( values ))
};
VueI18n.prototype._te = function _te (key, locale, messages) {
var args = [], len = arguments.length - 3;
while ( len-- > 0 ) args[ len ] = arguments[ len + 3 ];
var _locale = parseArgs.apply(void 0, args).locale || locale;
return this._exist(messages[_locale], key)
};
VueI18n.prototype.te = function te (key, locale) {
return this._te(key, this.locale, this._getMessages(), locale)
};
VueI18n.prototype.getLocaleMessage = function getLocaleMessage (locale) {
return looseClone(this._vm.messages[locale] || {})
};
VueI18n.prototype.setLocaleMessage = function setLocaleMessage (locale, message) {
if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {
this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);
}
this._vm.$set(this._vm.messages, locale, message);
};
VueI18n.prototype.mergeLocaleMessage = function mergeLocaleMessage (locale, message) {
if (this._warnHtmlInMessage === 'warn' || this._warnHtmlInMessage === 'error') {
this._checkLocaleMessage(locale, this._warnHtmlInMessage, message);
}
this._vm.$set(this._vm.messages, locale, merge(
typeof this._vm.messages[locale] !== 'undefined' && Object.keys(this._vm.messages[locale]).length
? Object.assign({}, this._vm.messages[locale])
: {},
message
));
};
VueI18n.prototype.getDateTimeFormat = function getDateTimeFormat (locale) {
return looseClone(this._vm.dateTimeFormats[locale] || {})
};
VueI18n.prototype.setDateTimeFormat = function setDateTimeFormat (locale, format) {
this._vm.$set(this._vm.dateTimeFormats, locale, format);
this._clearDateTimeFormat(locale, format);
};
VueI18n.prototype.mergeDateTimeFormat = function mergeDateTimeFormat (locale, format) {
this._vm.$set(this._vm.dateTimeFormats, locale, merge(this._vm.dateTimeFormats[locale] || {}, format));
this._clearDateTimeFormat(locale, format);
};
VueI18n.prototype._clearDateTimeFormat = function _clearDateTimeFormat (locale, format) {
// eslint-disable-next-line no-autofix/prefer-const
for (var key in format) {
var id = locale + "__" + key;
if (!this._dateTimeFormatters.hasOwnProperty(id)) {
continue
}
delete this._dateTimeFormatters[id];
}
};
VueI18n.prototype._localizeDateTime = function _localizeDateTime (
value,
locale,
fallback,
dateTimeFormats,
key,
options
) {
var _locale = locale;
var formats = dateTimeFormats[_locale];
var chain = this._getLocaleChain(locale, fallback);
for (var i = 0; i < chain.length; i++) {
var current = _locale;
var step = chain[i];
formats = dateTimeFormats[step];
_locale = step;
// fallback locale
if (isNull(formats) || isNull(formats[key])) {
if (step !== locale && "development" !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {
warn(("Fall back to '" + step + "' datetime formats from '" + current + "' datetime formats."));
}
} else {
break
}
}
if (isNull(formats) || isNull(formats[key])) {
return null
} else {
var format = formats[key];
var formatter;
if (options) {
formatter = new Intl.DateTimeFormat(_locale, Object.assign({}, format, options));
} else {
var id = _locale + "__" + key;
formatter = this._dateTimeFormatters[id];
if (!formatter) {
formatter = this._dateTimeFormatters[id] = new Intl.DateTimeFormat(_locale, format);
}
}
return formatter.format(value)
}
};
VueI18n.prototype._d = function _d (value, locale, key, options) {
/* istanbul ignore if */
if ( true && !VueI18n.availabilities.dateTimeFormat) {
warn('Cannot format a Date value due to not supported Intl.DateTimeFormat.');
return ''
}
if (!key) {
var dtf = !options ? new Intl.DateTimeFormat(locale) : new Intl.DateTimeFormat(locale, options);
return dtf.format(value)
}
var ret =
this._localizeDateTime(value, locale, this.fallbackLocale, this._getDateTimeFormats(), key, options);
if (this._isFallbackRoot(ret)) {
if ( true && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {
warn(("Fall back to datetime localization of root: key '" + key + "'."));
}
/* istanbul ignore if */
if (!this._root) { throw Error('unexpected error') }
return this._root.$i18n.d(value, key, locale)
} else {
return ret || ''
}
};
VueI18n.prototype.d = function d (value) {
var args = [], len = arguments.length - 1;
while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];
var locale = this.locale;
var key = null;
var options = null;
if (args.length === 1) {
if (isString(args[0])) {
key = args[0];
} else if (isObject(args[0])) {
if (args[0].locale) {
locale = args[0].locale;
}
if (args[0].key) {
key = args[0].key;
}
}
options = Object.keys(args[0]).reduce(function (acc, key) {
var obj;
if (includes(dateTimeFormatKeys, key)) {
return Object.assign({}, acc, ( obj = {}, obj[key] = args[0][key], obj ))
}
return acc
}, null);
} else if (args.length === 2) {
if (isString(args[0])) {
key = args[0];
}
if (isString(args[1])) {
locale = args[1];
}
}
return this._d(value, locale, key, options)
};
VueI18n.prototype.getNumberFormat = function getNumberFormat (locale) {
return looseClone(this._vm.numberFormats[locale] || {})
};
VueI18n.prototype.setNumberFormat = function setNumberFormat (locale, format) {
this._vm.$set(this._vm.numberFormats, locale, format);
this._clearNumberFormat(locale, format);
};
VueI18n.prototype.mergeNumberFormat = function mergeNumberFormat (locale, format) {
this._vm.$set(this._vm.numberFormats, locale, merge(this._vm.numberFormats[locale] || {}, format));
this._clearNumberFormat(locale, format);
};
VueI18n.prototype._clearNumberFormat = function _clearNumberFormat (locale, format) {
// eslint-disable-next-line no-autofix/prefer-const
for (var key in format) {
var id = locale + "__" + key;
if (!this._numberFormatters.hasOwnProperty(id)) {
continue
}
delete this._numberFormatters[id];
}
};
VueI18n.prototype._getNumberFormatter = function _getNumberFormatter (
value,
locale,
fallback,
numberFormats,
key,
options
) {
var _locale = locale;
var formats = numberFormats[_locale];
var chain = this._getLocaleChain(locale, fallback);
for (var i = 0; i < chain.length; i++) {
var current = _locale;
var step = chain[i];
formats = numberFormats[step];
_locale = step;
// fallback locale
if (isNull(formats) || isNull(formats[key])) {
if (step !== locale && "development" !== 'production' && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {
warn(("Fall back to '" + step + "' number formats from '" + current + "' number formats."));
}
} else {
break
}
}
if (isNull(formats) || isNull(formats[key])) {
return null
} else {
var format = formats[key];
var formatter;
if (options) {
// If options specified - create one time number formatter
formatter = new Intl.NumberFormat(_locale, Object.assign({}, format, options));
} else {
var id = _locale + "__" + key;
formatter = this._numberFormatters[id];
if (!formatter) {
formatter = this._numberFormatters[id] = new Intl.NumberFormat(_locale, format);
}
}
return formatter
}
};
VueI18n.prototype._n = function _n (value, locale, key, options) {
/* istanbul ignore if */
if (!VueI18n.availabilities.numberFormat) {
if (true) {
warn('Cannot format a Number value due to not supported Intl.NumberFormat.');
}
return ''
}
if (!key) {
var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);
return nf.format(value)
}
var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);
var ret = formatter && formatter.format(value);
if (this._isFallbackRoot(ret)) {
if ( true && !this._isSilentTranslationWarn(key) && !this._isSilentFallbackWarn(key)) {
warn(("Fall back to number localization of root: key '" + key + "'."));
}
/* istanbul ignore if */
if (!this._root) { throw Error('unexpected error') }
return this._root.$i18n.n(value, Object.assign({}, { key: key, locale: locale }, options))
} else {
return ret || ''
}
};
VueI18n.prototype.n = function n (value) {
var args = [], len = arguments.length - 1;
while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];
var locale = this.locale;
var key = null;
var options = null;
if (args.length === 1) {
if (isString(args[0])) {
key = args[0];
} else if (isObject(args[0])) {
if (args[0].locale) {
locale = args[0].locale;
}
if (args[0].key) {
key = args[0].key;
}
// Filter out number format options only
options = Object.keys(args[0]).reduce(function (acc, key) {
var obj;
if (includes(numberFormatKeys, key)) {
return Object.assign({}, acc, ( obj = {}, obj[key] = args[0][key], obj ))
}
return acc
}, null);
}
} else if (args.length === 2) {
if (isString(args[0])) {
key = args[0];
}
if (isString(args[1])) {
locale = args[1];
}
}
return this._n(value, locale, key, options)
};
VueI18n.prototype._ntp = function _ntp (value, locale, key, options) {
/* istanbul ignore if */
if (!VueI18n.availabilities.numberFormat) {
if (true) {
warn('Cannot format to parts a Number value due to not supported Intl.NumberFormat.');
}
return []
}
if (!key) {
var nf = !options ? new Intl.NumberFormat(locale) : new Intl.NumberFormat(locale, options);
return nf.formatToParts(value)
}
var formatter = this._getNumberFormatter(value, locale, this.fallbackLocale, this._getNumberFormats(), key, options);
var ret = formatter && formatter.formatToParts(value);
if (this._isFallbackRoot(ret)) {
if ( true && !this._isSilentTranslationWarn(key)) {
warn(("Fall back to format number to parts of root: key '" + key + "' ."));
}
/* istanbul ignore if */
if (!this._root) { throw Error('unexpected error') }
return this._root.$i18n._ntp(value, locale, key, options)
} else {
return ret || []
}
};
Object.defineProperties( VueI18n.prototype, prototypeAccessors );
var availabilities;
// $FlowFixMe
Object.defineProperty(VueI18n, 'availabilities', {
get: function get () {
if (!availabilities) {
var intlDefined = typeof Intl !== 'undefined';
availabilities = {
dateTimeFormat: intlDefined && typeof Intl.DateTimeFormat !== 'undefined',
numberFormat: intlDefined && typeof Intl.NumberFormat !== 'undefined'
};
}
return availabilities
}
});
VueI18n.install = install;
VueI18n.version = '8.28.2';
/* harmony default export */ __webpack_exports__["default"] = (VueI18n);
/***/ }),
/***/ 460:
/*!*****************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/asyncToGenerator.js ***!
\*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
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);
});
};
}
module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 461:
/*!*********************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/inherits.js ***!
\*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ 16);
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function");
}
subClass.prototype = Object.create(superClass && superClass.prototype, {
constructor: {
value: subClass,
writable: true,
configurable: true
}
});
Object.defineProperty(subClass, "prototype", {
writable: false
});
if (superClass) setPrototypeOf(subClass, superClass);
}
module.exports = _inherits, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 462:
/*!**************************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js ***!
\**************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var _typeof = __webpack_require__(/*! ./typeof.js */ 13)["default"];
var assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ 459);
function _possibleConstructorReturn(self, call) {
if (call && (_typeof(call) === "object" || typeof call === "function")) {
return call;
} else if (call !== void 0) {
throw new TypeError("Derived constructors may only return object or undefined");
}
return assertThisInitialized(self);
}
module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 463:
/*!***************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/getPrototypeOf.js ***!
\***************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
function _getPrototypeOf(o) {
module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {
return o.__proto__ || Object.getPrototypeOf(o);
}, module.exports.__esModule = true, module.exports["default"] = module.exports;
return _getPrototypeOf(o);
}
module.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 464:
/*!****************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/wrapNativeSuper.js ***!
\****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ 463);
var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ 16);
var isNativeFunction = __webpack_require__(/*! ./isNativeFunction.js */ 465);
var construct = __webpack_require__(/*! ./construct.js */ 15);
function _wrapNativeSuper(Class) {
var _cache = typeof Map === "function" ? new Map() : undefined;
module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {
if (Class === null || !isNativeFunction(Class)) return Class;
if (typeof Class !== "function") {
throw new TypeError("Super expression must either be null or a function");
}
if (typeof _cache !== "undefined") {
if (_cache.has(Class)) return _cache.get(Class);
_cache.set(Class, Wrapper);
}
function Wrapper() {
return construct(Class, arguments, getPrototypeOf(this).constructor);
}
Wrapper.prototype = Object.create(Class.prototype, {
constructor: {
value: Wrapper,
enumerable: false,
writable: true,
configurable: true
}
});
return setPrototypeOf(Wrapper, Class);
}, module.exports.__esModule = true, module.exports["default"] = module.exports;
return _wrapNativeSuper(Class);
}
module.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 465:
/*!*****************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/isNativeFunction.js ***!
\*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
function _isNativeFunction(fn) {
try {
return Function.toString.call(fn).indexOf("[native code]") !== -1;
} catch (e) {
return typeof fn === "function";
}
}
module.exports = _isNativeFunction, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 466:
/*!*************************************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/pages.json?{"type":"origin-pages-json"} ***!
\*************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _default = {
"pages": [{
"path": "pages/home/home",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": true,
"onReachBottomDistance": 50
}
}, {
"path": "pages/skiping/skip",
"style": {
"navigationBarTitleText": "跳绳数据",
"enablePullDownRefresh": true,
"onReachBottomDistance": 50
}
}, {
"path": "pages/skiping/charts",
"style": {
"navigationBarTitleText": "运动曲线",
"enablePullDownRefresh": false
}
}, {
"path": "pages/lunging/vitalcapacity",
"style": {
"navigationBarTitleText": "肺活量数据",
"enablePullDownRefresh": true,
"onReachBottomDistance": 50,
"navigationBarBackgroundColor": "#000000",
"backgroundColor": "#000000"
}
}, {
"path": "pages/lunging/charts",
"style": {
"navigationBarTitleText": "运动曲线",
"enablePullDownRefresh": false
}
}, {
"path": "pages/my/me",
"style": {
"navigationBarTitleText": "我的",
"enablePullDownRefresh": true,
"onReachBottomDistance": 50
}
}, {
"path": "pages/score/score",
"style": {
"navigationBarTitleText": "分数评估",
"enablePullDownRefresh": true,
"onReachBottomDistance": 50
}
}, {
"path": "pages/PublicCards/PublicCards",
"style": {
"navigationBarTitleText": "对比详情"
}
}, {
"path": "pages/body/body",
"style": {
"navigationBarTitleText": "身体数据",
"enablePullDownRefresh": true,
"onReachBottomDistance": 50
}
}, {
"path": "pages/zixun/list",
"style": {
"navigationBarTitleText": ""
}
}],
"subPackages": [{
"root": "pageTwo",
"pages": [{
"path": "history/history",
"style": {
"navigationBarTitleText": "历史记录",
"enablePullDownRefresh": false
}
}, {
"path": "history/historyDetail",
"style": {
"navigationBarTitleText": "记录详情",
"enablePullDownRefresh": false
}
}, {
"path": "compk/contrast",
"style": {
"navigationBarTitleText": "数据对比",
"enablePullDownRefresh": false
}
}, {
"path": "compk/pkdetail",
"style": {
"navigationBarTitleText": "对比详情",
"enablePullDownRefresh": false
}
}, {
"path": "cardList/card",
"style": {
"navigationBarTitleText": "卡片设置",
"enablePullDownRefresh": false
}
}, {
"path": "business/business",
"style": {
"navigationBarTitleText": "设备管理",
"enablePullDownRefresh": true,
"onReachBottomDistance": 50
}
}, {
"path": "business/addDevice",
"style": {
"navigationBarTitleText": "设备列表",
"enablePullDownRefresh": false
}
}, {
"path": "business/search",
"style": {
"navigationBarTitleText": "搜索设备",
"enablePullDownRefresh": false
}
}, {
"path": "score/history",
"style": {
"navigationBarTitleText": "估分历史",
"enablePullDownRefresh": false
}
}, {
"path": "score/report",
"style": {
"navigationBarTitleText": "估分报告",
"enablePullDownRefresh": false
}
}, {
"path": "my/manage",
"style": {
"navigationBarTitleText": "成员管理",
"enablePullDownRefresh": true,
"onReachBottomDistance": 50
}
}, {
"path": "message/list",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}, {
"path": "my/userInfo",
"style": {
"navigationBarTitleText": "资料"
}
}, {
"path": "login/forgetPassword",
"style": {
"navigationBarTitleText": "密码",
"enablePullDownRefresh": false
}
}, {
"path": "login/login",
"style": {
"navigationBarTitleText": "登录",
"enablePullDownRefresh": false,
"navigationStyle": "custom"
}
}, {
"path": "my/about",
"style": {
"navigationBarTitleText": "关于我们",
"enablePullDownRefresh": false
}
}, {
"path": "setting/setting",
"style": {
"navigationBarTitleText": "设置",
"enablePullDownRefresh": false
}
}, {
"path": "setting/password",
"style": {
"navigationBarTitleText": "修改密码",
"enablePullDownRefresh": false
}
}, {
"path": "setting/email",
"style": {
"navigationBarTitleText": "绑定邮箱",
"enablePullDownRefresh": false
}
}, {
"path": "setting/phone",
"style": {
"navigationBarTitleText": "绑定手机号",
"enablePullDownRefresh": false
}
}, {
"path": "devices/search",
"style": {
"navigationBarTitleText": "蓝牙搜索",
"enablePullDownRefresh": false
}
}, {
"path": "devices/G02",
"style": {
"navigationBarTitleText": "测量",
"enablePullDownRefresh": false
}
}, {
"path": "devices/PCL",
"style": {
"navigationBarTitleText": "测量",
"enablePullDownRefresh": false
}
}, {
"path": "devices/PCV02",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}, {
"path": "devices/PCT01",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}, {
"path": "devices/B20",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}, {
"path": "devices/PCL22",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}, {
"path": "devices/PCL22S",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}, {
"path": "notepad/notepad",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}, {
"path": "notepad/addNotepad",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}, {
"path": "PublicCards/charts",
"style": {
"navigationBarTitleText": "运动曲线"
}
}, {
"path": "PublicCards/history",
"style": {
"navigationBarTitleText": "历史记录"
}
}, {
"path": "PublicCards/contrast",
"style": {
"navigationBarTitleText": "数据对比"
}
}, {
"path": "PublicCards/pkdetail",
"style": {
"navigationBarTitleText": "对比详情"
}
}, {
"path": "home/inheritHeighet",
"style": {
"navigationBarTitleText": "身高预测"
}
}, {
"path": "home/bmi",
"style": {
"navigationBarTitleText": "BMI测评"
}
}, {
"path": "webview/webview",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}]
}],
"globalStyle": {
"navigationBarTextStyle": "white",
"navigationBarTitleText": "",
"navigationBarBackgroundColor": "#37cc92",
"backgroundColor": "#fff"
},
"tabBar": {
"color": "#333",
"fontSize": "14px",
"selectedColor": "#37cc92",
"backgroundColor": "#fff",
"list": [{
"pagePath": "pages/home/home",
"iconPath": "static/shou.png",
"selectedIconPath": "static/shou2.png",
"text": "记录"
}, {
"pagePath": "pages/zixun/list",
"iconPath": "static/ping.png",
"selectedIconPath": "static/ping2.png",
"text": "资讯"
}, {
"pagePath": "pages/my/me",
"iconPath": "static/wo.png",
"selectedIconPath": "static/wo2.png",
"text": "我的"
}]
},
"uniIdRouter": {}
};
exports.default = _default;
/***/ }),
/***/ 467:
/*!************************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/pages.json?{"type":"stat"} ***!
\************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _default = {
"appid": "__UNI__20604F1"
};
exports.default = _default;
/***/ }),
/***/ 468:
/*!******************************************************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js ***!
\******************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/*
* uCharts (R)
* 高性能跨平台图表库支持H5、APP、小程序微信/支付宝/百度/头条/QQ/360/快手、Vue、Taro等支持canvas的框架平台
* Copyright (C) 2018-2022 QIUN (R) 秋云 https://www.ucharts.cn All rights reserved.
* Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
* 复制使用请保留本段注释,感谢支持开源!
*
* uCharts (R) 官方网站
* https://www.uCharts.cn
*
* 开源地址:
* https://gitee.com/uCharts/uCharts
*
* uni-app插件市场地址
* http://ext.dcloud.net.cn/plugin?id=271
*
*/
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ 5));
var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 13));
var config = {
version: 'v2.5.0-20230101',
yAxisWidth: 15,
xAxisHeight: 22,
padding: [10, 10, 10, 10],
rotate: false,
fontSize: 13,
fontColor: '#666666',
dataPointShape: ['circle', 'circle', 'circle', 'circle'],
color: ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'],
linearColor: ['#0EE2F8', '#2BDCA8', '#FA7D8D', '#EB88E2', '#2AE3A0', '#0EE2F8', '#EB88E2', '#6773E3', '#F78A85'],
pieChartLinePadding: 15,
pieChartTextPadding: 5,
titleFontSize: 20,
subtitleFontSize: 15,
radarLabelTextMargin: 13
};
var assign = function assign(target) {
for (var _len2 = arguments.length, varArgs = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
varArgs[_key2 - 1] = arguments[_key2];
}
if (target == null) {
throw new TypeError('[uCharts] Cannot convert undefined or null to object');
}
if (!varArgs || varArgs.length <= 0) {
return target;
}
// 深度合并对象
function deepAssign(obj1, obj2) {
for (var key in obj2) {
obj1[key] = obj1[key] && obj1[key].toString() === "[object Object]" ? deepAssign(obj1[key], obj2[key]) : obj1[key] = obj2[key];
}
return obj1;
}
varArgs.forEach(function (val) {
target = deepAssign(target, val);
});
return target;
};
var util = {
toFixed: function toFixed(num, limit) {
limit = limit || 2;
if (this.isFloat(num)) {
num = num.toFixed(limit);
}
return num;
},
isFloat: function isFloat(num) {
return num % 1 !== 0;
},
approximatelyEqual: function approximatelyEqual(num1, num2) {
return Math.abs(num1 - num2) < 1e-10;
},
isSameSign: function isSameSign(num1, num2) {
return Math.abs(num1) === num1 && Math.abs(num2) === num2 || Math.abs(num1) !== num1 && Math.abs(num2) !== num2;
},
isSameXCoordinateArea: function isSameXCoordinateArea(p1, p2) {
return this.isSameSign(p1.x, p2.x);
},
isCollision: function isCollision(obj1, obj2) {
obj1.end = {};
obj1.end.x = obj1.start.x + obj1.width;
obj1.end.y = obj1.start.y - obj1.height;
obj2.end = {};
obj2.end.x = obj2.start.x + obj2.width;
obj2.end.y = obj2.start.y - obj2.height;
var flag = obj2.start.x > obj1.end.x || obj2.end.x < obj1.start.x || obj2.end.y > obj1.start.y || obj2.start.y < obj1.end.y;
return !flag;
}
};
//兼容H5点击事件
function getH5Offset(e) {
e.mp = {
changedTouches: []
};
e.mp.changedTouches.push({
x: e.offsetX,
y: e.offsetY
});
return e;
}
// hex 转 rgba
function hexToRgb(hexValue, opc) {
var rgx = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
var hex = hexValue.replace(rgx, function (m, r, g, b) {
return r + r + g + g + b + b;
});
var rgb = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
var r = parseInt(rgb[1], 16);
var g = parseInt(rgb[2], 16);
var b = parseInt(rgb[3], 16);
return 'rgba(' + r + ',' + g + ',' + b + ',' + opc + ')';
}
function findRange(num, type, limit) {
if (isNaN(num)) {
throw new Error('[uCharts] series数据需为Number格式');
}
limit = limit || 10;
type = type ? type : 'upper';
var multiple = 1;
while (limit < 1) {
limit *= 10;
multiple *= 10;
}
if (type === 'upper') {
num = Math.ceil(num * multiple);
} else {
num = Math.floor(num * multiple);
}
while (num % limit !== 0) {
if (type === 'upper') {
if (num == num + 1) {
//修复数据值过大num++无效的bug by 向日葵 @xrk_jy
break;
}
num++;
} else {
num--;
}
}
return num / multiple;
}
function calCandleMA(dayArr, nameArr, colorArr, kdata) {
var seriesTemp = [];
for (var k = 0; k < dayArr.length; k++) {
var seriesItem = {
data: [],
name: nameArr[k],
color: colorArr[k]
};
for (var i = 0, len = kdata.length; i < len; i++) {
if (i < dayArr[k]) {
seriesItem.data.push(null);
continue;
}
var sum = 0;
for (var j = 0; j < dayArr[k]; j++) {
sum += kdata[i - j][1];
}
seriesItem.data.push(+(sum / dayArr[k]).toFixed(3));
}
seriesTemp.push(seriesItem);
}
return seriesTemp;
}
function calValidDistance(self, distance, chartData, config, opts) {
var dataChartAreaWidth = opts.width - opts.area[1] - opts.area[3];
var dataChartWidth = chartData.eachSpacing * (opts.chartData.xAxisData.xAxisPoints.length - 1);
if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {
if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;
dataChartWidth += (opts.extra.mount.widthRatio - 1) * chartData.eachSpacing;
}
var validDistance = distance;
if (distance >= 0) {
validDistance = 0;
self.uevent.trigger('scrollLeft');
self.scrollOption.position = 'left';
opts.xAxis.scrollPosition = 'left';
} else if (Math.abs(distance) >= dataChartWidth - dataChartAreaWidth) {
validDistance = dataChartAreaWidth - dataChartWidth;
self.uevent.trigger('scrollRight');
self.scrollOption.position = 'right';
opts.xAxis.scrollPosition = 'right';
} else {
self.scrollOption.position = distance;
opts.xAxis.scrollPosition = distance;
}
return validDistance;
}
function isInAngleRange(angle, startAngle, endAngle) {
function adjust(angle) {
while (angle < 0) {
angle += 2 * Math.PI;
}
while (angle > 2 * Math.PI) {
angle -= 2 * Math.PI;
}
return angle;
}
angle = adjust(angle);
startAngle = adjust(startAngle);
endAngle = adjust(endAngle);
if (startAngle > endAngle) {
endAngle += 2 * Math.PI;
if (angle < startAngle) {
angle += 2 * Math.PI;
}
}
return angle >= startAngle && angle <= endAngle;
}
function createCurveControlPoints(points, i) {
function isNotMiddlePoint(points, i) {
if (points[i - 1] && points[i + 1]) {
return points[i].y >= Math.max(points[i - 1].y, points[i + 1].y) || points[i].y <= Math.min(points[i - 1].y, points[i + 1].y);
} else {
return false;
}
}
function isNotMiddlePointX(points, i) {
if (points[i - 1] && points[i + 1]) {
return points[i].x >= Math.max(points[i - 1].x, points[i + 1].x) || points[i].x <= Math.min(points[i - 1].x, points[i + 1].x);
} else {
return false;
}
}
var a = 0.2;
var b = 0.2;
var pAx = null;
var pAy = null;
var pBx = null;
var pBy = null;
if (i < 1) {
pAx = points[0].x + (points[1].x - points[0].x) * a;
pAy = points[0].y + (points[1].y - points[0].y) * a;
} else {
pAx = points[i].x + (points[i + 1].x - points[i - 1].x) * a;
pAy = points[i].y + (points[i + 1].y - points[i - 1].y) * a;
}
if (i > points.length - 3) {
var last = points.length - 1;
pBx = points[last].x - (points[last].x - points[last - 1].x) * b;
pBy = points[last].y - (points[last].y - points[last - 1].y) * b;
} else {
pBx = points[i + 1].x - (points[i + 2].x - points[i].x) * b;
pBy = points[i + 1].y - (points[i + 2].y - points[i].y) * b;
}
if (isNotMiddlePoint(points, i + 1)) {
pBy = points[i + 1].y;
}
if (isNotMiddlePoint(points, i)) {
pAy = points[i].y;
}
if (isNotMiddlePointX(points, i + 1)) {
pBx = points[i + 1].x;
}
if (isNotMiddlePointX(points, i)) {
pAx = points[i].x;
}
if (pAy >= Math.max(points[i].y, points[i + 1].y) || pAy <= Math.min(points[i].y, points[i + 1].y)) {
pAy = points[i].y;
}
if (pBy >= Math.max(points[i].y, points[i + 1].y) || pBy <= Math.min(points[i].y, points[i + 1].y)) {
pBy = points[i + 1].y;
}
if (pAx >= Math.max(points[i].x, points[i + 1].x) || pAx <= Math.min(points[i].x, points[i + 1].x)) {
pAx = points[i].x;
}
if (pBx >= Math.max(points[i].x, points[i + 1].x) || pBx <= Math.min(points[i].x, points[i + 1].x)) {
pBx = points[i + 1].x;
}
return {
ctrA: {
x: pAx,
y: pAy
},
ctrB: {
x: pBx,
y: pBy
}
};
}
function convertCoordinateOrigin(x, y, center) {
return {
x: center.x + x,
y: center.y - y
};
}
function avoidCollision(obj, target) {
if (target) {
// is collision test
while (util.isCollision(obj, target)) {
if (obj.start.x > 0) {
obj.start.y--;
} else if (obj.start.x < 0) {
obj.start.y++;
} else {
if (obj.start.y > 0) {
obj.start.y++;
} else {
obj.start.y--;
}
}
}
}
return obj;
}
function fixPieSeries(series, opts, config) {
var pieSeriesArr = [];
if (series.length > 0 && series[0].data.constructor.toString().indexOf('Array') > -1) {
opts._pieSeries_ = series;
var oldseries = series[0].data;
for (var i = 0; i < oldseries.length; i++) {
oldseries[i].formatter = series[0].formatter;
oldseries[i].data = oldseries[i].value;
pieSeriesArr.push(oldseries[i]);
}
opts.series = pieSeriesArr;
} else {
pieSeriesArr = series;
}
return pieSeriesArr;
}
function fillSeries(series, opts, config) {
var index = 0;
for (var i = 0; i < series.length; i++) {
var item = series[i];
if (!item.color) {
item.color = config.color[index];
index = (index + 1) % config.color.length;
}
if (!item.linearIndex) {
item.linearIndex = i;
}
if (!item.index) {
item.index = 0;
}
if (!item.type) {
item.type = opts.type;
}
if (typeof item.show == "undefined") {
item.show = true;
}
if (!item.type) {
item.type = opts.type;
}
if (!item.pointShape) {
item.pointShape = "circle";
}
if (!item.legendShape) {
switch (item.type) {
case 'line':
item.legendShape = "line";
break;
case 'column':
case 'bar':
item.legendShape = "rect";
break;
case 'area':
case 'mount':
item.legendShape = "triangle";
break;
default:
item.legendShape = "circle";
}
}
}
return series;
}
function fillCustomColor(linearType, customColor, series, config) {
var newcolor = customColor || [];
if (linearType == 'custom' && newcolor.length == 0) {
newcolor = config.linearColor;
}
if (linearType == 'custom' && newcolor.length < series.length) {
var chazhi = series.length - newcolor.length;
for (var i = 0; i < chazhi; i++) {
newcolor.push(config.linearColor[(i + 1) % config.linearColor.length]);
}
}
return newcolor;
}
function getDataRange(minData, maxData) {
var limit = 0;
var range = maxData - minData;
if (range >= 10000) {
limit = 1000;
} else if (range >= 1000) {
limit = 100;
} else if (range >= 100) {
limit = 10;
} else if (range >= 10) {
limit = 5;
} else if (range >= 1) {
limit = 1;
} else if (range >= 0.1) {
limit = 0.1;
} else if (range >= 0.01) {
limit = 0.01;
} else if (range >= 0.001) {
limit = 0.001;
} else if (range >= 0.0001) {
limit = 0.0001;
} else if (range >= 0.00001) {
limit = 0.00001;
} else {
limit = 0.000001;
}
return {
minRange: findRange(minData, 'lower', limit),
maxRange: findRange(maxData, 'upper', limit)
};
}
function measureText(text, fontSize, context) {
var width = 0;
text = String(text);
if (context !== false && context !== undefined && context.setFontSize && context.measureText) {
context.setFontSize(fontSize);
return context.measureText(text).width;
} else {
var text = text.split('');
for (var i = 0; i < text.length; i++) {
var item = text[i];
if (/[a-zA-Z]/.test(item)) {
width += 7;
} else if (/[0-9]/.test(item)) {
width += 5.5;
} else if (/\./.test(item)) {
width += 2.7;
} else if (/-/.test(item)) {
width += 3.25;
} else if (/:/.test(item)) {
width += 2.5;
} else if (/[\u4e00-\u9fa5]/.test(item)) {
width += 10;
} else if (/\(|\)/.test(item)) {
width += 3.73;
} else if (/\s/.test(item)) {
width += 2.5;
} else if (/%/.test(item)) {
width += 8;
} else {
width += 10;
}
}
return width * fontSize / 10;
}
}
function dataCombine(series) {
return series.reduce(function (a, b) {
return (a.data ? a.data : a).concat(b.data);
}, []);
}
function dataCombineStack(series, len) {
var sum = new Array(len);
for (var j = 0; j < sum.length; j++) {
sum[j] = 0;
}
for (var i = 0; i < series.length; i++) {
for (var j = 0; j < sum.length; j++) {
sum[j] += series[i].data[j];
}
}
return series.reduce(function (a, b) {
return (a.data ? a.data : a).concat(b.data).concat(sum);
}, []);
}
function getTouches(touches, opts, e) {
var x, y;
if (touches.clientX) {
if (opts.rotate) {
y = opts.height - touches.clientX * opts.pix;
x = (touches.pageY - e.currentTarget.offsetTop - opts.height / opts.pix / 2 * (opts.pix - 1)) * opts.pix;
} else {
x = touches.clientX * opts.pix;
y = (touches.pageY - e.currentTarget.offsetTop - opts.height / opts.pix / 2 * (opts.pix - 1)) * opts.pix;
}
} else {
if (opts.rotate) {
y = opts.height - touches.x * opts.pix;
x = touches.y * opts.pix;
} else {
x = touches.x * opts.pix;
y = touches.y * opts.pix;
}
}
return {
x: x,
y: y
};
}
function getSeriesDataItem(series, index, group) {
var data = [];
var newSeries = [];
var indexIsArr = index.constructor.toString().indexOf('Array') > -1;
if (indexIsArr) {
var tempSeries = filterSeries(series);
for (var i = 0; i < group.length; i++) {
newSeries.push(tempSeries[group[i]]);
}
} else {
newSeries = series;
}
;
for (var _i = 0; _i < newSeries.length; _i++) {
var item = newSeries[_i];
var tmpindex = -1;
if (indexIsArr) {
tmpindex = index[_i];
} else {
tmpindex = index;
}
if (item.data[tmpindex] !== null && typeof item.data[tmpindex] !== 'undefined' && item.show) {
var seriesItem = {};
seriesItem.color = item.color;
seriesItem.type = item.type;
seriesItem.style = item.style;
seriesItem.pointShape = item.pointShape;
seriesItem.disableLegend = item.disableLegend;
seriesItem.legendShape = item.legendShape;
seriesItem.name = item.name;
seriesItem.show = item.show;
seriesItem.data = item.formatter ? item.formatter(item.data[tmpindex]) : item.data[tmpindex];
data.push(seriesItem);
}
}
return data;
}
function getMaxTextListLength(list, fontSize, context) {
var lengthList = list.map(function (item) {
return measureText(item, fontSize, context);
});
return Math.max.apply(null, lengthList);
}
function getRadarCoordinateSeries(length) {
var eachAngle = 2 * Math.PI / length;
var CoordinateSeries = [];
for (var i = 0; i < length; i++) {
CoordinateSeries.push(eachAngle * i);
}
return CoordinateSeries.map(function (item) {
return -1 * item + Math.PI / 2;
});
}
function getToolTipData(seriesData, opts, index, group, categories) {
var option = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};
var calPoints = opts.chartData.calPoints ? opts.chartData.calPoints : [];
var points = {};
if (group.length > 0) {
var filterPoints = [];
for (var i = 0; i < group.length; i++) {
filterPoints.push(calPoints[group[i]]);
}
points = filterPoints[0][index[0]];
} else {
for (var _i2 = 0; _i2 < calPoints.length; _i2++) {
if (calPoints[_i2][index]) {
points = calPoints[_i2][index];
break;
}
}
}
;
var textList = seriesData.map(function (item) {
var titleText = null;
if (opts.categories && opts.categories.length > 0) {
titleText = categories[index];
}
;
return {
text: option.formatter ? option.formatter(item, titleText, index, opts) : item.name + ': ' + item.data,
color: item.color,
legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape
};
});
var offset = {
x: Math.round(points.x),
y: Math.round(points.y)
};
return {
textList: textList,
offset: offset
};
}
function getMixToolTipData(seriesData, opts, index, categories) {
var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
var points = opts.chartData.xAxisPoints[index] + opts.chartData.eachSpacing / 2;
var textList = seriesData.map(function (item) {
return {
text: option.formatter ? option.formatter(item, categories[index], index, opts) : item.name + ': ' + item.data,
color: item.color,
disableLegend: item.disableLegend ? true : false,
legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape
};
});
textList = textList.filter(function (item) {
if (item.disableLegend !== true) {
return item;
}
});
var offset = {
x: Math.round(points),
y: 0
};
return {
textList: textList,
offset: offset
};
}
function getCandleToolTipData(series, seriesData, opts, index, categories, extra) {
var option = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};
var calPoints = opts.chartData.calPoints;
var upColor = extra.color.upFill;
var downColor = extra.color.downFill;
//颜色顺序为开盘,收盘,最低,最高
var color = [upColor, upColor, downColor, upColor];
var textList = [];
seriesData.map(function (item) {
if (index == 0) {
if (item.data[1] - item.data[0] < 0) {
color[1] = downColor;
} else {
color[1] = upColor;
}
} else {
if (item.data[0] < series[index - 1][1]) {
color[0] = downColor;
}
if (item.data[1] < item.data[0]) {
color[1] = downColor;
}
if (item.data[2] > series[index - 1][1]) {
color[2] = upColor;
}
if (item.data[3] < series[index - 1][1]) {
color[3] = downColor;
}
}
var text1 = {
text: '开盘:' + item.data[0],
color: color[0],
legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape
};
var text2 = {
text: '收盘:' + item.data[1],
color: color[1],
legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape
};
var text3 = {
text: '最低:' + item.data[2],
color: color[2],
legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape
};
var text4 = {
text: '最高:' + item.data[3],
color: color[3],
legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape
};
textList.push(text1, text2, text3, text4);
});
var validCalPoints = [];
var offset = {
x: 0,
y: 0
};
for (var i = 0; i < calPoints.length; i++) {
var points = calPoints[i];
if (typeof points[index] !== 'undefined' && points[index] !== null) {
validCalPoints.push(points[index]);
}
}
offset.x = Math.round(validCalPoints[0][0].x);
return {
textList: textList,
offset: offset
};
}
function filterSeries(series) {
var tempSeries = [];
for (var i = 0; i < series.length; i++) {
if (series[i].show == true) {
tempSeries.push(series[i]);
}
}
return tempSeries;
}
function findCurrentIndex(currentPoints, calPoints, opts, config) {
var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
var current = {
index: -1,
group: []
};
var spacing = opts.chartData.eachSpacing / 2;
var xAxisPoints = [];
if (calPoints && calPoints.length > 0) {
if (!opts.categories) {
spacing = 0;
} else {
for (var i = 1; i < opts.chartData.xAxisPoints.length; i++) {
xAxisPoints.push(opts.chartData.xAxisPoints[i] - spacing);
}
if ((opts.type == 'line' || opts.type == 'area') && opts.xAxis.boundaryGap == 'justify') {
xAxisPoints = opts.chartData.xAxisPoints;
}
}
if (isInExactChartArea(currentPoints, opts, config)) {
if (!opts.categories) {
var timePoints = Array(calPoints.length);
for (var _i3 = 0; _i3 < calPoints.length; _i3++) {
timePoints[_i3] = Array(calPoints[_i3].length);
for (var j = 0; j < calPoints[_i3].length; j++) {
timePoints[_i3][j] = Math.abs(calPoints[_i3][j].x - currentPoints.x);
}
}
;
var pointValue = Array(timePoints.length);
var pointIndex = Array(timePoints.length);
for (var _i4 = 0; _i4 < timePoints.length; _i4++) {
pointValue[_i4] = Math.min.apply(null, timePoints[_i4]);
pointIndex[_i4] = timePoints[_i4].indexOf(pointValue[_i4]);
}
var minValue = Math.min.apply(null, pointValue);
current.index = [];
for (var _i5 = 0; _i5 < pointValue.length; _i5++) {
if (pointValue[_i5] == minValue) {
current.group.push(_i5);
current.index.push(pointIndex[_i5]);
}
}
;
} else {
xAxisPoints.forEach(function (item, index) {
if (currentPoints.x + offset + spacing > item) {
current.index = index;
}
});
}
}
}
return current;
}
function findBarChartCurrentIndex(currentPoints, calPoints, opts, config) {
var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
var current = {
index: -1,
group: []
};
var spacing = opts.chartData.eachSpacing / 2;
var yAxisPoints = opts.chartData.yAxisPoints;
if (calPoints && calPoints.length > 0) {
if (isInExactChartArea(currentPoints, opts, config)) {
yAxisPoints.forEach(function (item, index) {
if (currentPoints.y + offset + spacing > item) {
current.index = index;
}
});
}
}
return current;
}
function findLegendIndex(currentPoints, legendData, opts) {
var currentIndex = -1;
var gap = 0;
if (isInExactLegendArea(currentPoints, legendData.area)) {
var points = legendData.points;
var index = -1;
for (var i = 0, len = points.length; i < len; i++) {
var item = points[i];
for (var j = 0; j < item.length; j++) {
index += 1;
var area = item[j]['area'];
if (area && currentPoints.x > area[0] - gap && currentPoints.x < area[2] + gap && currentPoints.y > area[1] - gap && currentPoints.y < area[3] + gap) {
currentIndex = index;
break;
}
}
}
return currentIndex;
}
return currentIndex;
}
function isInExactLegendArea(currentPoints, area) {
return currentPoints.x > area.start.x && currentPoints.x < area.end.x && currentPoints.y > area.start.y && currentPoints.y < area.end.y;
}
function isInExactChartArea(currentPoints, opts, config) {
return currentPoints.x <= opts.width - opts.area[1] + 10 && currentPoints.x >= opts.area[3] - 10 && currentPoints.y >= opts.area[0] && currentPoints.y <= opts.height - opts.area[2];
}
function findRadarChartCurrentIndex(currentPoints, radarData, count) {
var eachAngleArea = 2 * Math.PI / count;
var currentIndex = -1;
if (isInExactPieChartArea(currentPoints, radarData.center, radarData.radius)) {
var fixAngle = function fixAngle(angle) {
if (angle < 0) {
angle += 2 * Math.PI;
}
if (angle > 2 * Math.PI) {
angle -= 2 * Math.PI;
}
return angle;
};
var angle = Math.atan2(radarData.center.y - currentPoints.y, currentPoints.x - radarData.center.x);
angle = -1 * angle;
if (angle < 0) {
angle += 2 * Math.PI;
}
var angleList = radarData.angleList.map(function (item) {
item = fixAngle(-1 * item);
return item;
});
angleList.forEach(function (item, index) {
var rangeStart = fixAngle(item - eachAngleArea / 2);
var rangeEnd = fixAngle(item + eachAngleArea / 2);
if (rangeEnd < rangeStart) {
rangeEnd += 2 * Math.PI;
}
if (angle >= rangeStart && angle <= rangeEnd || angle + 2 * Math.PI >= rangeStart && angle + 2 * Math.PI <= rangeEnd) {
currentIndex = index;
}
});
}
return currentIndex;
}
function findFunnelChartCurrentIndex(currentPoints, funnelData) {
var currentIndex = -1;
for (var i = 0, len = funnelData.series.length; i < len; i++) {
var item = funnelData.series[i];
if (currentPoints.x > item.funnelArea[0] && currentPoints.x < item.funnelArea[2] && currentPoints.y > item.funnelArea[1] && currentPoints.y < item.funnelArea[3]) {
currentIndex = i;
break;
}
}
return currentIndex;
}
function findWordChartCurrentIndex(currentPoints, wordData) {
var currentIndex = -1;
for (var i = 0, len = wordData.length; i < len; i++) {
var item = wordData[i];
if (currentPoints.x > item.area[0] && currentPoints.x < item.area[2] && currentPoints.y > item.area[1] && currentPoints.y < item.area[3]) {
currentIndex = i;
break;
}
}
return currentIndex;
}
function findMapChartCurrentIndex(currentPoints, opts) {
var currentIndex = -1;
var cData = opts.chartData.mapData;
var data = opts.series;
var tmp = pointToCoordinate(currentPoints.y, currentPoints.x, cData.bounds, cData.scale, cData.xoffset, cData.yoffset);
var poi = [tmp.x, tmp.y];
for (var i = 0, len = data.length; i < len; i++) {
var item = data[i].geometry.coordinates;
if (isPoiWithinPoly(poi, item, opts.chartData.mapData.mercator)) {
currentIndex = i;
break;
}
}
return currentIndex;
}
function findRoseChartCurrentIndex(currentPoints, pieData, opts) {
var currentIndex = -1;
var series = getRoseDataPoints(opts._series_, opts.extra.rose.type, pieData.radius, pieData.radius);
if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) {
var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x);
angle = -angle;
if (opts.extra.rose && opts.extra.rose.offsetAngle) {
angle = angle - opts.extra.rose.offsetAngle * Math.PI / 180;
}
for (var i = 0, len = series.length; i < len; i++) {
if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._rose_proportion_ * 2 * Math.PI)) {
currentIndex = i;
break;
}
}
}
return currentIndex;
}
function findPieChartCurrentIndex(currentPoints, pieData, opts) {
var currentIndex = -1;
var series = getPieDataPoints(pieData.series);
if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) {
var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x);
angle = -angle;
if (opts.extra.pie && opts.extra.pie.offsetAngle) {
angle = angle - opts.extra.pie.offsetAngle * Math.PI / 180;
}
if (opts.extra.ring && opts.extra.ring.offsetAngle) {
angle = angle - opts.extra.ring.offsetAngle * Math.PI / 180;
}
for (var i = 0, len = series.length; i < len; i++) {
if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._proportion_ * 2 * Math.PI)) {
currentIndex = i;
break;
}
}
}
return currentIndex;
}
function isInExactPieChartArea(currentPoints, center, radius) {
return Math.pow(currentPoints.x - center.x, 2) + Math.pow(currentPoints.y - center.y, 2) <= Math.pow(radius, 2);
}
function splitPoints(points, eachSeries) {
var newPoints = [];
var items = [];
points.forEach(function (item, index) {
if (eachSeries.connectNulls) {
if (item !== null) {
items.push(item);
}
} else {
if (item !== null) {
items.push(item);
} else {
if (items.length) {
newPoints.push(items);
}
items = [];
}
}
});
if (items.length) {
newPoints.push(items);
}
return newPoints;
}
function calLegendData(series, opts, config, chartData, context) {
var legendData = {
area: {
start: {
x: 0,
y: 0
},
end: {
x: 0,
y: 0
},
width: 0,
height: 0,
wholeWidth: 0,
wholeHeight: 0
},
points: [],
widthArr: [],
heightArr: []
};
if (opts.legend.show === false) {
chartData.legendData = legendData;
return legendData;
}
var padding = opts.legend.padding * opts.pix;
var margin = opts.legend.margin * opts.pix;
var fontSize = opts.legend.fontSize ? opts.legend.fontSize * opts.pix : config.fontSize;
var shapeWidth = 15 * opts.pix;
var shapeRight = 5 * opts.pix;
var lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize);
if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {
var legendList = [];
var widthCount = 0;
var widthCountArr = [];
var currentRow = [];
for (var i = 0; i < series.length; i++) {
var item = series[i];
var legendText = item.legendText ? item.legendText : item.name;
var itemWidth = shapeWidth + shapeRight + measureText(legendText || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix;
if (widthCount + itemWidth > opts.width - opts.area[1] - opts.area[3]) {
legendList.push(currentRow);
widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix);
widthCount = itemWidth;
currentRow = [item];
} else {
widthCount += itemWidth;
currentRow.push(item);
}
}
if (currentRow.length) {
legendList.push(currentRow);
widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix);
legendData.widthArr = widthCountArr;
var legendWidth = Math.max.apply(null, widthCountArr);
switch (opts.legend.float) {
case 'left':
legendData.area.start.x = opts.area[3];
legendData.area.end.x = opts.area[3] + legendWidth + 2 * padding;
break;
case 'right':
legendData.area.start.x = opts.width - opts.area[1] - legendWidth - 2 * padding;
legendData.area.end.x = opts.width - opts.area[1];
break;
default:
legendData.area.start.x = (opts.width - legendWidth) / 2 - padding;
legendData.area.end.x = (opts.width + legendWidth) / 2 + padding;
}
legendData.area.width = legendWidth + 2 * padding;
legendData.area.wholeWidth = legendWidth + 2 * padding;
legendData.area.height = legendList.length * lineHeight + 2 * padding;
legendData.area.wholeHeight = legendList.length * lineHeight + 2 * padding + 2 * margin;
legendData.points = legendList;
}
} else {
var len = series.length;
var maxHeight = opts.height - opts.area[0] - opts.area[2] - 2 * margin - 2 * padding;
var maxLength = Math.min(Math.floor(maxHeight / lineHeight), len);
legendData.area.height = maxLength * lineHeight + padding * 2;
legendData.area.wholeHeight = maxLength * lineHeight + padding * 2;
switch (opts.legend.float) {
case 'top':
legendData.area.start.y = opts.area[0] + margin;
legendData.area.end.y = opts.area[0] + margin + legendData.area.height;
break;
case 'bottom':
legendData.area.start.y = opts.height - opts.area[2] - margin - legendData.area.height;
legendData.area.end.y = opts.height - opts.area[2] - margin;
break;
default:
legendData.area.start.y = (opts.height - legendData.area.height) / 2;
legendData.area.end.y = (opts.height + legendData.area.height) / 2;
}
var lineNum = len % maxLength === 0 ? len / maxLength : Math.floor(len / maxLength + 1);
var _currentRow = [];
for (var _i6 = 0; _i6 < lineNum; _i6++) {
var temp = series.slice(_i6 * maxLength, _i6 * maxLength + maxLength);
_currentRow.push(temp);
}
legendData.points = _currentRow;
if (_currentRow.length) {
for (var _i7 = 0; _i7 < _currentRow.length; _i7++) {
var _item = _currentRow[_i7];
var maxWidth = 0;
for (var j = 0; j < _item.length; j++) {
var _itemWidth = shapeWidth + shapeRight + measureText(_item[j].name || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix;
if (_itemWidth > maxWidth) {
maxWidth = _itemWidth;
}
}
legendData.widthArr.push(maxWidth);
legendData.heightArr.push(_item.length * lineHeight + padding * 2);
}
var _legendWidth = 0;
for (var _i8 = 0; _i8 < legendData.widthArr.length; _i8++) {
_legendWidth += legendData.widthArr[_i8];
}
legendData.area.width = _legendWidth - opts.legend.itemGap * opts.pix + 2 * padding;
legendData.area.wholeWidth = legendData.area.width + padding;
}
}
switch (opts.legend.position) {
case 'top':
legendData.area.start.y = opts.area[0] + margin;
legendData.area.end.y = opts.area[0] + margin + legendData.area.height;
break;
case 'bottom':
legendData.area.start.y = opts.height - opts.area[2] - legendData.area.height - margin;
legendData.area.end.y = opts.height - opts.area[2] - margin;
break;
case 'left':
legendData.area.start.x = opts.area[3];
legendData.area.end.x = opts.area[3] + legendData.area.width;
break;
case 'right':
legendData.area.start.x = opts.width - opts.area[1] - legendData.area.width;
legendData.area.end.x = opts.width - opts.area[1];
break;
}
chartData.legendData = legendData;
return legendData;
}
function calCategoriesData(categories, opts, config, eachSpacing, context) {
var result = {
angle: 0,
xAxisHeight: opts.xAxis.lineHeight * opts.pix + opts.xAxis.marginTop * opts.pix
};
var fontSize = opts.xAxis.fontSize * opts.pix;
var categoriesTextLenth = categories.map(function (item, index) {
var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item, index, opts) : item;
return measureText(String(xitem), fontSize, context);
});
var maxTextLength = Math.max.apply(this, categoriesTextLenth);
if (opts.xAxis.rotateLabel == true) {
result.angle = opts.xAxis.rotateAngle * Math.PI / 180;
var tempHeight = opts.xAxis.marginTop * opts.pix * 2 + Math.abs(maxTextLength * Math.sin(result.angle));
tempHeight = tempHeight < fontSize + opts.xAxis.marginTop * opts.pix * 2 ? tempHeight + opts.xAxis.marginTop * opts.pix * 2 : tempHeight;
result.xAxisHeight = tempHeight;
}
if (opts.enableScroll && opts.xAxis.scrollShow) {
result.xAxisHeight += 6 * opts.pix;
}
if (opts.xAxis.disabled) {
result.xAxisHeight = 0;
}
return result;
}
function getXAxisTextList(series, opts, config, stack) {
var index = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;
var data;
if (stack == 'stack') {
data = dataCombineStack(series, opts.categories.length);
} else {
data = dataCombine(series);
}
var sorted = [];
// remove null from data
data = data.filter(function (item) {
//return item !== null;
if ((0, _typeof2.default)(item) === 'object' && item !== null) {
if (item.constructor.toString().indexOf('Array') > -1) {
return item !== null;
} else {
return item.value !== null;
}
} else {
return item !== null;
}
});
data.map(function (item) {
if ((0, _typeof2.default)(item) === 'object') {
if (item.constructor.toString().indexOf('Array') > -1) {
if (opts.type == 'candle') {
item.map(function (subitem) {
sorted.push(subitem);
});
} else {
sorted.push(item[0]);
}
} else {
sorted.push(item.value);
}
} else {
sorted.push(item);
}
});
var minData = 0;
var maxData = 0;
if (sorted.length > 0) {
minData = Math.min.apply(this, sorted);
maxData = Math.max.apply(this, sorted);
}
//为了兼容v1.9.0之前的项目
if (index > -1) {
if (typeof opts.xAxis.data[index].min === 'number') {
minData = Math.min(opts.xAxis.data[index].min, minData);
}
if (typeof opts.xAxis.data[index].max === 'number') {
maxData = Math.max(opts.xAxis.data[index].max, maxData);
}
} else {
if (typeof opts.xAxis.min === 'number') {
minData = Math.min(opts.xAxis.min, minData);
}
if (typeof opts.xAxis.max === 'number') {
maxData = Math.max(opts.xAxis.max, maxData);
}
}
if (minData === maxData) {
var rangeSpan = maxData || 10;
maxData += rangeSpan;
}
//var dataRange = getDataRange(minData, maxData);
var minRange = minData;
var maxRange = maxData;
var range = [];
var eachRange = (maxRange - minRange) / opts.xAxis.splitNumber;
for (var i = 0; i <= opts.xAxis.splitNumber; i++) {
range.push(minRange + eachRange * i);
}
return range;
}
function calXAxisData(series, opts, config, context) {
//堆叠图重算Y轴
var columnstyle = assign({}, {
type: ""
}, opts.extra.bar);
var result = {
angle: 0,
xAxisHeight: opts.xAxis.lineHeight * opts.pix + opts.xAxis.marginTop * opts.pix
};
result.ranges = getXAxisTextList(series, opts, config, columnstyle.type);
result.rangesFormat = result.ranges.map(function (item) {
//item = opts.xAxis.formatter ? opts.xAxis.formatter(item) : util.toFixed(item, 2);
item = util.toFixed(item, 2);
return item;
});
var xAxisScaleValues = result.ranges.map(function (item) {
// 如果刻度值是浮点数,则保留两位小数
item = util.toFixed(item, 2);
// 若有自定义格式则调用自定义的格式化函数
//item = opts.xAxis.formatter ? opts.xAxis.formatter(Number(item)) : item;
return item;
});
result = Object.assign(result, getXAxisPoints(xAxisScaleValues, opts, config));
// 计算X轴刻度的属性譬如每个刻度的间隔,刻度的起始点\结束点以及总长
var eachSpacing = result.eachSpacing;
var textLength = xAxisScaleValues.map(function (item) {
return measureText(item, opts.xAxis.fontSize * opts.pix, context);
});
if (opts.xAxis.disabled === true) {
result.xAxisHeight = 0;
}
return result;
}
function getRadarDataPoints(angleList, center, radius, series, opts) {
var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
var radarOption = opts.extra.radar || {};
radarOption.max = radarOption.max || 0;
var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series)));
var data = [];
var _loop2 = function _loop2(i) {
var each = series[i];
var listItem = {};
listItem.color = each.color;
listItem.legendShape = each.legendShape;
listItem.pointShape = each.pointShape;
listItem.data = [];
each.data.forEach(function (item, index) {
var tmp = {};
tmp.angle = angleList[index];
tmp.proportion = item / maxData;
tmp.value = item;
tmp.position = convertCoordinateOrigin(radius * tmp.proportion * process * Math.cos(tmp.angle), radius * tmp.proportion * process * Math.sin(tmp.angle), center);
listItem.data.push(tmp);
});
data.push(listItem);
};
for (var i = 0; i < series.length; i++) {
_loop2(i);
}
return data;
}
function getPieDataPoints(series, radius) {
var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
var count = 0;
var _start_ = 0;
for (var i = 0; i < series.length; i++) {
var item = series[i];
item.data = item.data === null ? 0 : item.data;
count += item.data;
}
for (var _i9 = 0; _i9 < series.length; _i9++) {
var _item2 = series[_i9];
_item2.data = _item2.data === null ? 0 : _item2.data;
if (count === 0) {
_item2._proportion_ = 1 / series.length * process;
} else {
_item2._proportion_ = _item2.data / count * process;
}
_item2._radius_ = radius;
}
for (var _i10 = 0; _i10 < series.length; _i10++) {
var _item3 = series[_i10];
_item3._start_ = _start_;
_start_ += 2 * _item3._proportion_ * Math.PI;
}
return series;
}
function getFunnelDataPoints(series, radius, option, eachSpacing) {
var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
for (var i = 0; i < series.length; i++) {
if (option.type == 'funnel') {
series[i].radius = series[i].data / series[0].data * radius * process;
} else {
series[i].radius = eachSpacing * (series.length - i) / (eachSpacing * series.length) * radius * process;
}
series[i]._proportion_ = series[i].data / series[0].data;
}
// if(option.type !== 'pyramid'){
// series.reverse();
// }
return series;
}
function getRoseDataPoints(series, type, minRadius, radius) {
var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
var count = 0;
var _start_ = 0;
var dataArr = [];
for (var i = 0; i < series.length; i++) {
var item = series[i];
item.data = item.data === null ? 0 : item.data;
count += item.data;
dataArr.push(item.data);
}
var minData = Math.min.apply(null, dataArr);
var maxData = Math.max.apply(null, dataArr);
var radiusLength = radius - minRadius;
for (var _i11 = 0; _i11 < series.length; _i11++) {
var _item4 = series[_i11];
_item4.data = _item4.data === null ? 0 : _item4.data;
if (count === 0) {
_item4._proportion_ = 1 / series.length * process;
_item4._rose_proportion_ = 1 / series.length * process;
} else {
_item4._proportion_ = _item4.data / count * process;
if (type == 'area') {
_item4._rose_proportion_ = 1 / series.length * process;
} else {
_item4._rose_proportion_ = _item4.data / count * process;
}
}
_item4._radius_ = minRadius + radiusLength * ((_item4.data - minData) / (maxData - minData)) || radius;
}
for (var _i12 = 0; _i12 < series.length; _i12++) {
var _item5 = series[_i12];
_item5._start_ = _start_;
_start_ += 2 * _item5._rose_proportion_ * Math.PI;
}
return series;
}
function getArcbarDataPoints(series, arcbarOption) {
var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
if (process == 1) {
process = 0.999999;
}
for (var i = 0; i < series.length; i++) {
var item = series[i];
item.data = item.data === null ? 0 : item.data;
var totalAngle = void 0;
if (arcbarOption.type == 'circle') {
totalAngle = 2;
} else {
if (arcbarOption.direction == 'ccw') {
if (arcbarOption.startAngle < arcbarOption.endAngle) {
totalAngle = 2 + arcbarOption.startAngle - arcbarOption.endAngle;
} else {
totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;
}
} else {
if (arcbarOption.endAngle < arcbarOption.startAngle) {
totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle;
} else {
totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;
}
}
}
item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle;
if (arcbarOption.direction == 'ccw') {
item._proportion_ = arcbarOption.startAngle - totalAngle * item.data * process;
}
if (item._proportion_ >= 2) {
item._proportion_ = item._proportion_ % 2;
}
}
return series;
}
function getGaugeArcbarDataPoints(series, arcbarOption) {
var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
if (process == 1) {
process = 0.999999;
}
for (var i = 0; i < series.length; i++) {
var item = series[i];
item.data = item.data === null ? 0 : item.data;
var totalAngle = void 0;
if (arcbarOption.type == 'circle') {
totalAngle = 2;
} else {
if (arcbarOption.endAngle < arcbarOption.startAngle) {
totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle;
} else {
totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;
}
}
item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle;
if (item._proportion_ >= 2) {
item._proportion_ = item._proportion_ % 2;
}
}
return series;
}
function getGaugeAxisPoints(categories, startAngle, endAngle) {
var totalAngle;
if (endAngle < startAngle) {
totalAngle = 2 + endAngle - startAngle;
} else {
totalAngle = startAngle - endAngle;
}
var tempStartAngle = startAngle;
for (var i = 0; i < categories.length; i++) {
categories[i].value = categories[i].value === null ? 0 : categories[i].value;
categories[i]._startAngle_ = tempStartAngle;
categories[i]._endAngle_ = totalAngle * categories[i].value + startAngle;
if (categories[i]._endAngle_ >= 2) {
categories[i]._endAngle_ = categories[i]._endAngle_ % 2;
}
tempStartAngle = categories[i]._endAngle_;
}
return categories;
}
function getGaugeDataPoints(series, categories, gaugeOption) {
var process = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
for (var i = 0; i < series.length; i++) {
var item = series[i];
item.data = item.data === null ? 0 : item.data;
if (gaugeOption.pointer.color == 'auto') {
for (var _i13 = 0; _i13 < categories.length; _i13++) {
if (item.data <= categories[_i13].value) {
item.color = categories[_i13].color;
break;
}
}
} else {
item.color = gaugeOption.pointer.color;
}
var totalAngle = void 0;
if (gaugeOption.endAngle < gaugeOption.startAngle) {
totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle;
} else {
totalAngle = gaugeOption.startAngle - gaugeOption.endAngle;
}
item._endAngle_ = totalAngle * item.data + gaugeOption.startAngle;
item._oldAngle_ = gaugeOption.oldAngle;
if (gaugeOption.oldAngle < gaugeOption.endAngle) {
item._oldAngle_ += 2;
}
if (item.data >= gaugeOption.oldData) {
item._proportion_ = (item._endAngle_ - item._oldAngle_) * process + gaugeOption.oldAngle;
} else {
item._proportion_ = item._oldAngle_ - (item._oldAngle_ - item._endAngle_) * process;
}
if (item._proportion_ >= 2) {
item._proportion_ = item._proportion_ % 2;
}
}
return series;
}
function getPieTextMaxLength(series, config, context, opts) {
series = getPieDataPoints(series);
var maxLength = 0;
for (var i = 0; i < series.length; i++) {
var item = series[i];
var text = item.formatter ? item.formatter(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%';
maxLength = Math.max(maxLength, measureText(text, item.textSize * opts.pix || config.fontSize, context));
}
return maxLength;
}
function fixColumeData(points, eachSpacing, columnLen, index, config, opts) {
return points.map(function (item) {
if (item === null) {
return null;
}
var seriesGap = 0;
var categoryGap = 0;
if (opts.type == 'mix') {
seriesGap = opts.extra.mix.column.seriesGap * opts.pix || 0;
categoryGap = opts.extra.mix.column.categoryGap * opts.pix || 0;
} else {
seriesGap = opts.extra.column.seriesGap * opts.pix || 0;
categoryGap = opts.extra.column.categoryGap * opts.pix || 0;
}
seriesGap = Math.min(seriesGap, eachSpacing / columnLen);
categoryGap = Math.min(categoryGap, eachSpacing / columnLen);
item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen);
if (opts.extra.mix && opts.extra.mix.column.width && +opts.extra.mix.column.width > 0) {
item.width = Math.min(item.width, +opts.extra.mix.column.width * opts.pix);
}
if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {
item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);
}
if (item.width <= 0) {
item.width = 1;
}
item.x += (index + 0.5 - columnLen / 2) * (item.width + seriesGap);
return item;
});
}
function fixBarData(points, eachSpacing, columnLen, index, config, opts) {
return points.map(function (item) {
if (item === null) {
return null;
}
var seriesGap = 0;
var categoryGap = 0;
seriesGap = opts.extra.bar.seriesGap * opts.pix || 0;
categoryGap = opts.extra.bar.categoryGap * opts.pix || 0;
seriesGap = Math.min(seriesGap, eachSpacing / columnLen);
categoryGap = Math.min(categoryGap, eachSpacing / columnLen);
item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen);
if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) {
item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix);
}
if (item.width <= 0) {
item.width = 1;
}
item.y += (index + 0.5 - columnLen / 2) * (item.width + seriesGap);
return item;
});
}
function fixColumeMeterData(points, eachSpacing, columnLen, index, config, opts, border) {
var categoryGap = opts.extra.column.categoryGap * opts.pix || 0;
return points.map(function (item) {
if (item === null) {
return null;
}
item.width = eachSpacing - 2 * categoryGap;
if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {
item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);
}
if (index > 0) {
item.width -= border;
}
return item;
});
}
function fixColumeStackData(points, eachSpacing, columnLen, index, config, opts, series) {
var categoryGap = opts.extra.column.categoryGap * opts.pix || 0;
return points.map(function (item, indexn) {
if (item === null) {
return null;
}
item.width = Math.ceil(eachSpacing - 2 * categoryGap);
if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {
item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);
}
if (item.width <= 0) {
item.width = 1;
}
return item;
});
}
function fixBarStackData(points, eachSpacing, columnLen, index, config, opts, series) {
var categoryGap = opts.extra.bar.categoryGap * opts.pix || 0;
return points.map(function (item, indexn) {
if (item === null) {
return null;
}
item.width = Math.ceil(eachSpacing - 2 * categoryGap);
if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) {
item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix);
}
if (item.width <= 0) {
item.width = 1;
}
return item;
});
}
function getXAxisPoints(categories, opts, config) {
var spacingValid = opts.width - opts.area[1] - opts.area[3];
var dataCount = opts.enableScroll ? Math.min(opts.xAxis.itemCount, categories.length) : categories.length;
if ((opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble' || opts.type == 'bar') && dataCount > 1 && opts.xAxis.boundaryGap == 'justify') {
dataCount -= 1;
}
var widthRatio = 0;
if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {
if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;
widthRatio = opts.extra.mount.widthRatio - 1;
dataCount += widthRatio;
}
var eachSpacing = spacingValid / dataCount;
var xAxisPoints = [];
var startX = opts.area[3];
var endX = opts.width - opts.area[1];
categories.forEach(function (item, index) {
xAxisPoints.push(startX + widthRatio / 2 * eachSpacing + index * eachSpacing);
});
if (opts.xAxis.boundaryGap !== 'justify') {
if (opts.enableScroll === true) {
xAxisPoints.push(startX + widthRatio * eachSpacing + categories.length * eachSpacing);
} else {
xAxisPoints.push(endX);
}
}
return {
xAxisPoints: xAxisPoints,
startX: startX,
endX: endX,
eachSpacing: eachSpacing
};
}
function getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {
var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;
var points = [];
var validHeight = opts.height - opts.area[0] - opts.area[2];
data.forEach(function (item, index) {
if (item === null) {
points.push(null);
} else {
var cPoints = [];
item.forEach(function (items, indexs) {
var point = {};
point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);
var value = items.value || items;
var height = validHeight * (value - minRange) / (maxRange - minRange);
height *= process;
point.y = opts.height - Math.round(height) - opts.area[2];
cPoints.push(point);
});
points.push(cPoints);
}
});
return points;
}
function getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {
var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;
var boundaryGap = 'center';
if (opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble') {
boundaryGap = opts.xAxis.boundaryGap;
}
var points = [];
var validHeight = opts.height - opts.area[0] - opts.area[2];
var validWidth = opts.width - opts.area[1] - opts.area[3];
data.forEach(function (item, index) {
if (item === null) {
points.push(null);
} else {
var point = {};
point.color = item.color;
point.x = xAxisPoints[index];
var value = item;
if ((0, _typeof2.default)(item) === 'object' && item !== null) {
if (item.constructor.toString().indexOf('Array') > -1) {
var xranges, xminRange, xmaxRange;
xranges = [].concat(opts.chartData.xAxisData.ranges);
xminRange = xranges.shift();
xmaxRange = xranges.pop();
value = item[1];
point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange);
if (opts.type == 'bubble') {
point.r = item[2];
point.t = item[3];
}
} else {
value = item.value;
}
}
if (boundaryGap == 'center') {
point.x += eachSpacing / 2;
}
var height = validHeight * (value - minRange) / (maxRange - minRange);
height *= process;
point.y = opts.height - height - opts.area[2];
points.push(point);
}
});
return points;
}
function getLineDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, lineOption, process) {
var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
var boundaryGap = opts.xAxis.boundaryGap;
var points = [];
var validHeight = opts.height - opts.area[0] - opts.area[2];
var validWidth = opts.width - opts.area[1] - opts.area[3];
data.forEach(function (item, index) {
if (item === null) {
points.push(null);
} else {
var point = {};
point.color = item.color;
if (lineOption.animation == 'vertical') {
point.x = xAxisPoints[index];
var value = item;
if ((0, _typeof2.default)(item) === 'object' && item !== null) {
if (item.constructor.toString().indexOf('Array') > -1) {
var xranges, xminRange, xmaxRange;
xranges = [].concat(opts.chartData.xAxisData.ranges);
xminRange = xranges.shift();
xmaxRange = xranges.pop();
value = item[1];
point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange);
} else {
value = item.value;
}
}
if (boundaryGap == 'center') {
point.x += eachSpacing / 2;
}
var height = validHeight * (value - minRange) / (maxRange - minRange);
height *= process;
point.y = opts.height - height - opts.area[2];
points.push(point);
} else {
point.x = xAxisPoints[0] + eachSpacing * index * process;
var value = item;
if (boundaryGap == 'center') {
point.x += eachSpacing / 2;
}
var height = validHeight * (value - minRange) / (maxRange - minRange);
point.y = opts.height - height - opts.area[2];
points.push(point);
}
}
});
return points;
}
function getColumnDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, zeroPoints, process) {
var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
var points = [];
var validHeight = opts.height - opts.area[0] - opts.area[2];
var validWidth = opts.width - opts.area[1] - opts.area[3];
data.forEach(function (item, index) {
if (item === null) {
points.push(null);
} else {
var point = {};
point.color = item.color;
point.x = xAxisPoints[index];
var value = item;
if ((0, _typeof2.default)(item) === 'object' && item !== null) {
if (item.constructor.toString().indexOf('Array') > -1) {
var xranges, xminRange, xmaxRange;
xranges = [].concat(opts.chartData.xAxisData.ranges);
xminRange = xranges.shift();
xmaxRange = xranges.pop();
value = item[1];
point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange);
} else {
value = item.value;
}
}
point.x += eachSpacing / 2;
var height = validHeight * (value * process - minRange) / (maxRange - minRange);
point.y = opts.height - height - opts.area[2];
points.push(point);
}
});
return points;
}
function getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, zeroPoints) {
var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;
var points = [];
var validHeight = opts.height - opts.area[0] - opts.area[2];
var validWidth = opts.width - opts.area[1] - opts.area[3];
var mountWidth = eachSpacing * mountOption.widthRatio;
series.forEach(function (item, index) {
if (item === null) {
points.push(null);
} else {
var point = {};
point.color = item.color;
point.x = xAxisPoints[index];
point.x += eachSpacing / 2;
var value = item.data;
var height = validHeight * (value * process - minRange) / (maxRange - minRange);
point.y = opts.height - height - opts.area[2];
point.value = value;
point.width = mountWidth;
points.push(point);
}
});
return points;
}
function getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config) {
var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;
var points = [];
var validHeight = opts.height - opts.area[0] - opts.area[2];
var validWidth = opts.width - opts.area[1] - opts.area[3];
data.forEach(function (item, index) {
if (item === null) {
points.push(null);
} else {
var point = {};
point.color = item.color;
point.y = yAxisPoints[index];
var value = item;
if ((0, _typeof2.default)(item) === 'object' && item !== null) {
value = item.value;
}
var height = validWidth * (value - minRange) / (maxRange - minRange);
height *= process;
point.height = height;
point.value = value;
point.x = height + opts.area[3];
points.push(point);
}
});
return points;
}
function getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) {
var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1;
var points = [];
var validHeight = opts.height - opts.area[0] - opts.area[2];
data.forEach(function (item, index) {
if (item === null) {
points.push(null);
} else {
var point = {};
point.color = item.color;
point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);
if (seriesIndex > 0) {
var value = 0;
for (var i = 0; i <= seriesIndex; i++) {
value += stackSeries[i].data[index];
}
var value0 = value - item;
var height = validHeight * (value - minRange) / (maxRange - minRange);
var height0 = validHeight * (value0 - minRange) / (maxRange - minRange);
} else {
var value = item;
if ((0, _typeof2.default)(item) === 'object' && item !== null) {
value = item.value;
}
var height = validHeight * (value - minRange) / (maxRange - minRange);
var height0 = 0;
}
var heightc = height0;
height *= process;
heightc *= process;
point.y = opts.height - Math.round(height) - opts.area[2];
point.y0 = opts.height - Math.round(heightc) - opts.area[2];
points.push(point);
}
});
return points;
}
function getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) {
var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1;
var points = [];
var validHeight = opts.width - opts.area[1] - opts.area[3];
data.forEach(function (item, index) {
if (item === null) {
points.push(null);
} else {
var point = {};
point.color = item.color;
point.y = yAxisPoints[index];
if (seriesIndex > 0) {
var value = 0;
for (var i = 0; i <= seriesIndex; i++) {
value += stackSeries[i].data[index];
}
var value0 = value - item;
var height = validHeight * (value - minRange) / (maxRange - minRange);
var height0 = validHeight * (value0 - minRange) / (maxRange - minRange);
} else {
var value = item;
if ((0, _typeof2.default)(item) === 'object' && item !== null) {
value = item.value;
}
var height = validHeight * (value - minRange) / (maxRange - minRange);
var height0 = 0;
}
var heightc = height0;
height *= process;
heightc *= process;
point.height = height - heightc;
point.x = opts.area[3] + height;
point.x0 = opts.area[3] + heightc;
points.push(point);
}
});
return points;
}
function getYAxisTextList(series, opts, config, stack, yData) {
var index = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : -1;
var data;
if (stack == 'stack') {
data = dataCombineStack(series, opts.categories.length);
} else {
data = dataCombine(series);
}
var sorted = [];
// remove null from data
data = data.filter(function (item) {
//return item !== null;
if ((0, _typeof2.default)(item) === 'object' && item !== null) {
if (item.constructor.toString().indexOf('Array') > -1) {
return item !== null;
} else {
return item.value !== null;
}
} else {
return item !== null;
}
});
data.map(function (item) {
if ((0, _typeof2.default)(item) === 'object') {
if (item.constructor.toString().indexOf('Array') > -1) {
if (opts.type == 'candle') {
item.map(function (subitem) {
sorted.push(subitem);
});
} else {
sorted.push(item[1]);
}
} else {
sorted.push(item.value);
}
} else {
sorted.push(item);
}
});
var minData = yData.min || 0;
var maxData = yData.max || 0;
if (sorted.length > 0) {
minData = Math.min.apply(this, sorted);
maxData = Math.max.apply(this, sorted);
}
if (minData === maxData) {
if (maxData == 0) {
maxData = 10;
} else {
minData = 0;
}
}
var dataRange = getDataRange(minData, maxData);
var minRange = yData.min === undefined || yData.min === null ? dataRange.minRange : yData.min;
var maxRange = yData.max === undefined || yData.max === null ? dataRange.maxRange : yData.max;
var eachRange = (maxRange - minRange) / opts.yAxis.splitNumber;
var range = [];
for (var i = 0; i <= opts.yAxis.splitNumber; i++) {
range.push(minRange + eachRange * i);
}
return range.reverse();
}
function calYAxisData(series, opts, config, context) {
//堆叠图重算Y轴
var columnstyle = assign({}, {
type: ""
}, opts.extra.column);
//如果是多Y轴重新计算
var YLength = opts.yAxis.data.length;
var newSeries = new Array(YLength);
if (YLength > 0) {
for (var i = 0; i < YLength; i++) {
newSeries[i] = [];
for (var j = 0; j < series.length; j++) {
if (series[j].index == i) {
newSeries[i].push(series[j]);
}
}
}
var rangesArr = new Array(YLength);
var rangesFormatArr = new Array(YLength);
var yAxisWidthArr = new Array(YLength);
var _loop3 = function _loop3(_i14) {
var yData = opts.yAxis.data[_i14];
//如果总开关不显示强制每个Y轴为不显示
if (opts.yAxis.disabled == true) {
yData.disabled = true;
}
if (yData.type === 'categories') {
if (!yData.formatter) {
yData.formatter = function (val, index, opts) {
return val + (yData.unit || '');
};
}
yData.categories = yData.categories || opts.categories;
rangesArr[_i14] = yData.categories;
} else {
if (!yData.formatter) {
yData.formatter = function (val, index, opts) {
return util.toFixed(val, yData.tofix || 0) + (yData.unit || '');
};
}
rangesArr[_i14] = getYAxisTextList(newSeries[_i14], opts, config, columnstyle.type, yData, _i14);
}
var yAxisFontSizes = yData.fontSize * opts.pix || config.fontSize;
yAxisWidthArr[_i14] = {
position: yData.position ? yData.position : 'left',
width: 0
};
rangesFormatArr[_i14] = rangesArr[_i14].map(function (items, index) {
items = yData.formatter(items, index, opts);
yAxisWidthArr[_i14].width = Math.max(yAxisWidthArr[_i14].width, measureText(items, yAxisFontSizes, context) + 5);
return items;
});
var calibration = yData.calibration ? 4 * opts.pix : 0;
yAxisWidthArr[_i14].width += calibration + 3 * opts.pix;
if (yData.disabled === true) {
yAxisWidthArr[_i14].width = 0;
}
};
for (var _i14 = 0; _i14 < YLength; _i14++) {
_loop3(_i14);
}
} else {
var rangesArr = new Array(1);
var rangesFormatArr = new Array(1);
var yAxisWidthArr = new Array(1);
if (opts.type === 'bar') {
rangesArr[0] = opts.categories;
if (!opts.yAxis.formatter) {
opts.yAxis.formatter = function (val, index, opts) {
return val + (opts.yAxis.unit || '');
};
}
} else {
if (!opts.yAxis.formatter) {
opts.yAxis.formatter = function (val, index, opts) {
return val.toFixed(opts.yAxis.tofix) + (opts.yAxis.unit || '');
};
}
rangesArr[0] = getYAxisTextList(series, opts, config, columnstyle.type, {});
}
yAxisWidthArr[0] = {
position: 'left',
width: 0
};
var yAxisFontSize = opts.yAxis.fontSize * opts.pix || config.fontSize;
rangesFormatArr[0] = rangesArr[0].map(function (item, index) {
item = opts.yAxis.formatter(item, index, opts);
yAxisWidthArr[0].width = Math.max(yAxisWidthArr[0].width, measureText(item, yAxisFontSize, context) + 5);
return item;
});
yAxisWidthArr[0].width += 3 * opts.pix;
if (opts.yAxis.disabled === true) {
yAxisWidthArr[0] = {
position: 'left',
width: 0
};
opts.yAxis.data[0] = {
disabled: true
};
} else {
opts.yAxis.data[0] = {
disabled: false,
position: 'left',
max: opts.yAxis.max,
min: opts.yAxis.min,
formatter: opts.yAxis.formatter
};
if (opts.type === 'bar') {
opts.yAxis.data[0].categories = opts.categories;
opts.yAxis.data[0].type = 'categories';
}
}
}
return {
rangesFormat: rangesFormatArr,
ranges: rangesArr,
yAxisWidth: yAxisWidthArr
};
}
function calTooltipYAxisData(point, series, opts, config, eachSpacing) {
var ranges = [].concat(opts.chartData.yAxisData.ranges);
var spacingValid = opts.height - opts.area[0] - opts.area[2];
var minAxis = opts.area[0];
var items = [];
for (var i = 0; i < ranges.length; i++) {
var maxVal = Math.max.apply(this, ranges[i]);
var minVal = Math.min.apply(this, ranges[i]);
var item = maxVal - (maxVal - minVal) * (point - minAxis) / spacingValid;
item = opts.yAxis.data && opts.yAxis.data[i].formatter ? opts.yAxis.data[i].formatter(item, i, opts) : item.toFixed(0);
items.push(String(item));
}
return items;
}
function calMarkLineData(points, opts) {
var minRange, maxRange;
var spacingValid = opts.height - opts.area[0] - opts.area[2];
for (var i = 0; i < points.length; i++) {
points[i].yAxisIndex = points[i].yAxisIndex ? points[i].yAxisIndex : 0;
var range = [].concat(opts.chartData.yAxisData.ranges[points[i].yAxisIndex]);
minRange = range.pop();
maxRange = range.shift();
var height = spacingValid * (points[i].value - minRange) / (maxRange - minRange);
points[i].y = opts.height - Math.round(height) - opts.area[2];
}
return points;
}
function contextRotate(context, opts) {
if (opts.rotateLock !== true) {
context.translate(opts.height, 0);
context.rotate(90 * Math.PI / 180);
} else if (opts._rotate_ !== true) {
context.translate(opts.height, 0);
context.rotate(90 * Math.PI / 180);
opts._rotate_ = true;
}
}
function drawPointShape(points, color, shape, context, opts) {
context.beginPath();
if (opts.dataPointShapeType == 'hollow') {
context.setStrokeStyle(color);
context.setFillStyle(opts.background);
context.setLineWidth(2 * opts.pix);
} else {
context.setStrokeStyle("#ffffff");
context.setFillStyle(color);
context.setLineWidth(1 * opts.pix);
}
if (shape === 'diamond') {
points.forEach(function (item, index) {
if (item !== null) {
context.moveTo(item.x, item.y - 4.5);
context.lineTo(item.x - 4.5, item.y);
context.lineTo(item.x, item.y + 4.5);
context.lineTo(item.x + 4.5, item.y);
context.lineTo(item.x, item.y - 4.5);
}
});
} else if (shape === 'circle') {
points.forEach(function (item, index) {
if (item !== null) {
context.moveTo(item.x + 2.5 * opts.pix, item.y);
context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false);
}
});
} else if (shape === 'square') {
points.forEach(function (item, index) {
if (item !== null) {
context.moveTo(item.x - 3.5, item.y - 3.5);
context.rect(item.x - 3.5, item.y - 3.5, 7, 7);
}
});
} else if (shape === 'triangle') {
points.forEach(function (item, index) {
if (item !== null) {
context.moveTo(item.x, item.y - 4.5);
context.lineTo(item.x - 4.5, item.y + 4.5);
context.lineTo(item.x + 4.5, item.y + 4.5);
context.lineTo(item.x, item.y - 4.5);
}
});
} else if (shape === 'none') {
return;
}
context.closePath();
context.fill();
context.stroke();
}
function drawActivePoint(points, color, shape, context, opts, option, seriesIndex) {
if (!opts.tooltip) {
return;
}
if (opts.tooltip.group.length > 0 && opts.tooltip.group.includes(seriesIndex) == false) {
return;
}
var pointIndex = typeof opts.tooltip.index === 'number' ? opts.tooltip.index : opts.tooltip.index[opts.tooltip.group.indexOf(seriesIndex)];
context.beginPath();
if (option.activeType == 'hollow') {
context.setStrokeStyle(color);
context.setFillStyle(opts.background);
context.setLineWidth(2 * opts.pix);
} else {
context.setStrokeStyle("#ffffff");
context.setFillStyle(color);
context.setLineWidth(1 * opts.pix);
}
if (shape === 'diamond') {
points.forEach(function (item, index) {
if (item !== null && pointIndex == index) {
context.moveTo(item.x, item.y - 4.5);
context.lineTo(item.x - 4.5, item.y);
context.lineTo(item.x, item.y + 4.5);
context.lineTo(item.x + 4.5, item.y);
context.lineTo(item.x, item.y - 4.5);
}
});
} else if (shape === 'circle') {
points.forEach(function (item, index) {
if (item !== null && pointIndex == index) {
context.moveTo(item.x + 2.5 * opts.pix, item.y);
context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false);
}
});
} else if (shape === 'square') {
points.forEach(function (item, index) {
if (item !== null && pointIndex == index) {
context.moveTo(item.x - 3.5, item.y - 3.5);
context.rect(item.x - 3.5, item.y - 3.5, 7, 7);
}
});
} else if (shape === 'triangle') {
points.forEach(function (item, index) {
if (item !== null && pointIndex == index) {
context.moveTo(item.x, item.y - 4.5);
context.lineTo(item.x - 4.5, item.y + 4.5);
context.lineTo(item.x + 4.5, item.y + 4.5);
context.lineTo(item.x, item.y - 4.5);
}
});
} else if (shape === 'none') {
return;
}
context.closePath();
context.fill();
context.stroke();
}
function drawRingTitle(opts, config, context, center) {
var titlefontSize = opts.title.fontSize || config.titleFontSize;
var subtitlefontSize = opts.subtitle.fontSize || config.subtitleFontSize;
var title = opts.title.name || '';
var subtitle = opts.subtitle.name || '';
var titleFontColor = opts.title.color || opts.fontColor;
var subtitleFontColor = opts.subtitle.color || opts.fontColor;
var titleHeight = title ? titlefontSize : 0;
var subtitleHeight = subtitle ? subtitlefontSize : 0;
var margin = 5;
if (subtitle) {
var textWidth = measureText(subtitle, subtitlefontSize * opts.pix, context);
var startX = center.x - textWidth / 2 + (opts.subtitle.offsetX || 0) * opts.pix;
var startY = center.y + subtitlefontSize * opts.pix / 2 + (opts.subtitle.offsetY || 0) * opts.pix;
if (title) {
startY += (titleHeight * opts.pix + margin) / 2;
}
context.beginPath();
context.setFontSize(subtitlefontSize * opts.pix);
context.setFillStyle(subtitleFontColor);
context.fillText(subtitle, startX, startY);
context.closePath();
context.stroke();
}
if (title) {
var _textWidth = measureText(title, titlefontSize * opts.pix, context);
var _startX = center.x - _textWidth / 2 + (opts.title.offsetX || 0);
var _startY = center.y + titlefontSize * opts.pix / 2 + (opts.title.offsetY || 0) * opts.pix;
if (subtitle) {
_startY -= (subtitleHeight * opts.pix + margin) / 2;
}
context.beginPath();
context.setFontSize(titlefontSize * opts.pix);
context.setFillStyle(titleFontColor);
context.fillText(title, _startX, _startY);
context.closePath();
context.stroke();
}
}
function drawPointText(points, series, config, context, opts) {
// 绘制数据文案
var data = series.data;
var textOffset = series.textOffset ? series.textOffset : 0;
points.forEach(function (item, index) {
if (item !== null) {
context.beginPath();
var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize;
context.setFontSize(fontSize);
context.setFillStyle(series.textColor || opts.fontColor);
var value = data[index];
if ((0, _typeof2.default)(data[index]) === 'object' && data[index] !== null) {
if (data[index].constructor.toString().indexOf('Array') > -1) {
value = data[index][1];
} else {
value = data[index].value;
}
}
var formatVal = series.formatter ? series.formatter(value, index, series, opts) : value;
context.setTextAlign('center');
context.fillText(String(formatVal), item.x, item.y - 4 + textOffset * opts.pix);
context.closePath();
context.stroke();
context.setTextAlign('left');
}
});
}
function drawColumePointText(points, series, config, context, opts) {
// 绘制数据文案
var data = series.data;
var textOffset = series.textOffset ? series.textOffset : 0;
var Position = opts.extra.column.labelPosition;
points.forEach(function (item, index) {
if (item !== null) {
context.beginPath();
var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize;
context.setFontSize(fontSize);
context.setFillStyle(series.textColor || opts.fontColor);
var value = data[index];
if ((0, _typeof2.default)(data[index]) === 'object' && data[index] !== null) {
if (data[index].constructor.toString().indexOf('Array') > -1) {
value = data[index][1];
} else {
value = data[index].value;
}
}
var formatVal = series.formatter ? series.formatter(value, index, series, opts) : value;
context.setTextAlign('center');
var startY = item.y - 4 * opts.pix + textOffset * opts.pix;
if (item.y > series.zeroPoints) {
startY = item.y + textOffset * opts.pix + fontSize;
}
if (Position == 'insideTop') {
startY = item.y + fontSize + textOffset * opts.pix;
if (item.y > series.zeroPoints) {
startY = item.y - textOffset * opts.pix - 4 * opts.pix;
}
}
if (Position == 'center') {
startY = item.y + textOffset * opts.pix + (opts.height - opts.area[2] - item.y + fontSize) / 2;
if (series.zeroPoints < opts.height - opts.area[2]) {
startY = item.y + textOffset * opts.pix + (series.zeroPoints - item.y + fontSize) / 2;
}
if (item.y > series.zeroPoints) {
startY = item.y - textOffset * opts.pix - (item.y - series.zeroPoints - fontSize) / 2;
}
if (opts.extra.column.type == 'stack') {
startY = item.y + textOffset * opts.pix + (item.y0 - item.y + fontSize) / 2;
}
}
if (Position == 'bottom') {
startY = opts.height - opts.area[2] + textOffset * opts.pix - 4 * opts.pix;
if (series.zeroPoints < opts.height - opts.area[2]) {
startY = series.zeroPoints + textOffset * opts.pix - 4 * opts.pix;
}
if (item.y > series.zeroPoints) {
startY = series.zeroPoints - textOffset * opts.pix + fontSize + 2 * opts.pix;
}
if (opts.extra.column.type == 'stack') {
startY = item.y0 + textOffset * opts.pix - 4 * opts.pix;
}
}
context.fillText(String(formatVal), item.x, startY);
context.closePath();
context.stroke();
context.setTextAlign('left');
}
});
}
function drawMountPointText(points, series, config, context, opts, zeroPoints) {
// 绘制数据文案
var data = series.data;
var textOffset = series.textOffset ? series.textOffset : 0;
var Position = opts.extra.mount.labelPosition;
points.forEach(function (item, index) {
if (item !== null) {
context.beginPath();
var fontSize = series[index].textSize ? series[index].textSize * opts.pix : config.fontSize;
context.setFontSize(fontSize);
context.setFillStyle(series[index].textColor || opts.fontColor);
var value = item.value;
var formatVal = series[index].formatter ? series[index].formatter(value, index, series, opts) : value;
context.setTextAlign('center');
var startY = item.y - 4 * opts.pix + textOffset * opts.pix;
if (item.y > zeroPoints) {
startY = item.y + textOffset * opts.pix + fontSize;
}
context.fillText(String(formatVal), item.x, startY);
context.closePath();
context.stroke();
context.setTextAlign('left');
}
});
}
function drawBarPointText(points, series, config, context, opts) {
// 绘制数据文案
var data = series.data;
var textOffset = series.textOffset ? series.textOffset : 0;
points.forEach(function (item, index) {
if (item !== null) {
context.beginPath();
var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize;
context.setFontSize(fontSize);
context.setFillStyle(series.textColor || opts.fontColor);
var value = data[index];
if ((0, _typeof2.default)(data[index]) === 'object' && data[index] !== null) {
value = data[index].value;
}
var formatVal = series.formatter ? series.formatter(value, index, series, opts) : value;
context.setTextAlign('left');
context.fillText(String(formatVal), item.x + 4 * opts.pix, item.y + fontSize / 2 - 3);
context.closePath();
context.stroke();
}
});
}
function drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context) {
radius -= gaugeOption.width / 2 + gaugeOption.labelOffset * opts.pix;
radius = radius < 10 ? 10 : radius;
var totalAngle;
if (gaugeOption.endAngle < gaugeOption.startAngle) {
totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle;
} else {
totalAngle = gaugeOption.startAngle - gaugeOption.endAngle;
}
var splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;
var totalNumber = gaugeOption.endNumber - gaugeOption.startNumber;
var splitNumber = totalNumber / gaugeOption.splitLine.splitNumber;
var nowAngle = gaugeOption.startAngle;
var nowNumber = gaugeOption.startNumber;
for (var i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) {
var pos = {
x: radius * Math.cos(nowAngle * Math.PI),
y: radius * Math.sin(nowAngle * Math.PI)
};
var labelText = gaugeOption.formatter ? gaugeOption.formatter(nowNumber, i, opts) : nowNumber;
pos.x += centerPosition.x - measureText(labelText, config.fontSize, context) / 2;
pos.y += centerPosition.y;
var startX = pos.x;
var startY = pos.y;
context.beginPath();
context.setFontSize(config.fontSize);
context.setFillStyle(gaugeOption.labelColor || opts.fontColor);
context.fillText(labelText, startX, startY + config.fontSize / 2);
context.closePath();
context.stroke();
nowAngle += splitAngle;
if (nowAngle >= 2) {
nowAngle = nowAngle % 2;
}
nowNumber += splitNumber;
}
}
function drawRadarLabel(angleList, radius, centerPosition, opts, config, context) {
var radarOption = opts.extra.radar || {};
angleList.forEach(function (angle, index) {
if (radarOption.labelPointShow === true && opts.categories[index] !== '') {
var posPoint = {
x: radius * Math.cos(angle),
y: radius * Math.sin(angle)
};
var posPointAxis = convertCoordinateOrigin(posPoint.x, posPoint.y, centerPosition);
context.setFillStyle(radarOption.labelPointColor);
context.beginPath();
context.arc(posPointAxis.x, posPointAxis.y, radarOption.labelPointRadius * opts.pix, 0, 2 * Math.PI, false);
context.closePath();
context.fill();
}
if (radarOption.labelShow === true) {
var pos = {
x: (radius + config.radarLabelTextMargin * opts.pix) * Math.cos(angle),
y: (radius + config.radarLabelTextMargin * opts.pix) * Math.sin(angle)
};
var posRelativeCanvas = convertCoordinateOrigin(pos.x, pos.y, centerPosition);
var startX = posRelativeCanvas.x;
var startY = posRelativeCanvas.y;
if (util.approximatelyEqual(pos.x, 0)) {
startX -= measureText(opts.categories[index] || '', config.fontSize, context) / 2;
} else if (pos.x < 0) {
startX -= measureText(opts.categories[index] || '', config.fontSize, context);
}
context.beginPath();
context.setFontSize(config.fontSize);
context.setFillStyle(radarOption.labelColor || opts.fontColor);
context.fillText(opts.categories[index] || '', startX, startY + config.fontSize / 2);
context.closePath();
context.stroke();
}
});
}
function drawPieText(series, opts, config, context, radius, center) {
var lineRadius = config.pieChartLinePadding;
var textObjectCollection = [];
var lastTextObject = null;
var seriesConvert = series.map(function (item, index) {
var text = item.formatter ? item.formatter(item, index, series, opts) : util.toFixed(item._proportion_.toFixed(4) * 100) + '%';
text = item.labelText ? item.labelText : text;
var arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._proportion_ / 2);
if (item._rose_proportion_) {
arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._rose_proportion_ / 2);
}
var color = item.color;
var radius = item._radius_;
return {
arc: arc,
text: text,
color: color,
radius: radius,
textColor: item.textColor,
textSize: item.textSize,
labelShow: item.labelShow
};
});
for (var i = 0; i < seriesConvert.length; i++) {
var item = seriesConvert[i];
// line end
var orginX1 = Math.cos(item.arc) * (item.radius + lineRadius);
var orginY1 = Math.sin(item.arc) * (item.radius + lineRadius);
// line start
var orginX2 = Math.cos(item.arc) * item.radius;
var orginY2 = Math.sin(item.arc) * item.radius;
// text start
var orginX3 = orginX1 >= 0 ? orginX1 + config.pieChartTextPadding : orginX1 - config.pieChartTextPadding;
var orginY3 = orginY1;
var textWidth = measureText(item.text, item.textSize * opts.pix || config.fontSize, context);
var startY = orginY3;
if (lastTextObject && util.isSameXCoordinateArea(lastTextObject.start, {
x: orginX3
})) {
if (orginX3 > 0) {
startY = Math.min(orginY3, lastTextObject.start.y);
} else if (orginX1 < 0) {
startY = Math.max(orginY3, lastTextObject.start.y);
} else {
if (orginY3 > 0) {
startY = Math.max(orginY3, lastTextObject.start.y);
} else {
startY = Math.min(orginY3, lastTextObject.start.y);
}
}
}
if (orginX3 < 0) {
orginX3 -= textWidth;
}
var textObject = {
lineStart: {
x: orginX2,
y: orginY2
},
lineEnd: {
x: orginX1,
y: orginY1
},
start: {
x: orginX3,
y: startY
},
width: textWidth,
height: config.fontSize,
text: item.text,
color: item.color,
textColor: item.textColor,
textSize: item.textSize
};
lastTextObject = avoidCollision(textObject, lastTextObject);
textObjectCollection.push(lastTextObject);
}
for (var _i15 = 0; _i15 < textObjectCollection.length; _i15++) {
if (seriesConvert[_i15].labelShow === false) {
continue;
}
var _item6 = textObjectCollection[_i15];
var lineStartPoistion = convertCoordinateOrigin(_item6.lineStart.x, _item6.lineStart.y, center);
var lineEndPoistion = convertCoordinateOrigin(_item6.lineEnd.x, _item6.lineEnd.y, center);
var textPosition = convertCoordinateOrigin(_item6.start.x, _item6.start.y, center);
context.setLineWidth(1 * opts.pix);
context.setFontSize(_item6.textSize * opts.pix || config.fontSize);
context.beginPath();
context.setStrokeStyle(_item6.color);
context.setFillStyle(_item6.color);
context.moveTo(lineStartPoistion.x, lineStartPoistion.y);
var curveStartX = _item6.start.x < 0 ? textPosition.x + _item6.width : textPosition.x;
var textStartX = _item6.start.x < 0 ? textPosition.x - 5 : textPosition.x + 5;
context.quadraticCurveTo(lineEndPoistion.x, lineEndPoistion.y, curveStartX, textPosition.y);
context.moveTo(lineStartPoistion.x, lineStartPoistion.y);
context.stroke();
context.closePath();
context.beginPath();
context.moveTo(textPosition.x + _item6.width, textPosition.y);
context.arc(curveStartX, textPosition.y, 2 * opts.pix, 0, 2 * Math.PI);
context.closePath();
context.fill();
context.beginPath();
context.setFontSize(_item6.textSize * opts.pix || config.fontSize);
context.setFillStyle(_item6.textColor || opts.fontColor);
context.fillText(_item6.text, textStartX, textPosition.y + 3);
context.closePath();
context.stroke();
context.closePath();
}
}
function drawToolTipSplitLine(offsetX, opts, config, context) {
var toolTipOption = opts.extra.tooltip || {};
toolTipOption.gridType = toolTipOption.gridType == undefined ? 'solid' : toolTipOption.gridType;
toolTipOption.dashLength = toolTipOption.dashLength == undefined ? 4 : toolTipOption.dashLength;
var startY = opts.area[0];
var endY = opts.height - opts.area[2];
if (toolTipOption.gridType == 'dash') {
context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);
}
context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');
context.setLineWidth(1 * opts.pix);
context.beginPath();
context.moveTo(offsetX, startY);
context.lineTo(offsetX, endY);
context.stroke();
context.setLineDash([]);
if (toolTipOption.xAxisLabel) {
var labelText = opts.categories[opts.tooltip.index];
context.setFontSize(config.fontSize);
var textWidth = measureText(labelText, config.fontSize, context);
var textX = offsetX - 0.5 * textWidth;
var textY = endY + 2 * opts.pix;
context.beginPath();
context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));
context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);
context.setLineWidth(1 * opts.pix);
context.rect(textX - toolTipOption.boxPadding * opts.pix, textY, textWidth + 2 * toolTipOption.boxPadding * opts.pix, config.fontSize + 2 * toolTipOption.boxPadding * opts.pix);
context.closePath();
context.stroke();
context.fill();
context.beginPath();
context.setFontSize(config.fontSize);
context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor);
context.fillText(String(labelText), textX, textY + toolTipOption.boxPadding * opts.pix + config.fontSize);
context.closePath();
context.stroke();
}
}
function drawMarkLine(opts, config, context) {
var markLineOption = assign({}, {
type: 'solid',
dashLength: 4,
data: []
}, opts.extra.markLine);
var startX = opts.area[3];
var endX = opts.width - opts.area[1];
var points = calMarkLineData(markLineOption.data, opts);
for (var i = 0; i < points.length; i++) {
var item = assign({}, {
lineColor: '#DE4A42',
showLabel: false,
labelFontSize: 13,
labelPadding: 6,
labelFontColor: '#666666',
labelBgColor: '#DFE8FF',
labelBgOpacity: 0.8,
labelAlign: 'left',
labelOffsetX: 0,
labelOffsetY: 0
}, points[i]);
if (markLineOption.type == 'dash') {
context.setLineDash([markLineOption.dashLength, markLineOption.dashLength]);
}
context.setStrokeStyle(item.lineColor);
context.setLineWidth(1 * opts.pix);
context.beginPath();
context.moveTo(startX, item.y);
context.lineTo(endX, item.y);
context.stroke();
context.setLineDash([]);
if (item.showLabel) {
var fontSize = item.labelFontSize * opts.pix;
var labelText = item.labelText ? item.labelText : item.value;
context.setFontSize(fontSize);
var textWidth = measureText(labelText, fontSize, context);
var bgWidth = textWidth + item.labelPadding * opts.pix * 2;
var bgStartX = item.labelAlign == 'left' ? opts.area[3] - bgWidth : opts.width - opts.area[1];
bgStartX += item.labelOffsetX;
var bgStartY = item.y - 0.5 * fontSize - item.labelPadding * opts.pix;
bgStartY += item.labelOffsetY;
var textX = bgStartX + item.labelPadding * opts.pix;
var textY = item.y;
context.setFillStyle(hexToRgb(item.labelBgColor, item.labelBgOpacity));
context.setStrokeStyle(item.labelBgColor);
context.setLineWidth(1 * opts.pix);
context.beginPath();
context.rect(bgStartX, bgStartY, bgWidth, fontSize + 2 * item.labelPadding * opts.pix);
context.closePath();
context.stroke();
context.fill();
context.setFontSize(fontSize);
context.setTextAlign('left');
context.setFillStyle(item.labelFontColor);
context.fillText(String(labelText), textX, bgStartY + fontSize + item.labelPadding * opts.pix / 2);
context.stroke();
context.setTextAlign('left');
}
}
}
function drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) {
var toolTipOption = assign({}, {
gridType: 'solid',
dashLength: 4
}, opts.extra.tooltip);
var startX = opts.area[3];
var endX = opts.width - opts.area[1];
if (toolTipOption.gridType == 'dash') {
context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);
}
context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');
context.setLineWidth(1 * opts.pix);
context.beginPath();
context.moveTo(startX, opts.tooltip.offset.y);
context.lineTo(endX, opts.tooltip.offset.y);
context.stroke();
context.setLineDash([]);
if (toolTipOption.yAxisLabel) {
var boxPadding = toolTipOption.boxPadding * opts.pix;
var labelText = calTooltipYAxisData(opts.tooltip.offset.y, opts.series, opts, config, eachSpacing);
var widthArr = opts.chartData.yAxisData.yAxisWidth;
var tStartLeft = opts.area[3];
var tStartRight = opts.width - opts.area[1];
for (var i = 0; i < labelText.length; i++) {
context.setFontSize(toolTipOption.fontSize * opts.pix);
var textWidth = measureText(labelText[i], toolTipOption.fontSize * opts.pix, context);
var bgStartX = void 0,
bgEndX = void 0,
bgWidth = void 0;
if (widthArr[i].position == 'left') {
bgStartX = tStartLeft - (textWidth + boxPadding * 2) - 2 * opts.pix;
bgEndX = Math.max(bgStartX, bgStartX + textWidth + boxPadding * 2);
} else {
bgStartX = tStartRight + 2 * opts.pix;
bgEndX = Math.max(bgStartX + widthArr[i].width, bgStartX + textWidth + boxPadding * 2);
}
bgWidth = bgEndX - bgStartX;
var textX = bgStartX + (bgWidth - textWidth) / 2;
var textY = opts.tooltip.offset.y;
context.beginPath();
context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));
context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);
context.setLineWidth(1 * opts.pix);
context.rect(bgStartX, textY - 0.5 * config.fontSize - boxPadding, bgWidth, config.fontSize + 2 * boxPadding);
context.closePath();
context.stroke();
context.fill();
context.beginPath();
context.setFontSize(config.fontSize);
context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor);
context.fillText(labelText[i], textX, textY + 0.5 * config.fontSize);
context.closePath();
context.stroke();
if (widthArr[i].position == 'left') {
tStartLeft -= widthArr[i].width + opts.yAxis.padding * opts.pix;
} else {
tStartRight += widthArr[i].width + opts.yAxis.padding * opts.pix;
}
}
}
}
function drawToolTipSplitArea(offsetX, opts, config, context, eachSpacing) {
var toolTipOption = assign({}, {
activeBgColor: '#000000',
activeBgOpacity: 0.08,
activeWidth: eachSpacing
}, opts.extra.column);
toolTipOption.activeWidth = toolTipOption.activeWidth > eachSpacing ? eachSpacing : toolTipOption.activeWidth;
var startY = opts.area[0];
var endY = opts.height - opts.area[2];
context.beginPath();
context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity));
context.rect(offsetX - toolTipOption.activeWidth / 2, startY, toolTipOption.activeWidth, endY - startY);
context.closePath();
context.fill();
context.setFillStyle("#FFFFFF");
}
function drawBarToolTipSplitArea(offsetX, opts, config, context, eachSpacing) {
var toolTipOption = assign({}, {
activeBgColor: '#000000',
activeBgOpacity: 0.08
}, opts.extra.bar);
var startX = opts.area[3];
var endX = opts.width - opts.area[1];
context.beginPath();
context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity));
context.rect(startX, offsetX - eachSpacing / 2, endX - startX, eachSpacing);
context.closePath();
context.fill();
context.setFillStyle("#FFFFFF");
}
function drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxisPoints) {
var toolTipOption = assign({}, {
showBox: true,
showArrow: true,
showCategory: false,
bgColor: '#000000',
bgOpacity: 0.7,
borderColor: '#000000',
borderWidth: 0,
borderRadius: 0,
borderOpacity: 0.7,
boxPadding: 3,
fontColor: '#FFFFFF',
fontSize: 13,
lineHeight: 20,
legendShow: true,
legendShape: 'auto',
splitLine: true
}, opts.extra.tooltip);
if (toolTipOption.showCategory == true && opts.categories) {
textList.unshift({
text: opts.categories[opts.tooltip.index],
color: null
});
}
var fontSize = toolTipOption.fontSize * opts.pix;
var lineHeight = toolTipOption.lineHeight * opts.pix;
var boxPadding = toolTipOption.boxPadding * opts.pix;
var legendWidth = fontSize;
var legendMarginRight = 5 * opts.pix;
if (toolTipOption.legendShow == false) {
legendWidth = 0;
legendMarginRight = 0;
}
var arrowWidth = toolTipOption.showArrow ? 8 * opts.pix : 0;
var isOverRightBorder = false;
if (opts.type == 'line' || opts.type == 'mount' || opts.type == 'area' || opts.type == 'candle' || opts.type == 'mix') {
if (toolTipOption.splitLine == true) {
drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context);
}
}
offset = assign({
x: 0,
y: 0
}, offset);
offset.y -= 8 * opts.pix;
var textWidth = textList.map(function (item) {
return measureText(item.text, fontSize, context);
});
var toolTipWidth = legendWidth + legendMarginRight + 4 * boxPadding + Math.max.apply(null, textWidth);
var toolTipHeight = 2 * boxPadding + textList.length * lineHeight;
if (toolTipOption.showBox == false) {
return;
}
// if beyond the right border
if (offset.x - Math.abs(opts._scrollDistance_ || 0) + arrowWidth + toolTipWidth > opts.width) {
isOverRightBorder = true;
}
if (toolTipHeight + offset.y > opts.height) {
offset.y = opts.height - toolTipHeight;
}
// draw background rect
context.beginPath();
context.setFillStyle(hexToRgb(toolTipOption.bgColor, toolTipOption.bgOpacity));
context.setLineWidth(toolTipOption.borderWidth * opts.pix);
context.setStrokeStyle(hexToRgb(toolTipOption.borderColor, toolTipOption.borderOpacity));
var radius = toolTipOption.borderRadius;
if (isOverRightBorder) {
// 增加左侧仍然超出的判断
if (toolTipWidth + arrowWidth > opts.width) {
offset.x = opts.width + Math.abs(opts._scrollDistance_ || 0) + arrowWidth + (toolTipWidth - opts.width);
}
if (toolTipWidth > offset.x) {
offset.x = opts.width + Math.abs(opts._scrollDistance_ || 0) + arrowWidth + (toolTipWidth - opts.width);
}
if (toolTipOption.showArrow) {
context.moveTo(offset.x, offset.y + 10 * opts.pix);
context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix);
}
context.arc(offset.x - arrowWidth - radius, offset.y + toolTipHeight - radius, radius, 0, Math.PI / 2, false);
context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + toolTipHeight - radius, radius, Math.PI / 2, Math.PI, false);
context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false);
context.arc(offset.x - arrowWidth - radius, offset.y + radius, radius, -Math.PI / 2, 0, false);
if (toolTipOption.showArrow) {
context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix);
context.lineTo(offset.x, offset.y + 10 * opts.pix);
}
} else {
if (toolTipOption.showArrow) {
context.moveTo(offset.x, offset.y + 10 * opts.pix);
context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix);
}
context.arc(offset.x + arrowWidth + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false);
context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + radius, radius, -Math.PI / 2, 0, false);
context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + toolTipHeight - radius, radius, 0, Math.PI / 2, false);
context.arc(offset.x + arrowWidth + radius, offset.y + toolTipHeight - radius, radius, Math.PI / 2, Math.PI, false);
if (toolTipOption.showArrow) {
context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix);
context.lineTo(offset.x, offset.y + 10 * opts.pix);
}
}
context.closePath();
context.fill();
if (toolTipOption.borderWidth > 0) {
context.stroke();
}
// draw legend
if (toolTipOption.legendShow) {
textList.forEach(function (item, index) {
if (item.color !== null) {
context.beginPath();
context.setFillStyle(item.color);
var startX = offset.x + arrowWidth + 2 * boxPadding;
var startY = offset.y + (lineHeight - fontSize) / 2 + lineHeight * index + boxPadding + 1;
if (isOverRightBorder) {
startX = offset.x - toolTipWidth - arrowWidth + 2 * boxPadding;
}
switch (item.legendShape) {
case 'line':
context.moveTo(startX, startY + 0.5 * legendWidth - 2 * opts.pix);
context.fillRect(startX, startY + 0.5 * legendWidth - 2 * opts.pix, legendWidth, 4 * opts.pix);
break;
case 'triangle':
context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix);
context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * legendWidth + 5 * opts.pix);
context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * legendWidth + 5 * opts.pix);
context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix);
break;
case 'diamond':
context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix);
context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * legendWidth);
context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth + 5 * opts.pix);
context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * legendWidth);
context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix);
break;
case 'circle':
context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth);
context.arc(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth, 5 * opts.pix, 0, 2 * Math.PI);
break;
case 'rect':
context.moveTo(startX, startY + 0.5 * legendWidth - 5 * opts.pix);
context.fillRect(startX, startY + 0.5 * legendWidth - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);
break;
case 'square':
context.moveTo(startX + 2 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix);
context.fillRect(startX + 2 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix, 10 * opts.pix, 10 * opts.pix);
break;
default:
context.moveTo(startX, startY + 0.5 * legendWidth - 5 * opts.pix);
context.fillRect(startX, startY + 0.5 * legendWidth - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);
}
context.closePath();
context.fill();
}
});
}
// draw text list
textList.forEach(function (item, index) {
var startX = offset.x + arrowWidth + 2 * boxPadding + legendWidth + legendMarginRight;
if (isOverRightBorder) {
startX = offset.x - toolTipWidth - arrowWidth + 2 * boxPadding + legendWidth + legendMarginRight;
}
var startY = offset.y + lineHeight * index + (lineHeight - fontSize) / 2 - 1 + boxPadding + fontSize;
context.beginPath();
context.setFontSize(fontSize);
context.setTextBaseline('normal');
context.setFillStyle(toolTipOption.fontColor);
context.fillText(item.text, startX, startY);
context.closePath();
context.stroke();
});
}
function drawColumnDataPoints(series, opts, config, context) {
var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
var xAxisData = opts.chartData.xAxisData,
xAxisPoints = xAxisData.xAxisPoints,
eachSpacing = xAxisData.eachSpacing;
var columnOption = assign({}, {
type: 'group',
width: eachSpacing / 2,
meterBorder: 4,
meterFillColor: '#FFFFFF',
barBorderCircle: false,
barBorderRadius: [],
seriesGap: 2,
linearType: 'none',
linearOpacity: 1,
customColor: [],
colorStop: 0,
labelPosition: 'outside'
}, opts.extra.column);
var calPoints = [];
context.save();
var leftNum = -2;
var rightNum = xAxisPoints.length + 2;
if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
context.translate(opts._scrollDistance_, 0);
leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;
rightNum = leftNum + opts.xAxis.itemCount + 4;
}
if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {
drawToolTipSplitArea(opts.tooltip.offset.x, opts, config, context, eachSpacing);
}
columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);
series.forEach(function (eachSeries, seriesIndex) {
var ranges, minRange, maxRange;
ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
minRange = ranges.pop();
maxRange = ranges.shift();
// 计算0轴坐标
var spacingValid = opts.height - opts.area[0] - opts.area[2];
var zeroHeight = spacingValid * (0 - minRange) / (maxRange - minRange);
var zeroPoints = opts.height - Math.round(zeroHeight) - opts.area[2];
eachSeries.zeroPoints = zeroPoints;
var data = eachSeries.data;
switch (columnOption.type) {
case 'group':
var points = getColumnDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, zeroPoints, process);
var tooltipPoints = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
calPoints.push(tooltipPoints);
points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);
for (var i = 0; i < points.length; i++) {
var item = points[i];
//fix issues/I27B1N yyoinge & Joeshu
if (item !== null && i > leftNum && i < rightNum) {
var startX = item.x - item.width / 2;
var height = opts.height - item.y - opts.area[2];
context.beginPath();
var fillColor = item.color || eachSeries.color;
var strokeColor = item.color || eachSeries.color;
if (columnOption.linearType !== 'none') {
var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints);
//透明渐变
if (columnOption.linearType == 'opacity') {
grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));
grd.addColorStop(1, hexToRgb(fillColor, 1));
} else {
grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));
grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));
grd.addColorStop(1, hexToRgb(fillColor, 1));
}
fillColor = grd;
}
// 圆角边框
if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle === true) {
var left = startX;
var top = item.y > zeroPoints ? zeroPoints : item.y;
var width = item.width;
var _height = Math.abs(zeroPoints - item.y);
if (columnOption.barBorderCircle) {
columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];
}
if (item.y > zeroPoints) {
columnOption.barBorderRadius = [0, 0, width / 2, width / 2];
}
var _columnOption$barBord = (0, _slicedToArray2.default)(columnOption.barBorderRadius, 4),
r0 = _columnOption$barBord[0],
r1 = _columnOption$barBord[1],
r2 = _columnOption$barBord[2],
r3 = _columnOption$barBord[3];
var minRadius = Math.min(width / 2, _height / 2);
r0 = r0 > minRadius ? minRadius : r0;
r1 = r1 > minRadius ? minRadius : r1;
r2 = r2 > minRadius ? minRadius : r2;
r3 = r3 > minRadius ? minRadius : r3;
r0 = r0 < 0 ? 0 : r0;
r1 = r1 < 0 ? 0 : r1;
r2 = r2 < 0 ? 0 : r2;
r3 = r3 < 0 ? 0 : r3;
context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);
context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);
context.arc(left + width - r2, top + _height - r2, r2, 0, Math.PI / 2);
context.arc(left + r3, top + _height - r3, r3, Math.PI / 2, Math.PI);
} else {
context.moveTo(startX, item.y);
context.lineTo(startX + item.width, item.y);
context.lineTo(startX + item.width, zeroPoints);
context.lineTo(startX, zeroPoints);
context.lineTo(startX, item.y);
context.setLineWidth(1);
context.setStrokeStyle(strokeColor);
}
context.setFillStyle(fillColor);
context.closePath();
//context.stroke();
context.fill();
}
}
;
break;
case 'stack':
// 绘制堆叠数据图
var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
calPoints.push(points);
points = fixColumeStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series);
for (var _i16 = 0; _i16 < points.length; _i16++) {
var _item7 = points[_i16];
if (_item7 !== null && _i16 > leftNum && _i16 < rightNum) {
context.beginPath();
var fillColor = _item7.color || eachSeries.color;
var startX = _item7.x - _item7.width / 2 + 1;
var height = opts.height - _item7.y - opts.area[2];
var height0 = opts.height - _item7.y0 - opts.area[2];
if (seriesIndex > 0) {
height -= height0;
}
context.setFillStyle(fillColor);
context.moveTo(startX, _item7.y);
context.fillRect(startX, _item7.y, _item7.width, height);
context.closePath();
context.fill();
}
}
;
break;
case 'meter':
// 绘制温度计数据图
var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
calPoints.push(points);
points = fixColumeMeterData(points, eachSpacing, series.length, seriesIndex, config, opts, columnOption.meterBorder);
for (var _i17 = 0; _i17 < points.length; _i17++) {
var _item8 = points[_i17];
if (_item8 !== null && _i17 > leftNum && _i17 < rightNum) {
//画背景颜色
context.beginPath();
if (seriesIndex == 0 && columnOption.meterBorder > 0) {
context.setStrokeStyle(eachSeries.color);
context.setLineWidth(columnOption.meterBorder * opts.pix);
}
if (seriesIndex == 0) {
context.setFillStyle(columnOption.meterFillColor);
} else {
context.setFillStyle(_item8.color || eachSeries.color);
}
var startX = _item8.x - _item8.width / 2;
var height = opts.height - _item8.y - opts.area[2];
if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle === true) {
var _left = startX;
var _top = _item8.y;
var _width = _item8.width;
var _height2 = zeroPoints - _item8.y;
if (columnOption.barBorderCircle) {
columnOption.barBorderRadius = [_width / 2, _width / 2, 0, 0];
}
var _columnOption$barBord2 = (0, _slicedToArray2.default)(columnOption.barBorderRadius, 4),
_r = _columnOption$barBord2[0],
_r2 = _columnOption$barBord2[1],
_r3 = _columnOption$barBord2[2],
_r4 = _columnOption$barBord2[3];
var _minRadius = Math.min(_width / 2, _height2 / 2);
_r = _r > _minRadius ? _minRadius : _r;
_r2 = _r2 > _minRadius ? _minRadius : _r2;
_r3 = _r3 > _minRadius ? _minRadius : _r3;
_r4 = _r4 > _minRadius ? _minRadius : _r4;
_r = _r < 0 ? 0 : _r;
_r2 = _r2 < 0 ? 0 : _r2;
_r3 = _r3 < 0 ? 0 : _r3;
_r4 = _r4 < 0 ? 0 : _r4;
context.arc(_left + _r, _top + _r, _r, -Math.PI, -Math.PI / 2);
context.arc(_left + _width - _r2, _top + _r2, _r2, -Math.PI / 2, 0);
context.arc(_left + _width - _r3, _top + _height2 - _r3, _r3, 0, Math.PI / 2);
context.arc(_left + _r4, _top + _height2 - _r4, _r4, Math.PI / 2, Math.PI);
context.fill();
} else {
context.moveTo(startX, _item8.y);
context.lineTo(startX + _item8.width, _item8.y);
context.lineTo(startX + _item8.width, zeroPoints);
context.lineTo(startX, zeroPoints);
context.lineTo(startX, _item8.y);
context.fill();
}
if (seriesIndex == 0 && columnOption.meterBorder > 0) {
context.closePath();
context.stroke();
}
}
}
break;
}
});
if (opts.dataLabel !== false && process === 1) {
series.forEach(function (eachSeries, seriesIndex) {
var ranges, minRange, maxRange;
ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
minRange = ranges.pop();
maxRange = ranges.shift();
var data = eachSeries.data;
switch (columnOption.type) {
case 'group':
var points = getColumnDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);
drawColumePointText(points, eachSeries, config, context, opts);
break;
case 'stack':
var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
drawColumePointText(points, eachSeries, config, context, opts);
break;
case 'meter':
var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
drawColumePointText(points, eachSeries, config, context, opts);
break;
}
});
}
context.restore();
return {
xAxisPoints: xAxisPoints,
calPoints: calPoints,
eachSpacing: eachSpacing
};
}
function drawMountDataPoints(series, opts, config, context) {
var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
var xAxisData = opts.chartData.xAxisData,
xAxisPoints = xAxisData.xAxisPoints,
eachSpacing = xAxisData.eachSpacing;
var mountOption = assign({}, {
type: 'mount',
widthRatio: 1,
borderWidth: 1,
barBorderCircle: false,
barBorderRadius: [],
linearType: 'none',
linearOpacity: 1,
customColor: [],
colorStop: 0
}, opts.extra.mount);
mountOption.widthRatio = mountOption.widthRatio <= 0 ? 0 : mountOption.widthRatio;
mountOption.widthRatio = mountOption.widthRatio >= 2 ? 2 : mountOption.widthRatio;
var calPoints = [];
context.save();
var leftNum = -2;
var rightNum = xAxisPoints.length + 2;
if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
context.translate(opts._scrollDistance_, 0);
leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;
rightNum = leftNum + opts.xAxis.itemCount + 4;
}
mountOption.customColor = fillCustomColor(mountOption.linearType, mountOption.customColor, series, config);
var ranges, minRange, maxRange;
ranges = [].concat(opts.chartData.yAxisData.ranges[0]);
minRange = ranges.pop();
maxRange = ranges.shift();
// 计算0轴坐标
var spacingValid = opts.height - opts.area[0] - opts.area[2];
var zeroHeight = spacingValid * (0 - minRange) / (maxRange - minRange);
var zeroPoints = opts.height - Math.round(zeroHeight) - opts.area[2];
var points = getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, zeroPoints, process);
switch (mountOption.type) {
case 'bar':
for (var i = 0; i < points.length; i++) {
var item = points[i];
if (item !== null && i > leftNum && i < rightNum) {
var startX = item.x - eachSpacing * mountOption.widthRatio / 2;
var height = opts.height - item.y - opts.area[2];
context.beginPath();
var fillColor = item.color || series[i].color;
var strokeColor = item.color || series[i].color;
if (mountOption.linearType !== 'none') {
var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints);
//透明渐变
if (mountOption.linearType == 'opacity') {
grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));
grd.addColorStop(1, hexToRgb(fillColor, 1));
} else {
grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity));
grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity));
grd.addColorStop(1, hexToRgb(fillColor, 1));
}
fillColor = grd;
}
// 圆角边框
if (mountOption.barBorderRadius && mountOption.barBorderRadius.length === 4 || mountOption.barBorderCircle === true) {
var left = startX;
var top = item.y > zeroPoints ? zeroPoints : item.y;
var width = item.width;
var _height3 = Math.abs(zeroPoints - item.y);
if (mountOption.barBorderCircle) {
mountOption.barBorderRadius = [width / 2, width / 2, 0, 0];
}
if (item.y > zeroPoints) {
mountOption.barBorderRadius = [0, 0, width / 2, width / 2];
}
var _mountOption$barBorde = (0, _slicedToArray2.default)(mountOption.barBorderRadius, 4),
r0 = _mountOption$barBorde[0],
r1 = _mountOption$barBorde[1],
r2 = _mountOption$barBorde[2],
r3 = _mountOption$barBorde[3];
var minRadius = Math.min(width / 2, _height3 / 2);
r0 = r0 > minRadius ? minRadius : r0;
r1 = r1 > minRadius ? minRadius : r1;
r2 = r2 > minRadius ? minRadius : r2;
r3 = r3 > minRadius ? minRadius : r3;
r0 = r0 < 0 ? 0 : r0;
r1 = r1 < 0 ? 0 : r1;
r2 = r2 < 0 ? 0 : r2;
r3 = r3 < 0 ? 0 : r3;
context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);
context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);
context.arc(left + width - r2, top + _height3 - r2, r2, 0, Math.PI / 2);
context.arc(left + r3, top + _height3 - r3, r3, Math.PI / 2, Math.PI);
} else {
context.moveTo(startX, item.y);
context.lineTo(startX + item.width, item.y);
context.lineTo(startX + item.width, zeroPoints);
context.lineTo(startX, zeroPoints);
context.lineTo(startX, item.y);
}
context.setStrokeStyle(strokeColor);
context.setFillStyle(fillColor);
if (mountOption.borderWidth > 0) {
context.setLineWidth(mountOption.borderWidth * opts.pix);
context.closePath();
context.stroke();
}
context.fill();
}
}
;
break;
case 'triangle':
for (var _i18 = 0; _i18 < points.length; _i18++) {
var _item9 = points[_i18];
if (_item9 !== null && _i18 > leftNum && _i18 < rightNum) {
var startX = _item9.x - eachSpacing * mountOption.widthRatio / 2;
var height = opts.height - _item9.y - opts.area[2];
context.beginPath();
var fillColor = _item9.color || series[_i18].color;
var strokeColor = _item9.color || series[_i18].color;
if (mountOption.linearType !== 'none') {
var grd = context.createLinearGradient(startX, _item9.y, startX, zeroPoints);
//透明渐变
if (mountOption.linearType == 'opacity') {
grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));
grd.addColorStop(1, hexToRgb(fillColor, 1));
} else {
grd.addColorStop(0, hexToRgb(mountOption.customColor[series[_i18].linearIndex], mountOption.linearOpacity));
grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[_i18].linearIndex], mountOption.linearOpacity));
grd.addColorStop(1, hexToRgb(fillColor, 1));
}
fillColor = grd;
}
context.moveTo(startX, zeroPoints);
context.lineTo(_item9.x, _item9.y);
context.lineTo(startX + _item9.width, zeroPoints);
context.setStrokeStyle(strokeColor);
context.setFillStyle(fillColor);
if (mountOption.borderWidth > 0) {
context.setLineWidth(mountOption.borderWidth * opts.pix);
context.stroke();
}
context.fill();
}
}
;
break;
case 'mount':
for (var _i19 = 0; _i19 < points.length; _i19++) {
var _item10 = points[_i19];
if (_item10 !== null && _i19 > leftNum && _i19 < rightNum) {
var startX = _item10.x - eachSpacing * mountOption.widthRatio / 2;
var height = opts.height - _item10.y - opts.area[2];
context.beginPath();
var fillColor = _item10.color || series[_i19].color;
var strokeColor = _item10.color || series[_i19].color;
if (mountOption.linearType !== 'none') {
var grd = context.createLinearGradient(startX, _item10.y, startX, zeroPoints);
//透明渐变
if (mountOption.linearType == 'opacity') {
grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));
grd.addColorStop(1, hexToRgb(fillColor, 1));
} else {
grd.addColorStop(0, hexToRgb(mountOption.customColor[series[_i19].linearIndex], mountOption.linearOpacity));
grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[_i19].linearIndex], mountOption.linearOpacity));
grd.addColorStop(1, hexToRgb(fillColor, 1));
}
fillColor = grd;
}
context.moveTo(startX, zeroPoints);
context.bezierCurveTo(_item10.x - _item10.width / 4, zeroPoints, _item10.x - _item10.width / 4, _item10.y, _item10.x, _item10.y);
context.bezierCurveTo(_item10.x + _item10.width / 4, _item10.y, _item10.x + _item10.width / 4, zeroPoints, startX + _item10.width, zeroPoints);
context.setStrokeStyle(strokeColor);
context.setFillStyle(fillColor);
if (mountOption.borderWidth > 0) {
context.setLineWidth(mountOption.borderWidth * opts.pix);
context.stroke();
}
context.fill();
}
}
;
break;
case 'sharp':
for (var _i20 = 0; _i20 < points.length; _i20++) {
var _item11 = points[_i20];
if (_item11 !== null && _i20 > leftNum && _i20 < rightNum) {
var startX = _item11.x - eachSpacing * mountOption.widthRatio / 2;
var height = opts.height - _item11.y - opts.area[2];
context.beginPath();
var fillColor = _item11.color || series[_i20].color;
var strokeColor = _item11.color || series[_i20].color;
if (mountOption.linearType !== 'none') {
var grd = context.createLinearGradient(startX, _item11.y, startX, zeroPoints);
//透明渐变
if (mountOption.linearType == 'opacity') {
grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));
grd.addColorStop(1, hexToRgb(fillColor, 1));
} else {
grd.addColorStop(0, hexToRgb(mountOption.customColor[series[_i20].linearIndex], mountOption.linearOpacity));
grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[_i20].linearIndex], mountOption.linearOpacity));
grd.addColorStop(1, hexToRgb(fillColor, 1));
}
fillColor = grd;
}
context.moveTo(startX, zeroPoints);
context.quadraticCurveTo(_item11.x - 0, zeroPoints - height / 4, _item11.x, _item11.y);
context.quadraticCurveTo(_item11.x + 0, zeroPoints - height / 4, startX + _item11.width, zeroPoints);
context.setStrokeStyle(strokeColor);
context.setFillStyle(fillColor);
if (mountOption.borderWidth > 0) {
context.setLineWidth(mountOption.borderWidth * opts.pix);
context.stroke();
}
context.fill();
}
}
;
break;
}
if (opts.dataLabel !== false && process === 1) {
var _ranges, _minRange, _maxRange;
_ranges = [].concat(opts.chartData.yAxisData.ranges[0]);
_minRange = _ranges.pop();
_maxRange = _ranges.shift();
var points = getMountDataPoints(series, _minRange, _maxRange, xAxisPoints, eachSpacing, opts, mountOption, zeroPoints, process);
drawMountPointText(points, series, config, context, opts, zeroPoints);
}
context.restore();
return {
xAxisPoints: xAxisPoints,
calPoints: points,
eachSpacing: eachSpacing
};
}
function drawBarDataPoints(series, opts, config, context) {
var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
var yAxisPoints = [];
var eachSpacing = (opts.height - opts.area[0] - opts.area[2]) / opts.categories.length;
for (var i = 0; i < opts.categories.length; i++) {
yAxisPoints.push(opts.area[0] + eachSpacing / 2 + eachSpacing * i);
}
var columnOption = assign({}, {
type: 'group',
width: eachSpacing / 2,
meterBorder: 4,
meterFillColor: '#FFFFFF',
barBorderCircle: false,
barBorderRadius: [],
seriesGap: 2,
linearType: 'none',
linearOpacity: 1,
customColor: [],
colorStop: 0
}, opts.extra.bar);
var calPoints = [];
context.save();
var leftNum = -2;
var rightNum = yAxisPoints.length + 2;
if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {
drawBarToolTipSplitArea(opts.tooltip.offset.y, opts, config, context, eachSpacing);
}
columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);
series.forEach(function (eachSeries, seriesIndex) {
var ranges, minRange, maxRange;
ranges = [].concat(opts.chartData.xAxisData.ranges);
maxRange = ranges.pop();
minRange = ranges.shift();
var data = eachSeries.data;
switch (columnOption.type) {
case 'group':
var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process);
var tooltipPoints = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
calPoints.push(tooltipPoints);
points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts);
for (var _i21 = 0; _i21 < points.length; _i21++) {
var item = points[_i21];
//fix issues/I27B1N yyoinge & Joeshu
if (item !== null && _i21 > leftNum && _i21 < rightNum) {
//var startX = item.x - item.width / 2;
var startX = opts.area[3];
var startY = item.y - item.width / 2;
var height = item.height;
context.beginPath();
var fillColor = item.color || eachSeries.color;
var strokeColor = item.color || eachSeries.color;
if (columnOption.linearType !== 'none') {
var grd = context.createLinearGradient(startX, item.y, item.x, item.y);
//透明渐变
if (columnOption.linearType == 'opacity') {
grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));
grd.addColorStop(1, hexToRgb(fillColor, 1));
} else {
grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));
grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));
grd.addColorStop(1, hexToRgb(fillColor, 1));
}
fillColor = grd;
}
// 圆角边框
if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle === true) {
var left = startX;
var width = item.width;
var top = item.y - item.width / 2;
var _height4 = item.height;
if (columnOption.barBorderCircle) {
columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];
}
var _columnOption$barBord3 = (0, _slicedToArray2.default)(columnOption.barBorderRadius, 4),
r0 = _columnOption$barBord3[0],
r1 = _columnOption$barBord3[1],
r2 = _columnOption$barBord3[2],
r3 = _columnOption$barBord3[3];
var minRadius = Math.min(width / 2, _height4 / 2);
r0 = r0 > minRadius ? minRadius : r0;
r1 = r1 > minRadius ? minRadius : r1;
r2 = r2 > minRadius ? minRadius : r2;
r3 = r3 > minRadius ? minRadius : r3;
r0 = r0 < 0 ? 0 : r0;
r1 = r1 < 0 ? 0 : r1;
r2 = r2 < 0 ? 0 : r2;
r3 = r3 < 0 ? 0 : r3;
context.arc(left + r3, top + r3, r3, -Math.PI, -Math.PI / 2);
context.arc(item.x - r0, top + r0, r0, -Math.PI / 2, 0);
context.arc(item.x - r1, top + width - r1, r1, 0, Math.PI / 2);
context.arc(left + r2, top + width - r2, r2, Math.PI / 2, Math.PI);
} else {
context.moveTo(startX, startY);
context.lineTo(item.x, startY);
context.lineTo(item.x, startY + item.width);
context.lineTo(startX, startY + item.width);
context.lineTo(startX, startY);
context.setLineWidth(1);
context.setStrokeStyle(strokeColor);
}
context.setFillStyle(fillColor);
context.closePath();
//context.stroke();
context.fill();
}
}
;
break;
case 'stack':
// 绘制堆叠数据图
var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
calPoints.push(points);
points = fixBarStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series);
for (var _i22 = 0; _i22 < points.length; _i22++) {
var _item12 = points[_i22];
if (_item12 !== null && _i22 > leftNum && _i22 < rightNum) {
context.beginPath();
var fillColor = _item12.color || eachSeries.color;
var startX = _item12.x0;
context.setFillStyle(fillColor);
context.moveTo(startX, _item12.y - _item12.width / 2);
context.fillRect(startX, _item12.y - _item12.width / 2, _item12.height, _item12.width);
context.closePath();
context.fill();
}
}
;
break;
}
});
if (opts.dataLabel !== false && process === 1) {
series.forEach(function (eachSeries, seriesIndex) {
var ranges, minRange, maxRange;
ranges = [].concat(opts.chartData.xAxisData.ranges);
maxRange = ranges.pop();
minRange = ranges.shift();
var data = eachSeries.data;
switch (columnOption.type) {
case 'group':
var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process);
points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts);
drawBarPointText(points, eachSeries, config, context, opts);
break;
case 'stack':
var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);
drawBarPointText(points, eachSeries, config, context, opts);
break;
}
});
}
return {
yAxisPoints: yAxisPoints,
calPoints: calPoints,
eachSpacing: eachSpacing
};
}
function drawCandleDataPoints(series, seriesMA, opts, config, context) {
var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
var candleOption = assign({}, {
color: {},
average: {}
}, opts.extra.candle);
candleOption.color = assign({}, {
upLine: '#f04864',
upFill: '#f04864',
downLine: '#2fc25b',
downFill: '#2fc25b'
}, candleOption.color);
candleOption.average = assign({}, {
show: false,
name: [],
day: [],
color: config.color
}, candleOption.average);
opts.extra.candle = candleOption;
var xAxisData = opts.chartData.xAxisData,
xAxisPoints = xAxisData.xAxisPoints,
eachSpacing = xAxisData.eachSpacing;
var calPoints = [];
context.save();
var leftNum = -2;
var rightNum = xAxisPoints.length + 2;
var leftSpace = 0;
var rightSpace = opts.width + eachSpacing;
if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
context.translate(opts._scrollDistance_, 0);
leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;
rightNum = leftNum + opts.xAxis.itemCount + 4;
leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];
rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;
}
//画均线
if (candleOption.average.show || seriesMA) {
//Merge pull request !12 from 邱贵翔
seriesMA.forEach(function (eachSeries, seriesIndex) {
var ranges, minRange, maxRange;
ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
minRange = ranges.pop();
maxRange = ranges.shift();
var data = eachSeries.data;
var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
var splitPointList = splitPoints(points, eachSeries);
for (var i = 0; i < splitPointList.length; i++) {
var _points = splitPointList[i];
context.beginPath();
context.setStrokeStyle(eachSeries.color);
context.setLineWidth(1);
if (_points.length === 1) {
context.moveTo(_points[0].x, _points[0].y);
context.arc(_points[0].x, _points[0].y, 1, 0, 2 * Math.PI);
} else {
context.moveTo(_points[0].x, _points[0].y);
var startPoint = 0;
for (var j = 0; j < _points.length; j++) {
var item = _points[j];
if (startPoint == 0 && item.x > leftSpace) {
context.moveTo(item.x, item.y);
startPoint = 1;
}
if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
var ctrlPoint = createCurveControlPoints(_points, j - 1);
context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);
}
}
context.moveTo(_points[0].x, _points[0].y);
}
context.closePath();
context.stroke();
}
});
}
//画K线
series.forEach(function (eachSeries, seriesIndex) {
var ranges, minRange, maxRange;
ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
minRange = ranges.pop();
maxRange = ranges.shift();
var data = eachSeries.data;
var points = getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
calPoints.push(points);
var splitPointList = splitPoints(points, eachSeries);
for (var i = 0; i < splitPointList[0].length; i++) {
if (i > leftNum && i < rightNum) {
var item = splitPointList[0][i];
context.beginPath();
//如果上涨
if (data[i][1] - data[i][0] > 0) {
context.setStrokeStyle(candleOption.color.upLine);
context.setFillStyle(candleOption.color.upFill);
context.setLineWidth(1 * opts.pix);
context.moveTo(item[3].x, item[3].y); //顶点
context.lineTo(item[1].x, item[1].y); //收盘中间点
context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点
context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点
context.lineTo(item[0].x, item[0].y); //开盘中间点
context.lineTo(item[2].x, item[2].y); //底点
context.lineTo(item[0].x, item[0].y); //开盘中间点
context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点
context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点
context.lineTo(item[1].x, item[1].y); //收盘中间点
context.moveTo(item[3].x, item[3].y); //顶点
} else {
context.setStrokeStyle(candleOption.color.downLine);
context.setFillStyle(candleOption.color.downFill);
context.setLineWidth(1 * opts.pix);
context.moveTo(item[3].x, item[3].y); //顶点
context.lineTo(item[0].x, item[0].y); //开盘中间点
context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点
context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点
context.lineTo(item[1].x, item[1].y); //收盘中间点
context.lineTo(item[2].x, item[2].y); //底点
context.lineTo(item[1].x, item[1].y); //收盘中间点
context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点
context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点
context.lineTo(item[0].x, item[0].y); //开盘中间点
context.moveTo(item[3].x, item[3].y); //顶点
}
context.closePath();
context.fill();
context.stroke();
}
}
});
context.restore();
return {
xAxisPoints: xAxisPoints,
calPoints: calPoints,
eachSpacing: eachSpacing
};
}
function drawAreaDataPoints(series, opts, config, context) {
var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
var areaOption = assign({}, {
type: 'straight',
opacity: 0.2,
addLine: false,
width: 2,
gradient: false,
activeType: 'none'
}, opts.extra.area);
var xAxisData = opts.chartData.xAxisData,
xAxisPoints = xAxisData.xAxisPoints,
eachSpacing = xAxisData.eachSpacing;
var endY = opts.height - opts.area[2];
var calPoints = [];
context.save();
var leftSpace = 0;
var rightSpace = opts.width + eachSpacing;
if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
context.translate(opts._scrollDistance_, 0);
leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];
rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;
}
series.forEach(function (eachSeries, seriesIndex) {
var ranges, minRange, maxRange;
ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
minRange = ranges.pop();
maxRange = ranges.shift();
var data = eachSeries.data;
var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
calPoints.push(points);
var splitPointList = splitPoints(points, eachSeries);
for (var i = 0; i < splitPointList.length; i++) {
var _points2 = splitPointList[i];
// 绘制区域数
context.beginPath();
context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity));
if (areaOption.gradient) {
var gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]);
gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity));
gradient.addColorStop('1.0', hexToRgb("#FFFFFF", 0.1));
context.setFillStyle(gradient);
} else {
context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity));
}
context.setLineWidth(areaOption.width * opts.pix);
if (_points2.length > 1) {
var firstPoint = _points2[0];
var lastPoint = _points2[_points2.length - 1];
context.moveTo(firstPoint.x, firstPoint.y);
var startPoint = 0;
if (areaOption.type === 'curve') {
for (var j = 0; j < _points2.length; j++) {
var item = _points2[j];
if (startPoint == 0 && item.x > leftSpace) {
context.moveTo(item.x, item.y);
startPoint = 1;
}
if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
var ctrlPoint = createCurveControlPoints(_points2, j - 1);
context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);
}
}
;
}
if (areaOption.type === 'straight') {
for (var _j = 0; _j < _points2.length; _j++) {
var _item13 = _points2[_j];
if (startPoint == 0 && _item13.x > leftSpace) {
context.moveTo(_item13.x, _item13.y);
startPoint = 1;
}
if (_j > 0 && _item13.x > leftSpace && _item13.x < rightSpace) {
context.lineTo(_item13.x, _item13.y);
}
}
;
}
if (areaOption.type === 'step') {
for (var _j2 = 0; _j2 < _points2.length; _j2++) {
var _item14 = _points2[_j2];
if (startPoint == 0 && _item14.x > leftSpace) {
context.moveTo(_item14.x, _item14.y);
startPoint = 1;
}
if (_j2 > 0 && _item14.x > leftSpace && _item14.x < rightSpace) {
context.lineTo(_item14.x, _points2[_j2 - 1].y);
context.lineTo(_item14.x, _item14.y);
}
}
;
}
context.lineTo(lastPoint.x, endY);
context.lineTo(firstPoint.x, endY);
context.lineTo(firstPoint.x, firstPoint.y);
} else {
var _item15 = _points2[0];
context.moveTo(_item15.x - eachSpacing / 2, _item15.y);
// context.lineTo(item.x + eachSpacing / 2, item.y);
// context.lineTo(item.x + eachSpacing / 2, endY);
// context.lineTo(item.x - eachSpacing / 2, endY);
// context.moveTo(item.x - eachSpacing / 2, item.y);
}
context.closePath();
context.fill();
//画连线
if (areaOption.addLine) {
if (eachSeries.lineType == 'dash') {
var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;
dashLength *= opts.pix;
context.setLineDash([dashLength, dashLength]);
}
context.beginPath();
context.setStrokeStyle(eachSeries.color);
context.setLineWidth(areaOption.width * opts.pix);
if (_points2.length === 1) {
context.moveTo(_points2[0].x, _points2[0].y);
// context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);
} else {
context.moveTo(_points2[0].x, _points2[0].y);
var _startPoint = 0;
if (areaOption.type === 'curve') {
for (var _j3 = 0; _j3 < _points2.length; _j3++) {
var _item16 = _points2[_j3];
if (_startPoint == 0 && _item16.x > leftSpace) {
context.moveTo(_item16.x, _item16.y);
_startPoint = 1;
}
if (_j3 > 0 && _item16.x > leftSpace && _item16.x < rightSpace) {
var _ctrlPoint = createCurveControlPoints(_points2, _j3 - 1);
context.bezierCurveTo(_ctrlPoint.ctrA.x, _ctrlPoint.ctrA.y, _ctrlPoint.ctrB.x, _ctrlPoint.ctrB.y, _item16.x, _item16.y);
}
}
;
}
if (areaOption.type === 'straight') {
for (var _j4 = 0; _j4 < _points2.length; _j4++) {
var _item17 = _points2[_j4];
if (_startPoint == 0 && _item17.x > leftSpace) {
context.moveTo(_item17.x, _item17.y);
_startPoint = 1;
}
if (_j4 > 0 && _item17.x > leftSpace && _item17.x < rightSpace) {
context.lineTo(_item17.x, _item17.y);
}
}
;
}
if (areaOption.type === 'step') {
for (var _j5 = 0; _j5 < _points2.length; _j5++) {
var _item18 = _points2[_j5];
if (_startPoint == 0 && _item18.x > leftSpace) {
context.moveTo(_item18.x, _item18.y);
_startPoint = 1;
}
if (_j5 > 0 && _item18.x > leftSpace && _item18.x < rightSpace) {
context.lineTo(_item18.x, _points2[_j5 - 1].y);
context.lineTo(_item18.x, _item18.y);
}
}
;
}
context.moveTo(_points2[0].x, _points2[0].y);
}
context.stroke();
context.setLineDash([]);
}
}
//画点
if (opts.dataPointShape !== false) {
drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);
}
drawActivePoint(points, eachSeries.color, eachSeries.pointShape, context, opts, areaOption, seriesIndex);
});
if (opts.dataLabel !== false && process === 1) {
series.forEach(function (eachSeries, seriesIndex) {
var ranges, minRange, maxRange;
ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
minRange = ranges.pop();
maxRange = ranges.shift();
var data = eachSeries.data;
var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
drawPointText(points, eachSeries, config, context, opts);
});
}
context.restore();
return {
xAxisPoints: xAxisPoints,
calPoints: calPoints,
eachSpacing: eachSpacing
};
}
function drawScatterDataPoints(series, opts, config, context) {
var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
var scatterOption = assign({}, {
type: 'circle'
}, opts.extra.scatter);
var xAxisData = opts.chartData.xAxisData,
xAxisPoints = xAxisData.xAxisPoints,
eachSpacing = xAxisData.eachSpacing;
var calPoints = [];
context.save();
var leftSpace = 0;
var rightSpace = opts.width + eachSpacing;
if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
context.translate(opts._scrollDistance_, 0);
leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];
rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;
}
series.forEach(function (eachSeries, seriesIndex) {
var ranges, minRange, maxRange;
ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
minRange = ranges.pop();
maxRange = ranges.shift();
var data = eachSeries.data;
var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
context.beginPath();
context.setStrokeStyle(eachSeries.color);
context.setFillStyle(eachSeries.color);
context.setLineWidth(1 * opts.pix);
var shape = eachSeries.pointShape;
if (shape === 'diamond') {
points.forEach(function (item, index) {
if (item !== null) {
context.moveTo(item.x, item.y - 4.5);
context.lineTo(item.x - 4.5, item.y);
context.lineTo(item.x, item.y + 4.5);
context.lineTo(item.x + 4.5, item.y);
context.lineTo(item.x, item.y - 4.5);
}
});
} else if (shape === 'circle') {
points.forEach(function (item, index) {
if (item !== null) {
context.moveTo(item.x + 2.5 * opts.pix, item.y);
context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false);
}
});
} else if (shape === 'square') {
points.forEach(function (item, index) {
if (item !== null) {
context.moveTo(item.x - 3.5, item.y - 3.5);
context.rect(item.x - 3.5, item.y - 3.5, 7, 7);
}
});
} else if (shape === 'triangle') {
points.forEach(function (item, index) {
if (item !== null) {
context.moveTo(item.x, item.y - 4.5);
context.lineTo(item.x - 4.5, item.y + 4.5);
context.lineTo(item.x + 4.5, item.y + 4.5);
context.lineTo(item.x, item.y - 4.5);
}
});
} else if (shape === 'triangle') {
return;
}
context.closePath();
context.fill();
context.stroke();
});
if (opts.dataLabel !== false && process === 1) {
series.forEach(function (eachSeries, seriesIndex) {
var ranges, minRange, maxRange;
ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
minRange = ranges.pop();
maxRange = ranges.shift();
var data = eachSeries.data;
var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
drawPointText(points, eachSeries, config, context, opts);
});
}
context.restore();
return {
xAxisPoints: xAxisPoints,
calPoints: calPoints,
eachSpacing: eachSpacing
};
}
function drawBubbleDataPoints(series, opts, config, context) {
var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
var bubbleOption = assign({}, {
opacity: 1,
border: 2
}, opts.extra.bubble);
var xAxisData = opts.chartData.xAxisData,
xAxisPoints = xAxisData.xAxisPoints,
eachSpacing = xAxisData.eachSpacing;
var calPoints = [];
context.save();
var leftSpace = 0;
var rightSpace = opts.width + eachSpacing;
if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
context.translate(opts._scrollDistance_, 0);
leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];
rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;
}
series.forEach(function (eachSeries, seriesIndex) {
var ranges, minRange, maxRange;
ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
minRange = ranges.pop();
maxRange = ranges.shift();
var data = eachSeries.data;
var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
context.beginPath();
context.setStrokeStyle(eachSeries.color);
context.setLineWidth(bubbleOption.border * opts.pix);
context.setFillStyle(hexToRgb(eachSeries.color, bubbleOption.opacity));
points.forEach(function (item, index) {
context.moveTo(item.x + item.r, item.y);
context.arc(item.x, item.y, item.r * opts.pix, 0, 2 * Math.PI, false);
});
context.closePath();
context.fill();
context.stroke();
if (opts.dataLabel !== false && process === 1) {
points.forEach(function (item, index) {
context.beginPath();
var fontSize = eachSeries.textSize * opts.pix || config.fontSize;
context.setFontSize(fontSize);
context.setFillStyle(eachSeries.textColor || "#FFFFFF");
context.setTextAlign('center');
context.fillText(String(item.t), item.x, item.y + fontSize / 2);
context.closePath();
context.stroke();
context.setTextAlign('left');
});
}
});
context.restore();
return {
xAxisPoints: xAxisPoints,
calPoints: calPoints,
eachSpacing: eachSpacing
};
}
function drawLineDataPoints(series, opts, config, context) {
var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
var lineOption = assign({}, {
type: 'straight',
width: 2,
activeType: 'none',
linearType: 'none',
onShadow: false,
animation: 'vertical'
}, opts.extra.line);
lineOption.width *= opts.pix;
var xAxisData = opts.chartData.xAxisData,
xAxisPoints = xAxisData.xAxisPoints,
eachSpacing = xAxisData.eachSpacing;
var calPoints = [];
context.save();
var leftSpace = 0;
var rightSpace = opts.width + eachSpacing;
if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
context.translate(opts._scrollDistance_, 0);
leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];
rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;
}
series.forEach(function (eachSeries, seriesIndex) {
// 这段很神奇的代码用于解决ios16的setStrokeStyle失效的bug
context.beginPath();
context.setStrokeStyle(eachSeries.color);
context.moveTo(-10000, -10000);
context.lineTo(-10001, -10001);
context.stroke();
var ranges, minRange, maxRange;
ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
minRange = ranges.pop();
maxRange = ranges.shift();
var data = eachSeries.data;
var points = getLineDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, lineOption, process);
calPoints.push(points);
var splitPointList = splitPoints(points, eachSeries);
if (eachSeries.lineType == 'dash') {
var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;
dashLength *= opts.pix;
context.setLineDash([dashLength, dashLength]);
}
context.beginPath();
var strokeColor = eachSeries.color;
if (lineOption.linearType !== 'none' && eachSeries.linearColor && eachSeries.linearColor.length > 0) {
var grd = context.createLinearGradient(opts.chartData.xAxisData.startX, opts.height / 2, opts.chartData.xAxisData.endX, opts.height / 2);
for (var i = 0; i < eachSeries.linearColor.length; i++) {
grd.addColorStop(eachSeries.linearColor[i][0], hexToRgb(eachSeries.linearColor[i][1], 1));
}
strokeColor = grd;
}
context.setStrokeStyle(strokeColor);
if (lineOption.onShadow == true && eachSeries.setShadow && eachSeries.setShadow.length > 0) {
context.setShadow(eachSeries.setShadow[0], eachSeries.setShadow[1], eachSeries.setShadow[2], eachSeries.setShadow[3]);
} else {
context.setShadow(0, 0, 0, 'rgba(0,0,0,0)');
}
context.setLineWidth(lineOption.width);
splitPointList.forEach(function (points, index) {
if (points.length === 1) {
context.moveTo(points[0].x, points[0].y);
// context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);
} else {
context.moveTo(points[0].x, points[0].y);
var startPoint = 0;
if (lineOption.type === 'curve') {
for (var j = 0; j < points.length; j++) {
var item = points[j];
if (startPoint == 0 && item.x > leftSpace) {
context.moveTo(item.x, item.y);
startPoint = 1;
}
if (j > 0 && item.x > leftSpace && item.x < rightSpace) {
var ctrlPoint = createCurveControlPoints(points, j - 1);
context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);
}
}
;
}
if (lineOption.type === 'straight') {
for (var _j6 = 0; _j6 < points.length; _j6++) {
var _item19 = points[_j6];
if (startPoint == 0 && _item19.x > leftSpace) {
context.moveTo(_item19.x, _item19.y);
startPoint = 1;
}
if (_j6 > 0 && _item19.x > leftSpace && _item19.x < rightSpace) {
context.lineTo(_item19.x, _item19.y);
}
}
;
}
if (lineOption.type === 'step') {
for (var _j7 = 0; _j7 < points.length; _j7++) {
var _item20 = points[_j7];
if (startPoint == 0 && _item20.x > leftSpace) {
context.moveTo(_item20.x, _item20.y);
startPoint = 1;
}
if (_j7 > 0 && _item20.x > leftSpace && _item20.x < rightSpace) {
context.lineTo(_item20.x, points[_j7 - 1].y);
context.lineTo(_item20.x, _item20.y);
}
}
;
}
context.moveTo(points[0].x, points[0].y);
}
});
context.stroke();
context.setLineDash([]);
if (opts.dataPointShape !== false) {
drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);
}
drawActivePoint(points, eachSeries.color, eachSeries.pointShape, context, opts, lineOption);
});
if (opts.dataLabel !== false && process === 1) {
series.forEach(function (eachSeries, seriesIndex) {
var ranges, minRange, maxRange;
ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
minRange = ranges.pop();
maxRange = ranges.shift();
var data = eachSeries.data;
var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
drawPointText(points, eachSeries, config, context, opts);
});
}
context.restore();
return {
xAxisPoints: xAxisPoints,
calPoints: calPoints,
eachSpacing: eachSpacing
};
}
function drawMixDataPoints(series, opts, config, context) {
var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
var xAxisData = opts.chartData.xAxisData,
xAxisPoints = xAxisData.xAxisPoints,
eachSpacing = xAxisData.eachSpacing;
var columnOption = assign({}, {
width: eachSpacing / 2,
barBorderCircle: false,
barBorderRadius: [],
seriesGap: 2,
linearType: 'none',
linearOpacity: 1,
customColor: [],
colorStop: 0
}, opts.extra.mix.column);
var areaOption = assign({}, {
opacity: 0.2,
gradient: false
}, opts.extra.mix.area);
var lineOption = assign({}, {
width: 2
}, opts.extra.mix.line);
var endY = opts.height - opts.area[2];
var calPoints = [];
var columnIndex = 0;
var columnLength = 0;
series.forEach(function (eachSeries, seriesIndex) {
if (eachSeries.type == 'column') {
columnLength += 1;
}
});
context.save();
var leftNum = -2;
var rightNum = xAxisPoints.length + 2;
var leftSpace = 0;
var rightSpace = opts.width + eachSpacing;
if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
context.translate(opts._scrollDistance_, 0);
leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;
rightNum = leftNum + opts.xAxis.itemCount + 4;
leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];
rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;
}
columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);
series.forEach(function (eachSeries, seriesIndex) {
var ranges, minRange, maxRange;
ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
minRange = ranges.pop();
maxRange = ranges.shift();
var data = eachSeries.data;
var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
calPoints.push(points);
// 绘制柱状数据图
if (eachSeries.type == 'column') {
points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);
for (var i = 0; i < points.length; i++) {
var item = points[i];
if (item !== null && i > leftNum && i < rightNum) {
var startX = item.x - item.width / 2;
var height = opts.height - item.y - opts.area[2];
context.beginPath();
var fillColor = item.color || eachSeries.color;
var strokeColor = item.color || eachSeries.color;
if (columnOption.linearType !== 'none') {
var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);
//透明渐变
if (columnOption.linearType == 'opacity') {
grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));
grd.addColorStop(1, hexToRgb(fillColor, 1));
} else {
grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));
grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));
grd.addColorStop(1, hexToRgb(fillColor, 1));
}
fillColor = grd;
}
// 圆角边框
if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle) {
var left = startX;
var top = item.y;
var width = item.width;
var _height5 = opts.height - opts.area[2] - item.y;
if (columnOption.barBorderCircle) {
columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];
}
var _columnOption$barBord4 = (0, _slicedToArray2.default)(columnOption.barBorderRadius, 4),
r0 = _columnOption$barBord4[0],
r1 = _columnOption$barBord4[1],
r2 = _columnOption$barBord4[2],
r3 = _columnOption$barBord4[3];
var minRadius = Math.min(width / 2, _height5 / 2);
r0 = r0 > minRadius ? minRadius : r0;
r1 = r1 > minRadius ? minRadius : r1;
r2 = r2 > minRadius ? minRadius : r2;
r3 = r3 > minRadius ? minRadius : r3;
r0 = r0 < 0 ? 0 : r0;
r1 = r1 < 0 ? 0 : r1;
r2 = r2 < 0 ? 0 : r2;
r3 = r3 < 0 ? 0 : r3;
context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);
context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);
context.arc(left + width - r2, top + _height5 - r2, r2, 0, Math.PI / 2);
context.arc(left + r3, top + _height5 - r3, r3, Math.PI / 2, Math.PI);
} else {
context.moveTo(startX, item.y);
context.lineTo(startX + item.width, item.y);
context.lineTo(startX + item.width, opts.height - opts.area[2]);
context.lineTo(startX, opts.height - opts.area[2]);
context.lineTo(startX, item.y);
context.setLineWidth(1);
context.setStrokeStyle(strokeColor);
}
context.setFillStyle(fillColor);
context.closePath();
context.fill();
}
}
columnIndex += 1;
}
//绘制区域图数据
if (eachSeries.type == 'area') {
var _splitPointList = splitPoints(points, eachSeries);
for (var _i23 = 0; _i23 < _splitPointList.length; _i23++) {
var _points3 = _splitPointList[_i23];
// 绘制区域数据
context.beginPath();
context.setStrokeStyle(eachSeries.color);
context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity));
if (areaOption.gradient) {
var gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]);
gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity));
gradient.addColorStop('1.0', hexToRgb("#FFFFFF", 0.1));
context.setFillStyle(gradient);
} else {
context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity));
}
context.setLineWidth(2 * opts.pix);
if (_points3.length > 1) {
var firstPoint = _points3[0];
var lastPoint = _points3[_points3.length - 1];
context.moveTo(firstPoint.x, firstPoint.y);
var startPoint = 0;
if (eachSeries.style === 'curve') {
for (var j = 0; j < _points3.length; j++) {
var _item21 = _points3[j];
if (startPoint == 0 && _item21.x > leftSpace) {
context.moveTo(_item21.x, _item21.y);
startPoint = 1;
}
if (j > 0 && _item21.x > leftSpace && _item21.x < rightSpace) {
var ctrlPoint = createCurveControlPoints(_points3, j - 1);
context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, _item21.x, _item21.y);
}
}
;
} else {
for (var _j8 = 0; _j8 < _points3.length; _j8++) {
var _item22 = _points3[_j8];
if (startPoint == 0 && _item22.x > leftSpace) {
context.moveTo(_item22.x, _item22.y);
startPoint = 1;
}
if (_j8 > 0 && _item22.x > leftSpace && _item22.x < rightSpace) {
context.lineTo(_item22.x, _item22.y);
}
}
;
}
context.lineTo(lastPoint.x, endY);
context.lineTo(firstPoint.x, endY);
context.lineTo(firstPoint.x, firstPoint.y);
} else {
var _item23 = _points3[0];
context.moveTo(_item23.x - eachSpacing / 2, _item23.y);
// context.lineTo(item.x + eachSpacing / 2, item.y);
// context.lineTo(item.x + eachSpacing / 2, endY);
// context.lineTo(item.x - eachSpacing / 2, endY);
// context.moveTo(item.x - eachSpacing / 2, item.y);
}
context.closePath();
context.fill();
}
}
// 绘制折线数据图
if (eachSeries.type == 'line') {
var splitPointList = splitPoints(points, eachSeries);
splitPointList.forEach(function (points, index) {
if (eachSeries.lineType == 'dash') {
var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;
dashLength *= opts.pix;
context.setLineDash([dashLength, dashLength]);
}
context.beginPath();
context.setStrokeStyle(eachSeries.color);
context.setLineWidth(lineOption.width * opts.pix);
if (points.length === 1) {
context.moveTo(points[0].x, points[0].y);
// context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);
} else {
context.moveTo(points[0].x, points[0].y);
var _startPoint2 = 0;
if (eachSeries.style == 'curve') {
for (var _j9 = 0; _j9 < points.length; _j9++) {
var _item24 = points[_j9];
if (_startPoint2 == 0 && _item24.x > leftSpace) {
context.moveTo(_item24.x, _item24.y);
_startPoint2 = 1;
}
if (_j9 > 0 && _item24.x > leftSpace && _item24.x < rightSpace) {
var ctrlPoint = createCurveControlPoints(points, _j9 - 1);
context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, _item24.x, _item24.y);
}
}
} else {
for (var _j10 = 0; _j10 < points.length; _j10++) {
var _item25 = points[_j10];
if (_startPoint2 == 0 && _item25.x > leftSpace) {
context.moveTo(_item25.x, _item25.y);
_startPoint2 = 1;
}
if (_j10 > 0 && _item25.x > leftSpace && _item25.x < rightSpace) {
context.lineTo(_item25.x, _item25.y);
}
}
}
context.moveTo(points[0].x, points[0].y);
}
context.stroke();
context.setLineDash([]);
});
}
// 绘制点数据图
if (eachSeries.type == 'point') {
eachSeries.addPoint = true;
}
if (eachSeries.addPoint == true && eachSeries.type !== 'column') {
drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);
}
});
if (opts.dataLabel !== false && process === 1) {
var columnIndex = 0;
series.forEach(function (eachSeries, seriesIndex) {
var ranges, minRange, maxRange;
ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);
minRange = ranges.pop();
maxRange = ranges.shift();
var data = eachSeries.data;
var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);
if (eachSeries.type !== 'column') {
drawPointText(points, eachSeries, config, context, opts);
} else {
points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);
drawPointText(points, eachSeries, config, context, opts);
columnIndex += 1;
}
});
}
context.restore();
return {
xAxisPoints: xAxisPoints,
calPoints: calPoints,
eachSpacing: eachSpacing
};
}
function drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints) {
var toolTipOption = opts.extra.tooltip || {};
if (toolTipOption.horizentalLine && opts.tooltip && process === 1 && (opts.type == 'line' || opts.type == 'area' || opts.type == 'column' || opts.type == 'mount' || opts.type == 'candle' || opts.type == 'mix')) {
drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints);
}
context.save();
if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {
context.translate(opts._scrollDistance_, 0);
}
if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {
drawToolTip(opts.tooltip.textList, opts.tooltip.offset, opts, config, context, eachSpacing, xAxisPoints);
}
context.restore();
}
function drawXAxis(categories, opts, config, context) {
var xAxisData = opts.chartData.xAxisData,
xAxisPoints = xAxisData.xAxisPoints,
startX = xAxisData.startX,
endX = xAxisData.endX,
eachSpacing = xAxisData.eachSpacing;
var boundaryGap = 'center';
if (opts.type == 'bar' || opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble') {
boundaryGap = opts.xAxis.boundaryGap;
}
var startY = opts.height - opts.area[2];
var endY = opts.area[0];
//绘制滚动条
if (opts.enableScroll && opts.xAxis.scrollShow) {
var scrollY = opts.height - opts.area[2] + config.xAxisHeight;
var scrollScreenWidth = endX - startX;
var scrollTotalWidth = eachSpacing * (xAxisPoints.length - 1);
if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {
if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;
scrollTotalWidth += (opts.extra.mount.widthRatio - 1) * eachSpacing;
}
var scrollWidth = scrollScreenWidth * scrollScreenWidth / scrollTotalWidth;
var scrollLeft = 0;
if (opts._scrollDistance_) {
scrollLeft = -opts._scrollDistance_ * scrollScreenWidth / scrollTotalWidth;
}
context.beginPath();
context.setLineCap('round');
context.setLineWidth(6 * opts.pix);
context.setStrokeStyle(opts.xAxis.scrollBackgroundColor || "#EFEBEF");
context.moveTo(startX, scrollY);
context.lineTo(endX, scrollY);
context.stroke();
context.closePath();
context.beginPath();
context.setLineCap('round');
context.setLineWidth(6 * opts.pix);
context.setStrokeStyle(opts.xAxis.scrollColor || "#A6A6A6");
context.moveTo(startX + scrollLeft, scrollY);
context.lineTo(startX + scrollLeft + scrollWidth, scrollY);
context.stroke();
context.closePath();
context.setLineCap('butt');
}
context.save();
if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {
context.translate(opts._scrollDistance_, 0);
}
//绘制X轴刻度线
if (opts.xAxis.calibration === true) {
context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc");
context.setLineCap('butt');
context.setLineWidth(1 * opts.pix);
xAxisPoints.forEach(function (item, index) {
if (index > 0) {
context.beginPath();
context.moveTo(item - eachSpacing / 2, startY);
context.lineTo(item - eachSpacing / 2, startY + 3 * opts.pix);
context.closePath();
context.stroke();
}
});
}
//绘制X轴网格
if (opts.xAxis.disableGrid !== true) {
context.setStrokeStyle(opts.xAxis.gridColor || "#cccccc");
context.setLineCap('butt');
context.setLineWidth(1 * opts.pix);
if (opts.xAxis.gridType == 'dash') {
context.setLineDash([opts.xAxis.dashLength * opts.pix, opts.xAxis.dashLength * opts.pix]);
}
opts.xAxis.gridEval = opts.xAxis.gridEval || 1;
xAxisPoints.forEach(function (item, index) {
if (index % opts.xAxis.gridEval == 0) {
context.beginPath();
context.moveTo(item, startY);
context.lineTo(item, endY);
context.stroke();
}
});
context.setLineDash([]);
}
//绘制X轴文案
if (opts.xAxis.disabled !== true) {
// 对X轴列表做抽稀处理
//默认全部显示X轴标签
var maxXAxisListLength = categories.length;
//如果设置了X轴单屏数量
if (opts.xAxis.labelCount) {
//如果设置X轴密度
if (opts.xAxis.itemCount) {
maxXAxisListLength = Math.ceil(categories.length / opts.xAxis.itemCount * opts.xAxis.labelCount);
} else {
maxXAxisListLength = opts.xAxis.labelCount;
}
maxXAxisListLength -= 1;
}
var ratio = Math.ceil(categories.length / maxXAxisListLength);
var newCategories = [];
var cgLength = categories.length;
for (var i = 0; i < cgLength; i++) {
if (i % ratio !== 0) {
newCategories.push("");
} else {
newCategories.push(categories[i]);
}
}
newCategories[cgLength - 1] = categories[cgLength - 1];
var xAxisFontSize = opts.xAxis.fontSize * opts.pix || config.fontSize;
if (config._xAxisTextAngle_ === 0) {
newCategories.forEach(function (item, index) {
var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item, index, opts) : item;
var offset = -measureText(String(xitem), xAxisFontSize, context) / 2;
if (boundaryGap == 'center') {
offset += eachSpacing / 2;
}
var scrollHeight = 0;
if (opts.xAxis.scrollShow) {
scrollHeight = 6 * opts.pix;
}
// 如果在主视图区域内
var _scrollDistance_ = opts._scrollDistance_ || 0;
var truePoints = boundaryGap == 'center' ? xAxisPoints[index] + eachSpacing / 2 : xAxisPoints[index];
if (truePoints - Math.abs(_scrollDistance_) >= opts.area[3] - 1 && truePoints - Math.abs(_scrollDistance_) <= opts.width - opts.area[1] + 1) {
context.beginPath();
context.setFontSize(xAxisFontSize);
context.setFillStyle(opts.xAxis.fontColor || opts.fontColor);
context.fillText(String(xitem), xAxisPoints[index] + offset, startY + opts.xAxis.marginTop * opts.pix + (opts.xAxis.lineHeight - opts.xAxis.fontSize) * opts.pix / 2 + opts.xAxis.fontSize * opts.pix);
context.closePath();
context.stroke();
}
});
} else {
newCategories.forEach(function (item, index) {
var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item) : item;
// 如果在主视图区域内
var _scrollDistance_ = opts._scrollDistance_ || 0;
var truePoints = boundaryGap == 'center' ? xAxisPoints[index] + eachSpacing / 2 : xAxisPoints[index];
if (truePoints - Math.abs(_scrollDistance_) >= opts.area[3] - 1 && truePoints - Math.abs(_scrollDistance_) <= opts.width - opts.area[1] + 1) {
context.save();
context.beginPath();
context.setFontSize(xAxisFontSize);
context.setFillStyle(opts.xAxis.fontColor || opts.fontColor);
var textWidth = measureText(String(xitem), xAxisFontSize, context);
var offsetX = xAxisPoints[index];
if (boundaryGap == 'center') {
offsetX = xAxisPoints[index] + eachSpacing / 2;
}
var scrollHeight = 0;
if (opts.xAxis.scrollShow) {
scrollHeight = 6 * opts.pix;
}
var offsetY = startY + opts.xAxis.marginTop * opts.pix + xAxisFontSize - xAxisFontSize * Math.abs(Math.sin(config._xAxisTextAngle_));
if (opts.xAxis.rotateAngle < 0) {
offsetX -= xAxisFontSize / 2;
textWidth = 0;
} else {
offsetX += xAxisFontSize / 2;
textWidth = -textWidth;
}
context.translate(offsetX, offsetY);
context.rotate(-1 * config._xAxisTextAngle_);
context.fillText(String(xitem), textWidth, 0);
context.closePath();
context.stroke();
context.restore();
}
});
}
}
context.restore();
//画X轴标题
if (opts.xAxis.title) {
context.beginPath();
context.setFontSize(opts.xAxis.titleFontSize * opts.pix);
context.setFillStyle(opts.xAxis.titleFontColor);
context.fillText(String(opts.xAxis.title), opts.width - opts.area[1] + opts.xAxis.titleOffsetX * opts.pix, opts.height - opts.area[2] + opts.xAxis.marginTop * opts.pix + (opts.xAxis.lineHeight - opts.xAxis.titleFontSize) * opts.pix / 2 + (opts.xAxis.titleFontSize + opts.xAxis.titleOffsetY) * opts.pix);
context.closePath();
context.stroke();
}
//绘制X轴轴线
if (opts.xAxis.axisLine) {
context.beginPath();
context.setStrokeStyle(opts.xAxis.axisLineColor);
context.setLineWidth(1 * opts.pix);
context.moveTo(startX, opts.height - opts.area[2]);
context.lineTo(endX, opts.height - opts.area[2]);
context.stroke();
}
}
function drawYAxisGrid(categories, opts, config, context) {
if (opts.yAxis.disableGrid === true) {
return;
}
var spacingValid = opts.height - opts.area[0] - opts.area[2];
var eachSpacing = spacingValid / opts.yAxis.splitNumber;
var startX = opts.area[3];
var xAxisPoints = opts.chartData.xAxisData.xAxisPoints,
xAxiseachSpacing = opts.chartData.xAxisData.eachSpacing;
var TotalWidth = xAxiseachSpacing * (xAxisPoints.length - 1);
if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {
if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;
TotalWidth += (opts.extra.mount.widthRatio - 1) * xAxiseachSpacing;
}
var endX = startX + TotalWidth;
var points = [];
var startY = 1;
if (opts.xAxis.axisLine === false) {
startY = 0;
}
for (var i = startY; i < opts.yAxis.splitNumber + 1; i++) {
points.push(opts.height - opts.area[2] - eachSpacing * i);
}
context.save();
if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {
context.translate(opts._scrollDistance_, 0);
}
if (opts.yAxis.gridType == 'dash') {
context.setLineDash([opts.yAxis.dashLength * opts.pix, opts.yAxis.dashLength * opts.pix]);
}
context.setStrokeStyle(opts.yAxis.gridColor);
context.setLineWidth(1 * opts.pix);
points.forEach(function (item, index) {
context.beginPath();
context.moveTo(startX, item);
context.lineTo(endX, item);
context.stroke();
});
context.setLineDash([]);
context.restore();
}
function drawYAxis(series, opts, config, context) {
if (opts.yAxis.disabled === true) {
return;
}
var spacingValid = opts.height - opts.area[0] - opts.area[2];
var eachSpacing = spacingValid / opts.yAxis.splitNumber;
var startX = opts.area[3];
var endX = opts.width - opts.area[1];
var endY = opts.height - opts.area[2];
// set YAxis background
context.beginPath();
context.setFillStyle(opts.background);
if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'left') {
context.fillRect(0, 0, startX, endY + 2 * opts.pix);
}
if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'right') {
context.fillRect(endX, 0, opts.width, endY + 2 * opts.pix);
}
context.closePath();
context.stroke();
var tStartLeft = opts.area[3];
var tStartRight = opts.width - opts.area[1];
var tStartCenter = opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2;
if (opts.yAxis.data) {
var _loop4 = function _loop4(i) {
var yData = opts.yAxis.data[i];
points = [];
if (yData.type === 'categories') {
for (var _i24 = 0; _i24 <= yData.categories.length; _i24++) {
points.push(opts.area[0] + spacingValid / yData.categories.length / 2 + spacingValid / yData.categories.length * _i24);
}
} else {
for (var _i25 = 0; _i25 <= opts.yAxis.splitNumber; _i25++) {
points.push(opts.area[0] + eachSpacing * _i25);
}
}
if (yData.disabled !== true) {
var rangesFormat = opts.chartData.yAxisData.rangesFormat[i];
var yAxisFontSize = yData.fontSize ? yData.fontSize * opts.pix : config.fontSize;
var yAxisWidth = opts.chartData.yAxisData.yAxisWidth[i];
var textAlign = yData.textAlign || "right";
//画Y轴刻度及文案
rangesFormat.forEach(function (item, index) {
var pos = points[index];
context.beginPath();
context.setFontSize(yAxisFontSize);
context.setLineWidth(1 * opts.pix);
context.setStrokeStyle(yData.axisLineColor || '#cccccc');
context.setFillStyle(yData.fontColor || opts.fontColor);
var tmpstrat = 0;
var gapwidth = 4 * opts.pix;
if (yAxisWidth.position == 'left') {
//画刻度线
if (yData.calibration == true) {
context.moveTo(tStartLeft, pos);
context.lineTo(tStartLeft - 3 * opts.pix, pos);
gapwidth += 3 * opts.pix;
}
//画文字
switch (textAlign) {
case "left":
context.setTextAlign('left');
tmpstrat = tStartLeft - yAxisWidth.width;
break;
case "right":
context.setTextAlign('right');
tmpstrat = tStartLeft - gapwidth;
break;
default:
context.setTextAlign('center');
tmpstrat = tStartLeft - yAxisWidth.width / 2;
}
context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);
} else if (yAxisWidth.position == 'right') {
//画刻度线
if (yData.calibration == true) {
context.moveTo(tStartRight, pos);
context.lineTo(tStartRight + 3 * opts.pix, pos);
gapwidth += 3 * opts.pix;
}
switch (textAlign) {
case "left":
context.setTextAlign('left');
tmpstrat = tStartRight + gapwidth;
break;
case "right":
context.setTextAlign('right');
tmpstrat = tStartRight + yAxisWidth.width;
break;
default:
context.setTextAlign('center');
tmpstrat = tStartRight + yAxisWidth.width / 2;
}
context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);
} else if (yAxisWidth.position == 'center') {
//画刻度线
if (yData.calibration == true) {
context.moveTo(tStartCenter, pos);
context.lineTo(tStartCenter - 3 * opts.pix, pos);
gapwidth += 3 * opts.pix;
}
//画文字
switch (textAlign) {
case "left":
context.setTextAlign('left');
tmpstrat = tStartCenter - yAxisWidth.width;
break;
case "right":
context.setTextAlign('right');
tmpstrat = tStartCenter - gapwidth;
break;
default:
context.setTextAlign('center');
tmpstrat = tStartCenter - yAxisWidth.width / 2;
}
context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);
}
context.closePath();
context.stroke();
context.setTextAlign('left');
});
//画Y轴轴线
if (yData.axisLine !== false) {
context.beginPath();
context.setStrokeStyle(yData.axisLineColor || '#cccccc');
context.setLineWidth(1 * opts.pix);
if (yAxisWidth.position == 'left') {
context.moveTo(tStartLeft, opts.height - opts.area[2]);
context.lineTo(tStartLeft, opts.area[0]);
} else if (yAxisWidth.position == 'right') {
context.moveTo(tStartRight, opts.height - opts.area[2]);
context.lineTo(tStartRight, opts.area[0]);
} else if (yAxisWidth.position == 'center') {
context.moveTo(tStartCenter, opts.height - opts.area[2]);
context.lineTo(tStartCenter, opts.area[0]);
}
context.stroke();
}
//画Y轴标题
if (opts.yAxis.showTitle) {
var titleFontSize = yData.titleFontSize * opts.pix || config.fontSize;
var title = yData.title;
context.beginPath();
context.setFontSize(titleFontSize);
context.setFillStyle(yData.titleFontColor || opts.fontColor);
if (yAxisWidth.position == 'left') {
context.fillText(title, tStartLeft - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);
} else if (yAxisWidth.position == 'right') {
context.fillText(title, tStartRight - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);
} else if (yAxisWidth.position == 'center') {
context.fillText(title, tStartCenter - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);
}
context.closePath();
context.stroke();
}
if (yAxisWidth.position == 'left') {
tStartLeft -= yAxisWidth.width + opts.yAxis.padding * opts.pix;
} else {
tStartRight += yAxisWidth.width + opts.yAxis.padding * opts.pix;
}
}
};
for (var i = 0; i < opts.yAxis.data.length; i++) {
var points;
_loop4(i);
}
}
}
function drawLegend(series, opts, config, context, chartData) {
if (opts.legend.show === false) {
return;
}
var legendData = chartData.legendData;
var legendList = legendData.points;
var legendArea = legendData.area;
var padding = opts.legend.padding * opts.pix;
var fontSize = opts.legend.fontSize * opts.pix;
var shapeWidth = 15 * opts.pix;
var shapeRight = 5 * opts.pix;
var itemGap = opts.legend.itemGap * opts.pix;
var lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize);
//画背景及边框
context.beginPath();
context.setLineWidth(opts.legend.borderWidth * opts.pix);
context.setStrokeStyle(opts.legend.borderColor);
context.setFillStyle(opts.legend.backgroundColor);
context.moveTo(legendArea.start.x, legendArea.start.y);
context.rect(legendArea.start.x, legendArea.start.y, legendArea.width, legendArea.height);
context.closePath();
context.fill();
context.stroke();
legendList.forEach(function (itemList, listIndex) {
var width = 0;
var height = 0;
width = legendData.widthArr[listIndex];
height = legendData.heightArr[listIndex];
var startX = 0;
var startY = 0;
if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {
switch (opts.legend.float) {
case 'left':
startX = legendArea.start.x + padding;
break;
case 'right':
startX = legendArea.start.x + legendArea.width - width;
break;
default:
startX = legendArea.start.x + (legendArea.width - width) / 2;
}
startY = legendArea.start.y + padding + listIndex * lineHeight;
} else {
if (listIndex == 0) {
width = 0;
} else {
width = legendData.widthArr[listIndex - 1];
}
startX = legendArea.start.x + padding + width;
startY = legendArea.start.y + padding + (legendArea.height - height) / 2;
}
context.setFontSize(config.fontSize);
for (var i = 0; i < itemList.length; i++) {
var item = itemList[i];
item.area = [0, 0, 0, 0];
item.area[0] = startX;
item.area[1] = startY;
item.area[3] = startY + lineHeight;
context.beginPath();
context.setLineWidth(1 * opts.pix);
context.setStrokeStyle(item.show ? item.color : opts.legend.hiddenColor);
context.setFillStyle(item.show ? item.color : opts.legend.hiddenColor);
switch (item.legendShape) {
case 'line':
context.moveTo(startX, startY + 0.5 * lineHeight - 2 * opts.pix);
context.fillRect(startX, startY + 0.5 * lineHeight - 2 * opts.pix, 15 * opts.pix, 4 * opts.pix);
break;
case 'triangle':
context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);
context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);
context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);
context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);
break;
case 'diamond':
context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);
context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight);
context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);
context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight);
context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);
break;
case 'circle':
context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight);
context.arc(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight, 5 * opts.pix, 0, 2 * Math.PI);
break;
case 'rect':
context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix);
context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);
break;
case 'square':
context.moveTo(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);
context.fillRect(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix, 10 * opts.pix, 10 * opts.pix);
break;
case 'none':
break;
default:
context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix);
context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);
}
context.closePath();
context.fill();
context.stroke();
startX += shapeWidth + shapeRight;
var fontTrans = 0.5 * lineHeight + 0.5 * fontSize - 2;
var legendText = item.legendText ? item.legendText : item.name;
context.beginPath();
context.setFontSize(fontSize);
context.setFillStyle(item.show ? opts.legend.fontColor : opts.legend.hiddenColor);
context.fillText(legendText, startX, startY + fontTrans);
context.closePath();
context.stroke();
if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {
startX += measureText(legendText, fontSize, context) + itemGap;
item.area[2] = startX;
} else {
item.area[2] = startX + measureText(legendText, fontSize, context) + itemGap;
;
startX -= shapeWidth + shapeRight;
startY += lineHeight;
}
}
});
}
function drawPieDataPoints(series, opts, config, context) {
var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
var pieOption = assign({}, {
activeOpacity: 0.5,
activeRadius: 10,
offsetAngle: 0,
labelWidth: 15,
ringWidth: 30,
customRadius: 0,
border: false,
borderWidth: 2,
borderColor: '#FFFFFF',
centerColor: '#FFFFFF',
linearType: 'none',
customColor: []
}, opts.type == "pie" ? opts.extra.pie : opts.extra.ring);
var centerPosition = {
x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2
};
if (config.pieChartLinePadding == 0) {
config.pieChartLinePadding = pieOption.activeRadius * opts.pix;
}
var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);
radius = radius < 10 ? 10 : radius;
if (pieOption.customRadius > 0) {
radius = pieOption.customRadius * opts.pix;
}
series = getPieDataPoints(series, radius, process);
var activeRadius = pieOption.activeRadius * opts.pix;
pieOption.customColor = fillCustomColor(pieOption.linearType, pieOption.customColor, series, config);
series = series.map(function (eachSeries) {
eachSeries._start_ += pieOption.offsetAngle * Math.PI / 180;
return eachSeries;
});
series.forEach(function (eachSeries, seriesIndex) {
if (opts.tooltip) {
if (opts.tooltip.index == seriesIndex) {
context.beginPath();
context.setFillStyle(hexToRgb(eachSeries.color, pieOption.activeOpacity || 0.5));
context.moveTo(centerPosition.x, centerPosition.y);
context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_ + activeRadius, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI);
context.closePath();
context.fill();
}
}
context.beginPath();
context.setLineWidth(pieOption.borderWidth * opts.pix);
context.lineJoin = "round";
context.setStrokeStyle(pieOption.borderColor);
var fillcolor = eachSeries.color;
if (pieOption.linearType == 'custom') {
var grd;
if (context.createCircularGradient) {
grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_);
} else {
grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0, centerPosition.x, centerPosition.y, eachSeries._radius_);
}
grd.addColorStop(0, hexToRgb(pieOption.customColor[eachSeries.linearIndex], 1));
grd.addColorStop(1, hexToRgb(eachSeries.color, 1));
fillcolor = grd;
}
context.setFillStyle(fillcolor);
context.moveTo(centerPosition.x, centerPosition.y);
context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI);
context.closePath();
context.fill();
if (pieOption.border == true) {
context.stroke();
}
});
if (opts.type === 'ring') {
var innerPieWidth = radius * 0.6;
if (typeof pieOption.ringWidth === 'number' && pieOption.ringWidth > 0) {
innerPieWidth = Math.max(0, radius - pieOption.ringWidth * opts.pix);
}
context.beginPath();
context.setFillStyle(pieOption.centerColor);
context.moveTo(centerPosition.x, centerPosition.y);
context.arc(centerPosition.x, centerPosition.y, innerPieWidth, 0, 2 * Math.PI);
context.closePath();
context.fill();
}
if (opts.dataLabel !== false && process === 1) {
drawPieText(series, opts, config, context, radius, centerPosition);
}
if (process === 1 && opts.type === 'ring') {
drawRingTitle(opts, config, context, centerPosition);
}
return {
center: centerPosition,
radius: radius,
series: series
};
}
function drawRoseDataPoints(series, opts, config, context) {
var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
var roseOption = assign({}, {
type: 'area',
activeOpacity: 0.5,
activeRadius: 10,
offsetAngle: 0,
labelWidth: 15,
border: false,
borderWidth: 2,
borderColor: '#FFFFFF',
linearType: 'none',
customColor: []
}, opts.extra.rose);
if (config.pieChartLinePadding == 0) {
config.pieChartLinePadding = roseOption.activeRadius * opts.pix;
}
var centerPosition = {
x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2
};
var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);
radius = radius < 10 ? 10 : radius;
var minRadius = roseOption.minRadius || radius * 0.5;
if (radius < minRadius) {
radius = minRadius + 10;
}
series = getRoseDataPoints(series, roseOption.type, minRadius, radius, process);
var activeRadius = roseOption.activeRadius * opts.pix;
roseOption.customColor = fillCustomColor(roseOption.linearType, roseOption.customColor, series, config);
series = series.map(function (eachSeries) {
eachSeries._start_ += (roseOption.offsetAngle || 0) * Math.PI / 180;
return eachSeries;
});
series.forEach(function (eachSeries, seriesIndex) {
if (opts.tooltip) {
if (opts.tooltip.index == seriesIndex) {
context.beginPath();
context.setFillStyle(hexToRgb(eachSeries.color, roseOption.activeOpacity || 0.5));
context.moveTo(centerPosition.x, centerPosition.y);
context.arc(centerPosition.x, centerPosition.y, activeRadius + eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI);
context.closePath();
context.fill();
}
}
context.beginPath();
context.setLineWidth(roseOption.borderWidth * opts.pix);
context.lineJoin = "round";
context.setStrokeStyle(roseOption.borderColor);
var fillcolor = eachSeries.color;
if (roseOption.linearType == 'custom') {
var grd;
if (context.createCircularGradient) {
grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_);
} else {
grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0, centerPosition.x, centerPosition.y, eachSeries._radius_);
}
grd.addColorStop(0, hexToRgb(roseOption.customColor[eachSeries.linearIndex], 1));
grd.addColorStop(1, hexToRgb(eachSeries.color, 1));
fillcolor = grd;
}
context.setFillStyle(fillcolor);
context.moveTo(centerPosition.x, centerPosition.y);
context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI);
context.closePath();
context.fill();
if (roseOption.border == true) {
context.stroke();
}
});
if (opts.dataLabel !== false && process === 1) {
drawPieText(series, opts, config, context, radius, centerPosition);
}
return {
center: centerPosition,
radius: radius,
series: series
};
}
function drawArcbarDataPoints(series, opts, config, context) {
var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
var arcbarOption = assign({}, {
startAngle: 0.75,
endAngle: 0.25,
type: 'default',
direction: 'cw',
lineCap: 'round',
width: 12,
gap: 2,
linearType: 'none',
customColor: []
}, opts.extra.arcbar);
series = getArcbarDataPoints(series, arcbarOption, process);
var centerPosition;
if (arcbarOption.centerX || arcbarOption.centerY) {
centerPosition = {
x: arcbarOption.centerX ? arcbarOption.centerX : opts.width / 2,
y: arcbarOption.centerY ? arcbarOption.centerY : opts.height / 2
};
} else {
centerPosition = {
x: opts.width / 2,
y: opts.height / 2
};
}
var radius;
if (arcbarOption.radius) {
radius = arcbarOption.radius;
} else {
radius = Math.min(centerPosition.x, centerPosition.y);
radius -= 5 * opts.pix;
radius -= arcbarOption.width / 2;
}
radius = radius < 10 ? 10 : radius;
arcbarOption.customColor = fillCustomColor(arcbarOption.linearType, arcbarOption.customColor, series, config);
for (var i = 0; i < series.length; i++) {
var eachSeries = series[i];
//背景颜色
context.setLineWidth(arcbarOption.width * opts.pix);
context.setStrokeStyle(arcbarOption.backgroundColor || '#E9E9E9');
context.setLineCap(arcbarOption.lineCap);
context.beginPath();
if (arcbarOption.type == 'default') {
context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, arcbarOption.endAngle * Math.PI, arcbarOption.direction == 'ccw');
} else {
context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, 0, 2 * Math.PI, arcbarOption.direction == 'ccw');
}
context.stroke();
//进度条
var fillColor = eachSeries.color;
if (arcbarOption.linearType == 'custom') {
var grd = context.createLinearGradient(centerPosition.x - radius, centerPosition.y, centerPosition.x + radius, centerPosition.y);
grd.addColorStop(1, hexToRgb(arcbarOption.customColor[eachSeries.linearIndex], 1));
grd.addColorStop(0, hexToRgb(eachSeries.color, 1));
fillColor = grd;
}
context.setLineWidth(arcbarOption.width * opts.pix);
context.setStrokeStyle(fillColor);
context.setLineCap(arcbarOption.lineCap);
context.beginPath();
context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, eachSeries._proportion_ * Math.PI, arcbarOption.direction == 'ccw');
context.stroke();
}
drawRingTitle(opts, config, context, centerPosition);
return {
center: centerPosition,
radius: radius,
series: series
};
}
function drawGaugeDataPoints(categories, series, opts, config, context) {
var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;
var gaugeOption = assign({}, {
type: 'default',
startAngle: 0.75,
endAngle: 0.25,
width: 15,
labelOffset: 13,
splitLine: {
fixRadius: 0,
splitNumber: 10,
width: 15,
color: '#FFFFFF',
childNumber: 5,
childWidth: 5
},
pointer: {
width: 15,
color: 'auto'
}
}, opts.extra.gauge);
if (gaugeOption.oldAngle == undefined) {
gaugeOption.oldAngle = gaugeOption.startAngle;
}
if (gaugeOption.oldData == undefined) {
gaugeOption.oldData = 0;
}
categories = getGaugeAxisPoints(categories, gaugeOption.startAngle, gaugeOption.endAngle);
var centerPosition = {
x: opts.width / 2,
y: opts.height / 2
};
var radius = Math.min(centerPosition.x, centerPosition.y);
radius -= 5 * opts.pix;
radius -= gaugeOption.width / 2;
radius = radius < 10 ? 10 : radius;
var innerRadius = radius - gaugeOption.width;
var totalAngle = 0;
//判断仪表盘的样式default百度样式progress新样式
if (gaugeOption.type == 'progress') {
//## 第一步画中心圆形背景和进度条背景
//中心圆形背景
var pieRadius = radius - gaugeOption.width * 3;
context.beginPath();
var gradient = context.createLinearGradient(centerPosition.x, centerPosition.y - pieRadius, centerPosition.x, centerPosition.y + pieRadius);
//配置渐变填充(起点:中心点向上减半径;结束点中心点向下加半径)
gradient.addColorStop('0', hexToRgb(series[0].color, 0.3));
gradient.addColorStop('1.0', hexToRgb("#FFFFFF", 0.1));
context.setFillStyle(gradient);
context.arc(centerPosition.x, centerPosition.y, pieRadius, 0, 2 * Math.PI, false);
context.fill();
//画进度条背景
context.setLineWidth(gaugeOption.width);
context.setStrokeStyle(hexToRgb(series[0].color, 0.3));
context.setLineCap('round');
context.beginPath();
context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, gaugeOption.endAngle * Math.PI, false);
context.stroke();
//## 第二步画刻度线
if (gaugeOption.endAngle < gaugeOption.startAngle) {
totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle;
} else {
totalAngle = gaugeOption.startAngle - gaugeOption.endAngle;
}
var splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;
var childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;
var startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;
var endX = -radius - gaugeOption.width - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;
context.save();
context.translate(centerPosition.x, centerPosition.y);
context.rotate((gaugeOption.startAngle - 1) * Math.PI);
var len = gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1;
var proc = series[0].data * process;
for (var i = 0; i < len; i++) {
context.beginPath();
//刻度线随进度变色
if (proc > i / len) {
context.setStrokeStyle(hexToRgb(series[0].color, 1));
} else {
context.setStrokeStyle(hexToRgb(series[0].color, 0.3));
}
context.setLineWidth(3 * opts.pix);
context.moveTo(startX, 0);
context.lineTo(endX, 0);
context.stroke();
context.rotate(childAngle * Math.PI);
}
context.restore();
//## 第三步画进度条
series = getGaugeArcbarDataPoints(series, gaugeOption, process);
context.setLineWidth(gaugeOption.width);
context.setStrokeStyle(series[0].color);
context.setLineCap('round');
context.beginPath();
context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, series[0]._proportion_ * Math.PI, false);
context.stroke();
//## 第四步画指针
var pointerRadius = radius - gaugeOption.width * 2.5;
context.save();
context.translate(centerPosition.x, centerPosition.y);
context.rotate((series[0]._proportion_ - 1) * Math.PI);
context.beginPath();
context.setLineWidth(gaugeOption.width / 3);
var gradient3 = context.createLinearGradient(0, -pointerRadius * 0.6, 0, pointerRadius * 0.6);
gradient3.addColorStop('0', hexToRgb('#FFFFFF', 0));
gradient3.addColorStop('0.5', hexToRgb(series[0].color, 1));
gradient3.addColorStop('1.0', hexToRgb('#FFFFFF', 0));
context.setStrokeStyle(gradient3);
context.arc(0, 0, pointerRadius, 0.85 * Math.PI, 1.15 * Math.PI, false);
context.stroke();
context.beginPath();
context.setLineWidth(1);
context.setStrokeStyle(series[0].color);
context.setFillStyle(series[0].color);
context.moveTo(-pointerRadius - gaugeOption.width / 3 / 2, -4);
context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2 - 4, 0);
context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, 4);
context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, -4);
context.stroke();
context.fill();
context.restore();
//default百度样式
} else {
//画背景
context.setLineWidth(gaugeOption.width);
context.setLineCap('butt');
for (var _i26 = 0; _i26 < categories.length; _i26++) {
var eachCategories = categories[_i26];
context.beginPath();
context.setStrokeStyle(eachCategories.color);
context.arc(centerPosition.x, centerPosition.y, radius, eachCategories._startAngle_ * Math.PI, eachCategories._endAngle_ * Math.PI, false);
context.stroke();
}
context.save();
//画刻度线
if (gaugeOption.endAngle < gaugeOption.startAngle) {
totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle;
} else {
totalAngle = gaugeOption.startAngle - gaugeOption.endAngle;
}
var _splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;
var _childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;
var _startX2 = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;
var _endX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;
var childendX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.childWidth;
context.translate(centerPosition.x, centerPosition.y);
context.rotate((gaugeOption.startAngle - 1) * Math.PI);
for (var _i27 = 0; _i27 < gaugeOption.splitLine.splitNumber + 1; _i27++) {
context.beginPath();
context.setStrokeStyle(gaugeOption.splitLine.color);
context.setLineWidth(2 * opts.pix);
context.moveTo(_startX2, 0);
context.lineTo(_endX, 0);
context.stroke();
context.rotate(_splitAngle * Math.PI);
}
context.restore();
context.save();
context.translate(centerPosition.x, centerPosition.y);
context.rotate((gaugeOption.startAngle - 1) * Math.PI);
for (var _i28 = 0; _i28 < gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; _i28++) {
context.beginPath();
context.setStrokeStyle(gaugeOption.splitLine.color);
context.setLineWidth(1 * opts.pix);
context.moveTo(_startX2, 0);
context.lineTo(childendX, 0);
context.stroke();
context.rotate(_childAngle * Math.PI);
}
context.restore();
//画指针
series = getGaugeDataPoints(series, categories, gaugeOption, process);
for (var _i29 = 0; _i29 < series.length; _i29++) {
var eachSeries = series[_i29];
context.save();
context.translate(centerPosition.x, centerPosition.y);
context.rotate((eachSeries._proportion_ - 1) * Math.PI);
context.beginPath();
context.setFillStyle(eachSeries.color);
context.moveTo(gaugeOption.pointer.width, 0);
context.lineTo(0, -gaugeOption.pointer.width / 2);
context.lineTo(-innerRadius, 0);
context.lineTo(0, gaugeOption.pointer.width / 2);
context.lineTo(gaugeOption.pointer.width, 0);
context.closePath();
context.fill();
context.beginPath();
context.setFillStyle('#FFFFFF');
context.arc(0, 0, gaugeOption.pointer.width / 6, 0, 2 * Math.PI, false);
context.fill();
context.restore();
}
if (opts.dataLabel !== false) {
drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context);
}
}
//画仪表盘标题,副标题
drawRingTitle(opts, config, context, centerPosition);
if (process === 1 && opts.type === 'gauge') {
opts.extra.gauge.oldAngle = series[0]._proportion_;
opts.extra.gauge.oldData = series[0].data;
}
return {
center: centerPosition,
radius: radius,
innerRadius: innerRadius,
categories: categories,
totalAngle: totalAngle
};
}
function drawRadarDataPoints(series, opts, config, context) {
var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
var radarOption = assign({}, {
gridColor: '#cccccc',
gridType: 'radar',
gridEval: 1,
axisLabel: false,
axisLabelTofix: 0,
labelShow: true,
labelColor: '#666666',
labelPointShow: false,
labelPointRadius: 3,
labelPointColor: '#cccccc',
opacity: 0.2,
gridCount: 3,
border: false,
borderWidth: 2,
linearType: 'none',
customColor: []
}, opts.extra.radar);
var coordinateAngle = getRadarCoordinateSeries(opts.categories.length);
var centerPosition = {
x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2
};
var xr = (opts.width - opts.area[1] - opts.area[3]) / 2;
var yr = (opts.height - opts.area[0] - opts.area[2]) / 2;
var radius = Math.min(xr - (getMaxTextListLength(opts.categories, config.fontSize, context) + config.radarLabelTextMargin), yr - config.radarLabelTextMargin);
radius -= config.radarLabelTextMargin * opts.pix;
radius = radius < 10 ? 10 : radius;
radius = radarOption.radius ? radarOption.radius : radius;
// 画分割线
context.beginPath();
context.setLineWidth(1 * opts.pix);
context.setStrokeStyle(radarOption.gridColor);
coordinateAngle.forEach(function (angle, index) {
var pos = convertCoordinateOrigin(radius * Math.cos(angle), radius * Math.sin(angle), centerPosition);
context.moveTo(centerPosition.x, centerPosition.y);
if (index % radarOption.gridEval == 0) {
context.lineTo(pos.x, pos.y);
}
});
context.stroke();
context.closePath();
// 画背景网格
var _loop = function _loop(i) {
var startPos = {};
context.beginPath();
context.setLineWidth(1 * opts.pix);
context.setStrokeStyle(radarOption.gridColor);
if (radarOption.gridType == 'radar') {
coordinateAngle.forEach(function (angle, index) {
var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(angle), radius / radarOption.gridCount * i * Math.sin(angle), centerPosition);
if (index === 0) {
startPos = pos;
context.moveTo(pos.x, pos.y);
} else {
context.lineTo(pos.x, pos.y);
}
});
context.lineTo(startPos.x, startPos.y);
} else {
var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(1.5), radius / radarOption.gridCount * i * Math.sin(1.5), centerPosition);
context.arc(centerPosition.x, centerPosition.y, centerPosition.y - pos.y, 0, 2 * Math.PI, false);
}
context.stroke();
context.closePath();
};
for (var i = 1; i <= radarOption.gridCount; i++) {
_loop(i);
}
radarOption.customColor = fillCustomColor(radarOption.linearType, radarOption.customColor, series, config);
var radarDataPoints = getRadarDataPoints(coordinateAngle, centerPosition, radius, series, opts, process);
radarDataPoints.forEach(function (eachSeries, seriesIndex) {
// 绘制区域数据
context.beginPath();
context.setLineWidth(radarOption.borderWidth * opts.pix);
context.setStrokeStyle(eachSeries.color);
var fillcolor = hexToRgb(eachSeries.color, radarOption.opacity);
if (radarOption.linearType == 'custom') {
var grd;
if (context.createCircularGradient) {
grd = context.createCircularGradient(centerPosition.x, centerPosition.y, radius);
} else {
grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0, centerPosition.x, centerPosition.y, radius);
}
grd.addColorStop(0, hexToRgb(radarOption.customColor[series[seriesIndex].linearIndex], radarOption.opacity));
grd.addColorStop(1, hexToRgb(eachSeries.color, radarOption.opacity));
fillcolor = grd;
}
context.setFillStyle(fillcolor);
eachSeries.data.forEach(function (item, index) {
if (index === 0) {
context.moveTo(item.position.x, item.position.y);
} else {
context.lineTo(item.position.x, item.position.y);
}
});
context.closePath();
context.fill();
if (radarOption.border === true) {
context.stroke();
}
context.closePath();
if (opts.dataPointShape !== false) {
var points = eachSeries.data.map(function (item) {
return item.position;
});
drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);
}
});
// 画刻度值
if (radarOption.axisLabel === true) {
var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series)));
var stepLength = radius / radarOption.gridCount;
var fontSize = opts.fontSize * opts.pix;
context.setFontSize(fontSize);
context.setFillStyle(opts.fontColor);
context.setTextAlign('left');
for (var i = 0; i < radarOption.gridCount + 1; i++) {
var label = i * maxData / radarOption.gridCount;
label = label.toFixed(radarOption.axisLabelTofix);
context.fillText(String(label), centerPosition.x + 3 * opts.pix, centerPosition.y - i * stepLength + fontSize / 2);
}
}
// draw label text
drawRadarLabel(coordinateAngle, radius, centerPosition, opts, config, context);
// draw dataLabel
if (opts.dataLabel !== false && process === 1) {
radarDataPoints.forEach(function (eachSeries, seriesIndex) {
context.beginPath();
var fontSize = eachSeries.textSize * opts.pix || config.fontSize;
context.setFontSize(fontSize);
context.setFillStyle(eachSeries.textColor || opts.fontColor);
eachSeries.data.forEach(function (item, index) {
//如果是中心点垂直的上下点位
if (Math.abs(item.position.x - centerPosition.x) < 2) {
//如果在上面
if (item.position.y < centerPosition.y) {
context.setTextAlign('center');
context.fillText(item.value, item.position.x, item.position.y - 4);
} else {
context.setTextAlign('center');
context.fillText(item.value, item.position.x, item.position.y + fontSize + 2);
}
} else {
//如果在左侧
if (item.position.x < centerPosition.x) {
context.setTextAlign('right');
context.fillText(item.value, item.position.x - 4, item.position.y + fontSize / 2 - 2);
} else {
context.setTextAlign('left');
context.fillText(item.value, item.position.x + 4, item.position.y + fontSize / 2 - 2);
}
}
});
context.closePath();
context.stroke();
});
context.setTextAlign('left');
}
return {
center: centerPosition,
radius: radius,
angleList: coordinateAngle
};
}
// 经纬度转墨卡托
function lonlat2mercator(longitude, latitude) {
var mercator = Array(2);
var x = longitude * 20037508.34 / 180;
var y = Math.log(Math.tan((90 + latitude) * Math.PI / 360)) / (Math.PI / 180);
y = y * 20037508.34 / 180;
mercator[0] = x;
mercator[1] = y;
return mercator;
}
// 墨卡托转经纬度
function mercator2lonlat(longitude, latitude) {
var lonlat = Array(2);
var x = longitude / 20037508.34 * 180;
var y = latitude / 20037508.34 * 180;
y = 180 / Math.PI * (2 * Math.atan(Math.exp(y * Math.PI / 180)) - Math.PI / 2);
lonlat[0] = x;
lonlat[1] = y;
return lonlat;
}
function getBoundingBox(data) {
var bounds = {},
coords;
bounds.xMin = 180;
bounds.xMax = 0;
bounds.yMin = 90;
bounds.yMax = 0;
for (var i = 0; i < data.length; i++) {
var coorda = data[i].geometry.coordinates;
for (var k = 0; k < coorda.length; k++) {
coords = coorda[k];
if (coords.length == 1) {
coords = coords[0];
}
for (var j = 0; j < coords.length; j++) {
var longitude = coords[j][0];
var latitude = coords[j][1];
var point = {
x: longitude,
y: latitude
};
bounds.xMin = bounds.xMin < point.x ? bounds.xMin : point.x;
bounds.xMax = bounds.xMax > point.x ? bounds.xMax : point.x;
bounds.yMin = bounds.yMin < point.y ? bounds.yMin : point.y;
bounds.yMax = bounds.yMax > point.y ? bounds.yMax : point.y;
}
}
}
return bounds;
}
function coordinateToPoint(latitude, longitude, bounds, scale, xoffset, yoffset) {
return {
x: (longitude - bounds.xMin) * scale + xoffset,
y: (bounds.yMax - latitude) * scale + yoffset
};
}
function pointToCoordinate(pointY, pointX, bounds, scale, xoffset, yoffset) {
return {
x: (pointX - xoffset) / scale + bounds.xMin,
y: bounds.yMax - (pointY - yoffset) / scale
};
}
function isRayIntersectsSegment(poi, s_poi, e_poi) {
if (s_poi[1] == e_poi[1]) {
return false;
}
if (s_poi[1] > poi[1] && e_poi[1] > poi[1]) {
return false;
}
if (s_poi[1] < poi[1] && e_poi[1] < poi[1]) {
return false;
}
if (s_poi[1] == poi[1] && e_poi[1] > poi[1]) {
return false;
}
if (e_poi[1] == poi[1] && s_poi[1] > poi[1]) {
return false;
}
if (s_poi[0] < poi[0] && e_poi[1] < poi[1]) {
return false;
}
var xseg = e_poi[0] - (e_poi[0] - s_poi[0]) * (e_poi[1] - poi[1]) / (e_poi[1] - s_poi[1]);
if (xseg < poi[0]) {
return false;
} else {
return true;
}
}
function isPoiWithinPoly(poi, poly, mercator) {
var sinsc = 0;
for (var i = 0; i < poly.length; i++) {
var epoly = poly[i][0];
if (poly.length == 1) {
epoly = poly[i][0];
}
for (var j = 0; j < epoly.length - 1; j++) {
var s_poi = epoly[j];
var e_poi = epoly[j + 1];
if (mercator) {
s_poi = lonlat2mercator(epoly[j][0], epoly[j][1]);
e_poi = lonlat2mercator(epoly[j + 1][0], epoly[j + 1][1]);
}
if (isRayIntersectsSegment(poi, s_poi, e_poi)) {
sinsc += 1;
}
}
}
if (sinsc % 2 == 1) {
return true;
} else {
return false;
}
}
function drawMapDataPoints(series, opts, config, context) {
var mapOption = assign({}, {
border: true,
mercator: false,
borderWidth: 1,
active: true,
borderColor: '#666666',
fillOpacity: 0.6,
activeBorderColor: '#f04864',
activeFillColor: '#facc14',
activeFillOpacity: 1
}, opts.extra.map);
var coords, point;
var data = series;
var bounds = getBoundingBox(data);
if (mapOption.mercator) {
var max = lonlat2mercator(bounds.xMax, bounds.yMax);
var min = lonlat2mercator(bounds.xMin, bounds.yMin);
bounds.xMax = max[0];
bounds.yMax = max[1];
bounds.xMin = min[0];
bounds.yMin = min[1];
}
var xScale = opts.width / Math.abs(bounds.xMax - bounds.xMin);
var yScale = opts.height / Math.abs(bounds.yMax - bounds.yMin);
var scale = xScale < yScale ? xScale : yScale;
var xoffset = opts.width / 2 - Math.abs(bounds.xMax - bounds.xMin) / 2 * scale;
var yoffset = opts.height / 2 - Math.abs(bounds.yMax - bounds.yMin) / 2 * scale;
for (var i = 0; i < data.length; i++) {
context.beginPath();
context.setLineWidth(mapOption.borderWidth * opts.pix);
context.setStrokeStyle(mapOption.borderColor);
context.setFillStyle(hexToRgb(series[i].color, series[i].fillOpacity || mapOption.fillOpacity));
if (mapOption.active == true && opts.tooltip) {
if (opts.tooltip.index == i) {
context.setStrokeStyle(mapOption.activeBorderColor);
context.setFillStyle(hexToRgb(mapOption.activeFillColor, mapOption.activeFillOpacity));
}
}
var coorda = data[i].geometry.coordinates;
for (var k = 0; k < coorda.length; k++) {
coords = coorda[k];
if (coords.length == 1) {
coords = coords[0];
}
for (var j = 0; j < coords.length; j++) {
var gaosi = Array(2);
if (mapOption.mercator) {
gaosi = lonlat2mercator(coords[j][0], coords[j][1]);
} else {
gaosi = coords[j];
}
point = coordinateToPoint(gaosi[1], gaosi[0], bounds, scale, xoffset, yoffset);
if (j === 0) {
context.beginPath();
context.moveTo(point.x, point.y);
} else {
context.lineTo(point.x, point.y);
}
}
context.fill();
if (mapOption.border == true) {
context.stroke();
}
}
}
if (opts.dataLabel == true) {
for (var i = 0; i < data.length; i++) {
var centerPoint = data[i].properties.centroid;
if (centerPoint) {
if (mapOption.mercator) {
centerPoint = lonlat2mercator(data[i].properties.centroid[0], data[i].properties.centroid[1]);
}
point = coordinateToPoint(centerPoint[1], centerPoint[0], bounds, scale, xoffset, yoffset);
var fontSize = data[i].textSize * opts.pix || config.fontSize;
var fontColor = data[i].textColor || opts.fontColor;
if (mapOption.active && mapOption.activeTextColor && opts.tooltip && opts.tooltip.index == i) {
fontColor = mapOption.activeTextColor;
}
var text = data[i].properties.name;
context.beginPath();
context.setFontSize(fontSize);
context.setFillStyle(fontColor);
context.fillText(text, point.x - measureText(text, fontSize, context) / 2, point.y + fontSize / 2);
context.closePath();
context.stroke();
}
}
}
opts.chartData.mapData = {
bounds: bounds,
scale: scale,
xoffset: xoffset,
yoffset: yoffset,
mercator: mapOption.mercator
};
drawToolTipBridge(opts, config, context, 1);
context.draw();
}
function normalInt(min, max, iter) {
iter = iter == 0 ? 1 : iter;
var arr = [];
for (var i = 0; i < iter; i++) {
arr[i] = Math.random();
}
;
return Math.floor(arr.reduce(function (i, j) {
return i + j;
}) / iter * (max - min)) + min;
}
;
function collisionNew(area, points, width, height) {
var isIn = false;
for (var i = 0; i < points.length; i++) {
if (points[i].area) {
if (area[3] < points[i].area[1] || area[0] > points[i].area[2] || area[1] > points[i].area[3] || area[2] < points[i].area[0]) {
if (area[0] < 0 || area[1] < 0 || area[2] > width || area[3] > height) {
isIn = true;
break;
} else {
isIn = false;
}
} else {
isIn = true;
break;
}
}
}
return isIn;
}
;
function getWordCloudPoint(opts, type, context) {
var points = opts.series;
switch (type) {
case 'normal':
for (var i = 0; i < points.length; i++) {
var text = points[i].name;
var tHeight = points[i].textSize * opts.pix;
var tWidth = measureText(text, tHeight, context);
var x = void 0,
y = void 0;
var area = void 0;
var breaknum = 0;
while (true) {
breaknum++;
x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2;
y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2;
area = [x - 5 + opts.width / 2, y - 5 - tHeight + opts.height / 2, x + tWidth + 5 + opts.width / 2, y + 5 + opts.height / 2];
var isCollision = collisionNew(area, points, opts.width, opts.height);
if (!isCollision) break;
if (breaknum == 1000) {
area = [-100, -100, -100, -100];
break;
}
}
;
points[i].area = area;
}
break;
case 'vertical':
var Spin = function Spin() {
//获取均匀随机值是否旋转旋转的概率为1-0.5
if (Math.random() > 0.7) {
return true;
} else {
return false;
}
;
};
;
for (var _i30 = 0; _i30 < points.length; _i30++) {
var _text = points[_i30].name;
var _tHeight = points[_i30].textSize * opts.pix;
var _tWidth = measureText(_text, _tHeight, context);
var isSpin = Spin();
var _x = void 0,
_y = void 0,
_area = void 0,
areav = void 0;
var _breaknum = 0;
while (true) {
_breaknum++;
var _isCollision = void 0;
if (isSpin) {
_x = normalInt(-opts.width / 2, opts.width / 2, 5) - _tWidth / 2;
_y = normalInt(-opts.height / 2, opts.height / 2, 5) + _tHeight / 2;
_area = [_y - 5 - _tWidth + opts.width / 2, -_x - 5 + opts.height / 2, _y + 5 + opts.width / 2, -_x + _tHeight + 5 + opts.height / 2];
areav = [opts.width - (opts.width / 2 - opts.height / 2) - (-_x + _tHeight + 5 + opts.height / 2) - 5, opts.height / 2 - opts.width / 2 + (_y - 5 - _tWidth + opts.width / 2) - 5, opts.width - (opts.width / 2 - opts.height / 2) - (-_x + _tHeight + 5 + opts.height / 2) + _tHeight, opts.height / 2 - opts.width / 2 + (_y - 5 - _tWidth + opts.width / 2) + _tWidth + 5];
_isCollision = collisionNew(areav, points, opts.height, opts.width);
} else {
_x = normalInt(-opts.width / 2, opts.width / 2, 5) - _tWidth / 2;
_y = normalInt(-opts.height / 2, opts.height / 2, 5) + _tHeight / 2;
_area = [_x - 5 + opts.width / 2, _y - 5 - _tHeight + opts.height / 2, _x + _tWidth + 5 + opts.width / 2, _y + 5 + opts.height / 2];
_isCollision = collisionNew(_area, points, opts.width, opts.height);
}
if (!_isCollision) break;
if (_breaknum == 1000) {
_area = [-1000, -1000, -1000, -1000];
break;
}
}
;
if (isSpin) {
points[_i30].area = areav;
points[_i30].areav = _area;
} else {
points[_i30].area = _area;
}
points[_i30].rotate = isSpin;
}
;
break;
}
return points;
}
function drawWordCloudDataPoints(series, opts, config, context) {
var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
var wordOption = assign({}, {
type: 'normal',
autoColors: true
}, opts.extra.word);
if (!opts.chartData.wordCloudData) {
opts.chartData.wordCloudData = getWordCloudPoint(opts, wordOption.type, context);
}
context.beginPath();
context.setFillStyle(opts.background);
context.rect(0, 0, opts.width, opts.height);
context.fill();
context.save();
var points = opts.chartData.wordCloudData;
context.translate(opts.width / 2, opts.height / 2);
for (var i = 0; i < points.length; i++) {
context.save();
if (points[i].rotate) {
context.rotate(90 * Math.PI / 180);
}
var text = points[i].name;
var tHeight = points[i].textSize * opts.pix;
var tWidth = measureText(text, tHeight, context);
context.beginPath();
context.setStrokeStyle(points[i].color);
context.setFillStyle(points[i].color);
context.setFontSize(tHeight);
if (points[i].rotate) {
if (points[i].areav[0] > 0) {
if (opts.tooltip) {
if (opts.tooltip.index == i) {
context.strokeText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);
} else {
context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);
}
} else {
context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);
}
}
} else {
if (points[i].area[0] > 0) {
if (opts.tooltip) {
if (opts.tooltip.index == i) {
context.strokeText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);
} else {
context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);
}
} else {
context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);
}
}
}
context.stroke();
context.restore();
}
context.restore();
}
function drawFunnelDataPoints(series, opts, config, context) {
var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;
var funnelOption = assign({}, {
type: 'funnel',
activeWidth: 10,
activeOpacity: 0.3,
border: false,
borderWidth: 2,
borderColor: '#FFFFFF',
fillOpacity: 1,
minSize: 0,
labelAlign: 'right',
linearType: 'none',
customColor: []
}, opts.extra.funnel);
var eachSpacing = (opts.height - opts.area[0] - opts.area[2]) / series.length;
var centerPosition = {
x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,
y: opts.height - opts.area[2]
};
var activeWidth = funnelOption.activeWidth * opts.pix;
var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - activeWidth, (opts.height - opts.area[0] - opts.area[2]) / 2 - activeWidth);
var seriesNew = getFunnelDataPoints(series, radius, funnelOption, eachSpacing, process);
context.save();
context.translate(centerPosition.x, centerPosition.y);
funnelOption.customColor = fillCustomColor(funnelOption.linearType, funnelOption.customColor, series, config);
if (funnelOption.type == 'pyramid') {
for (var i = 0; i < seriesNew.length; i++) {
if (i == seriesNew.length - 1) {
if (opts.tooltip) {
if (opts.tooltip.index == i) {
context.beginPath();
context.setFillStyle(hexToRgb(seriesNew[i].color, funnelOption.activeOpacity));
context.moveTo(-activeWidth, -eachSpacing);
context.lineTo(-seriesNew[i].radius - activeWidth, 0);
context.lineTo(seriesNew[i].radius + activeWidth, 0);
context.lineTo(activeWidth, -eachSpacing);
context.lineTo(-activeWidth, -eachSpacing);
context.closePath();
context.fill();
}
}
seriesNew[i].funnelArea = [centerPosition.x - seriesNew[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + seriesNew[i].radius, centerPosition.y - eachSpacing * i];
context.beginPath();
context.setLineWidth(funnelOption.borderWidth * opts.pix);
context.setStrokeStyle(funnelOption.borderColor);
var fillColor = hexToRgb(seriesNew[i].color, funnelOption.fillOpacity);
if (funnelOption.linearType == 'custom') {
var grd = context.createLinearGradient(seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, -eachSpacing);
grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity));
grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity));
grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity));
fillColor = grd;
}
context.setFillStyle(fillColor);
context.moveTo(0, -eachSpacing);
context.lineTo(-seriesNew[i].radius, 0);
context.lineTo(seriesNew[i].radius, 0);
context.lineTo(0, -eachSpacing);
context.closePath();
context.fill();
if (funnelOption.border == true) {
context.stroke();
}
} else {
if (opts.tooltip) {
if (opts.tooltip.index == i) {
context.beginPath();
context.setFillStyle(hexToRgb(seriesNew[i].color, funnelOption.activeOpacity));
context.moveTo(0, 0);
context.lineTo(-seriesNew[i].radius - activeWidth, 0);
context.lineTo(-seriesNew[i + 1].radius - activeWidth, -eachSpacing);
context.lineTo(seriesNew[i + 1].radius + activeWidth, -eachSpacing);
context.lineTo(seriesNew[i].radius + activeWidth, 0);
context.lineTo(0, 0);
context.closePath();
context.fill();
}
}
seriesNew[i].funnelArea = [centerPosition.x - seriesNew[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + seriesNew[i].radius, centerPosition.y - eachSpacing * i];
context.beginPath();
context.setLineWidth(funnelOption.borderWidth * opts.pix);
context.setStrokeStyle(funnelOption.borderColor);
var fillColor = hexToRgb(seriesNew[i].color, funnelOption.fillOpacity);
if (funnelOption.linearType == 'custom') {
var grd = context.createLinearGradient(seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, -eachSpacing);
grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity));
grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity));
grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity));
fillColor = grd;
}
context.setFillStyle(fillColor);
context.moveTo(0, 0);
context.lineTo(-seriesNew[i].radius, 0);
context.lineTo(-seriesNew[i + 1].radius, -eachSpacing);
context.lineTo(seriesNew[i + 1].radius, -eachSpacing);
context.lineTo(seriesNew[i].radius, 0);
context.lineTo(0, 0);
context.closePath();
context.fill();
if (funnelOption.border == true) {
context.stroke();
}
}
context.translate(0, -eachSpacing);
}
} else {
context.translate(0, -(seriesNew.length - 1) * eachSpacing);
for (var _i31 = 0; _i31 < seriesNew.length; _i31++) {
if (_i31 == seriesNew.length - 1) {
if (opts.tooltip) {
if (opts.tooltip.index == _i31) {
context.beginPath();
context.setFillStyle(hexToRgb(seriesNew[_i31].color, funnelOption.activeOpacity));
context.moveTo(-activeWidth - funnelOption.minSize / 2, 0);
context.lineTo(-seriesNew[_i31].radius - activeWidth, -eachSpacing);
context.lineTo(seriesNew[_i31].radius + activeWidth, -eachSpacing);
context.lineTo(activeWidth + funnelOption.minSize / 2, 0);
context.lineTo(-activeWidth - funnelOption.minSize / 2, 0);
context.closePath();
context.fill();
}
}
seriesNew[_i31].funnelArea = [centerPosition.x - seriesNew[_i31].radius, centerPosition.y - eachSpacing, centerPosition.x + seriesNew[_i31].radius, centerPosition.y];
context.beginPath();
context.setLineWidth(funnelOption.borderWidth * opts.pix);
context.setStrokeStyle(funnelOption.borderColor);
var fillColor = hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity);
if (funnelOption.linearType == 'custom') {
var grd = context.createLinearGradient(seriesNew[_i31].radius, -eachSpacing, -seriesNew[_i31].radius, -eachSpacing);
grd.addColorStop(0, hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity));
grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[_i31].linearIndex], funnelOption.fillOpacity));
grd.addColorStop(1, hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity));
fillColor = grd;
}
context.setFillStyle(fillColor);
context.moveTo(0, 0);
context.lineTo(-funnelOption.minSize / 2, 0);
context.lineTo(-seriesNew[_i31].radius, -eachSpacing);
context.lineTo(seriesNew[_i31].radius, -eachSpacing);
context.lineTo(funnelOption.minSize / 2, 0);
context.lineTo(0, 0);
context.closePath();
context.fill();
if (funnelOption.border == true) {
context.stroke();
}
} else {
if (opts.tooltip) {
if (opts.tooltip.index == _i31) {
context.beginPath();
context.setFillStyle(hexToRgb(seriesNew[_i31].color, funnelOption.activeOpacity));
context.moveTo(0, 0);
context.lineTo(-seriesNew[_i31 + 1].radius - activeWidth, 0);
context.lineTo(-seriesNew[_i31].radius - activeWidth, -eachSpacing);
context.lineTo(seriesNew[_i31].radius + activeWidth, -eachSpacing);
context.lineTo(seriesNew[_i31 + 1].radius + activeWidth, 0);
context.lineTo(0, 0);
context.closePath();
context.fill();
}
}
seriesNew[_i31].funnelArea = [centerPosition.x - seriesNew[_i31].radius, centerPosition.y - eachSpacing * (seriesNew.length - _i31), centerPosition.x + seriesNew[_i31].radius, centerPosition.y - eachSpacing * (seriesNew.length - _i31 - 1)];
context.beginPath();
context.setLineWidth(funnelOption.borderWidth * opts.pix);
context.setStrokeStyle(funnelOption.borderColor);
var fillColor = hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity);
if (funnelOption.linearType == 'custom') {
var grd = context.createLinearGradient(seriesNew[_i31].radius, -eachSpacing, -seriesNew[_i31].radius, -eachSpacing);
grd.addColorStop(0, hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity));
grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[_i31].linearIndex], funnelOption.fillOpacity));
grd.addColorStop(1, hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity));
fillColor = grd;
}
context.setFillStyle(fillColor);
context.moveTo(0, 0);
context.lineTo(-seriesNew[_i31 + 1].radius, 0);
context.lineTo(-seriesNew[_i31].radius, -eachSpacing);
context.lineTo(seriesNew[_i31].radius, -eachSpacing);
context.lineTo(seriesNew[_i31 + 1].radius, 0);
context.lineTo(0, 0);
context.closePath();
context.fill();
if (funnelOption.border == true) {
context.stroke();
}
}
context.translate(0, eachSpacing);
}
}
context.restore();
if (opts.dataLabel !== false && process === 1) {
drawFunnelText(seriesNew, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition);
}
if (process === 1) {
drawFunnelCenterText(seriesNew, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition);
}
return {
center: centerPosition,
radius: radius,
series: seriesNew
};
}
function drawFunnelText(series, opts, context, eachSpacing, labelAlign, activeWidth, centerPosition) {
for (var i = 0; i < series.length; i++) {
var item = series[i];
if (item.labelShow === false) {
continue;
}
var startX = void 0,
endX = void 0,
startY = void 0,
fontSize = void 0;
var text = item.formatter ? item.formatter(item, i, series, opts) : util.toFixed(item._proportion_ * 100) + '%';
text = item.labelText ? item.labelText : text;
if (labelAlign == 'right') {
if (i == series.length - 1) {
startX = (item.funnelArea[2] + centerPosition.x) / 2;
} else {
startX = (item.funnelArea[2] + series[i + 1].funnelArea[2]) / 2;
}
endX = startX + activeWidth * 2;
startY = item.funnelArea[1] + eachSpacing / 2;
fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix;
context.setLineWidth(1 * opts.pix);
context.setStrokeStyle(item.color);
context.setFillStyle(item.color);
context.beginPath();
context.moveTo(startX, startY);
context.lineTo(endX, startY);
context.stroke();
context.closePath();
context.beginPath();
context.moveTo(endX, startY);
context.arc(endX, startY, 2 * opts.pix, 0, 2 * Math.PI);
context.closePath();
context.fill();
context.beginPath();
context.setFontSize(fontSize);
context.setFillStyle(item.textColor || opts.fontColor);
context.fillText(text, endX + 5, startY + fontSize / 2 - 2);
context.closePath();
context.stroke();
context.closePath();
}
if (labelAlign == 'left') {
if (i == series.length - 1) {
startX = (item.funnelArea[0] + centerPosition.x) / 2;
} else {
startX = (item.funnelArea[0] + series[i + 1].funnelArea[0]) / 2;
}
endX = startX - activeWidth * 2;
startY = item.funnelArea[1] + eachSpacing / 2;
fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix;
context.setLineWidth(1 * opts.pix);
context.setStrokeStyle(item.color);
context.setFillStyle(item.color);
context.beginPath();
context.moveTo(startX, startY);
context.lineTo(endX, startY);
context.stroke();
context.closePath();
context.beginPath();
context.moveTo(endX, startY);
context.arc(endX, startY, 2, 0, 2 * Math.PI);
context.closePath();
context.fill();
context.beginPath();
context.setFontSize(fontSize);
context.setFillStyle(item.textColor || opts.fontColor);
context.fillText(text, endX - 5 - measureText(text, fontSize, context), startY + fontSize / 2 - 2);
context.closePath();
context.stroke();
context.closePath();
}
}
}
function drawFunnelCenterText(series, opts, context, eachSpacing, labelAlign, activeWidth, centerPosition) {
for (var i = 0; i < series.length; i++) {
var item = series[i];
var startY = void 0,
fontSize = void 0;
if (item.centerText) {
startY = item.funnelArea[1] + eachSpacing / 2;
fontSize = item.centerTextSize * opts.pix || opts.fontSize * opts.pix;
context.beginPath();
context.setFontSize(fontSize);
context.setFillStyle(item.centerTextColor || "#FFFFFF");
context.fillText(item.centerText, centerPosition.x - measureText(item.centerText, fontSize, context) / 2, startY + fontSize / 2 - 2);
context.closePath();
context.stroke();
context.closePath();
}
}
}
function drawCanvas(opts, context) {
context.save();
context.translate(0, 0.5);
context.restore();
context.draw();
}
var Timing = {
easeIn: function easeIn(pos) {
return Math.pow(pos, 3);
},
easeOut: function easeOut(pos) {
return Math.pow(pos - 1, 3) + 1;
},
easeInOut: function easeInOut(pos) {
if ((pos /= 0.5) < 1) {
return 0.5 * Math.pow(pos, 3);
} else {
return 0.5 * (Math.pow(pos - 2, 3) + 2);
}
},
linear: function linear(pos) {
return pos;
}
};
function Animation(opts) {
this.isStop = false;
opts.duration = typeof opts.duration === 'undefined' ? 1000 : opts.duration;
opts.timing = opts.timing || 'easeInOut';
var delay = 17;
function createAnimationFrame() {
if (typeof setTimeout !== 'undefined') {
return function (step, delay) {
setTimeout(function () {
var timeStamp = +new Date();
step(timeStamp);
}, delay);
};
} else if (typeof requestAnimationFrame !== 'undefined') {
return requestAnimationFrame;
} else {
return function (step) {
step(null);
};
}
}
;
var animationFrame = createAnimationFrame();
var startTimeStamp = null;
var _step = function step(timestamp) {
if (timestamp === null || this.isStop === true) {
opts.onProcess && opts.onProcess(1);
opts.onAnimationFinish && opts.onAnimationFinish();
return;
}
if (startTimeStamp === null) {
startTimeStamp = timestamp;
}
if (timestamp - startTimeStamp < opts.duration) {
var process = (timestamp - startTimeStamp) / opts.duration;
var timingFunction = Timing[opts.timing];
process = timingFunction(process);
opts.onProcess && opts.onProcess(process);
animationFrame(_step, delay);
} else {
opts.onProcess && opts.onProcess(1);
opts.onAnimationFinish && opts.onAnimationFinish();
}
};
_step = _step.bind(this);
animationFrame(_step, delay);
}
Animation.prototype.stop = function () {
this.isStop = true;
};
function drawCharts(type, opts, config, context) {
var _this2 = this;
var _this = this;
var series = opts.series;
//兼容ECharts饼图类数据格式
if (type === 'pie' || type === 'ring' || type === 'mount' || type === 'rose' || type === 'funnel') {
series = fixPieSeries(series, opts, config);
}
var categories = opts.categories;
if (type === 'mount') {
categories = [];
for (var j = 0; j < series.length; j++) {
if (series[j].show !== false) categories.push(series[j].name);
}
opts.categories = categories;
}
series = fillSeries(series, opts, config);
var duration = opts.animation ? opts.duration : 0;
_this.animationInstance && _this.animationInstance.stop();
var seriesMA = null;
if (type == 'candle') {
var average = assign({}, opts.extra.candle.average);
if (average.show) {
seriesMA = calCandleMA(average.day, average.name, average.color, series[0].data);
seriesMA = fillSeries(seriesMA, opts, config);
opts.seriesMA = seriesMA;
} else if (opts.seriesMA) {
seriesMA = opts.seriesMA = fillSeries(opts.seriesMA, opts, config);
} else {
seriesMA = series;
}
} else {
seriesMA = series;
}
/* 过滤掉show=false的series */
opts._series_ = series = filterSeries(series);
//重新计算图表区域
opts.area = new Array(4);
//复位绘图区域
for (var _j11 = 0; _j11 < 4; _j11++) {
opts.area[_j11] = opts.padding[_j11] * opts.pix;
}
//通过计算三大区域图例、X轴、Y轴的大小确定绘图区域
var _calLegendData = calLegendData(seriesMA, opts, config, opts.chartData, context),
legendHeight = _calLegendData.area.wholeHeight,
legendWidth = _calLegendData.area.wholeWidth;
switch (opts.legend.position) {
case 'top':
opts.area[0] += legendHeight;
break;
case 'bottom':
opts.area[2] += legendHeight;
break;
case 'left':
opts.area[3] += legendWidth;
break;
case 'right':
opts.area[1] += legendWidth;
break;
}
var _calYAxisData = {},
yAxisWidth = 0;
if (opts.type === 'line' || opts.type === 'column' || opts.type === 'mount' || opts.type === 'area' || opts.type === 'mix' || opts.type === 'candle' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') {
_calYAxisData = calYAxisData(series, opts, config, context);
yAxisWidth = _calYAxisData.yAxisWidth;
//如果显示Y轴标题
if (opts.yAxis.showTitle) {
var maxTitleHeight = 0;
for (var i = 0; i < opts.yAxis.data.length; i++) {
maxTitleHeight = Math.max(maxTitleHeight, opts.yAxis.data[i].titleFontSize ? opts.yAxis.data[i].titleFontSize * opts.pix : config.fontSize);
}
opts.area[0] += maxTitleHeight;
}
var rightIndex = 0,
leftIndex = 0;
//计算主绘图区域左右位置
for (var _i32 = 0; _i32 < yAxisWidth.length; _i32++) {
if (yAxisWidth[_i32].position == 'left') {
if (leftIndex > 0) {
opts.area[3] += yAxisWidth[_i32].width + opts.yAxis.padding * opts.pix;
} else {
opts.area[3] += yAxisWidth[_i32].width;
}
leftIndex += 1;
} else if (yAxisWidth[_i32].position == 'right') {
if (rightIndex > 0) {
opts.area[1] += yAxisWidth[_i32].width + opts.yAxis.padding * opts.pix;
} else {
opts.area[1] += yAxisWidth[_i32].width;
}
rightIndex += 1;
}
}
} else {
config.yAxisWidth = yAxisWidth;
}
opts.chartData.yAxisData = _calYAxisData;
if (opts.categories && opts.categories.length && opts.type !== 'radar' && opts.type !== 'gauge' && opts.type !== 'bar') {
opts.chartData.xAxisData = getXAxisPoints(opts.categories, opts, config);
var _calCategoriesData = calCategoriesData(opts.categories, opts, config, opts.chartData.xAxisData.eachSpacing, context),
xAxisHeight = _calCategoriesData.xAxisHeight,
angle = _calCategoriesData.angle;
config.xAxisHeight = xAxisHeight;
config._xAxisTextAngle_ = angle;
opts.area[2] += xAxisHeight;
opts.chartData.categoriesData = _calCategoriesData;
} else {
if (opts.type === 'line' || opts.type === 'area' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') {
opts.chartData.xAxisData = calXAxisData(series, opts, config, context);
categories = opts.chartData.xAxisData.rangesFormat;
var _calCategoriesData2 = calCategoriesData(categories, opts, config, opts.chartData.xAxisData.eachSpacing, context),
_xAxisHeight = _calCategoriesData2.xAxisHeight,
_angle = _calCategoriesData2.angle;
config.xAxisHeight = _xAxisHeight;
config._xAxisTextAngle_ = _angle;
opts.area[2] += _xAxisHeight;
opts.chartData.categoriesData = _calCategoriesData2;
} else {
opts.chartData.xAxisData = {
xAxisPoints: []
};
}
}
//计算右对齐偏移距离
if (opts.enableScroll && opts.xAxis.scrollAlign == 'right' && opts._scrollDistance_ === undefined) {
var offsetLeft = 0,
xAxisPoints = opts.chartData.xAxisData.xAxisPoints,
startX = opts.chartData.xAxisData.startX,
endX = opts.chartData.xAxisData.endX,
eachSpacing = opts.chartData.xAxisData.eachSpacing;
var totalWidth = eachSpacing * (xAxisPoints.length - 1);
var screenWidth = endX - startX;
offsetLeft = screenWidth - totalWidth;
_this.scrollOption.currentOffset = offsetLeft;
_this.scrollOption.startTouchX = offsetLeft;
_this.scrollOption.distance = 0;
_this.scrollOption.lastMoveTime = 0;
opts._scrollDistance_ = offsetLeft;
}
if (type === 'pie' || type === 'ring' || type === 'rose') {
config._pieTextMaxLength_ = opts.dataLabel === false ? 0 : getPieTextMaxLength(seriesMA, config, context, opts);
}
switch (type) {
case 'word':
this.animationInstance = new Animation({
timing: opts.timing,
duration: duration,
onProcess: function onProcess(process) {
context.clearRect(0, 0, opts.width, opts.height);
if (opts.rotate) {
contextRotate(context, opts);
}
drawWordCloudDataPoints(series, opts, config, context, process);
drawCanvas(opts, context);
},
onAnimationFinish: function onAnimationFinish() {
_this.uevent.trigger('renderComplete');
}
});
break;
case 'map':
context.clearRect(0, 0, opts.width, opts.height);
drawMapDataPoints(series, opts, config, context);
setTimeout(function () {
_this2.uevent.trigger('renderComplete');
}, 50);
break;
case 'funnel':
this.animationInstance = new Animation({
timing: opts.timing,
duration: duration,
onProcess: function onProcess(process) {
context.clearRect(0, 0, opts.width, opts.height);
if (opts.rotate) {
contextRotate(context, opts);
}
opts.chartData.funnelData = drawFunnelDataPoints(series, opts, config, context, process);
drawLegend(opts.series, opts, config, context, opts.chartData);
drawToolTipBridge(opts, config, context, process);
drawCanvas(opts, context);
},
onAnimationFinish: function onAnimationFinish() {
_this.uevent.trigger('renderComplete');
}
});
break;
case 'line':
this.animationInstance = new Animation({
timing: opts.timing,
duration: duration,
onProcess: function onProcess(process) {
context.clearRect(0, 0, opts.width, opts.height);
if (opts.rotate) {
contextRotate(context, opts);
}
drawYAxisGrid(categories, opts, config, context);
drawXAxis(categories, opts, config, context);
var _drawLineDataPoints = drawLineDataPoints(series, opts, config, context, process),
xAxisPoints = _drawLineDataPoints.xAxisPoints,
calPoints = _drawLineDataPoints.calPoints,
eachSpacing = _drawLineDataPoints.eachSpacing;
opts.chartData.xAxisPoints = xAxisPoints;
opts.chartData.calPoints = calPoints;
opts.chartData.eachSpacing = eachSpacing;
drawYAxis(series, opts, config, context);
if (opts.enableMarkLine !== false && process === 1) {
drawMarkLine(opts, config, context);
}
drawLegend(opts.series, opts, config, context, opts.chartData);
drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
drawCanvas(opts, context);
},
onAnimationFinish: function onAnimationFinish() {
_this.uevent.trigger('renderComplete');
}
});
break;
case 'scatter':
this.animationInstance = new Animation({
timing: opts.timing,
duration: duration,
onProcess: function onProcess(process) {
context.clearRect(0, 0, opts.width, opts.height);
if (opts.rotate) {
contextRotate(context, opts);
}
drawYAxisGrid(categories, opts, config, context);
drawXAxis(categories, opts, config, context);
var _drawScatterDataPoints = drawScatterDataPoints(series, opts, config, context, process),
xAxisPoints = _drawScatterDataPoints.xAxisPoints,
calPoints = _drawScatterDataPoints.calPoints,
eachSpacing = _drawScatterDataPoints.eachSpacing;
opts.chartData.xAxisPoints = xAxisPoints;
opts.chartData.calPoints = calPoints;
opts.chartData.eachSpacing = eachSpacing;
drawYAxis(series, opts, config, context);
if (opts.enableMarkLine !== false && process === 1) {
drawMarkLine(opts, config, context);
}
drawLegend(opts.series, opts, config, context, opts.chartData);
drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
drawCanvas(opts, context);
},
onAnimationFinish: function onAnimationFinish() {
_this.uevent.trigger('renderComplete');
}
});
break;
case 'bubble':
this.animationInstance = new Animation({
timing: opts.timing,
duration: duration,
onProcess: function onProcess(process) {
context.clearRect(0, 0, opts.width, opts.height);
if (opts.rotate) {
contextRotate(context, opts);
}
drawYAxisGrid(categories, opts, config, context);
drawXAxis(categories, opts, config, context);
var _drawBubbleDataPoints = drawBubbleDataPoints(series, opts, config, context, process),
xAxisPoints = _drawBubbleDataPoints.xAxisPoints,
calPoints = _drawBubbleDataPoints.calPoints,
eachSpacing = _drawBubbleDataPoints.eachSpacing;
opts.chartData.xAxisPoints = xAxisPoints;
opts.chartData.calPoints = calPoints;
opts.chartData.eachSpacing = eachSpacing;
drawYAxis(series, opts, config, context);
if (opts.enableMarkLine !== false && process === 1) {
drawMarkLine(opts, config, context);
}
drawLegend(opts.series, opts, config, context, opts.chartData);
drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
drawCanvas(opts, context);
},
onAnimationFinish: function onAnimationFinish() {
_this.uevent.trigger('renderComplete');
}
});
break;
case 'mix':
this.animationInstance = new Animation({
timing: opts.timing,
duration: duration,
onProcess: function onProcess(process) {
context.clearRect(0, 0, opts.width, opts.height);
if (opts.rotate) {
contextRotate(context, opts);
}
drawYAxisGrid(categories, opts, config, context);
drawXAxis(categories, opts, config, context);
var _drawMixDataPoints = drawMixDataPoints(series, opts, config, context, process),
xAxisPoints = _drawMixDataPoints.xAxisPoints,
calPoints = _drawMixDataPoints.calPoints,
eachSpacing = _drawMixDataPoints.eachSpacing;
opts.chartData.xAxisPoints = xAxisPoints;
opts.chartData.calPoints = calPoints;
opts.chartData.eachSpacing = eachSpacing;
drawYAxis(series, opts, config, context);
if (opts.enableMarkLine !== false && process === 1) {
drawMarkLine(opts, config, context);
}
drawLegend(opts.series, opts, config, context, opts.chartData);
drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
drawCanvas(opts, context);
},
onAnimationFinish: function onAnimationFinish() {
_this.uevent.trigger('renderComplete');
}
});
break;
case 'column':
this.animationInstance = new Animation({
timing: opts.timing,
duration: duration,
onProcess: function onProcess(process) {
context.clearRect(0, 0, opts.width, opts.height);
if (opts.rotate) {
contextRotate(context, opts);
}
drawYAxisGrid(categories, opts, config, context);
drawXAxis(categories, opts, config, context);
var _drawColumnDataPoints = drawColumnDataPoints(series, opts, config, context, process),
xAxisPoints = _drawColumnDataPoints.xAxisPoints,
calPoints = _drawColumnDataPoints.calPoints,
eachSpacing = _drawColumnDataPoints.eachSpacing;
opts.chartData.xAxisPoints = xAxisPoints;
opts.chartData.calPoints = calPoints;
opts.chartData.eachSpacing = eachSpacing;
drawYAxis(series, opts, config, context);
if (opts.enableMarkLine !== false && process === 1) {
drawMarkLine(opts, config, context);
}
drawLegend(opts.series, opts, config, context, opts.chartData);
drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
drawCanvas(opts, context);
},
onAnimationFinish: function onAnimationFinish() {
_this.uevent.trigger('renderComplete');
}
});
break;
case 'mount':
this.animationInstance = new Animation({
timing: opts.timing,
duration: duration,
onProcess: function onProcess(process) {
context.clearRect(0, 0, opts.width, opts.height);
if (opts.rotate) {
contextRotate(context, opts);
}
drawYAxisGrid(categories, opts, config, context);
drawXAxis(categories, opts, config, context);
var _drawMountDataPoints = drawMountDataPoints(series, opts, config, context, process),
xAxisPoints = _drawMountDataPoints.xAxisPoints,
calPoints = _drawMountDataPoints.calPoints,
eachSpacing = _drawMountDataPoints.eachSpacing;
opts.chartData.xAxisPoints = xAxisPoints;
opts.chartData.calPoints = calPoints;
opts.chartData.eachSpacing = eachSpacing;
drawYAxis(series, opts, config, context);
if (opts.enableMarkLine !== false && process === 1) {
drawMarkLine(opts, config, context);
}
drawLegend(opts.series, opts, config, context, opts.chartData);
drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
drawCanvas(opts, context);
},
onAnimationFinish: function onAnimationFinish() {
_this.uevent.trigger('renderComplete');
}
});
break;
case 'bar':
this.animationInstance = new Animation({
timing: opts.timing,
duration: duration,
onProcess: function onProcess(process) {
context.clearRect(0, 0, opts.width, opts.height);
if (opts.rotate) {
contextRotate(context, opts);
}
drawXAxis(categories, opts, config, context);
var _drawBarDataPoints = drawBarDataPoints(series, opts, config, context, process),
yAxisPoints = _drawBarDataPoints.yAxisPoints,
calPoints = _drawBarDataPoints.calPoints,
eachSpacing = _drawBarDataPoints.eachSpacing;
opts.chartData.yAxisPoints = yAxisPoints;
opts.chartData.xAxisPoints = opts.chartData.xAxisData.xAxisPoints;
opts.chartData.calPoints = calPoints;
opts.chartData.eachSpacing = eachSpacing;
drawYAxis(series, opts, config, context);
if (opts.enableMarkLine !== false && process === 1) {
drawMarkLine(opts, config, context);
}
drawLegend(opts.series, opts, config, context, opts.chartData);
drawToolTipBridge(opts, config, context, process, eachSpacing, yAxisPoints);
drawCanvas(opts, context);
},
onAnimationFinish: function onAnimationFinish() {
_this.uevent.trigger('renderComplete');
}
});
break;
case 'area':
this.animationInstance = new Animation({
timing: opts.timing,
duration: duration,
onProcess: function onProcess(process) {
context.clearRect(0, 0, opts.width, opts.height);
if (opts.rotate) {
contextRotate(context, opts);
}
drawYAxisGrid(categories, opts, config, context);
drawXAxis(categories, opts, config, context);
var _drawAreaDataPoints = drawAreaDataPoints(series, opts, config, context, process),
xAxisPoints = _drawAreaDataPoints.xAxisPoints,
calPoints = _drawAreaDataPoints.calPoints,
eachSpacing = _drawAreaDataPoints.eachSpacing;
opts.chartData.xAxisPoints = xAxisPoints;
opts.chartData.calPoints = calPoints;
opts.chartData.eachSpacing = eachSpacing;
drawYAxis(series, opts, config, context);
if (opts.enableMarkLine !== false && process === 1) {
drawMarkLine(opts, config, context);
}
drawLegend(opts.series, opts, config, context, opts.chartData);
drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
drawCanvas(opts, context);
},
onAnimationFinish: function onAnimationFinish() {
_this.uevent.trigger('renderComplete');
}
});
break;
case 'ring':
this.animationInstance = new Animation({
timing: opts.timing,
duration: duration,
onProcess: function onProcess(process) {
context.clearRect(0, 0, opts.width, opts.height);
if (opts.rotate) {
contextRotate(context, opts);
}
opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process);
drawLegend(opts.series, opts, config, context, opts.chartData);
drawToolTipBridge(opts, config, context, process);
drawCanvas(opts, context);
},
onAnimationFinish: function onAnimationFinish() {
_this.uevent.trigger('renderComplete');
}
});
break;
case 'pie':
this.animationInstance = new Animation({
timing: opts.timing,
duration: duration,
onProcess: function onProcess(process) {
context.clearRect(0, 0, opts.width, opts.height);
if (opts.rotate) {
contextRotate(context, opts);
}
opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process);
drawLegend(opts.series, opts, config, context, opts.chartData);
drawToolTipBridge(opts, config, context, process);
drawCanvas(opts, context);
},
onAnimationFinish: function onAnimationFinish() {
_this.uevent.trigger('renderComplete');
}
});
break;
case 'rose':
this.animationInstance = new Animation({
timing: opts.timing,
duration: duration,
onProcess: function onProcess(process) {
context.clearRect(0, 0, opts.width, opts.height);
if (opts.rotate) {
contextRotate(context, opts);
}
opts.chartData.pieData = drawRoseDataPoints(series, opts, config, context, process);
drawLegend(opts.series, opts, config, context, opts.chartData);
drawToolTipBridge(opts, config, context, process);
drawCanvas(opts, context);
},
onAnimationFinish: function onAnimationFinish() {
_this.uevent.trigger('renderComplete');
}
});
break;
case 'radar':
this.animationInstance = new Animation({
timing: opts.timing,
duration: duration,
onProcess: function onProcess(process) {
context.clearRect(0, 0, opts.width, opts.height);
if (opts.rotate) {
contextRotate(context, opts);
}
opts.chartData.radarData = drawRadarDataPoints(series, opts, config, context, process);
drawLegend(opts.series, opts, config, context, opts.chartData);
drawToolTipBridge(opts, config, context, process);
drawCanvas(opts, context);
},
onAnimationFinish: function onAnimationFinish() {
_this.uevent.trigger('renderComplete');
}
});
break;
case 'arcbar':
this.animationInstance = new Animation({
timing: opts.timing,
duration: duration,
onProcess: function onProcess(process) {
context.clearRect(0, 0, opts.width, opts.height);
if (opts.rotate) {
contextRotate(context, opts);
}
opts.chartData.arcbarData = drawArcbarDataPoints(series, opts, config, context, process);
drawCanvas(opts, context);
},
onAnimationFinish: function onAnimationFinish() {
_this.uevent.trigger('renderComplete');
}
});
break;
case 'gauge':
this.animationInstance = new Animation({
timing: opts.timing,
duration: duration,
onProcess: function onProcess(process) {
context.clearRect(0, 0, opts.width, opts.height);
if (opts.rotate) {
contextRotate(context, opts);
}
opts.chartData.gaugeData = drawGaugeDataPoints(categories, series, opts, config, context, process);
drawCanvas(opts, context);
},
onAnimationFinish: function onAnimationFinish() {
_this.uevent.trigger('renderComplete');
}
});
break;
case 'candle':
this.animationInstance = new Animation({
timing: opts.timing,
duration: duration,
onProcess: function onProcess(process) {
context.clearRect(0, 0, opts.width, opts.height);
if (opts.rotate) {
contextRotate(context, opts);
}
drawYAxisGrid(categories, opts, config, context);
drawXAxis(categories, opts, config, context);
var _drawCandleDataPoints = drawCandleDataPoints(series, seriesMA, opts, config, context, process),
xAxisPoints = _drawCandleDataPoints.xAxisPoints,
calPoints = _drawCandleDataPoints.calPoints,
eachSpacing = _drawCandleDataPoints.eachSpacing;
opts.chartData.xAxisPoints = xAxisPoints;
opts.chartData.calPoints = calPoints;
opts.chartData.eachSpacing = eachSpacing;
drawYAxis(series, opts, config, context);
if (opts.enableMarkLine !== false && process === 1) {
drawMarkLine(opts, config, context);
}
if (seriesMA) {
drawLegend(seriesMA, opts, config, context, opts.chartData);
} else {
drawLegend(opts.series, opts, config, context, opts.chartData);
}
drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);
drawCanvas(opts, context);
},
onAnimationFinish: function onAnimationFinish() {
_this.uevent.trigger('renderComplete');
}
});
break;
}
}
function uChartsEvent() {
this.events = {};
}
uChartsEvent.prototype.addEventListener = function (type, listener) {
this.events[type] = this.events[type] || [];
this.events[type].push(listener);
};
uChartsEvent.prototype.delEventListener = function (type) {
this.events[type] = [];
};
uChartsEvent.prototype.trigger = function () {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
var type = args[0];
var params = args.slice(1);
if (!!this.events[type]) {
this.events[type].forEach(function (listener) {
try {
listener.apply(null, params);
} catch (e) {
//console.log('[uCharts] '+e);
}
});
}
};
var uCharts = function uCharts(opts) {
opts.pix = opts.pixelRatio ? opts.pixelRatio : 1;
opts.fontSize = opts.fontSize ? opts.fontSize : 13;
opts.fontColor = opts.fontColor ? opts.fontColor : config.fontColor;
if (opts.background == "" || opts.background == "none") {
opts.background = "#FFFFFF";
}
opts.title = assign({}, opts.title);
opts.subtitle = assign({}, opts.subtitle);
opts.duration = opts.duration ? opts.duration : 1000;
opts.yAxis = assign({}, {
data: [],
showTitle: false,
disabled: false,
disableGrid: false,
gridSet: 'number',
splitNumber: 5,
gridType: 'solid',
dashLength: 4 * opts.pix,
gridColor: '#cccccc',
padding: 10,
fontColor: '#666666'
}, opts.yAxis);
opts.xAxis = assign({}, {
rotateLabel: false,
rotateAngle: 45,
disabled: false,
disableGrid: false,
splitNumber: 5,
calibration: false,
fontColor: '#666666',
fontSize: 13,
lineHeight: 20,
marginTop: 0,
gridType: 'solid',
dashLength: 4,
scrollAlign: 'left',
boundaryGap: 'center',
axisLine: true,
axisLineColor: '#cccccc',
titleFontSize: 13,
titleOffsetY: 0,
titleOffsetX: 0,
titleFontColor: '#666666'
}, opts.xAxis);
opts.xAxis.scrollPosition = opts.xAxis.scrollAlign;
opts.legend = assign({}, {
show: true,
position: 'bottom',
float: 'center',
backgroundColor: 'rgba(0,0,0,0)',
borderColor: 'rgba(0,0,0,0)',
borderWidth: 0,
padding: 5,
margin: 5,
itemGap: 10,
fontSize: opts.fontSize,
lineHeight: opts.fontSize,
fontColor: opts.fontColor,
formatter: {},
hiddenColor: '#CECECE'
}, opts.legend);
opts.extra = assign({
tooltip: {
legendShape: 'auto'
}
}, opts.extra);
opts.rotate = opts.rotate ? true : false;
opts.animation = opts.animation ? true : false;
opts.rotate = opts.rotate ? true : false;
opts.canvas2d = opts.canvas2d ? true : false;
var config$$1 = assign({}, config);
config$$1.color = opts.color ? opts.color : config$$1.color;
if (opts.type == 'pie') {
config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.pie.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;
}
if (opts.type == 'ring') {
config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.ring.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;
}
if (opts.type == 'rose') {
config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.rose.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;
}
config$$1.pieChartTextPadding = opts.dataLabel === false ? 0 : config$$1.pieChartTextPadding * opts.pix;
//屏幕旋转
config$$1.rotate = opts.rotate;
if (opts.rotate) {
var tempWidth = opts.width;
var tempHeight = opts.height;
opts.width = tempHeight;
opts.height = tempWidth;
}
//适配高分屏
opts.padding = opts.padding ? opts.padding : config$$1.padding;
config$$1.yAxisWidth = config.yAxisWidth * opts.pix;
config$$1.fontSize = opts.fontSize * opts.pix;
config$$1.titleFontSize = config.titleFontSize * opts.pix;
config$$1.subtitleFontSize = config.subtitleFontSize * opts.pix;
if (!opts.context) {
throw new Error('[uCharts] 未获取到context注意v2.0版本后需要自行获取canvas的绘图上下文并传入opts.context');
}
this.context = opts.context;
if (!this.context.setTextAlign) {
this.context.setStrokeStyle = function (e) {
return this.strokeStyle = e;
};
this.context.setLineWidth = function (e) {
return this.lineWidth = e;
};
this.context.setLineCap = function (e) {
return this.lineCap = e;
};
this.context.setFontSize = function (e) {
return this.font = e + "px sans-serif";
};
this.context.setFillStyle = function (e) {
return this.fillStyle = e;
};
this.context.setTextAlign = function (e) {
return this.textAlign = e;
};
this.context.setTextBaseline = function (e) {
return this.textBaseline = e;
};
this.context.setShadow = function (offsetX, offsetY, blur, color) {
this.shadowColor = color;
this.shadowOffsetX = offsetX;
this.shadowOffsetY = offsetY;
this.shadowBlur = blur;
};
this.context.draw = function () {};
}
//兼容NVUEsetLineDash
if (!this.context.setLineDash) {
this.context.setLineDash = function (e) {};
}
opts.chartData = {};
this.uevent = new uChartsEvent();
this.scrollOption = {
currentOffset: 0,
startTouchX: 0,
distance: 0,
lastMoveTime: 0
};
this.opts = opts;
this.config = config$$1;
drawCharts.call(this, opts.type, opts, config$$1, this.context);
};
uCharts.prototype.updateData = function () {
var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
this.opts = assign({}, this.opts, data);
this.opts.updateData = true;
var scrollPosition = data.scrollPosition || 'current';
switch (scrollPosition) {
case 'current':
this.opts._scrollDistance_ = this.scrollOption.currentOffset;
break;
case 'left':
this.opts._scrollDistance_ = 0;
this.scrollOption = {
currentOffset: 0,
startTouchX: 0,
distance: 0,
lastMoveTime: 0
};
break;
case 'right':
var _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context),
yAxisWidth = _calYAxisData.yAxisWidth;
this.config.yAxisWidth = yAxisWidth;
var offsetLeft = 0;
var _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),
xAxisPoints = _getXAxisPoints0.xAxisPoints,
startX = _getXAxisPoints0.startX,
endX = _getXAxisPoints0.endX,
eachSpacing = _getXAxisPoints0.eachSpacing;
var totalWidth = eachSpacing * (xAxisPoints.length - 1);
var screenWidth = endX - startX;
offsetLeft = screenWidth - totalWidth;
this.scrollOption = {
currentOffset: offsetLeft,
startTouchX: offsetLeft,
distance: 0,
lastMoveTime: 0
};
this.opts._scrollDistance_ = offsetLeft;
break;
}
drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);
};
uCharts.prototype.zoom = function () {
var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.opts.xAxis.itemCount;
if (this.opts.enableScroll !== true) {
console.log('[uCharts] 请启用滚动条后使用');
return;
}
//当前屏幕中间点
var centerPoint = Math.round(Math.abs(this.scrollOption.currentOffset) / this.opts.chartData.eachSpacing) + Math.round(this.opts.xAxis.itemCount / 2);
this.opts.animation = false;
this.opts.xAxis.itemCount = val.itemCount;
//重新计算x轴偏移距离
var _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context),
yAxisWidth = _calYAxisData.yAxisWidth;
this.config.yAxisWidth = yAxisWidth;
var offsetLeft = 0;
var _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),
xAxisPoints = _getXAxisPoints0.xAxisPoints,
startX = _getXAxisPoints0.startX,
endX = _getXAxisPoints0.endX,
eachSpacing = _getXAxisPoints0.eachSpacing;
var centerLeft = eachSpacing * centerPoint;
var screenWidth = endX - startX;
var MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1);
offsetLeft = screenWidth / 2 - centerLeft;
if (offsetLeft > 0) {
offsetLeft = 0;
}
if (offsetLeft < MaxLeft) {
offsetLeft = MaxLeft;
}
this.scrollOption = {
currentOffset: offsetLeft,
startTouchX: 0,
distance: 0,
lastMoveTime: 0
};
calValidDistance(this, offsetLeft, this.opts.chartData, this.config, this.opts);
this.opts._scrollDistance_ = offsetLeft;
drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);
};
uCharts.prototype.dobuleZoom = function (e) {
if (this.opts.enableScroll !== true) {
console.log('[uCharts] 请启用滚动条后使用');
return;
}
var tcs = e.changedTouches;
if (tcs.length < 2) {
return;
}
for (var i = 0; i < tcs.length; i++) {
tcs[i].x = tcs[i].x ? tcs[i].x : tcs[i].clientX;
tcs[i].y = tcs[i].y ? tcs[i].y : tcs[i].clientY;
}
var ntcs = [getTouches(tcs[0], this.opts, e), getTouches(tcs[1], this.opts, e)];
var xlength = Math.abs(ntcs[0].x - ntcs[1].x);
// 记录初始的两指之间的数据
if (!this.scrollOption.moveCount) {
var cts0 = {
changedTouches: [{
x: tcs[0].x,
y: this.opts.area[0] / this.opts.pix + 2
}]
};
var cts1 = {
changedTouches: [{
x: tcs[1].x,
y: this.opts.area[0] / this.opts.pix + 2
}]
};
if (this.opts.rotate) {
cts0 = {
changedTouches: [{
x: this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2,
y: tcs[0].y
}]
};
cts1 = {
changedTouches: [{
x: this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2,
y: tcs[1].y
}]
};
}
var moveCurrent1 = this.getCurrentDataIndex(cts0).index;
var moveCurrent2 = this.getCurrentDataIndex(cts1).index;
var moveCount = Math.abs(moveCurrent1 - moveCurrent2);
this.scrollOption.moveCount = moveCount;
this.scrollOption.moveCurrent1 = Math.min(moveCurrent1, moveCurrent2);
this.scrollOption.moveCurrent2 = Math.max(moveCurrent1, moveCurrent2);
return;
}
var currentEachSpacing = xlength / this.scrollOption.moveCount;
var itemCount = (this.opts.width - this.opts.area[1] - this.opts.area[3]) / currentEachSpacing;
itemCount = itemCount <= 2 ? 2 : itemCount;
itemCount = itemCount >= this.opts.categories.length ? this.opts.categories.length : itemCount;
this.opts.animation = false;
this.opts.xAxis.itemCount = itemCount;
// 重新计算滚动条偏移距离
var offsetLeft = 0;
var _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),
xAxisPoints = _getXAxisPoints0.xAxisPoints,
startX = _getXAxisPoints0.startX,
endX = _getXAxisPoints0.endX,
eachSpacing = _getXAxisPoints0.eachSpacing;
var currentLeft = eachSpacing * this.scrollOption.moveCurrent1;
var screenWidth = endX - startX;
var MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1);
offsetLeft = -currentLeft + Math.min(ntcs[0].x, ntcs[1].x) - this.opts.area[3] - eachSpacing;
if (offsetLeft > 0) {
offsetLeft = 0;
}
if (offsetLeft < MaxLeft) {
offsetLeft = MaxLeft;
}
this.scrollOption.currentOffset = offsetLeft;
this.scrollOption.startTouchX = 0;
this.scrollOption.distance = 0;
calValidDistance(this, offsetLeft, this.opts.chartData, this.config, this.opts);
this.opts._scrollDistance_ = offsetLeft;
drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);
};
uCharts.prototype.stopAnimation = function () {
this.animationInstance && this.animationInstance.stop();
};
uCharts.prototype.addEventListener = function (type, listener) {
this.uevent.addEventListener(type, listener);
};
uCharts.prototype.delEventListener = function (type) {
this.uevent.delEventListener(type);
};
uCharts.prototype.getCurrentDataIndex = function (e) {
var touches = null;
if (e.changedTouches) {
touches = e.changedTouches[0];
} else {
touches = e.mp.changedTouches[0];
}
if (touches) {
var _touches$ = getTouches(touches, this.opts, e);
if (this.opts.type === 'pie' || this.opts.type === 'ring') {
return findPieChartCurrentIndex({
x: _touches$.x,
y: _touches$.y
}, this.opts.chartData.pieData, this.opts);
} else if (this.opts.type === 'rose') {
return findRoseChartCurrentIndex({
x: _touches$.x,
y: _touches$.y
}, this.opts.chartData.pieData, this.opts);
} else if (this.opts.type === 'radar') {
return findRadarChartCurrentIndex({
x: _touches$.x,
y: _touches$.y
}, this.opts.chartData.radarData, this.opts.categories.length);
} else if (this.opts.type === 'funnel') {
return findFunnelChartCurrentIndex({
x: _touches$.x,
y: _touches$.y
}, this.opts.chartData.funnelData);
} else if (this.opts.type === 'map') {
return findMapChartCurrentIndex({
x: _touches$.x,
y: _touches$.y
}, this.opts);
} else if (this.opts.type === 'word') {
return findWordChartCurrentIndex({
x: _touches$.x,
y: _touches$.y
}, this.opts.chartData.wordCloudData);
} else if (this.opts.type === 'bar') {
return findBarChartCurrentIndex({
x: _touches$.x,
y: _touches$.y
}, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset));
} else {
return findCurrentIndex({
x: _touches$.x,
y: _touches$.y
}, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset));
}
}
return -1;
};
uCharts.prototype.getLegendDataIndex = function (e) {
var touches = null;
if (e.changedTouches) {
touches = e.changedTouches[0];
} else {
touches = e.mp.changedTouches[0];
}
if (touches) {
var _touches$ = getTouches(touches, this.opts, e);
return findLegendIndex({
x: _touches$.x,
y: _touches$.y
}, this.opts.chartData.legendData);
}
return -1;
};
uCharts.prototype.touchLegend = function (e) {
var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var touches = null;
if (e.changedTouches) {
touches = e.changedTouches[0];
} else {
touches = e.mp.changedTouches[0];
}
if (touches) {
var _touches$ = getTouches(touches, this.opts, e);
var index = this.getLegendDataIndex(e);
if (index >= 0) {
if (this.opts.type == 'candle') {
this.opts.seriesMA[index].show = !this.opts.seriesMA[index].show;
} else {
this.opts.series[index].show = !this.opts.series[index].show;
}
this.opts.animation = option.animation ? true : false;
this.opts._scrollDistance_ = this.scrollOption.currentOffset;
drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);
}
}
};
uCharts.prototype.showToolTip = function (e) {
var _this3 = this;
var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var touches = null;
if (e.changedTouches) {
touches = e.changedTouches[0];
} else {
touches = e.mp.changedTouches[0];
}
if (!touches) {
console.log("[uCharts] 未获取到event坐标信息");
}
var _touches$ = getTouches(touches, this.opts, e);
var currentOffset = this.scrollOption.currentOffset;
var opts = assign({}, this.opts, {
_scrollDistance_: currentOffset,
animation: false
});
if (this.opts.type === 'line' || this.opts.type === 'area' || this.opts.type === 'column' || this.opts.type === 'scatter' || this.opts.type === 'bubble') {
var current = this.getCurrentDataIndex(e);
var index = option.index == undefined ? current.index : option.index;
if (index > -1 || index.length > 0) {
var seriesData = getSeriesDataItem(this.opts.series, index, current.group);
if (seriesData.length !== 0) {
var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option),
textList = _getToolTipData.textList,
offset = _getToolTipData.offset;
offset.y = _touches$.y;
opts.tooltip = {
textList: option.textList !== undefined ? option.textList : textList,
offset: option.offset !== undefined ? option.offset : offset,
option: option,
index: index,
group: current.group
};
}
}
drawCharts.call(this, opts.type, opts, this.config, this.context);
}
if (this.opts.type === 'mount') {
var index = option.index == undefined ? this.getCurrentDataIndex(e).index : option.index;
if (index > -1) {
var opts = assign({}, this.opts, {
animation: false
});
var seriesData = assign({}, opts._series_[index]);
var textList = [{
text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data,
color: seriesData.color,
legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape
}];
var offset = {
x: opts.chartData.calPoints[index].x,
y: _touches$.y
};
opts.tooltip = {
textList: option.textList ? option.textList : textList,
offset: option.offset !== undefined ? option.offset : offset,
option: option,
index: index
};
}
drawCharts.call(this, opts.type, opts, this.config, this.context);
}
if (this.opts.type === 'bar') {
var current = this.getCurrentDataIndex(e);
var index = option.index == undefined ? current.index : option.index;
if (index > -1 || index.length > 0) {
var seriesData = getSeriesDataItem(this.opts.series, index, current.group);
if (seriesData.length !== 0) {
var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option),
textList = _getToolTipData.textList,
offset = _getToolTipData.offset;
offset.x = _touches$.x;
opts.tooltip = {
textList: option.textList !== undefined ? option.textList : textList,
offset: option.offset !== undefined ? option.offset : offset,
option: option,
index: index
};
}
}
drawCharts.call(this, opts.type, opts, this.config, this.context);
}
if (this.opts.type === 'mix') {
var current = this.getCurrentDataIndex(e);
var index = option.index == undefined ? current.index : option.index;
if (index > -1) {
var currentOffset = this.scrollOption.currentOffset;
var opts = assign({}, this.opts, {
_scrollDistance_: currentOffset,
animation: false
});
var seriesData = getSeriesDataItem(this.opts.series, index);
if (seriesData.length !== 0) {
var _getMixToolTipData = getMixToolTipData(seriesData, this.opts, index, this.opts.categories, option),
textList = _getMixToolTipData.textList,
offset = _getMixToolTipData.offset;
offset.y = _touches$.y;
opts.tooltip = {
textList: option.textList ? option.textList : textList,
offset: option.offset !== undefined ? option.offset : offset,
option: option,
index: index
};
}
}
drawCharts.call(this, opts.type, opts, this.config, this.context);
}
if (this.opts.type === 'candle') {
var current = this.getCurrentDataIndex(e);
var index = option.index == undefined ? current.index : option.index;
if (index > -1) {
var currentOffset = this.scrollOption.currentOffset;
var opts = assign({}, this.opts, {
_scrollDistance_: currentOffset,
animation: false
});
var seriesData = getSeriesDataItem(this.opts.series, index);
if (seriesData.length !== 0) {
var _getToolTipData = getCandleToolTipData(this.opts.series[0].data, seriesData, this.opts, index, this.opts.categories, this.opts.extra.candle, option),
textList = _getToolTipData.textList,
offset = _getToolTipData.offset;
offset.y = _touches$.y;
opts.tooltip = {
textList: option.textList ? option.textList : textList,
offset: option.offset !== undefined ? option.offset : offset,
option: option,
index: index
};
}
}
drawCharts.call(this, opts.type, opts, this.config, this.context);
}
if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose' || this.opts.type === 'funnel') {
var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;
if (index > -1) {
var opts = assign({}, this.opts, {
animation: false
});
var seriesData = assign({}, opts._series_[index]);
var textList = [{
text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data,
color: seriesData.color,
legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape
}];
var offset = {
x: _touches$.x,
y: _touches$.y
};
opts.tooltip = {
textList: option.textList ? option.textList : textList,
offset: option.offset !== undefined ? option.offset : offset,
option: option,
index: index
};
}
drawCharts.call(this, opts.type, opts, this.config, this.context);
}
if (this.opts.type === 'map') {
var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;
if (index > -1) {
var opts = assign({}, this.opts, {
animation: false
});
var seriesData = assign({}, this.opts.series[index]);
seriesData.name = seriesData.properties.name;
var textList = [{
text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name,
color: seriesData.color,
legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape
}];
var offset = {
x: _touches$.x,
y: _touches$.y
};
opts.tooltip = {
textList: option.textList ? option.textList : textList,
offset: option.offset !== undefined ? option.offset : offset,
option: option,
index: index
};
}
opts.updateData = false;
drawCharts.call(this, opts.type, opts, this.config, this.context);
}
if (this.opts.type === 'word') {
var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;
if (index > -1) {
var opts = assign({}, this.opts, {
animation: false
});
var seriesData = assign({}, this.opts.series[index]);
var textList = [{
text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name,
color: seriesData.color,
legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape
}];
var offset = {
x: _touches$.x,
y: _touches$.y
};
opts.tooltip = {
textList: option.textList ? option.textList : textList,
offset: option.offset !== undefined ? option.offset : offset,
option: option,
index: index
};
}
opts.updateData = false;
drawCharts.call(this, opts.type, opts, this.config, this.context);
}
if (this.opts.type === 'radar') {
var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;
if (index > -1) {
var opts = assign({}, this.opts, {
animation: false
});
var seriesData = getSeriesDataItem(this.opts.series, index);
if (seriesData.length !== 0) {
var textList = seriesData.map(function (item) {
return {
text: option.formatter ? option.formatter(item, _this3.opts.categories[index], index, _this3.opts) : item.name + ': ' + item.data,
color: item.color,
legendShape: _this3.opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : _this3.opts.extra.tooltip.legendShape
};
});
var offset = {
x: _touches$.x,
y: _touches$.y
};
opts.tooltip = {
textList: option.textList ? option.textList : textList,
offset: option.offset !== undefined ? option.offset : offset,
option: option,
index: index
};
}
}
drawCharts.call(this, opts.type, opts, this.config, this.context);
}
};
uCharts.prototype.translate = function (distance) {
this.scrollOption = {
currentOffset: distance,
startTouchX: distance,
distance: 0,
lastMoveTime: 0
};
var opts = assign({}, this.opts, {
_scrollDistance_: distance,
animation: false
});
drawCharts.call(this, this.opts.type, opts, this.config, this.context);
};
uCharts.prototype.scrollStart = function (e) {
var touches = null;
if (e.changedTouches) {
touches = e.changedTouches[0];
} else {
touches = e.mp.changedTouches[0];
}
var _touches$ = getTouches(touches, this.opts, e);
if (touches && this.opts.enableScroll === true) {
this.scrollOption.startTouchX = _touches$.x;
}
};
uCharts.prototype.scroll = function (e) {
if (this.scrollOption.lastMoveTime === 0) {
this.scrollOption.lastMoveTime = Date.now();
}
var Limit = this.opts.touchMoveLimit || 60;
var currMoveTime = Date.now();
var duration = currMoveTime - this.scrollOption.lastMoveTime;
if (duration < Math.floor(1000 / Limit)) return;
if (this.scrollOption.startTouchX == 0) return;
this.scrollOption.lastMoveTime = currMoveTime;
var touches = null;
if (e.changedTouches) {
touches = e.changedTouches[0];
} else {
touches = e.mp.changedTouches[0];
}
if (touches && this.opts.enableScroll === true) {
var _touches$ = getTouches(touches, this.opts, e);
var _distance;
_distance = _touches$.x - this.scrollOption.startTouchX;
var currentOffset = this.scrollOption.currentOffset;
var validDistance = calValidDistance(this, currentOffset + _distance, this.opts.chartData, this.config, this.opts);
this.scrollOption.distance = _distance = validDistance - currentOffset;
var opts = assign({}, this.opts, {
_scrollDistance_: currentOffset + _distance,
animation: false
});
this.opts = opts;
drawCharts.call(this, opts.type, opts, this.config, this.context);
return currentOffset + _distance;
}
};
uCharts.prototype.scrollEnd = function (e) {
if (this.opts.enableScroll === true) {
var _scrollOption = this.scrollOption,
currentOffset = _scrollOption.currentOffset,
distance = _scrollOption.distance;
this.scrollOption.currentOffset = currentOffset + distance;
this.scrollOption.distance = 0;
this.scrollOption.moveCount = 0;
}
};
var _default = uCharts;
exports.default = _default;
/***/ }),
/***/ 469:
/*!************************************************************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js ***!
\************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 11));
/*
* uCharts®
* 高性能跨平台图表库支持H5、APP、小程序微信/支付宝/百度/头条/QQ/360、Vue、Taro等支持canvas的框架平台
* Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved.
* Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
* 复制使用请保留本段注释,感谢支持开源!
*
* uCharts®官方网站
* https://www.uCharts.cn
*
* 开源地址:
* https://gitee.com/uCharts/uCharts
*
* uni-app插件市场地址
* http://ext.dcloud.net.cn/plugin?id=271
*
*/
// 主题颜色配置如每个图表类型需要不同主题请在对应图表类型上更改color属性
var color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'];
//事件转换函数主要用作格式化x轴为时间轴根据需求自行修改
var formatDateTime = function formatDateTime(timeStamp, returnType) {
var date = new Date();
date.setTime(timeStamp * 1000);
var y = date.getFullYear();
var m = date.getMonth() + 1;
m = m < 10 ? '0' + m : m;
var d = date.getDate();
d = d < 10 ? '0' + d : d;
var h = date.getHours();
h = h < 10 ? '0' + h : h;
var minute = date.getMinutes();
var second = date.getSeconds();
minute = minute < 10 ? '0' + minute : minute;
second = second < 10 ? '0' + second : second;
if (returnType == 'full') {
return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;
}
if (returnType == 'y-m-d') {
return y + '-' + m + '-' + d;
}
if (returnType == 'h:m') {
return h + ':' + minute;
}
if (returnType == 'h:m:s') {
return h + ':' + minute + ':' + second;
}
return [y, m, d, h, minute, second];
};
var cfu = {
//demotype为自定义图表类型一般不需要自定义图表类型只需要改根节点上对应的类型即可
"type": ["pie", "ring", "rose", "word", "funnel", "map", "arcbar", "line", "column", "mount", "bar", "area", "radar", "gauge", "candle", "mix", "tline", "tarea", "scatter", "bubble", "demotype"],
"range": ["饼状图", "圆环图", "玫瑰图", "词云图", "漏斗图", "地图", "圆弧进度条", "折线图", "柱状图", "山峰图", "条状图", "区域图", "雷达图", "仪表盘", "K线图", "混合图", "时间轴折线", "时间轴区域", "散点图", "气泡图", "自定义类型"],
//增加自定义图表类型如果需要categories请在这里加入您的图表类型例如最后的"demotype"
//自定义类型时需要注意"tline","tarea","scatter","bubble"等时间轴矢量x轴类图表没有categories不需要加入categories
"categories": ["line", "column", "mount", "bar", "area", "radar", "gauge", "candle", "mix", "demotype"],
//instance为实例变量承载属性不要删除
"instance": {},
//option为opts及eopts承载属性不要删除
"option": {},
//下面是自定义format配置因除H5端外的其他端无法通过props传递函数只能通过此属性对应下标的方式来替换
"formatter": {
"yAxisDemo1": function yAxisDemo1(val, index, opts) {
return val + '元';
},
"yAxisDemo2": function yAxisDemo2(val, index, opts) {
return val.toFixed(2);
},
"xAxisDemo1": function xAxisDemo1(val, index, opts) {
return val + '年';
},
"xAxisDemo2": function xAxisDemo2(val, index, opts) {
return formatDateTime(val, 'h:m');
},
"seriesDemo1": function seriesDemo1(val, index, series, opts) {
return val + '元';
},
"tooltipDemo1": function tooltipDemo1(item, category, index, opts) {
if (index == 0) {
return '随便用' + item.data + '年';
} else {
return '其他我没改' + item.data + '天';
}
},
"pieDemo": function pieDemo(val, index, series, opts) {
if (index !== undefined) {
return series[index].name + '' + series[index].data + '元';
}
}
},
//这里演示了自定义您的图表类型的option可以随意命名之后在组件上 type="demotype" 后组件会调用这个花括号里的option如果组件上还存在opts参数会将demotype与opts中option合并后渲染图表。
"demotype": {
//我这里把曲线图当做了自定义图表类型,您可以根据需要随意指定类型或配置
"type": "line",
"color": color,
"padding": [15, 10, 0, 15],
"xAxis": {
"disableGrid": true
},
"yAxis": {
"gridType": "dash",
"dashLength": 2
},
"legend": {},
"extra": {
"line": {
"type": "curve",
"width": 2
}
}
},
//下面是自定义配置,请添加项目所需的通用配置
"pie": {
"type": "pie",
"color": color,
"padding": [5, 5, 5, 5],
"extra": {
"pie": {
"activeOpacity": 0.5,
"activeRadius": 10,
"offsetAngle": 0,
"labelWidth": 15,
"border": true,
"borderWidth": 3,
"borderColor": "#FFFFFF"
}
}
},
"ring": {
"type": "ring",
"color": color,
"padding": [5, 5, 5, 5],
"rotate": false,
"dataLabel": true,
"legend": {
"show": true,
"position": "right",
"lineHeight": 25
},
"title": {
"name": "收益率",
"fontSize": 15,
"color": "#666666"
},
"subtitle": {
"name": "70%",
"fontSize": 25,
"color": "#7cb5ec"
},
"extra": {
"ring": {
"ringWidth": 30,
"activeOpacity": 0.5,
"activeRadius": 10,
"offsetAngle": 0,
"labelWidth": 15,
"border": true,
"borderWidth": 3,
"borderColor": "#FFFFFF"
}
}
},
"rose": {
"type": "rose",
"color": color,
"padding": [5, 5, 5, 5],
"legend": {
"show": true,
"position": "left",
"lineHeight": 25
},
"extra": {
"rose": {
"type": "area",
"minRadius": 50,
"activeOpacity": 0.5,
"activeRadius": 10,
"offsetAngle": 0,
"labelWidth": 15,
"border": false,
"borderWidth": 2,
"borderColor": "#FFFFFF"
}
}
},
"word": {
"type": "word",
"color": color,
"extra": {
"word": {
"type": "normal",
"autoColors": false
}
}
},
"funnel": {
"type": "funnel",
"color": color,
"padding": [15, 15, 0, 15],
"extra": {
"funnel": {
"activeOpacity": 0.3,
"activeWidth": 10,
"border": true,
"borderWidth": 2,
"borderColor": "#FFFFFF",
"fillOpacity": 1,
"labelAlign": "right"
}
}
},
"map": {
"type": "map",
"color": color,
"padding": [0, 0, 0, 0],
"dataLabel": true,
"extra": {
"map": {
"border": true,
"borderWidth": 1,
"borderColor": "#666666",
"fillOpacity": 0.6,
"activeBorderColor": "#F04864",
"activeFillColor": "#FACC14",
"activeFillOpacity": 1
}
}
},
"arcbar": {
"type": "arcbar",
"color": color,
"title": {
"name": "",
"fontSize": 25,
"color": ""
},
"subtitle": {
"name": "",
"fontSize": 15,
"color": ""
},
"extra": {
"arcbar": {
"type": "circle",
"width": 10,
"backgroundColor": "#E9E9E9",
"startAngle": 1.5,
"endAngle": 0.25,
"gap": 2
}
}
},
"line": {
"type": "line",
"color": color,
"padding": [15, 10, 0, 15],
"xAxis": {
"disableGrid": true
},
"yAxis": {
"gridType": "dash",
"dashLength": 2
},
"legend": {},
"extra": {
"line": {
"type": "straight",
"width": 2,
"activeType": "hollow"
}
}
},
"tline": {
"type": "line",
"color": color,
"padding": [15, 10, 0, 15],
"xAxis": {
"disableGrid": false,
"boundaryGap": "justify"
},
"yAxis": {
"gridType": "dash",
"dashLength": 2,
"data": [{
"min": 0,
"max": 80
}]
},
"legend": {},
"extra": {
"line": {
"type": "curve",
"width": 2,
"activeType": "hollow"
}
}
},
"tarea": {
"type": "area",
"color": color,
"padding": [15, 10, 0, 15],
"xAxis": {
"disableGrid": true,
"boundaryGap": "justify"
},
"yAxis": {
"gridType": "dash",
"dashLength": 2,
"data": [{
"min": 0,
"max": 80
}]
},
"legend": {},
"extra": {
"area": {
"type": "curve",
"opacity": 0.2,
"addLine": true,
"width": 2,
"gradient": true,
"activeType": "hollow"
}
}
},
"column": {
"type": "column",
"color": color,
"padding": [15, 15, 0, 5],
"xAxis": {
"disableGrid": true
},
"yAxis": (0, _defineProperty2.default)({
"gridType": "dash",
"disableGrid": true,
"gridColor": '#ffffff',
"data": [{
"tofix": 1,
"min": 0
}]
}, "data", [{
"min": 0
}]),
"legend": {},
"extra": {
"column": {
"type": "group",
"width": 20,
"seriesGap": 5,
"meterFillColor": "#FFFFFF",
"activeBgColor": "#000000",
"activeBgOpacity": 0.5,
"barBorderCircle": true,
"linearType": "opacity",
// "customColor": "#ff9f40",
"linearOpacity": 1
}
}
},
"mount": {
"type": "mount",
"color": color,
"padding": [15, 15, 0, 5],
"xAxis": {
"disableGrid": true
},
"yAxis": {
"data": [{
"min": 0
}]
},
"legend": {},
"extra": {
"mount": {
"type": "mount",
"widthRatio": 1.5
}
}
},
"bar": {
"type": "bar",
"color": color,
"padding": [15, 30, 0, 5],
"xAxis": {
"boundaryGap": "justify",
"disableGrid": false,
"min": 0,
"axisLine": false
},
"yAxis": {},
"legend": {},
"extra": {
"bar": {
"type": "group",
"width": 30,
"meterBorde": 1,
"meterFillColor": "#FFFFFF",
"activeBgColor": "#000000",
"activeBgOpacity": 0.08
}
}
},
"area": {
"type": "area",
"color": color,
"padding": [20, 15, 5, 10],
"xAxis": {
"disableGrid": true
},
"yAxis": {
"gridType": "dash",
"disableGrid": true,
"gridColor": '#ffffff',
"data": [{
"tofix": 1,
"min": 0
}]
},
"legend": {
"show": false
},
"extra": {
"area": {
"type": "curve",
"opacity": 0.2,
"addLine": true,
"width": 1,
"gradient": true,
"activeType": "hollow"
}
}
},
"radar": {
"type": "radar",
"color": color,
"padding": [5, 5, 5, 5],
"dataLabel": false,
"legend": {
"show": true,
"position": "right",
"lineHeight": 25
},
"extra": {
"radar": {
"gridType": "radar",
"gridColor": "#CCCCCC",
"gridCount": 3,
"opacity": 0.2,
"max": 200,
"labelShow": true
}
}
},
"gauge": {
"type": "gauge",
"color": color,
"title": {
"name": "66Km/H",
"fontSize": 25,
"color": "#2fc25b",
"offsetY": 50
},
"subtitle": {
"name": "实时速度",
"fontSize": 15,
"color": "#1890ff",
"offsetY": -50
},
"extra": {
"gauge": {
"type": "default",
"width": 30,
"labelColor": "#666666",
"startAngle": 0.75,
"endAngle": 0.25,
"startNumber": 0,
"endNumber": 100,
"labelFormat": "",
"splitLine": {
"fixRadius": 0,
"splitNumber": 10,
"width": 30,
"color": "#FFFFFF",
"childNumber": 5,
"childWidth": 12
},
"pointer": {
"width": 24,
"color": "auto"
}
}
}
},
"candle": {
"type": "candle",
"color": color,
"padding": [15, 15, 0, 15],
"enableScroll": true,
"enableMarkLine": true,
"dataLabel": false,
"xAxis": {
"labelCount": 4,
"itemCount": 40,
"disableGrid": true,
"gridColor": "#CCCCCC",
"gridType": "solid",
"dashLength": 4,
"scrollShow": true,
"scrollAlign": "left",
"scrollColor": "#A6A6A6",
"scrollBackgroundColor": "#EFEBEF"
},
"yAxis": {},
"legend": {},
"extra": {
"candle": {
"color": {
"upLine": "#f04864",
"upFill": "#f04864",
"downLine": "#2fc25b",
"downFill": "#2fc25b"
},
"average": {
"show": true,
"name": ["MA5", "MA10", "MA30"],
"day": [5, 10, 20],
"color": ["#1890ff", "#2fc25b", "#facc14"]
}
},
"markLine": {
"type": "dash",
"dashLength": 5,
"data": [{
"value": 2150,
"lineColor": "#f04864",
"showLabel": true
}, {
"value": 2350,
"lineColor": "#f04864",
"showLabel": true
}]
}
}
},
"mix": {
"type": "mix",
"color": color,
"padding": [15, 15, 0, 15],
"xAxis": {
"disableGrid": true
},
"yAxis": {
"disabled": false,
"disableGrid": false,
"splitNumber": 5,
"gridType": "dash",
"dashLength": 4,
"gridColor": "#CCCCCC",
"padding": 10,
"showTitle": true,
"data": []
},
"legend": {},
"extra": {
"mix": {
"column": {
"width": 20
}
}
}
},
"scatter": {
"type": "scatter",
"color": color,
"padding": [15, 15, 0, 15],
"dataLabel": false,
"xAxis": {
"disableGrid": false,
"gridType": "dash",
"splitNumber": 5,
"boundaryGap": "justify",
"min": 0
},
"yAxis": {
"disableGrid": false,
"gridType": "dash"
},
"legend": {},
"extra": {
"scatter": {}
}
},
"bubble": {
"type": "bubble",
"color": color,
"padding": [15, 15, 0, 15],
"xAxis": {
"disableGrid": false,
"gridType": "dash",
"splitNumber": 5,
"boundaryGap": "justify",
"min": 0,
"max": 250
},
"yAxis": {
"disableGrid": false,
"gridType": "dash",
"data": [{
"min": 0,
"max": 150
}]
},
"legend": {},
"extra": {
"bubble": {
"border": 2,
"opacity": 0.5
}
}
}
};
var _default = cfu;
exports.default = _default;
/***/ }),
/***/ 5:
/*!**************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/slicedToArray.js ***!
\**************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ 6);
var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ 7);
var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ 8);
var nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ 10);
function _slicedToArray(arr, i) {
return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();
}
module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 503:
/*!********************************************************************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpwxs.js ***!
\********************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var mpMixins = {};
var is_pc = null;
mpMixins = {
data: function data() {
return {
is_show: 'none'
};
},
watch: {
show: function show(newVal) {
this.is_show = this.show;
}
},
created: function created() {
this.swipeaction = this.getSwipeAction();
if (this.swipeaction && Array.isArray(this.swipeaction.children)) {
this.swipeaction.children.push(this);
}
},
mounted: function mounted() {
this.is_show = this.show;
},
methods: {
// wxs 中调用
closeSwipe: function closeSwipe(e) {
if (this.autoClose && this.swipeaction) {
this.swipeaction.closeOther(this);
}
},
change: function change(e) {
this.$emit('change', e.open);
if (this.is_show !== e.open) {
this.is_show = e.open;
}
},
appTouchStart: function appTouchStart(e) {
if (is_pc) return;
var clientX = e.changedTouches[0].clientX;
this.clientX = clientX;
this.timestamp = new Date().getTime();
},
appTouchEnd: function appTouchEnd(e, index, item, position) {
if (is_pc) return;
var clientX = e.changedTouches[0].clientX;
// fixed by xxxx 模拟点击事件,解决 ios 13 点击区域错位的问题
var diff = Math.abs(this.clientX - clientX);
var time = new Date().getTime() - this.timestamp;
if (diff < 40 && time < 300) {
this.$emit('click', {
content: item,
index: index,
position: position
});
}
},
onClickForPC: function onClickForPC(index, item, position) {
if (!is_pc) return;
}
}
};
var _default = mpMixins;
exports.default = _default;
/***/ }),
/***/ 504:
/*!***********************************************************************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/uni_modules/uni-swipe-action/components/uni-swipe-action-item/bindingx.js ***!
\***********************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var bindIngXMixins = {};
var _default = bindIngXMixins;
exports.default = _default;
/***/ }),
/***/ 505:
/*!**********************************************************************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/uni_modules/uni-swipe-action/components/uni-swipe-action-item/mpother.js ***!
\**********************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var otherMixins = {};
var _default = otherMixins;
exports.default = _default;
/***/ }),
/***/ 522:
/*!**************************************************************************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/index.js ***!
\**************************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _en = _interopRequireDefault(__webpack_require__(/*! ./en.json */ 523));
var _zhHans = _interopRequireDefault(__webpack_require__(/*! ./zh-Hans.json */ 524));
var _zhHant = _interopRequireDefault(__webpack_require__(/*! ./zh-Hant.json */ 525));
var _default = {
en: _en.default,
'zh-Hans': _zhHans.default,
'zh-Hant': _zhHant.default
};
exports.default = _default;
/***/ }),
/***/ 523:
/*!*************************************************************************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/en.json ***!
\*************************************************************************************************************************/
/*! exports provided: uni-datetime-picker.selectDate, uni-datetime-picker.selectTime, uni-datetime-picker.selectDateTime, uni-datetime-picker.startDate, uni-datetime-picker.endDate, uni-datetime-picker.startTime, uni-datetime-picker.endTime, uni-datetime-picker.ok, uni-datetime-picker.clear, uni-datetime-picker.cancel, uni-datetime-picker.year, uni-datetime-picker.month, uni-calender.MON, uni-calender.TUE, uni-calender.WED, uni-calender.THU, uni-calender.FRI, uni-calender.SAT, uni-calender.SUN, uni-calender.confirm, default */
/***/ (function(module) {
module.exports = JSON.parse("{\"uni-datetime-picker.selectDate\":\"select date\",\"uni-datetime-picker.selectTime\":\"select time\",\"uni-datetime-picker.selectDateTime\":\"select date and time\",\"uni-datetime-picker.startDate\":\"start date\",\"uni-datetime-picker.endDate\":\"end date\",\"uni-datetime-picker.startTime\":\"start time\",\"uni-datetime-picker.endTime\":\"end time\",\"uni-datetime-picker.ok\":\"ok\",\"uni-datetime-picker.clear\":\"clear\",\"uni-datetime-picker.cancel\":\"cancel\",\"uni-datetime-picker.year\":\"-\",\"uni-datetime-picker.month\":\"\",\"uni-calender.MON\":\"MON\",\"uni-calender.TUE\":\"TUE\",\"uni-calender.WED\":\"WED\",\"uni-calender.THU\":\"THU\",\"uni-calender.FRI\":\"FRI\",\"uni-calender.SAT\":\"SAT\",\"uni-calender.SUN\":\"SUN\",\"uni-calender.confirm\":\"confirm\"}");
/***/ }),
/***/ 524:
/*!******************************************************************************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hans.json ***!
\******************************************************************************************************************************/
/*! exports provided: uni-datetime-picker.selectDate, uni-datetime-picker.selectTime, uni-datetime-picker.selectDateTime, uni-datetime-picker.startDate, uni-datetime-picker.endDate, uni-datetime-picker.startTime, uni-datetime-picker.endTime, uni-datetime-picker.ok, uni-datetime-picker.clear, uni-datetime-picker.cancel, uni-datetime-picker.year, uni-datetime-picker.month, uni-calender.SUN, uni-calender.MON, uni-calender.TUE, uni-calender.WED, uni-calender.THU, uni-calender.FRI, uni-calender.SAT, uni-calender.confirm, default */
/***/ (function(module) {
module.exports = JSON.parse("{\"uni-datetime-picker.selectDate\":\"选择日期\",\"uni-datetime-picker.selectTime\":\"选择时间\",\"uni-datetime-picker.selectDateTime\":\"选择日期时间\",\"uni-datetime-picker.startDate\":\"开始日期\",\"uni-datetime-picker.endDate\":\"结束日期\",\"uni-datetime-picker.startTime\":\"开始时间\",\"uni-datetime-picker.endTime\":\"结束时间\",\"uni-datetime-picker.ok\":\"确定\",\"uni-datetime-picker.clear\":\"清除\",\"uni-datetime-picker.cancel\":\"取消\",\"uni-datetime-picker.year\":\"年\",\"uni-datetime-picker.month\":\"月\",\"uni-calender.SUN\":\"日\",\"uni-calender.MON\":\"一\",\"uni-calender.TUE\":\"二\",\"uni-calender.WED\":\"三\",\"uni-calender.THU\":\"四\",\"uni-calender.FRI\":\"五\",\"uni-calender.SAT\":\"六\",\"uni-calender.confirm\":\"确认\"}");
/***/ }),
/***/ 525:
/*!******************************************************************************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/i18n/zh-Hant.json ***!
\******************************************************************************************************************************/
/*! exports provided: uni-datetime-picker.selectDate, uni-datetime-picker.selectTime, uni-datetime-picker.selectDateTime, uni-datetime-picker.startDate, uni-datetime-picker.endDate, uni-datetime-picker.startTime, uni-datetime-picker.endTime, uni-datetime-picker.ok, uni-datetime-picker.clear, uni-datetime-picker.cancel, uni-datetime-picker.year, uni-datetime-picker.month, uni-calender.SUN, uni-calender.MON, uni-calender.TUE, uni-calender.WED, uni-calender.THU, uni-calender.FRI, uni-calender.SAT, uni-calender.confirm, default */
/***/ (function(module) {
module.exports = JSON.parse("{\"uni-datetime-picker.selectDate\":\"選擇日期\",\"uni-datetime-picker.selectTime\":\"選擇時間\",\"uni-datetime-picker.selectDateTime\":\"選擇日期時間\",\"uni-datetime-picker.startDate\":\"開始日期\",\"uni-datetime-picker.endDate\":\"結束日期\",\"uni-datetime-picker.startTime\":\"開始时间\",\"uni-datetime-picker.endTime\":\"結束时间\",\"uni-datetime-picker.ok\":\"確定\",\"uni-datetime-picker.clear\":\"清除\",\"uni-datetime-picker.cancel\":\"取消\",\"uni-datetime-picker.year\":\"年\",\"uni-datetime-picker.month\":\"月\",\"uni-calender.SUN\":\"日\",\"uni-calender.MON\":\"一\",\"uni-calender.TUE\":\"二\",\"uni-calender.WED\":\"三\",\"uni-calender.THU\":\"四\",\"uni-calender.FRI\":\"五\",\"uni-calender.SAT\":\"六\",\"uni-calender.confirm\":\"確認\"}");
/***/ }),
/***/ 526:
/*!********************************************************************************************************************!*\
!*** E:/qiaocongli/小程序/中招体测app/examTeamApp/uni_modules/uni-datetime-picker/components/uni-datetime-picker/util.js ***!
\********************************************************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 4);
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Calendar = void 0;
exports.addZero = addZero;
exports.checkDate = checkDate;
exports.dateCompare = dateCompare;
exports.fixIosDateFormat = fixIosDateFormat;
exports.getDate = getDate;
exports.getDateTime = getDateTime;
exports.getDefaultSecond = getDefaultSecond;
exports.getTime = getTime;
var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ 18));
var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ 23));
var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ 24));
var Calendar = /*#__PURE__*/function () {
function Calendar() {
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
selected = _ref.selected,
startDate = _ref.startDate,
endDate = _ref.endDate,
range = _ref.range;
(0, _classCallCheck2.default)(this, Calendar);
// 当前日期
this.date = this.getDateObj(new Date()); // 当前初入日期
// 打点信息
this.selected = selected || [];
// 起始时间
this.startDate = startDate;
// 终止时间
this.endDate = endDate;
// 是否范围选择
this.range = range;
// 多选状态
this.cleanMultipleStatus();
// 每周日期
this.weeks = {};
this.lastHover = false;
}
/**
* 设置日期
* @param {Object} date
*/
(0, _createClass2.default)(Calendar, [{
key: "setDate",
value: function setDate(date) {
var selectDate = this.getDateObj(date);
this.getWeeks(selectDate.fullDate);
}
/**
* 清理多选状态
*/
}, {
key: "cleanMultipleStatus",
value: function cleanMultipleStatus() {
this.multipleStatus = {
before: '',
after: '',
data: []
};
}
}, {
key: "setStartDate",
value: function setStartDate(startDate) {
this.startDate = startDate;
}
}, {
key: "setEndDate",
value: function setEndDate(endDate) {
this.endDate = endDate;
}
}, {
key: "getPreMonthObj",
value: function getPreMonthObj(date) {
date = fixIosDateFormat(date);
date = new Date(date);
var oldMonth = date.getMonth();
date.setMonth(oldMonth - 1);
var newMonth = date.getMonth();
if (oldMonth !== 0 && newMonth - oldMonth === 0) {
date.setMonth(newMonth - 1);
}
return this.getDateObj(date);
}
}, {
key: "getNextMonthObj",
value: function getNextMonthObj(date) {
date = fixIosDateFormat(date);
date = new Date(date);
var oldMonth = date.getMonth();
date.setMonth(oldMonth + 1);
var newMonth = date.getMonth();
if (newMonth - oldMonth > 1) {
date.setMonth(newMonth - 1);
}
return this.getDateObj(date);
}
/**
* 获取指定格式Date对象
*/
}, {
key: "getDateObj",
value: function getDateObj(date) {
date = fixIosDateFormat(date);
date = new Date(date);
return {
fullDate: getDate(date),
year: date.getFullYear(),
month: addZero(date.getMonth() + 1),
date: addZero(date.getDate()),
day: date.getDay()
};
}
/**
* 获取上一个月日期集合
*/
}, {
key: "getPreMonthDays",
value: function getPreMonthDays(amount, dateObj) {
var result = [];
for (var i = amount - 1; i >= 0; i--) {
var month = dateObj.month - 1;
result.push({
date: new Date(dateObj.year, month, -i).getDate(),
month: month,
disable: true
});
}
return result;
}
/**
* 获取本月日期集合
*/
}, {
key: "getCurrentMonthDays",
value: function getCurrentMonthDays(amount, dateObj) {
var _this = this;
var result = [];
var fullDate = this.date.fullDate;
var _loop = function _loop(i) {
var currentDate = "".concat(dateObj.year, "-").concat(dateObj.month, "-").concat(addZero(i));
var isToday = fullDate === currentDate;
// 获取打点信息
var info = _this.selected && _this.selected.find(function (item) {
if (_this.dateEqual(currentDate, item.date)) {
return item;
}
});
// 日期禁用
var disableBefore = true;
var disableAfter = true;
if (_this.startDate) {
disableBefore = dateCompare(_this.startDate, currentDate);
}
if (_this.endDate) {
disableAfter = dateCompare(currentDate, _this.endDate);
}
var multiples = _this.multipleStatus.data;
var multiplesStatus = -1;
if (_this.range && multiples) {
multiplesStatus = multiples.findIndex(function (item) {
return _this.dateEqual(item, currentDate);
});
}
var checked = multiplesStatus !== -1;
result.push({
fullDate: currentDate,
year: dateObj.year,
date: i,
multiple: _this.range ? checked : false,
beforeMultiple: _this.isLogicBefore(currentDate, _this.multipleStatus.before, _this.multipleStatus.after),
afterMultiple: _this.isLogicAfter(currentDate, _this.multipleStatus.before, _this.multipleStatus.after),
month: dateObj.month,
disable: _this.startDate && !dateCompare(_this.startDate, currentDate) || _this.endDate && !dateCompare(currentDate, _this.endDate),
isToday: isToday,
userChecked: false,
extraInfo: info
});
};
for (var i = 1; i <= amount; i++) {
_loop(i);
}
return result;
}
/**
* 获取下一个月日期集合
*/
}, {
key: "_getNextMonthDays",
value: function _getNextMonthDays(amount, dateObj) {
var result = [];
var month = dateObj.month + 1;
for (var i = 1; i <= amount; i++) {
result.push({
date: i,
month: month,
disable: true
});
}
return result;
}
/**
* 获取当前日期详情
* @param {Object} date
*/
}, {
key: "getInfo",
value: function getInfo(date) {
var _this2 = this;
if (!date) {
date = new Date();
}
return this.calendar.find(function (item) {
return item.fullDate === _this2.getDateObj(date).fullDate;
});
}
/**
* 比较时间是否相等
*/
}, {
key: "dateEqual",
value: function dateEqual(before, after) {
before = new Date(fixIosDateFormat(before));
after = new Date(fixIosDateFormat(after));
return before.valueOf() === after.valueOf();
}
/**
* 比较真实起始日期
*/
}, {
key: "isLogicBefore",
value: function isLogicBefore(currentDate, before, after) {
var logicBefore = before;
if (before && after) {
logicBefore = dateCompare(before, after) ? before : after;
}
return this.dateEqual(logicBefore, currentDate);
}
}, {
key: "isLogicAfter",
value: function isLogicAfter(currentDate, before, after) {
var logicAfter = after;
if (before && after) {
logicAfter = dateCompare(before, after) ? after : before;
}
return this.dateEqual(logicAfter, currentDate);
}
/**
* 获取日期范围内所有日期
* @param {Object} begin
* @param {Object} end
*/
}, {
key: "geDateAll",
value: function geDateAll(begin, end) {
var arr = [];
var ab = begin.split('-');
var ae = end.split('-');
var db = new Date();
db.setFullYear(ab[0], ab[1] - 1, ab[2]);
var de = new Date();
de.setFullYear(ae[0], ae[1] - 1, ae[2]);
var unixDb = db.getTime() - 24 * 60 * 60 * 1000;
var unixDe = de.getTime() - 24 * 60 * 60 * 1000;
for (var k = unixDb; k <= unixDe;) {
k = k + 24 * 60 * 60 * 1000;
arr.push(this.getDateObj(new Date(parseInt(k))).fullDate);
}
return arr;
}
/**
* 获取多选状态
*/
}, {
key: "setMultiple",
value: function setMultiple(fullDate) {
if (!this.range) return;
var _this$multipleStatus = this.multipleStatus,
before = _this$multipleStatus.before,
after = _this$multipleStatus.after;
if (before && after) {
if (!this.lastHover) {
this.lastHover = true;
return;
}
this.multipleStatus.before = fullDate;
this.multipleStatus.after = '';
this.multipleStatus.data = [];
this.multipleStatus.fulldate = '';
this.lastHover = false;
} else {
if (!before) {
this.multipleStatus.before = fullDate;
this.multipleStatus.after = undefined;
this.lastHover = false;
} else {
this.multipleStatus.after = fullDate;
if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after);
} else {
this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before);
}
this.lastHover = true;
}
}
this.getWeeks(fullDate);
}
/**
* 鼠标 hover 更新多选状态
*/
}, {
key: "setHoverMultiple",
value: function setHoverMultiple(fullDate) {
//抖音小程序点击会触发hover事件需要避免一下
if (!this.range || this.lastHover) return;
var before = this.multipleStatus.before;
if (!before) {
this.multipleStatus.before = fullDate;
} else {
this.multipleStatus.after = fullDate;
if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
this.multipleStatus.data = this.geDateAll(this.multipleStatus.before, this.multipleStatus.after);
} else {
this.multipleStatus.data = this.geDateAll(this.multipleStatus.after, this.multipleStatus.before);
}
}
this.getWeeks(fullDate);
}
/**
* 更新默认值多选状态
*/
}, {
key: "setDefaultMultiple",
value: function setDefaultMultiple(before, after) {
this.multipleStatus.before = before;
this.multipleStatus.after = after;
if (before && after) {
if (dateCompare(before, after)) {
this.multipleStatus.data = this.geDateAll(before, after);
this.getWeeks(after);
} else {
this.multipleStatus.data = this.geDateAll(after, before);
this.getWeeks(before);
}
}
}
/**
* 获取每周数据
* @param {Object} dateData
*/
}, {
key: "getWeeks",
value: function getWeeks(dateData) {
var _this$getDateObj = this.getDateObj(dateData),
year = _this$getDateObj.year,
month = _this$getDateObj.month;
var preMonthDayAmount = new Date(year, month - 1, 1).getDay();
var preMonthDays = this.getPreMonthDays(preMonthDayAmount, this.getDateObj(dateData));
var currentMonthDayAmount = new Date(year, month, 0).getDate();
var currentMonthDays = this.getCurrentMonthDays(currentMonthDayAmount, this.getDateObj(dateData));
var nextMonthDayAmount = 42 - preMonthDayAmount - currentMonthDayAmount;
var nextMonthDays = this._getNextMonthDays(nextMonthDayAmount, this.getDateObj(dateData));
var calendarDays = [].concat((0, _toConsumableArray2.default)(preMonthDays), (0, _toConsumableArray2.default)(currentMonthDays), (0, _toConsumableArray2.default)(nextMonthDays));
var weeks = new Array(6);
for (var i = 0; i < calendarDays.length; i++) {
var index = Math.floor(i / 7);
if (!weeks[index]) {
weeks[index] = new Array(7);
}
weeks[index][i % 7] = calendarDays[i];
}
this.calendar = calendarDays;
this.weeks = weeks;
}
}]);
return Calendar;
}();
exports.Calendar = Calendar;
function getDateTime(date, hideSecond) {
return "".concat(getDate(date), " ").concat(getTime(date, hideSecond));
}
function getDate(date) {
date = fixIosDateFormat(date);
date = new Date(date);
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
return "".concat(year, "-").concat(addZero(month), "-").concat(addZero(day));
}
function getTime(date, hideSecond) {
date = fixIosDateFormat(date);
date = new Date(date);
var hour = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();
return hideSecond ? "".concat(addZero(hour), ":").concat(addZero(minute)) : "".concat(addZero(hour), ":").concat(addZero(minute), ":").concat(addZero(second));
}
function addZero(num) {
if (num < 10) {
num = "0".concat(num);
}
return num;
}
function getDefaultSecond(hideSecond) {
return hideSecond ? '00:00' : '00:00:00';
}
function dateCompare(startDate, endDate) {
startDate = new Date(fixIosDateFormat(startDate));
endDate = new Date(fixIosDateFormat(endDate));
return startDate <= endDate;
}
function checkDate(date) {
var dateReg = /((19|20)\d{2})(-|\/)\d{1,2}(-|\/)\d{1,2}/g;
return date.match(dateReg);
}
//ios低版本15及以下无法匹配 没有 ’秒‘ 时的情况,所以需要在末尾 秒 加上 问号
var dateTimeReg = /^\d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])( [0-5]?[0-9]:[0-5]?[0-9](:[0-5]?[0-9])?)?$/;
function fixIosDateFormat(value) {
if (typeof value === 'string' && dateTimeReg.test(value)) {
value = value.replace(/-/g, '/');
}
return value;
}
/***/ }),
/***/ 6:
/*!***************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/arrayWithHoles.js ***!
\***************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
function _arrayWithHoles(arr) {
if (Array.isArray(arr)) return arr;
}
module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 7:
/*!*********************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***!
\*********************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
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;
}
}
module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 8:
/*!***************************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***!
\***************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ 9);
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);
}
module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ }),
/***/ 9:
/*!*****************************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***!
\*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
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;
}
module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
/***/ })
}]);
//# sourceMappingURL=../../.sourcemap/mp-weixin/common/vendor.js.map