diff --git a/7-7/bg.gif b/7-7/bg.gif new file mode 100644 index 0000000..70f33be Binary files /dev/null and b/7-7/bg.gif differ diff --git a/7-7/index.html b/7-7/index.html new file mode 100644 index 0000000..d541b8f --- /dev/null +++ b/7-7/index.html @@ -0,0 +1,56 @@ + + + + + + + + + 开心一天又一天 + + +
+
+
+
+
+
+
+
+ 颜值 + 1 +
+
+
+
+ + + + +
+ + + + + + + + \ No newline at end of file diff --git a/7-7/lib/fastclick.js b/7-7/lib/fastclick.js new file mode 100644 index 0000000..225ff66 --- /dev/null +++ b/7-7/lib/fastclick.js @@ -0,0 +1,841 @@ +;(function () { + 'use strict'; + + /** + * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs. + * + * @codingstandard ftlabs-jsv2 + * @copyright The Financial Times Limited [All Rights Reserved] + * @license MIT License (see LICENSE.txt) + */ + + /*jslint browser:true, node:true*/ + /*global define, Event, Node*/ + + + /** + * Instantiate fast-clicking listeners on the specified layer. + * + * @constructor + * @param {Element} layer The layer to listen on + * @param {Object} [options={}] The options to override the defaults + */ + function FastClick(layer, options) { + var oldOnClick; + + options = options || {}; + + /** + * Whether a click is currently being tracked. + * + * @type boolean + */ + this.trackingClick = false; + + + /** + * Timestamp for when click tracking started. + * + * @type number + */ + this.trackingClickStart = 0; + + + /** + * The element being tracked for a click. + * + * @type EventTarget + */ + this.targetElement = null; + + + /** + * X-coordinate of touch start event. + * + * @type number + */ + this.touchStartX = 0; + + + /** + * Y-coordinate of touch start event. + * + * @type number + */ + this.touchStartY = 0; + + + /** + * ID of the last touch, retrieved from Touch.identifier. + * + * @type number + */ + this.lastTouchIdentifier = 0; + + + /** + * Touchmove boundary, beyond which a click will be cancelled. + * + * @type number + */ + this.touchBoundary = options.touchBoundary || 10; + + + /** + * The FastClick layer. + * + * @type Element + */ + this.layer = layer; + + /** + * The minimum time between tap(touchstart and touchend) events + * + * @type number + */ + this.tapDelay = options.tapDelay || 200; + + /** + * The maximum time for a tap + * + * @type number + */ + this.tapTimeout = options.tapTimeout || 700; + + if (FastClick.notNeeded(layer)) { + return; + } + + // Some old versions of Android don't have Function.prototype.bind + function bind(method, context) { + return function() { return method.apply(context, arguments); }; + } + + + var methods = ['onMouse', 'onClick', 'onTouchStart', 'onTouchMove', 'onTouchEnd', 'onTouchCancel']; + var context = this; + for (var i = 0, l = methods.length; i < l; i++) { + context[methods[i]] = bind(context[methods[i]], context); + } + + // Set up event handlers as required + if (deviceIsAndroid) { + layer.addEventListener('mouseover', this.onMouse, true); + layer.addEventListener('mousedown', this.onMouse, true); + layer.addEventListener('mouseup', this.onMouse, true); + } + + layer.addEventListener('click', this.onClick, true); + layer.addEventListener('touchstart', this.onTouchStart, false); + layer.addEventListener('touchmove', this.onTouchMove, false); + layer.addEventListener('touchend', this.onTouchEnd, false); + layer.addEventListener('touchcancel', this.onTouchCancel, false); + + // Hack is required for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2) + // which is how FastClick normally stops click events bubbling to callbacks registered on the FastClick + // layer when they are cancelled. + if (!Event.prototype.stopImmediatePropagation) { + layer.removeEventListener = function(type, callback, capture) { + var rmv = Node.prototype.removeEventListener; + if (type === 'click') { + rmv.call(layer, type, callback.hijacked || callback, capture); + } else { + rmv.call(layer, type, callback, capture); + } + }; + + layer.addEventListener = function(type, callback, capture) { + var adv = Node.prototype.addEventListener; + if (type === 'click') { + adv.call(layer, type, callback.hijacked || (callback.hijacked = function(event) { + if (!event.propagationStopped) { + callback(event); + } + }), capture); + } else { + adv.call(layer, type, callback, capture); + } + }; + } + + // If a handler is already declared in the element's onclick attribute, it will be fired before + // FastClick's onClick handler. Fix this by pulling out the user-defined handler function and + // adding it as listener. + if (typeof layer.onclick === 'function') { + + // Android browser on at least 3.2 requires a new reference to the function in layer.onclick + // - the old one won't work if passed to addEventListener directly. + oldOnClick = layer.onclick; + layer.addEventListener('click', function(event) { + oldOnClick(event); + }, false); + layer.onclick = null; + } + } + + /** + * Windows Phone 8.1 fakes user agent string to look like Android and iPhone. + * + * @type boolean + */ + var deviceIsWindowsPhone = navigator.userAgent.indexOf("Windows Phone") >= 0; + + /** + * Android requires exceptions. + * + * @type boolean + */ + var deviceIsAndroid = navigator.userAgent.indexOf('Android') > 0 && !deviceIsWindowsPhone; + + + /** + * iOS requires exceptions. + * + * @type boolean + */ + var deviceIsIOS = /iP(ad|hone|od)/.test(navigator.userAgent) && !deviceIsWindowsPhone; + + + /** + * iOS 4 requires an exception for select elements. + * + * @type boolean + */ + var deviceIsIOS4 = deviceIsIOS && (/OS 4_\d(_\d)?/).test(navigator.userAgent); + + + /** + * iOS 6.0-7.* requires the target element to be manually derived + * + * @type boolean + */ + var deviceIsIOSWithBadTarget = deviceIsIOS && (/OS [6-7]_\d/).test(navigator.userAgent); + + /** + * BlackBerry requires exceptions. + * + * @type boolean + */ + var deviceIsBlackBerry10 = navigator.userAgent.indexOf('BB10') > 0; + + /** + * Determine whether a given element requires a native click. + * + * @param {EventTarget|Element} target Target DOM element + * @returns {boolean} Returns true if the element needs a native click + */ + FastClick.prototype.needsClick = function(target) { + switch (target.nodeName.toLowerCase()) { + + // Don't send a synthetic click to disabled inputs (issue #62) + case 'button': + case 'select': + case 'textarea': + if (target.disabled) { + return true; + } + + break; + case 'input': + + // File inputs need real clicks on iOS 6 due to a browser bug (issue #68) + if ((deviceIsIOS && target.type === 'file') || target.disabled) { + return true; + } + + break; + case 'label': + case 'iframe': // iOS8 homescreen apps can prevent events bubbling into frames + case 'video': + return true; + } + + return (/\bneedsclick\b/).test(target.className); + }; + + + /** + * Determine whether a given element requires a call to focus to simulate click into element. + * + * @param {EventTarget|Element} target Target DOM element + * @returns {boolean} Returns true if the element requires a call to focus to simulate native click. + */ + FastClick.prototype.needsFocus = function(target) { + switch (target.nodeName.toLowerCase()) { + case 'textarea': + return true; + case 'select': + return !deviceIsAndroid; + case 'input': + switch (target.type) { + case 'button': + case 'checkbox': + case 'file': + case 'image': + case 'radio': + case 'submit': + return false; + } + + // No point in attempting to focus disabled inputs + return !target.disabled && !target.readOnly; + default: + return (/\bneedsfocus\b/).test(target.className); + } + }; + + + /** + * Send a click event to the specified element. + * + * @param {EventTarget|Element} targetElement + * @param {Event} event + */ + FastClick.prototype.sendClick = function(targetElement, event) { + var clickEvent, touch; + + // On some Android devices activeElement needs to be blurred otherwise the synthetic click will have no effect (#24) + if (document.activeElement && document.activeElement !== targetElement) { + document.activeElement.blur(); + } + + touch = event.changedTouches[0]; + + // Synthesise a click event, with an extra attribute so it can be tracked + clickEvent = document.createEvent('MouseEvents'); + clickEvent.initMouseEvent(this.determineEventType(targetElement), true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null); + clickEvent.forwardedTouchEvent = true; + targetElement.dispatchEvent(clickEvent); + }; + + FastClick.prototype.determineEventType = function(targetElement) { + + //Issue #159: Android Chrome Select Box does not open with a synthetic click event + if (deviceIsAndroid && targetElement.tagName.toLowerCase() === 'select') { + return 'mousedown'; + } + + return 'click'; + }; + + + /** + * @param {EventTarget|Element} targetElement + */ + FastClick.prototype.focus = function(targetElement) { + var length; + + // Issue #160: on iOS 7, some input elements (e.g. date datetime month) throw a vague TypeError on setSelectionRange. These elements don't have an integer value for the selectionStart and selectionEnd properties, but unfortunately that can't be used for detection because accessing the properties also throws a TypeError. Just check the type instead. Filed as Apple bug #15122724. + if (deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month' && targetElement.type !== 'email') { + length = targetElement.value.length; + targetElement.setSelectionRange(length, length); + } else { + targetElement.focus(); + } + }; + + + /** + * Check whether the given target element is a child of a scrollable layer and if so, set a flag on it. + * + * @param {EventTarget|Element} targetElement + */ + FastClick.prototype.updateScrollParent = function(targetElement) { + var scrollParent, parentElement; + + scrollParent = targetElement.fastClickScrollParent; + + // Attempt to discover whether the target element is contained within a scrollable layer. Re-check if the + // target element was moved to another parent. + if (!scrollParent || !scrollParent.contains(targetElement)) { + parentElement = targetElement; + do { + if (parentElement.scrollHeight > parentElement.offsetHeight) { + scrollParent = parentElement; + targetElement.fastClickScrollParent = parentElement; + break; + } + + parentElement = parentElement.parentElement; + } while (parentElement); + } + + // Always update the scroll top tracker if possible. + if (scrollParent) { + scrollParent.fastClickLastScrollTop = scrollParent.scrollTop; + } + }; + + + /** + * @param {EventTarget} targetElement + * @returns {Element|EventTarget} + */ + FastClick.prototype.getTargetElementFromEventTarget = function(eventTarget) { + + // On some older browsers (notably Safari on iOS 4.1 - see issue #56) the event target may be a text node. + if (eventTarget.nodeType === Node.TEXT_NODE) { + return eventTarget.parentNode; + } + + return eventTarget; + }; + + + /** + * On touch start, record the position and scroll offset. + * + * @param {Event} event + * @returns {boolean} + */ + FastClick.prototype.onTouchStart = function(event) { + var targetElement, touch, selection; + + // Ignore multiple touches, otherwise pinch-to-zoom is prevented if both fingers are on the FastClick element (issue #111). + if (event.targetTouches.length > 1) { + return true; + } + + targetElement = this.getTargetElementFromEventTarget(event.target); + touch = event.targetTouches[0]; + + if (deviceIsIOS) { + + // Only trusted events will deselect text on iOS (issue #49) + selection = window.getSelection(); + if (selection.rangeCount && !selection.isCollapsed) { + return true; + } + + if (!deviceIsIOS4) { + + // Weird things happen on iOS when an alert or confirm dialog is opened from a click event callback (issue #23): + // when the user next taps anywhere else on the page, new touchstart and touchend events are dispatched + // with the same identifier as the touch event that previously triggered the click that triggered the alert. + // Sadly, there is an issue on iOS 4 that causes some normal touch events to have the same identifier as an + // immediately preceeding touch event (issue #52), so this fix is unavailable on that platform. + // Issue 120: touch.identifier is 0 when Chrome dev tools 'Emulate touch events' is set with an iOS device UA string, + // which causes all touch events to be ignored. As this block only applies to iOS, and iOS identifiers are always long, + // random integers, it's safe to to continue if the identifier is 0 here. + if (touch.identifier && touch.identifier === this.lastTouchIdentifier) { + event.preventDefault(); + return false; + } + + this.lastTouchIdentifier = touch.identifier; + + // If the target element is a child of a scrollable layer (using -webkit-overflow-scrolling: touch) and: + // 1) the user does a fling scroll on the scrollable layer + // 2) the user stops the fling scroll with another tap + // then the event.target of the last 'touchend' event will be the element that was under the user's finger + // when the fling scroll was started, causing FastClick to send a click event to that layer - unless a check + // is made to ensure that a parent layer was not scrolled before sending a synthetic click (issue #42). + this.updateScrollParent(targetElement); + } + } + + this.trackingClick = true; + this.trackingClickStart = event.timeStamp; + this.targetElement = targetElement; + + this.touchStartX = touch.pageX; + this.touchStartY = touch.pageY; + + // Prevent phantom clicks on fast double-tap (issue #36) + if ((event.timeStamp - this.lastClickTime) < this.tapDelay) { + event.preventDefault(); + } + + return true; + }; + + + /** + * Based on a touchmove event object, check whether the touch has moved past a boundary since it started. + * + * @param {Event} event + * @returns {boolean} + */ + FastClick.prototype.touchHasMoved = function(event) { + var touch = event.changedTouches[0], boundary = this.touchBoundary; + + if (Math.abs(touch.pageX - this.touchStartX) > boundary || Math.abs(touch.pageY - this.touchStartY) > boundary) { + return true; + } + + return false; + }; + + + /** + * Update the last position. + * + * @param {Event} event + * @returns {boolean} + */ + FastClick.prototype.onTouchMove = function(event) { + if (!this.trackingClick) { + return true; + } + + // If the touch has moved, cancel the click tracking + if (this.targetElement !== this.getTargetElementFromEventTarget(event.target) || this.touchHasMoved(event)) { + this.trackingClick = false; + this.targetElement = null; + } + + return true; + }; + + + /** + * Attempt to find the labelled control for the given label element. + * + * @param {EventTarget|HTMLLabelElement} labelElement + * @returns {Element|null} + */ + FastClick.prototype.findControl = function(labelElement) { + + // Fast path for newer browsers supporting the HTML5 control attribute + if (labelElement.control !== undefined) { + return labelElement.control; + } + + // All browsers under test that support touch events also support the HTML5 htmlFor attribute + if (labelElement.htmlFor) { + return document.getElementById(labelElement.htmlFor); + } + + // If no for attribute exists, attempt to retrieve the first labellable descendant element + // the list of which is defined here: http://www.w3.org/TR/html5/forms.html#category-label + return labelElement.querySelector('button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea'); + }; + + + /** + * On touch end, determine whether to send a click event at once. + * + * @param {Event} event + * @returns {boolean} + */ + FastClick.prototype.onTouchEnd = function(event) { + var forElement, trackingClickStart, targetTagName, scrollParent, touch, targetElement = this.targetElement; + + if (!this.trackingClick) { + return true; + } + + // Prevent phantom clicks on fast double-tap (issue #36) + if ((event.timeStamp - this.lastClickTime) < this.tapDelay) { + this.cancelNextClick = true; + return true; + } + + if ((event.timeStamp - this.trackingClickStart) > this.tapTimeout) { + return true; + } + + // Reset to prevent wrong click cancel on input (issue #156). + this.cancelNextClick = false; + + this.lastClickTime = event.timeStamp; + + trackingClickStart = this.trackingClickStart; + this.trackingClick = false; + this.trackingClickStart = 0; + + // On some iOS devices, the targetElement supplied with the event is invalid if the layer + // is performing a transition or scroll, and has to be re-detected manually. Note that + // for this to function correctly, it must be called *after* the event target is checked! + // See issue #57; also filed as rdar://13048589 . + if (deviceIsIOSWithBadTarget) { + touch = event.changedTouches[0]; + + // In certain cases arguments of elementFromPoint can be negative, so prevent setting targetElement to null + targetElement = document.elementFromPoint(touch.pageX - window.pageXOffset, touch.pageY - window.pageYOffset) || targetElement; + targetElement.fastClickScrollParent = this.targetElement.fastClickScrollParent; + } + + targetTagName = targetElement.tagName.toLowerCase(); + if (targetTagName === 'label') { + forElement = this.findControl(targetElement); + if (forElement) { + this.focus(targetElement); + if (deviceIsAndroid) { + return false; + } + + targetElement = forElement; + } + } else if (this.needsFocus(targetElement)) { + + // Case 1: If the touch started a while ago (best guess is 100ms based on tests for issue #36) then focus will be triggered anyway. Return early and unset the target element reference so that the subsequent click will be allowed through. + // Case 2: Without this exception for input elements tapped when the document is contained in an iframe, then any inputted text won't be visible even though the value attribute is updated as the user types (issue #37). + if ((event.timeStamp - trackingClickStart) > 100 || (deviceIsIOS && window.top !== window && targetTagName === 'input')) { + this.targetElement = null; + return false; + } + + this.focus(targetElement); + this.sendClick(targetElement, event); + + // Select elements need the event to go through on iOS 4, otherwise the selector menu won't open. + // Also this breaks opening selects when VoiceOver is active on iOS6, iOS7 (and possibly others) + if (!deviceIsIOS || targetTagName !== 'select') { + this.targetElement = null; + event.preventDefault(); + } + + return false; + } + + if (deviceIsIOS && !deviceIsIOS4) { + + // Don't send a synthetic click event if the target element is contained within a parent layer that was scrolled + // and this tap is being used to stop the scrolling (usually initiated by a fling - issue #42). + scrollParent = targetElement.fastClickScrollParent; + if (scrollParent && scrollParent.fastClickLastScrollTop !== scrollParent.scrollTop) { + return true; + } + } + + // Prevent the actual click from going though - unless the target node is marked as requiring + // real clicks or if it is in the allowlist in which case only non-programmatic clicks are permitted. + if (!this.needsClick(targetElement)) { + event.preventDefault(); + this.sendClick(targetElement, event); + } + + return false; + }; + + + /** + * On touch cancel, stop tracking the click. + * + * @returns {void} + */ + FastClick.prototype.onTouchCancel = function() { + this.trackingClick = false; + this.targetElement = null; + }; + + + /** + * Determine mouse events which should be permitted. + * + * @param {Event} event + * @returns {boolean} + */ + FastClick.prototype.onMouse = function(event) { + + // If a target element was never set (because a touch event was never fired) allow the event + if (!this.targetElement) { + return true; + } + + if (event.forwardedTouchEvent) { + return true; + } + + // Programmatically generated events targeting a specific element should be permitted + if (!event.cancelable) { + return true; + } + + // Derive and check the target element to see whether the mouse event needs to be permitted; + // unless explicitly enabled, prevent non-touch click events from triggering actions, + // to prevent ghost/doubleclicks. + if (!this.needsClick(this.targetElement) || this.cancelNextClick) { + + // Prevent any user-added listeners declared on FastClick element from being fired. + if (event.stopImmediatePropagation) { + event.stopImmediatePropagation(); + } else { + + // Part of the hack for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2) + event.propagationStopped = true; + } + + // Cancel the event + event.stopPropagation(); + event.preventDefault(); + + return false; + } + + // If the mouse event is permitted, return true for the action to go through. + return true; + }; + + + /** + * On actual clicks, determine whether this is a touch-generated click, a click action occurring + * naturally after a delay after a touch (which needs to be cancelled to avoid duplication), or + * an actual click which should be permitted. + * + * @param {Event} event + * @returns {boolean} + */ + FastClick.prototype.onClick = function(event) { + var permitted; + + // It's possible for another FastClick-like library delivered with third-party code to fire a click event before FastClick does (issue #44). In that case, set the click-tracking flag back to false and return early. This will cause onTouchEnd to return early. + if (this.trackingClick) { + this.targetElement = null; + this.trackingClick = false; + return true; + } + + // Very odd behaviour on iOS (issue #18): if a submit element is present inside a form and the user hits enter in the iOS simulator or clicks the Go button on the pop-up OS keyboard the a kind of 'fake' click event will be triggered with the submit-type input element as the target. + if (event.target.type === 'submit' && event.detail === 0) { + return true; + } + + permitted = this.onMouse(event); + + // Only unset targetElement if the click is not permitted. This will ensure that the check for !targetElement in onMouse fails and the browser's click doesn't go through. + if (!permitted) { + this.targetElement = null; + } + + // If clicks are permitted, return true for the action to go through. + return permitted; + }; + + + /** + * Remove all FastClick's event listeners. + * + * @returns {void} + */ + FastClick.prototype.destroy = function() { + var layer = this.layer; + + if (deviceIsAndroid) { + layer.removeEventListener('mouseover', this.onMouse, true); + layer.removeEventListener('mousedown', this.onMouse, true); + layer.removeEventListener('mouseup', this.onMouse, true); + } + + layer.removeEventListener('click', this.onClick, true); + layer.removeEventListener('touchstart', this.onTouchStart, false); + layer.removeEventListener('touchmove', this.onTouchMove, false); + layer.removeEventListener('touchend', this.onTouchEnd, false); + layer.removeEventListener('touchcancel', this.onTouchCancel, false); + }; + + + /** + * Check whether FastClick is needed. + * + * @param {Element} layer The layer to listen on + */ + FastClick.notNeeded = function(layer) { + var metaViewport; + var chromeVersion; + var blackberryVersion; + var firefoxVersion; + + // Devices that don't support touch don't need FastClick + if (typeof window.ontouchstart === 'undefined') { + return true; + } + + // Chrome version - zero for other browsers + chromeVersion = +(/Chrome\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1]; + + if (chromeVersion) { + + if (deviceIsAndroid) { + metaViewport = document.querySelector('meta[name=viewport]'); + + if (metaViewport) { + // Chrome on Android with user-scalable="no" doesn't need FastClick (issue #89) + if (metaViewport.content.indexOf('user-scalable=no') !== -1) { + return true; + } + // Chrome 32 and above with width=device-width or less don't need FastClick + if (chromeVersion > 31 && document.documentElement.scrollWidth <= window.outerWidth) { + return true; + } + } + + // Chrome desktop doesn't need FastClick (issue #15) + } else { + return true; + } + } + + if (deviceIsBlackBerry10) { + blackberryVersion = navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/); + + // BlackBerry 10.3+ does not require Fastclick library. + // https://github.com/ftlabs/fastclick/issues/251 + if (blackberryVersion[1] >= 10 && blackberryVersion[2] >= 3) { + metaViewport = document.querySelector('meta[name=viewport]'); + + if (metaViewport) { + // user-scalable=no eliminates click delay. + if (metaViewport.content.indexOf('user-scalable=no') !== -1) { + return true; + } + // width=device-width (or less than device-width) eliminates click delay. + if (document.documentElement.scrollWidth <= window.outerWidth) { + return true; + } + } + } + } + + // IE10 with -ms-touch-action: none or manipulation, which disables double-tap-to-zoom (issue #97) + if (layer.style.msTouchAction === 'none' || layer.style.touchAction === 'manipulation') { + return true; + } + + // Firefox version - zero for other browsers + firefoxVersion = +(/Firefox\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1]; + + if (firefoxVersion >= 27) { + // Firefox 27+ does not have tap delay if the content is not zoomable - https://bugzilla.mozilla.org/show_bug.cgi?id=922896 + + metaViewport = document.querySelector('meta[name=viewport]'); + if (metaViewport && (metaViewport.content.indexOf('user-scalable=no') !== -1 || document.documentElement.scrollWidth <= window.outerWidth)) { + return true; + } + } + + // IE11: prefixed -ms-touch-action is no longer supported and it's recomended to use non-prefixed version + // http://msdn.microsoft.com/en-us/library/windows/apps/Hh767313.aspx + if (layer.style.touchAction === 'none' || layer.style.touchAction === 'manipulation') { + return true; + } + + return false; + }; + + + /** + * Factory method for creating a FastClick object + * + * @param {Element} layer The layer to listen on + * @param {Object} [options={}] The options to override the defaults + */ + FastClick.attach = function(layer, options) { + return new FastClick(layer, options); + }; + + + if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) { + + // AMD. Register as an anonymous module. + define(function() { + return FastClick; + }); + } else if (typeof module !== 'undefined' && module.exports) { + module.exports = FastClick.attach; + module.exports.FastClick = FastClick; + } else { + window.FastClick = FastClick; + } +}()); diff --git a/7-7/src/index.js b/7-7/src/index.js new file mode 100644 index 0000000..5e28f74 --- /dev/null +++ b/7-7/src/index.js @@ -0,0 +1,146 @@ +$(function() { + const clientWith = document.body.clientWidth; + const leftBorder = 50; + const rightBorder = clientWith - (50+100); + let add = 40; + const speed = 40; + setInterval(function() { + let left = $('.box-tools').css('left'); + left = parseInt(left); + if(left <= leftBorder) { + add = speed; + } + if(left >= rightBorder) { + add = -speed; + } + $('.box-tools').css({ + left: left + add + 'px' + }); + }, 150); + // https://github.com/kylefox/jquery-modal + // $('#ex1').modal(); + const clientHeight = document.body.clientHeight; + let bottom = 0; + let boxCount = 1; + let version = 0; + let isAnimate = false; + let lastLeft = 120; + const colors = ['#9ACBDE', '#FDF7EB', '#FFE3B1', '#AAEBCB', '#34CFC7', '#dec650']; + const imgs = ['https://s3.qiufengh.com/2019-7-7/301565001546_.pic.jpg', 'https://s3.qiufengh.com/2019-7-7/281565001543_.pic.jpg', 'https://s3.qiufengh.com/2019-7-7/261565001541_.pic.jpg','https://s3.qiufengh.com/2019-7-7/251565001495_.pic.jpg', 'https://s3.qiufengh.com/2019-7-7/241565001494_.pic.jpg','https://s3.qiufengh.com/2019-7-7/201565001490_.pic.jpg']; + const diff = 60; + const total = 30; + let lastColor = colors[Math.floor(Math.random()*6)]; + let lastImgs = imgs[Math.floor(Math.random()*6)]; + + $('.box-tools .box-item').css({ + 'background-color': lastColor, + 'background-image': 'url('+lastImgs+')', + }) + + $('#ex2').modal(); + + setTimeout(function() { + $.modal.close(); + }, 2000); + + $('.container').click(function() { + if(!isAnimate) { + isAnimate = true; + const left = parseInt($('.box-tools').css('left')); + if(lastLeft - left > diff || lastLeft - left < -diff) { + $('#ex4').modal(); + setTimeout(function() { + location.reload(); + }, 3000); + } + lastLeft = left; + const boxItem = $('
'); + boxItem.css({ + left: left + 'px', + top: '50px', + 'background-color': lastColor, + 'background-image': 'url('+lastImgs+')', + }) + let bgColor = colors[Math.floor(Math.random()*5)]; + let nowImg = imgs[Math.floor(Math.random()*6)]; + while(bgColor === lastColor) { + bgColor = colors[Math.floor(Math.random()*5)]; + } + while(lastImgs === nowImg) { + nowImg = imgs[Math.floor(Math.random()*6)];; + } + $('.box-tools .box-item').css({ + 'background-color': bgColor, + 'background-image': 'url('+nowImg+')', + }) + lastColor = bgColor; + lastImgs = nowImg; + + $('.bottom').append(boxItem); + boxItem.animate({ + top: clientHeight - (boxCount + 1)* 100 + 'px' + }); + boxCount ++; + if(boxCount === 5) { + version++; + boxCount = 1; + $('.modal .version').text(version + 1); + $('.score-wrapper .score').text(version * 4 + boxCount); + if(version * 4 + boxCount >= total) { + $('#ex3').modal({ + showClose: false, + closeExisting: false + }); + $('.score-wrapper .score').text('爆表!!!'); + setTimeout(function() { + location.reload(); + }, 5 *1000); + return; + } + setTimeout(function() { + $('.bottom').css({ + 'transform':'translateY(400px)', + }); + $('#ex1').modal({ + showClose: false, + closeExisting: false + }); + setTimeout(function() { + $.modal.close(); + const lastChild = $('.bottom').children(".box-item:last-child"); + lastChild.css({ + bottom: '0px', + top: 'auto' + }) + $('.bottom').empty(); + $('.bottom').addClass('bottom-none'); + $('.bottom').css({ + 'transform':'translateY(0)', + }); + $('.bottom').append(lastChild); + setTimeout(function() { + $('.bottom').removeClass('bottom-none') + isAnimate = false; + }, 100) + }, 1000); + }, 1000); + } else { + if(version * 4 + boxCount >= total) { + $('#ex3').modal({ + showClose: false, + closeExisting: false + }); + setTimeout(function() { + location.reload(); + }, 5 *1000); + return; + } + $('.score-wrapper .score').text(version * 4 + boxCount); + setTimeout(function() { + isAnimate = false; + }, 1000); + } + + } + }) +}); \ No newline at end of file diff --git a/7-7/styles/index.css b/7-7/styles/index.css new file mode 100644 index 0000000..f82fbf5 --- /dev/null +++ b/7-7/styles/index.css @@ -0,0 +1,80 @@ +.container { + height: 100vh; + position: relative; + background-image: url('../bg.gif'); + background-size: 100% 100%; + background-position: no-repeat; +} +.top { + width: 100vw; + height: 300px; + display: flex; + justify-content: center; +} +.box-tools { + display: flex; + justify-content: center; + flex-direction: column; + align-items: center; + width: 100px; + position: absolute; + transition: left 0.5s; +} + +.box-rope { + width: 10px; + height: 50px; + background: #726b6b; +} + +.box-item { + position: absolute; + width: 100px; + height: 100px; + background: #4b4b42; + background-size: 80%; + background-position: 50%; + background-repeat: no-repeat; + border-radius: 5px; +} + +.bottom { + width: 100vw; + height: 100vh; + position: absolute; + left: 0; + top: 0; + display: flex; + justify-content: center; + transition: all 0.25s; +} + +.bottom.bottom-none { + transition: none; +} + +div.blocker { + background-color: rgba(0, 0, 0, 0.38); +} + +div.modal{ + -webkit-box-shadow: 0 0 10px #7a7a7a; + -moz-box-shadow: 0 0 10px #7a7a7a; + -o-box-shadow: 0 0 10px #7a7a7a; + -ms-box-shadow: 0 0 10px #7a7a7a; + box-shadow: 0 0 10px #7a7a7a; + text-align: center; +} + +.score-wrapper { + width: 80px; + height: 50px; + position: fixed; + left: 0; + top: 0; + display: flex; + justify-content: center; + align-items: center; + border-radius: 10px; + border: 1px solid #7a7a7a; +} \ No newline at end of file diff --git a/7-7/styles/reset.css b/7-7/styles/reset.css new file mode 100644 index 0000000..af94440 --- /dev/null +++ b/7-7/styles/reset.css @@ -0,0 +1,48 @@ +/* http://meyerweb.com/eric/tools/css/reset/ + v2.0 | 20110126 + License: none (public domain) +*/ + +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; +} +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} +body { + line-height: 1; +} +ol, ul { + list-style: none; +} +blockquote, q { + quotes: none; +} +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} +table { + border-collapse: collapse; + border-spacing: 0; +} \ No newline at end of file diff --git a/love-yuan/README.md b/love-yuan/README.md new file mode 100644 index 0000000..8ac7ae9 --- /dev/null +++ b/love-yuan/README.md @@ -0,0 +1,21 @@ +# love + +> A Vue.js project + +## Build Setup + +``` bash +# install dependencies +npm install + +# serve with hot reload at localhost:8080 +npm run dev + +# build for production with minification +npm run build + +# build for production and view the bundle analyzer report +npm run build --report +``` + +For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). diff --git a/love-yuan/build/build.js b/love-yuan/build/build.js new file mode 100644 index 0000000..8f2ad8a --- /dev/null +++ b/love-yuan/build/build.js @@ -0,0 +1,41 @@ +'use strict' +require('./check-versions')() + +process.env.NODE_ENV = 'production' + +const ora = require('ora') +const rm = require('rimraf') +const path = require('path') +const chalk = require('chalk') +const webpack = require('webpack') +const config = require('../config') +const webpackConfig = require('./webpack.prod.conf') + +const spinner = ora('building for production...') +spinner.start() + +rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { + if (err) throw err + webpack(webpackConfig, (err, stats) => { + spinner.stop() + if (err) throw err + process.stdout.write(stats.toString({ + colors: true, + modules: false, + children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build. + chunks: false, + chunkModules: false + }) + '\n\n') + + if (stats.hasErrors()) { + console.log(chalk.red(' Build failed with errors.\n')) + process.exit(1) + } + + console.log(chalk.cyan(' Build complete.\n')) + console.log(chalk.yellow( + ' Tip: built files are meant to be served over an HTTP server.\n' + + ' Opening index.html over file:// won\'t work.\n' + )) + }) +}) diff --git a/love-yuan/build/check-versions.js b/love-yuan/build/check-versions.js new file mode 100644 index 0000000..3ef972a --- /dev/null +++ b/love-yuan/build/check-versions.js @@ -0,0 +1,54 @@ +'use strict' +const chalk = require('chalk') +const semver = require('semver') +const packageConfig = require('../package.json') +const shell = require('shelljs') + +function exec (cmd) { + return require('child_process').execSync(cmd).toString().trim() +} + +const versionRequirements = [ + { + name: 'node', + currentVersion: semver.clean(process.version), + versionRequirement: packageConfig.engines.node + } +] + +if (shell.which('npm')) { + versionRequirements.push({ + name: 'npm', + currentVersion: exec('npm --version'), + versionRequirement: packageConfig.engines.npm + }) +} + +module.exports = function () { + const warnings = [] + + for (let i = 0; i < versionRequirements.length; i++) { + const mod = versionRequirements[i] + + if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { + warnings.push(mod.name + ': ' + + chalk.red(mod.currentVersion) + ' should be ' + + chalk.green(mod.versionRequirement) + ) + } + } + + if (warnings.length) { + console.log('') + console.log(chalk.yellow('To use this template, you must update following to modules:')) + console.log() + + for (let i = 0; i < warnings.length; i++) { + const warning = warnings[i] + console.log(' ' + warning) + } + + console.log() + process.exit(1) + } +} diff --git a/love-yuan/build/logo.png b/love-yuan/build/logo.png new file mode 100644 index 0000000..f3d2503 Binary files /dev/null and b/love-yuan/build/logo.png differ diff --git a/love-yuan/build/utils.js b/love-yuan/build/utils.js new file mode 100644 index 0000000..5a5edbf --- /dev/null +++ b/love-yuan/build/utils.js @@ -0,0 +1,109 @@ +'use strict' +const path = require('path') +const config = require('../config') +const ExtractTextPlugin = require('extract-text-webpack-plugin') +const packageConfig = require('../package.json') + +exports.assetsPath = function (_path) { + const assetsSubDirectory = process.env.NODE_ENV === 'production' + ? config.build.assetsSubDirectory + : config.dev.assetsSubDirectory + + return path.posix.join(assetsSubDirectory, _path) +} + +exports.cssLoaders = function (options) { + options = options || {} + + const cssLoader = { + loader: 'css-loader', + options: { + sourceMap: options.sourceMap, + importLoader: 5 // 在加载cssLoader之前加载的loader个数 + } + } + + const px2remLoader = { + loader: 'px2rem-loader', + options: { + emUnit: 75 // 设计稿的1/10 + } + } + + const postcssLoader = { + loader: 'postcss-loader', + options: { + sourceMap: options.sourceMap + } + } + + // generate loader string to be used with extract text plugin + function generateLoaders (loader, loaderOptions) { + const loaders = options.usePostCSS ? [cssLoader, postcssLoader, px2remLoader] : [cssLoader, px2remLoader] + + if (loader) { + loaders.push({ + loader: loader + '-loader', + options: Object.assign({}, loaderOptions, { + sourceMap: options.sourceMap + }) + }) + } + + // Extract CSS when that option is specified + // (which is the case during production build) + if (options.extract) { + return ExtractTextPlugin.extract({ + use: loaders, + fallback: 'vue-style-loader' + }) + } else { + return ['vue-style-loader'].concat(loaders) + } + } + + // https://vue-loader.vuejs.org/en/configurations/extract-css.html + return { + css: generateLoaders(), + postcss: generateLoaders(), + less: generateLoaders('less'), + sass: generateLoaders('sass', { indentedSyntax: true }), + scss: generateLoaders('sass'), + stylus: generateLoaders('stylus'), + styl: generateLoaders('stylus') + } +} + +// Generate loaders for standalone style files (outside of .vue) +exports.styleLoaders = function (options) { + const output = [] + const loaders = exports.cssLoaders(options) + + for (const extension in loaders) { + const loader = loaders[extension] + output.push({ + test: new RegExp('\\.' + extension + '$'), + use: loader + }) + } + + return output +} + +exports.createNotifierCallback = () => { + const notifier = require('node-notifier') + + return (severity, errors) => { + if (severity !== 'error') return + + const error = errors[0] + const filename = error.file && error.file.split('!').pop() + + notifier.notify({ + title: packageConfig.name, + message: severity + ': ' + error.name, + subtitle: filename || '', + icon: path.join(__dirname, 'logo.png') + }) + } +} diff --git a/love-yuan/build/vue-loader.conf.js b/love-yuan/build/vue-loader.conf.js new file mode 100644 index 0000000..33ed58b --- /dev/null +++ b/love-yuan/build/vue-loader.conf.js @@ -0,0 +1,22 @@ +'use strict' +const utils = require('./utils') +const config = require('../config') +const isProduction = process.env.NODE_ENV === 'production' +const sourceMapEnabled = isProduction + ? config.build.productionSourceMap + : config.dev.cssSourceMap + +module.exports = { + loaders: utils.cssLoaders({ + sourceMap: sourceMapEnabled, + extract: isProduction + }), + cssSourceMap: sourceMapEnabled, + cacheBusting: config.dev.cacheBusting, + transformToRequire: { + video: ['src', 'poster'], + source: 'src', + img: 'src', + image: 'xlink:href' + } +} diff --git a/love-yuan/build/webpack.base.conf.js b/love-yuan/build/webpack.base.conf.js new file mode 100644 index 0000000..a07e683 --- /dev/null +++ b/love-yuan/build/webpack.base.conf.js @@ -0,0 +1,82 @@ +'use strict' +const path = require('path') +const utils = require('./utils') +const config = require('../config') +const vueLoaderConfig = require('./vue-loader.conf') + +function resolve (dir) { + return path.join(__dirname, '..', dir) +} + + + +module.exports = { + context: path.resolve(__dirname, '../'), + entry: { + app: './src/main.js' + }, + output: { + path: config.build.assetsRoot, + filename: '[name].js', + publicPath: process.env.NODE_ENV === 'production' + ? config.build.assetsPublicPath + : config.dev.assetsPublicPath + }, + resolve: { + extensions: ['.js', '.vue', '.json'], + alias: { + 'vue$': 'vue/dist/vue.esm.js', + '@': resolve('src'), + } + }, + module: { + rules: [ + { + test: /\.vue$/, + loader: 'vue-loader', + options: vueLoaderConfig + }, + { + test: /\.js$/, + loader: 'babel-loader', + include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')] + }, + { + test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, + loader: 'url-loader', + options: { + limit: 10000, + name: utils.assetsPath('img/[name].[hash:7].[ext]') + } + }, + { + test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, + loader: 'url-loader', + options: { + limit: 10000, + name: utils.assetsPath('media/[name].[hash:7].[ext]') + } + }, + { + test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, + loader: 'url-loader', + options: { + limit: 10000, + name: utils.assetsPath('fonts/[name].[hash:7].[ext]') + } + } + ] + }, + node: { + // prevent webpack from injecting useless setImmediate polyfill because Vue + // source contains it (although only uses it if it's native). + setImmediate: false, + // prevent webpack from injecting mocks to Node native modules + // that does not make sense for the client + dgram: 'empty', + fs: 'empty', + net: 'empty', + tls: 'empty', + child_process: 'empty' + } +} diff --git a/love-yuan/build/webpack.dev.conf.js b/love-yuan/build/webpack.dev.conf.js new file mode 100755 index 0000000..070ae22 --- /dev/null +++ b/love-yuan/build/webpack.dev.conf.js @@ -0,0 +1,95 @@ +'use strict' +const utils = require('./utils') +const webpack = require('webpack') +const config = require('../config') +const merge = require('webpack-merge') +const path = require('path') +const baseWebpackConfig = require('./webpack.base.conf') +const CopyWebpackPlugin = require('copy-webpack-plugin') +const HtmlWebpackPlugin = require('html-webpack-plugin') +const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') +const portfinder = require('portfinder') + +const HOST = process.env.HOST +const PORT = process.env.PORT && Number(process.env.PORT) + +const devWebpackConfig = merge(baseWebpackConfig, { + module: { + rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true }) + }, + // cheap-module-eval-source-map is faster for development + devtool: config.dev.devtool, + + // these devServer options should be customized in /config/index.js + devServer: { + clientLogLevel: 'warning', + historyApiFallback: { + rewrites: [ + { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') }, + ], + }, + hot: true, + contentBase: false, // since we use CopyWebpackPlugin. + compress: true, + host: HOST || config.dev.host, + port: PORT || config.dev.port, + open: config.dev.autoOpenBrowser, + overlay: config.dev.errorOverlay + ? { warnings: false, errors: true } + : false, + publicPath: config.dev.assetsPublicPath, + proxy: config.dev.proxyTable, + quiet: true, // necessary for FriendlyErrorsPlugin + watchOptions: { + poll: config.dev.poll, + } + }, + plugins: [ + new webpack.DefinePlugin({ + 'process.env': require('../config/dev.env') + }), + new webpack.HotModuleReplacementPlugin(), + new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update. + new webpack.NoEmitOnErrorsPlugin(), + // https://github.com/ampedandwired/html-webpack-plugin + new HtmlWebpackPlugin({ + filename: 'index.html', + template: 'index.html', + inject: true + }), + // copy custom static assets + new CopyWebpackPlugin([ + { + from: path.resolve(__dirname, '../static'), + to: config.dev.assetsSubDirectory, + ignore: ['.*'] + } + ]) + ] +}) + +module.exports = new Promise((resolve, reject) => { + portfinder.basePort = process.env.PORT || config.dev.port + portfinder.getPort((err, port) => { + if (err) { + reject(err) + } else { + // publish the new Port, necessary for e2e tests + process.env.PORT = port + // add port to devServer config + devWebpackConfig.devServer.port = port + + // Add FriendlyErrorsPlugin + devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({ + compilationSuccessInfo: { + messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`], + }, + onErrors: config.dev.notifyOnErrors + ? utils.createNotifierCallback() + : undefined + })) + + resolve(devWebpackConfig) + } + }) +}) diff --git a/love-yuan/build/webpack.prod.conf.js b/love-yuan/build/webpack.prod.conf.js new file mode 100644 index 0000000..d9f99f6 --- /dev/null +++ b/love-yuan/build/webpack.prod.conf.js @@ -0,0 +1,145 @@ +'use strict' +const path = require('path') +const utils = require('./utils') +const webpack = require('webpack') +const config = require('../config') +const merge = require('webpack-merge') +const baseWebpackConfig = require('./webpack.base.conf') +const CopyWebpackPlugin = require('copy-webpack-plugin') +const HtmlWebpackPlugin = require('html-webpack-plugin') +const ExtractTextPlugin = require('extract-text-webpack-plugin') +const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') +const UglifyJsPlugin = require('uglifyjs-webpack-plugin') + +const env = require('../config/prod.env') + +const webpackConfig = merge(baseWebpackConfig, { + module: { + rules: utils.styleLoaders({ + sourceMap: config.build.productionSourceMap, + extract: true, + usePostCSS: true + }) + }, + devtool: config.build.productionSourceMap ? config.build.devtool : false, + output: { + path: config.build.assetsRoot, + filename: utils.assetsPath('js/[name].[chunkhash].js'), + chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') + }, + plugins: [ + // http://vuejs.github.io/vue-loader/en/workflow/production.html + new webpack.DefinePlugin({ + 'process.env': env + }), + new UglifyJsPlugin({ + uglifyOptions: { + compress: { + warnings: false + } + }, + sourceMap: config.build.productionSourceMap, + parallel: true + }), + // extract css into its own file + new ExtractTextPlugin({ + filename: utils.assetsPath('css/[name].[contenthash].css'), + // Setting the following option to `false` will not extract CSS from codesplit chunks. + // Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack. + // It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`, + // increasing file size: https://github.com/vuejs-templates/webpack/issues/1110 + allChunks: true, + }), + // Compress extracted CSS. We are using this plugin so that possible + // duplicated CSS from different components can be deduped. + new OptimizeCSSPlugin({ + cssProcessorOptions: config.build.productionSourceMap + ? { safe: true, map: { inline: false } } + : { safe: true } + }), + // generate dist index.html with correct asset hash for caching. + // you can customize output by editing /index.html + // see https://github.com/ampedandwired/html-webpack-plugin + new HtmlWebpackPlugin({ + filename: config.build.index, + template: 'index.html', + inject: true, + minify: { + removeComments: true, + collapseWhitespace: true, + removeAttributeQuotes: true + // more options: + // https://github.com/kangax/html-minifier#options-quick-reference + }, + // necessary to consistently work with multiple chunks via CommonsChunkPlugin + chunksSortMode: 'dependency' + }), + // keep module.id stable when vendor modules does not change + new webpack.HashedModuleIdsPlugin(), + // enable scope hoisting + new webpack.optimize.ModuleConcatenationPlugin(), + // split vendor js into its own file + new webpack.optimize.CommonsChunkPlugin({ + name: 'vendor', + minChunks (module) { + // any required modules inside node_modules are extracted to vendor + return ( + module.resource && + /\.js$/.test(module.resource) && + module.resource.indexOf( + path.join(__dirname, '../node_modules') + ) === 0 + ) + } + }), + // extract webpack runtime and module manifest to its own file in order to + // prevent vendor hash from being updated whenever app bundle is updated + new webpack.optimize.CommonsChunkPlugin({ + name: 'manifest', + minChunks: Infinity + }), + // This instance extracts shared chunks from code splitted chunks and bundles them + // in a separate chunk, similar to the vendor chunk + // see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk + new webpack.optimize.CommonsChunkPlugin({ + name: 'app', + async: 'vendor-async', + children: true, + minChunks: 3 + }), + + // copy custom static assets + new CopyWebpackPlugin([ + { + from: path.resolve(__dirname, '../static'), + to: config.build.assetsSubDirectory, + ignore: ['.*'] + } + ]) + ] +}) + +if (config.build.productionGzip) { + const CompressionWebpackPlugin = require('compression-webpack-plugin') + + webpackConfig.plugins.push( + new CompressionWebpackPlugin({ + asset: '[path].gz[query]', + algorithm: 'gzip', + test: new RegExp( + '\\.(' + + config.build.productionGzipExtensions.join('|') + + ')$' + ), + threshold: 10240, + minRatio: 0.8 + }) + ) +} + +if (config.build.bundleAnalyzerReport) { + const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin + webpackConfig.plugins.push(new BundleAnalyzerPlugin()) +} + +module.exports = webpackConfig diff --git a/love-yuan/config/dev.env.js b/love-yuan/config/dev.env.js new file mode 100644 index 0000000..1e22973 --- /dev/null +++ b/love-yuan/config/dev.env.js @@ -0,0 +1,7 @@ +'use strict' +const merge = require('webpack-merge') +const prodEnv = require('./prod.env') + +module.exports = merge(prodEnv, { + NODE_ENV: '"development"' +}) diff --git a/love-yuan/config/index.js b/love-yuan/config/index.js new file mode 100644 index 0000000..1f0f155 --- /dev/null +++ b/love-yuan/config/index.js @@ -0,0 +1,69 @@ +'use strict' +// Template version: 1.3.1 +// see http://vuejs-templates.github.io/webpack for documentation. + +const path = require('path') + +module.exports = { + dev: { + + // Paths + assetsSubDirectory: 'static', + assetsPublicPath: '/', + proxyTable: {}, + + // Various Dev Server settings + host: 'localhost', // can be overwritten by process.env.HOST + port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined + autoOpenBrowser: false, + errorOverlay: true, + notifyOnErrors: true, + poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions- + + + /** + * Source Maps + */ + + // https://webpack.js.org/configuration/devtool/#development + devtool: 'cheap-module-eval-source-map', + + // If you have problems debugging vue-files in devtools, + // set this to false - it *may* help + // https://vue-loader.vuejs.org/en/options.html#cachebusting + cacheBusting: true, + + cssSourceMap: true + }, + + build: { + // Template for index.html + index: path.resolve(__dirname, '../dist/index.html'), + + // Paths + assetsRoot: path.resolve(__dirname, '../dist'), + assetsSubDirectory: 'static', + assetsPublicPath: './', + + /** + * Source Maps + */ + + productionSourceMap: true, + // https://webpack.js.org/configuration/devtool/#production + devtool: '#source-map', + + // Gzip off by default as many popular static hosts such as + // Surge or Netlify already gzip all static assets for you. + // Before setting to `true`, make sure to: + // npm install --save-dev compression-webpack-plugin + productionGzip: false, + productionGzipExtensions: ['js', 'css'], + + // Run the build command with an extra argument to + // View the bundle analyzer report after build finishes: + // `npm run build --report` + // Set to `true` or `false` to always turn it on or off + bundleAnalyzerReport: process.env.npm_config_report + } +} diff --git a/love-yuan/config/prod.env.js b/love-yuan/config/prod.env.js new file mode 100644 index 0000000..a6f9976 --- /dev/null +++ b/love-yuan/config/prod.env.js @@ -0,0 +1,4 @@ +'use strict' +module.exports = { + NODE_ENV: '"production"' +} diff --git a/love-yuan/dist/index.html b/love-yuan/dist/index.html new file mode 100644 index 0000000..517bc9f --- /dev/null +++ b/love-yuan/dist/index.html @@ -0,0 +1 @@ +❤️
\ No newline at end of file diff --git a/love-yuan/dist/static/css/app.ec3e554946f880f79e6f914717789fb8.css b/love-yuan/dist/static/css/app.ec3e554946f880f79e6f914717789fb8.css new file mode 100644 index 0000000..8915354 --- /dev/null +++ b/love-yuan/dist/static/css/app.ec3e554946f880f79e6f914717789fb8.css @@ -0,0 +1,2 @@ +*{margin:0;padding:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}html{overflow:hidden;width:100%}#app,body,html{height:100%}#app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50}.one,.van-swipe{height:100%}.one{background-color:#f9f1ff;margin-top:-.24rem}.one p:first-child{padding-top:1.6rem}.one p{margin-top:.266667rem}.one .next{font-size:.533333rem;position:absolute;left:48%;bottom:1.333333rem;animation:leaves 5s ease-in-out infinite alternate;-webkit-animation:dance .5s infinite alternate}.two{background-color:#daf6ff;height:100%;margin-top:-.24rem}.two p:first-child{padding-top:.8rem}.two p{margin-top:.266667rem}.two .next{font-size:.533333rem;position:absolute;left:48%;bottom:1.333333rem}.two .lover,.two .next{animation:leaves 5s ease-in-out infinite alternate;-webkit-animation:dance .5s infinite alternate}.two .lover{margin-top:.533333rem;font-size:.8rem;cursor:pointer}.avatar{width:1.333333rem;height:1.333333rem;border-radius:8.88rem;margin:0 .133333rem}.photo{width:2.666667rem;margin-bottom:.266667rem}@-webkit-keyframes dance{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(2);transform:scale(2)}}@keyframes dance{0%{-webkit-transform:scale(1);transform:scale(1)}to{-webkit-transform:scale(2);transform:scale(2)}}.three{background-color:#f9f1ff;height:100%;margin-top:-.24rem;position:relative}.three p:first-child{padding-top:1.6rem}.three p{margin-top:.266667rem}.three button{position:absolute;font-size:.266667rem;background-color:#fff}.four{background-color:#f9f1ff;height:100%;margin-top:-.24rem}.four button{position:absolute;top:9.333333rem;background:#fff}.four p:first-child{padding-top:1.6rem}.four p{margin-top:.266667rem}.four .btn1{left:1.333333rem}.four .btn2{left:4.533333rem}.rsv{-o-transition:all .2s;transition:all .2s;-moz-transition:all .2s;-webkit-transition:all .2s}.rjt,.rsv{padding:.133333rem .266667rem;border:.013333rem solid #d2d2d2}.rjt{top:10.666667rem;left:5.333333rem}a,abbr,acronym,address,applet,article,aside,audio,b,big,blockquote,body,canvas,caption,center,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,i,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,u,ul,var,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}:focus{outline:0}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration,input[type=search]::-webkit-search-results-button,input[type=search]::-webkit-search-results-decoration{-webkit-appearance:none;-moz-appearance:none}input[type=search]{-webkit-appearance:none;-moz-appearance:none}audio,canvas,video{display:inline-block;*display:inline;*zoom:1;max-width:100%}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted}a:active,a:hover{outline:0}img{border:0;-ms-interpolation-mode:bicubic}figure,form{margin:0}fieldset{border:.013333rem solid silver;margin:0 .026667rem;padding:.35em .625em .75em}legend{border:0;padding:0;white-space:normal;*margin-left:-.093333rem}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer;*overflow:visible}button[disabled],html input[disabled]{cursor:default}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0;*height:.173333rem;*width:.173333rem}input[type=search]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}button,html,input,select,textarea{color:#222}::-moz-selection{background:#b3d4fc;text-shadow:none}::selection{background:#b3d4fc;text-shadow:none}img{vertical-align:middle}fieldset{border:0;margin:0;padding:0}textarea{resize:vertical}.chromeframe{margin:.2em 0;background:#ccc;color:#000;padding:.2em 0} +/*# sourceMappingURL=app.ec3e554946f880f79e6f914717789fb8.css.map */ \ No newline at end of file diff --git a/love-yuan/dist/static/css/app.ec3e554946f880f79e6f914717789fb8.css.map b/love-yuan/dist/static/css/app.ec3e554946f880f79e6f914717789fb8.css.map new file mode 100644 index 0000000..548a63d --- /dev/null +++ b/love-yuan/dist/static/css/app.ec3e554946f880f79e6f914717789fb8.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["app.ec3e554946f880f79e6f914717789fb8.css"],"names":[],"mappings":"AACA,EACE,QAAS,CACT,SAAU,CACV,wBAAyB,CACtB,qBAAsB,CACrB,oBAAqB,CACjB,gBACV,CACA,KACE,eAAgB,CAChB,UAEF,CAIA,eALE,WAYF,CAPA,KAEE,6CAAmD,CACnD,kCAAmC,CACnC,iCAAkC,CAClC,iBAAkB,CAClB,aACF,CAwBA,gBAtBE,WA0BF,CAJA,KACE,wBAAyB,CAEzB,kBACF,CACA,mBACE,kBACF,CACA,OACE,qBACF,CACA,WACE,oBAAsB,CACtB,iBAAkB,CAClB,QAAS,CACT,kBAAmB,CACnB,kDAAmD,CACnD,8CACF,CAqBA,KACE,wBAAyB,CACzB,WAAY,CACZ,kBACF,CACA,mBACE,iBACF,CACA,OACE,qBACF,CACA,WACE,oBAAsB,CACtB,iBAAkB,CAClB,QAAS,CACT,kBAGF,CACA,uBAHE,kDAAmD,CACnD,8CAQF,CANA,YACE,qBAAuB,CACvB,eAAiB,CACjB,cAGF,CACA,QACE,iBAAkB,CAClB,kBAAmB,CACnB,qBAAsB,CACtB,mBACF,CACA,OACE,iBAAkB,CAClB,wBACF,CACA,yBACA,GACI,0BAA6B,CACrB,kBACZ,CACA,GACI,0BAA6B,CACrB,kBACZ,CACA,CACA,iBACA,GACI,0BAA6B,CACrB,kBACZ,CACA,GACI,0BAA6B,CACrB,kBACZ,CACA,CACA,OACE,wBAAyB,CACzB,WAAY,CACZ,kBAAoB,CACpB,iBACF,CACA,qBACE,kBACF,CACA,SACE,qBACF,CACA,cACE,iBAAkB,CAClB,oBAAsB,CACtB,qBACF,CACA,MACE,wBAAyB,CACzB,WAAY,CACZ,kBACF,CACA,aACE,iBAAkB,CAClB,eAAgB,CAChB,eACF,CACA,oBACE,kBACF,CACA,QACE,qBACF,CACA,YACE,gBACF,CACA,YACE,gBACF,CACA,KACE,qBAAuB,CACvB,kBAAoB,CACpB,uBAAyB,CAEzB,0BAIF,CACA,UAHE,6BAAgC,CAChC,+BAOF,CALA,KAGE,gBAAiB,CACjB,gBACF,CAKA,2ZAiFE,QAAS,CACT,SAAU,CACV,QAAS,CACT,cAAe,CACf,YAAa,CACb,uBACF,CAIA,OACE,SACF,CAIA,8EAWE,aACF,CAEA,KACE,aACF,CAEA,MAEE,eACF,CAEA,aAEE,WACF,CAEA,oDAIE,UAAW,CACX,YACF,CAOA,uMAIE,uBAAwB,CACxB,oBACF,CAEA,mBACE,uBAAwB,CACxB,oBAGF,CAYA,mBAGE,oBAAqB,EACrB,cAAgB,EAChB,MAAQ,CACR,cACF,CAOA,sBACE,YAAa,CACb,QACF,CAOA,SACE,YACF,CASA,KACE,cAAe,CAEf,6BAA8B,CAE9B,yBAEF,CAMA,QACE,mBACF,CAMA,iBAEE,SACF,CAOA,IACE,QAAS,CAET,8BAEF,CAcA,YACE,QACF,CAMA,SACE,8BAAiC,CACjC,mBAAqB,CACrB,0BACF,CAQA,OACE,QAAS,CAET,SAAU,CACV,kBAAmB,EAEnB,uBAEF,CASA,6BAIE,cAAe,CAEf,QAAS,CAET,uBAAwB,EAExB,qBAEF,CAOA,aAEE,kBACF,CASA,cAEE,mBACF,CAYA,oEAIE,yBAA0B,CAE1B,cAAe,EAEf,gBAEF,CAMA,sCAEE,cACF,CASA,uCAEE,6BAA8B,CACtB,qBAAsB,CAE9B,SAAU,EAEV,iBAAoB,EAEpB,gBAEF,CAQA,mBACE,4BAA6B,CAE7B,8BAA+B,CAE/B,sBACF,CAOA,+FAEE,uBACF,CAMA,iDAEE,QAAS,CACT,SACF,CAOA,SACE,aAAc,CAEd,kBAEF,CAMA,MACE,wBAAyB,CACzB,gBACF,CAEA,kCAKE,UACF,CAEA,iBACE,kBAAmB,CACnB,gBACF,CAEA,YACE,kBAAmB,CACnB,gBACF,CAEA,IACE,qBACF,CAEA,SACE,QAAS,CACT,QAAS,CACT,SACF,CAEA,SACE,eACF,CAEA,aACE,aAAe,CACf,eAAgB,CAChB,UAAW,CACX,cACF","file":"app.ec3e554946f880f79e6f914717789fb8.css","sourcesContent":["\n* {\n margin: 0;\n padding: 0;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\nhtml {\n overflow: hidden;\n width: 100%;\n height: 100%;\n}\nbody {\n height: 100%;\n}\n#app {\n height: 100%;\n font-family: \"Avenir\", Helvetica, Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-align: center;\n color: #2c3e50;\n}\n.van-swipe {\n height: 100%;\n}\n@-webkit-keyframes dance {\n0% {\n -webkit-transform: scale(1.0);\n transform: scale(1.0);\n}\n100% {\n -webkit-transform: scale(2.0);\n transform: scale(2.0);\n}\n}\n@keyframes dance {\n0% {\n -webkit-transform: scale(1.0);\n transform: scale(1.0);\n}\n100% {\n -webkit-transform: scale(2.0);\n transform: scale(2.0);\n}\n}\n.one {\n background-color: #f9f1ff;\n height: 100%;\n margin-top: -0.24rem;\n}\n.one p:nth-child(1) {\n padding-top: 1.6rem;\n}\n.one p {\n margin-top: 0.266667rem;\n}\n.one .next {\n font-size: 0.533333rem;\n position: absolute;\n left: 48%;\n bottom: 1.333333rem;\n animation: leaves 5s ease-in-out infinite alternate;\n -webkit-animation: dance .5s infinite alternate;\n}\n@-webkit-keyframes dance {\n0% {\n -webkit-transform: scale(1);\n transform: scale(1);\n}\n100% {\n -webkit-transform: scale(1.5);\n transform: scale(1.5);\n}\n}\n@keyframes dance {\n0% {\n -webkit-transform: scale(1);\n transform: scale(1);\n}\n100% {\n -webkit-transform: scale(1.5);\n transform: scale(1.5);\n}\n}\n.two {\n background-color: #daf6ff;\n height: 100%;\n margin-top: -0.24rem;\n}\n.two p:nth-child(1) {\n padding-top: 0.8rem;\n}\n.two p {\n margin-top: 0.266667rem;\n}\n.two .next {\n font-size: 0.533333rem;\n position: absolute;\n left: 48%;\n bottom: 1.333333rem;\n animation: leaves 5s ease-in-out infinite alternate;\n -webkit-animation: dance 0.5s infinite alternate;\n}\n.two .lover {\n margin-top: 0.533333rem;\n font-size: 0.8rem;\n cursor: pointer;\n animation: leaves 5s ease-in-out infinite alternate;\n -webkit-animation: dance 0.5s infinite alternate;\n}\n.avatar {\n width: 1.333333rem;\n height: 1.333333rem;\n border-radius: 8.88rem;\n margin: 0 0.133333rem;\n}\n.photo {\n width: 2.666667rem;\n margin-bottom: 0.266667rem;\n}\n@-webkit-keyframes dance {\n0% {\n -webkit-transform: scale(1.0);\n transform: scale(1.0);\n}\n100% {\n -webkit-transform: scale(2.0);\n transform: scale(2.0);\n}\n}\n@keyframes dance {\n0% {\n -webkit-transform: scale(1.0);\n transform: scale(1.0);\n}\n100% {\n -webkit-transform: scale(2.0);\n transform: scale(2.0);\n}\n}\n.three {\n background-color: #f9f1ff;\n height: 100%;\n margin-top: -0.24rem;\n position: relative;\n}\n.three p:nth-child(1) {\n padding-top: 1.6rem;\n}\n.three p {\n margin-top: 0.266667rem;\n}\n.three button {\n position: absolute;\n font-size: 0.266667rem;\n background-color: #fff;\n}\n.four {\n background-color: #f9f1ff;\n height: 100%;\n margin-top: -0.24rem;\n}\n.four button {\n position: absolute;\n top: 9.333333rem;\n background: #fff;\n}\n.four p:nth-child(1) {\n padding-top: 1.6rem;\n}\n.four p {\n margin-top: 0.266667rem;\n}\n.four .btn1 {\n left: 1.333333rem;\n}\n.four .btn2 {\n left: 4.533333rem;\n}\n.rsv {\n -o-transition: all 0.2s;\n transition: all 0.2s;\n -moz-transition: all 0.2s;\n /* Firefox 4 */\n -webkit-transition: all 0.2s;\n /* Safari 和 Chrome */\n padding: 0.133333rem 0.266667rem;\n border: 0.013333rem solid #d2d2d2;\n}\n.rjt {\n padding: 0.133333rem 0.266667rem;\n border: 0.013333rem solid #d2d2d2;\n top: 10.666667rem;\n left: 5.333333rem;\n}/* http://meyerweb.com/eric/tools/css/reset/\n v2.0-modified | 20110126\n License: none (public domain)\n*/\n\nhtml,\nbody,\ndiv,\nspan,\napplet,\nobject,\niframe,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\np,\nblockquote,\npre,\na,\nabbr,\nacronym,\naddress,\nbig,\ncite,\ncode,\ndel,\ndfn,\nem,\nimg,\nins,\nkbd,\nq,\ns,\nsamp,\nsmall,\nstrike,\nstrong,\nsub,\nsup,\ntt,\nvar,\nb,\nu,\ni,\ncenter,\ndl,\ndt,\ndd,\nol,\nul,\nli,\nfieldset,\nform,\nlabel,\nlegend,\ntable,\ncaption,\ntbody,\ntfoot,\nthead,\ntr,\nth,\ntd,\narticle,\naside,\ncanvas,\ndetails,\nembed,\nfigure,\nfigcaption,\nfooter,\nheader,\nhgroup,\nmenu,\nnav,\noutput,\nruby,\nsection,\nsummary,\ntime,\nmark,\naudio,\nvideo {\n margin: 0;\n padding: 0;\n border: 0;\n font-size: 100%;\n font: inherit;\n vertical-align: baseline;\n}\n\n/* make sure to set some focus styles for accessibility */\n\n:focus {\n outline: 0;\n}\n\n/* HTML5 display-role reset for older browsers */\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmenu,\nnav,\nsection {\n display: block;\n}\n\nbody {\n line-height: 1;\n}\n\nol,\nul {\n list-style: none;\n}\n\nblockquote,\nq {\n quotes: none;\n}\n\nblockquote:before,\nblockquote:after,\nq:before,\nq:after {\n content: '';\n content: none;\n}\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ninput[type=search]::-webkit-search-cancel-button,\ninput[type=search]::-webkit-search-decoration,\ninput[type=search]::-webkit-search-results-button,\ninput[type=search]::-webkit-search-results-decoration {\n -webkit-appearance: none;\n -moz-appearance: none;\n}\n\ninput[type=search] {\n -webkit-appearance: none;\n -moz-appearance: none;\n -webkit-box-sizing: content-box;\n box-sizing: content-box;\n}\n\ntextarea {\n overflow: auto;\n vertical-align: top;\n resize: vertical;\n}\n\n/**\n * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.\n */\n\naudio,\ncanvas,\nvideo {\n display: inline-block;\n *display: inline;\n *zoom: 1;\n max-width: 100%;\n}\n\n/**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n/**\n * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.\n * Known issue: no IE 6 support.\n */\n\n[hidden] {\n display: none;\n}\n\n/**\n * 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using\n * `em` units.\n * 2. Prevent iOS text size adjust after orientation change, without disabling\n * user zoom.\n */\n\nhtml {\n font-size: 100%;\n /* 1 */\n -webkit-text-size-adjust: 100%;\n /* 2 */\n -ms-text-size-adjust: 100%;\n /* 2 */\n}\n\n/**\n * Address `outline` inconsistency between Chrome and other browsers.\n */\n\na:focus {\n outline: thin dotted;\n}\n\n/**\n * Improve readability when focused and also mouse hovered in all browsers.\n */\n\na:active,\na:hover {\n outline: 0;\n}\n\n/**\n * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.\n * 2. Improve image quality when scaled in IE 7.\n */\n\nimg {\n border: 0;\n /* 1 */\n -ms-interpolation-mode: bicubic;\n /* 2 */\n}\n\n/**\n * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.\n */\n\nfigure {\n margin: 0;\n}\n\n/**\n * Correct margin displayed oddly in IE 6/7.\n */\n\nform {\n margin: 0;\n}\n\n/**\n * Define consistent border, margin, and padding.\n */\n\nfieldset {\n border: 0.013333rem solid #c0c0c0;\n margin: 0 0.026667rem;\n padding: 0.35em 0.625em 0.75em;\n}\n\n/**\n * 1. Correct color not being inherited in IE 6/7/8/9.\n * 2. Correct text not wrapping in Firefox 3.\n * 3. Correct alignment displayed oddly in IE 6/7.\n */\n\nlegend {\n border: 0;\n /* 1 */\n padding: 0;\n white-space: normal;\n /* 2 */\n *margin-left: -0.093333rem;\n /* 3 */\n}\n\n/**\n * 1. Correct font size not being inherited in all browsers.\n * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,\n * and Chrome.\n * 3. Improve appearance and consistency in all browsers.\n */\n\nbutton,\ninput,\nselect,\ntextarea {\n font-size: 100%;\n /* 1 */\n margin: 0;\n /* 2 */\n vertical-align: baseline;\n /* 3 */\n *vertical-align: middle;\n /* 3 */\n}\n\n/**\n * Address Firefox 3+ setting `line-height` on `input` using `!important` in\n * the UA stylesheet.\n */\n\nbutton,\ninput {\n line-height: normal;\n}\n\n/**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.\n * Correct `select` style inheritance in Firefox 4+ and Opera.\n */\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n * and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n * `input` and others.\n * 4. Remove inner spacing in IE 7 without affecting normal text inputs.\n * Known issue: inner spacing remains in IE 6.\n */\n\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n /* 2 */\n cursor: pointer;\n /* 3 */\n *overflow: visible;\n /* 4 */\n}\n\n/**\n * Re-set default cursor for disabled elements.\n */\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n/**\n * 1. Address box sizing set to content-box in IE 8/9.\n * 2. Remove excess padding in IE 8/9.\n * 3. Remove excess padding in IE 7.\n * Known issue: excess padding remains in IE 6.\n */\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n /* 1 */\n padding: 0;\n /* 2 */\n *height: 0.173333rem;\n /* 3 */\n *width: 0.173333rem;\n /* 3 */\n}\n\n/**\n * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome\n * (include `-moz` to future-proof).\n */\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n /* 1 */\n -webkit-box-sizing: content-box;\n /* 2 */\n box-sizing: content-box;\n}\n\n/**\n * Remove inner padding and search cancel button in Safari 5 and Chrome\n * on OS X.\n */\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * Remove inner padding and border in Firefox 3+.\n */\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n/**\n * 1. Remove default vertical scrollbar in IE 6/7/8/9.\n * 2. Improve readability and alignment in all browsers.\n */\n\ntextarea {\n overflow: auto;\n /* 1 */\n vertical-align: top;\n /* 2 */\n}\n\n/**\n * Remove most spacing between table cells.\n */\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\nhtml,\nbutton,\ninput,\nselect,\ntextarea {\n color: #222;\n}\n\n::-moz-selection {\n background: #b3d4fc;\n text-shadow: none;\n}\n\n::selection {\n background: #b3d4fc;\n text-shadow: none;\n}\n\nimg {\n vertical-align: middle;\n}\n\nfieldset {\n border: 0;\n margin: 0;\n padding: 0;\n}\n\ntextarea {\n resize: vertical;\n}\n\n.chromeframe {\n margin: 0.2em 0;\n background: #ccc;\n color: #000;\n padding: 0.2em 0;\n}"]} \ No newline at end of file diff --git a/love-yuan/dist/static/js/app.3b1cf55ac78dd14f33d5.js b/love-yuan/dist/static/js/app.3b1cf55ac78dd14f33d5.js new file mode 100644 index 0000000..a0f66be --- /dev/null +++ b/love-yuan/dist/static/js/app.3b1cf55ac78dd14f33d5.js @@ -0,0 +1,2 @@ +webpackJsonp([1],{"0ukV":function(t,e){},"1GLP":function(t,e){},"8Cmu":function(t,e){},N7QA:function(t,e){},NHnr:function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var s=n("kV13"),r=(n("D0oh"),n("6xlI")),a={mounted(){setInterval(()=>{const t=this.arr.shift();t&&this.texts.push(t)},1e3)},data(){const t=new Date;return{arr:["圆圆","❄️","我有话想对你说","🌹","遇见你我真的非常开心","😄",`今天是${t.getFullYear()}-${t.getMonth()+1}-${t.getDate()}`,"📅","这本来是一个一点都不特别的日子","🍥","但是接下来发生的事可能会让今天变得有点特别","❓","如果你猜今天貌似有点不一样特别而且对我有感觉 就请下滑","..."],texts:[]}}},o={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"one"},[t._l(t.texts,function(e){return n("p",{key:e},[t._v("\n "+t._s(e)+"\n ")])}),t._v(" "),0===t.arr.length?n("p",{staticClass:"next"},[n("van-icon",{attrs:{name:"arrow-down"}})],1):t._e()],2)},staticRenderFns:[]};var i=n("C7Lr")(a,o,!1,function(t){n("1GLP")},null,null).exports,l={data(){new Date;return{arr:["唔,也许一开始我们可能有点被外貌协会收编了","😆","但是后来我看到了小圆的温柔,小圆看到了我的才华","🎻","本来一个月前应该见面的我们,因为疫情","👫","我们被迫当了整整两个月的网友","😅","终于见面了,小圆依旧是如此美丽温柔(10级滤镜加上)","🌼","还记得我们每次说话都是那么的默契","👇","你想我的时候我正想你","😋","那么以后我负责帅气你负责美丽,怎么样❓","💓","请继续往下滑。"],texts:[]}},methods:{add(){const t=this.arr.shift();t&&this.texts.push(t)}}},c={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"two"},[n("p",[t._v("不断点击这个小爱心 你即将拥有好运")]),t._v(" "),n("p",{staticClass:"lover",on:{click:t.add}},[t._v("💗")]),t._v(" "),t._l(t.texts,function(e,s){return n("p",{key:e},[1===s?[t._m(0,!0)]:t._e(),t._v(" "),3===s?[t._m(1,!0)]:t._e(),t._v(" "),4===s?[t._m(2,!0)]:t._e(),t._v("\n "+t._s(e)+"\n ")],2)}),t._v(" "),0===t.arr.length?n("p",{staticClass:"next"},[n("van-icon",{attrs:{name:"arrow-down"}})],1):t._e()],2)},staticRenderFns:[function(){var t=this.$createElement,e=this._self._c||t;return e("div",[e("img",{staticClass:"avatar",attrs:{src:"https://s3.qiufengh.com/love/WechatIMG931.jpeg",alt:""}}),this._v("\n ❤️ ❤️ ❤️ 💗 ❤️ ❤️ ❤️\n "),e("img",{staticClass:"avatar",attrs:{src:"https://s3.qiufengh.com/love/WechatIMG930.jpeg",alt:""}})])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",[e("img",{staticClass:"photo",attrs:{src:"",alt:""}})])},function(){var t=this.$createElement,e=this._self._c||t;return e("div",[e("img",{staticClass:"photo",attrs:{src:"",alt:""}})])}]};var u=n("C7Lr")(l,c,!1,function(t){n("N7QA")},null,null).exports,v={mounted(){setInterval(()=>{this.countdown=Date.now().valueOf()-localStorage.getItem("love_now")},1e3)},data:()=>({countdown:0}),computed:{countdownDetail(){let t=this.countdown,e=0,n=0,s=0,r=0,a=0,o=0;return t/1e3/60/60/24/30/12>1&&(t-=1e3*(e=Math.floor(t/1e3/60/60/24/30/12))*60*60*24*30*12),t/1e3/60/60/24/30>1&&(t-=1e3*(n=Math.floor(t/1e3/60/60/24/30))*60*60*24*30),t/1e3/60/60/24>1&&(t-=1e3*(s=Math.floor(t/1e3/60/60/24))*60*60*24),t/1e3/60/60>1&&(t-=1e3*(r=Math.floor(t/1e3/60/60))*60*60),t/1e3/60>1&&(t-=1e3*(a=Math.floor(t/1e3/60))*60),t/1e3>1&&(t-=1e3*(o=Math.floor(t/1e3))),{y:e,m:n,d:s,h:r,min:a,s:o}}}},_={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"three"},[[n("p",[t._v("华益峰💗袁媛")]),t._v(" "),n("p",[t._v("已经在一起了")]),t._v(" "),n("p",[t._v("❤️❤️❤️❤️❤️❤️💗❤️❤️❤️❤️❤️❤️")]),t._v(" "),n("p",[t._v(t._s(t.countdownDetail.y)+"年")]),t._v(" "),n("p",[t._v(t._s(t.countdownDetail.m)+"月")]),t._v(" "),n("p",[t._v(t._s(t.countdownDetail.d)+"日")]),t._v(" "),n("p",[t._v(t._s(t.countdownDetail.h)+"时")]),t._v(" "),n("p",[t._v(t._s(t.countdownDetail.min)+"分")]),t._v(" "),n("p",[t._v(t._s(t.countdownDetail.s)+"秒")])]],2)},staticRenderFns:[]};var h=n("C7Lr")(v,_,!1,function(t){n("0ukV")},null,null).exports,d={mounted(){},data(){const t=new Date;return{arr:["所以就在今天小华正式地向你表白","👨","他喜欢你","🌹",`今天是${t.getFullYear()}-${t.getMonth()+1}-${t.getDate()}`,"📅","这将会是一个值得纪念的日志","😄","圆圆小盆友,你要不要考虑和小华在一起?","⭕️","请选择"],count:0}},methods:{handleError(){const t=document.querySelector(".btn1"),e=document.querySelector(".btn2");alert("你肯定是嫌弃我不好看, 唔,不行,这个选择我不同意,超级变变变。"),e.style.display="none",t.style.left="40%"},handleRight(){this.count++;const t=document.querySelector(".btn1");if(1===this.count)alert("嘿嘿,你同意了,我怎么能这么轻易放过你,喜欢我就来追我呀。");else if(this.count<5);else if(5===this.count)alert("来追我呀,追到就是你的啦。");else if(!(this.count<10)){if(10===this.count){const t=Date.now();return alert(`恭喜你,喜提小华一只,提货码${t},请截图保存,此码独一无二,稍后进行兑换, 以后就要在你家蹭你的喝你的啦。`),alert("重新刷新页面,会有惊喜哦"),void localStorage.setItem("love_now",t)}return}t.style.top=~~(600*Math.random())+"px",t.style.left=~~(300*Math.random())+"px"}}},p={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"four"},[t._l(t.arr,function(e){return n("p",{key:e},[t._v("\n "+t._s(e)+"\n ")])}),t._v(" "),0===t.arr.length?n("p",{staticClass:"next"},[n("van-icon",{attrs:{name:"arrow-down"}})],1):t._e(),t._v(" "),n("button",{staticClass:"rsv btn1",on:{click:t.handleRight}},[t._v("💕 同意在一起")]),t._v(" "),n("button",{staticClass:"rsv btn2",on:{click:t.handleError}},[t._v("\n ❌ 我美丽你丑我们不一样\n ")])],2)},staticRenderFns:[]};var f={name:"App",components:{One:i,Two:u,Three:h,Four:n("C7Lr")(d,p,!1,function(t){n("8Cmu")},null,null).exports},data:()=>({isTime:localStorage.getItem("love_now")})},m={render:function(){var t=this.$createElement,e=this._self._c||t;return e("div",{attrs:{id:"app"}},[this.isTime?e("Three"):e("van-swipe",{attrs:{vertical:!0,loop:!1}},[e("van-swipe-item",[e("One")],1),this._v(" "),e("van-swipe-item",[e("Two")],1),this._v(" "),e("van-swipe-item",[e("Four")],1)],1)],1)},staticRenderFns:[]};var w=n("C7Lr")(f,m,!1,function(t){n("u+Av")},null,null).exports;n("vdop");s.a.config.productionTip=!1,s.a.use(r.c).use(r.d).use(r.b).use(r.a),new s.a({el:"#app",components:{App:w},template:""})},"u+Av":function(t,e){},vdop:function(t,e){}},["NHnr"]); +//# sourceMappingURL=app.3b1cf55ac78dd14f33d5.js.map \ No newline at end of file diff --git a/love-yuan/dist/static/js/app.3b1cf55ac78dd14f33d5.js.map b/love-yuan/dist/static/js/app.3b1cf55ac78dd14f33d5.js.map new file mode 100644 index 0000000..0c868a1 --- /dev/null +++ b/love-yuan/dist/static/js/app.3b1cf55ac78dd14f33d5.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///src/components/one.vue","webpack:///./src/components/one.vue?c26a","webpack:///./src/components/one.vue","webpack:///src/components/two.vue","webpack:///./src/components/two.vue?61a8","webpack:///./src/components/two.vue","webpack:///src/components/three.vue","webpack:///./src/components/three.vue?a28e","webpack:///./src/components/three.vue","webpack:///src/components/four.vue","webpack:///./src/components/four.vue?0aa7","webpack:///./src/components/four.vue","webpack:///src/App.vue","webpack:///./src/App.vue?95bd","webpack:///./src/App.vue","webpack:///./src/main.js"],"names":["one","[object Object]","setInterval","item","this","arr","shift","texts","push","date","Date","getFullYear","getMonth","getDate","components_one","render","_vm","_h","$createElement","_c","_self","staticClass","_l","text","key","_v","_s","length","attrs","name","_e","staticRenderFns","src_components_one","__webpack_require__","normalizeComponent","ssrContext","two","methods","components_two","on","click","add","idx","_m","src","alt","src_components_two","two_normalizeComponent","three","countdown","now","valueOf","localStorage","getItem","data","computed","ct","y","m","d","h","min","s","Math","floor","components_three","countdownDetail","src_components_three","three_normalizeComponent","four","count","btn1","document","querySelector","btn2","alert","style","display","left","time","setItem","top","random","components_four","handleRight","handleError","App","components","One","Two","Three","Four","four_normalizeComponent","isTime","selectortype_template_index_0_src_App","id","vertical","loop","src_App","App_normalizeComponent","Vue","config","productionTip","use","Swipe","SwipeItem","Icon","Button","el","template"],"mappings":"uOAaAA,GACAC,UACAC,YAAA,KACA,MAAAC,EAAAC,KAAAC,IAAAC,QACAH,GAAAC,KAAAG,MAAAC,KAAAL,IACA,MAEAF,OACA,MAAAQ,EAAA,IAAAC,KACA,OACAL,KACA,KACA,KACA,UACA,KACA,aACA,WACAI,EAAAE,iBAAAF,EAAAG,WAAA,KAAAH,EAAAI,YACA,KACA,kBACA,KACA,wBACA,IACA,8BACA,OAGAN,YCrCeO,GADEC,OAFjB,WAA0B,IAAAC,EAAAZ,KAAaa,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,QAAkBL,EAAAM,GAAAN,EAAA,eAAAO,GAAoC,OAAAJ,EAAA,KAAeK,IAAAD,IAASP,EAAAS,GAAA,SAAAT,EAAAU,GAAAH,GAAA,YAAyCP,EAAAS,GAAA,SAAAT,EAAAX,IAAAsB,OAAAR,EAAA,KAA6CE,YAAA,SAAmBF,EAAA,YAAiBS,OAAOC,KAAA,iBAAqB,GAAAb,EAAAc,MAAA,IAE7TC,oBCCjB,IAuBeC,EAvBUC,EAAQ,OAcjCC,CACElC,EACAc,GATF,EAVA,SAAAqB,GACEF,EAAQ,SAaV,KAEA,MAUgC,QCchCG,GACAnC,OACA,IAAAS,KACA,OACAL,KACA,wBACA,KACA,0BACA,KACA,qBACA,KACA,iBACA,KACA,6BACA,KACA,mBACA,KACA,aACA,KACA,sBACA,KACA,WAEAE,WAGA8B,SACApC,MACA,MAAAE,EAAAC,KAAAC,IAAAC,QACAH,GAAAC,KAAAG,MAAAC,KAAAL,MClEemC,GADEvB,OAFP,WAAgB,IAAAC,EAAAZ,KAAaa,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,QAAkBF,EAAA,KAAAH,EAAAS,GAAA,uBAAAT,EAAAS,GAAA,KAAAN,EAAA,KAA4DE,YAAA,QAAAkB,IAAwBC,MAAAxB,EAAAyB,OAAiBzB,EAAAS,GAAA,QAAAT,EAAAS,GAAA,KAAAT,EAAAM,GAAAN,EAAA,eAAAO,EAAAmB,GAAmE,OAAAvB,EAAA,KAAeK,IAAAD,IAAS,IAAAmB,GAAA1B,EAAA2B,GAAA,OAAA3B,EAAAc,KAAAd,EAAAS,GAAA,SAAAiB,GAAA1B,EAAA2B,GAAA,OAAA3B,EAAAc,KAAAd,EAAAS,GAAA,SAAAiB,GAAA1B,EAAA2B,GAAA,OAAA3B,EAAAc,KAAAd,EAAAS,GAAA,SAAAT,EAAAU,GAAAH,GAAA,cAAqLP,EAAAS,GAAA,SAAAT,EAAAX,IAAAsB,OAAAR,EAAA,KAA6CE,YAAA,SAAmBF,EAAA,YAAiBS,OAAOC,KAAA,iBAAqB,GAAAb,EAAAc,MAAA,IAE9jBC,iBADb,WAAiB,IAAad,EAAbb,KAAac,eAA0BC,EAAvCf,KAAuCgB,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAAA,EAAA,OAA2BE,YAAA,SAAAO,OAA4BgB,IAAA,iDAAAC,IAAA,MAAtHzC,KAAuLqB,GAAA,4CAAAN,EAAA,OAA+DE,YAAA,SAAAO,OAA4BgB,IAAA,iDAAAC,IAAA,SAAqE,WAAc,IAAa5B,EAAbb,KAAac,eAA0BC,EAAvCf,KAAuCgB,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAAA,EAAA,OAA2BE,YAAA,QAAAO,OAA2BgB,IAAA,GAAAC,IAAA,SAAuB,WAAc,IAAa5B,EAAbb,KAAac,eAA0BC,EAAvCf,KAAuCgB,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAAA,EAAA,OAA2BE,YAAA,QAAAO,OAA2BgB,IAAA,GAAAC,IAAA,WCExpB,IAuBeC,EAvBUb,EAAQ,OAcjBc,CACdX,EACAE,GAT6B,EAV/B,SAAoBH,GAClBF,EAAQ,SAaS,KAEU,MAUG,QCRhCe,GACA/C,UACAC,YAAA,KACAE,KAAA6C,UAAAvC,KAAAwC,MAAAC,UAAAC,aAAAC,QAAA,aACA,MAEAC,KAAA,MAEAL,UAAA,IAGAM,UACAtD,kBACA,IAAAuD,EAAApD,KAAA6C,UACAQ,EAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAC,EAAA,EAAAC,EAAA,EAyBA,OAxBAN,EAAA,uBAEAA,GAAA,KADAC,EAAAM,KAAAC,MAAAR,EAAA,qBACA,gBAEAA,EAAA,oBAEAA,GAAA,KADAE,EAAAK,KAAAC,MAAAR,EAAA,kBACA,aAEAA,EAAA,iBAEAA,GAAA,KADAG,EAAAI,KAAAC,MAAAR,EAAA,eACA,UAEAA,EAAA,cAEAA,GAAA,KADAI,EAAAG,KAAAC,MAAAR,EAAA,YACA,OAEAA,EAAA,WAEAA,GAAA,KADAK,EAAAE,KAAAC,MAAAR,EAAA,SACA,IAEAA,EAAA,QAEAA,GAAA,KADAM,EAAAC,KAAAC,MAAAR,EAAA,QAGAC,IAAAC,IAAAC,IAAAC,IAAAC,MAAAC,QCtDeG,GADElD,OAFP,WAAgB,IAAAC,EAAAZ,KAAaa,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,WAAoBF,EAAA,KAAAH,EAAAS,GAAA,aAAAT,EAAAS,GAAA,KAAAN,EAAA,KAAAH,EAAAS,GAAA,YAAAT,EAAAS,GAAA,KAAAN,EAAA,KAAAH,EAAAS,GAAA,gCAAAT,EAAAS,GAAA,KAAAN,EAAA,KAAAH,EAAAS,GAAAT,EAAAU,GAAAV,EAAAkD,gBAAAT,GAAA,OAAAzC,EAAAS,GAAA,KAAAN,EAAA,KAAAH,EAAAS,GAAAT,EAAAU,GAAAV,EAAAkD,gBAAAR,GAAA,OAAA1C,EAAAS,GAAA,KAAAN,EAAA,KAAAH,EAAAS,GAAAT,EAAAU,GAAAV,EAAAkD,gBAAAP,GAAA,OAAA3C,EAAAS,GAAA,KAAAN,EAAA,KAAAH,EAAAS,GAAAT,EAAAU,GAAAV,EAAAkD,gBAAAN,GAAA,OAAA5C,EAAAS,GAAA,KAAAN,EAAA,KAAAH,EAAAS,GAAAT,EAAAU,GAAAV,EAAAkD,gBAAAL,KAAA,OAAA7C,EAAAS,GAAA,KAAAN,EAAA,KAAAH,EAAAS,GAAAT,EAAAU,GAAAV,EAAAkD,gBAAAJ,GAAA,aAE9F/B,oBCChC,IAuBeoC,EAvBUlC,EAAQ,OAcjBmC,CACdpB,EACAiB,GAT6B,EAV/B,SAAoB9B,GAClBF,EAAQ,SAaS,KAEU,MAUG,QCVhCoC,GACApE,YACAA,OACA,MAAAQ,EAAA,IAAAC,KACA,OACAL,KACA,kBACA,KACA,OACA,WACAI,EAAAE,iBAAAF,EAAAG,WAAA,KAAAH,EAAAI,YACA,KACA,gBACA,KACA,sBACA,KACA,OAEAyD,MAAA,IAGAjC,SACApC,cACA,MAAAsE,EAAAC,SAAAC,cAAA,SACAC,EAAAF,SAAAC,cAAA,SACAE,MAAA,oCACAD,EAAAE,MAAAC,QAAA,OACAN,EAAAK,MAAAE,KAAA,OAEA7E,cACAG,KAAAkE,QACA,MAAAC,EAAAC,SAAAC,cAAA,SAGA,OAAArE,KAAAkE,MACAK,MAAA,sCACA,GAAAvE,KAAAkE,MAAA,QACA,OAAAlE,KAAAkE,MACAK,MAAA,sBACA,KAAAvE,KAAAkE,MAAA,IACA,SAAAlE,KAAAkE,MAAA,CACA,MAAAS,EAAArE,KAAAwC,MAMA,OALAyB,uBACAI,0CAEAJ,MAAA,qBACAvB,aAAA4B,QAAA,WAAAD,GAGA,OAEAR,EAAAK,MAAAK,OAlBA,IAkBAlB,KAAAmB,UAAA,KACAX,EAAAK,MAAAE,QApBA,IAoBAf,KAAAmB,UAAA,QCjEeC,GADEpE,OAFP,WAAgB,IAAAC,EAAAZ,KAAaa,EAAAD,EAAAE,eAA0BC,EAAAH,EAAAI,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBE,YAAA,SAAmBL,EAAAM,GAAAN,EAAA,aAAAO,GAAkC,OAAAJ,EAAA,KAAeK,IAAAD,IAASP,EAAAS,GAAA,SAAAT,EAAAU,GAAAH,GAAA,YAAyCP,EAAAS,GAAA,SAAAT,EAAAX,IAAAsB,OAAAR,EAAA,KAA6CE,YAAA,SAAmBF,EAAA,YAAiBS,OAAOC,KAAA,iBAAqB,GAAAb,EAAAc,KAAAd,EAAAS,GAAA,KAAAN,EAAA,UAAwCE,YAAA,WAAAkB,IAA2BC,MAAAxB,EAAAoE,eAAyBpE,EAAAS,GAAA,cAAAT,EAAAS,GAAA,KAAAN,EAAA,UAAgDE,YAAA,WAAAkB,IAA2BC,MAAAxB,EAAAqE,eAAyBrE,EAAAS,GAAA,iCAE7eM,oBCChC,ICoBAuD,GACAzD,KAAA,MACA0D,YACIC,IAAAxD,EACAyD,IAAA3C,EACA4C,MAAAvB,EACAwB,KD1BqB1D,EAAQ,OAcjB2D,CACdvB,EACAc,GAT6B,EAV/B,SAAoBhD,GAClBF,EAAQ,SAaS,KAEU,MAUG,SCKhCqB,KAAA,MAEAuC,OAAAzC,aAAAC,QAAA,eC9BeyC,GADE/E,OAFP,WAAgB,IAAaE,EAAbb,KAAac,eAA0BC,EAAvCf,KAAuCgB,MAAAD,IAAAF,EAAwB,OAAAE,EAAA,OAAiBS,OAAOmE,GAAA,SAAvF3F,KAAmG,OAAAe,EAAA,SAAAA,EAAA,aAA2CS,OAAOoE,UAAA,EAAAC,MAAA,KAA8B9E,EAAA,kBAAAA,EAAA,WAAnLf,KAAmLqB,GAAA,KAAAN,EAAA,kBAAAA,EAAA,WAAnLf,KAAmLqB,GAAA,KAAAN,EAAA,kBAAAA,EAAA,qBAE7KY,oBCChC,IAuBemE,EAvBUjE,EAAQ,OAcjBkE,CACdb,EACAQ,GAT6B,EAV/B,SAAoB3D,GAClBF,EAAQ,SAaS,KAEU,MAUG,kBCfhCmE,IAAIC,OAAOC,eAAgB,EAG3BF,IAAIG,IAAIC,KAAOD,IAAIE,KAAWF,IAAIG,KAAMH,IAAII,KAG5C,IAAIP,KACFQ,GAAI,OACJrB,YAAcD,OACduB,SAAU","file":"static/js/app.3b1cf55ac78dd14f33d5.js","sourcesContent":["\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/one.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"one\"},[_vm._l((_vm.texts),function(text){return _c('p',{key:text},[_vm._v(\"\\n \"+_vm._s(text)+\"\\n \")])}),_vm._v(\" \"),(_vm.arr.length === 0)?_c('p',{staticClass:\"next\"},[_c('van-icon',{attrs:{\"name\":\"arrow-down\"}})],1):_vm._e()],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vue-loader@13.7.3@vue-loader/lib/template-compiler?{\"id\":\"data-v-148a9534\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/_vue-loader@13.7.3@vue-loader/lib/selector.js?type=template&index=0!./src/components/one.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/_extract-text-webpack-plugin@3.0.2@extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true,\\\"importLoader\\\":5}!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-148a9534\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!px2rem-loader?{\\\"emUnit\\\":75}!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=styles&index=0!./one.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=script&index=0!./one.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=script&index=0!./one.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-148a9534\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=template&index=0!./one.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/one.vue\n// module id = null\n// module chunks = ","\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/two.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"two\"},[_c('p',[_vm._v(\"不断点击这个小爱心 你即将拥有好运\")]),_vm._v(\" \"),_c('p',{staticClass:\"lover\",on:{\"click\":_vm.add}},[_vm._v(\"💗\")]),_vm._v(\" \"),_vm._l((_vm.texts),function(text,idx){return _c('p',{key:text},[(idx === 1)?[_vm._m(0,true)]:_vm._e(),_vm._v(\" \"),(idx === 3)?[_vm._m(1,true)]:_vm._e(),_vm._v(\" \"),(idx === 4)?[_vm._m(2,true)]:_vm._e(),_vm._v(\"\\n \"+_vm._s(text)+\"\\n \")],2)}),_vm._v(\" \"),(_vm.arr.length === 0)?_c('p',{staticClass:\"next\"},[_c('van-icon',{attrs:{\"name\":\"arrow-down\"}})],1):_vm._e()],2)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('img',{staticClass:\"avatar\",attrs:{\"src\":\"https://s3.qiufengh.com/love/WechatIMG931.jpeg\",\"alt\":\"\"}}),_vm._v(\"\\n ❤️ ❤️ ❤️ 💗 ❤️ ❤️ ❤️\\n \"),_c('img',{staticClass:\"avatar\",attrs:{\"src\":\"https://s3.qiufengh.com/love/WechatIMG930.jpeg\",\"alt\":\"\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('img',{staticClass:\"photo\",attrs:{\"src\":\"\",\"alt\":\"\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('img',{staticClass:\"photo\",attrs:{\"src\":\"\",\"alt\":\"\"}})])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vue-loader@13.7.3@vue-loader/lib/template-compiler?{\"id\":\"data-v-00b191f9\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/_vue-loader@13.7.3@vue-loader/lib/selector.js?type=template&index=0!./src/components/two.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/_extract-text-webpack-plugin@3.0.2@extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true,\\\"importLoader\\\":5}!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-00b191f9\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!px2rem-loader?{\\\"emUnit\\\":75}!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=styles&index=0!./two.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=script&index=0!./two.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=script&index=0!./two.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-00b191f9\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=template&index=0!./two.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/two.vue\n// module id = null\n// module chunks = ","\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/three.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"three\"},[[_c('p',[_vm._v(\"华益峰💗袁媛\")]),_vm._v(\" \"),_c('p',[_vm._v(\"已经在一起了\")]),_vm._v(\" \"),_c('p',[_vm._v(\"❤️❤️❤️❤️❤️❤️💗❤️❤️❤️❤️❤️❤️\")]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.countdownDetail.y)+\"年\")]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.countdownDetail.m)+\"月\")]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.countdownDetail.d)+\"日\")]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.countdownDetail.h)+\"时\")]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.countdownDetail.min)+\"分\")]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.countdownDetail.s)+\"秒\")])]],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vue-loader@13.7.3@vue-loader/lib/template-compiler?{\"id\":\"data-v-68b81df7\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/_vue-loader@13.7.3@vue-loader/lib/selector.js?type=template&index=0!./src/components/three.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/_extract-text-webpack-plugin@3.0.2@extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true,\\\"importLoader\\\":5}!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-68b81df7\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!px2rem-loader?{\\\"emUnit\\\":75}!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=styles&index=0!./three.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=script&index=0!./three.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=script&index=0!./three.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-68b81df7\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=template&index=0!./three.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/three.vue\n// module id = null\n// module chunks = ","\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/four.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"four\"},[_vm._l((_vm.arr),function(text){return _c('p',{key:text},[_vm._v(\"\\n \"+_vm._s(text)+\"\\n \")])}),_vm._v(\" \"),(_vm.arr.length === 0)?_c('p',{staticClass:\"next\"},[_c('van-icon',{attrs:{\"name\":\"arrow-down\"}})],1):_vm._e(),_vm._v(\" \"),_c('button',{staticClass:\"rsv btn1\",on:{\"click\":_vm.handleRight}},[_vm._v(\"💕 同意在一起\")]),_vm._v(\" \"),_c('button',{staticClass:\"rsv btn2\",on:{\"click\":_vm.handleError}},[_vm._v(\"\\n ❌ 我美丽你丑我们不一样\\n \")])],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vue-loader@13.7.3@vue-loader/lib/template-compiler?{\"id\":\"data-v-7afe8fb2\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/_vue-loader@13.7.3@vue-loader/lib/selector.js?type=template&index=0!./src/components/four.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/_extract-text-webpack-plugin@3.0.2@extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true,\\\"importLoader\\\":5}!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7afe8fb2\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!px2rem-loader?{\\\"emUnit\\\":75}!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=styles&index=0!./four.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=script&index=0!./four.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=script&index=0!./four.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7afe8fb2\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=template&index=0!./four.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/four.vue\n// module id = null\n// module chunks = ","\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/App.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[(_vm.isTime)?_c('Three'):_c('van-swipe',{attrs:{\"vertical\":true,\"loop\":false}},[_c('van-swipe-item',[_c('One')],1),_vm._v(\" \"),_c('van-swipe-item',[_c('Two')],1),_vm._v(\" \"),_c('van-swipe-item',[_c('Four')],1)],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vue-loader@13.7.3@vue-loader/lib/template-compiler?{\"id\":\"data-v-90ed7b00\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/_vue-loader@13.7.3@vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../node_modules/_extract-text-webpack-plugin@3.0.2@extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true,\\\"importLoader\\\":5}!../node_modules/_vue-loader@13.7.3@vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-90ed7b00\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!px2rem-loader?{\\\"emUnit\\\":75}!../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=styles&index=0!./App.vue\")\n}\nvar normalizeComponent = require(\"!../node_modules/_vue-loader@13.7.3@vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=script&index=0!./App.vue\"\nimport __vue_script__ from \"!!babel-loader!../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=script&index=0!./App.vue\"\n/* template */\nimport __vue_template__ from \"!!../node_modules/_vue-loader@13.7.3@vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-90ed7b00\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/_vue-loader@13.7.3@vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = null\n// module chunks = ","// The Vue build version to load with the `import` command\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport Vue from 'vue'\n\nimport 'lib-flexible/flexible.js'\nimport { Swipe, SwipeItem, Icon, Button} from 'vant'\n\nimport App from './App'\nimport './reset.css';\n\n\nVue.config.productionTip = false\n\n\nVue.use(Swipe).use(SwipeItem).use(Icon).use(Button);\n\n/* eslint-disable no-new */\nnew Vue({\n el: '#app',\n components: { App },\n template: ''\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js"],"sourceRoot":""} \ No newline at end of file diff --git a/love-yuan/dist/static/js/manifest.3ad1d5771e9b13dbdad2.js b/love-yuan/dist/static/js/manifest.3ad1d5771e9b13dbdad2.js new file mode 100644 index 0000000..1acd401 --- /dev/null +++ b/love-yuan/dist/static/js/manifest.3ad1d5771e9b13dbdad2.js @@ -0,0 +1,2 @@ +!function(r){var n=window.webpackJsonp;window.webpackJsonp=function(e,u,c){for(var f,i,p,a=0,l=[];a2?n-2:0),r=2;rn&&e>p?"horizontal":n>e&&n>p?"vertical":"")},resetTouchStatus:function(){this.direction="",this.deltaX=0,this.deltaY=0,this.offsetX=0,this.offsetY=0}}},m=!1;if(!s.h)try{var g={};Object.defineProperty(g,"passive",{get:function(){m=!0}}),window.addEventListener("test-passive",null,g)}catch(t){}function y(t,e,n,i){void 0===i&&(i=!1),s.h||t.addEventListener(e,n,!!m&&{capture:!1,passive:i})}function b(t,e,n){s.h||t.removeEventListener(e,n)}function k(t){t.stopPropagation()}function x(t,e){("boolean"!=typeof t.cancelable||t.cancelable)&&t.preventDefault(),e&&k(t)}var S=Object(s.k)("overlay"),w=S[0],C=S[1];function $(t,e,n,r){var s=i({zIndex:e.zIndex},e.customStyle);return t("transition",{attrs:{name:"van-fade"}},[t("div",o()([{directives:[{name:"show",value:e.visible}],style:s,class:[C(),e.className],on:{touchmove:function(t){x(t,!0)}}},l(r,!0)]))])}$.props={zIndex:Number,className:null,visible:Boolean,customStyle:Object};var _,O=w($),T={className:"",customStyle:{}};function A(){if(f.top){var t=f.top.vm;t.$emit("click-overlay"),t.closeOnClickOverlay&&(t.onClickOverlay?t.onClickOverlay():t.close())}}function j(){if(_||(_=h(O,{on:{click:A}})),f.top){var t=f.top,e=t.vm,n=t.config,r=e.$el,o=r&&r.parentNode?r.parentNode:document.body;o&&o.appendChild(_.$el),i(_,T,n,{visible:!0})}else _.visible=!1}function I(t){var e=f.stack;e.length&&(f.top.vm===t?(e.pop(),j()):f.stack=e.filter(function(e){return e.vm!==t}))}function B(t,e){void 0===e&&(e=window);for(var n=t;n&&"HTML"!==n.tagName&&"BODY"!==n.tagName&&1===n.nodeType&&n!==e;){var i=window.getComputedStyle(n).overflowY;if("scroll"===i||"auto"===i)return n;n=n.parentNode}return e}function E(t){return"scrollTop"in t?t.scrollTop:t.pageYOffset}function N(t){return(t===window?0:t.getBoundingClientRect().top)+E(window)}function L(t){return t===window?t.innerHeight:t.getBoundingClientRect().height}var D={mixins:[v],props:{value:Boolean,overlay:Boolean,overlayStyle:Object,overlayClass:String,closeOnClickOverlay:Boolean,zIndex:[String,Number],getContainer:[String,Function],lockScroll:{type:Boolean,default:!0},lazyRender:{type:Boolean,default:!0}},data:function(){return{inited:this.value}},computed:{shouldRender:function(){return this.inited||!this.lazyRender}},watch:{value:function(t){var e=t?"open":"close";this.inited=this.inited||this.value,this[e](),this.$emit(e)},getContainer:function(){this.move()},overlay:function(){this.renderOverlay()}},mounted:function(){this.getContainer&&this.move(),this.value&&this.open()},activated:function(){this.value&&this.open()},beforeDestroy:function(){this.close(),this.getContainer&&this.$parent&&this.$parent.$el&&this.$parent.$el.appendChild(this.$el)},deactivated:function(){this.close()},methods:{open:function(){this.$isServer||this.opened||(void 0!==this.zIndex&&(f.zIndex=this.zIndex),this.opened=!0,this.renderOverlay(),this.lockScroll&&(y(document,"touchstart",this.touchStart),y(document,"touchmove",this.onTouchMove),f.lockCount||document.body.classList.add("van-overflow-hidden"),f.lockCount++))},close:function(){this.opened&&(this.lockScroll&&(f.lockCount--,b(document,"touchstart",this.touchStart),b(document,"touchmove",this.onTouchMove),f.lockCount||document.body.classList.remove("van-overflow-hidden")),this.opened=!1,I(this),this.$emit("input",!1))},move:function(){var t,e=this.getContainer;e?t="string"==typeof e?document.querySelector(e):e():this.$parent&&(t=this.$parent.$el),t&&t!==this.$el.parentNode&&t.appendChild(this.$el),this.overlay&&j()},onTouchMove:function(t){this.touchMove(t);var e=this.deltaY>0?"10":"01",n=B(t.target,this.$el),i=n.scrollHeight,r=n.offsetHeight,o=n.scrollTop,s="11";0===o?s=r>=i?"00":"01":o+r>=i&&(s="10"),"11"===s||"vertical"!==this.direction||parseInt(s,2)&parseInt(e,2)||x(t,!0)},renderOverlay:function(){var t,e;!this.$isServer&&this.value&&(this.overlay?(t=this,e={zIndex:f.zIndex++,className:this.overlayClass,customStyle:this.overlayStyle},f.stack.some(function(e){return e.vm===t})||(f.stack.push({vm:t,config:e}),j())):I(this),this.updateZIndex())},updateZIndex:function(){var t=this;this.$nextTick(function(){t.$el.style.zIndex=f.zIndex++})}}},F=Object(s.k)("info"),M=F[0],z=F[1];function P(t,e,n,i){if(Object(s.d)(e.info)&&""!==e.info)return t("div",o()([{class:z()},l(i,!0)]),[e.info])}P.props={info:[String,Number]};var V=M(P),R=Object(s.k)("icon")[0];function H(t,e,n,i){var r,s=!!(r=e.name)&&-1!==r.indexOf("/");return t(e.tag,o()([{class:[e.classPrefix,s?"van-icon--image":e.classPrefix+"-"+e.name],style:{color:e.color,fontSize:e.size}},l(i,!0)]),[n.default&&n.default(),s&&t("img",{attrs:{src:e.name}}),t(V,{attrs:{info:e.info}})])}H.props={name:String,size:String,color:String,info:[String,Number],tag:{type:String,default:"i"},classPrefix:{type:String,default:"van-icon"}};var W=R(H),q=Object(s.k)("loading"),Y=q[0],U=q[1],K="#c9c9c9";function X(t,e,n,i){var r=e.color,s=e.size,a=e.type,c="white"===r||"black"===r?r:"",u={color:"black"===r?K:r,width:s,height:s},d=[];if("spinner"===a)for(var h=0;h<12;h++)d.push(t("i"));var f="circular"===a&&t("svg",{class:U("circular"),attrs:{viewBox:"25 25 50 50"}},[t("circle",{attrs:{cx:"50",cy:"50",r:"20",fill:"none"}})]);return t("div",o()([{class:U([a,c]),style:u},l(i,!0)]),[t("span",{class:U("spinner",a)},[d,f])])}X.props={size:String,type:{type:String,default:"circular"},color:{type:String,default:K}};var Q=Y(X),J=Object(s.k)("popup"),Z=J[0],G=J[1],tt=Z({mixins:[D],props:{position:String,transition:String,overlay:{type:Boolean,default:!0},closeOnClickOverlay:{type:Boolean,default:!0}},render:function(t){var e,n=this;if(this.shouldRender){var i=this.position,r=function(t){return function(){return n.$emit(t)}};return t("transition",{attrs:{name:this.transition||(i?"van-popup-slide-"+i:"van-fade")},on:{afterEnter:r("opened"),afterLeave:r("closed")}},[t("div",{directives:[{name:"show",value:this.value}],class:G((e={},e[i]=i,e))},[this.slots()])])}}}),et=Object(s.k)("actionsheet"),nt=et[0],it=et[1];function rt(t,e,n,i){var r=e.title,s=e.cancelText,a=function(){d(i,"input",!1),d(i,"cancel")};return t(tt,o()([{class:it({"safe-area-inset-bottom":e.safeAreaInsetBottom}),attrs:{value:e.value,position:"bottom",overlay:e.overlay,lazyRender:e.lazyRender,getContainer:e.getContainer,closeOnClickOverlay:e.closeOnClickOverlay},on:{input:function(t){d(i,"input",t)}}},l(i)]),[r?t("div",{class:[it("header"),"van-hairline--top-bottom"]},[r,t(W,{attrs:{name:"close"},class:it("close"),on:{click:a}})]):e.actions.map(function(e,n){return t("div",{class:[it("item",{disabled:e.disabled||e.loading}),e.className,"van-hairline--top"],on:{click:function(t){t.stopPropagation(),e.disabled||e.loading||(e.callback&&e.callback(e),d(i,"select",e,n))}}},[e.loading?t(Q,{class:it("loading"),attrs:{size:"20px"}}):[t("span",{class:it("name")},[e.name]),e.subname&&t("span",{class:it("subname")},[e.subname])]])}),n.default&&t("div",{class:it("content")},[n.default()]),s&&t("div",{class:it("cancel"),on:{click:a}},[s])])}rt.props=i({},D.props,{title:String,actions:Array,cancelText:String,safeAreaInsetBottom:Boolean,overlay:{type:Boolean,default:!0},closeOnClickOverlay:{type:Boolean,default:!0}});var ot=nt(rt);function st(t){return t=t.replace(/[^-|\d]/g,""),/^((\+86)|(86))?(1)\d{10}$/.test(t)||/^0[0-9-]{10,13}$/.test(t)}var at=n("TExJ");function ct(t){return Array.isArray(t)?t.map(function(t){return ct(t)}):"object"==typeof t?Object(at.a)({},t):t}var ut={title:String,loading:Boolean,showToolbar:Boolean,cancelButtonText:String,confirmButtonText:String,visibleItemCount:{type:Number,default:5},itemHeight:{type:Number,default:44}},lt=Object(s.k)("picker-column"),dt=lt[0],ht=lt[1],ft=dt({props:{valueKey:String,className:String,itemHeight:Number,defaultIndex:Number,initialOptions:Array,visibleItemCount:Number},data:function(){return{startY:0,offset:0,duration:0,startOffset:0,options:ct(this.initialOptions),currentIndex:this.defaultIndex}},created:function(){this.$parent.children&&this.$parent.children.push(this),this.setIndex(this.currentIndex)},destroyed:function(){var t=this.$parent.children;t&&t.splice(t.indexOf(this),1)},watch:{defaultIndex:function(){this.setIndex(this.defaultIndex)}},computed:{count:function(){return this.options.length}},methods:{onTouchStart:function(t){this.startY=t.touches[0].clientY,this.startOffset=this.offset,this.duration=0},onTouchMove:function(t){x(t);var e=t.touches[0].clientY-this.startY;this.offset=Object(s.j)(this.startOffset+e,-this.count*this.itemHeight,this.itemHeight)},onTouchEnd:function(){if(this.offset!==this.startOffset){this.duration=200;var t=Object(s.j)(Math.round(-this.offset/this.itemHeight),0,this.count-1);this.setIndex(t,!0)}},adjustIndex:function(t){for(var e=t=Object(s.j)(t,0,this.count);e=0;n--)if(!this.isDisabled(this.options[n]))return n},isDisabled:function(t){return Object(s.g)(t)&&t.disabled},getOptionText:function(t){return Object(s.g)(t)&&this.valueKey in t?t[this.valueKey]:t},setIndex:function(t,e){t=this.adjustIndex(t)||0,this.offset=-t*this.itemHeight,t!==this.currentIndex&&(this.currentIndex=t,e&&this.$emit("change",t))},setValue:function(t){for(var e=this.options,n=0;nn&&(e=e.slice(0,n),t.value=e),e},onInput:function(t){this.$emit("input",this.format(t.target))},onFocus:function(t){this.focused=!0,this.$emit("focus",t),this.readonly&&this.blur()},onBlur:function(t){this.focused=!1,this.$emit("blur",t),Object(s.e)()&&window.scrollTo(0,window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0)},onClickLeftIcon:function(){this.$emit("click-left-icon")},onClickRightIcon:function(){this.$emit("click-icon"),this.$emit("click-right-icon"),this.onIconClick&&this.onIconClick()},onClear:function(t){x(t),this.$emit("input",""),this.$emit("clear")},onKeypress:function(t){if("number"===this.type){var e=t.keyCode,n=-1===String(this.value).indexOf(".");e>=48&&e<=57||46===e&&n||45===e||x(t)}"search"===this.type&&13===t.keyCode&&this.blur(),this.$emit("keypress",t)},adjustSize:function(){var t=this.$refs.input;if("textarea"===this.type&&this.autosize&&t){t.style.height="auto";var e=t.scrollHeight;if(Object(s.g)(this.autosize)){var n=this.autosize,i=n.maxHeight,r=n.minHeight;i&&(e=Math.min(e,i)),r&&(e=Math.max(e,r))}e&&(t.style.height=e+"px")}},renderInput:function(){var t=this.$createElement,e={ref:"input",class:Lt("control",this.inputAlign),domProps:{value:this.value},attrs:i({},this.$attrs,{readonly:this.readonly}),on:this.listeners};return"textarea"===this.type?t("textarea",o()([{},e])):t("input",o()([{attrs:{type:this.type}},e]))},renderLeftIcon:function(){var t=this.$createElement;if(this.slots("left-icon")||this.leftIcon)return t("div",{class:Lt("left-icon"),on:{click:this.onClickLeftIcon}},[this.slots("left-icon")||t(W,{attrs:{name:this.leftIcon}})])},renderRightIcon:function(){var t=this.$createElement,e=this.slots;if(e("right-icon")||e("icon")||this.rightIcon||this.icon)return t("div",{class:Lt("right-icon"),on:{click:this.onClickRightIcon}},[e("right-icon")||e("icon")||t(W,{attrs:{name:this.rightIcon||this.icon}})])}},render:function(t){var e,n=this.slots,i=this.labelAlign,r={icon:this.renderLeftIcon};return n("label")&&(r.title=function(){return n("label")}),t(It,{attrs:{icon:this.leftIcon,size:this.size,title:this.label,center:this.center,border:this.border,isLink:this.isLink,required:this.required,titleStyle:this.labelStyle,titleClass:Lt("label",i)},class:Lt((e={error:this.error,disabled:this.$attrs.disabled},e["label-"+i]=i,e["min-height"]="textarea"===this.type&&!this.autosize,e)),scopedSlots:r},[t("div",{class:Lt("body")},[this.renderInput(),this.showClear&&t(W,{attrs:{name:"clear"},class:Lt("clear"),on:{touchstart:this.onClear}}),this.renderRightIcon(),n("button")&&t("div",{class:Lt("button")},[n("button")])]),this.errorMessage&&t("div",{class:Lt("error-message",this.errorMessageAlign)},[this.errorMessage])])}}),Ft=Object(s.k)("toast"),Mt=Ft[0],zt=Ft[1],Pt=["success","fail","loading"],Vt=Mt({mixins:[D],props:{className:null,forbidClick:Boolean,message:[String,Number],type:{type:String,default:"text"},loadingType:{type:String,default:"circular"},position:{type:String,default:"middle"},lockScroll:{type:Boolean,default:!1}},data:function(){return{clickable:!1}},mounted:function(){this.toggleClickale()},destroyed:function(){this.toggleClickale()},watch:{value:function(){this.toggleClickale()},forbidClick:function(){this.toggleClickale()}},methods:{toggleClickale:function(){var t=this.value&&this.forbidClick;if(this.clickable!==t){this.clickable=t;var e=t?"add":"remove";document.body.classList[e]("van-toast--unclickable")}}},render:function(t){var e=this,n=this.type,i=this.message,r=-1!==Pt.indexOf(n)?"default":n;return t("transition",{attrs:{name:"van-fade"}},[t("div",{directives:[{name:"show",value:this.value}],class:[zt([r,this.position]),this.className]},[function(){switch(r){case"text":return t("div",[i]);case"html":return t("div",{domProps:{innerHTML:i}});default:return["loading"===n?t(Q,{attrs:{color:"white",type:e.loadingType}}):t(W,{class:zt("icon"),attrs:{name:n}}),Object(s.d)(i)&&t("div",{class:zt("text")},[i])]}}()])])}}),Rt={type:"text",mask:!1,value:!0,message:"",className:"",onClose:null,duration:3e3,position:"middle",forbidClick:!1,loadingType:"circular",getContainer:"body",overlayStyle:null},Ht=function(t){return Object(s.g)(t)?t:{message:t}},Wt=[],qt=!1,Yt=i({},Rt);function Ut(t){void 0===t&&(t={});var e=function(){if(s.h)return{};if(!Wt.length||qt){var t=new(a.a.extend(Vt))({el:document.createElement("div")});Wt.push(t)}return Wt[Wt.length-1]}();return e.value&&e.updateZIndex(),t=i({},Yt,Ht(t),{clear:function(){if(e.value=!1,t.onClose&&t.onClose(),qt&&!s.h){clearTimeout(e.timer),Wt=Wt.filter(function(t){return t!==e});var n=e.$el.parentNode;n&&n.removeChild(e.$el),e.$destroy()}}}),i(e,function(t){return t.overlay=t.mask,t}(t)),clearTimeout(e.timer),t.duration>0&&(e.timer=setTimeout(function(){e.clear()},t.duration)),e}["loading","success","fail"].forEach(function(t){var e;Ut[t]=(e=t,function(t){return Ut(i({type:e},Ht(t)))})}),Ut.clear=function(t){Wt.length&&(t?(Wt.forEach(function(t){t.clear()}),Wt=[]):qt?Wt.shift().clear():Wt[0].clear())},Ut.setDefaultOptions=function(t){i(Yt,t)},Ut.resetDefaultOptions=function(){Yt=i({},Rt)},Ut.allowMultiple=function(t){void 0===t&&(t=!0),qt=t},Ut.install=function(){a.a.use(Vt)},a.a.prototype.$toast=Ut;var Kt=Ut,Xt=Object(s.k)("button"),Qt=Xt[0],Jt=Xt[1];function Zt(t,e,n,i){var r=e.tag,s=e.type,a=e.disabled,c=e.loading,u=e.hairline,h=e.loadingText,f=[Jt([s,e.size,{loading:c,disabled:a,hairline:u,block:e.block,plain:e.plain,round:e.round,square:e.square,"bottom-action":e.bottomAction}]),{"van-hairline--surround":u}];return t(r,o()([{class:f,attrs:{type:e.nativeType,disabled:a},on:{click:function(t){c||a||(d(i,"click",t),$t(i))},touchstart:function(t){d(i,"touchstart",t)}}},l(i)]),[c?[t(Q,{attrs:{size:e.loadingSize,color:"default"===s?void 0:""}}),h&&t("span",{class:Jt("loading-text")},[h])]:t("span",{class:Jt("text")},[n.default?n.default():e.text])])}Zt.props=i({},_t,{text:String,block:Boolean,plain:Boolean,round:Boolean,square:Boolean,loading:Boolean,hairline:Boolean,disabled:Boolean,nativeType:String,loadingText:String,bottomAction:Boolean,tag:{type:String,default:"button"},type:{type:String,default:"default"},size:{type:String,default:"normal"},loadingSize:{type:String,default:"20px"}});var Gt,te=Qt(Zt),ee=Object(s.k)("dialog"),ne=ee[0],ie=ee[1],re=ee[2],oe=ne({mixins:[D],props:{title:String,message:String,className:null,callback:Function,beforeClose:Function,messageAlign:String,cancelButtonText:String,cancelButtonColor:String,confirmButtonText:String,confirmButtonColor:String,showCancelButton:Boolean,showConfirmButton:{type:Boolean,default:!0},overlay:{type:Boolean,default:!0},closeOnClickOverlay:{type:Boolean,default:!1}},data:function(){return{loading:{confirm:!1,cancel:!1}}},methods:{onClickOverlay:function(){this.handleAction("overlay")},handleAction:function(t){var e=this;this.$emit(t),this.beforeClose?(this.loading[t]=!0,this.beforeClose(t,function(n){!1!==n&&e.onClose(t),e.loading[t]=!1})):this.onClose(t)},onClose:function(t){this.close(),this.callback&&this.callback(t)}},render:function(t){var e,n=this;if(this.shouldRender){var i=this.title,r=this.message,o=this.messageAlign,s=this.slots(),a=i&&t("div",{class:ie("header",{isolated:!r&&!s})},[i]),c=(s||r)&&t("div",{class:ie("content")},[s||t("div",{domProps:{innerHTML:r},class:ie("message",(e={"has-title":i},e[o]=o,e))})]),u=this.showCancelButton&&this.showConfirmButton,l=t("div",{class:["van-hairline--top",ie("footer",{buttons:u})]},[this.showCancelButton&&t(te,{attrs:{size:"large",loading:this.loading.cancel,text:this.cancelButtonText||re("cancel")},class:ie("cancel"),style:{color:this.cancelButtonColor},on:{click:function(){n.handleAction("cancel")}}}),this.showConfirmButton&&t(te,{attrs:{size:"large",loading:this.loading.confirm,text:this.confirmButtonText||re("confirm")},class:[ie("confirm"),{"van-hairline--left":u}],style:{color:this.confirmButtonColor},on:{click:function(){n.handleAction("confirm")}}})]);return t("transition",{attrs:{name:"van-dialog-bounce"}},[t("div",{directives:[{name:"show",value:this.value}],class:[ie(),this.className]},[a,c,l])])}}});function se(t){return s.h?Promise.resolve():new Promise(function(e,n){Gt&&Object(s.f)(Gt.$el)||(Gt&&Gt.$destroy(),(Gt=new(a.a.extend(oe))({el:document.createElement("div"),propsData:{lazyRender:!1}})).$on("input",function(t){Gt.value=t})),i(Gt,se.currentOptions,t,{resolve:e,reject:n})})}se.defaultOptions={value:!0,title:"",message:"",overlay:!0,className:"",lockScroll:!0,beforeClose:null,messageAlign:"",getContainer:"body",cancelButtonText:"",cancelButtonColor:null,confirmButtonText:"",confirmButtonColor:null,showConfirmButton:!0,showCancelButton:!1,closeOnClickOverlay:!1,callback:function(t){Gt["confirm"===t?"resolve":"reject"](t)}},se.alert=se,se.confirm=function(t){return se(i({showCancelButton:!0},t))},se.close=function(){Gt&&(Gt.value=!1)},se.setDefaultOptions=function(t){i(se.currentOptions,t)},se.resetDefaultOptions=function(){se.currentOptions=i({},se.defaultOptions)},se.resetDefaultOptions(),se.install=function(){a.a.use(oe)},a.a.prototype.$dialog=se;var ae=se,ce=Object(s.k)("address-edit-detail"),ue=ce[0],le=ce[1],de=ce[2],he=Object(s.c)(),fe=ue({props:{value:String,error:Boolean,focused:Boolean,detailRows:Number,searchResult:Array,showSearchResult:Boolean},methods:{onSelect:function(t){this.$emit("select-search",t),this.$emit("input",((t.address||"")+" "+(t.name||"")).trim())},onFinish:function(){this.$refs.field.blur()},renderFinish:function(){var t=this.$createElement;if(this.value&&this.focused&&he)return t("div",{class:le("finish"),on:{click:this.onFinish}},[de("complete")])},renderSearchResult:function(){var t=this,e=this.$createElement,n=this.searchResult;if(this.focused&&n&&this.showSearchResult)return n.map(function(n){return e(It,{key:n.name+n.address,attrs:{title:n.name,label:n.address,icon:"location-o",clickable:!0},on:{click:function(){t.onSelect(n)}}})})}},render:function(t){return t(It,{class:le()},[t(Dt,{attrs:{autosize:!0,rows:this.detailRows,clearable:!he,type:"textarea",maxlength:"200",value:this.value,error:this.error,label:de("label"),placeholder:de("placeholder")},ref:"field",scopedSlots:{icon:this.renderFinish},on:i({},this.$listeners)}),this.renderSearchResult()])}}),pe={value:null,loading:Boolean,disabled:Boolean,activeColor:String,inactiveColor:String,activeValue:{type:null,default:!0},inactiveValue:{type:null,default:!1},size:{type:String,default:"30px"}},ve=Object(s.k)("switch"),me=ve[0],ge=ve[1];function ye(t,e,n,i){var r=e.value,s=e.loading,a=e.disabled,c=e.activeValue,u=e.inactiveValue,h=r===c,f={fontSize:e.size,backgroundColor:h?e.activeColor:e.inactiveColor};return t("div",o()([{class:ge({on:h,disabled:a}),style:f,on:{click:function(){if(!a&&!s){var t=h?u:c;d(i,"input",t),d(i,"change",t)}}}},l(i)]),[t("div",{class:ge("node")},[s&&t(Q,{class:ge("loading")})])])}ye.props=pe;var be=me(ye),ke=Object(s.k)("switch-cell"),xe=ke[0],Se=ke[1];function we(t,e,n,r){return t(It,o()([{attrs:{center:!0,title:e.title,border:e.border},class:Se()},l(r)]),[t(be,{props:i({},e),on:i({},r.listeners)})])}we.props=i({},pe,{title:String,border:Boolean,size:{type:String,default:"24px"}});var Ce=xe(we),$e=Object(s.k)("address-edit"),_e=$e[0],Oe=$e[1],Te=$e[2],Ae={name:"",tel:"",country:"",province:"",city:"",county:"",areaCode:"",postalCode:"",addressDetail:"",isDefault:!1},je=_e({props:{areaList:Object,isSaving:Boolean,isDeleting:Boolean,validator:Function,showDelete:Boolean,showPostal:Boolean,searchResult:Array,showSetDefault:Boolean,showSearchResult:Boolean,saveButtonText:String,deleteButtonText:String,showArea:{type:Boolean,default:!0},showDetail:{type:Boolean,default:!0},detailRows:{type:Number,default:1},addressInfo:{type:Object,default:function(){return i({},Ae)}},telValidator:{type:Function,default:st},areaColumnsPlaceholder:{type:Array,default:function(){return[]}}},data:function(){return{data:{},showAreaPopup:!1,detailFocused:!1,errorInfo:{tel:!1,name:!1,postalCode:!1,addressDetail:!1}}},computed:{areaListLoaded:function(){return Object(s.g)(this.areaList)&&Object.keys(this.areaList).length},areaText:function(){var t=this.data,e=t.country,n=t.province,i=t.city,r=t.county;if(t.areaCode){var o=[e,n,i,r];return n&&n===i&&o.splice(1,1),o.filter(function(t){return t}).join("/")}return""}},watch:{addressInfo:{handler:function(t){this.data=i({},Ae,t),this.setAreaCode(t.areaCode)},deep:!0,immediate:!0},areaList:function(){this.setAreaCode(this.data.areaCode)}},methods:{onFocus:function(t){this.errorInfo[t]=!1,this.detailFocused="addressDetail"===t,this.$emit("focus",t)},onChangeDetail:function(t){this.data.addressDetail=t,this.$emit("change-detail",t)},onAreaConfirm:function(t){t.some(function(t){return!t.code})?Kt(Te("areaEmpty")):(this.showAreaPopup=!1,this.assignAreaValues(),this.$emit("change-area",t))},assignAreaValues:function(){var t=this.$refs.area;if(t){var e=t.getArea();e.areaCode=e.code,delete e.code,i(this.data,e)}},onSave:function(){var t=this,e=["name","tel","areaCode","addressDetail"];this.showPostal&&e.push("postalCode"),e.every(function(e){var n=t.getErrorMessage(e);return n&&(t.errorInfo[e]=!0,Kt(n)),!n})&&!this.isSaving&&this.$emit("save",this.data)},getErrorMessage:function(t){var e=String(this.data[t]||"").trim();if(this.validator){var n=this.validator(t,e);if(n)return n}switch(t){case"name":return e?"":Te("nameEmpty");case"tel":return this.telValidator(e)?"":Te("telInvalid");case"areaCode":return e?"":Te("areaEmpty");case"addressDetail":return e?"":Te("addressEmpty");case"postalCode":return e&&!/^\d{6}$/.test(e)?Te("postalEmpty"):""}},onDelete:function(){var t=this;ae.confirm({title:Te("confirmDelete")}).then(function(){t.$emit("delete",t.data)}).catch(function(){t.$emit("cancel-delete",t.data)})},getArea:function(){return this.$refs.area?this.$refs.area.getValues():[]},setAreaCode:function(t){this.data.areaCode=t||"",t&&this.$nextTick(this.assignAreaValues)},setAddressDetail:function(t){this.data.addressDetail=t},onDetailBlur:function(){var t=this;setTimeout(function(){t.detailFocused=!1})}},render:function(t){var e=this,n=this.data,i=this.errorInfo,r=function(t){return function(){return e.onFocus(t)}},o=this.searchResult.length&&this.detailFocused;return t("div",{class:Oe()},[t(Dt,{attrs:{clearable:!0,label:Te("name"),placeholder:Te("namePlaceholder"),error:i.name},on:{focus:r("name")},model:{value:n.name,callback:function(t){n.name=t}}}),t(Dt,{attrs:{clearable:!0,type:"tel",label:Te("tel"),placeholder:Te("telPlaceholder"),error:i.tel},on:{focus:r("tel")},model:{value:n.tel,callback:function(t){n.tel=t}}}),t(Dt,{directives:[{name:"show",value:this.showArea}],attrs:{readonly:!0,label:Te("area"),placeholder:Te("areaPlaceholder"),value:this.areaText},on:{click:function(){e.showAreaPopup=!0}}}),t(fe,{directives:[{name:"show",value:this.showDetail}],attrs:{focused:this.detailFocused,value:n.addressDetail,error:i.addressDetail,detailRows:this.detailRows,searchResult:this.searchResult,showSearchResult:this.showSearchResult},on:{focus:r("addressDetail"),blur:this.onDetailBlur,input:this.onChangeDetail,"select-search":function(t){e.$emit("select-search",t)}}}),this.showPostal&&t(Dt,{directives:[{name:"show",value:!o}],attrs:{type:"tel",maxlength:"6",label:Te("postal"),placeholder:Te("postal"),error:i.postalCode},on:{focus:r("postalCode")},model:{value:n.postalCode,callback:function(t){n.postalCode=t}}}),this.slots(),this.showSetDefault&&t(Ce,{directives:[{name:"show",value:!o}],attrs:{title:Te("defaultAddress")},on:{change:function(t){e.$emit("change-default",t)}},model:{value:n.isDefault,callback:function(t){n.isDefault=t}}}),t("div",{directives:[{name:"show",value:!o}],class:Oe("buttons")},[t(te,{attrs:{block:!0,loading:this.isSaving,type:"danger",text:this.saveButtonText||Te("save")},on:{click:this.onSave}}),this.showDelete&&t(te,{attrs:{block:!0,loading:this.isDeleting,text:this.deleteButtonText||Te("delete")},on:{click:this.onDelete}})]),t(tt,{attrs:{position:"bottom",lazyRender:!1,getContainer:"body"},model:{value:e.showAreaPopup,callback:function(t){e.showAreaPopup=t}}},[t(St,{ref:"area",attrs:{loading:!this.areaListLoaded,value:n.areaCode,areaList:this.areaList,columnsPlaceholder:this.areaColumnsPlaceholder},on:{confirm:this.onAreaConfirm,cancel:function(){e.showAreaPopup=!1}}})])])}}),Ie=Object(s.k)("radio-group"),Be=Ie[0],Ee=Ie[1],Ne=Be({props:{value:null,disabled:Boolean},watch:{value:function(t){this.$emit("change",t)}},render:function(t){return t("div",{class:Ee()},[this.slots()])}}),Le={data:function(){return{parent:null}},methods:{findParent:function(t){for(var e=this.$parent;e;){if(e.$options.name===t){this.parent=e;break}e=e.$parent}}}},De=function(t,e){return{mixins:[Le],props:{name:null,value:null,disabled:Boolean,checkedColor:String,labelPosition:String,labelDisabled:Boolean,shape:{type:String,default:"round"},bindGroup:{type:Boolean,default:!0}},created:function(){this.bindGroup&&this.findParent(t)},computed:{isDisabled:function(){return this.parent&&this.parent.disabled||this.disabled},iconStyle:function(){var t=this.checkedColor;if(t&&this.checked&&!this.isDisabled)return{borderColor:t,backgroundColor:t}}},render:function(){var t=this,n=arguments[0],i=this.slots,r=this.checked,o=i("icon",{checked:r})||n(W,{attrs:{name:"success"},style:this.iconStyle}),s=i()&&n("span",{class:e("label",[this.labelPosition,{disabled:this.isDisabled}]),on:{click:this.onClickLabel}},[i()]);return n("div",{class:e(),on:{click:function(e){t.$emit("click",e)}}},[n("div",{class:e("icon",[this.shape,{disabled:this.isDisabled,checked:r}]),on:{click:this.onClickIcon}},[o]),s])}}},Fe=Object(s.k)("radio"),Me=(0,Fe[0])({mixins:[De("van-radio-group",Fe[1])],computed:{currentValue:{get:function(){return this.parent?this.parent.value:this.value},set:function(t){(this.parent||this).$emit("input",t)}},checked:function(){return this.currentValue===this.name}},methods:{onClickIcon:function(){this.isDisabled||(this.currentValue=this.name)},onClickLabel:function(){this.isDisabled||this.labelDisabled||(this.currentValue=this.name)}}}),ze=Object(s.k)("address-item"),Pe=ze[0],Ve=ze[1];function Re(t,e,n,i){var r=e.disabled,s=e.switchable;return t(It,o()([{class:Ve({disabled:r,unswitchable:!s}),attrs:{valueClass:Ve("value"),clickable:s&&!r},scopedSlots:{default:function(){var n=e.data,i=[t("div",{class:Ve("name")},[n.name+","+n.tel]),t("div",{class:Ve("address")},[n.address])];return s&&!r?t(Me,{attrs:{name:n.id}},[i]):i},"right-icon":function(){return t(W,{attrs:{name:"edit"},class:Ve("edit"),on:{click:function(t){t.stopPropagation(),d(i,"edit")}}})}},on:{click:function(){s&&d(i,"select")}}},l(i)]))}Re.props={data:Object,disabled:Boolean,switchable:Boolean};var He=Pe(Re),We=Object(s.k)("address-list"),qe=We[0],Ye=We[1],Ue=We[2];function Ke(t,e,n,i){var r=function(n,r){return n.map(function(n,o){return t(He,{attrs:{data:n,disabled:r,switchable:e.switchable},key:n.id,on:{select:function(){d(i,r?"select-disabled":"select",n,o)},edit:function(){d(i,r?"edit-disabled":"edit",n,o)}}})})},s=r(e.list),a=r(e.disabledList,!0);return t("div",o()([{class:Ye()},l(i)]),[n.top&&n.top(),t(Ne,{attrs:{value:e.value},on:{input:function(t){d(i,"input",t)}}},[s]),e.disabledText&&t("div",{class:Ye("disabled-text")},[e.disabledText]),a,n.default&&n.default(),t(te,{attrs:{square:!0,size:"large",type:"danger",text:e.addButtonText||Ue("add")},class:Ye("add"),on:{click:function(){d(i,"add")}}})])}Ke.props={list:Array,disabledList:Array,disabledText:String,addButtonText:String,value:[String,Number],switchable:{type:Boolean,default:!0}};var Xe=qe(Ke),Qe=Object(s.k)("badge"),Je=Qe[0],Ze=Qe[1],Ge=Je({props:{url:String,info:[String,Number],title:String},inject:["vanBadgeGroup"],created:function(){this.parent.badges.push(this)},beforeDestroy:function(){var t=this;this.parent.badges=this.parent.badges.filter(function(e){return e!==t})},computed:{parent:function(){return this.vanBadgeGroup},select:function(){return this.parent.badges.indexOf(this)===+this.parent.activeKey}},methods:{onClick:function(){var t=this.parent.badges.indexOf(this);this.$emit("click",t),this.parent.$emit("change",t)}},render:function(t){return t("a",{attrs:{href:this.url},class:[Ze({select:this.select}),"van-hairline"],on:{click:this.onClick}},[t("div",{class:Ze("text")},[this.title,t(V,{attrs:{info:this.info},class:Ze("info")})])])}}),tn=Object(s.k)("badge-group"),en=tn[0],nn=tn[1],rn=en({props:{activeKey:{type:[Number,String],default:0}},provide:function(){return{vanBadgeGroup:this}},data:function(){return{badges:[]}},render:function(t){return t("div",{class:[nn(),"van-hairline--top-bottom"]},[this.slots()])}}),on="#f44",sn="#fff",an="#969799",cn=Object(s.k)("tag"),un=cn[0],ln=cn[1],dn={danger:on,primary:"#1989fa",success:"#07c160"};function hn(t,e,n,i){var r,s=e.type,a=e.mark,c=e.plain,u=e.round,d=e.size,h=e.color||s&&dn[s]||an,f=((r={})[c?"color":"backgroundColor"]=h,r);e.textColor&&(f.color=e.textColor);var p={mark:a,plain:c,round:u};return d&&(p[d]=d),t("span",o()([{style:f,class:[ln(p),{"van-hairline--surround":c}]},l(i,!0)]),[n.default&&n.default()])}hn.props={size:String,type:String,mark:Boolean,color:String,plain:Boolean,round:Boolean,textColor:String};var fn=un(hn),pn=Object(s.k)("card"),vn=pn[0],mn=pn[1];function gn(t,e,n,i){var r=e.thumb,a=n.thumb||r,c=n.tag||e.tag,u=n.num||Object(s.d)(e.num),h=n.price||Object(s.d)(e.price),f=n["origin-price"]||Object(s.d)(e.originPrice),p=u||h||f,v=a&&t("a",{attrs:{href:e.thumbLink},class:mn("thumb"),on:{click:function(){d(i,"click-thumb")}}},[n.thumb?n.thumb():e.lazyLoad?t("img",{class:mn("img"),directives:[{name:"lazy",value:r}]}):t("img",{class:mn("img"),attrs:{src:r}}),c&&t("div",{class:mn("tag")},[n.tag?n.tag():t(fn,{attrs:{mark:!0,type:"danger"}},[e.tag])])]),m=n.title?n.title():e.title&&t("div",{class:mn("title")},[e.title]),g=n.desc?n.desc():e.desc&&t("div",{class:[mn("desc"),"van-ellipsis"]},[e.desc]),y=h&&t("div",{class:mn("price")},[n.price?n.price():e.currency+" "+e.price]),b=f&&t("div",{class:mn("origin-price")},[n["origin-price"]?n["origin-price"]():e.currency+" "+e.originPrice]),k=u&&t("div",{class:mn("num")},[n.num?n.num():"x "+e.num]),x=n.footer&&t("div",{class:mn("footer")},[n.footer()]);return t("div",o()([{class:mn()},l(i,!0)]),[t("div",{class:mn("header")},[v,t("div",{class:mn("content",{centered:e.centered})},[m,g,n.tags&&n.tags(),p&&t("div",{class:"van-card__bottom"},[y,b,k,n.bottom&&n.bottom()])])]),x])}gn.props={tag:String,desc:String,thumb:String,title:String,centered:Boolean,lazyLoad:Boolean,thumbLink:String,num:[Number,String],price:[Number,String],originPrice:[Number,String],currency:{type:String,default:"¥"}};var yn=vn(gn),bn=Object(s.k)("cell-group"),kn=bn[0],xn=bn[1];function Sn(t,e,n,i){var r=t("div",o()([{class:[xn(),{"van-hairline--top-bottom":e.border}]},l(i,!0)]),[n.default&&n.default()]);return e.title?t("div",[t("div",{class:xn("title")},[e.title]),r]):r}Sn.props={title:String,border:{type:Boolean,default:!0}};var wn=kn(Sn),Cn=Object(s.k)("checkbox"),$n=(0,Cn[0])({mixins:[De("van-checkbox-group",Cn[1])],computed:{checked:{get:function(){return this.parent?-1!==this.parent.value.indexOf(this.name):this.value},set:function(t){this.parent?this.setParentValue(t):this.$emit("input",t)}}},watch:{value:function(t){this.$emit("change",t)}},methods:{toggle:function(){var t=this,e=!this.checked;clearTimeout(this.toggleTask),this.toggleTask=setTimeout(function(){t.checked=e})},onClickIcon:function(){this.isDisabled||this.toggle()},onClickLabel:function(){this.isDisabled||this.labelDisabled||this.toggle()},setParentValue:function(t){var e=this.parent,n=e.value.slice();if(t){if(e.max&&n.length>=e.max)return;-1===n.indexOf(this.name)&&(n.push(this.name),e.$emit("input",n))}else{var i=n.indexOf(this.name);-1!==i&&(n.splice(i,1),e.$emit("input",n))}}}}),_n=Object(s.k)("checkbox-group"),On=_n[0],Tn=_n[1],An=On({props:{max:Number,value:Array,disabled:Boolean},watch:{value:function(t){this.$emit("change",t)}},render:function(t){return t("div",{class:Tn()},[this.slots()])}}),jn=n("VsCf"),In=Object(s.k)("circle"),Bn=In[0],En=In[1],Nn="M 530 530 m -500, 0 a 500, 500 0 1, 1 1000, 0 a 500, 500 0 1, 1 -1000, 0";function Ln(t){return Math.min(Math.max(t,0),100)}var Dn=Bn({props:{text:String,value:Number,speed:Number,size:{type:String,default:"100px"},fill:{type:String,default:"none"},rate:{type:Number,default:100},layerColor:{type:String,default:sn},color:{type:String,default:"#1989fa"},strokeWidth:{type:Number,default:40},clockwise:{type:Boolean,default:!0}},computed:{style:function(){return{width:this.size,height:this.size}},layerStyle:function(){var t=3140*(100-this.value)/100;return t=this.clockwise?t:6280-t,{stroke:""+this.color,strokeDashoffset:t+"px",strokeWidth:this.strokeWidth+1+"px"}},hoverStyle:function(){return{fill:""+this.fill,stroke:""+this.layerColor,strokeWidth:this.strokeWidth+"px"}}},watch:{rate:{handler:function(){this.startTime=Date.now(),this.startRate=this.value,this.endRate=Ln(this.rate),this.increase=this.endRate>this.startRate,this.duration=Math.abs(1e3*(this.startRate-this.endRate)/this.speed),this.speed?(Object(jn.a)(this.rafId),this.rafId=Object(jn.b)(this.animate)):this.$emit("input",this.endRate)},immediate:!0}},methods:{animate:function(){var t=Date.now(),e=Math.min((t-this.startTime)/this.duration,1)*(this.endRate-this.startRate)+this.startRate;this.$emit("input",Ln(parseFloat(e.toFixed(1)))),(this.increase?ethis.endRate)&&(this.rafId=Object(jn.b)(this.animate))}},render:function(t){return t("div",{class:En(),style:this.style},[t("svg",{attrs:{viewBox:"0 0 1060 1060"}},[t("path",{class:En("hover"),style:this.hoverStyle,attrs:{d:Nn}}),t("path",{class:En("layer"),style:this.layerStyle,attrs:{d:Nn}})]),this.slots()||this.text&&t("div",{class:En("text")},[this.text])])}}),Fn=Object(s.k)("col"),Mn=Fn[0],zn=Fn[1],Pn=Mn({props:{span:[Number,String],offset:[Number,String],tag:{type:String,default:"div"}},computed:{gutter:function(){return this.$parent&&Number(this.$parent.gutter)||0},style:function(){var t=this.gutter/2+"px";return this.gutter?{paddingLeft:t,paddingRight:t}:{}}},render:function(t){var e,n=this.span,i=this.offset;return t(this.tag,{class:zn((e={},e[n]=n,e["offset-"+i]=i,e)),style:this.style},[this.slots()])}}),Vn=Object(s.k)("collapse"),Rn=Vn[0],Hn=Vn[1],Wn=Rn({props:{accordion:Boolean,value:[String,Number,Array],border:{type:Boolean,default:!0}},data:function(){return{items:[]}},methods:{switch:function(t,e){this.accordion||(t=e?this.value.concat(t):this.value.filter(function(e){return e!==t})),this.$emit("change",t),this.$emit("input",t)}},render:function(t){return t("div",{class:[Hn(),{"van-hairline--top-bottom":this.border}]},[this.slots()])}}),qn=Object(s.k)("collapse-item"),Yn=qn[0],Un=qn[1],Kn=["title","icon","right-icon"],Xn=Yn({mixins:[Le],props:i({},wt,{name:[String,Number],disabled:Boolean,isLink:{type:Boolean,default:!0}}),data:function(){return{show:null,inited:null}},computed:{items:function(){return this.parent.items},index:function(){return this.items.indexOf(this)},currentName:function(){return Object(s.d)(this.name)?this.name:this.index},expanded:function(){var t=this;if(!this.parent)return null;var e=this.parent.value;return this.parent.accordion?e===this.currentName:e.some(function(e){return e===t.currentName})}},created:function(){this.findParent("van-collapse"),this.items.push(this),this.show=this.expanded,this.inited=this.expanded},destroyed:function(){this.items.splice(this.index,1)},watch:{expanded:function(t,e){var n=this;null!==e&&(t&&(this.show=!0,this.inited=!0),Object(jn.b)(function(){var e=n.$refs,i=e.content,r=e.wrapper;if(i&&r){var o=i.clientHeight;if(o){var s=o+"px";r.style.height=t?0:s,Object(jn.b)(function(){r.style.height=t?s:0})}else n.onTransitionEnd()}}))}},methods:{onClick:function(){if(!this.disabled){var t=this.parent,e=t.accordion&&this.currentName===t.value?"":this.currentName,n=!this.expanded;this.parent.switch(e,n)}},onTransitionEnd:function(){this.expanded?this.$refs.wrapper.style.height=null:this.show=!1}},render:function(t){var e=this,n=Kn.reduce(function(t,n){return e.slots(n)&&(t[n]=function(){return e.slots(n)}),t},{});this.slots("value")&&(n.default=function(){return e.slots("value")});var r=t(It,{class:Un("title",{disabled:this.disabled,expanded:this.expanded}),on:{click:this.onClick},scopedSlots:n,props:i({},this.$props)}),o=this.inited&&t("div",{directives:[{name:"show",value:this.show}],ref:"wrapper",class:Un("wrapper"),on:{transitionend:this.onTransitionEnd}},[t("div",{ref:"content",class:Un("content")},[this.slots()])]);return t("div",{class:[Un(),{"van-hairline--top":this.index}]},[r,o])}}),Qn=Object(s.k)("contact-card"),Jn=Qn[0],Zn=Qn[1],Gn=Qn[2];function ti(t,e,n,i){var r=e.type,s=e.editable;return t(It,o()([{attrs:{center:!0,border:!1,isLink:s,valueClass:Zn("value"),icon:"edit"===r?"contact":"add-square"},class:Zn([r]),on:{click:function(t){s&&d(i,"click",t)}}},l(i)]),["add"===r?e.addText||Gn("addText"):[t("div",[Gn("name")+":"+e.name]),t("div",[Gn("tel")+":"+e.tel])]])}ti.props={tel:String,name:String,addText:String,editable:{type:Boolean,default:!0},type:{type:String,default:"add"}};var ei=Jn(ti),ni=Object(s.k)("contact-edit"),ii=ni[0],ri=ni[1],oi=ni[2],si={tel:"",name:""},ai=ii({props:{isEdit:Boolean,isSaving:Boolean,isDeleting:Boolean,contactInfo:{type:Object,default:function(){return i({},si)}},telValidator:{type:Function,default:st}},data:function(){return{data:i({},si,this.contactInfo),errorInfo:{name:!1,tel:!1}}},watch:{contactInfo:function(t){this.data=i({},si,t)}},methods:{onFocus:function(t){this.errorInfo[t]=!1},getErrorMessageByKey:function(t){var e=this.data[t].trim();switch(t){case"name":return e?"":oi("nameEmpty");case"tel":return this.telValidator(e)?"":oi("telInvalid")}},onSave:function(){var t=this;["name","tel"].every(function(e){var n=t.getErrorMessageByKey(e);return n&&(t.errorInfo[e]=!0,Kt(n)),!n})&&!this.isSaving&&this.$emit("save",this.data)},onDelete:function(){var t=this;ae.confirm({message:oi("confirmDelete")}).then(function(){t.$emit("delete",t.data)})}},render:function(t){var e=this,n=this.data,i=this.errorInfo,r=function(t){return function(){return e.onFocus(t)}};return t("div",{class:ri()},[t(Dt,{attrs:{clearable:!0,maxlength:"30",label:oi("name"),placeholder:oi("nameEmpty"),error:i.name},on:{focus:r("name")},model:{value:n.name,callback:function(t){n.name=t}}}),t(Dt,{attrs:{clearable:!0,type:"tel",label:oi("tel"),placeholder:oi("telEmpty"),error:i.tel},on:{focus:r("tel")},model:{value:n.tel,callback:function(t){n.tel=t}}}),t("div",{class:ri("buttons")},[t(te,{attrs:{block:!0,type:"danger",text:oi("save"),loading:this.isSaving},on:{click:this.onSave}}),this.isEdit&&t(te,{attrs:{block:!0,text:oi("delete"),loading:this.isDeleting},on:{click:this.onDelete}})])])}}),ci=Object(s.k)("contact-list"),ui=ci[0],li=ci[1],di=ci[2];function hi(t,e,n,i){var r=e.list.map(function(e,n){var r=function(){d(i,"input",e.id),d(i,"select",e,n)};return t(It,{key:e.id,attrs:{isLink:!0,valueClass:li("item-value")},class:li("item"),scopedSlots:{default:function(){return t(Me,{attrs:{name:e.id},on:{click:r}},[t("div",{class:li("name")},[e.name+","+e.tel])])},"right-icon":function(){return t(W,{attrs:{name:"edit"},class:li("edit"),on:{click:function(t){t.stopPropagation(),d(i,"edit",e,n)}}})}},on:{click:r}})});return t("div",o()([{class:li()},l(i)]),[t(Ne,{attrs:{value:e.value},class:li("group")},[r]),t(te,{attrs:{square:!0,size:"large",type:"danger",text:e.addText||di("addText")},class:li("add"),on:{click:function(){d(i,"add")}}})])}hi.props={value:null,list:Array,addText:String};var fi=ui(hi),pi=Object(s.k)("coupon"),vi=pi[0],mi=pi[1],gi=pi[2];function yi(t){return(t<10?"0":"")+t}function bi(t){var e=new Date(1e3*t);return e.getFullYear()+"."+yi(e.getMonth()+1)+"."+yi(e.getDate())}var ki=vi({props:{coupon:Object,chosen:Boolean,disabled:Boolean,currency:{type:String,default:"¥"}},computed:{validPeriod:function(){return gi("valid")+":"+bi(this.coupon.startAt)+" - "+bi(this.coupon.endAt)},faceAmount:function(){var t,e,n=this.coupon;return n.valueDesc?n.valueDesc+""+(n.unitDesc||"")+"":n.denominations?""+this.currency+" "+((e=this.coupon.denominations)/100).toFixed(e%100==0?0:e%10==0?1:2):n.discount?gi("discount",((t=this.coupon.discount)/10).toFixed(t%10==0?0:1)):""},conditionMessage:function(){var t=this.coupon.originCondition;return 0===(t=t%100==0?Math.round(t/100):(t/100).toFixed(2))?gi("unlimited"):gi("condition",t)}},render:function(t){var e=this.coupon,n=this.disabled,i=n&&e.reason||e.description;return t("div",{class:mi({disabled:n})},[t("div",{class:mi("content")},[t("div",{class:mi("head")},[t("h2",{domProps:{innerHTML:this.faceAmount}}),t("p",[this.coupon.condition||this.conditionMessage])]),t("div",{class:mi("body")},[t("h2",[e.name]),t("p",[this.validPeriod]),this.chosen&&t($n,{attrs:{value:!0},class:mi("corner")})])]),i&&t("p",{class:mi("description")},[i])])}}),xi=Object(s.k)("coupon-cell"),Si=xi[0],wi=xi[1],Ci=xi[2];function $i(t,e,n,i){var r=e.coupons[e.chosenCoupon]?"van-coupon-cell--selected":"",s=function(t){var e=t.coupons,n=t.chosenCoupon,i=t.currency,r=e[n];return r?"-"+i+((r.denominations||r.value)/100).toFixed(2):0===e.length?Ci("tips"):Ci("count",e.length)}(e);return t(It,o()([{class:wi(),attrs:{value:s,title:e.title||Ci("title"),border:e.border,isLink:e.editable,valueClass:r}},l(i,!0)]))}$i.model={prop:"chosenCoupon"},$i.props={title:String,coupons:Array,currency:{type:String,default:"¥"},border:{type:Boolean,default:!0},editable:{type:Boolean,default:!0},chosenCoupon:{type:Number,default:-1}};var _i=Si($i),Oi=Object(s.k)("tab"),Ti=Oi[0],Ai=Oi[1],ji=Ti({mixins:[Le],props:{title:String,disabled:Boolean},data:function(){return{inited:!1}},computed:{index:function(){return this.parent.tabs.indexOf(this)},selected:function(){return this.index===this.parent.curActive}},watch:{"parent.curActive":function(){this.inited=this.inited||this.selected},title:function(){this.parent.setLine()}},created:function(){this.findParent("van-tabs")},mounted:function(){var t=this.parent.tabs,e=this.parent.slots().indexOf(this.$vnode);t.splice(-1===e?t.length:e,0,this),this.slots("title")&&this.parent.renderTitle(this.$refs.title,this.index)},beforeDestroy:function(){this.parent.tabs.splice(this.index,1)},render:function(t){var e=this.slots,n=this.inited||!this.parent.lazyRender;return t("div",{directives:[{name:"show",value:this.selected||this.parent.animated}],class:Ai("pane")},[n?e():t(),e("title")&&t("div",{ref:"title"},[e("title")])])}}),Ii=Object(s.k)("tabs"),Bi=Ii[0],Ei=Ii[1],Ni=Object(s.k)("tab")[1],Li=Bi({mixins:[v],model:{prop:"active"},props:{color:String,sticky:Boolean,animated:Boolean,offsetTop:Number,swipeable:Boolean,background:String,titleActiveColor:String,titleInactiveColor:String,ellipsis:{type:Boolean,default:!0},lazyRender:{type:Boolean,default:!0},lineWidth:{type:Number,default:null},lineHeight:{type:Number,default:null},active:{type:[Number,String],default:0},type:{type:String,default:"line"},duration:{type:Number,default:.3},swipeThreshold:{type:Number,default:4}},data:function(){return{tabs:[],position:"",curActive:null,lineStyle:{backgroundColor:this.color},events:{resize:!1,sticky:!1,swipeable:!1}}},computed:{scrollable:function(){return this.tabs.length>this.swipeThreshold||!this.ellipsis},wrapStyle:function(){switch(this.position){case"top":return{top:this.offsetTop+"px",position:"fixed"};case"bottom":return{top:"auto",bottom:0};default:return null}},navStyle:function(){return{borderColor:this.color,background:this.background}},trackStyle:function(){if(this.animated)return{left:-1*this.curActive*100+"%",transitionDuration:this.duration+"s"}}},watch:{active:function(t){t!==this.curActive&&this.correctActive(t)},color:function(){this.setLine()},tabs:function(){this.correctActive(this.curActive||this.active),this.scrollIntoView(),this.setLine()},curActive:function(){var t,e;this.scrollIntoView(),this.setLine(),"top"!==this.position&&"bottom"!==this.position||(t=window,e=N(this.$el)-this.offsetTop,"scrollTop"in t?t.scrollTop=e:t.scrollTo(t.scrollX,e))},sticky:function(){this.handlers(!0)},swipeable:function(){this.handlers(!0)}},mounted:function(){this.onShow()},activated:function(){this.onShow(),this.setLine()},deactivated:function(){this.handlers(!1)},beforeDestroy:function(){this.handlers(!1)},methods:{onShow:function(){var t=this;this.$nextTick(function(){t.inited=!0,t.handlers(!0),t.scrollIntoView(!0)})},handlers:function(t){var e=this.events,n=this.sticky&&t,i=this.swipeable&&t;if(e.resize!==t&&(e.resize=t,(t?y:b)(window,"resize",this.setLine,!0)),e.sticky!==n&&(e.sticky=n,this.scrollEl=this.scrollEl||B(this.$el),(n?y:b)(this.scrollEl,"scroll",this.onScroll,!0),this.onScroll()),e.swipeable!==i){e.swipeable=i;var r=this.$refs.content,o=i?y:b;o(r,"touchstart",this.touchStart),o(r,"touchmove",this.touchMove),o(r,"touchend",this.onTouchEnd),o(r,"touchcancel",this.onTouchEnd)}},onTouchEnd:function(){var t=this.direction,e=this.deltaX,n=this.curActive;"horizontal"===t&&this.offsetX>=50&&(e>0&&0!==n?this.setCurActive(n-1):e<0&&n!==this.tabs.length-1&&this.setCurActive(n+1))},onScroll:function(){var t=E(window)+this.offsetTop,e=N(this.$el),n=e+this.$el.offsetHeight-this.$refs.wrap.offsetHeight;this.position=t>n?"bottom":t>e?"top":"";var i={scrollTop:t,isFixed:"top"===this.position};this.$emit("scroll",i)},setLine:function(){var t=this,e=this.inited;this.$nextTick(function(){var n=t.$refs.tabs;if(n&&n[t.curActive]&&"line"===t.type){var i=n[t.curActive],r=t.lineWidth,o=t.lineHeight,a=Object(s.d)(r)?r:i.offsetWidth/2,c=i.offsetLeft+(i.offsetWidth-a)/2,u={width:a+"px",backgroundColor:t.color,transform:"translateX("+c+"px)"};if(e&&(u.transitionDuration=t.duration+"s"),Object(s.d)(o)){var l=o+"px";u.height=l,u.borderRadius=l}t.lineStyle=u}})},correctActive:function(t){t=+t;var e=this.tabs.some(function(e){return e.index===t}),n=(this.tabs[0]||{}).index||0;this.setCurActive(e?t:n)},setCurActive:function(t){t=this.findAvailableTab(t,t=0&&i10?n:"0"+n)+":00"}if(!e){var i=t.split(":"),r=i[0],o=i[1];return(r=Ri(Object(s.j)(r,this.minHour,this.maxHour)))+":"+(o=Ri(Object(s.j)(o,this.minMinute,this.maxMinute)))}return t=Math.max(t,this.minDate.getTime()),t=Math.min(t,this.maxDate.getTime()),new Date(t)},getBoundary:function(t,e){var n,i=this[t+"Date"],r=i.getFullYear(),o=1,s=1,a=0,c=0;return"max"===t&&(o=12,s=Wi(e.getFullYear(),e.getMonth()+1),a=23,c=59),e.getFullYear()===r&&(o=i.getMonth()+1,e.getMonth()+1===o&&(s=i.getDate(),e.getDate()===s&&(a=i.getHours(),e.getHours()===a&&(c=i.getMinutes())))),(n={})[t+"Year"]=r,n[t+"Month"]=o,n[t+"Date"]=s,n[t+"Hour"]=a,n[t+"Minute"]=c,n},onConfirm:function(){this.$emit("confirm",this.innerValue)},onChange:function(t){var e,n=this;if("time"===this.type){var i=t.getIndexes();e=i[0]+this.minHour+":"+(i[1]+this.minMinute)}else{var r=t.getValues(),o=Hi(r[0]),s=Hi(r[1]),a=Wi(o,s),c=Hi(r[2]);"year-month"===this.type&&(c=1),c=c>a?a:c;var u=0,l=0;"datetime"===this.type&&(u=Hi(r[3]),l=Hi(r[4])),e=new Date(o,s-1,c,u,l)}this.innerValue=this.correctValue(e),this.$nextTick(function(){n.$nextTick(function(){n.$emit("change",t)})})},updateColumnValue:function(t){var e=this,n=[],i=this.formatter;if("time"===this.type){var r=t.split(":");n=[i("hour",r[0]),i("minute",r[1])]}else n=[i("year",""+t.getFullYear()),i("month",Ri(t.getMonth()+1)),i("day",Ri(t.getDate()))],"datetime"===this.type&&n.push(i("hour",Ri(t.getHours())),i("minute",Ri(t.getMinutes()))),"year-month"===this.type&&(n=n.slice(0,2));this.$nextTick(function(){e.$refs.picker.setValues(n)})}},render:function(t){var e=this,n={};return Object.keys(ut).forEach(function(t){n[t]=e[t]}),t(yt,{class:Ui(),ref:"picker",attrs:{columns:this.columns},on:{change:this.onChange,confirm:this.onConfirm,cancel:function(){e.$emit("cancel")}},props:i({},n)})}}),Qi=Object(s.k)("goods-action"),Ji=Qi[0],Zi=Qi[1];function Gi(t,e,n,i){return t("div",o()([{class:Zi({"safe-area-inset-bottom":e.safeAreaInsetBottom})},l(i,!0)]),[n.default&&n.default()])}Gi.props={safeAreaInsetBottom:Boolean};var tr=Ji(Gi),er=Object(s.k)("goods-action-big-btn"),nr=er[0],ir=er[1];function rr(t,e,n,i){return t(te,o()([{attrs:{square:!0,size:"large",loading:e.loading,disabled:e.disabled,type:e.primary?"danger":"warning"},class:ir(),on:{click:function(t){d(i,"click",t),$t(i)}}},l(i)]),[n.default?n.default():e.text])}rr.props=i({},_t,{text:String,primary:Boolean,loading:Boolean,disabled:Boolean});var or=nr(rr),sr=Object(s.k)("goods-action-mini-btn"),ar=sr[0],cr=sr[1];function ur(t,e,n,i){return t("div",o()([{class:[cr(),"van-hairline"],on:{click:function(t){d(i,"click",t),$t(i)}}},l(i)]),[t(W,{class:[cr("icon"),e.iconClass],attrs:{tag:"div",info:e.info,name:e.icon}}),n.default?n.default():e.text])}ur.props=i({},_t,{text:String,icon:String,info:[String,Number],iconClass:null});var lr=ar(ur),dr=Object(s.k)("swipe"),hr=dr[0],fr=dr[1],pr=hr({mixins:[v],props:{width:Number,height:Number,autoplay:Number,vertical:Boolean,initialSwipe:Number,indicatorColor:String,loop:{type:Boolean,default:!0},touchable:{type:Boolean,default:!0},showIndicators:{type:Boolean,default:!0},duration:{type:Number,default:500}},data:function(){return{computedWidth:0,computedHeight:0,offset:0,active:0,deltaX:0,deltaY:0,swipes:[],swiping:!1}},mounted:function(){this.initialize(),this.$isServer||y(window,"resize",this.onResize,!0)},activated:function(){this.rendered&&this.initialize(),this.rendered=!0},destroyed:function(){this.clear(),this.$isServer||b(window,"resize",this.onResize)},watch:{swipes:function(){this.initialize()},initialSwipe:function(){this.initialize()},autoplay:function(t){t?this.autoPlay():this.clear()}},computed:{count:function(){return this.swipes.length},delta:function(){return this.vertical?this.deltaY:this.deltaX},size:function(){return this[this.vertical?"computedHeight":"computedWidth"]},trackSize:function(){return this.count*this.size},activeIndicator:function(){return(this.active+this.count)%this.count},isCorrectDirection:function(){var t=this.vertical?"vertical":"horizontal";return this.direction===t},trackStyle:function(){var t,e=this.vertical?"height":"width",n=this.vertical?"width":"height";return(t={})[e]=this.trackSize+"px",t[n]=this[n]?this[n]+"px":"",t.transitionDuration=(this.swiping?0:this.duration)+"ms",t.transform="translate"+(this.vertical?"Y":"X")+"("+this.offset+"px)",t},indicatorStyle:function(){return{backgroundColor:this.indicatorColor}}},methods:{initialize:function(t){if(void 0===t&&(t=this.initialSwipe),clearTimeout(this.timer),this.$el){var e=this.$el.getBoundingClientRect();this.computedWidth=this.width||e.width,this.computedHeight=this.height||e.height}this.swiping=!0,this.active=t,this.offset=this.count>1?-this.size*this.active:0,this.swipes.forEach(function(t){t.offset=0}),this.autoPlay()},onResize:function(){this.initialize(this.activeIndicator)},onTouchStart:function(t){this.touchable&&(this.clear(),this.swiping=!0,this.touchStart(t),this.correctPosition())},onTouchMove:function(t){this.touchable&&this.swiping&&(this.touchMove(t),this.isCorrectDirection&&(x(t,!0),this.move({offset:Math.min(Math.max(this.delta,-this.size),this.size)})))},onTouchEnd:function(){if(this.touchable&&this.swiping){if(this.delta&&this.isCorrectDirection){var t=this.vertical?this.offsetY:this.offsetX;this.move({pace:t>0?this.delta>0?-1:1:0,emitChange:!0})}this.swiping=!1,this.autoPlay()}},move:function(t){var e=t.pace,n=void 0===e?0:e,i=t.offset,r=void 0===i?0:i,o=t.emitChange,s=this.delta,a=this.active,c=this.count,u=this.swipes,l=this.trackSize,d=0===a,h=a===c-1;!this.loop&&(d&&(r>0||n<0)||h&&(r<0||n>0))||c<=1||(u[0]&&(u[0].offset=h&&(s<0||n>0)?l:0),u[c-1]&&(u[c-1].offset=d&&(s>0||n<0)?-l:0),n&&a+n>=-1&&a+n<=c&&(this.active+=n,o&&this.$emit("change",this.activeIndicator)),this.offset=Math.round(r-this.active*this.size))},swipeTo:function(t){var e=this;this.swiping=!0,this.resetTouchStatus(),this.correctPosition(),setTimeout(function(){e.swiping=!1,e.move({pace:t%e.count-e.active,emitChange:!0})},30)},correctPosition:function(){this.active<=-1&&this.move({pace:this.count}),this.active>=this.count&&this.move({pace:-this.count})},clear:function(){clearTimeout(this.timer)},autoPlay:function(){var t=this,e=this.autoplay;e&&this.count>1&&(this.clear(),this.timer=setTimeout(function(){t.swiping=!0,t.resetTouchStatus(),t.correctPosition(),setTimeout(function(){t.swiping=!1,t.move({pace:1,emitChange:!0}),t.autoPlay()},30)},e))}},render:function(t){var e=this,n=this.count,i=this.activeIndicator,r=this.slots("indicator")||this.showIndicators&&n>1&&t("div",{class:fr("indicators",{vertical:this.vertical})},[Array.apply(void 0,Array(n)).map(function(n,r){return t("i",{class:fr("indicator",{active:r===i}),style:r===i?e.indicatorStyle:null})})]);return t("div",{class:fr()},[t("div",{ref:"track",style:this.trackStyle,class:fr("track"),on:{touchstart:this.onTouchStart,touchmove:this.onTouchMove,touchend:this.onTouchEnd,touchcancel:this.onTouchEnd}},[this.slots()]),r])}}),vr=Object(s.k)("swipe-item"),mr=vr[0],gr=vr[1],yr=mr({data:function(){return{offset:0}},beforeCreate:function(){this.$parent.swipes.push(this)},destroyed:function(){this.$parent.swipes.splice(this.$parent.swipes.indexOf(this),1)},render:function(t){var e=this.$parent,n=e.vertical,r=e.computedWidth,o=e.computedHeight,s={width:r+"px",height:n?o+"px":"100%",transform:"translate"+(n?"Y":"X")+"("+this.offset+"px)"};return t("div",{class:gr(),style:s,on:i({},this.$listeners)},[this.slots()])}}),br=Object(s.k)("image-preview"),kr=br[0],xr=br[1];function Sr(t){return Math.sqrt(Math.abs((t[0].clientX-t[1].clientX)*(t[0].clientY-t[1].clientY)))}var wr,Cr=kr({mixins:[D,v],props:{images:Array,className:null,lazyLoad:Boolean,asyncClose:Boolean,startPosition:Number,showIndicators:Boolean,loop:{type:Boolean,default:!0},overlay:{type:Boolean,default:!0},showIndex:{type:Boolean,default:!0},minZoom:{type:Number,default:1/3},maxZoom:{type:Number,default:3},overlayClass:{type:String,default:"van-image-preview__overlay"},closeOnClickOverlay:{type:Boolean,default:!0}},data:function(){return{scale:1,moveX:0,moveY:0,moving:!1,zooming:!1,active:0}},computed:{imageStyle:function(){var t=this.scale,e={transition:this.zooming||this.moving?"":".3s all"};return 1!==t&&(e.transform="scale3d("+t+", "+t+", 1) translate("+this.moveX/t+"px, "+this.moveY/t+"px)"),e}},watch:{value:function(){this.active=this.startPosition},startPosition:function(t){this.active=t}},methods:{onWrapperTouchStart:function(){this.touchStartTime=new Date},onWrapperTouchEnd:function(t){x(t);var e=new Date-this.touchStartTime,n=this.$refs.swipe||{},i=n.offsetX,r=void 0===i?0:i,o=n.offsetY;if(e<300&&r<10&&(void 0===o?0:o)<10){var s=this.active;this.resetScale(),this.$emit("close",{index:s,url:this.images[s]}),this.asyncClose||this.$emit("input",!1)}},startMove:function(t){var e=t.currentTarget.getBoundingClientRect(),n=window.innerWidth,i=window.innerHeight;this.touchStart(t),this.moving=!0,this.startMoveX=this.moveX,this.startMoveY=this.moveY,this.maxMoveX=Math.max(0,(e.width-n)/2),this.maxMoveY=Math.max(0,(e.height-i)/2)},startZoom:function(t){this.moving=!1,this.zooming=!0,this.startScale=this.scale,this.startDistance=Sr(t.touches)},onTouchStart:function(t){var e=t.touches,n=(this.$refs.swipe||{}).offsetX,i=void 0===n?0:n;1===e.length&&1!==this.scale?this.startMove(t):2!==e.length||i||this.startZoom(t)},onTouchMove:function(t){var e=t.touches;if((this.moving||this.zooming)&&x(t,!0),this.moving){this.touchMove(t);var n=this.deltaX+this.startMoveX,i=this.deltaY+this.startMoveY;this.moveX=Object(s.j)(n,-this.maxMoveX,this.maxMoveX),this.moveY=Object(s.j)(i,-this.maxMoveY,this.maxMoveY)}if(this.zooming&&2===e.length){var r=Sr(e),o=this.startScale*r/this.startDistance;this.scale=Object(s.j)(o,this.minZoom,this.maxZoom)}},onTouchEnd:function(t){if(this.moving||this.zooming){var e=!0;this.moving&&this.startMoveX===this.moveX&&this.startMoveY===this.moveY&&(e=!1),t.touches.length||(this.moving=!1,this.zooming=!1,this.startMoveX=0,this.startMoveY=0,this.startScale=1,this.scale<1&&this.resetScale()),e&&x(t,!0)}},onChange:function(t){this.resetScale(),this.active=t,this.$emit("change",t)},resetScale:function(){this.scale=1,this.moveX=0,this.moveY=0}},render:function(t){var e=this;if(this.value){var n=this.active,i=this.images,r=this.showIndex&&t("div",{class:xr("index")},[this.slots("index")||n+1+"/"+i.length]),s=t(pr,{ref:"swipe",attrs:{loop:this.loop,indicatorColor:"white",initialSwipe:this.startPosition,showIndicators:this.showIndicators},on:{change:this.onChange}},[i.map(function(i,r){var s={class:xr("image"),style:r===n?e.imageStyle:null,on:{touchstart:e.onTouchStart,touchmove:e.onTouchMove,touchend:e.onTouchEnd,touchcancel:e.onTouchEnd}};return t(yr,[e.lazyLoad?t("img",o()([{directives:[{name:"lazy",value:i}]},s])):t("img",o()([{attrs:{src:i}},s]))])})]);return t("transition",{attrs:{name:"van-fade"}},[t("div",{class:[xr(),this.className],on:{touchstart:this.onWrapperTouchStart,touchend:this.onWrapperTouchEnd,touchcancel:this.onWrapperTouchEnd}},[r,s])])}}}),$r={images:[],loop:!0,value:!0,minZoom:1/3,maxZoom:3,className:"",lazyLoad:!1,showIndex:!0,asyncClose:!1,startPosition:0,showIndicators:!1},_r=function(t,e){if(void 0===e&&(e=0),!s.h){wr||(wr=new(a.a.extend(Cr))({el:document.createElement("div")}),document.body.appendChild(wr.$el));var n=Array.isArray(t)?{images:t,startPosition:e}:t;return i(wr,$r,n),wr.$once("input",function(t){wr.value=t}),n.onClose&&wr.$once("close",n.onClose),wr}};_r.install=function(){a.a.use(Cr)};var Or=_r,Tr=n("lJzc"),Ar=n.n(Tr).a,jr=Object(s.k)("list"),Ir=jr[0],Br=jr[1],Er=jr[2],Nr=Ir({model:{prop:"loading"},props:{error:Boolean,loading:Boolean,finished:Boolean,errorText:String,loadingText:String,finishedText:String,immediateCheck:{type:Boolean,default:!0},offset:{type:Number,default:300},direction:{type:String,default:"down"}},mounted:function(){this.scroller=B(this.$el),this.handler(!0),this.immediateCheck&&this.$nextTick(this.check)},destroyed:function(){this.handler(!1)},activated:function(){this.handler(!0)},deactivated:function(){this.handler(!1)},watch:{loading:function(){this.$nextTick(this.check)},finished:function(){this.$nextTick(this.check)}},methods:{check:function(){if(!(this.loading||this.finished||this.error)){var t=this.$el,e=this.scroller,n=L(e);if(n&&"none"!==window.getComputedStyle(t).display&&null!==t.offsetParent){var i=this.offset,r=this.direction;(function(){if(t===e){var o=E(t);if("up"===r)return o<=i;var s=o+n;return e.scrollHeight-s<=i}return"up"===r?E(e)-N(t)<=i:N(t)+L(t)-N(e)-n<=i})()&&(this.$emit("input",!0),this.$emit("load"))}}},clickErrorText:function(){this.$emit("update:error",!1),this.$nextTick(this.check)},handler:function(t){this.binded!==t&&(this.binded=t,(t?y:b)(this.scroller,"scroll",this.check))}},render:function(t){return t("div",{class:Br()},["down"===this.direction&&this.slots(),this.loading&&t("div",{class:Br("loading"),key:"loading"},[this.slots("loading")||[t(Q,{class:Br("loading-icon")}),t("span",{class:Br("loading-text")},[this.loadingText||Er("loading")])]]),this.finished&&this.finishedText&&t("div",{class:Br("finished-text")},[this.finishedText]),this.error&&this.errorText&&t("div",{on:{click:this.clickErrorText},class:Br("error-text")},[this.errorText]),"up"===this.direction&&this.slots()])}}),Lr=n("tgu0"),Dr=Object(s.k)("nav-bar"),Fr=Dr[0],Mr=Dr[1];function zr(t,e,n,i){return t("div",o()([{class:[Mr({fixed:e.fixed}),{"van-hairline--bottom":e.border}],style:{zIndex:e.zIndex}},l(i)]),[t("div",{class:Mr("left"),on:{click:i.listeners["click-left"]||s.i}},[n.left?n.left():[e.leftArrow&&t(W,{class:Mr("arrow"),attrs:{name:"arrow-left"}}),e.leftText&&t("span",{class:Mr("text")},[e.leftText])]]),t("div",{class:[Mr("title"),"van-ellipsis"]},[n.title?n.title():e.title]),t("div",{class:Mr("right"),on:{click:i.listeners["click-right"]||s.i}},[n.right?n.right():e.rightText&&t("span",{class:Mr("text")},[e.rightText])])])}zr.props={title:String,fixed:Boolean,leftText:String,rightText:String,leftArrow:Boolean,border:{type:Boolean,default:!0},zIndex:{type:Number,default:1}};var Pr=Fr(zr),Vr=Object(s.k)("notice-bar"),Rr=Vr[0],Hr=Vr[1],Wr=Rr({props:{text:String,mode:String,color:String,leftIcon:String,wrapable:Boolean,background:String,delay:{type:[String,Number],default:1},scrollable:{type:Boolean,default:!0},speed:{type:Number,default:50}},data:function(){return{wrapWidth:0,firstRound:!0,duration:0,offsetWidth:0,showNoticeBar:!0,animationClass:""}},watch:{text:{handler:function(){var t=this;this.$nextTick(function(){var e=t.$refs,n=e.wrap,i=e.content;if(n&&i){var r=n.getBoundingClientRect().width,o=i.getBoundingClientRect().width;t.scrollable&&o>r&&(t.wrapWidth=r,t.offsetWidth=o,t.duration=o/t.speed,t.animationClass=Hr("play"))}})},immediate:!0}},methods:{onClickIcon:function(){"closeable"===this.mode&&(this.showNoticeBar=!1,this.$emit("close"))},onAnimationEnd:function(){var t=this;this.firstRound=!1,this.$nextTick(function(){t.duration=(t.offsetWidth+t.wrapWidth)/t.speed,t.animationClass=Hr("play--infinite")})}},render:function(t){var e=this,n=this.mode,i="closeable"===n?"cross":"link"===n?"arrow":"",r={color:this.color,background:this.background},o={paddingLeft:this.firstRound?0:this.wrapWidth+"px",animationDelay:(this.firstRound?this.delay:0)+"s",animationDuration:this.duration+"s"};return t("div",{directives:[{name:"show",value:this.showNoticeBar}],class:Hr({withicon:n,wrapable:this.wrapable}),style:r,on:{click:function(){e.$emit("click")}}},[this.leftIcon&&t(W,{class:Hr("left-icon"),attrs:{name:this.leftIcon}}),t("div",{ref:"wrap",class:Hr("wrap")},[t("div",{ref:"content",class:[Hr("content"),this.animationClass,{"van-ellipsis":!this.scrollable&&!this.wrapable}],style:o,on:{animationend:this.onAnimationEnd,webkitAnimationEnd:this.onAnimationEnd}},[this.slots()||this.text])]),i&&t(W,{class:Hr("right-icon"),attrs:{name:i},on:{click:this.onClickIcon}})])}}),qr=Object(s.k)("notify"),Yr=qr[0],Ur=qr[1];function Kr(t,e,n,i){var r={color:e.color,background:e.background};return t(tt,o()([{attrs:{value:e.value,position:"top",overlay:!1,lockScroll:!1},style:r,class:[Ur(),e.className],on:{input:function(t){d(i,"input",t)}}},l(i)]),[e.message])}Kr.props=i({},D.props,{className:null,message:[String,Number],color:{type:String,default:sn},background:{type:String,default:on},duration:{type:Number,default:3e3}});var Xr,Qr,Jr=Yr(Kr);function Zr(t){var e;if(!s.h)return Qr||(Qr=h(Jr)),t=i({},Zr.currentOptions,(e=t,Object(s.g)(e)?e:{message:e})),i(Qr,t),clearTimeout(Xr),t.duration&&t.duration>0&&(Xr=setTimeout(Zr.clear,t.duration)),Qr}function Gr(){return{value:!0,message:"",color:sn,background:on,duration:3e3,className:""}}Zr.clear=function(){Qr&&(Qr.value=!1)},Zr.currentOptions=Gr(),Zr.setDefaultOptions=function(t){i(Zr.currentOptions,t)},Zr.resetDefaultOptions=function(){Zr.currentOptions=Gr()},Zr.install=function(){a.a.use(Jr)},a.a.prototype.$notify=Zr;var to=Zr,eo=Object(s.k)("key"),no=eo[0],io=eo[1],ro=no({props:{type:Array,text:[String,Number]},data:function(){return{active:!1}},computed:{className:function(){var t=this.type.slice(0);return this.active&&t.push("active"),io(t)}},methods:{onFocus:function(){this.active=!0,this.$emit("press",this.text)},onBlur:function(t){x(t,!0),this.active=!1}},render:function(t){var e=this.onBlur;return t("i",{class:["van-hairline",this.className],on:{touchstart:this.onFocus,touchmove:e,touchend:e,touchcancel:e}},[this.text])}}),oo=Object(s.k)("number-keyboard"),so=oo[0],ao=oo[1],co=oo[2],uo=["blue","big"],lo=["delete","big","gray"],ho=so({props:{show:Boolean,title:String,closeButtonText:String,deleteButtonText:String,safeAreaInsetBottom:Boolean,theme:{type:String,default:"default"},extraKey:{type:String,default:""},zIndex:{type:Number,default:100},transition:{type:Boolean,default:!0},showDeleteKey:{type:Boolean,default:!0},hideOnClickOutside:{type:Boolean,default:!0}},mounted:function(){this.handler(!0)},destroyed:function(){this.handler(!1)},activated:function(){this.handler(!0)},deactivated:function(){this.handler(!1)},watch:{show:function(){this.transition||this.$emit(this.show?"show":"hide")}},computed:{keys:function(){for(var t=[],e=1;e<=9;e++)t.push({text:e});switch(this.theme){case"default":t.push({text:this.extraKey,type:["gray"]},{text:0},{text:this.deleteText,type:["gray","delete"]});break;case"custom":t.push({text:0,type:["middle"]},{text:this.extraKey})}return t},deleteText:function(){return this.deleteButtonText||co("delete")}},methods:{handler:function(t){this.$isServer||t!==this.handlerStatus&&this.hideOnClickOutside&&(this.handlerStatus=t,document.body[(t?"add":"remove")+"EventListener"]("touchstart",this.onBlur))},onBlur:function(){this.$emit("blur")},onClose:function(){this.$emit("close"),this.onBlur()},onAnimationEnd:function(){this.$emit(this.show?"show":"hide")},onPress:function(t){""!==t&&(t===this.deleteText?this.$emit("delete"):t===this.closeButtonText?this.onClose():this.$emit("input",t))}},render:function(t){var e=this.title,n=this.theme,i=this.onPress,r=this.closeButtonText,o=this.slots("title-left"),s=r&&"default"===n,a=e||s||o;return t("transition",{attrs:{name:this.transition?"van-slide-up":""}},[t("div",{directives:[{name:"show",value:this.show}],style:{zIndex:this.zIndex},class:ao([n,{"safe-area-inset-bottom":this.safeAreaInsetBottom}]),on:{touchstart:k,animationend:this.onAnimationEnd,webkitAnimationEnd:this.onAnimationEnd}},[a&&t("div",{class:[ao("title"),"van-hairline--top"]},[o&&t("span",{class:ao("title-left")},[o]),e&&t("span",[e]),s&&t("span",{class:ao("close"),on:{click:this.onClose}},[r])]),t("div",{class:ao("body")},[this.keys.map(function(e){return t(ro,{key:e.text,attrs:{text:e.text,type:e.type},on:{press:i}})})]),"custom"===n&&t("div",{class:ao("sidebar")},[t(ro,{attrs:{text:this.deleteText,type:lo},on:{press:i}}),t(ro,{attrs:{text:r,type:uo},on:{press:i}})])])])}}),fo=Object(s.k)("pagination"),po=fo[0],vo=fo[1],mo=fo[2];function go(t,e,n){return{number:t,text:e,active:n}}var yo=po({props:{value:Number,prevText:String,nextText:String,pageCount:Number,totalItems:Number,forceEllipses:Boolean,mode:{type:String,default:"multi"},itemsPerPage:{type:Number,default:10},showPageSize:{type:Number,default:5}},computed:{count:function(){var t=this.pageCount||Math.ceil(this.totalItems/this.itemsPerPage);return Math.max(1,t)},pages:function(){var t=[],e=this.count;if("multi"!==this.mode)return t;var n=1,i=e,r=void 0!==this.showPageSize&&this.showPageSizee&&(n=(i=e)-this.showPageSize+1);for(var o=n;o<=i;o++){var s=go(o,o,o===this.value);t.push(s)}if(r&&this.showPageSize>0&&this.forceEllipses){if(n>1){var a=go(n-1,"...",!1);t.unshift(a)}if(i=0&&t<=100}},showPivot:{type:Boolean,default:!0},color:{type:String,default:"#1989fa"},textColor:{type:String,default:sn}},data:function(){return{pivotWidth:0,progressWidth:0}},mounted:function(){this.getWidth()},watch:{showPivot:function(){this.getWidth()},pivotText:function(){this.getWidth()}},methods:{getWidth:function(){var t=this;this.$nextTick(function(){t.progressWidth=t.$el.offsetWidth,t.pivotWidth=t.$refs.pivot?t.$refs.pivot.offsetWidth:0})}},render:function(t){var e=this.pivotText,n=this.percentage,i=Object(s.d)(e)?e:n+"%",r=this.showPivot&&i,o=this.inactive?"#cacaca":this.color,a={color:this.textColor,background:this.pivotColor||o},c={background:o,width:(this.progressWidth-this.pivotWidth)*n/100+"px"};return t("div",{class:Io()},[t("span",{class:Io("portion",{"with-pivot":r}),style:c},[r&&t("span",{ref:"pivot",style:a,class:Io("pivot")},[i])])])}}),Eo=Object(s.k)("pull-refresh"),No=Eo[0],Lo=Eo[1],Do=Eo[2],Fo=["pulling","loosing","success"],Mo=No({mixins:[v],props:{disabled:Boolean,successText:String,pullingText:String,loosingText:String,loadingText:String,value:{type:Boolean,required:!0},successDuration:{type:Number,default:500},animationDuration:{type:Number,default:300},headHeight:{type:Number,default:50}},data:function(){return{status:"normal",height:0,duration:0}},computed:{untouchable:function(){return"loading"===this.status||"success"===this.status||this.disabled}},watch:{value:function(t){var e=this;this.duration=this.animationDuration,!t&&this.successText?(this.status="success",setTimeout(function(){e.setStatus(0)},this.successDuration)):this.setStatus(t?this.headHeight:0,t)}},mounted:function(){this.scrollEl=B(this.$el)},methods:{onTouchStart:function(t){!this.untouchable&&this.getCeiling()&&(this.duration=0,this.touchStart(t))},onTouchMove:function(t){this.untouchable||(this.touchMove(t),!this.ceiling&&this.getCeiling()&&(this.duration=0,this.startY=t.touches[0].clientY,this.deltaY=0),this.ceiling&&this.deltaY>=0&&"vertical"===this.direction&&(this.setStatus(this.ease(this.deltaY)),x(t)))},onTouchEnd:function(){!this.untouchable&&this.ceiling&&this.deltaY&&(this.duration=this.animationDuration,"loosing"===this.status?(this.setStatus(this.headHeight,!0),this.$emit("input",!0),this.$emit("refresh")):this.setStatus(0))},getCeiling:function(){return this.ceiling=0===E(this.scrollEl),this.ceiling},ease:function(t){var e=this.headHeight;return t=s?"full":r+.5>=s&&a?"half":"void"));function k(t){v||p||(d(i,"input",t),d(i,"change",t))}return t("div",o()([{class:Vo()},l(i),{on:{touchmove:function(t){if(!p&&!v&&document.elementFromPoint){x(t);var e=t.touches[0],n=e.clientX,i=e.clientY,r=document.elementFromPoint(n,i);if(r&&r.dataset){var o=r.dataset.score;o&&k(+o)}}}}}]),[y.map(function(n,i){return function(n,i){var r="full"===n,o="void"===n;return t("div",{key:i,class:Vo("item")},[t(W,{attrs:{name:r?c:f,size:u+"px","data-score":i+1,color:v?g:r?h:m},class:Vo("icon"),on:{click:function(){k(i+1)}}}),e.allowHalf&&t(W,{attrs:{name:o?f:c,size:u+"px","data-score":i+.5,color:v?g:o?m:h},class:Vo("icon","half"),on:{click:function(){k(i+.5)}}})])}(n,i)})])}Ro.props={value:Number,readonly:Boolean,disabled:Boolean,allowHalf:Boolean,size:{type:Number,default:20},icon:{type:String,default:"star"},voidIcon:{type:String,default:"star-o"},color:{type:String,default:"#ffd21e"},voidColor:{type:String,default:"#c7c7c7"},disabledColor:{type:String,default:"#bdbdbd"},count:{type:Number,default:5}};var Ho=Po(Ro),Wo=Object(s.k)("row"),qo=Wo[0],Yo=Wo[1],Uo=qo({props:{type:String,align:String,justify:String,tag:{type:String,default:"div"},gutter:{type:[Number,String],default:0}},render:function(t){var e,n=this.align,i=this.justify,r="flex"===this.type,o="-"+Number(this.gutter)/2+"px",s=this.gutter?{marginLeft:o,marginRight:o}:{};return t(this.tag,{style:s,class:Yo((e={flex:r},e["align-"+n]=r&&n,e["justify-"+i]=r&&i,e))},[this.slots()])}}),Ko=Object(s.k)("search"),Xo=Ko[0],Qo=Ko[1],Jo=Ko[2];function Zo(t,e,n,r){var s={attrs:r.data.attrs,on:i({},r.listeners,{input:function(t){d(r,"input",t)},keypress:function(t){13===t.keyCode&&(x(t),d(r,"search",e.value)),d(r,"keypress",t)}})},a=l(r);return delete a.attrs,t("div",o()([{class:Qo({"show-action":e.showAction}),style:{background:e.background}},a]),[t("div",{class:Qo("content",e.shape)},[n.label||e.label?t("div",{class:Qo("label")},[n.label?n.label():e.label]):null,t(Dt,o()([{attrs:{clearable:!0,type:"search",value:e.value,border:!1,leftIcon:"search"},scopedSlots:{"left-icon":n["left-icon"]}},s]))]),function(){if(!e.showAction)return null;return t("div",{class:Qo("action")},[n.action?n.action():t("div",{on:{click:function(){d(r,"input",""),d(r,"cancel")}}},[Jo("cancel")])])}()])}Zo.props={value:String,label:String,showAction:Boolean,shape:{type:String,default:"square"},background:{type:String,default:"#fff"}};var Go=Xo(Zo),ts=Object(s.k)("sku-header"),es=ts[0],ns=ts[1];function is(t,e,n,i){var r=e.sku,s=e.goods,a=e.skuEventBus,c=function(t,e){var n=e.s1;if(n){var i=t.tree.filter(function(t){return"s1"===t.k_s})[0]||{};if(i.v){var r=i.v.filter(function(t){return t.id===n})[0];if(r)return r.imgUrl||r.img_url}}}(r,e.selectedSku)||s.picture;return t("div",o()([{class:[ns(),"van-hairline--bottom"]},l(i)]),[t("div",{class:ns("img-wrap"),on:{click:function(){a.$emit("sku:previewImage",c)}}},[t("img",{attrs:{src:c}})]),t("div",{class:ns("goods-info")},[t("div",{class:"van-sku__goods-name van-ellipsis"},[s.title]),n.default&&n.default(),t(W,{attrs:{name:"close"},class:"van-sku__close-icon",on:{click:function(){a.$emit("sku:close")}}})])])}is.props={sku:Object,goods:Object,skuEventBus:Object,selectedSku:Object};var rs=es(is),os=Object(s.k)("sku-row"),ss=os[0],as=os[1];function cs(t,e,n,i){return t("div",o()([{class:as()},l(i)]),[t("div",{class:as("title")},[e.skuRow.k,":"]),n.default&&n.default()])}cs.props={skuRow:Object};var us=ss(cs),ls={QUOTA_LIMIT:0,STOCK_LIMIT:1},ds={LIMIT_TYPE:ls,UNSELECTED_SKU_VALUE_ID:""},hs=function(t){var e={};return t.forEach(function(t){e[t.k_s]=t.v}),e},fs=function(t,e){var n=Object.keys(e).filter(function(t){return""!==e[t]});return t.length===n.length},ps=function(t,e){return t.filter(function(t){return Object.keys(e).every(function(n){return String(t[n])===String(e[n])})})[0]},vs=function(t,e){var n=hs(t);return Object.keys(e).reduce(function(t,i){var r=n[i],o=e[i];if(""!==o){var s=r.filter(function(t){return t.id===o})[0];s&&t.push(s)}return t},[])},ms=function(t,e,n){var r,o=n.key,s=n.valueId,a=i({},e,((r={})[o]=s,r)),c=Object.keys(a).filter(function(t){return""!==a[t]});return t.filter(function(t){return c.every(function(e){return String(a[e])===String(t[e])})}).reduce(function(t,e){return t+=e.stock_num},0)>0},gs={normalizeSkuTree:hs,getSkuComb:ps,getSelectedSkuValues:vs,isAllSelected:fs,isSkuChoosable:ms},ys=(0,Object(s.k)("sku-row-item")[0])({props:{skuList:Array,skuValue:Object,skuKeyStr:String,skuEventBus:Object,selectedSku:Object},computed:{choosable:function(){return ms(this.skuList,this.selectedSku,{key:this.skuKeyStr,valueId:this.skuValue.id})}},methods:{onSelect:function(){this.choosable&&this.skuEventBus.$emit("sku:select",i({},this.skuValue,{skuKeyStr:this.skuKeyStr}))}},render:function(t){return t("span",{class:["van-sku-row__item",{"van-sku-row__item--active":this.skuValue.id===this.selectedSku[this.skuKeyStr],"van-sku-row__item--disabled":!this.choosable}],on:{click:this.onSelect}},[this.skuValue.name])}}),bs=Object(s.k)("stepper"),ks=bs[0],xs=bs[1],Ss=ks({props:{value:null,integer:Boolean,disabled:Boolean,inputWidth:String,asyncChange:Boolean,disableInput:Boolean,min:{type:[String,Number],default:1},max:{type:[String,Number],default:1/0},step:{type:[String,Number],default:1},defaultValue:{type:[String,Number],default:1}},data:function(){var t=this.range(Object(s.d)(this.value)?this.value:this.defaultValue);return t!==+this.value&&this.$emit("input",t),{currentValue:t}},computed:{minusDisabled:function(){return this.disabled||this.currentValue<=this.min},plusDisabled:function(){return this.disabled||this.currentValue>=this.max}},watch:{value:function(t){t!==this.currentValue&&(this.currentValue=this.format(t))},currentValue:function(t){this.$emit("input",t),this.$emit("change",t)}},methods:{format:function(t){return""===(t=String(t).replace(/[^0-9.-]/g,""))?0:this.integer?Math.floor(t):+t},range:function(t){return Math.max(Math.min(this.max,this.format(t)),this.min)},onInput:function(t){var e=t.target.value,n=this.format(e);this.asyncChange?(t.target.value=this.currentValue,this.$emit("input",n),this.$emit("change",n)):(+e!==n&&(t.target.value=n),this.currentValue=n)},onChange:function(t){if(this[t+"Disabled"])this.$emit("overlimit",t);else{var e="minus"===t?-this.step:+this.step,n=Math.round(100*(this.currentValue+e))/100;this.asyncChange?(this.$emit("input",n),this.$emit("change",n)):this.currentValue=this.range(n),this.$emit(t)}},onFocus:function(t){this.$emit("focus",t)},onBlur:function(t){this.currentValue=this.range(this.currentValue),this.$emit("blur",t),0===this.currentValue&&(t.target.value=this.currentValue)}},render:function(t){var e=this,n=function(t){return function(){e.onChange(t)}};return t("div",{class:xs()},[t("button",{class:xs("minus",{disabled:this.minusDisabled}),on:{click:n("minus")}}),t("input",{attrs:{type:"number",disabled:this.disabled||this.disableInput},class:xs("input"),domProps:{value:this.currentValue},style:{width:this.inputWidth},on:{input:this.onInput,focus:this.onFocus,blur:this.onBlur}}),t("button",{class:xs("plus",{disabled:this.plusDisabled}),on:{click:n("plus")}})])}}),ws=Object(s.k)("sku-stepper")[0],Cs=ls.QUOTA_LIMIT,$s=ls.STOCK_LIMIT,_s=ws({props:{quota:Number,quotaUsed:Number,hideStock:Boolean,skuEventBus:Object,skuStockNum:Number,selectedSku:Object,selectedNum:Number,stepperTitle:String,hideQuotaText:Boolean,selectedSkuComb:Object,disableStepperInput:Boolean,customStepperConfig:Object},data:function(){return{currentNum:this.selectedNum,limitType:$s}},watch:{currentNum:function(t){this.skuEventBus.$emit("sku:numChange",t)},stepperLimit:function(t){t0&&(n="每人限购"+this.quota+"件"),n},stepperLimit:function(){var t,e=this.quota-this.quotaUsed;return this.quota>0&&e<=this.stock?(t=e<0?0:e,this.limitType=Cs):(t=this.stock,this.limitType=$s),t}},methods:{setCurrentNum:function(t){this.currentNum=t},onOverLimit:function(t){this.skuEventBus.$emit("sku:overLimit",{action:t,limitType:this.limitType,quota:this.quota,quotaUsed:this.quotaUsed})},onChange:function(t){var e=this.customStepperConfig.handleStepperChange;e&&e(t),this.$emit("change",t)}},render:function(t){var e=this;return t("div",{class:"van-sku-stepper-stock"},[t("div",{class:"van-sku-stepper-container"},[t("div",{class:"van-sku__stepper-title"},[this.stepperTitle||"购买数量",":"]),t(Ss,{class:"van-sku__stepper",attrs:{max:this.stepperLimit,disableInput:this.disableStepperInput},on:{overlimit:this.onOverLimit,change:this.onChange},model:{value:e.currentNum,callback:function(t){e.currentNum=t}}})]),!this.hideStock&&t("div",{class:"van-sku__stock"},[this.stockText]),!this.hideQuotaText&&this.quotaText&&t("div",{class:"van-sku__quota"},[this.quotaText])])}});function Os(t){return/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(t)}var Ts=Object(s.k)("uploader"),As=Ts[0],js=Ts[1],Is=As({inheritAttrs:!1,props:{disabled:Boolean,beforeRead:Function,afterRead:Function,accept:{type:String,default:"image/*"},resultType:{type:String,default:"dataUrl"},maxSize:{type:Number,default:Number.MAX_VALUE}},computed:{detail:function(){return{name:this.$attrs.name||""}}},methods:{onChange:function(t){var e=this,n=t.target.files;!this.disabled&&n.length&&(!(n=1===n.length?n[0]:[].slice.call(n,0))||this.beforeRead&&!this.beforeRead(n,this.detail)?this.resetInput():Array.isArray(n)?Promise.all(n.map(this.readFile)).then(function(t){var i=!1,r=n.map(function(r,o){return r.size>e.maxSize&&(i=!0),{file:n[o],content:t[o]}});e.onAfterRead(r,i)}):this.readFile(n).then(function(t){e.onAfterRead({file:n,content:t},n.size>e.maxSize)}))},readFile:function(t){var e=this;return new Promise(function(n){var i=new FileReader;i.onload=function(t){n(t.target.result)},"dataUrl"===e.resultType?i.readAsDataURL(t):"text"===e.resultType&&i.readAsText(t)})},onAfterRead:function(t,e){e?this.$emit("oversize",t):this.afterRead&&this.afterRead(t,this.detail),this.resetInput()},resetInput:function(){this.$refs.input&&(this.$refs.input.value="")}},render:function(t){var e=this.accept,n=this.disabled;return t("div",{class:js()},[this.slots(),t("input",{attrs:i({},this.$attrs,{type:"file",accept:e,disabled:n}),ref:"input",class:js("input"),on:{change:this.onChange}})])}}),Bs=Object(s.k)("sku-img-uploader"),Es=Bs[0],Ns=Bs[1],Ls=Es({props:{value:String,uploadImg:Function,maxSize:{type:Number,default:6}},data:function(){return{paddingImg:""}},computed:{imgList:function(){return this.value&&!this.paddingImg?[this.value]:[]}},methods:{afterReadFile:function(t){var e=this;this.paddingImg=t.content,this.uploadImg(t.file,t.content).then(function(t){e.$emit("input",t),e.$nextTick(function(){e.paddingImg=""})}).catch(function(){e.paddingImg=""})},onOversize:function(){this.$toast("最大可上传图片为"+this.maxSize+"MB,请尝试压缩图片尺寸")}},render:function(t){var e=this,n=this.imgList,i=this.paddingImg,r=(i||n.length>0)&&t("div",{class:"van-clearfix"},[n.map(function(n){return t("div",{class:Ns("img")},[t("img",{attrs:{src:n}}),t(W,{attrs:{name:"clear"},class:Ns("delete"),on:{click:function(){e.$emit("input","")}}})])}),i&&t("div",{class:Ns("img")},[t("img",{attrs:{src:i}}),t(Q,{attrs:{type:"spinner"},class:Ns("uploading")})])]);return t("div",{class:Ns()},[t(Is,{attrs:{disabled:!!i,afterRead:this.afterReadFile,maxSize:1024*this.maxSize*1024},on:{oversize:this.onOversize}},[t("div",{class:Ns("header")},[i?t("div",["正在上传..."]):[t(W,{attrs:{name:"photograph"}}),t("span",{class:"label"},[this.value?"重拍":"拍照"," 或 "]),t(W,{attrs:{name:"photo"}}),t("span",{class:"label"},[this.value?"重新选择照片":"选择照片"])]])]),r])}}),Ds=Object(s.k)("sku-messages"),Fs=Ds[0],Ms=Ds[1],zs={id_no:"输入身份证号码",text:"输入文本",tel:"输入数字",email:"输入邮箱",date:"点击选择日期",time:"点击选择时间",textarea:"点击填写段落文本",mobile:"输入手机号码"},Ps=Fs({props:{messages:Array,messageConfig:Object,goodsId:[Number,String]},data:function(){return{messageValues:this.resetMessageValues(this.messages)}},watch:{messages:function(t){this.messageValues=this.resetMessageValues(t)}},methods:{resetMessageValues:function(t){return(t||[]).map(function(){return{value:""}})},getType:function(t){return 1==+t.multiple?"textarea":"id_no"===t.type?"text":t.datetime>0?"datetime-local":t.type},getMessages:function(){var t=this,e={};return this.messageValues.forEach(function(n,i){var r=n.value;t.messages[i].datetime>0&&(r=r.replace(/T/g," ")),e["message_"+i]=r}),e},getCartMessages:function(){var t=this,e={};return this.messageValues.forEach(function(n,i){var r=n.value,o=t.messages[i];o.datetime>0&&(r=r.replace(/T/g," ")),e[o.name]=r}),e},getPlaceholder:function(t){var e=1==+t.multiple?"textarea":t.type;return(this.messageConfig.placeholderMap||{})[e]||zs[e]},validateMessages:function(){for(var t=this.messageValues,e=0;e18))return"请填写正确的身份证号码"}}}},render:function(t){var e=this;return t(wn,{class:Ms()},[this.messages.map(function(n,i){return"image"===n.type?t(It,{class:Ms("image-cell"),attrs:{label:"仅限一张",title:n.name,required:"1"===String(n.required)},key:e.goodsId+"-"+i},[t(Ls,{attrs:{uploadImg:e.messageConfig.uploadImg,maxSize:e.messageConfig.uploadMaxSize},model:{value:e.messageValues[i].value,callback:function(t){e.messageValues[i].value=t}}})]):t(Dt,{attrs:{maxlength:"200",label:n.name,required:"1"===String(n.required),placeholder:e.getPlaceholder(n),type:e.getType(n)},key:e.goodsId+"-"+i,model:{value:e.messageValues[i].value,callback:function(t){e.messageValues[i].value=t}}})})])}}),Vs=Object(s.k)("sku-actions"),Rs=Vs[0],Hs=Vs[1];function Ws(t,e,n,i){var r=function(t){return function(){e.skuEventBus.$emit(t)}};return t("div",o()([{class:Hs()},l(i)]),[e.showAddCartBtn&&t(te,{attrs:{bottomAction:!0,text:"加入购物车"},on:{click:r("sku:addCart")}}),t(te,{attrs:{type:"primary",bottomAction:!0,text:e.buyText||"立即购买"},on:{click:r("sku:buy")}})])}Ws.props={buyText:String,skuEventBus:Object,showAddCartBtn:Boolean};var qs=Rs(Ws),Ys=Object(s.k)("sku")[0],Us=ls.QUOTA_LIMIT,Ks=Ys({props:{sku:Object,goods:Object,quota:Number,value:Boolean,buyText:String,quotaUsed:Number,goodsId:[Number,String],hideStock:Boolean,hideQuotaText:Boolean,stepperTitle:String,getContainer:Function,customSkuValidator:Function,closeOnClickOverlay:Boolean,disableStepperInput:Boolean,resetStepperOnHide:Boolean,resetSelectedSkuOnHide:Boolean,initialSku:{type:Object,default:function(){return{}}},showSoldoutSku:{type:Boolean,default:!0},showAddCartBtn:{type:Boolean,default:!0},bodyOffsetTop:{type:Number,default:200},messageConfig:{type:Object,default:function(){return{placeholderMap:{},uploadImg:function(){return Promise.resolve()},uploadMaxSize:5}}},customStepperConfig:{type:Object,default:function(){return{}}}},data:function(){return{selectedSku:{},selectedNum:1,show:this.value}},watch:{show:function(t){if(this.$emit("input",t),!t){var e=vs(this.sku.tree,this.selectedSku);this.$emit("sku-close",{selectedSkuValues:e,selectedNum:this.selectedNum,selectedSkuComb:this.selectedSkuComb}),this.resetStepperOnHide&&this.resetStepper(),this.resetSelectedSkuOnHide&&this.resetSelectedSku(this.skuTree)}},value:function(t){this.show=t},skuTree:function(t){this.resetSelectedSku(t)}},computed:{skuGroupClass:function(){return["van-sku-group-container","van-hairline--bottom",{"van-sku-group-container--hide-soldout":!this.showSoldoutSku}]},bodyStyle:function(){if(!this.$isServer)return{maxHeight:window.innerHeight-this.bodyOffsetTop+"px"}},isSkuCombSelected:function(){return fs(this.sku.tree,this.selectedSku)},isSkuEmpty:function(){return 0===Object.keys(this.sku).length},hasSku:function(){return!this.sku.none_sku},selectedSkuComb:function(){return this.hasSku?this.isSkuCombSelected?ps(this.sku.list,this.selectedSku):null:{id:this.sku.collection_id,price:Math.round(100*this.sku.price),stock_num:this.sku.stock_num}},price:function(){return this.selectedSkuComb?(this.selectedSkuComb.price/100).toFixed(2):this.sku.price},skuTree:function(){return this.sku.tree||[]},imageList:function(){var t=[this.goods.picture];if(this.skuTree.length>0){var e=this.skuTree.filter(function(t){return"s1"===t.k_s})[0]||{};if(!e.v)return;e.v.forEach(function(e){var n=e.imgUrl||e.img_url;n&&t.push(n)})}return t}},created:function(){var t=new a.a;this.skuEventBus=t,t.$on("sku:close",this.onClose),t.$on("sku:select",this.onSelect),t.$on("sku:numChange",this.onNumChange),t.$on("sku:previewImage",this.onPreviewImage),t.$on("sku:overLimit",this.onOverLimit),t.$on("sku:addCart",this.onAddCart),t.$on("sku:buy",this.onBuy),this.resetStepper(),this.resetSelectedSku(this.skuTree),this.$emit("after-sku-create",t)},methods:{resetStepper:function(){var t=this.$refs.skuStepper,e=this.initialSku.selectedNum,n=Object(s.d)(e)?e:1;t?t.setCurrentNum(n):this.selectedNum=n},resetSelectedSku:function(t){var e=this;this.selectedSku={},t.forEach(function(t){e.selectedSku[t.k_s]=e.initialSku[t.k_s]||""}),t.forEach(function(t){var n=t.k_s,i=t.v[0].id;1===t.v.length&&ms(e.sku.list,e.selectedSku,{key:n,valueId:i})&&(e.selectedSku[n]=i)})},getSkuMessages:function(){return this.$refs.skuMessages?this.$refs.skuMessages.getMessages():{}},getSkuCartMessages:function(){return this.$refs.skuMessages?this.$refs.skuMessages.getCartMessages():{}},validateSkuMessages:function(){return this.$refs.skuMessages?this.$refs.skuMessages.validateMessages():""},validateSku:function(){if(0===this.selectedNum)return"商品已经无法购买啦";if(this.isSkuCombSelected)return this.validateSkuMessages();if(this.customSkuValidator){var t=this.customSkuValidator(this);if(t)return t}return"请先选择商品规格"},onClose:function(){this.show=!1},onSelect:function(t){var e,n;this.selectedSku=this.selectedSku[t.skuKeyStr]===t.id?i({},this.selectedSku,((e={})[t.skuKeyStr]="",e)):i({},this.selectedSku,((n={})[t.skuKeyStr]=t.id,n)),this.$emit("sku-selected",{skuValue:t,selectedSku:this.selectedSku,selectedSkuComb:this.selectedSkuComb})},onNumChange:function(t){this.selectedNum=t},onPreviewImage:function(t){var e=this,n=this.imageList.findIndex(function(e){return e===t}),i={index:n,imageList:this.imageList,indexImage:t};this.$emit("preview-on",i),Or({images:this.imageList,startPosition:n,onClose:function(){e.$emit("preview-close",i)}})},onOverLimit:function(t){var e=t.action,n=t.limitType,i=t.quota,r=t.quotaUsed,o=this.customStepperConfig.handleOverLimit;if(o)o(t);else if("minus"===e)Kt("至少选择一件");else if("plus"===e)if(n===Us){var s="限购"+i+"件";r>0&&(s+=",你已购买"+r+"件"),Kt(s)}else Kt("库存不足")},onAddCart:function(){this.onBuyOrAddCart("add-cart")},onBuy:function(){this.onBuyOrAddCart("buy-clicked")},onBuyOrAddCart:function(t){var e=this.validateSku();e?Kt(e):this.$emit(t,this.getSkuData())},getSkuData:function(){return{goodsId:this.goodsId,selectedNum:this.selectedNum,selectedSkuComb:this.selectedSkuComb,messages:this.getSkuMessages(),cartMessages:this.getSkuCartMessages()}}},render:function(t){var e=this;if(!this.isSkuEmpty){var n=this.sku,i=this.goods,r=this.price,o=this.skuEventBus,s=this.selectedSku,a=this.selectedNum,c=this.stepperTitle,u=this.hideQuotaText,l=this.selectedSkuComb,d={price:r,selectedNum:a,skuEventBus:o,selectedSku:s,selectedSkuComb:l},h=function(t){return e.slots(t,d)},f=h("sku-header")||t(rs,{attrs:{sku:n,goods:i,skuEventBus:o,selectedSku:s}},[h("sku-header-price")||t("div",{class:"van-sku__goods-price"},[t("span",{class:"van-sku__price-symbol"},["¥"]),t("span",{class:"van-sku__price-num"},[r])])]),p=h("sku-group")||this.hasSku&&t("div",{class:this.skuGroupClass},[this.skuTree.map(function(e){return t(us,{attrs:{skuRow:e}},[e.v.map(function(i){return t(ys,{attrs:{skuList:n.list,skuValue:i,selectedSku:s,skuEventBus:o,skuKeyStr:e.k_s}})})])})]),v=h("sku-stepper")||t(_s,{ref:"skuStepper",attrs:{quota:this.quota,hideStock:this.hideStock,quotaUsed:this.quotaUsed,skuEventBus:o,selectedNum:a,selectedSku:s,stepperTitle:c,skuStockNum:n.stock_num,hideQuotaText:u,selectedSkuComb:l,disableStepperInput:this.disableStepperInput,customStepperConfig:this.customStepperConfig},on:{change:function(t){e.$emit("stepper-change",t)}}}),m=h("sku-messages")||t(Ps,{ref:"skuMessages",attrs:{goodsId:this.goodsId,messageConfig:this.messageConfig,messages:n.messages}}),g=h("sku-actions")||t(qs,{attrs:{buyText:this.buyText,skuEventBus:o,showAddCartBtn:this.showAddCartBtn}});return t(tt,{attrs:{position:"bottom",getContainer:this.getContainer,closeOnClickOverlay:this.closeOnClickOverlay},class:"van-sku-container",model:{value:e.show,callback:function(t){e.show=t}}},[f,t("div",{class:"van-sku-body",style:this.bodyStyle},[h("sku-body-top"),p,h("extra-sku-group"),v,m]),g])}}});Ks.SkuActions=qs,Ks.SkuHeader=rs,Ks.SkuMessages=Ps,Ks.SkuStepper=_s,Ks.SkuRow=us,Ks.SkuRowItem=ys,Ks.skuHelper=gs,Ks.skuConstants=ds;var Xs=Ks,Qs=Object(s.k)("slider"),Js=Qs[0],Zs=Qs[1],Gs=Js({mixins:[v],props:{min:Number,value:Number,disabled:Boolean,vertical:Boolean,activeColor:String,inactiveColor:String,max:{type:Number,default:100},step:{type:Number,default:1},barHeight:{type:String,default:"2px"}},methods:{onTouchStart:function(t){this.disabled||(this.touchStart(t),this.startValue=this.format(this.value))},onTouchMove:function(t){if(x(t,!0),!this.disabled){this.touchMove(t);var e=this.$el.getBoundingClientRect(),n=(this.vertical?this.deltaY:this.deltaX)/(this.vertical?e.height:e.width)*100;this.newValue=this.startValue+n,this.updateValue(this.newValue)}},onTouchEnd:function(){this.disabled||this.updateValue(this.newValue,!0)},onClick:function(t){if(t.stopPropagation(),!this.disabled){var e=this.$el.getBoundingClientRect(),n=(this.vertical?t.clientY-e.top:t.clientX-e.left)/(this.vertical?e.height:e.width)*100;this.updateValue(n,!0)}},updateValue:function(t,e){t=this.format(t),this.$emit("input",t),e&&this.$emit("change",t)},format:function(t){return Math.round(Math.max(this.min,Math.min(t,this.max))/this.step)*this.step}},render:function(t){var e,n=this.vertical,i={background:this.inactiveColor},r=n?"width":"height",o=((e={})[n?"height":"width"]=this.format(this.value)+"%",e[r]=this.barHeight,e.background=this.activeColor,e);return t("div",{style:i,class:Zs({disabled:this.disabled,vertical:n}),on:{click:this.onClick}},[t("div",{class:Zs("bar"),style:o},[t("div",{class:Zs("button-wrapper"),on:{touchstart:this.onTouchStart,touchmove:this.onTouchMove,touchend:this.onTouchEnd,touchcancel:this.onTouchEnd}},[this.slots("button")||t("div",{class:Zs("button")})])])])}}),ta=Object(s.k)("step"),ea=ta[0],na=ta[1],ia=ea({beforeCreate:function(){var t=this.$parent.steps,e=this.$parent.slots().indexOf(this.$vnode);t.splice(-1===e?t.length:e,0,this)},beforeDestroy:function(){var t=this.$parent.steps.indexOf(this);t>-1&&this.$parent.steps.splice(t,1)},computed:{status:function(){var t=this.$parent.steps.indexOf(this),e=this.$parent.active;return ti*r&&i>0?this.open("right"):"left"===t&&e>n*r&&n>0?this.open("left"):this.swipeMove(0)},startDrag:function(t){this.disabled||(this.dragging=!0,this.startOffset=this.offset,this.touchStart(t))},onDrag:function(t){this.disabled||(this.touchMove(t),"horizontal"===this.direction&&(x(t),this.swipeMove(this.deltaX+this.startOffset)))},endDrag:function(){this.disabled||(this.dragging=!1,this.swiping&&this.swipeLeaveTransition(this.offset>0?"left":"right"))},onClick:function(t){void 0===t&&(t="outside"),this.$emit("click",t),this.offset&&(this.onClose?this.onClose(t,this):this.swipeMove(0))}},render:function(t){var e=this,n=function(t,n){return function(i){n&&i.stopPropagation(),e.onClick(t)}},i={transform:"translate3d("+this.offset+"px, 0, 0)",transition:this.dragging?"none":".6s cubic-bezier(0.18, 0.89, 0.32, 1)"};return t("div",{class:ga(),on:{click:n("cell"),touchstart:this.startDrag,touchmove:this.onDrag,touchend:this.endDrag,touchcancel:this.endDrag}},[t("div",{class:ga("wrapper"),style:i,on:{transitionend:function(){e.swiping=!1}}},[this.leftWidth?t("div",{class:ga("left"),on:{click:n("left",!0)}},[this.slots("left")]):null,this.slots(),this.rightWidth?t("div",{class:ga("right"),on:{click:n("right",!0)}},[this.slots("right")]):null])])}}),ba=Object(s.k)("tabbar"),ka=ba[0],xa=ba[1],Sa=ka({data:function(){return{items:[]}},props:{value:Number,activeColor:String,safeAreaInsetBottom:Boolean,fixed:{type:Boolean,default:!0},zIndex:{type:Number,default:1}},watch:{items:function(){this.setActiveItem()},value:function(){this.setActiveItem()}},methods:{setActiveItem:function(){var t=this;this.items.forEach(function(e,n){e.active=n===t.value})},onChange:function(t){t!==this.value&&(this.$emit("input",t),this.$emit("change",t))}},render:function(t){return t("div",{style:{zIndex:this.zIndex},class:["van-hairline--top-bottom",xa({fixed:this.fixed,"safe-area-inset-bottom":this.safeAreaInsetBottom})]},[this.slots()])}}),wa=Object(s.k)("tabbar-item"),Ca=wa[0],$a=wa[1],_a=Ca({props:i({},_t,{icon:String,dot:Boolean,info:[String,Number]}),data:function(){return{active:!1}},beforeCreate:function(){this.$parent.items.push(this)},destroyed:function(){this.$parent.items.splice(this.$parent.items.indexOf(this),1)},methods:{onClick:function(t){this.$parent.onChange(this.$parent.items.indexOf(this)),this.$emit("click",t),Ct(this.$router,this)}},render:function(t){var e=this.icon,n=this.slots,i=this.active,r=i?{color:this.$parent.activeColor}:null;return t("div",{class:$a({active:i}),style:r,on:{click:this.onClick}},[t("div",{class:$a("icon",{dot:this.dot})},[n("icon",{active:i})||e&&t(W,{attrs:{name:e}}),t(V,{attrs:{info:this.info}})]),t("div",{class:$a("text")},[n("default",{active:i})])])}}),Oa=Object(s.k)("tree-select"),Ta=Oa[0],Aa=Oa[1];function ja(t,e,n,i){var r=e.height,s=e.items,a=e.mainActiveIndex,c=e.activeId,u=(s[a]||{}).children||[];return t("div",o()([{class:Aa(),style:{height:r+"px"}},l(i)]),[t("div",{class:Aa("nav")},[s.map(function(e,n){return t("div",{key:n,class:["van-ellipsis",Aa("nitem",{active:a===n,disabled:e.disabled})],on:{click:function(){e.disabled||d(i,"navclick",n)}}},[e.text])})]),t("div",{class:Aa("content")},[u.map(function(e){return t("div",{key:e.id,class:["van-ellipsis",Aa("item",{active:c===e.id,disabled:e.disabled})],on:{click:function(){e.disabled||d(i,"itemclick",e)}}},[e.text,c===e.id&&t(W,{attrs:{name:"checked",size:"16px"},class:Aa("selected")})])})])])}ja.props={items:Array,mainActiveIndex:Number,activeId:{type:[Number,String],default:0},height:{type:Number,default:300}};var Ia=Ta(ja),Ba="@@Waterfall",Ea=300;function Na(){var t=this;if(!this.el[Ba].binded){this.el[Ba].binded=!0,this.scrollEventListener=function(){var t=this.el,e=this.scrollEventTarget;if(!this.disabled){var n=E(e),i=L(e),r=n+i;if(i){(t===e?e.scrollHeight-r0)&&this.cb.upper&&this.cb.upper({target:e,top:n})}}}.bind(this),this.scrollEventTarget=B(this.el);var e=this.el.getAttribute("waterfall-disabled"),n=!1;e&&(this.vm.$watch(e,function(e){t.disabled=e,t.scrollEventListener()}),n=Boolean(this.vm[e])),this.disabled=n;var i=this.el.getAttribute("waterfall-offset");this.offset=Number(i)||Ea,y(this.scrollEventTarget,"scroll",this.scrollEventListener,!0),this.scrollEventListener()}}function La(t){t[Ba].vm.$nextTick(function(){Na.call(t[Ba])})}var Da=function(t){return{bind:function(e,n,i){e[Ba]||(e[Ba]={el:e,vm:i.context,cb:{}}),e[Ba].cb[t]=n.value,function(t){var e=t[Ba];e.vm._isMounted?La(t):e.vm.$on("hook:mounted",function(){La(t)})}(e)},update:function(t){var e=t[Ba];e.scrollEventListener&&e.scrollEventListener()},unbind:function(t){var e=t[Ba];e.scrollEventTarget&&b(e.scrollEventTarget,"scroll",e.scrollEventListener)}}};Da.install=function(t){t.directive("WaterfallLower",Da("lower")),t.directive("WaterfallUpper",Da("upper"))};var Fa=Da;n.d(e,!1,function(){return ot}),n.d(e,!1,function(){return je}),n.d(e,!1,function(){return Xe}),n.d(e,!1,function(){return St}),n.d(e,!1,function(){return Ge}),n.d(e,!1,function(){return rn}),n.d(e,"a",function(){return te}),n.d(e,!1,function(){return yn}),n.d(e,!1,function(){return It}),n.d(e,!1,function(){return wn}),n.d(e,!1,function(){return $n}),n.d(e,!1,function(){return An}),n.d(e,!1,function(){return Dn}),n.d(e,!1,function(){return Pn}),n.d(e,!1,function(){return Wn}),n.d(e,!1,function(){return Xn}),n.d(e,!1,function(){return ei}),n.d(e,!1,function(){return ai}),n.d(e,!1,function(){return fi}),n.d(e,!1,function(){return ki}),n.d(e,!1,function(){return _i}),n.d(e,!1,function(){return Pi}),n.d(e,!1,function(){return Xi}),n.d(e,!1,function(){return ae}),n.d(e,!1,function(){return Dt}),n.d(e,!1,function(){return tr}),n.d(e,!1,function(){return or}),n.d(e,!1,function(){return lr}),n.d(e,"b",function(){return W}),n.d(e,!1,function(){return Or}),n.d(e,!1,function(){return V}),n.d(e,!1,function(){return Ar}),n.d(e,!1,function(){return Nr}),n.d(e,!1,function(){return Q}),n.d(e,!1,function(){return Lr.a}),n.d(e,!1,function(){return Pr}),n.d(e,!1,function(){return Wr}),n.d(e,!1,function(){return to}),n.d(e,!1,function(){return ho}),n.d(e,!1,function(){return O}),n.d(e,!1,function(){return yo}),n.d(e,!1,function(){return wo}),n.d(e,!1,function(){return To}),n.d(e,!1,function(){return yt}),n.d(e,!1,function(){return tt}),n.d(e,!1,function(){return Bo}),n.d(e,!1,function(){return Mo}),n.d(e,!1,function(){return Me}),n.d(e,!1,function(){return Ne}),n.d(e,!1,function(){return Ho}),n.d(e,!1,function(){return Uo}),n.d(e,!1,function(){return Go}),n.d(e,!1,function(){return Xs}),n.d(e,!1,function(){return Gs}),n.d(e,!1,function(){return ia}),n.d(e,!1,function(){return Ss}),n.d(e,!1,function(){return aa}),n.d(e,!1,function(){return pa}),n.d(e,"c",function(){return pr}),n.d(e,!1,function(){return ya}),n.d(e,"d",function(){return yr}),n.d(e,!1,function(){return be}),n.d(e,!1,function(){return Ce}),n.d(e,!1,function(){return ji}),n.d(e,!1,function(){return Sa}),n.d(e,!1,function(){return _a}),n.d(e,!1,function(){return Li}),n.d(e,!1,function(){return fn}),n.d(e,!1,function(){return Kt}),n.d(e,!1,function(){return Ia}),n.d(e,!1,function(){return Is}),n.d(e,!1,function(){return Fa});var Ma=[ot,je,Xe,St,Ge,rn,te,yn,It,wn,$n,An,Dn,Pn,Wn,Xn,ei,ai,fi,ki,_i,Pi,Xi,ae,Dt,tr,or,lr,W,Or,V,Nr,Q,Pr,Wr,to,ho,O,yo,wo,To,yt,tt,Bo,Mo,Me,Ne,Ho,Uo,Go,Xs,Gs,ia,Ss,aa,pa,pr,ya,yr,be,Ce,ji,Sa,_a,Li,fn,Kt,Ia,Is],za=function(t){Ma.forEach(function(e){t.use(e)})};"undefined"!=typeof window&&window.Vue&&za(window.Vue)},"9AUj":function(t,e){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(t){"object"==typeof window&&(n=window)}t.exports=n},C7Lr:function(t,e){t.exports=function(t,e,n,i,r,o){var s,a=t=t||{},c=typeof t.default;"object"!==c&&"function"!==c||(s=t,a=t.default);var u,l="function"==typeof a?a.options:a;if(e&&(l.render=e.render,l.staticRenderFns=e.staticRenderFns,l._compiled=!0),n&&(l.functional=!0),r&&(l._scopeId=r),o?(u=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),i&&i.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},l._ssrRegister=u):i&&(u=i),u){var d=l.functional,h=d?l.render:l.beforeCreate;d?(l._injectStyles=u,l.render=function(t,e){return u.call(e),h(t,e)}):l.beforeCreate=h?[].concat(h,u):[u]}return{esModule:s,exports:a,options:l}}},D0oh:function(t,e){!function(t,e){var n,i=t.document,r=i.documentElement,o=i.querySelector('meta[name="viewport"]'),s=i.querySelector('meta[name="flexible"]'),a=0,c=0,u=e.flexible||(e.flexible={});if(o){console.warn("将根据已有的meta标签来设置缩放比例");var l=o.getAttribute("content").match(/initial\-scale=([\d\.]+)/);l&&(c=parseFloat(l[1]),a=parseInt(1/c))}else if(s){var d=s.getAttribute("content");if(d){var h=d.match(/initial\-dpr=([\d\.]+)/),f=d.match(/maximum\-dpr=([\d\.]+)/);h&&(a=parseFloat(h[1]),c=parseFloat((1/a).toFixed(2))),f&&(a=parseFloat(f[1]),c=parseFloat((1/a).toFixed(2)))}}if(!a&&!c){t.navigator.appVersion.match(/android/gi);var p=t.navigator.appVersion.match(/iphone/gi),v=t.devicePixelRatio;c=1/(a=p?v>=3&&(!a||a>=3)?3:v>=2&&(!a||a>=2)?2:1:1)}if(r.setAttribute("data-dpr",a),!o)if((o=i.createElement("meta")).setAttribute("name","viewport"),o.setAttribute("content","initial-scale="+c+", maximum-scale="+c+", minimum-scale="+c+", user-scalable=no"),r.firstElementChild)r.firstElementChild.appendChild(o);else{var m=i.createElement("div");m.appendChild(o),i.write(m.innerHTML)}function g(){var e=r.getBoundingClientRect().width;e/a>540&&(e=540*a);var n=e/10;r.style.fontSize=n+"px",u.rem=t.rem=n}t.addEventListener("resize",function(){clearTimeout(n),n=setTimeout(g,300)},!1),t.addEventListener("pageshow",function(t){t.persisted&&(clearTimeout(n),n=setTimeout(g,300))},!1),"complete"===i.readyState?i.body.style.fontSize=12*a+"px":i.addEventListener("DOMContentLoaded",function(t){i.body.style.fontSize=12*a+"px"},!1),g(),u.dpr=t.dpr=a,u.refreshRem=g,u.rem2px=function(t){var e=parseFloat(t)*this.rem;return"string"==typeof t&&t.match(/rem$/)&&(e+="px"),e},u.px2rem=function(t){var e=parseFloat(t)/this.rem;return"string"==typeof t&&t.match(/px$/)&&(e+="rem"),e}}(window,window.lib||(window.lib={}))},TExJ:function(t,e,n){"use strict";e.a=o;var i=n("tm21"),r=Object.prototype.hasOwnProperty;function o(t,e){return Object.keys(e).forEach(function(n){!function(t,e,n){var s=e[n];Object(i.d)(s)&&(r.call(t,n)&&Object(i.g)(s)?t[n]=o(Object(t[n]),e[n]):t[n]=s)}(t,e,n)}),t}},VsCf:function(t,e,n){"use strict";(function(t){e.b=function(t){return s.call(o,t)},e.a=function(t){a.call(o,t)};var i=n("tm21"),r=Date.now();var o=i.h?t:window,s=o.requestAnimationFrame||function(t){var e=Date.now(),n=Math.max(0,16-(e-r)),i=setTimeout(t,n);return r=e+n,i},a=o.cancelAnimationFrame||o.clearTimeout}).call(e,n("9AUj"))},j6cy:function(t,e,n){"use strict";function i(){return(i=Object.assign||function(t){for(var e,n=1;n=0&&Math.floor(e)===e&&isFinite(t)}function h(t){return r(t)&&"function"==typeof t.then&&"function"==typeof t.catch}function f(t){return null==t?"":Array.isArray(t)||u(t)&&t.toString===c?JSON.stringify(t,null,2):String(t)}function p(t){var e=parseFloat(t);return isNaN(e)?t:e}function v(t,e){for(var n=Object.create(null),i=t.split(","),r=0;r-1)return t.splice(n,1)}}var b=Object.prototype.hasOwnProperty;function k(t,e){return b.call(t,e)}function x(t){var e=Object.create(null);return function(n){return e[n]||(e[n]=t(n))}}var S=/-(\w)/g,w=x(function(t){return t.replace(S,function(t,e){return e?e.toUpperCase():""})}),C=x(function(t){return t.charAt(0).toUpperCase()+t.slice(1)}),$=/\B([A-Z])/g,_=x(function(t){return t.replace($,"-$1").toLowerCase()});var O=Function.prototype.bind?function(t,e){return t.bind(e)}:function(t,e){function n(n){var i=arguments.length;return i?i>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n};function T(t,e){e=e||0;for(var n=t.length-e,i=new Array(n);n--;)i[n]=t[n+e];return i}function A(t,e){for(var n in e)t[n]=e[n];return t}function j(t){for(var e={},n=0;n0,G=Q&&Q.indexOf("edge/")>0,tt=(Q&&Q.indexOf("android"),Q&&/iphone|ipad|ipod|ios/.test(Q)||"ios"===X),et=(Q&&/chrome\/\d+/.test(Q),Q&&/phantomjs/.test(Q),Q&&Q.match(/firefox\/(\d+)/)),nt={}.watch,it=!1;if(U)try{var rt={};Object.defineProperty(rt,"passive",{get:function(){it=!0}}),window.addEventListener("test-passive",null,rt)}catch(t){}var ot=function(){return void 0===q&&(q=!U&&!K&&void 0!==t&&(t.process&&"server"===t.process.env.VUE_ENV)),q},st=U&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function at(t){return"function"==typeof t&&/native code/.test(t.toString())}var ct,ut="undefined"!=typeof Symbol&&at(Symbol)&&"undefined"!=typeof Reflect&&at(Reflect.ownKeys);ct="undefined"!=typeof Set&&at(Set)?Set:function(){function t(){this.set=Object.create(null)}return t.prototype.has=function(t){return!0===this.set[t]},t.prototype.add=function(t){this.set[t]=!0},t.prototype.clear=function(){this.set=Object.create(null)},t}();var lt=I,dt=0,ht=function(){this.id=dt++,this.subs=[]};ht.prototype.addSub=function(t){this.subs.push(t)},ht.prototype.removeSub=function(t){y(this.subs,t)},ht.prototype.depend=function(){ht.target&&ht.target.addDep(this)},ht.prototype.notify=function(){var t=this.subs.slice();for(var e=0,n=t.length;e-1)if(o&&!k(r,"default"))s=!1;else if(""===s||s===_(t)){var c=Rt(String,r.type);(c<0||a0&&(de((u=t(u,(n||"")+"_"+c))[0])&&de(d)&&(a[l]=bt(d.text+u[0].text),u.shift()),a.push.apply(a,u)):s(u)?de(d)?a[l]=bt(d.text+u):""!==u&&a.push(bt(u)):de(u)&&de(d)?a[l]=bt(d.text+u.text):(o(e._isVList)&&r(u.tag)&&i(u.key)&&r(n)&&(u.key="__vlist"+n+"_"+c+"__"),a.push(u)));return a}(t):void 0}function de(t){return r(t)&&r(t.text)&&!1===t.isComment}function he(t,e){if(t){for(var n=Object.create(null),i=ut?Reflect.ownKeys(t):Object.keys(t),r=0;r0,s=t?!!t.$stable:!o,a=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(s&&i&&i!==n&&a===i.$key&&!o&&!i.$hasNormal)return i;for(var c in r={},t)t[c]&&"$"!==c[0]&&(r[c]=me(e,c,t[c]))}else r={};for(var u in e)u in r||(r[u]=ge(e,u));return t&&Object.isExtensible(t)&&(t._normalized=r),H(r,"$stable",s),H(r,"$key",a),H(r,"$hasNormal",o),r}function me(t,e,n){var i=function(){var t=arguments.length?n.apply(null,arguments):n({});return(t=t&&"object"==typeof t&&!Array.isArray(t)?[t]:le(t))&&(0===t.length||1===t.length&&t[0].isComment)?void 0:t};return n.proxy&&Object.defineProperty(t,e,{get:i,enumerable:!0,configurable:!0}),i}function ge(t,e){return function(){return t[e]}}function ye(t,e){var n,i,o,s,c;if(Array.isArray(t)||"string"==typeof t)for(n=new Array(t.length),i=0,o=t.length;idocument.createEvent("Event").timeStamp&&(dn=function(){return hn.now()})}function fn(){var t,e;for(ln=dn(),cn=!0,rn.sort(function(t,e){return t.id-e.id}),un=0;unun&&rn[n].id>t.id;)n--;rn.splice(n+1,0,t)}else rn.push(t);an||(an=!0,ne(fn))}}(this)},vn.prototype.run=function(){if(this.active){var t=this.get();if(t!==this.value||a(t)||this.deep){var e=this.value;if(this.value=t,this.user)try{this.cb.call(this.vm,t,e)}catch(t){Ht(t,this.vm,'callback for watcher "'+this.expression+'"')}else this.cb.call(this.vm,t,e)}}},vn.prototype.evaluate=function(){this.value=this.get(),this.dirty=!1},vn.prototype.depend=function(){for(var t=this.deps.length;t--;)this.deps[t].depend()},vn.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||y(this.vm._watchers,this);for(var t=this.deps.length;t--;)this.deps[t].removeSub(this);this.active=!1}};var mn={enumerable:!0,configurable:!0,get:I,set:I};function gn(t,e,n){mn.get=function(){return this[e][n]},mn.set=function(t){this[e][n]=t},Object.defineProperty(t,n,mn)}function yn(t){t._watchers=[];var e=t.$options;e.props&&function(t,e){var n=t.$options.propsData||{},i=t._props={},r=t.$options._propKeys=[],o=!t.$parent;o||$t(!1);var s=function(o){r.push(o);var s=zt(o,e,n,t);Tt(i,o,s),o in t||gn(t,"_props",o)};for(var a in e)s(a);$t(!0)}(t,e.props),e.methods&&function(t,e){t.$options.props;for(var n in e)t[n]="function"!=typeof e[n]?I:O(e[n],t)}(t,e.methods),e.data?function(t){var e=t.$options.data;u(e=t._data="function"==typeof e?function(t,e){pt();try{return t.call(e,e)}catch(t){return Ht(t,e,"data()"),{}}finally{vt()}}(e,t):e||{})||(e={});var n=Object.keys(e),i=t.$options.props,r=(t.$options.methods,n.length);for(;r--;){var o=n[r];0,i&&k(i,o)||R(o)||gn(t,"_data",o)}Ot(e,!0)}(t):Ot(t._data={},!0),e.computed&&function(t,e){var n=t._computedWatchers=Object.create(null),i=ot();for(var r in e){var o=e[r],s="function"==typeof o?o:o.get;0,i||(n[r]=new vn(t,s||I,I,bn)),r in t||kn(t,r,o)}}(t,e.computed),e.watch&&e.watch!==nt&&function(t,e){for(var n in e){var i=e[n];if(Array.isArray(i))for(var r=0;r-1:"string"==typeof t?t.split(",").indexOf(e)>-1:!!l(t)&&t.test(e)}function jn(t,e){var n=t.cache,i=t.keys,r=t._vnode;for(var o in n){var s=n[o];if(s){var a=Tn(s.componentOptions);a&&!e(a)&&In(n,o,i,r)}}}function In(t,e,n,i){var r=t[e];!r||i&&r.tag===i.tag||r.componentInstance.$destroy(),t[e]=null,y(n,e)}!function(t){t.prototype._init=function(t){var e=this;e._uid=Cn++,e._isVue=!0,t&&t._isComponent?function(t,e){var n=t.$options=Object.create(t.constructor.options),i=e._parentVnode;n.parent=e.parent,n._parentVnode=i;var r=i.componentOptions;n.propsData=r.propsData,n._parentListeners=r.listeners,n._renderChildren=r.children,n._componentTag=r.tag,e.render&&(n.render=e.render,n.staticRenderFns=e.staticRenderFns)}(e,t):e.$options=Ft($n(e.constructor),t||{},e),e._renderProxy=e,e._self=e,function(t){var e=t.$options,n=e.parent;if(n&&!e.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(t)}t.$parent=n,t.$root=n?n.$root:t,t.$children=[],t.$refs={},t._watcher=null,t._inactive=null,t._directInactive=!1,t._isMounted=!1,t._isDestroyed=!1,t._isBeingDestroyed=!1}(e),function(t){t._events=Object.create(null),t._hasHookEvent=!1;var e=t.$options._parentListeners;e&&Je(t,e)}(e),function(t){t._vnode=null,t._staticTrees=null;var e=t.$options,i=t.$vnode=e._parentVnode,r=i&&i.context;t.$slots=fe(e._renderChildren,r),t.$scopedSlots=n,t._c=function(e,n,i,r){return Re(t,e,n,i,r,!1)},t.$createElement=function(e,n,i,r){return Re(t,e,n,i,r,!0)};var o=i&&i.data;Tt(t,"$attrs",o&&o.attrs||n,null,!0),Tt(t,"$listeners",e._parentListeners||n,null,!0)}(e),nn(e,"beforeCreate"),function(t){var e=he(t.$options.inject,t);e&&($t(!1),Object.keys(e).forEach(function(n){Tt(t,n,e[n])}),$t(!0))}(e),yn(e),function(t){var e=t.$options.provide;e&&(t._provided="function"==typeof e?e.call(t):e)}(e),nn(e,"created"),e.$options.el&&e.$mount(e.$options.el)}}(_n),function(t){var e={get:function(){return this._data}},n={get:function(){return this._props}};Object.defineProperty(t.prototype,"$data",e),Object.defineProperty(t.prototype,"$props",n),t.prototype.$set=At,t.prototype.$delete=jt,t.prototype.$watch=function(t,e,n){if(u(e))return wn(this,t,e,n);(n=n||{}).user=!0;var i=new vn(this,t,e,n);if(n.immediate)try{e.call(this,i.value)}catch(t){Ht(t,this,'callback for immediate watcher "'+i.expression+'"')}return function(){i.teardown()}}}(_n),function(t){var e=/^hook:/;t.prototype.$on=function(t,n){var i=this;if(Array.isArray(t))for(var r=0,o=t.length;r1?T(n):n;for(var i=T(arguments,1),r='event handler for "'+t+'"',o=0,s=n.length;oparseInt(this.max)&&In(s,a[0],a,this._vnode)),e.data.keepAlive=!0}return e||t&&t[0]}}};!function(t){var e={get:function(){return P}};Object.defineProperty(t,"config",e),t.util={warn:lt,extend:A,mergeOptions:Ft,defineReactive:Tt},t.set=At,t.delete=jt,t.nextTick=ne,t.observable=function(t){return Ot(t),t},t.options=Object.create(null),M.forEach(function(e){t.options[e+"s"]=Object.create(null)}),t.options._base=t,A(t.options.components,En),function(t){t.use=function(t){var e=this._installedPlugins||(this._installedPlugins=[]);if(e.indexOf(t)>-1)return this;var n=T(arguments,1);return n.unshift(this),"function"==typeof t.install?t.install.apply(t,n):"function"==typeof t&&t.apply(null,n),e.push(t),this}}(t),function(t){t.mixin=function(t){return this.options=Ft(this.options,t),this}}(t),On(t),function(t){M.forEach(function(e){t[e]=function(t,n){return n?("component"===e&&u(n)&&(n.name=n.name||t,n=this.options._base.extend(n)),"directive"===e&&"function"==typeof n&&(n={bind:n,update:n}),this.options[e+"s"][t]=n,n):this.options[e+"s"][t]}})}(t)}(_n),Object.defineProperty(_n.prototype,"$isServer",{get:ot}),Object.defineProperty(_n.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(_n,"FunctionalRenderContext",{value:Ee}),_n.version="2.6.11";var Nn=v("style,class"),Ln=v("input,textarea,option,select,progress"),Dn=function(t,e,n){return"value"===n&&Ln(t)&&"button"!==e||"selected"===n&&"option"===t||"checked"===n&&"input"===t||"muted"===n&&"video"===t},Fn=v("contenteditable,draggable,spellcheck"),Mn=v("events,caret,typing,plaintext-only"),zn=function(t,e){return Wn(e)||"false"===e?"false":"contenteditable"===t&&Mn(e)?e:"true"},Pn=v("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,translate,truespeed,typemustmatch,visible"),Vn="http://www.w3.org/1999/xlink",Rn=function(t){return":"===t.charAt(5)&&"xlink"===t.slice(0,5)},Hn=function(t){return Rn(t)?t.slice(6,t.length):""},Wn=function(t){return null==t||!1===t};function qn(t){for(var e=t.data,n=t,i=t;r(i.componentInstance);)(i=i.componentInstance._vnode)&&i.data&&(e=Yn(i.data,e));for(;r(n=n.parent);)n&&n.data&&(e=Yn(e,n.data));return function(t,e){if(r(t)||r(e))return Un(t,Kn(e));return""}(e.staticClass,e.class)}function Yn(t,e){return{staticClass:Un(t.staticClass,e.staticClass),class:r(t.class)?[t.class,e.class]:e.class}}function Un(t,e){return t?e?t+" "+e:t:e||""}function Kn(t){return Array.isArray(t)?function(t){for(var e,n="",i=0,o=t.length;i-1?bi(t,e,n):Pn(e)?Wn(n)?t.removeAttribute(e):(n="allowfullscreen"===e&&"EMBED"===t.tagName?"true":e,t.setAttribute(e,n)):Fn(e)?t.setAttribute(e,zn(e,n)):Rn(e)?Wn(n)?t.removeAttributeNS(Vn,Hn(e)):t.setAttributeNS(Vn,e,n):bi(t,e,n)}function bi(t,e,n){if(Wn(n))t.removeAttribute(e);else{if(J&&!Z&&"TEXTAREA"===t.tagName&&"placeholder"===e&&""!==n&&!t.__ieph){var i=function(e){e.stopImmediatePropagation(),t.removeEventListener("input",i)};t.addEventListener("input",i),t.__ieph=!0}t.setAttribute(e,n)}}var ki={create:gi,update:gi};function xi(t,e){var n=e.elm,o=e.data,s=t.data;if(!(i(o.staticClass)&&i(o.class)&&(i(s)||i(s.staticClass)&&i(s.class)))){var a=qn(e),c=n._transitionClasses;r(c)&&(a=Un(a,Kn(c))),a!==n._prevClass&&(n.setAttribute("class",a),n._prevClass=a)}}var Si,wi,Ci,$i,_i,Oi,Ti={create:xi,update:xi},Ai=/[\w).+\-_$\]]/;function ji(t){var e,n,i,r,o,s=!1,a=!1,c=!1,u=!1,l=0,d=0,h=0,f=0;for(i=0;i=0&&" "===(v=t.charAt(p));p--);v&&Ai.test(v)||(u=!0)}}else void 0===r?(f=i+1,r=t.slice(0,i).trim()):m();function m(){(o||(o=[])).push(t.slice(f,i).trim()),f=i+1}if(void 0===r?r=t.slice(0,i).trim():0!==f&&m(),o)for(i=0;i-1?{exp:t.slice(0,$i),key:'"'+t.slice($i+1)+'"'}:{exp:t,key:null};wi=t,$i=_i=Oi=0;for(;!Ki();)Xi(Ci=Ui())?Ji(Ci):91===Ci&&Qi(Ci);return{exp:t.slice(0,_i),key:t.slice(_i+1,Oi)}}(t);return null===n.key?t+"="+e:"$set("+n.exp+", "+n.key+", "+e+")"}function Ui(){return wi.charCodeAt(++$i)}function Ki(){return $i>=Si}function Xi(t){return 34===t||39===t}function Qi(t){var e=1;for(_i=$i;!Ki();)if(Xi(t=Ui()))Ji(t);else if(91===t&&e++,93===t&&e--,0===e){Oi=$i;break}}function Ji(t){for(var e=t;!Ki()&&(t=Ui())!==e;);}var Zi,Gi="__r",tr="__c";function er(t,e,n){var i=Zi;return function r(){null!==e.apply(null,arguments)&&rr(t,r,n,i)}}var nr=Kt&&!(et&&Number(et[1])<=53);function ir(t,e,n,i){if(nr){var r=ln,o=e;e=o._wrapper=function(t){if(t.target===t.currentTarget||t.timeStamp>=r||t.timeStamp<=0||t.target.ownerDocument!==document)return o.apply(this,arguments)}}Zi.addEventListener(t,e,it?{capture:n,passive:i}:n)}function rr(t,e,n,i){(i||Zi).removeEventListener(t,e._wrapper||e,n)}function or(t,e){if(!i(t.data.on)||!i(e.data.on)){var n=e.data.on||{},o=t.data.on||{};Zi=e.elm,function(t){if(r(t[Gi])){var e=J?"change":"input";t[e]=[].concat(t[Gi],t[e]||[]),delete t[Gi]}r(t[tr])&&(t.change=[].concat(t[tr],t.change||[]),delete t[tr])}(n),ae(n,o,ir,rr,er,e.context),Zi=void 0}}var sr,ar={create:or,update:or};function cr(t,e){if(!i(t.data.domProps)||!i(e.data.domProps)){var n,o,s=e.elm,a=t.data.domProps||{},c=e.data.domProps||{};for(n in r(c.__ob__)&&(c=e.data.domProps=A({},c)),a)n in c||(s[n]="");for(n in c){if(o=c[n],"textContent"===n||"innerHTML"===n){if(e.children&&(e.children.length=0),o===a[n])continue;1===s.childNodes.length&&s.removeChild(s.childNodes[0])}if("value"===n&&"PROGRESS"!==s.tagName){s._value=o;var u=i(o)?"":String(o);ur(s,u)&&(s.value=u)}else if("innerHTML"===n&&Jn(s.tagName)&&i(s.innerHTML)){(sr=sr||document.createElement("div")).innerHTML=""+o+"";for(var l=sr.firstChild;s.firstChild;)s.removeChild(s.firstChild);for(;l.firstChild;)s.appendChild(l.firstChild)}else if(o!==a[n])try{s[n]=o}catch(t){}}}}function ur(t,e){return!t.composing&&("OPTION"===t.tagName||function(t,e){var n=!0;try{n=document.activeElement!==t}catch(t){}return n&&t.value!==e}(t,e)||function(t,e){var n=t.value,i=t._vModifiers;if(r(i)){if(i.number)return p(n)!==p(e);if(i.trim)return n.trim()!==e.trim()}return n!==e}(t,e))}var lr={create:cr,update:cr},dr=x(function(t){var e={},n=/:(.+)/;return t.split(/;(?![^(]*\))/g).forEach(function(t){if(t){var i=t.split(n);i.length>1&&(e[i[0].trim()]=i[1].trim())}}),e});function hr(t){var e=fr(t.style);return t.staticStyle?A(t.staticStyle,e):e}function fr(t){return Array.isArray(t)?j(t):"string"==typeof t?dr(t):t}var pr,vr=/^--/,mr=/\s*!important$/,gr=function(t,e,n){if(vr.test(e))t.style.setProperty(e,n);else if(mr.test(n))t.style.setProperty(_(e),n.replace(mr,""),"important");else{var i=br(e);if(Array.isArray(n))for(var r=0,o=n.length;r-1?e.split(Sr).forEach(function(e){return t.classList.add(e)}):t.classList.add(e);else{var n=" "+(t.getAttribute("class")||"")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function Cr(t,e){if(e&&(e=e.trim()))if(t.classList)e.indexOf(" ")>-1?e.split(Sr).forEach(function(e){return t.classList.remove(e)}):t.classList.remove(e),t.classList.length||t.removeAttribute("class");else{for(var n=" "+(t.getAttribute("class")||"")+" ",i=" "+e+" ";n.indexOf(i)>=0;)n=n.replace(i," ");(n=n.trim())?t.setAttribute("class",n):t.removeAttribute("class")}}function $r(t){if(t){if("object"==typeof t){var e={};return!1!==t.css&&A(e,_r(t.name||"v")),A(e,t),e}return"string"==typeof t?_r(t):void 0}}var _r=x(function(t){return{enterClass:t+"-enter",enterToClass:t+"-enter-to",enterActiveClass:t+"-enter-active",leaveClass:t+"-leave",leaveToClass:t+"-leave-to",leaveActiveClass:t+"-leave-active"}}),Or=U&&!Z,Tr="transition",Ar="animation",jr="transition",Ir="transitionend",Br="animation",Er="animationend";Or&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(jr="WebkitTransition",Ir="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(Br="WebkitAnimation",Er="webkitAnimationEnd"));var Nr=U?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(t){return t()};function Lr(t){Nr(function(){Nr(t)})}function Dr(t,e){var n=t._transitionClasses||(t._transitionClasses=[]);n.indexOf(e)<0&&(n.push(e),wr(t,e))}function Fr(t,e){t._transitionClasses&&y(t._transitionClasses,e),Cr(t,e)}function Mr(t,e,n){var i=Pr(t,e),r=i.type,o=i.timeout,s=i.propCount;if(!r)return n();var a=r===Tr?Ir:Er,c=0,u=function(){t.removeEventListener(a,l),n()},l=function(e){e.target===t&&++c>=s&&u()};setTimeout(function(){c0&&(n=Tr,l=s,d=o.length):e===Ar?u>0&&(n=Ar,l=u,d=c.length):d=(n=(l=Math.max(s,u))>0?s>u?Tr:Ar:null)?n===Tr?o.length:c.length:0,{type:n,timeout:l,propCount:d,hasTransform:n===Tr&&zr.test(i[jr+"Property"])}}function Vr(t,e){for(;t.length1}function Ur(t,e){!0!==e.data.show&&Hr(e)}var Kr=function(t){var e,n,a={},c=t.modules,u=t.nodeOps;for(e=0;ep?b(t,i(n[g+1])?null:n[g+1].elm,n,f,g,o):f>g&&x(e,h,p)}(h,v,g,n,l):r(g)?(r(t.text)&&u.setTextContent(h,""),b(h,null,g,0,g.length-1,n)):r(v)?x(v,0,v.length-1):r(t.text)&&u.setTextContent(h,""):t.text!==e.text&&u.setTextContent(h,e.text),r(p)&&r(f=p.hook)&&r(f=f.postpatch)&&f(t,e)}}}function $(t,e,n){if(o(n)&&r(t.parent))t.parent.data.pendingInsert=e;else for(var i=0;i-1,s.selected!==o&&(s.selected=o);else if(N(Gr(s),i))return void(t.selectedIndex!==a&&(t.selectedIndex=a));r||(t.selectedIndex=-1)}}function Zr(t,e){return e.every(function(e){return!N(e,t)})}function Gr(t){return"_value"in t?t._value:t.value}function to(t){t.target.composing=!0}function eo(t){t.target.composing&&(t.target.composing=!1,no(t.target,"input"))}function no(t,e){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0),t.dispatchEvent(n)}function io(t){return!t.componentInstance||t.data&&t.data.transition?t:io(t.componentInstance._vnode)}var ro={model:Xr,show:{bind:function(t,e,n){var i=e.value,r=(n=io(n)).data&&n.data.transition,o=t.__vOriginalDisplay="none"===t.style.display?"":t.style.display;i&&r?(n.data.show=!0,Hr(n,function(){t.style.display=o})):t.style.display=i?o:"none"},update:function(t,e,n){var i=e.value;!i!=!e.oldValue&&((n=io(n)).data&&n.data.transition?(n.data.show=!0,i?Hr(n,function(){t.style.display=t.__vOriginalDisplay}):Wr(n,function(){t.style.display="none"})):t.style.display=i?t.__vOriginalDisplay:"none")},unbind:function(t,e,n,i,r){r||(t.style.display=t.__vOriginalDisplay)}}},oo={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function so(t){var e=t&&t.componentOptions;return e&&e.Ctor.options.abstract?so(Ue(e.children)):t}function ao(t){var e={},n=t.$options;for(var i in n.propsData)e[i]=t[i];var r=n._parentListeners;for(var o in r)e[w(o)]=r[o];return e}function co(t,e){if(/\d-keep-alive$/.test(e.tag))return t("keep-alive",{props:e.componentOptions.propsData})}var uo=function(t){return t.tag||Ye(t)},lo=function(t){return"show"===t.name},ho={name:"transition",props:oo,abstract:!0,render:function(t){var e=this,n=this.$slots.default;if(n&&(n=n.filter(uo)).length){0;var i=this.mode;0;var r=n[0];if(function(t){for(;t=t.parent;)if(t.data.transition)return!0}(this.$vnode))return r;var o=so(r);if(!o)return r;if(this._leaving)return co(t,r);var a="__transition-"+this._uid+"-";o.key=null==o.key?o.isComment?a+"comment":a+o.tag:s(o.key)?0===String(o.key).indexOf(a)?o.key:a+o.key:o.key;var c=(o.data||(o.data={})).transition=ao(this),u=this._vnode,l=so(u);if(o.data.directives&&o.data.directives.some(lo)&&(o.data.show=!0),l&&l.data&&!function(t,e){return e.key===t.key&&e.tag===t.tag}(o,l)&&!Ye(l)&&(!l.componentInstance||!l.componentInstance._vnode.isComment)){var d=l.data.transition=A({},c);if("out-in"===i)return this._leaving=!0,ce(d,"afterLeave",function(){e._leaving=!1,e.$forceUpdate()}),co(t,r);if("in-out"===i){if(Ye(o))return u;var h,f=function(){h()};ce(c,"afterEnter",f),ce(c,"enterCancelled",f),ce(d,"delayLeave",function(t){h=t})}}return r}}},fo=A({tag:String,moveClass:String},oo);function po(t){t.elm._moveCb&&t.elm._moveCb(),t.elm._enterCb&&t.elm._enterCb()}function vo(t){t.data.newPos=t.elm.getBoundingClientRect()}function mo(t){var e=t.data.pos,n=t.data.newPos,i=e.left-n.left,r=e.top-n.top;if(i||r){t.data.moved=!0;var o=t.elm.style;o.transform=o.WebkitTransform="translate("+i+"px,"+r+"px)",o.transitionDuration="0s"}}delete fo.mode;var go={Transition:ho,TransitionGroup:{props:fo,beforeMount:function(){var t=this,e=this._update;this._update=function(n,i){var r=Ge(t);t.__patch__(t._vnode,t.kept,!1,!0),t._vnode=t.kept,r(),e.call(t,n,i)}},render:function(t){for(var e=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),i=this.prevChildren=this.children,r=this.$slots.default||[],o=this.children=[],s=ao(this),a=0;a-1?ti[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:ti[t]=/HTMLUnknownElement/.test(e.toString())},A(_n.options.directives,ro),A(_n.options.components,go),_n.prototype.__patch__=U?Kr:I,_n.prototype.$mount=function(t,e){return function(t,e,n){return t.$el=e,t.$options.render||(t.$options.render=yt),nn(t,"beforeMount"),new vn(t,function(){t._update(t._render(),n)},I,{before:function(){t._isMounted&&!t._isDestroyed&&nn(t,"beforeUpdate")}},!0),n=!1,null==t.$vnode&&(t._isMounted=!0,nn(t,"mounted")),t}(this,t=t&&U?ni(t):void 0,e)},U&&setTimeout(function(){P.devtools&&st&&st.emit("init",_n)},0);var yo=/\{\{((?:.|\r?\n)+?)\}\}/g,bo=/[-.*+?^${}()|[\]\/\\]/g,ko=x(function(t){var e=t[0].replace(bo,"\\$&"),n=t[1].replace(bo,"\\$&");return new RegExp(e+"((?:.|\\n)+?)"+n,"g")});function xo(t,e){var n=e?ko(e):yo;if(n.test(t)){for(var i,r,o,s=[],a=[],c=n.lastIndex=0;i=n.exec(t);){(r=i.index)>c&&(a.push(o=t.slice(c,r)),s.push(JSON.stringify(o)));var u=ji(i[1].trim());s.push("_s("+u+")"),a.push({"@binding":u}),c=r+i[0].length}return c\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,jo=/^\s*((?:v-[\w-]+:|@|:|#)\[[^=]+\][^\s"'<>\/=]*)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`]+)))?/,Io="[a-zA-Z_][\\-\\.0-9_a-zA-Z"+V.source+"]*",Bo="((?:"+Io+"\\:)?"+Io+")",Eo=new RegExp("^<"+Bo),No=/^\s*(\/?)>/,Lo=new RegExp("^<\\/"+Bo+"[^>]*>"),Do=/^]+>/i,Fo=/^",""":'"',"&":"&"," ":"\n"," ":"\t","'":"'"},Ro=/&(?:lt|gt|quot|amp|#39);/g,Ho=/&(?:lt|gt|quot|amp|#39|#10|#9);/g,Wo=v("pre,textarea",!0),qo=function(t,e){return t&&Wo(t)&&"\n"===e[0]};function Yo(t,e){var n=e?Ho:Ro;return t.replace(n,function(t){return Vo[t]})}var Uo,Ko,Xo,Qo,Jo,Zo,Go,ts,es=/^@|^v-on:/,ns=/^v-|^@|^:|^#/,is=/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/,rs=/,([^,\}\]]*)(?:,([^,\}\]]*))?$/,os=/^\(|\)$/g,ss=/^\[.*\]$/,as=/:(.*)$/,cs=/^:|^\.|^v-bind:/,us=/\.[^.\]]+(?=[^\]]*$)/g,ls=/^v-slot(:|$)|^#/,ds=/[\r\n]/,hs=/\s+/g,fs=x($o),ps="_empty_";function vs(t,e,n){return{type:1,tag:t,attrsList:e,attrsMap:function(t){for(var e={},n=0,i=t.length;n]*>)","i")),h=t.replace(d,function(t,n,i){return u=i.length,zo(l)||"noscript"===l||(n=n.replace(//g,"$1").replace(//g,"$1")),qo(l,n)&&(n=n.slice(1)),e.chars&&e.chars(n),""});c+=t.length-h.length,t=h,_(l,c-u,c)}else{var f=t.indexOf("<");if(0===f){if(Fo.test(t)){var p=t.indexOf("--\x3e");if(p>=0){e.shouldKeepComment&&e.comment(t.substring(4,p),c,c+p+3),w(p+3);continue}}if(Mo.test(t)){var v=t.indexOf("]>");if(v>=0){w(v+2);continue}}var m=t.match(Do);if(m){w(m[0].length);continue}var g=t.match(Lo);if(g){var y=c;w(g[0].length),_(g[1],y,c);continue}var b=C();if(b){$(b),qo(b.tagName,t)&&w(1);continue}}var k=void 0,x=void 0,S=void 0;if(f>=0){for(x=t.slice(f);!(Lo.test(x)||Eo.test(x)||Fo.test(x)||Mo.test(x)||(S=x.indexOf("<",1))<0);)f+=S,x=t.slice(f);k=t.substring(0,f)}f<0&&(k=t),k&&w(k.length),e.chars&&k&&e.chars(k,c-k.length,c)}if(t===n){e.chars&&e.chars(t);break}}function w(e){c+=e,t=t.substring(e)}function C(){var e=t.match(Eo);if(e){var n,i,r={tagName:e[1],attrs:[],start:c};for(w(e[0].length);!(n=t.match(No))&&(i=t.match(jo)||t.match(Ao));)i.start=c,w(i[0].length),i.end=c,r.attrs.push(i);if(n)return r.unarySlash=n[1],w(n[0].length),r.end=c,r}}function $(t){var n=t.tagName,c=t.unarySlash;o&&("p"===i&&To(n)&&_(i),a(n)&&i===n&&_(n));for(var u=s(n)||!!c,l=t.attrs.length,d=new Array(l),h=0;h=0&&r[s].lowerCasedTag!==a;s--);else s=0;if(s>=0){for(var u=r.length-1;u>=s;u--)e.end&&e.end(r[u].tag,n,o);r.length=s,i=s&&r[s-1].tag}else"br"===a?e.start&&e.start(t,[],!0,n,o):"p"===a&&(e.start&&e.start(t,[],!1,n,o),e.end&&e.end(t,n,o))}_()}(t,{warn:Uo,expectHTML:e.expectHTML,isUnaryTag:e.isUnaryTag,canBeLeftOpenTag:e.canBeLeftOpenTag,shouldDecodeNewlines:e.shouldDecodeNewlines,shouldDecodeNewlinesForHref:e.shouldDecodeNewlinesForHref,shouldKeepComment:e.comments,outputSourceRange:e.outputSourceRange,start:function(t,n,s,a,d){var h=r&&r.ns||ts(t);J&&"svg"===h&&(n=function(t){for(var e=[],n=0;n-1"+("true"===o?":("+e+")":":_q("+e+","+o+")")),zi(t,"change","var $$a="+e+",$$el=$event.target,$$c=$$el.checked?("+o+"):("+s+");if(Array.isArray($$a)){var $$v="+(i?"_n("+r+")":r)+",$$i=_i($$a,$$v);if($$el.checked){$$i<0&&("+Yi(e,"$$a.concat([$$v])")+")}else{$$i>-1&&("+Yi(e,"$$a.slice(0,$$i).concat($$a.slice($$i+1))")+")}}else{"+Yi(e,"$$c")+"}",null,!0)}(t,i,r);else if("input"===o&&"radio"===s)!function(t,e,n){var i=n&&n.number,r=Vi(t,"value")||"null";Ni(t,"checked","_q("+e+","+(r=i?"_n("+r+")":r)+")"),zi(t,"change",Yi(e,r),null,!0)}(t,i,r);else if("input"===o||"textarea"===o)!function(t,e,n){var i=t.attrsMap.type,r=n||{},o=r.lazy,s=r.number,a=r.trim,c=!o&&"range"!==i,u=o?"change":"range"===i?Gi:"input",l="$event.target.value";a&&(l="$event.target.value.trim()"),s&&(l="_n("+l+")");var d=Yi(e,l);c&&(d="if($event.target.composing)return;"+d),Ni(t,"value","("+e+")"),zi(t,u,d,null,!0),(a||s)&&zi(t,"blur","$forceUpdate()")}(t,i,r);else if(!P.isReservedTag(o))return qi(t,i,r),!1;return!0},text:function(t,e){e.value&&Ni(t,"textContent","_s("+e.value+")",e)},html:function(t,e){e.value&&Ni(t,"innerHTML","_s("+e.value+")",e)}},isPreTag:function(t){return"pre"===t},isUnaryTag:_o,mustUseProp:Dn,canBeLeftOpenTag:Oo,isReservedTag:Zn,getTagNamespace:Gn,staticKeys:function(t){return t.reduce(function(t,e){return t.concat(e.staticKeys||[])},[]).join(",")}($s)},As=x(function(t){return v("type,tag,attrsList,attrsMap,plain,parent,children,attrs,start,end,rawAttrsMap"+(t?","+t:""))});function js(t,e){t&&(_s=As(e.staticKeys||""),Os=e.isReservedTag||B,function t(e){e.static=function(t){if(2===t.type)return!1;if(3===t.type)return!0;return!(!t.pre&&(t.hasBindings||t.if||t.for||m(t.tag)||!Os(t.tag)||function(t){for(;t.parent;){if("template"!==(t=t.parent).tag)return!1;if(t.for)return!0}return!1}(t)||!Object.keys(t).every(_s)))}(e);if(1===e.type){if(!Os(e.tag)&&"slot"!==e.tag&&null==e.attrsMap["inline-template"])return;for(var n=0,i=e.children.length;n|^function(?:\s+[\w$]+)?\s*\(/,Bs=/\([^)]*?\);*$/,Es=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/,Ns={esc:27,tab:9,enter:13,space:32,up:38,left:37,right:39,down:40,delete:[8,46]},Ls={esc:["Esc","Escape"],tab:"Tab",enter:"Enter",space:[" ","Spacebar"],up:["Up","ArrowUp"],left:["Left","ArrowLeft"],right:["Right","ArrowRight"],down:["Down","ArrowDown"],delete:["Backspace","Delete","Del"]},Ds=function(t){return"if("+t+")return null;"},Fs={stop:"$event.stopPropagation();",prevent:"$event.preventDefault();",self:Ds("$event.target !== $event.currentTarget"),ctrl:Ds("!$event.ctrlKey"),shift:Ds("!$event.shiftKey"),alt:Ds("!$event.altKey"),meta:Ds("!$event.metaKey"),left:Ds("'button' in $event && $event.button !== 0"),middle:Ds("'button' in $event && $event.button !== 1"),right:Ds("'button' in $event && $event.button !== 2")};function Ms(t,e){var n=e?"nativeOn:":"on:",i="",r="";for(var o in t){var s=zs(t[o]);t[o]&&t[o].dynamic?r+=o+","+s+",":i+='"'+o+'":'+s+","}return i="{"+i.slice(0,-1)+"}",r?n+"_d("+i+",["+r.slice(0,-1)+"])":n+i}function zs(t){if(!t)return"function(){}";if(Array.isArray(t))return"["+t.map(function(t){return zs(t)}).join(",")+"]";var e=Es.test(t.value),n=Is.test(t.value),i=Es.test(t.value.replace(Bs,""));if(t.modifiers){var r="",o="",s=[];for(var a in t.modifiers)if(Fs[a])o+=Fs[a],Ns[a]&&s.push(a);else if("exact"===a){var c=t.modifiers;o+=Ds(["ctrl","shift","alt","meta"].filter(function(t){return!c[t]}).map(function(t){return"$event."+t+"Key"}).join("||"))}else s.push(a);return s.length&&(r+=function(t){return"if(!$event.type.indexOf('key')&&"+t.map(Ps).join("&&")+")return null;"}(s)),o&&(r+=o),"function($event){"+r+(e?"return "+t.value+"($event)":n?"return ("+t.value+")($event)":i?"return "+t.value:t.value)+"}"}return e||n?t.value:"function($event){"+(i?"return "+t.value:t.value)+"}"}function Ps(t){var e=parseInt(t,10);if(e)return"$event.keyCode!=="+e;var n=Ns[t],i=Ls[t];return"_k($event.keyCode,"+JSON.stringify(t)+","+JSON.stringify(n)+",$event.key,"+JSON.stringify(i)+")"}var Vs={on:function(t,e){t.wrapListeners=function(t){return"_g("+t+","+e.value+")"}},bind:function(t,e){t.wrapData=function(n){return"_b("+n+",'"+t.tag+"',"+e.value+","+(e.modifiers&&e.modifiers.prop?"true":"false")+(e.modifiers&&e.modifiers.sync?",true":"")+")"}},cloak:I},Rs=function(t){this.options=t,this.warn=t.warn||Bi,this.transforms=Ei(t.modules,"transformCode"),this.dataGenFns=Ei(t.modules,"genData"),this.directives=A(A({},Vs),t.directives);var e=t.isReservedTag||B;this.maybeComponent=function(t){return!!t.component||!e(t.tag)},this.onceId=0,this.staticRenderFns=[],this.pre=!1};function Hs(t,e){var n=new Rs(e);return{render:"with(this){return "+(t?Ws(t,n):'_c("div")')+"}",staticRenderFns:n.staticRenderFns}}function Ws(t,e){if(t.parent&&(t.pre=t.pre||t.parent.pre),t.staticRoot&&!t.staticProcessed)return qs(t,e);if(t.once&&!t.onceProcessed)return Ys(t,e);if(t.for&&!t.forProcessed)return Ks(t,e);if(t.if&&!t.ifProcessed)return Us(t,e);if("template"!==t.tag||t.slotTarget||e.pre){if("slot"===t.tag)return function(t,e){var n=t.slotName||'"default"',i=Zs(t,e),r="_t("+n+(i?","+i:""),o=t.attrs||t.dynamicAttrs?ea((t.attrs||[]).concat(t.dynamicAttrs||[]).map(function(t){return{name:w(t.name),value:t.value,dynamic:t.dynamic}})):null,s=t.attrsMap["v-bind"];!o&&!s||i||(r+=",null");o&&(r+=","+o);s&&(r+=(o?"":",null")+","+s);return r+")"}(t,e);var n;if(t.component)n=function(t,e,n){var i=e.inlineTemplate?null:Zs(e,n,!0);return"_c("+t+","+Xs(e,n)+(i?","+i:"")+")"}(t.component,t,e);else{var i;(!t.plain||t.pre&&e.maybeComponent(t))&&(i=Xs(t,e));var r=t.inlineTemplate?null:Zs(t,e,!0);n="_c('"+t.tag+"'"+(i?","+i:"")+(r?","+r:"")+")"}for(var o=0;o>>0}(s):"")+")"}(t,t.scopedSlots,e)+","),t.model&&(n+="model:{value:"+t.model.value+",callback:"+t.model.callback+",expression:"+t.model.expression+"},"),t.inlineTemplate){var o=function(t,e){var n=t.children[0];0;if(n&&1===n.type){var i=Hs(n,e.options);return"inlineTemplate:{render:function(){"+i.render+"},staticRenderFns:["+i.staticRenderFns.map(function(t){return"function(){"+t+"}"}).join(",")+"]}"}}(t,e);o&&(n+=o+",")}return n=n.replace(/,$/,"")+"}",t.dynamicAttrs&&(n="_b("+n+',"'+t.tag+'",'+ea(t.dynamicAttrs)+")"),t.wrapData&&(n=t.wrapData(n)),t.wrapListeners&&(n=t.wrapListeners(n)),n}function Qs(t){return 1===t.type&&("slot"===t.tag||t.children.some(Qs))}function Js(t,e){var n=t.attrsMap["slot-scope"];if(t.if&&!t.ifProcessed&&!n)return Us(t,e,Js,"null");if(t.for&&!t.forProcessed)return Ks(t,e,Js);var i=t.slotScope===ps?"":String(t.slotScope),r="function("+i+"){return "+("template"===t.tag?t.if&&n?"("+t.if+")?"+(Zs(t,e)||"undefined")+":undefined":Zs(t,e)||"undefined":Ws(t,e))+"}",o=i?"":",proxy:true";return"{key:"+(t.slotTarget||'"default"')+",fn:"+r+o+"}"}function Zs(t,e,n,i,r){var o=t.children;if(o.length){var s=o[0];if(1===o.length&&s.for&&"template"!==s.tag&&"slot"!==s.tag){var a=n?e.maybeComponent(s)?",1":",0":"";return""+(i||Ws)(s,e)+a}var c=n?function(t,e){for(var n=0,i=0;i':'
',sa.innerHTML.indexOf(" ")>0}var la=!!U&&ua(!1),da=!!U&&ua(!0),ha=x(function(t){var e=ni(t);return e&&e.innerHTML}),fa=_n.prototype.$mount;_n.prototype.$mount=function(t,e){if((t=t&&ni(t))===document.body||t===document.documentElement)return this;var n=this.$options;if(!n.render){var i=n.template;if(i)if("string"==typeof i)"#"===i.charAt(0)&&(i=ha(i));else{if(!i.nodeType)return this;i=i.innerHTML}else t&&(i=function(t){if(t.outerHTML)return t.outerHTML;var e=document.createElement("div");return e.appendChild(t.cloneNode(!0)),e.innerHTML}(t));if(i){0;var r=ca(i,{outputSourceRange:!1,shouldDecodeNewlines:la,shouldDecodeNewlinesForHref:da,delimiters:n.delimiters,comments:n.comments},this),o=r.render,s=r.staticRenderFns;n.render=o,n.staticRenderFns=s}}return fa.call(this,t,e)},_n.compile=ca,e.a=_n}).call(e,n("9AUj"))},lJzc:function(t,e,n){var i;i=function(){"use strict";function t(t){t=t||{};var i=arguments.length,r=0;if(1===i)return t;for(;++r-1?t.splice(n,1):void 0}}function o(t,e){if("IMG"===t.tagName&&t.getAttribute("data-srcset")){var n=t.getAttribute("data-srcset"),i=[],r=t.parentNode.offsetWidth*e,o=void 0,s=void 0,a=void 0;(n=n.trim().split(",")).map(function(t){t=t.trim(),-1===(o=t.lastIndexOf(" "))?(s=t,a=999998):(s=t.substr(0,o),a=parseInt(t.substr(o+1,t.length-o-2),10)),i.push([a,s])}),i.sort(function(t,e){if(t[0]e[0])return 1;if(t[0]===e[0]){if(-1!==e[1].indexOf(".webp",e[1].length-5))return 1;if(-1!==t[1].indexOf(".webp",t[1].length-5))return-1}return 0});for(var c="",u=void 0,l=i.length,d=0;d=r){c=u[1];break}return c}}function s(t,e){for(var n=void 0,i=0,r=t.length;i0&&void 0!==arguments[0]?arguments[0]:1;return m&&window.devicePixelRatio||t},x=function(){if(m){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("test",null,e)}catch(t){}return t}}(),S={on:function(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];x?t.addEventListener(e,n,{capture:i,passive:!0}):t.addEventListener(e,n,i)},off:function(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];t.removeEventListener(e,n,i)}},w=function(t,e,n){var i=new Image;i.src=t.src,i.onload=function(){e({naturalHeight:i.naturalHeight,naturalWidth:i.naturalWidth,src:i.src})},i.onerror=function(t){n(t)}},C=function(t,e){return"undefined"!=typeof getComputedStyle?getComputedStyle(t,null).getPropertyValue(e):t.style[e]},$=function(t){return C(t,"overflow")+C(t,"overflow-y")+C(t,"overflow-x")},_={},O=function(){function t(e){var n=e.el,i=e.src,r=e.error,o=e.loading,s=e.bindType,a=e.$parent,c=e.options,l=e.elRenderer;u(this,t),this.el=n,this.src=i,this.error=r,this.loading=o,this.bindType=s,this.attempt=0,this.naturalHeight=0,this.naturalWidth=0,this.options=c,this.rect=null,this.$parent=a,this.elRenderer=l,this.performanceData={init:Date.now(),loadStart:0,loadEnd:0},this.filter(),this.initState(),this.render("loading",!1)}return l(t,[{key:"initState",value:function(){this.el.dataset.src=this.src,this.state={error:!1,loaded:!1,rendered:!1}}},{key:"record",value:function(t){this.performanceData[t]=Date.now()}},{key:"update",value:function(t){var e=t.src,n=t.loading,i=t.error,r=this.src;this.src=e,this.loading=n,this.error=i,this.filter(),r!==this.src&&(this.attempt=0,this.initState())}},{key:"getRect",value:function(){this.rect=this.el.getBoundingClientRect()}},{key:"checkInView",value:function(){return this.getRect(),this.rect.topthis.options.preLoadTop&&this.rect.left0}},{key:"filter",value:function(){var t=this;(function(t){if(!(t instanceof Object))return[];if(Object.keys)return Object.keys(t);var e=[];for(var n in t)t.hasOwnProperty(n)&&e.push(n);return e})(this.options.filter).map(function(e){t.options.filter[e](t,t.options)})}},{key:"renderLoading",value:function(t){var e=this;w({src:this.loading},function(n){e.render("loading",!1),t()},function(){t(),e.options.silent||console.warn("VueLazyload log: load failed with loading image("+e.loading+")")})}},{key:"load",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a;return this.attempt>this.options.attempt-1&&this.state.error?(this.options.silent||console.log("VueLazyload log: "+this.src+" tried too more than "+this.options.attempt+" times"),void e()):this.state.loaded||_[this.src]?(this.state.loaded=!0,e(),this.render("loaded",!0)):void this.renderLoading(function(){t.attempt++,t.record("loadStart"),w({src:t.src},function(n){t.naturalHeight=n.naturalHeight,t.naturalWidth=n.naturalWidth,t.state.loaded=!0,t.state.error=!1,t.record("loadEnd"),t.render("loaded",!1),_[t.src]=1,e()},function(e){!t.options.silent&&console.error(e),t.state.error=!0,t.state.loaded=!1,t.render("error",!1)})})}},{key:"render",value:function(t,e){this.elRenderer(this,t,e)}},{key:"performance",value:function(){var t="loading",e=0;return this.state.loaded&&(t="loaded",e=(this.performanceData.loadEnd-this.performanceData.loadStart)/1e3),this.state.error&&(t="error"),{src:this.src,state:t,time:e}}},{key:"destroy",value:function(){this.el=null,this.src=null,this.error=null,this.loading=null,this.bindType=null,this.attempt=0}}]),t}(),T="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7",A=["scroll","wheel","mousewheel","resize","animationend","transitionend","touchmove"],j={rootMargin:"0px",threshold:0},I=function(t){return function(){function e(t){var n=t.preLoad,i=t.error,r=t.throttleWait,o=t.preLoadTop,s=t.dispatchEvent,a=t.loading,c=t.attempt,l=t.silent,d=void 0===l||l,h=t.scale,f=t.listenEvents,p=(t.hasbind,t.filter),v=t.adapter,g=t.observer,b=t.observerOptions;u(this,e),this.version="1.2.3",this.mode=y.event,this.ListenerQueue=[],this.TargetIndex=0,this.TargetQueue=[],this.options={silent:d,dispatchEvent:!!s,throttleWait:r||200,preLoad:n||1.3,preLoadTop:o||0,error:i||T,loading:a||T,attempt:c||3,scale:h||k(h),ListenEvents:f||A,hasbind:!1,supportWebp:function(){if(!m)return!1;var t=!0,e=document;try{var n=e.createElement("object");n.type="image/webp",n.style.visibility="hidden",n.innerHTML="!",e.body.appendChild(n),t=!n.offsetWidth,e.body.removeChild(n)}catch(e){t=!1}return t}(),filter:p||{},adapter:v||{},observer:!!g,observerOptions:b||j},this._initEvent(),this.lazyLoadHandler=function(t,e){var n=null,i=0;return function(){if(!n){var r=this,o=arguments,s=function(){i=Date.now(),n=!1,t.apply(r,o)};Date.now()-i>=e?s():n=setTimeout(s,e)}}}(this._lazyLoadHandler.bind(this),this.options.throttleWait),this.setMode(this.options.observer?y.observer:y.event)}return l(e,[{key:"config",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};v(this.options,t)}},{key:"performance",value:function(){var t=[];return this.ListenerQueue.map(function(e){t.push(e.performance())}),t}},{key:"addLazyBox",value:function(t){this.ListenerQueue.push(t),m&&(this._addListenerTarget(window),this._observer&&this._observer.observe(t.el),t.$el&&t.$el.parentNode&&this._addListenerTarget(t.$el.parentNode))}},{key:"add",value:function(e,n,i){var r=this;if(function(t,e){for(var n=!1,i=0,r=t.length;i1&&void 0!==arguments[1]?arguments[1]:{},n=new(I(t))(e),i=new B({lazy:n}),r="2"===t.version.split(".")[0];t.prototype.$Lazyload=n,e.lazyComponent&&t.component("lazy-component",function(t){return{props:{tag:{type:String,default:"div"}},render:function(t){return!1===this.show?t(this.tag):t(this.tag,null,this.$slots.default)},data:function(){return{el:null,state:{loaded:!1},rect:{},show:!1}},mounted:function(){this.el=this.$el,t.addLazyBox(this),t.lazyLoadHandler()},beforeDestroy:function(){t.removeComponent(this)},methods:{getRect:function(){this.rect=this.$el.getBoundingClientRect()},checkInView:function(){return this.getRect(),m&&this.rect.top0&&this.rect.left0},load:function(){this.show=!0,this.state.loaded=!0,this.$emit("show",this)}}}}(n)),r?(t.directive("lazy",{bind:n.add.bind(n),update:n.update.bind(n),componentUpdated:n.lazyLoadHandler.bind(n),unbind:n.remove.bind(n)}),t.directive("lazy-container",{bind:i.bind.bind(i),update:i.update.bind(i),unbind:i.unbind.bind(i)})):(t.directive("lazy",{bind:n.lazyLoadHandler.bind(n),update:function(t,e){v(this.vm.$refs,this.vm.$els),n.add(this.el,{modifiers:this.modifiers||{},arg:this.arg,value:t,oldValue:e},{context:this.vm})},unbind:function(){n.remove(this.el)}}),t.directive("lazy-container",{update:function(t,e){i.update(this.el,{modifiers:this.modifiers||{},arg:this.arg,value:t,oldValue:e},{context:this.vm})},unbind:function(){i.unbind(this.el)}}))}}},t.exports=i()},tgu0:function(t,e,n){"use strict";var i=n("kV13"),r=n("TExJ"),o=i.a.prototype,s=i.a.util.defineReactive;s(o,"$vantLang","zh-CN"),s(o,"$vantMessages",{"zh-CN":{name:"姓名",tel:"电话",save:"保存",confirm:"确认",cancel:"取消",delete:"删除",complete:"完成",loading:"加载中...",telEmpty:"请填写电话",nameEmpty:"请填写姓名",confirmDelete:"确定要删除么",telInvalid:"请填写正确的电话",vanContactCard:{addText:"添加联系人"},vanContactList:{addText:"新建联系人"},vanPagination:{prev:"上一页",next:"下一页"},vanPullRefresh:{pulling:"下拉即可刷新...",loosing:"释放即可刷新..."},vanSubmitBar:{label:"合计:"},vanCoupon:{valid:"有效期",unlimited:"无使用门槛",discount:function(t){return t+"折"},condition:function(t){return"满"+t+"元可用"}},vanCouponCell:{title:"优惠券",tips:"使用优惠",count:function(t){return t+"张可用"}},vanCouponList:{empty:"暂无优惠券",exchange:"兑换",close:"不使用优惠",enable:"可使用优惠券",disabled:"不可使用优惠券",placeholder:"请输入优惠码"},vanAddressEdit:{area:"地区",postal:"邮政编码",areaEmpty:"请选择地区",addressEmpty:"请填写详细地址",postalEmpty:"邮政编码格式不正确",defaultAddress:"设为默认收货地址",telPlaceholder:"收货人手机号",namePlaceholder:"收货人姓名",areaPlaceholder:"选择省 / 市 / 区"},vanAddressEditDetail:{label:"详细地址",placeholder:"街道门牌、楼层房间号等信息"},vanAddressList:{add:"新增地址"}}});e.a={messages:function(){return o.$vantMessages[o.$vantLang]},use:function(t,e){var n;o.$vantLang=t,this.add(((n={})[t]=e,n))},add:function(t){void 0===t&&(t={}),Object(r.a)(o.$vantMessages,t)}}},tm21:function(t,e,n){"use strict";var i=n("kV13"),r="--";function o(t,e,n){return e?t+n+e:t}var s=function(t){return function(e,n){return e&&"string"!=typeof e&&(n=e,e=""),e=o(t,e,"__"),n?[e,function t(e,n){if("string"==typeof n)return o(e,n,r);if(Array.isArray(n))return n.map(function(n){return t(e,n)});var i={};return n&&Object.keys(n).forEach(function(t){i[e+r+t]=n[t]}),i}(e,n)]:e}},a=n("tgu0"),c={methods:{slots:function(t,e){void 0===t&&(t="default");var n=this.$slots,i=this.$scopedSlots;return i[t]?i[t](e):n[t]}}},u={type:Array,default:function(){return[]}},l={type:Number,default:0};function d(t){var e=this.name;t.component(e,this),t.component(k("-"+e),this)}function h(t){return{functional:!0,props:t.props,model:t.model,render:function(e,n){return t(e,n.props,function(t){var e=t.scopedSlots||t.data.scopedSlots||{},n=t.slots();return Object.keys(n).forEach(function(t){e[t]||(e[t]=function(){return n[t]})}),e}(n),n)}}}var f=function(t){return function(e){var n;return"function"==typeof e&&(e=h(e)),e.functional||(e.mixins=e.mixins||[],e.mixins.push(c)),e.props&&(n=e.props,Object.keys(n).forEach(function(t){n[t]===Array?n[t]=u:n[t]===Number&&(n[t]=l)})),e.name=t,e.install=d,e}},p=function(t){var e=k(t)+".";return function(t){for(var n=y(a.a.messages(),e+t)||y(a.a.messages(),t),i=arguments.length,r=new Array(i>1?i-1:0),o=1;o 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var listeners = context.listeners[eventName];\n\n if (listeners) {\n if (Array.isArray(listeners)) {\n listeners.forEach(function (listener) {\n listener.apply(void 0, args);\n });\n } else {\n listeners.apply(void 0, args);\n }\n }\n} // mount functional component\n\nexport function mount(Component, data) {\n var instance = new Vue({\n el: document.createElement('div'),\n props: Component.props,\n render: function render(h) {\n return h(Component, _extends({\n props: this.$props\n }, data));\n }\n });\n document.body.appendChild(instance.$el);\n return instance;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/utils/functional.js\n// module id = null\n// module chunks = ","export var context = {\n zIndex: 2000,\n lockCount: 0,\n stack: [],\n\n get top() {\n return this.stack[this.stack.length - 1];\n }\n\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/mixins/popup/context.js\n// module id = null\n// module chunks = ","var MIN_DISTANCE = 10;\n\nfunction getDirection(x, y) {\n if (x > y && x > MIN_DISTANCE) {\n return 'horizontal';\n }\n\n if (y > x && y > MIN_DISTANCE) {\n return 'vertical';\n }\n\n return '';\n}\n\nexport var TouchMixin = {\n data: function data() {\n return {\n direction: ''\n };\n },\n methods: {\n touchStart: function touchStart(event) {\n this.resetTouchStatus();\n this.startX = event.touches[0].clientX;\n this.startY = event.touches[0].clientY;\n },\n touchMove: function touchMove(event) {\n var touch = event.touches[0];\n this.deltaX = touch.clientX - this.startX;\n this.deltaY = touch.clientY - this.startY;\n this.offsetX = Math.abs(this.deltaX);\n this.offsetY = Math.abs(this.deltaY);\n this.direction = this.direction || getDirection(this.offsetX, this.offsetY);\n },\n resetTouchStatus: function resetTouchStatus() {\n this.direction = '';\n this.deltaX = 0;\n this.deltaY = 0;\n this.offsetX = 0;\n this.offsetY = 0;\n }\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/mixins/touch.js\n// module id = null\n// module chunks = ","/* eslint-disable no-empty */\n\n/* eslint-disable getter-return */\n\n/* eslint-disable import/no-mutable-exports */\nimport { isServer } from '.';\nexport var supportsPassive = false;\n\nif (!isServer) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', {\n get: function get() {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n });\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\nexport function on(target, event, handler, passive) {\n if (passive === void 0) {\n passive = false;\n }\n\n if (!isServer) {\n target.addEventListener(event, handler, supportsPassive ? {\n capture: false,\n passive: passive\n } : false);\n }\n}\nexport function off(target, event, handler) {\n if (!isServer) {\n target.removeEventListener(event, handler);\n }\n}\nexport function stopPropagation(event) {\n event.stopPropagation();\n}\nexport function preventDefault(event, isStopPropagation) {\n /* istanbul ignore else */\n if (typeof event.cancelable !== 'boolean' || event.cancelable) {\n event.preventDefault();\n }\n\n if (isStopPropagation) {\n stopPropagation(event);\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/utils/event.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { use } from '../utils';\nimport { inherit } from '../utils/functional';\nimport { preventDefault } from '../utils/event'; // Types\n\nvar _use = use('overlay'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction Overlay(h, props, slots, ctx) {\n var style = _extends({\n zIndex: props.zIndex\n }, props.customStyle);\n\n return h(\"transition\", {\n \"attrs\": {\n \"name\": \"van-fade\"\n }\n }, [h(\"div\", _mergeJSXProps([{\n \"directives\": [{\n name: \"show\",\n value: props.visible\n }],\n \"style\": style,\n \"class\": [bem(), props.className],\n \"on\": {\n \"touchmove\": function touchmove(event) {\n preventDefault(event, true);\n }\n }\n }, inherit(ctx, true)]))]);\n}\n\nOverlay.props = {\n zIndex: Number,\n className: null,\n visible: Boolean,\n customStyle: Object\n};\nexport default sfc(Overlay);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/overlay/index.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport Overlay from '../../overlay';\nimport { context } from './context';\nimport { mount } from '../../utils/functional';\nvar defaultConfig = {\n className: '',\n customStyle: {}\n};\nvar overlay; // close popup when click overlay && closeOnClickOverlay is true\n\nfunction onClickOverlay() {\n if (context.top) {\n var vm = context.top.vm;\n vm.$emit('click-overlay');\n\n if (vm.closeOnClickOverlay) {\n if (vm.onClickOverlay) {\n vm.onClickOverlay();\n } else {\n vm.close();\n }\n }\n }\n}\n\nexport function updateOverlay() {\n if (!overlay) {\n overlay = mount(Overlay, {\n on: {\n click: onClickOverlay\n }\n });\n }\n\n if (context.top) {\n var _context$top = context.top,\n vm = _context$top.vm,\n config = _context$top.config;\n var el = vm.$el;\n var target = el && el.parentNode ? el.parentNode : document.body;\n\n if (target) {\n target.appendChild(overlay.$el);\n }\n\n _extends(overlay, defaultConfig, config, {\n visible: true\n });\n } else {\n overlay.visible = false;\n }\n}\nexport function openOverlay(vm, config) {\n if (!context.stack.some(function (item) {\n return item.vm === vm;\n })) {\n context.stack.push({\n vm: vm,\n config: config\n });\n updateOverlay();\n }\n}\nexport function closeOverlay(vm) {\n var stack = context.stack;\n\n if (stack.length) {\n if (context.top.vm === vm) {\n stack.pop();\n updateOverlay();\n } else {\n context.stack = stack.filter(function (item) {\n return item.vm !== vm;\n });\n }\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/mixins/popup/overlay.js\n// module id = null\n// module chunks = ","// get nearest scroll element\n// http://w3help.org/zh-cn/causes/SD9013\n// http://stackoverflow.com/questions/17016740/onscroll-function-is-not-working-for-chrome\nexport function getScrollEventTarget(element, rootParent) {\n if (rootParent === void 0) {\n rootParent = window;\n }\n\n var node = element;\n\n while (node && node.tagName !== 'HTML' && node.tagName !== 'BODY' && node.nodeType === 1 && node !== rootParent) {\n var _window$getComputedSt = window.getComputedStyle(node),\n overflowY = _window$getComputedSt.overflowY;\n\n if (overflowY === 'scroll' || overflowY === 'auto') {\n return node;\n }\n\n node = node.parentNode;\n }\n\n return rootParent;\n}\nexport function getScrollTop(element) {\n return 'scrollTop' in element ? element.scrollTop : element.pageYOffset;\n}\nexport function setScrollTop(element, value) {\n 'scrollTop' in element ? element.scrollTop = value : element.scrollTo(element.scrollX, value);\n}\nexport function getRootScrollTop() {\n return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n} // get distance from element top to page top\n\nexport function getElementTop(element) {\n return (element === window ? 0 : element.getBoundingClientRect().top) + getScrollTop(window);\n}\nexport function getVisibleHeight(element) {\n return element === window ? element.innerHeight : element.getBoundingClientRect().height;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/utils/scroll.js\n// module id = null\n// module chunks = ","import { context } from './context';\nimport { TouchMixin } from '../touch';\nimport { on, off, preventDefault } from '../../utils/event';\nimport { openOverlay, closeOverlay, updateOverlay } from './overlay';\nimport { getScrollEventTarget } from '../../utils/scroll';\nexport var PopupMixin = {\n mixins: [TouchMixin],\n props: {\n // whether to show popup\n value: Boolean,\n // whether to show overlay\n overlay: Boolean,\n // overlay custom style\n overlayStyle: Object,\n // overlay custom class name\n overlayClass: String,\n // whether to close popup when click overlay\n closeOnClickOverlay: Boolean,\n // z-index\n zIndex: [String, Number],\n // return the mount node for popup\n getContainer: [String, Function],\n // prevent body scroll\n lockScroll: {\n type: Boolean,\n \"default\": true\n },\n // whether to lazy render\n lazyRender: {\n type: Boolean,\n \"default\": true\n }\n },\n data: function data() {\n return {\n inited: this.value\n };\n },\n computed: {\n shouldRender: function shouldRender() {\n return this.inited || !this.lazyRender;\n }\n },\n watch: {\n value: function value(val) {\n var type = val ? 'open' : 'close';\n this.inited = this.inited || this.value;\n this[type]();\n this.$emit(type);\n },\n getContainer: function getContainer() {\n this.move();\n },\n overlay: function overlay() {\n this.renderOverlay();\n }\n },\n mounted: function mounted() {\n if (this.getContainer) {\n this.move();\n }\n\n if (this.value) {\n this.open();\n }\n },\n activated: function activated() {\n /* istanbul ignore next */\n if (this.value) {\n this.open();\n }\n },\n beforeDestroy: function beforeDestroy() {\n this.close();\n\n if (this.getContainer && this.$parent && this.$parent.$el) {\n this.$parent.$el.appendChild(this.$el);\n }\n },\n deactivated: function deactivated() {\n /* istanbul ignore next */\n this.close();\n },\n methods: {\n open: function open() {\n /* istanbul ignore next */\n if (this.$isServer || this.opened) {\n return;\n } // cover default zIndex\n\n\n if (this.zIndex !== undefined) {\n context.zIndex = this.zIndex;\n }\n\n this.opened = true;\n this.renderOverlay();\n\n if (this.lockScroll) {\n on(document, 'touchstart', this.touchStart);\n on(document, 'touchmove', this.onTouchMove);\n\n if (!context.lockCount) {\n document.body.classList.add('van-overflow-hidden');\n }\n\n context.lockCount++;\n }\n },\n close: function close() {\n if (!this.opened) {\n return;\n }\n\n if (this.lockScroll) {\n context.lockCount--;\n off(document, 'touchstart', this.touchStart);\n off(document, 'touchmove', this.onTouchMove);\n\n if (!context.lockCount) {\n document.body.classList.remove('van-overflow-hidden');\n }\n }\n\n this.opened = false;\n closeOverlay(this);\n this.$emit('input', false);\n },\n move: function move() {\n var container;\n var getContainer = this.getContainer;\n\n if (getContainer) {\n container = typeof getContainer === 'string' ? document.querySelector(getContainer) : getContainer();\n } else if (this.$parent) {\n container = this.$parent.$el;\n }\n\n if (container && container !== this.$el.parentNode) {\n container.appendChild(this.$el);\n }\n\n if (this.overlay) {\n updateOverlay();\n }\n },\n onTouchMove: function onTouchMove(event) {\n this.touchMove(event);\n var direction = this.deltaY > 0 ? '10' : '01';\n var el = getScrollEventTarget(event.target, this.$el);\n var scrollHeight = el.scrollHeight,\n offsetHeight = el.offsetHeight,\n scrollTop = el.scrollTop;\n var status = '11';\n /* istanbul ignore next */\n\n if (scrollTop === 0) {\n status = offsetHeight >= scrollHeight ? '00' : '01';\n } else if (scrollTop + offsetHeight >= scrollHeight) {\n status = '10';\n }\n /* istanbul ignore next */\n\n\n if (status !== '11' && this.direction === 'vertical' && !(parseInt(status, 2) & parseInt(direction, 2))) {\n preventDefault(event, true);\n }\n },\n renderOverlay: function renderOverlay() {\n if (this.$isServer || !this.value) {\n return;\n }\n\n if (this.overlay) {\n openOverlay(this, {\n zIndex: context.zIndex++,\n className: this.overlayClass,\n customStyle: this.overlayStyle\n });\n } else {\n closeOverlay(this);\n }\n\n this.updateZIndex();\n },\n updateZIndex: function updateZIndex() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.$el.style.zIndex = context.zIndex++;\n });\n }\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/mixins/popup/index.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use, isDef } from '../utils';\nimport { inherit } from '../utils/functional'; // Types\n\nvar _use = use('info'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction Info(h, props, slots, ctx) {\n if (!isDef(props.info) || props.info === '') {\n return;\n }\n\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem()\n }, inherit(ctx, true)]), [props.info]);\n}\n\nInfo.props = {\n info: [String, Number]\n};\nexport default sfc(Info);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/info/index.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../utils';\nimport { inherit } from '../utils/functional';\nimport Info from '../info'; // Types\n\nvar _use = use('icon'),\n sfc = _use[0];\n\nfunction isImage(name) {\n return name ? name.indexOf('/') !== -1 : false;\n}\n\nfunction Icon(h, props, slots, ctx) {\n var urlIcon = isImage(props.name);\n return h(props.tag, _mergeJSXProps([{\n \"class\": [props.classPrefix, urlIcon ? 'van-icon--image' : props.classPrefix + \"-\" + props.name],\n \"style\": {\n color: props.color,\n fontSize: props.size\n }\n }, inherit(ctx, true)]), [slots[\"default\"] && slots[\"default\"](), urlIcon && h(\"img\", {\n \"attrs\": {\n \"src\": props.name\n }\n }), h(Info, {\n \"attrs\": {\n \"info\": props.info\n }\n })]);\n}\n\nIcon.props = {\n name: String,\n size: String,\n color: String,\n info: [String, Number],\n tag: {\n type: String,\n \"default\": 'i'\n },\n classPrefix: {\n type: String,\n \"default\": 'van-icon'\n }\n};\nexport default sfc(Icon);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/icon/index.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../utils';\nimport { inherit } from '../utils/functional'; // Types\n\nvar _use = use('loading'),\n sfc = _use[0],\n bem = _use[1];\n\nvar DEFAULT_COLOR = '#c9c9c9';\n\nfunction Loading(h, props, slots, ctx) {\n var color = props.color,\n size = props.size,\n type = props.type;\n var colorType = color === 'white' || color === 'black' ? color : '';\n var style = {\n color: color === 'black' ? DEFAULT_COLOR : color,\n width: size,\n height: size\n };\n var Spin = [];\n\n if (type === 'spinner') {\n for (var i = 0; i < 12; i++) {\n Spin.push(h(\"i\"));\n }\n }\n\n var Circular = type === 'circular' && h(\"svg\", {\n \"class\": bem('circular'),\n \"attrs\": {\n \"viewBox\": \"25 25 50 50\"\n }\n }, [h(\"circle\", {\n \"attrs\": {\n \"cx\": \"50\",\n \"cy\": \"50\",\n \"r\": \"20\",\n \"fill\": \"none\"\n }\n })]);\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem([type, colorType]),\n \"style\": style\n }, inherit(ctx, true)]), [h(\"span\", {\n \"class\": bem('spinner', type)\n }, [Spin, Circular])]);\n}\n\nLoading.props = {\n size: String,\n type: {\n type: String,\n \"default\": 'circular'\n },\n color: {\n type: String,\n \"default\": DEFAULT_COLOR\n }\n};\nexport default sfc(Loading);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/loading/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\nimport { PopupMixin } from '../mixins/popup';\n\nvar _use = use('popup'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n mixins: [PopupMixin],\n props: {\n position: String,\n transition: String,\n overlay: {\n type: Boolean,\n \"default\": true\n },\n closeOnClickOverlay: {\n type: Boolean,\n \"default\": true\n }\n },\n render: function render(h) {\n var _this = this,\n _bem;\n\n if (!this.shouldRender) {\n return;\n }\n\n var position = this.position;\n\n var emit = function emit(event) {\n return function () {\n return _this.$emit(event);\n };\n };\n\n var transitionName = this.transition || (position ? \"van-popup-slide-\" + position : 'van-fade');\n return h(\"transition\", {\n \"attrs\": {\n \"name\": transitionName\n },\n \"on\": {\n \"afterEnter\": emit('opened'),\n \"afterLeave\": emit('closed')\n }\n }, [h(\"div\", {\n \"directives\": [{\n name: \"show\",\n value: this.value\n }],\n \"class\": bem((_bem = {}, _bem[position] = position, _bem))\n }, [this.slots()])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/popup/index.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../utils';\nimport { emit, inherit } from '../utils/functional';\nimport { PopupMixin } from '../mixins/popup';\nimport Icon from '../icon';\nimport Loading from '../loading';\nimport Popup from '../popup'; // Types\n\nvar _use = use('actionsheet'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction Actionsheet(h, props, slots, ctx) {\n var title = props.title,\n cancelText = props.cancelText;\n\n var onCancel = function onCancel() {\n emit(ctx, 'input', false);\n emit(ctx, 'cancel');\n };\n\n var Header = function Header() {\n return h(\"div\", {\n \"class\": [bem('header'), 'van-hairline--top-bottom']\n }, [title, h(Icon, {\n \"attrs\": {\n \"name\": \"close\"\n },\n \"class\": bem('close'),\n \"on\": {\n \"click\": onCancel\n }\n })]);\n };\n\n var Option = function Option(item, index) {\n return h(\"div\", {\n \"class\": [bem('item', {\n disabled: item.disabled || item.loading\n }), item.className, 'van-hairline--top'],\n \"on\": {\n \"click\": function click(event) {\n event.stopPropagation();\n\n if (!item.disabled && !item.loading) {\n if (item.callback) {\n item.callback(item);\n }\n\n emit(ctx, 'select', item, index);\n }\n }\n }\n }, [item.loading ? h(Loading, {\n \"class\": bem('loading'),\n \"attrs\": {\n \"size\": \"20px\"\n }\n }) : [h(\"span\", {\n \"class\": bem('name')\n }, [item.name]), item.subname && h(\"span\", {\n \"class\": bem('subname')\n }, [item.subname])]]);\n };\n\n return h(Popup, _mergeJSXProps([{\n \"class\": bem({\n 'safe-area-inset-bottom': props.safeAreaInsetBottom\n }),\n \"attrs\": {\n \"value\": props.value,\n \"position\": \"bottom\",\n \"overlay\": props.overlay,\n \"lazyRender\": props.lazyRender,\n \"getContainer\": props.getContainer,\n \"closeOnClickOverlay\": props.closeOnClickOverlay\n },\n \"on\": {\n \"input\": function input(value) {\n emit(ctx, 'input', value);\n }\n }\n }, inherit(ctx)]), [title ? Header() : props.actions.map(Option), slots[\"default\"] && h(\"div\", {\n \"class\": bem('content')\n }, [slots[\"default\"]()]), cancelText && h(\"div\", {\n \"class\": bem('cancel'),\n \"on\": {\n \"click\": onCancel\n }\n }, [cancelText])]);\n}\n\nActionsheet.props = _extends({}, PopupMixin.props, {\n title: String,\n actions: Array,\n cancelText: String,\n safeAreaInsetBottom: Boolean,\n overlay: {\n type: Boolean,\n \"default\": true\n },\n closeOnClickOverlay: {\n type: Boolean,\n \"default\": true\n }\n});\nexport default sfc(Actionsheet);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/actionsheet/index.js\n// module id = null\n// module chunks = ","export function isMobile(value) {\n value = value.replace(/[^-|\\d]/g, '');\n return /^((\\+86)|(86))?(1)\\d{10}$/.test(value) || /^0[0-9-]{10,13}$/.test(value);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/utils/validate/mobile.js\n// module id = null\n// module chunks = ","import { deepAssign } from './deep-assign';\nexport function deepClone(obj) {\n if (Array.isArray(obj)) {\n return obj.map(function (item) {\n return deepClone(item);\n });\n }\n\n if (typeof obj === 'object') {\n return deepAssign({}, obj);\n }\n\n return obj;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/utils/deep-clone.js\n// module id = null\n// module chunks = ","export var pickerProps = {\n title: String,\n loading: Boolean,\n showToolbar: Boolean,\n cancelButtonText: String,\n confirmButtonText: String,\n visibleItemCount: {\n type: Number,\n \"default\": 5\n },\n itemHeight: {\n type: Number,\n \"default\": 44\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/picker/shared.js\n// module id = null\n// module chunks = ","import { deepClone } from '../utils/deep-clone';\nimport { use, isObj, range } from '../utils';\nimport { preventDefault } from '../utils/event';\nvar DEFAULT_DURATION = 200;\n\nvar _use = use('picker-column'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n props: {\n valueKey: String,\n className: String,\n itemHeight: Number,\n defaultIndex: Number,\n initialOptions: Array,\n visibleItemCount: Number\n },\n data: function data() {\n return {\n startY: 0,\n offset: 0,\n duration: 0,\n startOffset: 0,\n options: deepClone(this.initialOptions),\n currentIndex: this.defaultIndex\n };\n },\n created: function created() {\n this.$parent.children && this.$parent.children.push(this);\n this.setIndex(this.currentIndex);\n },\n destroyed: function destroyed() {\n var children = this.$parent.children;\n children && children.splice(children.indexOf(this), 1);\n },\n watch: {\n defaultIndex: function defaultIndex() {\n this.setIndex(this.defaultIndex);\n }\n },\n computed: {\n count: function count() {\n return this.options.length;\n }\n },\n methods: {\n onTouchStart: function onTouchStart(event) {\n this.startY = event.touches[0].clientY;\n this.startOffset = this.offset;\n this.duration = 0;\n },\n onTouchMove: function onTouchMove(event) {\n preventDefault(event);\n var deltaY = event.touches[0].clientY - this.startY;\n this.offset = range(this.startOffset + deltaY, -(this.count * this.itemHeight), this.itemHeight);\n },\n onTouchEnd: function onTouchEnd() {\n if (this.offset !== this.startOffset) {\n this.duration = DEFAULT_DURATION;\n var index = range(Math.round(-this.offset / this.itemHeight), 0, this.count - 1);\n this.setIndex(index, true);\n }\n },\n adjustIndex: function adjustIndex(index) {\n index = range(index, 0, this.count);\n\n for (var i = index; i < this.count; i++) {\n if (!this.isDisabled(this.options[i])) return i;\n }\n\n for (var _i = index - 1; _i >= 0; _i--) {\n if (!this.isDisabled(this.options[_i])) return _i;\n }\n },\n isDisabled: function isDisabled(option) {\n return isObj(option) && option.disabled;\n },\n getOptionText: function getOptionText(option) {\n return isObj(option) && this.valueKey in option ? option[this.valueKey] : option;\n },\n setIndex: function setIndex(index, userAction) {\n index = this.adjustIndex(index) || 0;\n this.offset = -index * this.itemHeight;\n\n if (index !== this.currentIndex) {\n this.currentIndex = index;\n userAction && this.$emit('change', index);\n }\n },\n setValue: function setValue(value) {\n var options = this.options;\n\n for (var i = 0; i < options.length; i++) {\n if (this.getOptionText(options[i]) === value) {\n return this.setIndex(i);\n }\n }\n },\n getValue: function getValue() {\n return this.options[this.currentIndex];\n }\n },\n render: function render(h) {\n var _this = this;\n\n var itemHeight = this.itemHeight,\n visibleItemCount = this.visibleItemCount;\n var columnStyle = {\n height: itemHeight * visibleItemCount + 'px'\n };\n var baseOffset = itemHeight * (visibleItemCount - 1) / 2;\n var wrapperStyle = {\n transition: this.duration + \"ms\",\n transform: \"translate3d(0, \" + (this.offset + baseOffset) + \"px, 0)\",\n lineHeight: itemHeight + \"px\"\n };\n var optionStyle = {\n height: itemHeight + \"px\"\n };\n return h(\"div\", {\n \"style\": columnStyle,\n \"class\": [bem(), this.className],\n \"on\": {\n \"touchstart\": this.onTouchStart,\n \"touchmove\": this.onTouchMove,\n \"touchend\": this.onTouchEnd,\n \"touchcancel\": this.onTouchEnd\n }\n }, [h(\"ul\", {\n \"style\": wrapperStyle\n }, [this.options.map(function (option, index) {\n return h(\"li\", {\n \"style\": optionStyle,\n \"class\": ['van-ellipsis', bem('item', {\n disabled: _this.isDisabled(option),\n selected: index === _this.currentIndex\n })],\n \"domProps\": {\n \"innerHTML\": _this.getOptionText(option)\n },\n \"on\": {\n \"click\": function click() {\n _this.setIndex(index, true);\n }\n }\n });\n })])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/picker/PickerColumn.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { use } from '../utils';\nimport { preventDefault } from '../utils/event';\nimport { deepClone } from '../utils/deep-clone';\nimport { pickerProps } from './shared';\nimport Loading from '../loading';\nimport PickerColumn from './PickerColumn';\n\nvar _use = use('picker'),\n sfc = _use[0],\n bem = _use[1],\n t = _use[2];\n\nexport default sfc({\n props: _extends({}, pickerProps, {\n columns: Array,\n defaultIndex: {\n type: Number,\n \"default\": 0\n },\n valueKey: {\n type: String,\n \"default\": 'text'\n }\n }),\n data: function data() {\n return {\n children: []\n };\n },\n computed: {\n simple: function simple() {\n return this.columns.length && !this.columns[0].values;\n }\n },\n watch: {\n columns: function columns() {\n this.setColumns();\n }\n },\n methods: {\n setColumns: function setColumns() {\n var _this = this;\n\n var columns = this.simple ? [{\n values: this.columns\n }] : this.columns;\n columns.forEach(function (column, index) {\n _this.setColumnValues(index, deepClone(column.values));\n });\n },\n emit: function emit(event) {\n if (this.simple) {\n this.$emit(event, this.getColumnValue(0), this.getColumnIndex(0));\n } else {\n this.$emit(event, this.getValues(), this.getIndexes());\n }\n },\n onChange: function onChange(columnIndex) {\n if (this.simple) {\n this.$emit('change', this, this.getColumnValue(0), this.getColumnIndex(0));\n } else {\n this.$emit('change', this, this.getValues(), columnIndex);\n }\n },\n // get column instance by index\n getColumn: function getColumn(index) {\n return this.children[index];\n },\n // get column value by index\n getColumnValue: function getColumnValue(index) {\n var column = this.getColumn(index);\n return column && column.getValue();\n },\n // set column value by index\n setColumnValue: function setColumnValue(index, value) {\n var column = this.getColumn(index);\n column && column.setValue(value);\n },\n // get column option index by column index\n getColumnIndex: function getColumnIndex(columnIndex) {\n return (this.getColumn(columnIndex) || {}).currentIndex;\n },\n // set column option index by column index\n setColumnIndex: function setColumnIndex(columnIndex, optionIndex) {\n var column = this.getColumn(columnIndex);\n column && column.setIndex(optionIndex);\n },\n // get options of column by index\n getColumnValues: function getColumnValues(index) {\n return (this.children[index] || {}).options;\n },\n // set options of column by index\n setColumnValues: function setColumnValues(index, options) {\n var column = this.children[index];\n\n if (column && JSON.stringify(column.options) !== JSON.stringify(options)) {\n column.options = options;\n column.setIndex(0);\n }\n },\n // get values of all columns\n getValues: function getValues() {\n return this.children.map(function (child) {\n return child.getValue();\n });\n },\n // set values of all columns\n setValues: function setValues(values) {\n var _this2 = this;\n\n values.forEach(function (value, index) {\n _this2.setColumnValue(index, value);\n });\n },\n // get indexes of all columns\n getIndexes: function getIndexes() {\n return this.children.map(function (child) {\n return child.currentIndex;\n });\n },\n // set indexes of all columns\n setIndexes: function setIndexes(indexes) {\n var _this3 = this;\n\n indexes.forEach(function (optionIndex, columnIndex) {\n _this3.setColumnIndex(columnIndex, optionIndex);\n });\n },\n onConfirm: function onConfirm() {\n this.emit('confirm');\n },\n onCancel: function onCancel() {\n this.emit('cancel');\n }\n },\n render: function render(h) {\n var _this4 = this;\n\n var itemHeight = this.itemHeight;\n var columns = this.simple ? [this.columns] : this.columns;\n var frameStyle = {\n height: itemHeight + \"px\"\n };\n var columnsStyle = {\n height: itemHeight * this.visibleItemCount + \"px\"\n };\n var Toolbar = this.showToolbar && h(\"div\", {\n \"class\": ['van-hairline--top-bottom', bem('toolbar')]\n }, [this.slots() || [h(\"div\", {\n \"class\": bem('cancel'),\n \"on\": {\n \"click\": this.onCancel\n }\n }, [this.cancelButtonText || t('cancel')]), this.slots('title') || this.title && h(\"div\", {\n \"class\": ['van-ellipsis', bem('title')]\n }, [this.title]), h(\"div\", {\n \"class\": bem('confirm'),\n \"on\": {\n \"click\": this.onConfirm\n }\n }, [this.confirmButtonText || t('confirm')])]]);\n return h(\"div\", {\n \"class\": bem()\n }, [Toolbar, this.loading ? h(\"div\", {\n \"class\": bem('loading')\n }, [h(Loading)]) : h(), h(\"div\", {\n \"class\": bem('columns'),\n \"style\": columnsStyle,\n \"on\": {\n \"touchmove\": preventDefault\n }\n }, [columns.map(function (item, index) {\n return h(PickerColumn, {\n \"attrs\": {\n \"valueKey\": _this4.valueKey,\n \"className\": item.className,\n \"itemHeight\": _this4.itemHeight,\n \"defaultIndex\": item.defaultIndex || _this4.defaultIndex,\n \"visibleItemCount\": _this4.visibleItemCount,\n \"initialOptions\": _this4.simple ? item : item.values\n },\n \"on\": {\n \"change\": function change() {\n _this4.onChange(index);\n }\n }\n });\n }), h(\"div\", {\n \"class\": ['van-hairline--top-bottom', bem('frame')],\n \"style\": frameStyle\n })])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/picker/index.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { use } from '../utils';\nimport Picker from '../picker';\nimport { pickerProps } from '../picker/shared';\n\nvar _use = use('area'),\n sfc = _use[0],\n bem = _use[1];\n\nvar COLUMNSPLACEHOLDERCODE = '000000';\nexport default sfc({\n props: _extends({}, pickerProps, {\n value: String,\n areaList: {\n type: Object,\n \"default\": function _default() {\n return {};\n }\n },\n columnsNum: {\n type: [String, Number],\n \"default\": 3\n },\n columnsPlaceholder: {\n type: Array,\n \"default\": function _default() {\n return [];\n }\n }\n }),\n data: function data() {\n return {\n code: this.value,\n columns: [{\n values: []\n }, {\n values: []\n }, {\n values: []\n }]\n };\n },\n computed: {\n province: function province() {\n return this.areaList.province_list || {};\n },\n city: function city() {\n return this.areaList.city_list || {};\n },\n county: function county() {\n return this.areaList.county_list || {};\n },\n displayColumns: function displayColumns() {\n return this.columns.slice(0, +this.columnsNum);\n },\n typeToColumnsPlaceholder: function typeToColumnsPlaceholder() {\n return {\n province: this.columnsPlaceholder[0] || '',\n city: this.columnsPlaceholder[1] || '',\n county: this.columnsPlaceholder[2] || ''\n };\n }\n },\n watch: {\n value: function value() {\n this.code = this.value;\n this.setValues();\n },\n areaList: {\n deep: true,\n handler: function handler() {\n this.setValues();\n }\n },\n columnsNum: function columnsNum() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.setValues();\n });\n }\n },\n mounted: function mounted() {\n this.setValues();\n },\n methods: {\n // get list by code\n getList: function getList(type, code) {\n var result = [];\n\n if (type !== 'province' && !code) {\n return result;\n }\n\n var list = this[type];\n result = Object.keys(list).map(function (listCode) {\n return {\n code: listCode,\n name: list[listCode]\n };\n });\n\n if (code) {\n // oversea code\n if (code[0] === '9' && type === 'city') {\n code = '9';\n }\n\n result = result.filter(function (item) {\n return item.code.indexOf(code) === 0;\n });\n }\n\n if (this.typeToColumnsPlaceholder[type] && result.length) {\n // set columns placeholder\n var codeFill = type === 'province' ? '' : type === 'city' ? COLUMNSPLACEHOLDERCODE.slice(2, 4) : COLUMNSPLACEHOLDERCODE.slice(4, 6);\n result.unshift({\n code: \"\" + code + codeFill,\n name: this.typeToColumnsPlaceholder[type]\n });\n }\n\n return result;\n },\n // get index by code\n getIndex: function getIndex(type, code) {\n var compareNum = type === 'province' ? 2 : type === 'city' ? 4 : 6;\n var list = this.getList(type, code.slice(0, compareNum - 2)); // oversea code\n\n if (code[0] === '9' && type === 'province') {\n compareNum = 1;\n }\n\n code = code.slice(0, compareNum);\n\n for (var i = 0; i < list.length; i++) {\n if (list[i].code.slice(0, compareNum) === code) {\n return i;\n }\n }\n\n return 0;\n },\n // parse output columns data\n parseOutputValues: function parseOutputValues(values) {\n var _this2 = this;\n\n return values.map(function (value, index) {\n if (value === void 0) {\n value = {};\n }\n\n value = JSON.parse(JSON.stringify(value));\n\n if (!value.code || value.name === _this2.columnsPlaceholder[index]) {\n value.code = '';\n value.name = '';\n }\n\n return value;\n });\n },\n onChange: function onChange(picker, values, index) {\n this.code = values[index].code;\n this.setValues();\n var getValues = picker.getValues();\n getValues = this.parseOutputValues(getValues);\n this.$emit('change', picker, getValues, index);\n },\n onConfirm: function onConfirm(values, index) {\n values = this.parseOutputValues(values);\n this.setValues();\n this.$emit('confirm', values, index);\n },\n setValues: function setValues() {\n var code = this.code;\n\n if (!code) {\n if (this.columnsPlaceholder.length) {\n code = COLUMNSPLACEHOLDERCODE;\n } else if (Object.keys(this.county)[0]) {\n code = Object.keys(this.county)[0];\n } else {\n code = '';\n }\n }\n\n var picker = this.$refs.picker;\n var province = this.getList('province');\n var city = this.getList('city', code.slice(0, 2));\n\n if (!picker) {\n return;\n }\n\n picker.setColumnValues(0, province);\n picker.setColumnValues(1, city);\n\n if (city.length && code.slice(2, 4) === '00') {\n code = city[0].code;\n }\n\n picker.setColumnValues(2, this.getList('county', code.slice(0, 4)));\n picker.setIndexes([this.getIndex('province', code), this.getIndex('city', code), this.getIndex('county', code)]);\n },\n getValues: function getValues() {\n var picker = this.$refs.picker;\n var getValues = picker ? picker.getValues() : [];\n getValues = this.parseOutputValues(getValues);\n return getValues.filter(function (value) {\n return !!value;\n });\n },\n getArea: function getArea() {\n var values = this.getValues();\n var area = {\n code: '',\n country: '',\n province: '',\n city: '',\n county: ''\n };\n\n if (!values.length) {\n return area;\n }\n\n var names = values.map(function (item) {\n return item.name;\n });\n var filterCodeValues = values.filter(function (value) {\n return !!value.code;\n });\n area.code = filterCodeValues.length ? filterCodeValues[filterCodeValues.length - 1].code : '';\n\n if (area.code[0] === '9') {\n area.country = names[1] || '';\n area.province = names[2] || '';\n } else {\n area.province = names[0] || '';\n area.city = names[1] || '';\n area.county = names[2] || '';\n }\n\n return area;\n },\n reset: function reset() {\n this.code = '';\n this.setValues();\n }\n },\n render: function render(h) {\n var on = _extends({}, this.$listeners, {\n change: this.onChange,\n confirm: this.onConfirm\n });\n\n return h(Picker, {\n \"ref\": \"picker\",\n \"class\": bem(),\n \"attrs\": {\n \"showToolbar\": true,\n \"valueKey\": \"name\",\n \"title\": this.title,\n \"loading\": this.loading,\n \"columns\": this.displayColumns,\n \"itemHeight\": this.itemHeight,\n \"visibleItemCount\": this.visibleItemCount,\n \"cancelButtonText\": this.cancelButtonText,\n \"confirmButtonText\": this.confirmButtonText\n },\n \"on\": _extends({}, on)\n });\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/area/index.js\n// module id = null\n// module chunks = ","export var cellProps = {\n icon: String,\n size: String,\n center: Boolean,\n isLink: Boolean,\n required: Boolean,\n titleStyle: null,\n titleClass: null,\n valueClass: null,\n labelClass: null,\n title: [String, Number],\n value: [String, Number],\n label: [String, Number],\n border: {\n type: Boolean,\n \"default\": true\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/cell/shared.js\n// module id = null\n// module chunks = ","/**\n * Vue Router support\n */\nexport function route(router, config) {\n var to = config.to,\n url = config.url,\n replace = config.replace;\n\n if (to && router) {\n router[replace ? 'replace' : 'push'](to);\n } else if (url) {\n replace ? location.replace(url) : location.href = url;\n }\n}\nexport function functionalRoute(context) {\n route(context.parent && context.parent.$router, context.props);\n}\nexport var routeProps = {\n url: String,\n replace: Boolean,\n to: [String, Object]\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/utils/router.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use, isDef } from '../utils';\nimport { cellProps } from './shared';\nimport { emit, inherit } from '../utils/functional';\nimport { routeProps, functionalRoute } from '../utils/router';\nimport Icon from '../icon'; // Types\n\nvar _use = use('cell'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction Cell(h, props, slots, ctx) {\n var icon = props.icon,\n size = props.size,\n title = props.title,\n label = props.label,\n value = props.value,\n isLink = props.isLink,\n arrowDirection = props.arrowDirection;\n var showTitle = slots.title || isDef(title);\n var showValue = slots[\"default\"] || isDef(value);\n var showLabel = slots.label || isDef(label);\n var Label = showLabel && h(\"div\", {\n \"class\": [bem('label'), props.labelClass]\n }, [slots.label ? slots.label() : label]);\n var Title = showTitle && h(\"div\", {\n \"class\": [bem('title'), props.titleClass],\n \"style\": props.titleStyle\n }, [slots.title ? slots.title() : h(\"span\", [title]), Label]);\n var Value = showValue && h(\"div\", {\n \"class\": [bem('value', {\n alone: !slots.title && !title\n }), props.valueClass]\n }, [slots[\"default\"] ? slots[\"default\"]() : h(\"span\", [value])]);\n var LeftIcon = slots.icon ? slots.icon() : icon && h(Icon, {\n \"class\": bem('left-icon'),\n \"attrs\": {\n \"name\": icon\n }\n });\n var rightIconSlot = slots['right-icon'];\n var RightIcon = rightIconSlot ? rightIconSlot() : isLink && h(Icon, {\n \"class\": bem('right-icon'),\n \"attrs\": {\n \"name\": arrowDirection ? \"arrow-\" + arrowDirection : 'arrow'\n }\n });\n\n var onClick = function onClick(event) {\n emit(ctx, 'click', event);\n functionalRoute(ctx);\n };\n\n var classes = {\n center: props.center,\n required: props.required,\n borderless: !props.border,\n clickable: isLink || props.clickable\n };\n\n if (size) {\n classes[size] = size;\n }\n\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem(classes),\n \"on\": {\n \"click\": onClick\n }\n }, inherit(ctx)]), [LeftIcon, Title, Value, RightIcon, slots.extra && slots.extra()]);\n}\n\nCell.props = _extends({}, cellProps, routeProps, {\n clickable: Boolean,\n arrowDirection: String\n});\nexport default sfc(Cell);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/cell/index.js\n// module id = null\n// module chunks = ","export function isNumber(value) {\n return /^\\d+$/.test(value);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/utils/validate/number.js\n// module id = null\n// module chunks = ","import _mergeJSXProps2 from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport Icon from '../icon';\nimport Cell from '../cell';\nimport { cellProps } from '../cell/shared';\nimport { use, isObj, isDef, isIOS } from '../utils';\nimport { preventDefault } from '../utils/event';\nimport { getRootScrollTop } from '../utils/scroll';\nimport { isNumber } from '../utils/validate/number';\n\nvar _use = use('field'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n inheritAttrs: false,\n props: _extends({}, cellProps, {\n error: Boolean,\n leftIcon: String,\n rightIcon: String,\n readonly: Boolean,\n clearable: Boolean,\n labelWidth: [String, Number],\n labelAlign: String,\n inputAlign: String,\n onIconClick: Function,\n autosize: [Boolean, Object],\n errorMessage: String,\n errorMessageAlign: String,\n type: {\n type: String,\n \"default\": 'text'\n }\n }),\n data: function data() {\n return {\n focused: false\n };\n },\n watch: {\n value: function value() {\n this.$nextTick(this.adjustSize);\n }\n },\n mounted: function mounted() {\n this.format();\n this.$nextTick(this.adjustSize);\n },\n computed: {\n showClear: function showClear() {\n return this.clearable && this.focused && this.value !== '' && isDef(this.value) && !this.readonly;\n },\n listeners: function listeners() {\n return _extends({}, this.$listeners, {\n input: this.onInput,\n keypress: this.onKeypress,\n focus: this.onFocus,\n blur: this.onBlur\n });\n },\n labelStyle: function labelStyle() {\n var labelWidth = this.labelWidth;\n\n if (labelWidth) {\n var width = isNumber(String(labelWidth)) ? labelWidth + \"px\" : labelWidth;\n return {\n maxWidth: width,\n minWidth: width\n };\n }\n }\n },\n methods: {\n focus: function focus() {\n this.$refs.input && this.$refs.input.focus();\n },\n blur: function blur() {\n this.$refs.input && this.$refs.input.blur();\n },\n // native maxlength not work when type = number\n format: function format(target) {\n if (target === void 0) {\n target = this.$refs.input;\n }\n\n var _target = target,\n value = _target.value;\n var maxlength = this.$attrs.maxlength;\n\n if (this.type === 'number' && isDef(maxlength) && value.length > maxlength) {\n value = value.slice(0, maxlength);\n target.value = value;\n }\n\n return value;\n },\n onInput: function onInput(event) {\n this.$emit('input', this.format(event.target));\n },\n onFocus: function onFocus(event) {\n this.focused = true;\n this.$emit('focus', event); // hack for safari\n\n /* istanbul ignore if */\n\n if (this.readonly) {\n this.blur();\n }\n },\n onBlur: function onBlur(event) {\n this.focused = false;\n this.$emit('blur', event); // Hack for iOS12 page scroll\n // https://developers.weixin.qq.com/community/develop/doc/00044ae90742f8c82fb78fcae56800\n\n /* istanbul ignore next */\n\n if (isIOS()) {\n window.scrollTo(0, getRootScrollTop());\n }\n },\n onClickLeftIcon: function onClickLeftIcon() {\n this.$emit('click-left-icon');\n },\n onClickRightIcon: function onClickRightIcon() {\n // compatible old version\n this.$emit('click-icon');\n this.$emit('click-right-icon');\n this.onIconClick && this.onIconClick();\n },\n onClear: function onClear(event) {\n preventDefault(event);\n this.$emit('input', '');\n this.$emit('clear');\n },\n onKeypress: function onKeypress(event) {\n if (this.type === 'number') {\n var keyCode = event.keyCode;\n var allowPoint = String(this.value).indexOf('.') === -1;\n var isValidKey = keyCode >= 48 && keyCode <= 57 || keyCode === 46 && allowPoint || keyCode === 45;\n\n if (!isValidKey) {\n preventDefault(event);\n }\n } // trigger blur after click keyboard search button\n\n /* istanbul ignore next */\n\n\n if (this.type === 'search' && event.keyCode === 13) {\n this.blur();\n }\n\n this.$emit('keypress', event);\n },\n adjustSize: function adjustSize() {\n var input = this.$refs.input;\n\n if (!(this.type === 'textarea' && this.autosize) || !input) {\n return;\n }\n\n input.style.height = 'auto';\n var height = input.scrollHeight;\n\n if (isObj(this.autosize)) {\n var _this$autosize = this.autosize,\n maxHeight = _this$autosize.maxHeight,\n minHeight = _this$autosize.minHeight;\n\n if (maxHeight) {\n height = Math.min(height, maxHeight);\n }\n\n if (minHeight) {\n height = Math.max(height, minHeight);\n }\n }\n\n if (height) {\n input.style.height = height + 'px';\n }\n },\n renderInput: function renderInput() {\n var h = this.$createElement;\n var inputProps = {\n ref: 'input',\n \"class\": bem('control', this.inputAlign),\n domProps: {\n value: this.value\n },\n attrs: _extends({}, this.$attrs, {\n readonly: this.readonly\n }),\n on: this.listeners\n };\n\n if (this.type === 'textarea') {\n return h(\"textarea\", _mergeJSXProps([{}, inputProps]));\n }\n\n return h(\"input\", _mergeJSXProps2([{\n \"attrs\": {\n \"type\": this.type\n }\n }, inputProps]));\n },\n renderLeftIcon: function renderLeftIcon() {\n var h = this.$createElement;\n var showLeftIcon = this.slots('left-icon') || this.leftIcon;\n\n if (showLeftIcon) {\n return h(\"div\", {\n \"class\": bem('left-icon'),\n \"on\": {\n \"click\": this.onClickLeftIcon\n }\n }, [this.slots('left-icon') || h(Icon, {\n \"attrs\": {\n \"name\": this.leftIcon\n }\n })]);\n }\n },\n renderRightIcon: function renderRightIcon() {\n var h = this.$createElement;\n var slots = this.slots;\n var showRightIcon = slots('right-icon') || slots('icon') || this.rightIcon || this.icon;\n\n if (showRightIcon) {\n return h(\"div\", {\n \"class\": bem('right-icon'),\n \"on\": {\n \"click\": this.onClickRightIcon\n }\n }, [slots('right-icon') || slots('icon') || h(Icon, {\n \"attrs\": {\n \"name\": this.rightIcon || this.icon\n }\n })]);\n }\n }\n },\n render: function render(h) {\n var _bem;\n\n var slots = this.slots,\n labelAlign = this.labelAlign;\n var scopedSlots = {\n icon: this.renderLeftIcon\n };\n\n if (slots('label')) {\n scopedSlots.title = function () {\n return slots('label');\n };\n }\n\n return h(Cell, {\n \"attrs\": {\n \"icon\": this.leftIcon,\n \"size\": this.size,\n \"title\": this.label,\n \"center\": this.center,\n \"border\": this.border,\n \"isLink\": this.isLink,\n \"required\": this.required,\n \"titleStyle\": this.labelStyle,\n \"titleClass\": bem('label', labelAlign)\n },\n \"class\": bem((_bem = {\n error: this.error,\n disabled: this.$attrs.disabled\n }, _bem[\"label-\" + labelAlign] = labelAlign, _bem['min-height'] = this.type === 'textarea' && !this.autosize, _bem)),\n \"scopedSlots\": scopedSlots\n }, [h(\"div\", {\n \"class\": bem('body')\n }, [this.renderInput(), this.showClear && h(Icon, {\n \"attrs\": {\n \"name\": \"clear\"\n },\n \"class\": bem('clear'),\n \"on\": {\n \"touchstart\": this.onClear\n }\n }), this.renderRightIcon(), slots('button') && h(\"div\", {\n \"class\": bem('button')\n }, [slots('button')])]), this.errorMessage && h(\"div\", {\n \"class\": bem('error-message', this.errorMessageAlign)\n }, [this.errorMessage])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/field/index.js\n// module id = null\n// module chunks = ","import { use, isDef } from '../utils';\nimport { PopupMixin } from '../mixins/popup';\nimport Icon from '../icon';\nimport Loading from '../loading';\n\nvar _use = use('toast'),\n sfc = _use[0],\n bem = _use[1];\n\nvar STYLE = ['success', 'fail', 'loading'];\nexport default sfc({\n mixins: [PopupMixin],\n props: {\n className: null,\n forbidClick: Boolean,\n message: [String, Number],\n type: {\n type: String,\n \"default\": 'text'\n },\n loadingType: {\n type: String,\n \"default\": 'circular'\n },\n position: {\n type: String,\n \"default\": 'middle'\n },\n lockScroll: {\n type: Boolean,\n \"default\": false\n }\n },\n data: function data() {\n return {\n clickable: false\n };\n },\n mounted: function mounted() {\n this.toggleClickale();\n },\n destroyed: function destroyed() {\n this.toggleClickale();\n },\n watch: {\n value: function value() {\n this.toggleClickale();\n },\n forbidClick: function forbidClick() {\n this.toggleClickale();\n }\n },\n methods: {\n toggleClickale: function toggleClickale() {\n var clickable = this.value && this.forbidClick;\n\n if (this.clickable !== clickable) {\n this.clickable = clickable;\n var action = clickable ? 'add' : 'remove';\n document.body.classList[action]('van-toast--unclickable');\n }\n }\n },\n render: function render(h) {\n var _this = this;\n\n var type = this.type,\n message = this.message;\n var style = STYLE.indexOf(type) !== -1 ? 'default' : type;\n\n var Content = function Content() {\n switch (style) {\n case 'text':\n return h(\"div\", [message]);\n\n case 'html':\n return h(\"div\", {\n \"domProps\": {\n \"innerHTML\": message\n }\n });\n\n default:\n return [type === 'loading' ? h(Loading, {\n \"attrs\": {\n \"color\": \"white\",\n \"type\": _this.loadingType\n }\n }) : h(Icon, {\n \"class\": bem('icon'),\n \"attrs\": {\n \"name\": type\n }\n }), isDef(message) && h(\"div\", {\n \"class\": bem('text')\n }, [message])];\n }\n };\n\n return h(\"transition\", {\n \"attrs\": {\n \"name\": \"van-fade\"\n }\n }, [h(\"div\", {\n \"directives\": [{\n name: \"show\",\n value: this.value\n }],\n \"class\": [bem([style, this.position]), this.className]\n }, [Content()])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/toast/Toast.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport Vue from 'vue';\nimport VueToast from './Toast';\nimport { isObj, isServer } from '../utils';\nvar defaultOptions = {\n type: 'text',\n mask: false,\n value: true,\n message: '',\n className: '',\n onClose: null,\n duration: 3000,\n position: 'middle',\n forbidClick: false,\n loadingType: 'circular',\n getContainer: 'body',\n overlayStyle: null\n};\n\nvar parseOptions = function parseOptions(message) {\n return isObj(message) ? message : {\n message: message\n };\n};\n\nvar queue = [];\nvar multiple = false;\n\nvar currentOptions = _extends({}, defaultOptions);\n\nfunction createInstance() {\n /* istanbul ignore if */\n if (isServer) {\n return {};\n }\n\n if (!queue.length || multiple) {\n var toast = new (Vue.extend(VueToast))({\n el: document.createElement('div')\n });\n queue.push(toast);\n }\n\n return queue[queue.length - 1];\n} // transform toast options to popup props\n\n\nfunction transformer(options) {\n options.overlay = options.mask;\n return options;\n}\n\nfunction Toast(options) {\n if (options === void 0) {\n options = {};\n }\n\n var toast = createInstance(); // should add z-index if previous toast has not disappeared\n\n if (toast.value) {\n toast.updateZIndex();\n }\n\n options = _extends({}, currentOptions, parseOptions(options), {\n clear: function clear() {\n toast.value = false;\n\n if (options.onClose) {\n options.onClose();\n }\n\n if (multiple && !isServer) {\n clearTimeout(toast.timer);\n queue = queue.filter(function (item) {\n return item !== toast;\n });\n var parent = toast.$el.parentNode;\n\n if (parent) {\n parent.removeChild(toast.$el);\n }\n\n toast.$destroy();\n }\n }\n });\n\n _extends(toast, transformer(options));\n\n clearTimeout(toast.timer);\n\n if (options.duration > 0) {\n toast.timer = setTimeout(function () {\n toast.clear();\n }, options.duration);\n }\n\n return toast;\n}\n\nvar createMethod = function createMethod(type) {\n return function (options) {\n return Toast(_extends({\n type: type\n }, parseOptions(options)));\n };\n};\n\n['loading', 'success', 'fail'].forEach(function (method) {\n Toast[method] = createMethod(method);\n});\n\nToast.clear = function (all) {\n if (queue.length) {\n if (all) {\n queue.forEach(function (toast) {\n toast.clear();\n });\n queue = [];\n } else if (!multiple) {\n queue[0].clear();\n } else {\n queue.shift().clear();\n }\n }\n};\n\nToast.setDefaultOptions = function (options) {\n _extends(currentOptions, options);\n};\n\nToast.resetDefaultOptions = function () {\n currentOptions = _extends({}, defaultOptions);\n};\n\nToast.allowMultiple = function (value) {\n if (value === void 0) {\n value = true;\n }\n\n multiple = value;\n};\n\nToast.install = function () {\n Vue.use(VueToast);\n};\n\nVue.prototype.$toast = Toast;\nexport default Toast;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/toast/index.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../utils';\nimport { emit, inherit } from '../utils/functional';\nimport { routeProps, functionalRoute } from '../utils/router';\nimport Loading from '../loading'; // Types\n\nvar _use = use('button'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction Button(h, props, slots, ctx) {\n var tag = props.tag,\n type = props.type,\n disabled = props.disabled,\n loading = props.loading,\n hairline = props.hairline,\n loadingText = props.loadingText;\n\n var onClick = function onClick(event) {\n if (!loading && !disabled) {\n emit(ctx, 'click', event);\n functionalRoute(ctx);\n }\n };\n\n var onTouchstart = function onTouchstart(event) {\n emit(ctx, 'touchstart', event);\n };\n\n var classes = [bem([type, props.size, {\n loading: loading,\n disabled: disabled,\n hairline: hairline,\n block: props.block,\n plain: props.plain,\n round: props.round,\n square: props.square,\n 'bottom-action': props.bottomAction\n }]), {\n 'van-hairline--surround': hairline\n }];\n return h(tag, _mergeJSXProps([{\n \"class\": classes,\n \"attrs\": {\n \"type\": props.nativeType,\n \"disabled\": disabled\n },\n \"on\": {\n \"click\": onClick,\n \"touchstart\": onTouchstart\n }\n }, inherit(ctx)]), [loading ? [h(Loading, {\n \"attrs\": {\n \"size\": props.loadingSize,\n \"color\": type === 'default' ? undefined : ''\n }\n }), loadingText && h(\"span\", {\n \"class\": bem('loading-text')\n }, [loadingText])] : h(\"span\", {\n \"class\": bem('text')\n }, [slots[\"default\"] ? slots[\"default\"]() : props.text])]);\n}\n\nButton.props = _extends({}, routeProps, {\n text: String,\n block: Boolean,\n plain: Boolean,\n round: Boolean,\n square: Boolean,\n loading: Boolean,\n hairline: Boolean,\n disabled: Boolean,\n nativeType: String,\n loadingText: String,\n bottomAction: Boolean,\n tag: {\n type: String,\n \"default\": 'button'\n },\n type: {\n type: String,\n \"default\": 'default'\n },\n size: {\n type: String,\n \"default\": 'normal'\n },\n loadingSize: {\n type: String,\n \"default\": '20px'\n }\n});\nexport default sfc(Button);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/button/index.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport Vue from 'vue';\nimport VanDialog from './Dialog';\nimport { isServer, isInDocument } from '../utils';\nvar instance;\n\nfunction initInstance() {\n if (instance) {\n instance.$destroy();\n }\n\n instance = new (Vue.extend(VanDialog))({\n el: document.createElement('div'),\n // avoid missing animation when first rendered\n propsData: {\n lazyRender: false\n }\n });\n instance.$on('input', function (value) {\n instance.value = value;\n });\n}\n\nfunction Dialog(options) {\n /* istanbul ignore if */\n if (isServer) {\n return Promise.resolve();\n }\n\n return new Promise(function (resolve, reject) {\n if (!instance || !isInDocument(instance.$el)) {\n initInstance();\n }\n\n _extends(instance, Dialog.currentOptions, options, {\n resolve: resolve,\n reject: reject\n });\n });\n}\n\nDialog.defaultOptions = {\n value: true,\n title: '',\n message: '',\n overlay: true,\n className: '',\n lockScroll: true,\n beforeClose: null,\n messageAlign: '',\n getContainer: 'body',\n cancelButtonText: '',\n cancelButtonColor: null,\n confirmButtonText: '',\n confirmButtonColor: null,\n showConfirmButton: true,\n showCancelButton: false,\n closeOnClickOverlay: false,\n callback: function callback(action) {\n instance[action === 'confirm' ? 'resolve' : 'reject'](action);\n }\n};\nDialog.alert = Dialog;\n\nDialog.confirm = function (options) {\n return Dialog(_extends({\n showCancelButton: true\n }, options));\n};\n\nDialog.close = function () {\n if (instance) {\n instance.value = false;\n }\n};\n\nDialog.setDefaultOptions = function (options) {\n _extends(Dialog.currentOptions, options);\n};\n\nDialog.resetDefaultOptions = function () {\n Dialog.currentOptions = _extends({}, Dialog.defaultOptions);\n};\n\nDialog.resetDefaultOptions();\n\nDialog.install = function () {\n Vue.use(VanDialog);\n};\n\nVue.prototype.$dialog = Dialog;\nexport default Dialog;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/dialog/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\nimport { PopupMixin } from '../mixins/popup';\nimport Button from '../button';\n\nvar _use = use('dialog'),\n sfc = _use[0],\n bem = _use[1],\n t = _use[2];\n\nexport default sfc({\n mixins: [PopupMixin],\n props: {\n title: String,\n message: String,\n className: null,\n callback: Function,\n beforeClose: Function,\n messageAlign: String,\n cancelButtonText: String,\n cancelButtonColor: String,\n confirmButtonText: String,\n confirmButtonColor: String,\n showCancelButton: Boolean,\n showConfirmButton: {\n type: Boolean,\n \"default\": true\n },\n overlay: {\n type: Boolean,\n \"default\": true\n },\n closeOnClickOverlay: {\n type: Boolean,\n \"default\": false\n }\n },\n data: function data() {\n return {\n loading: {\n confirm: false,\n cancel: false\n }\n };\n },\n methods: {\n onClickOverlay: function onClickOverlay() {\n this.handleAction('overlay');\n },\n handleAction: function handleAction(action) {\n var _this = this;\n\n this.$emit(action);\n\n if (this.beforeClose) {\n this.loading[action] = true;\n this.beforeClose(action, function (state) {\n if (state !== false) {\n _this.onClose(action);\n }\n\n _this.loading[action] = false;\n });\n } else {\n this.onClose(action);\n }\n },\n onClose: function onClose(action) {\n this.close();\n\n if (this.callback) {\n this.callback(action);\n }\n }\n },\n render: function render(h) {\n var _bem,\n _this2 = this;\n\n if (!this.shouldRender) {\n return;\n }\n\n var title = this.title,\n message = this.message,\n messageAlign = this.messageAlign;\n var children = this.slots();\n var Title = title && h(\"div\", {\n \"class\": bem('header', {\n isolated: !message && !children\n })\n }, [title]);\n var Content = (children || message) && h(\"div\", {\n \"class\": bem('content')\n }, [children || h(\"div\", {\n \"domProps\": {\n \"innerHTML\": message\n },\n \"class\": bem('message', (_bem = {\n 'has-title': title\n }, _bem[messageAlign] = messageAlign, _bem))\n })]);\n var hasButtons = this.showCancelButton && this.showConfirmButton;\n var ButtonGroup = h(\"div\", {\n \"class\": ['van-hairline--top', bem('footer', {\n buttons: hasButtons\n })]\n }, [this.showCancelButton && h(Button, {\n \"attrs\": {\n \"size\": \"large\",\n \"loading\": this.loading.cancel,\n \"text\": this.cancelButtonText || t('cancel')\n },\n \"class\": bem('cancel'),\n \"style\": {\n color: this.cancelButtonColor\n },\n \"on\": {\n \"click\": function click() {\n _this2.handleAction('cancel');\n }\n }\n }), this.showConfirmButton && h(Button, {\n \"attrs\": {\n \"size\": \"large\",\n \"loading\": this.loading.confirm,\n \"text\": this.confirmButtonText || t('confirm')\n },\n \"class\": [bem('confirm'), {\n 'van-hairline--left': hasButtons\n }],\n \"style\": {\n color: this.confirmButtonColor\n },\n \"on\": {\n \"click\": function click() {\n _this2.handleAction('confirm');\n }\n }\n })]);\n return h(\"transition\", {\n \"attrs\": {\n \"name\": \"van-dialog-bounce\"\n }\n }, [h(\"div\", {\n \"directives\": [{\n name: \"show\",\n value: this.value\n }],\n \"class\": [bem(), this.className]\n }, [Title, Content, ButtonGroup])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/dialog/Dialog.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { use, isAndroid } from '../utils';\nimport Cell from '../cell';\nimport Field from '../field';\n\nvar _use = use('address-edit-detail'),\n sfc = _use[0],\n bem = _use[1],\n t = _use[2];\n\nvar android = isAndroid();\nexport default sfc({\n props: {\n value: String,\n error: Boolean,\n focused: Boolean,\n detailRows: Number,\n searchResult: Array,\n showSearchResult: Boolean\n },\n methods: {\n onSelect: function onSelect(express) {\n this.$emit('select-search', express);\n this.$emit('input', ((express.address || '') + \" \" + (express.name || '')).trim());\n },\n onFinish: function onFinish() {\n this.$refs.field.blur();\n },\n renderFinish: function renderFinish() {\n var h = this.$createElement;\n var show = this.value && this.focused && android;\n\n if (show) {\n return h(\"div\", {\n \"class\": bem('finish'),\n \"on\": {\n \"click\": this.onFinish\n }\n }, [t('complete')]);\n }\n },\n renderSearchResult: function renderSearchResult() {\n var _this = this;\n\n var h = this.$createElement;\n var searchResult = this.searchResult;\n var show = this.focused && searchResult && this.showSearchResult;\n\n if (show) {\n return searchResult.map(function (express) {\n return h(Cell, {\n \"key\": express.name + express.address,\n \"attrs\": {\n \"title\": express.name,\n \"label\": express.address,\n \"icon\": \"location-o\",\n \"clickable\": true\n },\n \"on\": {\n \"click\": function click() {\n _this.onSelect(express);\n }\n }\n });\n });\n }\n }\n },\n render: function render(h) {\n return h(Cell, {\n \"class\": bem()\n }, [h(Field, {\n \"attrs\": {\n \"autosize\": true,\n \"rows\": this.detailRows,\n \"clearable\": !android,\n \"type\": \"textarea\",\n \"maxlength\": \"200\",\n \"value\": this.value,\n \"error\": this.error,\n \"label\": t('label'),\n \"placeholder\": t('placeholder')\n },\n \"ref\": \"field\",\n \"scopedSlots\": {\n icon: this.renderFinish\n },\n \"on\": _extends({}, this.$listeners)\n }), this.renderSearchResult()]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/address-edit/Detail.js\n// module id = null\n// module chunks = ","/**\n * Common Switch Props\n */\nexport var switchProps = {\n value: null,\n loading: Boolean,\n disabled: Boolean,\n activeColor: String,\n inactiveColor: String,\n activeValue: {\n type: null,\n \"default\": true\n },\n inactiveValue: {\n type: null,\n \"default\": false\n },\n size: {\n type: String,\n \"default\": '30px'\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/switch/shared.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../utils';\nimport Loading from '../loading';\nimport { switchProps } from './shared';\nimport { emit, inherit } from '../utils/functional'; // Types\n\nvar _use = use('switch'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction Switch(h, props, slots, ctx) {\n var value = props.value,\n loading = props.loading,\n disabled = props.disabled,\n activeValue = props.activeValue,\n inactiveValue = props.inactiveValue;\n var checked = value === activeValue;\n var style = {\n fontSize: props.size,\n backgroundColor: checked ? props.activeColor : props.inactiveColor\n };\n\n var onClick = function onClick() {\n if (!disabled && !loading) {\n var newValue = checked ? inactiveValue : activeValue;\n emit(ctx, 'input', newValue);\n emit(ctx, 'change', newValue);\n }\n };\n\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem({\n on: checked,\n disabled: disabled\n }),\n \"style\": style,\n \"on\": {\n \"click\": onClick\n }\n }, inherit(ctx)]), [h(\"div\", {\n \"class\": bem('node')\n }, [loading && h(Loading, {\n \"class\": bem('loading')\n })])]);\n}\n\nSwitch.props = switchProps;\nexport default sfc(Switch);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/switch/index.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../utils';\nimport { inherit } from '../utils/functional';\nimport Cell from '../cell';\nimport Switch from '../switch';\nimport { switchProps } from '../switch/shared'; // Types\n\nvar _use = use('switch-cell'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction SwitchCell(h, props, slots, ctx) {\n return h(Cell, _mergeJSXProps([{\n \"attrs\": {\n \"center\": true,\n \"title\": props.title,\n \"border\": props.border\n },\n \"class\": bem()\n }, inherit(ctx)]), [h(Switch, {\n \"props\": _extends({}, props),\n \"on\": _extends({}, ctx.listeners)\n })]);\n}\n\nSwitchCell.props = _extends({}, switchProps, {\n title: String,\n border: Boolean,\n size: {\n type: String,\n \"default\": '24px'\n }\n});\nexport default sfc(SwitchCell);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/switch-cell/index.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { use, isObj } from '../utils';\nimport { isMobile } from '../utils/validate/mobile';\nimport Area from '../area';\nimport Field from '../field';\nimport Popup from '../popup';\nimport Toast from '../toast';\nimport Button from '../button';\nimport Dialog from '../dialog';\nimport Detail from './Detail';\nimport SwitchCell from '../switch-cell';\n\nvar _use = use('address-edit'),\n sfc = _use[0],\n bem = _use[1],\n t = _use[2];\n\nvar defaultData = {\n name: '',\n tel: '',\n country: '',\n province: '',\n city: '',\n county: '',\n areaCode: '',\n postalCode: '',\n addressDetail: '',\n isDefault: false\n};\nexport default sfc({\n props: {\n areaList: Object,\n isSaving: Boolean,\n isDeleting: Boolean,\n validator: Function,\n showDelete: Boolean,\n showPostal: Boolean,\n searchResult: Array,\n showSetDefault: Boolean,\n showSearchResult: Boolean,\n saveButtonText: String,\n deleteButtonText: String,\n showArea: {\n type: Boolean,\n \"default\": true\n },\n showDetail: {\n type: Boolean,\n \"default\": true\n },\n detailRows: {\n type: Number,\n \"default\": 1\n },\n addressInfo: {\n type: Object,\n \"default\": function _default() {\n return _extends({}, defaultData);\n }\n },\n telValidator: {\n type: Function,\n \"default\": isMobile\n },\n areaColumnsPlaceholder: {\n type: Array,\n \"default\": function _default() {\n return [];\n }\n }\n },\n data: function data() {\n return {\n data: {},\n showAreaPopup: false,\n detailFocused: false,\n errorInfo: {\n tel: false,\n name: false,\n postalCode: false,\n addressDetail: false\n }\n };\n },\n computed: {\n areaListLoaded: function areaListLoaded() {\n return isObj(this.areaList) && Object.keys(this.areaList).length;\n },\n areaText: function areaText() {\n var _this$data = this.data,\n country = _this$data.country,\n province = _this$data.province,\n city = _this$data.city,\n county = _this$data.county,\n areaCode = _this$data.areaCode;\n\n if (areaCode) {\n var arr = [country, province, city, county];\n\n if (province && province === city) {\n arr.splice(1, 1);\n }\n\n return arr.filter(function (text) {\n return text;\n }).join('/');\n }\n\n return '';\n }\n },\n watch: {\n addressInfo: {\n handler: function handler(val) {\n this.data = _extends({}, defaultData, val);\n this.setAreaCode(val.areaCode);\n },\n deep: true,\n immediate: true\n },\n areaList: function areaList() {\n this.setAreaCode(this.data.areaCode);\n }\n },\n methods: {\n onFocus: function onFocus(key) {\n this.errorInfo[key] = false;\n this.detailFocused = key === 'addressDetail';\n this.$emit('focus', key);\n },\n onChangeDetail: function onChangeDetail(val) {\n this.data.addressDetail = val;\n this.$emit('change-detail', val);\n },\n onAreaConfirm: function onAreaConfirm(values) {\n if (values.some(function (value) {\n return !value.code;\n })) {\n Toast(t('areaEmpty'));\n return;\n }\n\n this.showAreaPopup = false;\n this.assignAreaValues();\n this.$emit('change-area', values);\n },\n assignAreaValues: function assignAreaValues() {\n var area = this.$refs.area;\n\n if (area) {\n var detail = area.getArea();\n detail.areaCode = detail.code;\n delete detail.code;\n\n _extends(this.data, detail);\n }\n },\n onSave: function onSave() {\n var _this = this;\n\n var items = ['name', 'tel', 'areaCode', 'addressDetail'];\n\n if (this.showPostal) {\n items.push('postalCode');\n }\n\n var isValid = items.every(function (item) {\n var msg = _this.getErrorMessage(item);\n\n if (msg) {\n _this.errorInfo[item] = true;\n Toast(msg);\n }\n\n return !msg;\n });\n\n if (isValid && !this.isSaving) {\n this.$emit('save', this.data);\n }\n },\n getErrorMessage: function getErrorMessage(key) {\n var value = String(this.data[key] || '').trim();\n\n if (this.validator) {\n var message = this.validator(key, value);\n\n if (message) {\n return message;\n }\n }\n\n switch (key) {\n case 'name':\n return value ? '' : t('nameEmpty');\n\n case 'tel':\n return this.telValidator(value) ? '' : t('telInvalid');\n\n case 'areaCode':\n return value ? '' : t('areaEmpty');\n\n case 'addressDetail':\n return value ? '' : t('addressEmpty');\n\n case 'postalCode':\n return value && !/^\\d{6}$/.test(value) ? t('postalEmpty') : '';\n }\n },\n onDelete: function onDelete() {\n var _this2 = this;\n\n Dialog.confirm({\n title: t('confirmDelete')\n }).then(function () {\n _this2.$emit('delete', _this2.data);\n })[\"catch\"](function () {\n _this2.$emit('cancel-delete', _this2.data);\n });\n },\n // get values of area component\n getArea: function getArea() {\n return this.$refs.area ? this.$refs.area.getValues() : [];\n },\n // set area code to area component\n setAreaCode: function setAreaCode(code) {\n this.data.areaCode = code || '';\n\n if (code) {\n this.$nextTick(this.assignAreaValues);\n }\n },\n setAddressDetail: function setAddressDetail(value) {\n this.data.addressDetail = value;\n },\n onDetailBlur: function onDetailBlur() {\n var _this3 = this;\n\n // await for click search event\n setTimeout(function () {\n _this3.detailFocused = false;\n });\n }\n },\n render: function render(h) {\n var _this4 = this;\n\n var data = this.data,\n errorInfo = this.errorInfo;\n\n var onFocus = function onFocus(name) {\n return function () {\n return _this4.onFocus(name);\n };\n }; // hide bottom field when use search && detail get focused\n\n\n var hideBottomFields = this.searchResult.length && this.detailFocused;\n return h(\"div\", {\n \"class\": bem()\n }, [h(Field, {\n \"attrs\": {\n \"clearable\": true,\n \"label\": t('name'),\n \"placeholder\": t('namePlaceholder'),\n \"error\": errorInfo.name\n },\n \"on\": {\n \"focus\": onFocus('name')\n },\n \"model\": {\n value: data.name,\n callback: function callback($$v) {\n data.name = $$v;\n }\n }\n }), h(Field, {\n \"attrs\": {\n \"clearable\": true,\n \"type\": \"tel\",\n \"label\": t('tel'),\n \"placeholder\": t('telPlaceholder'),\n \"error\": errorInfo.tel\n },\n \"on\": {\n \"focus\": onFocus('tel')\n },\n \"model\": {\n value: data.tel,\n callback: function callback($$v) {\n data.tel = $$v;\n }\n }\n }), h(Field, {\n \"directives\": [{\n name: \"show\",\n value: this.showArea\n }],\n \"attrs\": {\n \"readonly\": true,\n \"label\": t('area'),\n \"placeholder\": t('areaPlaceholder'),\n \"value\": this.areaText\n },\n \"on\": {\n \"click\": function click() {\n _this4.showAreaPopup = true;\n }\n }\n }), h(Detail, {\n \"directives\": [{\n name: \"show\",\n value: this.showDetail\n }],\n \"attrs\": {\n \"focused\": this.detailFocused,\n \"value\": data.addressDetail,\n \"error\": errorInfo.addressDetail,\n \"detailRows\": this.detailRows,\n \"searchResult\": this.searchResult,\n \"showSearchResult\": this.showSearchResult\n },\n \"on\": {\n \"focus\": onFocus('addressDetail'),\n \"blur\": this.onDetailBlur,\n \"input\": this.onChangeDetail,\n \"select-search\": function selectSearch(event) {\n _this4.$emit('select-search', event);\n }\n }\n }), this.showPostal && h(Field, {\n \"directives\": [{\n name: \"show\",\n value: !hideBottomFields\n }],\n \"attrs\": {\n \"type\": \"tel\",\n \"maxlength\": \"6\",\n \"label\": t('postal'),\n \"placeholder\": t('postal'),\n \"error\": errorInfo.postalCode\n },\n \"on\": {\n \"focus\": onFocus('postalCode')\n },\n \"model\": {\n value: data.postalCode,\n callback: function callback($$v) {\n data.postalCode = $$v;\n }\n }\n }), this.slots(), this.showSetDefault && h(SwitchCell, {\n \"directives\": [{\n name: \"show\",\n value: !hideBottomFields\n }],\n \"attrs\": {\n \"title\": t('defaultAddress')\n },\n \"on\": {\n \"change\": function change(event) {\n _this4.$emit('change-default', event);\n }\n },\n \"model\": {\n value: data.isDefault,\n callback: function callback($$v) {\n data.isDefault = $$v;\n }\n }\n }), h(\"div\", {\n \"directives\": [{\n name: \"show\",\n value: !hideBottomFields\n }],\n \"class\": bem('buttons')\n }, [h(Button, {\n \"attrs\": {\n \"block\": true,\n \"loading\": this.isSaving,\n \"type\": \"danger\",\n \"text\": this.saveButtonText || t('save')\n },\n \"on\": {\n \"click\": this.onSave\n }\n }), this.showDelete && h(Button, {\n \"attrs\": {\n \"block\": true,\n \"loading\": this.isDeleting,\n \"text\": this.deleteButtonText || t('delete')\n },\n \"on\": {\n \"click\": this.onDelete\n }\n })]), h(Popup, {\n \"attrs\": {\n \"position\": \"bottom\",\n \"lazyRender\": false,\n \"getContainer\": \"body\"\n },\n \"model\": {\n value: _this4.showAreaPopup,\n callback: function callback($$v) {\n _this4.showAreaPopup = $$v;\n }\n }\n }, [h(Area, {\n \"ref\": \"area\",\n \"attrs\": {\n \"loading\": !this.areaListLoaded,\n \"value\": data.areaCode,\n \"areaList\": this.areaList,\n \"columnsPlaceholder\": this.areaColumnsPlaceholder\n },\n \"on\": {\n \"confirm\": this.onAreaConfirm,\n \"cancel\": function cancel() {\n _this4.showAreaPopup = false;\n }\n }\n })])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/address-edit/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\n\nvar _use = use('radio-group'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n props: {\n value: null,\n disabled: Boolean\n },\n watch: {\n value: function value(_value) {\n this.$emit('change', _value);\n }\n },\n render: function render(h) {\n return h(\"div\", {\n \"class\": bem()\n }, [this.slots()]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/radio-group/index.js\n// module id = null\n// module chunks = ","/**\n * find parent component by name\n */\nexport var FindParentMixin = {\n data: function data() {\n return {\n parent: null\n };\n },\n methods: {\n findParent: function findParent(name) {\n var parent = this.$parent;\n\n while (parent) {\n if (parent.$options.name === name) {\n this.parent = parent;\n break;\n }\n\n parent = parent.$parent;\n }\n }\n }\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/mixins/find-parent.js\n// module id = null\n// module chunks = ","/**\n * Common part of Checkbox & Radio\n */\nimport Icon from '../icon';\nimport { FindParentMixin } from './find-parent';\nexport var CheckboxMixin = function CheckboxMixin(parent, bem) {\n return {\n mixins: [FindParentMixin],\n props: {\n name: null,\n value: null,\n disabled: Boolean,\n checkedColor: String,\n labelPosition: String,\n labelDisabled: Boolean,\n shape: {\n type: String,\n \"default\": 'round'\n },\n bindGroup: {\n type: Boolean,\n \"default\": true\n }\n },\n created: function created() {\n if (this.bindGroup) {\n this.findParent(parent);\n }\n },\n computed: {\n isDisabled: function isDisabled() {\n return this.parent && this.parent.disabled || this.disabled;\n },\n iconStyle: function iconStyle() {\n var checkedColor = this.checkedColor;\n\n if (checkedColor && this.checked && !this.isDisabled) {\n return {\n borderColor: checkedColor,\n backgroundColor: checkedColor\n };\n }\n }\n },\n render: function render() {\n var _this = this;\n\n var h = arguments[0];\n var slots = this.slots,\n checked = this.checked;\n var CheckIcon = slots('icon', {\n checked: checked\n }) || h(Icon, {\n \"attrs\": {\n \"name\": \"success\"\n },\n \"style\": this.iconStyle\n });\n var Label = slots() && h(\"span\", {\n \"class\": bem('label', [this.labelPosition, {\n disabled: this.isDisabled\n }]),\n \"on\": {\n \"click\": this.onClickLabel\n }\n }, [slots()]);\n return h(\"div\", {\n \"class\": bem(),\n \"on\": {\n \"click\": function click(event) {\n _this.$emit('click', event);\n }\n }\n }, [h(\"div\", {\n \"class\": bem('icon', [this.shape, {\n disabled: this.isDisabled,\n checked: checked\n }]),\n \"on\": {\n \"click\": this.onClickIcon\n }\n }, [CheckIcon]), Label]);\n }\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/mixins/checkbox.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\nimport { CheckboxMixin } from '../mixins/checkbox';\n\nvar _use = use('radio'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n mixins: [CheckboxMixin('van-radio-group', bem)],\n computed: {\n currentValue: {\n get: function get() {\n return this.parent ? this.parent.value : this.value;\n },\n set: function set(val) {\n (this.parent || this).$emit('input', val);\n }\n },\n checked: function checked() {\n return this.currentValue === this.name;\n }\n },\n methods: {\n onClickIcon: function onClickIcon() {\n if (!this.isDisabled) {\n this.currentValue = this.name;\n }\n },\n onClickLabel: function onClickLabel() {\n if (!this.isDisabled && !this.labelDisabled) {\n this.currentValue = this.name;\n }\n }\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/radio/index.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../utils';\nimport { emit, inherit } from '../utils/functional';\nimport Icon from '../icon';\nimport Cell from '../cell';\nimport Radio from '../radio'; // Types\n\nvar _use = use('address-item'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction AddressItem(h, props, slots, ctx) {\n var disabled = props.disabled,\n switchable = props.switchable;\n\n function onSelect() {\n if (switchable) {\n emit(ctx, 'select');\n }\n }\n\n var renderRightIcon = function renderRightIcon() {\n return h(Icon, {\n \"attrs\": {\n \"name\": \"edit\"\n },\n \"class\": bem('edit'),\n \"on\": {\n \"click\": function click(event) {\n event.stopPropagation();\n emit(ctx, 'edit');\n }\n }\n });\n };\n\n var renderContent = function renderContent() {\n var data = props.data;\n var Info = [h(\"div\", {\n \"class\": bem('name')\n }, [data.name + \"\\uFF0C\" + data.tel]), h(\"div\", {\n \"class\": bem('address')\n }, [data.address])];\n return switchable && !disabled ? h(Radio, {\n \"attrs\": {\n \"name\": data.id\n }\n }, [Info]) : Info;\n };\n\n return h(Cell, _mergeJSXProps([{\n \"class\": bem({\n disabled: disabled,\n unswitchable: !switchable\n }),\n \"attrs\": {\n \"valueClass\": bem('value'),\n \"clickable\": switchable && !disabled\n },\n \"scopedSlots\": {\n \"default\": renderContent,\n 'right-icon': renderRightIcon\n },\n \"on\": {\n \"click\": onSelect\n }\n }, inherit(ctx)]));\n}\n\nAddressItem.props = {\n data: Object,\n disabled: Boolean,\n switchable: Boolean\n};\nexport default sfc(AddressItem);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/address-list/Item.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../utils';\nimport { emit, inherit } from '../utils/functional';\nimport Button from '../button';\nimport RadioGroup from '../radio-group';\nimport AddressItem from './Item'; // Types\n\nvar _use = use('address-list'),\n sfc = _use[0],\n bem = _use[1],\n t = _use[2];\n\nfunction AddressList(h, props, slots, ctx) {\n var getList = function getList(list, disabled) {\n return list.map(function (item, index) {\n return h(AddressItem, {\n \"attrs\": {\n \"data\": item,\n \"disabled\": disabled,\n \"switchable\": props.switchable\n },\n \"key\": item.id,\n \"on\": {\n \"select\": function select() {\n emit(ctx, disabled ? 'select-disabled' : 'select', item, index);\n },\n \"edit\": function edit() {\n emit(ctx, disabled ? 'edit-disabled' : 'edit', item, index);\n }\n }\n });\n });\n };\n\n var List = getList(props.list);\n var DisabledList = getList(props.disabledList, true);\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem()\n }, inherit(ctx)]), [slots.top && slots.top(), h(RadioGroup, {\n \"attrs\": {\n \"value\": props.value\n },\n \"on\": {\n \"input\": function input(event) {\n emit(ctx, 'input', event);\n }\n }\n }, [List]), props.disabledText && h(\"div\", {\n \"class\": bem('disabled-text')\n }, [props.disabledText]), DisabledList, slots[\"default\"] && slots[\"default\"](), h(Button, {\n \"attrs\": {\n \"square\": true,\n \"size\": \"large\",\n \"type\": \"danger\",\n \"text\": props.addButtonText || t('add')\n },\n \"class\": bem('add'),\n \"on\": {\n \"click\": function click() {\n emit(ctx, 'add');\n }\n }\n })]);\n}\n\nAddressList.props = {\n list: Array,\n disabledList: Array,\n disabledText: String,\n addButtonText: String,\n value: [String, Number],\n switchable: {\n type: Boolean,\n \"default\": true\n }\n};\nexport default sfc(AddressList);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/address-list/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\nimport Info from '../info';\n\nvar _use = use('badge'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n props: {\n url: String,\n info: [String, Number],\n title: String\n },\n inject: ['vanBadgeGroup'],\n created: function created() {\n this.parent.badges.push(this);\n },\n beforeDestroy: function beforeDestroy() {\n var _this = this;\n\n this.parent.badges = this.parent.badges.filter(function (item) {\n return item !== _this;\n });\n },\n computed: {\n parent: function parent() {\n if (process.env.NODE_ENV !== 'production' && !this.vanBadgeGroup) {\n console.error('[Vant] Badge needs to be child of BadgeGroup');\n }\n\n return this.vanBadgeGroup;\n },\n select: function select() {\n return this.parent.badges.indexOf(this) === +this.parent.activeKey;\n }\n },\n methods: {\n onClick: function onClick() {\n var index = this.parent.badges.indexOf(this);\n this.$emit('click', index);\n this.parent.$emit('change', index);\n }\n },\n render: function render(h) {\n return h(\"a\", {\n \"attrs\": {\n \"href\": this.url\n },\n \"class\": [bem({\n select: this.select\n }), 'van-hairline'],\n \"on\": {\n \"click\": this.onClick\n }\n }, [h(\"div\", {\n \"class\": bem('text')\n }, [this.title, h(Info, {\n \"attrs\": {\n \"info\": this.info\n },\n \"class\": bem('info')\n })])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/badge/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\n\nvar _use = use('badge-group'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n props: {\n activeKey: {\n type: [Number, String],\n \"default\": 0\n }\n },\n provide: function provide() {\n return {\n vanBadgeGroup: this\n };\n },\n data: function data() {\n return {\n badges: []\n };\n },\n render: function render(h) {\n return h(\"div\", {\n \"class\": [bem(), 'van-hairline--top-bottom']\n }, [this.slots()]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/badge-group/index.js\n// module id = null\n// module chunks = ","export var RED = '#f44';\nexport var BLUE = '#1989fa';\nexport var GREEN = '#07c160';\nexport var WHITE = '#fff';\nexport var GRAY_DARK = '#969799';\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/utils/color.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../utils';\nimport { inherit } from '../utils/functional';\nimport { RED, BLUE, GREEN, GRAY_DARK } from '../utils/color'; // Types\n\nvar _use = use('tag'),\n sfc = _use[0],\n bem = _use[1];\n\nvar COLOR_MAP = {\n danger: RED,\n primary: BLUE,\n success: GREEN\n};\n\nfunction Tag(h, props, slots, ctx) {\n var _style;\n\n var type = props.type,\n mark = props.mark,\n plain = props.plain,\n round = props.round,\n size = props.size;\n var color = props.color || type && COLOR_MAP[type] || GRAY_DARK;\n var key = plain ? 'color' : 'backgroundColor';\n var style = (_style = {}, _style[key] = color, _style);\n\n if (props.textColor) {\n style.color = props.textColor;\n }\n\n var classes = {\n mark: mark,\n plain: plain,\n round: round\n };\n\n if (size) {\n classes[size] = size;\n }\n\n return h(\"span\", _mergeJSXProps([{\n \"style\": style,\n \"class\": [bem(classes), {\n 'van-hairline--surround': plain\n }]\n }, inherit(ctx, true)]), [slots[\"default\"] && slots[\"default\"]()]);\n}\n\nTag.props = {\n size: String,\n type: String,\n mark: Boolean,\n color: String,\n plain: Boolean,\n round: Boolean,\n textColor: String\n};\nexport default sfc(Tag);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/tag/index.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use, isDef } from '../utils';\nimport { emit, inherit } from '../utils/functional';\nimport Tag from '../tag'; // Types\n\nvar _use = use('card'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction Card(h, props, slots, ctx) {\n var thumb = props.thumb;\n var showThumb = slots.thumb || thumb;\n var showTag = slots.tag || props.tag;\n var showNum = slots.num || isDef(props.num);\n var showPrice = slots.price || isDef(props.price);\n var showOriginPrice = slots['origin-price'] || isDef(props.originPrice);\n var showBottom = showNum || showPrice || showOriginPrice;\n\n var onThumbClick = function onThumbClick() {\n emit(ctx, 'click-thumb');\n };\n\n var Thumb = showThumb && h(\"a\", {\n \"attrs\": {\n \"href\": props.thumbLink\n },\n \"class\": bem('thumb'),\n \"on\": {\n \"click\": onThumbClick\n }\n }, [slots.thumb ? slots.thumb() : props.lazyLoad ? h(\"img\", {\n \"class\": bem('img'),\n \"directives\": [{\n name: \"lazy\",\n value: thumb\n }]\n }) : h(\"img\", {\n \"class\": bem('img'),\n \"attrs\": {\n \"src\": thumb\n }\n }), showTag && h(\"div\", {\n \"class\": bem('tag')\n }, [slots.tag ? slots.tag() : h(Tag, {\n \"attrs\": {\n \"mark\": true,\n \"type\": \"danger\"\n }\n }, [props.tag])])]);\n var Title = slots.title ? slots.title() : props.title && h(\"div\", {\n \"class\": bem('title')\n }, [props.title]);\n var Desc = slots.desc ? slots.desc() : props.desc && h(\"div\", {\n \"class\": [bem('desc'), 'van-ellipsis']\n }, [props.desc]);\n var Price = showPrice && h(\"div\", {\n \"class\": bem('price')\n }, [slots.price ? slots.price() : props.currency + \" \" + props.price]);\n var OriginPrice = showOriginPrice && h(\"div\", {\n \"class\": bem('origin-price')\n }, [slots['origin-price'] ? slots['origin-price']() : props.currency + \" \" + props.originPrice]);\n var Num = showNum && h(\"div\", {\n \"class\": bem('num')\n }, [slots.num ? slots.num() : \"x \" + props.num]);\n var Footer = slots.footer && h(\"div\", {\n \"class\": bem('footer')\n }, [slots.footer()]);\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem()\n }, inherit(ctx, true)]), [h(\"div\", {\n \"class\": bem('header')\n }, [Thumb, h(\"div\", {\n \"class\": bem('content', {\n centered: props.centered\n })\n }, [Title, Desc, slots.tags && slots.tags(), showBottom && h(\"div\", {\n \"class\": \"van-card__bottom\"\n }, [Price, OriginPrice, Num, slots.bottom && slots.bottom()])])]), Footer]);\n}\n\nCard.props = {\n tag: String,\n desc: String,\n thumb: String,\n title: String,\n centered: Boolean,\n lazyLoad: Boolean,\n thumbLink: String,\n num: [Number, String],\n price: [Number, String],\n originPrice: [Number, String],\n currency: {\n type: String,\n \"default\": '¥'\n }\n};\nexport default sfc(Card);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/card/index.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../utils';\nimport { inherit } from '../utils/functional'; // Types\n\nvar _use = use('cell-group'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction CellGroup(h, props, slots, ctx) {\n var Group = h(\"div\", _mergeJSXProps([{\n \"class\": [bem(), {\n 'van-hairline--top-bottom': props.border\n }]\n }, inherit(ctx, true)]), [slots[\"default\"] && slots[\"default\"]()]);\n\n if (props.title) {\n return h(\"div\", [h(\"div\", {\n \"class\": bem('title')\n }, [props.title]), Group]);\n }\n\n return Group;\n}\n\nCellGroup.props = {\n title: String,\n border: {\n type: Boolean,\n \"default\": true\n }\n};\nexport default sfc(CellGroup);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/cell-group/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\nimport { CheckboxMixin } from '../mixins/checkbox';\n\nvar _use = use('checkbox'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n mixins: [CheckboxMixin('van-checkbox-group', bem)],\n computed: {\n checked: {\n get: function get() {\n return this.parent ? this.parent.value.indexOf(this.name) !== -1 : this.value;\n },\n set: function set(val) {\n if (this.parent) {\n this.setParentValue(val);\n } else {\n this.$emit('input', val);\n }\n }\n }\n },\n watch: {\n value: function value(val) {\n this.$emit('change', val);\n }\n },\n methods: {\n toggle: function toggle() {\n var _this = this;\n\n var checked = !this.checked; // When toggle method is called multiple times at the same time,\n // only the last call is valid.\n // This is a hack for usage inside Cell.\n\n clearTimeout(this.toggleTask);\n this.toggleTask = setTimeout(function () {\n _this.checked = checked;\n });\n },\n onClickIcon: function onClickIcon() {\n if (!this.isDisabled) {\n this.toggle();\n }\n },\n onClickLabel: function onClickLabel() {\n if (!this.isDisabled && !this.labelDisabled) {\n this.toggle();\n }\n },\n setParentValue: function setParentValue(val) {\n var parent = this.parent;\n var value = parent.value.slice();\n\n if (val) {\n if (parent.max && value.length >= parent.max) {\n return;\n }\n /* istanbul ignore else */\n\n\n if (value.indexOf(this.name) === -1) {\n value.push(this.name);\n parent.$emit('input', value);\n }\n } else {\n var index = value.indexOf(this.name);\n /* istanbul ignore else */\n\n if (index !== -1) {\n value.splice(index, 1);\n parent.$emit('input', value);\n }\n }\n }\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/checkbox/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\n\nvar _use = use('checkbox-group'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n props: {\n max: Number,\n value: Array,\n disabled: Boolean\n },\n watch: {\n value: function value(val) {\n this.$emit('change', val);\n }\n },\n render: function render(h) {\n return h(\"div\", {\n \"class\": bem()\n }, [this.slots()]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/checkbox-group/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\nimport { raf, cancel } from '../utils/raf';\nimport { BLUE, WHITE } from '../utils/color';\n\nvar _use = use('circle'),\n sfc = _use[0],\n bem = _use[1];\n\nvar PERIMETER = 3140;\nvar PATH = 'M 530 530 m -500, 0 a 500, 500 0 1, 1 1000, 0 a 500, 500 0 1, 1 -1000, 0';\n\nfunction format(rate) {\n return Math.min(Math.max(rate, 0), 100);\n}\n\nexport default sfc({\n props: {\n text: String,\n value: Number,\n speed: Number,\n size: {\n type: String,\n \"default\": '100px'\n },\n fill: {\n type: String,\n \"default\": 'none'\n },\n rate: {\n type: Number,\n \"default\": 100\n },\n layerColor: {\n type: String,\n \"default\": WHITE\n },\n color: {\n type: String,\n \"default\": BLUE\n },\n strokeWidth: {\n type: Number,\n \"default\": 40\n },\n clockwise: {\n type: Boolean,\n \"default\": true\n }\n },\n computed: {\n style: function style() {\n return {\n width: this.size,\n height: this.size\n };\n },\n layerStyle: function layerStyle() {\n var offset = PERIMETER * (100 - this.value) / 100;\n offset = this.clockwise ? offset : PERIMETER * 2 - offset;\n return {\n stroke: \"\" + this.color,\n strokeDashoffset: offset + \"px\",\n strokeWidth: this.strokeWidth + 1 + \"px\"\n };\n },\n hoverStyle: function hoverStyle() {\n return {\n fill: \"\" + this.fill,\n stroke: \"\" + this.layerColor,\n strokeWidth: this.strokeWidth + \"px\"\n };\n }\n },\n watch: {\n rate: {\n handler: function handler() {\n this.startTime = Date.now();\n this.startRate = this.value;\n this.endRate = format(this.rate);\n this.increase = this.endRate > this.startRate;\n this.duration = Math.abs((this.startRate - this.endRate) * 1000 / this.speed);\n\n if (this.speed) {\n cancel(this.rafId);\n this.rafId = raf(this.animate);\n } else {\n this.$emit('input', this.endRate);\n }\n },\n immediate: true\n }\n },\n methods: {\n animate: function animate() {\n var now = Date.now();\n var progress = Math.min((now - this.startTime) / this.duration, 1);\n var rate = progress * (this.endRate - this.startRate) + this.startRate;\n this.$emit('input', format(parseFloat(rate.toFixed(1))));\n\n if (this.increase ? rate < this.endRate : rate > this.endRate) {\n this.rafId = raf(this.animate);\n }\n }\n },\n render: function render(h) {\n return h(\"div\", {\n \"class\": bem(),\n \"style\": this.style\n }, [h(\"svg\", {\n \"attrs\": {\n \"viewBox\": \"0 0 1060 1060\"\n }\n }, [h(\"path\", {\n \"class\": bem('hover'),\n \"style\": this.hoverStyle,\n \"attrs\": {\n \"d\": PATH\n }\n }), h(\"path\", {\n \"class\": bem('layer'),\n \"style\": this.layerStyle,\n \"attrs\": {\n \"d\": PATH\n }\n })]), this.slots() || this.text && h(\"div\", {\n \"class\": bem('text')\n }, [this.text])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/circle/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\n\nvar _use = use('col'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n props: {\n span: [Number, String],\n offset: [Number, String],\n tag: {\n type: String,\n \"default\": 'div'\n }\n },\n computed: {\n gutter: function gutter() {\n return this.$parent && Number(this.$parent.gutter) || 0;\n },\n style: function style() {\n var padding = this.gutter / 2 + \"px\";\n return this.gutter ? {\n paddingLeft: padding,\n paddingRight: padding\n } : {};\n }\n },\n render: function render(h) {\n var _bem;\n\n var span = this.span,\n offset = this.offset;\n return h(this.tag, {\n \"class\": bem((_bem = {}, _bem[span] = span, _bem[\"offset-\" + offset] = offset, _bem)),\n \"style\": this.style\n }, [this.slots()]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/col/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\n\nvar _use = use('collapse'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n props: {\n accordion: Boolean,\n value: [String, Number, Array],\n border: {\n type: Boolean,\n \"default\": true\n }\n },\n data: function data() {\n return {\n items: []\n };\n },\n methods: {\n \"switch\": function _switch(name, expanded) {\n if (!this.accordion) {\n name = expanded ? this.value.concat(name) : this.value.filter(function (activeName) {\n return activeName !== name;\n });\n }\n\n this.$emit('change', name);\n this.$emit('input', name);\n }\n },\n render: function render(h) {\n return h(\"div\", {\n \"class\": [bem(), {\n 'van-hairline--top-bottom': this.border\n }]\n }, [this.slots()]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/collapse/index.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { use, isDef } from '../utils';\nimport { raf } from '../utils/raf';\nimport Cell from '../cell';\nimport { cellProps } from '../cell/shared';\nimport { FindParentMixin } from '../mixins/find-parent';\n\nvar _use = use('collapse-item'),\n sfc = _use[0],\n bem = _use[1];\n\nvar CELL_SLOTS = ['title', 'icon', 'right-icon'];\nexport default sfc({\n mixins: [FindParentMixin],\n props: _extends({}, cellProps, {\n name: [String, Number],\n disabled: Boolean,\n isLink: {\n type: Boolean,\n \"default\": true\n }\n }),\n data: function data() {\n return {\n show: null,\n inited: null\n };\n },\n computed: {\n items: function items() {\n return this.parent.items;\n },\n index: function index() {\n return this.items.indexOf(this);\n },\n currentName: function currentName() {\n return isDef(this.name) ? this.name : this.index;\n },\n expanded: function expanded() {\n var _this = this;\n\n if (!this.parent) {\n return null;\n }\n\n var value = this.parent.value;\n return this.parent.accordion ? value === this.currentName : value.some(function (name) {\n return name === _this.currentName;\n });\n }\n },\n created: function created() {\n this.findParent('van-collapse');\n this.items.push(this);\n this.show = this.expanded;\n this.inited = this.expanded;\n },\n destroyed: function destroyed() {\n this.items.splice(this.index, 1);\n },\n watch: {\n expanded: function expanded(_expanded, prev) {\n var _this2 = this;\n\n if (prev === null) {\n return;\n }\n\n if (_expanded) {\n this.show = true;\n this.inited = true;\n }\n\n raf(function () {\n var _this2$$refs = _this2.$refs,\n content = _this2$$refs.content,\n wrapper = _this2$$refs.wrapper;\n\n if (!content || !wrapper) {\n return;\n }\n\n var clientHeight = content.clientHeight;\n\n if (clientHeight) {\n var contentHeight = clientHeight + \"px\";\n wrapper.style.height = _expanded ? 0 : contentHeight;\n raf(function () {\n wrapper.style.height = _expanded ? contentHeight : 0;\n });\n } else {\n _this2.onTransitionEnd();\n }\n });\n }\n },\n methods: {\n onClick: function onClick() {\n if (this.disabled) {\n return;\n }\n\n var parent = this.parent;\n var name = parent.accordion && this.currentName === parent.value ? '' : this.currentName;\n var expanded = !this.expanded;\n this.parent[\"switch\"](name, expanded);\n },\n onTransitionEnd: function onTransitionEnd() {\n if (!this.expanded) {\n this.show = false;\n } else {\n this.$refs.wrapper.style.height = null;\n }\n }\n },\n render: function render(h) {\n var _this3 = this;\n\n var titleSlots = CELL_SLOTS.reduce(function (slots, name) {\n if (_this3.slots(name)) {\n slots[name] = function () {\n return _this3.slots(name);\n };\n }\n\n return slots;\n }, {});\n\n if (this.slots('value')) {\n titleSlots[\"default\"] = function () {\n return _this3.slots('value');\n };\n }\n\n var Title = h(Cell, {\n \"class\": bem('title', {\n disabled: this.disabled,\n expanded: this.expanded\n }),\n \"on\": {\n \"click\": this.onClick\n },\n \"scopedSlots\": titleSlots,\n \"props\": _extends({}, this.$props)\n });\n var Content = this.inited && h(\"div\", {\n \"directives\": [{\n name: \"show\",\n value: this.show\n }],\n \"ref\": \"wrapper\",\n \"class\": bem('wrapper'),\n \"on\": {\n \"transitionend\": this.onTransitionEnd\n }\n }, [h(\"div\", {\n \"ref\": \"content\",\n \"class\": bem('content')\n }, [this.slots()])]);\n return h(\"div\", {\n \"class\": [bem(), {\n 'van-hairline--top': this.index\n }]\n }, [Title, Content]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/collapse-item/index.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../utils';\nimport { emit, inherit } from '../utils/functional';\nimport Cell from '../cell'; // Types\n\nvar _use = use('contact-card'),\n sfc = _use[0],\n bem = _use[1],\n t = _use[2];\n\nfunction ContactCard(h, props, slots, ctx) {\n var type = props.type,\n editable = props.editable;\n return h(Cell, _mergeJSXProps([{\n \"attrs\": {\n \"center\": true,\n \"border\": false,\n \"isLink\": editable,\n \"valueClass\": bem('value'),\n \"icon\": type === 'edit' ? 'contact' : 'add-square'\n },\n \"class\": bem([type]),\n \"on\": {\n \"click\": function click(event) {\n if (editable) {\n emit(ctx, 'click', event);\n }\n }\n }\n }, inherit(ctx)]), [type === 'add' ? props.addText || t('addText') : [h(\"div\", [t('name') + \"\\uFF1A\" + props.name]), h(\"div\", [t('tel') + \"\\uFF1A\" + props.tel])]]);\n}\n\nContactCard.props = {\n tel: String,\n name: String,\n addText: String,\n editable: {\n type: Boolean,\n \"default\": true\n },\n type: {\n type: String,\n \"default\": 'add'\n }\n};\nexport default sfc(ContactCard);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/contact-card/index.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { use } from '../utils';\nimport Button from '../button';\nimport Field from '../field';\nimport Toast from '../toast';\nimport Dialog from '../dialog';\nimport { isMobile } from '../utils/validate/mobile';\n\nvar _use = use('contact-edit'),\n sfc = _use[0],\n bem = _use[1],\n t = _use[2];\n\nvar defaultContact = {\n tel: '',\n name: ''\n};\nexport default sfc({\n props: {\n isEdit: Boolean,\n isSaving: Boolean,\n isDeleting: Boolean,\n contactInfo: {\n type: Object,\n \"default\": function _default() {\n return _extends({}, defaultContact);\n }\n },\n telValidator: {\n type: Function,\n \"default\": isMobile\n }\n },\n data: function data() {\n return {\n data: _extends({}, defaultContact, this.contactInfo),\n errorInfo: {\n name: false,\n tel: false\n }\n };\n },\n watch: {\n contactInfo: function contactInfo(val) {\n this.data = _extends({}, defaultContact, val);\n }\n },\n methods: {\n onFocus: function onFocus(key) {\n this.errorInfo[key] = false;\n },\n getErrorMessageByKey: function getErrorMessageByKey(key) {\n var value = this.data[key].trim();\n\n switch (key) {\n case 'name':\n return value ? '' : t('nameEmpty');\n\n case 'tel':\n return this.telValidator(value) ? '' : t('telInvalid');\n }\n },\n onSave: function onSave() {\n var _this = this;\n\n var isValid = ['name', 'tel'].every(function (item) {\n var msg = _this.getErrorMessageByKey(item);\n\n if (msg) {\n _this.errorInfo[item] = true;\n Toast(msg);\n }\n\n return !msg;\n });\n\n if (isValid && !this.isSaving) {\n this.$emit('save', this.data);\n }\n },\n onDelete: function onDelete() {\n var _this2 = this;\n\n Dialog.confirm({\n message: t('confirmDelete')\n }).then(function () {\n _this2.$emit('delete', _this2.data);\n });\n }\n },\n render: function render(h) {\n var _this3 = this;\n\n var data = this.data,\n errorInfo = this.errorInfo;\n\n var onFocus = function onFocus(name) {\n return function () {\n return _this3.onFocus(name);\n };\n };\n\n return h(\"div\", {\n \"class\": bem()\n }, [h(Field, {\n \"attrs\": {\n \"clearable\": true,\n \"maxlength\": \"30\",\n \"label\": t('name'),\n \"placeholder\": t('nameEmpty'),\n \"error\": errorInfo.name\n },\n \"on\": {\n \"focus\": onFocus('name')\n },\n \"model\": {\n value: data.name,\n callback: function callback($$v) {\n data.name = $$v;\n }\n }\n }), h(Field, {\n \"attrs\": {\n \"clearable\": true,\n \"type\": \"tel\",\n \"label\": t('tel'),\n \"placeholder\": t('telEmpty'),\n \"error\": errorInfo.tel\n },\n \"on\": {\n \"focus\": onFocus('tel')\n },\n \"model\": {\n value: data.tel,\n callback: function callback($$v) {\n data.tel = $$v;\n }\n }\n }), h(\"div\", {\n \"class\": bem('buttons')\n }, [h(Button, {\n \"attrs\": {\n \"block\": true,\n \"type\": \"danger\",\n \"text\": t('save'),\n \"loading\": this.isSaving\n },\n \"on\": {\n \"click\": this.onSave\n }\n }), this.isEdit && h(Button, {\n \"attrs\": {\n \"block\": true,\n \"text\": t('delete'),\n \"loading\": this.isDeleting\n },\n \"on\": {\n \"click\": this.onDelete\n }\n })])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/contact-edit/index.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../utils';\nimport { emit, inherit } from '../utils/functional';\nimport Icon from '../icon';\nimport Cell from '../cell';\nimport Button from '../button';\nimport Radio from '../radio';\nimport RadioGroup from '../radio-group'; // Types\n\nvar _use = use('contact-list'),\n sfc = _use[0],\n bem = _use[1],\n t = _use[2];\n\nfunction ContactList(h, props, slots, ctx) {\n var List = props.list.map(function (item, index) {\n var onClick = function onClick() {\n emit(ctx, 'input', item.id);\n emit(ctx, 'select', item, index);\n };\n\n return h(Cell, {\n \"key\": item.id,\n \"attrs\": {\n \"isLink\": true,\n \"valueClass\": bem('item-value')\n },\n \"class\": bem('item'),\n \"scopedSlots\": {\n \"default\": function _default() {\n return h(Radio, {\n \"attrs\": {\n \"name\": item.id\n },\n \"on\": {\n \"click\": onClick\n }\n }, [h(\"div\", {\n \"class\": bem('name')\n }, [item.name + \"\\uFF0C\" + item.tel])]);\n },\n 'right-icon': function rightIcon() {\n return h(Icon, {\n \"attrs\": {\n \"name\": \"edit\"\n },\n \"class\": bem('edit'),\n \"on\": {\n \"click\": function click(event) {\n event.stopPropagation();\n emit(ctx, 'edit', item, index);\n }\n }\n });\n }\n },\n \"on\": {\n \"click\": onClick\n }\n });\n });\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem()\n }, inherit(ctx)]), [h(RadioGroup, {\n \"attrs\": {\n \"value\": props.value\n },\n \"class\": bem('group')\n }, [List]), h(Button, {\n \"attrs\": {\n \"square\": true,\n \"size\": \"large\",\n \"type\": \"danger\",\n \"text\": props.addText || t('addText')\n },\n \"class\": bem('add'),\n \"on\": {\n \"click\": function click() {\n emit(ctx, 'add');\n }\n }\n })]);\n}\n\nContactList.props = {\n value: null,\n list: Array,\n addText: String\n};\nexport default sfc(ContactList);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/contact-list/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\nimport Checkbox from '../checkbox';\n\nvar _use = use('coupon'),\n sfc = _use[0],\n bem = _use[1],\n t = _use[2];\n\nfunction padZero(num) {\n return (num < 10 ? '0' : '') + num;\n}\n\nfunction getDate(timeStamp) {\n var date = new Date(timeStamp * 1000);\n return date.getFullYear() + \".\" + padZero(date.getMonth() + 1) + \".\" + padZero(date.getDate());\n}\n\nfunction formatDiscount(discount) {\n return (discount / 10).toFixed(discount % 10 === 0 ? 0 : 1);\n}\n\nfunction formatAmount(amount) {\n return (amount / 100).toFixed(amount % 100 === 0 ? 0 : amount % 10 === 0 ? 1 : 2);\n}\n\nexport default sfc({\n props: {\n coupon: Object,\n chosen: Boolean,\n disabled: Boolean,\n currency: {\n type: String,\n \"default\": '¥'\n }\n },\n computed: {\n validPeriod: function validPeriod() {\n return t('valid') + \"\\uFF1A\" + getDate(this.coupon.startAt) + \" - \" + getDate(this.coupon.endAt);\n },\n faceAmount: function faceAmount() {\n var coupon = this.coupon;\n\n if (coupon.valueDesc) {\n return coupon.valueDesc + \"\" + (coupon.unitDesc || '') + \"\";\n }\n\n return coupon.denominations ? \"\" + this.currency + \" \" + formatAmount(this.coupon.denominations) : coupon.discount ? t('discount', formatDiscount(this.coupon.discount)) : '';\n },\n conditionMessage: function conditionMessage() {\n var condition = this.coupon.originCondition;\n condition = condition % 100 === 0 ? Math.round(condition / 100) : (condition / 100).toFixed(2);\n return condition === 0 ? t('unlimited') : t('condition', condition);\n }\n },\n render: function render(h) {\n var coupon = this.coupon,\n disabled = this.disabled;\n var description = disabled && coupon.reason || coupon.description;\n return h(\"div\", {\n \"class\": bem({\n disabled: disabled\n })\n }, [h(\"div\", {\n \"class\": bem('content')\n }, [h(\"div\", {\n \"class\": bem('head')\n }, [h(\"h2\", {\n \"domProps\": {\n \"innerHTML\": this.faceAmount\n }\n }), h(\"p\", [this.coupon.condition || this.conditionMessage])]), h(\"div\", {\n \"class\": bem('body')\n }, [h(\"h2\", [coupon.name]), h(\"p\", [this.validPeriod]), this.chosen && h(Checkbox, {\n \"attrs\": {\n \"value\": true\n },\n \"class\": bem('corner')\n })])]), description && h(\"p\", {\n \"class\": bem('description')\n }, [description])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/coupon/index.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../utils';\nimport { inherit } from '../utils/functional';\nimport Cell from '../cell'; // Types\n\nvar _use = use('coupon-cell'),\n sfc = _use[0],\n bem = _use[1],\n t = _use[2];\n\nfunction formatValue(props) {\n var coupons = props.coupons,\n chosenCoupon = props.chosenCoupon,\n currency = props.currency;\n var coupon = coupons[chosenCoupon];\n\n if (coupon) {\n var value = coupon.denominations || coupon.value;\n return \"-\" + currency + (value / 100).toFixed(2);\n }\n\n return coupons.length === 0 ? t('tips') : t('count', coupons.length);\n}\n\nfunction CouponCell(h, props, slots, ctx) {\n var valueClass = props.coupons[props.chosenCoupon] ? 'van-coupon-cell--selected' : '';\n var value = formatValue(props);\n return h(Cell, _mergeJSXProps([{\n \"class\": bem(),\n \"attrs\": {\n \"value\": value,\n \"title\": props.title || t('title'),\n \"border\": props.border,\n \"isLink\": props.editable,\n \"valueClass\": valueClass\n }\n }, inherit(ctx, true)]));\n}\n\nCouponCell.model = {\n prop: 'chosenCoupon'\n};\nCouponCell.props = {\n title: String,\n coupons: Array,\n currency: {\n type: String,\n \"default\": '¥'\n },\n border: {\n type: Boolean,\n \"default\": true\n },\n editable: {\n type: Boolean,\n \"default\": true\n },\n chosenCoupon: {\n type: Number,\n \"default\": -1\n }\n};\nexport default sfc(CouponCell);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/coupon-cell/index.js\n// module id = null\n// module chunks = ","/* eslint-disable object-shorthand */\nimport { use } from '../utils';\nimport { FindParentMixin } from '../mixins/find-parent';\n\nvar _use = use('tab'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n mixins: [FindParentMixin],\n props: {\n title: String,\n disabled: Boolean\n },\n data: function data() {\n return {\n inited: false\n };\n },\n computed: {\n index: function index() {\n return this.parent.tabs.indexOf(this);\n },\n selected: function selected() {\n return this.index === this.parent.curActive;\n }\n },\n watch: {\n 'parent.curActive': function parentCurActive() {\n this.inited = this.inited || this.selected;\n },\n title: function title() {\n this.parent.setLine();\n }\n },\n created: function created() {\n this.findParent('van-tabs');\n },\n mounted: function mounted() {\n var tabs = this.parent.tabs;\n var index = this.parent.slots().indexOf(this.$vnode);\n tabs.splice(index === -1 ? tabs.length : index, 0, this);\n\n if (this.slots('title')) {\n this.parent.renderTitle(this.$refs.title, this.index);\n }\n },\n beforeDestroy: function beforeDestroy() {\n this.parent.tabs.splice(this.index, 1);\n },\n render: function render(h) {\n var slots = this.slots;\n var shouldRender = this.inited || !this.parent.lazyRender;\n return h(\"div\", {\n \"directives\": [{\n name: \"show\",\n value: this.selected || this.parent.animated\n }],\n \"class\": bem('pane')\n }, [shouldRender ? slots() : h(), slots('title') && h(\"div\", {\n \"ref\": \"title\"\n }, [slots('title')])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/tab/index.js\n// module id = null\n// module chunks = ","import { use, isDef } from '../utils';\nimport { raf } from '../utils/raf';\nimport { on, off } from '../utils/event';\nimport { TouchMixin } from '../mixins/touch';\nimport { setScrollTop, getScrollTop, getElementTop, getScrollEventTarget } from '../utils/scroll';\n\nvar _use = use('tabs'),\n sfc = _use[0],\n bem = _use[1];\n\nvar tabBem = use('tab')[1];\nexport default sfc({\n mixins: [TouchMixin],\n model: {\n prop: 'active'\n },\n props: {\n color: String,\n sticky: Boolean,\n animated: Boolean,\n offsetTop: Number,\n swipeable: Boolean,\n background: String,\n titleActiveColor: String,\n titleInactiveColor: String,\n ellipsis: {\n type: Boolean,\n \"default\": true\n },\n lazyRender: {\n type: Boolean,\n \"default\": true\n },\n lineWidth: {\n type: Number,\n \"default\": null\n },\n lineHeight: {\n type: Number,\n \"default\": null\n },\n active: {\n type: [Number, String],\n \"default\": 0\n },\n type: {\n type: String,\n \"default\": 'line'\n },\n duration: {\n type: Number,\n \"default\": 0.3\n },\n swipeThreshold: {\n type: Number,\n \"default\": 4\n }\n },\n data: function data() {\n return {\n tabs: [],\n position: '',\n curActive: null,\n lineStyle: {\n backgroundColor: this.color\n },\n events: {\n resize: false,\n sticky: false,\n swipeable: false\n }\n };\n },\n computed: {\n // whether the nav is scrollable\n scrollable: function scrollable() {\n return this.tabs.length > this.swipeThreshold || !this.ellipsis;\n },\n wrapStyle: function wrapStyle() {\n switch (this.position) {\n case 'top':\n return {\n top: this.offsetTop + 'px',\n position: 'fixed'\n };\n\n case 'bottom':\n return {\n top: 'auto',\n bottom: 0\n };\n\n default:\n return null;\n }\n },\n navStyle: function navStyle() {\n return {\n borderColor: this.color,\n background: this.background\n };\n },\n trackStyle: function trackStyle() {\n if (this.animated) {\n return {\n left: -1 * this.curActive * 100 + \"%\",\n transitionDuration: this.duration + \"s\"\n };\n }\n }\n },\n watch: {\n active: function active(val) {\n if (val !== this.curActive) {\n this.correctActive(val);\n }\n },\n color: function color() {\n this.setLine();\n },\n tabs: function tabs() {\n this.correctActive(this.curActive || this.active);\n this.scrollIntoView();\n this.setLine();\n },\n curActive: function curActive() {\n this.scrollIntoView();\n this.setLine(); // scroll to correct position\n\n if (this.position === 'top' || this.position === 'bottom') {\n setScrollTop(window, getElementTop(this.$el) - this.offsetTop);\n }\n },\n sticky: function sticky() {\n this.handlers(true);\n },\n swipeable: function swipeable() {\n this.handlers(true);\n }\n },\n mounted: function mounted() {\n this.onShow();\n },\n activated: function activated() {\n this.onShow();\n this.setLine();\n },\n deactivated: function deactivated() {\n this.handlers(false);\n },\n beforeDestroy: function beforeDestroy() {\n this.handlers(false);\n },\n methods: {\n onShow: function onShow() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.inited = true;\n\n _this.handlers(true);\n\n _this.scrollIntoView(true);\n });\n },\n // whether to bind sticky listener\n handlers: function handlers(bind) {\n var events = this.events;\n var sticky = this.sticky && bind;\n var swipeable = this.swipeable && bind; // listen to window resize event\n\n if (events.resize !== bind) {\n events.resize = bind;\n (bind ? on : off)(window, 'resize', this.setLine, true);\n } // listen to scroll event\n\n\n if (events.sticky !== sticky) {\n events.sticky = sticky;\n this.scrollEl = this.scrollEl || getScrollEventTarget(this.$el);\n (sticky ? on : off)(this.scrollEl, 'scroll', this.onScroll, true);\n this.onScroll();\n } // listen to touch event\n\n\n if (events.swipeable !== swipeable) {\n events.swipeable = swipeable;\n var content = this.$refs.content;\n var action = swipeable ? on : off;\n action(content, 'touchstart', this.touchStart);\n action(content, 'touchmove', this.touchMove);\n action(content, 'touchend', this.onTouchEnd);\n action(content, 'touchcancel', this.onTouchEnd);\n }\n },\n // watch swipe touch end\n onTouchEnd: function onTouchEnd() {\n var direction = this.direction,\n deltaX = this.deltaX,\n curActive = this.curActive;\n var minSwipeDistance = 50;\n /* istanbul ignore else */\n\n if (direction === 'horizontal' && this.offsetX >= minSwipeDistance) {\n /* istanbul ignore else */\n if (deltaX > 0 && curActive !== 0) {\n this.setCurActive(curActive - 1);\n } else if (deltaX < 0 && curActive !== this.tabs.length - 1) {\n this.setCurActive(curActive + 1);\n }\n }\n },\n // adjust tab position\n onScroll: function onScroll() {\n var scrollTop = getScrollTop(window) + this.offsetTop;\n var elTopToPageTop = getElementTop(this.$el);\n var elBottomToPageTop = elTopToPageTop + this.$el.offsetHeight - this.$refs.wrap.offsetHeight;\n\n if (scrollTop > elBottomToPageTop) {\n this.position = 'bottom';\n } else if (scrollTop > elTopToPageTop) {\n this.position = 'top';\n } else {\n this.position = '';\n }\n\n var scrollParams = {\n scrollTop: scrollTop,\n isFixed: this.position === 'top'\n };\n this.$emit('scroll', scrollParams);\n },\n // update nav bar style\n setLine: function setLine() {\n var _this2 = this;\n\n var shouldAnimate = this.inited;\n this.$nextTick(function () {\n var tabs = _this2.$refs.tabs;\n\n if (!tabs || !tabs[_this2.curActive] || _this2.type !== 'line') {\n return;\n }\n\n var tab = tabs[_this2.curActive];\n var lineWidth = _this2.lineWidth,\n lineHeight = _this2.lineHeight;\n var width = isDef(lineWidth) ? lineWidth : tab.offsetWidth / 2;\n var left = tab.offsetLeft + (tab.offsetWidth - width) / 2;\n var lineStyle = {\n width: width + \"px\",\n backgroundColor: _this2.color,\n transform: \"translateX(\" + left + \"px)\"\n };\n\n if (shouldAnimate) {\n lineStyle.transitionDuration = _this2.duration + \"s\";\n }\n\n if (isDef(lineHeight)) {\n var height = lineHeight + \"px\";\n lineStyle.height = height;\n lineStyle.borderRadius = height;\n }\n\n _this2.lineStyle = lineStyle;\n });\n },\n // correct the value of active\n correctActive: function correctActive(active) {\n active = +active;\n var exist = this.tabs.some(function (tab) {\n return tab.index === active;\n });\n var defaultActive = (this.tabs[0] || {}).index || 0;\n this.setCurActive(exist ? active : defaultActive);\n },\n setCurActive: function setCurActive(active) {\n active = this.findAvailableTab(active, active < this.curActive);\n\n if (isDef(active) && active !== this.curActive) {\n this.$emit('input', active);\n\n if (this.curActive !== null) {\n this.$emit('change', active, this.tabs[active].title);\n }\n\n this.curActive = active;\n }\n },\n findAvailableTab: function findAvailableTab(active, reverse) {\n var diff = reverse ? -1 : 1;\n var index = active;\n\n while (index >= 0 && index < this.tabs.length) {\n if (!this.tabs[index].disabled) {\n return index;\n }\n\n index += diff;\n }\n },\n // emit event when clicked\n onClick: function onClick(index) {\n var _this$tabs$index = this.tabs[index],\n title = _this$tabs$index.title,\n disabled = _this$tabs$index.disabled;\n\n if (disabled) {\n this.$emit('disabled', index, title);\n } else {\n this.setCurActive(index);\n this.$emit('click', index, title);\n }\n },\n // scroll active tab into view\n scrollIntoView: function scrollIntoView(immediate) {\n var tabs = this.$refs.tabs;\n\n if (!this.scrollable || !tabs || !tabs[this.curActive]) {\n return;\n }\n\n var nav = this.$refs.nav;\n var scrollLeft = nav.scrollLeft,\n navWidth = nav.offsetWidth;\n var _tabs$this$curActive = tabs[this.curActive],\n offsetLeft = _tabs$this$curActive.offsetLeft,\n tabWidth = _tabs$this$curActive.offsetWidth;\n this.scrollTo(nav, scrollLeft, offsetLeft - (navWidth - tabWidth) / 2, immediate);\n },\n // animate the scrollLeft of nav\n scrollTo: function scrollTo(el, from, to, immediate) {\n if (immediate) {\n el.scrollLeft += to - from;\n return;\n }\n\n var count = 0;\n var frames = Math.round(this.duration * 1000 / 16);\n\n var animate = function animate() {\n el.scrollLeft += (to - from) / frames;\n /* istanbul ignore next */\n\n if (++count < frames) {\n raf(animate);\n }\n };\n\n animate();\n },\n // render title slot of child tab\n renderTitle: function renderTitle(el, index) {\n var _this3 = this;\n\n this.$nextTick(function () {\n var title = _this3.$refs.title[index];\n title.parentNode.replaceChild(el, title);\n });\n },\n getTabStyle: function getTabStyle(item, index) {\n var style = {};\n var color = this.color;\n var active = index === this.curActive;\n var isCard = this.type === 'card'; // theme color\n\n if (color) {\n if (!item.disabled && isCard && !active) {\n style.color = color;\n }\n\n if (!item.disabled && isCard && active) {\n style.backgroundColor = color;\n }\n\n if (isCard) {\n style.borderColor = color;\n }\n }\n\n var titleColor = active ? this.titleActiveColor : this.titleInactiveColor;\n\n if (titleColor) {\n style.color = titleColor;\n }\n\n if (this.scrollable && this.ellipsis) {\n style.flexBasis = 88 / this.swipeThreshold + '%';\n }\n\n return style;\n }\n },\n render: function render(h) {\n var _this4 = this;\n\n var type = this.type,\n ellipsis = this.ellipsis,\n animated = this.animated,\n scrollable = this.scrollable;\n var Nav = this.tabs.map(function (tab, index) {\n return h(\"div\", {\n \"ref\": \"tabs\",\n \"refInFor\": true,\n \"class\": tabBem({\n active: index === _this4.curActive,\n disabled: tab.disabled,\n complete: !ellipsis\n }),\n \"style\": _this4.getTabStyle(tab, index),\n \"on\": {\n \"click\": function click() {\n _this4.onClick(index);\n }\n }\n }, [h(\"span\", {\n \"ref\": \"title\",\n \"refInFor\": true,\n \"class\": {\n 'van-ellipsis': ellipsis\n }\n }, [tab.title])]);\n });\n return h(\"div\", {\n \"class\": bem([type])\n }, [h(\"div\", {\n \"ref\": \"wrap\",\n \"style\": this.wrapStyle,\n \"class\": [bem('wrap', {\n scrollable: scrollable\n }), {\n 'van-hairline--top-bottom': type === 'line'\n }]\n }, [h(\"div\", {\n \"ref\": \"nav\",\n \"class\": bem('nav', [type]),\n \"style\": this.navStyle\n }, [this.slots('nav-left'), type === 'line' && h(\"div\", {\n \"class\": bem('line'),\n \"style\": this.lineStyle\n }), Nav, this.slots('nav-right')])]), h(\"div\", {\n \"ref\": \"content\",\n \"class\": bem('content', {\n animated: animated\n })\n }, [animated ? h(\"div\", {\n \"class\": bem('track'),\n \"style\": this.trackStyle\n }, [this.slots()]) : this.slots()])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/tabs/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\nimport Tab from '../tab';\nimport Tabs from '../tabs';\nimport Field from '../field';\nimport Button from '../button';\nimport Coupon from '../coupon';\n\nvar _use = use('coupon-list'),\n sfc = _use[0],\n bem = _use[1],\n t = _use[2];\n\nvar EMPTY_IMAGE = 'https://img.yzcdn.cn/vant/coupon-empty.png';\nexport default sfc({\n model: {\n prop: 'code'\n },\n props: {\n code: String,\n coupons: Array,\n disabledCoupons: Array,\n closeButtonText: String,\n inputPlaceholder: String,\n exchangeButtonText: String,\n exchangeButtonLoading: Boolean,\n exchangeButtonDisabled: Boolean,\n exchangeMinLength: {\n type: Number,\n \"default\": 1\n },\n chosenCoupon: {\n type: Number,\n \"default\": -1\n },\n displayedCouponIndex: {\n type: Number,\n \"default\": -1\n },\n showExchangeBar: {\n type: Boolean,\n \"default\": true\n },\n showCloseButton: {\n type: Boolean,\n \"default\": true\n },\n currency: {\n type: String,\n \"default\": '¥'\n }\n },\n data: function data() {\n return {\n tab: 0,\n winHeight: window.innerHeight,\n currentCode: this.code || ''\n };\n },\n computed: {\n buttonDisabled: function buttonDisabled() {\n return !this.exchangeButtonLoading && (this.exchangeButtonDisabled || !this.currentCode || this.currentCode.length < this.exchangeMinLength);\n },\n title: function title() {\n return t('enable') + \" (\" + this.coupons.length + \")\";\n },\n disabledTitle: function disabledTitle() {\n return t('disabled') + \" (\" + this.disabledCoupons.length + \")\";\n },\n listStyle: function listStyle() {\n return {\n height: this.winHeight - (this.showExchangeBar ? 140 : 94) + 'px'\n };\n }\n },\n watch: {\n code: function code(_code) {\n this.currentCode = _code;\n },\n currentCode: function currentCode(code) {\n this.$emit('input', code);\n },\n displayedCouponIndex: function displayedCouponIndex(val) {\n this.scrollToShowCoupon(val);\n }\n },\n mounted: function mounted() {\n this.scrollToShowCoupon(this.displayedCouponIndex);\n },\n methods: {\n onClickExchangeButton: function onClickExchangeButton() {\n this.$emit('exchange', this.currentCode); // auto clear currentCode when not use vModel\n\n if (!this.code) {\n this.currentCode = '';\n }\n },\n // scroll to show specific coupon\n scrollToShowCoupon: function scrollToShowCoupon(index) {\n var _this = this;\n\n if (index === -1) {\n return;\n }\n\n this.$nextTick(function () {\n var _this$$refs = _this.$refs,\n card = _this$$refs.card,\n list = _this$$refs.list;\n /* istanbul ignore next */\n\n if (list && card && card[index]) {\n list.scrollTop = card[index].$el.offsetTop - 100;\n }\n });\n },\n renderEmpty: function renderEmpty() {\n var h = this.$createElement;\n return h(\"div\", {\n \"class\": bem('empty')\n }, [h(\"img\", {\n \"attrs\": {\n \"src\": EMPTY_IMAGE\n }\n }), h(\"p\", [t('empty')])]);\n },\n renderExchangeButton: function renderExchangeButton() {\n var h = this.$createElement;\n return h(Button, {\n \"attrs\": {\n \"size\": \"small\",\n \"type\": \"danger\",\n \"text\": this.exchangeButtonText || t('exchange'),\n \"loading\": this.exchangeButtonLoading,\n \"disabled\": this.buttonDisabled\n },\n \"class\": bem('exchange'),\n \"on\": {\n \"click\": this.onClickExchangeButton\n }\n });\n }\n },\n render: function render(h) {\n var _this2 = this;\n\n var ExchangeBar = this.showExchangeBar && h(Field, {\n \"attrs\": {\n \"clearable\": true,\n \"border\": false,\n \"placeholder\": this.inputPlaceholder || t('placeholder'),\n \"maxlength\": \"20\"\n },\n \"class\": bem('field'),\n \"scopedSlots\": {\n button: this.renderExchangeButton\n },\n \"model\": {\n value: _this2.currentCode,\n callback: function callback($$v) {\n _this2.currentCode = $$v;\n }\n }\n });\n\n var onChange = function onChange(index) {\n return function () {\n return _this2.$emit('change', index);\n };\n };\n\n var CouponTab = h(Tab, {\n \"attrs\": {\n \"title\": this.title\n }\n }, [h(\"div\", {\n \"class\": bem('list'),\n \"style\": this.listStyle\n }, [this.coupons.map(function (coupon, index) {\n return h(Coupon, {\n \"ref\": \"card\",\n \"key\": coupon.id,\n \"attrs\": {\n \"coupon\": coupon,\n \"currency\": _this2.currency,\n \"chosen\": index === _this2.chosenCoupon\n },\n \"nativeOn\": {\n \"click\": onChange(index)\n }\n });\n }), !this.coupons.length && this.renderEmpty()])]);\n var DisabledCouponTab = h(Tab, {\n \"attrs\": {\n \"title\": this.disabledTitle\n }\n }, [h(\"div\", {\n \"class\": bem('list'),\n \"style\": this.listStyle\n }, [this.disabledCoupons.map(function (coupon) {\n return h(Coupon, {\n \"attrs\": {\n \"disabled\": true,\n \"coupon\": coupon,\n \"currency\": _this2.currency\n },\n \"key\": coupon.id\n });\n }), !this.disabledCoupons.length && this.renderEmpty()])]);\n return h(\"div\", {\n \"class\": bem()\n }, [ExchangeBar, h(Tabs, {\n \"class\": bem('tab'),\n \"attrs\": {\n \"line-width\": 120\n },\n \"model\": {\n value: _this2.tab,\n callback: function callback($$v) {\n _this2.tab = $$v;\n }\n }\n }, [CouponTab, DisabledCouponTab]), h(Button, {\n \"directives\": [{\n name: \"show\",\n value: this.showCloseButton\n }],\n \"attrs\": {\n \"size\": \"large\",\n \"text\": this.closeButtonText || t('close')\n },\n \"class\": bem('close'),\n \"on\": {\n \"click\": onChange(-1)\n }\n })]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/coupon-list/index.js\n// module id = null\n// module chunks = ","export function isValidDate(date) {\n return Object.prototype.toString.call(date) === '[object Date]' && !isNaN(date.getTime());\n}\nexport function padZero(val) {\n return (\"00\" + val).slice(-2);\n}\nexport function times(n, iteratee) {\n var index = -1;\n var result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n\n return result;\n}\nexport function getTrueValue(formattedValue) {\n if (!formattedValue) return;\n\n while (isNaN(parseInt(formattedValue, 10))) {\n formattedValue = formattedValue.slice(1);\n }\n\n return parseInt(formattedValue, 10);\n}\nexport function getMonthEndDay(year, month) {\n return 32 - new Date(year, month - 1, 32).getDate();\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/datetime-picker/utils.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { use, range } from '../utils';\nimport Picker from '../picker';\nimport { pickerProps } from '../picker/shared';\nimport { times, padZero, isValidDate, getTrueValue, getMonthEndDay } from './utils';\n\nvar _use = use('datetime-picker'),\n sfc = _use[0],\n bem = _use[1];\n\nvar currentYear = new Date().getFullYear();\nexport default sfc({\n props: _extends({}, pickerProps, {\n value: null,\n minHour: Number,\n minMinute: Number,\n type: {\n type: String,\n \"default\": 'datetime'\n },\n showToolbar: {\n type: Boolean,\n \"default\": true\n },\n format: {\n type: String,\n \"default\": 'YYYY.MM.DD HH时 mm分'\n },\n formatter: {\n type: Function,\n \"default\": function _default(type, value) {\n return value;\n }\n },\n minDate: {\n type: Date,\n \"default\": function _default() {\n return new Date(currentYear - 10, 0, 1);\n },\n validator: isValidDate\n },\n maxDate: {\n type: Date,\n \"default\": function _default() {\n return new Date(currentYear + 10, 11, 31);\n },\n validator: isValidDate\n },\n maxHour: {\n type: Number,\n \"default\": 23\n },\n maxMinute: {\n type: Number,\n \"default\": 59\n }\n }),\n data: function data() {\n return {\n innerValue: this.correctValue(this.value)\n };\n },\n watch: {\n value: function value(val) {\n val = this.correctValue(val);\n var isEqual = this.type === 'time' ? val === this.innerValue : val.valueOf() === this.innerValue.valueOf();\n\n if (!isEqual) {\n this.innerValue = val;\n\n if (this.type === 'time') {\n this.updateColumnValue(val);\n }\n }\n },\n innerValue: function innerValue(val) {\n this.$emit('input', val);\n },\n columns: function columns() {\n this.updateColumnValue(this.innerValue);\n }\n },\n computed: {\n ranges: function ranges() {\n if (this.type === 'time') {\n return [{\n type: 'hour',\n range: [this.minHour, this.maxHour]\n }, {\n type: 'minute',\n range: [this.minMinute, this.maxMinute]\n }];\n }\n\n var _this$getBoundary = this.getBoundary('max', this.innerValue),\n maxYear = _this$getBoundary.maxYear,\n maxDate = _this$getBoundary.maxDate,\n maxMonth = _this$getBoundary.maxMonth,\n maxHour = _this$getBoundary.maxHour,\n maxMinute = _this$getBoundary.maxMinute;\n\n var _this$getBoundary2 = this.getBoundary('min', this.innerValue),\n minYear = _this$getBoundary2.minYear,\n minDate = _this$getBoundary2.minDate,\n minMonth = _this$getBoundary2.minMonth,\n minHour = _this$getBoundary2.minHour,\n minMinute = _this$getBoundary2.minMinute;\n\n var result = [{\n type: 'year',\n range: [minYear, maxYear]\n }, {\n type: 'month',\n range: [minMonth, maxMonth]\n }, {\n type: 'day',\n range: [minDate, maxDate]\n }, {\n type: 'hour',\n range: [minHour, maxHour]\n }, {\n type: 'minute',\n range: [minMinute, maxMinute]\n }];\n if (this.type === 'date') result.splice(3, 2);\n if (this.type === 'year-month') result.splice(2, 3);\n return result;\n },\n columns: function columns() {\n var _this = this;\n\n var results = this.ranges.map(function (_ref) {\n var type = _ref.type,\n rangeArr = _ref.range;\n var values = times(rangeArr[1] - rangeArr[0] + 1, function (index) {\n var value = rangeArr[0] + index;\n value = value < 10 ? \"0\" + value : \"\" + value;\n return _this.formatter(type, value);\n });\n return {\n values: values\n };\n });\n return results;\n }\n },\n mounted: function mounted() {\n this.updateColumnValue(this.innerValue);\n },\n methods: {\n correctValue: function correctValue(value) {\n // validate value\n var isDateType = this.type !== 'time';\n\n if (isDateType && !isValidDate(value)) {\n value = this.minDate;\n } else if (!value) {\n var minHour = this.minHour;\n value = (minHour > 10 ? minHour : '0' + minHour) + \":00\";\n } // time type\n\n\n if (!isDateType) {\n var _value$split = value.split(':'),\n hour = _value$split[0],\n minute = _value$split[1];\n\n hour = padZero(range(hour, this.minHour, this.maxHour));\n minute = padZero(range(minute, this.minMinute, this.maxMinute));\n return hour + \":\" + minute;\n } // date type\n\n\n value = Math.max(value, this.minDate.getTime());\n value = Math.min(value, this.maxDate.getTime());\n return new Date(value);\n },\n getBoundary: function getBoundary(type, value) {\n var _ref2;\n\n var boundary = this[type + \"Date\"];\n var year = boundary.getFullYear();\n var month = 1;\n var date = 1;\n var hour = 0;\n var minute = 0;\n\n if (type === 'max') {\n month = 12;\n date = getMonthEndDay(value.getFullYear(), value.getMonth() + 1);\n hour = 23;\n minute = 59;\n }\n\n if (value.getFullYear() === year) {\n month = boundary.getMonth() + 1;\n\n if (value.getMonth() + 1 === month) {\n date = boundary.getDate();\n\n if (value.getDate() === date) {\n hour = boundary.getHours();\n\n if (value.getHours() === hour) {\n minute = boundary.getMinutes();\n }\n }\n }\n }\n\n return _ref2 = {}, _ref2[type + \"Year\"] = year, _ref2[type + \"Month\"] = month, _ref2[type + \"Date\"] = date, _ref2[type + \"Hour\"] = hour, _ref2[type + \"Minute\"] = minute, _ref2;\n },\n onConfirm: function onConfirm() {\n this.$emit('confirm', this.innerValue);\n },\n onChange: function onChange(picker) {\n var _this2 = this;\n\n var value;\n\n if (this.type === 'time') {\n var indexes = picker.getIndexes();\n value = indexes[0] + this.minHour + \":\" + (indexes[1] + this.minMinute);\n } else {\n var values = picker.getValues();\n var year = getTrueValue(values[0]);\n var month = getTrueValue(values[1]);\n var maxDate = getMonthEndDay(year, month);\n var date = getTrueValue(values[2]);\n\n if (this.type === 'year-month') {\n date = 1;\n }\n\n date = date > maxDate ? maxDate : date;\n var hour = 0;\n var minute = 0;\n\n if (this.type === 'datetime') {\n hour = getTrueValue(values[3]);\n minute = getTrueValue(values[4]);\n }\n\n value = new Date(year, month - 1, date, hour, minute);\n }\n\n this.innerValue = this.correctValue(value);\n this.$nextTick(function () {\n _this2.$nextTick(function () {\n _this2.$emit('change', picker);\n });\n });\n },\n updateColumnValue: function updateColumnValue(value) {\n var _this3 = this;\n\n var values = [];\n var formatter = this.formatter;\n\n if (this.type === 'time') {\n var pair = value.split(':');\n values = [formatter('hour', pair[0]), formatter('minute', pair[1])];\n } else {\n values = [formatter('year', \"\" + value.getFullYear()), formatter('month', padZero(value.getMonth() + 1)), formatter('day', padZero(value.getDate()))];\n\n if (this.type === 'datetime') {\n values.push(formatter('hour', padZero(value.getHours())), formatter('minute', padZero(value.getMinutes())));\n }\n\n if (this.type === 'year-month') {\n values = values.slice(0, 2);\n }\n }\n\n this.$nextTick(function () {\n _this3.$refs.picker.setValues(values);\n });\n }\n },\n render: function render(h) {\n var _this4 = this;\n\n var props = {};\n Object.keys(pickerProps).forEach(function (key) {\n props[key] = _this4[key];\n });\n return h(Picker, {\n \"class\": bem(),\n \"ref\": \"picker\",\n \"attrs\": {\n \"columns\": this.columns\n },\n \"on\": {\n \"change\": this.onChange,\n \"confirm\": this.onConfirm,\n \"cancel\": function cancel() {\n _this4.$emit('cancel');\n }\n },\n \"props\": _extends({}, props)\n });\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/datetime-picker/index.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../utils';\nimport { inherit } from '../utils/functional'; // Types\n\nvar _use = use('goods-action'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction GoodsAction(h, props, slots, ctx) {\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem({\n 'safe-area-inset-bottom': props.safeAreaInsetBottom\n })\n }, inherit(ctx, true)]), [slots[\"default\"] && slots[\"default\"]()]);\n}\n\nGoodsAction.props = {\n safeAreaInsetBottom: Boolean\n};\nexport default sfc(GoodsAction);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/goods-action/index.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../utils';\nimport Button from '../button';\nimport { emit, inherit } from '../utils/functional';\nimport { functionalRoute, routeProps } from '../utils/router'; // Types\n\nvar _use = use('goods-action-big-btn'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction GoodsActionBigBtn(h, props, slots, ctx) {\n var onClick = function onClick(event) {\n emit(ctx, 'click', event);\n functionalRoute(ctx);\n };\n\n return h(Button, _mergeJSXProps([{\n \"attrs\": {\n \"square\": true,\n \"size\": \"large\",\n \"loading\": props.loading,\n \"disabled\": props.disabled,\n \"type\": props.primary ? 'danger' : 'warning'\n },\n \"class\": bem(),\n \"on\": {\n \"click\": onClick\n }\n }, inherit(ctx)]), [slots[\"default\"] ? slots[\"default\"]() : props.text]);\n}\n\nGoodsActionBigBtn.props = _extends({}, routeProps, {\n text: String,\n primary: Boolean,\n loading: Boolean,\n disabled: Boolean\n});\nexport default sfc(GoodsActionBigBtn);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/goods-action-big-btn/index.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../utils';\nimport Icon from '../icon';\nimport { emit, inherit } from '../utils/functional';\nimport { functionalRoute, routeProps } from '../utils/router'; // Types\n\nvar _use = use('goods-action-mini-btn'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction GoodsActionMiniBtn(h, props, slots, ctx) {\n var onClick = function onClick(event) {\n emit(ctx, 'click', event);\n functionalRoute(ctx);\n };\n\n return h(\"div\", _mergeJSXProps([{\n \"class\": [bem(), 'van-hairline'],\n \"on\": {\n \"click\": onClick\n }\n }, inherit(ctx)]), [h(Icon, {\n \"class\": [bem('icon'), props.iconClass],\n \"attrs\": {\n \"tag\": \"div\",\n \"info\": props.info,\n \"name\": props.icon\n }\n }), slots[\"default\"] ? slots[\"default\"]() : props.text]);\n}\n\nGoodsActionMiniBtn.props = _extends({}, routeProps, {\n text: String,\n icon: String,\n info: [String, Number],\n iconClass: null\n});\nexport default sfc(GoodsActionMiniBtn);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/goods-action-mini-btn/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\nimport { on, off, preventDefault } from '../utils/event';\nimport { TouchMixin } from '../mixins/touch';\n\nvar _use = use('swipe'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n mixins: [TouchMixin],\n props: {\n width: Number,\n height: Number,\n autoplay: Number,\n vertical: Boolean,\n initialSwipe: Number,\n indicatorColor: String,\n loop: {\n type: Boolean,\n \"default\": true\n },\n touchable: {\n type: Boolean,\n \"default\": true\n },\n showIndicators: {\n type: Boolean,\n \"default\": true\n },\n duration: {\n type: Number,\n \"default\": 500\n }\n },\n data: function data() {\n return {\n computedWidth: 0,\n computedHeight: 0,\n offset: 0,\n active: 0,\n deltaX: 0,\n deltaY: 0,\n swipes: [],\n swiping: false\n };\n },\n mounted: function mounted() {\n this.initialize();\n\n if (!this.$isServer) {\n on(window, 'resize', this.onResize, true);\n }\n },\n activated: function activated() {\n if (this.rendered) {\n this.initialize();\n }\n\n this.rendered = true;\n },\n destroyed: function destroyed() {\n this.clear();\n\n if (!this.$isServer) {\n off(window, 'resize', this.onResize, true);\n }\n },\n watch: {\n swipes: function swipes() {\n this.initialize();\n },\n initialSwipe: function initialSwipe() {\n this.initialize();\n },\n autoplay: function autoplay(_autoplay) {\n if (!_autoplay) {\n this.clear();\n } else {\n this.autoPlay();\n }\n }\n },\n computed: {\n count: function count() {\n return this.swipes.length;\n },\n delta: function delta() {\n return this.vertical ? this.deltaY : this.deltaX;\n },\n size: function size() {\n return this[this.vertical ? 'computedHeight' : 'computedWidth'];\n },\n trackSize: function trackSize() {\n return this.count * this.size;\n },\n activeIndicator: function activeIndicator() {\n return (this.active + this.count) % this.count;\n },\n isCorrectDirection: function isCorrectDirection() {\n var expect = this.vertical ? 'vertical' : 'horizontal';\n return this.direction === expect;\n },\n trackStyle: function trackStyle() {\n var _ref;\n\n var mainAxis = this.vertical ? 'height' : 'width';\n var crossAxis = this.vertical ? 'width' : 'height';\n return _ref = {}, _ref[mainAxis] = this.trackSize + \"px\", _ref[crossAxis] = this[crossAxis] ? this[crossAxis] + \"px\" : '', _ref.transitionDuration = (this.swiping ? 0 : this.duration) + \"ms\", _ref.transform = \"translate\" + (this.vertical ? 'Y' : 'X') + \"(\" + this.offset + \"px)\", _ref;\n },\n indicatorStyle: function indicatorStyle() {\n return {\n backgroundColor: this.indicatorColor\n };\n }\n },\n methods: {\n // initialize swipe position\n initialize: function initialize(active) {\n if (active === void 0) {\n active = this.initialSwipe;\n }\n\n clearTimeout(this.timer);\n\n if (this.$el) {\n var rect = this.$el.getBoundingClientRect();\n this.computedWidth = this.width || rect.width;\n this.computedHeight = this.height || rect.height;\n }\n\n this.swiping = true;\n this.active = active;\n this.offset = this.count > 1 ? -this.size * this.active : 0;\n this.swipes.forEach(function (swipe) {\n swipe.offset = 0;\n });\n this.autoPlay();\n },\n onResize: function onResize() {\n this.initialize(this.activeIndicator);\n },\n onTouchStart: function onTouchStart(event) {\n if (!this.touchable) return;\n this.clear();\n this.swiping = true;\n this.touchStart(event);\n this.correctPosition();\n },\n onTouchMove: function onTouchMove(event) {\n if (!this.touchable || !this.swiping) return;\n this.touchMove(event);\n\n if (this.isCorrectDirection) {\n preventDefault(event, true);\n this.move({\n offset: Math.min(Math.max(this.delta, -this.size), this.size)\n });\n }\n },\n onTouchEnd: function onTouchEnd() {\n if (!this.touchable || !this.swiping) return;\n\n if (this.delta && this.isCorrectDirection) {\n var offset = this.vertical ? this.offsetY : this.offsetX;\n this.move({\n pace: offset > 0 ? this.delta > 0 ? -1 : 1 : 0,\n emitChange: true\n });\n }\n\n this.swiping = false;\n this.autoPlay();\n },\n move: function move(_ref2) {\n var _ref2$pace = _ref2.pace,\n pace = _ref2$pace === void 0 ? 0 : _ref2$pace,\n _ref2$offset = _ref2.offset,\n offset = _ref2$offset === void 0 ? 0 : _ref2$offset,\n emitChange = _ref2.emitChange;\n var delta = this.delta,\n active = this.active,\n count = this.count,\n swipes = this.swipes,\n trackSize = this.trackSize;\n var atFirst = active === 0;\n var atLast = active === count - 1;\n var outOfBounds = !this.loop && (atFirst && (offset > 0 || pace < 0) || atLast && (offset < 0 || pace > 0));\n\n if (outOfBounds || count <= 1) {\n return;\n }\n\n if (swipes[0]) {\n swipes[0].offset = atLast && (delta < 0 || pace > 0) ? trackSize : 0;\n }\n\n if (swipes[count - 1]) {\n swipes[count - 1].offset = atFirst && (delta > 0 || pace < 0) ? -trackSize : 0;\n }\n\n if (pace && active + pace >= -1 && active + pace <= count) {\n this.active += pace;\n\n if (emitChange) {\n this.$emit('change', this.activeIndicator);\n }\n }\n\n this.offset = Math.round(offset - this.active * this.size);\n },\n swipeTo: function swipeTo(index) {\n var _this = this;\n\n this.swiping = true;\n this.resetTouchStatus();\n this.correctPosition();\n setTimeout(function () {\n _this.swiping = false;\n\n _this.move({\n pace: index % _this.count - _this.active,\n emitChange: true\n });\n }, 30);\n },\n correctPosition: function correctPosition() {\n if (this.active <= -1) {\n this.move({\n pace: this.count\n });\n }\n\n if (this.active >= this.count) {\n this.move({\n pace: -this.count\n });\n }\n },\n clear: function clear() {\n clearTimeout(this.timer);\n },\n autoPlay: function autoPlay() {\n var _this2 = this;\n\n var autoplay = this.autoplay;\n\n if (autoplay && this.count > 1) {\n this.clear();\n this.timer = setTimeout(function () {\n _this2.swiping = true;\n\n _this2.resetTouchStatus();\n\n _this2.correctPosition();\n\n setTimeout(function () {\n _this2.swiping = false;\n\n _this2.move({\n pace: 1,\n emitChange: true\n });\n\n _this2.autoPlay();\n }, 30);\n }, autoplay);\n }\n }\n },\n render: function render(h) {\n var _this3 = this;\n\n var count = this.count,\n activeIndicator = this.activeIndicator;\n var Indicator = this.slots('indicator') || this.showIndicators && count > 1 && h(\"div\", {\n \"class\": bem('indicators', {\n vertical: this.vertical\n })\n }, [Array.apply(void 0, Array(count)).map(function (empty, index) {\n return h(\"i\", {\n \"class\": bem('indicator', {\n active: index === activeIndicator\n }),\n \"style\": index === activeIndicator ? _this3.indicatorStyle : null\n });\n })]);\n return h(\"div\", {\n \"class\": bem()\n }, [h(\"div\", {\n \"ref\": \"track\",\n \"style\": this.trackStyle,\n \"class\": bem('track'),\n \"on\": {\n \"touchstart\": this.onTouchStart,\n \"touchmove\": this.onTouchMove,\n \"touchend\": this.onTouchEnd,\n \"touchcancel\": this.onTouchEnd\n }\n }, [this.slots()]), Indicator]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/swipe/index.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { use } from '../utils';\n\nvar _use = use('swipe-item'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n data: function data() {\n return {\n offset: 0\n };\n },\n beforeCreate: function beforeCreate() {\n this.$parent.swipes.push(this);\n },\n destroyed: function destroyed() {\n this.$parent.swipes.splice(this.$parent.swipes.indexOf(this), 1);\n },\n render: function render(h) {\n var _this$$parent = this.$parent,\n vertical = _this$$parent.vertical,\n computedWidth = _this$$parent.computedWidth,\n computedHeight = _this$$parent.computedHeight;\n var style = {\n width: computedWidth + 'px',\n height: vertical ? computedHeight + 'px' : '100%',\n transform: \"translate\" + (vertical ? 'Y' : 'X') + \"(\" + this.offset + \"px)\"\n };\n return h(\"div\", {\n \"class\": bem(),\n \"style\": style,\n \"on\": _extends({}, this.$listeners)\n }, [this.slots()]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/swipe-item/index.js\n// module id = null\n// module chunks = ","import _mergeJSXProps2 from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use, range } from '../utils';\nimport { preventDefault } from '../utils/event';\nimport { PopupMixin } from '../mixins/popup';\nimport { TouchMixin } from '../mixins/touch';\nimport Swipe from '../swipe';\nimport SwipeItem from '../swipe-item';\n\nvar _use = use('image-preview'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction getDistance(touches) {\n return Math.sqrt(Math.abs((touches[0].clientX - touches[1].clientX) * (touches[0].clientY - touches[1].clientY)));\n}\n\nexport default sfc({\n mixins: [PopupMixin, TouchMixin],\n props: {\n images: Array,\n className: null,\n lazyLoad: Boolean,\n asyncClose: Boolean,\n startPosition: Number,\n showIndicators: Boolean,\n loop: {\n type: Boolean,\n \"default\": true\n },\n overlay: {\n type: Boolean,\n \"default\": true\n },\n showIndex: {\n type: Boolean,\n \"default\": true\n },\n minZoom: {\n type: Number,\n \"default\": 1 / 3\n },\n maxZoom: {\n type: Number,\n \"default\": 3\n },\n overlayClass: {\n type: String,\n \"default\": 'van-image-preview__overlay'\n },\n closeOnClickOverlay: {\n type: Boolean,\n \"default\": true\n }\n },\n data: function data() {\n return {\n scale: 1,\n moveX: 0,\n moveY: 0,\n moving: false,\n zooming: false,\n active: 0\n };\n },\n computed: {\n imageStyle: function imageStyle() {\n var scale = this.scale;\n var style = {\n transition: this.zooming || this.moving ? '' : '.3s all'\n };\n\n if (scale !== 1) {\n style.transform = \"scale3d(\" + scale + \", \" + scale + \", 1) translate(\" + this.moveX / scale + \"px, \" + this.moveY / scale + \"px)\";\n }\n\n return style;\n }\n },\n watch: {\n value: function value() {\n this.active = this.startPosition;\n },\n startPosition: function startPosition(active) {\n this.active = active;\n }\n },\n methods: {\n onWrapperTouchStart: function onWrapperTouchStart() {\n this.touchStartTime = new Date();\n },\n onWrapperTouchEnd: function onWrapperTouchEnd(event) {\n preventDefault(event);\n var deltaTime = new Date() - this.touchStartTime;\n\n var _ref = this.$refs.swipe || {},\n _ref$offsetX = _ref.offsetX,\n offsetX = _ref$offsetX === void 0 ? 0 : _ref$offsetX,\n _ref$offsetY = _ref.offsetY,\n offsetY = _ref$offsetY === void 0 ? 0 : _ref$offsetY; // prevent long tap to close component\n\n\n if (deltaTime < 300 && offsetX < 10 && offsetY < 10) {\n var index = this.active;\n this.resetScale();\n this.$emit('close', {\n index: index,\n url: this.images[index]\n });\n\n if (!this.asyncClose) {\n this.$emit('input', false);\n }\n }\n },\n startMove: function startMove(event) {\n var image = event.currentTarget;\n var rect = image.getBoundingClientRect();\n var winWidth = window.innerWidth;\n var winHeight = window.innerHeight;\n this.touchStart(event);\n this.moving = true;\n this.startMoveX = this.moveX;\n this.startMoveY = this.moveY;\n this.maxMoveX = Math.max(0, (rect.width - winWidth) / 2);\n this.maxMoveY = Math.max(0, (rect.height - winHeight) / 2);\n },\n startZoom: function startZoom(event) {\n this.moving = false;\n this.zooming = true;\n this.startScale = this.scale;\n this.startDistance = getDistance(event.touches);\n },\n onTouchStart: function onTouchStart(event) {\n var touches = event.touches;\n\n var _ref2 = this.$refs.swipe || {},\n _ref2$offsetX = _ref2.offsetX,\n offsetX = _ref2$offsetX === void 0 ? 0 : _ref2$offsetX;\n\n if (touches.length === 1 && this.scale !== 1) {\n this.startMove(event);\n }\n /* istanbul ignore else */\n else if (touches.length === 2 && !offsetX) {\n this.startZoom(event);\n }\n },\n onTouchMove: function onTouchMove(event) {\n var touches = event.touches;\n\n if (this.moving || this.zooming) {\n preventDefault(event, true);\n }\n\n if (this.moving) {\n this.touchMove(event);\n var moveX = this.deltaX + this.startMoveX;\n var moveY = this.deltaY + this.startMoveY;\n this.moveX = range(moveX, -this.maxMoveX, this.maxMoveX);\n this.moveY = range(moveY, -this.maxMoveY, this.maxMoveY);\n }\n\n if (this.zooming && touches.length === 2) {\n var distance = getDistance(touches);\n var scale = this.startScale * distance / this.startDistance;\n this.scale = range(scale, this.minZoom, this.maxZoom);\n }\n },\n onTouchEnd: function onTouchEnd(event) {\n /* istanbul ignore else */\n if (this.moving || this.zooming) {\n var stopPropagation = true;\n\n if (this.moving && this.startMoveX === this.moveX && this.startMoveY === this.moveY) {\n stopPropagation = false;\n }\n\n if (!event.touches.length) {\n this.moving = false;\n this.zooming = false;\n this.startMoveX = 0;\n this.startMoveY = 0;\n this.startScale = 1;\n\n if (this.scale < 1) {\n this.resetScale();\n }\n }\n\n if (stopPropagation) {\n preventDefault(event, true);\n }\n }\n },\n onChange: function onChange(active) {\n this.resetScale();\n this.active = active;\n this.$emit('change', active);\n },\n resetScale: function resetScale() {\n this.scale = 1;\n this.moveX = 0;\n this.moveY = 0;\n }\n },\n render: function render(h) {\n var _this = this;\n\n if (!this.value) {\n return;\n }\n\n var active = this.active,\n images = this.images;\n var Index = this.showIndex && h(\"div\", {\n \"class\": bem('index')\n }, [this.slots('index') || active + 1 + \"/\" + images.length]);\n var Images = h(Swipe, {\n \"ref\": \"swipe\",\n \"attrs\": {\n \"loop\": this.loop,\n \"indicatorColor\": \"white\",\n \"initialSwipe\": this.startPosition,\n \"showIndicators\": this.showIndicators\n },\n \"on\": {\n \"change\": this.onChange\n }\n }, [images.map(function (image, index) {\n var props = {\n \"class\": bem('image'),\n style: index === active ? _this.imageStyle : null,\n on: {\n touchstart: _this.onTouchStart,\n touchmove: _this.onTouchMove,\n touchend: _this.onTouchEnd,\n touchcancel: _this.onTouchEnd\n }\n };\n return h(SwipeItem, [_this.lazyLoad ? h(\"img\", _mergeJSXProps([{\n \"directives\": [{\n name: \"lazy\",\n value: image\n }]\n }, props])) : h(\"img\", _mergeJSXProps2([{\n \"attrs\": {\n \"src\": image\n }\n }, props]))]);\n })]);\n return h(\"transition\", {\n \"attrs\": {\n \"name\": \"van-fade\"\n }\n }, [h(\"div\", {\n \"class\": [bem(), this.className],\n \"on\": {\n \"touchstart\": this.onWrapperTouchStart,\n \"touchend\": this.onWrapperTouchEnd,\n \"touchcancel\": this.onWrapperTouchEnd\n }\n }, [Index, Images])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/image-preview/ImagePreview.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport Vue from 'vue';\nimport VueImagePreview from './ImagePreview';\nimport { isServer } from '../utils';\nvar instance;\nvar defaultConfig = {\n images: [],\n loop: true,\n value: true,\n minZoom: 1 / 3,\n maxZoom: 3,\n className: '',\n lazyLoad: false,\n showIndex: true,\n asyncClose: false,\n startPosition: 0,\n showIndicators: false\n};\n\nvar initInstance = function initInstance() {\n instance = new (Vue.extend(VueImagePreview))({\n el: document.createElement('div')\n });\n document.body.appendChild(instance.$el);\n};\n\nvar ImagePreview = function ImagePreview(images, startPosition) {\n if (startPosition === void 0) {\n startPosition = 0;\n }\n\n /* istanbul ignore if */\n if (isServer) {\n return;\n }\n\n if (!instance) {\n initInstance();\n }\n\n var options = Array.isArray(images) ? {\n images: images,\n startPosition: startPosition\n } : images;\n\n _extends(instance, defaultConfig, options);\n\n instance.$once('input', function (show) {\n instance.value = show;\n });\n\n if (options.onClose) {\n instance.$once('close', options.onClose);\n }\n\n return instance;\n};\n\nImagePreview.install = function () {\n Vue.use(VueImagePreview);\n};\n\nexport default ImagePreview;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/image-preview/index.js\n// module id = null\n// module chunks = ","import Lazyload from 'vue-lazyload';\nexport default Lazyload;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/lazyload/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\nimport Loading from '../loading';\nimport { on, off } from '../utils/event';\nimport { getScrollTop, getElementTop, getVisibleHeight, getScrollEventTarget } from '../utils/scroll';\n\nvar _use = use('list'),\n sfc = _use[0],\n bem = _use[1],\n t = _use[2];\n\nexport default sfc({\n model: {\n prop: 'loading'\n },\n props: {\n error: Boolean,\n loading: Boolean,\n finished: Boolean,\n errorText: String,\n loadingText: String,\n finishedText: String,\n immediateCheck: {\n type: Boolean,\n \"default\": true\n },\n offset: {\n type: Number,\n \"default\": 300\n },\n direction: {\n type: String,\n \"default\": 'down'\n }\n },\n mounted: function mounted() {\n this.scroller = getScrollEventTarget(this.$el);\n this.handler(true);\n\n if (this.immediateCheck) {\n this.$nextTick(this.check);\n }\n },\n destroyed: function destroyed() {\n this.handler(false);\n },\n activated: function activated() {\n this.handler(true);\n },\n deactivated: function deactivated() {\n this.handler(false);\n },\n watch: {\n loading: function loading() {\n this.$nextTick(this.check);\n },\n finished: function finished() {\n this.$nextTick(this.check);\n }\n },\n methods: {\n check: function check() {\n if (this.loading || this.finished || this.error) {\n return;\n }\n\n var el = this.$el;\n var scroller = this.scroller;\n var scrollerHeight = getVisibleHeight(scroller);\n /* istanbul ignore next */\n\n if (!scrollerHeight || window.getComputedStyle(el).display === 'none' || el.offsetParent === null) {\n return;\n }\n\n var offset = this.offset,\n direction = this.direction;\n\n function isReachEdge() {\n if (el === scroller) {\n var scrollTop = getScrollTop(el);\n\n if (direction === 'up') {\n return scrollTop <= offset;\n }\n\n var targetBottom = scrollTop + scrollerHeight;\n return scroller.scrollHeight - targetBottom <= offset;\n }\n\n if (direction === 'up') {\n return getScrollTop(scroller) - getElementTop(el) <= offset;\n }\n\n var elBottom = getElementTop(el) + getVisibleHeight(el) - getElementTop(scroller);\n return elBottom - scrollerHeight <= offset;\n }\n\n if (isReachEdge()) {\n this.$emit('input', true);\n this.$emit('load');\n }\n },\n clickErrorText: function clickErrorText() {\n this.$emit('update:error', false);\n this.$nextTick(this.check);\n },\n handler: function handler(bind) {\n /* istanbul ignore else */\n if (this.binded !== bind) {\n this.binded = bind;\n (bind ? on : off)(this.scroller, 'scroll', this.check);\n }\n }\n },\n render: function render(h) {\n return h(\"div\", {\n \"class\": bem()\n }, [this.direction === 'down' && this.slots(), this.loading && h(\"div\", {\n \"class\": bem('loading'),\n \"key\": \"loading\"\n }, [this.slots('loading') || [h(Loading, {\n \"class\": bem('loading-icon')\n }), h(\"span\", {\n \"class\": bem('loading-text')\n }, [this.loadingText || t('loading')])]]), this.finished && this.finishedText && h(\"div\", {\n \"class\": bem('finished-text')\n }, [this.finishedText]), this.error && this.errorText && h(\"div\", {\n \"on\": {\n \"click\": this.clickErrorText\n },\n \"class\": bem('error-text')\n }, [this.errorText]), this.direction === 'up' && this.slots()]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/list/index.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use, noop } from '../utils';\nimport { inherit } from '../utils/functional';\nimport Icon from '../icon'; // Types\n\nvar _use = use('nav-bar'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction NavBar(h, props, slots, ctx) {\n return h(\"div\", _mergeJSXProps([{\n \"class\": [bem({\n fixed: props.fixed\n }), {\n 'van-hairline--bottom': props.border\n }],\n \"style\": {\n zIndex: props.zIndex\n }\n }, inherit(ctx)]), [h(\"div\", {\n \"class\": bem('left'),\n \"on\": {\n \"click\": ctx.listeners['click-left'] || noop\n }\n }, [slots.left ? slots.left() : [props.leftArrow && h(Icon, {\n \"class\": bem('arrow'),\n \"attrs\": {\n \"name\": \"arrow-left\"\n }\n }), props.leftText && h(\"span\", {\n \"class\": bem('text')\n }, [props.leftText])]]), h(\"div\", {\n \"class\": [bem('title'), 'van-ellipsis']\n }, [slots.title ? slots.title() : props.title]), h(\"div\", {\n \"class\": bem('right'),\n \"on\": {\n \"click\": ctx.listeners['click-right'] || noop\n }\n }, [slots.right ? slots.right() : props.rightText && h(\"span\", {\n \"class\": bem('text')\n }, [props.rightText])])]);\n}\n\nNavBar.props = {\n title: String,\n fixed: Boolean,\n leftText: String,\n rightText: String,\n leftArrow: Boolean,\n border: {\n type: Boolean,\n \"default\": true\n },\n zIndex: {\n type: Number,\n \"default\": 1\n }\n};\nexport default sfc(NavBar);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/nav-bar/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\nimport Icon from '../icon';\n\nvar _use = use('notice-bar'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n props: {\n text: String,\n mode: String,\n color: String,\n leftIcon: String,\n wrapable: Boolean,\n background: String,\n delay: {\n type: [String, Number],\n \"default\": 1\n },\n scrollable: {\n type: Boolean,\n \"default\": true\n },\n speed: {\n type: Number,\n \"default\": 50\n }\n },\n data: function data() {\n return {\n wrapWidth: 0,\n firstRound: true,\n duration: 0,\n offsetWidth: 0,\n showNoticeBar: true,\n animationClass: ''\n };\n },\n watch: {\n text: {\n handler: function handler() {\n var _this = this;\n\n this.$nextTick(function () {\n var _this$$refs = _this.$refs,\n wrap = _this$$refs.wrap,\n content = _this$$refs.content;\n\n if (!wrap || !content) {\n return;\n }\n\n var wrapWidth = wrap.getBoundingClientRect().width;\n var offsetWidth = content.getBoundingClientRect().width;\n\n if (_this.scrollable && offsetWidth > wrapWidth) {\n _this.wrapWidth = wrapWidth;\n _this.offsetWidth = offsetWidth;\n _this.duration = offsetWidth / _this.speed;\n _this.animationClass = bem('play');\n }\n });\n },\n immediate: true\n }\n },\n methods: {\n onClickIcon: function onClickIcon() {\n if (this.mode === 'closeable') {\n this.showNoticeBar = false;\n this.$emit('close');\n }\n },\n onAnimationEnd: function onAnimationEnd() {\n var _this2 = this;\n\n this.firstRound = false;\n this.$nextTick(function () {\n _this2.duration = (_this2.offsetWidth + _this2.wrapWidth) / _this2.speed;\n _this2.animationClass = bem('play--infinite');\n });\n }\n },\n render: function render(h) {\n var _this3 = this;\n\n var mode = this.mode;\n var iconName = mode === 'closeable' ? 'cross' : mode === 'link' ? 'arrow' : '';\n var barStyle = {\n color: this.color,\n background: this.background\n };\n var contentStyle = {\n paddingLeft: this.firstRound ? 0 : this.wrapWidth + 'px',\n animationDelay: (this.firstRound ? this.delay : 0) + 's',\n animationDuration: this.duration + 's'\n };\n return h(\"div\", {\n \"directives\": [{\n name: \"show\",\n value: this.showNoticeBar\n }],\n \"class\": bem({\n withicon: mode,\n wrapable: this.wrapable\n }),\n \"style\": barStyle,\n \"on\": {\n \"click\": function click() {\n _this3.$emit('click');\n }\n }\n }, [this.leftIcon && h(Icon, {\n \"class\": bem('left-icon'),\n \"attrs\": {\n \"name\": this.leftIcon\n }\n }), h(\"div\", {\n \"ref\": \"wrap\",\n \"class\": bem('wrap')\n }, [h(\"div\", {\n \"ref\": \"content\",\n \"class\": [bem('content'), this.animationClass, {\n 'van-ellipsis': !this.scrollable && !this.wrapable\n }],\n \"style\": contentStyle,\n \"on\": {\n \"animationend\": this.onAnimationEnd,\n \"webkitAnimationEnd\": this.onAnimationEnd\n }\n }, [this.slots() || this.text])]), iconName && h(Icon, {\n \"class\": bem('right-icon'),\n \"attrs\": {\n \"name\": iconName\n },\n \"on\": {\n \"click\": this.onClickIcon\n }\n })]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/notice-bar/index.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../utils';\nimport { RED, WHITE } from '../utils/color';\nimport { emit, inherit } from '../utils/functional';\nimport { PopupMixin } from '../mixins/popup';\nimport Popup from '../popup'; // Types\n\nvar _use = use('notify'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction Notify(h, props, slots, ctx) {\n var style = {\n color: props.color,\n background: props.background\n };\n return h(Popup, _mergeJSXProps([{\n \"attrs\": {\n \"value\": props.value,\n \"position\": \"top\",\n \"overlay\": false,\n \"lockScroll\": false\n },\n \"style\": style,\n \"class\": [bem(), props.className],\n \"on\": {\n \"input\": function input(value) {\n emit(ctx, 'input', value);\n }\n }\n }, inherit(ctx)]), [props.message]);\n}\n\nNotify.props = _extends({}, PopupMixin.props, {\n className: null,\n message: [String, Number],\n color: {\n type: String,\n \"default\": WHITE\n },\n background: {\n type: String,\n \"default\": RED\n },\n duration: {\n type: Number,\n \"default\": 3000\n }\n});\nexport default sfc(Notify);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/notify/Notify.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport Vue from 'vue';\nimport VanNotify from './Notify';\nimport { RED, WHITE } from '../utils/color';\nimport { isObj, isServer } from '../utils';\nimport { mount } from '../utils/functional';\nvar timer;\nvar instance;\n\nfunction parseOptions(message) {\n return isObj(message) ? message : {\n message: message\n };\n}\n\nfunction Notify(options) {\n /* istanbul ignore if */\n if (isServer) {\n return;\n }\n\n if (!instance) {\n instance = mount(VanNotify);\n }\n\n options = _extends({}, Notify.currentOptions, parseOptions(options));\n\n _extends(instance, options);\n\n clearTimeout(timer);\n\n if (options.duration && options.duration > 0) {\n timer = setTimeout(Notify.clear, options.duration);\n }\n\n return instance;\n}\n\nfunction defaultOptions() {\n return {\n value: true,\n message: '',\n color: WHITE,\n background: RED,\n duration: 3000,\n className: ''\n };\n}\n\nNotify.clear = function () {\n if (instance) {\n instance.value = false;\n }\n};\n\nNotify.currentOptions = defaultOptions();\n\nNotify.setDefaultOptions = function (options) {\n _extends(Notify.currentOptions, options);\n};\n\nNotify.resetDefaultOptions = function () {\n Notify.currentOptions = defaultOptions();\n};\n\nNotify.install = function () {\n Vue.use(VanNotify);\n};\n\nVue.prototype.$notify = Notify;\nexport default Notify;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/notify/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\nimport { preventDefault } from '../utils/event';\n\nvar _use = use('key'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n props: {\n type: Array,\n text: [String, Number]\n },\n data: function data() {\n return {\n active: false\n };\n },\n computed: {\n className: function className() {\n var types = this.type.slice(0);\n this.active && types.push('active');\n return bem(types);\n }\n },\n methods: {\n onFocus: function onFocus() {\n this.active = true;\n this.$emit('press', this.text);\n },\n onBlur: function onBlur(event) {\n preventDefault(event, true);\n this.active = false;\n }\n },\n render: function render(h) {\n var onBlur = this.onBlur;\n return h(\"i\", {\n \"class\": ['van-hairline', this.className],\n \"on\": {\n \"touchstart\": this.onFocus,\n \"touchmove\": onBlur,\n \"touchend\": onBlur,\n \"touchcancel\": onBlur\n }\n }, [this.text]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/number-keyboard/Key.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\nimport { stopPropagation } from '../utils/event';\nimport Key from './Key';\n\nvar _use = use('number-keyboard'),\n sfc = _use[0],\n bem = _use[1],\n t = _use[2];\n\nvar CLOSE_KEY_TYPE = ['blue', 'big'];\nvar DELETE_KEY_TYPE = ['delete', 'big', 'gray'];\nexport default sfc({\n props: {\n show: Boolean,\n title: String,\n closeButtonText: String,\n deleteButtonText: String,\n safeAreaInsetBottom: Boolean,\n theme: {\n type: String,\n \"default\": 'default'\n },\n extraKey: {\n type: String,\n \"default\": ''\n },\n zIndex: {\n type: Number,\n \"default\": 100\n },\n transition: {\n type: Boolean,\n \"default\": true\n },\n showDeleteKey: {\n type: Boolean,\n \"default\": true\n },\n hideOnClickOutside: {\n type: Boolean,\n \"default\": true\n }\n },\n mounted: function mounted() {\n this.handler(true);\n },\n destroyed: function destroyed() {\n this.handler(false);\n },\n activated: function activated() {\n this.handler(true);\n },\n deactivated: function deactivated() {\n this.handler(false);\n },\n watch: {\n show: function show() {\n if (!this.transition) {\n this.$emit(this.show ? 'show' : 'hide');\n }\n }\n },\n computed: {\n keys: function keys() {\n var keys = [];\n\n for (var i = 1; i <= 9; i++) {\n keys.push({\n text: i\n });\n }\n\n switch (this.theme) {\n case 'default':\n keys.push({\n text: this.extraKey,\n type: ['gray']\n }, {\n text: 0\n }, {\n text: this.deleteText,\n type: ['gray', 'delete']\n });\n break;\n\n case 'custom':\n keys.push({\n text: 0,\n type: ['middle']\n }, {\n text: this.extraKey\n });\n break;\n }\n\n return keys;\n },\n deleteText: function deleteText() {\n return this.deleteButtonText || t('delete');\n }\n },\n methods: {\n handler: function handler(action) {\n /* istanbul ignore if */\n if (this.$isServer) {\n return;\n }\n\n if (action !== this.handlerStatus && this.hideOnClickOutside) {\n this.handlerStatus = action;\n document.body[(action ? 'add' : 'remove') + 'EventListener']('touchstart', this.onBlur);\n }\n },\n onBlur: function onBlur() {\n this.$emit('blur');\n },\n onClose: function onClose() {\n this.$emit('close');\n this.onBlur();\n },\n onAnimationEnd: function onAnimationEnd() {\n this.$emit(this.show ? 'show' : 'hide');\n },\n onPress: function onPress(text) {\n if (text === '') {\n return;\n }\n\n if (text === this.deleteText) {\n this.$emit('delete');\n } else if (text === this.closeButtonText) {\n this.onClose();\n } else {\n this.$emit('input', text);\n }\n }\n },\n render: function render(h) {\n var title = this.title,\n theme = this.theme,\n onPress = this.onPress,\n closeButtonText = this.closeButtonText;\n var titleLeftSlot = this.slots('title-left');\n var showTitleClose = closeButtonText && theme === 'default';\n var showTitle = title || showTitleClose || titleLeftSlot;\n return h(\"transition\", {\n \"attrs\": {\n \"name\": this.transition ? 'van-slide-up' : ''\n }\n }, [h(\"div\", {\n \"directives\": [{\n name: \"show\",\n value: this.show\n }],\n \"style\": {\n zIndex: this.zIndex\n },\n \"class\": bem([theme, {\n 'safe-area-inset-bottom': this.safeAreaInsetBottom\n }]),\n \"on\": {\n \"touchstart\": stopPropagation,\n \"animationend\": this.onAnimationEnd,\n \"webkitAnimationEnd\": this.onAnimationEnd\n }\n }, [showTitle && h(\"div\", {\n \"class\": [bem('title'), 'van-hairline--top']\n }, [titleLeftSlot && h(\"span\", {\n \"class\": bem('title-left')\n }, [titleLeftSlot]), title && h(\"span\", [title]), showTitleClose && h(\"span\", {\n \"class\": bem('close'),\n \"on\": {\n \"click\": this.onClose\n }\n }, [closeButtonText])]), h(\"div\", {\n \"class\": bem('body')\n }, [this.keys.map(function (key) {\n return h(Key, {\n \"key\": key.text,\n \"attrs\": {\n \"text\": key.text,\n \"type\": key.type\n },\n \"on\": {\n \"press\": onPress\n }\n });\n })]), theme === 'custom' && h(\"div\", {\n \"class\": bem('sidebar')\n }, [h(Key, {\n \"attrs\": {\n \"text\": this.deleteText,\n \"type\": DELETE_KEY_TYPE\n },\n \"on\": {\n \"press\": onPress\n }\n }), h(Key, {\n \"attrs\": {\n \"text\": closeButtonText,\n \"type\": CLOSE_KEY_TYPE\n },\n \"on\": {\n \"press\": onPress\n }\n })])])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/number-keyboard/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\n\nvar _use = use('pagination'),\n sfc = _use[0],\n bem = _use[1],\n t = _use[2];\n\nfunction makePage(number, text, active) {\n return {\n number: number,\n text: text,\n active: active\n };\n}\n\nexport default sfc({\n props: {\n value: Number,\n prevText: String,\n nextText: String,\n pageCount: Number,\n totalItems: Number,\n forceEllipses: Boolean,\n mode: {\n type: String,\n \"default\": 'multi'\n },\n itemsPerPage: {\n type: Number,\n \"default\": 10\n },\n showPageSize: {\n type: Number,\n \"default\": 5\n }\n },\n computed: {\n count: function count() {\n var count = this.pageCount || Math.ceil(this.totalItems / this.itemsPerPage);\n return Math.max(1, count);\n },\n pages: function pages() {\n var pages = [];\n var pageCount = this.count;\n\n if (this.mode !== 'multi') {\n return pages;\n } // Default page limits\n\n\n var startPage = 1;\n var endPage = pageCount;\n var isMaxSized = this.showPageSize !== undefined && this.showPageSize < pageCount; // recompute if showPageSize\n\n if (isMaxSized) {\n // Current page is displayed in the middle of the visible ones\n startPage = Math.max(this.value - Math.floor(this.showPageSize / 2), 1);\n endPage = startPage + this.showPageSize - 1; // Adjust if limit is exceeded\n\n if (endPage > pageCount) {\n endPage = pageCount;\n startPage = endPage - this.showPageSize + 1;\n }\n } // Add page number links\n\n\n for (var number = startPage; number <= endPage; number++) {\n var page = makePage(number, number, number === this.value);\n pages.push(page);\n } // Add links to move between page sets\n\n\n if (isMaxSized && this.showPageSize > 0 && this.forceEllipses) {\n if (startPage > 1) {\n var previousPageSet = makePage(startPage - 1, '...', false);\n pages.unshift(previousPageSet);\n }\n\n if (endPage < pageCount) {\n var nextPageSet = makePage(endPage + 1, '...', false);\n pages.push(nextPageSet);\n }\n }\n\n return pages;\n }\n },\n watch: {\n value: {\n handler: function handler(page) {\n this.select(page || this.value);\n },\n immediate: true\n }\n },\n methods: {\n select: function select(page, emitChange) {\n page = Math.min(this.count, Math.max(1, page));\n\n if (this.value !== page) {\n this.$emit('input', page);\n\n if (emitChange) {\n this.$emit('change', page);\n }\n }\n }\n },\n render: function render(h) {\n var _this = this;\n\n var value = this.value;\n var simple = this.mode !== 'multi';\n\n var onSelect = function onSelect(value) {\n return function () {\n _this.select(value, true);\n };\n };\n\n return h(\"ul\", {\n \"class\": bem({\n simple: simple\n })\n }, [h(\"li\", {\n \"class\": [bem('item', {\n disabled: value === 1\n }), bem('prev'), 'van-hairline'],\n \"on\": {\n \"click\": onSelect(value - 1)\n }\n }, [this.prevText || t('prev')]), this.pages.map(function (page) {\n return h(\"li\", {\n \"class\": [bem('item', {\n active: page.active\n }), bem('page'), 'van-hairline'],\n \"on\": {\n \"click\": onSelect(page.number)\n }\n }, [page.text]);\n }), simple && h(\"li\", {\n \"class\": bem('page-desc')\n }, [this.slots('pageDesc') || value + \"/\" + this.count]), h(\"li\", {\n \"class\": [bem('item', {\n disabled: value === this.count\n }), bem('next'), 'van-hairline'],\n \"on\": {\n \"click\": onSelect(value + 1)\n }\n }, [this.nextText || t('next')])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/pagination/index.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../utils';\nimport Cell from '../cell';\nimport CellGroup from '../cell-group';\nimport { inherit } from '../utils/functional'; // Types\n\nvar _use = use('panel'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction Panel(h, props, slots, ctx) {\n var Content = function Content() {\n return [slots.header ? slots.header() : h(Cell, {\n \"attrs\": {\n \"icon\": props.icon,\n \"label\": props.desc,\n \"title\": props.title,\n \"value\": props.status,\n \"valueClass\": bem('header-value')\n },\n \"class\": bem('header')\n }), h(\"div\", {\n \"class\": bem('content')\n }, [slots[\"default\"] && slots[\"default\"]()]), slots.footer && h(\"div\", {\n \"class\": [bem('footer'), 'van-hairline--top']\n }, [slots.footer()])];\n };\n\n return h(CellGroup, _mergeJSXProps([{\n \"class\": bem(),\n \"scopedSlots\": {\n \"default\": Content\n }\n }, inherit(ctx, true)]));\n}\n\nPanel.props = {\n icon: String,\n desc: String,\n title: String,\n status: String\n};\nexport default sfc(Panel);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/panel/index.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../utils';\nimport { emit, inherit } from '../utils/functional'; // Types\n\nvar _use = use('password-input'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction PasswordInput(h, props, slots, ctx) {\n var info = props.errorInfo || props.info;\n var Points = [];\n\n for (var i = 0; i < props.length; i++) {\n var _char = props.value[i];\n Points.push(h(\"li\", {\n \"class\": \"van-hairline\"\n }, [props.mask ? h(\"i\", {\n \"style\": {\n visibility: _char ? 'visible' : 'hidden'\n }\n }) : _char]));\n }\n\n return h(\"div\", {\n \"class\": bem()\n }, [h(\"ul\", _mergeJSXProps([{\n \"class\": [bem('security'), 'van-hairline--surround'],\n \"on\": {\n \"touchstart\": function touchstart(event) {\n event.stopPropagation();\n emit(ctx, 'focus', event);\n }\n }\n }, inherit(ctx, true)]), [Points]), info && h(\"div\", {\n \"class\": bem(props.errorInfo ? 'error-info' : 'info')\n }, [info])]);\n}\n\nPasswordInput.props = {\n info: String,\n errorInfo: String,\n mask: {\n type: Boolean,\n \"default\": true\n },\n value: {\n type: String,\n \"default\": ''\n },\n length: {\n type: Number,\n \"default\": 6\n }\n};\nexport default sfc(PasswordInput);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/password-input/index.js\n// module id = null\n// module chunks = ","import { use, isDef } from '../utils';\nimport { BLUE, WHITE } from '../utils/color';\n\nvar _use = use('progress'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n props: {\n inactive: Boolean,\n pivotText: String,\n pivotColor: String,\n percentage: {\n type: Number,\n required: true,\n validator: function validator(value) {\n return value >= 0 && value <= 100;\n }\n },\n showPivot: {\n type: Boolean,\n \"default\": true\n },\n color: {\n type: String,\n \"default\": BLUE\n },\n textColor: {\n type: String,\n \"default\": WHITE\n }\n },\n data: function data() {\n return {\n pivotWidth: 0,\n progressWidth: 0\n };\n },\n mounted: function mounted() {\n this.getWidth();\n },\n watch: {\n showPivot: function showPivot() {\n this.getWidth();\n },\n pivotText: function pivotText() {\n this.getWidth();\n }\n },\n methods: {\n getWidth: function getWidth() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.progressWidth = _this.$el.offsetWidth;\n _this.pivotWidth = _this.$refs.pivot ? _this.$refs.pivot.offsetWidth : 0;\n });\n }\n },\n render: function render(h) {\n var pivotText = this.pivotText,\n percentage = this.percentage;\n var text = isDef(pivotText) ? pivotText : percentage + '%';\n var showPivot = this.showPivot && text;\n var background = this.inactive ? '#cacaca' : this.color;\n var pivotStyle = {\n color: this.textColor,\n background: this.pivotColor || background\n };\n var portionStyle = {\n background: background,\n width: (this.progressWidth - this.pivotWidth) * percentage / 100 + 'px'\n };\n return h(\"div\", {\n \"class\": bem()\n }, [h(\"span\", {\n \"class\": bem('portion', {\n 'with-pivot': showPivot\n }),\n \"style\": portionStyle\n }, [showPivot && h(\"span\", {\n \"ref\": \"pivot\",\n \"style\": pivotStyle,\n \"class\": bem('pivot')\n }, [text])])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/progress/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\nimport { preventDefault } from '../utils/event';\nimport { TouchMixin } from '../mixins/touch';\nimport { getScrollTop, getScrollEventTarget } from '../utils/scroll';\nimport Loading from '../loading';\n\nvar _use = use('pull-refresh'),\n sfc = _use[0],\n bem = _use[1],\n t = _use[2];\n\nvar TEXT_STATUS = ['pulling', 'loosing', 'success'];\nexport default sfc({\n mixins: [TouchMixin],\n props: {\n disabled: Boolean,\n successText: String,\n pullingText: String,\n loosingText: String,\n loadingText: String,\n value: {\n type: Boolean,\n required: true\n },\n successDuration: {\n type: Number,\n \"default\": 500\n },\n animationDuration: {\n type: Number,\n \"default\": 300\n },\n headHeight: {\n type: Number,\n \"default\": 50\n }\n },\n data: function data() {\n return {\n status: 'normal',\n height: 0,\n duration: 0\n };\n },\n computed: {\n untouchable: function untouchable() {\n return this.status === 'loading' || this.status === 'success' || this.disabled;\n }\n },\n watch: {\n value: function value(loading) {\n var _this = this;\n\n this.duration = this.animationDuration;\n\n if (!loading && this.successText) {\n this.status = 'success';\n setTimeout(function () {\n _this.setStatus(0);\n }, this.successDuration);\n } else {\n this.setStatus(loading ? this.headHeight : 0, loading);\n }\n }\n },\n mounted: function mounted() {\n this.scrollEl = getScrollEventTarget(this.$el);\n },\n methods: {\n onTouchStart: function onTouchStart(event) {\n if (!this.untouchable && this.getCeiling()) {\n this.duration = 0;\n this.touchStart(event);\n }\n },\n onTouchMove: function onTouchMove(event) {\n if (this.untouchable) {\n return;\n }\n\n this.touchMove(event);\n\n if (!this.ceiling && this.getCeiling()) {\n this.duration = 0;\n this.startY = event.touches[0].clientY;\n this.deltaY = 0;\n }\n\n if (this.ceiling && this.deltaY >= 0) {\n if (this.direction === 'vertical') {\n this.setStatus(this.ease(this.deltaY));\n preventDefault(event);\n }\n }\n },\n onTouchEnd: function onTouchEnd() {\n if (!this.untouchable && this.ceiling && this.deltaY) {\n this.duration = this.animationDuration;\n\n if (this.status === 'loosing') {\n this.setStatus(this.headHeight, true);\n this.$emit('input', true);\n this.$emit('refresh');\n } else {\n this.setStatus(0);\n }\n }\n },\n getCeiling: function getCeiling() {\n this.ceiling = getScrollTop(this.scrollEl) === 0;\n return this.ceiling;\n },\n ease: function ease(height) {\n var headHeight = this.headHeight;\n return height < headHeight ? height : height < headHeight * 2 ? Math.round(headHeight + (height - headHeight) / 2) : Math.round(headHeight * 1.5 + (height - headHeight * 2) / 4);\n },\n setStatus: function setStatus(height, isLoading) {\n this.height = height;\n var status = isLoading ? 'loading' : height === 0 ? 'normal' : height < this.headHeight ? 'pulling' : 'loosing';\n\n if (status !== this.status) {\n this.status = status;\n }\n }\n },\n render: function render(h) {\n var status = this.status;\n var text = this[status + \"Text\"] || t(status);\n var style = {\n transition: this.duration + \"ms\",\n transform: this.height ? \"translate3d(0,\" + this.height + \"px, 0)\" : ''\n };\n var Status = this.slots(status) || [TEXT_STATUS.indexOf(status) !== -1 && h(\"div\", {\n \"class\": bem('text')\n }, [text]), status === 'loading' && h(\"div\", {\n \"class\": bem('loading')\n }, [h(Loading), h(\"span\", [text])])];\n return h(\"div\", {\n \"class\": bem()\n }, [h(\"div\", {\n \"class\": bem('track'),\n \"style\": style,\n \"on\": {\n \"touchstart\": this.onTouchStart,\n \"touchmove\": this.onTouchMove,\n \"touchend\": this.onTouchEnd,\n \"touchcancel\": this.onTouchEnd\n }\n }, [h(\"div\", {\n \"class\": bem('head')\n }, [Status]), this.slots()])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/pull-refresh/index.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n\n/* eslint-disable prefer-spread */\nimport { use } from '../utils';\nimport { emit, inherit } from '../utils/functional';\nimport { preventDefault } from '../utils/event';\nimport Icon from '../icon'; // Types\n\nvar _use = use('rate'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction getRateStatus(value, index, allowHalf) {\n if (value >= index) {\n return 'full';\n }\n\n if (value + 0.5 >= index && allowHalf) {\n return 'half';\n }\n\n return 'void';\n}\n\nfunction Rate(h, props, slots, ctx) {\n var icon = props.icon,\n size = props.size,\n color = props.color,\n voidIcon = props.voidIcon,\n readonly = props.readonly,\n disabled = props.disabled,\n voidColor = props.voidColor,\n disabledColor = props.disabledColor;\n var list = [];\n\n for (var i = 1; i <= props.count; i++) {\n list.push(getRateStatus(props.value, i, props.allowHalf));\n }\n\n function onSelect(index) {\n if (!disabled && !readonly) {\n emit(ctx, 'input', index);\n emit(ctx, 'change', index);\n }\n }\n\n function onTouchMove(event) {\n if (readonly || disabled || !document.elementFromPoint) {\n return;\n }\n\n preventDefault(event);\n var _event$touches$ = event.touches[0],\n clientX = _event$touches$.clientX,\n clientY = _event$touches$.clientY;\n var target = document.elementFromPoint(clientX, clientY);\n\n if (target && target.dataset) {\n var score = target.dataset.score;\n /* istanbul ignore else */\n\n if (score) {\n onSelect(+score);\n }\n }\n }\n\n function renderStar(status, index) {\n var isFull = status === 'full';\n var isVoid = status === 'void';\n return h(\"div\", {\n \"key\": index,\n \"class\": bem('item')\n }, [h(Icon, {\n \"attrs\": {\n \"name\": isFull ? icon : voidIcon,\n \"size\": size + \"px\",\n \"data-score\": index + 1,\n \"color\": disabled ? disabledColor : isFull ? color : voidColor\n },\n \"class\": bem('icon'),\n \"on\": {\n \"click\": function click() {\n onSelect(index + 1);\n }\n }\n }), props.allowHalf && h(Icon, {\n \"attrs\": {\n \"name\": isVoid ? voidIcon : icon,\n \"size\": size + \"px\",\n \"data-score\": index + 0.5,\n \"color\": disabled ? disabledColor : isVoid ? voidColor : color\n },\n \"class\": bem('icon', 'half'),\n \"on\": {\n \"click\": function click() {\n onSelect(index + 0.5);\n }\n }\n })]);\n }\n\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem()\n }, inherit(ctx), {\n \"on\": {\n \"touchmove\": onTouchMove\n }\n }]), [list.map(function (status, index) {\n return renderStar(status, index);\n })]);\n}\n\nRate.props = {\n value: Number,\n readonly: Boolean,\n disabled: Boolean,\n allowHalf: Boolean,\n size: {\n type: Number,\n \"default\": 20\n },\n icon: {\n type: String,\n \"default\": 'star'\n },\n voidIcon: {\n type: String,\n \"default\": 'star-o'\n },\n color: {\n type: String,\n \"default\": '#ffd21e'\n },\n voidColor: {\n type: String,\n \"default\": '#c7c7c7'\n },\n disabledColor: {\n type: String,\n \"default\": '#bdbdbd'\n },\n count: {\n type: Number,\n \"default\": 5\n }\n};\nexport default sfc(Rate);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/rate/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\n\nvar _use = use('row'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n props: {\n type: String,\n align: String,\n justify: String,\n tag: {\n type: String,\n \"default\": 'div'\n },\n gutter: {\n type: [Number, String],\n \"default\": 0\n }\n },\n render: function render(h) {\n var _bem;\n\n var align = this.align,\n justify = this.justify;\n var flex = this.type === 'flex';\n var margin = \"-\" + Number(this.gutter) / 2 + \"px\";\n var style = this.gutter ? {\n marginLeft: margin,\n marginRight: margin\n } : {};\n return h(this.tag, {\n \"style\": style,\n \"class\": bem((_bem = {\n flex: flex\n }, _bem[\"align-\" + align] = flex && align, _bem[\"justify-\" + justify] = flex && justify, _bem))\n }, [this.slots()]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/row/index.js\n// module id = null\n// module chunks = ","import _mergeJSXProps2 from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { use } from '../utils';\nimport { inherit, emit } from '../utils/functional';\nimport { preventDefault } from '../utils/event';\nimport Field from '../field'; // Types\n\nvar _use = use('search'),\n sfc = _use[0],\n bem = _use[1],\n t = _use[2];\n\nfunction Search(h, props, slots, ctx) {\n var Label = function Label() {\n if (!slots.label && !props.label) {\n return null;\n }\n\n return h(\"div\", {\n \"class\": bem('label')\n }, [slots.label ? slots.label() : props.label]);\n };\n\n var Action = function Action() {\n if (!props.showAction) {\n return null;\n }\n\n var onCancel = function onCancel() {\n emit(ctx, 'input', '');\n emit(ctx, 'cancel');\n };\n\n return h(\"div\", {\n \"class\": bem('action')\n }, [slots.action ? slots.action() : h(\"div\", {\n \"on\": {\n \"click\": onCancel\n }\n }, [t('cancel')])]);\n };\n\n var fieldData = {\n attrs: ctx.data.attrs,\n on: _extends({}, ctx.listeners, {\n input: function input(value) {\n emit(ctx, 'input', value);\n },\n keypress: function keypress(event) {\n // press enter\n if (event.keyCode === 13) {\n preventDefault(event);\n emit(ctx, 'search', props.value);\n }\n\n emit(ctx, 'keypress', event);\n }\n })\n };\n var inheritData = inherit(ctx);\n delete inheritData.attrs;\n return h(\"div\", _mergeJSXProps2([{\n \"class\": bem({\n 'show-action': props.showAction\n }),\n \"style\": {\n background: props.background\n }\n }, inheritData]), [h(\"div\", {\n \"class\": bem('content', props.shape)\n }, [Label(), h(Field, _mergeJSXProps([{\n \"attrs\": {\n \"clearable\": true,\n \"type\": \"search\",\n \"value\": props.value,\n \"border\": false,\n \"leftIcon\": \"search\"\n },\n \"scopedSlots\": {\n 'left-icon': slots['left-icon']\n }\n }, fieldData]))]), Action()]);\n}\n\nSearch.props = {\n value: String,\n label: String,\n showAction: Boolean,\n shape: {\n type: String,\n \"default\": 'square'\n },\n background: {\n type: String,\n \"default\": '#fff'\n }\n};\nexport default sfc(Search);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/search/index.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../../utils';\nimport { inherit } from '../../utils/functional';\nimport Icon from '../../icon'; // Types\n\nvar _use = use('sku-header'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction getSkuImg(sku, selectedSku) {\n var id = selectedSku.s1;\n\n if (id) {\n // skuImg 挂载在 skuTree 中 s1 上\n var treeItem = sku.tree.filter(function (item) {\n return item.k_s === 's1';\n })[0] || {};\n\n if (treeItem.v) {\n var matchedSku = treeItem.v.filter(function (skuValue) {\n return skuValue.id === id;\n })[0];\n\n if (matchedSku) {\n return matchedSku.imgUrl || matchedSku.img_url;\n }\n }\n }\n}\n\nfunction SkuHeader(h, props, slots, ctx) {\n var sku = props.sku,\n goods = props.goods,\n skuEventBus = props.skuEventBus,\n selectedSku = props.selectedSku;\n var goodsImg = getSkuImg(sku, selectedSku) || goods.picture;\n\n var previewImage = function previewImage() {\n skuEventBus.$emit('sku:previewImage', goodsImg);\n };\n\n return h(\"div\", _mergeJSXProps([{\n \"class\": [bem(), 'van-hairline--bottom']\n }, inherit(ctx)]), [h(\"div\", {\n \"class\": bem('img-wrap'),\n \"on\": {\n \"click\": previewImage\n }\n }, [h(\"img\", {\n \"attrs\": {\n \"src\": goodsImg\n }\n })]), h(\"div\", {\n \"class\": bem('goods-info')\n }, [h(\"div\", {\n \"class\": \"van-sku__goods-name van-ellipsis\"\n }, [goods.title]), slots[\"default\"] && slots[\"default\"](), h(Icon, {\n \"attrs\": {\n \"name\": \"close\"\n },\n \"class\": \"van-sku__close-icon\",\n \"on\": {\n \"click\": function click() {\n skuEventBus.$emit('sku:close');\n }\n }\n })])]);\n}\n\nSkuHeader.props = {\n sku: Object,\n goods: Object,\n skuEventBus: Object,\n selectedSku: Object\n};\nexport default sfc(SkuHeader);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/sku/components/SkuHeader.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../../utils';\nimport { inherit } from '../../utils/functional'; // Types\n\nvar _use = use('sku-row'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction SkuRow(h, props, slots, ctx) {\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem()\n }, inherit(ctx)]), [h(\"div\", {\n \"class\": bem('title')\n }, [props.skuRow.k, \"\\uFF1A\"]), slots[\"default\"] && slots[\"default\"]()]);\n}\n\nSkuRow.props = {\n skuRow: Object\n};\nexport default sfc(SkuRow);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/sku/components/SkuRow.js\n// module id = null\n// module chunks = ","export var LIMIT_TYPE = {\n QUOTA_LIMIT: 0,\n STOCK_LIMIT: 1\n};\nexport var UNSELECTED_SKU_VALUE_ID = '';\nexport default {\n LIMIT_TYPE: LIMIT_TYPE,\n UNSELECTED_SKU_VALUE_ID: UNSELECTED_SKU_VALUE_ID\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/sku/constants.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { UNSELECTED_SKU_VALUE_ID } from '../constants';\n/*\n normalize sku tree\n\n [\n {\n count: 2,\n k: \"品种\", // 规格名称 skuKeyName\n k_id: \"1200\", // skuKeyId\n k_s: \"s1\" // skuKeyStr\n v: [ // skuValues\n { // skuValue\n id: \"1201\", // skuValueId\n name: \"萌\" // 具体的规格值 skuValueName\n }, {\n id: \"973\",\n name: \"帅\"\n }\n ]\n },\n ...\n ]\n |\n v\n {\n s1: [{\n id: \"1201\",\n name: \"萌\"\n }, {\n id: \"973\",\n name: \"帅\"\n }],\n ...\n }\n */\n\nexport var normalizeSkuTree = function normalizeSkuTree(skuTree) {\n var normalizedTree = {};\n skuTree.forEach(function (treeItem) {\n normalizedTree[treeItem.k_s] = treeItem.v;\n });\n return normalizedTree;\n}; // 判断是否所有的sku都已经选中\n\nexport var isAllSelected = function isAllSelected(skuTree, selectedSku) {\n // 筛选selectedSku对象中key值不为空的值\n var selected = Object.keys(selectedSku).filter(function (skuKeyStr) {\n return selectedSku[skuKeyStr] !== UNSELECTED_SKU_VALUE_ID;\n });\n return skuTree.length === selected.length;\n}; // 根据已选择的 sku 获取 skuComb\n\nexport var getSkuComb = function getSkuComb(skuList, selectedSku) {\n var skuComb = skuList.filter(function (item) {\n return Object.keys(selectedSku).every(function (skuKeyStr) {\n return String(item[skuKeyStr]) === String(selectedSku[skuKeyStr]);\n });\n });\n return skuComb[0];\n}; // 获取已选择的sku名称\n\nexport var getSelectedSkuValues = function getSelectedSkuValues(skuTree, selectedSku) {\n var normalizedTree = normalizeSkuTree(skuTree);\n return Object.keys(selectedSku).reduce(function (selectedValues, skuKeyStr) {\n var skuValues = normalizedTree[skuKeyStr];\n var skuValueId = selectedSku[skuKeyStr];\n\n if (skuValueId !== UNSELECTED_SKU_VALUE_ID) {\n var skuValue = skuValues.filter(function (value) {\n return value.id === skuValueId;\n })[0];\n skuValue && selectedValues.push(skuValue);\n }\n\n return selectedValues;\n }, []);\n}; // 判断sku是否可选\n\nexport var isSkuChoosable = function isSkuChoosable(skuList, selectedSku, skuToChoose) {\n var _extends2;\n\n var key = skuToChoose.key,\n valueId = skuToChoose.valueId; // 先假设sku已选中,拼入已选中sku对象中\n\n var matchedSku = _extends({}, selectedSku, (_extends2 = {}, _extends2[key] = valueId, _extends2)); // 再判断剩余sku是否全部不可选,若不可选则当前sku不可选中\n\n\n var skusToCheck = Object.keys(matchedSku).filter(function (skuKey) {\n return matchedSku[skuKey] !== UNSELECTED_SKU_VALUE_ID;\n });\n var filteredSku = skuList.filter(function (sku) {\n return skusToCheck.every(function (skuKey) {\n return String(matchedSku[skuKey]) === String(sku[skuKey]);\n });\n });\n var stock = filteredSku.reduce(function (total, sku) {\n total += sku.stock_num;\n return total;\n }, 0);\n return stock > 0;\n};\nexport default {\n normalizeSkuTree: normalizeSkuTree,\n getSkuComb: getSkuComb,\n getSelectedSkuValues: getSelectedSkuValues,\n isAllSelected: isAllSelected,\n isSkuChoosable: isSkuChoosable\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/sku/utils/skuHelper.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { use } from '../../utils';\nimport { isSkuChoosable } from '../utils/skuHelper';\n\nvar _use = use('sku-row-item'),\n sfc = _use[0];\n\nexport default sfc({\n props: {\n skuList: Array,\n skuValue: Object,\n skuKeyStr: String,\n skuEventBus: Object,\n selectedSku: Object\n },\n computed: {\n choosable: function choosable() {\n return isSkuChoosable(this.skuList, this.selectedSku, {\n key: this.skuKeyStr,\n valueId: this.skuValue.id\n });\n }\n },\n methods: {\n onSelect: function onSelect() {\n if (this.choosable) {\n this.skuEventBus.$emit('sku:select', _extends({}, this.skuValue, {\n skuKeyStr: this.skuKeyStr\n }));\n }\n }\n },\n render: function render(h) {\n var choosed = this.skuValue.id === this.selectedSku[this.skuKeyStr];\n return h(\"span\", {\n \"class\": ['van-sku-row__item', {\n 'van-sku-row__item--active': choosed,\n 'van-sku-row__item--disabled': !this.choosable\n }],\n \"on\": {\n \"click\": this.onSelect\n }\n }, [this.skuValue.name]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/sku/components/SkuRowItem.js\n// module id = null\n// module chunks = ","import { use, isDef } from '../utils';\n\nvar _use = use('stepper'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n props: {\n value: null,\n integer: Boolean,\n disabled: Boolean,\n inputWidth: String,\n asyncChange: Boolean,\n disableInput: Boolean,\n min: {\n type: [String, Number],\n \"default\": 1\n },\n max: {\n type: [String, Number],\n \"default\": Infinity\n },\n step: {\n type: [String, Number],\n \"default\": 1\n },\n defaultValue: {\n type: [String, Number],\n \"default\": 1\n }\n },\n data: function data() {\n var value = this.range(isDef(this.value) ? this.value : this.defaultValue);\n\n if (value !== +this.value) {\n this.$emit('input', value);\n }\n\n return {\n currentValue: value\n };\n },\n computed: {\n minusDisabled: function minusDisabled() {\n return this.disabled || this.currentValue <= this.min;\n },\n plusDisabled: function plusDisabled() {\n return this.disabled || this.currentValue >= this.max;\n }\n },\n watch: {\n value: function value(val) {\n if (val !== this.currentValue) {\n this.currentValue = this.format(val);\n }\n },\n currentValue: function currentValue(val) {\n this.$emit('input', val);\n this.$emit('change', val);\n }\n },\n methods: {\n // filter illegal characters\n format: function format(value) {\n value = String(value).replace(/[^0-9.-]/g, '');\n return value === '' ? 0 : this.integer ? Math.floor(value) : +value;\n },\n // limit value range\n range: function range(value) {\n return Math.max(Math.min(this.max, this.format(value)), this.min);\n },\n onInput: function onInput(event) {\n var value = event.target.value;\n var formatted = this.format(value);\n\n if (!this.asyncChange) {\n if (+value !== formatted) {\n event.target.value = formatted;\n }\n\n this.currentValue = formatted;\n } else {\n event.target.value = this.currentValue;\n this.$emit('input', formatted);\n this.$emit('change', formatted);\n }\n },\n onChange: function onChange(type) {\n if (this[type + \"Disabled\"]) {\n this.$emit('overlimit', type);\n return;\n }\n\n var diff = type === 'minus' ? -this.step : +this.step;\n var value = Math.round((this.currentValue + diff) * 100) / 100;\n\n if (!this.asyncChange) {\n this.currentValue = this.range(value);\n } else {\n this.$emit('input', value);\n this.$emit('change', value);\n }\n\n this.$emit(type);\n },\n onFocus: function onFocus(event) {\n this.$emit('focus', event);\n },\n onBlur: function onBlur(event) {\n this.currentValue = this.range(this.currentValue);\n this.$emit('blur', event); // fix edge case when input is empty and min is 0\n\n if (this.currentValue === 0) {\n event.target.value = this.currentValue;\n }\n }\n },\n render: function render(h) {\n var _this = this;\n\n var onChange = function onChange(type) {\n return function () {\n _this.onChange(type);\n };\n };\n\n return h(\"div\", {\n \"class\": bem()\n }, [h(\"button\", {\n \"class\": bem('minus', {\n disabled: this.minusDisabled\n }),\n \"on\": {\n \"click\": onChange('minus')\n }\n }), h(\"input\", {\n \"attrs\": {\n \"type\": \"number\",\n \"disabled\": this.disabled || this.disableInput\n },\n \"class\": bem('input'),\n \"domProps\": {\n \"value\": this.currentValue\n },\n \"style\": {\n width: this.inputWidth\n },\n \"on\": {\n \"input\": this.onInput,\n \"focus\": this.onFocus,\n \"blur\": this.onBlur\n }\n }), h(\"button\", {\n \"class\": bem('plus', {\n disabled: this.plusDisabled\n }),\n \"on\": {\n \"click\": onChange('plus')\n }\n })]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/stepper/index.js\n// module id = null\n// module chunks = ","import { use } from '../../utils';\nimport Stepper from '../../stepper';\nimport { LIMIT_TYPE } from '../constants';\n\nvar _use = use('sku-stepper'),\n sfc = _use[0];\n\nvar QUOTA_LIMIT = LIMIT_TYPE.QUOTA_LIMIT,\n STOCK_LIMIT = LIMIT_TYPE.STOCK_LIMIT;\nexport default sfc({\n props: {\n quota: Number,\n quotaUsed: Number,\n hideStock: Boolean,\n skuEventBus: Object,\n skuStockNum: Number,\n selectedSku: Object,\n selectedNum: Number,\n stepperTitle: String,\n hideQuotaText: Boolean,\n selectedSkuComb: Object,\n disableStepperInput: Boolean,\n customStepperConfig: Object\n },\n data: function data() {\n return {\n currentNum: this.selectedNum,\n // 购买限制类型: 限购/库存\n limitType: STOCK_LIMIT\n };\n },\n watch: {\n currentNum: function currentNum(num) {\n this.skuEventBus.$emit('sku:numChange', num);\n },\n stepperLimit: function stepperLimit(limit) {\n if (limit < this.currentNum) {\n this.currentNum = limit;\n }\n }\n },\n computed: {\n stock: function stock() {\n var stockNum = this.customStepperConfig.stockNum;\n\n if (stockNum !== undefined) {\n return stockNum;\n }\n\n if (this.selectedSkuComb) {\n return this.selectedSkuComb.stock_num;\n }\n\n return this.skuStockNum;\n },\n stockText: function stockText() {\n var stockFormatter = this.customStepperConfig.stockFormatter;\n if (stockFormatter) return stockFormatter(this.stock);\n return \"\\u5269\\u4F59\" + this.stock + \"\\u4EF6\";\n },\n quotaText: function quotaText() {\n var _this$customStepperCo = this.customStepperConfig,\n quotaText = _this$customStepperCo.quotaText,\n hideQuotaText = _this$customStepperCo.hideQuotaText;\n if (hideQuotaText) return '';\n var text = '';\n\n if (quotaText) {\n text = quotaText;\n } else if (this.quota > 0) {\n text = \"\\u6BCF\\u4EBA\\u9650\\u8D2D\" + this.quota + \"\\u4EF6\";\n }\n\n return text;\n },\n stepperLimit: function stepperLimit() {\n var quotaLimit = this.quota - this.quotaUsed;\n var limit; // 无限购时直接取库存,有限购时取限购数和库存数中小的那个\n\n if (this.quota > 0 && quotaLimit <= this.stock) {\n // 修正负的limit\n limit = quotaLimit < 0 ? 0 : quotaLimit;\n this.limitType = QUOTA_LIMIT;\n } else {\n limit = this.stock;\n this.limitType = STOCK_LIMIT;\n }\n\n return limit;\n }\n },\n methods: {\n setCurrentNum: function setCurrentNum(num) {\n this.currentNum = num;\n },\n onOverLimit: function onOverLimit(action) {\n this.skuEventBus.$emit('sku:overLimit', {\n action: action,\n limitType: this.limitType,\n quota: this.quota,\n quotaUsed: this.quotaUsed\n });\n },\n onChange: function onChange(currentValue) {\n var handleStepperChange = this.customStepperConfig.handleStepperChange;\n handleStepperChange && handleStepperChange(currentValue);\n this.$emit('change', currentValue);\n }\n },\n render: function render(h) {\n var _this = this;\n\n return h(\"div\", {\n \"class\": \"van-sku-stepper-stock\"\n }, [h(\"div\", {\n \"class\": \"van-sku-stepper-container\"\n }, [h(\"div\", {\n \"class\": \"van-sku__stepper-title\"\n }, [this.stepperTitle || '购买数量', \"\\uFF1A\"]), h(Stepper, {\n \"class\": \"van-sku__stepper\",\n \"attrs\": {\n \"max\": this.stepperLimit,\n \"disableInput\": this.disableStepperInput\n },\n \"on\": {\n \"overlimit\": this.onOverLimit,\n \"change\": this.onChange\n },\n \"model\": {\n value: _this.currentNum,\n callback: function callback($$v) {\n _this.currentNum = $$v;\n }\n }\n })]), !this.hideStock && h(\"div\", {\n \"class\": \"van-sku__stock\"\n }, [this.stockText]), !this.hideQuotaText && this.quotaText && h(\"div\", {\n \"class\": \"van-sku__quota\"\n }, [this.quotaText])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/sku/components/SkuStepper.js\n// module id = null\n// module chunks = ","/* eslint-disable */\nexport function isEmail(value) {\n var reg = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n return reg.test(value);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/utils/validate/email.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { use } from '../utils';\n\nvar _use = use('uploader'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n inheritAttrs: false,\n props: {\n disabled: Boolean,\n beforeRead: Function,\n afterRead: Function,\n accept: {\n type: String,\n \"default\": 'image/*'\n },\n resultType: {\n type: String,\n \"default\": 'dataUrl'\n },\n maxSize: {\n type: Number,\n \"default\": Number.MAX_VALUE\n }\n },\n computed: {\n detail: function detail() {\n return {\n name: this.$attrs.name || ''\n };\n }\n },\n methods: {\n onChange: function onChange(event) {\n var _this = this;\n\n var files = event.target.files;\n\n if (this.disabled || !files.length) {\n return;\n }\n\n files = files.length === 1 ? files[0] : [].slice.call(files, 0);\n\n if (!files || this.beforeRead && !this.beforeRead(files, this.detail)) {\n this.resetInput();\n return;\n }\n\n if (Array.isArray(files)) {\n Promise.all(files.map(this.readFile)).then(function (contents) {\n var oversize = false;\n var payload = files.map(function (file, index) {\n if (file.size > _this.maxSize) {\n oversize = true;\n }\n\n return {\n file: files[index],\n content: contents[index]\n };\n });\n\n _this.onAfterRead(payload, oversize);\n });\n } else {\n this.readFile(files).then(function (content) {\n _this.onAfterRead({\n file: files,\n content: content\n }, files.size > _this.maxSize);\n });\n }\n },\n readFile: function readFile(file) {\n var _this2 = this;\n\n return new Promise(function (resolve) {\n var reader = new FileReader();\n\n reader.onload = function (event) {\n resolve(event.target.result);\n };\n\n if (_this2.resultType === 'dataUrl') {\n reader.readAsDataURL(file);\n } else if (_this2.resultType === 'text') {\n reader.readAsText(file);\n }\n });\n },\n onAfterRead: function onAfterRead(files, oversize) {\n if (oversize) {\n this.$emit('oversize', files);\n } else {\n this.afterRead && this.afterRead(files, this.detail);\n }\n\n this.resetInput();\n },\n resetInput: function resetInput() {\n if (this.$refs.input) {\n this.$refs.input.value = '';\n }\n }\n },\n render: function render(h) {\n var accept = this.accept,\n disabled = this.disabled;\n return h(\"div\", {\n \"class\": bem()\n }, [this.slots(), h(\"input\", {\n \"attrs\": _extends({}, this.$attrs, {\n \"type\": \"file\",\n \"accept\": accept,\n \"disabled\": disabled\n }),\n \"ref\": \"input\",\n \"class\": bem('input'),\n \"on\": {\n \"change\": this.onChange\n }\n })]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/uploader/index.js\n// module id = null\n// module chunks = ","import { use } from '../../utils';\nimport Icon from '../../icon';\nimport Loading from '../../loading';\nimport Uploader from '../../uploader';\n\nvar _use = use('sku-img-uploader'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n props: {\n value: String,\n uploadImg: Function,\n maxSize: {\n type: Number,\n \"default\": 6\n }\n },\n data: function data() {\n return {\n // 正在上传的图片 base64\n paddingImg: ''\n };\n },\n computed: {\n imgList: function imgList() {\n return this.value && !this.paddingImg ? [this.value] : [];\n }\n },\n methods: {\n afterReadFile: function afterReadFile(file) {\n var _this = this;\n\n // 上传文件\n this.paddingImg = file.content;\n this.uploadImg(file.file, file.content).then(function (img) {\n _this.$emit('input', img);\n\n _this.$nextTick(function () {\n _this.paddingImg = '';\n });\n })[\"catch\"](function () {\n _this.paddingImg = '';\n });\n },\n onOversize: function onOversize() {\n this.$toast(\"\\u6700\\u5927\\u53EF\\u4E0A\\u4F20\\u56FE\\u7247\\u4E3A\" + this.maxSize + \"MB\\uFF0C\\u8BF7\\u5C1D\\u8BD5\\u538B\\u7F29\\u56FE\\u7247\\u5C3A\\u5BF8\");\n }\n },\n render: function render(h) {\n var _this2 = this;\n\n var imgList = this.imgList,\n paddingImg = this.paddingImg;\n var ImageList = (paddingImg || imgList.length > 0) && h(\"div\", {\n \"class\": \"van-clearfix\"\n }, [imgList.map(function (img) {\n return h(\"div\", {\n \"class\": bem('img')\n }, [h(\"img\", {\n \"attrs\": {\n \"src\": img\n }\n }), h(Icon, {\n \"attrs\": {\n \"name\": \"clear\"\n },\n \"class\": bem('delete'),\n \"on\": {\n \"click\": function click() {\n _this2.$emit('input', '');\n }\n }\n })]);\n }), paddingImg && h(\"div\", {\n \"class\": bem('img')\n }, [h(\"img\", {\n \"attrs\": {\n \"src\": paddingImg\n }\n }), h(Loading, {\n \"attrs\": {\n \"type\": \"spinner\"\n },\n \"class\": bem('uploading')\n })])]);\n return h(\"div\", {\n \"class\": bem()\n }, [h(Uploader, {\n \"attrs\": {\n \"disabled\": !!paddingImg,\n \"afterRead\": this.afterReadFile,\n \"maxSize\": this.maxSize * 1024 * 1024\n },\n \"on\": {\n \"oversize\": this.onOversize\n }\n }, [h(\"div\", {\n \"class\": bem('header')\n }, [paddingImg ? h(\"div\", [\"\\u6B63\\u5728\\u4E0A\\u4F20...\"]) : [h(Icon, {\n \"attrs\": {\n \"name\": \"photograph\"\n }\n }), h(\"span\", {\n \"class\": \"label\"\n }, [this.value ? '重拍' : '拍照', \" \\u6216 \"]), h(Icon, {\n \"attrs\": {\n \"name\": \"photo\"\n }\n }), h(\"span\", {\n \"class\": \"label\"\n }, [this.value ? '重新选择照片' : '选择照片'])]])]), ImageList]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/sku/components/SkuImgUploader.js\n// module id = null\n// module chunks = ","import { use } from '../../utils';\nimport Cell from '../../cell';\nimport CellGroup from '../../cell-group';\nimport Field from '../../field';\nimport { isEmail } from '../../utils/validate/email';\nimport { isNumber } from '../../utils/validate/number';\nimport SkuImgUploader from './SkuImgUploader';\n\nvar _use = use('sku-messages'),\n sfc = _use[0],\n bem = _use[1];\n\nvar PLACEHOLDER = {\n id_no: '输入身份证号码',\n text: '输入文本',\n tel: '输入数字',\n email: '输入邮箱',\n date: '点击选择日期',\n time: '点击选择时间',\n textarea: '点击填写段落文本',\n mobile: '输入手机号码'\n};\nexport default sfc({\n props: {\n messages: Array,\n messageConfig: Object,\n goodsId: [Number, String]\n },\n data: function data() {\n return {\n messageValues: this.resetMessageValues(this.messages)\n };\n },\n watch: {\n messages: function messages(val) {\n this.messageValues = this.resetMessageValues(val);\n }\n },\n methods: {\n resetMessageValues: function resetMessageValues(messages) {\n return (messages || []).map(function () {\n return {\n value: ''\n };\n });\n },\n getType: function getType(message) {\n if (+message.multiple === 1) {\n return 'textarea';\n }\n\n if (message.type === 'id_no') {\n return 'text';\n }\n\n return message.datetime > 0 ? 'datetime-local' : message.type;\n },\n getMessages: function getMessages() {\n var _this = this;\n\n var messages = {};\n this.messageValues.forEach(function (item, index) {\n var value = item.value;\n\n if (_this.messages[index].datetime > 0) {\n value = value.replace(/T/g, ' ');\n }\n\n messages[\"message_\" + index] = value;\n });\n return messages;\n },\n getCartMessages: function getCartMessages() {\n var _this2 = this;\n\n var messages = {};\n this.messageValues.forEach(function (item, index) {\n var value = item.value;\n var message = _this2.messages[index];\n\n if (message.datetime > 0) {\n value = value.replace(/T/g, ' ');\n }\n\n messages[message.name] = value;\n });\n return messages;\n },\n getPlaceholder: function getPlaceholder(message) {\n var type = +message.multiple === 1 ? 'textarea' : message.type;\n var map = this.messageConfig.placeholderMap || {};\n return map[type] || PLACEHOLDER[type];\n },\n validateMessages: function validateMessages() {\n var values = this.messageValues;\n\n for (var i = 0; i < values.length; i++) {\n var value = values[i].value;\n var message = this.messages[i];\n\n if (value === '') {\n // 必填字段的校验\n if (String(message.required) === '1') {\n // eslint-disable-line\n var textType = message.type === 'image' ? '请上传' : '请填写';\n return textType + message.name;\n }\n } else {\n if (message.type === 'tel' && !isNumber(value)) {\n return '请填写正确的数字格式留言';\n }\n\n if (message.type === 'mobile' && !/^\\d{6,20}$/.test(value)) {\n return '手机号长度为6-20位数字';\n }\n\n if (message.type === 'email' && !isEmail(value)) {\n return '请填写正确的邮箱';\n }\n\n if (message.type === 'id_no' && (value.length < 15 || value.length > 18)) {\n return '请填写正确的身份证号码';\n }\n }\n }\n }\n },\n render: function render(h) {\n var _this3 = this;\n\n return h(CellGroup, {\n \"class\": bem()\n }, [this.messages.map(function (message, index) {\n return message.type === 'image' ? h(Cell, {\n \"class\": bem('image-cell'),\n \"attrs\": {\n \"label\": \"仅限一张\",\n \"title\": message.name,\n \"required\": String(message.required) === '1'\n },\n \"key\": _this3.goodsId + \"-\" + index\n }, [h(SkuImgUploader, {\n \"attrs\": {\n \"uploadImg\": _this3.messageConfig.uploadImg,\n \"maxSize\": _this3.messageConfig.uploadMaxSize\n },\n \"model\": {\n value: _this3.messageValues[index].value,\n callback: function callback($$v) {\n _this3.messageValues[index].value = $$v;\n }\n }\n })]) : h(Field, {\n \"attrs\": {\n \"maxlength\": \"200\",\n \"label\": message.name,\n \"required\": String(message.required) === '1',\n \"placeholder\": _this3.getPlaceholder(message),\n \"type\": _this3.getType(message)\n },\n \"key\": _this3.goodsId + \"-\" + index,\n \"model\": {\n value: _this3.messageValues[index].value,\n callback: function callback($$v) {\n _this3.messageValues[index].value = $$v;\n }\n }\n });\n })]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/sku/components/SkuMessages.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../../utils';\nimport { inherit } from '../../utils/functional';\nimport Button from '../../button'; // Types\n\nvar _use = use('sku-actions'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction SkuActions(h, props, slots, ctx) {\n var emit = function emit(name) {\n return function () {\n props.skuEventBus.$emit(name);\n };\n };\n\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem()\n }, inherit(ctx)]), [props.showAddCartBtn && h(Button, {\n \"attrs\": {\n \"bottomAction\": true,\n \"text\": \"加入购物车\"\n },\n \"on\": {\n \"click\": emit('sku:addCart')\n }\n }), h(Button, {\n \"attrs\": {\n \"type\": \"primary\",\n \"bottomAction\": true,\n \"text\": props.buyText || '立即购买'\n },\n \"on\": {\n \"click\": emit('sku:buy')\n }\n })]);\n}\n\nSkuActions.props = {\n buyText: String,\n skuEventBus: Object,\n showAddCartBtn: Boolean\n};\nexport default sfc(SkuActions);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/sku/components/SkuActions.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\n\n/* eslint-disable camelcase */\nimport Vue from 'vue';\nimport Popup from '../popup';\nimport Toast from '../toast';\nimport ImagePreview from '../image-preview';\nimport SkuHeader from './components/SkuHeader';\nimport SkuRow from './components/SkuRow';\nimport SkuRowItem from './components/SkuRowItem';\nimport SkuStepper from './components/SkuStepper';\nimport SkuMessages from './components/SkuMessages';\nimport SkuActions from './components/SkuActions';\nimport { use, isDef } from '../utils';\nimport { isAllSelected, isSkuChoosable, getSkuComb, getSelectedSkuValues } from './utils/skuHelper';\nimport { LIMIT_TYPE, UNSELECTED_SKU_VALUE_ID } from './constants';\n\nvar _use = use('sku'),\n sfc = _use[0];\n\nvar QUOTA_LIMIT = LIMIT_TYPE.QUOTA_LIMIT;\nexport default sfc({\n props: {\n sku: Object,\n goods: Object,\n quota: Number,\n value: Boolean,\n buyText: String,\n quotaUsed: Number,\n goodsId: [Number, String],\n hideStock: Boolean,\n hideQuotaText: Boolean,\n stepperTitle: String,\n getContainer: Function,\n customSkuValidator: Function,\n closeOnClickOverlay: Boolean,\n disableStepperInput: Boolean,\n resetStepperOnHide: Boolean,\n resetSelectedSkuOnHide: Boolean,\n initialSku: {\n type: Object,\n \"default\": function _default() {\n return {};\n }\n },\n showSoldoutSku: {\n type: Boolean,\n \"default\": true\n },\n showAddCartBtn: {\n type: Boolean,\n \"default\": true\n },\n bodyOffsetTop: {\n type: Number,\n \"default\": 200\n },\n messageConfig: {\n type: Object,\n \"default\": function _default() {\n return {\n placeholderMap: {},\n uploadImg: function uploadImg() {\n return Promise.resolve();\n },\n uploadMaxSize: 5\n };\n }\n },\n customStepperConfig: {\n type: Object,\n \"default\": function _default() {\n return {};\n }\n }\n },\n data: function data() {\n return {\n selectedSku: {},\n selectedNum: 1,\n show: this.value\n };\n },\n watch: {\n show: function show(val) {\n this.$emit('input', val);\n\n if (!val) {\n var selectedSkuValues = getSelectedSkuValues(this.sku.tree, this.selectedSku);\n this.$emit('sku-close', {\n selectedSkuValues: selectedSkuValues,\n selectedNum: this.selectedNum,\n selectedSkuComb: this.selectedSkuComb\n });\n\n if (this.resetStepperOnHide) {\n this.resetStepper();\n }\n\n if (this.resetSelectedSkuOnHide) {\n this.resetSelectedSku(this.skuTree);\n }\n }\n },\n value: function value(val) {\n this.show = val;\n },\n skuTree: function skuTree(val) {\n this.resetSelectedSku(val);\n }\n },\n computed: {\n skuGroupClass: function skuGroupClass() {\n return ['van-sku-group-container', 'van-hairline--bottom', {\n 'van-sku-group-container--hide-soldout': !this.showSoldoutSku\n }];\n },\n bodyStyle: function bodyStyle() {\n if (this.$isServer) {\n return;\n } // header高度82px, sku actions高度50px,如果改动了样式自己传下bodyOffsetTop调整下\n\n\n var maxHeight = window.innerHeight - this.bodyOffsetTop;\n return {\n maxHeight: maxHeight + 'px'\n };\n },\n isSkuCombSelected: function isSkuCombSelected() {\n return isAllSelected(this.sku.tree, this.selectedSku);\n },\n isSkuEmpty: function isSkuEmpty() {\n return Object.keys(this.sku).length === 0;\n },\n hasSku: function hasSku() {\n return !this.sku.none_sku;\n },\n selectedSkuComb: function selectedSkuComb() {\n if (!this.hasSku) {\n return {\n id: this.sku.collection_id,\n price: Math.round(this.sku.price * 100),\n stock_num: this.sku.stock_num\n };\n }\n\n if (this.isSkuCombSelected) {\n return getSkuComb(this.sku.list, this.selectedSku);\n }\n\n return null;\n },\n price: function price() {\n if (this.selectedSkuComb) {\n return (this.selectedSkuComb.price / 100).toFixed(2);\n } // sku.price是一个格式化好的价格区间\n\n\n return this.sku.price;\n },\n skuTree: function skuTree() {\n return this.sku.tree || [];\n },\n imageList: function imageList() {\n var imageList = [this.goods.picture];\n\n if (this.skuTree.length > 0) {\n var treeItem = this.skuTree.filter(function (item) {\n return item.k_s === 's1';\n })[0] || {};\n\n if (!treeItem.v) {\n return;\n }\n\n treeItem.v.forEach(function (vItem) {\n var img = vItem.imgUrl || vItem.img_url;\n\n if (img) {\n imageList.push(img);\n }\n });\n }\n\n return imageList;\n }\n },\n created: function created() {\n var skuEventBus = new Vue();\n this.skuEventBus = skuEventBus;\n skuEventBus.$on('sku:close', this.onClose);\n skuEventBus.$on('sku:select', this.onSelect);\n skuEventBus.$on('sku:numChange', this.onNumChange);\n skuEventBus.$on('sku:previewImage', this.onPreviewImage);\n skuEventBus.$on('sku:overLimit', this.onOverLimit);\n skuEventBus.$on('sku:addCart', this.onAddCart);\n skuEventBus.$on('sku:buy', this.onBuy);\n this.resetStepper();\n this.resetSelectedSku(this.skuTree); // 组件初始化后的钩子,抛出skuEventBus\n\n this.$emit('after-sku-create', skuEventBus);\n },\n methods: {\n resetStepper: function resetStepper() {\n var skuStepper = this.$refs.skuStepper;\n var selectedNum = this.initialSku.selectedNum;\n var num = isDef(selectedNum) ? selectedNum : 1;\n\n if (skuStepper) {\n skuStepper.setCurrentNum(num);\n } else {\n this.selectedNum = num;\n }\n },\n resetSelectedSku: function resetSelectedSku(skuTree) {\n var _this = this;\n\n this.selectedSku = {}; // 重置 selectedSku\n\n skuTree.forEach(function (item) {\n _this.selectedSku[item.k_s] = _this.initialSku[item.k_s] || UNSELECTED_SKU_VALUE_ID;\n }); // 只有一个 sku 规格值时默认选中\n\n skuTree.forEach(function (item) {\n var key = item.k_s;\n var valueId = item.v[0].id;\n\n if (item.v.length === 1 && isSkuChoosable(_this.sku.list, _this.selectedSku, {\n key: key,\n valueId: valueId\n })) {\n _this.selectedSku[key] = valueId;\n }\n });\n },\n getSkuMessages: function getSkuMessages() {\n return this.$refs.skuMessages ? this.$refs.skuMessages.getMessages() : {};\n },\n getSkuCartMessages: function getSkuCartMessages() {\n return this.$refs.skuMessages ? this.$refs.skuMessages.getCartMessages() : {};\n },\n validateSkuMessages: function validateSkuMessages() {\n return this.$refs.skuMessages ? this.$refs.skuMessages.validateMessages() : '';\n },\n validateSku: function validateSku() {\n if (this.selectedNum === 0) {\n return '商品已经无法购买啦';\n }\n\n if (this.isSkuCombSelected) {\n return this.validateSkuMessages();\n } // 自定义sku校验\n\n\n if (this.customSkuValidator) {\n var err = this.customSkuValidator(this);\n if (err) return err;\n }\n\n return '请先选择商品规格';\n },\n onClose: function onClose() {\n this.show = false;\n },\n onSelect: function onSelect(skuValue) {\n var _extends2, _extends3;\n\n // 点击已选中的sku时则取消选中\n this.selectedSku = this.selectedSku[skuValue.skuKeyStr] === skuValue.id ? _extends({}, this.selectedSku, (_extends2 = {}, _extends2[skuValue.skuKeyStr] = UNSELECTED_SKU_VALUE_ID, _extends2)) : _extends({}, this.selectedSku, (_extends3 = {}, _extends3[skuValue.skuKeyStr] = skuValue.id, _extends3));\n this.$emit('sku-selected', {\n skuValue: skuValue,\n selectedSku: this.selectedSku,\n selectedSkuComb: this.selectedSkuComb\n });\n },\n onNumChange: function onNumChange(num) {\n this.selectedNum = num;\n },\n onPreviewImage: function onPreviewImage(indexImage) {\n var _this2 = this;\n\n var index = this.imageList.findIndex(function (image) {\n return image === indexImage;\n });\n var cbParams = {\n index: index,\n imageList: this.imageList,\n indexImage: indexImage\n };\n this.$emit('preview-on', cbParams);\n ImagePreview({\n images: this.imageList,\n startPosition: index,\n onClose: function onClose() {\n _this2.$emit('preview-close', cbParams);\n }\n });\n },\n onOverLimit: function onOverLimit(data) {\n var action = data.action,\n limitType = data.limitType,\n quota = data.quota,\n quotaUsed = data.quotaUsed;\n var handleOverLimit = this.customStepperConfig.handleOverLimit;\n\n if (handleOverLimit) {\n handleOverLimit(data);\n return;\n }\n\n if (action === 'minus') {\n Toast('至少选择一件');\n } else if (action === 'plus') {\n if (limitType === QUOTA_LIMIT) {\n var msg = \"\\u9650\\u8D2D\" + quota + \"\\u4EF6\";\n if (quotaUsed > 0) msg += \"\\uFF0C\" + (\"\\u4F60\\u5DF2\\u8D2D\\u4E70\" + quotaUsed + \"\\u4EF6\");\n Toast(msg);\n } else {\n Toast('库存不足');\n }\n }\n },\n onAddCart: function onAddCart() {\n this.onBuyOrAddCart('add-cart');\n },\n onBuy: function onBuy() {\n this.onBuyOrAddCart('buy-clicked');\n },\n onBuyOrAddCart: function onBuyOrAddCart(type) {\n var error = this.validateSku();\n\n if (error) {\n Toast(error);\n } else {\n this.$emit(type, this.getSkuData());\n }\n },\n getSkuData: function getSkuData() {\n return {\n goodsId: this.goodsId,\n selectedNum: this.selectedNum,\n selectedSkuComb: this.selectedSkuComb,\n messages: this.getSkuMessages(),\n cartMessages: this.getSkuCartMessages()\n };\n }\n },\n render: function render(h) {\n var _this3 = this;\n\n if (this.isSkuEmpty) {\n return;\n }\n\n var sku = this.sku,\n goods = this.goods,\n price = this.price,\n skuEventBus = this.skuEventBus,\n selectedSku = this.selectedSku,\n selectedNum = this.selectedNum,\n stepperTitle = this.stepperTitle,\n hideQuotaText = this.hideQuotaText,\n selectedSkuComb = this.selectedSkuComb;\n var slotsProps = {\n price: price,\n selectedNum: selectedNum,\n skuEventBus: skuEventBus,\n selectedSku: selectedSku,\n selectedSkuComb: selectedSkuComb\n };\n\n var slots = function slots(name) {\n return _this3.slots(name, slotsProps);\n };\n\n var Header = slots('sku-header') || h(SkuHeader, {\n \"attrs\": {\n \"sku\": sku,\n \"goods\": goods,\n \"skuEventBus\": skuEventBus,\n \"selectedSku\": selectedSku\n }\n }, [slots('sku-header-price') || h(\"div\", {\n \"class\": \"van-sku__goods-price\"\n }, [h(\"span\", {\n \"class\": \"van-sku__price-symbol\"\n }, [\"\\uFFE5\"]), h(\"span\", {\n \"class\": \"van-sku__price-num\"\n }, [price])])]);\n var Group = slots('sku-group') || this.hasSku && h(\"div\", {\n \"class\": this.skuGroupClass\n }, [this.skuTree.map(function (skuTreeItem) {\n return h(SkuRow, {\n \"attrs\": {\n \"skuRow\": skuTreeItem\n }\n }, [skuTreeItem.v.map(function (skuValue) {\n return h(SkuRowItem, {\n \"attrs\": {\n \"skuList\": sku.list,\n \"skuValue\": skuValue,\n \"selectedSku\": selectedSku,\n \"skuEventBus\": skuEventBus,\n \"skuKeyStr\": skuTreeItem.k_s\n }\n });\n })]);\n })]);\n var Stepper = slots('sku-stepper') || h(SkuStepper, {\n \"ref\": \"skuStepper\",\n \"attrs\": {\n \"quota\": this.quota,\n \"hideStock\": this.hideStock,\n \"quotaUsed\": this.quotaUsed,\n \"skuEventBus\": skuEventBus,\n \"selectedNum\": selectedNum,\n \"selectedSku\": selectedSku,\n \"stepperTitle\": stepperTitle,\n \"skuStockNum\": sku.stock_num,\n \"hideQuotaText\": hideQuotaText,\n \"selectedSkuComb\": selectedSkuComb,\n \"disableStepperInput\": this.disableStepperInput,\n \"customStepperConfig\": this.customStepperConfig\n },\n \"on\": {\n \"change\": function change(event) {\n _this3.$emit('stepper-change', event);\n }\n }\n });\n var Messages = slots('sku-messages') || h(SkuMessages, {\n \"ref\": \"skuMessages\",\n \"attrs\": {\n \"goodsId\": this.goodsId,\n \"messageConfig\": this.messageConfig,\n \"messages\": sku.messages\n }\n });\n var Actions = slots('sku-actions') || h(SkuActions, {\n \"attrs\": {\n \"buyText\": this.buyText,\n \"skuEventBus\": skuEventBus,\n \"showAddCartBtn\": this.showAddCartBtn\n }\n });\n return h(Popup, {\n \"attrs\": {\n \"position\": \"bottom\",\n \"getContainer\": this.getContainer,\n \"closeOnClickOverlay\": this.closeOnClickOverlay\n },\n \"class\": \"van-sku-container\",\n \"model\": {\n value: _this3.show,\n callback: function callback($$v) {\n _this3.show = $$v;\n }\n }\n }, [Header, h(\"div\", {\n \"class\": \"van-sku-body\",\n \"style\": this.bodyStyle\n }, [slots('sku-body-top'), Group, slots('extra-sku-group'), Stepper, Messages]), Actions]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/sku/Sku.js\n// module id = null\n// module chunks = ","import Sku from './Sku';\nimport SkuActions from './components/SkuActions';\nimport SkuHeader from './components/SkuHeader';\nimport SkuMessages from './components/SkuMessages';\nimport SkuStepper from './components/SkuStepper';\nimport SkuRow from './components/SkuRow';\nimport SkuRowItem from './components/SkuRowItem';\nimport skuHelper from './utils/skuHelper';\nimport constants from './constants';\nSku.SkuActions = SkuActions;\nSku.SkuHeader = SkuHeader;\nSku.SkuMessages = SkuMessages;\nSku.SkuStepper = SkuStepper;\nSku.SkuRow = SkuRow;\nSku.SkuRowItem = SkuRowItem;\nSku.skuHelper = skuHelper;\nSku.skuConstants = constants;\nexport default Sku;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/sku/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\nimport { TouchMixin } from '../mixins/touch';\nimport { preventDefault } from '../utils/event';\n\nvar _use = use('slider'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n mixins: [TouchMixin],\n props: {\n min: Number,\n value: Number,\n disabled: Boolean,\n vertical: Boolean,\n activeColor: String,\n inactiveColor: String,\n max: {\n type: Number,\n \"default\": 100\n },\n step: {\n type: Number,\n \"default\": 1\n },\n barHeight: {\n type: String,\n \"default\": '2px'\n }\n },\n methods: {\n onTouchStart: function onTouchStart(event) {\n if (this.disabled) return;\n this.touchStart(event);\n this.startValue = this.format(this.value);\n },\n onTouchMove: function onTouchMove(event) {\n preventDefault(event, true);\n if (this.disabled) return;\n this.touchMove(event);\n var rect = this.$el.getBoundingClientRect();\n var delta = this.vertical ? this.deltaY : this.deltaX;\n var total = this.vertical ? rect.height : rect.width;\n var diff = delta / total * 100;\n this.newValue = this.startValue + diff;\n this.updateValue(this.newValue);\n },\n onTouchEnd: function onTouchEnd() {\n if (this.disabled) return;\n this.updateValue(this.newValue, true);\n },\n onClick: function onClick(event) {\n event.stopPropagation();\n if (this.disabled) return;\n var rect = this.$el.getBoundingClientRect();\n var delta = this.vertical ? event.clientY - rect.top : event.clientX - rect.left;\n var total = this.vertical ? rect.height : rect.width;\n var value = delta / total * 100;\n this.updateValue(value, true);\n },\n updateValue: function updateValue(value, end) {\n value = this.format(value);\n this.$emit('input', value);\n\n if (end) {\n this.$emit('change', value);\n }\n },\n format: function format(value) {\n return Math.round(Math.max(this.min, Math.min(value, this.max)) / this.step) * this.step;\n }\n },\n render: function render(h) {\n var _barStyle;\n\n var vertical = this.vertical;\n var style = {\n background: this.inactiveColor\n };\n var mainAxis = vertical ? 'height' : 'width';\n var crossAxis = vertical ? 'width' : 'height';\n var barStyle = (_barStyle = {}, _barStyle[mainAxis] = this.format(this.value) + \"%\", _barStyle[crossAxis] = this.barHeight, _barStyle.background = this.activeColor, _barStyle);\n return h(\"div\", {\n \"style\": style,\n \"class\": bem({\n disabled: this.disabled,\n vertical: vertical\n }),\n \"on\": {\n \"click\": this.onClick\n }\n }, [h(\"div\", {\n \"class\": bem('bar'),\n \"style\": barStyle\n }, [h(\"div\", {\n \"class\": bem('button-wrapper'),\n \"on\": {\n \"touchstart\": this.onTouchStart,\n \"touchmove\": this.onTouchMove,\n \"touchend\": this.onTouchEnd,\n \"touchcancel\": this.onTouchEnd\n }\n }, [this.slots('button') || h(\"div\", {\n \"class\": bem('button')\n })])])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/slider/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\nimport Icon from '../icon';\n\nvar _use = use('step'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n beforeCreate: function beforeCreate() {\n var steps = this.$parent.steps;\n var index = this.$parent.slots().indexOf(this.$vnode);\n steps.splice(index === -1 ? steps.length : index, 0, this);\n },\n beforeDestroy: function beforeDestroy() {\n var index = this.$parent.steps.indexOf(this);\n\n if (index > -1) {\n this.$parent.steps.splice(index, 1);\n }\n },\n computed: {\n status: function status() {\n var index = this.$parent.steps.indexOf(this);\n var active = this.$parent.active;\n\n if (index < active) {\n return 'finish';\n }\n\n if (index === active) {\n return 'process';\n }\n }\n },\n render: function render(h) {\n var _ref;\n\n var status = this.status;\n var _this$$parent = this.$parent,\n activeIcon = _this$$parent.activeIcon,\n activeColor = _this$$parent.activeColor,\n direction = _this$$parent.direction;\n var titleStyle = status === 'process' && {\n color: activeColor\n };\n return h(\"div\", {\n \"class\": ['van-hairline', bem([direction, (_ref = {}, _ref[status] = status, _ref)])]\n }, [h(\"div\", {\n \"class\": bem('title'),\n \"style\": titleStyle\n }, [this.slots()]), h(\"div\", {\n \"class\": bem('circle-container')\n }, [status !== 'process' ? h(\"i\", {\n \"class\": bem('circle')\n }) : this.slots('active-icon') || h(Icon, {\n \"attrs\": {\n \"name\": activeIcon\n },\n \"style\": {\n color: activeColor\n }\n })]), h(\"div\", {\n \"class\": bem('line')\n })]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/step/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\nimport { GREEN } from '../utils/color';\nimport Icon from '../icon';\n\nvar _use = use('steps'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n props: {\n icon: String,\n title: String,\n active: Number,\n iconClass: String,\n description: String,\n direction: {\n type: String,\n \"default\": 'horizontal'\n },\n activeColor: {\n type: String,\n \"default\": GREEN\n },\n activeIcon: {\n type: String,\n \"default\": 'checked'\n }\n },\n data: function data() {\n return {\n steps: []\n };\n },\n render: function render(h) {\n var icon = this.icon,\n title = this.title,\n description = this.description,\n slots = this.slots;\n var StatusIcon = (slots('icon') || icon) && h(\"div\", {\n \"class\": bem('icon')\n }, [slots('icon') || h(Icon, {\n \"attrs\": {\n \"name\": icon\n },\n \"class\": this.iconClass\n })]);\n var StatusMessage = h(\"div\", {\n \"class\": bem('message')\n }, [h(\"div\", {\n \"class\": bem('title')\n }, [title]), h(\"div\", {\n \"class\": [bem('desc'), 'van-ellipsis']\n }, [description])]);\n return h(\"div\", {\n \"class\": bem([this.direction])\n }, [(title || description) && h(\"div\", {\n \"class\": bem('status')\n }, [StatusIcon, StatusMessage, slots('message-extra')]), h(\"div\", {\n \"class\": bem('items', {\n alone: !title && !description\n })\n }, [slots()])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/steps/index.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../utils';\nimport { emit, inherit } from '../utils/functional';\nimport Button from '../button'; // Types\n\nvar _use = use('submit-bar'),\n sfc = _use[0],\n bem = _use[1],\n t = _use[2];\n\nfunction SubmitBar(h, props, slots, ctx) {\n var tip = props.tip,\n price = props.price;\n var hasPrice = typeof price === 'number';\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem({\n 'safe-area-inset-bottom': props.safeAreaInsetBottom\n })\n }, inherit(ctx)]), [slots.top && slots.top(), (slots.tip || tip) && h(\"div\", {\n \"class\": bem('tip')\n }, [tip, slots.tip && slots.tip()]), h(\"div\", {\n \"class\": bem('bar')\n }, [slots[\"default\"] && slots[\"default\"](), h(\"div\", {\n \"class\": bem('text')\n }, [hasPrice && [h(\"span\", [props.label || t('label')]), h(\"span\", {\n \"class\": bem('price')\n }, [props.currency + \" \" + (price / 100).toFixed(props.decimalLength)])]]), h(Button, {\n \"attrs\": {\n \"square\": true,\n \"size\": \"large\",\n \"type\": props.buttonType,\n \"loading\": props.loading,\n \"disabled\": props.disabled,\n \"text\": props.loading ? '' : props.buttonText\n },\n \"on\": {\n \"click\": function click() {\n emit(ctx, 'submit');\n }\n }\n })])]);\n}\n\nSubmitBar.props = {\n tip: String,\n label: String,\n loading: Boolean,\n disabled: Boolean,\n buttonText: String,\n safeAreaInsetBottom: Boolean,\n price: {\n type: Number,\n \"default\": null\n },\n decimalLength: {\n type: Number,\n \"default\": 2\n },\n currency: {\n type: String,\n \"default\": '¥'\n },\n buttonType: {\n type: String,\n \"default\": 'danger'\n }\n};\nexport default sfc(SubmitBar);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/submit-bar/index.js\n// module id = null\n// module chunks = ","import { on, off } from '../utils/event';\nexport var ClickOutsideMixin = function ClickOutsideMixin(config) {\n return {\n mounted: function mounted() {\n var _this = this;\n\n config.handler = function (event) {\n if (!_this.$el.contains(event.target)) {\n _this[config.method]();\n }\n };\n\n on(document, config.event, config.handler);\n },\n beforeDestroy: function beforeDestroy() {\n off(document, config.event, config.handler);\n }\n };\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/mixins/click-outside.js\n// module id = null\n// module chunks = ","import { use, range } from '../utils';\nimport { preventDefault } from '../utils/event';\nimport { TouchMixin } from '../mixins/touch';\nimport { ClickOutsideMixin } from '../mixins/click-outside';\n\nvar _use = use('swipe-cell'),\n sfc = _use[0],\n bem = _use[1];\n\nvar THRESHOLD = 0.15;\nexport default sfc({\n mixins: [TouchMixin, ClickOutsideMixin({\n event: 'touchstart',\n method: 'onClick'\n })],\n props: {\n onClose: Function,\n disabled: Boolean,\n leftWidth: Number,\n rightWidth: Number\n },\n data: function data() {\n return {\n offset: 0,\n dragging: false\n };\n },\n methods: {\n open: function open(position) {\n var offset = position === 'left' ? this.leftWidth : -this.rightWidth;\n this.swipeMove(offset);\n this.resetSwipeStatus();\n },\n close: function close() {\n this.offset = 0;\n },\n resetSwipeStatus: function resetSwipeStatus() {\n this.swiping = false;\n this.opened = true;\n },\n swipeMove: function swipeMove(offset) {\n if (offset === void 0) {\n offset = 0;\n }\n\n this.offset = range(offset, -this.rightWidth, this.leftWidth);\n\n if (this.offset) {\n this.swiping = true;\n } else {\n this.opened = false;\n }\n },\n swipeLeaveTransition: function swipeLeaveTransition(direction) {\n var offset = this.offset,\n leftWidth = this.leftWidth,\n rightWidth = this.rightWidth;\n var threshold = this.opened ? 1 - THRESHOLD : THRESHOLD; // right\n\n if (direction === 'right' && -offset > rightWidth * threshold && rightWidth > 0) {\n this.open('right'); // left\n } else if (direction === 'left' && offset > leftWidth * threshold && leftWidth > 0) {\n this.open('left'); // reset\n } else {\n this.swipeMove(0);\n }\n },\n startDrag: function startDrag(event) {\n if (this.disabled) {\n return;\n }\n\n this.dragging = true;\n this.startOffset = this.offset;\n this.touchStart(event);\n },\n onDrag: function onDrag(event) {\n if (this.disabled) {\n return;\n }\n\n this.touchMove(event);\n\n if (this.direction === 'horizontal') {\n preventDefault(event);\n this.swipeMove(this.deltaX + this.startOffset);\n }\n },\n endDrag: function endDrag() {\n if (this.disabled) {\n return;\n }\n\n this.dragging = false;\n\n if (this.swiping) {\n this.swipeLeaveTransition(this.offset > 0 ? 'left' : 'right');\n }\n },\n onClick: function onClick(position) {\n if (position === void 0) {\n position = 'outside';\n }\n\n this.$emit('click', position);\n\n if (!this.offset) {\n return;\n }\n\n if (this.onClose) {\n this.onClose(position, this);\n } else {\n this.swipeMove(0);\n }\n }\n },\n render: function render(h) {\n var _this = this;\n\n var onClick = function onClick(position, stop) {\n return function (event) {\n if (stop) {\n event.stopPropagation();\n }\n\n _this.onClick(position);\n };\n };\n\n var wrapperStyle = {\n transform: \"translate3d(\" + this.offset + \"px, 0, 0)\",\n transition: this.dragging ? 'none' : '.6s cubic-bezier(0.18, 0.89, 0.32, 1)'\n };\n return h(\"div\", {\n \"class\": bem(),\n \"on\": {\n \"click\": onClick('cell'),\n \"touchstart\": this.startDrag,\n \"touchmove\": this.onDrag,\n \"touchend\": this.endDrag,\n \"touchcancel\": this.endDrag\n }\n }, [h(\"div\", {\n \"class\": bem('wrapper'),\n \"style\": wrapperStyle,\n \"on\": {\n \"transitionend\": function transitionend() {\n _this.swiping = false;\n }\n }\n }, [this.leftWidth ? h(\"div\", {\n \"class\": bem('left'),\n \"on\": {\n \"click\": onClick('left', true)\n }\n }, [this.slots('left')]) : null, this.slots(), this.rightWidth ? h(\"div\", {\n \"class\": bem('right'),\n \"on\": {\n \"click\": onClick('right', true)\n }\n }, [this.slots('right')]) : null])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/swipe-cell/index.js\n// module id = null\n// module chunks = ","import { use } from '../utils';\n\nvar _use = use('tabbar'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n data: function data() {\n return {\n items: []\n };\n },\n props: {\n value: Number,\n activeColor: String,\n safeAreaInsetBottom: Boolean,\n fixed: {\n type: Boolean,\n \"default\": true\n },\n zIndex: {\n type: Number,\n \"default\": 1\n }\n },\n watch: {\n items: function items() {\n this.setActiveItem();\n },\n value: function value() {\n this.setActiveItem();\n }\n },\n methods: {\n setActiveItem: function setActiveItem() {\n var _this = this;\n\n this.items.forEach(function (item, index) {\n item.active = index === _this.value;\n });\n },\n onChange: function onChange(active) {\n if (active !== this.value) {\n this.$emit('input', active);\n this.$emit('change', active);\n }\n }\n },\n render: function render(h) {\n return h(\"div\", {\n \"style\": {\n zIndex: this.zIndex\n },\n \"class\": ['van-hairline--top-bottom', bem({\n fixed: this.fixed,\n 'safe-area-inset-bottom': this.safeAreaInsetBottom\n })]\n }, [this.slots()]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/tabbar/index.js\n// module id = null\n// module chunks = ","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { use } from '../utils';\nimport Icon from '../icon';\nimport Info from '../info';\nimport { route, routeProps } from '../utils/router';\n\nvar _use = use('tabbar-item'),\n sfc = _use[0],\n bem = _use[1];\n\nexport default sfc({\n props: _extends({}, routeProps, {\n icon: String,\n dot: Boolean,\n info: [String, Number]\n }),\n data: function data() {\n return {\n active: false\n };\n },\n beforeCreate: function beforeCreate() {\n this.$parent.items.push(this);\n },\n destroyed: function destroyed() {\n this.$parent.items.splice(this.$parent.items.indexOf(this), 1);\n },\n methods: {\n onClick: function onClick(event) {\n this.$parent.onChange(this.$parent.items.indexOf(this));\n this.$emit('click', event);\n route(this.$router, this);\n }\n },\n render: function render(h) {\n var icon = this.icon,\n slots = this.slots,\n active = this.active;\n var style = active ? {\n color: this.$parent.activeColor\n } : null;\n return h(\"div\", {\n \"class\": bem({\n active: active\n }),\n \"style\": style,\n \"on\": {\n \"click\": this.onClick\n }\n }, [h(\"div\", {\n \"class\": bem('icon', {\n dot: this.dot\n })\n }, [slots('icon', {\n active: active\n }) || icon && h(Icon, {\n \"attrs\": {\n \"name\": icon\n }\n }), h(Info, {\n \"attrs\": {\n \"info\": this.info\n }\n })]), h(\"div\", {\n \"class\": bem('text')\n }, [slots('default', {\n active: active\n })])]);\n }\n});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/tabbar-item/index.js\n// module id = null\n// module chunks = ","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { use } from '../utils';\nimport { emit, inherit } from '../utils/functional';\nimport Icon from '../icon'; // Types\n\nvar _use = use('tree-select'),\n sfc = _use[0],\n bem = _use[1];\n\nfunction TreeSelect(h, props, slots, ctx) {\n var height = props.height,\n items = props.items,\n mainActiveIndex = props.mainActiveIndex,\n activeId = props.activeId;\n var selectedItem = items[mainActiveIndex] || {};\n var subItems = selectedItem.children || [];\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem(),\n \"style\": {\n height: height + \"px\"\n }\n }, inherit(ctx)]), [h(\"div\", {\n \"class\": bem('nav')\n }, [items.map(function (item, index) {\n return h(\"div\", {\n \"key\": index,\n \"class\": ['van-ellipsis', bem('nitem', {\n active: mainActiveIndex === index,\n disabled: item.disabled\n })],\n \"on\": {\n \"click\": function click() {\n if (!item.disabled) {\n emit(ctx, 'navclick', index);\n }\n }\n }\n }, [item.text]);\n })]), h(\"div\", {\n \"class\": bem('content')\n }, [subItems.map(function (item) {\n return h(\"div\", {\n \"key\": item.id,\n \"class\": ['van-ellipsis', bem('item', {\n active: activeId === item.id,\n disabled: item.disabled\n })],\n \"on\": {\n \"click\": function click() {\n if (!item.disabled) {\n emit(ctx, 'itemclick', item);\n }\n }\n }\n }, [item.text, activeId === item.id && h(Icon, {\n \"attrs\": {\n \"name\": \"checked\",\n \"size\": \"16px\"\n },\n \"class\": bem('selected')\n })]);\n })])]);\n}\n\nTreeSelect.props = {\n items: Array,\n mainActiveIndex: Number,\n activeId: {\n type: [Number, String],\n \"default\": 0\n },\n height: {\n type: Number,\n \"default\": 300\n }\n};\nexport default sfc(TreeSelect);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/tree-select/index.js\n// module id = null\n// module chunks = ","/* eslint-disable no-underscore-dangle */\nimport { on, off } from '../utils/event';\nimport { getScrollTop, getElementTop, getVisibleHeight, getScrollEventTarget } from '../utils/scroll';\nvar CONTEXT = '@@Waterfall';\nvar OFFSET = 300; // 处理滚动函数\n\nfunction handleScrollEvent() {\n var element = this.el;\n var scrollEventTarget = this.scrollEventTarget; // 已被禁止的滚动处理\n\n if (this.disabled) return;\n var targetScrollTop = getScrollTop(scrollEventTarget);\n var targetVisibleHeight = getVisibleHeight(scrollEventTarget); // 滚动元素可视区域下边沿到滚动元素元素最顶上 距离\n\n var targetBottom = targetScrollTop + targetVisibleHeight; // 如果无元素高度,考虑为元素隐藏,直接返回\n\n if (!targetVisibleHeight) return; // 判断是否到了底\n\n var needLoadMoreToLower = false;\n\n if (element === scrollEventTarget) {\n needLoadMoreToLower = scrollEventTarget.scrollHeight - targetBottom < this.offset;\n } else {\n var elementBottom = getElementTop(element) - getElementTop(scrollEventTarget) + getVisibleHeight(element);\n needLoadMoreToLower = elementBottom - targetVisibleHeight < this.offset;\n }\n\n if (needLoadMoreToLower) {\n this.cb.lower && this.cb.lower({\n target: scrollEventTarget,\n top: targetScrollTop\n });\n } // 判断是否到了顶\n\n\n var needLoadMoreToUpper = false;\n\n if (element === scrollEventTarget) {\n needLoadMoreToUpper = targetScrollTop < this.offset;\n } else {\n var elementTop = getElementTop(element) - getElementTop(scrollEventTarget);\n needLoadMoreToUpper = elementTop + this.offset > 0;\n }\n\n if (needLoadMoreToUpper) {\n this.cb.upper && this.cb.upper({\n target: scrollEventTarget,\n top: targetScrollTop\n });\n }\n} // 绑定事件到元素上\n// 读取基本的控制变量\n\n\nfunction doBindEvent() {\n var _this = this;\n\n if (this.el[CONTEXT].binded) {\n return;\n }\n\n this.el[CONTEXT].binded = true;\n this.scrollEventListener = handleScrollEvent.bind(this);\n this.scrollEventTarget = getScrollEventTarget(this.el);\n var disabledExpr = this.el.getAttribute('waterfall-disabled');\n var disabled = false;\n\n if (disabledExpr) {\n this.vm.$watch(disabledExpr, function (value) {\n _this.disabled = value;\n\n _this.scrollEventListener();\n });\n disabled = Boolean(this.vm[disabledExpr]);\n }\n\n this.disabled = disabled;\n var offset = this.el.getAttribute('waterfall-offset');\n this.offset = Number(offset) || OFFSET;\n on(this.scrollEventTarget, 'scroll', this.scrollEventListener, true);\n this.scrollEventListener();\n} // 绑定事件\n\n\nfunction startBind(el) {\n var context = el[CONTEXT];\n context.vm.$nextTick(function () {\n doBindEvent.call(el[CONTEXT]);\n });\n} // 确认何时绑事件监听函数\n\n\nfunction doCheckStartBind(el) {\n var context = el[CONTEXT];\n\n if (context.vm._isMounted) {\n startBind(el);\n } else {\n context.vm.$on('hook:mounted', function () {\n startBind(el);\n });\n }\n}\n\nexport default function (type) {\n return {\n bind: function bind(el, binding, vnode) {\n if (!el[CONTEXT]) {\n el[CONTEXT] = {\n el: el,\n vm: vnode.context,\n cb: {}\n };\n }\n\n el[CONTEXT].cb[type] = binding.value;\n doCheckStartBind(el);\n },\n update: function update(el) {\n var context = el[CONTEXT];\n context.scrollEventListener && context.scrollEventListener();\n },\n unbind: function unbind(el) {\n var context = el[CONTEXT];\n\n if (context.scrollEventTarget) {\n off(context.scrollEventTarget, 'scroll', context.scrollEventListener);\n }\n }\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/waterfall/directive.js\n// module id = null\n// module chunks = ","import Waterfall from './directive';\n\nWaterfall.install = function (Vue) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn('[Vant] Waterfall is deprecated, please use List component instread');\n }\n\n Vue.directive('WaterfallLower', Waterfall('lower'));\n Vue.directive('WaterfallUpper', Waterfall('upper'));\n};\n\nexport default Waterfall;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/waterfall/index.js\n// module id = null\n// module chunks = ","/* eslint-disable */\n// This file is auto gererated by build/build-entry.js\nimport Actionsheet from './actionsheet';\nimport AddressEdit from './address-edit';\nimport AddressList from './address-list';\nimport Area from './area';\nimport Badge from './badge';\nimport BadgeGroup from './badge-group';\nimport Button from './button';\nimport Card from './card';\nimport Cell from './cell';\nimport CellGroup from './cell-group';\nimport Checkbox from './checkbox';\nimport CheckboxGroup from './checkbox-group';\nimport Circle from './circle';\nimport Col from './col';\nimport Collapse from './collapse';\nimport CollapseItem from './collapse-item';\nimport ContactCard from './contact-card';\nimport ContactEdit from './contact-edit';\nimport ContactList from './contact-list';\nimport Coupon from './coupon';\nimport CouponCell from './coupon-cell';\nimport CouponList from './coupon-list';\nimport DatetimePicker from './datetime-picker';\nimport Dialog from './dialog';\nimport Field from './field';\nimport GoodsAction from './goods-action';\nimport GoodsActionBigBtn from './goods-action-big-btn';\nimport GoodsActionMiniBtn from './goods-action-mini-btn';\nimport Icon from './icon';\nimport ImagePreview from './image-preview';\nimport Info from './info';\nimport Lazyload from './lazyload';\nimport List from './list';\nimport Loading from './loading';\nimport Locale from './locale';\nimport NavBar from './nav-bar';\nimport NoticeBar from './notice-bar';\nimport Notify from './notify';\nimport NumberKeyboard from './number-keyboard';\nimport Overlay from './overlay';\nimport Pagination from './pagination';\nimport Panel from './panel';\nimport PasswordInput from './password-input';\nimport Picker from './picker';\nimport Popup from './popup';\nimport Progress from './progress';\nimport PullRefresh from './pull-refresh';\nimport Radio from './radio';\nimport RadioGroup from './radio-group';\nimport Rate from './rate';\nimport Row from './row';\nimport Search from './search';\nimport Sku from './sku';\nimport Slider from './slider';\nimport Step from './step';\nimport Stepper from './stepper';\nimport Steps from './steps';\nimport SubmitBar from './submit-bar';\nimport Swipe from './swipe';\nimport SwipeCell from './swipe-cell';\nimport SwipeItem from './swipe-item';\nimport Switch from './switch';\nimport SwitchCell from './switch-cell';\nimport Tab from './tab';\nimport Tabbar from './tabbar';\nimport TabbarItem from './tabbar-item';\nimport Tabs from './tabs';\nimport Tag from './tag';\nimport Toast from './toast';\nimport TreeSelect from './tree-select';\nimport Uploader from './uploader';\nimport Waterfall from './waterfall';\nvar version = '1.6.28';\nvar components = [Actionsheet, AddressEdit, AddressList, Area, Badge, BadgeGroup, Button, Card, Cell, CellGroup, Checkbox, CheckboxGroup, Circle, Col, Collapse, CollapseItem, ContactCard, ContactEdit, ContactList, Coupon, CouponCell, CouponList, DatetimePicker, Dialog, Field, GoodsAction, GoodsActionBigBtn, GoodsActionMiniBtn, Icon, ImagePreview, Info, List, Loading, NavBar, NoticeBar, Notify, NumberKeyboard, Overlay, Pagination, Panel, PasswordInput, Picker, Popup, Progress, PullRefresh, Radio, RadioGroup, Rate, Row, Search, Sku, Slider, Step, Stepper, Steps, SubmitBar, Swipe, SwipeCell, SwipeItem, Switch, SwitchCell, Tab, Tabbar, TabbarItem, Tabs, Tag, Toast, TreeSelect, Uploader];\n\nvar install = function install(Vue) {\n components.forEach(function (Component) {\n Vue.use(Component);\n });\n};\n/* istanbul ignore if */\n\n\nif (typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n}\n\nexport { install, version, Actionsheet, AddressEdit, AddressList, Area, Badge, BadgeGroup, Button, Card, Cell, CellGroup, Checkbox, CheckboxGroup, Circle, Col, Collapse, CollapseItem, ContactCard, ContactEdit, ContactList, Coupon, CouponCell, CouponList, DatetimePicker, Dialog, Field, GoodsAction, GoodsActionBigBtn, GoodsActionMiniBtn, Icon, ImagePreview, Info, Lazyload, List, Loading, Locale, NavBar, NoticeBar, Notify, NumberKeyboard, Overlay, Pagination, Panel, PasswordInput, Picker, Popup, Progress, PullRefresh, Radio, RadioGroup, Rate, Row, Search, Sku, Slider, Step, Stepper, Steps, SubmitBar, Swipe, SwipeCell, SwipeItem, Switch, SwitchCell, Tab, Tabbar, TabbarItem, Tabs, Tag, Toast, TreeSelect, Uploader, Waterfall };\nexport default {\n install: install,\n version: version\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/index.js\n// module id = null\n// module chunks = ","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 9AUj\n// module chunks = 0","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file.\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nmodule.exports = function normalizeComponent (\n rawScriptExports,\n compiledTemplate,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier /* server only */\n) {\n var esModule\n var scriptExports = rawScriptExports = rawScriptExports || {}\n\n // ES6 modules interop\n var type = typeof rawScriptExports.default\n if (type === 'object' || type === 'function') {\n esModule = rawScriptExports\n scriptExports = rawScriptExports.default\n }\n\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (compiledTemplate) {\n options.render = compiledTemplate.render\n options.staticRenderFns = compiledTemplate.staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = injectStyles\n }\n\n if (hook) {\n var functional = options.functional\n var existing = functional\n ? options.render\n : options.beforeCreate\n\n if (!functional) {\n // inject component registration as beforeCreate hook\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n } else {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return existing(h, context)\n }\n }\n }\n\n return {\n esModule: esModule,\n exports: scriptExports,\n options: options\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vue-loader@13.7.3@vue-loader/lib/component-normalizer.js\n// module id = C7Lr\n// module chunks = 0","\n;(function(win, lib) {\n var doc = win.document;\n var docEl = doc.documentElement;\n var metaEl = doc.querySelector('meta[name=\"viewport\"]');\n var flexibleEl = doc.querySelector('meta[name=\"flexible\"]');\n var dpr = 0;\n var scale = 0;\n var tid;\n var flexible = lib.flexible || (lib.flexible = {});\n\n if (metaEl) {\n console.warn('将根据已有的meta标签来设置缩放比例');\n var match = metaEl.getAttribute('content').match(/initial\\-scale=([\\d\\.]+)/);\n if (match) {\n scale = parseFloat(match[1]);\n dpr = parseInt(1 / scale);\n }\n } else if (flexibleEl) {\n var content = flexibleEl.getAttribute('content');\n if (content) {\n var initialDpr = content.match(/initial\\-dpr=([\\d\\.]+)/);\n var maximumDpr = content.match(/maximum\\-dpr=([\\d\\.]+)/);\n if (initialDpr) {\n dpr = parseFloat(initialDpr[1]);\n scale = parseFloat((1 / dpr).toFixed(2));\n }\n if (maximumDpr) {\n dpr = parseFloat(maximumDpr[1]);\n scale = parseFloat((1 / dpr).toFixed(2));\n }\n }\n }\n\n if (!dpr && !scale) {\n var isAndroid = win.navigator.appVersion.match(/android/gi);\n var isIPhone = win.navigator.appVersion.match(/iphone/gi);\n var devicePixelRatio = win.devicePixelRatio;\n if (isIPhone) {\n // iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案\n if (devicePixelRatio >= 3 && (!dpr || dpr >= 3)) {\n dpr = 3;\n } else if (devicePixelRatio >= 2 && (!dpr || dpr >= 2)){\n dpr = 2;\n } else {\n dpr = 1;\n }\n } else {\n // 其他设备下,仍旧使用1倍的方案\n dpr = 1;\n }\n scale = 1 / dpr;\n }\n\n docEl.setAttribute('data-dpr', dpr);\n if (!metaEl) {\n metaEl = doc.createElement('meta');\n metaEl.setAttribute('name', 'viewport');\n metaEl.setAttribute('content', 'initial-scale=' + scale + ', maximum-scale=' + scale + ', minimum-scale=' + scale + ', user-scalable=no');\n if (docEl.firstElementChild) {\n docEl.firstElementChild.appendChild(metaEl);\n } else {\n var wrap = doc.createElement('div');\n wrap.appendChild(metaEl);\n doc.write(wrap.innerHTML);\n }\n }\n\n function refreshRem(){\n var width = docEl.getBoundingClientRect().width;\n if (width / dpr > 540) {\n width = 540 * dpr;\n }\n var rem = width / 10;\n docEl.style.fontSize = rem + 'px';\n flexible.rem = win.rem = rem;\n }\n\n win.addEventListener('resize', function() {\n clearTimeout(tid);\n tid = setTimeout(refreshRem, 300);\n }, false);\n win.addEventListener('pageshow', function(e) {\n if (e.persisted) {\n clearTimeout(tid);\n tid = setTimeout(refreshRem, 300);\n }\n }, false);\n\n if (doc.readyState === 'complete') {\n doc.body.style.fontSize = 12 * dpr + 'px';\n } else {\n doc.addEventListener('DOMContentLoaded', function(e) {\n doc.body.style.fontSize = 12 * dpr + 'px';\n }, false);\n }\n\n\n refreshRem();\n\n flexible.dpr = win.dpr = dpr;\n flexible.refreshRem = refreshRem;\n flexible.rem2px = function(d) {\n var val = parseFloat(d) * this.rem;\n if (typeof d === 'string' && d.match(/rem$/)) {\n val += 'px';\n }\n return val;\n }\n flexible.px2rem = function(d) {\n var val = parseFloat(d) / this.rem;\n if (typeof d === 'string' && d.match(/px$/)) {\n val += 'rem';\n }\n return val;\n }\n\n})(window, window['lib'] || (window['lib'] = {}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_lib-flexible@0.3.2@lib-flexible/flexible.js\n// module id = D0oh\n// module chunks = 0","/* eslint-disable no-use-before-define */\nimport { isDef, isObj } from '.';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction assignKey(to, from, key) {\n var val = from[key];\n\n if (!isDef(val)) {\n return;\n }\n\n if (!hasOwnProperty.call(to, key) || !isObj(val)) {\n to[key] = val;\n } else {\n to[key] = deepAssign(Object(to[key]), from[key]);\n }\n}\n\nexport function deepAssign(to, from) {\n Object.keys(from).forEach(function (key) {\n assignKey(to, from, key);\n });\n return to;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/utils/deep-assign.js\n// module id = TExJ\n// module chunks = 0","/**\n * requestAnimationFrame polyfill\n */\nimport { isServer } from './index';\nvar prev = Date.now();\n/* istanbul ignore next */\n\nfunction fallback(fn) {\n var curr = Date.now();\n var ms = Math.max(0, 16 - (curr - prev));\n var id = setTimeout(fn, ms);\n prev = curr + ms;\n return id;\n}\n/* istanbul ignore next */\n\n\nvar root = isServer ? global : window;\n/* istanbul ignore next */\n\nvar iRaf = root.requestAnimationFrame || fallback;\n/* istanbul ignore next */\n\nvar iCancel = root.cancelAnimationFrame || root.clearTimeout;\nexport function raf(fn) {\n return iRaf.call(root, fn);\n}\nexport function cancel(id) {\n iCancel.call(root, id);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/_vant@1.6.28@vant/es/utils/raf.js\n// module id = VsCf\n// module chunks = 0","\"use strict\";function _extends(){return _extends=Object.assign||function(a){for(var b,c=1;c= 0 && Math.floor(n) === n && isFinite(val)\n}\n\nfunction isPromise (val) {\n return (\n isDef(val) &&\n typeof val.then === 'function' &&\n typeof val.catch === 'function'\n )\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : Array.isArray(val) || (isPlainObject(val) && val.toString === _toString)\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert an input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if an attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array.\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether an object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it,\n * e.g., PhantomJS 1.x. Technically, we don't need this anymore\n * since native bind is now performant enough in most browsers.\n * But removing it would mean breaking code that was able to run in\n * PhantomJS 1.x, so this must be kept for backward compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/* eslint-disable no-unused-vars */\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/).\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/* eslint-enable no-unused-vars */\n\n/**\n * Return the same value.\n */\nvar identity = function (_) { return _; };\n\n/**\n * Generate a string containing static keys from compiler modules.\n */\nfunction genStaticKeys (modules) {\n return modules.reduce(function (keys, m) {\n return keys.concat(m.staticKeys || [])\n }, []).join(',')\n}\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime()\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\n/**\n * Return the first index at which a loosely equal value can be\n * found in the array (if value is a plain object, the array must\n * contain an object of the same shape), or -1 if it is not present.\n */\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured',\n 'serverPrefetch'\n];\n\n/* */\n\n\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Perform updates asynchronously. Intended to be used by Vue Test Utils\n * This will significantly reduce performance if set to false.\n */\n async: true,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n});\n\n/* */\n\n/**\n * unicode letters used for parsing html tags, component names and property paths.\n * using https://www.w3.org/TR/html53/semantics-scripting.html#potentialcustomelementname\n * skipping \\u10000-\\uEFFFF due to it freezing up PhantomJS\n */\nvar 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/;\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = new RegExp((\"[^\" + (unicodeRegExp.source) + \".$_\\\\d]\"));\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nvar isPhantomJS = UA && /phantomjs/.test(UA);\nvar isFF = UA && UA.match(/firefox\\/(\\d+)/);\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'] && global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = /*@__PURE__*/(function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return ''\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm;\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n if (process.env.NODE_ENV !== 'production' && !config.async) {\n // subs aren't sorted in scheduler if not running async\n // we need to sort them now to make sure they fire in correct\n // order\n subs.sort(function (a, b) { return a.id - b.id; });\n }\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// The current target watcher being evaluated.\n// This is globally unique because only one watcher\n// can be evaluated at a time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (target) {\n targetStack.push(target);\n Dep.target = target;\n}\n\nfunction popTarget () {\n targetStack.pop();\n Dep.target = targetStack[targetStack.length - 1];\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n // #7975\n // clone children array to avoid mutating original in case of cloning\n // a child.\n vnode.children && vnode.children.slice(),\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.asyncMeta = vnode.asyncMeta;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n if (hasProto) {\n protoAugment(value, arrayMethods);\n } else {\n copyAugment(value, arrayMethods, arrayKeys);\n }\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through all properties and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive$$1(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment a target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment a target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive$$1 (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n if ((!getter || setter) && arguments.length === 2) {\n val = obj[key];\n }\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n // #7981: for accessor properties without setter\n if (getter && !setter) { return }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive$$1(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n\n var keys = hasSymbol\n ? Reflect.ownKeys(from)\n : Object.keys(from);\n\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n // in case the object is already observed...\n if (key === '__ob__') { continue }\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (\n toVal !== fromVal &&\n isPlainObject(toVal) &&\n isPlainObject(fromVal)\n ) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n var res = childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n return res\n ? dedupeHooks(res)\n : res\n}\n\nfunction dedupeHooks (hooks) {\n var res = [];\n for (var i = 0; i < hooks.length; i++) {\n if (res.indexOf(hooks[i]) === -1) {\n res.push(hooks[i]);\n }\n }\n return res\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!new RegExp((\"^[a-zA-Z][\\\\-\\\\.0-9_\" + (unicodeRegExp.source) + \"]*$\")).test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'should conform to valid custom element name in html5 specification.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def$$1 = dirs[key];\n if (typeof def$$1 === 'function') {\n dirs[key] = { bind: def$$1, update: def$$1 };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n\n // Apply extends and mixins on the child options,\n // but only if it is a raw options object that isn't\n // the result of another mergeOptions call.\n // Only merged options has the _base property.\n if (!child._base) {\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n }\n\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\n\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false)\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n\n if (!valid) {\n warn(\n getInvalidTypeMessage(name, value, expectedTypes),\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\nfunction getInvalidTypeMessage (name, value, expectedTypes) {\n var message = \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', '));\n var expectedType = expectedTypes[0];\n var receivedType = toRawType(value);\n var expectedValue = styleValue(value, expectedType);\n var receivedValue = styleValue(value, receivedType);\n // check if we need to specify expected value\n if (expectedTypes.length === 1 &&\n isExplicable(expectedType) &&\n !isBoolean(expectedType, receivedType)) {\n message += \" with value \" + expectedValue;\n }\n message += \", got \" + receivedType + \" \";\n // check if we need to specify received value\n if (isExplicable(receivedType)) {\n message += \"with value \" + receivedValue + \".\";\n }\n return message\n}\n\nfunction styleValue (value, type) {\n if (type === 'String') {\n return (\"\\\"\" + value + \"\\\"\")\n } else if (type === 'Number') {\n return (\"\" + (Number(value)))\n } else {\n return (\"\" + value)\n }\n}\n\nfunction isExplicable (value) {\n var explicitTypes = ['string', 'number', 'boolean'];\n return explicitTypes.some(function (elem) { return value.toLowerCase() === elem; })\n}\n\nfunction isBoolean () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return args.some(function (elem) { return elem.toLowerCase() === 'boolean'; })\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n // Deactivate deps tracking while processing error handler to avoid possible infinite rendering.\n // See: https://github.com/vuejs/vuex/issues/1505\n pushTarget();\n try {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n } finally {\n popTarget();\n }\n}\n\nfunction invokeWithErrorHandling (\n handler,\n context,\n args,\n vm,\n info\n) {\n var res;\n try {\n res = args ? handler.apply(context, args) : handler.call(context);\n if (res && !res._isVue && isPromise(res) && !res._handled) {\n res.catch(function (e) { return handleError(e, vm, info + \" (Promise/async)\"); });\n // issue #9511\n // avoid catch triggering multiple times when nested calls\n res._handled = true;\n }\n } catch (e) {\n handleError(e, vm, info);\n }\n return res\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n // if the user intentionally throws the original error in the handler,\n // do not log it twice\n if (e !== err) {\n logError(e, null, 'config.errorHandler');\n }\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n\nvar isUsingMicroTask = false;\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using microtasks.\n// In 2.5 we used (macro) tasks (in combination with microtasks).\n// However, it has subtle problems when state is changed right before repaint\n// (e.g. #6813, out-in transitions).\n// Also, using (macro) tasks in event handler would cause some weird behaviors\n// that cannot be circumvented (e.g. #7109, #7153, #7546, #7834, #8109).\n// So we now use microtasks everywhere, again.\n// A major drawback of this tradeoff is that there are some scenarios\n// where microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690, which have workarounds)\n// or even between bubbling of the same event (#6566).\nvar timerFunc;\n\n// The nextTick behavior leverages the microtask queue, which can be accessed\n// via either native Promise.then or MutationObserver.\n// MutationObserver has wider support, however it is seriously bugged in\n// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It\n// completely stops working after triggering a few times... so, if native\n// Promise is available, we will use it:\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n timerFunc = function () {\n p.then(flushCallbacks);\n // In problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n isUsingMicroTask = true;\n} else if (!isIE && typeof MutationObserver !== 'undefined' && (\n isNative(MutationObserver) ||\n // PhantomJS and iOS 7.x\n MutationObserver.toString() === '[object MutationObserverConstructor]'\n)) {\n // Use MutationObserver where native Promise is not available,\n // e.g. PhantomJS, iOS7, Android 4.4\n // (#6466 MutationObserver is unreliable in IE11)\n var counter = 1;\n var observer = new MutationObserver(flushCallbacks);\n var textNode = document.createTextNode(String(counter));\n observer.observe(textNode, {\n characterData: true\n });\n timerFunc = function () {\n counter = (counter + 1) % 2;\n textNode.data = String(counter);\n };\n isUsingMicroTask = true;\n} else if (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n // Fallback to setImmediate.\n // Technically it leverages the (macro) task queue,\n // but it is still a better choice than setTimeout.\n timerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else {\n // Fallback to setTimeout.\n timerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n timerFunc();\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n // perf.clearMeasures(name)\n };\n }\n}\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var warnReservedPrefix = function (target, key) {\n warn(\n \"Property \\\"\" + key + \"\\\" must be accessed with \\\"$data.\" + key + \"\\\" because \" +\n 'properties starting with \"$\" or \"_\" are not proxied in the Vue instance to ' +\n 'prevent conflicts with Vue internals. ' +\n 'See: https://vuejs.org/v2/api/#data',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) ||\n (typeof key === 'string' && key.charAt(0) === '_' && !(key in target.$data));\n if (!has && !isAllowed) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n if (key in target.$data) { warnReservedPrefix(target, key); }\n else { warnNonPresent(target, key); }\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns, vm) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n invokeWithErrorHandling(cloned[i], null, arguments$1, vm, \"v-on handler\");\n }\n } else {\n // return handler return value for single handlers\n return invokeWithErrorHandling(fns, null, arguments, vm, \"v-on handler\")\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n createOnceHandler,\n vm\n) {\n var name, def$$1, cur, old, event;\n for (name in on) {\n def$$1 = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur, vm);\n }\n if (isTrue(event.once)) {\n cur = on[name] = createOnceHandler(event.name, cur, event.capture);\n }\n add(event.name, cur, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g.