(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define([], factory); else if(typeof exports === 'object') exports["uni"] = factory(); else root["uni"] = factory(); })((typeof self !== 'undefined' ? self : this), function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 161); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", 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 */ ) { // Vue.extend constructor export interop var options = typeof scriptExports === 'function' ? scriptExports.options : scriptExports // render functions if (render) { options.render = render options.staticRenderFns = staticRenderFns options._compiled = true } // functional template if (functionalTemplate) { options.functional = true } // scopedId if (scopeId) { options._scopeId = 'data-v-' + scopeId } var hook if (moduleIdentifier) { // server build hook = function (context) { // 2.3 injection context = context || // cached call (this.$vnode && this.$vnode.ssrContext) || // stateful (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional // 2.2 with runInNewContext: true if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { context = __VUE_SSR_CONTEXT__ } // inject component styles if (injectStyles) { injectStyles.call(this, context) } // register component module identifier for async chunk inferrence if (context && context._registeredComponents) { context._registeredComponents.add(moduleIdentifier) } } // used by ssr in case component is cached and beforeCreate // never gets called options._ssrRegister = hook } else if (injectStyles) { hook = shadowMode ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) } : injectStyles } if (hook) { if (options.functional) { // for template-only hot-reload because in that case the render fn doesn't // go through the normalizer options._injectStyles = hook // register for functional component in vue file var originalRender = options.render options.render = function renderWithStyleInjection (h, context) { hook.call(context) return originalRender(h, context) } } else { // inject component registration as beforeCreate hook var existing = options.beforeCreate options.beforeCreate = existing ? [].concat(existing, hook) : [hook] } } return { exports: scriptExports, options: options } } /***/ }), /* 1 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, "h", function() { return /* reexport */ supportsPassive; }); __webpack_require__.d(__webpack_exports__, "d", function() { return /* reexport */ isFn; }); __webpack_require__.d(__webpack_exports__, "e", function() { return /* reexport */ isPlainObject; }); __webpack_require__.d(__webpack_exports__, "c", function() { return /* reexport */ hasOwn; }); __webpack_require__.d(__webpack_exports__, "a", function() { return /* reexport */ cached; }); __webpack_require__.d(__webpack_exports__, "f", function() { return /* reexport */ kebabCase; }); __webpack_require__.d(__webpack_exports__, "b", function() { return /* reexport */ disableScrollBounce; }); __webpack_require__.d(__webpack_exports__, "g", function() { return /* reexport */ plusReady; }); // UNUSED EXPORTS: isStr, isObject, noop, toRawType, camelize, setProperties, getLen, formatDateTime, updateElementStyle, guid, debounce, looseEqual, hexToRgba, parseQuery, stringifyQuery, callback // CONCATENATED MODULE: ./src/shared/env.js var supportsPassive = false; try { var opts = {}; Object.defineProperty(opts, 'passive', { get: function get() { /* istanbul ignore next */ supportsPassive = true; } }); // https://github.com/facebook/flow/issues/285 window.addEventListener('test-passive', null, opts); } catch (e) {} // CONCATENATED MODULE: ./src/shared/util.js function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } var _toString = Object.prototype.toString; var util_hasOwnProperty = Object.prototype.hasOwnProperty; var _completeValue = function _completeValue(value) { return value > 9 ? value : '0' + value; }; function isFn(fn) { return typeof fn === 'function'; } function isStr(str) { return typeof str === 'string'; } function isObject(obj) { return obj !== null && _typeof(obj) === 'object'; } function isPlainObject(obj) { return _toString.call(obj) === '[object Object]'; } function hasOwn(obj, key) { return util_hasOwnProperty.call(obj, key); } function noop() {} function toRawType(val) { return _toString.call(val).slice(8, -1); } /** * Create a cached version of a pure function. */ function cached(fn) { var cache = Object.create(null); return function cachedFn(str) { var hit = cache[str]; return hit || (cache[str] = fn(str)); }; } /** * Camelize a hyphen-delimited string. */ var camelizeRE = /-(\w)/g; var camelize = cached(function (str) { return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; }); }); function setProperties(item, props, propsData) { props.forEach(function (name) { if (hasOwn(propsData, name)) { item[name] = propsData[name]; } }); } function getLen() { var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; /* eslint-disable no-control-regex */ return ('' + str).replace(/[^\x00-\xff]/g, '**').length; } function formatDateTime(_ref) { var _ref$date = _ref.date, date = _ref$date === void 0 ? new Date() : _ref$date, _ref$mode = _ref.mode, mode = _ref$mode === void 0 ? 'date' : _ref$mode; if (mode === 'time') { return _completeValue(date.getHours()) + ':' + _completeValue(date.getMinutes()); } else { return date.getFullYear() + '-' + _completeValue(date.getMonth() + 1) + '-' + _completeValue(date.getDate()); } } function updateElementStyle(element, styles) { for (var attrName in styles) { element.style[attrName] = styles[attrName]; } } function guid() { return Math.floor(4294967296 * (1 + Math.random())).toString(16).slice(1); } function debounce(fn, delay) { var timeout; return function () { var _arguments = arguments, _this = this; clearTimeout(timeout); var timerFn = function timerFn() { return fn.apply(_this, _arguments); }; timeout = setTimeout(timerFn, delay); }; } function kebabCase(string) { return string.replace(/[A-Z]/g, function (str) { return '-' + str.toLowerCase(); }); } /** * 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; } } // CONCATENATED MODULE: ./src/shared/color.js function hexToRgba(hex) { var r; var g; var b; hex = hex.replace('#', ''); if (hex.length === 6) { r = hex.substring(0, 2); g = hex.substring(2, 4); b = hex.substring(4, 6); } else if (hex.length === 3) { r = hex.substring(0, 1); g = hex.substring(1, 2); b = hex.substring(2, 3); } else { return false; } if (r.length === 1) { r += r; } if (g.length === 1) { g += g; } if (b.length === 1) { b += b; } r = parseInt(r, 16); g = parseInt(g, 16); b = parseInt(b, 16); return { r: r, g: g, b: b }; } // CONCATENATED MODULE: ./src/shared/query.js 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, ','); }; var decode = decodeURIComponent; function parseQuery(query) { var res = {}; query = query.trim().replace(/^(\?|#|&)/, ''); if (!query) { return res; } query.split('&').forEach(function (param) { var parts = param.replace(/\+/g, ' ').split('='); var key = decode(parts.shift()); var val = parts.length > 0 ? decode(parts.join('=')) : null; if (res[key] === undefined) { res[key] = val; } else if (Array.isArray(res[key])) { res[key].push(val); } else { res[key] = [res[key], val]; } }); return res; } 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) : ''; } // CONCATENATED MODULE: ./src/shared/platform.js function plusReady(callback) { if (typeof callback !== 'function') { return; } if (window.plus) { return callback(); } document.addEventListener('plusready', callback); } // CONCATENATED MODULE: ./src/shared/scroll.js var view; var pullToRefreshStyle; var disabled; var lastAction = {}; function disableScrollBounce(_ref) { var disable = _ref.disable; function exec() { if (!view) { view = plus.webview.currentWebview(); } if (!disabled) { pullToRefreshStyle = (view.getStyle() || {}).pullToRefresh || {}; } disabled = disable; if (pullToRefreshStyle.support) { view.setPullToRefresh(Object.assign({}, pullToRefreshStyle, { support: !disable })); } } var time = Date.now(); if (disable === lastAction.disable && time - lastAction.time < 20) { return; } lastAction.disable = disable; lastAction.time = time; plusReady(function () { if (plus.os.name === 'iOS') { // 延迟执行避免iOS13触摸卡死 setTimeout(exec, 20); } else { exec(); } }); } // CONCATENATED MODULE: ./src/shared/callback.js var id = 0; var callbacks = {}; function warp(fn) { return function () { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var callbackId = String(id++); callbacks[callbackId] = { success: options.success, fail: options.fail, complete: options.complete }; var data = Object.assign({}, options); // TODO 下版重构 nvue h5 callback // delete data.success // delete data.fail // delete data.complete var res = fn.bind(this)(data, callbackId); if (res) { invoke(callbackId, res); } }; } function invoke(callbackId, res) { var callback = callbacks[callbackId] || {}; delete callbacks[callbackId]; var errMsg = res.errMsg || ''; if (new RegExp('\\:\\s*fail').test(errMsg)) { callback.fail && callback.fail(res); } else { callback.success && callback.success(res); } callback.complete && callback.complete(res); } var callback = { warp: warp, invoke: invoke }; // CONCATENATED MODULE: ./src/shared/index.js /***/ }), /* 2 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // EXPORTS __webpack_require__.d(__webpack_exports__, "a", function() { return /* reexport */ emitter; }); __webpack_require__.d(__webpack_exports__, "d", function() { return /* reexport */ listeners["a" /* default */]; }); __webpack_require__.d(__webpack_exports__, "b", function() { return /* reexport */ hover["a" /* default */]; }); __webpack_require__.d(__webpack_exports__, "e", function() { return /* reexport */ subscriber["a" /* default */]; }); __webpack_require__.d(__webpack_exports__, "c", function() { return /* reexport */ keyboard["a" /* default */]; }); // UNUSED EXPORTS: interact // CONCATENATED MODULE: ./src/core/view/mixins/emitter.js // 暂不提供通知所有 // function broadcast (componentName, eventName, ...params) { // this.$children.forEach(child => { // const name = child.$options.name && child.$options.name.substr(1) // if (~componentName.indexOf(name)) { // child.$emit.apply(child, [eventName].concat(params)) // } else { // broadcast.apply(child, [componentName, eventName].concat([params])) // } // }) // } function broadcast(componentName, eventName) { var children = this.$children; var len = children.length; for (var _len = arguments.length, params = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { params[_key - 2] = arguments[_key]; } for (var i = 0; i < len; i++) { var child = children[i]; var name = child.$options.name && child.$options.name.substr(4); if (~componentName.indexOf(name)) { child.$emit.apply(child, [eventName].concat(params)); return false; } else { if (broadcast.apply(child, [componentName, eventName].concat([params])) === false) { return false; } } } } /* harmony default export */ var emitter = ({ methods: { $dispatch: function $dispatch(componentName, eventName) { if (typeof componentName === 'string') { componentName = [componentName]; } var parent = this.$parent || this.$root; var name = parent.$options.name && parent.$options.name.substr(4); while (parent && (!name || !~componentName.indexOf(name))) { parent = parent.$parent; if (parent) { name = parent.$options.name && parent.$options.name.substr(4); } } if (parent) { for (var _len2 = arguments.length, params = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { params[_key2 - 2] = arguments[_key2]; } parent.$emit.apply(parent, [eventName].concat(params)); } }, $broadcast: function $broadcast(componentName, eventName) { if (typeof componentName === 'string') { componentName = [componentName]; } for (var _len3 = arguments.length, params = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) { params[_key3 - 2] = arguments[_key3]; } broadcast.apply(this, [componentName, eventName].concat(params)); } } }); // EXTERNAL MODULE: ./src/core/view/mixins/listeners.js var listeners = __webpack_require__(69); // EXTERNAL MODULE: ./src/core/view/mixins/hover.js var hover = __webpack_require__(17); // EXTERNAL MODULE: ./src/core/view/mixins/subscriber.js var subscriber = __webpack_require__(70); // EXTERNAL MODULE: ./src/core/view/mixins/keyboard.js var keyboard = __webpack_require__(71); // EXTERNAL MODULE: ./src/shared/index.js + 7 modules var shared = __webpack_require__(1); // CONCATENATED MODULE: ./src/core/view/mixins/interact.js var passiveOptions = shared["h" /* supportsPassive */] ? { passive: true, capture: true } : true; var vms = []; var userInteract = 0; var inited; function addInteractListener(vm) { if (!inited) { var eventNames = ['touchstart', 'touchmove', 'touchend', 'mousedown', 'mouseup']; eventNames.forEach(function (eventName) { document.addEventListener(eventName, function () { vms.forEach(function (vm) { vm.userInteract = true; userInteract++; setTimeout(function () { userInteract--; if (!userInteract) { vm.userInteract = false; } }, 0); }); }, passiveOptions); }); } vms.push(vm); } function removeInteractListener(vm) { var index = vms.indexOf(vm); if (index >= 0) { vms.splice(index, 1); } } /* harmony default export */ var interact = ({ data: function data() { return { /** * 是否用户交互行为 */ userInteract: false }; }, mounted: function mounted() { addInteractListener(this); }, beforeDestroy: function beforeDestroy() { removeInteractListener(this); } }); // CONCATENATED MODULE: ./src/core/view/mixins/index.js /***/ }), /* 3 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return PAGE_CREATE; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return MOUNTED_DATA; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return UPDATED_DATA; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return PAGE_CREATED; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return UI_EVENT; }); /* unused harmony export LAYOUT_READY */ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return VD_SYNC; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return APP_SERVICE_ID; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return WEBVIEW_READY; }); /* unused harmony export WEBVIEW_UI_EVENT */ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return VD_SYNC_CALLBACK; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return INVOKE_API; }); /* unused harmony export WEB_INVOKE_APPSERVICE */ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return WEBVIEW_INSERTED; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return WEBVIEW_REMOVED; }); var PAGE_CREATE = 2; var MOUNTED_DATA = 4; var UPDATED_DATA = 6; var PAGE_CREATED = 10; var UI_EVENT = 20; var LAYOUT_READY = 30; var VD_SYNC = 'vdSync'; var APP_SERVICE_ID = '__uniapp__service'; var WEBVIEW_READY = 'webviewReady'; var WEBVIEW_UI_EVENT = 'webviewUIEvent'; var VD_SYNC_CALLBACK = 'vdSyncCallback'; var INVOKE_API = 'invokeApi'; var WEB_INVOKE_APPSERVICE = 'WEB_INVOKE_APPSERVICE'; var WEBVIEW_INSERTED = 'webviewInserted'; var WEBVIEW_REMOVED = 'webviewRemoved'; /***/ }), /* 4 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // EXPORTS __webpack_require__.d(__webpack_exports__, "on", function() { return /* binding */ on; }); __webpack_require__.d(__webpack_exports__, "off", function() { return /* binding */ off; }); __webpack_require__.d(__webpack_exports__, "once", function() { return /* binding */ once; }); __webpack_require__.d(__webpack_exports__, "emit", function() { return /* binding */ emit; }); __webpack_require__.d(__webpack_exports__, "subscribe", function() { return /* binding */ view_bridge_subscribe; }); __webpack_require__.d(__webpack_exports__, "unsubscribe", function() { return /* binding */ unsubscribe; }); __webpack_require__.d(__webpack_exports__, "subscribeHandler", function() { return /* binding */ subscribeHandler; }); __webpack_require__.d(__webpack_exports__, "publishHandler", function() { return /* reexport */ bridge["a" /* publishHandler */]; }); // EXTERNAL MODULE: ./packages/vue-cli-plugin-uni/packages/h5-vue/dist/vue.runtime.esm.js var vue_runtime_esm = __webpack_require__(8); // CONCATENATED MODULE: ./src/core/view/bridge/subscribe/api/set-page-meta.js function setPageMeta(_ref) { var pageStyle = _ref.pageStyle, rootFontSize = _ref.rootFontSize; var pageElm = document.querySelector('uni-page-body') || document.body; pageElm.setAttribute('style', pageStyle); if (rootFontSize && document.documentElement.style.fontSize !== rootFontSize) { document.documentElement.style.fontSize = rootFontSize; } } // EXTERNAL MODULE: ./src/core/view/bridge/subscribe/api/request-component-info.js var request_component_info = __webpack_require__(75); // EXTERNAL MODULE: ./src/core/view/bridge/subscribe/api/request-component-observer.js var request_component_observer = __webpack_require__(66); // CONCATENATED MODULE: ./src/core/view/bridge/subscribe/api/index.js /* harmony default export */ var api = ({ setPageMeta: setPageMeta, requestComponentInfo: request_component_info["a" /* requestComponentInfo */], requestComponentObserver: request_component_observer["b" /* requestComponentObserver */], destroyComponentObserver: request_component_observer["a" /* destroyComponentObserver */] }); // EXTERNAL MODULE: ./src/core/view/bridge/subscribe/scroll.js var subscribe_scroll = __webpack_require__(13); // EXTERNAL MODULE: ./src/core/view/bridge/subscribe/font.js var font = __webpack_require__(76); // EXTERNAL MODULE: ./src/platforms/app-plus/view/bridge/subscribe/index.js var bridge_subscribe = __webpack_require__(77); // CONCATENATED MODULE: ./src/core/view/bridge/subscribe/index.js function initSubscribe(subscribe) { Object.keys(api).forEach(function (name) { subscribe(name, api[name]); }); subscribe('pageScrollTo', subscribe_scroll["c" /* pageScrollTo */]); subscribe('loadFontFace', font["a" /* loadFontFace */]); Object(bridge_subscribe["a" /* default */])(subscribe); } // EXTERNAL MODULE: ./src/platforms/app-plus/view/bridge.js var bridge = __webpack_require__(12); // CONCATENATED MODULE: ./src/core/view/bridge/index.js var Emitter = new vue_runtime_esm["a" /* default */](); var on = Emitter.$on.bind(Emitter); var off = Emitter.$off.bind(Emitter); var once = Emitter.$once.bind(Emitter); var emit = Emitter.$emit.bind(Emitter); function view_bridge_subscribe(event, callback) { return on('service.' + event, callback); } function unsubscribe(event, callback) { return off('service.' + event, callback); } function subscribeHandler(event, args, pageId) { if (true) { console.log("[subscribeHandler][".concat(Date.now(), "]:").concat(event, ", ").concat(JSON.stringify(args), ", ").concat(pageId)); } emit('service.' + event, args, pageId); } initSubscribe(view_bridge_subscribe); /***/ }), /* 5 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var attrs = ['top', 'left', 'right', 'bottom']; var inited; var elementComputedStyle = {}; var support; function getSupport() { if (!('CSS' in window) || typeof CSS.supports != 'function') { support = ''; } else if (CSS.supports('top: env(safe-area-inset-top)')) { support = 'env'; } else if (CSS.supports('top: constant(safe-area-inset-top)')) { support = 'constant'; } else { support = ''; } return support; } function init() { support = typeof support === 'string' ? support : getSupport(); if (!support) { attrs.forEach(function (attr) { elementComputedStyle[attr] = 0; }); return; } function setStyle(el, style) { var elStyle = el.style; Object.keys(style).forEach(function (key) { var val = style[key]; elStyle[key] = val; }); } var cbs = []; function parentReady(callback) { if (callback) { cbs.push(callback); } else { cbs.forEach(function (cb) { cb(); }); } } var passiveEvents = false; try { var opts = Object.defineProperty({}, 'passive', { get: function () { passiveEvents = { passive: true }; } }); window.addEventListener('test', null, opts); } catch (e) { } function addChild(parent, attr) { var a1 = document.createElement('div'); var a2 = document.createElement('div'); var a1Children = document.createElement('div'); var a2Children = document.createElement('div'); var W = 100; var MAX = 10000; var aStyle = { position: 'absolute', width: W + 'px', height: '200px', boxSizing: 'border-box', overflow: 'hidden', paddingBottom: support + "(safe-area-inset-" + attr + ")" }; setStyle(a1, aStyle); setStyle(a2, aStyle); setStyle(a1Children, { transition: '0s', animation: 'none', width: '400px', height: '400px' }); setStyle(a2Children, { transition: '0s', animation: 'none', width: '250%', height: '250%' }); a1.appendChild(a1Children); a2.appendChild(a2Children); parent.appendChild(a1); parent.appendChild(a2); parentReady(function () { a1.scrollTop = a2.scrollTop = MAX; var a1LastScrollTop = a1.scrollTop; var a2LastScrollTop = a2.scrollTop; function onScroll() { if (this.scrollTop === (this === a1 ? a1LastScrollTop : a2LastScrollTop)) { return; } a1.scrollTop = a2.scrollTop = MAX; a1LastScrollTop = a1.scrollTop; a2LastScrollTop = a2.scrollTop; attrChange(attr); } a1.addEventListener('scroll', onScroll, passiveEvents); a2.addEventListener('scroll', onScroll, passiveEvents); }); var computedStyle = getComputedStyle(a1); Object.defineProperty(elementComputedStyle, attr, { configurable: true, get: function () { return parseFloat(computedStyle.paddingBottom); } }); } var parentDiv = document.createElement('div'); setStyle(parentDiv, { position: 'absolute', left: '0', top: '0', width: '0', height: '0', zIndex: '-1', overflow: 'hidden', visibility: 'hidden', }); attrs.forEach(function (key) { addChild(parentDiv, key); }); document.body.appendChild(parentDiv); parentReady(); inited = true; } function getAttr(attr) { if (!inited) { init(); } return elementComputedStyle[attr]; } var changeAttrs = []; function attrChange(attr) { if (!changeAttrs.length) { setTimeout(function () { var style = {}; changeAttrs.forEach(function (attr) { style[attr] = elementComputedStyle[attr]; }); changeAttrs.length = 0; callbacks.forEach(function (callback) { callback(style); }); }, 0); } changeAttrs.push(attr); } var callbacks = []; function onChange(callback) { if (!getSupport()) { return; } if (!inited) { init(); } if (typeof callback === 'function') { callbacks.push(callback); } } function offChange(callback) { var index = callbacks.indexOf(callback); if (index >= 0) { callbacks.splice(index, 1); } } var safeAreaInsets = { get support() { return (typeof support === 'string' ? support : getSupport()).length != 0; }, get top() { return getAttr('top'); }, get left() { return getAttr('left'); }, get right() { return getAttr('right'); }, get bottom() { return getAttr('bottom'); }, onChange: onChange, offChange: offChange }; module.exports = safeAreaInsets; //# sourceMappingURL=index.js.map /***/ }), /* 6 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return isPage; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return hasLifecycleHook; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return normalizeDataset; }); /* unused harmony export upx2px */ var components = ['SystemAsyncLoading', 'SystemAsyncError']; function isPage(vm) { if (vm.$parent && vm.$parent.$options.name === 'PageBody') { if (components.indexOf(vm.$options.name) !== -1) { return false; } return true; } return false; } function hasLifecycleHook() { var vueOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var hook = arguments.length > 1 ? arguments[1] : undefined; return Array.isArray(vueOptions[hook]) && vueOptions[hook].length; } function normalizeDataset() { var dataset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; // ios8.x,9.x Object.assign({},dataset) 始终返回 {} // http://ask.dcloud.net.cn/question/70246 var result = JSON.parse(JSON.stringify(dataset)); if (false) { var _len, key, i, len, keys; } return result; } function upx2px(str) { str = str + ''; if (str.indexOf('upx') !== -1) { // upx转换 return uni.upx2px(parseInt(str) || 0); } return parseInt(str) || 0; } /***/ }), /* 7 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var TITLEBAR_HEIGHT = 44; function getStatusbarHeight() { // 横屏时 iOS 获取的状态栏高度错误,进行纠正 return plus.navigator.isImmersedStatusbar() ? Math.round(plus.os.name === 'iOS' ? plus.navigator.getSafeAreaInsets().top : plus.navigator.getStatusbarHeight()) : 0; } function getNavigationBarHeight() { var webview = plus.webview.currentWebview(); var style = webview.getStyle(); style = style && style.titleNView; if (style && style.type === 'default') { return TITLEBAR_HEIGHT + getStatusbarHeight(); } return 0; } function getFixed($el) { var fixed; while ($el) { var style = getComputedStyle($el); var transform = style.transform || style.webkitTransform; fixed = transform && transform !== 'none' ? false : fixed; fixed = style.position === 'fixed' ? true : fixed; $el = $el.parentElement; } return fixed; } /* harmony default export */ __webpack_exports__["a"] = ({ name: 'Native', data: function data() { return { position: { top: '0px', left: '0px', width: '0px', height: '0px', position: 'static' }, hidden: false }; }, created: function created() { this.isNative = true; this.onCanInsertCallbacks = []; }, mounted: function mounted() { var _this = this; this._updatePosition(); this.$nextTick(function () { _this.onCanInsertCallbacks.forEach(function (callback) { return callback(); }); }); this.$on('uni-view-update', this._requestPositionUpdate); }, methods: { _updatePosition: function _updatePosition() { var rect = (this.$refs.container || this.$el).getBoundingClientRect(); this.hidden = rect.width === 0 || rect.height === 0; if (!this.hidden) { var position = this.position; position.position = getFixed(this.$el) ? 'absolute' : 'static'; var keys = ['top', 'left', 'width', 'height']; keys.forEach(function (key) { var val = rect[key]; val = key === 'top' ? val + (position.position === 'static' ? document.documentElement.scrollTop || document.body.scrollTop || 0 : getNavigationBarHeight()) : val; position[key] = val + 'px'; }); } }, _requestPositionUpdate: function _requestPositionUpdate() { var _this2 = this; if (this._positionUpdateRequest) { cancelAnimationFrame(this._positionUpdateRequest); } this._positionUpdateRequest = requestAnimationFrame(function () { delete _this2._positionUpdateRequest; _this2._updatePosition(); }); } } }); /***/ }), /* 8 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(global) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } /*! * Vue.js v2.6.11 * (c) 2014-2020 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 no(a, b, c) { return false; }; /* eslint-enable no-unused-vars */ /** * Return the same value. */ var identity = function identity(_) { 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 SSR_ATTR = 'data-server-rendered'; 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; var supportsPassive = false; if (inBrowser) { try { var opts = {}; Object.defineProperty(opts, 'passive', { get: function get() { /* istanbul ignore next */ supportsPassive = true; } }); // 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 isServerRendering() { 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 classify(str) { return str.replace(classifyRE, function (c) { return c.toUpperCase(); }).replace(/[-_]/g, ''); }; warn = function warn(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 tip(msg, vm) { if (hasConsole && !config.silent) { console.warn("[Vue tip]: " + msg + (vm ? generateComponentTrace(vm) : '')); } }; formatComponentName = function formatComponentName(vm, includeFile) { if (vm.$root === vm) { return ''; } 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) + ">" : "") + (file && includeFile !== false ? " at " + file : ''); }; var repeat = function repeat(str, n) { var res = ''; while (n) { if (n % 2 === 1) { res += str; } if (n > 1) { str += str; } n >>= 1; } return res; }; generateComponentTrace = function generateComponentTrace(vm) { if (vm._isVue && vm.$parent) { var tree = []; var currentRecursiveSequence = 0; while (vm) { 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; } } 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() { // fixed by xxxxxx (nvue vuex) /* eslint-disable no-undef */ if (typeof SharedObject !== 'undefined') { this.id = SharedObject.uid++; } else { 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 = typeof SharedObject !== 'undefined' ? SharedObject : {}; Dep.SharedObject.target = null; Dep.SharedObject.targetStack = []; function pushTarget(target) { Dep.SharedObject.targetStack.push(target); Dep.SharedObject.target = target; } function popTarget() { Dep.SharedObject.targetStack.pop(); Dep.SharedObject.target = Dep.SharedObject.targetStack[Dep.SharedObject.targetStack.length - 1]; } /* */ 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 createEmptyVNode(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) { { 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 defaultStrat(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 isUsingMicroTask = false; 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 timerFunc() { 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); } }; isUsingMicroTask = true; } 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 timerFunc() { counter = (counter + 1) % 2; textNode.data = String(counter); }; isUsingMicroTask = true; } 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 timerFunc() { setImmediate(flushCallbacks); }; } else { // Fallback to setTimeout. timerFunc = function timerFunc() { 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 warnNonPresent(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 warnReservedPrefix(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 mark(tag) { return perf.mark(tag); }; measure = function measure(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); } } } /* */ function mergeVNodeHook(def, hookKey, hook) { if (def instanceof VNode) { def = def.data.hook || (def.data.hook = {}); } var invoker; var oldHook = def[hookKey]; function wrappedHook() { hook.apply(this, arguments); // important: remove merged hook to ensure it's called only once // and prevent memory leak remove(invoker.fns, wrappedHook); } if (isUndef(oldHook)) { // no existing hook invoker = createFnInvoker([wrappedHook]); } else { /* istanbul ignore if */ if (isDef(oldHook.fns) && isTrue(oldHook.merged)) { // already a merged invoker invoker = oldHook; invoker.fns.push(wrappedHook); } else { // existing plain hook invoker = createFnInvoker([oldHook, wrappedHook]); } } invoker.merged = true; def[hookKey] = invoker; } /* */ // 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. 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.