2021-08-26 09:49:06 +08:00
( global [ "webpackJsonp" ] = global [ "webpackJsonp" ] || [ ] ) . push ( [ [ "common/vendor" ] , {
/***/ 1 :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . / node _modules / @ dcloudio / uni - mp - weixin / dist / index . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/*! no static exports found */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
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 _vue = _interopRequireDefault ( _ _webpack _require _ _ ( /*! vue */ 2 ) ) ; function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; } function ownKeys ( object , enumerableOnly ) { var keys = Object . keys ( object ) ; if ( Object . getOwnPropertySymbols ) { var symbols = Object . getOwnPropertySymbols ( object ) ; if ( 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 = arguments [ i ] != null ? arguments [ i ] : { } ; if ( i % 2 ) { ownKeys ( Object ( source ) , true ) . forEach ( function ( key ) { _defineProperty ( target , key , source [ key ] ) ; } ) ; } else if ( Object . getOwnPropertyDescriptors ) { Object . defineProperties ( target , Object . getOwnPropertyDescriptors ( source ) ) ; } else { ownKeys ( Object ( source ) ) . forEach ( function ( key ) { Object . defineProperty ( target , key , Object . getOwnPropertyDescriptor ( source , key ) ) ; } ) ; } } return target ; } function _slicedToArray ( arr , i ) { return _arrayWithHoles ( arr ) || _iterableToArrayLimit ( arr , i ) || _unsupportedIterableToArray ( arr , i ) || _nonIterableRest ( ) ; } function _nonIterableRest ( ) { throw new TypeError ( "Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method." ) ; } function _iterableToArrayLimit ( arr , i ) { if ( typeof Symbol === "undefined" || ! ( Symbol . iterator in Object ( arr ) ) ) return ; var _arr = [ ] ; var _n = true ; var _d = false ; var _e = undefined ; try { for ( var _i = arr [ Symbol . iterator ] ( ) , _s ; ! ( _n = ( _s = _i . next ( ) ) . done ) ; _n = true ) { _arr . push ( _s . value ) ; if ( i && _arr . length === i ) break ; } } catch ( err ) { _d = true ; _e = err ; } finally { try { if ( ! _n && _i [ "return" ] != null ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; } function _arrayWithHoles ( arr ) { if ( Array . isArray ( arr ) ) return arr ; } function _defineProperty ( obj , key , value ) { if ( key in obj ) { Object . defineProperty ( obj , key , { value : value , enumerable : true , configurable : true , writable : true } ) ; } else { obj [ key ] = value ; } return obj ; } function _toConsumableArray ( arr ) { return _arrayWithoutHoles ( arr ) || _iterableToArray ( arr ) || _unsupportedIterableToArray ( arr ) || _nonIterableSpread ( ) ; } 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." ) ; } 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 _iterableToArray ( iter ) { if ( typeof Symbol !== "undefined" && Symbol . iterator in Object ( iter ) ) return Array . from ( iter ) ; } function _arrayWithoutHoles ( arr ) { if ( Array . isArray ( arr ) ) return _arrayLikeToArray ( arr ) ; } 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 b64DecodeUnicode ( str ) {
return decodeURIComponent ( atob ( 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 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 ( ) : '' ; } ) ;
} ) ;
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 ) {
return function ( data ) {
return hook ( data ) || data ;
} ;
}
function isPromise ( obj ) {
return ! ! obj && ( typeof obj === 'object' || typeof obj === 'function' ) && typeof obj . then === 'function' ;
}
function queue ( hooks , data ) {
var promise = false ;
for ( var i = 0 ; i < hooks . length ; i ++ ) {
var hook = hooks [ i ] ;
if ( promise ) {
promise = Promise . resolve ( wrapperHook ( hook ) ) ;
} else {
var res = hook ( data ) ;
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 ) . 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 , _toConsumableArray ( globalInterceptors . returnValue ) ) ;
}
var interceptor = scopedInterceptors [ method ] ;
if ( interceptor && Array . isArray ( interceptor . returnValue ) ) {
returnValueHooks . push . apply ( returnValueHooks , _toConsumableArray ( 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 ) {
return api . apply ( void 0 , [ wrapperOptions ( interceptor , 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 ;
}
2021-08-27 16:01:51 +08:00
return new Promise ( function ( resolve , reject ) {
res . then ( function ( res ) {
if ( res [ 0 ] ) {
reject ( res [ 0 ] ) ;
} else {
resolve ( res [ 1 ] ) ;
}
} ) ;
2021-08-26 09:49:06 +08:00
} ) ;
} } ;
var SYNC _API _RE =
/^\$|Window$|WindowStyle$|sendNativeEvent|restoreGlobal|getCurrentSubNVue|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64/ ;
var CONTEXT _API _RE = /^create|Manager$/ ;
// Context例外情况
var CONTEXT _API _RE _EXC = [ 'createBLEConnection' ] ;
// 同步例外情况
var ASYNC _API = [ 'createBLEConnection' ] ;
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 ) ) {
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 interceptors = {
promiseInterceptor : promiseInterceptor } ;
var baseApi = /*#__PURE__*/ Object . freeze ( {
_ _proto _ _ : null ,
upx2px : upx2px ,
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 addUuid ( 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 . windowHeight - safeArea . bottom } ;
}
}
var getSystemInfo = {
returnValue : function returnValue ( result ) {
addUuid ( result ) ;
addSafeAreaInsets ( result ) ;
} } ;
// import navigateTo from 'uni-helpers/navigate-to'
var protocols = {
redirectTo : redirectTo ,
// navigateTo, // 由于在微信开发者工具的页面参数, 会显示__id__参数, 因此暂时关闭mp-weixin对于navigateTo的AOP
previewImage : previewImage ,
getSystemInfo : getSystemInfo ,
getSystemInfoSync : getSystemInfo } ;
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 } ) ;
var api = /*#__PURE__*/ Object . freeze ( {
_ _proto _ _ : null } ) ;
var MPPage = Page ;
var MPComponent = Component ;
var customizeRE = /:/g ;
var customize = cached ( function ( str ) {
return camelize ( str . replace ( customizeRE , '-' ) ) ;
} ) ;
function initTriggerEvent ( mpInstance ) {
{
if ( ! wx . canIUse || ! wx . canIUse ( 'nextTick' ) ) {
return ;
}
}
var oldTriggerEvent = mpInstance . triggerEvent ;
mpInstance . triggerEvent = function ( event ) { for ( var _len3 = arguments . length , args = new Array ( _len3 > 1 ? _len3 - 1 : 0 ) , _key3 = 1 ; _key3 < _len3 ; _key3 ++ ) { args [ _key3 - 1 ] = arguments [ _key3 ] ; }
return oldTriggerEvent . apply ( mpInstance , [ customize ( event ) ] . concat ( args ) ) ;
} ;
}
function initHook ( name , options ) {
var oldHook = options [ name ] ;
if ( ! oldHook ) {
options [ name ] = function ( ) {
initTriggerEvent ( this ) ;
} ;
} else {
options [ name ] = function ( ) {
initTriggerEvent ( this ) ; 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 ] ) ) {
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 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 ) {
2021-08-28 14:23:27 +08:00
if ( Object ( { "VUE_APP_NAME" : "dengrui" , "VUE_APP_PLATFORM" : "mp-weixin" , "NODE_ENV" : "development" , "BASE_URL" : "/" } ) . VUE _APP _DEBUG ) {
2021-08-26 09:49:06 +08:00
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 properties = { } ;
if ( ! isBehavior ) {
properties . vueId = {
type : String ,
value : '' } ;
// 用于字节跳动小程序模拟抽象节点
properties . generic = {
type : Object ,
value : null } ;
// 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 = typeof 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 ) {
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' ) {
if ( event . detail && event . detail . _ _args _ _ ) {
extraObj [ '$' + index ] = event . detail . _ _args _ _ ;
} else {
extraObj [ '$' + index ] = [ event ] ;
}
} 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 对象
if ( isCustom ) { // 自定义事件
isCustomMPEvent = event . currentTarget &&
event . currentTarget . dataset &&
event . currentTarget . dataset . comType === 'wx' ;
if ( ! args . length ) { // 无参数,直接传入 event 或 detail 数组
if ( isCustomMPEvent ) {
return [ event ] ;
}
return event . detail . _ _args _ _ || event . detail ;
}
}
var extraObj = processEventExtra ( vm , extra , event ) ;
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 ( event . detail . _ _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 _this = 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 = _this . $vm ;
if ( handlerCtx . $options . generic ) { // mp-weixin,mp-toutiao 抽象节点模拟 scoped slots
handlerCtx = getContextVm ( handlerCtx ) || handlerCtx ;
}
if ( methodName === '$emit' ) {
handlerCtx . $emit . apply ( handlerCtx ,
processEventArgs (
_this . $vm ,
event ,
eventArray [ 1 ] ,
eventArray [ 2 ] ,
isCustom ,
methodName ) ) ;
return ;
}
var handler = handlerCtx [ methodName ] ;
if ( ! isFn ( handler ) ) {
throw new Error ( " _vm." . concat ( methodName , " is not a function" ) ) ;
}
if ( isOnce ) {
if ( handler . once ) {
return ;
}
handler . once = true ;
}
var params = processEventArgs (
_this . $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 = { } ;
var eventChannelStack = [ ] ;
function getEventChannel ( id ) {
if ( id ) {
var eventChannel = eventChannels [ id ] ;
delete eventChannels [ id ] ;
return eventChannel ;
}
return eventChannelStack . shift ( ) ;
}
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 = { } ;
_vue . default . prototype . $hasScopedSlotsParams = function ( vueId ) {
var has = center [ vueId ] ;
if ( ! has ) {
parents [ vueId ] = this ;
this . $on ( 'hook:destory' , function ( ) {
delete parents [ vueId ] ;
} ) ;
}
return has ;
} ;
_vue . default . prototype . $getScopedSlotsParams = function ( vueId , name , key ) {
var data = center [ vueId ] ;
if ( data ) {
var object = data [ name ] || { } ;
return key ? object [ key ] : object ;
} else {
parents [ vueId ] = this ;
this . $on ( 'hook:destory' , function ( ) {
delete parents [ vueId ] ;
} ) ;
}
} ;
_vue . default . prototype . $setScopedSlotsParams = function ( name , value ) {
var vueIds = this . $options . propsData . vueId ;
if ( vueIds ) {
var vueId = vueIds . split ( ',' ) [ 0 ] ;
var object = center [ vueId ] = center [ vueId ] || { } ;
object [ name ] = value ;
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 , _ref3 )
{ var mocks = _ref3 . mocks , initRefs = _ref3 . 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 = _defineProperty ( {
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 ] ;
} ) ;
}
initHooks ( appOptions , hooks ) ;
return appOptions ;
}
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 || component ;
{
if ( component . dataset . vueGeneric === 'scoped' ) {
component . selectAllComponents ( '.scoped-ref' ) . forEach ( function ( scopedComponent ) {
selectAllComponents ( scopedComponent , selector , $refs ) ;
} ) ;
}
}
} ) ;
}
function initRefs ( vm ) {
var mpInstance = vm . $scope ;
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 || component ) ;
} ) ;
return $refs ;
} } ) ;
}
function handleLink ( event ) { var _ref4 =
event . detail || event . value , vuePid = _ref4 . vuePid , vueOptions = _ref4 . vueOptions ; // detail 是微信,value 是百度(dipatch)
var parentVm ;
if ( vuePid ) {
parentVm = findVmByVueId ( this . $vm , vuePid ) ;
}
if ( ! parentVm ) {
parentVm = this . $vm ;
}
vueOptions . parent = parentVm ;
}
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 _initVueComponent =
initVueComponent ( _vue . default , vueComponentOptions ) , _initVueComponent2 = _slicedToArray ( _initVueComponent , 2 ) , VueComponent = _initVueComponent2 [ 0 ] , vueOptions = _initVueComponent2 [ 1 ] ;
var options = _objectSpread ( {
multipleSlots : true ,
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 ) ,
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 ( isPage ) {
return componentOptions ;
}
return [ componentOptions , VueComponent ] ;
}
function parseComponent ( vueComponentOptions ) {
return parseBaseComponent ( vueComponentOptions , {
isPage : isPage ,
initRelation : initRelation } ) ;
}
var hooks$1 = [
'onShow' ,
'onHide' ,
'onUnload' ] ;
hooks$1 . push . apply ( hooks$1 , PAGE _EVENT _HOOKS ) ;
function parseBasePage ( vuePageOptions , _ref6 )
{ var isPage = _ref6 . isPage , initRelation = _ref6 . initRelation ;
var pageOptions = parseComponent ( vuePageOptions ) ;
initHooks ( pageOptions . methods , hooks$1 , vuePageOptions ) ;
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 ) ;
} ;
return pageOptions ;
}
function parsePage ( vuePageOptions ) {
return parseBasePage ( vuePageOptions , {
isPage : isPage ,
initRelation : initRelation } ) ;
}
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 ] ; }
appOptions . onShow . apply ( vm , 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 ] ; }
appOptions . onHide . apply ( vm , args ) ;
} ) ;
}
if ( isFn ( appOptions . onLaunch ) ) {
var args = wx . getLaunchOptionsSync && wx . getLaunchOptionsSync ( ) ;
appOptions . onLaunch . call ( vm , 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 ] ;
}
if ( ! hasOwn ( wx , name ) && ! hasOwn ( protocols , name ) ) {
return ;
}
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 , todoApis [ 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 ;
/***/ } ) ,
/***/ 11 :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . / 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 ) {
( 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
}
}
/***/ } ) ,
/***/ 12 :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * D : / c h e n q / c h e n / u n i a p p ( 兼 小 程 序 ) / d e n g r u i / j s F i l e / r e q u s t . j s * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/*! no static exports found */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
/* WEBPACK VAR INJECTION */ ( function ( uni ) { Object . defineProperty ( exports , "__esModule" , { value : true } ) ; exports . default = void 0 ; var _config = _interopRequireDefault ( _ _webpack _require _ _ ( /*! @/jsFile/config.js */ 13 ) ) ; function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
// 统一给参数
var dataObj = function dataObj ( url , params ) {
var options = params ;
return options ;
} ;
var goLogin = function goLogin ( ) {
uni . clearStorageSync ( ) ;
uni . reLaunch ( {
url : '/pages/login/Login' } ) ;
//未授权,请重新登录(401)
} ;
// 请求错误处理
var checkError = function checkError ( e , reject ) {
// console.error("----接口错误----", e)
if ( e . data ) {
if ( e . data . code ) {
switch ( Number ( e . data . code ) ) {
case 4001 :
goLogin ( ) ;
break ; }
}
reject ( e . data ) ;
} else {
reject ( {
'msg' : '接口错误' } ) ;
}
} ;
// 封装请求
var request = function request ( method , url , options ) {
var methods = '' ;
var headers = { } ;
switch ( method ) {
case 'get' :
methods = 'GET' ;
headers = {
'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8' ,
'Authorization' : 'Bearer ' + uni . getStorageSync ( 'token' ) || false } ;
break ;
case 'post' :
methods = 'POST' ;
headers = {
'Content-Type' : 'application/json; charset=UTF-8' ,
// "content-type": "application/x-www-form-urlencoded;charset=UTF-8",
'Authorization' : 'Bearer ' + uni . getStorageSync ( 'token' ) || false ,
'Cookie' : uni . getStorageSync ( 'openid' ) || '' } ;
break ;
case 'postForm' :
methods = 'POST' ;
headers = {
'Content-Type' : 'application/x-www-form-urlencoded; charset=UTF-8' ,
'Authorization' : 'Bearer ' + uni . getStorageSync ( 'token' ) || false } ;
break ; }
var obj = { } ,
hideLoading = false ,
loadingText = 'loading...' ;
if ( options ) { //如果有options
if ( options . hideLoading ) {
hideLoading = options . hideLoading ;
delete options . hideLoading ;
}
if ( options . loadingText ) {
loadingText = options . loadingText ;
delete options . loadingText ;
}
}
return new Promise ( function ( resolve , reject ) {
//!hideLoading && uni.showToast({title: loadingText,icon:'loading'})
uni . request ( {
url : "" . concat ( _config . default . BASE _URL ) . concat ( url ) ,
method : methods ,
data : dataObj ( url , options ) ,
header : headers ,
success : function success ( res ) {
// console.log('反的结果===>',res);
if ( res . statusCode == 200 ) {
if ( res . data . code == 0 ) {
resolve ( res . data ) ;
} else {
// if(uni.getStorageSync('token')==''){
// uni.showToast({title:'登录失效,请重新授权登录',icon:'none'})
// setTimeout(function(){
// uni.reLaunch({
// url:'/pages/login/login'
// })
// },1000)
// }
checkError ( res , reject ) ;
}
} else {
reject ( {
'msg' : '请求错误(' + res . statusCode + ')' } ) ;
}
} ,
fail : function fail ( e ) {
checkError ( e , reject ) ;
} ,
complete : function complete ( ) {
! hideLoading && uni . hideToast ( ) ;
} } ) ;
} ) ;
} ;
// 上传文件 封装请求
var uploadFile = function uploadFile ( url , options ) {
var tempData = options || { } ;
uni . showLoading ( {
title : "上传中..." } ) ;
return new Promise ( function ( resolve , reject ) {
// console.log('tempData',tempData);
uni . uploadFile ( {
url : "" . concat ( _config . default . BASE _URL ) . concat ( url ) ,
filePath : tempData . file ,
name : 'image' ,
fileType : 'image' ,
formData : tempData ,
header : {
'Content-Type' : 'multipart/form-data;charset=UTF-8' ,
'Authorization' : 'Bearer ' + uni . getStorageSync ( 'token' ) || false } ,
success : function success ( res ) {
if ( res . statusCode == 200 ) {
var temp = JSON . parse ( res . data ) ;
if ( temp . code == 0 ) {
resolve ( temp ) ;
} else {
reject ( temp ) ;
uni . showToast ( {
title : temp . msg || '接口错误(' + temp . code + ')' ,
icon : 'none' } ) ;
}
} else {
uni . showToast ( {
title : "\u672A\u77E5\u9519\u8BEF(" . concat ( res . statusCode , ")" ) ,
icon : 'none' } ) ;
}
} ,
fail : function fail ( e ) {
// uni.showToast({
// title: '接口请求超时',
// icon: 'none'
// })
// reject(e.data)
} ,
complete : function complete ( ) {
uni . hideLoading ( ) ;
} } ) ;
} ) ;
} ; var _default =
{
get : function get ( url , options ) {
return request ( 'get' , url , options ) ;
} ,
// JOSN格式
post : function post ( url , options ) {
return request ( 'post' , url , options ) ;
} ,
// form-data格式
postForm : function postForm ( url , options ) {
return request ( 'postForm' , url , options ) ;
} ,
// 上传
upload : function upload ( url , options ) {
return uploadFile ( url , options ) ;
} } ; exports . default = _default ;
/* WEBPACK VAR INJECTION */ } . call ( this , _ _webpack _require _ _ ( /*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1 ) [ "default" ] ) )
/***/ } ) ,
/***/ 13 :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * D : / c h e n q / c h e n / u n i a p p ( 兼 小 程 序 ) / d e n g r u i / j s F i l e / c o n f i g . j s * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/*! no static exports found */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , { value : true } ) ; exports . default = void 0 ; function ownKeys ( object , enumerableOnly ) { var keys = Object . keys ( object ) ; if ( Object . getOwnPropertySymbols ) { var symbols = Object . getOwnPropertySymbols ( object ) ; if ( 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 = arguments [ i ] != null ? arguments [ i ] : { } ; if ( i % 2 ) { ownKeys ( Object ( source ) , true ) . forEach ( function ( key ) { _defineProperty ( target , key , source [ key ] ) ; } ) ; } else if ( Object . getOwnPropertyDescriptors ) { Object . defineProperties ( target , Object . getOwnPropertyDescriptors ( source ) ) ; } else { ownKeys ( Object ( source ) ) . forEach ( function ( key ) { Object . defineProperty ( target , key , Object . getOwnPropertyDescriptor ( source , key ) ) ; } ) ; } } return target ; } function _defineProperty ( obj , key , value ) { if ( key in obj ) { Object . defineProperty ( obj , key , { value : value , enumerable : true , configurable : true , writable : true } ) ; } else { obj [ key ] = value ; } return obj ; } var ENV = "development" ;
// console.log('当前环境', process.env.NODE_ENV)
var apiHub = {
//开发环境
development : {
BASE _URL : "https://dengrui.scdxtc.cn/api/" ,
IMG _URL : "https://xx" ,
BASE _UPLOAD _URL : "" } ,
//测试环境
test : {
BASE _URL : "https://xxx" ,
IMG _URL : "https://xxx" ,
BASE _UPLOAD _URL : "" } ,
//生产环境
production : {
BASE _URL : "https://xx" ,
IMG _URL : "https://xx" ,
BASE _UPLOAD _URL : "" } } ;
// 导出配置
var _default = _objectSpread ( {
ENV : ENV } ,
apiHub [ ENV ] ) ; exports . default = _default ;
/***/ } ) ,
/***/ 180 :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * D : / c h e n q / c h e n / u n i a p p ( 兼 小 程 序 ) / d e n g r u i / j s F i l e / a m a p - w x . j s * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/*! no static exports found */
/***/ ( function ( module , exports ) {
function AMapWX ( a ) {
this . key = a . key , this . requestConfig = {
key : a . key ,
s : "rsx" ,
platform : "WXJS" ,
appname : a . key ,
sdkversion : "1.2.0" ,
logversion : "2.0" } ;
}
AMapWX . prototype . getWxLocation = function ( a , b ) {
wx . getLocation ( {
type : "gcj02" ,
success : function success ( a ) {
var c = a . longitude + "," + a . latitude ;
wx . setStorage ( {
key : "userLocation" ,
data : c } ) ,
b ( c ) ;
} ,
fail : function fail ( c ) {
wx . getStorage ( {
key : "userLocation" ,
success : function success ( a ) {
a . data && b ( a . data ) ;
} } ) ,
a . fail ( {
errCode : "0" ,
errMsg : c . errMsg || "" } ) ;
} } ) ;
} , AMapWX . prototype . getRegeo = function ( a ) {
function c ( c ) {
var d = b . requestConfig ;
wx . request ( {
url : "https://restapi.amap.com/v3/geocode/regeo" ,
data : {
key : b . key ,
location : c ,
extensions : "all" ,
s : d . s ,
platform : d . platform ,
appname : b . key ,
sdkversion : d . sdkversion ,
logversion : d . logversion } ,
method : "GET" ,
header : {
"content-type" : "application/json" } ,
success : function success ( b ) {
var d , e , f , g , h , i , j , k , l ;
b . data . status && "1" == b . data . status ? ( d = b . data . regeocode , e = d . addressComponent ,
f = [ ] , g = "" , d && d . roads [ 0 ] && d . roads [ 0 ] . name && ( g = d . roads [ 0 ] . name +
"附近" ) , h = c . split ( "," ) [ 0 ] , i = c . split ( "," ) [ 1 ] , d . pois && d . pois [ 0 ] && ( g =
d . pois [ 0 ] . name + "附近" , j = d . pois [ 0 ] . location , j && ( h = parseFloat ( j . split (
"," ) [ 0 ] ) , i = parseFloat ( j . split ( "," ) [ 1 ] ) ) ) , e . provice && f . push ( e .
provice ) , e . city && f . push ( e . city ) , e . district && f . push ( e . district ) , e .
streetNumber && e . streetNumber . street && e . streetNumber . number ? ( f . push ( e .
streetNumber . street ) , f . push ( e . streetNumber . number ) ) : ( k = "" , d && d .
roads [ 0 ] && d . roads [ 0 ] . name && ( k = d . roads [ 0 ] . name ) , f . push ( k ) ) , f = f .
join ( "" ) , l = [ {
iconPath : a . iconPath ,
width : a . iconWidth ,
height : a . iconHeight ,
name : f ,
desc : g ,
longitude : h ,
latitude : i ,
id : 0 ,
regeocodeData : d } ] ,
a . success ( l ) ) : a . fail ( {
errCode : b . data . infocode ,
errMsg : b . data . info } ) ;
} ,
fail : function fail ( b ) {
a . fail ( {
errCode : "0" ,
errMsg : b . errMsg || "" } ) ;
} } ) ;
}
var b = this ;
a . location ? c ( a . location ) : b . getWxLocation ( a , function ( a ) {
c ( a ) ;
} ) ;
} , AMapWX . prototype . getWeather = function ( a ) {
function d ( d ) {
var e = "base" ;
a . type && "forecast" == a . type && ( e = "all" ) , wx . request ( {
url : "https://restapi.amap.com/v3/weather/weatherInfo" ,
data : {
key : b . key ,
city : d ,
extensions : e ,
s : c . s ,
platform : c . platform ,
appname : b . key ,
sdkversion : c . sdkversion ,
logversion : c . logversion } ,
method : "GET" ,
header : {
"content-type" : "application/json" } ,
success : function success ( b ) {
function c ( a ) {
var b = {
city : {
text : "城市" ,
data : a . city } ,
weather : {
text : "天气" ,
data : a . weather } ,
temperature : {
text : "温度" ,
data : a . temperature } ,
winddirection : {
text : "风向" ,
data : a . winddirection + "风" } ,
windpower : {
text : "风力" ,
data : a . windpower + "级" } ,
humidity : {
text : "湿度" ,
data : a . humidity + "%" } } ;
return b ;
}
var d , e ;
b . data . status && "1" == b . data . status ? b . data . lives ? ( d = b . data . lives , d && d .
length > 0 && ( d = d [ 0 ] , e = c ( d ) , e [ "liveData" ] = d , a . success ( e ) ) ) : b . data .
forecasts && b . data . forecasts [ 0 ] && a . success ( {
forecast : b . data . forecasts [ 0 ] } ) :
a . fail ( {
errCode : b . data . infocode ,
errMsg : b . data . info } ) ;
} ,
fail : function fail ( b ) {
a . fail ( {
errCode : "0" ,
errMsg : b . errMsg || "" } ) ;
} } ) ;
}
function e ( e ) {
wx . request ( {
url : "https://restapi.amap.com/v3/geocode/regeo" ,
data : {
key : b . key ,
location : e ,
extensions : "all" ,
s : c . s ,
platform : c . platform ,
appname : b . key ,
sdkversion : c . sdkversion ,
logversion : c . logversion } ,
method : "GET" ,
header : {
"content-type" : "application/json" } ,
success : function success ( b ) {
var c , e ;
b . data . status && "1" == b . data . status ? ( e = b . data . regeocode , e . addressComponent ? c =
e . addressComponent . adcode : e . aois && e . aois . length > 0 && ( c = e . aois [ 0 ] .
adcode ) , d ( c ) ) : a . fail ( {
errCode : b . data . infocode ,
errMsg : b . data . info } ) ;
} ,
fail : function fail ( b ) {
a . fail ( {
errCode : "0" ,
errMsg : b . errMsg || "" } ) ;
} } ) ;
}
var b = this ,
c = b . requestConfig ;
a . city ? d ( a . city ) : b . getWxLocation ( a , function ( a ) {
e ( a ) ;
} ) ;
} , AMapWX . prototype . getPoiAround = function ( a ) {
function d ( d ) {
var e = {
key : b . key ,
location : d ,
s : c . s ,
platform : c . platform ,
appname : b . key ,
sdkversion : c . sdkversion ,
logversion : c . logversion } ;
a . querytypes && ( e [ "types" ] = a . querytypes ) , a . querykeywords && ( e [ "keywords" ] = a . querykeywords ) , wx .
request ( {
url : "https://restapi.amap.com/v3/place/around" ,
data : e ,
method : "GET" ,
header : {
"content-type" : "application/json" } ,
success : function success ( b ) {
var c , d , e , f ;
if ( b . data . status && "1" == b . data . status ) {
if ( b = b . data , b && b . pois ) {
for ( c = [ ] , d = 0 ; d < b . pois . length ; d ++ ) { e = 0 == d ? a . iconPathSelected : a .
iconPath , c . push ( {
latitude : parseFloat ( b . pois [ d ] . location . split ( "," ) [ 1 ] ) ,
longitude : parseFloat ( b . pois [ d ] . location . split ( "," ) [ 0 ] ) ,
iconPath : e ,
width : 22 ,
height : 32 ,
id : d ,
name : b . pois [ d ] . name ,
address : b . pois [ d ] . address } ) ; }
f = {
markers : c ,
poisData : b . pois } ,
a . success ( f ) ;
}
} else a . fail ( {
errCode : b . data . infocode ,
errMsg : b . data . info } ) ;
} ,
fail : function fail ( b ) {
a . fail ( {
errCode : "0" ,
errMsg : b . errMsg || "" } ) ;
} } ) ;
}
var b = this ,
c = b . requestConfig ;
a . location ? d ( a . location ) : b . getWxLocation ( a , function ( a ) {
d ( a ) ;
} ) ;
} , AMapWX . prototype . getStaticmap = function ( a ) {
function f ( b ) {
c . push ( "location=" + b ) , a . zoom && c . push ( "zoom=" + a . zoom ) , a . size && c . push ( "size=" + a . size ) , a . scale &&
c . push ( "scale=" + a . scale ) , a . markers && c . push ( "markers=" + a . markers ) , a . labels && c . push ( "labels=" +
a . labels ) , a . paths && c . push ( "paths=" + a . paths ) , a . traffic && c . push ( "traffic=" + a . traffic ) ;
var e = d + c . join ( "&" ) ;
a . success ( {
url : e } ) ;
}
var e , b = this ,
c = [ ] ,
d = "https://restapi.amap.com/v3/staticmap?" ;
c . push ( "key=" + b . key ) , e = b . requestConfig , c . push ( "s=" + e . s ) , c . push ( "platform=" + e . platform ) , c . push (
"appname=" + e . appname ) , c . push ( "sdkversion=" + e . sdkversion ) , c . push ( "logversion=" + e . logversion ) , a .
location ? f ( a . location ) : b . getWxLocation ( a , function ( a ) {
f ( a ) ;
} ) ;
} , AMapWX . prototype . getInputtips = function ( a ) {
var b = this ,
c = b . requestConfig ,
d = {
key : b . key ,
s : c . s ,
platform : c . platform ,
appname : b . key ,
sdkversion : c . sdkversion ,
logversion : c . logversion } ;
a . location && ( d [ "location" ] = a . location ) , a . keywords && ( d [ "keywords" ] = a . keywords ) , a . type && ( d [ "type" ] = a .
type ) , a . city && ( d [ "city" ] = a . city ) , a . citylimit && ( d [ "citylimit" ] = a . citylimit ) , wx . request ( {
url : "https://restapi.amap.com/v3/assistant/inputtips" ,
data : d ,
method : "GET" ,
header : {
"content-type" : "application/json" } ,
success : function success ( b ) {
b && b . data && b . data . tips && a . success ( {
tips : b . data . tips } ) ;
} ,
fail : function fail ( b ) {
a . fail ( {
errCode : "0" ,
errMsg : b . errMsg || "" } ) ;
} } ) ;
} , AMapWX . prototype . getDrivingRoute = function ( a ) {
var b = this ,
c = b . requestConfig ,
d = {
key : b . key ,
s : c . s ,
platform : c . platform ,
appname : b . key ,
sdkversion : c . sdkversion ,
logversion : c . logversion } ;
a . origin && ( d [ "origin" ] = a . origin ) , a . destination && ( d [ "destination" ] = a . destination ) , a . strategy && ( d [
"strategy" ] = a . strategy ) , a . waypoints && ( d [ "waypoints" ] = a . waypoints ) , a . avoidpolygons && ( d [
"avoidpolygons" ] = a . avoidpolygons ) , a . avoidroad && ( d [ "avoidroad" ] = a . avoidroad ) , wx . request ( {
url : "https://restapi.amap.com/v3/direction/driving" ,
data : d ,
method : "GET" ,
header : {
"content-type" : "application/json" } ,
success : function success ( b ) {
b && b . data && b . data . route && a . success ( {
paths : b . data . route . paths ,
taxi _cost : b . data . route . taxi _cost || "" } ) ;
} ,
fail : function fail ( b ) {
a . fail ( {
errCode : "0" ,
errMsg : b . errMsg || "" } ) ;
} } ) ;
} , AMapWX . prototype . getWalkingRoute = function ( a ) {
var b = this ,
c = b . requestConfig ,
d = {
key : b . key ,
s : c . s ,
platform : c . platform ,
appname : b . key ,
sdkversion : c . sdkversion ,
logversion : c . logversion } ;
a . origin && ( d [ "origin" ] = a . origin ) , a . destination && ( d [ "destination" ] = a . destination ) , wx . request ( {
url : "https://restapi.amap.com/v3/direction/walking" ,
data : d ,
method : "GET" ,
header : {
"content-type" : "application/json" } ,
success : function success ( b ) {
b && b . data && b . data . route && a . success ( {
paths : b . data . route . paths } ) ;
} ,
fail : function fail ( b ) {
a . fail ( {
errCode : "0" ,
errMsg : b . errMsg || "" } ) ;
} } ) ;
} , AMapWX . prototype . getTransitRoute = function ( a ) {
var b = this ,
c = b . requestConfig ,
d = {
key : b . key ,
s : c . s ,
platform : c . platform ,
appname : b . key ,
sdkversion : c . sdkversion ,
logversion : c . logversion } ;
a . origin && ( d [ "origin" ] = a . origin ) , a . destination && ( d [ "destination" ] = a . destination ) , a . strategy && ( d [
"strategy" ] = a . strategy ) , a . city && ( d [ "city" ] = a . city ) , a . cityd && ( d [ "cityd" ] = a . cityd ) , wx .
request ( {
url : "https://restapi.amap.com/v3/direction/transit/integrated" ,
data : d ,
method : "GET" ,
header : {
"content-type" : "application/json" } ,
success : function success ( b ) {
if ( b && b . data && b . data . route ) {
var c = b . data . route ;
a . success ( {
distance : c . distance || "" ,
taxi _cost : c . taxi _cost || "" ,
transits : c . transits } ) ;
}
} ,
fail : function fail ( b ) {
a . fail ( {
errCode : "0" ,
errMsg : b . errMsg || "" } ) ;
} } ) ;
} , AMapWX . prototype . getRidingRoute = function ( a ) {
var b = this ,
c = b . requestConfig ,
d = {
key : b . key ,
s : c . s ,
platform : c . platform ,
appname : b . key ,
sdkversion : c . sdkversion ,
logversion : c . logversion } ;
a . origin && ( d [ "origin" ] = a . origin ) , a . destination && ( d [ "destination" ] = a . destination ) , wx . request ( {
url : "https://restapi.amap.com/v4/direction/bicycling" ,
data : d ,
method : "GET" ,
header : {
"content-type" : "application/json" } ,
success : function success ( b ) {
b && b . data && b . data . data && a . success ( {
paths : b . data . data . paths } ) ;
} ,
fail : function fail ( b ) {
a . fail ( {
errCode : "0" ,
errMsg : b . errMsg || "" } ) ;
} } ) ;
} , module . exports . AMapWX = AMapWX ;
/***/ } ) ,
/***/ 2 :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . / 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 - 2021 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
) {
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 ) {
{
2021-08-27 16:01:51 +08:00
if ( vm . mpHost === 'mp-baidu' || vm . mpHost === 'mp-kuaishou' ) { //百度、快手 observer 在 setData callback 之后触发,直接忽略该 warn
2021-08-26 09:49:06 +08:00
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]' ;
// 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 _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 ) {
// NOTE 此处将 != 修改为 !==。涉及地方太多恐怕测试不到,如果出现数据对比问题,将其修改回来。
if ( currentValue !== pre [ key ] ) {
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 ) {
2021-08-28 14:23:27 +08:00
if ( Object ( { "VUE_APP_NAME" : "dengrui" , "VUE_APP_PLATFORM" : "mp-weixin" , "NODE_ENV" : "development" , "BASE_URL" : "/" } ) . VUE _APP _DEBUG ) {
2021-08-26 09:49:06 +08:00
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 ) ) {
2021-08-28 14:23:27 +08:00
if ( Object ( { "VUE_APP_NAME" : "dengrui" , "VUE_APP_PLATFORM" : "mp-weixin" , "NODE_ENV" : "development" , "BASE_URL" : "/" } ) . VUE _APP _DEBUG ) {
2021-08-26 09:49:06 +08:00
var mpInstance = vm . $scope ;
console . log ( '[' + ( + new Date ) + '][' + ( mpInstance . is || mpInstance . route ) + '][' + vm . _uid +
']:nextVueTick' ) ;
}
return nextTick ( cb , vm )
} else {
2021-08-28 14:23:27 +08:00
if ( Object ( { "VUE_APP_NAME" : "dengrui" , "VUE_APP_PLATFORM" : "mp-weixin" , "NODE_ENV" : "development" , "BASE_URL" : "/" } ) . VUE _APP _DEBUG ) {
2021-08-26 09:49:06 +08:00
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 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 ) )
}
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 ) {
2021-08-28 14:23:27 +08:00
if ( Object ( { "VUE_APP_NAME" : "dengrui" , "VUE_APP_PLATFORM" : "mp-weixin" , "NODE_ENV" : "development" , "BASE_URL" : "/" } ) . VUE _APP _DEBUG ) {
2021-08-26 09:49:06 +08:00
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 ) {
this . $scope [ 'triggerEvent' ] ( event , {
_ _args _ _ : toArray ( arguments , 1 )
} ) ;
}
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 ;
}
target [ key ] = value ;
} ;
Vue . prototype . _ _set _sync = function ( target , key , value ) {
if ( ! target ) {
target = this ;
}
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' ,
//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 ) ) )
/***/ } ) ,
/***/ 261 :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * D : / c h e n q / c h e n / u n i a p p ( 兼 小 程 序 ) / d e n g r u i / c o m p o n e n t s / c i t y / c i t y . j s * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/*! no static exports found */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , { value : true } ) ; exports . lotusAddressJson = void 0 ; var lotusAddressJson = [ { value : "110000" , name : "北京" } , { value : "120000" , name : "天津" } , { value : "130000" , name : "河北省" } , { value : "140000" , name : "山西省" } , { value : "150000" , name : "内蒙古自治区" } , { value : "210000" , name : "辽宁省" } , { value : "220000" , name : "吉林省" } , { value : "230000" , name : "黑龙江省" } , { value : "310000" , name : "上海" } , { value : "320000" , name : "江苏省" } , { value : "330000" , name : "浙江省" } , { value : "340000" , name : "安徽省" } , { value : "350000" , name : "福建省" } , { value : "360000" , name : "江西省" } , { value : "370000" , name : "山东省" } , { value : "410000" , name : "河南省" } , { value : "420000" , name : "湖北省" } , { value : "430000" , name : "湖南省" } , { value : "440000" , name : "广东省" } , { value : "450000" , name : "广西壮族自治区" } , { value : "460000" , name : "海南省" } , { value : "500000" , name : "重庆" } , { value : "510000" , name : "四川省" } , { value : "520000" , name : "贵州省" } , { value : "530000" , name : "云南省" } , { value : "540000" , name : "西藏自治区" } , { value : "610000" , name : "陕西省" } , { value : "620000" , name : "甘肃省" } , { value : "630000" , name : "青海省" } , { value : "640000" , name : "宁夏回族自治区" } , { value : "650000" , name : "新疆维吾尔自治区" } , { value : "710000" , name : "台湾" } , { value : "810000" , name : "香港特别行政区" } , { value : "820000" , name : "澳门特别行政区" } , { value : "990000" , name : "海外" } , { value : "110100" , name : "北京市" , parent : "110000" } , { value : "120100" , name : "天津市" , parent : "120000" } , { value : "130100" , name : "石家庄市" , parent : "130000" } , { value : "130200" , name : "唐山市" , parent : "130000" } , { value : "130300" , name : "秦皇岛市" , parent : "130000" } , { value : "130400" , name : "邯郸市" , parent : "130000" } , { value : "130500" , name : "邢台市" , parent : "130000" } , { value : "130600" , name : "保定市" , parent : "130000" } , { value : "130700" , name : "张家口市" , parent : "130000" } , { value : "130800" , name : "承德市" , parent : "130000" } , { value : "130900" , name : "沧州市" , parent : "130000" } , { value : "131000" , name : "廊坊市" , parent : "130000" } , { value : "131100" , name : "衡水市" , parent : "130000" } , { value : "140100" , name : "太原市" , parent : "140000" } , { value : "140200" , name : "大同市" , parent : "140000" } , { value : "140300" , name : "阳泉市" , parent : "140000" } , { value : "140400" , name : "长治市" , parent : "140000" } , { value : "140500" , name : "晋城市" , parent : "140000" } , { value : "140600" , name : "朔州市" , parent : "140000" } , { value : "140700" , name : "晋中市" , parent : "140000" } , { value : "140800" , name : "运城市" , parent : "140000" } , { value : "140900" , name : "忻州市" , parent : "140000" } , { value : "141000" , name : "临汾市" , parent : "140000" } , { value : "141100" , name : "吕梁市" , parent : "140000" } , { value : "150100" , name : "呼和浩特市" , parent : "150000" } , { value : "150200" , name : "包头市" , parent : "150000" } , { value : "150300" , name : "乌海市" , parent : "150000" } , { value : "150400" , name : "赤峰市" , parent : "150000" } , { value : "150500" , name : "通辽市" , parent : "150000" } , { value : "150600" , name : "鄂尔多斯市" , parent : "150000" } , { value : "150700" , name : "呼伦贝尔市" , parent : "150000" } , { value : "150800" , name : "巴彦淖尔市" , parent : "150000" } , { value : "150900" , name : "乌兰察布市" , parent : "150000" } , { value : "152200" , name : "兴安盟" , parent : "150000" } , { value : "152500" , name : "锡林郭勒盟" , parent : "150000" } , { value : "152900" , name : "阿拉善盟" , parent : "150000" } , { value : "210100" , name : "沈阳市" , parent : "210000" } , { value : "210200" , name : "大连市" , parent : "210000" } , { value : "210300" , name : "鞍山市" , parent : "210000" } , { value : "210400" , name : "抚顺市" , parent : "210000" } , { value : "210500" , name : "本溪市" , parent : "210000" } , { value : "210600" , name : "丹东市" , parent : "210000" } , { value : "210700" , name : " <EFBFBD> <EFBFBD>
/***/ } ) ,
/***/ 276 :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * D : / c h e n q / c h e n / u n i a p p ( 兼 小 程 序 ) / d e n g r u i / c o m p o n e n t s / l w - n o t i c e / i c o n s . j s * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/*! no static exports found */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , { value : true } ) ; exports . default = void 0 ; var _default = {
'aixin' : "\uE8AB" ,
'rules' : "\uE909" ,
'sound' : "\uE8EA" ,
'arrowright' : "\uEE02" } ; exports . default = _default ;
/***/ } ) ,
/***/ 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 ;
/***/ } ) ,
/***/ 4 :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * D : / c h e n q / c h e n / u n i a p p ( 兼 小 程 序 ) / d e n g r u i / p a g e s . j s o n * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/*! no static exports found */
/***/ ( function ( module , exports ) {
/***/ } ) ,
/***/ 48 :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . / node _modules / @ babel / runtime / regenerator / index . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/*! no static exports found */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
module . exports = _ _webpack _require _ _ ( /*! regenerator-runtime */ 49 ) ;
/***/ } ) ,
/***/ 49 :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . / node _modules / regenerator - runtime / runtime - module . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/*! no static exports found */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
/ * *
* Copyright ( c ) 2014 - present , Facebook , Inc .
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree .
* /
// This method of obtaining a reference to the global object needs to be
// kept identical to the way it is obtained in runtime.js
var g = ( function ( ) {
return this || ( typeof self === "object" && self ) ;
} ) ( ) || Function ( "return this" ) ( ) ;
// Use `getOwnPropertyNames` because not all browsers support calling
// `hasOwnProperty` on the global `self` object in a worker. See #183.
var hadRuntime = g . regeneratorRuntime &&
Object . getOwnPropertyNames ( g ) . indexOf ( "regeneratorRuntime" ) >= 0 ;
// Save the old regeneratorRuntime in case it needs to be restored later.
var oldRuntime = hadRuntime && g . regeneratorRuntime ;
// Force reevalutation of runtime.js.
g . regeneratorRuntime = undefined ;
module . exports = _ _webpack _require _ _ ( /*! ./runtime */ 50 ) ;
if ( hadRuntime ) {
// Restore the original runtime.
g . regeneratorRuntime = oldRuntime ;
} else {
// Remove the global property added by runtime.js.
try {
delete g . regeneratorRuntime ;
} catch ( e ) {
g . regeneratorRuntime = undefined ;
}
}
/***/ } ) ,
/***/ 50 :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * . / node _modules / regenerator - runtime / runtime . js * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/*! no static exports found */
/***/ ( function ( module , exports ) {
/ * *
* Copyright ( c ) 2014 - present , Facebook , Inc .
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree .
* /
! ( function ( global ) {
"use strict" ;
var Op = Object . prototype ;
var hasOwn = Op . hasOwnProperty ;
var undefined ; // More compressible than void 0.
var $Symbol = typeof Symbol === "function" ? Symbol : { } ;
var iteratorSymbol = $Symbol . iterator || "@@iterator" ;
var asyncIteratorSymbol = $Symbol . asyncIterator || "@@asyncIterator" ;
var toStringTagSymbol = $Symbol . toStringTag || "@@toStringTag" ;
var inModule = typeof module === "object" ;
var runtime = global . regeneratorRuntime ;
if ( runtime ) {
if ( inModule ) {
// If regeneratorRuntime is defined globally and we're in a module,
// make the exports object identical to regeneratorRuntime.
module . exports = runtime ;
}
// Don't bother evaluating the rest of this file if the runtime was
// already defined globally.
return ;
}
// Define the runtime globally (as expected by generated code) as either
// module.exports (if we're in a module) or a new, empty object.
runtime = global . regeneratorRuntime = inModule ? module . exports : { } ;
function wrap ( innerFn , outerFn , self , tryLocsList ) {
// If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
var protoGenerator = outerFn && outerFn . prototype instanceof Generator ? outerFn : Generator ;
var generator = Object . create ( protoGenerator . prototype ) ;
var context = new Context ( tryLocsList || [ ] ) ;
// The ._invoke method unifies the implementations of the .next,
// .throw, and .return methods.
generator . _invoke = makeInvokeMethod ( innerFn , self , context ) ;
return generator ;
}
runtime . wrap = wrap ;
// Try/catch helper to minimize deoptimizations. Returns a completion
// record like context.tryEntries[i].completion. This interface could
// have been (and was previously) designed to take a closure to be
// invoked without arguments, but in all the cases we care about we
// already have an existing method we want to call, so there's no need
// to create a new function object. We can even get away with assuming
// the method takes exactly one argument, since that happens to be true
// in every case, so we don't have to touch the arguments object. The
// only additional allocation required is the completion record, which
// has a stable shape and so hopefully should be cheap to allocate.
function tryCatch ( fn , obj , arg ) {
try {
return { type : "normal" , arg : fn . call ( obj , arg ) } ;
} catch ( err ) {
return { type : "throw" , arg : err } ;
}
}
var GenStateSuspendedStart = "suspendedStart" ;
var GenStateSuspendedYield = "suspendedYield" ;
var GenStateExecuting = "executing" ;
var GenStateCompleted = "completed" ;
// Returning this object from the innerFn has the same effect as
// breaking out of the dispatch switch statement.
var ContinueSentinel = { } ;
// Dummy constructor functions that we use as the .constructor and
// .constructor.prototype properties for functions that return Generator
// objects. For full spec compliance, you may wish to configure your
// minifier not to mangle the names of these two functions.
function Generator ( ) { }
function GeneratorFunction ( ) { }
function GeneratorFunctionPrototype ( ) { }
// This is a polyfill for %IteratorPrototype% for environments that
// don't natively support it.
var IteratorPrototype = { } ;
IteratorPrototype [ iteratorSymbol ] = function ( ) {
return this ;
} ;
var getProto = Object . getPrototypeOf ;
var NativeIteratorPrototype = getProto && getProto ( getProto ( values ( [ ] ) ) ) ;
if ( NativeIteratorPrototype &&
NativeIteratorPrototype !== Op &&
hasOwn . call ( NativeIteratorPrototype , iteratorSymbol ) ) {
// This environment has a native %IteratorPrototype%; use it instead
// of the polyfill.
IteratorPrototype = NativeIteratorPrototype ;
}
var Gp = GeneratorFunctionPrototype . prototype =
Generator . prototype = Object . create ( IteratorPrototype ) ;
GeneratorFunction . prototype = Gp . constructor = GeneratorFunctionPrototype ;
GeneratorFunctionPrototype . constructor = GeneratorFunction ;
GeneratorFunctionPrototype [ toStringTagSymbol ] =
GeneratorFunction . displayName = "GeneratorFunction" ;
// Helper for defining the .next, .throw, and .return methods of the
// Iterator interface in terms of a single ._invoke method.
function defineIteratorMethods ( prototype ) {
[ "next" , "throw" , "return" ] . forEach ( function ( method ) {
prototype [ method ] = function ( arg ) {
return this . _invoke ( method , arg ) ;
} ;
} ) ;
}
runtime . isGeneratorFunction = function ( genFun ) {
var ctor = typeof genFun === "function" && genFun . constructor ;
return ctor
? ctor === GeneratorFunction ||
// For the native GeneratorFunction constructor, the best we can
// do is to check its .name property.
( ctor . displayName || ctor . name ) === "GeneratorFunction"
: false ;
} ;
runtime . mark = function ( genFun ) {
if ( Object . setPrototypeOf ) {
Object . setPrototypeOf ( genFun , GeneratorFunctionPrototype ) ;
} else {
genFun . _ _proto _ _ = GeneratorFunctionPrototype ;
if ( ! ( toStringTagSymbol in genFun ) ) {
genFun [ toStringTagSymbol ] = "GeneratorFunction" ;
}
}
genFun . prototype = Object . create ( Gp ) ;
return genFun ;
} ;
// Within the body of any async function, `await x` is transformed to
// `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
// `hasOwn.call(value, "__await")` to determine if the yielded value is
// meant to be awaited.
runtime . awrap = function ( arg ) {
return { _ _await : arg } ;
} ;
function AsyncIterator ( generator ) {
function invoke ( method , arg , resolve , reject ) {
var record = tryCatch ( generator [ method ] , generator , arg ) ;
if ( record . type === "throw" ) {
reject ( record . arg ) ;
} else {
var result = record . arg ;
var value = result . value ;
if ( value &&
typeof value === "object" &&
hasOwn . call ( value , "__await" ) ) {
return Promise . resolve ( value . _ _await ) . then ( function ( value ) {
invoke ( "next" , value , resolve , reject ) ;
} , function ( err ) {
invoke ( "throw" , err , resolve , reject ) ;
} ) ;
}
return Promise . resolve ( value ) . then ( function ( unwrapped ) {
// When a yielded Promise is resolved, its final value becomes
// the .value of the Promise<{value,done}> result for the
// current iteration.
result . value = unwrapped ;
resolve ( result ) ;
} , function ( error ) {
// If a rejected Promise was yielded, throw the rejection back
// into the async generator function so it can be handled there.
return invoke ( "throw" , error , resolve , reject ) ;
} ) ;
}
}
var previousPromise ;
function enqueue ( method , arg ) {
function callInvokeWithMethodAndArg ( ) {
return new Promise ( function ( resolve , reject ) {
invoke ( method , arg , resolve , reject ) ;
} ) ;
}
return previousPromise =
// If enqueue has been called before, then we want to wait until
// all previous Promises have been resolved before calling invoke,
// so that results are always delivered in the correct order. If
// enqueue has not been called before, then it is important to
// call invoke immediately, without waiting on a callback to fire,
// so that the async generator function has the opportunity to do
// any necessary setup in a predictable way. This predictability
// is why the Promise constructor synchronously invokes its
// executor callback, and why async functions synchronously
// execute code before the first await. Since we implement simple
// async functions in terms of async generators, it is especially
// important to get this right, even though it requires care.
previousPromise ? previousPromise . then (
callInvokeWithMethodAndArg ,
// Avoid propagating failures to Promises returned by later
// invocations of the iterator.
callInvokeWithMethodAndArg
) : callInvokeWithMethodAndArg ( ) ;
}
// Define the unified helper method that is used to implement .next,
// .throw, and .return (see defineIteratorMethods).
this . _invoke = enqueue ;
}
defineIteratorMethods ( AsyncIterator . prototype ) ;
AsyncIterator . prototype [ asyncIteratorSymbol ] = function ( ) {
return this ;
} ;
runtime . AsyncIterator = AsyncIterator ;
// Note that simple async functions are implemented on top of
// AsyncIterator objects; they just return a Promise for the value of
// the final result produced by the iterator.
runtime . async = function ( innerFn , outerFn , self , tryLocsList ) {
var iter = new AsyncIterator (
wrap ( innerFn , outerFn , self , tryLocsList )
) ;
return runtime . isGeneratorFunction ( outerFn )
? iter // If outerFn is a generator, return the full iterator.
: iter . next ( ) . then ( function ( result ) {
return result . done ? result . value : iter . next ( ) ;
} ) ;
} ;
function makeInvokeMethod ( innerFn , self , context ) {
var state = GenStateSuspendedStart ;
return function invoke ( method , arg ) {
if ( state === GenStateExecuting ) {
throw new Error ( "Generator is already running" ) ;
}
if ( state === GenStateCompleted ) {
if ( method === "throw" ) {
throw arg ;
}
// Be forgiving, per 25.3.3.3.3 of the spec:
// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
return doneResult ( ) ;
}
context . method = method ;
context . arg = arg ;
while ( true ) {
var delegate = context . delegate ;
if ( delegate ) {
var delegateResult = maybeInvokeDelegate ( delegate , context ) ;
if ( delegateResult ) {
if ( delegateResult === ContinueSentinel ) continue ;
return delegateResult ;
}
}
if ( context . method === "next" ) {
// Setting context._sent for legacy support of Babel's
// function.sent implementation.
context . sent = context . _sent = context . arg ;
} else if ( context . method === "throw" ) {
if ( state === GenStateSuspendedStart ) {
state = GenStateCompleted ;
throw context . arg ;
}
context . dispatchException ( context . arg ) ;
} else if ( context . method === "return" ) {
context . abrupt ( "return" , context . arg ) ;
}
state = GenStateExecuting ;
var record = tryCatch ( innerFn , self , context ) ;
if ( record . type === "normal" ) {
// If an exception is thrown from innerFn, we leave state ===
// GenStateExecuting and loop back for another invocation.
state = context . done
? GenStateCompleted
: GenStateSuspendedYield ;
if ( record . arg === ContinueSentinel ) {
continue ;
}
return {
value : record . arg ,
done : context . done
} ;
} else if ( record . type === "throw" ) {
state = GenStateCompleted ;
// Dispatch the exception by looping back around to the
// context.dispatchException(context.arg) call above.
context . method = "throw" ;
context . arg = record . arg ;
}
}
} ;
}
// Call delegate.iterator[context.method](context.arg) and handle the
// result, either by returning a { value, done } result from the
// delegate iterator, or by modifying context.method and context.arg,
// setting context.delegate to null, and returning the ContinueSentinel.
function maybeInvokeDelegate ( delegate , context ) {
var method = delegate . iterator [ context . method ] ;
if ( method === undefined ) {
// A .throw or .return when the delegate iterator has no .throw
// method always terminates the yield* loop.
context . delegate = null ;
if ( context . method === "throw" ) {
if ( delegate . iterator . return ) {
// If the delegate iterator has a return method, give it a
// chance to clean up.
context . method = "return" ;
context . arg = undefined ;
maybeInvokeDelegate ( delegate , context ) ;
if ( context . method === "throw" ) {
// If maybeInvokeDelegate(context) changed context.method from
// "return" to "throw", let that override the TypeError below.
return ContinueSentinel ;
}
}
context . method = "throw" ;
context . arg = new TypeError (
"The iterator does not provide a 'throw' method" ) ;
}
return ContinueSentinel ;
}
var record = tryCatch ( method , delegate . iterator , context . arg ) ;
if ( record . type === "throw" ) {
context . method = "throw" ;
context . arg = record . arg ;
context . delegate = null ;
return ContinueSentinel ;
}
var info = record . arg ;
if ( ! info ) {
context . method = "throw" ;
context . arg = new TypeError ( "iterator result is not an object" ) ;
context . delegate = null ;
return ContinueSentinel ;
}
if ( info . done ) {
// Assign the result of the finished delegate to the temporary
// variable specified by delegate.resultName (see delegateYield).
context [ delegate . resultName ] = info . value ;
// Resume execution at the desired location (see delegateYield).
context . next = delegate . nextLoc ;
// If context.method was "throw" but the delegate handled the
// exception, let the outer generator proceed normally. If
// context.method was "next", forget context.arg since it has been
// "consumed" by the delegate iterator. If context.method was
// "return", allow the original .return call to continue in the
// outer generator.
if ( context . method !== "return" ) {
context . method = "next" ;
context . arg = undefined ;
}
} else {
// Re-yield the result returned by the delegate method.
return info ;
}
// The delegate iterator is finished, so forget it and continue with
// the outer generator.
context . delegate = null ;
return ContinueSentinel ;
}
// Define Generator.prototype.{next,throw,return} in terms of the
// unified ._invoke helper method.
defineIteratorMethods ( Gp ) ;
Gp [ toStringTagSymbol ] = "Generator" ;
// A Generator should always return itself as the iterator object when the
// @@iterator function is called on it. Some browsers' implementations of the
// iterator prototype chain incorrectly implement this, causing the Generator
// object to not be returned from this call. This ensures that doesn't happen.
// See https://github.com/facebook/regenerator/issues/274 for more details.
Gp [ iteratorSymbol ] = function ( ) {
return this ;
} ;
Gp . toString = function ( ) {
return "[object Generator]" ;
} ;
function pushTryEntry ( locs ) {
var entry = { tryLoc : locs [ 0 ] } ;
if ( 1 in locs ) {
entry . catchLoc = locs [ 1 ] ;
}
if ( 2 in locs ) {
entry . finallyLoc = locs [ 2 ] ;
entry . afterLoc = locs [ 3 ] ;
}
this . tryEntries . push ( entry ) ;
}
function resetTryEntry ( entry ) {
var record = entry . completion || { } ;
record . type = "normal" ;
delete record . arg ;
entry . completion = record ;
}
function Context ( tryLocsList ) {
// The root entry object (effectively a try statement without a catch
// or a finally block) gives us a place to store values thrown from
// locations where there is no enclosing try statement.
this . tryEntries = [ { tryLoc : "root" } ] ;
tryLocsList . forEach ( pushTryEntry , this ) ;
this . reset ( true ) ;
}
runtime . keys = function ( object ) {
var keys = [ ] ;
for ( var key in object ) {
keys . push ( key ) ;
}
keys . reverse ( ) ;
// Rather than returning an object with a next method, we keep
// things simple and return the next function itself.
return function next ( ) {
while ( keys . length ) {
var key = keys . pop ( ) ;
if ( key in object ) {
next . value = key ;
next . done = false ;
return next ;
}
}
// To avoid creating an additional object, we just hang the .value
// and .done properties off the next function object itself. This
// also ensures that the minifier will not anonymize the function.
next . done = true ;
return next ;
} ;
} ;
function values ( iterable ) {
if ( iterable ) {
var iteratorMethod = iterable [ iteratorSymbol ] ;
if ( iteratorMethod ) {
return iteratorMethod . call ( iterable ) ;
}
if ( typeof iterable . next === "function" ) {
return iterable ;
}
if ( ! isNaN ( iterable . length ) ) {
var i = - 1 , next = function next ( ) {
while ( ++ i < iterable . length ) {
if ( hasOwn . call ( iterable , i ) ) {
next . value = iterable [ i ] ;
next . done = false ;
return next ;
}
}
next . value = undefined ;
next . done = true ;
return next ;
} ;
return next . next = next ;
}
}
// Return an iterator with no values.
return { next : doneResult } ;
}
runtime . values = values ;
function doneResult ( ) {
return { value : undefined , done : true } ;
}
Context . prototype = {
constructor : Context ,
reset : function ( skipTempReset ) {
this . prev = 0 ;
this . next = 0 ;
// Resetting context._sent for legacy support of Babel's
// function.sent implementation.
this . sent = this . _sent = undefined ;
this . done = false ;
this . delegate = null ;
this . method = "next" ;
this . arg = undefined ;
this . tryEntries . forEach ( resetTryEntry ) ;
if ( ! skipTempReset ) {
for ( var name in this ) {
// Not sure about the optimal order of these conditions:
if ( name . charAt ( 0 ) === "t" &&
hasOwn . call ( this , name ) &&
! isNaN ( + name . slice ( 1 ) ) ) {
this [ name ] = undefined ;
}
}
}
} ,
stop : function ( ) {
this . done = true ;
var rootEntry = this . tryEntries [ 0 ] ;
var rootRecord = rootEntry . completion ;
if ( rootRecord . type === "throw" ) {
throw rootRecord . arg ;
}
return this . rval ;
} ,
dispatchException : function ( exception ) {
if ( this . done ) {
throw exception ;
}
var context = this ;
function handle ( loc , caught ) {
record . type = "throw" ;
record . arg = exception ;
context . next = loc ;
if ( caught ) {
// If the dispatched exception was caught by a catch block,
// then let that catch block handle the exception normally.
context . method = "next" ;
context . arg = undefined ;
}
return ! ! caught ;
}
for ( var i = this . tryEntries . length - 1 ; i >= 0 ; -- i ) {
var entry = this . tryEntries [ i ] ;
var record = entry . completion ;
if ( entry . tryLoc === "root" ) {
// Exception thrown outside of any try block that could handle
// it, so set the completion value of the entire function to
// throw the exception.
return handle ( "end" ) ;
}
if ( entry . tryLoc <= this . prev ) {
var hasCatch = hasOwn . call ( entry , "catchLoc" ) ;
var hasFinally = hasOwn . call ( entry , "finallyLoc" ) ;
if ( hasCatch && hasFinally ) {
if ( this . prev < entry . catchLoc ) {
return handle ( entry . catchLoc , true ) ;
} else if ( this . prev < entry . finallyLoc ) {
return handle ( entry . finallyLoc ) ;
}
} else if ( hasCatch ) {
if ( this . prev < entry . catchLoc ) {
return handle ( entry . catchLoc , true ) ;
}
} else if ( hasFinally ) {
if ( this . prev < entry . finallyLoc ) {
return handle ( entry . finallyLoc ) ;
}
} else {
throw new Error ( "try statement without catch or finally" ) ;
}
}
}
} ,
abrupt : function ( type , arg ) {
for ( var i = this . tryEntries . length - 1 ; i >= 0 ; -- i ) {
var entry = this . tryEntries [ i ] ;
if ( entry . tryLoc <= this . prev &&
hasOwn . call ( entry , "finallyLoc" ) &&
this . prev < entry . finallyLoc ) {
var finallyEntry = entry ;
break ;
}
}
if ( finallyEntry &&
( type === "break" ||
type === "continue" ) &&
finallyEntry . tryLoc <= arg &&
arg <= finallyEntry . finallyLoc ) {
// Ignore the finally entry if control is not jumping to a
// location outside the try/catch block.
finallyEntry = null ;
}
var record = finallyEntry ? finallyEntry . completion : { } ;
record . type = type ;
record . arg = arg ;
if ( finallyEntry ) {
this . method = "next" ;
this . next = finallyEntry . finallyLoc ;
return ContinueSentinel ;
}
return this . complete ( record ) ;
} ,
complete : function ( record , afterLoc ) {
if ( record . type === "throw" ) {
throw record . arg ;
}
if ( record . type === "break" ||
record . type === "continue" ) {
this . next = record . arg ;
} else if ( record . type === "return" ) {
this . rval = this . arg = record . arg ;
this . method = "return" ;
this . next = "end" ;
} else if ( record . type === "normal" && afterLoc ) {
this . next = afterLoc ;
}
return ContinueSentinel ;
} ,
finish : function ( finallyLoc ) {
for ( var i = this . tryEntries . length - 1 ; i >= 0 ; -- i ) {
var entry = this . tryEntries [ i ] ;
if ( entry . finallyLoc === finallyLoc ) {
this . complete ( entry . completion , entry . afterLoc ) ;
resetTryEntry ( entry ) ;
return ContinueSentinel ;
}
}
} ,
"catch" : function ( tryLoc ) {
for ( var i = this . tryEntries . length - 1 ; i >= 0 ; -- i ) {
var entry = this . tryEntries [ i ] ;
if ( entry . tryLoc === tryLoc ) {
var record = entry . completion ;
if ( record . type === "throw" ) {
var thrown = record . arg ;
resetTryEntry ( entry ) ;
}
return thrown ;
}
}
// The context.catch method must only be called with a location
// argument that corresponds to a known catch block.
throw new Error ( "illegal catch attempt" ) ;
} ,
delegateYield : function ( iterable , resultName , nextLoc ) {
this . delegate = {
iterator : values ( iterable ) ,
resultName : resultName ,
nextLoc : nextLoc
} ;
if ( this . method === "next" ) {
// Deliberately forget the last sent value so that we don't
// accidentally pass it on to the delegate.
this . arg = undefined ;
}
return ContinueSentinel ;
}
} ;
} ) (
// In sloppy mode, unbound `this` refers to the global object, fallback to
// Function constructor if we're in global strict mode. That is sadly a form
// of indirect eval which violates Content Security Policy.
( function ( ) {
return this || ( typeof self === "object" && self ) ;
} ) ( ) || Function ( "return this" ) ( )
) ;
/***/ } ) ,
/***/ 51 :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * D : / c h e n q / c h e n / u n i a p p ( 兼 小 程 序 ) / d e n g r u i / j s F i l e / q r c o d e . j s * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/*! no static exports found */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
/* WEBPACK VAR INJECTION */ ( function ( uni ) { Object . defineProperty ( exports , "__esModule" , { value : true } ) ; exports . default = void 0 ; function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } } 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 , descriptor . key , descriptor ) ; } } function _createClass ( Constructor , protoProps , staticProps ) { if ( protoProps ) _defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) _defineProperties ( Constructor , staticProps ) ; return Constructor ; } / * *
* qrcode - wx - miniprogram
* /
var QRMode = {
MODE _NUMBER : 1 << 0 ,
MODE _ALPHA _NUM : 1 << 1 ,
MODE _8BIT _BYTE : 1 << 2 ,
MODE _KANJI : 1 << 3 } ,
QRErrorCorrectLevel = {
L : 1 ,
M : 0 ,
Q : 3 ,
H : 2 } ,
QRMaskPattern = {
PATTERN000 : 0 ,
PATTERN001 : 1 ,
PATTERN010 : 2 ,
PATTERN011 : 3 ,
PATTERN100 : 4 ,
PATTERN101 : 5 ,
PATTERN110 : 6 ,
PATTERN111 : 7 } ,
QRUtil = {
PATTERN _POSITION _TABLE : [
[ ] ,
[ 6 , 18 ] ,
[ 6 , 22 ] ,
[ 6 , 26 ] ,
[ 6 , 30 ] ,
[ 6 , 34 ] ,
[ 6 , 22 , 38 ] ,
[ 6 , 24 , 42 ] ,
[ 6 , 26 , 46 ] ,
[ 6 , 28 , 50 ] ,
[ 6 , 30 , 54 ] ,
[ 6 , 32 , 58 ] ,
[ 6 , 34 , 62 ] ,
[ 6 , 26 , 46 , 66 ] ,
[ 6 , 26 , 48 , 70 ] ,
[ 6 , 26 , 50 , 74 ] ,
[ 6 , 30 , 54 , 78 ] ,
[ 6 , 30 , 56 , 82 ] ,
[ 6 , 30 , 58 , 86 ] ,
[ 6 , 34 , 62 , 90 ] ,
[ 6 , 28 , 50 , 72 , 94 ] ,
[ 6 , 26 , 50 , 74 , 98 ] ,
[ 6 , 30 , 54 , 78 , 102 ] ,
[ 6 , 28 , 54 , 80 , 106 ] ,
[ 6 , 32 , 58 , 84 , 110 ] ,
[ 6 , 30 , 58 , 86 , 114 ] ,
[ 6 , 34 , 62 , 90 , 118 ] ,
[ 6 , 26 , 50 , 74 , 98 , 122 ] ,
[ 6 , 30 , 54 , 78 , 102 , 126 ] ,
[ 6 , 26 , 52 , 78 , 104 , 130 ] ,
[ 6 , 30 , 56 , 82 , 108 , 134 ] ,
[ 6 , 34 , 60 , 86 , 112 , 138 ] ,
[ 6 , 30 , 58 , 86 , 114 , 142 ] ,
[ 6 , 34 , 62 , 90 , 118 , 146 ] ,
[ 6 , 30 , 54 , 78 , 102 , 126 , 150 ] ,
[ 6 , 24 , 50 , 76 , 102 , 128 , 154 ] ,
[ 6 , 28 , 54 , 80 , 106 , 132 , 158 ] ,
[ 6 , 32 , 58 , 84 , 110 , 136 , 162 ] ,
[ 6 , 26 , 54 , 82 , 110 , 138 , 166 ] ,
[ 6 , 30 , 58 , 86 , 114 , 142 , 170 ] ] ,
G15 : 1 << 10 | 1 << 8 | 1 << 5 | 1 << 4 | 1 << 2 | 1 << 1 | 1 << 0 ,
G18 : 1 << 12 | 1 << 11 | 1 << 10 | 1 << 9 | 1 << 8 | 1 << 5 | 1 << 2 | 1 << 0 ,
G15 _MASK : 1 << 14 | 1 << 12 | 1 << 10 | 1 << 4 | 1 << 1 ,
getBCHTypeInfo : function getBCHTypeInfo ( data ) {
var d = data << 10 ;
while ( QRUtil . getBCHDigit ( d ) - QRUtil . getBCHDigit ( QRUtil . G15 ) >= 0 ) {
d ^= QRUtil . G15 << QRUtil . getBCHDigit ( d ) - QRUtil . getBCHDigit ( QRUtil . G15 ) ;
}
return ( data << 10 | d ) ^ QRUtil . G15 _MASK ;
} ,
getBCHTypeNumber : function getBCHTypeNumber ( data ) {
var d = data << 12 ;
while ( QRUtil . getBCHDigit ( d ) - QRUtil . getBCHDigit ( QRUtil . G18 ) >= 0 ) {
d ^= QRUtil . G18 << QRUtil . getBCHDigit ( d ) - QRUtil . getBCHDigit ( QRUtil . G18 ) ;
}
return data << 12 | d ;
} ,
getBCHDigit : function getBCHDigit ( data ) {
var digit = 0 ;
while ( data != 0 ) {
digit ++ ;
data >>>= 1 ;
}
return digit ;
} ,
getPatternPosition : function getPatternPosition ( typeNumber ) {
return QRUtil . PATTERN _POSITION _TABLE [ typeNumber - 1 ] ;
} ,
getMask : function getMask ( maskPattern , i , j ) {
switch ( maskPattern ) {
case QRMaskPattern . PATTERN000 :
return ( i + j ) % 2 == 0 ;
case QRMaskPattern . PATTERN001 :
return i % 2 == 0 ;
case QRMaskPattern . PATTERN010 :
return j % 3 == 0 ;
case QRMaskPattern . PATTERN011 :
return ( i + j ) % 3 == 0 ;
case QRMaskPattern . PATTERN100 :
return ( Math . floor ( i / 2 ) + Math . floor ( j / 3 ) ) % 2 == 0 ;
case QRMaskPattern . PATTERN101 :
return i * j % 2 + i * j % 3 == 0 ;
case QRMaskPattern . PATTERN110 :
return ( i * j % 2 + i * j % 3 ) % 2 == 0 ;
case QRMaskPattern . PATTERN111 :
return ( i * j % 3 + ( i + j ) % 2 ) % 2 == 0 ;
default :
//throw new Error("bad maskPattern:" + maskPattern);
throwError ( "bad maskPattern:" + maskPattern ) ; }
} ,
getErrorCorrectPolynomial : function getErrorCorrectPolynomial ( errorCorrectLength ) {
var a = new QRPolynomial ( [ 1 ] , 0 ) ;
for ( var i = 0 ; i < errorCorrectLength ; i ++ ) {
a = a . multiply ( new QRPolynomial ( [ 1 , QRMath . gexp ( i ) ] , 0 ) ) ;
}
return a ;
} ,
getLengthInBits : function getLengthInBits ( mode , type ) {
if ( 1 <= type && type < 10 ) {
switch ( mode ) {
case QRMode . MODE _NUMBER :
return 10 ;
case QRMode . MODE _ALPHA _NUM :
return 9 ;
case QRMode . MODE _8BIT _BYTE :
return 8 ;
case QRMode . MODE _KANJI :
return 8 ;
default :
//throw new Error("mode:" + mode);
throwError ( "mode:" + mode ) ; }
} else if ( type < 27 ) {
switch ( mode ) {
case QRMode . MODE _NUMBER :
return 12 ;
case QRMode . MODE _ALPHA _NUM :
return 11 ;
case QRMode . MODE _8BIT _BYTE :
return 16 ;
case QRMode . MODE _KANJI :
return 10 ;
default :
//throw new Error("mode:" + mode);
throwError ( "mode:" + mode ) ; }
} else if ( type < 41 ) {
switch ( mode ) {
case QRMode . MODE _NUMBER :
return 14 ;
case QRMode . MODE _ALPHA _NUM :
return 13 ;
case QRMode . MODE _8BIT _BYTE :
return 16 ;
case QRMode . MODE _KANJI :
return 12 ;
default :
//throw new Error("mode:" + mode);
throwError ( "mode:" + mode ) ; }
} else {
//throw new Error("type:" + type);
throwError ( "type:" + type ) ;
}
} ,
getLostPoint : function getLostPoint ( qrCode ) {
var moduleCount = qrCode . getModuleCount ( ) ;
var lostPoint = 0 ;
for ( var row = 0 ; row < moduleCount ; row ++ ) {
for ( var col = 0 ; col < moduleCount ; col ++ ) {
var sameCount = 0 ;
var dark = qrCode . isDark ( row , col ) ;
for ( var r = - 1 ; r <= 1 ; r ++ ) {
if ( row + r < 0 || moduleCount <= row + r ) {
continue ;
}
for ( var c = - 1 ; c <= 1 ; c ++ ) {
if ( col + c < 0 || moduleCount <= col + c ) {
continue ;
}
if ( r == 0 && c == 0 ) {
continue ;
}
if ( dark == qrCode . isDark ( row + r , col + c ) ) {
sameCount ++ ;
}
}
}
if ( sameCount > 5 ) {
lostPoint += 3 + sameCount - 5 ;
}
}
}
for ( var row = 0 ; row < moduleCount - 1 ; row ++ ) {
for ( var col = 0 ; col < moduleCount - 1 ; col ++ ) {
var count = 0 ;
if ( qrCode . isDark ( row , col ) ) count ++ ;
if ( qrCode . isDark ( row + 1 , col ) ) count ++ ;
if ( qrCode . isDark ( row , col + 1 ) ) count ++ ;
if ( qrCode . isDark ( row + 1 , col + 1 ) ) count ++ ;
if ( count == 0 || count == 4 ) {
lostPoint += 3 ;
}
}
}
for ( var row = 0 ; row < moduleCount ; row ++ ) {
for ( var col = 0 ; col < moduleCount - 6 ; col ++ ) {
if ( qrCode . isDark ( row , col ) && ! qrCode . isDark ( row , col + 1 ) && qrCode . isDark ( row , col + 2 ) &&
qrCode . isDark ( row , col + 3 ) && qrCode . isDark ( row , col + 4 ) && ! qrCode . isDark ( row , col +
5 ) && qrCode . isDark ( row , col + 6 ) ) {
lostPoint += 40 ;
}
}
}
for ( var col = 0 ; col < moduleCount ; col ++ ) {
for ( var row = 0 ; row < moduleCount - 6 ; row ++ ) {
if ( qrCode . isDark ( row , col ) && ! qrCode . isDark ( row + 1 , col ) && qrCode . isDark ( row + 2 , col ) &&
qrCode . isDark ( row + 3 , col ) && qrCode . isDark ( row + 4 , col ) && ! qrCode . isDark ( row + 5 ,
col ) && qrCode . isDark ( row + 6 , col ) ) {
lostPoint += 40 ;
}
}
}
var darkCount = 0 ;
for ( var col = 0 ; col < moduleCount ; col ++ ) {
for ( var row = 0 ; row < moduleCount ; row ++ ) {
if ( qrCode . isDark ( row , col ) ) {
darkCount ++ ;
}
}
}
var ratio = Math . abs ( 100 * darkCount / moduleCount / moduleCount - 50 ) / 5 ;
lostPoint += ratio * 10 ;
return lostPoint ;
} } ,
QRMath = {
glog : function glog ( n ) {
if ( n < 1 ) {
//throw new Error("glog(" + n + ")");
throwError ( "glog(" + n + ")" ) ;
}
return QRMath . LOG _TABLE [ n ] ;
} ,
gexp : function gexp ( n ) {
while ( n < 0 ) {
n += 255 ;
}
while ( n >= 256 ) {
n -= 255 ;
}
return QRMath . EXP _TABLE [ n ] ;
} ,
EXP _TABLE : new Array ( 256 ) ,
LOG _TABLE : new Array ( 256 ) } ;
for ( var i = 0 ; i < 8 ; i ++ ) {
QRMath . EXP _TABLE [ i ] = 1 << i ;
}
for ( var _i = 8 ; _i < 256 ; _i ++ ) {
QRMath . EXP _TABLE [ _i ] = QRMath . EXP _TABLE [ _i - 4 ] ^ QRMath . EXP _TABLE [ _i - 5 ] ^ QRMath . EXP _TABLE [ _i - 6 ] ^ QRMath .
EXP _TABLE [ _i - 8 ] ;
}
for ( var _i2 = 0 ; _i2 < 255 ; _i2 ++ ) {
QRMath . LOG _TABLE [ QRMath . EXP _TABLE [ _i2 ] ] = _i2 ;
}
/ *
* class QR8bitByte
* * / v a r
QR8bitByte = /*#__PURE__*/ function ( ) {
function QR8bitByte ( data ) { _classCallCheck ( this , QR8bitByte ) ;
this . mode = QRMode . MODE _8BIT _BYTE ;
this . data = data ;
this . parsedData = [ ] ;
// Added to support UTF-8 Characters
for ( var _i3 = 0 , l = this . data . length ; _i3 < l ; _i3 ++ ) {
var byteArray = [ ] ,
code = this . data . charCodeAt ( _i3 ) ;
if ( code > 0x10000 ) {
byteArray [ 0 ] = 0xF0 | ( code & 0x1C0000 ) >>> 18 ;
byteArray [ 1 ] = 0x80 | ( code & 0x3F000 ) >>> 12 ;
byteArray [ 2 ] = 0x80 | ( code & 0xFC0 ) >>> 6 ;
byteArray [ 3 ] = 0x80 | code & 0x3F ;
} else if ( code > 0x800 ) {
byteArray [ 0 ] = 0xE0 | ( code & 0xF000 ) >>> 12 ;
byteArray [ 1 ] = 0x80 | ( code & 0xFC0 ) >>> 6 ;
byteArray [ 2 ] = 0x80 | code & 0x3F ;
} else if ( code > 0x80 ) {
byteArray [ 0 ] = 0xC0 | ( code & 0x7C0 ) >>> 6 ;
byteArray [ 1 ] = 0x80 | code & 0x3F ;
} else {
byteArray [ 0 ] = code ;
}
this . parsedData . push ( byteArray ) ;
}
this . parsedData = Array . prototype . concat . apply ( [ ] , this . parsedData ) ;
if ( this . parsedData . length !== this . data . length ) {
this . parsedData . unshift ( 191 ) ;
this . parsedData . unshift ( 187 ) ;
this . parsedData . unshift ( 239 ) ;
}
} _createClass ( QR8bitByte , [ { key : "getLength" , value : function getLength (
buffer ) {
return this . parsedData . length ;
} } , { key : "write" , value : function write (
buffer ) {
for ( var _i4 = 0 , l = this . parsedData . length ; _i4 < l ; _i4 ++ ) {
buffer . put ( this . parsedData [ _i4 ] , 8 ) ;
}
} } ] ) ; return QR8bitByte ; } ( ) ;
/ *
* class QRCodeModel
* * / v a r
QRCodeModel = /*#__PURE__*/ function ( ) {
function QRCodeModel ( typeNumber , errorCorrectLevel ) { _classCallCheck ( this , QRCodeModel ) ;
this . typeNumber = typeNumber ;
this . errorCorrectLevel = errorCorrectLevel ;
this . modules = null ;
this . moduleCount = 0 ;
this . dataCache = null ;
this . dataList = [ ] ;
} _createClass ( QRCodeModel , [ { key : "addData" , value : function addData (
data ) {
var newData = new QR8bitByte ( data ) ;
this . dataList . push ( newData ) ;
this . dataCache = null ;
} } , { key : "isDark" , value : function isDark (
row , col ) {
if ( row < 0 || this . moduleCount <= row || col < 0 || this . moduleCount <= col ) {
//throw new Error(row + ',' + col);
throwError ( row + ',' + col ) ;
}
return this . modules [ row ] [ col ] ;
} } , { key : "getModuleCount" , value : function getModuleCount ( )
{
return this . moduleCount ;
} } , { key : "make" , value : function make ( )
{
this . makeImpl ( false , this . getBestMaskPattern ( ) ) ;
} } , { key : "makeImpl" , value : function makeImpl (
test , maskPattern ) {
this . moduleCount = this . typeNumber * 4 + 17 ;
this . modules = new Array ( this . moduleCount ) ;
for ( var row = 0 ; row < this . moduleCount ; row ++ ) {
this . modules [ row ] = new Array ( this . moduleCount ) ;
for ( var col = 0 ; col < this . moduleCount ; col ++ ) {
this . modules [ row ] [ col ] = null ;
}
}
this . setupPositionProbePattern ( 0 , 0 ) ;
this . setupPositionProbePattern ( this . moduleCount - 7 , 0 ) ;
this . setupPositionProbePattern ( 0 , this . moduleCount - 7 ) ;
this . setupPositionAdjustPattern ( ) ;
this . setupTimingPattern ( ) ;
this . setupTypeInfo ( test , maskPattern ) ;
if ( this . typeNumber >= 7 ) {
this . setupTypeNumber ( test ) ;
}
if ( this . dataCache == null ) {
this . dataCache = QRCodeModel . createData ( this . typeNumber , this . errorCorrectLevel , this . dataList ) ;
}
this . mapData ( this . dataCache , maskPattern ) ;
} } , { key : "setupPositionProbePattern" , value : function setupPositionProbePattern (
row , col ) {
for ( var r = - 1 ; r <= 7 ; r ++ ) {
if ( row + r <= - 1 || this . moduleCount <= row + r ) {
continue ;
}
for ( var c = - 1 ; c <= 7 ; c ++ ) {
if ( col + c <= - 1 || this . moduleCount <= col + c ) {
continue ;
}
this . modules [ row + r ] [ col + c ] = 0 <= r && r <= 6 && ( c == 0 || c == 6 ) ||
0 <= c && c <= 6 && ( r == 0 || r == 6 ) || 2 <= r && r <= 4 && 2 <= c && c <= 4 ;
}
}
} } , { key : "getBestMaskPattern" , value : function getBestMaskPattern ( )
{
var minLostPoint = 0 ,
pattern = 0 ;
for ( var _i5 = 0 ; _i5 < 8 ; _i5 ++ ) {
this . makeImpl ( true , _i5 ) ;
var lostPoint = QRUtil . getLostPoint ( this ) ;
if ( _i5 == 0 || minLostPoint > lostPoint ) {
minLostPoint = lostPoint ;
pattern = _i5 ;
}
}
return pattern ;
} } , { key : "setupTimingPattern" , value : function setupTimingPattern ( )
{
for ( var r = 8 ; r < this . moduleCount - 8 ; r ++ ) {
if ( this . modules [ r ] [ 6 ] != null ) {
continue ;
}
this . modules [ r ] [ 6 ] = r % 2 == 0 ;
}
for ( var c = 8 ; c < this . moduleCount - 8 ; c ++ ) {
if ( this . modules [ 6 ] [ c ] != null ) {
continue ;
}
this . modules [ 6 ] [ c ] = c % 2 == 0 ;
}
} } , { key : "setupPositionAdjustPattern" , value : function setupPositionAdjustPattern ( )
{
var pos = QRUtil . getPatternPosition ( this . typeNumber ) ;
for ( var _i6 = 0 ; _i6 < pos . length ; _i6 ++ ) {
for ( var j = 0 ; j < pos . length ; j ++ ) {
var row = pos [ _i6 ] ,
col = pos [ j ] ;
if ( this . modules [ row ] [ col ] != null ) {
continue ;
}
for ( var r = - 2 ; r <= 2 ; r ++ ) {
for ( var c = - 2 ; c <= 2 ; c ++ ) {
this . modules [ row + r ] [ col + c ] = r == - 2 || r == 2 || c == - 2 || c == 2 || r == 0 && c ==
0 ;
}
}
}
}
} } , { key : "setupTypeNumber" , value : function setupTypeNumber (
test ) {
var bits = QRUtil . getBCHTypeNumber ( this . typeNumber ) ;
for ( var _i7 = 0 ; _i7 < 18 ; _i7 ++ ) {
this . modules [ Math . floor ( _i7 / 3 ) ] [ _i7 % 3 + this . moduleCount - 8 - 3 ] = ! test && ( bits >> _i7 & 1 ) == 1 ;
}
for ( var _i8 = 0 ; _i8 < 18 ; _i8 ++ ) {
this . modules [ _i8 % 3 + this . moduleCount - 8 - 3 ] [ Math . floor ( _i8 / 3 ) ] = ! test && ( bits >> _i8 & 1 ) == 1 ;
}
} } , { key : "setupTypeInfo" , value : function setupTypeInfo (
test , maskPattern ) {
var data = this . errorCorrectLevel << 3 | maskPattern ,
bits = QRUtil . getBCHTypeInfo ( data ) ;
for ( var _i9 = 0 ; _i9 < 15 ; _i9 ++ ) {
var mod = ! test && ( bits >> _i9 & 1 ) == 1 ;
if ( _i9 < 6 ) {
this . modules [ _i9 ] [ 8 ] = mod ;
} else if ( _i9 < 8 ) {
this . modules [ _i9 + 1 ] [ 8 ] = mod ;
} else {
this . modules [ this . moduleCount - 15 + _i9 ] [ 8 ] = mod ;
}
}
for ( var _i10 = 0 ; _i10 < 15 ; _i10 ++ ) {
var _mod = ! test && ( bits >> _i10 & 1 ) == 1 ;
if ( _i10 < 8 ) {
this . modules [ 8 ] [ this . moduleCount - _i10 - 1 ] = _mod ;
} else if ( _i10 < 9 ) {
this . modules [ 8 ] [ 15 - _i10 - 1 + 1 ] = _mod ;
} else {
this . modules [ 8 ] [ 15 - _i10 - 1 ] = _mod ;
}
}
this . modules [ this . moduleCount - 8 ] [ 8 ] = ! test ;
} } , { key : "mapData" , value : function mapData (
data , maskPattern ) {
var inc = - 1 ,
row = this . moduleCount - 1 ,
bitIndex = 7 ,
byteIndex = 0 ;
for ( var col = this . moduleCount - 1 ; col > 0 ; col -= 2 ) {
if ( col == 6 ) col -- ;
while ( true ) {
for ( var c = 0 ; c < 2 ; c ++ ) {
if ( this . modules [ row ] [ col - c ] == null ) {
var dark = false ;
if ( byteIndex < data . length ) {
dark = ( data [ byteIndex ] >>> bitIndex & 1 ) == 1 ;
}
var mask = QRUtil . getMask ( maskPattern , row , col - c ) ;
if ( mask ) {
dark = ! dark ;
}
this . modules [ row ] [ col - c ] = dark ;
bitIndex -- ;
if ( bitIndex == - 1 ) {
byteIndex ++ ;
bitIndex = 7 ;
}
}
}
row += inc ;
if ( row < 0 || this . moduleCount <= row ) {
row -= inc ;
inc = - inc ;
break ;
}
}
}
} } ] ) ; return QRCodeModel ; } ( ) ;
QRCodeModel . PAD0 = 0xEC ;
QRCodeModel . PAD1 = 0x11 ;
QRCodeModel . createData = function ( typeNumber , errorCorrectLevel , dataList ) {
var rsBlocks = QRRSBlock . getRSBlocks ( typeNumber , errorCorrectLevel ) ,
buffer = new QRBitBuffer ( ) ;
for ( var _i11 = 0 ; _i11 < dataList . length ; _i11 ++ ) {
var data = dataList [ _i11 ] ;
buffer . put ( data . mode , 4 ) ;
buffer . put ( data . getLength ( ) , QRUtil . getLengthInBits ( data . mode , typeNumber ) ) ;
data . write ( buffer ) ;
}
var totalDataCount = 0 ;
for ( var _i12 = 0 ; _i12 < rsBlocks . length ; _i12 ++ ) {
totalDataCount += rsBlocks [ _i12 ] . dataCount ;
}
if ( buffer . getLengthInBits ( ) > totalDataCount * 8 ) {
/ *
throw new Error ( "code length overflow. (" +
buffer . getLengthInBits ( ) +
">" +
totalDataCount * 8 +
")" ) ;
* /
throwError ( "code length overflow. (" +
buffer . getLengthInBits ( ) +
">" +
totalDataCount * 8 +
")" ) ;
}
if ( buffer . getLengthInBits ( ) + 4 <= totalDataCount * 8 ) {
buffer . put ( 0 , 4 ) ;
}
while ( buffer . getLengthInBits ( ) % 8 != 0 ) {
buffer . putBit ( false ) ;
}
while ( true ) {
if ( buffer . getLengthInBits ( ) >= totalDataCount * 8 ) {
break ;
}
buffer . put ( QRCodeModel . PAD0 , 8 ) ;
if ( buffer . getLengthInBits ( ) >= totalDataCount * 8 ) {
break ;
}
buffer . put ( QRCodeModel . PAD1 , 8 ) ;
}
return QRCodeModel . createBytes ( buffer , rsBlocks ) ;
} ;
QRCodeModel . createBytes = function ( buffer , rsBlocks ) {
var offset = 0 ,
maxDcCount = 0 ,
maxEcCount = 0 ,
dcData = new Array ( rsBlocks . length ) ,
ecData = new Array ( rsBlocks . length ) ;
for ( var r = 0 ; r < rsBlocks . length ; r ++ ) {
var dcCount = rsBlocks [ r ] . dataCount ,
ecCount = rsBlocks [ r ] . totalCount - dcCount ;
maxDcCount = Math . max ( maxDcCount , dcCount ) ;
maxEcCount = Math . max ( maxEcCount , ecCount ) ;
dcData [ r ] = new Array ( dcCount ) ;
for ( var _i13 = 0 ; _i13 < dcData [ r ] . length ; _i13 ++ ) {
dcData [ r ] [ _i13 ] = 0xff & buffer . buffer [ _i13 + offset ] ;
}
offset += dcCount ;
var rsPoly = QRUtil . getErrorCorrectPolynomial ( ecCount ) ,
rawPoly = new QRPolynomial ( dcData [ r ] , rsPoly . getLength ( ) - 1 ) ,
modPoly = rawPoly . mod ( rsPoly ) ;
ecData [ r ] = new Array ( rsPoly . getLength ( ) - 1 ) ;
for ( var _i14 = 0 ; _i14 < ecData [ r ] . length ; _i14 ++ ) {
var modIndex = _i14 + modPoly . getLength ( ) - ecData [ r ] . length ;
ecData [ r ] [ _i14 ] = modIndex >= 0 ? modPoly . get ( modIndex ) : 0 ;
}
}
var totalCodeCount = 0 ;
for ( var _i15 = 0 ; _i15 < rsBlocks . length ; _i15 ++ ) {
totalCodeCount += rsBlocks [ _i15 ] . totalCount ;
}
var data = new Array ( totalCodeCount ) ,
index = 0 ;
for ( var _i16 = 0 ; _i16 < maxDcCount ; _i16 ++ ) {
for ( var _r = 0 ; _r < rsBlocks . length ; _r ++ ) {
if ( _i16 < dcData [ _r ] . length ) {
data [ index ++ ] = dcData [ _r ] [ _i16 ] ;
}
}
}
for ( var _i17 = 0 ; _i17 < maxEcCount ; _i17 ++ ) {
for ( var _r2 = 0 ; _r2 < rsBlocks . length ; _r2 ++ ) {
if ( _i17 < ecData [ _r2 ] . length ) {
data [ index ++ ] = ecData [ _r2 ] [ _i17 ] ;
}
}
}
return data ;
} ;
/ *
* class QRPolynomial
* * / v a r
QRPolynomial = /*#__PURE__*/ function ( ) {
function QRPolynomial ( num , shift ) { _classCallCheck ( this , QRPolynomial ) ;
if ( num . length == undefined ) {
//throw new Error(num.length + '/' + shift);
throwError ( num . length + '/' + shift ) ;
}
var offset = 0 ;
while ( offset < num . length && num [ offset ] == 0 ) {
offset ++ ;
}
this . num = new Array ( num . length - offset + shift ) ;
for ( var _i18 = 0 ; _i18 < num . length - offset ; _i18 ++ ) {
this . num [ _i18 ] = num [ _i18 + offset ] ;
}
} _createClass ( QRPolynomial , [ { key : "get" , value : function get (
index ) {
return this . num [ index ] ;
} } , { key : "getLength" , value : function getLength ( )
{
return this . num . length ;
} } , { key : "multiply" , value : function multiply (
e ) {
var num = new Array ( this . getLength ( ) + e . getLength ( ) - 1 ) ;
for ( var _i19 = 0 ; _i19 < this . getLength ( ) ; _i19 ++ ) {
for ( var j = 0 ; j < e . getLength ( ) ; j ++ ) {
num [ _i19 + j ] ^= QRMath . gexp ( QRMath . glog ( this . get ( _i19 ) ) + QRMath . glog ( e . get ( j ) ) ) ;
}
}
return new QRPolynomial ( num , 0 ) ;
} } , { key : "mod" , value : function mod (
e ) {
if ( this . getLength ( ) - e . getLength ( ) < 0 ) {
return this ;
}
var ratio = QRMath . glog ( this . get ( 0 ) ) - QRMath . glog ( e . get ( 0 ) ) ,
num = new Array ( this . getLength ( ) ) ;
for ( var _i20 = 0 ; _i20 < this . getLength ( ) ; _i20 ++ ) {
num [ _i20 ] = this . get ( _i20 ) ;
}
for ( var _i21 = 0 ; _i21 < e . getLength ( ) ; _i21 ++ ) {
num [ _i21 ] ^= QRMath . gexp ( QRMath . glog ( e . get ( _i21 ) ) + ratio ) ;
}
return new QRPolynomial ( num , 0 ) . mod ( e ) ;
} } ] ) ; return QRPolynomial ; } ( ) ;
/ *
* class QRRSBlock
* * / v a r
QRRSBlock =
function QRRSBlock ( totalCount , dataCount ) { _classCallCheck ( this , QRRSBlock ) ;
this . totalCount = totalCount ;
this . dataCount = dataCount ;
} ;
QRRSBlock . RS _BLOCK _TABLE = [
[ 1 , 26 , 19 ] ,
[ 1 , 26 , 16 ] ,
[ 1 , 26 , 13 ] ,
[ 1 , 26 , 9 ] ,
[ 1 , 44 , 34 ] ,
[ 1 , 44 , 28 ] ,
[ 1 , 44 , 22 ] ,
[ 1 , 44 , 16 ] ,
[ 1 , 70 , 55 ] ,
[ 1 , 70 , 44 ] ,
[ 2 , 35 , 17 ] ,
[ 2 , 35 , 13 ] ,
[ 1 , 100 , 80 ] ,
[ 2 , 50 , 32 ] ,
[ 2 , 50 , 24 ] ,
[ 4 , 25 , 9 ] ,
[ 1 , 134 , 108 ] ,
[ 2 , 67 , 43 ] ,
[ 2 , 33 , 15 , 2 , 34 , 16 ] ,
[ 2 , 33 , 11 , 2 , 34 , 12 ] ,
[ 2 , 86 , 68 ] ,
[ 4 , 43 , 27 ] ,
[ 4 , 43 , 19 ] ,
[ 4 , 43 , 15 ] ,
[ 2 , 98 , 78 ] ,
[ 4 , 49 , 31 ] ,
[ 2 , 32 , 14 , 4 , 33 , 15 ] ,
[ 4 , 39 , 13 , 1 , 40 , 14 ] ,
[ 2 , 121 , 97 ] ,
[ 2 , 60 , 38 , 2 , 61 , 39 ] ,
[ 4 , 40 , 18 , 2 , 41 , 19 ] ,
[ 4 , 40 , 14 , 2 , 41 , 15 ] ,
[ 2 , 146 , 116 ] ,
[ 3 , 58 , 36 , 2 , 59 , 37 ] ,
[ 4 , 36 , 16 , 4 , 37 , 17 ] ,
[ 4 , 36 , 12 , 4 , 37 , 13 ] ,
[ 2 , 86 , 68 , 2 , 87 , 69 ] ,
[ 4 , 69 , 43 , 1 , 70 , 44 ] ,
[ 6 , 43 , 19 , 2 , 44 , 20 ] ,
[ 6 , 43 , 15 , 2 , 44 , 16 ] ,
[ 4 , 101 , 81 ] ,
[ 1 , 80 , 50 , 4 , 81 , 51 ] ,
[ 4 , 50 , 22 , 4 , 51 , 23 ] ,
[ 3 , 36 , 12 , 8 , 37 , 13 ] ,
[ 2 , 116 , 92 , 2 , 117 , 93 ] ,
[ 6 , 58 , 36 , 2 , 59 , 37 ] ,
[ 4 , 46 , 20 , 6 , 47 , 21 ] ,
[ 7 , 42 , 14 , 4 , 43 , 15 ] ,
[ 4 , 133 , 107 ] ,
[ 8 , 59 , 37 , 1 , 60 , 38 ] ,
[ 8 , 44 , 20 , 4 , 45 , 21 ] ,
[ 12 , 33 , 11 , 4 , 34 , 12 ] ,
[ 3 , 145 , 115 , 1 , 146 , 116 ] ,
[ 4 , 64 , 40 , 5 , 65 , 41 ] ,
[ 11 , 36 , 16 , 5 , 37 , 17 ] ,
[ 11 , 36 , 12 , 5 , 37 , 13 ] ,
[ 5 , 109 , 87 , 1 , 110 , 88 ] ,
[ 5 , 65 , 41 , 5 , 66 , 42 ] ,
[ 5 , 54 , 24 , 7 , 55 , 25 ] ,
[ 11 , 36 , 12 ] ,
[ 5 , 122 , 98 , 1 , 123 , 99 ] ,
[ 7 , 73 , 45 , 3 , 74 , 46 ] ,
[ 15 , 43 , 19 , 2 , 44 , 20 ] ,
[ 3 , 45 , 15 , 13 , 46 , 16 ] ,
[ 1 , 135 , 107 , 5 , 136 , 108 ] ,
[ 10 , 74 , 46 , 1 , 75 , 47 ] ,
[ 1 , 50 , 22 , 15 , 51 , 23 ] ,
[ 2 , 42 , 14 , 17 , 43 , 15 ] ,
[ 5 , 150 , 120 , 1 , 151 , 121 ] ,
[ 9 , 69 , 43 , 4 , 70 , 44 ] ,
[ 17 , 50 , 22 , 1 , 51 , 23 ] ,
[ 2 , 42 , 14 , 19 , 43 , 15 ] ,
[ 3 , 141 , 113 , 4 , 142 , 114 ] ,
[ 3 , 70 , 44 , 11 , 71 , 45 ] ,
[ 17 , 47 , 21 , 4 , 48 , 22 ] ,
[ 9 , 39 , 13 , 16 , 40 , 14 ] ,
[ 3 , 135 , 107 , 5 , 136 , 108 ] ,
[ 3 , 67 , 41 , 13 , 68 , 42 ] ,
[ 15 , 54 , 24 , 5 , 55 , 25 ] ,
[ 15 , 43 , 15 , 10 , 44 , 16 ] ,
[ 4 , 144 , 116 , 4 , 145 , 117 ] ,
[ 17 , 68 , 42 ] ,
[ 17 , 50 , 22 , 6 , 51 , 23 ] ,
[ 19 , 46 , 16 , 6 , 47 , 17 ] ,
[ 2 , 139 , 111 , 7 , 140 , 112 ] ,
[ 17 , 74 , 46 ] ,
[ 7 , 54 , 24 , 16 , 55 , 25 ] ,
[ 34 , 37 , 13 ] ,
[ 4 , 151 , 121 , 5 , 152 , 122 ] ,
[ 4 , 75 , 47 , 14 , 76 , 48 ] ,
[ 11 , 54 , 24 , 14 , 55 , 25 ] ,
[ 16 , 45 , 15 , 14 , 46 , 16 ] ,
[ 6 , 147 , 117 , 4 , 148 , 118 ] ,
[ 6 , 73 , 45 , 14 , 74 , 46 ] ,
[ 11 , 54 , 24 , 16 , 55 , 25 ] ,
[ 30 , 46 , 16 , 2 , 47 , 17 ] ,
[ 8 , 132 , 106 , 4 , 133 , 107 ] ,
[ 8 , 75 , 47 , 13 , 76 , 48 ] ,
[ 7 , 54 , 24 , 22 , 55 , 25 ] ,
[ 22 , 45 , 15 , 13 , 46 , 16 ] ,
[ 10 , 142 , 114 , 2 , 143 , 115 ] ,
[ 19 , 74 , 46 , 4 , 75 , 47 ] ,
[ 28 , 50 , 22 , 6 , 51 , 23 ] ,
[ 33 , 46 , 16 , 4 , 47 , 17 ] ,
[ 8 , 152 , 122 , 4 , 153 , 123 ] ,
[ 22 , 73 , 45 , 3 , 74 , 46 ] ,
[ 8 , 53 , 23 , 26 , 54 , 24 ] ,
[ 12 , 45 , 15 , 28 , 46 , 16 ] ,
[ 3 , 147 , 117 , 10 , 148 , 118 ] ,
[ 3 , 73 , 45 , 23 , 74 , 46 ] ,
[ 4 , 54 , 24 , 31 , 55 , 25 ] ,
[ 11 , 45 , 15 , 31 , 46 , 16 ] ,
[ 7 , 146 , 116 , 7 , 147 , 117 ] ,
[ 21 , 73 , 45 , 7 , 74 , 46 ] ,
[ 1 , 53 , 23 , 37 , 54 , 24 ] ,
[ 19 , 45 , 15 , 26 , 46 , 16 ] ,
[ 5 , 145 , 115 , 10 , 146 , 116 ] ,
[ 19 , 75 , 47 , 10 , 76 , 48 ] ,
[ 15 , 54 , 24 , 25 , 55 , 25 ] ,
[ 23 , 45 , 15 , 25 , 46 , 16 ] ,
[ 13 , 145 , 115 , 3 , 146 , 116 ] ,
[ 2 , 74 , 46 , 29 , 75 , 47 ] ,
[ 42 , 54 , 24 , 1 , 55 , 25 ] ,
[ 23 , 45 , 15 , 28 , 46 , 16 ] ,
[ 17 , 145 , 115 ] ,
[ 10 , 74 , 46 , 23 , 75 , 47 ] ,
[ 10 , 54 , 24 , 35 , 55 , 25 ] ,
[ 19 , 45 , 15 , 35 , 46 , 16 ] ,
[ 17 , 145 , 115 , 1 , 146 , 116 ] ,
[ 14 , 74 , 46 , 21 , 75 , 47 ] ,
[ 29 , 54 , 24 , 19 , 55 , 25 ] ,
[ 11 , 45 , 15 , 46 , 46 , 16 ] ,
[ 13 , 145 , 115 , 6 , 146 , 116 ] ,
[ 14 , 74 , 46 , 23 , 75 , 47 ] ,
[ 44 , 54 , 24 , 7 , 55 , 25 ] ,
[ 59 , 46 , 16 , 1 , 47 , 17 ] ,
[ 12 , 151 , 121 , 7 , 152 , 122 ] ,
[ 12 , 75 , 47 , 26 , 76 , 48 ] ,
[ 39 , 54 , 24 , 14 , 55 , 25 ] ,
[ 22 , 45 , 15 , 41 , 46 , 16 ] ,
[ 6 , 151 , 121 , 14 , 152 , 122 ] ,
[ 6 , 75 , 47 , 34 , 76 , 48 ] ,
[ 46 , 54 , 24 , 10 , 55 , 25 ] ,
[ 2 , 45 , 15 , 64 , 46 , 16 ] ,
[ 17 , 152 , 122 , 4 , 153 , 123 ] ,
[ 29 , 74 , 46 , 14 , 75 , 47 ] ,
[ 49 , 54 , 24 , 10 , 55 , 25 ] ,
[ 24 , 45 , 15 , 46 , 46 , 16 ] ,
[ 4 , 152 , 122 , 18 , 153 , 123 ] ,
[ 13 , 74 , 46 , 32 , 75 , 47 ] ,
[ 48 , 54 , 24 , 14 , 55 , 25 ] ,
[ 42 , 45 , 15 , 32 , 46 , 16 ] ,
[ 20 , 147 , 117 , 4 , 148 , 118 ] ,
[ 40 , 75 , 47 , 7 , 76 , 48 ] ,
[ 43 , 54 , 24 , 22 , 55 , 25 ] ,
[ 10 , 45 , 15 , 67 , 46 , 16 ] ,
[ 19 , 148 , 118 , 6 , 149 , 119 ] ,
[ 18 , 75 , 47 , 31 , 76 , 48 ] ,
[ 34 , 54 , 24 , 34 , 55 , 25 ] ,
[ 20 , 45 , 15 , 61 , 46 , 16 ] ] ;
QRRSBlock . getRSBlocks = function ( typeNumber , errorCorrectLevel ) {
var rsBlock = QRRSBlock . getRsBlockTable ( typeNumber , errorCorrectLevel ) ;
if ( ! rsBlock ) {
//throw new Error("bad rs block @ typeNumber:" + typeNumber + "/errorCorrectLevel:" + errorCorrectLevel);
throwError ( "bad rs block @ typeNumber:" + typeNumber + "/errorCorrectLevel:" + errorCorrectLevel ) ;
}
var length = rsBlock . length / 3 ,
list = [ ] ;
for ( var _i22 = 0 ; _i22 < length ; _i22 ++ ) {
var count = rsBlock [ _i22 * 3 ] ,
totalCount = rsBlock [ _i22 * 3 + 1 ] ,
dataCount = rsBlock [ _i22 * 3 + 2 ] ;
for ( var j = 0 ; j < count ; j ++ ) {
list . push ( new QRRSBlock ( totalCount , dataCount ) ) ;
}
}
return list ;
} ;
QRRSBlock . getRsBlockTable = function ( typeNumber , errorCorrectLevel ) {
switch ( errorCorrectLevel ) {
case QRErrorCorrectLevel . L :
return QRRSBlock . RS _BLOCK _TABLE [ ( typeNumber - 1 ) * 4 ] ;
case QRErrorCorrectLevel . M :
return QRRSBlock . RS _BLOCK _TABLE [ ( typeNumber - 1 ) * 4 + 1 ] ;
case QRErrorCorrectLevel . Q :
return QRRSBlock . RS _BLOCK _TABLE [ ( typeNumber - 1 ) * 4 + 2 ] ;
case QRErrorCorrectLevel . H :
return QRRSBlock . RS _BLOCK _TABLE [ ( typeNumber - 1 ) * 4 + 3 ] ;
default :
return undefined ; }
} ;
/ *
* class QRBitBuffer
* * / v a r
QRBitBuffer = /*#__PURE__*/ function ( ) {
function QRBitBuffer ( ) { _classCallCheck ( this , QRBitBuffer ) ;
this . buffer = [ ] ;
this . length = 0 ;
} _createClass ( QRBitBuffer , [ { key : "get" , value : function get (
index ) {
var bufIndex = Math . floor ( index / 8 ) ;
return ( this . buffer [ bufIndex ] >>> 7 - index % 8 & 1 ) == 1 ;
} } , { key : "put" , value : function put (
num , length ) {
for ( var _i23 = 0 ; _i23 < length ; _i23 ++ ) {
this . putBit ( ( num >>> length - _i23 - 1 & 1 ) == 1 ) ;
}
} } , { key : "getLengthInBits" , value : function getLengthInBits ( )
{
return this . length ;
} } , { key : "putBit" , value : function putBit (
bit ) {
var bufIndex = Math . floor ( this . length / 8 ) ;
if ( this . buffer . length <= bufIndex ) {
this . buffer . push ( 0 ) ;
}
if ( bit ) {
this . buffer [ bufIndex ] |= 0x80 >>> this . length % 8 ;
}
this . length ++ ;
} } ] ) ; return QRBitBuffer ; } ( ) ;
/ *
* Class Drawing
* * / v a r
Drawing = /*#__PURE__*/ function ( ) {
function Drawing ( el , opts ) { _classCallCheck ( this , Drawing ) ;
this . _opts = opts ;
this . _el = el ;
this . _ctx = uni . createCanvasContext ( el ) ;
} _createClass ( Drawing , [ { key : "draw" , value : function draw (
QRCode ) {
var ctx = this . _ctx ,
opts = this . _opts ;
var ctxPosFix = opts . width / 20 ;
//console.log(opts.width)
var count = QRCode . getModuleCount ( ) ,
width = ( opts . width - 2 * ctxPosFix ) / count ,
height = ( opts . height - 2 * ctxPosFix ) / count ,
roundedWidth = Math . round ( width ) ,
roundedHeight = Math . round ( height ) ;
this . clear ( ) ;
ctx . setFillStyle ( '#fff' ) ;
ctx . fillRect ( 0 , 0 , this . _opts . width + 4 * ctxPosFix , this . _opts . width + 4 * ctxPosFix ) ;
for ( var row = 0 ; row < count ; row ++ ) {
for ( var col = 0 ; col < count ; col ++ ) {
var isDark = QRCode . isDark ( row , col ) ,
left = col * width + ctxPosFix ,
top = row * height + ctxPosFix ;
ctx . setStrokeStyle ( isDark ? opts . colorDark : opts . colorLight ) ;
ctx . setLineWidth ( 1 ) ;
ctx . setFillStyle ( isDark ? opts . colorDark : opts . colorLight ) ;
ctx . fillRect ( left , top , width , height ) ;
ctx . strokeRect (
Math . floor ( left ) + 0.5 ,
Math . floor ( top ) + 0.5 ,
roundedWidth ,
roundedHeight ) ;
ctx . strokeRect (
Math . ceil ( left ) - 0.5 ,
Math . ceil ( top ) - 0.5 ,
roundedWidth ,
roundedHeight ) ;
}
}
this . _opts . logo && this . drawImg ( this . _opts . logo , this . _opts . width , ctx ) ;
ctx . draw ( ) ;
this . _bIsPainted = true ;
//console.log(this._opts.successTips);
//anlib
//console.log('-------- console.log(-------', drawingOptsSuccessTips);
if ( this . _opts . successTips && drawingOptsSuccessTips ) {
// uni.hideLoading();
uni . showToast ( {
title : '生成成功' ,
icon : 'success' ,
duration : 1000 } ) ;
}
drawingOptsSuccessTips = true ;
} } , { key : "clear" , value : function clear ( )
{
this . _ctx . clearRect ( 0 , 0 , this . _opts . width , this . _opts . height ) ;
}
/** anlib **/
/ * *
* 二维码上添加图片
* / } , { k e y : " d r a w I m g " , v a l u e : f u n c t i o n d r a w I m g (
src , width , ctx ) {
// logo相对二维码的比例
var scale = 5 ;
// logo相对二维码的大小
var imgSize = width / scale ;
// 偏移位置起始点
var imgPos = width / scale * 2 ;
// 二维码边框尺寸, 这里设置为原宽度的80分之一
var imgPosFix = width / 80 ;
//console.log('width', width);
//console.log('imgSize', imgSize);
//console.log('imgPos', imgPos);
//console.log('imgPosFix', imgPosFix);
//console.log('src', src);
ctx . setFillStyle ( '#fff' ) ;
ctx . fillRect ( imgPos - imgPosFix , imgPos - imgPosFix , imgSize + imgPosFix * 2 , imgSize + imgPosFix * 2 ) ;
ctx . beginPath ( ) ;
ctx . moveTo ( imgPos - imgPosFix , imgPos - imgPosFix ) ;
ctx . stroke ( ) ;
ctx . closePath ( ) ;
ctx . drawImage ( src , imgPos , imgPos , imgSize , imgSize ) ;
ctx . beginPath ( ) ;
} } ] ) ; return Drawing ; } ( ) ;
/ *
* Class QRCode
* * /
var QRCode = function ( ) {
/ * *
* Get the type by string length
* @ author anlib
* @ private
* @ param { String } text
* @ param { Number } correctLevel
* @ return { Number } type
* /
function getTypeNumber ( text , correctLevel ) {
var type = 1 ,
length = getUTF8Length ( text ) ,
QRCodeLimitLength = [
[ 17 , 14 , 11 , 7 ] ,
[ 32 , 26 , 20 , 14 ] ,
[ 53 , 42 , 32 , 24 ] ,
[ 78 , 62 , 46 , 34 ] ,
[ 106 , 84 , 60 , 44 ] ,
[ 134 , 106 , 74 , 58 ] ,
[ 154 , 122 , 86 , 64 ] ,
[ 192 , 152 , 108 , 84 ] ,
[ 230 , 180 , 130 , 98 ] ,
[ 271 , 213 , 151 , 119 ] ,
[ 321 , 251 , 177 , 137 ] ,
[ 367 , 287 , 203 , 155 ] ,
[ 425 , 331 , 241 , 177 ] ,
[ 458 , 362 , 258 , 194 ] ,
[ 520 , 412 , 292 , 220 ] ,
[ 586 , 450 , 322 , 250 ] ,
[ 644 , 504 , 364 , 280 ] ,
[ 718 , 560 , 394 , 310 ] ,
[ 792 , 624 , 442 , 338 ] ,
[ 858 , 666 , 482 , 382 ] ,
[ 929 , 711 , 509 , 403 ] ,
[ 1003 , 779 , 565 , 439 ] ,
[ 1091 , 857 , 611 , 461 ] ,
[ 1171 , 911 , 661 , 511 ] ,
[ 1273 , 997 , 715 , 535 ] ,
[ 1367 , 1059 , 751 , 593 ] ,
[ 1465 , 1125 , 805 , 625 ] ,
[ 1528 , 1190 , 868 , 658 ] ,
[ 1628 , 1264 , 908 , 698 ] ,
[ 1732 , 1370 , 982 , 742 ] ,
[ 1840 , 1452 , 1030 , 790 ] ,
[ 1952 , 1538 , 1112 , 842 ] ,
[ 2068 , 1628 , 1168 , 898 ] ,
[ 2188 , 1722 , 1228 , 958 ] ,
[ 2303 , 1809 , 1283 , 983 ] ,
[ 2431 , 1911 , 1351 , 1051 ] ,
[ 2563 , 1989 , 1423 , 1093 ] ,
[ 2699 , 2099 , 1499 , 1139 ] ,
[ 2809 , 2213 , 1579 , 1219 ] ,
[ 2953 , 2331 , 1663 , 1273 ] ] ;
for ( var _i24 = 0 , len = QRCodeLimitLength . length ; _i24 <= len ; _i24 ++ ) {
var limit = 0 ;
switch ( correctLevel ) {
case QRErrorCorrectLevel . L :
limit = QRCodeLimitLength [ _i24 ] [ 0 ] ;
break ;
case QRErrorCorrectLevel . M :
limit = QRCodeLimitLength [ _i24 ] [ 1 ] ;
break ;
case QRErrorCorrectLevel . Q :
limit = QRCodeLimitLength [ _i24 ] [ 2 ] ;
break ;
case QRErrorCorrectLevel . H :
limit = QRCodeLimitLength [ _i24 ] [ 3 ] ;
break ; }
if ( length <= limit ) {
break ;
} else {
type ++ ;
}
}
if ( type > QRCodeLimitLength . length ) {
// throw new Error('Too long data'); //supfire
throwError ( 'Too long data' ) ;
}
return type ;
}
function getUTF8Length ( text ) {
var replacedText = encodeURI ( text ) . toString ( ) . replace ( /\%[0-9a-fA-F]{2}/g , 'a' ) ;
return replacedText . length + ( replacedText . length != text ? 3 : 0 ) ;
} var
Fn = /*#__PURE__*/ function ( ) {
function Fn ( el , opts ) { _classCallCheck ( this , Fn ) ;
this . _opts = {
width : 300 ,
height : 300 ,
typeNumber : 4 ,
colorDark : '#000000' ,
colorLight : '#ffffff' ,
correctLevel : Fn . correctLevel . H ,
logo : false ,
successTips : false } ;
if ( typeof opts === 'string' ) {
opts = {
text : opts } ;
}
// Overwrites options 简单拷贝
if ( opts ) {
for ( var _i25 in opts ) {
if ( opts . hasOwnProperty ( _i25 ) ) {
this . _opts [ _i25 ] = opts [ _i25 ] ;
}
}
}
this . _el = el ;
this . _QRCode = null ;
this . _drawing = new Drawing ( this . _el , this . _opts ) ;
if ( this . _opts . text ) {
this . makeCode ( this . _opts . text ) ;
}
} _createClass ( Fn , [ { key : "makeCode" , value : function makeCode (
text ) {
this . _QRCode = new QRCodeModel ( getTypeNumber ( text , this . _opts . correctLevel ) , this . _opts .
correctLevel ) ;
this . _QRCode . addData ( text ) ;
this . _QRCode . make ( ) ;
this . _drawing . draw ( this . _QRCode ) ;
} } , { key : "clear" , value : function clear ( )
{
this . _drawing . clear ( ) ;
} } ] ) ; return Fn ; } ( ) ;
Fn . correctLevel = QRErrorCorrectLevel ;
return Fn ;
} ( ) ;
/** anlib **/
var drawingOptsSuccessTips = true ;
/ * *
* 抛出错误
* /
function throwError ( str ) {
// uni.hideLoading();
uni . showToast ( {
title : '有字符暂不支持' ,
icon : 'none' ,
duration : 2000 } ) ;
drawingOptsSuccessTips = false ;
//console.log(' drawingOptsSuccessTips ', drawingOptsSuccessTips);
//console.log('---------str', str)
//throw new Error(str);
}
// module.exports = QRCode;
var _default = QRCode ; exports . default = _default ;
/* WEBPACK VAR INJECTION */ } . call ( this , _ _webpack _require _ _ ( /*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1 ) [ "default" ] ) )
/***/ } ) ,
/***/ 8 :
/ * ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ! * \
! * * * D : / c h e n q / c h e n / u n i a p p ( 兼 小 程 序 ) / d e n g r u i / j s F i l e / t o o l s . j s * * * !
\ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /
/*! no static exports found */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
/* WEBPACK VAR INJECTION */ ( function ( uni ) { Object . defineProperty ( exports , "__esModule" , { value : true } ) ; exports . default = void 0 ; var tools = {
// 手机号验证
isPhone : function isPhone ( phone ) {
// 手机号正则表达式
var reg _tel = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/ ;
if ( ! reg _tel . test ( phone ) ) {
return true ;
}
return false ;
} ,
// 手机号中间四位用"****"带替
hideMPhone : function hideMPhone ( phone ) {
return "" . concat ( phone . substr ( 0 , 3 ) , "****" ) . concat ( phone . substr ( 7 ) ) ;
} ,
// 只显示姓,名使用"*"代替
hideName : function hideName ( name , num ) {
var hname = '' ;
// let reg = /(?<=.)./g;
// let reg = new RegExp("(?<=.).", 'g');
// if(num==1) hname = name.replace(reg, '*')
// if(num==2) hname = `${name.substr(0, 1)}****${name.substr(name.length-1)}`
hname = "" . concat ( name . substr ( 0 , 1 ) , "****" ) . concat ( name . substr ( name . length - 1 ) ) ;
return hname ;
} ,
// 时间戳===>日期
timestampToTime : function timestampToTime ( timestamp ) {
var date = new Date ( timestamp * 1000 ) ; //时间戳为10位需*1000, 时间戳为13位的话不需乘1000
var Y = date . getFullYear ( ) ;
var M = date . getMonth ( ) + 1 < 10 ? '0' + ( date . getMonth ( ) + 1 ) : date . getMonth ( ) + 1 ;
var D = date . getDate ( ) < 10 ? '0' + date . getDate ( ) : date . getDate ( ) ;
var h = date . getHours ( ) < 10 ? '0' + date . getHours ( ) : date . getHours ( ) ;
var m = date . getMinutes ( ) < 10 ? '0' + date . getMinutes ( ) : date . getMinutes ( ) ;
var s = date . getSeconds ( ) < 10 ? '0' + date . getSeconds ( ) : date . getSeconds ( ) ;
return Y + '-' + M + '-' + D + ' ' + h + ':' + m + ':' + s ;
} ,
// 日期===>时间戳
timeToTimestamp : function timeToTimestamp ( time ) {
var date = new Date ( time ) ;
var timestamp = date . getTime ( ) ; //精确到毫秒
return timestamp ;
// var date = new Date('2014-04-23 18:55:49:123');
// 有三种方式获取
// var time1 = date.getTime();//精确到毫秒
// var time2 = date.valueOf();//精确到毫秒
// var time3 = Date.parse(date);//只能精确到秒, 毫秒用000替代
// console.log(time1);//1398250549123
// console.log(time2);//1398250549123
// console.log(time3);//1398250549000
} ,
guoq : function guoq ( ) {
var date = new Date ( ) ;
var timestamp = date . getTime ( ) ; //精确到毫秒
if ( uni . getStorageSync ( 'expire' ) * 1000 - 10000 < timestamp ) {
this . loginEv ( ) ;
} else if ( uni . getStorageSync ( 'token' ) == '' ) {
this . loginEv ( ) ;
2021-08-27 16:01:51 +08:00
} else if ( uni . getStorageSync ( 'is_active' ) == '' || uni . getStorageSync ( 'is_active' ) == 0 ) {
2021-08-26 09:49:06 +08:00
this . loginEv ( ) ;
}
} ,
loginEv : function loginEv ( ) {
uni . login ( {
provider : 'weixin' ,
success : function success ( res ) {
if ( res . code ) {
var code = res . code ;
var obj = uni . getStorageSync ( 'params' ) ;
var params = {
invite _code : uni . getStorageSync ( 'invite_code' ) ,
code : code ,
nickname : obj . nickname ,
avatar : obj . avatarUrl ,
country : obj . country ,
province : obj . province ,
city : obj . city ,
gender : obj . gender ,
language : obj . language } ;
uni . request ( {
url : "https://dengrui.scdxtc.cn/api/user/wxAppletsLogin" ,
method : 'post' ,
data : params ,
header : {
'Content-Type' : 'application/json; charset=UTF-8' ,
// "content-type": "application/x-www-form-urlencoded;charset=UTF-8",
'Authorization' : 'Bearer ' + uni . getStorageSync ( 'token' ) || false } ,
success : function success ( res ) {
if ( res . data . data . token != '' ) {
uni . setStorageSync ( 'token' , res . data . data . token ) ; //缓存token
uni . setStorageSync ( 'openid' , res . data . data . openid ) ; //缓存Openid
uni . setStorageSync ( 'expire' , res . data . data . expire ) ; //缓存失效时间(时间戳格式)
uni . setStorageSync ( 'is_active' , res . data . data . is _active ) ; //是否第一次授权
2021-08-27 16:01:51 +08:00
uni . setStorageSync ( 'user_type' , res . data . data . user _type ) ; //权限
2021-08-26 09:49:06 +08:00
}
} ,
fail : function fail ( e ) {
checkError ( e , reject ) ;
} ,
complete : function complete ( ) { } } ) ;
} else {
uni . showToast ( {
title : '登录失败!' ,
duration : 2000 } ) ;
}
} } ) ;
} ,
// 随机数生成
randomStr : function randomStr ( ) {
var strData = "" ;
//如果觉得12个数太少也可以多放点, 将i<4修改即可
for ( var i = 0 ; i < 4 ; i ++ ) {
var num = random ( 0 , 9 ) ; //数字
var upper = String . fromCharCode ( random ( 65 , 90 ) ) ; //大写字母
var lower = String . fromCharCode ( random ( 97 , 122 ) ) ; //小写字母
strData = strData + num + upper + lower ; //将所有结果放进strData中
}
var str = "" ;
for ( var i = 0 ; i < 4 ; i ++ ) {
str += strData [ random ( 0 , strData . length - 1 ) ] ; //在strData里面随机抽取四个数
}
return str ;
} ,
// 金额输入框验证
checkPrice : function checkPrice ( number , zong ) {
var reg = /^[0-9]*$/ ; //数字正则表达式
var newObj = { } ;
zong = parseInt ( zong ) . toString ( ) ; //取小数点左边的整数
if ( ! reg . test ( number ) ) { //不是数字时
newObj = {
len : zong . length , //动态设置长度
val : zong //动态设置值正整数的总金额
} ;
} else { //是数字时
newObj = {
len : zong . length ,
val : number //动态设置当前输入的值
} ;
if ( number * 1 > zong * 1 ) { //输入的金额大于总金额
newObj . val = zong ; //赋值总金额
}
}
return newObj ;
} ,
// 提示方法
showToast : function showToast ( msg , icon , time ) {
// 弹框图标: none默认无图标、loading、success
var newIncon = 'none' ;
if ( icon ) { newIncon = icon ; }
// 弹框显示时间: 默认2秒
var newTime = 2000 ;
if ( time ) { newTime = time ; }
return uni . showToast ( {
title : msg ,
icon : newIncon ,
duration : newTime } ) ;
} ,
formatDuring : function formatDuring ( mss ) {
// let dangTime = Math.round(new Date()/1000)//获取当前时间戳
var hours = parseInt ( mss % ( 1000 * 60 * 60 * 24 ) / ( 1000 * 60 * 60 ) ) ;
var minutes = parseInt ( mss % ( 1000 * 60 * 60 ) / ( 1000 * 60 ) ) ;
var seconds = mss % ( 1000 * 60 ) / 1000 ;
hours = hours < 10 ? '0' + hours : hours ;
minutes = minutes < 10 ? '0' + minutes : minutes ;
seconds = seconds < 10 && seconds >= 1 ? '0' + seconds : seconds ;
return hours + ' :' + minutes + ' :' + seconds ;
} ,
escape2Html : function escape2Html ( str ) {
var arrEntities = { 'lt' : '<' , 'gt' : '>' , 'nbsp' : ' ' , 'amp' : '&' , 'quot' : '"' } ;
return str . replace ( /&(lt|gt|nbsp|amp|quot|src);/ig , function ( all , t ) { return arrEntities [ t ] ; } ) . replace ( '<section' , '<div' ) . replace ( /\<img/g , '<img @tap="pre" style="max-width:100%;height:auto" ' ) . replace ( /src=\"/g , 'src="https://dengrui.scdxtc.cn' ) ;
} ,
setTime : function setTime ( url , title , time ) {
// console.log(url,title,time);
if ( url == '' && title == '' ) {
setTimeout ( function ( ) { uni . navigateBack ( { delta : 1 } ) ; } , time ) ;
} else if ( title == '' ) {
setTimeout ( function ( ) {
uni . navigateTo ( {
url : url } ) ;
} , time ) ;
}
} } ; var _default =
{
tools : tools } ; exports . default = _default ;
/* WEBPACK VAR INJECTION */ } . call ( this , _ _webpack _require _ _ ( /*! ./node_modules/@dcloudio/uni-mp-weixin/dist/index.js */ 1 ) [ "default" ] ) )
/***/ } )
} ] ) ;
//# sourceMappingURL=../../.sourcemap/mp-weixin/common/vendor.js.map