!function(t, e) { "object" == typeof exports && "object" == typeof module ? module.exports = e(require("vue")) : "function" == typeof define && define.amd ? define("vant", ["vue"], e) : "object" == typeof exports ? exports.vant = e(require("vue")) : t.vant = e(t.Vue) }("undefined" != typeof self ? self : this, (function(t) { return function(t) { var e = {}; function i(n) { if (e[n]) return e[n].exports; var s = e[n] = { i: n, l: !1, exports: {} }; return t[n].call(s.exports, s, s.exports, i), s.l = !0, s.exports } return i.m = t, i.c = e, i.d = function(t, e, n) { i.o(t, e) || Object.defineProperty(t, e, { enumerable: !0, get: n }) } , i.r = function(t) { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(t, "__esModule", { value: !0 }) } , i.t = function(t, e) { if (1 & e && (t = i(t)), 8 & e) return t; if (4 & e && "object" == typeof t && t && t.__esModule) return t; var n = Object.create(null); if (i.r(n), Object.defineProperty(n, "default", { enumerable: !0, value: t }), 2 & e && "string" != typeof t) for (var s in t) i.d(n, s, function(e) { return t[e] } .bind(null, s)); return n } , i.n = function(t) { var e = t && t.__esModule ? function() { return t.default } : function() { return t } ; return i.d(e, "a", e), e } , i.o = function(t, e) { return Object.prototype.hasOwnProperty.call(t, e) } , i.p = "", i(i.s = 11) }([function(t, e, i) { "use strict"; i.d(e, "b", (function() { return s } )), i.d(e, "h", (function() { return r } )), i.d(e, "i", (function() { return o } )), i.d(e, "c", (function() { return a } )), i.d(e, "e", (function() { return l } )), i.d(e, "f", (function() { return c } )), i.d(e, "g", (function() { return u } )), i.d(e, "a", (function() { return h } )), i.d(e, "d", (function() { return d } )); var n = i(3) , s = "undefined" != typeof window , r = i.n(n).a.prototype.$isServer; function o() {} function a(t) { return null != t } function l(t) { return "function" == typeof t } function c(t) { return null !== t && "object" == typeof t } function u(t) { return c(t) && l(t.then) && l(t.catch) } function h(t, e) { var i = e.split(".") , n = t; return i.forEach((function(t) { var e; n = c(n) && null != (e = n[t]) ? e : "" } )), n } function d(t) { return null == t || ("object" != typeof t || 0 === Object.keys(t).length) } } , function(t, e, i) { "use strict"; function n() { return (n = Object.assign || function(t) { for (var e, i = 1; i < arguments.length; i++) for (var n in e = arguments[i]) Object.prototype.hasOwnProperty.call(e, n) && (t[n] = e[n]); return t } ).apply(this, arguments) } var s = ["attrs", "props", "domProps"] , r = ["class", "style", "directives"] , o = ["on", "nativeOn"] , a = function(t, e) { return function() { t && t.apply(this, arguments), e && e.apply(this, arguments) } }; t.exports = function(t) { return t.reduce((function(t, e) { for (var i in e) if (t[i]) if (-1 !== s.indexOf(i)) t[i] = n({}, t[i], e[i]); else if (-1 !== r.indexOf(i)) { var l = t[i]instanceof Array ? t[i] : [t[i]] , c = e[i]instanceof Array ? e[i] : [e[i]]; t[i] = l.concat(c) } else if (-1 !== o.indexOf(i)) for (var u in e[i]) if (t[i][u]) { var h = t[i][u]instanceof Array ? t[i][u] : [t[i][u]] , d = e[i][u]instanceof Array ? e[i][u] : [e[i][u]]; t[i][u] = h.concat(d) } else t[i][u] = e[i][u]; else if ("hook" == i) for (var f in e[i]) t[i][f] = t[i][f] ? a(t[i][f], e[i][f]) : e[i][f]; else t[i] = e[i]; else t[i] = e[i]; return t } ), {}) } } , function(t, e, i) { "use strict"; i.d(e, "a", (function() { return s } )), i.d(e, "b", (function() { return r } )); var n = /-(\w)/g; function s(t) { return t.replace(n, (function(t, e) { return e.toUpperCase() } )) } function r(t, e) { void 0 === e && (e = 2); for (var i = t + ""; i.length < e; ) i = "0" + i; return i } } , function(e, i) { e.exports = t } , function(t, e, i) { "use strict"; (function(t) { i.d(e, "c", (function() { return l } )), i.d(e, "b", (function() { return c } )), i.d(e, "a", (function() { return u } )); var n = i(0) , s = Date.now(); var r = n.h ? t : window , o = r.requestAnimationFrame || function(t) { var e = Date.now() , i = Math.max(0, 16 - (e - s)) , n = setTimeout(t, i); return s = e + i, n } , a = r.cancelAnimationFrame || r.clearTimeout; function l(t) { return o.call(r, t) } function c(t) { l((function() { l(t) } )) } function u(t) { a.call(r, t) } } ).call(this, i(10)) } , function(t, e, i) { "use strict"; function n(t) { return /^\d+(\.\d+)?$/.test(t) } function s(t) { return Number.isNaN ? Number.isNaN(t) : t != t } i.d(e, "b", (function() { return n } )), i.d(e, "a", (function() { return s } )) } , function(t, e, i) { "use strict"; i.d(e, "a", (function() { return o } )), i.d(e, "b", (function() { return l } )); var n, s = i(0), r = i(5); function o(t) { if (Object(s.c)(t)) return t = String(t), Object(r.b)(t) ? t + "px" : t } function a(t) { return +(t = t.replace(/rem/g, "")) * function() { if (!n) { var t = document.documentElement , e = t.style.fontSize || window.getComputedStyle(t).fontSize; n = parseFloat(e) } return n }() } function l(t) { if ("number" == typeof t) return t; if (s.b) { if (-1 !== t.indexOf("rem")) return a(t); if (-1 !== t.indexOf("vw")) return function(t) { return +(t = t.replace(/vw/g, "")) * window.innerWidth / 100 }(t); if (-1 !== t.indexOf("vh")) return function(t) { return +(t = t.replace(/vh/g, "")) * window.innerHeight / 100 }(t) } return parseFloat(t) } } , function(t, e, i) { "use strict"; var n = i(3) , s = i.n(n) , r = i(0) , o = Object.prototype.hasOwnProperty; function a(t, e) { return Object.keys(e).forEach((function(i) { !function(t, e, i) { var n = e[i]; Object(r.c)(n) && (o.call(t, i) && Object(r.f)(n) ? t[i] = a(Object(t[i]), e[i]) : t[i] = n) }(t, e, i) } )), t } var l = s.a.prototype , c = s.a.util.defineReactive; c(l, "$vantLang", "zh-CN"), c(l, "$vantMessages", { "zh-CN": { name: "姓名", tel: "电话", save: "保存", confirm: "确认", cancel: "取消", delete: "删除", complete: "完成", loading: "加载中...", telEmpty: "请填写电话", nameEmpty: "请填写姓名", nameInvalid: "请输入正确的姓名", confirmDelete: "确定要删除吗", telInvalid: "请输入正确的手机号", vanCalendar: { end: "结束", start: "开始", title: "日期选择", confirm: "确定", startEnd: "开始/结束", weekdays: ["日", "一", "二", "三", "四", "五", "六"], monthTitle: function(t, e) { return t + "年" + e + "月" }, rangePrompt: function(t) { return "选择天数不能超过 " + t + " 天" } }, vanCascader: { select: "请选择" }, vanContactCard: { addText: "添加联系人" }, vanContactList: { addText: "新建联系人" }, vanPagination: { prev: "上一页", next: "下一页" }, vanPullRefresh: { pulling: "下拉即可刷新...", loosing: "释放即可刷新..." }, vanSubmitBar: { label: "合计:" }, vanCoupon: { 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 l.$vantMessages[l.$vantLang] }, use: function(t, e) { var i; l.$vantLang = t, this.add(((i = {})[t] = e, i)) }, add: function(t) { void 0 === t && (t = {}), a(l.$vantMessages, t) } } } , function(t, e, i) { "use strict"; function n(t) { return function(e, i) { return e && "string" != typeof e && (i = e, e = ""), "" + (e = e ? t + "__" + e : t) + function t(e, i) { return i ? "string" == typeof i ? " " + e + "--" + i : Array.isArray(i) ? i.reduce((function(i, n) { return i + t(e, n) } ), "") : Object.keys(i).reduce((function(n, s) { return n + (i[s] ? t(e, s) : "") } ), "") : "" }(e, i) } } i.d(e, "a", (function() { return d } )); var s = i(0) , r = i(2) , o = { methods: { slots: function(t, e) { void 0 === t && (t = "default"); var i = this.$slots , n = this.$scopedSlots[t]; return n ? n(e) : i[t] } } }; i(3); function a(t) { var e = this.name; t.component(e, this), t.component(Object(r.a)("-" + e), this) } function l(t) { return { functional: !0, props: t.props, model: t.model, render: function(e, i) { return t(e, i.props, function(t) { var e = t.scopedSlots || t.data.scopedSlots || {} , i = t.slots(); return Object.keys(i).forEach((function(t) { e[t] || (e[t] = function() { return i[t] } ) } )), e }(i), i) } } } function c(t) { return function(e) { return Object(s.e)(e) && (e = l(e)), e.functional || (e.mixins = e.mixins || [], e.mixins.push(o)), e.name = t, e.install = a, e } } var u = i(7); function h(t) { var e = Object(r.a)(t) + "."; return function(t) { for (var i = u.a.messages(), n = Object(s.a)(i, e + t) || Object(s.a)(i, t), r = arguments.length, o = new Array(r > 1 ? r - 1 : 0), a = 1; a < r; a++) o[a - 1] = arguments[a]; return Object(s.e)(n) ? n.apply(void 0, o) : n } } function d(t) { return [c(t = "van-" + t), n(t), h(t)] } } , function(t, e, i) { /*! * Vue-Lazyload.js v1.2.3 * (c) 2018 Awe <hilongjw@gmail.com> * Released under the MIT License. */ t.exports = function() { "use strict"; function t(t) { t = t || {}; var n = arguments.length , s = 0; if (1 === n) return t; for (; ++s < n; ) { var r = arguments[s]; d(t) && (t = r), i(r) && e(t, r) } return t } function e(e, s) { for (var r in f(e, s), s) if ("__proto__" !== r && n(s, r)) { var o = s[r]; i(o) ? ("undefined" === m(e[r]) && "function" === m(o) && (e[r] = o), e[r] = t(e[r] || {}, o)) : e[r] = o } return e } function i(t) { return "object" === m(t) || "function" === m(t) } function n(t, e) { return Object.prototype.hasOwnProperty.call(t, e) } function s(t, e) { if (t.length) { var i = t.indexOf(e); return i > -1 ? t.splice(i, 1) : void 0 } } function r(t, e) { if ("IMG" === t.tagName && t.getAttribute("data-srcset")) { var i = t.getAttribute("data-srcset") , n = [] , s = t.parentNode.offsetWidth * e , r = void 0 , o = void 0 , a = void 0; (i = i.trim().split(",")).map((function(t) { t = t.trim(), -1 === (r = t.lastIndexOf(" ")) ? (o = t, a = 999998) : (o = t.substr(0, r), a = parseInt(t.substr(r + 1, t.length - r - 2), 10)), n.push([a, o]) } )), n.sort((function(t, e) { if (t[0] < e[0]) return -1; 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 l = "", c = void 0, u = n.length, h = 0; h < u; h++) if ((c = n[h])[0] >= s) { l = c[1]; break } return l } } function o(t, e) { for (var i = void 0, n = 0, s = t.length; n < s; n++) if (e(t[n])) { i = t[n]; break } return i } function a() { if (!g) return !1; var t = !0 , e = document; try { var i = e.createElement("object"); i.type = "image/webp", i.style.visibility = "hidden", i.innerHTML = "!", e.body.appendChild(i), t = !i.offsetWidth, e.body.removeChild(i) } catch (e) { t = !1 } return t } function l() {} var c = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t) { return typeof t } : function(t) { return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol" : typeof t } , u = function(t, e) { if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function") } , h = function() { function t(t, e) { for (var i = 0; i < e.length; i++) { var n = e[i]; n.enumerable = n.enumerable || !1, n.configurable = !0, "value"in n && (n.writable = !0), Object.defineProperty(t, n.key, n) } } return function(e, i, n) { return i && t(e.prototype, i), n && t(e, n), e } }() , d = function(t) { return null == t || "function" != typeof t && "object" !== (void 0 === t ? "undefined" : c(t)) } , f = function(t, e) { if (null == t) throw new TypeError("expected first argument to be an object."); if (void 0 === e || "undefined" == typeof Symbol) return t; if ("function" != typeof Object.getOwnPropertySymbols) return t; for (var i = Object.prototype.propertyIsEnumerable, n = Object(t), s = arguments.length, r = 0; ++r < s; ) for (var o = Object(arguments[r]), a = Object.getOwnPropertySymbols(o), l = 0; l < a.length; l++) { var c = a[l]; i.call(o, c) && (n[c] = o[c]) } return n } , p = Object.prototype.toString , m = function(t) { var e = void 0 === t ? "undefined" : c(t); return "undefined" === e ? "undefined" : null === t ? "null" : !0 === t || !1 === t || t instanceof Boolean ? "boolean" : "string" === e || t instanceof String ? "string" : "number" === e || t instanceof Number ? "number" : "function" === e || t instanceof Function ? void 0 !== t.constructor.name && "Generator" === t.constructor.name.slice(0, 9) ? "generatorfunction" : "function" : void 0 !== Array.isArray && Array.isArray(t) ? "array" : t instanceof RegExp ? "regexp" : t instanceof Date ? "date" : "[object RegExp]" === (e = p.call(t)) ? "regexp" : "[object Date]" === e ? "date" : "[object Arguments]" === e ? "arguments" : "[object Error]" === e ? "error" : "[object Promise]" === e ? "promise" : function(t) { return t.constructor && "function" == typeof t.constructor.isBuffer && t.constructor.isBuffer(t) }(t) ? "buffer" : "[object Set]" === e ? "set" : "[object WeakSet]" === e ? "weakset" : "[object Map]" === e ? "map" : "[object WeakMap]" === e ? "weakmap" : "[object Symbol]" === e ? "symbol" : "[object Map Iterator]" === e ? "mapiterator" : "[object Set Iterator]" === e ? "setiterator" : "[object String Iterator]" === e ? "stringiterator" : "[object Array Iterator]" === e ? "arrayiterator" : "[object Int8Array]" === e ? "int8array" : "[object Uint8Array]" === e ? "uint8array" : "[object Uint8ClampedArray]" === e ? "uint8clampedarray" : "[object Int16Array]" === e ? "int16array" : "[object Uint16Array]" === e ? "uint16array" : "[object Int32Array]" === e ? "int32array" : "[object Uint32Array]" === e ? "uint32array" : "[object Float32Array]" === e ? "float32array" : "[object Float64Array]" === e ? "float64array" : "object" } , v = t , g = "undefined" != typeof window , b = g && "IntersectionObserver"in window , y = "event" , S = "observer" , k = function() { function t(t, e) { e = e || { bubbles: !1, cancelable: !1, detail: void 0 }; var i = document.createEvent("CustomEvent"); return i.initCustomEvent(t, e.bubbles, e.cancelable, e.detail), i } if (g) return "function" == typeof window.CustomEvent ? window.CustomEvent : (t.prototype = window.Event.prototype, t) }() , x = function() { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1; return g && window.devicePixelRatio || t } , w = function() { if (g) { var t = !1; try { var e = Object.defineProperty({}, "passive", { get: function() { t = !0 } }); window.addEventListener("test", null, e) } catch (t) {} return t } }() , C = { on: function(t, e, i) { var n = arguments.length > 3 && void 0 !== arguments[3] && arguments[3]; w ? t.addEventListener(e, i, { capture: n, passive: !0 }) : t.addEventListener(e, i, n) }, off: function(t, e, i) { var n = arguments.length > 3 && void 0 !== arguments[3] && arguments[3]; t.removeEventListener(e, i, n) } } , O = function(t, e, i) { var n = new Image; n.src = t.src, n.onload = function() { e({ naturalHeight: n.naturalHeight, naturalWidth: n.naturalWidth, src: n.src }) } , n.onerror = function(t) { i(t) } } , T = function(t, e) { return "undefined" != typeof getComputedStyle ? getComputedStyle(t, null).getPropertyValue(e) : t.style[e] } , $ = function(t) { return T(t, "overflow") + T(t, "overflow-y") + T(t, "overflow-x") } , B = {} , I = function() { function t(e) { var i = e.el , n = e.src , s = e.error , r = e.loading , o = e.bindType , a = e.$parent , l = e.options , c = e.elRenderer; u(this, t), this.el = i, this.src = n, this.error = s, this.loading = r, this.bindType = o, this.attempt = 0, this.naturalHeight = 0, this.naturalWidth = 0, this.options = l, this.rect = null, this.$parent = a, this.elRenderer = c, this.performanceData = { init: Date.now(), loadStart: 0, loadEnd: 0 }, this.filter(), this.initState(), this.render("loading", !1) } return h(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 , i = t.loading , n = t.error , s = this.src; this.src = e, this.loading = i, this.error = n, this.filter(), s !== 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.top < window.innerHeight * this.options.preLoad && this.rect.bottom > this.options.preLoadTop && this.rect.left < window.innerWidth * this.options.preLoad && this.rect.right > 0 } }, { 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 i in t) t.hasOwnProperty(i) && e.push(i); return e } )(this.options.filter).map((function(e) { t.options.filter[e](t, t.options) } )) } }, { key: "renderLoading", value: function(t) { var e = this; O({ src: this.loading }, (function(i) { 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] : l; 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 || B[this.src] ? (this.state.loaded = !0, e(), this.render("loaded", !0)) : void this.renderLoading((function() { t.attempt++, t.record("loadStart"), O({ src: t.src }, (function(i) { t.naturalHeight = i.naturalHeight, t.naturalWidth = i.naturalWidth, t.state.loaded = !0, t.state.error = !1, t.record("loadEnd"), t.render("loaded", !1), B[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 }() , E = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" , j = ["scroll", "wheel", "mousewheel", "resize", "animationend", "transitionend", "touchmove"] , D = { rootMargin: "0px", threshold: 0 } , P = function(t) { return function() { function e(t) { var i = t.preLoad , n = t.error , s = t.throttleWait , r = t.preLoadTop , o = t.dispatchEvent , l = t.loading , c = t.attempt , h = t.silent , d = void 0 === h || h , f = t.scale , p = t.listenEvents , m = (t.hasbind, t.filter) , v = t.adapter , g = t.observer , b = t.observerOptions; u(this, e), this.version = "1.2.3", this.mode = y, this.ListenerQueue = [], this.TargetIndex = 0, this.TargetQueue = [], this.options = { silent: d, dispatchEvent: !!o, throttleWait: s || 200, preLoad: i || 1.3, preLoadTop: r || 0, error: n || E, loading: l || E, attempt: c || 3, scale: f || x(f), ListenEvents: p || j, hasbind: !1, supportWebp: a(), filter: m || {}, adapter: v || {}, observer: !!g, observerOptions: b || D }, this._initEvent(), this.lazyLoadHandler = function(t, e) { var i = null , n = 0; return function() { if (!i) { var s = Date.now() - n , r = this , o = arguments , a = function() { n = Date.now(), i = !1, t.apply(r, o) }; s >= e ? a() : i = setTimeout(a, e) } } }(this._lazyLoadHandler.bind(this), this.options.throttleWait), this.setMode(this.options.observer ? S : y) } return h(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), g && (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, i, n) { var s = this; if (function(t, e) { for (var i = !1, n = 0, s = t.length; n < s; n++) if (e(t[n])) { i = !0; break } return i }(this.ListenerQueue, (function(t) { return t.el === e } ))) return this.update(e, i), t.nextTick(this.lazyLoadHandler); var o = this._valueFormatter(i.value) , a = o.src , l = o.loading , c = o.error; t.nextTick((function() { a = r(e, s.options.scale) || a, s._observer && s._observer.observe(e); var o = Object.keys(i.modifiers)[0] , u = void 0; o && (u = (u = n.context.$refs[o]) ? u.$el || u : document.getElementById(o)), u || (u = function(t) { if (g) { if (!(t instanceof HTMLElement)) return window; for (var e = t; e && e !== document.body && e !== document.documentElement && e.parentNode; ) { if (/(scroll|auto)/.test($(e))) return e; e = e.parentNode } return window } }(e)); var h = new I({ bindType: i.arg, $parent: u, el: e, loading: l, error: c, src: a, elRenderer: s._elRenderer.bind(s), options: s.options }); s.ListenerQueue.push(h), g && (s._addListenerTarget(window), s._addListenerTarget(u)), s.lazyLoadHandler(), t.nextTick((function() { return s.lazyLoadHandler() } )) } )) } }, { key: "update", value: function(e, i) { var n = this , s = this._valueFormatter(i.value) , a = s.src , l = s.loading , c = s.error; a = r(e, this.options.scale) || a; var u = o(this.ListenerQueue, (function(t) { return t.el === e } )); u && u.update({ src: a, loading: l, error: c }), this._observer && (this._observer.unobserve(e), this._observer.observe(e)), this.lazyLoadHandler(), t.nextTick((function() { return n.lazyLoadHandler() } )) } }, { key: "remove", value: function(t) { if (t) { this._observer && this._observer.unobserve(t); var e = o(this.ListenerQueue, (function(e) { return e.el === t } )); e && (this._removeListenerTarget(e.$parent), this._removeListenerTarget(window), s(this.ListenerQueue, e) && e.destroy()) } } }, { key: "removeComponent", value: function(t) { t && (s(this.ListenerQueue, t), this._observer && this._observer.unobserve(t.el), t.$parent && t.$el.parentNode && this._removeListenerTarget(t.$el.parentNode), this._removeListenerTarget(window)) } }, { key: "setMode", value: function(t) { var e = this; b || t !== S || (t = y), this.mode = t, t === y ? (this._observer && (this.ListenerQueue.forEach((function(t) { e._observer.unobserve(t.el) } )), this._observer = null), this.TargetQueue.forEach((function(t) { e._initListen(t.el, !0) } ))) : (this.TargetQueue.forEach((function(t) { e._initListen(t.el, !1) } )), this._initIntersectionObserver()) } }, { key: "_addListenerTarget", value: function(t) { if (t) { var e = o(this.TargetQueue, (function(e) { return e.el === t } )); return e ? e.childrenCount++ : (e = { el: t, id: ++this.TargetIndex, childrenCount: 1, listened: !0 }, this.mode === y && this._initListen(e.el, !0), this.TargetQueue.push(e)), this.TargetIndex } } }, { key: "_removeListenerTarget", value: function(t) { var e = this; this.TargetQueue.forEach((function(i, n) { i.el === t && (--i.childrenCount || (e._initListen(i.el, !1), e.TargetQueue.splice(n, 1), i = null)) } )) } }, { key: "_initListen", value: function(t, e) { var i = this; this.options.ListenEvents.forEach((function(n) { return C[e ? "on" : "off"](t, n, i.lazyLoadHandler) } )) } }, { key: "_initEvent", value: function() { var t = this; this.Event = { listeners: { loading: [], loaded: [], error: [] } }, this.$on = function(e, i) { t.Event.listeners[e].push(i) } , this.$once = function(e, i) { var n = t; t.$on(e, (function t() { n.$off(e, t), i.apply(n, arguments) } )) } , this.$off = function(e, i) { i ? s(t.Event.listeners[e], i) : t.Event.listeners[e] = [] } , this.$emit = function(e, i, n) { t.Event.listeners[e].forEach((function(t) { return t(i, n) } )) } } }, { key: "_lazyLoadHandler", value: function() { var t = this; this.ListenerQueue.forEach((function(e, i) { e.state.loaded || e.checkInView() && e.load((function() { !e.error && e.loaded && t.ListenerQueue.splice(i, 1) } )) } )) } }, { key: "_initIntersectionObserver", value: function() { var t = this; b && (this._observer = new IntersectionObserver(this._observerHandler.bind(this),this.options.observerOptions), this.ListenerQueue.length && this.ListenerQueue.forEach((function(e) { t._observer.observe(e.el) } ))) } }, { key: "_observerHandler", value: function(t, e) { var i = this; t.forEach((function(t) { t.isIntersecting && i.ListenerQueue.forEach((function(e) { if (e.el === t.target) { if (e.state.loaded) return i._observer.unobserve(e.el); e.load() } } )) } )) } }, { key: "_elRenderer", value: function(t, e, i) { if (t.el) { var n = t.el , s = t.bindType , r = void 0; switch (e) { case "loading": r = t.loading; break; case "error": r = t.error; break; default: r = t.src } if (s ? n.style[s] = 'url("' + r + '")' : n.getAttribute("src") !== r && n.setAttribute("src", r), n.setAttribute("lazy", e), this.$emit(e, t, i), this.options.adapter[e] && this.options.adapter[e](t, this.options), this.options.dispatchEvent) { var o = new k(e,{ detail: t }); n.dispatchEvent(o) } } } }, { key: "_valueFormatter", value: function(t) { var e = t , i = this.options.loading , n = this.options.error; return function(t) { return null !== t && "object" === (void 0 === t ? "undefined" : c(t)) }(t) && (t.src || this.options.silent || console.error("Vue Lazyload warning: miss src with " + t), e = t.src, i = t.loading || this.options.loading, n = t.error || this.options.error), { src: e, loading: i, error: n } } }]), e }() } , L = 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(), g && this.rect.top < window.innerHeight * t.options.preLoad && this.rect.bottom > 0 && this.rect.left < window.innerWidth * t.options.preLoad && this.rect.right > 0 }, load: function() { this.show = !0, this.state.loaded = !0, this.$emit("show", this) } } } } , N = function() { function t(e) { var i = e.lazy; u(this, t), this.lazy = i, i.lazyContainerMananger = this, this._queue = [] } return h(t, [{ key: "bind", value: function(t, e, i) { var n = new A({ el: t, binding: e, vnode: i, lazy: this.lazy }); this._queue.push(n) } }, { key: "update", value: function(t, e, i) { var n = o(this._queue, (function(e) { return e.el === t } )); n && n.update({ el: t, binding: e, vnode: i }) } }, { key: "unbind", value: function(t, e, i) { var n = o(this._queue, (function(e) { return e.el === t } )); n && (n.clear(), s(this._queue, n)) } }]), t }() , M = { selector: "img" } , A = function() { function t(e) { var i = e.el , n = e.binding , s = e.vnode , r = e.lazy; u(this, t), this.el = null, this.vnode = s, this.binding = n, this.options = {}, this.lazy = r, this._queue = [], this.update({ el: i, binding: n }) } return h(t, [{ key: "update", value: function(t) { var e = this , i = t.el , n = t.binding; this.el = i, this.options = v({}, M, n.value), this.getImgs().forEach((function(t) { e.lazy.add(t, v({}, e.binding, { value: { src: t.dataset.src, error: t.dataset.error, loading: t.dataset.loading } }), e.vnode) } )) } }, { key: "getImgs", value: function() { return function(t) { for (var e = t.length, i = [], n = 0; n < e; n++) i.push(t[n]); return i }(this.el.querySelectorAll(this.options.selector)) } }, { key: "clear", value: function() { var t = this; this.getImgs().forEach((function(e) { return t.lazy.remove(e) } )), this.vnode = null, this.binding = null, this.lazy = null } }]), t }(); return { install: function(t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {} , i = P(t) , n = new i(e) , s = new N({ lazy: n }) , r = "2" === t.version.split(".")[0]; t.prototype.$Lazyload = n, e.lazyComponent && t.component("lazy-component", L(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: s.bind.bind(s), update: s.update.bind(s), unbind: s.unbind.bind(s) })) : (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) { s.update(this.el, { modifiers: this.modifiers || {}, arg: this.arg, value: t, oldValue: e }, { context: this.vm }) }, unbind: function() { s.unbind(this.el) } })) } } }() } , function(t, e) { var i; i = function() { return this }(); try { i = i || new Function("return this")() } catch (t) { "object" == typeof window && (i = window) } t.exports = i } , function(t, e, i) { "use strict"; function n() { return (n = Object.assign || function(t) { for (var e = 1; e < arguments.length; e++) { var i = arguments[e]; for (var n in i) Object.prototype.hasOwnProperty.call(i, n) && (t[n] = i[n]) } return t } ).apply(this, arguments) } i.r(e), i.d(e, "install", (function() { return ih } )), i.d(e, "version", (function() { return eh } )), i.d(e, "ActionSheet", (function() { return kt } )), i.d(e, "AddressEdit", (function() { return pi } )), i.d(e, "AddressList", (function() { return Ai } )), i.d(e, "Area", (function() { return Gt } )), i.d(e, "Badge", (function() { return Hi } )), i.d(e, "Button", (function() { return je } )), i.d(e, "Calendar", (function() { return on } )), i.d(e, "Card", (function() { return mn } )), i.d(e, "Cascader", (function() { return Hn } )), i.d(e, "Cell", (function() { return oe } )), i.d(e, "CellGroup", (function() { return Kn } )), i.d(e, "Checkbox", (function() { return Xn } )), i.d(e, "CheckboxGroup", (function() { return Jn } )), i.d(e, "Circle", (function() { return rs } )), i.d(e, "Col", (function() { return cs } )), i.d(e, "Collapse", (function() { return fs } )), i.d(e, "CollapseItem", (function() { return bs } )), i.d(e, "ContactCard", (function() { return Cs } )), i.d(e, "ContactEdit", (function() { return Es } )), i.d(e, "ContactList", (function() { return Ms } )), i.d(e, "CountDown", (function() { return Fs } )), i.d(e, "Coupon", (function() { return Ys } )), i.d(e, "CouponCell", (function() { return tr } )), i.d(e, "CouponList", (function() { return rr } )), i.d(e, "DatetimePicker", (function() { return gr } )), i.d(e, "Dialog", (function() { return Qe } )), i.d(e, "Divider", (function() { return xr } )), i.d(e, "DropdownItem", (function() { return Tr } )), i.d(e, "DropdownMenu", (function() { return jr } )), i.d(e, "Empty", (function() { return zr } )), i.d(e, "Field", (function() { return de } )), i.d(e, "Form", (function() { return Hr } )), i.d(e, "GoodsAction", (function() { return Ve } )), i.d(e, "GoodsActionButton", (function() { return _e } )), i.d(e, "GoodsActionIcon", (function() { return Ur } )), i.d(e, "Grid", (function() { return Qr } )), i.d(e, "GridItem", (function() { return to } )), i.d(e, "Icon", (function() { return rt } )), i.d(e, "Image", (function() { return un } )), i.d(e, "ImagePreview", (function() { return yo } )), i.d(e, "IndexAnchor", (function() { return wo } )), i.d(e, "IndexBar", (function() { return $o } )), i.d(e, "Info", (function() { return J } )), i.d(e, "Lazyload", (function() { return Io } )), i.d(e, "List", (function() { return Lo } )), i.d(e, "Loading", (function() { return vt } )), i.d(e, "Locale", (function() { return No.a } )), i.d(e, "NavBar", (function() { return Vo } )), i.d(e, "NoticeBar", (function() { return _o } )), i.d(e, "Notify", (function() { return Zo } )), i.d(e, "NumberKeyboard", (function() { return la } )), i.d(e, "Overlay", (function() { return $ } )), i.d(e, "Pagination", (function() { return pa } )), i.d(e, "Panel", (function() { return ya } )), i.d(e, "PasswordInput", (function() { return Ca } )), i.d(e, "Picker", (function() { return Ut } )), i.d(e, "Popover", (function() { return rl } )), i.d(e, "Popup", (function() { return ct } )), i.d(e, "Progress", (function() { return cl } )), i.d(e, "PullRefresh", (function() { return ml } )), i.d(e, "Radio", (function() { return Ti } )), i.d(e, "RadioGroup", (function() { return bi } )), i.d(e, "Rate", (function() { return yl } )), i.d(e, "Row", (function() { return wl } )), i.d(e, "Search", (function() { return Il } )), i.d(e, "ShareSheet", (function() { return Nl } )), i.d(e, "Sidebar", (function() { return Vl } )), i.d(e, "SidebarItem", (function() { return _l } )), i.d(e, "Skeleton", (function() { return Yl } )), i.d(e, "Sku", (function() { return fu } )), i.d(e, "Slider", (function() { return bu } )), i.d(e, "Step", (function() { return xu } )), i.d(e, "Stepper", (function() { return Oc } )), i.d(e, "Steps", (function() { return Tu } )), i.d(e, "Sticky", (function() { return In } )), i.d(e, "SubmitBar", (function() { return Du } )), i.d(e, "Swipe", (function() { return ao } )), i.d(e, "SwipeCell", (function() { return Mu } )), i.d(e, "SwipeItem", (function() { return ho } )), i.d(e, "Switch", (function() { return li } )), i.d(e, "SwitchCell", (function() { return Fu } )), i.d(e, "Tab", (function() { return yn } )), i.d(e, "Tabbar", (function() { return qu } )), i.d(e, "TabbarItem", (function() { return Xu } )), i.d(e, "Tabs", (function() { return An } )), i.d(e, "Tag", (function() { return wi } )), i.d(e, "Toast", (function() { return Te } )), i.d(e, "TreeSelect", (function() { return th } )), i.d(e, "Uploader", (function() { return Fc } )); var s = i(1) , r = i.n(s) , o = i(3) , a = i.n(o) , l = i(8) , c = ["ref", "key", "style", "class", "attrs", "refInFor", "nativeOn", "directives", "staticClass", "staticStyle"] , u = { nativeOn: "on" }; function h(t, e) { var i = c.reduce((function(e, i) { return t.data[i] && (e[u[i] || i] = t.data[i]), e } ), {}); return e && (i.on = i.on || {}, n(i.on, t.data.on)), i } function d(t, e) { for (var i = arguments.length, n = new Array(i > 2 ? i - 2 : 0), s = 2; s < i; s++) n[s - 2] = arguments[s]; var r = t.listeners[e]; r && (Array.isArray(r) ? r.forEach((function(t) { t.apply(void 0, n) } )) : r.apply(void 0, n)) } function f(t, e) { var i = new a.a({ el: document.createElement("div"), props: t.props, render: function(i) { return i(t, n({ props: this.$props }, e)) } }); return document.body.appendChild(i.$el), i } var p = { zIndex: 2e3, lockCount: 0, stack: [], find: function(t) { return this.stack.filter((function(e) { return e.vm === t } ))[0] }, remove: function(t) { var e = this.find(t); if (e) { e.vm = null, e.overlay = null; var i = this.stack.indexOf(e); this.stack.splice(i, 1) } } } , m = i(0) , v = !1; if (!m.h) try { var g = {}; Object.defineProperty(g, "passive", { get: function() { v = !0 } }), window.addEventListener("test-passive", null, g) } catch (t) {} function b(t, e, i, n) { void 0 === n && (n = !1), m.h || t.addEventListener(e, i, !!v && { capture: !1, passive: n }) } function y(t, e, i) { m.h || t.removeEventListener(e, i) } function S(t) { t.stopPropagation() } function k(t, e) { ("boolean" != typeof t.cancelable || t.cancelable) && t.preventDefault(), e && S(t) } var x = Object(l.a)("overlay") , w = x[0] , C = x[1]; function O(t) { k(t, !0) } function T(t, e, i, s) { var o = n({ zIndex: e.zIndex }, e.customStyle); return Object(m.c)(e.duration) && (o.animationDuration = e.duration + "s"), t("transition", { attrs: { name: "van-fade" } }, [t("div", r()([{ directives: [{ name: "show", value: e.show }], style: o, class: [C(), e.className], on: { touchmove: e.lockScroll ? O : m.i } }, h(s, !0)]), [null == i.default ? void 0 : i.default()])]) } T.props = { show: Boolean, zIndex: [Number, String], duration: [Number, String], className: null, customStyle: Object, lockScroll: { type: Boolean, default: !0 } }; var $ = w(T); function B(t) { var e = t.parentNode; e && e.removeChild(t) } var I = { className: "", customStyle: {} }; function E(t) { var e = p.find(t); if (e) { var i = t.$el , s = e.config , r = e.overlay; i && i.parentNode && i.parentNode.insertBefore(r.$el, i), n(r, I, s, { show: !0 }) } } function j(t, e) { var i = p.find(t); if (i) i.config = e; else { var n = function(t) { return f($, { on: { click: function() { t.$emit("click-overlay"), t.closeOnClickOverlay && (t.onClickOverlay ? t.onClickOverlay() : t.close()) } } }) }(t); p.stack.push({ vm: t, config: e, overlay: n }) } E(t) } function D(t) { var e = p.find(t); e && (e.overlay.show = !1) } function P(t) { return t === window } var L = /scroll|auto|overlay/i; function N(t, e) { void 0 === e && (e = window); for (var i = t; i && "HTML" !== i.tagName && "BODY" !== i.tagName && 1 === i.nodeType && i !== e; ) { var n = window.getComputedStyle(i).overflowY; if (L.test(n)) return i; i = i.parentNode } return e } function M(t) { var e = "scrollTop"in t ? t.scrollTop : t.pageYOffset; return Math.max(e, 0) } function A(t, e) { "scrollTop"in t ? t.scrollTop = e : t.scrollTo(t.scrollX, e) } function z() { return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0 } function V(t) { A(window, t), A(document.body, t) } function R(t, e) { if (P(t)) return 0; var i = e ? M(e) : z(); return t.getBoundingClientRect().top + i } var F = { data: function() { return { direction: "" } }, methods: { touchStart: function(t) { this.resetTouchStatus(), this.startX = t.touches[0].clientX, this.startY = t.touches[0].clientY }, touchMove: function(t) { var e = t.touches[0]; this.deltaX = e.clientX < 0 ? 0 : e.clientX - this.startX, this.deltaY = e.clientY - this.startY, this.offsetX = Math.abs(this.deltaX), this.offsetY = Math.abs(this.deltaY); var i, n; (!this.direction || this.offsetX < 10 && this.offsetY < 10) && (this.direction = (i = this.offsetX, n = this.offsetY, i > n ? "horizontal" : n > i ? "vertical" : "")) }, resetTouchStatus: function() { this.direction = "", this.deltaX = 0, this.deltaY = 0, this.offsetX = 0, this.offsetY = 0 }, bindTouchEvent: function(t) { var e = this.onTouchStart , i = this.onTouchMove , n = this.onTouchEnd; b(t, "touchstart", e), b(t, "touchmove", i), n && (b(t, "touchend", n), b(t, "touchcancel", n)) } } }; function H(t) { var e = void 0 === t ? {} : t , i = e.ref , n = e.afterPortal; return { props: { getContainer: [String, Function] }, watch: { getContainer: "portal" }, mounted: function() { this.getContainer && this.portal() }, methods: { portal: function() { var t, e, s = this.getContainer, r = i ? this.$refs[i] : this.$el; s ? t = "string" == typeof (e = s) ? document.querySelector(e) : e() : this.$parent && (t = this.$parent.$el), t && t !== r.parentNode && t.appendChild(r), n && n.call(this) } } } } var _ = 0; function W(t) { var e = "binded_" + _++; function i() { this[e] || (t.call(this, b, !0), this[e] = !0) } function n() { this[e] && (t.call(this, y, !1), this[e] = !1) } return { mounted: i, activated: i, deactivated: n, beforeDestroy: n } } var q = { mixins: [W((function(t, e) { this.handlePopstate(e && this.closeOnPopstate) } ))], props: { closeOnPopstate: Boolean }, data: function() { return { bindStatus: !1 } }, watch: { closeOnPopstate: function(t) { this.handlePopstate(t) } }, methods: { onPopstate: function() { this.close(), this.shouldReopen = !1 }, handlePopstate: function(t) { this.$isServer || this.bindStatus !== t && (this.bindStatus = t, (t ? b : y)(window, "popstate", this.onPopstate)) } } } , U = { transitionAppear: Boolean, value: Boolean, overlay: Boolean, overlayStyle: Object, overlayClass: String, closeOnClickOverlay: Boolean, zIndex: [Number, String], lockScroll: { type: Boolean, default: !0 }, lazyRender: { type: Boolean, default: !0 } }; function K(t) { return void 0 === t && (t = {}), { mixins: [F, q, H({ afterPortal: function() { this.overlay && E() } })], provide: function() { return { vanPopup: this } }, props: U, data: function() { return this.onReopenCallback = [], { inited: this.value } }, computed: { shouldRender: function() { return this.inited || !this.lazyRender } }, watch: { value: function(e) { var i = e ? "open" : "close"; this.inited = this.inited || this.value, this[i](), t.skipToggleEvent || this.$emit(i) }, overlay: "renderOverlay" }, mounted: function() { this.value && this.open() }, activated: function() { this.shouldReopen && (this.$emit("input", !0), this.shouldReopen = !1) }, beforeDestroy: function() { var t, e; t = this, (e = p.find(t)) && (B(e.overlay.$el), p.remove(t)), this.opened && this.removeLock(), this.getContainer && B(this.$el) }, deactivated: function() { this.value && (this.close(), this.shouldReopen = !0) }, methods: { open: function() { this.$isServer || this.opened || (void 0 !== this.zIndex && (p.zIndex = this.zIndex), this.opened = !0, this.renderOverlay(), this.addLock(), this.onReopenCallback.forEach((function(t) { t() } ))) }, addLock: function() { this.lockScroll && (b(document, "touchstart", this.touchStart), b(document, "touchmove", this.onTouchMove), p.lockCount || document.body.classList.add("van-overflow-hidden"), p.lockCount++) }, removeLock: function() { this.lockScroll && p.lockCount && (p.lockCount--, y(document, "touchstart", this.touchStart), y(document, "touchmove", this.onTouchMove), p.lockCount || document.body.classList.remove("van-overflow-hidden")) }, close: function() { this.opened && (D(this), this.opened = !1, this.removeLock(), this.$emit("input", !1)) }, onTouchMove: function(t) { this.touchMove(t); var e = this.deltaY > 0 ? "10" : "01" , i = N(t.target, this.$el) , n = i.scrollHeight , s = i.offsetHeight , r = i.scrollTop , o = "11"; 0 === r ? o = s >= n ? "00" : "01" : r + s >= n && (o = "10"), "11" === o || "vertical" !== this.direction || parseInt(o, 2) & parseInt(e, 2) || k(t, !0) }, renderOverlay: function() { var t = this; !this.$isServer && this.value && this.$nextTick((function() { t.updateZIndex(t.overlay ? 1 : 0), t.overlay ? j(t, { zIndex: p.zIndex++, duration: t.duration, className: t.overlayClass, customStyle: t.overlayStyle }) : D(t) } )) }, updateZIndex: function(t) { void 0 === t && (t = 0), this.$el.style.zIndex = ++p.zIndex + t }, onReopen: function(t) { this.onReopenCallback.push(t) } } } } var Y = i(6) , X = Object(l.a)("info") , Q = X[0] , G = X[1]; function Z(t, e, i, n) { var s = e.dot , o = e.info , a = Object(m.c)(o) && "" !== o; if (s || a) return t("div", r()([{ class: G({ dot: s }) }, h(n, !0)]), [s ? "" : e.info]) } Z.props = { dot: Boolean, info: [Number, String] }; var J = Q(Z) , tt = Object(l.a)("icon") , et = tt[0] , it = tt[1]; var nt = { medel: "medal", "medel-o": "medal-o", "calender-o": "calendar-o" }; function st(t, e, i, n) { var s, o = function(t) { return t && nt[t] || t }(e.name), a = function(t) { return !!t && -1 !== t.indexOf("/") }(o); return t(e.tag, r()([{ class: [e.classPrefix, a ? "" : e.classPrefix + "-" + o], style: { color: e.color, fontSize: Object(Y.a)(e.size) } }, h(n, !0)]), [i.default && i.default(), a && t("img", { class: it("image"), attrs: { src: o } }), t(J, { attrs: { dot: e.dot, info: null != (s = e.badge) ? s : e.info } })]) } st.props = { dot: Boolean, name: String, size: [Number, String], info: [Number, String], badge: [Number, String], color: String, tag: { type: String, default: "i" }, classPrefix: { type: String, default: it() } }; var rt = et(st) , ot = Object(l.a)("popup") , at = ot[0] , lt = ot[1] , ct = at({ mixins: [K()], props: { round: Boolean, duration: [Number, String], closeable: Boolean, transition: String, safeAreaInsetBottom: Boolean, closeIcon: { type: String, default: "cross" }, closeIconPosition: { type: String, default: "top-right" }, position: { type: String, default: "center" }, overlay: { type: Boolean, default: !0 }, closeOnClickOverlay: { type: Boolean, default: !0 } }, beforeCreate: function() { var t = this , e = function(e) { return function(i) { return t.$emit(e, i) } }; this.onClick = e("click"), this.onOpened = e("opened"), this.onClosed = e("closed") }, methods: { onClickCloseIcon: function(t) { this.$emit("click-close-icon", t), this.close() } }, render: function() { var t, e = arguments[0]; if (this.shouldRender) { var i = this.round , n = this.position , s = this.duration , r = "center" === n , o = this.transition || (r ? "van-fade" : "van-popup-slide-" + n) , a = {}; if (Object(m.c)(s)) { var l = r ? "animationDuration" : "transitionDuration"; a[l] = s + "s" } return e("transition", { attrs: { appear: this.transitionAppear, name: o }, on: { afterEnter: this.onOpened, afterLeave: this.onClosed } }, [e("div", { directives: [{ name: "show", value: this.value }], style: a, class: lt((t = { round: i }, t[n] = n, t["safe-area-inset-bottom"] = this.safeAreaInsetBottom, t)), on: { click: this.onClick } }, [this.slots(), this.closeable && e(rt, { attrs: { role: "button", tabindex: "0", name: this.closeIcon }, class: lt("close-icon", this.closeIconPosition), on: { click: this.onClickCloseIcon } })])]) } } }) , ut = Object(l.a)("loading") , ht = ut[0] , dt = ut[1]; function ft(t, e) { if ("spinner" === e.type) { for (var i = [], n = 0; n < 12; n++) i.push(t("i")); return i } return t("svg", { class: dt("circular"), attrs: { viewBox: "25 25 50 50" } }, [t("circle", { attrs: { cx: "50", cy: "50", r: "20", fill: "none" } })]) } function pt(t, e, i) { if (i.default) { var n, s = { fontSize: Object(Y.a)(e.textSize), color: null != (n = e.textColor) ? n : e.color }; return t("span", { class: dt("text"), style: s }, [i.default()]) } } function mt(t, e, i, n) { var s = e.color , o = e.size , a = e.type , l = { color: s }; if (o) { var c = Object(Y.a)(o); l.width = c, l.height = c } return t("div", r()([{ class: dt([a, { vertical: e.vertical }]) }, h(n, !0)]), [t("span", { class: dt("spinner", a), style: l }, [ft(t, e)]), pt(t, e, i)]) } mt.props = { color: String, size: [Number, String], vertical: Boolean, textSize: [Number, String], textColor: String, type: { type: String, default: "circular" } }; var vt = ht(mt) , gt = Object(l.a)("action-sheet") , bt = gt[0] , yt = gt[1]; function St(t, e, i, n) { var s = e.title , o = e.cancelText , l = e.closeable; function c() { d(n, "input", !1), d(n, "cancel") } return t(ct, r()([{ class: yt(), attrs: { position: "bottom", round: e.round, value: e.value, overlay: e.overlay, duration: e.duration, lazyRender: e.lazyRender, lockScroll: e.lockScroll, getContainer: e.getContainer, closeOnPopstate: e.closeOnPopstate, closeOnClickOverlay: e.closeOnClickOverlay, safeAreaInsetBottom: e.safeAreaInsetBottom } }, h(n, !0)]), [function() { if (s) return t("div", { class: yt("header") }, [s, l && t(rt, { attrs: { name: e.closeIcon }, class: yt("close"), on: { click: c } })]) }(), function() { var n = (null == i.description ? void 0 : i.description()) || e.description; if (n) return t("div", { class: yt("description") }, [n]) }(), t("div", { class: yt("content") }, [e.actions && e.actions.map((function(i, s) { var r = i.disabled , o = i.loading , l = i.callback; return t("button", { attrs: { type: "button" }, class: [yt("item", { disabled: r, loading: o }), i.className], style: { color: i.color }, on: { click: function(t) { t.stopPropagation(), r || o || (l && l(i), e.closeOnClickAction && d(n, "input", !1), a.a.nextTick((function() { d(n, "select", i, s) } ))) } } }, [o ? t(vt, { class: yt("loading-icon") }) : [t("span", { class: yt("name") }, [i.name]), i.subname && t("div", { class: yt("subname") }, [i.subname])]]) } )), null == i.default ? void 0 : i.default()]), function() { if (o) return [t("div", { class: yt("gap") }), t("button", { attrs: { type: "button" }, class: yt("cancel"), on: { click: c } }, [o])] }()]) } St.props = n({}, U, { title: String, actions: Array, duration: [Number, String], cancelText: String, description: String, getContainer: [String, Function], closeOnPopstate: Boolean, closeOnClickAction: Boolean, round: { type: Boolean, default: !0 }, closeable: { type: Boolean, default: !0 }, closeIcon: { type: String, default: "cross" }, safeAreaInsetBottom: { type: Boolean, default: !0 }, overlay: { type: Boolean, default: !0 }, closeOnClickOverlay: { type: Boolean, default: !0 } }); var kt = bt(St); function xt(t) { return t = t.replace(/[^-|\d]/g, ""), /^((\+86)|(86))?(1)\d{10}$/.test(t) || /^0[0-9-]{10,13}$/.test(t) } var wt = { title: String, loading: Boolean, readonly: Boolean, itemHeight: [Number, String], showToolbar: Boolean, cancelButtonText: String, confirmButtonText: String, allowHtml: { type: Boolean, default: !0 }, visibleItemCount: { type: [Number, String], default: 6 }, swipeDuration: { type: [Number, String], default: 1e3 } } , Ct = "#ee0a24" , Ot = "van-hairline" , Tt = Ot + "--top" , $t = Ot + "--bottom" , Bt = Ot + "--top-bottom"; function It(t) { if (!Object(m.c)(t)) return t; if (Array.isArray(t)) return t.map((function(t) { return It(t) } )); if ("object" == typeof t) { var e = {}; return Object.keys(t).forEach((function(i) { e[i] = It(t[i]) } )), e } return t } function Et(t, e, i) { return Math.min(Math.max(t, e), i) } function jt(t, e, i) { var n = t.indexOf(e) , s = ""; return -1 === n ? t : "-" === e && 0 !== n ? t.slice(0, n) : ("." === e && t.match(/^(\.|-\.)/) && (s = n ? "-0" : "0"), s + t.slice(0, n + 1) + t.slice(n).replace(i, "")) } function Dt(t, e, i) { void 0 === e && (e = !0), void 0 === i && (i = !0), t = e ? jt(t, ".", /\./g) : t.split(".")[0]; var n = e ? /[^-0-9.]/g : /[^-0-9]/g; return (t = i ? jt(t, "-", /-/g) : t.replace(/-/, "")).replace(n, "") } function Pt(t, e) { var i = Math.pow(10, 10); return Math.round((t + e) * i) / i } var Lt = Object(l.a)("picker-column") , Nt = Lt[0] , Mt = Lt[1]; function At(t) { var e = window.getComputedStyle(t) , i = e.transform || e.webkitTransform , n = i.slice(7, i.length - 1).split(", ")[5]; return Number(n) } function zt(t) { return Object(m.f)(t) && t.disabled } var Vt = m.b && "onwheel"in window , Rt = null , Ft = Nt({ mixins: [F], props: { valueKey: String, readonly: Boolean, allowHtml: Boolean, className: String, itemHeight: Number, defaultIndex: Number, swipeDuration: [Number, String], visibleItemCount: [Number, String], initialOptions: { type: Array, default: function() { return [] } } }, data: function() { return { offset: 0, duration: 0, options: It(this.initialOptions), currentIndex: this.defaultIndex } }, created: function() { this.$parent.children && this.$parent.children.push(this), this.setIndex(this.currentIndex) }, mounted: function() { this.bindTouchEvent(this.$el), Vt && b(this.$el, "wheel", this.onMouseWheel, !1) }, destroyed: function() { var t = this.$parent.children; t && t.splice(t.indexOf(this), 1), Vt && y(this.$el, "wheel") }, watch: { initialOptions: "setOptions", defaultIndex: function(t) { this.setIndex(t) } }, computed: { count: function() { return this.options.length }, baseOffset: function() { return this.itemHeight * (this.visibleItemCount - 1) / 2 } }, methods: { setOptions: function(t) { JSON.stringify(t) !== JSON.stringify(this.options) && (this.options = It(t), this.setIndex(this.defaultIndex)) }, onTouchStart: function(t) { if (!this.readonly) { if (this.touchStart(t), this.moving) { var e = At(this.$refs.wrapper); this.offset = Math.min(0, e - this.baseOffset), this.startOffset = this.offset } else this.startOffset = this.offset; this.duration = 0, this.transitionEndTrigger = null, this.touchStartTime = Date.now(), this.momentumOffset = this.startOffset } }, onTouchMove: function(t) { if (!this.readonly) { this.touchMove(t), "vertical" === this.direction && (this.moving = !0, k(t, !0)), this.offset = Et(this.startOffset + this.deltaY, -this.count * this.itemHeight, this.itemHeight); var e = Date.now(); e - this.touchStartTime > 300 && (this.touchStartTime = e, this.momentumOffset = this.offset) } }, onTouchEnd: function() { var t = this; if (!this.readonly) { var e = this.offset - this.momentumOffset , i = Date.now() - this.touchStartTime; if (i < 300 && Math.abs(e) > 15) this.momentum(e, i); else { var n = this.getIndexByOffset(this.offset); this.duration = 200, this.setIndex(n, !0), setTimeout((function() { t.moving = !1 } ), 0) } } }, onMouseWheel: function(t) { var e = this; if (!this.readonly) { k(t, !0); var i = At(this.$refs.wrapper); this.startOffset = Math.min(0, i - this.baseOffset), this.momentumOffset = this.startOffset, this.transitionEndTrigger = null; var n = t.deltaY; if (!(0 === this.startOffset && n < 0)) { var s = -n; this.offset = Et(this.startOffset + s, -this.count * this.itemHeight, this.itemHeight), Rt && clearTimeout(Rt), Rt = setTimeout((function() { e.onTouchEnd(), e.touchStartTime = 0 } ), 300) } } }, onTransitionEnd: function() { this.stopMomentum() }, onClickItem: function(t) { this.moving || this.readonly || (this.transitionEndTrigger = null, this.duration = 200, this.setIndex(t, !0)) }, adjustIndex: function(t) { for (var e = t = Et(t, 0, this.count); e < this.count; e++) if (!zt(this.options[e])) return e; for (var i = t - 1; i >= 0; i--) if (!zt(this.options[i])) return i }, getOptionText: function(t) { return Object(m.f)(t) && this.valueKey in t ? t[this.valueKey] : t }, setIndex: function(t, e) { var i = this , n = -(t = this.adjustIndex(t) || 0) * this.itemHeight , s = function() { t !== i.currentIndex && (i.currentIndex = t, e && i.$emit("change", t)) }; this.moving && n !== this.offset ? this.transitionEndTrigger = s : s(), this.offset = n }, setValue: function(t) { for (var e = this.options, i = 0; i < e.length; i++) if (this.getOptionText(e[i]) === t) return this.setIndex(i) }, getValue: function() { return this.options[this.currentIndex] }, getIndexByOffset: function(t) { return Et(Math.round(-t / this.itemHeight), 0, this.count - 1) }, momentum: function(t, e) { var i = Math.abs(t / e); t = this.offset + i / .003 * (t < 0 ? -1 : 1); var n = this.getIndexByOffset(t); this.duration = +this.swipeDuration, this.setIndex(n, !0) }, stopMomentum: function() { this.moving = !1, this.duration = 0, this.transitionEndTrigger && (this.transitionEndTrigger(), this.transitionEndTrigger = null) }, genOptions: function() { var t = this , e = this.$createElement , i = { height: this.itemHeight + "px" }; return this.options.map((function(n, s) { var o, a = t.getOptionText(n), l = zt(n), c = { style: i, attrs: { role: "button", tabindex: l ? -1 : 0 }, class: [Mt("item", { disabled: l, selected: s === t.currentIndex })], on: { click: function() { t.onClickItem(s) } } }, u = { class: "van-ellipsis", domProps: (o = {}, o[t.allowHtml ? "innerHTML" : "textContent"] = a, o) }; return e("li", r()([{}, c]), [t.slots("option", n) || e("div", r()([{}, u]))]) } )) } }, render: function() { var t = arguments[0] , e = { transform: "translate3d(0, " + (this.offset + this.baseOffset) + "px, 0)", transitionDuration: this.duration + "ms", transitionProperty: this.duration ? "all" : "none" }; return t("div", { class: [Mt(), this.className] }, [t("ul", { ref: "wrapper", style: e, class: Mt("wrapper"), on: { transitionend: this.onTransitionEnd } }, [this.genOptions()])]) } }) , Ht = Object(l.a)("picker") , _t = Ht[0] , Wt = Ht[1] , qt = Ht[2] , Ut = _t({ props: n({}, wt, { defaultIndex: { type: [Number, String], default: 0 }, columns: { type: Array, default: function() { return [] } }, toolbarPosition: { type: String, default: "top" }, valueKey: { type: String, default: "text" } }), data: function() { return { children: [], formattedColumns: [] } }, computed: { itemPxHeight: function() { return this.itemHeight ? Object(Y.b)(this.itemHeight) : 44 }, dataType: function() { var t = this.columns[0] || {}; return t.children ? "cascade" : t.values ? "object" : "text" } }, watch: { columns: { handler: "format", immediate: !0 } }, methods: { format: function() { var t = this.columns , e = this.dataType; "text" === e ? this.formattedColumns = [{ values: t }] : "cascade" === e ? this.formatCascade() : this.formattedColumns = t }, formatCascade: function() { for (var t = [], e = { children: this.columns }; e && e.children; ) { for (var i, n = e.children, s = null != (i = e.defaultIndex) ? i : +this.defaultIndex; n[s] && n[s].disabled; ) { if (!(s < n.length - 1)) { s = 0; break } s++ } t.push({ values: e.children, className: e.className, defaultIndex: s }), e = n[s] } this.formattedColumns = t }, emit: function(t) { var e = this; if ("text" === this.dataType) this.$emit(t, this.getColumnValue(0), this.getColumnIndex(0)); else { var i = this.getValues(); "cascade" === this.dataType && (i = i.map((function(t) { return t[e.valueKey] } ))), this.$emit(t, i, this.getIndexes()) } }, onCascadeChange: function(t) { for (var e = { children: this.columns }, i = this.getIndexes(), n = 0; n <= t; n++) e = e.children[i[n]]; for (; e && e.children; ) t++, this.setColumnValues(t, e.children), e = e.children[e.defaultIndex || 0] }, onChange: function(t) { var e = this; if ("cascade" === this.dataType && this.onCascadeChange(t), "text" === this.dataType) this.$emit("change", this, this.getColumnValue(0), this.getColumnIndex(0)); else { var i = this.getValues(); "cascade" === this.dataType && (i = i.map((function(t) { return t[e.valueKey] } ))), this.$emit("change", this, i, t) } }, getColumn: function(t) { return this.children[t] }, getColumnValue: function(t) { var e = this.getColumn(t); return e && e.getValue() }, setColumnValue: function(t, e) { var i = this.getColumn(t); i && (i.setValue(e), "cascade" === this.dataType && this.onCascadeChange(t)) }, getColumnIndex: function(t) { return (this.getColumn(t) || {}).currentIndex }, setColumnIndex: function(t, e) { var i = this.getColumn(t); i && (i.setIndex(e), "cascade" === this.dataType && this.onCascadeChange(t)) }, getColumnValues: function(t) { return (this.children[t] || {}).options }, setColumnValues: function(t, e) { var i = this.children[t]; i && i.setOptions(e) }, getValues: function() { return this.children.map((function(t) { return t.getValue() } )) }, setValues: function(t) { var e = this; t.forEach((function(t, i) { e.setColumnValue(i, t) } )) }, getIndexes: function() { return this.children.map((function(t) { return t.currentIndex } )) }, setIndexes: function(t) { var e = this; t.forEach((function(t, i) { e.setColumnIndex(i, t) } )) }, confirm: function() { this.children.forEach((function(t) { return t.stopMomentum() } )), this.emit("confirm") }, cancel: function() { this.emit("cancel") }, genTitle: function() { var t = this.$createElement , e = this.slots("title"); return e || (this.title ? t("div", { class: ["van-ellipsis", Wt("title")] }, [this.title]) : void 0) }, genCancel: function() { return (0, this.$createElement)("button", { attrs: { type: "button" }, class: Wt("cancel"), on: { click: this.cancel } }, [this.slots("cancel") || this.cancelButtonText || qt("cancel")]) }, genConfirm: function() { return (0, this.$createElement)("button", { attrs: { type: "button" }, class: Wt("confirm"), on: { click: this.confirm } }, [this.slots("confirm") || this.confirmButtonText || qt("confirm")]) }, genToolbar: function() { var t = this.$createElement; if (this.showToolbar) return t("div", { class: Wt("toolbar") }, [this.slots() || [this.genCancel(), this.genTitle(), this.genConfirm()]]) }, genColumns: function() { var t = this.$createElement , e = this.itemPxHeight , i = e * this.visibleItemCount , n = { height: e + "px" } , s = { height: i + "px" } , r = { backgroundSize: "100% " + (i - e) / 2 + "px" }; return t("div", { class: Wt("columns"), style: s, on: { touchmove: k } }, [this.genColumnItems(), t("div", { class: Wt("mask"), style: r }), t("div", { class: ["van-hairline-unset--top-bottom", Wt("frame")], style: n })]) }, genColumnItems: function() { var t = this , e = this.$createElement; return this.formattedColumns.map((function(i, n) { var s; return e(Ft, { attrs: { readonly: t.readonly, valueKey: t.valueKey, allowHtml: t.allowHtml, className: i.className, itemHeight: t.itemPxHeight, defaultIndex: null != (s = i.defaultIndex) ? s : +t.defaultIndex, swipeDuration: t.swipeDuration, visibleItemCount: t.visibleItemCount, initialOptions: i.values }, scopedSlots: { option: t.$scopedSlots.option }, on: { change: function() { t.onChange(n) } } }) } )) } }, render: function(t) { return t("div", { class: Wt() }, ["top" === this.toolbarPosition ? this.genToolbar() : t(), this.loading ? t(vt, { class: Wt("loading") }) : t(), this.slots("columns-top"), this.genColumns(), this.slots("columns-bottom"), "bottom" === this.toolbarPosition ? this.genToolbar() : t()]) } }) , Kt = Object(l.a)("area") , Yt = Kt[0] , Xt = Kt[1]; function Qt(t, e) { var i = t.$slots , n = t.$scopedSlots , s = {}; return e.forEach((function(t) { n[t] ? s[t] = n[t] : i[t] && (s[t] = function() { return i[t] } ) } )), s } var Gt = Yt({ props: n({}, wt, { value: String, areaList: { type: Object, default: function() { return {} } }, columnsNum: { type: [Number, String], default: 3 }, isOverseaCode: { type: Function, default: function(t) { return "9" === t[0] } }, columnsPlaceholder: { type: Array, default: function() { return [] } } }), data: function() { return { code: this.value, columns: [{ values: [] }, { values: [] }, { values: [] }] } }, computed: { province: function() { return this.areaList.province_list || {} }, city: function() { return this.areaList.city_list || {} }, county: function() { return this.areaList.county_list || {} }, displayColumns: function() { return this.columns.slice(0, +this.columnsNum) }, placeholderMap: function() { return { province: this.columnsPlaceholder[0] || "", city: this.columnsPlaceholder[1] || "", county: this.columnsPlaceholder[2] || "" } } }, watch: { value: function(t) { this.code = t, this.setValues() }, areaList: { deep: !0, handler: "setValues" }, columnsNum: function() { var t = this; this.$nextTick((function() { t.setValues() } )) } }, mounted: function() { this.setValues() }, methods: { getList: function(t, e) { var i = []; if ("province" !== t && !e) return i; var n = this[t]; if (i = Object.keys(n).map((function(t) { return { code: t, name: n[t] } } )), e && (this.isOverseaCode(e) && "city" === t && (e = "9"), i = i.filter((function(t) { return 0 === t.code.indexOf(e) } ))), this.placeholderMap[t] && i.length) { var s = ""; "city" === t ? s = "000000".slice(2, 4) : "county" === t && (s = "000000".slice(4, 6)), i.unshift({ code: "" + e + s, name: this.placeholderMap[t] }) } return i }, getIndex: function(t, e) { var i = "province" === t ? 2 : "city" === t ? 4 : 6 , n = this.getList(t, e.slice(0, i - 2)); this.isOverseaCode(e) && "province" === t && (i = 1), e = e.slice(0, i); for (var s = 0; s < n.length; s++) if (n[s].code.slice(0, i) === e) return s; return 0 }, parseOutputValues: function(t) { var e = this; return t.map((function(t, i) { return t ? ((t = JSON.parse(JSON.stringify(t))).code && t.name !== e.columnsPlaceholder[i] || (t.code = "", t.name = ""), t) : t } )) }, onChange: function(t, e, i) { this.code = e[i].code, this.setValues(); var n = this.parseOutputValues(t.getValues()); this.$emit("change", t, n, i) }, onConfirm: function(t, e) { t = this.parseOutputValues(t), this.setValues(), this.$emit("confirm", t, e) }, getDefaultCode: function() { if (this.columnsPlaceholder.length) return "000000"; var t = Object.keys(this.county); if (t[0]) return t[0]; var e = Object.keys(this.city); return e[0] ? e[0] : "" }, setValues: function() { var t = this.code; t || (t = this.getDefaultCode()); var e = this.$refs.picker , i = this.getList("province") , n = this.getList("city", t.slice(0, 2)); e && (e.setColumnValues(0, i), e.setColumnValues(1, n), n.length && "00" === t.slice(2, 4) && !this.isOverseaCode(t) && (t = n[0].code), e.setColumnValues(2, this.getList("county", t.slice(0, 4))), e.setIndexes([this.getIndex("province", t), this.getIndex("city", t), this.getIndex("county", t)])) }, getValues: function() { var t = this.$refs.picker , e = t ? t.getValues().filter((function(t) { return !!t } )) : []; return e = this.parseOutputValues(e), e }, getArea: function() { var t = this.getValues() , e = { code: "", country: "", province: "", city: "", county: "" }; if (!t.length) return e; var i = t.map((function(t) { return t.name } )) , n = t.filter((function(t) { return !!t.code } )); return e.code = n.length ? n[n.length - 1].code : "", this.isOverseaCode(e.code) ? (e.country = i[1] || "", e.province = i[2] || "") : (e.province = i[0] || "", e.city = i[1] || "", e.county = i[2] || ""), e }, reset: function(t) { this.code = t || "", this.setValues() } }, render: function() { var t = arguments[0] , e = n({}, this.$listeners, { change: this.onChange, confirm: this.onConfirm }); return t(Ut, { ref: "picker", class: Xt(), attrs: { showToolbar: !0, valueKey: "name", title: this.title, columns: this.displayColumns, loading: this.loading, readonly: this.readonly, itemHeight: this.itemHeight, swipeDuration: this.swipeDuration, visibleItemCount: this.visibleItemCount, cancelButtonText: this.cancelButtonText, confirmButtonText: this.confirmButtonText }, scopedSlots: Qt(this, ["title", "columns-top", "columns-bottom"]), on: n({}, e) }) } }); function Zt(t, e) { var i = e.to , n = e.url , s = e.replace; if (i && t) { var r = t[s ? "replace" : "push"](i); r && r.catch && r.catch((function(t) { if (t && !function(t) { return "NavigationDuplicated" === t.name || t.message && -1 !== t.message.indexOf("redundant navigation") }(t)) throw t } )) } else n && (s ? location.replace(n) : location.href = n) } function Jt(t) { Zt(t.parent && t.parent.$router, t.props) } var te = { url: String, replace: Boolean, to: [String, Object] } , ee = { icon: String, size: String, center: Boolean, isLink: Boolean, required: Boolean, iconPrefix: String, titleStyle: null, titleClass: null, valueClass: null, labelClass: null, title: [Number, String], value: [Number, String], label: [Number, String], arrowDirection: String, border: { type: Boolean, default: !0 }, clickable: { type: Boolean, default: null } } , ie = Object(l.a)("cell") , ne = ie[0] , se = ie[1]; function re(t, e, i, n) { var s, o = e.icon, a = e.size, l = e.title, c = e.label, u = e.value, f = e.isLink, p = i.title || Object(m.c)(l); function v() { if (i.label || Object(m.c)(c)) return t("div", { class: [se("label"), e.labelClass] }, [i.label ? i.label() : c]) } var g = null != (s = e.clickable) ? s : f , b = { clickable: g, center: e.center, required: e.required, borderless: !e.border }; return a && (b[a] = a), t("div", r()([{ class: se(b), attrs: { role: g ? "button" : null, tabindex: g ? 0 : null }, on: { click: function(t) { d(n, "click", t), Jt(n) } } }, h(n)]), [i.icon ? i.icon() : o ? t(rt, { class: se("left-icon"), attrs: { name: o, classPrefix: e.iconPrefix } }) : void 0, function() { if (p) return t("div", { class: [se("title"), e.titleClass], style: e.titleStyle }, [i.title ? i.title() : t("span", [l]), v()]) }(), function() { if (i.default || Object(m.c)(u)) return t("div", { class: [se("value", { alone: !p }), e.valueClass] }, [i.default ? i.default() : t("span", [u])]) }(), function() { var n = i["right-icon"]; if (n) return n(); if (f) { var s = e.arrowDirection; return t(rt, { class: se("right-icon"), attrs: { name: s ? "arrow-" + s : "arrow" } }) } }(), null == i.extra ? void 0 : i.extra()]) } re.props = n({}, ee, te); var oe = ne(re); var ae = !m.h && /ios|iphone|ipad|ipod/.test(navigator.userAgent.toLowerCase()); function le() { ae && V(z()) } var ce = Object(l.a)("field") , ue = ce[0] , he = ce[1] , de = ue({ inheritAttrs: !1, provide: function() { return { vanField: this } }, inject: { vanForm: { default: null } }, props: n({}, ee, { name: String, rules: Array, disabled: { type: Boolean, default: null }, readonly: { type: Boolean, default: null }, autosize: [Boolean, Object], leftIcon: String, rightIcon: String, clearable: Boolean, formatter: Function, maxlength: [Number, String], labelWidth: [Number, String], labelClass: null, labelAlign: String, inputAlign: String, placeholder: String, errorMessage: String, errorMessageAlign: String, showWordLimit: Boolean, value: { type: [Number, String], default: "" }, type: { type: String, default: "text" }, error: { type: Boolean, default: null }, colon: { type: Boolean, default: null }, clearTrigger: { type: String, default: "focus" }, formatTrigger: { type: String, default: "onChange" } }), data: function() { return { focused: !1, validateFailed: !1, validateMessage: "" } }, watch: { value: function() { this.updateValue(this.value), this.resetValidation(), this.validateWithTrigger("onChange"), this.$nextTick(this.adjustSize) } }, mounted: function() { this.updateValue(this.value, this.formatTrigger), this.$nextTick(this.adjustSize), this.vanForm && this.vanForm.addField(this) }, beforeDestroy: function() { this.vanForm && this.vanForm.removeField(this) }, computed: { showClear: function() { var t = this.getProp("readonly"); if (this.clearable && !t) { var e = Object(m.c)(this.value) && "" !== this.value , i = "always" === this.clearTrigger || "focus" === this.clearTrigger && this.focused; return e && i } }, showError: function() { return null !== this.error ? this.error : !!(this.vanForm && this.vanForm.showError && this.validateFailed) || void 0 }, listeners: function() { return n({}, this.$listeners, { blur: this.onBlur, focus: this.onFocus, input: this.onInput, click: this.onClickInput, keypress: this.onKeypress }) }, labelStyle: function() { var t = this.getProp("labelWidth"); if (t) return { width: Object(Y.a)(t) } }, formValue: function() { return this.children && (this.$scopedSlots.input || this.$slots.input) ? this.children.value : this.value } }, methods: { focus: function() { this.$refs.input && this.$refs.input.focus() }, blur: function() { this.$refs.input && this.$refs.input.blur() }, runValidator: function(t, e) { return new Promise((function(i) { var n = e.validator(t, e); if (Object(m.g)(n)) return n.then(i); i(n) } )) }, isEmptyValue: function(t) { return Array.isArray(t) ? !t.length : 0 !== t && !t }, runSyncRule: function(t, e) { return (!e.required || !this.isEmptyValue(t)) && !(e.pattern && !e.pattern.test(t)) }, getRuleMessage: function(t, e) { var i = e.message; return Object(m.e)(i) ? i(t, e) : i }, runRules: function(t) { var e = this; return t.reduce((function(t, i) { return t.then((function() { if (!e.validateFailed) { var t = e.formValue; return i.formatter && (t = i.formatter(t, i)), e.runSyncRule(t, i) ? i.validator ? e.runValidator(t, i).then((function(n) { !1 === n && (e.validateFailed = !0, e.validateMessage = e.getRuleMessage(t, i)) } )) : void 0 : (e.validateFailed = !0, void (e.validateMessage = e.getRuleMessage(t, i))) } } )) } ), Promise.resolve()) }, validate: function(t) { var e = this; return void 0 === t && (t = this.rules), new Promise((function(i) { t || i(), e.resetValidation(), e.runRules(t).then((function() { e.validateFailed ? i({ name: e.name, message: e.validateMessage }) : i() } )) } )) }, validateWithTrigger: function(t) { if (this.vanForm && this.rules) { var e = this.vanForm.validateTrigger === t , i = this.rules.filter((function(i) { return i.trigger ? i.trigger === t : e } )); i.length && this.validate(i) } }, resetValidation: function() { this.validateFailed && (this.validateFailed = !1, this.validateMessage = "") }, updateValue: function(t, e) { void 0 === e && (e = "onChange"), t = Object(m.c)(t) ? String(t) : ""; var i = this.maxlength; if (Object(m.c)(i) && t.length > i && (t = this.value && this.value.length === +i ? this.value : t.slice(0, i)), "number" === this.type || "digit" === this.type) { var n = "number" === this.type; t = Dt(t, n, n) } this.formatter && e === this.formatTrigger && (t = this.formatter(t)); var s = this.$refs.input; s && t !== s.value && (s.value = t), t !== this.value && this.$emit("input", t) }, onInput: function(t) { t.target.composing || this.updateValue(t.target.value) }, onFocus: function(t) { this.focused = !0, this.$emit("focus", t), this.$nextTick(this.adjustSize), this.getProp("readonly") && this.blur() }, onBlur: function(t) { this.getProp("readonly") || (this.focused = !1, this.updateValue(this.value, "onBlur"), this.$emit("blur", t), this.validateWithTrigger("onBlur"), this.$nextTick(this.adjustSize), le()) }, onClick: function(t) { this.$emit("click", t) }, onClickInput: function(t) { this.$emit("click-input", t) }, onClickLeftIcon: function(t) { this.$emit("click-left-icon", t) }, onClickRightIcon: function(t) { this.$emit("click-right-icon", t) }, onClear: function(t) { k(t), this.$emit("input", ""), this.$emit("clear", t) }, onKeypress: function(t) { 13 === t.keyCode && (this.getProp("submitOnEnter") || "textarea" === this.type || k(t), "search" === this.type && this.blur()); this.$emit("keypress", t) }, adjustSize: function() { var t = this.$refs.input; if ("textarea" === this.type && this.autosize && t) { var e = z(); t.style.height = "auto"; var i = t.scrollHeight; if (Object(m.f)(this.autosize)) { var n = this.autosize , s = n.maxHeight , r = n.minHeight; s && (i = Math.min(i, s)), r && (i = Math.max(i, r)) } i && (t.style.height = i + "px", V(e)) } }, genInput: function() { var t = this.$createElement , e = this.type , i = this.getProp("disabled") , s = this.getProp("readonly") , o = this.slots("input") , a = this.getProp("inputAlign"); if (o) return t("div", { class: he("control", [a, "custom"]), on: { click: this.onClickInput } }, [o]); var l = { ref: "input", class: he("control", a), domProps: { value: this.value }, attrs: n({}, this.$attrs, { name: this.name, disabled: i, readonly: s, placeholder: this.placeholder }), on: this.listeners, directives: [{ name: "model", value: this.value }] }; if ("textarea" === e) return t("textarea", r()([{}, l])); var c, u = e; return "number" === e && (u = "text", c = "decimal"), "digit" === e && (u = "tel", c = "numeric"), t("input", r()([{ attrs: { type: u, inputmode: c } }, l])) }, genLeftIcon: function() { var t = this.$createElement; if (this.slots("left-icon") || this.leftIcon) return t("div", { class: he("left-icon"), on: { click: this.onClickLeftIcon } }, [this.slots("left-icon") || t(rt, { attrs: { name: this.leftIcon, classPrefix: this.iconPrefix } })]) }, genRightIcon: function() { var t = this.$createElement , e = this.slots; if (e("right-icon") || this.rightIcon) return t("div", { class: he("right-icon"), on: { click: this.onClickRightIcon } }, [e("right-icon") || t(rt, { attrs: { name: this.rightIcon, classPrefix: this.iconPrefix } })]) }, genWordLimit: function() { var t = this.$createElement; if (this.showWordLimit && this.maxlength) { var e = (this.value || "").length; return t("div", { class: he("word-limit") }, [t("span", { class: he("word-num") }, [e]), "/", this.maxlength]) } }, genMessage: function() { var t = this.$createElement; if (!this.vanForm || !1 !== this.vanForm.showErrorMessage) { var e = this.errorMessage || this.validateMessage; if (e) { var i = this.getProp("errorMessageAlign"); return t("div", { class: he("error-message", i) }, [e]) } } }, getProp: function(t) { return Object(m.c)(this[t]) ? this[t] : this.vanForm && Object(m.c)(this.vanForm[t]) ? this.vanForm[t] : void 0 }, genLabel: function() { var t = this.$createElement , e = this.getProp("colon") ? ":" : ""; return this.slots("label") ? [this.slots("label"), e] : this.label ? t("span", [this.label + e]) : void 0 } }, render: function() { var t, e = arguments[0], i = this.slots, n = this.getProp("disabled"), s = this.getProp("labelAlign"), r = { icon: this.genLeftIcon }, o = this.genLabel(); o && (r.title = function() { return o } ); var a = this.slots("extra"); return a && (r.extra = function() { return a } ), e(oe, { attrs: { icon: this.leftIcon, size: this.size, center: this.center, border: this.border, isLink: this.isLink, required: this.required, clickable: this.clickable, titleStyle: this.labelStyle, valueClass: he("value"), titleClass: [he("label", s), this.labelClass], arrowDirection: this.arrowDirection }, scopedSlots: r, class: he((t = { error: this.showError, disabled: n }, t["label-" + s] = s, t["min-height"] = "textarea" === this.type && !this.autosize, t)), on: { click: this.onClick } }, [e("div", { class: he("body") }, [this.genInput(), this.showClear && e(rt, { attrs: { name: "clear" }, class: he("clear"), on: { touchstart: this.onClear } }), this.genRightIcon(), i("button") && e("div", { class: he("button") }, [i("button")])]), this.genWordLimit(), this.genMessage()]) } }) , fe = 0; var pe = Object(l.a)("toast") , me = pe[0] , ve = pe[1] , ge = me({ mixins: [K()], props: { icon: String, className: null, iconPrefix: String, loadingType: String, forbidClick: Boolean, closeOnClick: Boolean, message: [Number, String], type: { type: String, default: "text" }, position: { type: String, default: "middle" }, transition: { type: String, default: "van-fade" }, lockScroll: { type: Boolean, default: !1 } }, data: function() { return { clickable: !1 } }, mounted: function() { this.toggleClickable() }, destroyed: function() { this.toggleClickable() }, watch: { value: "toggleClickable", forbidClick: "toggleClickable" }, methods: { onClick: function() { this.closeOnClick && this.close() }, toggleClickable: function() { var t = this.value && this.forbidClick; this.clickable !== t && (this.clickable = t, t ? (fe || document.body.classList.add("van-toast--unclickable"), fe++) : --fe || document.body.classList.remove("van-toast--unclickable")) }, onAfterEnter: function() { this.$emit("opened"), this.onOpened && this.onOpened() }, onAfterLeave: function() { this.$emit("closed") }, genIcon: function() { var t = this.$createElement , e = this.icon , i = this.type , n = this.iconPrefix , s = this.loadingType; return e || "success" === i || "fail" === i ? t(rt, { class: ve("icon"), attrs: { classPrefix: n, name: e || i } }) : "loading" === i ? t(vt, { class: ve("loading"), attrs: { type: s } }) : void 0 }, genMessage: function() { var t = this.$createElement , e = this.type , i = this.message; if (Object(m.c)(i) && "" !== i) return "html" === e ? t("div", { class: ve("text"), domProps: { innerHTML: i } }) : t("div", { class: ve("text") }, [i]) } }, render: function() { var t, e = arguments[0]; return e("transition", { attrs: { name: this.transition }, on: { afterEnter: this.onAfterEnter, afterLeave: this.onAfterLeave } }, [e("div", { directives: [{ name: "show", value: this.value }], class: [ve([this.position, (t = {}, t[this.type] = !this.icon, t)]), this.className], on: { click: this.onClick } }, [this.genIcon(), this.genMessage()])]) } }) , be = { icon: "", type: "text", mask: !1, value: !0, message: "", className: "", overlay: !1, onClose: null, onOpened: null, duration: 2e3, iconPrefix: void 0, position: "middle", transition: "van-fade", forbidClick: !1, loadingType: void 0, getContainer: "body", overlayStyle: null, closeOnClick: !1, closeOnClickOverlay: !1 } , ye = {} , Se = [] , ke = !1 , xe = n({}, be); function we(t) { return Object(m.f)(t) ? t : { message: t } } function Ce() { if (m.h) return {}; if (!(Se = Se.filter((function(t) { return !t.$el.parentNode || (e = t.$el, document.body.contains(e)); var e } ))).length || ke) { var t = new (a.a.extend(ge))({ el: document.createElement("div") }); t.$on("input", (function(e) { t.value = e } )), Se.push(t) } return Se[Se.length - 1] } function Oe(t) { void 0 === t && (t = {}); var e = Ce(); return e.value && e.updateZIndex(), t = we(t), (t = n({}, xe, ye[t.type || xe.type], t)).clear = function() { e.value = !1, t.onClose && (t.onClose(), t.onClose = null), ke && !m.h && e.$on("closed", (function() { clearTimeout(e.timer), Se = Se.filter((function(t) { return t !== e } )), B(e.$el), e.$destroy() } )) } , n(e, function(t) { return n({}, t, { overlay: t.mask || t.overlay, mask: void 0, duration: void 0 }) }(t)), clearTimeout(e.timer), t.duration > 0 && (e.timer = setTimeout((function() { e.clear() } ), t.duration)), e } ["loading", "success", "fail"].forEach((function(t) { var e; Oe[t] = (e = t, function(t) { return Oe(n({ type: e }, we(t))) } ) } )), Oe.clear = function(t) { Se.length && (t ? (Se.forEach((function(t) { t.clear() } )), Se = []) : ke ? Se.shift().clear() : Se[0].clear()) } , Oe.setDefaultOptions = function(t, e) { "string" == typeof t ? ye[t] = e : n(xe, t) } , Oe.resetDefaultOptions = function(t) { "string" == typeof t ? ye[t] = null : (xe = n({}, be), ye = {}) } , Oe.allowMultiple = function(t) { void 0 === t && (t = !0), ke = t } , Oe.install = function() { a.a.use(ge) } , a.a.prototype.$toast = Oe; var Te = Oe , $e = Object(l.a)("button") , Be = $e[0] , Ie = $e[1]; function Ee(t, e, i, n) { var s, o = e.tag, a = e.icon, l = e.type, c = e.color, u = e.plain, f = e.disabled, p = e.loading, m = e.hairline, v = e.loadingText, g = e.iconPosition, b = {}; c && (b.color = u ? c : "white", u || (b.background = c), -1 !== c.indexOf("gradient") ? b.border = 0 : b.borderColor = c); var y, S, k = [Ie([l, e.size, { plain: u, loading: p, disabled: f, hairline: m, block: e.block, round: e.round, square: e.square }]), (s = {}, s["van-hairline--surround"] = m, s)]; function x() { return p ? i.loading ? i.loading() : t(vt, { class: Ie("loading"), attrs: { size: e.loadingSize, type: e.loadingType, color: "currentColor" } }) : i.icon ? t("div", { class: Ie("icon") }, [i.icon()]) : a ? t(rt, { attrs: { name: a, classPrefix: e.iconPrefix }, class: Ie("icon") }) : void 0 } return t(o, r()([{ style: b, class: k, attrs: { type: e.nativeType, disabled: f }, on: { click: function(t) { e.loading && t.preventDefault(), p || f || (d(n, "click", t), Jt(n)) }, touchstart: function(t) { d(n, "touchstart", t) } } }, h(n)]), [t("div", { class: Ie("content") }, [(S = [], "left" === g && S.push(x()), (y = p ? v : i.default ? i.default() : e.text) && S.push(t("span", { class: Ie("text") }, [y])), "right" === g && S.push(x()), S)])]) } Ee.props = n({}, te, { text: String, icon: String, color: String, block: Boolean, plain: Boolean, round: Boolean, square: Boolean, loading: Boolean, hairline: Boolean, disabled: Boolean, iconPrefix: String, nativeType: String, loadingText: String, loadingType: String, tag: { type: String, default: "button" }, type: { type: String, default: "default" }, size: { type: String, default: "normal" }, loadingSize: { type: String, default: "20px" }, iconPosition: { type: String, default: "left" } }); var je = Be(Ee); function De(t, e) { var i = e.$vnode.componentOptions; if (i && i.children) { var n = function(t) { var e = []; return function t(i) { i.forEach((function(i) { e.push(i), i.componentInstance && t(i.componentInstance.$children.map((function(t) { return t.$vnode } ))), i.children && t(i.children) } )) }(t), e }(i.children); t.sort((function(t, e) { return n.indexOf(t.$vnode) - n.indexOf(e.$vnode) } )) } } function Pe(t, e) { var i, n; void 0 === e && (e = {}); var s = e.indexKey || "index"; return { inject: (i = {}, i[t] = { default: null }, i), computed: (n = { parent: function() { return this.disableBindRelation ? null : this[t] } }, n[s] = function() { return this.bindRelation(), this.parent ? this.parent.children.indexOf(this) : null } , n), watch: { disableBindRelation: function(t) { t || this.bindRelation() } }, mounted: function() { this.bindRelation() }, beforeDestroy: function() { var t = this; this.parent && (this.parent.children = this.parent.children.filter((function(e) { return e !== t } ))) }, methods: { bindRelation: function() { if (this.parent && -1 === this.parent.children.indexOf(this)) { var t = [].concat(this.parent.children, [this]); De(t, this.parent), this.parent.children = t } } } } } function Le(t) { return { provide: function() { var e; return (e = {})[t] = this, e }, data: function() { return { children: [] } } } } var Ne, Me = Object(l.a)("goods-action"), Ae = Me[0], ze = Me[1], Ve = Ae({ mixins: [Le("vanGoodsAction")], props: { safeAreaInsetBottom: { type: Boolean, default: !0 } }, render: function() { var t = arguments[0]; return t("div", { class: ze({ unfit: !this.safeAreaInsetBottom }) }, [this.slots()]) } }), Re = Object(l.a)("goods-action-button"), Fe = Re[0], He = Re[1], _e = Fe({ mixins: [Pe("vanGoodsAction")], props: n({}, te, { type: String, text: String, icon: String, color: String, loading: Boolean, disabled: Boolean }), computed: { isFirst: function() { var t = this.parent && this.parent.children[this.index - 1]; return !t || t.$options.name !== this.$options.name }, isLast: function() { var t = this.parent && this.parent.children[this.index + 1]; return !t || t.$options.name !== this.$options.name } }, methods: { onClick: function(t) { this.$emit("click", t), Zt(this.$router, this) } }, render: function() { var t = arguments[0]; return t(je, { class: He([{ first: this.isFirst, last: this.isLast }, this.type]), attrs: { size: "large", type: this.type, icon: this.icon, color: this.color, loading: this.loading, disabled: this.disabled }, on: { click: this.onClick } }, [this.slots() || this.text]) } }), We = Object(l.a)("dialog"), qe = We[0], Ue = We[1], Ke = We[2], Ye = qe({ mixins: [K()], props: { title: String, theme: String, width: [Number, String], message: String, className: null, callback: Function, beforeClose: Function, messageAlign: String, cancelButtonText: String, cancelButtonColor: String, confirmButtonText: String, confirmButtonColor: String, showCancelButton: Boolean, overlay: { type: Boolean, default: !0 }, allowHtml: { type: Boolean, default: !0 }, transition: { type: String, default: "van-dialog-bounce" }, showConfirmButton: { type: Boolean, default: !0 }, closeOnPopstate: { 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.value && (this.beforeClose ? (this.loading[t] = !0, this.beforeClose(t, (function(i) { !1 !== i && e.loading[t] && e.onClose(t), e.loading.confirm = !1, e.loading.cancel = !1 } ))) : this.onClose(t)) }, onClose: function(t) { this.close(), this.callback && this.callback(t) }, onOpened: function() { var t = this; this.$emit("opened"), this.$nextTick((function() { var e; null == (e = t.$refs.dialog) || e.focus() } )) }, onClosed: function() { this.$emit("closed") }, onKeydown: function(t) { var e = this; if ("Escape" === t.key || "Enter" === t.key) { if (t.target !== this.$refs.dialog) return; ({ Enter: this.showConfirmButton ? function() { return e.handleAction("confirm") } : m.i, Escape: this.showCancelButton ? function() { return e.handleAction("cancel") } : m.i })[t.key](), this.$emit("keydown", t) } }, genRoundButtons: function() { var t = this , e = this.$createElement; return e(Ve, { class: Ue("footer") }, [this.showCancelButton && e(_e, { attrs: { size: "large", type: "warning", text: this.cancelButtonText || Ke("cancel"), color: this.cancelButtonColor, loading: this.loading.cancel }, class: Ue("cancel"), on: { click: function() { t.handleAction("cancel") } } }), this.showConfirmButton && e(_e, { attrs: { size: "large", type: "danger", text: this.confirmButtonText || Ke("confirm"), color: this.confirmButtonColor, loading: this.loading.confirm }, class: Ue("confirm"), on: { click: function() { t.handleAction("confirm") } } })]) }, genButtons: function() { var t, e = this, i = this.$createElement, n = this.showCancelButton && this.showConfirmButton; return i("div", { class: [Tt, Ue("footer")] }, [this.showCancelButton && i(je, { attrs: { size: "large", loading: this.loading.cancel, text: this.cancelButtonText || Ke("cancel"), nativeType: "button" }, class: Ue("cancel"), style: { color: this.cancelButtonColor }, on: { click: function() { e.handleAction("cancel") } } }), this.showConfirmButton && i(je, { attrs: { size: "large", loading: this.loading.confirm, text: this.confirmButtonText || Ke("confirm"), nativeType: "button" }, class: [Ue("confirm"), (t = {}, t["van-hairline--left"] = n, t)], style: { color: this.confirmButtonColor }, on: { click: function() { e.handleAction("confirm") } } })]) }, genContent: function(t, e) { var i = this.$createElement; if (e) return i("div", { class: Ue("content") }, [e]); var n = this.message , s = this.messageAlign; if (n) { var o, a, l = { class: Ue("message", (o = { "has-title": t }, o[s] = s, o)), domProps: (a = {}, a[this.allowHtml ? "innerHTML" : "textContent"] = n, a) }; return i("div", { class: Ue("content", { isolated: !t }) }, [i("div", r()([{}, l]))]) } } }, render: function() { var t = arguments[0]; if (this.shouldRender) { var e = this.message , i = this.slots() , n = this.slots("title") || this.title , s = n && t("div", { class: Ue("header", { isolated: !e && !i }) }, [n]); return t("transition", { attrs: { name: this.transition }, on: { afterEnter: this.onOpened, afterLeave: this.onClosed } }, [t("div", { directives: [{ name: "show", value: this.value }], attrs: { role: "dialog", "aria-labelledby": this.title || e, tabIndex: 0 }, class: [Ue([this.theme]), this.className], style: { width: Object(Y.a)(this.width) }, ref: "dialog", on: { keydown: this.onKeydown } }, [s, this.genContent(n, i), "round-button" === this.theme ? this.genRoundButtons() : this.genButtons()])]) } } }); function Xe(t) { return m.h ? Promise.resolve() : new Promise((function(e, i) { var s; Ne && (s = Ne.$el, document.body.contains(s)) || (Ne && Ne.$destroy(), (Ne = new (a.a.extend(Ye))({ el: document.createElement("div"), propsData: { lazyRender: !1 } })).$on("input", (function(t) { Ne.value = t } ))), n(Ne, Xe.currentOptions, t, { resolve: e, reject: i }) } )) } Xe.defaultOptions = { value: !0, title: "", width: "", theme: null, message: "", overlay: !0, className: "", allowHtml: !0, lockScroll: !0, transition: "van-dialog-bounce", beforeClose: null, overlayClass: "", overlayStyle: null, messageAlign: "", getContainer: "body", cancelButtonText: "", cancelButtonColor: null, confirmButtonText: "", confirmButtonColor: null, showConfirmButton: !0, showCancelButton: !1, closeOnPopstate: !0, closeOnClickOverlay: !1, callback: function(t) { Ne["confirm" === t ? "resolve" : "reject"](t) } }, Xe.alert = Xe, Xe.confirm = function(t) { return Xe(n({ showCancelButton: !0 }, t)) } , Xe.close = function() { Ne && (Ne.value = !1) } , Xe.setDefaultOptions = function(t) { n(Xe.currentOptions, t) } , Xe.resetDefaultOptions = function() { Xe.currentOptions = n({}, Xe.defaultOptions) } , Xe.resetDefaultOptions(), Xe.install = function() { a.a.use(Ye) } , Xe.Component = Ye, a.a.prototype.$dialog = Xe; var Qe = Xe , Ge = Object(l.a)("address-edit-detail") , Ze = Ge[0] , Je = Ge[1] , ti = Ge[2] , ei = !m.h && /android/.test(navigator.userAgent.toLowerCase()) , ii = Ze({ props: { value: String, errorMessage: String, focused: Boolean, detailRows: [Number, String], searchResult: Array, detailMaxlength: [Number, String], showSearchResult: Boolean }, computed: { shouldShowSearchResult: function() { return this.focused && this.searchResult && this.showSearchResult } }, methods: { onSelect: function(t) { this.$emit("select-search", t), this.$emit("input", ((t.address || "") + " " + (t.name || "")).trim()) }, onFinish: function() { this.$refs.field.blur() }, genFinish: function() { var t = this.$createElement; if (this.value && this.focused && ei) return t("div", { class: Je("finish"), on: { click: this.onFinish } }, [ti("complete")]) }, genSearchResult: function() { var t = this , e = this.$createElement , i = this.value , n = this.shouldShowSearchResult , s = this.searchResult; if (n) return s.map((function(n) { return e(oe, { key: n.name + n.address, attrs: { clickable: !0, border: !1, icon: "location-o", label: n.address }, class: Je("search-item"), on: { click: function() { t.onSelect(n) } }, scopedSlots: { title: function() { if (n.name) { var t = n.name.replace(i, "<span class=" + Je("keyword") + ">" + i + "</span>"); return e("div", { domProps: { innerHTML: t } }) } } } }) } )) } }, render: function() { var t = arguments[0]; return t(oe, { class: Je() }, [t(de, { attrs: { autosize: !0, rows: this.detailRows, clearable: !ei, type: "textarea", value: this.value, errorMessage: this.errorMessage, border: !this.shouldShowSearchResult, label: ti("label"), maxlength: this.detailMaxlength, placeholder: ti("placeholder") }, ref: "field", scopedSlots: { icon: this.genFinish }, on: n({}, this.$listeners) }), this.genSearchResult()]) } }) , ni = { size: [Number, String], value: null, loading: Boolean, disabled: Boolean, activeColor: String, inactiveColor: String, activeValue: { type: null, default: !0 }, inactiveValue: { type: null, default: !1 } } , si = { inject: { vanField: { default: null } }, watch: { value: function() { var t = this.vanField; t && (t.resetValidation(), t.validateWithTrigger("onChange")) } }, created: function() { var t = this.vanField; t && !t.children && (t.children = this) } } , ri = Object(l.a)("switch") , oi = ri[0] , ai = ri[1] , li = oi({ mixins: [si], props: ni, computed: { checked: function() { return this.value === this.activeValue }, style: function() { return { fontSize: Object(Y.a)(this.size), backgroundColor: this.checked ? this.activeColor : this.inactiveColor } } }, methods: { onClick: function(t) { if (this.$emit("click", t), !this.disabled && !this.loading) { var e = this.checked ? this.inactiveValue : this.activeValue; this.$emit("input", e), this.$emit("change", e) } }, genLoading: function() { var t = this.$createElement; if (this.loading) { var e = this.checked ? this.activeColor : this.inactiveColor; return t(vt, { class: ai("loading"), attrs: { color: e } }) } } }, render: function() { var t = arguments[0] , e = this.checked , i = this.loading , n = this.disabled; return t("div", { class: ai({ on: e, loading: i, disabled: n }), attrs: { role: "switch", "aria-checked": String(e) }, style: this.style, on: { click: this.onClick } }, [t("div", { class: ai("node") }, [this.genLoading()])]) } }) , ci = Object(l.a)("address-edit") , ui = ci[0] , hi = ci[1] , di = ci[2] , fi = { name: "", tel: "", country: "", province: "", city: "", county: "", areaCode: "", postalCode: "", addressDetail: "", isDefault: !1 }; var pi = ui({ props: { areaList: Object, isSaving: Boolean, isDeleting: Boolean, validator: Function, showDelete: Boolean, showPostal: Boolean, searchResult: Array, telMaxlength: [Number, String], showSetDefault: Boolean, saveButtonText: String, areaPlaceholder: String, deleteButtonText: String, showSearchResult: Boolean, showArea: { type: Boolean, default: !0 }, showDetail: { type: Boolean, default: !0 }, disableArea: Boolean, detailRows: { type: [Number, String], default: 1 }, detailMaxlength: { type: [Number, String], default: 200 }, addressInfo: { type: Object, default: function() { return n({}, fi) } }, telValidator: { type: Function, default: xt }, postalValidator: { type: Function, default: function(t) { return /^\d{6}$/.test(t) } }, areaColumnsPlaceholder: { type: Array, default: function() { return [] } } }, data: function() { return { data: {}, showAreaPopup: !1, detailFocused: !1, errorInfo: { tel: "", name: "", areaCode: "", postalCode: "", addressDetail: "" } } }, computed: { areaListLoaded: function() { return Object(m.f)(this.areaList) && Object.keys(this.areaList).length }, areaText: function() { var t = this.data , e = t.country , i = t.province , n = t.city , s = t.county; if (t.areaCode) { var r = [e, i, n, s]; return i && i === n && r.splice(1, 1), r.filter((function(t) { return t } )).join("/") } return "" }, hideBottomFields: function() { var t = this.searchResult; return t && t.length && this.detailFocused } }, watch: { addressInfo: { handler: function(t) { this.data = n({}, fi, t), this.setAreaCode(t.areaCode) }, deep: !0, immediate: !0 }, areaList: function() { this.setAreaCode(this.data.areaCode) } }, methods: { onFocus: function(t) { this.errorInfo[t] = "", this.detailFocused = "addressDetail" === t, this.$emit("focus", t) }, onChangeDetail: function(t) { this.data.addressDetail = t, this.$emit("change-detail", t) }, onAreaConfirm: function(t) { (t = t.filter((function(t) { return !!t } ))).some((function(t) { return !t.code } )) ? Te(di("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, n(this.data, e) } }, onSave: function() { var t = this , e = ["name", "tel"]; this.showArea && e.push("areaCode"), this.showDetail && e.push("addressDetail"), this.showPostal && e.push("postalCode"), e.every((function(e) { var i = t.getErrorMessage(e); return i && (t.errorInfo[e] = i), !i } )) && !this.isSaving && this.$emit("save", this.data) }, getErrorMessage: function(t) { var e = String(this.data[t] || "").trim(); if (this.validator) { var i = this.validator(t, e); if (i) return i } switch (t) { case "name": return e ? "" : di("nameEmpty"); case "tel": return this.telValidator(e) ? "" : di("telInvalid"); case "areaCode": return e ? "" : di("areaEmpty"); case "addressDetail": return e ? "" : di("addressEmpty"); case "postalCode": return e && !this.postalValidator(e) ? di("postalEmpty") : "" } }, onDelete: function() { var t = this; Qe.confirm({ title: di("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 } )) }, genSetDefaultCell: function(t) { var e = this; if (this.showSetDefault) { var i = { "right-icon": function() { return t(li, { attrs: { size: "24" }, on: { change: function(t) { e.$emit("change-default", t) } }, model: { value: e.data.isDefault, callback: function(t) { e.$set(e.data, "isDefault", t) } } }) } }; return t(oe, { directives: [{ name: "show", value: !this.hideBottomFields }], attrs: { center: !0, title: di("defaultAddress") }, class: hi("default"), scopedSlots: i }) } return t() } }, render: function(t) { var e = this , i = this.data , n = this.errorInfo , s = this.disableArea , r = this.hideBottomFields , o = function(t) { return function() { return e.onFocus(t) } }; return t("div", { class: hi() }, [t("div", { class: hi("fields") }, [t(de, { attrs: { clearable: !0, label: di("name"), placeholder: di("namePlaceholder"), errorMessage: n.name }, on: { focus: o("name") }, model: { value: i.name, callback: function(t) { e.$set(i, "name", t) } } }), t(de, { attrs: { clearable: !0, type: "tel", label: di("tel"), maxlength: this.telMaxlength, placeholder: di("telPlaceholder"), errorMessage: n.tel }, on: { focus: o("tel") }, model: { value: i.tel, callback: function(t) { e.$set(i, "tel", t) } } }), t(de, { directives: [{ name: "show", value: this.showArea }], attrs: { readonly: !0, clickable: !s, label: di("area"), placeholder: this.areaPlaceholder || di("areaPlaceholder"), errorMessage: n.areaCode, rightIcon: s ? null : "arrow", value: this.areaText }, on: { focus: o("areaCode"), click: function() { e.$emit("click-area"), e.showAreaPopup = !s } } }), t(ii, { directives: [{ name: "show", value: this.showDetail }], attrs: { focused: this.detailFocused, value: i.addressDetail, errorMessage: n.addressDetail, detailRows: this.detailRows, detailMaxlength: this.detailMaxlength, searchResult: this.searchResult, showSearchResult: this.showSearchResult }, on: { focus: o("addressDetail"), blur: this.onDetailBlur, input: this.onChangeDetail, "select-search": function(t) { e.$emit("select-search", t) } } }), this.showPostal && t(de, { directives: [{ name: "show", value: !r }], attrs: { type: "tel", maxlength: "6", label: di("postal"), placeholder: di("postal"), errorMessage: n.postalCode }, on: { focus: o("postalCode") }, model: { value: i.postalCode, callback: function(t) { e.$set(i, "postalCode", t) } } }), this.slots()]), this.genSetDefaultCell(t), t("div", { directives: [{ name: "show", value: !r }], class: hi("buttons") }, [t(je, { attrs: { block: !0, round: !0, loading: this.isSaving, type: "danger", text: this.saveButtonText || di("save") }, on: { click: this.onSave } }), this.showDelete && t(je, { attrs: { block: !0, round: !0, loading: this.isDeleting, text: this.deleteButtonText || di("delete") }, on: { click: this.onDelete } })]), t(ct, { attrs: { round: !0, position: "bottom", lazyRender: !1, getContainer: "body" }, model: { value: e.showAreaPopup, callback: function(t) { e.showAreaPopup = t } } }, [t(Gt, { ref: "area", attrs: { value: i.areaCode, loading: !this.areaListLoaded, areaList: this.areaList, columnsPlaceholder: this.areaColumnsPlaceholder }, on: { confirm: this.onAreaConfirm, cancel: function() { e.showAreaPopup = !1 } } })])]) } }) , mi = Object(l.a)("radio-group") , vi = mi[0] , gi = mi[1] , bi = vi({ mixins: [Le("vanRadio"), si], props: { value: null, disabled: Boolean, direction: String, checkedColor: String, iconSize: [Number, String] }, watch: { value: function(t) { this.$emit("change", t) } }, render: function() { var t = arguments[0]; return t("div", { class: gi([this.direction]), attrs: { role: "radiogroup" } }, [this.slots()]) } }) , yi = Object(l.a)("tag") , Si = yi[0] , ki = yi[1]; function xi(t, e, i, n) { var s, o = e.type, a = e.mark, l = e.plain, c = e.color, u = e.round, f = e.size, p = e.textColor, m = ((s = {})[l ? "color" : "backgroundColor"] = c, s); l ? (m.color = p || c, m.borderColor = c) : (m.color = p, m.background = c); var v = { mark: a, plain: l, round: u }; f && (v[f] = f); var g = e.closeable && t(rt, { attrs: { name: "cross" }, class: ki("close"), on: { click: function(t) { t.stopPropagation(), d(n, "close") } } }); return t("transition", { attrs: { name: e.closeable ? "van-fade" : null } }, [t("span", r()([{ key: "content", style: m, class: ki([v, o]) }, h(n, !0)]), [null == i.default ? void 0 : i.default(), g])]) } xi.props = { size: String, mark: Boolean, color: String, plain: Boolean, round: Boolean, textColor: String, closeable: Boolean, type: { type: String, default: "default" } }; var wi = Si(xi) , Ci = function(t) { var e = t.parent , i = t.bem , n = t.role; return { mixins: [Pe(e), si], props: { name: null, value: null, disabled: Boolean, iconSize: [Number, String], checkedColor: String, labelPosition: String, labelDisabled: Boolean, shape: { type: String, default: "round" }, bindGroup: { type: Boolean, default: !0 } }, computed: { disableBindRelation: function() { return !this.bindGroup }, isDisabled: function() { return this.parent && this.parent.disabled || this.disabled }, direction: function() { return this.parent && this.parent.direction || null }, iconStyle: function() { var t = this.checkedColor || this.parent && this.parent.checkedColor; if (t && this.checked && !this.isDisabled) return { borderColor: t, backgroundColor: t } }, tabindex: function() { return this.isDisabled || "radio" === n && !this.checked ? -1 : 0 } }, methods: { onClick: function(t) { var e = this , i = t.target , n = this.$refs.icon , s = n === i || (null == n ? void 0 : n.contains(i)); this.isDisabled || !s && this.labelDisabled ? this.$emit("click", t) : (this.toggle(), setTimeout((function() { e.$emit("click", t) } ))) }, genIcon: function() { var t = this.$createElement , e = this.checked , n = this.iconSize || this.parent && this.parent.iconSize; return t("div", { ref: "icon", class: i("icon", [this.shape, { disabled: this.isDisabled, checked: e }]), style: { fontSize: Object(Y.a)(n) } }, [this.slots("icon", { checked: e }) || t(rt, { attrs: { name: "success" }, style: this.iconStyle })]) }, genLabel: function() { var t = this.$createElement , e = this.slots(); if (e) return t("span", { class: i("label", [this.labelPosition, { disabled: this.isDisabled }]) }, [e]) } }, render: function() { var t = arguments[0] , e = [this.genIcon()]; return "left" === this.labelPosition ? e.unshift(this.genLabel()) : e.push(this.genLabel()), t("div", { attrs: { role: n, tabindex: this.tabindex, "aria-checked": String(this.checked) }, class: i([{ disabled: this.isDisabled, "label-disabled": this.labelDisabled }, this.direction]), on: { click: this.onClick } }, [e]) } } } , Oi = Object(l.a)("radio") , Ti = (0, Oi[0])({ mixins: [Ci({ bem: Oi[1], role: "radio", parent: "vanRadio" })], 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: { toggle: function() { this.currentValue = this.name } } }) , $i = Object(l.a)("address-item") , Bi = $i[0] , Ii = $i[1]; function Ei(t, e, i, s) { var o = e.disabled , a = e.switchable; return t("div", { class: Ii({ disabled: o }), on: { click: function() { a && d(s, "select"), d(s, "click") } } }, [t(oe, r()([{ attrs: { border: !1, valueClass: Ii("value") }, scopedSlots: { default: function() { var s = e.data , r = [t("div", { class: Ii("name") }, [s.name + " " + s.tel, i.tag ? i.tag(n({}, e.data)) : e.data.isDefault && e.defaultTagText ? t(wi, { attrs: { type: "danger", round: !0 }, class: Ii("tag") }, [e.defaultTagText]) : void 0]), t("div", { class: Ii("address") }, [s.address])]; return a && !o ? t(Ti, { attrs: { name: s.id, iconSize: 18 } }, [r]) : r }, "right-icon": function() { return t(rt, { attrs: { name: "edit" }, class: Ii("edit"), on: { click: function(t) { t.stopPropagation(), d(s, "edit"), d(s, "click") } } }) } } }, h(s)])), null == i.bottom ? void 0 : i.bottom(n({}, e.data, { disabled: o }))]) } Ei.props = { data: Object, disabled: Boolean, switchable: Boolean, defaultTagText: String }; var ji = Bi(Ei) , Di = Object(l.a)("address-list") , Pi = Di[0] , Li = Di[1] , Ni = Di[2]; function Mi(t, e, i, n) { function s(s, r) { if (s) return s.map((function(s, o) { return t(ji, { attrs: { data: s, disabled: r, switchable: e.switchable, defaultTagText: e.defaultTagText }, key: s.id, scopedSlots: { bottom: i["item-bottom"], tag: i.tag }, on: { select: function() { d(n, r ? "select-disabled" : "select", s, o), r || d(n, "input", s.id) }, edit: function() { d(n, r ? "edit-disabled" : "edit", s, o) }, click: function() { d(n, "click-item", s, o) } } }) } )) } var o = s(e.list) , a = s(e.disabledList, !0); return t("div", r()([{ class: Li() }, h(n)]), [null == i.top ? void 0 : i.top(), t(bi, { attrs: { value: e.value } }, [o]), e.disabledText && t("div", { class: Li("disabled-text") }, [e.disabledText]), a, null == i.default ? void 0 : i.default(), t("div", { class: Li("bottom") }, [t(je, { attrs: { round: !0, block: !0, type: "danger", text: e.addButtonText || Ni("add") }, class: Li("add"), on: { click: function() { d(n, "add") } } })])]) } Mi.props = { list: Array, value: [Number, String], disabledList: Array, disabledText: String, addButtonText: String, defaultTagText: String, switchable: { type: Boolean, default: !0 } }; var Ai = Pi(Mi) , zi = i(5) , Vi = Object(l.a)("badge") , Ri = Vi[0] , Fi = Vi[1] , Hi = Ri({ props: { dot: Boolean, max: [Number, String], color: String, content: [Number, String], tag: { type: String, default: "div" } }, methods: { hasContent: function() { return !!(this.$scopedSlots.content || Object(m.c)(this.content) && "" !== this.content) }, renderContent: function() { var t = this.dot , e = this.max , i = this.content; if (!t && this.hasContent()) return this.$scopedSlots.content ? this.$scopedSlots.content() : Object(m.c)(e) && Object(zi.b)(i) && +i > e ? e + "+" : i }, renderBadge: function() { var t = this.$createElement; if (this.hasContent() || this.dot) return t("div", { class: Fi({ dot: this.dot, fixed: !!this.$scopedSlots.default }), style: { background: this.color } }, [this.renderContent()]) } }, render: function() { var t = arguments[0]; if (this.$scopedSlots.default) { var e = this.tag; return t(e, { class: Fi("wrapper") }, [this.$scopedSlots.default(), this.renderBadge()]) } return this.renderBadge() } }) , _i = i(4); function Wi(t) { return "[object Date]" === Object.prototype.toString.call(t) && !Object(zi.a)(t.getTime()) } var qi = Object(l.a)("calendar") , Ui = qi[0] , Ki = qi[1] , Yi = qi[2]; function Xi(t, e) { var i = t.getFullYear() , n = e.getFullYear() , s = t.getMonth() , r = e.getMonth(); return i === n ? s === r ? 0 : s > r ? 1 : -1 : i > n ? 1 : -1 } function Qi(t, e) { var i = Xi(t, e); if (0 === i) { var n = t.getDate() , s = e.getDate(); return n === s ? 0 : n > s ? 1 : -1 } return i } function Gi(t, e) { return (t = new Date(t)).setDate(t.getDate() + e), t } function Zi(t) { return Gi(t, 1) } function Ji(t) { return new Date(t) } function tn(t) { return Array.isArray(t) ? t.map((function(t) { return null === t ? t : Ji(t) } )) : Ji(t) } function en(t) { if (!t) return 0; for (; Object(zi.a)(parseInt(t, 10)); ) { if (!(t.length > 1)) return 0; t = t.slice(1) } return parseInt(t, 10) } function nn(t, e) { return 32 - new Date(t,e - 1,32).getDate() } var sn = (0, Object(l.a)("calendar-month")[0])({ props: { date: Date, type: String, color: String, minDate: Date, maxDate: Date, showMark: Boolean, rowHeight: [Number, String], formatter: Function, lazyRender: Boolean, currentDate: [Date, Array], allowSameDay: Boolean, showSubtitle: Boolean, showMonthTitle: Boolean, firstDayOfWeek: Number }, data: function() { return { visible: !1 } }, computed: { title: function() { return t = this.date, Yi("monthTitle", t.getFullYear(), t.getMonth() + 1); var t }, rowHeightWithUnit: function() { return Object(Y.a)(this.rowHeight) }, offset: function() { var t = this.firstDayOfWeek , e = this.date.getDay(); return t ? (e + 7 - this.firstDayOfWeek) % 7 : e }, totalDay: function() { return nn(this.date.getFullYear(), this.date.getMonth() + 1) }, shouldRender: function() { return this.visible || !this.lazyRender }, placeholders: function() { for (var t = [], e = Math.ceil((this.totalDay + this.offset) / 7), i = 1; i <= e; i++) t.push({ type: "placeholder" }); return t }, days: function() { for (var t = [], e = this.date.getFullYear(), i = this.date.getMonth(), n = 1; n <= this.totalDay; n++) { var s = new Date(e,i,n) , r = this.getDayType(s) , o = { date: s, type: r, text: n, bottomInfo: this.getBottomInfo(r) }; this.formatter && (o = this.formatter(o)), t.push(o) } return t } }, methods: { getHeight: function() { var t; return (null == (t = this.$el) ? void 0 : t.getBoundingClientRect().height) || 0 }, scrollIntoView: function(t) { var e = this.$refs , i = e.days , n = e.month , s = (this.showSubtitle ? i : n).getBoundingClientRect().top - t.getBoundingClientRect().top + t.scrollTop; A(t, s) }, getMultipleDayType: function(t) { var e = this , i = function(t) { return e.currentDate.some((function(e) { return 0 === Qi(e, t) } )) }; if (i(t)) { var n = Gi(t, -1) , s = Zi(t) , r = i(n) , o = i(s); return r && o ? "multiple-middle" : r ? "end" : o ? "start" : "multiple-selected" } return "" }, getRangeDayType: function(t) { var e = this.currentDate , i = e[0] , n = e[1]; if (!i) return ""; var s = Qi(t, i); if (!n) return 0 === s ? "start" : ""; var r = Qi(t, n); return 0 === s && 0 === r && this.allowSameDay ? "start-end" : 0 === s ? "start" : 0 === r ? "end" : s > 0 && r < 0 ? "middle" : void 0 }, getDayType: function(t) { var e = this.type , i = this.minDate , n = this.maxDate , s = this.currentDate; return Qi(t, i) < 0 || Qi(t, n) > 0 ? "disabled" : null !== s ? "single" === e ? 0 === Qi(t, s) ? "selected" : "" : "multiple" === e ? this.getMultipleDayType(t) : "range" === e ? this.getRangeDayType(t) : void 0 : void 0 }, getBottomInfo: function(t) { if ("range" === this.type) { if ("start" === t || "end" === t) return Yi(t); if ("start-end" === t) return Yi("startEnd") } }, getDayStyle: function(t, e) { var i = { height: this.rowHeightWithUnit }; return "placeholder" === t ? (i.width = "100%", i) : (0 === e && (i.marginLeft = 100 * this.offset / 7 + "%"), this.color && ("start" === t || "end" === t || "start-end" === t || "multiple-selected" === t || "multiple-middle" === t ? i.background = this.color : "middle" === t && (i.color = this.color)), i) }, genTitle: function() { var t = this.$createElement; if (this.showMonthTitle) return t("div", { class: Ki("month-title") }, [this.title]) }, genMark: function() { var t = this.$createElement; if (this.showMark && this.shouldRender) return t("div", { class: Ki("month-mark") }, [this.date.getMonth() + 1]) }, genDays: function() { var t = this.$createElement , e = this.shouldRender ? this.days : this.placeholders; return t("div", { ref: "days", attrs: { role: "grid" }, class: Ki("days") }, [this.genMark(), e.map(this.genDay)]) }, genTopInfo: function(t) { var e = this.$createElement , i = this.$scopedSlots["top-info"]; if (t.topInfo || i) return e("div", { class: Ki("top-info") }, [i ? i(t) : t.topInfo]) }, genBottomInfo: function(t) { var e = this.$createElement , i = this.$scopedSlots["bottom-info"]; if (t.bottomInfo || i) return e("div", { class: Ki("bottom-info") }, [i ? i(t) : t.bottomInfo]) }, genDay: function(t, e) { var i = this , n = this.$createElement , s = t.type , r = this.getDayStyle(s, e) , o = "disabled" === s , a = function() { o || i.$emit("click", t) }; return "selected" === s ? n("div", { attrs: { role: "gridcell", tabindex: -1 }, style: r, class: [Ki("day"), t.className], on: { click: a } }, [n("div", { class: Ki("selected-day"), style: { width: this.rowHeightWithUnit, height: this.rowHeightWithUnit, background: this.color } }, [this.genTopInfo(t), t.text, this.genBottomInfo(t)])]) : n("div", { attrs: { role: "gridcell", tabindex: o ? null : -1 }, style: r, class: [Ki("day", s), t.className], on: { click: a } }, [this.genTopInfo(t), t.text, this.genBottomInfo(t)]) } }, render: function() { var t = arguments[0]; return t("div", { class: Ki("month"), ref: "month" }, [this.genTitle(), this.genDays()]) } }) , rn = (0, Object(l.a)("calendar-header")[0])({ props: { title: String, subtitle: String, showTitle: Boolean, showSubtitle: Boolean, firstDayOfWeek: Number }, methods: { genTitle: function() { var t = this.$createElement; if (this.showTitle) { var e = this.slots("title") || this.title || Yi("title"); return t("div", { class: Ki("header-title") }, [e]) } }, genSubtitle: function() { var t = this.$createElement; if (this.showSubtitle) return t("div", { class: Ki("header-subtitle") }, [this.subtitle]) }, genWeekDays: function() { var t = this.$createElement , e = Yi("weekdays") , i = this.firstDayOfWeek , n = [].concat(e.slice(i, 7), e.slice(0, i)); return t("div", { class: Ki("weekdays") }, [n.map((function(e) { return t("span", { class: Ki("weekday") }, [e]) } ))]) } }, render: function() { var t = arguments[0]; return t("div", { class: Ki("header") }, [this.genTitle(), this.genSubtitle(), this.genWeekDays()]) } }) , on = Ui({ props: { title: String, color: String, value: Boolean, readonly: Boolean, formatter: Function, rowHeight: [Number, String], confirmText: String, rangePrompt: String, defaultDate: [Date, Array], getContainer: [String, Function], allowSameDay: Boolean, confirmDisabledText: String, type: { type: String, default: "single" }, round: { type: Boolean, default: !0 }, position: { type: String, default: "bottom" }, poppable: { type: Boolean, default: !0 }, maxRange: { type: [Number, String], default: null }, lazyRender: { type: Boolean, default: !0 }, showMark: { type: Boolean, default: !0 }, showTitle: { type: Boolean, default: !0 }, showConfirm: { type: Boolean, default: !0 }, showSubtitle: { type: Boolean, default: !0 }, closeOnPopstate: { type: Boolean, default: !0 }, closeOnClickOverlay: { type: Boolean, default: !0 }, safeAreaInsetBottom: { type: Boolean, default: !0 }, minDate: { type: Date, validator: Wi, default: function() { return new Date } }, maxDate: { type: Date, validator: Wi, default: function() { var t = new Date; return new Date(t.getFullYear(),t.getMonth() + 6,t.getDate()) } }, firstDayOfWeek: { type: [Number, String], default: 0, validator: function(t) { return t >= 0 && t <= 6 } } }, inject: { vanPopup: { default: null } }, data: function() { return { subtitle: "", currentDate: this.getInitialDate() } }, computed: { months: function() { var t = [] , e = new Date(this.minDate); e.setDate(1); do { t.push(new Date(e)), e.setMonth(e.getMonth() + 1) } while (1 !== Xi(e, this.maxDate)); return t }, buttonDisabled: function() { var t = this.type , e = this.currentDate; if (e) { if ("range" === t) return !e[0] || !e[1]; if ("multiple" === t) return !e.length } return !e }, dayOffset: function() { return this.firstDayOfWeek ? this.firstDayOfWeek % 7 : 0 } }, watch: { value: "init", type: function() { this.reset() }, defaultDate: function(t) { this.currentDate = t, this.scrollIntoView() } }, mounted: function() { var t; (this.init(), this.poppable) || (null == (t = this.vanPopup) || t.$on("opened", this.onScroll)) }, activated: function() { this.init() }, methods: { reset: function(t) { void 0 === t && (t = this.getInitialDate()), this.currentDate = t, this.scrollIntoView() }, init: function() { var t = this; this.poppable && !this.value || this.$nextTick((function() { t.bodyHeight = Math.floor(t.$refs.body.getBoundingClientRect().height), t.onScroll(), t.scrollIntoView() } )) }, scrollToDate: function(t) { var e = this; Object(_i.c)((function() { var i = e.value || !e.poppable; t && i && (e.months.some((function(i, n) { if (0 === Xi(i, t)) { var s = e.$refs , r = s.body; return s.months[n].scrollIntoView(r), !0 } return !1 } )), e.onScroll()) } )) }, scrollIntoView: function() { var t = this.currentDate; if (t) { var e = "single" === this.type ? t : t[0]; this.scrollToDate(e) } }, getInitialDate: function() { var t = this.type , e = this.minDate , i = this.maxDate , n = this.defaultDate; if (null === n) return n; var s = new Date; if (-1 === Qi(s, e) ? s = e : 1 === Qi(s, i) && (s = i), "range" === t) { var r = n || []; return [r[0] || s, r[1] || Zi(s)] } return "multiple" === t ? n || [s] : n || s }, onScroll: function() { var t = this.$refs , e = t.body , i = t.months , n = M(e) , s = n + this.bodyHeight , r = i.map((function(t) { return t.getHeight() } )); if (!(s > r.reduce((function(t, e) { return t + e } ), 0) && n > 0)) { for (var o, a = 0, l = [-1, -1], c = 0; c < i.length; c++) { a <= s && a + r[c] >= n && (l[1] = c, o || (o = i[c], l[0] = c), i[c].showed || (i[c].showed = !0, this.$emit("month-show", { date: i[c].date, title: i[c].title }))), a += r[c] } i.forEach((function(t, e) { t.visible = e >= l[0] - 1 && e <= l[1] + 1 } )), o && (this.subtitle = o.title) } }, onClickDay: function(t) { if (!this.readonly) { var e = t.date , i = this.type , n = this.currentDate; if ("range" === i) { if (!n) return void this.select([e, null]); var s = n[0] , r = n[1]; if (s && !r) { var o = Qi(e, s); 1 === o ? this.select([s, e], !0) : -1 === o ? this.select([e, null]) : this.allowSameDay && this.select([e, e], !0) } else this.select([e, null]) } else if ("multiple" === i) { if (!n) return void this.select([e]); var a; if (this.currentDate.some((function(t, i) { var n = 0 === Qi(t, e); return n && (a = i), n } ))) { var l = n.splice(a, 1)[0]; this.$emit("unselect", Ji(l)) } else this.maxRange && n.length >= this.maxRange ? Te(this.rangePrompt || Yi("rangePrompt", this.maxRange)) : this.select([].concat(n, [e])) } else this.select(e, !0) } }, togglePopup: function(t) { this.$emit("input", t) }, select: function(t, e) { var i = this , n = function(t) { i.currentDate = t, i.$emit("select", tn(i.currentDate)) }; if (e && "range" === this.type && !this.checkRange(t)) return void (this.showConfirm ? n([t[0], Gi(t[0], this.maxRange - 1)]) : n(t)); n(t), e && !this.showConfirm && this.onConfirm() }, checkRange: function(t) { var e = this.maxRange , i = this.rangePrompt; return !(e && function(t) { var e = t[0].getTime(); return (t[1].getTime() - e) / 864e5 + 1 }(t) > e) || (Te(i || Yi("rangePrompt", e)), !1) }, onConfirm: function() { this.$emit("confirm", tn(this.currentDate)) }, genMonth: function(t, e) { var i = this.$createElement , n = 0 !== e || !this.showSubtitle; return i(sn, { ref: "months", refInFor: !0, attrs: { date: t, type: this.type, color: this.color, minDate: this.minDate, maxDate: this.maxDate, showMark: this.showMark, formatter: this.formatter, rowHeight: this.rowHeight, lazyRender: this.lazyRender, currentDate: this.currentDate, showSubtitle: this.showSubtitle, allowSameDay: this.allowSameDay, showMonthTitle: n, firstDayOfWeek: this.dayOffset }, scopedSlots: { "top-info": this.$scopedSlots["top-info"], "bottom-info": this.$scopedSlots["bottom-info"] }, on: { click: this.onClickDay } }) }, genFooterContent: function() { var t = this.$createElement , e = this.slots("footer"); if (e) return e; if (this.showConfirm) { var i = this.buttonDisabled ? this.confirmDisabledText : this.confirmText; return t(je, { attrs: { round: !0, block: !0, type: "danger", color: this.color, disabled: this.buttonDisabled, nativeType: "button" }, class: Ki("confirm"), on: { click: this.onConfirm } }, [i || Yi("confirm")]) } }, genFooter: function() { return (0, this.$createElement)("div", { class: Ki("footer", { unfit: !this.safeAreaInsetBottom }) }, [this.genFooterContent()]) }, genCalendar: function() { var t = this , e = this.$createElement; return e("div", { class: Ki() }, [e(rn, { attrs: { title: this.title, showTitle: this.showTitle, subtitle: this.subtitle, showSubtitle: this.showSubtitle, firstDayOfWeek: this.dayOffset }, scopedSlots: { title: function() { return t.slots("title") } } }), e("div", { ref: "body", class: Ki("body"), on: { scroll: this.onScroll } }, [this.months.map(this.genMonth)]), this.genFooter()]) } }, render: function() { var t = this , e = arguments[0]; if (this.poppable) { var i, n = function(e) { return function() { return t.$emit(e) } }; return e(ct, { attrs: (i = { round: !0, value: this.value }, i.round = this.round, i.position = this.position, i.closeable = this.showTitle || this.showSubtitle, i.getContainer = this.getContainer, i.closeOnPopstate = this.closeOnPopstate, i.closeOnClickOverlay = this.closeOnClickOverlay, i), class: Ki("popup"), on: { input: this.togglePopup, open: n("open"), opened: n("opened"), close: n("close"), closed: n("closed") } }, [this.genCalendar()]) } return this.genCalendar() } }) , an = Object(l.a)("image") , ln = an[0] , cn = an[1] , un = ln({ props: { src: String, fit: String, alt: String, round: Boolean, width: [Number, String], height: [Number, String], radius: [Number, String], lazyLoad: Boolean, iconPrefix: String, showError: { type: Boolean, default: !0 }, showLoading: { type: Boolean, default: !0 }, errorIcon: { type: String, default: "photo-fail" }, loadingIcon: { type: String, default: "photo" } }, data: function() { return { loading: !0, error: !1 } }, watch: { src: function() { this.loading = !0, this.error = !1 } }, computed: { style: function() { var t = {}; return Object(m.c)(this.width) && (t.width = Object(Y.a)(this.width)), Object(m.c)(this.height) && (t.height = Object(Y.a)(this.height)), Object(m.c)(this.radius) && (t.overflow = "hidden", t.borderRadius = Object(Y.a)(this.radius)), t } }, created: function() { var t = this.$Lazyload; t && m.b && (t.$on("loaded", this.onLazyLoaded), t.$on("error", this.onLazyLoadError)) }, beforeDestroy: function() { var t = this.$Lazyload; t && (t.$off("loaded", this.onLazyLoaded), t.$off("error", this.onLazyLoadError)) }, methods: { onLoad: function(t) { this.loading = !1, this.$emit("load", t) }, onLazyLoaded: function(t) { t.el === this.$refs.image && this.loading && this.onLoad() }, onLazyLoadError: function(t) { t.el !== this.$refs.image || this.error || this.onError() }, onError: function(t) { this.error = !0, this.loading = !1, this.$emit("error", t) }, onClick: function(t) { this.$emit("click", t) }, genPlaceholder: function() { var t = this.$createElement; return this.loading && this.showLoading ? t("div", { class: cn("loading") }, [this.slots("loading") || t(rt, { attrs: { name: this.loadingIcon, classPrefix: this.iconPrefix }, class: cn("loading-icon") })]) : this.error && this.showError ? t("div", { class: cn("error") }, [this.slots("error") || t(rt, { attrs: { name: this.errorIcon, classPrefix: this.iconPrefix }, class: cn("error-icon") })]) : void 0 }, genImage: function() { var t = this.$createElement , e = { class: cn("img"), attrs: { alt: this.alt }, style: { objectFit: this.fit } }; if (!this.error) return this.lazyLoad ? t("img", r()([{ ref: "image", directives: [{ name: "lazy", value: this.src }] }, e])) : t("img", r()([{ attrs: { src: this.src }, on: { load: this.onLoad, error: this.onError } }, e])) } }, render: function() { var t = arguments[0]; return t("div", { class: cn({ round: this.round }), style: this.style, on: { click: this.onClick } }, [this.genImage(), this.genPlaceholder(), this.slots()]) } }) , hn = Object(l.a)("card") , dn = hn[0] , fn = hn[1]; function pn(t, e, i, n) { var s, o = e.thumb, a = i.num || Object(m.c)(e.num), l = i.price || Object(m.c)(e.price), c = i["origin-price"] || Object(m.c)(e.originPrice), u = a || l || c || i.bottom; function f(t) { d(n, "click-thumb", t) } function p() { if (i.tag || e.tag) return t("div", { class: fn("tag") }, [i.tag ? i.tag() : t(wi, { attrs: { mark: !0, type: "danger" } }, [e.tag])]) } return t("div", r()([{ class: fn() }, h(n, !0)]), [t("div", { class: fn("header") }, [function() { if (i.thumb || o) return t("a", { attrs: { href: e.thumbLink }, class: fn("thumb"), on: { click: f } }, [i.thumb ? i.thumb() : t(un, { attrs: { src: o, width: "100%", height: "100%", fit: "cover", "lazy-load": e.lazyLoad } }), p()]) }(), t("div", { class: fn("content", { centered: e.centered }) }, [t("div", [i.title ? i.title() : e.title ? t("div", { class: [fn("title"), "van-multi-ellipsis--l2"] }, [e.title]) : void 0, i.desc ? i.desc() : e.desc ? t("div", { class: [fn("desc"), "van-ellipsis"] }, [e.desc]) : void 0, null == i.tags ? void 0 : i.tags()]), u && t("div", { class: "van-card__bottom" }, [null == (s = i["price-top"]) ? void 0 : s.call(i), function() { if (l) return t("div", { class: fn("price") }, [i.price ? i.price() : (n = e.price.toString().split("."), t("div", [t("span", { class: fn("price-currency") }, [e.currency]), t("span", { class: fn("price-integer") }, [n[0]]), ".", t("span", { class: fn("price-decimal") }, [n[1]])]))]); var n }(), function() { if (c) { var n = i["origin-price"]; return t("div", { class: fn("origin-price") }, [n ? n() : e.currency + " " + e.originPrice]) } }(), function() { if (a) return t("div", { class: fn("num") }, [i.num ? i.num() : "x" + e.num]) }(), null == i.bottom ? void 0 : i.bottom()])])]), function() { if (i.footer) return t("div", { class: fn("footer") }, [i.footer()]) }()]) } pn.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 mn = dn(pn) , vn = Object(l.a)("tab") , gn = vn[0] , bn = vn[1] , yn = gn({ mixins: [Pe("vanTabs")], props: n({}, te, { dot: Boolean, name: [Number, String], info: [Number, String], badge: [Number, String], title: String, titleStyle: null, titleClass: null, disabled: Boolean }), data: function() { return { inited: !1 } }, computed: { computedName: function() { var t; return null != (t = this.name) ? t : this.index }, isActive: function() { var t = this.computedName === this.parent.currentName; return t && (this.inited = !0), t } }, watch: { title: function() { this.parent.setLine(), this.parent.scrollIntoView() }, inited: function(t) { var e = this; this.parent.lazyRender && t && this.$nextTick((function() { e.parent.$emit("rendered", e.computedName, e.title) } )) } }, render: function(t) { var e = this.slots , i = this.parent , n = this.isActive , s = e(); if (s || i.animated) { var r = i.scrollspy || n , o = this.inited || i.scrollspy || !i.lazyRender ? s : t(); return i.animated ? t("div", { attrs: { role: "tabpanel", "aria-hidden": !n }, class: bn("pane-wrapper", { inactive: !n }) }, [t("div", { class: bn("pane") }, [o])]) : t("div", { directives: [{ name: "show", value: r }], attrs: { role: "tabpanel" }, class: bn("pane") }, [o]) } } }); function Sn(t) { var e = window.getComputedStyle(t) , i = "none" === e.display , n = null === t.offsetParent && "fixed" !== e.position; return i || n } function kn(t) { var e = t.interceptor , i = t.args , n = t.done; if (e) { var s = e.apply(void 0, i); Object(m.g)(s) ? s.then((function(t) { t && n() } )).catch(m.i) : s && n() } else n() } var xn = Object(l.a)("tab") , wn = xn[0] , Cn = xn[1] , On = wn({ props: { dot: Boolean, type: String, info: [Number, String], color: String, title: String, isActive: Boolean, disabled: Boolean, scrollable: Boolean, activeColor: String, inactiveColor: String }, computed: { style: function() { var t = {} , e = this.color , i = this.isActive , n = "card" === this.type; e && n && (t.borderColor = e, this.disabled || (i ? t.backgroundColor = e : t.color = e)); var s = i ? this.activeColor : this.inactiveColor; return s && (t.color = s), t } }, methods: { onClick: function() { this.$emit("click") }, genText: function() { var t = this.$createElement , e = t("span", { class: Cn("text", { ellipsis: !this.scrollable }) }, [this.slots() || this.title]); return this.dot || Object(m.c)(this.info) && "" !== this.info ? t("span", { class: Cn("text-wrapper") }, [e, t(J, { attrs: { dot: this.dot, info: this.info } })]) : e } }, render: function() { var t = arguments[0]; return t("div", { attrs: { role: "tab", "aria-selected": this.isActive }, class: [Cn({ active: this.isActive, disabled: this.disabled })], style: this.style, on: { click: this.onClick } }, [this.genText()]) } }) , Tn = Object(l.a)("sticky") , $n = Tn[0] , Bn = Tn[1] , In = $n({ mixins: [W((function(t, e) { if (this.scroller || (this.scroller = N(this.$el)), this.observer) { var i = e ? "observe" : "unobserve"; this.observer[i](this.$el) } t(this.scroller, "scroll", this.onScroll, !0), this.onScroll() } ))], props: { zIndex: [Number, String], container: null, offsetTop: { type: [Number, String], default: 0 } }, data: function() { return { fixed: !1, height: 0, transform: 0 } }, computed: { offsetTopPx: function() { return Object(Y.b)(this.offsetTop) }, style: function() { if (this.fixed) { var t = {}; return Object(m.c)(this.zIndex) && (t.zIndex = this.zIndex), this.offsetTopPx && this.fixed && (t.top = this.offsetTopPx + "px"), this.transform && (t.transform = "translate3d(0, " + this.transform + "px, 0)"), t } } }, watch: { fixed: function(t) { this.$emit("change", t) } }, created: function() { var t = this; !m.h && window.IntersectionObserver && (this.observer = new IntersectionObserver((function(e) { e[0].intersectionRatio > 0 && t.onScroll() } ),{ root: document.body })) }, methods: { onScroll: function() { var t = this; if (!Sn(this.$el)) { this.height = this.$el.offsetHeight; var e = this.container , i = this.offsetTopPx , n = M(window) , s = R(this.$el) , r = function() { t.$emit("scroll", { scrollTop: n, isFixed: t.fixed }) }; if (e) { var o = s + e.offsetHeight; if (n + i + this.height > o) { var a = this.height + n - o; return a < this.height ? (this.fixed = !0, this.transform = -(a + i)) : this.fixed = !1, void r() } } n + i > s ? (this.fixed = !0, this.transform = 0) : this.fixed = !1, r() } } }, render: function() { var t = arguments[0] , e = this.fixed , i = { height: e ? this.height + "px" : null }; return t("div", { style: i }, [t("div", { class: Bn({ fixed: e }), style: this.style }, [this.slots()])]) } }) , En = Object(l.a)("tabs") , jn = En[0] , Dn = En[1] , Pn = jn({ mixins: [F], props: { count: Number, duration: [Number, String], animated: Boolean, swipeable: Boolean, currentIndex: Number }, computed: { style: function() { if (this.animated) return { transform: "translate3d(" + -1 * this.currentIndex * 100 + "%, 0, 0)", transitionDuration: this.duration + "s" } }, listeners: function() { if (this.swipeable) return { touchstart: this.touchStart, touchmove: this.touchMove, touchend: this.onTouchEnd, touchcancel: this.onTouchEnd } } }, methods: { onTouchEnd: function() { var t = this.direction , e = this.deltaX , i = this.currentIndex; "horizontal" === t && this.offsetX >= 50 && (e > 0 && 0 !== i ? this.$emit("change", i - 1) : e < 0 && i !== this.count - 1 && this.$emit("change", i + 1)) }, genChildren: function() { var t = this.$createElement; return this.animated ? t("div", { class: Dn("track"), style: this.style }, [this.slots()]) : this.slots() } }, render: function() { var t = arguments[0]; return t("div", { class: Dn("content", { animated: this.animated }), on: n({}, this.listeners) }, [this.genChildren()]) } }) , Ln = Object(l.a)("tabs") , Nn = Ln[0] , Mn = Ln[1] , An = Nn({ mixins: [Le("vanTabs"), W((function(t) { this.scroller || (this.scroller = N(this.$el)), t(window, "resize", this.resize, !0), this.scrollspy && t(this.scroller, "scroll", this.onScroll, !0) } ))], inject: { vanPopup: { default: null } }, model: { prop: "active" }, props: { color: String, border: Boolean, sticky: Boolean, animated: Boolean, swipeable: Boolean, scrollspy: Boolean, background: String, lineWidth: [Number, String], lineHeight: [Number, String], beforeChange: Function, titleActiveColor: String, titleInactiveColor: String, type: { type: String, default: "line" }, active: { type: [Number, String], default: 0 }, ellipsis: { type: Boolean, default: !0 }, duration: { type: [Number, String], default: .3 }, offsetTop: { type: [Number, String], default: 0 }, lazyRender: { type: Boolean, default: !0 }, swipeThreshold: { type: [Number, String], default: 5 } }, data: function() { return { position: "", currentIndex: null, lineStyle: { backgroundColor: this.color } } }, computed: { scrollable: function() { return this.children.length > this.swipeThreshold || !this.ellipsis }, navStyle: function() { return { borderColor: this.color, background: this.background } }, currentName: function() { var t = this.children[this.currentIndex]; if (t) return t.computedName }, offsetTopPx: function() { return Object(Y.b)(this.offsetTop) }, scrollOffset: function() { return this.sticky ? this.offsetTopPx + this.tabHeight : 0 } }, watch: { color: "setLine", active: function(t) { t !== this.currentName && this.setCurrentIndexByName(t) }, children: function() { var t = this; this.setCurrentIndexByName(this.active), this.setLine(), this.$nextTick((function() { t.scrollIntoView(!0) } )) }, currentIndex: function() { this.scrollIntoView(), this.setLine(), this.stickyFixed && !this.scrollspy && V(Math.ceil(R(this.$el) - this.offsetTopPx)) }, scrollspy: function(t) { t ? b(this.scroller, "scroll", this.onScroll, !0) : y(this.scroller, "scroll", this.onScroll) } }, mounted: function() { var t = this; this.init(), this.vanPopup && this.vanPopup.onReopen((function() { t.setLine() } )) }, activated: function() { this.init(), this.setLine() }, methods: { resize: function() { this.setLine() }, init: function() { var t = this; this.$nextTick((function() { var e; t.inited = !0, t.tabHeight = P(e = t.$refs.wrap) ? e.innerHeight : e.getBoundingClientRect().height, t.scrollIntoView(!0) } )) }, setLine: function() { var t = this , e = this.inited; this.$nextTick((function() { var i = t.$refs.titles; if (i && i[t.currentIndex] && "line" === t.type && !Sn(t.$el)) { var n = i[t.currentIndex].$el , s = t.lineWidth , r = t.lineHeight , o = n.offsetLeft + n.offsetWidth / 2 , a = { width: Object(Y.a)(s), backgroundColor: t.color, transform: "translateX(" + o + "px) translateX(-50%)" }; if (e && (a.transitionDuration = t.duration + "s"), Object(m.c)(r)) { var l = Object(Y.a)(r); a.height = l, a.borderRadius = l } t.lineStyle = a } } )) }, setCurrentIndexByName: function(t) { var e = this.children.filter((function(e) { return e.computedName === t } )) , i = (this.children[0] || {}).index || 0; this.setCurrentIndex(e.length ? e[0].index : i) }, setCurrentIndex: function(t) { var e = this.findAvailableTab(t); if (Object(m.c)(e)) { var i = this.children[e] , n = i.computedName , s = null !== this.currentIndex; this.currentIndex = e, n !== this.active && (this.$emit("input", n), s && this.$emit("change", n, i.title)) } }, findAvailableTab: function(t) { for (var e = t < this.currentIndex ? -1 : 1; t >= 0 && t < this.children.length; ) { if (!this.children[t].disabled) return t; t += e } }, onClick: function(t, e) { var i = this , n = this.children[e] , s = n.title , r = n.disabled , o = n.computedName; r ? this.$emit("disabled", o, s) : (kn({ interceptor: this.beforeChange, args: [o], done: function() { i.setCurrentIndex(e), i.scrollToCurrentContent() } }), this.$emit("click", o, s), Zt(t.$router, t)) }, scrollIntoView: function(t) { var e = this.$refs.titles; if (this.scrollable && e && e[this.currentIndex]) { var i = this.$refs.nav , n = e[this.currentIndex].$el; !function(t, e, i) { var n = 0 , s = t.scrollLeft , r = 0 === i ? 1 : Math.round(1e3 * i / 16); !function i() { t.scrollLeft += (e - s) / r, ++n < r && Object(_i.c)(i) }() }(i, n.offsetLeft - (i.offsetWidth - n.offsetWidth) / 2, t ? 0 : +this.duration) } }, onSticktScroll: function(t) { this.stickyFixed = t.isFixed, this.$emit("scroll", t) }, scrollTo: function(t) { var e = this; this.$nextTick((function() { e.setCurrentIndexByName(t), e.scrollToCurrentContent(!0) } )) }, scrollToCurrentContent: function(t) { var e = this; if (void 0 === t && (t = !1), this.scrollspy) { var i = this.children[this.currentIndex] , n = null == i ? void 0 : i.$el; if (n) { var s = R(n, this.scroller) - this.scrollOffset; this.lockScroll = !0, function(t, e, i, n) { var s = M(t) , r = s < e , o = 0 === i ? 1 : Math.round(1e3 * i / 16) , a = (e - s) / o; !function i() { s += a, (r && s > e || !r && s < e) && (s = e), A(t, s), r && s < e || !r && s > e ? Object(_i.c)(i) : n && Object(_i.c)(n) }() }(this.scroller, s, t ? 0 : +this.duration, (function() { e.lockScroll = !1 } )) } } }, onScroll: function() { if (this.scrollspy && !this.lockScroll) { var t = this.getCurrentIndexOnScroll(); this.setCurrentIndex(t) } }, getCurrentIndexOnScroll: function() { for (var t, e = this.children, i = 0; i < e.length; i++) { if ((P(t = e[i].$el) ? 0 : t.getBoundingClientRect().top) > this.scrollOffset) return 0 === i ? 0 : i - 1 } return e.length - 1 } }, render: function() { var t, e = this, i = arguments[0], n = this.type, s = this.animated, r = this.scrollable, o = this.children.map((function(t, s) { var o; return i(On, { ref: "titles", refInFor: !0, attrs: { type: n, dot: t.dot, info: null != (o = t.badge) ? o : t.info, title: t.title, color: e.color, isActive: s === e.currentIndex, disabled: t.disabled, scrollable: r, activeColor: e.titleActiveColor, inactiveColor: e.titleInactiveColor }, style: t.titleStyle, class: t.titleClass, scopedSlots: { default: function() { return t.slots("title") } }, on: { click: function() { e.onClick(t, s) } } }) } )), a = i("div", { ref: "wrap", class: [Mn("wrap", { scrollable: r }), (t = {}, t[Bt] = "line" === n && this.border, t)] }, [i("div", { ref: "nav", attrs: { role: "tablist" }, class: Mn("nav", [n, { complete: this.scrollable }]), style: this.navStyle }, [this.slots("nav-left"), o, "line" === n && i("div", { class: Mn("line"), style: this.lineStyle }), this.slots("nav-right")])]); return i("div", { class: Mn([n]) }, [this.sticky ? i(In, { attrs: { container: this.$el, offsetTop: this.offsetTop }, on: { scroll: this.onSticktScroll } }, [a]) : a, i(Pn, { attrs: { count: this.children.length, animated: s, duration: this.duration, swipeable: this.swipeable, currentIndex: this.currentIndex }, on: { change: this.setCurrentIndex } }, [this.slots()])]) } }) , zn = Object(l.a)("cascader") , Vn = zn[0] , Rn = zn[1] , Fn = zn[2] , Hn = Vn({ props: { title: String, value: [Number, String], fieldNames: Object, placeholder: String, activeColor: String, options: { type: Array, default: function() { return [] } }, closeable: { type: Boolean, default: !0 }, showHeader: { type: Boolean, default: !0 } }, data: function() { return { tabs: [], activeTab: 0 } }, computed: { textKey: function() { var t; return (null == (t = this.fieldNames) ? void 0 : t.text) || "text" }, valueKey: function() { var t; return (null == (t = this.fieldNames) ? void 0 : t.value) || "value" }, childrenKey: function() { var t; return (null == (t = this.fieldNames) ? void 0 : t.children) || "children" } }, watch: { options: { deep: !0, handler: "updateTabs" }, value: function(t) { var e = this; if ((t || 0 === t) && -1 !== this.tabs.map((function(t) { var i; return null == (i = t.selectedOption) ? void 0 : i[e.valueKey] } )).indexOf(t)) return; this.updateTabs() } }, created: function() { this.updateTabs() }, methods: { getSelectedOptionsByValue: function(t, e) { for (var i = 0; i < t.length; i++) { var n = t[i]; if (n[this.valueKey] === e) return [n]; if (n[this.childrenKey]) { var s = this.getSelectedOptionsByValue(n[this.childrenKey], e); if (s) return [n].concat(s) } } }, updateTabs: function() { var t = this; if (this.value || 0 === this.value) { var e = this.getSelectedOptionsByValue(this.options, this.value); if (e) { var i = this.options; return this.tabs = e.map((function(e) { var n = { options: i, selectedOption: e } , s = i.filter((function(i) { return i[t.valueKey] === e[t.valueKey] } )); return s.length && (i = s[0][t.childrenKey]), n } )), i && this.tabs.push({ options: i, selectedOption: null }), void this.$nextTick((function() { t.activeTab = t.tabs.length - 1 } )) } } this.tabs = [{ options: this.options, selectedOption: null }] }, onSelect: function(t, e) { var i = this; if (this.tabs[e].selectedOption = t, this.tabs.length > e + 1 && (this.tabs = this.tabs.slice(0, e + 1)), t[this.childrenKey]) { var n = { options: t[this.childrenKey], selectedOption: null }; this.tabs[e + 1] ? this.$set(this.tabs, e + 1, n) : this.tabs.push(n), this.$nextTick((function() { i.activeTab++ } )) } var s = this.tabs.map((function(t) { return t.selectedOption } )).filter((function(t) { return !!t } )) , r = { value: t[this.valueKey], tabIndex: e, selectedOptions: s }; this.$emit("input", t[this.valueKey]), this.$emit("change", r), t[this.childrenKey] || this.$emit("finish", r) }, onClose: function() { this.$emit("close") }, renderHeader: function() { var t = this.$createElement; if (this.showHeader) return t("div", { class: Rn("header") }, [t("h2", { class: Rn("title") }, [this.slots("title") || this.title]), this.closeable ? t(rt, { attrs: { name: "cross" }, class: Rn("close-icon"), on: { click: this.onClose } }) : null]) }, renderOptions: function(t, e, i) { var n = this , s = this.$createElement; return s("ul", { class: Rn("options") }, [t.map((function(t) { var r = e && t[n.valueKey] === e[n.valueKey] , o = n.slots("option", { option: t, selected: r }) || s("span", [t[n.textKey]]); return s("li", { class: Rn("option", { selected: r }), style: { color: r ? n.activeColor : null }, on: { click: function() { n.onSelect(t, i) } } }, [o, r ? s(rt, { attrs: { name: "success" }, class: Rn("selected-icon") }) : null]) } ))]) }, renderTab: function(t, e) { var i = this.$createElement , n = t.options , s = t.selectedOption , r = s ? s[this.textKey] : this.placeholder || Fn("select"); return i(yn, { attrs: { title: r, titleClass: Rn("tab", { unselected: !s }) } }, [this.renderOptions(n, s, e)]) }, renderTabs: function() { var t = this; return (0, this.$createElement)(An, { attrs: { animated: !0, swipeable: !0, swipeThreshold: 0, color: this.activeColor }, class: Rn("tabs"), model: { value: t.activeTab, callback: function(e) { t.activeTab = e } } }, [this.tabs.map(this.renderTab)]) } }, render: function() { var t = arguments[0]; return t("div", { class: Rn() }, [this.renderHeader(), this.renderTabs()]) } }) , _n = Object(l.a)("cell-group") , Wn = _n[0] , qn = _n[1]; function Un(t, e, i, n) { var s, o = t("div", r()([{ class: [qn({ inset: e.inset }), (s = {}, s[Bt] = e.border, s)] }, h(n, !0)]), [null == i.default ? void 0 : i.default()]); return e.title || i.title ? t("div", { key: n.data.key }, [t("div", { class: qn("title", { inset: e.inset }) }, [i.title ? i.title() : e.title]), o]) : o } Un.props = { title: String, inset: Boolean, border: { type: Boolean, default: !0 } }; var Kn = Wn(Un) , Yn = Object(l.a)("checkbox") , Xn = (0, Yn[0])({ mixins: [Ci({ bem: Yn[1], role: "checkbox", parent: "vanCheckbox" })], 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(t) { var e = this; void 0 === t && (t = !this.checked), clearTimeout(this.toggleTask), this.toggleTask = setTimeout((function() { e.checked = t } )) }, setParentValue: function(t) { var e = this.parent , i = e.value.slice(); if (t) { if (e.max && i.length >= e.max) return; -1 === i.indexOf(this.name) && (i.push(this.name), e.$emit("input", i)) } else { var n = i.indexOf(this.name); -1 !== n && (i.splice(n, 1), e.$emit("input", i)) } } } }) , Qn = Object(l.a)("checkbox-group") , Gn = Qn[0] , Zn = Qn[1] , Jn = Gn({ mixins: [Le("vanCheckbox"), si], props: { max: [Number, String], disabled: Boolean, direction: String, iconSize: [Number, String], checkedColor: String, value: { type: Array, default: function() { return [] } } }, watch: { value: function(t) { this.$emit("change", t) } }, methods: { toggleAll: function(t) { void 0 === t && (t = {}), "boolean" == typeof t && (t = { checked: t }); var e = t , i = e.checked , n = e.skipDisabled , s = this.children.filter((function(t) { return t.disabled && n ? t.checked : null != i ? i : !t.checked } )).map((function(t) { return t.name } )); this.$emit("input", s) } }, render: function() { var t = arguments[0]; return t("div", { class: Zn([this.direction]) }, [this.slots()]) } }) , ts = Object(l.a)("circle") , es = ts[0] , is = ts[1] , ns = 0; function ss(t) { return Math.min(Math.max(t, 0), 100) } var rs = es({ props: { text: String, size: [Number, String], color: [String, Object], layerColor: String, strokeLinecap: String, value: { type: Number, default: 0 }, speed: { type: [Number, String], default: 0 }, fill: { type: String, default: "none" }, rate: { type: [Number, String], default: 100 }, strokeWidth: { type: [Number, String], default: 40 }, clockwise: { type: Boolean, default: !0 } }, beforeCreate: function() { this.uid = "van-circle-gradient-" + ns++ }, computed: { style: function() { var t = Object(Y.a)(this.size); return { width: t, height: t } }, path: function() { return t = this.clockwise, "M " + (e = this.viewBoxSize) / 2 + " " + e / 2 + " m 0, -500 a 500, 500 0 1, " + (i = t ? 1 : 0) + " 0, 1000 a 500, 500 0 1, " + i + " 0, -1000"; var t, e, i }, viewBoxSize: function() { return +this.strokeWidth + 1e3 }, layerStyle: function() { return { fill: "" + this.fill, stroke: "" + this.layerColor, strokeWidth: this.strokeWidth + "px" } }, hoverStyle: function() { var t = 3140 * this.value / 100; return { stroke: "" + (this.gradient ? "url(#" + this.uid + ")" : this.color), strokeWidth: +this.strokeWidth + 1 + "px", strokeLinecap: this.strokeLinecap, strokeDasharray: t + "px 3140px" } }, gradient: function() { return Object(m.f)(this.color) }, LinearGradient: function() { var t = this , e = this.$createElement; if (this.gradient) { var i = Object.keys(this.color).sort((function(t, e) { return parseFloat(t) - parseFloat(e) } )).map((function(i, n) { return e("stop", { key: n, attrs: { offset: i, "stop-color": t.color[i] } }) } )); return e("defs", [e("linearGradient", { attrs: { id: this.uid, x1: "100%", y1: "0%", x2: "0%", y2: "0%" } }, [i])]) } } }, watch: { rate: { handler: function(t) { this.startTime = Date.now(), this.startRate = this.value, this.endRate = ss(t), this.increase = this.endRate > this.startRate, this.duration = Math.abs(1e3 * (this.startRate - this.endRate) / this.speed), this.speed ? (Object(_i.a)(this.rafId), this.rafId = Object(_i.c)(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", ss(parseFloat(e.toFixed(1)))), (this.increase ? e < this.endRate : e > this.endRate) && (this.rafId = Object(_i.c)(this.animate)) } }, render: function() { var t = arguments[0]; return t("div", { class: is(), style: this.style }, [t("svg", { attrs: { viewBox: "0 0 " + this.viewBoxSize + " " + this.viewBoxSize } }, [this.LinearGradient, t("path", { class: is("layer"), style: this.layerStyle, attrs: { d: this.path } }), t("path", { attrs: { d: this.path }, class: is("hover"), style: this.hoverStyle })]), this.slots() || this.text && t("div", { class: is("text") }, [this.text])]) } }) , os = Object(l.a)("col") , as = os[0] , ls = os[1] , cs = as({ mixins: [Pe("vanRow")], props: { span: [Number, String], offset: [Number, String], tag: { type: String, default: "div" } }, computed: { style: function() { var t = this.index , e = (this.parent || {}).spaces; if (e && e[t]) { var i = e[t] , n = i.left , s = i.right; return { paddingLeft: n ? n + "px" : null, paddingRight: s ? s + "px" : null } } } }, methods: { onClick: function(t) { this.$emit("click", t) } }, render: function() { var t, e = arguments[0], i = this.span, n = this.offset; return e(this.tag, { style: this.style, class: ls((t = {}, t[i] = i, t["offset-" + n] = n, t)), on: { click: this.onClick } }, [this.slots()]) } }) , us = Object(l.a)("collapse") , hs = us[0] , ds = us[1] , fs = hs({ mixins: [Le("vanCollapse")], props: { accordion: Boolean, value: [String, Number, Array], border: { type: Boolean, default: !0 } }, 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() { var t, e = arguments[0]; return e("div", { class: [ds(), (t = {}, t[Bt] = this.border, t)] }, [this.slots()]) } }) , ps = Object(l.a)("collapse-item") , ms = ps[0] , vs = ps[1] , gs = ["title", "icon", "right-icon"] , bs = ms({ mixins: [Pe("vanCollapse")], props: n({}, ee, { name: [Number, String], disabled: Boolean, lazyRender: { type: Boolean, default: !0 }, isLink: { type: Boolean, default: !0 } }), data: function() { return { show: null, inited: null } }, computed: { currentName: function() { var t; return null != (t = this.name) ? t : this.index }, expanded: function() { var t = this; if (!this.parent) return null; var e = this.parent , i = e.value; return e.accordion ? i === this.currentName : i.some((function(e) { return e === t.currentName } )) } }, created: function() { this.show = this.expanded, this.inited = this.expanded }, watch: { expanded: function(t, e) { var i = this; null !== e && (t && (this.show = !0, this.inited = !0), (t ? this.$nextTick : _i.c)((function() { var e = i.$refs , n = e.content , s = e.wrapper; if (n && s) { var r = n.offsetHeight; if (r) { var o = r + "px"; s.style.height = t ? 0 : o, Object(_i.b)((function() { s.style.height = t ? o : 0 } )) } else i.onTransitionEnd() } } ))) } }, methods: { onClick: function() { this.disabled || this.toggle() }, toggle: function(t) { void 0 === t && (t = !this.expanded); var e = this.parent , i = this.currentName , n = e.accordion && i === e.value ? "" : i; this.parent.switch(n, t) }, onTransitionEnd: function() { this.expanded ? this.$refs.wrapper.style.height = "" : this.show = !1 }, genTitle: function() { var t = this , e = this.$createElement , i = this.border , s = this.disabled , r = this.expanded , o = gs.reduce((function(e, i) { return t.slots(i) && (e[i] = function() { return t.slots(i) } ), e } ), {}); return this.slots("value") && (o.default = function() { return t.slots("value") } ), e(oe, { attrs: { role: "button", tabindex: s ? -1 : 0, "aria-expanded": String(r) }, class: vs("title", { disabled: s, expanded: r, borderless: !i }), on: { click: this.onClick }, scopedSlots: o, props: n({}, this.$props) }) }, genContent: function() { var t = this.$createElement; if (this.inited || !this.lazyRender) return t("div", { directives: [{ name: "show", value: this.show }], ref: "wrapper", class: vs("wrapper"), on: { transitionend: this.onTransitionEnd } }, [t("div", { ref: "content", class: vs("content") }, [this.slots()])]) } }, render: function() { var t = arguments[0]; return t("div", { class: [vs({ border: this.index && this.border })] }, [this.genTitle(), this.genContent()]) } }) , ys = Object(l.a)("contact-card") , Ss = ys[0] , ks = ys[1] , xs = ys[2]; function ws(t, e, i, n) { var s = e.type , o = e.editable; return t(oe, r()([{ attrs: { center: !0, border: !1, isLink: o, valueClass: ks("value"), icon: "edit" === s ? "contact" : "add-square" }, class: ks([s]), on: { click: function(t) { o && d(n, "click", t) } } }, h(n)]), ["add" === s ? e.addText || xs("addText") : [t("div", [xs("name") + ":" + e.name]), t("div", [xs("tel") + ":" + e.tel])]]) } ws.props = { tel: String, name: String, addText: String, editable: { type: Boolean, default: !0 }, type: { type: String, default: "add" } }; var Cs = Ss(ws) , Os = Object(l.a)("contact-edit") , Ts = Os[0] , $s = Os[1] , Bs = Os[2] , Is = { tel: "", name: "" } , Es = Ts({ props: { isEdit: Boolean, isSaving: Boolean, isDeleting: Boolean, showSetDefault: Boolean, setDefaultLabel: String, contactInfo: { type: Object, default: function() { return n({}, Is) } }, telValidator: { type: Function, default: xt } }, data: function() { return { data: n({}, Is, this.contactInfo), errorInfo: { name: "", tel: "" } } }, watch: { contactInfo: function(t) { this.data = n({}, Is, t) } }, methods: { onFocus: function(t) { this.errorInfo[t] = "" }, getErrorMessageByKey: function(t) { var e = this.data[t].trim(); switch (t) { case "name": return e ? "" : Bs("nameInvalid"); case "tel": return this.telValidator(e) ? "" : Bs("telInvalid") } }, onSave: function() { var t = this; ["name", "tel"].every((function(e) { var i = t.getErrorMessageByKey(e); return i && (t.errorInfo[e] = i), !i } )) && !this.isSaving && this.$emit("save", this.data) }, onDelete: function() { var t = this; Qe.confirm({ title: Bs("confirmDelete") }).then((function() { t.$emit("delete", t.data) } )) } }, render: function() { var t = this , e = arguments[0] , i = this.data , n = this.errorInfo , s = function(e) { return function() { return t.onFocus(e) } }; return e("div", { class: $s() }, [e("div", { class: $s("fields") }, [e(de, { attrs: { clearable: !0, maxlength: "30", label: Bs("name"), placeholder: Bs("nameEmpty"), errorMessage: n.name }, on: { focus: s("name") }, model: { value: i.name, callback: function(e) { t.$set(i, "name", e) } } }), e(de, { attrs: { clearable: !0, type: "tel", label: Bs("tel"), placeholder: Bs("telEmpty"), errorMessage: n.tel }, on: { focus: s("tel") }, model: { value: i.tel, callback: function(e) { t.$set(i, "tel", e) } } })]), this.showSetDefault && e(oe, { attrs: { title: this.setDefaultLabel, border: !1 }, class: $s("switch-cell") }, [e(li, { attrs: { size: 24 }, slot: "right-icon", on: { change: function(e) { t.$emit("change-default", e) } }, model: { value: i.isDefault, callback: function(e) { t.$set(i, "isDefault", e) } } })]), e("div", { class: $s("buttons") }, [e(je, { attrs: { block: !0, round: !0, type: "danger", text: Bs("save"), loading: this.isSaving }, on: { click: this.onSave } }), this.isEdit && e(je, { attrs: { block: !0, round: !0, text: Bs("delete"), loading: this.isDeleting }, on: { click: this.onDelete } })])]) } }) , js = Object(l.a)("contact-list") , Ds = js[0] , Ps = js[1] , Ls = js[2]; function Ns(t, e, i, n) { var s = e.list && e.list.map((function(i, s) { function r() { d(n, "input", i.id), d(n, "select", i, s) } return t(oe, { key: i.id, attrs: { isLink: !0, center: !0, valueClass: Ps("item-value") }, class: Ps("item"), scopedSlots: { icon: function() { return t(rt, { attrs: { name: "edit" }, class: Ps("edit"), on: { click: function(t) { t.stopPropagation(), d(n, "edit", i, s) } } }) }, default: function() { var n = [i.name + "," + i.tel]; return i.isDefault && e.defaultTagText && n.push(t(wi, { attrs: { type: "danger", round: !0 }, class: Ps("item-tag") }, [e.defaultTagText])), n }, "right-icon": function() { return t(Ti, { attrs: { name: i.id, iconSize: 16, checkedColor: Ct }, on: { click: r } }) } }, on: { click: r } }) } )); return t("div", r()([{ class: Ps() }, h(n)]), [t(bi, { attrs: { value: e.value }, class: Ps("group") }, [s]), t("div", { class: Ps("bottom") }, [t(je, { attrs: { round: !0, block: !0, type: "danger", text: e.addText || Ls("addText") }, class: Ps("add"), on: { click: function() { d(n, "add") } } })])]) } Ns.props = { value: null, list: Array, addText: String, defaultTagText: String }; var Ms = Ds(Ns) , As = i(2); var zs = Object(l.a)("count-down") , Vs = zs[0] , Rs = zs[1] , Fs = Vs({ props: { millisecond: Boolean, time: { type: [Number, String], default: 0 }, format: { type: String, default: "HH:mm:ss" }, autoStart: { type: Boolean, default: !0 } }, data: function() { return { remain: 0 } }, computed: { timeData: function() { return t = this.remain, { days: Math.floor(t / 864e5), hours: Math.floor(t % 864e5 / 36e5), minutes: Math.floor(t % 36e5 / 6e4), seconds: Math.floor(t % 6e4 / 1e3), milliseconds: Math.floor(t % 1e3) }; var t }, formattedTime: function() { return function(t, e) { var i = e.days , n = e.hours , s = e.minutes , r = e.seconds , o = e.milliseconds; if (-1 === t.indexOf("DD") ? n += 24 * i : t = t.replace("DD", Object(As.b)(i)), -1 === t.indexOf("HH") ? s += 60 * n : t = t.replace("HH", Object(As.b)(n)), -1 === t.indexOf("mm") ? r += 60 * s : t = t.replace("mm", Object(As.b)(s)), -1 === t.indexOf("ss") ? o += 1e3 * r : t = t.replace("ss", Object(As.b)(r)), -1 !== t.indexOf("S")) { var a = Object(As.b)(o, 3); t = -1 !== t.indexOf("SSS") ? t.replace("SSS", a) : -1 !== t.indexOf("SS") ? t.replace("SS", a.slice(0, 2)) : t.replace("S", a.charAt(0)) } return t }(this.format, this.timeData) } }, watch: { time: { immediate: !0, handler: "reset" } }, activated: function() { this.keepAlivePaused && (this.counting = !0, this.keepAlivePaused = !1, this.tick()) }, deactivated: function() { this.counting && (this.pause(), this.keepAlivePaused = !0) }, beforeDestroy: function() { this.pause() }, methods: { start: function() { this.counting || (this.counting = !0, this.endTime = Date.now() + this.remain, this.tick()) }, pause: function() { this.counting = !1, Object(_i.a)(this.rafId) }, reset: function() { this.pause(), this.remain = +this.time, this.autoStart && this.start() }, tick: function() { m.b && (this.millisecond ? this.microTick() : this.macroTick()) }, microTick: function() { var t = this; this.rafId = Object(_i.c)((function() { t.counting && (t.setRemain(t.getRemain()), t.remain > 0 && t.microTick()) } )) }, macroTick: function() { var t = this; this.rafId = Object(_i.c)((function() { if (t.counting) { var e, i, n = t.getRemain(); e = n, i = t.remain, (Math.floor(e / 1e3) !== Math.floor(i / 1e3) || 0 === n) && t.setRemain(n), t.remain > 0 && t.macroTick() } } )) }, getRemain: function() { return Math.max(this.endTime - Date.now(), 0) }, setRemain: function(t) { this.remain = t, this.$emit("change", this.timeData), 0 === t && (this.pause(), this.$emit("finish")) } }, render: function() { var t = arguments[0]; return t("div", { class: Rs() }, [this.slots("default", this.timeData) || this.formattedTime]) } }) , Hs = Object(l.a)("coupon") , _s = Hs[0] , Ws = Hs[1] , qs = Hs[2]; function Us(t) { var e = new Date(function(t) { return t < Math.pow(10, 12) ? 1e3 * t : +t }(t)); return e.getFullYear() + "." + Object(As.b)(e.getMonth() + 1) + "." + Object(As.b)(e.getDate()) } function Ks(t) { return (t / 100).toFixed(t % 100 == 0 ? 0 : t % 10 == 0 ? 1 : 2) } var Ys = _s({ props: { coupon: Object, chosen: Boolean, disabled: Boolean, currency: { type: String, default: "¥" } }, computed: { validPeriod: function() { var t = this.coupon , e = t.startAt , i = t.endAt; return t.customValidPeriod || Us(e) + " - " + Us(i) }, faceAmount: function() { var t, e = this.coupon; if (e.valueDesc) return e.valueDesc + "<span>" + (e.unitDesc || "") + "</span>"; if (e.denominations) { var i = Ks(e.denominations); return "<span>" + this.currency + "</span> " + i } return e.discount ? qs("discount", ((t = e.discount) / 10).toFixed(t % 10 == 0 ? 0 : 1)) : "" }, conditionMessage: function() { var t = Ks(this.coupon.originCondition); return "0" === t ? qs("unlimited") : qs("condition", t) } }, render: function() { var t = arguments[0] , e = this.coupon , i = this.disabled , n = i && e.reason || e.description; return t("div", { class: Ws({ disabled: i }) }, [t("div", { class: Ws("content") }, [t("div", { class: Ws("head") }, [t("h2", { class: Ws("amount"), domProps: { innerHTML: this.faceAmount } }), t("p", { class: Ws("condition") }, [this.coupon.condition || this.conditionMessage])]), t("div", { class: Ws("body") }, [t("p", { class: Ws("name") }, [e.name]), t("p", { class: Ws("valid") }, [this.validPeriod]), !this.disabled && t(Xn, { attrs: { size: 18, value: this.chosen, checkedColor: Ct }, class: Ws("corner") })])]), n && t("p", { class: Ws("description") }, [n])]) } }) , Xs = Object(l.a)("coupon-cell") , Qs = Xs[0] , Gs = Xs[1] , Zs = Xs[2]; function Js(t, e, i, n) { var s = e.coupons[+e.chosenCoupon] , o = function(t) { var e = t.coupons , i = t.chosenCoupon , n = t.currency , s = e[+i]; if (s) { var r = 0; return Object(m.c)(s.value) ? r = s.value : Object(m.c)(s.denominations) && (r = s.denominations), "-" + n + " " + (r / 100).toFixed(2) } return 0 === e.length ? Zs("tips") : Zs("count", e.length) }(e); return t(oe, r()([{ class: Gs(), attrs: { value: o, title: e.title || Zs("title"), border: e.border, isLink: e.editable, valueClass: Gs("value", { selected: s }) } }, h(n, !0)])) } Js.model = { prop: "chosenCoupon" }, Js.props = { title: String, coupons: { type: Array, default: function() { return [] } }, currency: { type: String, default: "¥" }, border: { type: Boolean, default: !0 }, editable: { type: Boolean, default: !0 }, chosenCoupon: { type: [Number, String], default: -1 } }; var tr = Qs(Js) , er = Object(l.a)("coupon-list") , ir = er[0] , nr = er[1] , sr = er[2] , rr = ir({ model: { prop: "code" }, props: { code: String, closeButtonText: String, inputPlaceholder: String, enabledTitle: String, disabledTitle: String, exchangeButtonText: String, exchangeButtonLoading: Boolean, exchangeButtonDisabled: Boolean, exchangeMinLength: { type: Number, default: 1 }, chosenCoupon: { type: Number, default: -1 }, coupons: { type: Array, default: function() { return [] } }, disabledCoupons: { type: Array, default: function() { return [] } }, displayedCouponIndex: { type: Number, default: -1 }, showExchangeBar: { type: Boolean, default: !0 }, showCloseButton: { type: Boolean, default: !0 }, showCount: { type: Boolean, default: !0 }, currency: { type: String, default: "¥" }, emptyImage: { type: String, default: "https://img01.yzcdn.cn/vant/coupon-empty.png" } }, data: function() { return { tab: 0, winHeight: window.innerHeight, currentCode: this.code || "" } }, computed: { buttonDisabled: function() { return !this.exchangeButtonLoading && (this.exchangeButtonDisabled || !this.currentCode || this.currentCode.length < this.exchangeMinLength) }, listStyle: function() { return { height: this.winHeight - (this.showExchangeBar ? 140 : 94) + "px" } } }, watch: { code: function(t) { this.currentCode = t }, currentCode: function(t) { this.$emit("input", t) }, displayedCouponIndex: "scrollToShowCoupon" }, mounted: function() { this.scrollToShowCoupon(this.displayedCouponIndex) }, methods: { onClickExchangeButton: function() { this.$emit("exchange", this.currentCode), this.code || (this.currentCode = "") }, scrollToShowCoupon: function(t) { var e = this; -1 !== t && this.$nextTick((function() { var i = e.$refs , n = i.card , s = i.list; s && n && n[t] && (s.scrollTop = n[t].$el.offsetTop - 100) } )) }, genEmpty: function() { var t = this.$createElement; return t("div", { class: nr("empty") }, [t("img", { attrs: { src: this.emptyImage } }), t("p", [sr("empty")])]) }, genExchangeButton: function() { return (0, this.$createElement)(je, { attrs: { plain: !0, type: "danger", text: this.exchangeButtonText || sr("exchange"), loading: this.exchangeButtonLoading, disabled: this.buttonDisabled }, class: nr("exchange"), on: { click: this.onClickExchangeButton } }) } }, render: function() { var t = this , e = arguments[0] , i = this.coupons , n = this.disabledCoupons , s = this.showCount ? " (" + i.length + ")" : "" , r = (this.enabledTitle || sr("enable")) + s , o = this.showCount ? " (" + n.length + ")" : "" , a = (this.disabledTitle || sr("disabled")) + o , l = this.showExchangeBar && e("div", { class: nr("exchange-bar") }, [e(de, { attrs: { clearable: !0, border: !1, placeholder: this.inputPlaceholder || sr("placeholder"), maxlength: "20" }, class: nr("field"), model: { value: t.currentCode, callback: function(e) { t.currentCode = e } } }), this.genExchangeButton()]) , c = function(e) { return function() { return t.$emit("change", e) } } , u = e(yn, { attrs: { title: r } }, [e("div", { class: nr("list", { "with-bottom": this.showCloseButton }), style: this.listStyle }, [i.map((function(i, n) { return e(Ys, { ref: "card", key: i.id, attrs: { coupon: i, currency: t.currency, chosen: n === t.chosenCoupon }, nativeOn: { click: c(n) } }) } )), !i.length && this.genEmpty(), this.slots("list-footer")])]) , h = e(yn, { attrs: { title: a } }, [e("div", { class: nr("list", { "with-bottom": this.showCloseButton }), style: this.listStyle }, [n.map((function(i) { return e(Ys, { attrs: { disabled: !0, coupon: i, currency: t.currency }, key: i.id }) } )), !n.length && this.genEmpty(), this.slots("disabled-list-footer")])]); return e("div", { class: nr() }, [l, e(An, { class: nr("tab"), attrs: { border: !1 }, model: { value: t.tab, callback: function(e) { t.tab = e } } }, [u, h]), e("div", { class: nr("bottom") }, [e(je, { directives: [{ name: "show", value: this.showCloseButton }], attrs: { round: !0, type: "danger", block: !0, text: this.closeButtonText || sr("close") }, class: nr("close"), on: { click: c(-1) } })])]) } }) , or = n({}, wt, { value: null, filter: Function, columnsOrder: Array, showToolbar: { type: Boolean, default: !0 }, formatter: { type: Function, default: function(t, e) { return e } } }) , ar = { data: function() { return { innerValue: this.formatValue(this.value) } }, computed: { originColumns: function() { var t = this; return this.ranges.map((function(e) { var i = e.type , n = e.range , s = function(t, e) { if (t < 0) return []; for (var i = -1, n = Array(t); ++i < t; ) n[i] = e(i); return n }(n[1] - n[0] + 1, (function(t) { return Object(As.b)(n[0] + t) } )); return t.filter && (s = t.filter(i, s)), { type: i, values: s } } )) }, columns: function() { var t = this; return this.originColumns.map((function(e) { return { values: e.values.map((function(i) { return t.formatter(e.type, i) } )) } } )) } }, watch: { columns: "updateColumnValue", innerValue: function(t, e) { e ? this.$emit("input", t) : this.$emit("input", null) } }, mounted: function() { var t = this; this.updateColumnValue(), this.$nextTick((function() { t.updateInnerValue() } )) }, methods: { getPicker: function() { return this.$refs.picker }, getProxiedPicker: function() { var t = this , e = this.$refs.picker; if (e) { var i = function(i) { return function() { e[i].apply(e, arguments), t.updateInnerValue() } }; return n({}, e, { setValues: i("setValues"), setIndexes: i("setIndexes"), setColumnIndex: i("setColumnIndex"), setColumnValue: i("setColumnValue") }) } }, onConfirm: function() { this.$emit("input", this.innerValue), this.$emit("confirm", this.innerValue) }, onCancel: function() { this.$emit("cancel") } }, render: function() { var t = this , e = arguments[0] , i = {}; return Object.keys(wt).forEach((function(e) { i[e] = t[e] } )), e(Ut, { ref: "picker", attrs: { columns: this.columns, readonly: this.readonly }, scopedSlots: this.$scopedSlots, on: { change: this.onChange, confirm: this.onConfirm, cancel: this.onCancel }, props: n({}, i) }) } } , lr = (0, Object(l.a)("time-picker")[0])({ mixins: [ar], props: n({}, or, { minHour: { type: [Number, String], default: 0 }, maxHour: { type: [Number, String], default: 23 }, minMinute: { type: [Number, String], default: 0 }, maxMinute: { type: [Number, String], default: 59 } }), computed: { ranges: function() { return [{ type: "hour", range: [+this.minHour, +this.maxHour] }, { type: "minute", range: [+this.minMinute, +this.maxMinute] }] } }, watch: { filter: "updateInnerValue", minHour: function() { var t = this; this.$nextTick((function() { t.updateInnerValue() } )) }, maxHour: function(t) { var e = this.innerValue.split(":") , i = e[0] , n = e[1]; i >= t ? (this.innerValue = this.formatValue(t + ":" + n), this.updateColumnValue()) : this.updateInnerValue() }, minMinute: "updateInnerValue", maxMinute: function(t) { var e = this.innerValue.split(":") , i = e[0]; e[1] >= t ? (this.innerValue = this.formatValue(i + ":" + t), this.updateColumnValue()) : this.updateInnerValue() }, value: function(t) { (t = this.formatValue(t)) !== this.innerValue && (this.innerValue = t, this.updateColumnValue()) } }, methods: { formatValue: function(t) { t || (t = Object(As.b)(this.minHour) + ":" + Object(As.b)(this.minMinute)); var e = t.split(":") , i = e[0] , n = e[1]; return (i = Object(As.b)(Et(i, this.minHour, this.maxHour))) + ":" + (n = Object(As.b)(Et(n, this.minMinute, this.maxMinute))) }, updateInnerValue: function() { var t = this.getPicker().getIndexes() , e = t[0] , i = t[1] , n = this.originColumns , s = n[0] , r = n[1] , o = s.values[e] || s.values[0] , a = r.values[i] || r.values[0]; this.innerValue = this.formatValue(o + ":" + a), this.updateColumnValue() }, onChange: function(t) { var e = this; this.updateInnerValue(), this.$nextTick((function() { e.$nextTick((function() { e.updateInnerValue(), e.$emit("change", t) } )) } )) }, updateColumnValue: function() { var t = this , e = this.formatter , i = this.innerValue.split(":") , n = [e("hour", i[0]), e("minute", i[1])]; this.$nextTick((function() { t.getPicker().setValues(n) } )) } } }); function cr(t, e) { return (cr = Object.setPrototypeOf || function(t, e) { return t.__proto__ = e, t } )(t, e) } function ur() { if ("undefined" == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ("function" == typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], (function() {} ))), !0 } catch (t) { return !1 } } function hr(t, e, i) { return (hr = ur() ? Reflect.construct : function(t, e, i) { var n = [null]; n.push.apply(n, e); var s = new (Function.bind.apply(t, n)); return i && cr(s, i.prototype), s } ).apply(null, arguments) } var dr = (new Date).getFullYear() , fr = (0, Object(l.a)("date-picker")[0])({ mixins: [ar], props: n({}, or, { type: { type: String, default: "datetime" }, minDate: { type: Date, default: function() { return new Date(dr - 10,0,1) }, validator: Wi }, maxDate: { type: Date, default: function() { return new Date(dr + 10,11,31) }, validator: Wi } }), watch: { filter: "updateInnerValue", minDate: function() { var t = this; this.$nextTick((function() { t.updateInnerValue() } )) }, maxDate: function(t) { this.innerValue.valueOf() >= t.valueOf() ? this.innerValue = t : this.updateInnerValue() }, value: function(t) { (t = this.formatValue(t)) && t.valueOf() !== this.innerValue.valueOf() && (this.innerValue = t) } }, computed: { ranges: function() { var t = this.getBoundary("max", this.innerValue ? this.innerValue : this.minDate) , e = t.maxYear , i = t.maxDate , n = t.maxMonth , s = t.maxHour , r = t.maxMinute , o = this.getBoundary("min", this.innerValue ? this.innerValue : this.minDate) , a = o.minYear , l = o.minDate , c = [{ type: "year", range: [a, e] }, { type: "month", range: [o.minMonth, n] }, { type: "day", range: [l, i] }, { type: "hour", range: [o.minHour, s] }, { type: "minute", range: [o.minMinute, r] }]; switch (this.type) { case "date": c = c.slice(0, 3); break; case "year-month": c = c.slice(0, 2); break; case "month-day": c = c.slice(1, 3); break; case "datehour": c = c.slice(0, 4) } if (this.columnsOrder) { var u = this.columnsOrder.concat(c.map((function(t) { return t.type } ))); c.sort((function(t, e) { return u.indexOf(t.type) - u.indexOf(e.type) } )) } return c } }, methods: { formatValue: function(t) { var e = this; if (!Wi(t)) return null; var i = new Date(this.minDate) , n = new Date(this.maxDate) , s = { year: "getFullYear", month: "getMonth", day: "getDate", hour: "getHours", minute: "getMinutes" }; if (this.originColumns) { var r = this.originColumns.map((function(t, r) { var o = t.type , a = t.values , l = e.ranges[r].range , c = i[s[o]]() , u = n[s[o]]() , h = "month" === o ? +a[0] - 1 : +a[0] , d = "month" === o ? +a[a.length - 1] - 1 : +a[a.length - 1]; return { type: o, values: [c < l[0] ? Math.max(c, h) : h || c, u > l[1] ? Math.min(u, d) : d || u] } } )); if ("month-day" === this.type) { var o = (this.innerValue || this.minDate).getFullYear(); r.unshift({ type: "year", values: [o, o] }) } var a = Object.keys(s).map((function(t) { var e; return null == (e = r.filter((function(e) { return e.type === t } ))[0]) ? void 0 : e.values } )).filter((function(t) { return t } )); i = hr(Date, a.map((function(t) { return en(t[0]) } ))), n = hr(Date, a.map((function(t) { return en(t[1]) } ))) } return t = Math.max(t, i.getTime()), t = Math.min(t, n.getTime()), new Date(t) }, getBoundary: function(t, e) { var i, n = this[t + "Date"], s = n.getFullYear(), r = 1, o = 1, a = 0, l = 0; return "max" === t && (r = 12, o = nn(e.getFullYear(), e.getMonth() + 1), a = 23, l = 59), e.getFullYear() === s && (r = n.getMonth() + 1, e.getMonth() + 1 === r && (o = n.getDate(), e.getDate() === o && (a = n.getHours(), e.getHours() === a && (l = n.getMinutes())))), (i = {})[t + "Year"] = s, i[t + "Month"] = r, i[t + "Date"] = o, i[t + "Hour"] = a, i[t + "Minute"] = l, i }, updateInnerValue: function() { var t, e, i, n = this, s = this.type, r = this.getPicker().getIndexes(), o = function(t) { var e = 0; return n.originColumns.forEach((function(i, n) { t === i.type && (e = n) } )), en(n.originColumns[e].values[r[e]]) }; "month-day" === s ? (t = (this.innerValue || this.minDate).getFullYear(), e = o("month"), i = o("day")) : (t = o("year"), e = o("month"), i = "year-month" === s ? 1 : o("day")); var a = nn(t, e); i = i > a ? a : i; var l = 0 , c = 0; "datehour" === s && (l = o("hour")), "datetime" === s && (l = o("hour"), c = o("minute")); var u = new Date(t,e - 1,i,l,c); this.innerValue = this.formatValue(u) }, onChange: function(t) { var e = this; this.updateInnerValue(), this.$nextTick((function() { e.$nextTick((function() { e.updateInnerValue(), e.$emit("change", t) } )) } )) }, updateColumnValue: function() { var t = this , e = this.innerValue ? this.innerValue : this.minDate , i = this.formatter , n = this.originColumns.map((function(t) { switch (t.type) { case "year": return i("year", "" + e.getFullYear()); case "month": return i("month", Object(As.b)(e.getMonth() + 1)); case "day": return i("day", Object(As.b)(e.getDate())); case "hour": return i("hour", Object(As.b)(e.getHours())); case "minute": return i("minute", Object(As.b)(e.getMinutes())); default: return null } } )); this.$nextTick((function() { t.getPicker().setValues(n) } )) } } }) , pr = Object(l.a)("datetime-picker") , mr = pr[0] , vr = pr[1] , gr = mr({ props: n({}, lr.props, fr.props), methods: { getPicker: function() { return this.$refs.root.getProxiedPicker() } }, render: function() { var t = arguments[0] , e = "time" === this.type ? lr : fr; return t(e, { ref: "root", class: vr(), scopedSlots: this.$scopedSlots, props: n({}, this.$props), on: n({}, this.$listeners) }) } }) , br = Object(l.a)("divider") , yr = br[0] , Sr = br[1]; function kr(t, e, i, n) { var s; return t("div", r()([{ attrs: { role: "separator" }, style: { borderColor: e.borderColor }, class: Sr((s = { dashed: e.dashed, hairline: e.hairline }, s["content-" + e.contentPosition] = i.default, s)) }, h(n, !0)]), [i.default && i.default()]) } kr.props = { dashed: Boolean, hairline: { type: Boolean, default: !0 }, contentPosition: { type: String, default: "center" } }; var xr = yr(kr) , wr = Object(l.a)("dropdown-item") , Cr = wr[0] , Or = wr[1] , Tr = Cr({ mixins: [H({ ref: "wrapper" }), Pe("vanDropdownMenu")], props: { value: null, title: String, disabled: Boolean, titleClass: String, options: { type: Array, default: function() { return [] } }, lazyRender: { type: Boolean, default: !0 } }, data: function() { return { transition: !0, showPopup: !1, showWrapper: !1 } }, computed: { displayTitle: function() { var t = this; if (this.title) return this.title; var e = this.options.filter((function(e) { return e.value === t.value } )); return e.length ? e[0].text : "" } }, watch: { showPopup: function(t) { this.bindScroll(t) } }, beforeCreate: function() { var t = this , e = function(e) { return function() { return t.$emit(e) } }; this.onOpen = e("open"), this.onClose = e("close"), this.onOpened = e("opened") }, methods: { toggle: function(t, e) { void 0 === t && (t = !this.showPopup), void 0 === e && (e = {}), t !== this.showPopup && (this.transition = !e.immediate, this.showPopup = t, t && (this.parent.updateOffset(), this.showWrapper = !0)) }, bindScroll: function(t) { (t ? b : y)(this.parent.scroller, "scroll", this.onScroll, !0) }, onScroll: function() { this.parent.updateOffset() }, onClickWrapper: function(t) { this.getContainer && t.stopPropagation() } }, render: function() { var t = this , e = arguments[0] , i = this.parent , n = i.zIndex , s = i.offset , r = i.overlay , o = i.duration , a = i.direction , l = i.activeColor , c = i.closeOnClickOverlay , u = this.options.map((function(i) { var n = i.value === t.value; return e(oe, { attrs: { clickable: !0, icon: i.icon, title: i.text }, key: i.value, class: Or("option", { active: n }), style: { color: n ? l : "" }, on: { click: function() { t.showPopup = !1, i.value !== t.value && (t.$emit("input", i.value), t.$emit("change", i.value)) } } }, [n && e(rt, { class: Or("icon"), attrs: { color: l, name: "success" } })]) } )) , h = { zIndex: n }; return "down" === a ? h.top = s + "px" : h.bottom = s + "px", e("div", [e("div", { directives: [{ name: "show", value: this.showWrapper }], ref: "wrapper", style: h, class: Or([a]), on: { click: this.onClickWrapper } }, [e(ct, { attrs: { overlay: r, position: "down" === a ? "top" : "bottom", duration: this.transition ? o : 0, lazyRender: this.lazyRender, overlayStyle: { position: "absolute" }, closeOnClickOverlay: c }, class: Or("content"), on: { open: this.onOpen, close: this.onClose, opened: this.onOpened, closed: function() { t.showWrapper = !1, t.$emit("closed") } }, model: { value: t.showPopup, callback: function(e) { t.showPopup = e } } }, [u, this.slots("default")])])]) } }) , $r = function(t) { return { props: { closeOnClickOutside: { type: Boolean, default: !0 } }, data: function() { var e = this; return { clickOutsideHandler: function(i) { e.closeOnClickOutside && !e.$el.contains(i.target) && e[t.method]() } } }, mounted: function() { b(document, t.event, this.clickOutsideHandler) }, beforeDestroy: function() { y(document, t.event, this.clickOutsideHandler) } } } , Br = Object(l.a)("dropdown-menu") , Ir = Br[0] , Er = Br[1] , jr = Ir({ mixins: [Le("vanDropdownMenu"), $r({ event: "click", method: "onClickOutside" })], props: { zIndex: [Number, String], activeColor: String, overlay: { type: Boolean, default: !0 }, duration: { type: [Number, String], default: .2 }, direction: { type: String, default: "down" }, closeOnClickOverlay: { type: Boolean, default: !0 } }, data: function() { return { offset: 0 } }, computed: { scroller: function() { return N(this.$el) }, opened: function() { return this.children.some((function(t) { return t.showWrapper } )) }, barStyle: function() { if (this.opened && Object(m.c)(this.zIndex)) return { zIndex: 1 + this.zIndex } } }, methods: { updateOffset: function() { if (this.$refs.bar) { var t = this.$refs.bar.getBoundingClientRect(); "down" === this.direction ? this.offset = t.bottom : this.offset = window.innerHeight - t.top } }, toggleItem: function(t) { this.children.forEach((function(e, i) { i === t ? e.toggle() : e.showPopup && e.toggle(!1, { immediate: !0 }) } )) }, onClickOutside: function() { this.children.forEach((function(t) { t.toggle(!1) } )) } }, render: function() { var t = this , e = arguments[0] , i = this.children.map((function(i, n) { return e("div", { attrs: { role: "button", tabindex: i.disabled ? -1 : 0 }, class: Er("item", { disabled: i.disabled }), on: { click: function() { i.disabled || t.toggleItem(n) } } }, [e("span", { class: [Er("title", { active: i.showPopup, down: i.showPopup === ("down" === t.direction) }), i.titleClass], style: { color: i.showPopup ? t.activeColor : "" } }, [e("div", { class: "van-ellipsis" }, [i.slots("title") || i.displayTitle])])]) } )); return e("div", { class: Er() }, [e("div", { ref: "bar", style: this.barStyle, class: Er("bar", { opened: this.opened }) }, [i]), this.slots("default")]) } }) , Dr = "van-empty-network-" , Pr = { render: function() { var t = arguments[0] , e = function(e, i, n) { return t("stop", { attrs: { "stop-color": e, offset: i + "%", "stop-opacity": n } }) }; return t("svg", { attrs: { viewBox: "0 0 160 160", xmlns: "http://www.w3.org/2000/svg" } }, [t("defs", [t("linearGradient", { attrs: { id: Dr + "1", x1: "64.022%", y1: "100%", x2: "64.022%", y2: "0%" } }, [e("#FFF", 0, .5), e("#F2F3F5", 100)]), t("linearGradient", { attrs: { id: Dr + "2", x1: "50%", y1: "0%", x2: "50%", y2: "84.459%" } }, [e("#EBEDF0", 0), e("#DCDEE0", 100, 0)]), t("linearGradient", { attrs: { id: Dr + "3", x1: "100%", y1: "0%", x2: "100%", y2: "100%" } }, [e("#EAEDF0", 0), e("#DCDEE0", 100)]), t("linearGradient", { attrs: { id: Dr + "4", x1: "100%", y1: "100%", x2: "100%", y2: "0%" } }, [e("#EAEDF0", 0), e("#DCDEE0", 100)]), t("linearGradient", { attrs: { id: Dr + "5", x1: "0%", y1: "43.982%", x2: "100%", y2: "54.703%" } }, [e("#EAEDF0", 0), e("#DCDEE0", 100)]), t("linearGradient", { attrs: { id: Dr + "6", x1: "94.535%", y1: "43.837%", x2: "5.465%", y2: "54.948%" } }, [e("#EAEDF0", 0), e("#DCDEE0", 100)]), t("radialGradient", { attrs: { id: Dr + "7", cx: "50%", cy: "0%", fx: "50%", fy: "0%", r: "100%", gradientTransform: "matrix(0 1 -.54835 0 .5 -.5)" } }, [e("#EBEDF0", 0), e("#FFF", 100, 0)])]), t("g", { attrs: { fill: "none", "fill-rule": "evenodd" } }, [t("g", { attrs: { opacity: ".8" } }, [t("path", { attrs: { d: "M0 124V46h20v20h14v58H0z", fill: "url(#" + Dr + "1)", transform: "matrix(-1 0 0 1 36 7)" } }), t("path", { attrs: { d: "M121 8h22.231v14H152v77.37h-31V8z", fill: "url(#" + Dr + "1)", transform: "translate(2 7)" } })]), t("path", { attrs: { fill: "url(#" + Dr + "7)", d: "M0 139h160v21H0z" } }), t("path", { attrs: { d: "M37 18a7 7 0 013 13.326v26.742c0 1.23-.997 2.227-2.227 2.227h-1.546A2.227 2.227 0 0134 58.068V31.326A7 7 0 0137 18z", fill: "url(#" + Dr + "2)", "fill-rule": "nonzero", transform: "translate(43 36)" } }), t("g", { attrs: { opacity: ".6", "stroke-linecap": "round", "stroke-width": "7" } }, [t("path", { attrs: { d: "M20.875 11.136a18.868 18.868 0 00-5.284 13.121c0 5.094 2.012 9.718 5.284 13.12", stroke: "url(#" + Dr + "3)", transform: "translate(43 36)" } }), t("path", { attrs: { d: "M9.849 0C3.756 6.225 0 14.747 0 24.146c0 9.398 3.756 17.92 9.849 24.145", stroke: "url(#" + Dr + "3)", transform: "translate(43 36)" } }), t("path", { attrs: { d: "M57.625 11.136a18.868 18.868 0 00-5.284 13.121c0 5.094 2.012 9.718 5.284 13.12", stroke: "url(#" + Dr + "4)", transform: "rotate(-180 76.483 42.257)" } }), t("path", { attrs: { d: "M73.216 0c-6.093 6.225-9.849 14.747-9.849 24.146 0 9.398 3.756 17.92 9.849 24.145", stroke: "url(#" + Dr + "4)", transform: "rotate(-180 89.791 42.146)" } })]), t("g", { attrs: { transform: "translate(31 105)", "fill-rule": "nonzero" } }, [t("rect", { attrs: { fill: "url(#" + Dr + "5)", width: "98", height: "34", rx: "2" } }), t("rect", { attrs: { fill: "#FFF", x: "9", y: "8", width: "80", height: "18", rx: "1.114" } }), t("rect", { attrs: { fill: "url(#" + Dr + "6)", x: "15", y: "12", width: "18", height: "6", rx: "1.114" } })])])]) } } , Lr = Object(l.a)("empty") , Nr = Lr[0] , Mr = Lr[1] , Ar = ["error", "search", "default"] , zr = Nr({ props: { imageSize: [Number, String], description: String, image: { type: String, default: "default" } }, methods: { genImageContent: function() { var t = this.$createElement , e = this.slots("image"); if (e) return e; if ("network" === this.image) return t(Pr); var i = this.image; return -1 !== Ar.indexOf(i) && (i = "https://img01.yzcdn.cn/vant/empty-image-" + i + ".png"), t("img", { attrs: { src: i } }) }, genImage: function() { var t = this.$createElement , e = { width: Object(Y.a)(this.imageSize), height: Object(Y.a)(this.imageSize) }; return t("div", { class: Mr("image"), style: e }, [this.genImageContent()]) }, genDescription: function() { var t = this.$createElement , e = this.slots("description") || this.description; if (e) return t("p", { class: Mr("description") }, [e]) }, genBottom: function() { var t = this.$createElement , e = this.slots(); if (e) return t("div", { class: Mr("bottom") }, [e]) } }, render: function() { var t = arguments[0]; return t("div", { class: Mr() }, [this.genImage(), this.genDescription(), this.genBottom()]) } }) , Vr = Object(l.a)("form") , Rr = Vr[0] , Fr = Vr[1] , Hr = Rr({ props: { colon: Boolean, disabled: Boolean, readonly: Boolean, labelWidth: [Number, String], labelAlign: String, inputAlign: String, scrollToError: Boolean, validateFirst: Boolean, errorMessageAlign: String, submitOnEnter: { type: Boolean, default: !0 }, validateTrigger: { type: String, default: "onBlur" }, showError: { type: Boolean, default: !0 }, showErrorMessage: { type: Boolean, default: !0 } }, provide: function() { return { vanForm: this } }, data: function() { return { fields: [] } }, methods: { getFieldsByNames: function(t) { return t ? this.fields.filter((function(e) { return -1 !== t.indexOf(e.name) } )) : this.fields }, validateSeq: function(t) { var e = this; return new Promise((function(i, n) { var s = []; e.getFieldsByNames(t).reduce((function(t, e) { return t.then((function() { if (!s.length) return e.validate().then((function(t) { t && s.push(t) } )) } )) } ), Promise.resolve()).then((function() { s.length ? n(s) : i() } )) } )) }, validateFields: function(t) { var e = this; return new Promise((function(i, n) { var s = e.getFieldsByNames(t); Promise.all(s.map((function(t) { return t.validate() } ))).then((function(t) { (t = t.filter((function(t) { return t } ))).length ? n(t) : i() } )) } )) }, validate: function(t) { return t && !Array.isArray(t) ? this.validateField(t) : this.validateFirst ? this.validateSeq(t) : this.validateFields(t) }, validateField: function(t) { var e = this.fields.filter((function(e) { return e.name === t } )); return e.length ? new Promise((function(t, i) { e[0].validate().then((function(e) { e ? i(e) : t() } )) } )) : Promise.reject() }, resetValidation: function(t) { t && !Array.isArray(t) && (t = [t]), this.getFieldsByNames(t).forEach((function(t) { t.resetValidation() } )) }, scrollToField: function(t, e) { this.fields.some((function(i) { return i.name === t && (i.$el.scrollIntoView(e), !0) } )) }, addField: function(t) { this.fields.push(t), De(this.fields, this) }, removeField: function(t) { this.fields = this.fields.filter((function(e) { return e !== t } )) }, getValues: function() { return this.fields.reduce((function(t, e) { return t[e.name] = e.formValue, t } ), {}) }, onSubmit: function(t) { t.preventDefault(), this.submit() }, submit: function() { var t = this , e = this.getValues(); this.validate().then((function() { t.$emit("submit", e) } )).catch((function(i) { t.$emit("failed", { values: e, errors: i }), t.scrollToError && t.scrollToField(i[0].name) } )) } }, render: function() { var t = arguments[0]; return t("form", { class: Fr(), on: { submit: this.onSubmit } }, [this.slots()]) } }) , _r = Object(l.a)("goods-action-icon") , Wr = _r[0] , qr = _r[1] , Ur = Wr({ mixins: [Pe("vanGoodsAction")], props: n({}, te, { dot: Boolean, text: String, icon: String, color: String, info: [Number, String], badge: [Number, String], iconClass: null }), methods: { onClick: function(t) { this.$emit("click", t), Zt(this.$router, this) }, genIcon: function() { var t, e = this.$createElement, i = this.slots("icon"), n = null != (t = this.badge) ? t : this.info; return i ? e("div", { class: qr("icon") }, [i, e(J, { attrs: { dot: this.dot, info: n } })]) : e(rt, { class: [qr("icon"), this.iconClass], attrs: { tag: "div", dot: this.dot, name: this.icon, badge: n, color: this.color } }) } }, render: function() { var t = arguments[0]; return t("div", { attrs: { role: "button", tabindex: "0" }, class: qr(), on: { click: this.onClick } }, [this.genIcon(), this.slots() || this.text]) } }) , Kr = Object(l.a)("grid") , Yr = Kr[0] , Xr = Kr[1] , Qr = Yr({ mixins: [Le("vanGrid")], props: { square: Boolean, gutter: [Number, String], iconSize: [Number, String], direction: String, clickable: Boolean, columnNum: { type: [Number, String], default: 4 }, center: { type: Boolean, default: !0 }, border: { type: Boolean, default: !0 } }, computed: { style: function() { var t = this.gutter; if (t) return { paddingLeft: Object(Y.a)(t) } } }, render: function() { var t, e = arguments[0]; return e("div", { style: this.style, class: [Xr(), (t = {}, t[Tt] = this.border && !this.gutter, t)] }, [this.slots()]) } }) , Gr = Object(l.a)("grid-item") , Zr = Gr[0] , Jr = Gr[1] , to = Zr({ mixins: [Pe("vanGrid")], props: n({}, te, { dot: Boolean, text: String, icon: String, iconPrefix: String, info: [Number, String], badge: [Number, String] }), computed: { style: function() { var t = this.parent , e = t.square , i = t.gutter , n = t.columnNum , s = 100 / n + "%" , r = { flexBasis: s }; if (e) r.paddingTop = s; else if (i) { var o = Object(Y.a)(i); r.paddingRight = o, this.index >= n && (r.marginTop = o) } return r }, contentStyle: function() { var t = this.parent , e = t.square , i = t.gutter; if (e && i) { var n = Object(Y.a)(i); return { right: n, bottom: n, height: "auto" } } } }, methods: { onClick: function(t) { this.$emit("click", t), Zt(this.$router, this) }, genIcon: function() { var t, e = this.$createElement, i = this.slots("icon"), n = null != (t = this.badge) ? t : this.info; return i ? e("div", { class: Jr("icon-wrapper") }, [i, e(J, { attrs: { dot: this.dot, info: n } })]) : this.icon ? e(rt, { attrs: { name: this.icon, dot: this.dot, badge: n, size: this.parent.iconSize, classPrefix: this.iconPrefix }, class: Jr("icon") }) : void 0 }, getText: function() { var t = this.$createElement , e = this.slots("text"); return e || (this.text ? t("span", { class: Jr("text") }, [this.text]) : void 0) }, genContent: function() { var t = this.slots(); return t || [this.genIcon(), this.getText()] } }, render: function() { var t, e = arguments[0], i = this.parent, n = i.center, s = i.border, r = i.square, o = i.gutter, a = i.direction, l = i.clickable; return e("div", { class: [Jr({ square: r })], style: this.style }, [e("div", { style: this.contentStyle, attrs: { role: l ? "button" : null, tabindex: l ? 0 : null }, class: [Jr("content", [a, { center: n, square: r, clickable: l, surround: s && o }]), (t = {}, t[Ot] = s, t)], on: { click: this.onClick } }, [this.genContent()])]) } }) , eo = Object(l.a)("image-preview") , io = eo[0] , no = eo[1] , so = Object(l.a)("swipe") , ro = so[0] , oo = so[1] , ao = ro({ mixins: [F, Le("vanSwipe"), W((function(t, e) { t(window, "resize", this.resize, !0), t(window, "orientationchange", this.resize, !0), t(window, "visibilitychange", this.onVisibilityChange), e ? this.initialize() : this.clear() } ))], props: { width: [Number, String], height: [Number, String], autoplay: [Number, String], vertical: Boolean, lazyRender: Boolean, indicatorColor: String, loop: { type: Boolean, default: !0 }, duration: { type: [Number, String], default: 500 }, touchable: { type: Boolean, default: !0 }, initialSwipe: { type: [Number, String], default: 0 }, showIndicators: { type: Boolean, default: !0 }, stopPropagation: { type: Boolean, default: !0 } }, data: function() { return { rect: null, offset: 0, active: 0, deltaX: 0, deltaY: 0, swiping: !1, computedWidth: 0, computedHeight: 0 } }, watch: { children: function() { this.initialize() }, initialSwipe: function() { this.initialize() }, autoplay: function(t) { t > 0 ? this.autoPlay() : this.clear() } }, computed: { count: function() { return this.children.length }, maxCount: function() { return Math.ceil(Math.abs(this.minOffset) / this.size) }, 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 = { transitionDuration: (this.swiping ? 0 : this.duration) + "ms", transform: "translate" + (this.vertical ? "Y" : "X") + "(" + this.offset + "px)" }; if (this.size) { var e = this.vertical ? "height" : "width" , i = this.vertical ? "width" : "height"; t[e] = this.trackSize + "px", t[i] = this[i] ? this[i] + "px" : "" } return t }, indicatorStyle: function() { return { backgroundColor: this.indicatorColor } }, minOffset: function() { return (this.vertical ? this.rect.height : this.rect.width) - this.size * this.count } }, mounted: function() { this.bindTouchEvent(this.$refs.track) }, methods: { initialize: function(t) { if (void 0 === t && (t = +this.initialSwipe), this.$el && !Sn(this.$el)) { clearTimeout(this.timer); var e = { width: this.$el.offsetWidth, height: this.$el.offsetHeight }; this.rect = e, this.swiping = !0, this.active = t, this.computedWidth = +this.width || e.width, this.computedHeight = +this.height || e.height, this.offset = this.getTargetOffset(t), this.children.forEach((function(t) { t.offset = 0 } )), this.autoPlay() } }, resize: function() { this.initialize(this.activeIndicator) }, onVisibilityChange: function() { document.hidden ? this.clear() : this.autoPlay() }, onTouchStart: function(t) { this.touchable && (this.clear(), this.touchStartTime = Date.now(), this.touchStart(t), this.correctPosition()) }, onTouchMove: function(t) { this.touchable && this.swiping && (this.touchMove(t), this.isCorrectDirection && (k(t, this.stopPropagation), this.move({ offset: this.delta }))) }, onTouchEnd: function() { if (this.touchable && this.swiping) { var t = this.size , e = this.delta , i = e / (Date.now() - this.touchStartTime); if ((Math.abs(i) > .25 || Math.abs(e) > t / 2) && this.isCorrectDirection) { var n = this.vertical ? this.offsetY : this.offsetX , s = 0; s = this.loop ? n > 0 ? e > 0 ? -1 : 1 : 0 : -Math[e > 0 ? "ceil" : "floor"](e / t), this.move({ pace: s, emitChange: !0 }) } else e && this.move({ pace: 0 }); this.swiping = !1, this.autoPlay() } }, getTargetActive: function(t) { var e = this.active , i = this.count , n = this.maxCount; return t ? this.loop ? Et(e + t, -1, i) : Et(e + t, 0, n) : e }, getTargetOffset: function(t, e) { void 0 === e && (e = 0); var i = t * this.size; this.loop || (i = Math.min(i, -this.minOffset)); var n = e - i; return this.loop || (n = Et(n, this.minOffset, 0)), n }, move: function(t) { var e = t.pace , i = void 0 === e ? 0 : e , n = t.offset , s = void 0 === n ? 0 : n , r = t.emitChange , o = this.loop , a = this.count , l = this.active , c = this.children , u = this.trackSize , h = this.minOffset; if (!(a <= 1)) { var d = this.getTargetActive(i) , f = this.getTargetOffset(d, s); if (o) { if (c[0] && f !== h) { var p = f < h; c[0].offset = p ? u : 0 } if (c[a - 1] && 0 !== f) { var m = f > 0; c[a - 1].offset = m ? -u : 0 } } this.active = d, this.offset = f, r && d !== l && this.$emit("change", this.activeIndicator) } }, prev: function() { var t = this; this.correctPosition(), this.resetTouchStatus(), Object(_i.b)((function() { t.swiping = !1, t.move({ pace: -1, emitChange: !0 }) } )) }, next: function() { var t = this; this.correctPosition(), this.resetTouchStatus(), Object(_i.b)((function() { t.swiping = !1, t.move({ pace: 1, emitChange: !0 }) } )) }, swipeTo: function(t, e) { var i = this; void 0 === e && (e = {}), this.correctPosition(), this.resetTouchStatus(), Object(_i.b)((function() { var n; n = i.loop && t === i.count ? 0 === i.active ? 0 : t : t % i.count, e.immediate ? Object(_i.b)((function() { i.swiping = !1 } )) : i.swiping = !1, i.move({ pace: n - i.active, emitChange: !0 }) } )) }, correctPosition: function() { this.swiping = !0, 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 > 0 && this.count > 1 && (this.clear(), this.timer = setTimeout((function() { t.next(), t.autoPlay() } ), e)) }, genIndicator: function() { var t = this , e = this.$createElement , i = this.count , n = this.activeIndicator , s = this.slots("indicator"); return s || (this.showIndicators && i > 1 ? e("div", { class: oo("indicators", { vertical: this.vertical }) }, [Array.apply(void 0, Array(i)).map((function(i, s) { return e("i", { class: oo("indicator", { active: s === n }), style: s === n ? t.indicatorStyle : null }) } ))]) : void 0) } }, render: function() { var t = arguments[0]; return t("div", { class: oo() }, [t("div", { ref: "track", style: this.trackStyle, class: oo("track", { vertical: this.vertical }) }, [this.slots()]), this.genIndicator()]) } }) , lo = Object(l.a)("swipe-item") , co = lo[0] , uo = lo[1] , ho = co({ mixins: [Pe("vanSwipe")], data: function() { return { offset: 0, inited: !1, mounted: !1 } }, mounted: function() { var t = this; this.$nextTick((function() { t.mounted = !0 } )) }, computed: { style: function() { var t = {} , e = this.parent , i = e.size , n = e.vertical; return i && (t[n ? "height" : "width"] = i + "px"), this.offset && (t.transform = "translate" + (n ? "Y" : "X") + "(" + this.offset + "px)"), t }, shouldRender: function() { var t = this.index , e = this.inited , i = this.parent , n = this.mounted; if (!i.lazyRender || e) return !0; if (!n) return !1; var s = i.activeIndicator , r = i.count - 1 , o = 0 === s && i.loop ? r : s - 1 , a = s === r && i.loop ? 0 : s + 1 , l = t === s || t === o || t === a; return l && (this.inited = !0), l } }, render: function() { var t = arguments[0]; return t("div", { class: uo(), style: this.style, on: n({}, this.$listeners) }, [this.shouldRender && this.slots()]) } }); function fo(t) { return Math.sqrt(Math.pow(t[0].clientX - t[1].clientX, 2) + Math.pow(t[0].clientY - t[1].clientY, 2)) } var po, mo = { mixins: [F], props: { src: String, show: Boolean, active: Number, minZoom: [Number, String], maxZoom: [Number, String], rootWidth: Number, rootHeight: Number }, data: function() { return { scale: 1, moveX: 0, moveY: 0, moving: !1, zooming: !1, imageRatio: 0, displayWidth: 0, displayHeight: 0 } }, computed: { vertical: function() { var t = this.rootWidth , e = this.rootHeight / t; return this.imageRatio > e }, imageStyle: function() { var t = this.scale , e = { transitionDuration: this.zooming || this.moving ? "0s" : ".3s" }; if (1 !== t) { var i = this.moveX / t , n = this.moveY / t; e.transform = "scale(" + t + ", " + t + ") translate(" + i + "px, " + n + "px)" } return e }, maxMoveX: function() { if (this.imageRatio) { var t = this.vertical ? this.rootHeight / this.imageRatio : this.rootWidth; return Math.max(0, (this.scale * t - this.rootWidth) / 2) } return 0 }, maxMoveY: function() { if (this.imageRatio) { var t = this.vertical ? this.rootHeight : this.rootWidth * this.imageRatio; return Math.max(0, (this.scale * t - this.rootHeight) / 2) } return 0 } }, watch: { active: "resetScale", show: function(t) { t || this.resetScale() } }, mounted: function() { this.bindTouchEvent(this.$el) }, methods: { resetScale: function() { this.setScale(1), this.moveX = 0, this.moveY = 0 }, setScale: function(t) { (t = Et(t, +this.minZoom, +this.maxZoom)) !== this.scale && (this.scale = t, this.$emit("scale", { scale: this.scale, index: this.active })) }, toggleScale: function() { var t = this.scale > 1 ? 1 : 2; this.setScale(t), this.moveX = 0, this.moveY = 0 }, onTouchStart: function(t) { var e = t.touches , i = this.offsetX , n = void 0 === i ? 0 : i; this.touchStart(t), this.touchStartTime = new Date, this.fingerNum = e.length, this.startMoveX = this.moveX, this.startMoveY = this.moveY, this.moving = 1 === this.fingerNum && 1 !== this.scale, this.zooming = 2 === this.fingerNum && !n, this.zooming && (this.startScale = this.scale, this.startDistance = fo(t.touches)) }, onTouchMove: function(t) { var e = t.touches; if (this.touchMove(t), (this.moving || this.zooming) && k(t, !0), this.moving) { var i = this.deltaX + this.startMoveX , n = this.deltaY + this.startMoveY; this.moveX = Et(i, -this.maxMoveX, this.maxMoveX), this.moveY = Et(n, -this.maxMoveY, this.maxMoveY) } if (this.zooming && 2 === e.length) { var s = fo(e) , r = this.startScale * s / this.startDistance; this.setScale(r) } }, onTouchEnd: function(t) { var e = !1; (this.moving || this.zooming) && (e = !0, this.moving && this.startMoveX === this.moveX && this.startMoveY === this.moveY && (e = !1), t.touches.length || (this.zooming && (this.moveX = Et(this.moveX, -this.maxMoveX, this.maxMoveX), this.moveY = Et(this.moveY, -this.maxMoveY, this.maxMoveY), this.zooming = !1), this.moving = !1, this.startMoveX = 0, this.startMoveY = 0, this.startScale = 1, this.scale < 1 && this.resetScale())), k(t, e), this.checkTap(), this.resetTouchStatus() }, checkTap: function() { var t = this; if (!(this.fingerNum > 1)) { var e = this.offsetX , i = void 0 === e ? 0 : e , n = this.offsetY , s = void 0 === n ? 0 : n , r = new Date - this.touchStartTime; i < 5 && s < 5 && r < 250 && (this.doubleTapTimer ? (clearTimeout(this.doubleTapTimer), this.doubleTapTimer = null, this.toggleScale()) : this.doubleTapTimer = setTimeout((function() { t.$emit("close"), t.doubleTapTimer = null } ), 250)) } }, onLoad: function(t) { var e = t.target , i = e.naturalWidth , n = e.naturalHeight; this.imageRatio = n / i } }, render: function() { var t = arguments[0] , e = { loading: function() { return t(vt, { attrs: { type: "spinner" } }) } }; return t(ho, { class: no("swipe-item") }, [t(un, { attrs: { src: this.src, fit: "contain" }, class: no("image", { vertical: this.vertical }), style: this.imageStyle, scopedSlots: e, on: { load: this.onLoad } })]) } }, vo = io({ mixins: [F, K({ skipToggleEvent: !0 }), W((function(t) { t(window, "resize", this.resize, !0), t(window, "orientationchange", this.resize, !0) } ))], props: { className: null, closeable: Boolean, asyncClose: Boolean, overlayStyle: Object, showIndicators: Boolean, images: { type: Array, default: function() { return [] } }, loop: { type: Boolean, default: !0 }, overlay: { type: Boolean, default: !0 }, minZoom: { type: [Number, String], default: 1 / 3 }, maxZoom: { type: [Number, String], default: 3 }, transition: { type: String, default: "van-fade" }, showIndex: { type: Boolean, default: !0 }, swipeDuration: { type: [Number, String], default: 300 }, startPosition: { type: [Number, String], default: 0 }, overlayClass: { type: String, default: no("overlay") }, closeIcon: { type: String, default: "clear" }, closeOnPopstate: { type: Boolean, default: !0 }, closeIconPosition: { type: String, default: "top-right" } }, data: function() { return { active: 0, rootWidth: 0, rootHeight: 0, doubleClickTimer: null } }, mounted: function() { this.resize() }, watch: { startPosition: "setActive", value: function(t) { var e = this; t ? (this.setActive(+this.startPosition), this.$nextTick((function() { e.resize(), e.$refs.swipe.swipeTo(+e.startPosition, { immediate: !0 }) } ))) : this.$emit("close", { index: this.active, url: this.images[this.active] }) } }, methods: { resize: function() { if (this.$el && this.$el.getBoundingClientRect) { var t = this.$el.getBoundingClientRect(); this.rootWidth = t.width, this.rootHeight = t.height } }, emitClose: function() { this.asyncClose || this.$emit("input", !1) }, emitScale: function(t) { this.$emit("scale", t) }, setActive: function(t) { t !== this.active && (this.active = t, this.$emit("change", t)) }, genIndex: function() { var t = this.$createElement; if (this.showIndex) return t("div", { class: no("index") }, [this.slots("index", { index: this.active }) || this.active + 1 + " / " + this.images.length]) }, genCover: function() { var t = this.$createElement , e = this.slots("cover"); if (e) return t("div", { class: no("cover") }, [e]) }, genImages: function() { var t = this , e = this.$createElement; return e(ao, { ref: "swipe", attrs: { lazyRender: !0, loop: this.loop, duration: this.swipeDuration, initialSwipe: this.startPosition, showIndicators: this.showIndicators, indicatorColor: "white" }, class: no("swipe"), on: { change: this.setActive } }, [this.images.map((function(i) { return e(mo, { attrs: { src: i, show: t.value, active: t.active, maxZoom: t.maxZoom, minZoom: t.minZoom, rootWidth: t.rootWidth, rootHeight: t.rootHeight }, on: { scale: t.emitScale, close: t.emitClose } }) } ))]) }, genClose: function() { var t = this.$createElement; if (this.closeable) return t(rt, { attrs: { role: "button", name: this.closeIcon }, class: no("close-icon", this.closeIconPosition), on: { click: this.emitClose } }) }, onClosed: function() { this.$emit("closed") }, swipeTo: function(t, e) { this.$refs.swipe && this.$refs.swipe.swipeTo(t, e) } }, render: function() { var t = arguments[0]; return t("transition", { attrs: { name: this.transition }, on: { afterLeave: this.onClosed } }, [this.shouldRender ? t("div", { directives: [{ name: "show", value: this.value }], class: [no(), this.className] }, [this.genClose(), this.genImages(), this.genIndex(), this.genCover()]) : null]) } }), go = { loop: !0, value: !0, images: [], maxZoom: 3, minZoom: 1 / 3, onClose: null, onChange: null, className: "", showIndex: !0, closeable: !1, closeIcon: "clear", asyncClose: !1, transition: "van-fade", getContainer: "body", overlayStyle: null, startPosition: 0, swipeDuration: 300, showIndicators: !1, closeOnPopstate: !0, closeIconPosition: "top-right" }, bo = function(t, e) { if (void 0 === e && (e = 0), !m.h) { po || (po = new (a.a.extend(vo))({ el: document.createElement("div") }), document.body.appendChild(po.$el), po.$on("change", (function(t) { po.onChange && po.onChange(t) } )), po.$on("scale", (function(t) { po.onScale && po.onScale(t) } ))); var i = Array.isArray(t) ? { images: t, startPosition: e } : t; return n(po, go, i), po.$once("input", (function(t) { po.value = t } )), po.$once("closed", (function() { po.images = [] } )), i.onClose && (po.$off("close"), po.$once("close", i.onClose)), po } }; bo.Component = vo, bo.install = function() { a.a.use(vo) } ; var yo = bo , So = Object(l.a)("index-anchor") , ko = So[0] , xo = So[1] , wo = ko({ mixins: [Pe("vanIndexBar", { indexKey: "childrenIndex" })], props: { index: [Number, String] }, data: function() { return { top: 0, left: null, rect: { top: 0, height: 0 }, width: null, active: !1 } }, computed: { sticky: function() { return this.active && this.parent.sticky }, anchorStyle: function() { if (this.sticky) return { zIndex: "" + this.parent.zIndex, left: this.left ? this.left + "px" : null, width: this.width ? this.width + "px" : null, transform: "translate3d(0, " + this.top + "px, 0)", color: this.parent.highlightColor } } }, mounted: function() { var t = this.$el.getBoundingClientRect(); this.rect.height = t.height }, methods: { scrollIntoView: function() { this.$el.scrollIntoView() }, getRect: function(t, e) { var i = this.$el.getBoundingClientRect(); return this.rect.height = i.height, t === window || t === document.body ? this.rect.top = i.top + z() : this.rect.top = i.top + M(t) - e.top, this.rect } }, render: function() { var t, e = arguments[0], i = this.sticky; return e("div", { style: { height: i ? this.rect.height + "px" : null } }, [e("div", { style: this.anchorStyle, class: [xo({ sticky: i }), (t = {}, t[$t] = i, t)] }, [this.slots("default") || this.index])]) } }); var Co = Object(l.a)("index-bar") , Oo = Co[0] , To = Co[1] , $o = Oo({ mixins: [F, Le("vanIndexBar"), W((function(t) { this.scroller || (this.scroller = N(this.$el)), t(this.scroller, "scroll", this.onScroll) } ))], props: { zIndex: [Number, String], highlightColor: String, sticky: { type: Boolean, default: !0 }, stickyOffsetTop: { type: Number, default: 0 }, indexList: { type: Array, default: function() { for (var t = [], e = "A".charCodeAt(0), i = 0; i < 26; i++) t.push(String.fromCharCode(e + i)); return t } } }, data: function() { return { activeAnchorIndex: null } }, computed: { sidebarStyle: function() { if (Object(m.c)(this.zIndex)) return { zIndex: this.zIndex + 1 } }, highlightStyle: function() { var t = this.highlightColor; if (t) return { color: t } } }, watch: { indexList: function() { this.$nextTick(this.onScroll) }, activeAnchorIndex: function(t) { t && this.$emit("change", t) } }, methods: { onScroll: function() { var t = this; if (!Sn(this.$el)) { var e = M(this.scroller) , i = this.getScrollerRect() , n = this.children.map((function(e) { return e.getRect(t.scroller, i) } )) , s = this.getActiveAnchorIndex(e, n); this.activeAnchorIndex = this.indexList[s], this.sticky && this.children.forEach((function(r, o) { if (o === s || o === s - 1) { var a = r.$el.getBoundingClientRect(); r.left = a.left, r.width = a.width } else r.left = null, r.width = null; if (o === s) r.active = !0, r.top = Math.max(t.stickyOffsetTop, n[o].top - e) + i.top; else if (o === s - 1) { var l = n[s].top - e; r.active = l > 0, r.top = l + i.top - n[o].height } else r.active = !1 } )) } }, getScrollerRect: function() { return this.scroller.getBoundingClientRect ? this.scroller.getBoundingClientRect() : { top: 0, left: 0 } }, getActiveAnchorIndex: function(t, e) { for (var i = this.children.length - 1; i >= 0; i--) { var n = i > 0 ? e[i - 1].height : 0; if (t + (this.sticky ? n + this.stickyOffsetTop : 0) >= e[i].top) return i } return -1 }, onClick: function(t) { this.scrollToElement(t.target) }, onTouchMove: function(t) { if (this.touchMove(t), "vertical" === this.direction) { k(t); var e = t.touches[0] , i = e.clientX , n = e.clientY , s = document.elementFromPoint(i, n); if (s) { var r = s.dataset.index; this.touchActiveIndex !== r && (this.touchActiveIndex = r, this.scrollToElement(s)) } } }, scrollTo: function(t) { var e = this.children.filter((function(e) { return String(e.index) === t } )); e[0] && (e[0].scrollIntoView(), this.sticky && this.stickyOffsetTop && V(z() - this.stickyOffsetTop), this.$emit("select", e[0].index)) }, scrollToElement: function(t) { var e = t.dataset.index; this.scrollTo(e) }, onTouchEnd: function() { this.active = null } }, render: function() { var t = this , e = arguments[0] , i = this.indexList.map((function(i) { var n = i === t.activeAnchorIndex; return e("span", { class: To("index", { active: n }), style: n ? t.highlightStyle : null, attrs: { "data-index": i } }, [i]) } )); return e("div", { class: To() }, [e("div", { class: To("sidebar"), style: this.sidebarStyle, on: { click: this.onClick, touchstart: this.touchStart, touchmove: this.onTouchMove, touchend: this.onTouchEnd, touchcancel: this.onTouchEnd } }, [i]), this.slots("default")]) } }) , Bo = i(9) , Io = i.n(Bo).a , Eo = Object(l.a)("list") , jo = Eo[0] , Do = Eo[1] , Po = Eo[2] , Lo = jo({ mixins: [W((function(t) { this.scroller || (this.scroller = N(this.$el)), t(this.scroller, "scroll", this.check) } ))], model: { prop: "loading" }, props: { error: Boolean, loading: Boolean, finished: Boolean, errorText: String, loadingText: String, finishedText: String, immediateCheck: { type: Boolean, default: !0 }, offset: { type: [Number, String], default: 300 }, direction: { type: String, default: "down" } }, data: function() { return { innerLoading: this.loading } }, updated: function() { this.innerLoading = this.loading }, mounted: function() { this.immediateCheck && this.check() }, watch: { loading: "check", finished: "check" }, methods: { check: function() { var t = this; this.$nextTick((function() { if (!(t.innerLoading || t.finished || t.error)) { var e, i = t.$el, n = t.scroller, s = t.offset, r = t.direction; if (!((e = n.getBoundingClientRect ? n.getBoundingClientRect() : { top: 0, bottom: n.innerHeight }).bottom - e.top) || Sn(i)) return !1; var o = t.$refs.placeholder.getBoundingClientRect(); ("up" === r ? e.top - o.top <= s : o.bottom - e.bottom <= s) && (t.innerLoading = !0, t.$emit("input", !0), t.$emit("load")) } } )) }, clickErrorText: function() { this.$emit("update:error", !1), this.check() }, genLoading: function() { var t = this.$createElement; if (this.innerLoading && !this.finished) return t("div", { key: "loading", class: Do("loading") }, [this.slots("loading") || t(vt, { attrs: { size: "16" } }, [this.loadingText || Po("loading")])]) }, genFinishedText: function() { var t = this.$createElement; if (this.finished) { var e = this.slots("finished") || this.finishedText; if (e) return t("div", { class: Do("finished-text") }, [e]) } }, genErrorText: function() { var t = this.$createElement; if (this.error) { var e = this.slots("error") || this.errorText; if (e) return t("div", { on: { click: this.clickErrorText }, class: Do("error-text") }, [e]) } } }, render: function() { var t = arguments[0] , e = t("div", { ref: "placeholder", key: "placeholder", class: Do("placeholder") }); return t("div", { class: Do(), attrs: { role: "feed", "aria-busy": this.innerLoading } }, ["down" === this.direction ? this.slots() : e, this.genLoading(), this.genFinishedText(), this.genErrorText(), "up" === this.direction ? this.slots() : e]) } }) , No = i(7) , Mo = Object(l.a)("nav-bar") , Ao = Mo[0] , zo = Mo[1] , Vo = Ao({ props: { title: String, fixed: Boolean, zIndex: [Number, String], leftText: String, rightText: String, leftArrow: Boolean, placeholder: Boolean, safeAreaInsetTop: Boolean, border: { type: Boolean, default: !0 } }, data: function() { return { height: null } }, mounted: function() { var t = this; if (this.placeholder && this.fixed) { var e = function() { t.height = t.$refs.navBar.getBoundingClientRect().height }; e(), setTimeout(e, 100) } }, methods: { genLeft: function() { var t = this.$createElement , e = this.slots("left"); return e || [this.leftArrow && t(rt, { class: zo("arrow"), attrs: { name: "arrow-left" } }), this.leftText && t("span", { class: zo("text") }, [this.leftText])] }, genRight: function() { var t = this.$createElement , e = this.slots("right"); return e || (this.rightText ? t("span", { class: zo("text") }, [this.rightText]) : void 0) }, genNavBar: function() { var t, e = this.$createElement; return e("div", { ref: "navBar", style: { zIndex: this.zIndex }, class: [zo({ fixed: this.fixed, "safe-area-inset-top": this.safeAreaInsetTop }), (t = {}, t[$t] = this.border, t)] }, [e("div", { class: zo("content") }, [this.hasLeft() && e("div", { class: zo("left"), on: { click: this.onClickLeft } }, [this.genLeft()]), e("div", { class: [zo("title"), "van-ellipsis"] }, [this.slots("title") || this.title]), this.hasRight() && e("div", { class: zo("right"), on: { click: this.onClickRight } }, [this.genRight()])])]) }, hasLeft: function() { return this.leftArrow || this.leftText || this.slots("left") }, hasRight: function() { return this.rightText || this.slots("right") }, onClickLeft: function(t) { this.$emit("click-left", t) }, onClickRight: function(t) { this.$emit("click-right", t) } }, render: function() { var t = arguments[0]; return this.placeholder && this.fixed ? t("div", { class: zo("placeholder"), style: { height: this.height + "px" } }, [this.genNavBar()]) : this.genNavBar() } }) , Ro = Object(l.a)("notice-bar") , Fo = Ro[0] , Ho = Ro[1] , _o = Fo({ mixins: [W((function(t) { t(window, "pageshow", this.reset) } ))], inject: { vanPopup: { default: null } }, props: { text: String, mode: String, color: String, leftIcon: String, wrapable: Boolean, background: String, scrollable: { type: Boolean, default: null }, delay: { type: [Number, String], default: 1 }, speed: { type: [Number, String], default: 60 } }, data: function() { return { show: !0, offset: 0, duration: 0, wrapWidth: 0, contentWidth: 0 } }, watch: { scrollable: "reset", text: { handler: "reset", immediate: !0 } }, created: function() { this.vanPopup && this.vanPopup.onReopen(this.reset) }, activated: function() { this.reset() }, methods: { onClickIcon: function(t) { "closeable" === this.mode && (this.show = !1, this.$emit("close", t)) }, onTransitionEnd: function() { var t = this; this.offset = this.wrapWidth, this.duration = 0, Object(_i.c)((function() { Object(_i.b)((function() { t.offset = -t.contentWidth, t.duration = (t.contentWidth + t.wrapWidth) / t.speed, t.$emit("replay") } )) } )) }, start: function() { this.reset() }, reset: function() { var t = this , e = Object(m.c)(this.delay) ? 1e3 * this.delay : 0; this.offset = 0, this.duration = 0, this.wrapWidth = 0, this.contentWidth = 0, clearTimeout(this.startTimer), this.startTimer = setTimeout((function() { var e = t.$refs , i = e.wrap , n = e.content; if (i && n && !1 !== t.scrollable) { var s = i.getBoundingClientRect().width , r = n.getBoundingClientRect().width; (t.scrollable || r > s) && Object(_i.b)((function() { t.offset = -r, t.duration = r / t.speed, t.wrapWidth = s, t.contentWidth = r } )) } } ), e) } }, render: function() { var t = this , e = arguments[0] , i = this.slots , n = this.mode , s = this.leftIcon , r = this.onClickIcon , o = { color: this.color, background: this.background } , a = { transform: this.offset ? "translateX(" + this.offset + "px)" : "", transitionDuration: this.duration + "s" }; function l() { var t = i("left-icon"); return t || (s ? e(rt, { class: Ho("left-icon"), attrs: { name: s } }) : void 0) } function c() { var t, s = i("right-icon"); return s || ("closeable" === n ? t = "cross" : "link" === n && (t = "arrow"), t ? e(rt, { class: Ho("right-icon"), attrs: { name: t }, on: { click: r } }) : void 0) } return e("div", { attrs: { role: "alert" }, directives: [{ name: "show", value: this.show }], class: Ho({ wrapable: this.wrapable }), style: o, on: { click: function(e) { t.$emit("click", e) } } }, [l(), e("div", { ref: "wrap", class: Ho("wrap"), attrs: { role: "marquee" } }, [e("div", { ref: "content", class: [Ho("content"), { "van-ellipsis": !1 === this.scrollable && !this.wrapable }], style: a, on: { transitionend: this.onTransitionEnd } }, [this.slots() || this.text])]), c()]) } }) , Wo = Object(l.a)("notify") , qo = Wo[0] , Uo = Wo[1]; function Ko(t, e, i, n) { var s = { color: e.color, background: e.background }; return t(ct, r()([{ attrs: { value: e.value, position: "top", overlay: !1, duration: .2, lockScroll: !1 }, style: s, class: [Uo([e.type]), e.className] }, h(n, !0)]), [(null == i.default ? void 0 : i.default()) || e.message]) } Ko.props = n({}, U, { color: String, message: [Number, String], duration: [Number, String], className: null, background: String, getContainer: [String, Function], type: { type: String, default: "danger" } }); var Yo, Xo, Qo = qo(Ko); function Go(t) { var e; if (!m.h) return Xo || (Xo = f(Qo, { on: { click: function(t) { Xo.onClick && Xo.onClick(t) }, close: function() { Xo.onClose && Xo.onClose() }, opened: function() { Xo.onOpened && Xo.onOpened() } } })), t = n({}, Go.currentOptions, (e = t, Object(m.f)(e) ? e : { message: e })), n(Xo, t), clearTimeout(Yo), t.duration && t.duration > 0 && (Yo = setTimeout(Go.clear, t.duration)), Xo } Go.clear = function() { Xo && (Xo.value = !1) } , Go.currentOptions = { type: "danger", value: !0, message: "", color: void 0, background: void 0, duration: 3e3, className: "", onClose: null, onClick: null, onOpened: null }, Go.setDefaultOptions = function(t) { n(Go.currentOptions, t) } , Go.resetDefaultOptions = function() { Go.currentOptions = { type: "danger", value: !0, message: "", color: void 0, background: void 0, duration: 3e3, className: "", onClose: null, onClick: null, onOpened: null } } , Go.install = function() { a.a.use(Qo) } , Go.Component = Qo, a.a.prototype.$notify = Go; var Zo = Go , Jo = { render: function() { var t = arguments[0]; return t("svg", { attrs: { viewBox: "0 0 32 22", xmlns: "http://www.w3.org/2000/svg" } }, [t("path", { attrs: { d: "M28.016 0A3.991 3.991 0 0132 3.987v14.026c0 2.2-1.787 3.987-3.98 3.987H10.382c-.509 0-.996-.206-1.374-.585L.89 13.09C.33 12.62 0 11.84 0 11.006c0-.86.325-1.62.887-2.08L9.01.585A1.936 1.936 0 0110.383 0zm0 1.947H10.368L2.24 10.28c-.224.226-.312.432-.312.73 0 .287.094.51.312.729l8.128 8.333h17.648a2.041 2.041 0 002.037-2.04V3.987c0-1.127-.915-2.04-2.037-2.04zM23.028 6a.96.96 0 01.678.292.95.95 0 01-.003 1.377l-3.342 3.348 3.326 3.333c.189.188.292.43.292.679 0 .248-.103.49-.292.679a.96.96 0 01-.678.292.959.959 0 01-.677-.292L18.99 12.36l-3.343 3.345a.96.96 0 01-.677.292.96.96 0 01-.678-.292.962.962 0 01-.292-.68c0-.248.104-.49.292-.679l3.342-3.348-3.342-3.348A.963.963 0 0114 6.971c0-.248.104-.49.292-.679A.96.96 0 0114.97 6a.96.96 0 01.677.292l3.358 3.348 3.345-3.348A.96.96 0 0123.028 6z", fill: "currentColor" } })]) } } , ta = { render: function() { var t = arguments[0]; return t("svg", { attrs: { viewBox: "0 0 30 24", xmlns: "http://www.w3.org/2000/svg" } }, [t("path", { attrs: { d: "M25.877 12.843h-1.502c-.188 0-.188 0-.188.19v1.512c0 .188 0 .188.188.188h1.5c.187 0 .187 0 .187-.188v-1.511c0-.19 0-.191-.185-.191zM17.999 10.2c0 .188 0 .188.188.188h1.687c.188 0 .188 0 .188-.188V8.688c0-.187.004-.187-.186-.19h-1.69c-.187 0-.187 0-.187.19V10.2zm2.25-3.967h1.5c.188 0 .188 0 .188-.188v-1.7c0-.19 0-.19-.188-.19h-1.5c-.189 0-.189 0-.189.19v1.7c0 .188 0 .188.19.188zm2.063 4.157h3.563c.187 0 .187 0 .187-.189V4.346c0-.19.004-.19-.185-.19h-1.69c-.187 0-.187 0-.187.188v4.155h-1.688c-.187 0-.187 0-.187.189v1.514c0 .19 0 .19.187.19zM14.812 24l2.812-3.4H12l2.813 3.4zm-9-11.157H4.31c-.188 0-.188 0-.188.19v1.512c0 .188 0 .188.188.188h1.502c.187 0 .187 0 .187-.188v-1.511c0-.19.01-.191-.189-.191zm15.937 0H8.25c-.188 0-.188 0-.188.19v1.512c0 .188 0 .188.188.188h13.5c.188 0 .188 0 .188-.188v-1.511c0-.19 0-.191-.188-.191zm-11.438-2.454h1.5c.188 0 .188 0 .188-.188V8.688c0-.187 0-.187-.188-.189h-1.5c-.187 0-.187 0-.187.189V10.2c0 .188 0 .188.187.188zM27.94 0c.563 0 .917.21 1.313.567.518.466.748.757.748 1.51v14.92c0 .567-.188 1.134-.562 1.512-.376.378-.938.566-1.313.566H2.063c-.563 0-.938-.188-1.313-.566-.562-.378-.75-.945-.75-1.511V2.078C0 1.51.188.944.562.567.938.189 1.5 0 1.875 0zm-.062 2H2v14.92h25.877V2zM5.81 4.157c.19 0 .19 0 .19.189v1.762c-.003.126-.024.126-.188.126H4.249c-.126-.003-.126-.023-.126-.188v-1.7c-.187-.19 0-.19.188-.19zm10.5 2.077h1.503c.187 0 .187 0 .187-.188v-1.7c0-.19 0-.19-.187-.19h-1.502c-.188 0-.188.001-.188.19v1.7c0 .188 0 .188.188.188zM7.875 8.5c.187 0 .187.002.187.189V10.2c0 .188 0 .188-.187.188H4.249c-.126-.002-.126-.023-.126-.188V8.625c.003-.126.024-.126.188-.126zm7.875 0c.19.002.19.002.19.189v1.575c-.003.126-.024.126-.19.126h-1.563c-.126-.002-.126-.023-.126-.188V8.625c.002-.126.023-.126.189-.126zm-6-4.342c.187 0 .187 0 .187.189v1.7c0 .188 0 .188-.187.188H8.187c-.126-.003-.126-.023-.126-.188V4.283c.003-.126.024-.126.188-.126zm3.94 0c.185 0 .372 0 .372.189v1.762c-.002.126-.023.126-.187.126h-1.75C12 6.231 12 6.211 12 6.046v-1.7c0-.19.187-.19.187-.19z", fill: "currentColor" } })]) } } , ea = Object(l.a)("key") , ia = ea[0] , na = ea[1] , sa = ia({ mixins: [F], props: { type: String, text: [Number, String], color: String, wider: Boolean, large: Boolean, loading: Boolean }, data: function() { return { active: !1 } }, mounted: function() { this.bindTouchEvent(this.$el) }, methods: { onTouchStart: function(t) { t.stopPropagation(), this.touchStart(t), this.active = !0 }, onTouchMove: function(t) { this.touchMove(t), this.direction && (this.active = !1) }, onTouchEnd: function(t) { this.active && (this.slots("default") || t.preventDefault(), this.active = !1, this.$emit("press", this.text, this.type)) }, genContent: function() { var t = this.$createElement , e = "extra" === this.type , i = "delete" === this.type , n = this.slots("default") || this.text; return this.loading ? t(vt, { class: na("loading-icon") }) : i ? n || t(Jo, { class: na("delete-icon") }) : e ? n || t(ta, { class: na("collapse-icon") }) : n } }, render: function() { var t = arguments[0]; return t("div", { class: na("wrapper", { wider: this.wider }) }, [t("div", { attrs: { role: "button", tabindex: "0" }, class: na([this.color, { large: this.large, active: this.active, delete: "delete" === this.type }]) }, [this.genContent()])]) } }) , ra = Object(l.a)("number-keyboard") , oa = ra[0] , aa = ra[1] , la = oa({ mixins: [H(), W((function(t) { this.hideOnClickOutside && t(document.body, "touchstart", this.onBlur) } ))], model: { event: "update:value" }, props: { show: Boolean, title: String, zIndex: [Number, String], randomKeyOrder: Boolean, closeButtonText: String, deleteButtonText: String, closeButtonLoading: Boolean, theme: { type: String, default: "default" }, value: { type: String, default: "" }, extraKey: { type: [String, Array], default: "" }, maxlength: { type: [Number, String], default: Number.MAX_VALUE }, transition: { type: Boolean, default: !0 }, showDeleteKey: { type: Boolean, default: !0 }, hideOnClickOutside: { type: Boolean, default: !0 }, safeAreaInsetBottom: { type: Boolean, default: !0 } }, watch: { show: function(t) { this.transition || this.$emit(t ? "show" : "hide") } }, computed: { keys: function() { return "custom" === this.theme ? this.genCustomKeys() : this.genDefaultKeys() } }, methods: { genBasicKeys: function() { for (var t = [], e = 1; e <= 9; e++) t.push({ text: e }); return this.randomKeyOrder && t.sort((function() { return Math.random() > .5 ? 1 : -1 } )), t }, genDefaultKeys: function() { return [].concat(this.genBasicKeys(), [{ text: this.extraKey, type: "extra" }, { text: 0 }, { text: this.showDeleteKey ? this.deleteButtonText : "", type: this.showDeleteKey ? "delete" : "" }]) }, genCustomKeys: function() { var t = this.genBasicKeys() , e = this.extraKey , i = Array.isArray(e) ? e : [e]; return 1 === i.length ? t.push({ text: 0, wider: !0 }, { text: i[0], type: "extra" }) : 2 === i.length && t.push({ text: i[0], type: "extra" }, { text: 0 }, { text: i[1], type: "extra" }), t }, onBlur: function() { this.show && this.$emit("blur") }, onClose: function() { this.$emit("close"), this.onBlur() }, onAnimationEnd: function() { this.$emit(this.show ? "show" : "hide") }, onPress: function(t, e) { if ("" !== t) { var i = this.value; "delete" === e ? (this.$emit("delete"), this.$emit("update:value", i.slice(0, i.length - 1))) : "close" === e ? this.onClose() : i.length < this.maxlength && (this.$emit("input", t), this.$emit("update:value", i + t)) } else "extra" === e && this.onBlur() }, genTitle: function() { var t = this.$createElement , e = this.title , i = this.theme , n = this.closeButtonText , s = this.slots("title-left") , r = n && "default" === i; if (e || r || s) return t("div", { class: aa("header") }, [s && t("span", { class: aa("title-left") }, [s]), e && t("h2", { class: aa("title") }, [e]), r && t("button", { attrs: { type: "button" }, class: aa("close"), on: { click: this.onClose } }, [n])]) }, genKeys: function() { var t = this , e = this.$createElement; return this.keys.map((function(i) { return e(sa, { key: i.text, attrs: { text: i.text, type: i.type, wider: i.wider, color: i.color }, on: { press: t.onPress } }, ["delete" === i.type && t.slots("delete"), "extra" === i.type && t.slots("extra-key")]) } )) }, genSidebar: function() { var t = this.$createElement; if ("custom" === this.theme) return t("div", { class: aa("sidebar") }, [this.showDeleteKey && t(sa, { attrs: { large: !0, text: this.deleteButtonText, type: "delete" }, on: { press: this.onPress } }, [this.slots("delete")]), t(sa, { attrs: { large: !0, text: this.closeButtonText, type: "close", color: "blue", loading: this.closeButtonLoading }, on: { press: this.onPress } })]) } }, render: function() { var t = arguments[0] , e = this.genTitle(); return t("transition", { attrs: { name: this.transition ? "van-slide-up" : "" } }, [t("div", { directives: [{ name: "show", value: this.show }], style: { zIndex: this.zIndex }, class: aa({ unfit: !this.safeAreaInsetBottom, "with-title": e }), on: { touchstart: S, animationend: this.onAnimationEnd, webkitAnimationEnd: this.onAnimationEnd } }, [e, t("div", { class: aa("body") }, [t("div", { class: aa("keys") }, [this.genKeys()]), this.genSidebar()])])]) } }) , ca = Object(l.a)("pagination") , ua = ca[0] , ha = ca[1] , da = ca[2]; function fa(t, e, i) { return { number: t, text: e, active: i } } var pa = ua({ props: { prevText: String, nextText: String, forceEllipses: Boolean, mode: { type: String, default: "multi" }, value: { type: Number, default: 0 }, pageCount: { type: [Number, String], default: 0 }, totalItems: { type: [Number, String], default: 0 }, itemsPerPage: { type: [Number, String], default: 10 }, showPageSize: { type: [Number, String], 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 , i = +this.showPageSize; if ("multi" !== this.mode) return t; var n = 1 , s = e , r = i < e; r && (s = (n = Math.max(this.value - Math.floor(i / 2), 1)) + i - 1) > e && (n = (s = e) - i + 1); for (var o = n; o <= s; o++) { var a = fa(o, o, o === this.value); t.push(a) } if (r && i > 0 && this.forceEllipses) { if (n > 1) { var l = fa(n - 1, "...", !1); t.unshift(l) } if (s < e) { var c = fa(s + 1, "...", !1); t.push(c) } } return t } }, watch: { value: { handler: function(t) { this.select(t || this.value) }, immediate: !0 } }, methods: { select: function(t, e) { t = Math.min(this.count, Math.max(1, t)), this.value !== t && (this.$emit("input", t), e && this.$emit("change", t)) } }, render: function() { var t, e, i = this, n = arguments[0], s = this.value, r = "multi" !== this.mode, o = function(t) { return function() { i.select(t, !0) } }; return n("ul", { class: ha({ simple: r }) }, [n("li", { class: [ha("item", { disabled: 1 === s }), ha("prev"), Ot], on: { click: o(s - 1) } }, [(null != (t = this.slots("prev-text")) ? t : this.prevText) || da("prev")]), this.pages.map((function(t) { var e; return n("li", { class: [ha("item", { active: t.active }), ha("page"), Ot], on: { click: o(t.number) } }, [null != (e = i.slots("page", t)) ? e : t.text]) } )), r && n("li", { class: ha("page-desc") }, [this.slots("pageDesc") || s + "/" + this.count]), n("li", { class: [ha("item", { disabled: s === this.count }), ha("next"), Ot], on: { click: o(s + 1) } }, [(null != (e = this.slots("next-text")) ? e : this.nextText) || da("next")])]) } }) , ma = Object(l.a)("panel") , va = ma[0] , ga = ma[1]; function ba(t, e, i, n) { return t(Kn, r()([{ class: ga(), scopedSlots: { default: function() { return [i.header ? i.header() : t(oe, { attrs: { icon: e.icon, label: e.desc, title: e.title, value: e.status, valueClass: ga("header-value") }, class: ga("header") }), t("div", { class: ga("content") }, [i.default && i.default()]), i.footer && t("div", { class: [ga("footer"), Tt] }, [i.footer()])] } } }, h(n, !0)])) } ba.props = { icon: String, desc: String, title: String, status: String }; var ya = va(ba) , Sa = Object(l.a)("password-input") , ka = Sa[0] , xa = Sa[1]; function wa(t, e, i, n) { for (var s, o = e.mask, a = e.value, l = e.length, c = e.gutter, u = e.focused, f = e.errorInfo, p = f || e.info, m = [], v = 0; v < l; v++) { var g, b = a[v], y = 0 !== v && !c, S = u && v === a.length, k = void 0; 0 !== v && c && (k = { marginLeft: Object(Y.a)(c) }), m.push(t("li", { class: [(g = {}, g["van-hairline--left"] = y, g), xa("item", { focus: S })], style: k }, [o ? t("i", { style: { visibility: b ? "visible" : "hidden" } }) : b, S && t("div", { class: xa("cursor") })])) } return t("div", { class: xa() }, [t("ul", r()([{ class: [xa("security"), (s = {}, s["van-hairline--surround"] = !c, s)], on: { touchstart: function(t) { t.stopPropagation(), d(n, "focus", t) } } }, h(n, !0)]), [m]), p && t("div", { class: xa(f ? "error-info" : "info") }, [p])]) } wa.props = { info: String, gutter: [Number, String], focused: Boolean, errorInfo: String, mask: { type: Boolean, default: !0 }, value: { type: String, default: "" }, length: { type: [Number, String], default: 6 } }; var Ca = ka(wa); function Oa(t) { var e = t.getBoundingClientRect(); return { width: e.width, height: e.height, top: e.top, right: e.right, bottom: e.bottom, left: e.left, x: e.left, y: e.top } } function Ta(t) { if (null == t) return window; if ("[object Window]" !== t.toString()) { var e = t.ownerDocument; return e && e.defaultView || window } return t } function $a(t) { var e = Ta(t); return { scrollLeft: e.pageXOffset, scrollTop: e.pageYOffset } } function Ba(t) { return t instanceof Ta(t).Element || t instanceof Element } function Ia(t) { return t instanceof Ta(t).HTMLElement || t instanceof HTMLElement } function Ea(t) { return t ? (t.nodeName || "").toLowerCase() : null } function ja(t) { return ((Ba(t) ? t.ownerDocument : t.document) || window.document).documentElement } function Da(t) { return Ta(t).getComputedStyle(t) } function Pa(t) { var e = Da(t) , i = e.overflow , n = e.overflowX , s = e.overflowY; return /auto|scroll|overlay|hidden/.test(i + s + n) } function La(t, e, i) { void 0 === i && (i = !1); var n, s, r = ja(e), o = Oa(t), a = Ia(e), l = { scrollLeft: 0, scrollTop: 0 }, c = { x: 0, y: 0 }; return (a || !a && !i) && (("body" !== Ea(e) || Pa(r)) && (l = (n = e) !== Ta(n) && Ia(n) ? { scrollLeft: (s = n).scrollLeft, scrollTop: s.scrollTop } : $a(n)), Ia(e) ? ((c = Oa(e)).x += e.clientLeft, c.y += e.clientTop) : r && (c.x = function(t) { return Oa(ja(t)).left + $a(t).scrollLeft }(r))), { x: o.left + l.scrollLeft - c.x, y: o.top + l.scrollTop - c.y, width: o.width, height: o.height } } function Na(t) { return "html" === Ea(t) ? t : t.assignedSlot || t.parentNode || (e = t, "undefined" != typeof ShadowRoot && (e instanceof Ta(e).ShadowRoot || e instanceof ShadowRoot) ? t.host : null) || ja(t); var e } function Ma(t, e) { var i; void 0 === e && (e = []); var n = function t(e) { return ["html", "body", "#document"].indexOf(Ea(e)) >= 0 ? e.ownerDocument.body : Ia(e) && Pa(e) ? e : t(Na(e)) }(t) , s = n === (null == (i = t.ownerDocument) ? void 0 : i.body) , r = Ta(n) , o = s ? [r].concat(r.visualViewport || [], Pa(n) ? n : []) : n , a = e.concat(o); return s ? a : a.concat(Ma(Na(o))) } function Aa(t) { return ["table", "td", "th"].indexOf(Ea(t)) >= 0 } function za(t) { return Ia(t) && "fixed" !== Da(t).position ? t.offsetParent : null } function Va(t) { for (var e = Ta(t), i = za(t); i && Aa(i) && "static" === Da(i).position; ) i = za(i); return i && ("html" === Ea(i) || "body" === Ea(i) && "static" === Da(i).position) ? e : i || function(t) { var e = -1 !== navigator.userAgent.toLowerCase().indexOf("firefox"); if (-1 !== navigator.userAgent.indexOf("Trident") && Ia(t) && "fixed" === Da(t).position) return null; for (var i = Na(t); Ia(i) && ["html", "body"].indexOf(Ea(i)) < 0; ) { var n = Da(i); if ("none" !== n.transform || "none" !== n.perspective || "paint" === n.contain || -1 !== ["transform", "perspective"].indexOf(n.willChange) || e && "filter" === n.willChange || e && n.filter && "none" !== n.filter) return i; i = i.parentNode } return null }(t) || e } var Ra = "top" , Fa = "right" , Ha = "left" , _a = [].concat([Ra, "bottom", Fa, Ha], ["auto"]).reduce((function(t, e) { return t.concat([e, e + "-start", e + "-end"]) } ), []) , Wa = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; function qa(t) { var e = new Map , i = new Set , n = []; return t.forEach((function(t) { e.set(t.name, t) } )), t.forEach((function(t) { i.has(t.name) || function t(s) { i.add(s.name), [].concat(s.requires || [], s.requiresIfExists || []).forEach((function(n) { if (!i.has(n)) { var s = e.get(n); s && t(s) } } )), n.push(s) }(t) } )), n } function Ua(t) { return t.split("-")[0] } var Ka = Math.round; var Ya = { placement: "bottom", modifiers: [], strategy: "absolute" }; function Xa() { for (var t = arguments.length, e = new Array(t), i = 0; i < t; i++) e[i] = arguments[i]; return !e.some((function(t) { return !(t && "function" == typeof t.getBoundingClientRect) } )) } function Qa(t) { void 0 === t && (t = {}); var e = t , i = e.defaultModifiers , s = void 0 === i ? [] : i , r = e.defaultOptions , o = void 0 === r ? Ya : r; return function(t, e, i) { void 0 === i && (i = o); var r, a, l = { placement: "bottom", orderedModifiers: [], options: n({}, Ya, o), modifiersData: {}, elements: { reference: t, popper: e }, attributes: {}, styles: {} }, c = [], u = !1, h = { state: l, setOptions: function(i) { d(), l.options = n({}, o, l.options, i), l.scrollParents = { reference: Ba(t) ? Ma(t) : t.contextElement ? Ma(t.contextElement) : [], popper: Ma(e) }; var r = function(t) { var e = qa(t); return Wa.reduce((function(t, i) { return t.concat(e.filter((function(t) { return t.phase === i } ))) } ), []) }(function(t) { var e = t.reduce((function(t, e) { var i = t[e.name]; return t[e.name] = i ? n({}, i, e, { options: n({}, i.options, e.options), data: n({}, i.data, e.data) }) : e, t } ), {}); return Object.keys(e).map((function(t) { return e[t] } )) }([].concat(s, l.options.modifiers))); return l.orderedModifiers = r.filter((function(t) { return t.enabled } )), l.orderedModifiers.forEach((function(t) { var e = t.name , i = t.options , n = void 0 === i ? {} : i , s = t.effect; if ("function" == typeof s) { var r = s({ state: l, name: e, instance: h, options: n }); c.push(r || function() {} ) } } )), h.update() }, forceUpdate: function() { if (!u) { var t = l.elements , e = t.reference , i = t.popper; if (Xa(e, i)) { var s, r, o, a; l.rects = { reference: La(e, Va(i), "fixed" === l.options.strategy), popper: (s = i, r = Oa(s), o = s.offsetWidth, a = s.offsetHeight, Math.abs(r.width - o) <= 1 && (o = r.width), Math.abs(r.height - a) <= 1 && (a = r.height), { x: s.offsetLeft, y: s.offsetTop, width: o, height: a }) }, l.reset = !1, l.placement = l.options.placement, l.orderedModifiers.forEach((function(t) { return l.modifiersData[t.name] = n({}, t.data) } )); for (var c = 0; c < l.orderedModifiers.length; c++) if (!0 !== l.reset) { var d = l.orderedModifiers[c] , f = d.fn , p = d.options , m = void 0 === p ? {} : p , v = d.name; "function" == typeof f && (l = f({ state: l, options: m, name: v, instance: h }) || l) } else l.reset = !1, c = -1 } } }, update: (r = function() { return new Promise((function(t) { h.forceUpdate(), t(l) } )) } , function() { return a || (a = new Promise((function(t) { Promise.resolve().then((function() { a = void 0, t(r()) } )) } ))), a } ), destroy: function() { d(), u = !0 } }; if (!Xa(t, e)) return h; function d() { c.forEach((function(t) { return t() } )), c = [] } return h.setOptions(i).then((function(t) { !u && i.onFirstUpdate && i.onFirstUpdate(t) } )), h } } var Ga = { passive: !0 }; var Za = { top: "auto", right: "auto", bottom: "auto", left: "auto" }; function Ja(t) { var e, i = t.popper, s = t.popperRect, r = t.placement, o = t.offsets, a = t.position, l = t.gpuAcceleration, c = t.adaptive, u = t.roundOffsets, h = !0 === u ? function(t) { var e = t.x , i = t.y , n = window.devicePixelRatio || 1; return { x: Ka(Ka(e * n) / n) || 0, y: Ka(Ka(i * n) / n) || 0 } }(o) : "function" == typeof u ? u(o) : o, d = h.x, f = void 0 === d ? 0 : d, p = h.y, m = void 0 === p ? 0 : p, v = o.hasOwnProperty("x"), g = o.hasOwnProperty("y"), b = Ha, y = Ra, S = window; if (c) { var k = Va(i) , x = "clientHeight" , w = "clientWidth"; k === Ta(i) && "static" !== Da(k = ja(i)).position && (x = "scrollHeight", w = "scrollWidth"), k = k, r === Ra && (y = "bottom", m -= k[x] - s.height, m *= l ? 1 : -1), r === Ha && (b = Fa, f -= k[w] - s.width, f *= l ? 1 : -1) } var C, O = n({ position: a }, c && Za); return n({}, O, l ? ((C = {})[y] = g ? "0" : "", C[b] = v ? "0" : "", C.transform = (S.devicePixelRatio || 1) < 2 ? "translate(" + f + "px, " + m + "px)" : "translate3d(" + f + "px, " + m + "px, 0)", C) : ((e = {})[y] = g ? m + "px" : "", e[b] = v ? f + "px" : "", e.transform = "", e)) } var tl = Qa({ defaultModifiers: [{ name: "eventListeners", enabled: !0, phase: "write", fn: function() {}, effect: function(t) { var e = t.state , i = t.instance , n = t.options , s = n.scroll , r = void 0 === s || s , o = n.resize , a = void 0 === o || o , l = Ta(e.elements.popper) , c = [].concat(e.scrollParents.reference, e.scrollParents.popper); return r && c.forEach((function(t) { t.addEventListener("scroll", i.update, Ga) } )), a && l.addEventListener("resize", i.update, Ga), function() { r && c.forEach((function(t) { t.removeEventListener("scroll", i.update, Ga) } )), a && l.removeEventListener("resize", i.update, Ga) } }, data: {} }, { name: "popperOffsets", enabled: !0, phase: "read", fn: function(t) { var e = t.state , i = t.name; e.modifiersData[i] = function(t) { var e, i = t.reference, n = t.element, s = t.placement, r = s ? Ua(s) : null, o = s ? function(t) { return t.split("-")[1] }(s) : null, a = i.x + i.width / 2 - n.width / 2, l = i.y + i.height / 2 - n.height / 2; switch (r) { case Ra: e = { x: a, y: i.y - n.height }; break; case "bottom": e = { x: a, y: i.y + i.height }; break; case Fa: e = { x: i.x + i.width, y: l }; break; case Ha: e = { x: i.x - n.width, y: l }; break; default: e = { x: i.x, y: i.y } } var c = r ? function(t) { return ["top", "bottom"].indexOf(t) >= 0 ? "x" : "y" }(r) : null; if (null != c) { var u = "y" === c ? "height" : "width"; switch (o) { case "start": e[c] = e[c] - (i[u] / 2 - n[u] / 2); break; case "end": e[c] = e[c] + (i[u] / 2 - n[u] / 2) } } return e }({ reference: e.rects.reference, element: e.rects.popper, strategy: "absolute", placement: e.placement }) }, data: {} }, { name: "computeStyles", enabled: !0, phase: "beforeWrite", fn: function(t) { var e = t.state , i = t.options , s = i.gpuAcceleration , r = void 0 === s || s , o = i.adaptive , a = void 0 === o || o , l = i.roundOffsets , c = void 0 === l || l , u = { placement: Ua(e.placement), popper: e.elements.popper, popperRect: e.rects.popper, gpuAcceleration: r }; null != e.modifiersData.popperOffsets && (e.styles.popper = n({}, e.styles.popper, Ja(n({}, u, { offsets: e.modifiersData.popperOffsets, position: e.options.strategy, adaptive: a, roundOffsets: c })))), null != e.modifiersData.arrow && (e.styles.arrow = n({}, e.styles.arrow, Ja(n({}, u, { offsets: e.modifiersData.arrow, position: "absolute", adaptive: !1, roundOffsets: c })))), e.attributes.popper = n({}, e.attributes.popper, { "data-popper-placement": e.placement }) }, data: {} }, { name: "applyStyles", enabled: !0, phase: "write", fn: function(t) { var e = t.state; Object.keys(e.elements).forEach((function(t) { var i = e.styles[t] || {} , s = e.attributes[t] || {} , r = e.elements[t]; Ia(r) && Ea(r) && (n(r.style, i), Object.keys(s).forEach((function(t) { var e = s[t]; !1 === e ? r.removeAttribute(t) : r.setAttribute(t, !0 === e ? "" : e) } ))) } )) }, effect: function(t) { var e = t.state , i = { popper: { position: e.options.strategy, left: "0", top: "0", margin: "0" }, arrow: { position: "absolute" }, reference: {} }; return n(e.elements.popper.style, i.popper), e.styles = i, e.elements.arrow && n(e.elements.arrow.style, i.arrow), function() { Object.keys(e.elements).forEach((function(t) { var s = e.elements[t] , r = e.attributes[t] || {} , o = Object.keys(e.styles.hasOwnProperty(t) ? e.styles[t] : i[t]).reduce((function(t, e) { return t[e] = "", t } ), {}); Ia(s) && Ea(s) && (n(s.style, o), Object.keys(r).forEach((function(t) { s.removeAttribute(t) } ))) } )) } }, requires: ["computeStyles"] }] }); var el = { name: "offset", enabled: !0, phase: "main", requires: ["popperOffsets"], fn: function(t) { var e = t.state , i = t.options , s = t.name , r = i.offset , o = void 0 === r ? [0, 0] : r , a = _a.reduce((function(t, i) { return t[i] = function(t, e, i) { var s = Ua(t) , r = [Ha, Ra].indexOf(s) >= 0 ? -1 : 1 , o = "function" == typeof i ? i(n({}, e, { placement: t })) : i , a = o[0] , l = o[1]; return a = a || 0, l = (l || 0) * r, [Ha, Fa].indexOf(s) >= 0 ? { x: l, y: a } : { x: a, y: l } }(i, e.rects, o), t } ), {}) , l = a[e.placement] , c = l.x , u = l.y; null != e.modifiersData.popperOffsets && (e.modifiersData.popperOffsets.x += c, e.modifiersData.popperOffsets.y += u), e.modifiersData[s] = a } } , il = Object(l.a)("popover") , nl = il[0] , sl = il[1] , rl = nl({ mixins: [$r({ event: "touchstart", method: "onClickOutside" })], props: { value: Boolean, trigger: String, overlay: Boolean, offset: { type: Array, default: function() { return [0, 8] } }, theme: { type: String, default: "light" }, actions: { type: Array, default: function() { return [] } }, placement: { type: String, default: "bottom" }, getContainer: { type: [String, Function], default: "body" }, closeOnClickAction: { type: Boolean, default: !0 } }, watch: { value: "updateLocation", placement: "updateLocation" }, mounted: function() { this.updateLocation() }, beforeDestroy: function() { this.popper && (m.h || (window.removeEventListener("animationend", this.updateLocation), window.removeEventListener("transitionend", this.updateLocation)), this.popper.destroy(), this.popper = null) }, methods: { createPopper: function() { var t = tl(this.$refs.wrapper, this.$refs.popover.$el, { placement: this.placement, modifiers: [{ name: "computeStyles", options: { adaptive: !1, gpuAcceleration: !1 } }, n({}, el, { options: { offset: this.offset } })] }); return m.h || (window.addEventListener("animationend", this.updateLocation), window.addEventListener("transitionend", this.updateLocation)), t }, updateLocation: function() { var t = this; this.$nextTick((function() { t.value && (t.popper ? t.popper.setOptions({ placement: t.placement }) : t.popper = t.createPopper()) } )) }, renderAction: function(t, e) { var i = this , n = this.$createElement , s = t.icon , r = t.text , o = t.disabled , a = t.className; return n("div", { attrs: { role: "menuitem" }, class: [sl("action", { disabled: o, "with-icon": s }), a], on: { click: function() { return i.onClickAction(t, e) } } }, [s && n(rt, { attrs: { name: s }, class: sl("action-icon") }), n("div", { class: [sl("action-text"), $t] }, [r])]) }, onToggle: function(t) { this.$emit("input", t) }, onClickWrapper: function() { "click" === this.trigger && this.onToggle(!this.value) }, onTouchstart: function(t) { t.stopPropagation(), this.$emit("touchstart", t) }, onClickAction: function(t, e) { t.disabled || (this.$emit("select", t, e), this.closeOnClickAction && this.$emit("input", !1)) }, onClickOutside: function() { this.$emit("input", !1) }, onOpen: function() { this.$emit("open") }, onOpened: function() { this.$emit("opened") }, onClose: function() { this.$emit("close") }, onClosed: function() { this.$emit("closed") } }, render: function() { var t = arguments[0]; return t("span", { ref: "wrapper", class: sl("wrapper"), on: { click: this.onClickWrapper } }, [t(ct, { ref: "popover", attrs: { value: this.value, overlay: this.overlay, position: null, transition: "van-popover-zoom", lockScroll: !1, getContainer: this.getContainer }, class: sl([this.theme]), on: { open: this.onOpen, close: this.onClose, input: this.onToggle, opened: this.onOpened, closed: this.onClosed }, nativeOn: { touchstart: this.onTouchstart } }, [t("div", { class: sl("arrow") }), t("div", { class: sl("content"), attrs: { role: "menu" } }, [this.slots("default") || this.actions.map(this.renderAction)])]), this.slots("reference")]) } }) , ol = Object(l.a)("progress") , al = ol[0] , ll = ol[1] , cl = al({ mixins: [W((function(t) { t(window, "resize", this.resize, !0), t(window, "orientationchange", this.resize, !0) } ))], props: { color: String, inactive: Boolean, pivotText: String, textColor: String, pivotColor: String, trackColor: String, strokeWidth: [Number, String], percentage: { type: [Number, String], required: !0, validator: function(t) { return t >= 0 && t <= 100 } }, showPivot: { type: Boolean, default: !0 } }, data: function() { return { pivotWidth: 0, progressWidth: 0 } }, mounted: function() { this.resize() }, watch: { showPivot: "resize", pivotText: "resize" }, methods: { resize: function() { var t = this; this.$nextTick((function() { t.progressWidth = t.$el.offsetWidth, t.pivotWidth = t.$refs.pivot ? t.$refs.pivot.offsetWidth : 0 } )) } }, render: function() { var t = arguments[0] , e = this.pivotText , i = this.percentage , n = null != e ? e : i + "%" , s = this.showPivot && n , r = this.inactive ? "#cacaca" : this.color , o = { color: this.textColor, left: (this.progressWidth - this.pivotWidth) * i / 100 + "px", background: this.pivotColor || r } , a = { background: r, width: this.progressWidth * i / 100 + "px" } , l = { background: this.trackColor, height: Object(Y.a)(this.strokeWidth) }; return t("div", { class: ll(), style: l }, [t("span", { class: ll("portion"), style: a }, [s && t("span", { ref: "pivot", style: o, class: ll("pivot") }, [n])])]) } }) , ul = Object(l.a)("pull-refresh") , hl = ul[0] , dl = ul[1] , fl = ul[2] , pl = ["pulling", "loosing", "success"] , ml = hl({ mixins: [F], props: { disabled: Boolean, successText: String, pullingText: String, loosingText: String, loadingText: String, pullDistance: [Number, String], value: { type: Boolean, required: !0 }, successDuration: { type: [Number, String], default: 500 }, animationDuration: { type: [Number, String], default: 300 }, headHeight: { type: [Number, String], default: 50 } }, data: function() { return { status: "normal", distance: 0, duration: 0 } }, computed: { touchable: function() { return "loading" !== this.status && "success" !== this.status && !this.disabled }, headStyle: function() { if (50 !== this.headHeight) return { height: this.headHeight + "px" } } }, watch: { value: function(t) { this.duration = this.animationDuration, t ? this.setStatus(+this.headHeight, !0) : this.slots("success") || this.successText ? this.showSuccessTip() : this.setStatus(0, !1) } }, mounted: function() { this.bindTouchEvent(this.$refs.track), this.scrollEl = N(this.$el) }, methods: { checkPullStart: function(t) { this.ceiling = 0 === M(this.scrollEl), this.ceiling && (this.duration = 0, this.touchStart(t)) }, onTouchStart: function(t) { this.touchable && this.checkPullStart(t) }, onTouchMove: function(t) { this.touchable && (this.ceiling || this.checkPullStart(t), this.touchMove(t), this.ceiling && this.deltaY >= 0 && "vertical" === this.direction && (k(t), this.setStatus(this.ease(this.deltaY)))) }, onTouchEnd: function() { var t = this; this.touchable && this.ceiling && this.deltaY && (this.duration = this.animationDuration, "loosing" === this.status ? (this.setStatus(+this.headHeight, !0), this.$emit("input", !0), this.$nextTick((function() { t.$emit("refresh") } ))) : this.setStatus(0)) }, ease: function(t) { var e = +(this.pullDistance || this.headHeight); return t > e && (t = t < 2 * e ? e + (t - e) / 2 : 1.5 * e + (t - 2 * e) / 4), Math.round(t) }, setStatus: function(t, e) { var i; i = e ? "loading" : 0 === t ? "normal" : t < (this.pullDistance || this.headHeight) ? "pulling" : "loosing", this.distance = t, i !== this.status && (this.status = i) }, genStatus: function() { var t = this.$createElement , e = this.status , i = this.distance , n = this.slots(e, { distance: i }); if (n) return n; var s = [] , r = this[e + "Text"] || fl(e); return -1 !== pl.indexOf(e) && s.push(t("div", { class: dl("text") }, [r])), "loading" === e && s.push(t(vt, { attrs: { size: "16" } }, [r])), s }, showSuccessTip: function() { var t = this; this.status = "success", setTimeout((function() { t.setStatus(0) } ), this.successDuration) } }, render: function() { var t = arguments[0] , e = { transitionDuration: this.duration + "ms", transform: this.distance ? "translate3d(0," + this.distance + "px, 0)" : "" }; return t("div", { class: dl() }, [t("div", { ref: "track", class: dl("track"), style: e }, [t("div", { class: dl("head"), style: this.headStyle }, [this.genStatus()]), this.slots()])]) } }) , vl = Object(l.a)("rate") , gl = vl[0] , bl = vl[1]; var yl = gl({ mixins: [F, si], props: { size: [Number, String], color: String, gutter: [Number, String], readonly: Boolean, disabled: Boolean, allowHalf: Boolean, voidColor: String, iconPrefix: String, disabledColor: String, value: { type: Number, default: 0 }, icon: { type: String, default: "star" }, voidIcon: { type: String, default: "star-o" }, count: { type: [Number, String], default: 5 }, touchable: { type: Boolean, default: !0 } }, computed: { list: function() { for (var t, e, i, n = [], s = 1; s <= this.count; s++) n.push((t = this.value, e = s, i = this.allowHalf, t >= e ? "full" : t + .5 >= e && i ? "half" : "void")); return n }, sizeWithUnit: function() { return Object(Y.a)(this.size) }, gutterWithUnit: function() { return Object(Y.a)(this.gutter) } }, mounted: function() { this.bindTouchEvent(this.$el) }, methods: { select: function(t) { this.disabled || this.readonly || t === this.value || (this.$emit("input", t), this.$emit("change", t)) }, onTouchStart: function(t) { var e = this; if (!this.readonly && !this.disabled && this.touchable) { this.touchStart(t); var i = this.$refs.items.map((function(t) { return t.getBoundingClientRect() } )) , n = []; i.forEach((function(t, i) { e.allowHalf ? n.push({ score: i + .5, left: t.left }, { score: i + 1, left: t.left + t.width / 2 }) : n.push({ score: i + 1, left: t.left }) } )), this.ranges = n } }, onTouchMove: function(t) { if (!this.readonly && !this.disabled && this.touchable && (this.touchMove(t), "horizontal" === this.direction)) { k(t); var e = t.touches[0].clientX; this.select(this.getScoreByPosition(e)) } }, getScoreByPosition: function(t) { for (var e = this.ranges.length - 1; e > 0; e--) if (t > this.ranges[e].left) return this.ranges[e].score; return this.allowHalf ? .5 : 1 }, genStar: function(t, e) { var i, n = this, s = this.$createElement, r = this.icon, o = this.color, a = this.count, l = this.voidIcon, c = this.disabled, u = this.voidColor, h = this.disabledColor, d = e + 1, f = "full" === t, p = "void" === t; return this.gutterWithUnit && d !== +a && (i = { paddingRight: this.gutterWithUnit }), s("div", { ref: "items", refInFor: !0, key: e, attrs: { role: "radio", tabindex: "0", "aria-setsize": a, "aria-posinset": d, "aria-checked": String(!p) }, style: i, class: bl("item") }, [s(rt, { attrs: { size: this.sizeWithUnit, name: f ? r : l, color: c ? h : f ? o : u, classPrefix: this.iconPrefix, "data-score": d }, class: bl("icon", { disabled: c, full: f }), on: { click: function() { n.select(d) } } }), this.allowHalf && s(rt, { attrs: { size: this.sizeWithUnit, name: p ? l : r, color: c ? h : p ? u : o, classPrefix: this.iconPrefix, "data-score": d - .5 }, class: bl("icon", ["half", { disabled: c, full: !p }]), on: { click: function() { n.select(d - .5) } } })]) } }, render: function() { var t = this , e = arguments[0]; return e("div", { class: bl({ readonly: this.readonly, disabled: this.disabled }), attrs: { tabindex: "0", role: "radiogroup" } }, [this.list.map((function(e, i) { return t.genStar(e, i) } ))]) } }) , Sl = Object(l.a)("row") , kl = Sl[0] , xl = Sl[1] , wl = kl({ mixins: [Le("vanRow")], props: { type: String, align: String, justify: String, tag: { type: String, default: "div" }, gutter: { type: [Number, String], default: 0 } }, computed: { spaces: function() { var t = Number(this.gutter); if (t) { var e = [] , i = [[]] , n = 0; return this.children.forEach((function(t, e) { (n += Number(t.span)) > 24 ? (i.push([e]), n -= 24) : i[i.length - 1].push(e) } )), i.forEach((function(i) { var n = t * (i.length - 1) / i.length; i.forEach((function(i, s) { if (0 === s) e.push({ right: n }); else { var r = t - e[i - 1].right , o = n - r; e.push({ left: r, right: o }) } } )) } )), e } } }, methods: { onClick: function(t) { this.$emit("click", t) } }, render: function() { var t, e = arguments[0], i = this.align, n = this.justify, s = "flex" === this.type; return e(this.tag, { class: xl((t = { flex: s }, t["align-" + i] = s && i, t["justify-" + n] = s && n, t)), on: { click: this.onClick } }, [this.slots()]) } }) , Cl = Object(l.a)("search") , Ol = Cl[0] , Tl = Cl[1] , $l = Cl[2]; function Bl(t, e, i, s) { var o = { attrs: s.data.attrs, on: n({}, s.listeners, { keypress: function(t) { 13 === t.keyCode && (k(t), d(s, "search", e.value)), d(s, "keypress", t) } }) } , a = h(s); return a.attrs = void 0, t("div", r()([{ class: Tl({ "show-action": e.showAction }), style: { background: e.background } }, a]), [null == i.left ? void 0 : i.left(), t("div", { class: Tl("content", e.shape) }, [function() { if (i.label || e.label) return t("div", { class: Tl("label") }, [i.label ? i.label() : e.label]) }(), t(de, r()([{ attrs: { type: "search", border: !1, value: e.value, leftIcon: e.leftIcon, rightIcon: e.rightIcon, clearable: e.clearable, clearTrigger: e.clearTrigger }, scopedSlots: { "left-icon": i["left-icon"], "right-icon": i["right-icon"] } }, o]))]), function() { if (e.showAction) return t("div", { class: Tl("action"), attrs: { role: "button", tabindex: "0" }, on: { click: function() { i.action || (d(s, "input", ""), d(s, "cancel")) } } }, [i.action ? i.action() : e.actionText || $l("cancel")]) }()]) } Bl.props = { value: String, label: String, rightIcon: String, actionText: String, background: String, showAction: Boolean, clearTrigger: String, shape: { type: String, default: "square" }, clearable: { type: Boolean, default: !0 }, leftIcon: { type: String, default: "search" } }; var Il = Ol(Bl) , El = ["qq", "link", "weibo", "wechat", "poster", "qrcode", "weapp-qrcode", "wechat-moments"] , jl = Object(l.a)("share-sheet") , Dl = jl[0] , Pl = jl[1] , Ll = jl[2] , Nl = Dl({ props: n({}, U, { title: String, duration: String, cancelText: String, description: String, getContainer: [String, Function], options: { type: Array, default: function() { return [] } }, overlay: { type: Boolean, default: !0 }, closeOnPopstate: { type: Boolean, default: !0 }, safeAreaInsetBottom: { type: Boolean, default: !0 }, closeOnClickOverlay: { type: Boolean, default: !0 } }), methods: { onCancel: function() { this.toggle(!1), this.$emit("cancel") }, onSelect: function(t, e) { this.$emit("select", t, e) }, toggle: function(t) { this.$emit("input", t) }, getIconURL: function(t) { return -1 !== El.indexOf(t) ? "https://img01.yzcdn.cn/vant/share-sheet-" + t + ".png" : t }, genHeader: function() { var t = this.$createElement , e = this.slots("title") || this.title , i = this.slots("description") || this.description; if (e || i) return t("div", { class: Pl("header") }, [e && t("h2", { class: Pl("title") }, [e]), i && t("span", { class: Pl("description") }, [i])]) }, genOptions: function(t, e) { var i = this , n = this.$createElement; return n("div", { class: Pl("options", { border: e }) }, [t.map((function(t, e) { return n("div", { attrs: { role: "button", tabindex: "0" }, class: [Pl("option"), t.className], on: { click: function() { i.onSelect(t, e) } } }, [n("img", { attrs: { src: i.getIconURL(t.icon) }, class: Pl("icon") }), t.name && n("span", { class: Pl("name") }, [t.name]), t.description && n("span", { class: Pl("option-description") }, [t.description])]) } ))]) }, genRows: function() { var t = this , e = this.options; return Array.isArray(e[0]) ? e.map((function(e, i) { return t.genOptions(e, 0 !== i) } )) : this.genOptions(e) }, genCancelText: function() { var t, e = this.$createElement, i = null != (t = this.cancelText) ? t : Ll("cancel"); if (i) return e("button", { attrs: { type: "button" }, class: Pl("cancel"), on: { click: this.onCancel } }, [i]) }, onClickOverlay: function() { this.$emit("click-overlay") } }, render: function() { var t = arguments[0]; return t(ct, { attrs: { round: !0, value: this.value, position: "bottom", overlay: this.overlay, duration: this.duration, lazyRender: this.lazyRender, lockScroll: this.lockScroll, getContainer: this.getContainer, closeOnPopstate: this.closeOnPopstate, closeOnClickOverlay: this.closeOnClickOverlay, safeAreaInsetBottom: this.safeAreaInsetBottom }, class: Pl(), on: { input: this.toggle, "click-overlay": this.onClickOverlay } }, [this.genHeader(), this.genRows(), this.genCancelText()]) } }) , Ml = Object(l.a)("sidebar") , Al = Ml[0] , zl = Ml[1] , Vl = Al({ mixins: [Le("vanSidebar")], model: { prop: "activeKey" }, props: { activeKey: { type: [Number, String], default: 0 } }, data: function() { return { index: +this.activeKey } }, watch: { activeKey: function() { this.setIndex(+this.activeKey) } }, methods: { setIndex: function(t) { t !== this.index && (this.index = t, this.$emit("change", t)) } }, render: function() { var t = arguments[0]; return t("div", { class: zl() }, [this.slots()]) } }) , Rl = Object(l.a)("sidebar-item") , Fl = Rl[0] , Hl = Rl[1] , _l = Fl({ mixins: [Pe("vanSidebar")], props: n({}, te, { dot: Boolean, info: [Number, String], badge: [Number, String], title: String, disabled: Boolean }), computed: { select: function() { return this.index === +this.parent.activeKey } }, methods: { onClick: function() { this.disabled || (this.$emit("click", this.index), this.parent.$emit("input", this.index), this.parent.setIndex(this.index), Zt(this.$router, this)) } }, render: function() { var t, e, i = arguments[0]; return i("a", { class: Hl({ select: this.select, disabled: this.disabled }), on: { click: this.onClick } }, [i("div", { class: Hl("text") }, [null != (t = this.slots("title")) ? t : this.title, i(J, { attrs: { dot: this.dot, info: null != (e = this.badge) ? e : this.info }, class: Hl("info") })])]) } }) , Wl = Object(l.a)("skeleton") , ql = Wl[0] , Ul = Wl[1]; function Kl(t, e, i, n) { if (!e.loading) return i.default && i.default(); return t("div", r()([{ class: Ul({ animate: e.animate, round: e.round }) }, h(n)]), [function() { if (e.avatar) { var i = Object(Y.a)(e.avatarSize); return t("div", { class: Ul("avatar", e.avatarShape), style: { width: i, height: i } }) } }(), t("div", { class: Ul("content") }, [function() { if (e.title) return t("h3", { class: Ul("title"), style: { width: Object(Y.a)(e.titleWidth) } }) }(), function() { for (var i, n = [], s = e.rowWidth, r = 0; r < e.row; r++) n.push(t("div", { class: Ul("row"), style: { width: Object(Y.a)((i = r, "100%" === s && i === +e.row - 1 ? "60%" : Array.isArray(s) ? s[i] : s)) } })); return n }()])]) } Kl.props = { title: Boolean, round: Boolean, avatar: Boolean, titleWidth: [Number, String], avatarSize: [Number, String], row: { type: [Number, String], default: 0 }, loading: { type: Boolean, default: !0 }, animate: { type: Boolean, default: !0 }, avatarShape: { type: String, default: "round" }, rowWidth: { type: [Number, String, Array], default: "100%" } }; var Yl = ql(Kl) , Xl = { QUOTA_LIMIT: 0, STOCK_LIMIT: 1 } , Ql = { LIMIT_TYPE: Xl, UNSELECTED_SKU_VALUE_ID: "" } , Gl = function(t) { var e = {}; return t.forEach((function(t) { e[t.k_s] = t.v } )), e } , Zl = function(t, e) { var i = Object.keys(e).filter((function(t) { return "" !== e[t] } )); return t.length === i.length } , Jl = function(t, e) { return t.filter((function(t) { return Object.keys(e).every((function(i) { return String(t[i]) === String(e[i]) } )) } ))[0] } , tc = function(t, e) { var i = Gl(t); return Object.keys(e).reduce((function(t, n) { var s = i[n] || [] , r = e[n]; if ("" !== r && s.length > 0) { var o = s.filter((function(t) { return t.id === r } ))[0]; o && t.push(o) } return t } ), []) } , ec = function(t, e, i) { var s, r = i.key, o = i.valueId, a = n({}, e, ((s = {})[r] = o, s)), l = Object.keys(a).filter((function(t) { return "" !== a[t] } )); return t.filter((function(t) { return l.every((function(e) { return String(a[e]) === String(t[e]) } )) } )).reduce((function(t, e) { return t += e.stock_num } ), 0) > 0 } , ic = function(t, e) { var i = function(t) { var e = {}; return t.forEach((function(t) { var i = {}; t.v.forEach((function(t) { i[t.id] = t } )), e[t.k_id] = i } )), e }(t); return Object.keys(e).reduce((function(t, s) { return e[s].forEach((function(e) { t.push(n({}, i[s][e])) } )), t } ), []) } , nc = function(t, e) { var i = []; return (t || []).forEach((function(t) { if (e[t.k_id] && e[t.k_id].length > 0) { var s = []; t.v.forEach((function(i) { e[t.k_id].indexOf(i.id) > -1 && s.push(n({}, i)) } )), i.push(n({}, t, { v: s })) } } )), i } , sc = { normalizeSkuTree: Gl, getSkuComb: Jl, getSelectedSkuValues: tc, isAllSelected: Zl, isSkuChoosable: ec, getSelectedPropValues: ic, getSelectedProperties: nc } , rc = Object(l.a)("sku-header") , oc = rc[0] , ac = rc[1]; function lc(t, e, i, s) { var o, a = e.sku, l = e.goods, c = e.skuEventBus, u = e.selectedSku, d = e.showHeaderImage, f = void 0 === d || d, p = function(t, e) { var i; return t.tree.some((function(t) { var s = e[t.k_s]; if (s && t.v) { var r = t.v.filter((function(t) { return t.id === s } ))[0] || {} , o = r.previewImgUrl || r.imgUrl || r.img_url; if (o) return i = n({}, r, { ks: t.k_s, imgUrl: o }), !0 } return !1 } )), i }(a, u), m = p ? p.imgUrl : l.picture; return t("div", r()([{ class: [ac(), $t] }, h(s)]), [f && t(un, { attrs: { fit: "cover", src: m }, class: ac("img-wrap"), on: { click: function() { c.$emit("sku:previewImage", p) } } }, [null == (o = i["sku-header-image-extra"]) ? void 0 : o.call(i)]), t("div", { class: ac("goods-info") }, [null == i.default ? void 0 : i.default()])]) } lc.props = { sku: Object, goods: Object, skuEventBus: Object, selectedSku: Object, showHeaderImage: Boolean }; var cc = oc(lc) , uc = Object(l.a)("sku-header-item") , hc = uc[0] , dc = uc[1]; var fc = hc((function(t, e, i, n) { return t("div", r()([{ class: dc() }, h(n)]), [i.default && i.default()]) } )) , pc = Object(l.a)("sku-row") , mc = pc[0] , vc = pc[1] , gc = pc[2] , bc = mc({ mixins: [Le("vanSkuRows"), W((function(t) { this.scrollable && this.$refs.scroller && t(this.$refs.scroller, "scroll", this.onScroll) } ))], props: { skuRow: Object }, data: function() { return { progress: 0 } }, computed: { scrollable: function() { return this.skuRow.largeImageMode && this.skuRow.v.length > 6 } }, methods: { onScroll: function() { var t = this.$refs , e = t.scroller , i = t.row.offsetWidth - e.offsetWidth; this.progress = e.scrollLeft / i }, genTitle: function() { var t = this.$createElement; return t("div", { class: vc("title") }, [this.skuRow.k, this.skuRow.is_multiple && t("span", { class: vc("title-multiple") }, ["(", gc("multiple"), ")"])]) }, genIndicator: function() { var t = this.$createElement; if (this.scrollable) { var e = { transform: "translate3d(" + 20 * this.progress + "px, 0, 0)" }; return t("div", { class: vc("indicator-wrapper") }, [t("div", { class: vc("indicator") }, [t("div", { class: vc("indicator-slider"), style: e })])]) } }, genContent: function() { var t = this.$createElement , e = this.slots(); if (this.skuRow.largeImageMode) { var i = [] , n = []; return e.forEach((function(t, e) { (Math.floor(e / 3) % 2 == 0 ? i : n).push(t) } )), t("div", { class: vc("scroller"), ref: "scroller" }, [t("div", { class: vc("row"), ref: "row" }, [i]), n.length ? t("div", { class: vc("row") }, [n]) : null]) } return e }, centerItem: function(t) { if (this.skuRow.largeImageMode && t) { var e = this.children , i = void 0 === e ? [] : e , n = this.$refs , s = n.scroller , r = n.row , o = i.find((function(e) { return +e.skuValue.id == +t } )); if (s && r && o && o.$el) { var a = o.$el , l = a.offsetLeft - (s.offsetWidth - a.offsetWidth) / 2; s.scrollLeft = l } } } }, render: function() { var t = arguments[0]; return t("div", { class: [vc(), $t] }, [this.genTitle(), this.genContent(), this.genIndicator()]) } }) , yc = (0, Object(l.a)("sku-row-item")[0])({ mixins: [Pe("vanSkuRows")], props: { lazyLoad: Boolean, skuValue: Object, skuKeyStr: String, skuEventBus: Object, selectedSku: Object, largeImageMode: Boolean, disableSoldoutSku: Boolean, skuList: { type: Array, default: function() { return [] } } }, computed: { imgUrl: function() { var t = this.skuValue.imgUrl || this.skuValue.img_url; return this.largeImageMode ? t || "https://img01.yzcdn.cn/upload_files/2020/06/24/FmKWDg0bN9rMcTp9ne8MXiQWGtLn.png" : t }, choosable: function() { return !this.disableSoldoutSku || ec(this.skuList, this.selectedSku, { key: this.skuKeyStr, valueId: this.skuValue.id }) } }, methods: { onSelect: function() { this.choosable && this.skuEventBus.$emit("sku:select", n({}, this.skuValue, { skuKeyStr: this.skuKeyStr })) }, onPreviewImg: function(t) { t.stopPropagation(); var e = this.skuValue , i = this.skuKeyStr; this.skuEventBus.$emit("sku:previewImage", n({}, e, { ks: i, imgUrl: e.imgUrl || e.img_url })) }, genImage: function(t) { var e = this.$createElement; if (this.imgUrl) return e(un, { attrs: { fit: "cover", src: this.imgUrl, lazyLoad: this.lazyLoad }, class: t + "-img" }) } }, render: function() { var t = arguments[0] , e = this.skuValue.id === this.selectedSku[this.skuKeyStr] , i = this.largeImageMode ? vc("image-item") : vc("item"); return t("span", { class: [i, e ? i + "--active" : "", this.choosable ? "" : i + "--disabled"], on: { click: this.onSelect } }, [this.genImage(i), t("div", { class: i + "-name" }, [this.largeImageMode ? t("span", { class: { "van-multi-ellipsis--l2": this.largeImageMode } }, [this.skuValue.name]) : this.skuValue.name]), this.largeImageMode && t(rt, { attrs: { name: "enlarge" }, class: i + "-img-icon", on: { click: this.onPreviewImg } })]) } }) , Sc = (0, Object(l.a)("sku-row-prop-item")[0])({ props: { skuValue: Object, skuKeyStr: String, skuEventBus: Object, selectedProp: Object, multiple: Boolean, disabled: Boolean }, computed: { choosed: function() { var t = this.selectedProp , e = this.skuKeyStr , i = this.skuValue; return !(!t || !t[e]) && t[e].indexOf(i.id) > -1 } }, methods: { onSelect: function() { this.disabled || this.skuEventBus.$emit("sku:propSelect", n({}, this.skuValue, { skuKeyStr: this.skuKeyStr, multiple: this.multiple })) } }, render: function() { var t = arguments[0]; return t("span", { class: ["van-sku-row__item", { "van-sku-row__item--active": this.choosed }, { "van-sku-row__item--disabled": this.disabled }], on: { click: this.onSelect } }, [t("span", { class: "van-sku-row__item-name" }, [this.skuValue.name])]) } }) , kc = Object(l.a)("stepper") , xc = kc[0] , wc = kc[1]; function Cc(t, e) { return String(t) === String(e) } var Oc = xc({ mixins: [si], props: { value: null, theme: String, integer: Boolean, disabled: Boolean, allowEmpty: Boolean, inputWidth: [Number, String], buttonSize: [Number, String], asyncChange: Boolean, placeholder: String, disablePlus: Boolean, disableMinus: Boolean, disableInput: Boolean, decimalLength: [Number, String], name: { type: [Number, String], default: "" }, min: { type: [Number, String], default: 1 }, max: { type: [Number, String], default: 1 / 0 }, step: { type: [Number, String], default: 1 }, defaultValue: { type: [Number, String], default: 1 }, showPlus: { type: Boolean, default: !0 }, showMinus: { type: Boolean, default: !0 }, showInput: { type: Boolean, default: !0 }, longPress: { type: Boolean, default: !0 } }, data: function() { var t, e = null != (t = this.value) ? t : this.defaultValue, i = this.format(e); return Cc(i, this.value) || this.$emit("input", i), { currentValue: i } }, computed: { minusDisabled: function() { return this.disabled || this.disableMinus || this.currentValue <= +this.min }, plusDisabled: function() { return this.disabled || this.disablePlus || this.currentValue >= +this.max }, inputStyle: function() { var t = {}; return this.inputWidth && (t.width = Object(Y.a)(this.inputWidth)), this.buttonSize && (t.height = Object(Y.a)(this.buttonSize)), t }, buttonStyle: function() { if (this.buttonSize) { var t = Object(Y.a)(this.buttonSize); return { width: t, height: t } } } }, watch: { max: "check", min: "check", integer: "check", decimalLength: "check", value: function(t) { Cc(t, this.currentValue) || (this.currentValue = this.format(t)) }, currentValue: function(t) { this.$emit("input", t), this.$emit("change", t, { name: this.name }) } }, methods: { check: function() { var t = this.format(this.currentValue); Cc(t, this.currentValue) || (this.currentValue = t) }, formatNumber: function(t) { return Dt(String(t), !this.integer) }, format: function(t) { return this.allowEmpty && "" === t || (t = "" === (t = this.formatNumber(t)) ? 0 : +t, t = Object(zi.a)(t) ? this.min : t, t = Math.max(Math.min(this.max, t), this.min), Object(m.c)(this.decimalLength) && (t = t.toFixed(this.decimalLength))), t }, onInput: function(t) { var e = t.target.value , i = this.formatNumber(e); if (Object(m.c)(this.decimalLength) && -1 !== i.indexOf(".")) { var n = i.split("."); i = n[0] + "." + n[1].slice(0, this.decimalLength) } Cc(e, i) || (t.target.value = i), i === String(+i) && (i = +i), this.emitChange(i) }, emitChange: function(t) { this.asyncChange ? (this.$emit("input", t), this.$emit("change", t, { name: this.name })) : this.currentValue = t }, onChange: function() { var t = this.type; if (this[t + "Disabled"]) this.$emit("overlimit", t); else { var e = "minus" === t ? -this.step : +this.step , i = this.format(Pt(+this.currentValue, e)); this.emitChange(i), this.$emit(t) } }, onFocus: function(t) { this.disableInput && this.$refs.input ? this.$refs.input.blur() : this.$emit("focus", t) }, onBlur: function(t) { var e = this.format(t.target.value); t.target.value = e, this.emitChange(e), this.$emit("blur", t), le() }, longPressStep: function() { var t = this; this.longPressTimer = setTimeout((function() { t.onChange(), t.longPressStep(t.type) } ), 200) }, onTouchStart: function() { var t = this; this.longPress && (clearTimeout(this.longPressTimer), this.isLongPress = !1, this.longPressTimer = setTimeout((function() { t.isLongPress = !0, t.onChange(), t.longPressStep() } ), 600)) }, onTouchEnd: function(t) { this.longPress && (clearTimeout(this.longPressTimer), this.isLongPress && k(t)) }, onMousedown: function(t) { this.disableInput && t.preventDefault() } }, render: function() { var t = this , e = arguments[0] , i = function(e) { return { on: { click: function(i) { i.preventDefault(), t.type = e, t.onChange() }, touchstart: function() { t.type = e, t.onTouchStart() }, touchend: t.onTouchEnd, touchcancel: t.onTouchEnd } } }; return e("div", { class: wc([this.theme]) }, [e("button", r()([{ directives: [{ name: "show", value: this.showMinus }], attrs: { type: "button" }, style: this.buttonStyle, class: wc("minus", { disabled: this.minusDisabled }) }, i("minus")])), e("input", { directives: [{ name: "show", value: this.showInput }], ref: "input", attrs: { type: this.integer ? "tel" : "text", role: "spinbutton", disabled: this.disabled, readonly: this.disableInput, inputmode: this.integer ? "numeric" : "decimal", placeholder: this.placeholder, "aria-valuemax": this.max, "aria-valuemin": this.min, "aria-valuenow": this.currentValue }, class: wc("input"), domProps: { value: this.currentValue }, style: this.inputStyle, on: { input: this.onInput, focus: this.onFocus, blur: this.onBlur, mousedown: this.onMousedown } }), e("button", r()([{ directives: [{ name: "show", value: this.showPlus }], attrs: { type: "button" }, style: this.buttonStyle, class: wc("plus", { disabled: this.plusDisabled }) }, i("plus")]))]) } }) , Tc = Object(l.a)("sku-stepper") , $c = Tc[0] , Bc = Tc[2] , Ic = Xl.QUOTA_LIMIT , Ec = Xl.STOCK_LIMIT , jc = $c({ props: { stock: Number, skuEventBus: Object, skuStockNum: Number, selectedNum: Number, stepperTitle: String, disableStepperInput: Boolean, customStepperConfig: Object, hideQuotaText: Boolean, quota: { type: Number, default: 0 }, quotaUsed: { type: Number, default: 0 }, startSaleNum: { type: Number, default: 1 } }, data: function() { return { currentNum: this.selectedNum, limitType: Ec } }, watch: { currentNum: function(t) { var e = parseInt(t, 10); e >= this.stepperMinLimit && e <= this.stepperLimit && this.skuEventBus.$emit("sku:numChange", e) }, stepperLimit: function(t) { t < this.currentNum && this.stepperMinLimit <= t && (this.currentNum = t), this.checkState(this.stepperMinLimit, t) }, stepperMinLimit: function(t) { (t > this.currentNum || t > this.stepperLimit) && (this.currentNum = t), this.checkState(t, this.stepperLimit) } }, computed: { stepperLimit: function() { var t, e = this.quota - this.quotaUsed; return this.quota > 0 && e <= this.stock ? (t = e < 0 ? 0 : e, this.limitType = Ic) : (t = this.stock, this.limitType = Ec), t }, stepperMinLimit: function() { return this.startSaleNum < 1 ? 1 : this.startSaleNum }, quotaText: function() { var t = this.customStepperConfig , e = t.quotaText; if (t.hideQuotaText) return ""; var i = ""; if (e) i = e; else { var n = []; this.startSaleNum > 1 && n.push(Bc("quotaStart", this.startSaleNum)), this.quota > 0 && n.push(Bc("quotaLimit", this.quota)), i = n.join(Bc("comma")) } return i } }, created: function() { this.checkState(this.stepperMinLimit, this.stepperLimit) }, methods: { setCurrentNum: function(t) { this.currentNum = t, this.checkState(this.stepperMinLimit, this.stepperLimit) }, onOverLimit: function(t) { this.skuEventBus.$emit("sku:overLimit", { action: t, limitType: this.limitType, quota: this.quota, quotaUsed: this.quotaUsed, startSaleNum: this.startSaleNum }) }, onChange: function(t) { var e = parseInt(t, 10) , i = this.customStepperConfig.handleStepperChange; i && i(e), this.$emit("change", e) }, checkState: function(t, e) { this.currentNum < t || t > e ? this.currentNum = t : this.currentNum > e && (this.currentNum = e), this.skuEventBus.$emit("sku:stepperState", { valid: t <= e, min: t, max: e, limitType: this.limitType, quota: this.quota, quotaUsed: this.quotaUsed, startSaleNum: this.startSaleNum }) } }, render: function() { var t = this , e = arguments[0]; return e("div", { class: "van-sku-stepper-stock" }, [e("div", { class: "van-sku__stepper-title" }, [this.stepperTitle || Bc("num")]), e(Oc, { attrs: { integer: !0, min: this.stepperMinLimit, max: this.stepperLimit, disableInput: this.disableStepperInput }, class: "van-sku__stepper", on: { overlimit: this.onOverLimit, change: this.onChange }, model: { value: t.currentNum, callback: function(e) { t.currentNum = e } } }), !this.hideQuotaText && this.quotaText && e("span", { class: "van-sku__stepper-quota" }, ["(", this.quotaText, ")"])]) } }); function Dc(t) { return /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/.test(t.trim()) } function Pc(t) { return Array.isArray(t) ? t : [t] } function Lc(t, e) { return new Promise((function(i) { if ("file" !== e) { var n = new FileReader; n.onload = function(t) { i(t.target.result) } , "dataUrl" === e ? n.readAsDataURL(t) : "text" === e && n.readAsText(t) } else i(null) } )) } function Nc(t, e) { return Pc(t).some((function(t) { return !!t && (Object(m.e)(e) ? e(t) : t.size > e) } )) } var Mc = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i; function Ac(t) { return !!t.isImage || (t.file && t.file.type ? 0 === t.file.type.indexOf("image") : t.url ? (e = t.url, Mc.test(e)) : !!t.content && 0 === t.content.indexOf("data:image")); var e } var zc = Object(l.a)("uploader") , Vc = zc[0] , Rc = zc[1] , Fc = Vc({ inheritAttrs: !1, mixins: [si], model: { prop: "fileList" }, props: { disabled: Boolean, readonly: Boolean, lazyLoad: Boolean, uploadText: String, afterRead: Function, beforeRead: Function, beforeDelete: Function, previewSize: [Number, String], previewOptions: Object, name: { type: [Number, String], default: "" }, accept: { type: String, default: "image/*" }, fileList: { type: Array, default: function() { return [] } }, maxSize: { type: [Number, String, Function], default: Number.MAX_VALUE }, maxCount: { type: [Number, String], default: Number.MAX_VALUE }, deletable: { type: Boolean, default: !0 }, showUpload: { type: Boolean, default: !0 }, previewImage: { type: Boolean, default: !0 }, previewFullImage: { type: Boolean, default: !0 }, imageFit: { type: String, default: "cover" }, resultType: { type: String, default: "dataUrl" }, uploadIcon: { type: String, default: "photograph" } }, computed: { previewSizeWithUnit: function() { return Object(Y.a)(this.previewSize) }, value: function() { return this.fileList } }, created: function() { this.urls = [] }, beforeDestroy: function() { this.urls.forEach((function(t) { return URL.revokeObjectURL(t) } )) }, methods: { getDetail: function(t) { return void 0 === t && (t = this.fileList.length), { name: this.name, index: t } }, onChange: function(t) { var e = this , i = t.target.files; if (!this.disabled && i.length) { if (i = 1 === i.length ? i[0] : [].slice.call(i), this.beforeRead) { var n = this.beforeRead(i, this.getDetail()); if (!n) return void this.resetInput(); if (Object(m.g)(n)) return void n.then((function(t) { t ? e.readFile(t) : e.readFile(i) } )).catch(this.resetInput) } this.readFile(i) } }, readFile: function(t) { var e = this , i = Nc(t, this.maxSize); if (Array.isArray(t)) { var n = this.maxCount - this.fileList.length; t.length > n && (t = t.slice(0, n)), Promise.all(t.map((function(t) { return Lc(t, e.resultType) } ))).then((function(n) { var s = t.map((function(t, e) { var i = { file: t, status: "", message: "" }; return n[e] && (i.content = n[e]), i } )); e.onAfterRead(s, i) } )) } else Lc(t, this.resultType).then((function(n) { var s = { file: t, status: "", message: "" }; n && (s.content = n), e.onAfterRead(s, i) } )) }, onAfterRead: function(t, e) { var i = this; this.resetInput(); var n = t; if (e) { var s = t; Array.isArray(t) ? (s = [], n = [], t.forEach((function(t) { t.file && (Nc(t.file, i.maxSize) ? s.push(t) : n.push(t)) } ))) : n = null, this.$emit("oversize", s, this.getDetail()) } (Array.isArray(n) ? Boolean(n.length) : Boolean(n)) && (this.$emit("input", [].concat(this.fileList, Pc(n))), this.afterRead && this.afterRead(n, this.getDetail())) }, onDelete: function(t, e) { var i, n = this, s = null != (i = t.beforeDelete) ? i : this.beforeDelete; if (s) { var r = s(t, this.getDetail(e)); if (!r) return; if (Object(m.g)(r)) return void r.then((function() { n.deleteFile(t, e) } )).catch(m.i) } this.deleteFile(t, e) }, deleteFile: function(t, e) { var i = this.fileList.slice(0); i.splice(e, 1), this.$emit("input", i), this.$emit("delete", t, this.getDetail(e)) }, resetInput: function() { this.$refs.input && (this.$refs.input.value = "") }, onClickUpload: function(t) { this.$emit("click-upload", t) }, onPreviewImage: function(t) { var e = this; if (this.previewFullImage) { var i = this.fileList.filter((function(t) { return Ac(t) } )) , s = i.map((function(t) { return t.file && !t.url && "failed" !== t.status && (t.url = URL.createObjectURL(t.file), e.urls.push(t.url)), t.url } )); this.imagePreview = yo(n({ images: s, startPosition: i.indexOf(t), onClose: function() { e.$emit("close-preview") } }, this.previewOptions)) } }, closeImagePreview: function() { this.imagePreview && this.imagePreview.close() }, chooseFile: function() { this.disabled || this.$refs.input && this.$refs.input.click() }, genPreviewMask: function(t) { var e = this.$createElement , i = t.status , n = t.message; if ("uploading" === i || "failed" === i) { var s = "failed" === i ? e(rt, { attrs: { name: "close" }, class: Rc("mask-icon") }) : e(vt, { class: Rc("loading") }) , r = Object(m.c)(n) && "" !== n; return e("div", { class: Rc("mask") }, [s, r && e("div", { class: Rc("mask-message") }, [n])]) } }, genPreviewItem: function(t, e) { var i, s, r, o = this, a = this.$createElement, l = null != (i = t.deletable) ? i : this.deletable, c = "uploading" !== t.status && l && a("div", { class: Rc("preview-delete"), on: { click: function(i) { i.stopPropagation(), o.onDelete(t, e) } } }, [a(rt, { attrs: { name: "cross" }, class: Rc("preview-delete-icon") })]), u = this.slots("preview-cover", n({ index: e }, t)), h = u && a("div", { class: Rc("preview-cover") }, [u]), d = null != (s = t.previewSize) ? s : this.previewSize, f = null != (r = t.imageFit) ? r : this.imageFit, p = Ac(t) ? a(un, { attrs: { fit: f, src: t.content || t.url, width: d, height: d, lazyLoad: this.lazyLoad }, class: Rc("preview-image"), on: { click: function() { o.onPreviewImage(t) } } }, [h]) : a("div", { class: Rc("file"), style: { width: this.previewSizeWithUnit, height: this.previewSizeWithUnit } }, [a(rt, { class: Rc("file-icon"), attrs: { name: "description" } }), a("div", { class: [Rc("file-name"), "van-ellipsis"] }, [t.file ? t.file.name : t.url]), h]); return a("div", { class: Rc("preview"), on: { click: function() { o.$emit("click-preview", t, o.getDetail(e)) } } }, [p, this.genPreviewMask(t), c]) }, genPreviewList: function() { if (this.previewImage) return this.fileList.map(this.genPreviewItem) }, genUpload: function() { var t = this.$createElement; if (!(this.fileList.length >= this.maxCount)) { var e, i = this.slots(), s = this.readonly ? null : t("input", { attrs: n({}, this.$attrs, { type: "file", accept: this.accept, disabled: this.disabled }), ref: "input", class: Rc("input"), on: { change: this.onChange } }); if (i) return t("div", { class: Rc("input-wrapper"), key: "input-wrapper", on: { click: this.onClickUpload } }, [i, s]); if (this.previewSize) { var r = this.previewSizeWithUnit; e = { width: r, height: r } } return t("div", { directives: [{ name: "show", value: this.showUpload }], class: Rc("upload", { readonly: this.readonly }), style: e, on: { click: this.onClickUpload } }, [t(rt, { attrs: { name: this.uploadIcon }, class: Rc("upload-icon") }), this.uploadText && t("span", { class: Rc("upload-text") }, [this.uploadText]), s]) } } }, render: function() { var t = arguments[0]; return t("div", { class: Rc() }, [t("div", { class: Rc("wrapper", { disabled: this.disabled }) }, [this.genPreviewList(), this.genUpload()])]) } }) , Hc = Object(l.a)("sku-img-uploader") , _c = Hc[0] , Wc = Hc[2] , qc = _c({ props: { value: String, uploadImg: Function, customUpload: Function, maxSize: { type: Number, default: 6 } }, data: function() { return { fileList: [] } }, watch: { value: function(t) { this.fileList = t ? [{ url: t, isImage: !0 }] : [] } }, methods: { afterReadFile: function(t) { var e = this; t.status = "uploading", t.message = Wc("uploading"), this.uploadImg(t.file, t.content).then((function(i) { t.status = "done", e.$emit("input", i) } )).catch((function() { t.status = "failed", t.message = Wc("fail") } )) }, onOversize: function() { this.$toast(Wc("oversize", this.maxSize)) }, onDelete: function() { this.$emit("input", "") }, onClickUpload: function() { var t = this; this.customUpload && this.customUpload().then((function(e) { t.fileList.push({ url: e }), t.$emit("input", e) } )) } }, render: function() { var t = this , e = arguments[0]; return e(Fc, { attrs: { maxCount: 1, readonly: !!this.customUpload, maxSize: 1024 * this.maxSize * 1024, afterRead: this.afterReadFile }, on: { oversize: this.onOversize, delete: this.onDelete, "click-upload": this.onClickUpload }, model: { value: t.fileList, callback: function(e) { t.fileList = e } } }) } }); var Uc = Object(l.a)("sku-datetime-field") , Kc = Uc[0] , Yc = Uc[2] , Xc = Kc({ props: { value: String, label: String, required: Boolean, placeholder: String, type: { type: String, default: "date" } }, data: function() { return { showDatePicker: !1, currentDate: "time" === this.type ? "" : new Date, minDate: new Date((new Date).getFullYear() - 60,0,1) } }, watch: { value: function(t) { switch (this.type) { case "time": this.currentDate = t; break; case "date": case "datetime": this.currentDate = ((e = t) ? new Date(e.replace(/-/g, "/")) : null) || new Date } var e } }, computed: { title: function() { return Yc("title." + this.type) } }, methods: { onClick: function() { this.showDatePicker = !0 }, onConfirm: function(t) { var e = t; "time" !== this.type && (e = function(t, e) { if (void 0 === e && (e = "date"), !t) return ""; var i = t.getFullYear() , n = t.getMonth() + 1 , s = t.getDate() , r = i + "-" + Object(As.b)(n) + "-" + Object(As.b)(s); if ("datetime" === e) { var o = t.getHours() , a = t.getMinutes(); r += " " + Object(As.b)(o) + ":" + Object(As.b)(a) } return r }(t, this.type)), this.$emit("input", e), this.showDatePicker = !1 }, onCancel: function() { this.showDatePicker = !1 }, formatter: function(t, e) { return "" + e + Yc("format." + t) } }, render: function() { var t = this , e = arguments[0]; return e(de, { attrs: { readonly: !0, "is-link": !0, center: !0, value: this.value, label: this.label, required: this.required, placeholder: this.placeholder }, on: { click: this.onClick } }, [e(ct, { attrs: { round: !0, position: "bottom", getContainer: "body" }, slot: "extra", model: { value: t.showDatePicker, callback: function(e) { t.showDatePicker = e } } }, [e(gr, { attrs: { type: this.type, title: this.title, value: this.currentDate, minDate: this.minDate, formatter: this.formatter }, on: { cancel: this.onCancel, confirm: this.onConfirm } })])]) } }) , Qc = Object(l.a)("sku-messages") , Gc = Qc[0] , Zc = Qc[1] , Jc = Qc[2] , tu = Gc({ props: { messageConfig: Object, goodsId: [Number, String], messages: { type: Array, default: function() { return [] } } }, data: function() { return { messageValues: this.resetMessageValues(this.messages) } }, watch: { messages: function(t) { this.messageValues = this.resetMessageValues(t) } }, methods: { resetMessageValues: function(t) { var e = this.messageConfig.initialMessages , i = void 0 === e ? {} : e; return (t || []).map((function(t) { return { value: i[t.name] || "" } } )) }, getType: function(t) { return 1 == +t.multiple ? "textarea" : "id_no" === t.type ? "text" : t.datetime > 0 ? "datetime" : t.type }, getMessages: function() { var t = {}; return this.messageValues.forEach((function(e, i) { t["message_" + i] = e.value } )), t }, getCartMessages: function() { var t = this , e = {}; return this.messageValues.forEach((function(i, n) { var s = t.messages[n]; e[s.name] = i.value } )), e }, getPlaceholder: function(t) { var e = 1 == +t.multiple ? "textarea" : t.type , i = this.messageConfig.placeholderMap || {}; return t.placeholder || i[e] || Jc("placeholder." + e) }, validateMessages: function() { for (var t = this.messageValues, e = 0; e < t.length; e++) { var i = t[e].value , n = this.messages[e]; if ("" === i) { if ("1" === String(n.required)) return Jc("image" === n.type ? "upload" : "fill") + n.name } else { if ("tel" === n.type && !Object(zi.b)(i)) return Jc("invalid.tel"); if ("mobile" === n.type && !/^\d{6,20}$/.test(i)) return Jc("invalid.mobile"); if ("email" === n.type && !Dc(i)) return Jc("invalid.email"); if ("id_no" === n.type && (i.length < 15 || i.length > 18)) return Jc("invalid.id_no") } } }, getFormatter: function(t) { return function(e) { return "mobile" === t.type || "tel" === t.type ? e.replace(/[^\d.]/g, "") : e } }, getExtraDesc: function(t) { var e = this.$createElement , i = t.extraDesc; if (i) return e("div", { class: Zc("extra-message") }, [i]) }, genMessage: function(t, e) { var i = this , n = this.$createElement; return "image" === t.type ? n(oe, { key: this.goodsId + "-" + e, attrs: { title: t.name, required: "1" === String(t.required), valueClass: Zc("image-cell-value") }, class: Zc("image-cell") }, [n(qc, { attrs: { maxSize: this.messageConfig.uploadMaxSize, uploadImg: this.messageConfig.uploadImg, customUpload: this.messageConfig.customUpload }, model: { value: i.messageValues[e].value, callback: function(t) { i.$set(i.messageValues[e], "value", t) } } }), n("div", { class: Zc("image-cell-label") }, [Jc("imageLabel")])]) : ["date", "time"].indexOf(t.type) > -1 ? n(Xc, { attrs: { label: t.name, required: "1" === String(t.required), placeholder: this.getPlaceholder(t), type: this.getType(t) }, key: this.goodsId + "-" + e, model: { value: i.messageValues[e].value, callback: function(t) { i.$set(i.messageValues[e], "value", t) } } }) : n("div", { class: Zc("cell-block") }, [n(de, { attrs: { maxlength: "200", center: !t.multiple, label: t.name, required: "1" === String(t.required), placeholder: this.getPlaceholder(t), type: this.getType(t), formatter: this.getFormatter(t), border: !1 }, key: this.goodsId + "-" + e, model: { value: i.messageValues[e].value, callback: function(t) { i.$set(i.messageValues[e], "value", t) } } }), this.getExtraDesc(t)]) } }, render: function() { var t = arguments[0]; return t("div", { class: Zc() }, [this.messages.map(this.genMessage)]) } }) , eu = Object(l.a)("sku-actions") , iu = eu[0] , nu = eu[1] , su = eu[2]; function ru(t, e, i, n) { var s = function(t) { return function() { e.skuEventBus.$emit(t) } }; return t("div", r()([{ class: nu() }, h(n)]), [e.showAddCartBtn && t(je, { attrs: { size: "large", type: "warning", text: e.addCartText || su("addCart") }, on: { click: s("sku:addCart") } }), t(je, { attrs: { size: "large", type: "danger", text: e.buyText || su("buy") }, on: { click: s("sku:buy") } })]) } ru.props = { buyText: String, addCartText: String, skuEventBus: Object, showAddCartBtn: Boolean }; var ou = iu(ru) , au = Object(l.a)("sku") , lu = au[0] , cu = au[1] , uu = au[2] , hu = Xl.QUOTA_LIMIT , du = lu({ props: { sku: Object, goods: Object, value: Boolean, buyText: String, goodsId: [Number, String], priceTag: String, lazyLoad: Boolean, hideStock: Boolean, properties: Array, addCartText: String, stepperTitle: String, getContainer: [String, Function], hideQuotaText: Boolean, hideSelectedText: Boolean, resetStepperOnHide: Boolean, customSkuValidator: Function, disableStepperInput: Boolean, resetSelectedSkuOnHide: Boolean, quota: { type: Number, default: 0 }, quotaUsed: { type: Number, default: 0 }, startSaleNum: { type: Number, default: 1 }, initialSku: { type: Object, default: function() { return {} } }, stockThreshold: { type: Number, default: 50 }, showSoldoutSku: { type: Boolean, default: !0 }, showAddCartBtn: { type: Boolean, default: !0 }, disableSoldoutSku: { type: Boolean, default: !0 }, customStepperConfig: { type: Object, default: function() { return {} } }, showHeaderImage: { type: Boolean, default: !0 }, previewOnClickImage: { type: Boolean, default: !0 }, safeAreaInsetBottom: { type: Boolean, default: !0 }, closeOnClickOverlay: { type: Boolean, default: !0 }, bodyOffsetTop: { type: Number, default: 200 }, messageConfig: { type: Object, default: function() { return { initialMessages: {}, placeholderMap: {}, uploadImg: function() { return Promise.resolve() }, uploadMaxSize: 5 } } } }, data: function() { return { selectedSku: {}, selectedProp: {}, selectedNum: 1, show: this.value } }, watch: { show: function(t) { this.$emit("input", t), t || (this.$emit("sku-close", { selectedSkuValues: this.selectedSkuValues, selectedNum: this.selectedNum, selectedSkuComb: this.selectedSkuComb }), this.resetStepperOnHide && this.resetStepper(), this.resetSelectedSkuOnHide && this.resetSelectedSku()) }, value: function(t) { this.show = t }, skuTree: "resetSelectedSku", initialSku: function() { this.resetStepper(), this.resetSelectedSku() } }, computed: { skuGroupClass: function() { return ["van-sku-group-container", { "van-sku-group-container--hide-soldout": !this.showSoldoutSku }] }, bodyStyle: function() { if (!this.$isServer) return { maxHeight: window.innerHeight - this.bodyOffsetTop + "px" } }, isSkuCombSelected: function() { var t = this; return !(this.hasSku && !Zl(this.skuTree, this.selectedSku)) && !this.propList.filter((function(t) { return !1 !== t.is_necessary } )).some((function(e) { return 0 === (t.selectedProp[e.k_id] || []).length } )) }, isSkuEmpty: function() { return 0 === Object.keys(this.sku).length }, hasSku: function() { return !this.sku.none_sku }, hasSkuOrAttr: function() { return this.hasSku || this.propList.length > 0 }, selectedSkuComb: function() { var t = null; return this.isSkuCombSelected && (t = this.hasSku ? Jl(this.skuList, this.selectedSku) : { id: this.sku.collection_id, price: Math.round(100 * this.sku.price), stock_num: this.sku.stock_num }) && (t.properties = nc(this.propList, this.selectedProp), t.property_price = this.selectedPropValues.reduce((function(t, e) { return t + (e.price || 0) } ), 0)), t }, selectedSkuValues: function() { return tc(this.skuTree, this.selectedSku) }, selectedPropValues: function() { return ic(this.propList, this.selectedProp) }, price: function() { return this.selectedSkuComb ? ((this.selectedSkuComb.price + this.selectedSkuComb.property_price) / 100).toFixed(2) : this.sku.price }, originPrice: function() { return this.selectedSkuComb && this.selectedSkuComb.origin_price ? ((this.selectedSkuComb.origin_price + this.selectedSkuComb.property_price) / 100).toFixed(2) : this.sku.origin_price }, skuTree: function() { return this.sku.tree || [] }, skuList: function() { return this.sku.list || [] }, propList: function() { return this.properties || [] }, imageList: function() { var t = [this.goods.picture]; return this.skuTree.length > 0 && this.skuTree.forEach((function(e) { e.v && e.v.forEach((function(e) { var i = e.previewImgUrl || e.imgUrl || e.img_url; i && -1 === t.indexOf(i) && t.push(i) } )) } )), t }, stock: function() { var t = this.customStepperConfig.stockNum; return void 0 !== t ? t : this.selectedSkuComb ? this.selectedSkuComb.stock_num : this.sku.stock_num }, stockText: function() { var t = this.$createElement , e = this.customStepperConfig.stockFormatter; return e ? e(this.stock) : [uu("stock") + " ", t("span", { class: cu("stock-num", { highlight: this.stock < this.stockThreshold }) }, [this.stock]), " " + uu("stockUnit")] }, selectedText: function() { var t = this; if (this.selectedSkuComb) { var e = this.selectedSkuValues.concat(this.selectedPropValues); return uu("selected") + " " + e.map((function(t) { return t.name } )).join(" ") } var i = this.skuTree.filter((function(e) { return "" === t.selectedSku[e.k_s] } )).map((function(t) { return t.k } )) , n = this.propList.filter((function(e) { return (t.selectedProp[e.k_id] || []).length < 1 } )).map((function(t) { return t.k } )); return uu("select") + " " + i.concat(n).join(" ") } }, created: function() { var t = new a.a; this.skuEventBus = t, t.$on("sku:select", this.onSelect), t.$on("sku:propSelect", this.onPropSelect), t.$on("sku:numChange", this.onNumChange), t.$on("sku:previewImage", this.onPreviewImage), t.$on("sku:overLimit", this.onOverLimit), t.$on("sku:stepperState", this.onStepperState), t.$on("sku:addCart", this.onAddCart), t.$on("sku:buy", this.onBuy), this.resetStepper(), this.resetSelectedSku(), this.$emit("after-sku-create", t) }, methods: { resetStepper: function() { var t = this.$refs.skuStepper , e = this.initialSku.selectedNum , i = null != e ? e : this.startSaleNum; this.stepperError = null, t ? t.setCurrentNum(i) : this.selectedNum = i }, resetSelectedSku: function() { var t = this; this.selectedSku = {}, this.skuTree.forEach((function(e) { t.selectedSku[e.k_s] = "" } )), this.skuTree.forEach((function(e) { var i = e.k_s , n = 1 === e.v.length ? e.v[0].id : t.initialSku[i]; n && ec(t.skuList, t.selectedSku, { key: i, valueId: n }) && (t.selectedSku[i] = n) } )); var e = this.selectedSkuValues; e.length > 0 && this.$nextTick((function() { t.$emit("sku-selected", { skuValue: e[e.length - 1], selectedSku: t.selectedSku, selectedSkuComb: t.selectedSkuComb }) } )), this.selectedProp = {}; var i = this.initialSku.selectedProp , n = void 0 === i ? {} : i; this.propList.forEach((function(e) { n[e.k_id] && (t.selectedProp[e.k_id] = n[e.k_id]) } )), Object(m.d)(this.selectedProp) && this.propList.forEach((function(e) { var i; if ((null == e || null == (i = e.v) ? void 0 : i.length) > 0) { var n = e.v , s = e.k_id; if (!n.some((function(t) { return 0 != +t.price } ))) { var r = n.find((function(t) { return 0 !== t.text_status } )); r && (t.selectedProp[s] = [r.id]) } } } )); var s = this.selectedPropValues; s.length > 0 && this.$emit("sku-prop-selected", { propValue: s[s.length - 1], selectedProp: this.selectedProp, selectedSkuComb: this.selectedSkuComb }), this.$emit("sku-reset", { selectedSku: this.selectedSku, selectedProp: this.selectedProp, selectedSkuComb: this.selectedSkuComb }), this.centerInitialSku() }, 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 uu("unavailable"); if (this.isSkuCombSelected) return this.validateSkuMessages(); if (this.customSkuValidator) { var t = this.customSkuValidator(this); if (t) return t } return uu("selectSku") }, onSelect: function(t) { var e, i; this.selectedSku = this.selectedSku[t.skuKeyStr] === t.id ? n({}, this.selectedSku, ((e = {})[t.skuKeyStr] = "", e)) : n({}, this.selectedSku, ((i = {})[t.skuKeyStr] = t.id, i)), this.$emit("sku-selected", { skuValue: t, selectedSku: this.selectedSku, selectedSkuComb: this.selectedSkuComb }) }, onPropSelect: function(t) { var e, i = this.selectedProp[t.skuKeyStr] || [], s = i.indexOf(t.id); s > -1 ? i.splice(s, 1) : t.multiple ? i.push(t.id) : i.splice(0, 1, t.id), this.selectedProp = n({}, this.selectedProp, ((e = {})[t.skuKeyStr] = i, e)), this.$emit("sku-prop-selected", { propValue: t, selectedProp: this.selectedProp, selectedSkuComb: this.selectedSkuComb }) }, onNumChange: function(t) { this.selectedNum = t }, onPreviewImage: function(t) { var e = this , i = this.imageList , s = 0 , r = i[0]; t && t.imgUrl && (this.imageList.some((function(e, i) { return e === t.imgUrl && (s = i, !0) } )), r = t.imgUrl); var o = n({}, t, { index: s, imageList: this.imageList, indexImage: r }); this.$emit("open-preview", o), this.previewOnClickImage && yo({ images: this.imageList, startPosition: s, onClose: function() { e.$emit("close-preview", o) } }) }, onOverLimit: function(t) { var e = t.action , i = t.limitType , n = t.quota , s = t.quotaUsed , r = this.customStepperConfig.handleOverLimit; r ? r(t) : "minus" === e ? this.startSaleNum > 1 ? Te(uu("minusStartTip", this.startSaleNum)) : Te(uu("minusTip")) : "plus" === e && Te(i === hu ? s > 0 ? uu("quotaUsedTip", n, s) : uu("quotaTip", n) : uu("soldout")) }, onStepperState: function(t) { this.stepperError = t.valid ? null : n({}, t, { action: "plus" }) }, onAddCart: function() { this.onBuyOrAddCart("add-cart") }, onBuy: function() { this.onBuyOrAddCart("buy-clicked") }, onBuyOrAddCart: function(t) { if (this.stepperError) return this.onOverLimit(this.stepperError); var e = this.validateSku(); e ? Te(e) : this.$emit(t, this.getSkuData()) }, getSkuData: function() { return { goodsId: this.goodsId, messages: this.getSkuMessages(), selectedNum: this.selectedNum, cartMessages: this.getSkuCartMessages(), selectedSkuComb: this.selectedSkuComb } }, onOpened: function() { this.centerInitialSku() }, centerInitialSku: function() { var t = this; (this.$refs.skuRows || []).forEach((function(e) { var i = (e.skuRow || {}).k_s; e.centerItem(t.initialSku[i]) } )) } }, render: function() { var t = this , e = arguments[0]; if (!this.isSkuEmpty) { var i = this.sku , n = this.skuList , s = this.goods , r = this.price , o = this.lazyLoad , a = this.originPrice , l = this.skuEventBus , c = this.selectedSku , u = this.selectedProp , h = this.selectedNum , d = this.stepperTitle , f = this.selectedSkuComb , p = this.showHeaderImage , m = this.disableSoldoutSku , v = { price: r, originPrice: a, selectedNum: h, skuEventBus: l, selectedSku: c, selectedSkuComb: f } , g = function(e) { return t.slots(e, v) } , b = g("sku-header") || e(cc, { attrs: { sku: i, goods: s, skuEventBus: l, selectedSku: c, showHeaderImage: p } }, [e("template", { slot: "sku-header-image-extra" }, [g("sku-header-image-extra")]), g("sku-header-price") || e("div", { class: "van-sku__goods-price" }, [e("span", { class: "van-sku__price-symbol" }, ["¥"]), e("span", { class: "van-sku__price-num" }, [r]), this.priceTag && e("span", { class: "van-sku__price-tag" }, [this.priceTag])]), g("sku-header-origin-price") || a && e(fc, [uu("originPrice"), " ¥", a]), !this.hideStock && e(fc, [e("span", { class: "van-sku__stock" }, [this.stockText])]), this.hasSkuOrAttr && !this.hideSelectedText && e(fc, [this.selectedText]), g("sku-header-extra")]) , y = g("sku-group") || this.hasSkuOrAttr && e("div", { class: this.skuGroupClass }, [this.skuTree.map((function(t) { return e(bc, { attrs: { skuRow: t }, ref: "skuRows", refInFor: !0 }, [t.v.map((function(i) { return e(yc, { attrs: { skuList: n, lazyLoad: o, skuValue: i, skuKeyStr: t.k_s, selectedSku: c, skuEventBus: l, disableSoldoutSku: m, largeImageMode: t.largeImageMode } }) } ))]) } )), this.propList.map((function(t) { return e(bc, { attrs: { skuRow: t } }, [t.v.map((function(i) { return e(Sc, { attrs: { skuValue: i, skuKeyStr: t.k_id + "", selectedProp: u, skuEventBus: l, multiple: t.is_multiple, disabled: 0 === i.text_status } }) } ))]) } ))]) , S = g("sku-stepper") || e(jc, { ref: "skuStepper", attrs: { stock: this.stock, quota: this.quota, quotaUsed: this.quotaUsed, startSaleNum: this.startSaleNum, skuEventBus: l, selectedNum: h, stepperTitle: d, skuStockNum: i.stock_num, disableStepperInput: this.disableStepperInput, customStepperConfig: this.customStepperConfig, hideQuotaText: this.hideQuotaText }, on: { change: function(e) { t.$emit("stepper-change", e) } } }) , k = g("sku-messages") || e(tu, { ref: "skuMessages", attrs: { goodsId: this.goodsId, messageConfig: this.messageConfig, messages: i.messages } }) , x = g("sku-actions") || e(ou, { attrs: { buyText: this.buyText, skuEventBus: l, addCartText: this.addCartText, showAddCartBtn: this.showAddCartBtn } }); return e(ct, { attrs: { round: !0, closeable: !0, position: "bottom", getContainer: this.getContainer, closeOnClickOverlay: this.closeOnClickOverlay, safeAreaInsetBottom: this.safeAreaInsetBottom }, class: "van-sku-container", on: { opened: this.onOpened }, model: { value: t.show, callback: function(e) { t.show = e } } }, [b, e("div", { class: "van-sku-body", style: this.bodyStyle }, [g("sku-body-top"), y, g("extra-sku-group"), S, k]), g("sku-actions-top"), x]) } } }); No.a.add({ "zh-CN": { vanSku: { select: "请选择", selected: "已选", selectSku: "请先选择商品规格", soldout: "库存不足", originPrice: "原价", minusTip: "至少选择一件", minusStartTip: function(t) { return t + "件起售" }, unavailable: "商品已经无法购买啦", stock: "剩余", stockUnit: "件", quotaTip: function(t) { return "每人限购" + t + "件" }, quotaUsedTip: function(t, e) { return "每人限购" + t + "件,你已购买" + e + "件" } }, vanSkuActions: { buy: "立即购买", addCart: "加入购物车" }, vanSkuImgUploader: { oversize: function(t) { return "最大可上传图片为" + t + "MB,请尝试压缩图片尺寸" }, fail: "上传失败", uploading: "上传中..." }, vanSkuStepper: { quotaLimit: function(t) { return "限购" + t + "件" }, quotaStart: function(t) { return t + "件起售" }, comma: ",", num: "购买数量" }, vanSkuMessages: { fill: "请填写", upload: "请上传", imageLabel: "仅限一张", invalid: { tel: "请填写正确的数字格式留言", mobile: "手机号长度为6-20位数字", email: "请填写正确的邮箱", id_no: "请填写正确的身份证号码" }, placeholder: { id_no: "请填写身份证号", text: "请填写留言", tel: "请填写数字", email: "请填写邮箱", date: "请选择日期", time: "请选择时间", textarea: "请填写留言", mobile: "请填写手机号" } }, vanSkuRow: { multiple: "可多选" }, vanSkuDatetimeField: { title: { date: "选择年月日", time: "选择时间", datetime: "选择日期时间" }, format: { year: "年", month: "月", day: "日", hour: "时", minute: "分" } } } }), du.SkuActions = ou, du.SkuHeader = cc, du.SkuHeaderItem = fc, du.SkuMessages = tu, du.SkuStepper = jc, du.SkuRow = bc, du.SkuRowItem = yc, du.SkuRowPropItem = Sc, du.skuHelper = sc, du.skuConstants = Ql; var fu = du , pu = Object(l.a)("slider") , mu = pu[0] , vu = pu[1] , gu = function(t, e) { return JSON.stringify(t) === JSON.stringify(e) } , bu = mu({ mixins: [F, si], props: { disabled: Boolean, vertical: Boolean, range: Boolean, barHeight: [Number, String], buttonSize: [Number, String], activeColor: String, inactiveColor: String, min: { type: [Number, String], default: 0 }, max: { type: [Number, String], default: 100 }, step: { type: [Number, String], default: 1 }, value: { type: [Number, Array], default: 0 } }, data: function() { return { dragStatus: "" } }, computed: { scope: function() { return this.max - this.min }, buttonStyle: function() { if (this.buttonSize) { var t = Object(Y.a)(this.buttonSize); return { width: t, height: t } } } }, created: function() { this.updateValue(this.value) }, mounted: function() { this.range ? (this.bindTouchEvent(this.$refs.wrapper0), this.bindTouchEvent(this.$refs.wrapper1)) : this.bindTouchEvent(this.$refs.wrapper) }, methods: { onTouchStart: function(t) { this.disabled || (this.touchStart(t), this.currentValue = this.value, this.range ? this.startValue = this.value.map(this.format) : this.startValue = this.format(this.value), this.dragStatus = "start") }, onTouchMove: function(t) { if (!this.disabled) { "start" === this.dragStatus && this.$emit("drag-start"), k(t, !0), this.touchMove(t), this.dragStatus = "draging"; var e = this.$el.getBoundingClientRect() , i = (this.vertical ? this.deltaY : this.deltaX) / (this.vertical ? e.height : e.width) * this.scope; this.range ? this.currentValue[this.index] = this.startValue[this.index] + i : this.currentValue = this.startValue + i, this.updateValue(this.currentValue) } }, onTouchEnd: function() { this.disabled || ("draging" === this.dragStatus && (this.updateValue(this.currentValue, !0), this.$emit("drag-end")), this.dragStatus = "") }, onClick: function(t) { if (t.stopPropagation(), !this.disabled) { var e = this.$el.getBoundingClientRect() , i = this.vertical ? t.clientY - e.top : t.clientX - e.left , n = this.vertical ? e.height : e.width , s = +this.min + i / n * this.scope; if (this.range) { var r = this.value , o = r[0] , a = r[1]; s <= (o + a) / 2 ? o = s : a = s, s = [o, a] } this.startValue = this.value, this.updateValue(s, !0) } }, handleOverlap: function(t) { return t[0] > t[1] ? (t = It(t)).reverse() : t }, updateValue: function(t, e) { t = this.range ? this.handleOverlap(t).map(this.format) : this.format(t), gu(t, this.value) || this.$emit("input", t), e && !gu(t, this.startValue) && this.$emit("change", t) }, format: function(t) { var e = +this.min , i = +this.max , n = +this.step; return t = Et(t, e, i), Pt(e, Math.round((t - e) / n) * n) } }, render: function() { var t, e, i = this, n = arguments[0], s = this.vertical, r = s ? "height" : "width", o = s ? "width" : "height", a = ((t = { background: this.inactiveColor })[o] = Object(Y.a)(this.barHeight), t), l = function() { var t = i.value , e = i.min , n = i.range , s = i.scope; return n ? 100 * (t[1] - t[0]) / s + "%" : 100 * (t - e) / s + "%" }, c = function() { var t = i.value , e = i.min , n = i.range , s = i.scope; return n ? 100 * (t[0] - e) / s + "%" : null }, u = ((e = {})[r] = l(), e.left = this.vertical ? null : c(), e.top = this.vertical ? c() : null, e.background = this.activeColor, e); this.dragStatus && (u.transition = "none"); var h = function(t) { var e = ["left", "right"] , s = "number" == typeof t , r = s ? i.value[t] : i.value; return n("div", { ref: s ? "wrapper" + t : "wrapper", attrs: { role: "slider", tabindex: i.disabled ? -1 : 0, "aria-valuemin": i.min, "aria-valuenow": i.value, "aria-valuemax": i.max, "aria-orientation": i.vertical ? "vertical" : "horizontal" }, class: vu(s ? "button-wrapper-" + e[t] : "button-wrapper"), on: { touchstart: function() { s && (i.index = t) }, click: function(t) { return t.stopPropagation() } } }, [function() { if (s) { var e = i.slots(0 === t ? "left-button" : "right-button", { value: r }); if (e) return e } return i.slots("button") ? i.slots("button") : n("div", { class: vu("button"), style: i.buttonStyle }) }()]) }; return n("div", { style: a, class: vu({ disabled: this.disabled, vertical: s }), on: { click: this.onClick } }, [n("div", { class: vu("bar"), style: u }, [this.range ? [h(0), h(1)] : h()])]) } }) , yu = Object(l.a)("step") , Su = yu[0] , ku = yu[1] , xu = Su({ mixins: [Pe("vanSteps")], computed: { status: function() { return this.index < this.parent.active ? "finish" : this.index === +this.parent.active ? "process" : void 0 }, active: function() { return "process" === this.status }, lineStyle: function() { var t = this.parent , e = t.activeColor , i = t.inactiveColor , n = t.center , s = t.direction , r = { background: "finish" === this.status ? e : i }; return n && "vertical" === s && (r.top = "50%"), r }, circleContainerStyle: function() { if (this.parent.center && "vertical" === this.parent.direction) return { top: "50%" } }, titleStyle: function() { return this.active ? { color: this.parent.activeColor } : this.status ? void 0 : { color: this.parent.inactiveColor } } }, methods: { genCircle: function() { var t = this.$createElement , e = this.parent , i = e.activeIcon , n = e.iconPrefix , s = e.activeColor , r = e.finishIcon , o = e.inactiveIcon; if (this.active) return this.slots("active-icon") || t(rt, { class: ku("icon", "active"), attrs: { name: i, color: s, classPrefix: n } }); var a = this.slots("finish-icon"); if ("finish" === this.status && (r || a)) return a || t(rt, { class: ku("icon", "finish"), attrs: { name: r, color: s, classPrefix: n } }); var l = this.slots("inactive-icon"); return o || l ? l || t(rt, { class: ku("icon"), attrs: { name: o, classPrefix: n } }) : t("i", { class: ku("circle"), style: this.lineStyle }) }, onClickStep: function() { this.parent.$emit("click-step", this.index) } }, render: function() { var t, e = arguments[0], i = this.status, n = this.active, s = this.parent.direction; return e("div", { class: [Ot, ku([s, (t = {}, t[i] = i, t)])] }, [e("div", { class: ku("title", { active: n }), style: this.titleStyle, on: { click: this.onClickStep } }, [this.slots()]), e("div", { class: ku("circle-container"), on: { click: this.onClickStep }, style: this.circleContainerStyle }, [this.genCircle()]), e("div", { class: ku("line"), style: this.lineStyle })]) } }) , wu = Object(l.a)("steps") , Cu = wu[0] , Ou = wu[1] , Tu = Cu({ mixins: [Le("vanSteps")], props: { center: Boolean, iconPrefix: String, finishIcon: String, activeColor: String, inactiveIcon: String, inactiveColor: String, active: { type: [Number, String], default: 0 }, direction: { type: String, default: "horizontal" }, activeIcon: { type: String, default: "checked" } }, render: function() { var t = arguments[0]; return t("div", { class: Ou([this.direction]) }, [t("div", { class: Ou("items") }, [this.slots()])]) } }) , $u = Object(l.a)("submit-bar") , Bu = $u[0] , Iu = $u[1] , Eu = $u[2]; function ju(t, e, i, n) { var s = e.tip , o = e.price , a = e.tipIcon; return t("div", r()([{ class: Iu({ unfit: !e.safeAreaInsetBottom }) }, h(n)]), [i.top && i.top(), function() { if (i.tip || s) return t("div", { class: Iu("tip") }, [a && t(rt, { class: Iu("tip-icon"), attrs: { name: a } }), s && t("span", { class: Iu("tip-text") }, [s]), i.tip && i.tip()]) }(), t("div", { class: Iu("bar") }, [i.default && i.default(), function() { if ("number" == typeof o) { var i = (o / 100).toFixed(e.decimalLength).split(".") , n = e.decimalLength ? "." + i[1] : ""; return t("div", { style: { textAlign: e.textAlign ? e.textAlign : "" }, class: Iu("text") }, [t("span", [e.label || Eu("label")]), t("span", { class: Iu("price") }, [e.currency, t("span", { class: Iu("price", "integer") }, [i[0]]), n]), e.suffixLabel && t("span", { class: Iu("suffix-label") }, [e.suffixLabel])]) } }(), i.button ? i.button() : t(je, { attrs: { round: !0, type: e.buttonType, text: e.loading ? "" : e.buttonText, color: e.buttonColor, loading: e.loading, disabled: e.disabled }, class: Iu("button", e.buttonType), on: { click: function() { d(n, "submit") } } })])]) } ju.props = { tip: String, label: String, price: Number, tipIcon: String, loading: Boolean, disabled: Boolean, textAlign: String, buttonText: String, buttonColor: String, suffixLabel: String, safeAreaInsetBottom: { type: Boolean, default: !0 }, decimalLength: { type: [Number, String], default: 2 }, currency: { type: String, default: "¥" }, buttonType: { type: String, default: "danger" } }; var Du = Bu(ju) , Pu = Object(l.a)("swipe-cell") , Lu = Pu[0] , Nu = Pu[1] , Mu = Lu({ mixins: [F, $r({ event: "touchstart", method: "onClick" })], props: { onClose: Function, disabled: Boolean, leftWidth: [Number, String], rightWidth: [Number, String], beforeClose: Function, stopPropagation: Boolean, name: { type: [Number, String], default: "" } }, data: function() { return { offset: 0, dragging: !1 } }, computed: { computedLeftWidth: function() { return +this.leftWidth || this.getWidthByRef("left") }, computedRightWidth: function() { return +this.rightWidth || this.getWidthByRef("right") } }, mounted: function() { this.bindTouchEvent(this.$el) }, methods: { getWidthByRef: function(t) { return this.$refs[t] ? this.$refs[t].getBoundingClientRect().width : 0 }, open: function(t) { var e = "left" === t ? this.computedLeftWidth : -this.computedRightWidth; this.opened = !0, this.offset = e, this.$emit("open", { position: t, name: this.name, detail: this.name }) }, close: function(t) { this.offset = 0, this.opened && (this.opened = !1, this.$emit("close", { position: t, name: this.name })) }, onTouchStart: function(t) { this.disabled || (this.startOffset = this.offset, this.touchStart(t)) }, onTouchMove: function(t) { this.disabled || (this.touchMove(t), "horizontal" === this.direction && (this.dragging = !0, this.lockClick = !0, (!this.opened || this.deltaX * this.startOffset < 0) && k(t, this.stopPropagation), this.offset = Et(this.deltaX + this.startOffset, -this.computedRightWidth, this.computedLeftWidth))) }, onTouchEnd: function() { var t = this; this.disabled || this.dragging && (this.toggle(this.offset > 0 ? "left" : "right"), this.dragging = !1, setTimeout((function() { t.lockClick = !1 } ), 0)) }, toggle: function(t) { var e = Math.abs(this.offset) , i = this.opened ? .85 : .15 , n = this.computedLeftWidth , s = this.computedRightWidth; s && "right" === t && e > s * i ? this.open("right") : n && "left" === t && e > n * i ? this.open("left") : this.close() }, onClick: function(t) { void 0 === t && (t = "outside"), this.$emit("click", t), this.opened && !this.lockClick && (this.beforeClose ? this.beforeClose({ position: t, name: this.name, instance: this }) : this.onClose ? this.onClose(t, this, { name: this.name }) : this.close(t)) }, getClickHandler: function(t, e) { var i = this; return function(n) { e && n.stopPropagation(), i.onClick(t) } }, genLeftPart: function() { var t = this.$createElement , e = this.slots("left"); if (e) return t("div", { ref: "left", class: Nu("left"), on: { click: this.getClickHandler("left", !0) } }, [e]) }, genRightPart: function() { var t = this.$createElement , e = this.slots("right"); if (e) return t("div", { ref: "right", class: Nu("right"), on: { click: this.getClickHandler("right", !0) } }, [e]) } }, render: function() { var t = arguments[0] , e = { transform: "translate3d(" + this.offset + "px, 0, 0)", transitionDuration: this.dragging ? "0s" : ".6s" }; return t("div", { class: Nu(), on: { click: this.getClickHandler("cell") } }, [t("div", { class: Nu("wrapper"), style: e }, [this.genLeftPart(), this.slots(), this.genRightPart()])]) } }) , Au = Object(l.a)("switch-cell") , zu = Au[0] , Vu = Au[1]; function Ru(t, e, i, s) { return t(oe, r()([{ attrs: { center: !0, size: e.cellSize, title: e.title, border: e.border }, class: Vu([e.cellSize]) }, h(s)]), [t(li, { props: n({}, e), on: n({}, s.listeners) })]) } Ru.props = n({}, ni, { title: String, cellSize: String, border: { type: Boolean, default: !0 }, size: { type: String, default: "24px" } }); var Fu = zu(Ru) , Hu = Object(l.a)("tabbar") , _u = Hu[0] , Wu = Hu[1] , qu = _u({ mixins: [Le("vanTabbar")], props: { route: Boolean, zIndex: [Number, String], placeholder: Boolean, activeColor: String, beforeChange: Function, inactiveColor: String, value: { type: [Number, String], default: 0 }, border: { type: Boolean, default: !0 }, fixed: { type: Boolean, default: !0 }, safeAreaInsetBottom: { type: Boolean, default: null } }, data: function() { return { height: null } }, computed: { fit: function() { return null !== this.safeAreaInsetBottom ? this.safeAreaInsetBottom : this.fixed } }, watch: { value: "setActiveItem", children: "setActiveItem" }, mounted: function() { var t = this; if (this.placeholder && this.fixed) { var e = function() { t.height = t.$refs.tabbar.getBoundingClientRect().height }; e(), setTimeout(e, 100) } }, methods: { setActiveItem: function() { var t = this; this.children.forEach((function(e, i) { e.nameMatched = e.name === t.value || i === t.value } )) }, triggerChange: function(t, e) { var i = this; kn({ interceptor: this.beforeChange, args: [t], done: function() { i.$emit("input", t), i.$emit("change", t), e() } }) }, genTabbar: function() { var t; return (0, this.$createElement)("div", { ref: "tabbar", style: { zIndex: this.zIndex }, class: [(t = {}, t[Bt] = this.border, t), Wu({ unfit: !this.fit, fixed: this.fixed })] }, [this.slots()]) } }, render: function() { var t = arguments[0]; return this.placeholder && this.fixed ? t("div", { class: Wu("placeholder"), style: { height: this.height + "px" } }, [this.genTabbar()]) : this.genTabbar() } }) , Uu = Object(l.a)("tabbar-item") , Ku = Uu[0] , Yu = Uu[1] , Xu = Ku({ mixins: [Pe("vanTabbar")], props: n({}, te, { dot: Boolean, icon: String, name: [Number, String], info: [Number, String], badge: [Number, String], iconPrefix: String }), data: function() { return { nameMatched: !1 } }, computed: { active: function() { if (this.parent.route && "$route"in this) { var t = this.to , e = this.$route , i = Object(m.f)(t) ? t : { path: t }; return !!e.matched.find((function(t) { var e = "" === t.path ? "/" : t.path , n = i.path === e , s = Object(m.c)(i.name) && i.name === t.name; return n || s } )) } return this.nameMatched } }, methods: { onClick: function(t) { var e = this; this.active || this.parent.triggerChange(this.name || this.index, (function() { Zt(e.$router, e) } )), this.$emit("click", t) }, genIcon: function() { var t = this.$createElement , e = this.slots("icon", { active: this.active }); return e || (this.icon ? t(rt, { attrs: { name: this.icon, classPrefix: this.iconPrefix } }) : void 0) } }, render: function() { var t, e = arguments[0], i = this.active, n = this.parent[i ? "activeColor" : "inactiveColor"]; return e("div", { class: Yu({ active: i }), style: { color: n }, on: { click: this.onClick } }, [e("div", { class: Yu("icon") }, [this.genIcon(), e(J, { attrs: { dot: this.dot, info: null != (t = this.badge) ? t : this.info } })]), e("div", { class: Yu("text") }, [this.slots("default", { active: i })])]) } }) , Qu = Object(l.a)("tree-select") , Gu = Qu[0] , Zu = Qu[1]; function Ju(t, e, i, n) { var s = e.items , o = e.height , a = e.activeId , l = e.selectedIcon , c = e.mainActiveIndex; var u = (s[+c] || {}).children || [] , f = Array.isArray(a); function p(t) { return f ? -1 !== a.indexOf(t) : a === t } var m = s.map((function(e) { var i; return t(_l, { attrs: { dot: e.dot, info: null != (i = e.badge) ? i : e.info, title: e.text, disabled: e.disabled }, class: [Zu("nav-item"), e.className] }) } )); return t("div", r()([{ class: Zu(), style: { height: Object(Y.a)(o) } }, h(n)]), [t(Vl, { class: Zu("nav"), attrs: { activeKey: c }, on: { change: function(t) { d(n, "update:main-active-index", t), d(n, "click-nav", t), d(n, "navclick", t) } } }, [m]), t("div", { class: Zu("content") }, [i.content ? i.content() : u.map((function(i) { return t("div", { key: i.id, class: ["van-ellipsis", Zu("item", { active: p(i.id), disabled: i.disabled })], on: { click: function() { if (!i.disabled) { var t = i.id; if (f) { var s = (t = a.slice()).indexOf(i.id); -1 !== s ? t.splice(s, 1) : t.length < e.max && t.push(i.id) } d(n, "update:active-id", t), d(n, "click-item", i), d(n, "itemclick", i) } } } }, [i.text, p(i.id) && t(rt, { attrs: { name: l }, class: Zu("selected") })]) } ))])]) } Ju.props = { max: { type: [Number, String], default: 1 / 0 }, items: { type: Array, default: function() { return [] } }, height: { type: [Number, String], default: 300 }, activeId: { type: [Number, String, Array], default: 0 }, selectedIcon: { type: String, default: "success" }, mainActiveIndex: { type: [Number, String], default: 0 } }; var th = Gu(Ju) , eh = "2.12.54"; function ih(t) { [kt, pi, Ai, Gt, Hi, je, on, mn, Hn, oe, Kn, Xn, Jn, rs, cs, fs, bs, Cs, Es, Ms, Fs, Ys, tr, rr, gr, Qe, xr, Tr, jr, zr, de, Hr, Ve, _e, Ur, Qr, to, rt, un, yo, wo, $o, J, Lo, vt, No.a, Vo, _o, Zo, la, $, pa, ya, Ca, Ut, rl, ct, cl, ml, Ti, bi, yl, wl, Il, Nl, Vl, _l, Yl, fu, bu, xu, Oc, Tu, In, Du, ao, Mu, ho, li, Fu, yn, qu, Xu, An, wi, Te, th, Fc].forEach((function(e) { e.install ? t.use(e) : e.name && t.component(e.name, e) } )) } "undefined" != typeof window && window.Vue && ih(window.Vue); e.default = { install: ih, version: eh } } ]) } ));