diff --git a/src/main/resources/static/assets/platform/plugins/vant/vant.css b/src/main/resources/static/assets/platform/plugins/vant/vant.css new file mode 100644 index 0000000..acd136d --- /dev/null +++ b/src/main/resources/static/assets/platform/plugins/vant/vant.css @@ -0,0 +1,7679 @@ +html { + -webkit-tap-highlight-color: transparent +} + +body { + margin: 0; + font-family: -apple-system,BlinkMacSystemFont,'Helvetica Neue',Helvetica,Segoe UI,Arial,Roboto,'PingFang SC',miui,'Hiragino Sans GB','Microsoft Yahei',sans-serif +} + +a { + text-decoration: none +} + +button,input,textarea { + color: inherit; + font: inherit +} + +[class*=van-]:focus,a:focus,button:focus,input:focus,textarea:focus { + outline: 0 +} + +ol,ul { + margin: 0; + padding: 0; + list-style: none +} + +.van-ellipsis { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis +} + +.van-multi-ellipsis--l2 { + display: -webkit-box; + overflow: hidden; + text-overflow: ellipsis; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical +} + +.van-multi-ellipsis--l3 { + display: -webkit-box; + overflow: hidden; + text-overflow: ellipsis; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical +} + +.van-clearfix::after { + display: table; + clear: both; + content: '' +} + +[class*=van-hairline]::after { + position: absolute; + box-sizing: border-box; + content: ' '; + pointer-events: none; + top: -50%; + right: -50%; + bottom: -50%; + left: -50%; + border: 0 solid #ebedf0; + -webkit-transform: scale(.5); + transform: scale(.5) +} + +.van-hairline,.van-hairline--bottom,.van-hairline--left,.van-hairline--right,.van-hairline--surround,.van-hairline--top,.van-hairline--top-bottom { + position: relative +} + +.van-hairline--top::after { + border-top-width: 1px +} + +.van-hairline--left::after { + border-left-width: 1px +} + +.van-hairline--right::after { + border-right-width: 1px +} + +.van-hairline--bottom::after { + border-bottom-width: 1px +} + +.van-hairline--top-bottom::after,.van-hairline-unset--top-bottom::after { + border-width: 1px 0 +} + +.van-hairline--surround::after { + border-width: 1px +} + +@-webkit-keyframes van-slide-up-enter { + from { + -webkit-transform: translate3d(0,100%,0); + transform: translate3d(0,100%,0) + } +} + +@keyframes van-slide-up-enter { + from { + -webkit-transform: translate3d(0,100%,0); + transform: translate3d(0,100%,0) + } +} + +@-webkit-keyframes van-slide-up-leave { + to { + -webkit-transform: translate3d(0,100%,0); + transform: translate3d(0,100%,0) + } +} + +@keyframes van-slide-up-leave { + to { + -webkit-transform: translate3d(0,100%,0); + transform: translate3d(0,100%,0) + } +} + +@-webkit-keyframes van-slide-down-enter { + from { + -webkit-transform: translate3d(0,-100%,0); + transform: translate3d(0,-100%,0) + } +} + +@keyframes van-slide-down-enter { + from { + -webkit-transform: translate3d(0,-100%,0); + transform: translate3d(0,-100%,0) + } +} + +@-webkit-keyframes van-slide-down-leave { + to { + -webkit-transform: translate3d(0,-100%,0); + transform: translate3d(0,-100%,0) + } +} + +@keyframes van-slide-down-leave { + to { + -webkit-transform: translate3d(0,-100%,0); + transform: translate3d(0,-100%,0) + } +} + +@-webkit-keyframes van-slide-left-enter { + from { + -webkit-transform: translate3d(-100%,0,0); + transform: translate3d(-100%,0,0) + } +} + +@keyframes van-slide-left-enter { + from { + -webkit-transform: translate3d(-100%,0,0); + transform: translate3d(-100%,0,0) + } +} + +@-webkit-keyframes van-slide-left-leave { + to { + -webkit-transform: translate3d(-100%,0,0); + transform: translate3d(-100%,0,0) + } +} + +@keyframes van-slide-left-leave { + to { + -webkit-transform: translate3d(-100%,0,0); + transform: translate3d(-100%,0,0) + } +} + +@-webkit-keyframes van-slide-right-enter { + from { + -webkit-transform: translate3d(100%,0,0); + transform: translate3d(100%,0,0) + } +} + +@keyframes van-slide-right-enter { + from { + -webkit-transform: translate3d(100%,0,0); + transform: translate3d(100%,0,0) + } +} + +@-webkit-keyframes van-slide-right-leave { + to { + -webkit-transform: translate3d(100%,0,0); + transform: translate3d(100%,0,0) + } +} + +@keyframes van-slide-right-leave { + to { + -webkit-transform: translate3d(100%,0,0); + transform: translate3d(100%,0,0) + } +} + +@-webkit-keyframes van-fade-in { + from { + opacity: 0 + } + + to { + opacity: 1 + } +} + +@keyframes van-fade-in { + from { + opacity: 0 + } + + to { + opacity: 1 + } +} + +@-webkit-keyframes van-fade-out { + from { + opacity: 1 + } + + to { + opacity: 0 + } +} + +@keyframes van-fade-out { + from { + opacity: 1 + } + + to { + opacity: 0 + } +} + +@-webkit-keyframes van-rotate { + from { + -webkit-transform: rotate(0); + transform: rotate(0) + } + + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg) + } +} + +@keyframes van-rotate { + from { + -webkit-transform: rotate(0); + transform: rotate(0) + } + + to { + -webkit-transform: rotate(360deg); + transform: rotate(360deg) + } +} + +.van-fade-enter-active { + -webkit-animation: .3s van-fade-in both ease-out; + animation: .3s van-fade-in both ease-out +} + +.van-fade-leave-active { + -webkit-animation: .3s van-fade-out both ease-in; + animation: .3s van-fade-out both ease-in +} + +.van-slide-up-enter-active { + -webkit-animation: van-slide-up-enter .3s both ease-out; + animation: van-slide-up-enter .3s both ease-out +} + +.van-slide-up-leave-active { + -webkit-animation: van-slide-up-leave .3s both ease-in; + animation: van-slide-up-leave .3s both ease-in +} + +.van-slide-down-enter-active { + -webkit-animation: van-slide-down-enter .3s both ease-out; + animation: van-slide-down-enter .3s both ease-out +} + +.van-slide-down-leave-active { + -webkit-animation: van-slide-down-leave .3s both ease-in; + animation: van-slide-down-leave .3s both ease-in +} + +.van-slide-left-enter-active { + -webkit-animation: van-slide-left-enter .3s both ease-out; + animation: van-slide-left-enter .3s both ease-out +} + +.van-slide-left-leave-active { + -webkit-animation: van-slide-left-leave .3s both ease-in; + animation: van-slide-left-leave .3s both ease-in +} + +.van-slide-right-enter-active { + -webkit-animation: van-slide-right-enter .3s both ease-out; + animation: van-slide-right-enter .3s both ease-out +} + +.van-slide-right-leave-active { + -webkit-animation: van-slide-right-leave .3s both ease-in; + animation: van-slide-right-leave .3s both ease-in +} + +.van-overlay { + position: fixed; + top: 0; + left: 0; + z-index: 1; + width: 100%; + height: 100%; + background-color: rgba(0,0,0,.7) +} + +.van-info { + position: absolute; + top: 0; + right: 0; + box-sizing: border-box; + min-width: 16px; + padding: 0 3px; + color: #fff; + font-weight: 500; + font-size: 12px; + font-family: -apple-system-font,Helvetica Neue,Arial,sans-serif; + line-height: 1.2; + text-align: center; + background-color: #ee0a24; + border: 1px solid #fff; + border-radius: 16px; + -webkit-transform: translate(50%,-50%); + transform: translate(50%,-50%); + -webkit-transform-origin: 100%; + transform-origin: 100% +} + +.van-info--dot { + width: 8px; + min-width: 0; + height: 8px; + background-color: #ee0a24; + border-radius: 100% +} + +.van-sidebar-item { + position: relative; + display: block; + box-sizing: border-box; + padding: 20px 12px; + overflow: hidden; + color: #323233; + font-size: 14px; + line-height: 20px; + background-color: #f7f8fa; + cursor: pointer; + -webkit-user-select: none; + user-select: none +} + +.van-sidebar-item:active { + background-color: #f2f3f5 +} + +.van-sidebar-item__text { + position: relative; + display: inline-block; + word-break: break-all +} + +.van-sidebar-item:not(:last-child)::after { + border-bottom-width: 1px +} + +.van-sidebar-item--select { + color: #323233; + font-weight: 500 +} + +.van-sidebar-item--select,.van-sidebar-item--select:active { + background-color: #fff +} + +.van-sidebar-item--select::before { + position: absolute; + top: 50%; + left: 0; + width: 4px; + height: 16px; + background-color: #ee0a24; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + content: '' +} + +.van-sidebar-item--disabled { + color: #c8c9cc; + cursor: not-allowed +} + +.van-sidebar-item--disabled:active { + background-color: #f7f8fa +} + +@font-face { + font-weight: 400; + font-family: vant-icon; + font-style: normal; + font-display: auto; + src: url(data:font/ttf;base64,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) format('woff2'),url(https://b.yzcdn.cn/vant/vant-icon-f463a9.woff) format('woff'),url(https://b.yzcdn.cn/vant/vant-icon-f463a9.ttf) format('truetype') +} + +.van-icon { + position: relative; + display: inline-block; + font: normal normal normal 14px/1 vant-icon; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased +} + +.van-icon::before { + display: inline-block +} + +.van-icon-add-o::before { + content: '\F000' +} + +.van-icon-add-square::before { + content: '\F001' +} + +.van-icon-add::before { + content: '\F002' +} + +.van-icon-after-sale::before { + content: '\F003' +} + +.van-icon-aim::before { + content: '\F004' +} + +.van-icon-alipay::before { + content: '\F005' +} + +.van-icon-apps-o::before { + content: '\F006' +} + +.van-icon-arrow-down::before { + content: '\F007' +} + +.van-icon-arrow-left::before { + content: '\F008' +} + +.van-icon-arrow-up::before { + content: '\F009' +} + +.van-icon-arrow::before { + content: '\F00A' +} + +.van-icon-ascending::before { + content: '\F00B' +} + +.van-icon-audio::before { + content: '\F00C' +} + +.van-icon-award-o::before { + content: '\F00D' +} + +.van-icon-award::before { + content: '\F00E' +} + +.van-icon-back-top::before { + content: '\F0E6' +} + +.van-icon-bag-o::before { + content: '\F00F' +} + +.van-icon-bag::before { + content: '\F010' +} + +.van-icon-balance-list-o::before { + content: '\F011' +} + +.van-icon-balance-list::before { + content: '\F012' +} + +.van-icon-balance-o::before { + content: '\F013' +} + +.van-icon-balance-pay::before { + content: '\F014' +} + +.van-icon-bar-chart-o::before { + content: '\F015' +} + +.van-icon-bars::before { + content: '\F016' +} + +.van-icon-bell::before { + content: '\F017' +} + +.van-icon-bill-o::before { + content: '\F018' +} + +.van-icon-bill::before { + content: '\F019' +} + +.van-icon-birthday-cake-o::before { + content: '\F01A' +} + +.van-icon-bookmark-o::before { + content: '\F01B' +} + +.van-icon-bookmark::before { + content: '\F01C' +} + +.van-icon-browsing-history-o::before { + content: '\F01D' +} + +.van-icon-browsing-history::before { + content: '\F01E' +} + +.van-icon-brush-o::before { + content: '\F01F' +} + +.van-icon-bulb-o::before { + content: '\F020' +} + +.van-icon-bullhorn-o::before { + content: '\F021' +} + +.van-icon-calendar-o::before { + content: '\F022' +} + +.van-icon-card::before { + content: '\F023' +} + +.van-icon-cart-circle-o::before { + content: '\F024' +} + +.van-icon-cart-circle::before { + content: '\F025' +} + +.van-icon-cart-o::before { + content: '\F026' +} + +.van-icon-cart::before { + content: '\F027' +} + +.van-icon-cash-back-record::before { + content: '\F028' +} + +.van-icon-cash-on-deliver::before { + content: '\F029' +} + +.van-icon-cashier-o::before { + content: '\F02A' +} + +.van-icon-certificate::before { + content: '\F02B' +} + +.van-icon-chart-trending-o::before { + content: '\F02C' +} + +.van-icon-chat-o::before { + content: '\F02D' +} + +.van-icon-chat::before { + content: '\F02E' +} + +.van-icon-checked::before { + content: '\F02F' +} + +.van-icon-circle::before { + content: '\F030' +} + +.van-icon-clear::before { + content: '\F031' +} + +.van-icon-clock-o::before { + content: '\F032' +} + +.van-icon-clock::before { + content: '\F033' +} + +.van-icon-close::before { + content: '\F034' +} + +.van-icon-closed-eye::before { + content: '\F035' +} + +.van-icon-cluster-o::before { + content: '\F036' +} + +.van-icon-cluster::before { + content: '\F037' +} + +.van-icon-column::before { + content: '\F038' +} + +.van-icon-comment-circle-o::before { + content: '\F039' +} + +.van-icon-comment-circle::before { + content: '\F03A' +} + +.van-icon-comment-o::before { + content: '\F03B' +} + +.van-icon-comment::before { + content: '\F03C' +} + +.van-icon-completed::before { + content: '\F03D' +} + +.van-icon-contact::before { + content: '\F03E' +} + +.van-icon-coupon-o::before { + content: '\F03F' +} + +.van-icon-coupon::before { + content: '\F040' +} + +.van-icon-credit-pay::before { + content: '\F041' +} + +.van-icon-cross::before { + content: '\F042' +} + +.van-icon-debit-pay::before { + content: '\F043' +} + +.van-icon-delete-o::before { + content: '\F0E9' +} + +.van-icon-delete::before { + content: '\F044' +} + +.van-icon-descending::before { + content: '\F045' +} + +.van-icon-description::before { + content: '\F046' +} + +.van-icon-desktop-o::before { + content: '\F047' +} + +.van-icon-diamond-o::before { + content: '\F048' +} + +.van-icon-diamond::before { + content: '\F049' +} + +.van-icon-discount::before { + content: '\F04A' +} + +.van-icon-down::before { + content: '\F04B' +} + +.van-icon-ecard-pay::before { + content: '\F04C' +} + +.van-icon-edit::before { + content: '\F04D' +} + +.van-icon-ellipsis::before { + content: '\F04E' +} + +.van-icon-empty::before { + content: '\F04F' +} + +.van-icon-enlarge::before { + content: '\F0E4' +} + +.van-icon-envelop-o::before { + content: '\F050' +} + +.van-icon-exchange::before { + content: '\F051' +} + +.van-icon-expand-o::before { + content: '\F052' +} + +.van-icon-expand::before { + content: '\F053' +} + +.van-icon-eye-o::before { + content: '\F054' +} + +.van-icon-eye::before { + content: '\F055' +} + +.van-icon-fail::before { + content: '\F056' +} + +.van-icon-failure::before { + content: '\F057' +} + +.van-icon-filter-o::before { + content: '\F058' +} + +.van-icon-fire-o::before { + content: '\F059' +} + +.van-icon-fire::before { + content: '\F05A' +} + +.van-icon-flag-o::before { + content: '\F05B' +} + +.van-icon-flower-o::before { + content: '\F05C' +} + +.van-icon-font-o::before { + content: '\F0EC' +} + +.van-icon-font::before { + content: '\F0EB' +} + +.van-icon-free-postage::before { + content: '\F05D' +} + +.van-icon-friends-o::before { + content: '\F05E' +} + +.van-icon-friends::before { + content: '\F05F' +} + +.van-icon-gem-o::before { + content: '\F060' +} + +.van-icon-gem::before { + content: '\F061' +} + +.van-icon-gift-card-o::before { + content: '\F062' +} + +.van-icon-gift-card::before { + content: '\F063' +} + +.van-icon-gift-o::before { + content: '\F064' +} + +.van-icon-gift::before { + content: '\F065' +} + +.van-icon-gold-coin-o::before { + content: '\F066' +} + +.van-icon-gold-coin::before { + content: '\F067' +} + +.van-icon-good-job-o::before { + content: '\F068' +} + +.van-icon-good-job::before { + content: '\F069' +} + +.van-icon-goods-collect-o::before { + content: '\F06A' +} + +.van-icon-goods-collect::before { + content: '\F06B' +} + +.van-icon-graphic::before { + content: '\F06C' +} + +.van-icon-home-o::before { + content: '\F06D' +} + +.van-icon-hot-o::before { + content: '\F06E' +} + +.van-icon-hot-sale-o::before { + content: '\F06F' +} + +.van-icon-hot-sale::before { + content: '\F070' +} + +.van-icon-hot::before { + content: '\F071' +} + +.van-icon-hotel-o::before { + content: '\F072' +} + +.van-icon-idcard::before { + content: '\F073' +} + +.van-icon-info-o::before { + content: '\F074' +} + +.van-icon-info::before { + content: '\F075' +} + +.van-icon-invition::before { + content: '\F076' +} + +.van-icon-label-o::before { + content: '\F077' +} + +.van-icon-label::before { + content: '\F078' +} + +.van-icon-like-o::before { + content: '\F079' +} + +.van-icon-like::before { + content: '\F07A' +} + +.van-icon-live::before { + content: '\F07B' +} + +.van-icon-location-o::before { + content: '\F07C' +} + +.van-icon-location::before { + content: '\F07D' +} + +.van-icon-lock::before { + content: '\F07E' +} + +.van-icon-logistics::before { + content: '\F07F' +} + +.van-icon-manager-o::before { + content: '\F080' +} + +.van-icon-manager::before { + content: '\F081' +} + +.van-icon-map-marked::before { + content: '\F082' +} + +.van-icon-medal-o::before { + content: '\F083' +} + +.van-icon-medal::before { + content: '\F084' +} + +.van-icon-minus::before { + content: '\F0E8' +} + +.van-icon-more-o::before { + content: '\F085' +} + +.van-icon-more::before { + content: '\F086' +} + +.van-icon-music-o::before { + content: '\F087' +} + +.van-icon-music::before { + content: '\F088' +} + +.van-icon-new-arrival-o::before { + content: '\F089' +} + +.van-icon-new-arrival::before { + content: '\F08A' +} + +.van-icon-new-o::before { + content: '\F08B' +} + +.van-icon-new::before { + content: '\F08C' +} + +.van-icon-newspaper-o::before { + content: '\F08D' +} + +.van-icon-notes-o::before { + content: '\F08E' +} + +.van-icon-orders-o::before { + content: '\F08F' +} + +.van-icon-other-pay::before { + content: '\F090' +} + +.van-icon-paid::before { + content: '\F091' +} + +.van-icon-passed::before { + content: '\F092' +} + +.van-icon-pause-circle-o::before { + content: '\F093' +} + +.van-icon-pause-circle::before { + content: '\F094' +} + +.van-icon-pause::before { + content: '\F095' +} + +.van-icon-peer-pay::before { + content: '\F096' +} + +.van-icon-pending-payment::before { + content: '\F097' +} + +.van-icon-phone-circle-o::before { + content: '\F098' +} + +.van-icon-phone-circle::before { + content: '\F099' +} + +.van-icon-phone-o::before { + content: '\F09A' +} + +.van-icon-phone::before { + content: '\F09B' +} + +.van-icon-photo-fail::before { + content: '\F0E5' +} + +.van-icon-photo-o::before { + content: '\F09C' +} + +.van-icon-photo::before { + content: '\F09D' +} + +.van-icon-photograph::before { + content: '\F09E' +} + +.van-icon-play-circle-o::before { + content: '\F09F' +} + +.van-icon-play-circle::before { + content: '\F0A0' +} + +.van-icon-play::before { + content: '\F0A1' +} + +.van-icon-plus::before { + content: '\F0A2' +} + +.van-icon-point-gift-o::before { + content: '\F0A3' +} + +.van-icon-point-gift::before { + content: '\F0A4' +} + +.van-icon-points::before { + content: '\F0A5' +} + +.van-icon-printer::before { + content: '\F0A6' +} + +.van-icon-qr-invalid::before { + content: '\F0A7' +} + +.van-icon-qr::before { + content: '\F0A8' +} + +.van-icon-question-o::before { + content: '\F0A9' +} + +.van-icon-question::before { + content: '\F0AA' +} + +.van-icon-records::before { + content: '\F0AB' +} + +.van-icon-refund-o::before { + content: '\F0AC' +} + +.van-icon-replay::before { + content: '\F0AD' +} + +.van-icon-revoke::before { + content: '\F0ED' +} + +.van-icon-scan::before { + content: '\F0AE' +} + +.van-icon-search::before { + content: '\F0AF' +} + +.van-icon-send-gift-o::before { + content: '\F0B0' +} + +.van-icon-send-gift::before { + content: '\F0B1' +} + +.van-icon-service-o::before { + content: '\F0B2' +} + +.van-icon-service::before { + content: '\F0B3' +} + +.van-icon-setting-o::before { + content: '\F0B4' +} + +.van-icon-setting::before { + content: '\F0B5' +} + +.van-icon-share-o::before { + content: '\F0E7' +} + +.van-icon-share::before { + content: '\F0B6' +} + +.van-icon-shop-collect-o::before { + content: '\F0B7' +} + +.van-icon-shop-collect::before { + content: '\F0B8' +} + +.van-icon-shop-o::before { + content: '\F0B9' +} + +.van-icon-shop::before { + content: '\F0BA' +} + +.van-icon-shopping-cart-o::before { + content: '\F0BB' +} + +.van-icon-shopping-cart::before { + content: '\F0BC' +} + +.van-icon-shrink::before { + content: '\F0BD' +} + +.van-icon-sign::before { + content: '\F0BE' +} + +.van-icon-smile-comment-o::before { + content: '\F0BF' +} + +.van-icon-smile-comment::before { + content: '\F0C0' +} + +.van-icon-smile-o::before { + content: '\F0C1' +} + +.van-icon-smile::before { + content: '\F0C2' +} + +.van-icon-sort::before { + content: '\F0EA' +} + +.van-icon-star-o::before { + content: '\F0C3' +} + +.van-icon-star::before { + content: '\F0C4' +} + +.van-icon-stop-circle-o::before { + content: '\F0C5' +} + +.van-icon-stop-circle::before { + content: '\F0C6' +} + +.van-icon-stop::before { + content: '\F0C7' +} + +.van-icon-success::before { + content: '\F0C8' +} + +.van-icon-thumb-circle-o::before { + content: '\F0C9' +} + +.van-icon-thumb-circle::before { + content: '\F0CA' +} + +.van-icon-todo-list-o::before { + content: '\F0CB' +} + +.van-icon-todo-list::before { + content: '\F0CC' +} + +.van-icon-tosend::before { + content: '\F0CD' +} + +.van-icon-tv-o::before { + content: '\F0CE' +} + +.van-icon-umbrella-circle::before { + content: '\F0CF' +} + +.van-icon-underway-o::before { + content: '\F0D0' +} + +.van-icon-underway::before { + content: '\F0D1' +} + +.van-icon-upgrade::before { + content: '\F0D2' +} + +.van-icon-user-circle-o::before { + content: '\F0D3' +} + +.van-icon-user-o::before { + content: '\F0D4' +} + +.van-icon-video-o::before { + content: '\F0D5' +} + +.van-icon-video::before { + content: '\F0D6' +} + +.van-icon-vip-card-o::before { + content: '\F0D7' +} + +.van-icon-vip-card::before { + content: '\F0D8' +} + +.van-icon-volume-o::before { + content: '\F0D9' +} + +.van-icon-volume::before { + content: '\F0DA' +} + +.van-icon-wap-home-o::before { + content: '\F0DB' +} + +.van-icon-wap-home::before { + content: '\F0DC' +} + +.van-icon-wap-nav::before { + content: '\F0DD' +} + +.van-icon-warn-o::before { + content: '\F0DE' +} + +.van-icon-warning-o::before { + content: '\F0DF' +} + +.van-icon-warning::before { + content: '\F0E0' +} + +.van-icon-weapp-nav::before { + content: '\F0E1' +} + +.van-icon-wechat-pay::before { + content: '\F0E2' +} + +.van-icon-wechat::before { + content: '\F0EE' +} + +.van-icon-youzan-shield::before { + content: '\F0E3' +} + +.van-icon__image { + width: 1em; + height: 1em; + object-fit: contain +} + +.van-tabbar-item { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + color: #646566; + font-size: 12px; + line-height: 1; + cursor: pointer +} + +.van-tabbar-item__icon { + position: relative; + margin-bottom: 4px; + font-size: 22px +} + +.van-tabbar-item__icon .van-icon { + display: block +} + +.van-tabbar-item__icon img { + display: block; + height: 20px +} + +.van-tabbar-item--active { + color: #1989fa; + background-color: #fff +} + +.van-tabbar-item .van-info { + margin-top: 4px +} + +.van-step { + position: relative; + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + color: #969799; + font-size: 14px +} + +.van-step__circle { + display: block; + width: 5px; + height: 5px; + background-color: #969799; + border-radius: 50% +} + +.van-step__line { + position: absolute; + background-color: #ebedf0; + -webkit-transition: background-color .3s; + transition: background-color .3s +} + +.van-step--horizontal { + float: left +} + +.van-step--horizontal:first-child .van-step__title { + margin-left: 0; + -webkit-transform: none; + transform: none +} + +.van-step--horizontal:last-child { + position: absolute; + right: 1px; + width: auto +} + +.van-step--horizontal:last-child .van-step__title { + margin-left: 0; + -webkit-transform: none; + transform: none +} + +.van-step--horizontal:last-child .van-step__circle-container { + right: -9px; + left: auto +} + +.van-step--horizontal .van-step__circle-container { + position: absolute; + top: 30px; + left: -8px; + z-index: 1; + padding: 0 8px; + background-color: #fff; + -webkit-transform: translateY(-50%); + transform: translateY(-50%) +} + +.van-step--horizontal .van-step__title { + display: inline-block; + margin-left: 3px; + font-size: 12px; + -webkit-transform: translateX(-50%); + transform: translateX(-50%) +} + +@media (max-width: 321px) { + .van-step--horizontal .van-step__title { + font-size:11px + } +} + +.van-step--horizontal .van-step__line { + top: 30px; + left: 0; + width: 100%; + height: 1px +} + +.van-step--horizontal .van-step__icon { + display: block; + font-size: 12px +} + +.van-step--horizontal .van-step--process { + color: #323233 +} + +.van-step--vertical { + display: block; + float: none; + padding: 10px 10px 10px 0; + line-height: 18px +} + +.van-step--vertical:not(:last-child)::after { + border-bottom-width: 1px +} + +.van-step--vertical .van-step__circle-container { + position: absolute; + top: 19px; + left: -15px; + z-index: 1; + font-size: 12px; + line-height: 1; + -webkit-transform: translate(-50%,-50%); + transform: translate(-50%,-50%) +} + +.van-step--vertical .van-step__line { + top: 16px; + left: -15px; + width: 1px; + height: 100% +} + +.van-step:last-child .van-step__line { + width: 0 +} + +.van-step--finish { + color: #323233 +} + +.van-step--finish .van-step__circle,.van-step--finish .van-step__line { + background-color: #07c160 +} + +.van-step__icon,.van-step__title { + -webkit-transition: color .3s; + transition: color .3s +} + +.van-step__icon--active,.van-step__icon--finish,.van-step__title--active,.van-step__title--finish { + color: #07c160 +} + +.van-rate { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: inline-flex; + cursor: pointer; + -webkit-user-select: none; + user-select: none +} + +.van-rate__item { + position: relative +} + +.van-rate__item:not(:last-child) { + padding-right: 4px +} + +.van-rate__icon { + display: block; + width: 1em; + color: #c8c9cc; + font-size: 20px +} + +.van-rate__icon--half { + position: absolute; + top: 0; + left: 0; + width: .5em; + overflow: hidden +} + +.van-rate__icon--full { + color: #ee0a24 +} + +.van-rate__icon--disabled { + color: #c8c9cc +} + +.van-rate--disabled { + cursor: not-allowed +} + +.van-rate--readonly { + cursor: default +} + +.van-notice-bar { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + height: 40px; + padding: 0 16px; + color: #ed6a0c; + font-size: 14px; + line-height: 24px; + background-color: #fffbe8 +} + +.van-notice-bar__left-icon,.van-notice-bar__right-icon { + min-width: 24px; + font-size: 16px +} + +.van-notice-bar__right-icon { + text-align: right; + cursor: pointer +} + +.van-notice-bar__wrap { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + height: 100%; + overflow: hidden +} + +.van-notice-bar__content { + position: absolute; + white-space: nowrap; + -webkit-transition-timing-function: linear; + transition-timing-function: linear +} + +.van-notice-bar__content.van-ellipsis { + max-width: 100% +} + +.van-notice-bar--wrapable { + height: auto; + padding: 8px 16px +} + +.van-notice-bar--wrapable .van-notice-bar__wrap { + height: auto +} + +.van-notice-bar--wrapable .van-notice-bar__content { + position: relative; + white-space: normal; + word-wrap: break-word +} + +.van-nav-bar { + position: relative; + z-index: 1; + line-height: 22px; + text-align: center; + background-color: #fff; + -webkit-user-select: none; + user-select: none +} + +.van-nav-bar--fixed { + position: fixed; + top: 0; + left: 0; + width: 100% +} + +.van-nav-bar--safe-area-inset-top { + padding-top: constant(safe-area-inset-top); + padding-top: env(safe-area-inset-top) +} + +.van-nav-bar .van-icon { + color: #1989fa +} + +.van-nav-bar__content { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + height: 55px +} + +.van-nav-bar__arrow { + margin-right: 4px; + font-size: 16px +} + +.van-nav-bar__title { + max-width: 60%; + margin: 0 auto; + color: #323233; + font-weight: 500; + font-size: 20px +} + +.van-nav-bar__left,.van-nav-bar__right { + position: absolute; + top: 0; + bottom: 0; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + padding: 0 16px; + font-size: 14px; + cursor: pointer +} + +.van-nav-bar__left:active,.van-nav-bar__right:active { + opacity: .7 +} + +.van-nav-bar__left { + left: 0 +} + +.van-nav-bar__right { + right: 0 +} + +.van-nav-bar__text { + color: #1989fa +} + +.van-grid-item { + position: relative; + box-sizing: border-box +} + +.van-grid-item--square { + height: 0 +} + +.van-grid-item__icon { + font-size: 28px +} + +.van-grid-item__icon-wrapper { + position: relative +} + +.van-grid-item__text { + color: #646566; + font-size: 12px; + line-height: 1.5; + word-break: break-all +} + +.van-grid-item__icon+.van-grid-item__text { + margin-top: 8px +} + +.van-grid-item__content { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column; + box-sizing: border-box; + height: 100%; + padding: 16px 8px; + background-color: #fff +} + +.van-grid-item__content::after { + z-index: 1; + border-width: 0 1px 1px 0 +} + +.van-grid-item__content--square { + position: absolute; + top: 0; + right: 0; + left: 0 +} + +.van-grid-item__content--center { + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center +} + +.van-grid-item__content--horizontal { + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -webkit-flex-direction: row; + flex-direction: row +} + +.van-grid-item__content--horizontal .van-grid-item__icon+.van-grid-item__text { + margin-top: 0; + margin-left: 8px +} + +.van-grid-item__content--surround::after { + border-width: 1px +} + +.van-grid-item__content--clickable { + cursor: pointer +} + +.van-grid-item__content--clickable:active { + background-color: #f2f3f5 +} + +.van-goods-action-icon { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + min-width: 48px; + height: 100%; + color: #646566; + font-size: 10px; + line-height: 1; + text-align: center; + background-color: #fff; + cursor: pointer +} + +.van-goods-action-icon:active { + background-color: #f2f3f5 +} + +.van-goods-action-icon__icon { + position: relative; + width: 1em; + margin: 0 auto 5px; + color: #323233; + font-size: 18px +} + +.van-checkbox { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + overflow: hidden; + cursor: pointer; + -webkit-user-select: none; + user-select: none +} + +.van-checkbox--disabled { + cursor: not-allowed +} + +.van-checkbox--label-disabled { + cursor: default +} + +.van-checkbox--horizontal { + margin-right: 12px +} + +.van-checkbox__icon { + -webkit-box-flex: 0; + -webkit-flex: none; + flex: none; + height: 1em; + font-size: 20px; + line-height: 1em; + cursor: pointer +} + +.van-checkbox__icon .van-icon { + display: block; + box-sizing: border-box; + width: 1.25em; + height: 1.25em; + color: transparent; + font-size: .8em; + line-height: 1.25; + text-align: center; + border: 1px solid #c8c9cc; + -webkit-transition-duration: .2s; + transition-duration: .2s; + -webkit-transition-property: color,border-color,background-color; + transition-property: color,border-color,background-color +} + +.van-checkbox__icon--round .van-icon { + border-radius: 100% +} + +.van-checkbox__icon--checked .van-icon { + color: #fff; + background-color: #1989fa; + border-color: #1989fa +} + +.van-checkbox__icon--disabled { + cursor: not-allowed +} + +.van-checkbox__icon--disabled .van-icon { + background-color: #ebedf0; + border-color: #c8c9cc +} + +.van-checkbox__icon--disabled.van-checkbox__icon--checked .van-icon { + color: #c8c9cc +} + +.van-checkbox__label { + margin-left: 8px; + color: #323233; + line-height: 20px +} + +.van-checkbox__label--left { + margin: 0 8px 0 0 +} + +.van-checkbox__label--disabled { + color: #c8c9cc +} + +.van-coupon { + margin: 0 12px 12px; + overflow: hidden; + background-color: #fff; + border-radius: 8px; + box-shadow: 0 0 4px rgba(0,0,0,.1) +} + +.van-coupon:active { + background-color: #f2f3f5 +} + +.van-coupon__content { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + box-sizing: border-box; + min-height: 84px; + padding: 14px 0; + color: #323233 +} + +.van-coupon__head { + position: relative; + min-width: 96px; + padding: 0 8px; + color: #ee0a24; + text-align: center +} + +.van-coupon__amount,.van-coupon__condition,.van-coupon__name,.van-coupon__valid { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis +} + +.van-coupon__amount { + margin-bottom: 6px; + font-weight: 500; + font-size: 30px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis +} + +.van-coupon__amount span { + font-weight: 400; + font-size: 40% +} + +.van-coupon__amount span:not(:empty) { + margin-left: 2px +} + +.van-coupon__condition { + font-size: 12px; + line-height: 16px; + white-space: pre-wrap +} + +.van-coupon__body { + position: relative; + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + border-radius: 0 8px 8px 0 +} + +.van-coupon__name { + margin-bottom: 10px; + font-weight: 700; + font-size: 14px; + line-height: 20px +} + +.van-coupon__valid { + font-size: 12px +} + +.van-coupon__corner { + position: absolute; + top: 0; + right: 16px; + bottom: 0 +} + +.van-coupon__description { + padding: 8px 16px; + font-size: 12px; + border-top: 1px dashed #ebedf0 +} + +.van-coupon--disabled:active { + background-color: #fff +} + +.van-coupon--disabled .van-coupon-item__content { + height: 74px +} + +.van-coupon--disabled .van-coupon__head { + color: inherit +} + +.van-image { + position: relative; + display: inline-block +} + +.van-image--round { + overflow: hidden; + border-radius: 50% +} + +.van-image--round img { + border-radius: inherit +} + +.van-image__error,.van-image__img,.van-image__loading { + display: block; + width: 100%; + height: 100% +} + +.van-image__error,.van-image__loading { + position: absolute; + top: 0; + left: 0; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + color: #969799; + font-size: 14px; + background-color: #f7f8fa +} + +.van-image__loading-icon { + color: #dcdee0; + font-size: 32px +} + +.van-image__error-icon { + color: #dcdee0; + font-size: 32px +} + +.van-radio { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + overflow: hidden; + cursor: pointer; + -webkit-user-select: none; + user-select: none +} + +.van-radio--disabled { + cursor: not-allowed +} + +.van-radio--label-disabled { + cursor: default +} + +.van-radio--horizontal { + margin-right: 12px +} + +.van-radio__icon { + -webkit-box-flex: 0; + -webkit-flex: none; + flex: none; + height: 1em; + font-size: 20px; + line-height: 1em; + cursor: pointer +} + +.van-radio__icon .van-icon { + display: block; + box-sizing: border-box; + width: 1.25em; + height: 1.25em; + color: transparent; + font-size: .8em; + line-height: 1.25; + text-align: center; + border: 1px solid #c8c9cc; + -webkit-transition-duration: .2s; + transition-duration: .2s; + -webkit-transition-property: color,border-color,background-color; + transition-property: color,border-color,background-color +} + +.van-radio__icon--round .van-icon { + border-radius: 100% +} + +.van-radio__icon--checked .van-icon { + color: #fff; + background-color: #1989fa; + border-color: #1989fa +} + +.van-radio__icon--disabled { + cursor: not-allowed +} + +.van-radio__icon--disabled .van-icon { + background-color: #ebedf0; + border-color: #c8c9cc +} + +.van-radio__icon--disabled.van-radio__icon--checked .van-icon { + color: #c8c9cc +} + +.van-radio__label { + margin-left: 8px; + color: #323233; + line-height: 20px +} + +.van-radio__label--left { + margin: 0 8px 0 0 +} + +.van-radio__label--disabled { + color: #c8c9cc +} + +.van-tag { + position: relative; + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: inline-flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + padding: 0 4px; + color: #fff; + font-size: 12px; + line-height: 16px; + border-radius: 2px +} + +.van-tag--default { + background-color: #969799 +} + +.van-tag--default.van-tag--plain { + color: #969799 +} + +.van-tag--danger { + background-color: #ee0a24 +} + +.van-tag--danger.van-tag--plain { + color: #ee0a24 +} + +.van-tag--primary { + background-color: #1989fa +} + +.van-tag--primary.van-tag--plain { + color: #1989fa +} + +.van-tag--success { + background-color: #07c160 +} + +.van-tag--success.van-tag--plain { + color: #07c160 +} + +.van-tag--warning { + background-color: #ff976a +} + +.van-tag--warning.van-tag--plain { + color: #ff976a +} + +.van-tag--plain { + background-color: #fff; + border-color: currentColor +} + +.van-tag--plain::before { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + border: 1px solid; + border-color: inherit; + border-radius: inherit; + content: ''; + pointer-events: none +} + +.van-tag--medium { + padding: 2px 6px +} + +.van-tag--large { + padding: 4px 8px; + font-size: 14px; + border-radius: 4px +} + +.van-tag--mark { + border-radius: 0 999px 999px 0 +} + +.van-tag--mark::after { + display: block; + width: 2px; + content: '' +} + +.van-tag--round { + border-radius: 999px +} + +.van-tag__close { + margin-left: 2px; + cursor: pointer +} + +.van-card { + position: relative; + box-sizing: border-box; + padding: 8px 16px; + color: #323233; + font-size: 12px; + background-color: #fafafa +} + +.van-card:not(:first-child) { + margin-top: 8px +} + +.van-card__header { + display: -webkit-box; + display: -webkit-flex; + display: flex +} + +.van-card__thumb { + position: relative; + -webkit-box-flex: 0; + -webkit-flex: none; + flex: none; + width: 88px; + height: 88px; + margin-right: 8px +} + +.van-card__thumb img { + border-radius: 8px +} + +.van-card__content { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + min-width: 0; + min-height: 88px +} + +.van-card__content--centered { + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center +} + +.van-card__desc,.van-card__title { + word-wrap: break-word +} + +.van-card__title { + max-height: 32px; + font-weight: 500; + line-height: 16px +} + +.van-card__desc { + max-height: 20px; + color: #646566; + line-height: 20px +} + +.van-card__bottom { + line-height: 20px +} + +.van-card__price { + display: inline-block; + color: #323233; + font-weight: 500; + font-size: 12px +} + +.van-card__price-integer { + font-size: 16px; + font-family: Avenir-Heavy,PingFang SC,Helvetica Neue,Arial,sans-serif +} + +.van-card__price-decimal { + font-family: Avenir-Heavy,PingFang SC,Helvetica Neue,Arial,sans-serif +} + +.van-card__origin-price { + display: inline-block; + margin-left: 5px; + color: #969799; + font-size: 10px; + text-decoration: line-through +} + +.van-card__num { + float: right; + color: #969799 +} + +.van-card__tag { + position: absolute; + top: 2px; + left: 0 +} + +.van-card__footer { + -webkit-box-flex: 0; + -webkit-flex: none; + flex: none; + text-align: right +} + +.van-card__footer .van-button { + margin-left: 5px +} + +.van-cell { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: flex; + box-sizing: border-box; + width: 100%; + padding: 10px 16px; + overflow: hidden; + color: #323233; + font-size: 14px; + line-height: 24px; + background-color: #fff +} + +.van-cell::after { + position: absolute; + box-sizing: border-box; + content: ' '; + pointer-events: none; + right: 16px; + bottom: 0; + left: 16px; + border-bottom: 1px solid #ebedf0; + -webkit-transform: scaleY(.5); + transform: scaleY(.5) +} + +.van-cell--borderless::after,.van-cell:last-child::after { + display: none +} + +.van-cell__label { + margin-top: 4px; + color: #969799; + font-size: 12px; + line-height: 18px +} + +.van-cell__title,.van-cell__value { + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1 +} + +.van-cell__value { + position: relative; + overflow: hidden; + color: #969799; + text-align: right; + vertical-align: middle; + word-wrap: break-word +} + +.van-cell__value--alone { + color: #323233; + text-align: left +} + +.van-cell__left-icon,.van-cell__right-icon { + height: 24px; + font-size: 16px; + line-height: 24px +} + +.van-cell__left-icon { + margin-right: 4px +} + +.van-cell__right-icon { + margin-left: 4px; + color: #969799 +} + +.van-cell--clickable { + cursor: pointer +} + +.van-cell--clickable:active { + background-color: #f2f3f5 +} + +.van-cell--required { + overflow: visible +} + +.van-cell--required::before { + position: absolute; + left: 8px; + color: #ee0a24; + font-size: 14px; + content: '*' +} + +.van-cell--center { + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center +} + +.van-cell--large { + padding-top: 12px; + padding-bottom: 12px +} + +.van-cell--large .van-cell__title { + font-size: 16px +} + +.van-cell--large .van-cell__label { + font-size: 14px +} + +.van-coupon-cell__value--selected { + color: #323233 +} + +.van-contact-card { + padding: 16px +} + +.van-contact-card__value { + margin-left: 5px; + line-height: 20px +} + +.van-contact-card--add .van-contact-card__value { + line-height: 40px +} + +.van-contact-card--add .van-cell__left-icon { + color: #1989fa; + font-size: 40px +} + +.van-contact-card::before { + position: absolute; + right: 0; + bottom: 0; + left: 0; + height: 2px; + background: -webkit-repeating-linear-gradient(135deg,#ff6c6c 0,#ff6c6c 20%,transparent 0,transparent 25%,#1989fa 0,#1989fa 45%,transparent 0,transparent 50%); + background: repeating-linear-gradient(-45deg,#ff6c6c 0,#ff6c6c 20%,transparent 0,transparent 25%,#1989fa 0,#1989fa 45%,transparent 0,transparent 50%); + background-size: 80px; + content: '' +} + +.van-collapse-item { + position: relative +} + +.van-collapse-item--border::after { + position: absolute; + box-sizing: border-box; + content: ' '; + pointer-events: none; + top: 0; + right: 16px; + left: 16px; + border-top: 1px solid #ebedf0; + -webkit-transform: scaleY(.5); + transform: scaleY(.5) +} + +.van-collapse-item__title .van-cell__right-icon::before { + -webkit-transform: rotate(90deg) translateZ(0); + transform: rotate(90deg) translateZ(0); + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s,-webkit-transform .3s +} + +.van-collapse-item__title::after { + right: 16px; + display: none +} + +.van-collapse-item__title--expanded .van-cell__right-icon::before { + -webkit-transform: rotate(-90deg); + transform: rotate(-90deg) +} + +.van-collapse-item__title--expanded::after { + display: block +} + +.van-collapse-item__title--borderless::after { + display: none +} + +.van-collapse-item__title--disabled { + cursor: not-allowed +} + +.van-collapse-item__title--disabled,.van-collapse-item__title--disabled .van-cell__right-icon { + color: #c8c9cc +} + +.van-collapse-item__title--disabled:active { + background-color: #fff +} + +.van-collapse-item__wrapper { + overflow: hidden; + -webkit-transition: height .3s ease-in-out; + transition: height .3s ease-in-out; + will-change: height +} + +.van-collapse-item__content { + padding: 12px 16px; + color: #969799; + font-size: 14px; + line-height: 1.5; + background-color: #fff +} + +.van-field__label { + -webkit-box-flex: 0; + -webkit-flex: none; + flex: none; + box-sizing: border-box; + width: 6.2em; + margin-right: 12px; + color: #646566; + text-align: left; + word-wrap: break-word +} + +.van-field__label--center { + text-align: center +} + +.van-field__label--right { + text-align: right +} + +.van-field--disabled .van-field__label { + color: #c8c9cc +} + +.van-field__value { + overflow: visible +} + +.van-field__body { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center +} + +.van-field__control { + display: block; + box-sizing: border-box; + width: 100%; + min-width: 0; + margin: 0; + padding: 0; + color: #323233; + line-height: inherit; + text-align: left; + background-color: transparent; + border: 0; + resize: none +} + +.van-field__control::-webkit-input-placeholder { + color: #c8c9cc +} + +.van-field__control::placeholder { + color: #c8c9cc +} + +.van-field__control:disabled { + color: #c8c9cc; + cursor: not-allowed; + opacity: 1; + -webkit-text-fill-color: #c8c9cc +} + +.van-field__control:read-only { + cursor: default +} + +.van-field__control--center { + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + text-align: center +} + +.van-field__control--right { + -webkit-box-pack: end; + -webkit-justify-content: flex-end; + justify-content: flex-end; + text-align: right +} + +.van-field__control--custom { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + min-height: 24px +} + +.van-field__control[type=date],.van-field__control[type=datetime-local],.van-field__control[type=time] { + min-height: 24px +} + +.van-field__control[type=search] { + -webkit-appearance: none +} + +.van-field__button,.van-field__clear,.van-field__icon,.van-field__right-icon { + -webkit-flex-shrink: 0; + flex-shrink: 0 +} + +.van-field__clear,.van-field__right-icon { + margin-right: -8px; + padding: 0 8px; + line-height: inherit +} + +.van-field__clear { + color: #c8c9cc; + font-size: 16px; + cursor: pointer +} + +.van-field__left-icon .van-icon,.van-field__right-icon .van-icon { + display: block; + font-size: 16px; + line-height: inherit +} + +.van-field__left-icon { + margin-right: 4px +} + +.van-field__right-icon { + color: #969799 +} + +.van-field__button { + padding-left: 8px +} + +.van-field__error-message { + color: #ee0a24; + font-size: 12px; + text-align: left +} + +.van-field__error-message--center { + text-align: center +} + +.van-field__error-message--right { + text-align: right +} + +.van-field__word-limit { + margin-top: 4px; + color: #646566; + font-size: 12px; + line-height: 16px; + text-align: right +} + +.van-field--error .van-field__control::-webkit-input-placeholder { + color: #ee0a24; + -webkit-text-fill-color: currentColor +} + +.van-field--error .van-field__control,.van-field--error .van-field__control::placeholder { + color: #ee0a24; + -webkit-text-fill-color: currentColor +} + +.van-field--min-height .van-field__control { + min-height: 60px +} + +.van-search { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + box-sizing: border-box; + padding: 10px 12px; + background-color: #fff +} + +.van-search__content { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + padding-left: 12px; + background-color: #f7f8fa; + border-radius: 2px +} + +.van-search__content--round { + border-radius: 999px +} + +.van-search__label { + padding: 0 5px; + color: #323233; + font-size: 14px; + line-height: 34px +} + +.van-search .van-cell { + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + padding: 5px 8px 5px 0; + background-color: transparent +} + +.van-search .van-cell__left-icon { + color: #969799 +} + +.van-search--show-action { + padding-right: 0 +} + +.van-search input::-webkit-search-cancel-button,.van-search input::-webkit-search-decoration,.van-search input::-webkit-search-results-button,.van-search input::-webkit-search-results-decoration { + display: none +} + +.van-search__action { + padding: 0 8px; + color: #323233; + font-size: 14px; + line-height: 34px; + cursor: pointer; + -webkit-user-select: none; + user-select: none +} + +.van-search__action:active { + background-color: #f2f3f5 +} + +.van-overflow-hidden { + overflow: hidden!important +} + +.van-popup { + position: fixed; + max-height: 100%; + overflow-y: auto; + background-color: #fff; + -webkit-transition: -webkit-transform .3s; + transition: -webkit-transform .3s; + transition: transform .3s; + transition: transform .3s,-webkit-transform .3s; + -webkit-overflow-scrolling: touch +} + +.van-popup--center { + top: 50%; + left: 50%; + -webkit-transform: translate3d(-50%,-50%,0); + transform: translate3d(-50%,-50%,0) +} + +.van-popup--center.van-popup--round { + border-radius: 16px +} + +.van-popup--top { + top: 0; + left: 0; + width: 100% +} + +.van-popup--top.van-popup--round { + border-radius: 0 0 16px 16px +} + +.van-popup--right { + top: 50%; + right: 0; + -webkit-transform: translate3d(0,-50%,0); + transform: translate3d(0,-50%,0) +} + +.van-popup--right.van-popup--round { + border-radius: 16px 0 0 16px +} + +.van-popup--bottom { + bottom: 0; + left: 0; + width: 100% +} + +.van-popup--bottom.van-popup--round { + border-radius: 16px 16px 0 0 +} + +.van-popup--left { + top: 50%; + left: 0; + -webkit-transform: translate3d(0,-50%,0); + transform: translate3d(0,-50%,0) +} + +.van-popup--left.van-popup--round { + border-radius: 0 16px 16px 0 +} + +.van-popup--safe-area-inset-bottom { + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom) +} + +.van-popup-slide-bottom-enter-active,.van-popup-slide-left-enter-active,.van-popup-slide-right-enter-active,.van-popup-slide-top-enter-active { + -webkit-transition-timing-function: ease-out; + transition-timing-function: ease-out +} + +.van-popup-slide-bottom-leave-active,.van-popup-slide-left-leave-active,.van-popup-slide-right-leave-active,.van-popup-slide-top-leave-active { + -webkit-transition-timing-function: ease-in; + transition-timing-function: ease-in +} + +.van-popup-slide-top-enter,.van-popup-slide-top-leave-active { + -webkit-transform: translate3d(0,-100%,0); + transform: translate3d(0,-100%,0) +} + +.van-popup-slide-right-enter,.van-popup-slide-right-leave-active { + -webkit-transform: translate3d(100%,-50%,0); + transform: translate3d(100%,-50%,0) +} + +.van-popup-slide-bottom-enter,.van-popup-slide-bottom-leave-active { + -webkit-transform: translate3d(0,100%,0); + transform: translate3d(0,100%,0) +} + +.van-popup-slide-left-enter,.van-popup-slide-left-leave-active { + -webkit-transform: translate3d(-100%,-50%,0); + transform: translate3d(-100%,-50%,0) +} + +.van-popup__close-icon { + position: absolute; + z-index: 1; + color: #c8c9cc; + font-size: 22px; + cursor: pointer +} + +.van-popup__close-icon:active { + color: #969799 +} + +.van-popup__close-icon--top-left { + top: 16px; + left: 16px +} + +.van-popup__close-icon--top-right { + top: 16px; + right: 16px +} + +.van-popup__close-icon--bottom-left { + bottom: 16px; + left: 16px +} + +.van-popup__close-icon--bottom-right { + right: 16px; + bottom: 16px +} + +.van-share-sheet__header { + padding: 12px 16px 4px; + text-align: center +} + +.van-share-sheet__title { + margin-top: 8px; + color: #323233; + font-weight: 400; + font-size: 14px; + line-height: 20px +} + +.van-share-sheet__description { + display: block; + margin-top: 8px; + color: #969799; + font-size: 12px; + line-height: 16px +} + +.van-share-sheet__options { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: flex; + padding: 16px 0 16px 8px; + overflow-x: auto; + overflow-y: visible; + -webkit-overflow-scrolling: touch +} + +.van-share-sheet__options--border::before { + position: absolute; + box-sizing: border-box; + content: ' '; + pointer-events: none; + top: 0; + right: 0; + left: 16px; + border-top: 1px solid #ebedf0; + -webkit-transform: scaleY(.5); + transform: scaleY(.5) +} + +.van-share-sheet__options::-webkit-scrollbar { + height: 0 +} + +.van-share-sheet__option { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + cursor: pointer; + -webkit-user-select: none; + user-select: none +} + +.van-share-sheet__option:active { + opacity: .7 +} + +.van-share-sheet__icon { + width: 48px; + height: 48px; + margin: 0 16px +} + +.van-share-sheet__name { + margin-top: 8px; + padding: 0 4px; + color: #646566; + font-size: 12px +} + +.van-share-sheet__option-description { + padding: 0 4px; + color: #c8c9cc; + font-size: 12px +} + +.van-share-sheet__cancel { + display: block; + width: 100%; + padding: 0; + font-size: 16px; + line-height: 48px; + text-align: center; + background: #fff; + border: none; + cursor: pointer +} + +.van-share-sheet__cancel::before { + display: block; + height: 8px; + background-color: #f7f8fa; + content: ' ' +} + +.van-share-sheet__cancel:active { + background-color: #f2f3f5 +} + +.van-popover { + position: absolute; + overflow: visible; + background-color: transparent; + -webkit-transition: opacity .15s,-webkit-transform .15s; + transition: opacity .15s,-webkit-transform .15s; + transition: opacity .15s,transform .15s; + transition: opacity .15s,transform .15s,-webkit-transform .15s +} + +.van-popover__wrapper { + display: inline-block +} + +.van-popover__arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + border-width: 6px +} + +.van-popover__content { + overflow: hidden; + border-radius: 8px +} + +.van-popover__action { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + box-sizing: border-box; + width: 128px; + height: 44px; + padding: 0 16px; + font-size: 14px; + line-height: 20px; + cursor: pointer +} + +.van-popover__action:last-child .van-popover__action-text::after { + display: none +} + +.van-popover__action-text { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 100% +} + +.van-popover__action-icon { + margin-right: 8px; + font-size: 20px +} + +.van-popover__action--with-icon .van-popover__action-text { + -webkit-box-pack: start; + -webkit-justify-content: flex-start; + justify-content: flex-start +} + +.van-popover[data-popper-placement^=top] .van-popover__arrow { + bottom: 0; + border-top-color: currentColor; + border-bottom-width: 0; + -webkit-transform: translate(-50%,100%); + transform: translate(-50%,100%) +} + +.van-popover[data-popper-placement=top] { + -webkit-transform-origin: 50% 100%; + transform-origin: 50% 100% +} + +.van-popover[data-popper-placement=top] .van-popover__arrow { + left: 50% +} + +.van-popover[data-popper-placement=top-start] { + -webkit-transform-origin: 0 100%; + transform-origin: 0 100% +} + +.van-popover[data-popper-placement=top-start] .van-popover__arrow { + left: 16px +} + +.van-popover[data-popper-placement=top-end] { + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100% +} + +.van-popover[data-popper-placement=top-end] .van-popover__arrow { + right: 16px +} + +.van-popover[data-popper-placement^=left] .van-popover__arrow { + right: 0; + border-right-width: 0; + border-left-color: currentColor; + -webkit-transform: translate(100%,-50%); + transform: translate(100%,-50%) +} + +.van-popover[data-popper-placement=left] { + -webkit-transform-origin: 100% 50%; + transform-origin: 100% 50% +} + +.van-popover[data-popper-placement=left] .van-popover__arrow { + top: 50% +} + +.van-popover[data-popper-placement=left-start] { + -webkit-transform-origin: 100% 0; + transform-origin: 100% 0 +} + +.van-popover[data-popper-placement=left-start] .van-popover__arrow { + top: 16px +} + +.van-popover[data-popper-placement=left-end] { + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100% +} + +.van-popover[data-popper-placement=left-end] .van-popover__arrow { + bottom: 16px +} + +.van-popover[data-popper-placement^=right] .van-popover__arrow { + left: 0; + border-right-color: currentColor; + border-left-width: 0; + -webkit-transform: translate(-100%,-50%); + transform: translate(-100%,-50%) +} + +.van-popover[data-popper-placement=right] { + -webkit-transform-origin: 0 50%; + transform-origin: 0 50% +} + +.van-popover[data-popper-placement=right] .van-popover__arrow { + top: 50% +} + +.van-popover[data-popper-placement=right-start] { + -webkit-transform-origin: 0 0; + transform-origin: 0 0 +} + +.van-popover[data-popper-placement=right-start] .van-popover__arrow { + top: 16px +} + +.van-popover[data-popper-placement=right-end] { + -webkit-transform-origin: 0 100%; + transform-origin: 0 100% +} + +.van-popover[data-popper-placement=right-end] .van-popover__arrow { + bottom: 16px +} + +.van-popover[data-popper-placement^=bottom] .van-popover__arrow { + top: 0; + border-top-width: 0; + border-bottom-color: currentColor; + -webkit-transform: translate(-50%,-100%); + transform: translate(-50%,-100%) +} + +.van-popover[data-popper-placement=bottom] { + -webkit-transform-origin: 50% 0; + transform-origin: 50% 0 +} + +.van-popover[data-popper-placement=bottom] .van-popover__arrow { + left: 50% +} + +.van-popover[data-popper-placement=bottom-start] { + -webkit-transform-origin: 0 0; + transform-origin: 0 0 +} + +.van-popover[data-popper-placement=bottom-start] .van-popover__arrow { + left: 16px +} + +.van-popover[data-popper-placement=bottom-end] { + -webkit-transform-origin: 100% 0; + transform-origin: 100% 0 +} + +.van-popover[data-popper-placement=bottom-end] .van-popover__arrow { + right: 16px +} + +.van-popover--light { + color: #323233 +} + +.van-popover--light .van-popover__content { + background-color: #fff; + box-shadow: 0 2px 12px rgba(50,50,51,.12) +} + +.van-popover--light .van-popover__arrow { + color: #fff +} + +.van-popover--light .van-popover__action:active { + background-color: #f2f3f5 +} + +.van-popover--light .van-popover__action--disabled { + color: #c8c9cc; + cursor: not-allowed +} + +.van-popover--light .van-popover__action--disabled:active { + background-color: transparent +} + +.van-popover--dark { + color: #fff +} + +.van-popover--dark .van-popover__content { + background-color: #4a4a4a +} + +.van-popover--dark .van-popover__arrow { + color: #4a4a4a +} + +.van-popover--dark .van-popover__action:active { + background-color: rgba(0,0,0,.2) +} + +.van-popover--dark .van-popover__action--disabled { + color: #969799 +} + +.van-popover--dark .van-popover__action--disabled:active { + background-color: transparent +} + +.van-popover--dark .van-popover__action-text::after { + border-color: #646566 +} + +.van-popover-zoom-enter,.van-popover-zoom-leave-active { + -webkit-transform: scale(.8); + transform: scale(.8); + opacity: 0 +} + +.van-popover-zoom-enter-active { + -webkit-transition-timing-function: ease-out; + transition-timing-function: ease-out +} + +.van-popover-zoom-leave-active { + -webkit-transition-timing-function: ease-in; + transition-timing-function: ease-in +} + +.van-notify { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + box-sizing: border-box; + padding: 8px 16px; + color: #fff; + font-size: 14px; + line-height: 20px; + white-space: pre-wrap; + text-align: center; + word-wrap: break-word +} + +.van-notify--primary { + background-color: #1989fa +} + +.van-notify--success { + background-color: #07c160 +} + +.van-notify--danger { + background-color: #ee0a24 +} + +.van-notify--warning { + background-color: #ff976a +} + +.van-dropdown-item { + position: fixed; + right: 0; + left: 0; + z-index: 10; + overflow: hidden +} + +.van-dropdown-item__icon { + display: block; + line-height: inherit +} + +.van-dropdown-item__option { + text-align: left +} + +.van-dropdown-item__option--active { + color: #ee0a24 +} + +.van-dropdown-item__option--active .van-dropdown-item__icon { + color: #ee0a24 +} + +.van-dropdown-item--up { + top: 0 +} + +.van-dropdown-item--down { + bottom: 0 +} + +.van-dropdown-item__content { + position: absolute; + max-height: 80% +} + +.van-loading { + position: relative; + color: #c8c9cc; + font-size: 0; + vertical-align: middle +} + +.van-loading__spinner { + position: relative; + display: inline-block; + width: 30px; + max-width: 100%; + height: 30px; + max-height: 100%; + vertical-align: middle; + -webkit-animation: van-rotate .8s linear infinite; + animation: van-rotate .8s linear infinite +} + +.van-loading__spinner--spinner { + -webkit-animation-timing-function: steps(12); + animation-timing-function: steps(12) +} + +.van-loading__spinner--spinner i { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100% +} + +.van-loading__spinner--spinner i::before { + display: block; + width: 2px; + height: 25%; + margin: 0 auto; + background-color: currentColor; + border-radius: 40%; + content: ' ' +} + +.van-loading__spinner--circular { + -webkit-animation-duration: 2s; + animation-duration: 2s +} + +.van-loading__circular { + display: block; + width: 100%; + height: 100% +} + +.van-loading__circular circle { + -webkit-animation: van-circular 1.5s ease-in-out infinite; + animation: van-circular 1.5s ease-in-out infinite; + stroke: currentColor; + stroke-width: 3; + stroke-linecap: round +} + +.van-loading__text { + display: inline-block; + margin-left: 8px; + color: #969799; + font-size: 14px; + vertical-align: middle +} + +.van-loading--vertical { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center +} + +.van-loading--vertical .van-loading__text { + margin: 8px 0 0 +} + +@-webkit-keyframes van-circular { + 0% { + stroke-dasharray: 1,200; + stroke-dashoffset: 0 + } + + 50% { + stroke-dasharray: 90,150; + stroke-dashoffset: -40 + } + + 100% { + stroke-dasharray: 90,150; + stroke-dashoffset: -120 + } +} + +@keyframes van-circular { + 0% { + stroke-dasharray: 1,200; + stroke-dashoffset: 0 + } + + 50% { + stroke-dasharray: 90,150; + stroke-dashoffset: -40 + } + + 100% { + stroke-dasharray: 90,150; + stroke-dashoffset: -120 + } +} + +.van-loading__spinner--spinner i:nth-of-type(1) { + -webkit-transform: rotate(30deg); + transform: rotate(30deg); + opacity: 1 +} + +.van-loading__spinner--spinner i:nth-of-type(2) { + -webkit-transform: rotate(60deg); + transform: rotate(60deg); + opacity: .9375 +} + +.van-loading__spinner--spinner i:nth-of-type(3) { + -webkit-transform: rotate(90deg); + transform: rotate(90deg); + opacity: .875 +} + +.van-loading__spinner--spinner i:nth-of-type(4) { + -webkit-transform: rotate(120deg); + transform: rotate(120deg); + opacity: .8125 +} + +.van-loading__spinner--spinner i:nth-of-type(5) { + -webkit-transform: rotate(150deg); + transform: rotate(150deg); + opacity: .75 +} + +.van-loading__spinner--spinner i:nth-of-type(6) { + -webkit-transform: rotate(180deg); + transform: rotate(180deg); + opacity: .6875 +} + +.van-loading__spinner--spinner i:nth-of-type(7) { + -webkit-transform: rotate(210deg); + transform: rotate(210deg); + opacity: .625 +} + +.van-loading__spinner--spinner i:nth-of-type(8) { + -webkit-transform: rotate(240deg); + transform: rotate(240deg); + opacity: .5625 +} + +.van-loading__spinner--spinner i:nth-of-type(9) { + -webkit-transform: rotate(270deg); + transform: rotate(270deg); + opacity: .5 +} + +.van-loading__spinner--spinner i:nth-of-type(10) { + -webkit-transform: rotate(300deg); + transform: rotate(300deg); + opacity: .4375 +} + +.van-loading__spinner--spinner i:nth-of-type(11) { + -webkit-transform: rotate(330deg); + transform: rotate(330deg); + opacity: .375 +} + +.van-loading__spinner--spinner i:nth-of-type(12) { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + opacity: .3125 +} + +.van-pull-refresh { + overflow: hidden; + -webkit-user-select: none; + user-select: none +} + +.van-pull-refresh__track { + position: relative; + height: 100%; + -webkit-transition-property: -webkit-transform; + transition-property: -webkit-transform; + transition-property: transform; + transition-property: transform,-webkit-transform +} + +.van-pull-refresh__head { + position: absolute; + left: 0; + width: 100%; + height: 50px; + overflow: hidden; + color: #969799; + font-size: 14px; + line-height: 50px; + text-align: center; + -webkit-transform: translateY(-100%); + transform: translateY(-100%) +} + +.van-number-keyboard { + position: fixed; + bottom: 0; + left: 0; + z-index: 100; + width: 100%; + padding-bottom: 22px; + background-color: #f2f3f5; + -webkit-user-select: none; + user-select: none +} + +.van-number-keyboard--with-title { + border-radius: 20px 20px 0 0 +} + +.van-number-keyboard__header { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + box-sizing: content-box; + height: 34px; + padding-top: 6px; + color: #646566; + font-size: 16px +} + +.van-number-keyboard__title { + display: inline-block; + font-weight: 400 +} + +.van-number-keyboard__title-left { + position: absolute; + left: 0 +} + +.van-number-keyboard__body { + display: -webkit-box; + display: -webkit-flex; + display: flex; + padding: 6px 0 0 6px +} + +.van-number-keyboard__keys { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-flex: 3; + -webkit-flex: 3; + flex: 3; + -webkit-flex-wrap: wrap; + flex-wrap: wrap +} + +.van-number-keyboard__close { + position: absolute; + right: 0; + height: 100%; + padding: 0 16px; + color: #576b95; + font-size: 14px; + background-color: transparent; + border: none; + cursor: pointer +} + +.van-number-keyboard__close:active { + opacity: .7 +} + +.van-number-keyboard__sidebar { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column +} + +.van-number-keyboard--unfit { + padding-bottom: 0 +} + +.van-key { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 48px; + font-size: 28px; + line-height: 1.5; + background-color: #fff; + border-radius: 8px; + cursor: pointer +} + +.van-key--large { + position: absolute; + top: 0; + right: 6px; + bottom: 6px; + left: 0; + height: auto +} + +.van-key--blue,.van-key--delete { + font-size: 16px +} + +.van-key--active { + background-color: #ebedf0 +} + +.van-key--blue { + color: #fff; + background-color: #1989fa +} + +.van-key--blue.van-key--active { + background-color: #0570db +} + +.van-key__wrapper { + position: relative; + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + -webkit-flex-basis: 33%; + flex-basis: 33%; + box-sizing: border-box; + padding: 0 6px 6px 0 +} + +.van-key__wrapper--wider { + -webkit-flex-basis: 66%; + flex-basis: 66% +} + +.van-key__delete-icon { + width: 32px; + height: 22px +} + +.van-key__collapse-icon { + width: 30px; + height: 24px +} + +.van-key__loading-icon { + color: #fff +} + +.van-list__error-text,.van-list__finished-text,.van-list__loading { + color: #969799; + font-size: 14px; + line-height: 50px; + text-align: center +} + +.van-list__placeholder { + height: 0; + pointer-events: none +} + +.van-switch { + position: relative; + display: inline-block; + box-sizing: content-box; + width: 2em; + height: 1em; + font-size: 30px; + background-color: #fff; + border: 1px solid rgba(0,0,0,.1); + border-radius: 1em; + cursor: pointer; + -webkit-transition: background-color .3s; + transition: background-color .3s +} + +.van-switch__node { + position: absolute; + top: 0; + left: 0; + width: 1em; + height: 1em; + background-color: #fff; + border-radius: 100%; + box-shadow: 0 3px 1px 0 rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.1),0 3px 3px 0 rgba(0,0,0,.05); + -webkit-transition: -webkit-transform .3s cubic-bezier(.3,1.05,.4,1.05); + transition: -webkit-transform .3s cubic-bezier(.3,1.05,.4,1.05); + transition: transform .3s cubic-bezier(.3,1.05,.4,1.05); + transition: transform .3s cubic-bezier(.3,1.05,.4,1.05),-webkit-transform .3s cubic-bezier(.3,1.05,.4,1.05) +} + +.van-switch__loading { + top: 25%; + left: 25%; + width: 50%; + height: 50%; + line-height: 1 +} + +.van-switch--on { + background-color: #1989fa +} + +.van-switch--on .van-switch__node { + -webkit-transform: translateX(1em); + transform: translateX(1em) +} + +.van-switch--on .van-switch__loading { + color: #1989fa +} + +.van-switch--disabled { + cursor: not-allowed; + opacity: .5 +} + +.van-switch--loading { + cursor: default +} + +.van-switch-cell { + padding-top: 9px; + padding-bottom: 9px +} + +.van-switch-cell--large { + padding-top: 11px; + padding-bottom: 11px +} + +.van-switch-cell .van-switch { + float: right +} + +.van-button { + position: relative; + display: inline-block; + box-sizing: border-box; + height: 44px; + margin: 0; + padding: 0; + font-size: 16px; + line-height: 1.2; + text-align: center; + border-radius: 2px; + cursor: pointer; + -webkit-transition: opacity .2s; + transition: opacity .2s; + -webkit-appearance: none +} + +.van-button::before { + position: absolute; + top: 50%; + left: 50%; + width: 100%; + height: 100%; + background-color: #000; + border: inherit; + border-color: #000; + border-radius: inherit; + -webkit-transform: translate(-50%,-50%); + transform: translate(-50%,-50%); + opacity: 0; + content: ' ' +} + +.van-button:active::before { + opacity: .1 +} + +.van-button--disabled::before,.van-button--loading::before { + display: none +} + +.van-button--default { + color: #323233; + background-color: #fff; + border: 1px solid #ebedf0 +} + +.van-button--primary { + color: #fff; + background-color: #07c160; + border: 1px solid #07c160 +} + +.van-button--info { + color: #fff; + background-color: #1989fa; + border: 1px solid #1989fa +} + +.van-button--danger { + color: #fff; + background-color: #ee0a24; + border: 1px solid #ee0a24 +} + +.van-button--warning { + color: #fff; + background-color: #ff976a; + border: 1px solid #ff976a +} + +.van-button--plain { + background-color: #fff +} + +.van-button--plain.van-button--primary { + color: #07c160 +} + +.van-button--plain.van-button--info { + color: #1989fa +} + +.van-button--plain.van-button--danger { + color: #ee0a24 +} + +.van-button--plain.van-button--warning { + color: #ff976a +} + +.van-button--large { + width: 100%; + height: 50px +} + +.van-button--normal { + padding: 0 15px; + font-size: 14px +} + +.van-button--small { + height: 32px; + padding: 0 8px; + font-size: 12px +} + +.van-button__loading { + color: inherit; + font-size: inherit +} + +.van-button--mini { + height: 24px; + padding: 0 4px; + font-size: 10px +} + +.van-button--mini+.van-button--mini { + margin-left: 4px +} + +.van-button--block { + display: block; + width: 100% +} + +.van-button--disabled { + cursor: not-allowed; + opacity: .5 +} + +.van-button--loading { + cursor: default +} + +.van-button--round { + border-radius: 999px +} + +.van-button--square { + border-radius: 0 +} + +.van-button__content { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 100% +} + +.van-button__content::before { + content: ' ' +} + +.van-button__icon { + font-size: 1.2em; + line-height: inherit +} + +.van-button__icon+.van-button__text,.van-button__loading+.van-button__text,.van-button__text+.van-button__icon,.van-button__text+.van-button__loading { + margin-left: 4px +} + +.van-button--hairline { + border-width: 0 +} + +.van-button--hairline::after { + border-color: inherit; + border-radius: 4px +} + +.van-button--hairline.van-button--round::after { + border-radius: 999px +} + +.van-button--hairline.van-button--square::after { + border-radius: 0 +} + +.van-submit-bar { + position: fixed; + bottom: 0; + left: 0; + z-index: 100; + width: 100%; + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); + background-color: #fff; + -webkit-user-select: none; + user-select: none +} + +.van-submit-bar__tip { + padding: 8px 12px; + color: #f56723; + font-size: 12px; + line-height: 1.5; + background-color: #fff7cc +} + +.van-submit-bar__tip-icon { + min-width: 18px; + font-size: 12px; + vertical-align: middle +} + +.van-submit-bar__tip-text { + vertical-align: middle +} + +.van-submit-bar__bar { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: end; + -webkit-justify-content: flex-end; + justify-content: flex-end; + height: 50px; + padding: 0 16px; + font-size: 14px +} + +.van-submit-bar__text { + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + padding-right: 12px; + color: #323233; + text-align: right +} + +.van-submit-bar__text span { + display: inline-block +} + +.van-submit-bar__suffix-label { + margin-left: 5px; + font-weight: 500 +} + +.van-submit-bar__price { + color: #ee0a24; + font-weight: 500; + font-size: 12px +} + +.van-submit-bar__price--integer { + font-size: 20px; + font-family: Avenir-Heavy,PingFang SC,Helvetica Neue,Arial,sans-serif +} + +.van-submit-bar__button { + width: 110px; + height: 40px; + font-weight: 500; + border: none +} + +.van-submit-bar__button--danger { + background: -webkit-linear-gradient(left,#ff6034,#ee0a24); + background: linear-gradient(to right,#ff6034,#ee0a24) +} + +.van-submit-bar--unfit { + padding-bottom: 0 +} + +.van-goods-action-button { + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + height: 40px; + font-weight: 500; + font-size: 14px; + border: none; + border-radius: 0 +} + +.van-goods-action-button--first { + margin-left: 5px; + border-top-left-radius: 999px; + border-bottom-left-radius: 999px +} + +.van-goods-action-button--last { + margin-right: 5px; + border-top-right-radius: 999px; + border-bottom-right-radius: 999px +} + +.van-goods-action-button--warning { + background: -webkit-linear-gradient(left,#ffd01e,#ff8917); + background: linear-gradient(to right,#ffd01e,#ff8917) +} + +.van-goods-action-button--danger { + background: -webkit-linear-gradient(left,#ff6034,#ee0a24); + background: linear-gradient(to right,#ff6034,#ee0a24) +} + +@media (max-width: 321px) { + .van-goods-action-button { + font-size:13px + } +} + +.van-toast { + position: fixed; + top: 50%; + left: 50%; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + box-sizing: content-box; + width: 88px; + max-width: 70%; + min-height: 88px; + padding: 16px; + color: #fff; + font-size: 14px; + line-height: 20px; + white-space: pre-wrap; + text-align: center; + word-break: break-all; + background-color: rgba(0,0,0,.7); + border-radius: 8px; + -webkit-transform: translate3d(-50%,-50%,0); + transform: translate3d(-50%,-50%,0) +} + +.van-toast--unclickable { + overflow: hidden +} + +.van-toast--unclickable * { + pointer-events: none +} + +.van-toast--html,.van-toast--text { + width: -webkit-fit-content; + width: fit-content; + min-width: 96px; + min-height: 0; + padding: 8px 12px +} + +.van-toast--html .van-toast__text,.van-toast--text .van-toast__text { + margin-top: 0 +} + +.van-toast--top { + top: 20% +} + +.van-toast--bottom { + top: auto; + bottom: 20% +} + +.van-toast__icon { + font-size: 36px +} + +.van-toast__loading { + padding: 4px; + color: #fff +} + +.van-toast__text { + margin-top: 8px +} + +.van-calendar { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column; + height: 100%; + background-color: #fff +} + +.van-calendar__popup.van-popup--bottom,.van-calendar__popup.van-popup--top { + height: 80% +} + +.van-calendar__popup.van-popup--left,.van-calendar__popup.van-popup--right { + height: 100% +} + +.van-calendar__popup .van-popup__close-icon { + top: 11px +} + +.van-calendar__header { + -webkit-flex-shrink: 0; + flex-shrink: 0; + box-shadow: 0 2px 10px rgba(125,126,128,.16) +} + +.van-calendar__header-subtitle,.van-calendar__header-title,.van-calendar__month-title { + height: 44px; + font-weight: 500; + line-height: 44px; + text-align: center +} + +.van-calendar__header-title { + font-size: 16px +} + +.van-calendar__header-subtitle { + font-size: 14px +} + +.van-calendar__month-title { + font-size: 14px +} + +.van-calendar__weekdays { + display: -webkit-box; + display: -webkit-flex; + display: flex +} + +.van-calendar__weekday { + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + font-size: 12px; + line-height: 30px; + text-align: center +} + +.van-calendar__body { + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + overflow: auto; + -webkit-overflow-scrolling: touch +} + +.van-calendar__days { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-user-select: none; + user-select: none +} + +.van-calendar__month-mark { + position: absolute; + top: 50%; + left: 50%; + z-index: 0; + color: rgba(242,243,245,.8); + font-size: 160px; + -webkit-transform: translate(-50%,-50%); + transform: translate(-50%,-50%); + pointer-events: none +} + +.van-calendar__day,.van-calendar__selected-day { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + text-align: center +} + +.van-calendar__day { + position: relative; + width: 14.285%; + height: 64px; + font-size: 16px; + cursor: pointer +} + +.van-calendar__day--end,.van-calendar__day--multiple-middle,.van-calendar__day--multiple-selected,.van-calendar__day--start,.van-calendar__day--start-end { + color: #fff; + background-color: #ee0a24 +} + +.van-calendar__day--start { + border-radius: 4px 0 0 4px +} + +.van-calendar__day--end { + border-radius: 0 4px 4px 0 +} + +.van-calendar__day--multiple-selected,.van-calendar__day--start-end { + border-radius: 4px +} + +.van-calendar__day--middle { + color: #ee0a24 +} + +.van-calendar__day--middle::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-color: currentColor; + opacity: .1; + content: '' +} + +.van-calendar__day--disabled { + color: #c8c9cc; + cursor: default +} + +.van-calendar__bottom-info,.van-calendar__top-info { + position: absolute; + right: 0; + left: 0; + font-size: 10px; + line-height: 14px +} + +@media (max-width: 350px) { + .van-calendar__bottom-info,.van-calendar__top-info { + font-size:9px + } +} + +.van-calendar__top-info { + top: 6px +} + +.van-calendar__bottom-info { + bottom: 6px +} + +.van-calendar__selected-day { + width: 54px; + height: 54px; + color: #fff; + background-color: #ee0a24; + border-radius: 4px +} + +.van-calendar__footer { + -webkit-flex-shrink: 0; + flex-shrink: 0; + padding: 0 16px; + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom) +} + +.van-calendar__footer--unfit { + padding-bottom: 0 +} + +.van-calendar__confirm { + height: 36px; + margin: 7px 0 +} + +.van-picker { + position: relative; + background-color: #fff; + -webkit-user-select: none; + user-select: none +} + +.van-picker__toolbar { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + height: 44px +} + +.van-picker__cancel,.van-picker__confirm { + height: 100%; + padding: 0 16px; + font-size: 14px; + background-color: transparent; + border: none; + cursor: pointer +} + +.van-picker__cancel:active,.van-picker__confirm:active { + opacity: .7 +} + +.van-picker__confirm { + color: #576b95 +} + +.van-picker__cancel { + color: #969799 +} + +.van-picker__title { + max-width: 50%; + font-weight: 500; + font-size: 16px; + line-height: 20px; + text-align: center +} + +.van-picker__columns { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: flex; + cursor: grab +} + +.van-picker__loading { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 3; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + color: #1989fa; + background-color: rgba(255,255,255,.9) +} + +.van-picker__frame { + position: absolute; + top: 50%; + right: 16px; + left: 16px; + z-index: 2; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + pointer-events: none +} + +.van-picker__mask { + position: absolute; + top: 0; + left: 0; + z-index: 1; + width: 100%; + height: 100%; + background-image: -webkit-linear-gradient(top,hsla(0,0%,100%,.9),hsla(0,0%,100%,.4)),-webkit-linear-gradient(bottom,hsla(0,0%,100%,.9),hsla(0,0%,100%,.4)); + background-image: linear-gradient(180deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.4)),linear-gradient(0deg,hsla(0,0%,100%,.9),hsla(0,0%,100%,.4)); + background-repeat: no-repeat; + background-position: top,bottom; + -webkit-transform: translateZ(0); + transform: translateZ(0); + pointer-events: none +} + +.van-picker-column { + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + overflow: hidden; + font-size: 16px +} + +.van-picker-column__wrapper { + -webkit-transition-timing-function: cubic-bezier(.23,1,.68,1); + transition-timing-function: cubic-bezier(.23,1,.68,1) +} + +.van-picker-column__item { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + padding: 0 4px; + color: #000 +} + +.van-picker-column__item--disabled { + cursor: not-allowed; + opacity: .3 +} + +.van-action-sheet { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column; + max-height: 80%; + overflow: hidden; + color: #323233 +} + +.van-action-sheet__content { + -webkit-box-flex: 1; + -webkit-flex: 1 auto; + flex: 1 auto; + overflow-y: auto; + -webkit-overflow-scrolling: touch +} + +.van-action-sheet__cancel,.van-action-sheet__item { + display: block; + width: 100%; + padding: 14px 16px; + font-size: 16px; + background-color: #fff; + border: none; + cursor: pointer +} + +.van-action-sheet__cancel:active,.van-action-sheet__item:active { + background-color: #f2f3f5 +} + +.van-action-sheet__item { + line-height: 22px +} + +.van-action-sheet__item--disabled,.van-action-sheet__item--loading { + color: #c8c9cc +} + +.van-action-sheet__item--disabled:active,.van-action-sheet__item--loading:active { + background-color: #fff +} + +.van-action-sheet__item--disabled { + cursor: not-allowed +} + +.van-action-sheet__item--loading { + cursor: default +} + +.van-action-sheet__cancel { + -webkit-flex-shrink: 0; + flex-shrink: 0; + box-sizing: border-box; + color: #646566 +} + +.van-action-sheet__subname { + margin-top: 8px; + color: #969799; + font-size: 12px; + line-height: 18px +} + +.van-action-sheet__gap { + display: block; + height: 8px; + background-color: #f7f8fa +} + +.van-action-sheet__header { + -webkit-flex-shrink: 0; + flex-shrink: 0; + font-weight: 500; + font-size: 16px; + line-height: 48px; + text-align: center +} + +.van-action-sheet__description { + position: relative; + -webkit-flex-shrink: 0; + flex-shrink: 0; + padding: 20px 16px; + color: #969799; + font-size: 14px; + line-height: 20px; + text-align: center +} + +.van-action-sheet__description::after { + position: absolute; + box-sizing: border-box; + content: ' '; + pointer-events: none; + right: 16px; + bottom: 0; + left: 16px; + border-bottom: 1px solid #ebedf0; + -webkit-transform: scaleY(.5); + transform: scaleY(.5) +} + +.van-action-sheet__loading-icon .van-loading__spinner { + width: 22px; + height: 22px +} + +.van-action-sheet__close { + position: absolute; + top: 0; + right: 0; + padding: 0 16px; + color: #c8c9cc; + font-size: 22px; + line-height: inherit +} + +.van-action-sheet__close:active { + color: #969799 +} + +.van-goods-action { + position: fixed; + right: 0; + bottom: 0; + left: 0; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + box-sizing: content-box; + height: 50px; + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); + background-color: #fff +} + +.van-goods-action--unfit { + padding-bottom: 0 +} + +.van-dialog { + position: fixed; + top: 45%; + left: 50%; + width: 320px; + overflow: hidden; + font-size: 16px; + background-color: #fff; + border-radius: 16px; + -webkit-transform: translate3d(-50%,-50%,0); + transform: translate3d(-50%,-50%,0); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-transition: .3s; + transition: .3s; + -webkit-transition-property: opacity,-webkit-transform; + transition-property: opacity,-webkit-transform; + transition-property: transform,opacity; + transition-property: transform,opacity,-webkit-transform +} + +@media (max-width: 321px) { + .van-dialog { + width:90% + } +} + +.van-dialog__header { + padding-top: 26px; + font-weight: 500; + line-height: 24px; + text-align: center +} + +.van-dialog__header--isolated { + padding: 24px 0 +} + +.van-dialog__content--isolated { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + min-height: 104px +} + +.van-dialog__message { + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + max-height: 60vh; + padding: 26px 24px; + overflow-y: auto; + font-size: 14px; + line-height: 20px; + white-space: pre-wrap; + text-align: center; + word-wrap: break-word; + -webkit-overflow-scrolling: touch +} + +.van-dialog__message--has-title { + padding-top: 8px; + color: #646566 +} + +.van-dialog__message--left { + text-align: left +} + +.van-dialog__message--right { + text-align: right +} + +.van-dialog__footer { + display: -webkit-box; + display: -webkit-flex; + display: flex; + overflow: hidden; + -webkit-user-select: none; + user-select: none +} + +.van-dialog__cancel,.van-dialog__confirm { + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + height: 48px; + margin: 0; + border: 0 +} + +.van-dialog__confirm,.van-dialog__confirm:active { + color: #ee0a24 +} + +.van-dialog--round-button .van-dialog__footer { + position: relative; + height: auto; + padding: 8px 24px 16px +} + +.van-dialog--round-button .van-dialog__message { + padding-bottom: 16px; + color: #323233 +} + +.van-dialog--round-button .van-dialog__cancel,.van-dialog--round-button .van-dialog__confirm { + height: 36px +} + +.van-dialog--round-button .van-dialog__confirm { + color: #fff +} + +.van-dialog-bounce-enter { + -webkit-transform: translate3d(-50%,-50%,0) scale(.7); + transform: translate3d(-50%,-50%,0) scale(.7); + opacity: 0 +} + +.van-dialog-bounce-leave-active { + -webkit-transform: translate3d(-50%,-50%,0) scale(.9); + transform: translate3d(-50%,-50%,0) scale(.9); + opacity: 0 +} + +.van-contact-edit { + padding: 16px +} + +.van-contact-edit__fields { + overflow: hidden; + border-radius: 4px +} + +.van-contact-edit__fields .van-field__label { + width: 4.1em +} + +.van-contact-edit__switch-cell { + margin-top: 10px; + padding-top: 9px; + padding-bottom: 9px; + border-radius: 4px +} + +.van-contact-edit__buttons { + padding: 32px 0 +} + +.van-contact-edit .van-button { + margin-bottom: 12px; + font-size: 16px +} + +.van-address-edit { + padding: 12px +} + +.van-address-edit__fields { + overflow: hidden; + border-radius: 8px +} + +.van-address-edit__fields .van-field__label { + width: 4.1em +} + +.van-address-edit__default { + margin-top: 12px; + overflow: hidden; + border-radius: 8px +} + +.van-address-edit__buttons { + padding: 32px 4px +} + +.van-address-edit__buttons .van-button { + margin-bottom: 12px +} + +.van-address-edit-detail { + padding: 0 +} + +.van-address-edit-detail__search-item { + background-color: #f2f3f5 +} + +.van-address-edit-detail__keyword { + color: #ee0a24 +} + +.van-address-edit-detail__finish { + color: #1989fa; + font-size: 12px +} + +.van-radio-group--horizontal { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-flex-wrap: wrap; + flex-wrap: wrap +} + +.van-contact-list { + box-sizing: border-box; + height: 100%; + padding-bottom: 80px +} + +.van-contact-list__item { + padding: 16px +} + +.van-contact-list__item-value { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + padding-right: 32px; + padding-left: 8px +} + +.van-contact-list__item-tag { + -webkit-box-flex: 0; + -webkit-flex: none; + flex: none; + margin-left: 8px; + padding-top: 0; + padding-bottom: 0; + line-height: 1.4em +} + +.van-contact-list__group { + box-sizing: border-box; + height: 100%; + overflow-y: scroll; + -webkit-overflow-scrolling: touch +} + +.van-contact-list__edit { + font-size: 16px +} + +.van-contact-list__bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 999; + padding: 0 16px; + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); + background-color: #fff +} + +.van-contact-list__add { + height: 40px; + margin: 5px 0 +} + +.van-address-list { + box-sizing: border-box; + height: 100%; + padding: 12px 12px 80px +} + +.van-address-list__bottom { + position: fixed; + bottom: 0; + left: 0; + z-index: 999; + box-sizing: border-box; + width: 100%; + padding: 0 16px; + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); + background-color: #fff +} + +.van-address-list__add { + height: 40px; + margin: 5px 0 +} + +.van-address-list__disabled-text { + padding: 20px 0 16px; + color: #969799; + font-size: 14px; + line-height: 20px +} + +.van-address-item { + padding: 12px; + background-color: #fff; + border-radius: 8px +} + +.van-address-item:not(:last-child) { + margin-bottom: 12px +} + +.van-address-item__value { + padding-right: 44px +} + +.van-address-item__name { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + margin-bottom: 8px; + font-size: 16px; + line-height: 22px +} + +.van-address-item__tag { + -webkit-box-flex: 0; + -webkit-flex: none; + flex: none; + margin-left: 8px; + padding-top: 0; + padding-bottom: 0; + line-height: 1.4em +} + +.van-address-item__address { + color: #323233; + font-size: 13px; + line-height: 18px +} + +.van-address-item--disabled .van-address-item__address,.van-address-item--disabled .van-address-item__name { + color: #c8c9cc +} + +.van-address-item__edit { + position: absolute; + top: 50%; + right: 16px; + color: #969799; + font-size: 20px; + -webkit-transform: translate(0,-50%); + transform: translate(0,-50%) +} + +.van-address-item .van-cell { + padding: 0 +} + +.van-address-item .van-radio__label { + margin-left: 12px +} + +.van-address-item .van-radio__icon--checked .van-icon { + background-color: #ee0a24; + border-color: #ee0a24 +} + +.van-badge { + display: inline-block; + box-sizing: border-box; + min-width: 16px; + padding: 0 3px; + color: #fff; + font-weight: 500; + font-size: 12px; + font-family: -apple-system-font,Helvetica Neue,Arial,sans-serif; + line-height: 1.2; + text-align: center; + background-color: #ee0a24; + border: 1px solid #fff; + border-radius: 999px +} + +.van-badge--fixed { + position: absolute; + top: 0; + right: 0; + -webkit-transform: translate(50%,-50%); + transform: translate(50%,-50%); + -webkit-transform-origin: 100%; + transform-origin: 100% +} + +.van-badge--dot { + width: 8px; + min-width: 0; + height: 8px; + background-color: #ee0a24; + border-radius: 100% +} + +.van-badge__wrapper { + position: relative; + display: inline-block +} + +.van-tab__pane,.van-tab__pane-wrapper { + -webkit-flex-shrink: 0; + flex-shrink: 0; + box-sizing: border-box; + width: 100% +} + +.van-tab__pane-wrapper--inactive { + height: 0; + overflow: visible +} + +.van-sticky--fixed { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 99 +} + +.van-tab { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + box-sizing: border-box; + padding: 0 4px; + color: #646566; + font-size: 14px; + line-height: 20px; + cursor: pointer +} + +.van-tab--active { + color: #323233; + font-weight: 500 +} + +.van-tab--disabled { + color: #c8c9cc; + cursor: not-allowed +} + +.van-tab__text--ellipsis { + display: -webkit-box; + overflow: hidden; + -webkit-line-clamp: 1; + -webkit-box-orient: vertical +} + +.van-tab__text-wrapper { + position: relative +} + +.van-tabs { + position: relative +} + +.van-tabs__wrap { + overflow: hidden +} + +.van-tabs__wrap--page-top { + position: fixed +} + +.van-tabs__wrap--content-bottom { + top: auto; + bottom: 0 +} + +.van-tabs__wrap--scrollable .van-tab { + -webkit-box-flex: 1; + -webkit-flex: 1 0 auto; + flex: 1 0 auto; + padding: 0 12px +} + +.van-tabs__wrap--scrollable .van-tabs__nav { + overflow-x: auto; + overflow-y: hidden; + -webkit-overflow-scrolling: touch +} + +.van-tabs__wrap--scrollable .van-tabs__nav::-webkit-scrollbar { + display: none +} + +.van-tabs__nav { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: flex; + background-color: #fff; + -webkit-user-select: none; + user-select: none +} + +.van-tabs__nav--line { + box-sizing: content-box; + height: 100%; + padding-bottom: 15px +} + +.van-tabs__nav--complete { + padding-right: 8px; + padding-left: 8px +} + +.van-tabs__nav--card { + box-sizing: border-box; + height: 30px; + margin: 0 16px; + border: 1px solid #ee0a24; + border-radius: 2px +} + +.van-tabs__nav--card .van-tab { + color: #ee0a24; + border-right: 1px solid #ee0a24 +} + +.van-tabs__nav--card .van-tab:last-child { + border-right: none +} + +.van-tabs__nav--card .van-tab.van-tab--active { + color: #fff; + background-color: #ee0a24 +} + +.van-tabs__nav--card .van-tab--disabled { + color: #c8c9cc +} + +.van-tabs__line { + position: absolute; + bottom: 15px; + left: 0; + z-index: 1; + width: 40px; + height: 3px; + background-color: #ee0a24; + border-radius: 3px +} + +.van-tabs__track { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: flex; + width: 100%; + height: 100%; + will-change: left +} + +.van-tabs__content--animated { + overflow: hidden +} + +.van-tabs--line .van-tabs__wrap { + height: 44px +} + +.van-tabs--card>.van-tabs__wrap { + height: 30px +} + +.van-coupon-list { + position: relative; + height: 100%; + background-color: #f7f8fa +} + +.van-coupon-list__field { + padding: 5px 0 5px 16px +} + +.van-coupon-list__field .van-field__body { + height: 34px; + padding-left: 12px; + line-height: 34px; + background: #f7f8fa; + border-radius: 17px +} + +.van-coupon-list__field .van-field__body::-webkit-input-placeholder { + color: #c8c9cc +} + +.van-coupon-list__field .van-field__body::placeholder { + color: #c8c9cc +} + +.van-coupon-list__field .van-field__clear { + margin-right: 0 +} + +.van-coupon-list__exchange-bar { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + background-color: #fff +} + +.van-coupon-list__exchange { + -webkit-box-flex: 0; + -webkit-flex: none; + flex: none; + height: 32px; + font-size: 16px; + line-height: 30px; + border: 0 +} + +.van-coupon-list .van-tabs__wrap { + box-shadow: 0 6px 12px -12px #969799 +} + +.van-coupon-list__list { + box-sizing: border-box; + padding: 16px 0 24px; + overflow-y: auto; + -webkit-overflow-scrolling: touch +} + +.van-coupon-list__list--with-bottom { + padding-bottom: 66px +} + +.van-coupon-list__bottom { + position: absolute; + bottom: 0; + left: 0; + z-index: 999; + box-sizing: border-box; + width: 100%; + padding: 5px 16px; + font-weight: 500; + background-color: #fff +} + +.van-coupon-list__close { + height: 40px +} + +.van-coupon-list__empty { + padding-top: 60px; + text-align: center +} + +.van-coupon-list__empty p { + margin: 16px 0; + color: #969799; + font-size: 14px; + line-height: 20px +} + +.van-coupon-list__empty img { + width: 200px; + height: 200px +} + +.van-cascader__header { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + height: 48px; + padding: 0 16px +} + +.van-cascader__title { + font-weight: 500; + font-size: 16px; + line-height: 20px +} + +.van-cascader__close-icon { + color: #c8c9cc; + font-size: 22px +} + +.van-cascader__close-icon:active { + color: #969799 +} + +.van-cascader__tabs .van-tab { + -webkit-box-flex: 0; + -webkit-flex: none; + flex: none; + padding: 0 10px +} + +.van-cascader__tabs.van-tabs--line .van-tabs__wrap { + height: 48px +} + +.van-cascader__tabs .van-tabs__nav--complete { + padding-right: 6px; + padding-left: 6px +} + +.van-cascader__tab { + color: #323233; + font-weight: 500 +} + +.van-cascader__tab--unselected { + color: #969799; + font-weight: 400 +} + +.van-cascader__option { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between; + padding: 10px 16px; + font-size: 14px; + line-height: 20px +} + +.van-cascader__option:active { + background-color: #f2f3f5 +} + +.van-cascader__option--selected { + color: #ee0a24; + font-weight: 500 +} + +.van-cascader__selected-icon { + font-size: 18px +} + +.van-cascader__options { + box-sizing: border-box; + height: 384px; + padding-top: 6px; + overflow-y: auto; + -webkit-overflow-scrolling: touch +} + +.van-cell-group { + background-color: #fff +} + +.van-cell-group--inset { + margin: 0 16px; + overflow: hidden; + border-radius: 8px +} + +.van-cell-group__title { + padding: 16px 16px 8px; + color: #969799; + font-size: 14px; + line-height: 16px +} + +.van-cell-group__title--inset { + padding: 16px 16px 8px 32px +} + +.van-panel { + background: #fff +} + +.van-panel__header-value { + color: #ee0a24 +} + +.van-panel__footer { + padding: 8px 16px +} + +.van-checkbox-group--horizontal { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-flex-wrap: wrap; + flex-wrap: wrap +} + +.van-circle { + position: relative; + display: inline-block; + width: 100px; + height: 100px; + text-align: center +} + +.van-circle svg { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100% +} + +.van-circle__layer { + stroke: #fff +} + +.van-circle__hover { + fill: none; + stroke: #1989fa; + stroke-linecap: round +} + +.van-circle__text { + position: absolute; + top: 50%; + left: 0; + box-sizing: border-box; + width: 100%; + padding: 0 4px; + color: #323233; + font-weight: 500; + font-size: 14px; + line-height: 20px; + -webkit-transform: translateY(-50%); + transform: translateY(-50%) +} + +.van-col { + float: left; + box-sizing: border-box; + min-height: 1px +} + +.van-col--1 { + width: 4.16666667% +} + +.van-col--offset-1 { + margin-left: 4.16666667% +} + +.van-col--2 { + width: 8.33333333% +} + +.van-col--offset-2 { + margin-left: 8.33333333% +} + +.van-col--3 { + width: 12.5% +} + +.van-col--offset-3 { + margin-left: 12.5% +} + +.van-col--4 { + width: 16.66666667% +} + +.van-col--offset-4 { + margin-left: 16.66666667% +} + +.van-col--5 { + width: 20.83333333% +} + +.van-col--offset-5 { + margin-left: 20.83333333% +} + +.van-col--6 { + width: 25% +} + +.van-col--offset-6 { + margin-left: 25% +} + +.van-col--7 { + width: 29.16666667% +} + +.van-col--offset-7 { + margin-left: 29.16666667% +} + +.van-col--8 { + width: 33.33333333% +} + +.van-col--offset-8 { + margin-left: 33.33333333% +} + +.van-col--9 { + width: 37.5% +} + +.van-col--offset-9 { + margin-left: 37.5% +} + +.van-col--10 { + width: 41.66666667% +} + +.van-col--offset-10 { + margin-left: 41.66666667% +} + +.van-col--11 { + width: 45.83333333% +} + +.van-col--offset-11 { + margin-left: 45.83333333% +} + +.van-col--12 { + width: 50% +} + +.van-col--offset-12 { + margin-left: 50% +} + +.van-col--13 { + width: 54.16666667% +} + +.van-col--offset-13 { + margin-left: 54.16666667% +} + +.van-col--14 { + width: 58.33333333% +} + +.van-col--offset-14 { + margin-left: 58.33333333% +} + +.van-col--15 { + width: 62.5% +} + +.van-col--offset-15 { + margin-left: 62.5% +} + +.van-col--16 { + width: 66.66666667% +} + +.van-col--offset-16 { + margin-left: 66.66666667% +} + +.van-col--17 { + width: 70.83333333% +} + +.van-col--offset-17 { + margin-left: 70.83333333% +} + +.van-col--18 { + width: 75% +} + +.van-col--offset-18 { + margin-left: 75% +} + +.van-col--19 { + width: 79.16666667% +} + +.van-col--offset-19 { + margin-left: 79.16666667% +} + +.van-col--20 { + width: 83.33333333% +} + +.van-col--offset-20 { + margin-left: 83.33333333% +} + +.van-col--21 { + width: 87.5% +} + +.van-col--offset-21 { + margin-left: 87.5% +} + +.van-col--22 { + width: 91.66666667% +} + +.van-col--offset-22 { + margin-left: 91.66666667% +} + +.van-col--23 { + width: 95.83333333% +} + +.van-col--offset-23 { + margin-left: 95.83333333% +} + +.van-col--24 { + width: 100% +} + +.van-col--offset-24 { + margin-left: 100% +} + +.van-count-down { + color: #323233; + font-size: 14px; + line-height: 20px +} + +.van-divider { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + margin: 16px 0; + color: #969799; + font-size: 14px; + line-height: 24px; + border-color: #ebedf0; + border-style: solid; + border-width: 0 +} + +.van-divider::after,.van-divider::before { + display: block; + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + box-sizing: border-box; + height: 1px; + border-color: inherit; + border-style: inherit; + border-width: 1px 0 0 +} + +.van-divider::before { + content: '' +} + +.van-divider--hairline::after,.van-divider--hairline::before { + -webkit-transform: scaleY(.5); + transform: scaleY(.5) +} + +.van-divider--dashed { + border-style: dashed +} + +.van-divider--content-center::before,.van-divider--content-left::before,.van-divider--content-right::before { + margin-right: 16px +} + +.van-divider--content-center::after,.van-divider--content-left::after,.van-divider--content-right::after { + margin-left: 16px; + content: '' +} + +.van-divider--content-left::before { + max-width: 10% +} + +.van-divider--content-right::after { + max-width: 10% +} + +.van-dropdown-menu { + -webkit-user-select: none; + user-select: none +} + +.van-dropdown-menu__bar { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: flex; + height: 48px; + background-color: #fff; + box-shadow: 0 2px 12px rgba(100,101,102,.12) +} + +.van-dropdown-menu__bar--opened { + z-index: 11 +} + +.van-dropdown-menu__item { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + min-width: 0; + cursor: pointer +} + +.van-dropdown-menu__item:active { + opacity: .7 +} + +.van-dropdown-menu__item--disabled:active { + opacity: 1 +} + +.van-dropdown-menu__item--disabled .van-dropdown-menu__title { + color: #969799 +} + +.van-dropdown-menu__title { + position: relative; + box-sizing: border-box; + max-width: 100%; + padding: 0 8px; + color: #323233; + font-size: 15px; + line-height: 22px +} + +.van-dropdown-menu__title::after { + position: absolute; + top: 50%; + right: -4px; + margin-top: -5px; + border: 3px solid; + border-color: transparent transparent #dcdee0 #dcdee0; + -webkit-transform: rotate(-45deg); + transform: rotate(-45deg); + opacity: .8; + content: '' +} + +.van-dropdown-menu__title--active { + color: #ee0a24 +} + +.van-dropdown-menu__title--active::after { + border-color: transparent transparent currentColor currentColor +} + +.van-dropdown-menu__title--down::after { + margin-top: -1px; + -webkit-transform: rotate(135deg); + transform: rotate(135deg) +} + +.van-empty { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + box-sizing: border-box; + padding: 32px 0 +} + +.van-empty__image { + width: 160px; + height: 160px +} + +.van-empty__image img { + width: 100%; + height: 100% +} + +.van-empty__description { + margin-top: 16px; + padding: 0 60px; + color: #969799; + font-size: 14px; + line-height: 20px +} + +.van-empty__bottom { + margin-top: 24px +} + +.van-grid { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-flex-wrap: wrap; + flex-wrap: wrap +} + +.van-swipe { + position: relative; + overflow: hidden; + cursor: grab; + -webkit-user-select: none; + user-select: none +} + +.van-swipe__track { + display: -webkit-box; + display: -webkit-flex; + display: flex; + height: 100% +} + +.van-swipe__track--vertical { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column +} + +.van-swipe__indicators { + position: absolute; + bottom: 12px; + left: 50%; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-transform: translateX(-50%); + transform: translateX(-50%) +} + +.van-swipe__indicators--vertical { + top: 50%; + bottom: auto; + left: 12px; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column; + -webkit-transform: translateY(-50%); + transform: translateY(-50%) +} + +.van-swipe__indicators--vertical .van-swipe__indicator:not(:last-child) { + margin-bottom: 6px +} + +.van-swipe__indicator { + width: 6px; + height: 6px; + background-color: #ebedf0; + border-radius: 100%; + opacity: .3; + -webkit-transition: opacity .2s,background-color .2s; + transition: opacity .2s,background-color .2s +} + +.van-swipe__indicator:not(:last-child) { + margin-right: 6px +} + +.van-swipe__indicator--active { + background-color: #1989fa; + opacity: 1 +} + +.van-swipe-item { + position: relative; + -webkit-flex-shrink: 0; + flex-shrink: 0; + width: 100%; + height: 100% +} + +.van-image-preview { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100% +} + +.van-image-preview__swipe { + height: 100% +} + +.van-image-preview__swipe-item { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + overflow: hidden +} + +.van-image-preview__cover { + position: absolute; + top: 0; + left: 0 +} + +.van-image-preview__image { + width: 100%; + -webkit-transition-property: -webkit-transform; + transition-property: -webkit-transform; + transition-property: transform; + transition-property: transform,-webkit-transform +} + +.van-image-preview__image--vertical { + width: auto; + height: 100% +} + +.van-image-preview__image img { + -webkit-user-drag: none +} + +.van-image-preview__image .van-image__error { + top: 30%; + height: 40% +} + +.van-image-preview__image .van-image__error-icon { + font-size: 36px +} + +.van-image-preview__image .van-image__loading { + background-color: transparent +} + +.van-image-preview__index { + position: absolute; + top: 16px; + left: 50%; + color: #fff; + font-size: 14px; + line-height: 20px; + text-shadow: 0 1px 1px #323233; + -webkit-transform: translate(-50%,0); + transform: translate(-50%,0) +} + +.van-image-preview__overlay { + background-color: rgba(0,0,0,.9) +} + +.van-image-preview__close-icon { + position: absolute; + z-index: 1; + color: #c8c9cc; + font-size: 22px; + cursor: pointer +} + +.van-image-preview__close-icon:active { + color: #969799 +} + +.van-image-preview__close-icon--top-left { + top: 16px; + left: 16px +} + +.van-image-preview__close-icon--top-right { + top: 16px; + right: 16px +} + +.van-image-preview__close-icon--bottom-left { + bottom: 16px; + left: 16px +} + +.van-image-preview__close-icon--bottom-right { + right: 16px; + bottom: 16px +} + +.van-uploader { + position: relative; + display: inline-block +} + +.van-uploader__wrapper { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-flex-wrap: wrap; + flex-wrap: wrap +} + +.van-uploader__wrapper--disabled { + opacity: .5 +} + +.van-uploader__input { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + overflow: hidden; + cursor: pointer; + opacity: 0 +} + +.van-uploader__input-wrapper { + position: relative +} + +.van-uploader__input:disabled { + cursor: not-allowed +} + +.van-uploader__upload { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + box-sizing: border-box; + width: 80px; + height: 80px; + margin: 0 8px 8px 0; + background-color: #f7f8fa +} + +.van-uploader__upload:active { + background-color: #f2f3f5 +} + +.van-uploader__upload-icon { + color: #dcdee0; + font-size: 24px +} + +.van-uploader__upload-text { + margin-top: 8px; + color: #969799; + font-size: 12px +} + +.van-uploader__preview { + position: relative; + margin: 0 8px 8px 0; + cursor: pointer +} + +.van-uploader__preview-image { + display: block; + width: 80px; + height: 80px; + overflow: hidden +} + +.van-uploader__preview-delete { + position: absolute; + top: 0; + right: 0; + width: 14px; + height: 14px; + background-color: rgba(0,0,0,.7); + border-radius: 0 0 0 12px +} + +.van-uploader__preview-delete-icon { + position: absolute; + top: -2px; + right: -2px; + color: #fff; + font-size: 16px; + -webkit-transform: scale(.5); + transform: scale(.5) +} + +.van-uploader__preview-cover { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0 +} + +.van-uploader__mask { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + color: #fff; + background-color: rgba(50,50,51,.88) +} + +.van-uploader__mask-icon { + font-size: 22px +} + +.van-uploader__mask-message { + margin-top: 6px; + padding: 0 4px; + font-size: 12px; + line-height: 14px +} + +.van-uploader__loading { + width: 22px; + height: 22px; + color: #fff +} + +.van-uploader__file { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + width: 80px; + height: 80px; + background-color: #f7f8fa +} + +.van-uploader__file-icon { + color: #646566; + font-size: 20px +} + +.van-uploader__file-name { + box-sizing: border-box; + width: 100%; + margin-top: 8px; + padding: 0 4px; + color: #646566; + font-size: 12px; + text-align: center +} + +.van-index-anchor { + z-index: 1; + box-sizing: border-box; + padding: 0 16px; + color: #323233; + font-weight: 500; + font-size: 14px; + line-height: 32px; + background-color: transparent +} + +.van-index-anchor--sticky { + position: fixed; + top: 0; + right: 0; + left: 0; + color: #ee0a24; + background-color: #fff +} + +.van-index-bar__sidebar { + position: fixed; + top: 50%; + right: 0; + z-index: 2; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column; + text-align: center; + -webkit-transform: translateY(-50%); + transform: translateY(-50%); + cursor: pointer; + -webkit-user-select: none; + user-select: none +} + +.van-index-bar__index { + padding: 0 8px 0 16px; + font-weight: 500; + font-size: 10px; + line-height: 14px +} + +.van-index-bar__index--active { + color: #ee0a24 +} + +.van-pagination { + display: -webkit-box; + display: -webkit-flex; + display: flex; + font-size: 14px +} + +.van-pagination__item,.van-pagination__page-desc { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center +} + +.van-pagination__item { + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + box-sizing: border-box; + min-width: 36px; + height: 40px; + color: #1989fa; + background-color: #fff; + cursor: pointer; + -webkit-user-select: none; + user-select: none +} + +.van-pagination__item:active { + color: #fff; + background-color: #1989fa +} + +.van-pagination__item::after { + border-width: 1px 0 1px 1px +} + +.van-pagination__item:last-child::after { + border-right-width: 1px +} + +.van-pagination__item--active { + color: #fff; + background-color: #1989fa +} + +.van-pagination__next,.van-pagination__prev { + padding: 0 4px; + cursor: pointer +} + +.van-pagination__item--disabled,.van-pagination__item--disabled:active { + color: #646566; + background-color: #f7f8fa; + cursor: not-allowed; + opacity: .5 +} + +.van-pagination__page { + -webkit-box-flex: 0; + -webkit-flex-grow: 0; + flex-grow: 0 +} + +.van-pagination__page-desc { + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + height: 40px; + color: #646566 +} + +.van-pagination--simple .van-pagination__next::after,.van-pagination--simple .van-pagination__prev::after { + border-width: 1px +} + +.van-password-input { + position: relative; + margin: 0 16px; + -webkit-user-select: none; + user-select: none +} + +.van-password-input__error-info,.van-password-input__info { + margin-top: 16px; + font-size: 14px; + text-align: center +} + +.van-password-input__info { + color: #969799 +} + +.van-password-input__error-info { + color: #ee0a24 +} + +.van-password-input__security { + display: -webkit-box; + display: -webkit-flex; + display: flex; + width: 100%; + height: 50px; + cursor: pointer +} + +.van-password-input__security::after { + border-radius: 6px +} + +.van-password-input__security li { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + height: 100%; + font-size: 20px; + line-height: 1.2; + background-color: #fff +} + +.van-password-input__security i { + position: absolute; + top: 50%; + left: 50%; + width: 10px; + height: 10px; + background-color: #000; + border-radius: 100%; + -webkit-transform: translate(-50%,-50%); + transform: translate(-50%,-50%); + visibility: hidden +} + +.van-password-input__cursor { + position: absolute; + top: 50%; + left: 50%; + width: 1px; + height: 40%; + background-color: #323233; + -webkit-transform: translate(-50%,-50%); + transform: translate(-50%,-50%); + -webkit-animation: 1s van-cursor-flicker infinite; + animation: 1s van-cursor-flicker infinite +} + +@-webkit-keyframes van-cursor-flicker { + from { + opacity: 0 + } + + 50% { + opacity: 1 + } + + 100% { + opacity: 0 + } +} + +@keyframes van-cursor-flicker { + from { + opacity: 0 + } + + 50% { + opacity: 1 + } + + 100% { + opacity: 0 + } +} + +.van-progress { + position: relative; + height: 4px; + background: #ebedf0; + border-radius: 4px +} + +.van-progress__portion { + position: absolute; + left: 0; + height: 100%; + background: #1989fa; + border-radius: inherit +} + +.van-progress__pivot { + position: absolute; + top: 50%; + box-sizing: border-box; + min-width: 3.6em; + padding: 0 5px; + color: #fff; + font-size: 10px; + line-height: 1.6; + text-align: center; + word-break: keep-all; + background-color: #1989fa; + border-radius: 1em; + -webkit-transform: translate(0,-50%); + transform: translate(0,-50%) +} + +.van-row::after { + display: table; + clear: both; + content: '' +} + +.van-row--flex { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-flex-wrap: wrap; + flex-wrap: wrap +} + +.van-row--flex::after { + display: none +} + +.van-row--justify-center { + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center +} + +.van-row--justify-end { + -webkit-box-pack: end; + -webkit-justify-content: flex-end; + justify-content: flex-end +} + +.van-row--justify-space-between { + -webkit-box-pack: justify; + -webkit-justify-content: space-between; + justify-content: space-between +} + +.van-row--justify-space-around { + -webkit-justify-content: space-around; + justify-content: space-around +} + +.van-row--align-center { + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center +} + +.van-row--align-bottom { + -webkit-box-align: end; + -webkit-align-items: flex-end; + align-items: flex-end +} + +.van-sidebar { + width: 80px; + overflow-y: auto; + -webkit-overflow-scrolling: touch +} + +.van-tree-select { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: flex; + font-size: 14px; + -webkit-user-select: none; + user-select: none +} + +.van-tree-select__nav { + -webkit-box-flex: 1; + -webkit-flex: 1; + flex: 1; + overflow-y: auto; + background-color: #f7f8fa; + -webkit-overflow-scrolling: touch +} + +.van-tree-select__nav-item { + padding: 14px 12px +} + +.van-tree-select__content { + -webkit-box-flex: 2; + -webkit-flex: 2; + flex: 2; + overflow-y: auto; + background-color: #fff; + -webkit-overflow-scrolling: touch +} + +.van-tree-select__item { + position: relative; + padding: 0 32px 0 16px; + font-weight: 500; + line-height: 48px; + cursor: pointer +} + +.van-tree-select__item--active { + color: #ee0a24 +} + +.van-tree-select__item--disabled { + color: #c8c9cc; + cursor: not-allowed +} + +.van-tree-select__selected { + position: absolute; + top: 50%; + right: 16px; + margin-top: -8px; + font-size: 16px +} + +.van-skeleton { + display: -webkit-box; + display: -webkit-flex; + display: flex; + padding: 0 16px +} + +.van-skeleton__avatar { + -webkit-flex-shrink: 0; + flex-shrink: 0; + width: 32px; + height: 32px; + margin-right: 16px; + background-color: #f2f3f5 +} + +.van-skeleton__avatar--round { + border-radius: 999px +} + +.van-skeleton__content { + width: 100% +} + +.van-skeleton__avatar+.van-skeleton__content { + padding-top: 8px +} + +.van-skeleton__row,.van-skeleton__title { + height: 16px; + background-color: #f2f3f5 +} + +.van-skeleton__title { + width: 40%; + margin: 0 +} + +.van-skeleton__row:not(:first-child) { + margin-top: 12px +} + +.van-skeleton__title+.van-skeleton__row { + margin-top: 20px +} + +.van-skeleton--animate { + -webkit-animation: van-skeleton-blink 1.2s ease-in-out infinite; + animation: van-skeleton-blink 1.2s ease-in-out infinite +} + +.van-skeleton--round .van-skeleton__row,.van-skeleton--round .van-skeleton__title { + border-radius: 999px +} + +@-webkit-keyframes van-skeleton-blink { + 50% { + opacity: .6 + } +} + +@keyframes van-skeleton-blink { + 50% { + opacity: .6 + } +} + +.van-stepper { + font-size: 0; + -webkit-user-select: none; + user-select: none +} + +.van-stepper__minus,.van-stepper__plus { + position: relative; + box-sizing: border-box; + width: 28px; + height: 28px; + margin: 0; + padding: 0; + color: #323233; + vertical-align: middle; + background-color: #f2f3f5; + border: 0; + cursor: pointer +} + +.van-stepper__minus::before,.van-stepper__plus::before { + width: 50%; + height: 1px +} + +.van-stepper__minus::after,.van-stepper__plus::after { + width: 1px; + height: 50% +} + +.van-stepper__minus::after,.van-stepper__minus::before,.van-stepper__plus::after,.van-stepper__plus::before { + position: absolute; + top: 50%; + left: 50%; + background-color: currentColor; + -webkit-transform: translate(-50%,-50%); + transform: translate(-50%,-50%); + content: '' +} + +.van-stepper__minus:active,.van-stepper__plus:active { + background-color: #e8e8e8 +} + +.van-stepper__minus--disabled,.van-stepper__plus--disabled { + color: #c8c9cc; + background-color: #f7f8fa; + cursor: not-allowed +} + +.van-stepper__minus--disabled:active,.van-stepper__plus--disabled:active { + background-color: #f7f8fa +} + +.van-stepper__minus { + border-radius: 4px 0 0 4px +} + +.van-stepper__minus::after { + display: none +} + +.van-stepper__plus { + border-radius: 0 4px 4px 0 +} + +.van-stepper__input { + box-sizing: border-box; + width: 32px; + height: 28px; + margin: 0 2px; + padding: 0; + color: #323233; + font-size: 14px; + line-height: normal; + text-align: center; + vertical-align: middle; + background-color: #f2f3f5; + border: 0; + border-width: 1px 0; + border-radius: 0; + -webkit-appearance: none +} + +.van-stepper__input:disabled { + color: #c8c9cc; + background-color: #f2f3f5; + -webkit-text-fill-color: #c8c9cc; + opacity: 1 +} + +.van-stepper__input:read-only { + cursor: default +} + +.van-stepper--round .van-stepper__input { + background-color: transparent +} + +.van-stepper--round .van-stepper__minus,.van-stepper--round .van-stepper__plus { + border-radius: 100% +} + +.van-stepper--round .van-stepper__minus:active,.van-stepper--round .van-stepper__plus:active { + opacity: .7 +} + +.van-stepper--round .van-stepper__minus--disabled,.van-stepper--round .van-stepper__minus--disabled:active,.van-stepper--round .van-stepper__plus--disabled,.van-stepper--round .van-stepper__plus--disabled:active { + opacity: .3 +} + +.van-stepper--round .van-stepper__plus { + color: #fff; + background-color: #ee0a24 +} + +.van-stepper--round .van-stepper__minus { + color: #ee0a24; + background-color: #fff; + border: 1px solid #ee0a24 +} + +.van-sku-container { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column; + -webkit-box-align: stretch; + -webkit-align-items: stretch; + align-items: stretch; + min-height: 50%; + max-height: 80%; + overflow-y: visible; + font-size: 14px; + background: #fff +} + +.van-sku-body { + -webkit-box-flex: 1; + -webkit-flex: 1 1 auto; + flex: 1 1 auto; + min-height: 44px; + overflow-y: scroll; + -webkit-overflow-scrolling: touch +} + +.van-sku-body::-webkit-scrollbar { + display: none +} + +.van-sku-header { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-flex-shrink: 0; + flex-shrink: 0; + margin: 0 16px +} + +.van-sku-header__img-wrap { + -webkit-flex-shrink: 0; + flex-shrink: 0; + width: 96px; + height: 96px; + margin: 12px 12px 12px 0; + overflow: hidden; + border-radius: 4px +} + +.van-sku-header__goods-info { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column; + -webkit-box-pack: end; + -webkit-justify-content: flex-end; + justify-content: flex-end; + padding: 12px 20px 12px 0 +} + +.van-sku-header-item { + margin-top: 8px; + color: #969799; + font-size: 12px; + line-height: 16px +} + +.van-sku__price-symbol { + font-size: 16px; + vertical-align: bottom +} + +.van-sku__price-num { + font-weight: 500; + font-size: 22px; + vertical-align: bottom; + word-wrap: break-word +} + +.van-sku__goods-price { + margin-left: -2px; + color: #ee0a24 +} + +.van-sku__price-tag { + position: relative; + display: inline-block; + margin-left: 8px; + padding: 0 5px; + overflow: hidden; + color: #ee0a24; + font-size: 12px; + line-height: 16px; + border-radius: 8px +} + +.van-sku__price-tag::before { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: currentColor; + opacity: .1; + content: '' +} + +.van-sku-group-container { + padding-top: 12px +} + +.van-sku-group-container--hide-soldout .van-sku-row__item--disabled { + display: none +} + +.van-sku-row { + margin: 0 16px 12px +} + +.van-sku-row:last-child { + margin-bottom: 0 +} + +.van-sku-row__image-item,.van-sku-row__item { + position: relative; + overflow: hidden; + color: #323233; + border-radius: 4px; + cursor: pointer +} + +.van-sku-row__image-item::before,.van-sku-row__item::before { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: #f7f8fa; + content: '' +} + +.van-sku-row__image-item--active,.van-sku-row__item--active { + color: #ee0a24 +} + +.van-sku-row__image-item--active::before,.van-sku-row__item--active::before { + background: currentColor; + opacity: .1 +} + +.van-sku-row__item { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: inline-flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + min-width: 40px; + margin: 0 12px 12px 0; + font-size: 13px; + line-height: 16px; + vertical-align: middle +} + +.van-sku-row__item-img { + z-index: 1; + width: 24px; + height: 24px; + margin: 4px 0 4px 4px; + object-fit: cover; + border-radius: 2px +} + +.van-sku-row__item-name { + z-index: 1; + padding: 8px +} + +.van-sku-row__item--disabled { + color: #c8c9cc; + background: #f2f3f5; + cursor: not-allowed +} + +.van-sku-row__item--disabled .van-sku-row__item-img { + opacity: .3 +} + +.van-sku-row__image { + margin-right: 0 +} + +.van-sku-row__image-item { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -webkit-flex-direction: column; + flex-direction: column; + width: 110px; + margin: 0 4px 4px 0; + border: 1px solid transparent +} + +.van-sku-row__image-item:last-child { + margin-right: 0 +} + +.van-sku-row__image-item-img { + width: 100%; + height: 110px +} + +.van-sku-row__image-item-img-icon { + position: absolute; + top: 0; + right: 0; + z-index: 3; + width: 18px; + height: 18px; + color: #fff; + line-height: 18px; + text-align: center; + background-color: rgba(0,0,0,.4); + border-bottom-left-radius: 4px +} + +.van-sku-row__image-item-name { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + box-sizing: border-box; + height: 40px; + padding: 4px; + font-size: 12px; + line-height: 16px +} + +.van-sku-row__image-item-name span { + word-wrap: break-word +} + +.van-sku-row__image-item--active { + border-color: currentColor +} + +.van-sku-row__image-item--disabled { + color: #c8c9cc; + cursor: not-allowed +} + +.van-sku-row__image-item--disabled::before { + z-index: 2; + background: #f2f3f5; + opacity: .4 +} + +.van-sku-row__title { + padding-bottom: 12px +} + +.van-sku-row__title-multiple { + color: #969799 +} + +.van-sku-row__scroller { + margin: 0 -16px; + overflow-x: scroll; + overflow-y: hidden; + -webkit-overflow-scrolling: touch +} + +.van-sku-row__scroller::-webkit-scrollbar { + display: none +} + +.van-sku-row__row { + display: -webkit-inline-box; + display: -webkit-inline-flex; + display: inline-flex; + margin-bottom: 4px; + padding: 0 16px +} + +.van-sku-row__indicator { + width: 40px; + height: 4px; + background: #ebedf0; + border-radius: 2px +} + +.van-sku-row__indicator-wrapper { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-box-pack: center; + -webkit-justify-content: center; + justify-content: center; + padding-bottom: 16px +} + +.van-sku-row__indicator-slider { + width: 50%; + height: 100%; + background-color: #ee0a24; + border-radius: 2px +} + +.van-sku-stepper-stock { + padding: 12px 16px; + overflow: hidden; + line-height: 30px +} + +.van-sku__stepper { + float: right; + padding-left: 4px +} + +.van-sku__stepper-title { + float: left +} + +.van-sku__stepper-quota { + float: right; + color: #ee0a24; + font-size: 12px +} + +.van-sku__stock { + display: inline-block; + margin-right: 8px; + color: #969799; + font-size: 12px +} + +.van-sku__stock-num--highlight { + color: #ee0a24 +} + +.van-sku-messages { + padding-bottom: 32px +} + +.van-sku-messages__image-cell .van-cell__title { + max-width: 6.2em; + margin-right: 12px; + color: #646566; + text-align: left; + word-wrap: break-word +} + +.van-sku-messages__image-cell .van-cell__value { + overflow: visible; + text-align: left +} + +.van-sku-messages__image-cell-label { + color: #969799; + font-size: 12px; + line-height: 18px +} + +.van-sku-actions { + display: -webkit-box; + display: -webkit-flex; + display: flex; + -webkit-flex-shrink: 0; + flex-shrink: 0; + padding: 8px 16px +} + +.van-sku-actions .van-button { + height: 40px; + font-weight: 500; + font-size: 14px; + border: none; + border-radius: 0 +} + +.van-sku-actions .van-button:first-of-type { + border-top-left-radius: 20px; + border-bottom-left-radius: 20px +} + +.van-sku-actions .van-button:last-of-type { + border-top-right-radius: 20px; + border-bottom-right-radius: 20px +} + +.van-sku-actions .van-button--warning { + background: -webkit-linear-gradient(left,#ffd01e,#ff8917); + background: linear-gradient(to right,#ffd01e,#ff8917) +} + +.van-sku-actions .van-button--danger { + background: -webkit-linear-gradient(left,#ff6034,#ee0a24); + background: linear-gradient(to right,#ff6034,#ee0a24) +} + +.van-slider { + position: relative; + width: 100%; + height: 2px; + background-color: #ebedf0; + border-radius: 999px; + cursor: pointer +} + +.van-slider::before { + position: absolute; + top: -8px; + right: 0; + bottom: -8px; + left: 0; + content: '' +} + +.van-slider__bar { + position: relative; + width: 100%; + height: 100%; + background-color: #1989fa; + border-radius: inherit; + -webkit-transition: all .2s; + transition: all .2s +} + +.van-slider__button { + width: 24px; + height: 24px; + background-color: #fff; + border-radius: 50%; + box-shadow: 0 1px 2px rgba(0,0,0,.5) +} + +.van-slider__button-wrapper,.van-slider__button-wrapper-right { + position: absolute; + top: 50%; + right: 0; + -webkit-transform: translate3d(50%,-50%,0); + transform: translate3d(50%,-50%,0); + cursor: grab +} + +.van-slider__button-wrapper-left { + position: absolute; + top: 50%; + left: 0; + -webkit-transform: translate3d(-50%,-50%,0); + transform: translate3d(-50%,-50%,0); + cursor: grab +} + +.van-slider--disabled { + cursor: not-allowed; + opacity: .5 +} + +.van-slider--disabled .van-slider__button-wrapper,.van-slider--disabled .van-slider__button-wrapper-left,.van-slider--disabled .van-slider__button-wrapper-right { + cursor: not-allowed +} + +.van-slider--vertical { + display: inline-block; + width: 2px; + height: 100% +} + +.van-slider--vertical .van-slider__button-wrapper,.van-slider--vertical .van-slider__button-wrapper-right { + top: auto; + right: 50%; + bottom: 0; + -webkit-transform: translate3d(50%,50%,0); + transform: translate3d(50%,50%,0) +} + +.van-slider--vertical .van-slider__button-wrapper-left { + top: 0; + right: 50%; + left: auto; + -webkit-transform: translate3d(50%,-50%,0); + transform: translate3d(50%,-50%,0) +} + +.van-slider--vertical::before { + top: 0; + right: -8px; + bottom: 0; + left: -8px +} + +.van-steps { + overflow: hidden; + background-color: #fff +} + +.van-steps--horizontal { + padding: 10px 10px 0 +} + +.van-steps--horizontal .van-steps__items { + position: relative; + display: -webkit-box; + display: -webkit-flex; + display: flex; + margin: 0 0 10px; + padding-bottom: 22px +} + +.van-steps--vertical { + padding: 0 0 0 32px +} + +.van-swipe-cell { + position: relative; + overflow: hidden; + cursor: grab +} + +.van-swipe-cell__wrapper { + -webkit-transition-timing-function: cubic-bezier(.18,.89,.32,1); + transition-timing-function: cubic-bezier(.18,.89,.32,1); + -webkit-transition-property: -webkit-transform; + transition-property: -webkit-transform; + transition-property: transform; + transition-property: transform,-webkit-transform +} + +.van-swipe-cell__left,.van-swipe-cell__right { + position: absolute; + top: 0; + height: 100% +} + +.van-swipe-cell__left { + left: 0; + -webkit-transform: translate3d(-100%,0,0); + transform: translate3d(-100%,0,0) +} + +.van-swipe-cell__right { + right: 0; + -webkit-transform: translate3d(100%,0,0); + transform: translate3d(100%,0,0) +} + +.van-tabbar { + z-index: 1; + display: -webkit-box; + display: -webkit-flex; + display: flex; + box-sizing: content-box; + width: 100%; + height: 50px; + padding-bottom: constant(safe-area-inset-bottom); + padding-bottom: env(safe-area-inset-bottom); + background-color: #fff +} + +.van-tabbar--fixed { + position: fixed; + bottom: 0; + left: 0 +} + +.van-tabbar--unfit { + padding-bottom: 0 +} diff --git a/src/main/resources/static/assets/platform/plugins/vant/vant.js b/src/main/resources/static/assets/platform/plugins/vant/vant.js new file mode 100644 index 0000000..3eb2e22 --- /dev/null +++ b/src/main/resources/static/assets/platform/plugins/vant/vant.js @@ -0,0 +1,17358 @@ +!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 r = e[n] = { + i: n, + l: !1, + exports: {} + }; + return t[n].call(r.exports, r, r.exports, i), + r.l = !0, + r.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 r in t) + i.d(n, r, function(e) { + return t[e] + } + .bind(null, r)); + 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 = 12) + }([function(t, e, i) { + "use strict"; + i.d(e, "b", (function() { + return r + } + )), + i.d(e, "h", (function() { + return s + } + )), + 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(4) + , r = "undefined" != typeof window + , s = 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 = 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 r = ["attrs", "props", "domProps"] + , s = ["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 !== r.indexOf(i)) + t[i] = n({}, t[i], e[i]); + else if (-1 !== s.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 r + } + )), + i.d(e, "b", (function() { + return s + } + )); + var n = /-(\w)/g; + function r(t) { + return t.replace(n, (function(t, e) { + return e.toUpperCase() + } + )) + } + function s(t, e) { + void 0 === e && (e = 2); + for (var i = t + ""; i.length < e; ) + i = "0" + i; + return i + } + } + , 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) + , r = Date.now(); + var s = n.h ? t : window + , o = s.requestAnimationFrame || function(t) { + var e = Date.now() + , i = Math.max(0, 16 - (e - r)) + , n = setTimeout(t, i); + return r = e + i, + n + } + , a = s.cancelAnimationFrame || s.clearTimeout; + function l(t) { + return o.call(s, t) + } + function c(t) { + l((function() { + l(t) + } + )) + } + function u(t) { + a.call(s, t) + } + } + ).call(this, i(11)) + } + , function(e, i) { + e.exports = t + } + , function(t, e, i) { + "use strict"; + function n(t) { + return /^\d+(\.\d+)?$/.test(t) + } + function r(t) { + return Number.isNaN ? Number.isNaN(t) : t != t + } + i.d(e, "b", (function() { + return n + } + )), + i.d(e, "a", (function() { + return r + } + )) + } + , function(t, e, i) { + "use strict"; + i.d(e, "a", (function() { + return o + } + )), + i.d(e, "b", (function() { + return l + } + )); + var n, r = i(0), s = i(5); + function o(t) { + if (Object(r.c)(t)) + return t = String(t), + Object(s.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 (r.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(4) + , r = i.n(n) + , s = 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(s.c)(n) && (o.call(t, i) && Object(s.f)(n) ? t[i] = a(Object(t[i]), e[i]) : t[i] = n) + }(t, e, i) + } + )), + t + } + var l = r.a.prototype + , c = r.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() { + 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) + } + function r(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 s(t) { + if ("[object Window]" !== t.toString()) { + var e = t.ownerDocument; + return e && e.defaultView || window + } + return t + } + function o(t) { + var e = s(t); + return { + scrollLeft: e.pageXOffset, + scrollTop: e.pageYOffset + } + } + function a(t) { + return t instanceof s(t).Element || t instanceof Element + } + function l(t) { + return t instanceof s(t).HTMLElement || t instanceof HTMLElement + } + function c(t) { + return t ? (t.nodeName || "").toLowerCase() : null + } + function u(t) { + return ((a(t) ? t.ownerDocument : t.document) || window.document).documentElement + } + function h(t) { + return s(t).getComputedStyle(t) + } + function d(t) { + var e = h(t) + , i = e.overflow + , n = e.overflowX + , r = e.overflowY; + return /auto|scroll|overlay|hidden/.test(i + r + n) + } + function f(t, e, i) { + void 0 === i && (i = !1); + var n, a, h = u(e), f = r(t), p = l(e), m = { + scrollLeft: 0, + scrollTop: 0 + }, v = { + x: 0, + y: 0 + }; + return (p || !p && !i) && (("body" !== c(e) || d(h)) && (m = (n = e) !== s(n) && l(n) ? { + scrollLeft: (a = n).scrollLeft, + scrollTop: a.scrollTop + } : o(n)), + l(e) ? ((v = r(e)).x += e.clientLeft, + v.y += e.clientTop) : h && (v.x = function(t) { + return r(u(t)).left + o(t).scrollLeft + }(h))), + { + x: f.left + m.scrollLeft - v.x, + y: f.top + m.scrollTop - v.y, + width: f.width, + height: f.height + } + } + function p(t) { + return "html" === c(t) ? t : t.assignedSlot || t.parentNode || t.host || u(t) + } + function m(t, e) { + void 0 === e && (e = []); + var i = function t(e) { + return ["html", "body", "#document"].indexOf(c(e)) >= 0 ? e.ownerDocument.body : l(e) && d(e) ? e : t(p(e)) + }(t) + , n = "body" === c(i) + , r = s(i) + , o = n ? [r].concat(r.visualViewport || [], d(i) ? i : []) : i + , a = e.concat(o); + return n ? a : a.concat(m(p(o))) + } + function v(t) { + return ["table", "td", "th"].indexOf(c(t)) >= 0 + } + function g(t) { + if (!l(t) || "fixed" === h(t).position) + return null; + var e = t.offsetParent; + if (e) { + var i = u(e); + if ("body" === c(e) && "static" === h(e).position && "static" !== h(i).position) + return i + } + return e + } + function b(t) { + for (var e = s(t), i = g(t); i && v(i) && "static" === h(i).position; ) + i = g(i); + return i && "body" === c(i) && "static" === h(i).position ? e : i || function(t) { + for (var e = p(t); l(e) && ["html", "body"].indexOf(c(e)) < 0; ) { + var i = h(e); + if ("none" !== i.transform || "none" !== i.perspective || i.willChange && "auto" !== i.willChange) + return e; + e = e.parentNode + } + return null + }(t) || e + } + Object.defineProperty(e, "__esModule", { + value: !0 + }); + var y = "top" + , S = "right" + , k = "left" + , x = [].concat([y, "bottom", S, k], ["auto"]).reduce((function(t, e) { + return t.concat([e, e + "-start", e + "-end"]) + } + ), []) + , w = ["beforeRead", "read", "afterRead", "beforeMain", "main", "afterMain", "beforeWrite", "write", "afterWrite"]; + function C(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(r) { + i.add(r.name), + [].concat(r.requires || [], r.requiresIfExists || []).forEach((function(n) { + if (!i.has(n)) { + var r = e.get(n); + r && t(r) + } + } + )), + n.push(r) + }(t) + } + )), + n + } + function O(t) { + return t.split("-")[0] + } + var T = { + placement: "bottom", + modifiers: [], + strategy: "absolute" + }; + function $() { + 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 B(t) { + void 0 === t && (t = {}); + var e = t + , i = e.defaultModifiers + , r = void 0 === i ? [] : i + , s = e.defaultOptions + , o = void 0 === s ? T : s; + return function(t, e, i) { + void 0 === i && (i = o); + var s, l, c = { + placement: "bottom", + orderedModifiers: [], + options: n(n({}, T), o), + modifiersData: {}, + elements: { + reference: t, + popper: e + }, + attributes: {}, + styles: {} + }, u = [], h = !1, d = { + state: c, + setOptions: function(i) { + p(), + c.options = n(n(n({}, o), c.options), i), + c.scrollParents = { + reference: a(t) ? m(t) : t.contextElement ? m(t.contextElement) : [], + popper: m(e) + }; + var s = function(t) { + var e = C(t); + return w.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(n(n({}, i), e), {}, { + options: n(n({}, i.options), e.options), + data: n(n({}, i.data), e.data) + }) : e, + t + } + ), {}); + return Object.keys(e).map((function(t) { + return e[t] + } + )) + }([].concat(r, c.options.modifiers))); + return c.orderedModifiers = s.filter((function(t) { + return t.enabled + } + )), + c.orderedModifiers.forEach((function(t) { + var e = t.name + , i = t.options + , n = void 0 === i ? {} : i + , r = t.effect; + if ("function" == typeof r) { + var s = r({ + state: c, + name: e, + instance: d, + options: n + }); + u.push(s || function() {} + ) + } + } + )), + d.update() + }, + forceUpdate: function() { + if (!h) { + var t = c.elements + , e = t.reference + , i = t.popper; + if ($(e, i)) { + var r; + c.rects = { + reference: f(e, b(i), "fixed" === c.options.strategy), + popper: (r = i, + { + x: r.offsetLeft, + y: r.offsetTop, + width: r.offsetWidth, + height: r.offsetHeight + }) + }, + c.reset = !1, + c.placement = c.options.placement, + c.orderedModifiers.forEach((function(t) { + return c.modifiersData[t.name] = n({}, t.data) + } + )); + for (var s = 0; s < c.orderedModifiers.length; s++) + if (!0 !== c.reset) { + var o = c.orderedModifiers[s] + , a = o.fn + , l = o.options + , u = void 0 === l ? {} : l + , p = o.name; + "function" == typeof a && (c = a({ + state: c, + options: u, + name: p, + instance: d + }) || c) + } else + c.reset = !1, + s = -1 + } + } + }, + update: (s = function() { + return new Promise((function(t) { + d.forceUpdate(), + t(c) + } + )) + } + , + function() { + return l || (l = new Promise((function(t) { + Promise.resolve().then((function() { + l = void 0, + t(s()) + } + )) + } + ))), + l + } + ), + destroy: function() { + p(), + h = !0 + } + }; + if (!$(t, e)) + return d; + function p() { + u.forEach((function(t) { + return t() + } + )), + u = [] + } + return d.setOptions(i).then((function(t) { + !h && i.onFirstUpdate && i.onFirstUpdate(t) + } + )), + d + } + } + var I = { + passive: !0 + }; + var D = { + top: "auto", + right: "auto", + bottom: "auto", + left: "auto" + }; + function E(t) { + var e, i = t.popper, r = t.popperRect, o = t.placement, a = t.offsets, l = t.position, c = t.gpuAcceleration, h = t.adaptive, d = function(t) { + var e = t.x + , i = t.y + , n = window.devicePixelRatio || 1; + return { + x: Math.round(e * n) / n || 0, + y: Math.round(i * n) / n || 0 + } + }(a), f = d.x, p = d.y, m = a.hasOwnProperty("x"), v = a.hasOwnProperty("y"), g = k, x = y, w = window; + if (h) { + var C = b(i); + C === s(i) && (C = u(i)), + o === y && (x = "bottom", + p -= C.clientHeight - r.height, + p *= c ? 1 : -1), + o === k && (g = S, + f -= C.clientWidth - r.width, + f *= c ? 1 : -1) + } + var O, T = n({ + position: l + }, h && D); + return n(n({}, T), {}, c ? ((O = {})[x] = v ? "0" : "", + O[g] = m ? "0" : "", + O.transform = (w.devicePixelRatio || 1) < 2 ? "translate(" + f + "px, " + p + "px)" : "translate3d(" + f + "px, " + p + "px, 0)", + O) : ((e = {})[x] = v ? p + "px" : "", + e[g] = m ? f + "px" : "", + e.transform = "", + e)) + } + var j = B({ + defaultModifiers: [{ + name: "eventListeners", + enabled: !0, + phase: "write", + fn: function() {}, + effect: function(t) { + var e = t.state + , i = t.instance + , n = t.options + , r = n.scroll + , o = void 0 === r || r + , a = n.resize + , l = void 0 === a || a + , c = s(e.elements.popper) + , u = [].concat(e.scrollParents.reference, e.scrollParents.popper); + return o && u.forEach((function(t) { + t.addEventListener("scroll", i.update, I) + } + )), + l && c.addEventListener("resize", i.update, I), + function() { + o && u.forEach((function(t) { + t.removeEventListener("scroll", i.update, I) + } + )), + l && c.removeEventListener("resize", i.update, I) + } + }, + 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, r = t.placement, s = r ? O(r) : null, o = r ? function(t) { + return t.split("-")[1] + }(r) : null, a = i.x + i.width / 2 - n.width / 2, l = i.y + i.height / 2 - n.height / 2; + switch (s) { + case y: + e = { + x: a, + y: i.y - n.height + }; + break; + case "bottom": + e = { + x: a, + y: i.y + i.height + }; + break; + case S: + e = { + x: i.x + i.width, + y: l + }; + break; + case k: + e = { + x: i.x - n.width, + y: l + }; + break; + default: + e = { + x: i.x, + y: i.y + } + } + var c = s ? function(t) { + return ["top", "bottom"].indexOf(t) >= 0 ? "x" : "y" + }(s) : null; + if (null != c) { + var u = "y" === c ? "height" : "width"; + switch (o) { + case "start": + e[c] = Math.floor(e[c]) - Math.floor(i[u] / 2 - n[u] / 2); + break; + case "end": + e[c] = Math.floor(e[c]) + Math.ceil(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 + , r = i.gpuAcceleration + , s = void 0 === r || r + , o = i.adaptive + , a = void 0 === o || o + , l = { + placement: O(e.placement), + popper: e.elements.popper, + popperRect: e.rects.popper, + gpuAcceleration: s + }; + null != e.modifiersData.popperOffsets && (e.styles.popper = n(n({}, e.styles.popper), E(n(n({}, l), {}, { + offsets: e.modifiersData.popperOffsets, + position: e.options.strategy, + adaptive: a + })))), + null != e.modifiersData.arrow && (e.styles.arrow = n(n({}, e.styles.arrow), E(n(n({}, l), {}, { + offsets: e.modifiersData.arrow, + position: "absolute", + adaptive: !1 + })))), + e.attributes.popper = n(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] || {} + , r = e.attributes[t] || {} + , s = e.elements[t]; + l(s) && c(s) && (n(s.style, i), + Object.keys(r).forEach((function(t) { + var e = r[t]; + !1 === e ? s.removeAttribute(t) : s.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.elements.arrow && n(e.elements.arrow.style, i.arrow), + function() { + Object.keys(e.elements).forEach((function(t) { + var r = e.elements[t] + , s = e.attributes[t] || {} + , o = Object.keys(e.styles.hasOwnProperty(t) ? e.styles[t] : i[t]).reduce((function(t, e) { + return t[e] = "", + t + } + ), {}); + l(r) && c(r) && (n(r.style, o), + Object.keys(s).forEach((function(t) { + r.removeAttribute(t) + } + ))) + } + )) + } + }, + requires: ["computeStyles"] + }] + }); + var P = { + name: "offset", + enabled: !0, + phase: "main", + requires: ["popperOffsets"], + fn: function(t) { + var e = t.state + , i = t.options + , r = t.name + , s = i.offset + , o = void 0 === s ? [0, 0] : s + , a = x.reduce((function(t, i) { + return t[i] = function(t, e, i) { + var r = O(t) + , s = [k, y].indexOf(r) >= 0 ? -1 : 1 + , o = "function" == typeof i ? i(n(n({}, e), {}, { + placement: t + })) : i + , a = o[0] + , l = o[1]; + return a = a || 0, + l = (l || 0) * s, + [k, S].indexOf(r) >= 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[r] = a + } + }; + e.createPopper = j, + e.offsetModifier = P + } + , 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, r) { + return n + (i[r] ? t(e, r) : "") + } + ), "") : "" + }(e, i) + } + } + i.d(e, "a", (function() { + return d + } + )); + var r = i(0) + , s = 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(4); + function a(t) { + var e = this.name; + t.component(e, this), + t.component(Object(s.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(r.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(s.a)(t) + "."; + return function(t) { + for (var i = u.a.messages(), n = Object(r.a)(i, e + t) || Object(r.a)(i, t), s = arguments.length, o = new Array(s > 1 ? s - 1 : 0), a = 1; a < s; a++) + o[a - 1] = arguments[a]; + return Object(r.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 + * Released under the MIT License. + */ + t.exports = function() { + "use strict"; + function t(t) { + t = t || {}; + var n = arguments.length + , r = 0; + if (1 === n) + return t; + for (; ++r < n; ) { + var s = arguments[r]; + d(t) && (t = s), + i(s) && e(t, s) + } + return t + } + function e(e, r) { + for (var s in f(e, r), + r) + if ("__proto__" !== s && n(r, s)) { + var o = r[s]; + i(o) ? ("undefined" === m(e[s]) && "function" === m(o) && (e[s] = o), + e[s] = t(e[s] || {}, o)) : e[s] = 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 r(t, e) { + if (t.length) { + var i = t.indexOf(e); + return i > -1 ? t.splice(i, 1) : void 0 + } + } + function s(t, e) { + if ("IMG" === t.tagName && t.getAttribute("data-srcset")) { + var i = t.getAttribute("data-srcset") + , n = [] + , r = t.parentNode.offsetWidth * e + , s = void 0 + , o = void 0 + , a = void 0; + (i = i.trim().split(",")).map((function(t) { + t = t.trim(), + -1 === (s = t.lastIndexOf(" ")) ? (o = t, + a = 999998) : (o = t.substr(0, s), + a = parseInt(t.substr(s + 1, t.length - s - 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] >= r) { + l = c[1]; + break + } + return l + } + } + function o(t, e) { + for (var i = void 0, n = 0, r = t.length; n < r; 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), r = arguments.length, s = 0; ++s < r; ) + for (var o = Object(arguments[s]), 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 + , r = e.error + , s = 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 = r, + this.loading = s, + 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 + , r = this.src; + this.src = e, + this.loading = i, + this.error = n, + this.filter(), + r !== this.src && (this.attempt = 0, + this.initState()) + } + }, { + key: "getRect", + value: function() { + this.rect = this.el.getBoundingClientRect() + } + }, { + key: "checkInView", + value: function() { + return this.getRect(), + this.rect.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 + }() + , D = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" + , E = ["scroll", "wheel", "mousewheel", "resize", "animationend", "transitionend", "touchmove"] + , j = { + rootMargin: "0px", + threshold: 0 + } + , P = function(t) { + return function() { + function e(t) { + var i = t.preLoad + , n = t.error + , r = t.throttleWait + , s = 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: r || 200, + preLoad: i || 1.3, + preLoadTop: s || 0, + error: n || D, + loading: l || D, + attempt: c || 3, + scale: f || x(f), + ListenEvents: p || E, + hasbind: !1, + supportWebp: a(), + filter: m || {}, + adapter: v || {}, + observer: !!g, + observerOptions: b || j + }, + this._initEvent(), + this.lazyLoadHandler = function(t, e) { + var i = null + , n = 0; + return function() { + if (!i) { + var r = Date.now() - n + , s = this + , o = arguments + , a = function() { + n = Date.now(), + i = !1, + t.apply(s, o) + }; + r >= 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 r = this; + if (function(t, e) { + for (var i = !1, n = 0, r = t.length; n < r; 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 = s(e, r.options.scale) || a, + r._observer && r._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: r._elRenderer.bind(r), + options: r.options + }); + r.ListenerQueue.push(h), + g && (r._addListenerTarget(window), + r._addListenerTarget(u)), + r.lazyLoadHandler(), + t.nextTick((function() { + return r.lazyLoadHandler() + } + )) + } + )) + } + }, { + key: "update", + value: function(e, i) { + var n = this + , r = this._valueFormatter(i.value) + , a = r.src + , l = r.loading + , c = r.error; + a = s(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), + r(this.ListenerQueue, e) && e.destroy()) + } + } + }, { + key: "removeComponent", + value: function(t) { + t && (r(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 ? r(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 + , r = t.bindType + , s = void 0; + switch (e) { + case "loading": + s = t.loading; + break; + case "error": + s = t.error; + break; + default: + s = t.src + } + if (r ? n.style[r] = 'url("' + s + '")' : n.getAttribute("src") !== s && n.setAttribute("src", s), + 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 M({ + 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(), + r(this._queue, n)) + } + }]), + t + }() + , A = { + selector: "img" + } + , M = function() { + function t(e) { + var i = e.el + , n = e.binding + , r = e.vnode + , s = e.lazy; + u(this, t), + this.el = null, + this.vnode = r, + this.binding = n, + this.options = {}, + this.lazy = s, + 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({}, A, 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) + , r = new N({ + lazy: n + }) + , s = "2" === t.version.split(".")[0]; + t.prototype.$Lazyload = n, + e.lazyComponent && t.component("lazy-component", L(n)), + s ? (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: r.bind.bind(r), + update: r.update.bind(r), + unbind: r.unbind.bind(r) + })) : (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) { + r.update(this.el, { + modifiers: this.modifiers || {}, + arg: this.arg, + value: t, + oldValue: e + }, { + context: this.vm + }) + }, + unbind: function() { + r.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 Cu + } + )), + i.d(e, "version", (function() { + return wu + } + )), + i.d(e, "ActionSheet", (function() { + return kt + } + )), + i.d(e, "AddressEdit", (function() { + return hi + } + )), + i.d(e, "AddressList", (function() { + return Li + } + )), + i.d(e, "Area", (function() { + return Yt + } + )), + i.d(e, "Badge", (function() { + return Fi + } + )), + i.d(e, "Button", (function() { + return Be + } + )), + i.d(e, "Calendar", (function() { + return nn + } + )), + i.d(e, "Card", (function() { + return fn + } + )), + i.d(e, "Cascader", (function() { + return Vn + } + )), + i.d(e, "Cell", (function() { + return ne + } + )), + i.d(e, "CellGroup", (function() { + return qn + } + )), + i.d(e, "Checkbox", (function() { + return Un + } + )), + i.d(e, "CheckboxGroup", (function() { + return Gn + } + )), + i.d(e, "Circle", (function() { + return nr + } + )), + i.d(e, "Col", (function() { + return ar + } + )), + i.d(e, "Collapse", (function() { + return hr + } + )), + i.d(e, "CollapseItem", (function() { + return vr + } + )), + i.d(e, "ContactCard", (function() { + return xr + } + )), + i.d(e, "ContactEdit", (function() { + return Br + } + )), + i.d(e, "ContactList", (function() { + return Lr + } + )), + i.d(e, "CountDown", (function() { + return Fr + } + )), + i.d(e, "Coupon", (function() { + return Kr + } + )), + i.d(e, "CouponCell", (function() { + return Zr + } + )), + i.d(e, "CouponList", (function() { + return ns + } + )), + i.d(e, "DatetimePicker", (function() { + return ms + } + )), + i.d(e, "Dialog", (function() { + return Ue + } + )), + i.d(e, "Divider", (function() { + return Ss + } + )), + i.d(e, "DropdownItem", (function() { + return Cs + } + )), + i.d(e, "DropdownMenu", (function() { + return Is + } + )), + i.d(e, "Empty", (function() { + return As + } + )), + i.d(e, "Field", (function() { + return ce + } + )), + i.d(e, "Form", (function() { + return Vs + } + )), + i.d(e, "GoodsAction", (function() { + return Ae + } + )), + i.d(e, "GoodsActionButton", (function() { + return Ve + } + )), + i.d(e, "GoodsActionIcon", (function() { + return Ws + } + )), + i.d(e, "Grid", (function() { + return Ys + } + )), + i.d(e, "GridItem", (function() { + return Zs + } + )), + i.d(e, "Icon", (function() { + return st + } + )), + i.d(e, "Image", (function() { + return an + } + )), + i.d(e, "ImagePreview", (function() { + return go + } + )), + i.d(e, "IndexAnchor", (function() { + return ko + } + )), + i.d(e, "IndexBar", (function() { + return Oo + } + )), + i.d(e, "Info", (function() { + return J + } + )), + i.d(e, "Lazyload", (function() { + return $o + } + )), + i.d(e, "List", (function() { + return jo + } + )), + i.d(e, "Loading", (function() { + return vt + } + )), + i.d(e, "Locale", (function() { + return Po.a + } + )), + i.d(e, "NavBar", (function() { + return Mo + } + )), + i.d(e, "NoticeBar", (function() { + return Ro + } + )), + i.d(e, "Notify", (function() { + return Qo + } + )), + i.d(e, "NumberKeyboard", (function() { + return oa + } + )), + i.d(e, "Overlay", (function() { + return $ + } + )), + i.d(e, "Pagination", (function() { + return da + } + )), + i.d(e, "Panel", (function() { + return ga + } + )), + i.d(e, "PasswordInput", (function() { + return xa + } + )), + i.d(e, "Picker", (function() { + return _t + } + )), + i.d(e, "Popover", (function() { + return $a + } + )), + i.d(e, "Popup", (function() { + return ct + } + )), + i.d(e, "Progress", (function() { + return Ea + } + )), + i.d(e, "PullRefresh", (function() { + return Ma + } + )), + i.d(e, "Radio", (function() { + return wi + } + )), + i.d(e, "RadioGroup", (function() { + return mi + } + )), + i.d(e, "Rate", (function() { + return Ra + } + )), + i.d(e, "Row", (function() { + return qa + } + )), + i.d(e, "Search", (function() { + return Ga + } + )), + i.d(e, "ShareSheet", (function() { + return nl + } + )), + i.d(e, "Sidebar", (function() { + return al + } + )), + i.d(e, "SidebarItem", (function() { + return hl + } + )), + i.d(e, "Skeleton", (function() { + return vl + } + )), + i.d(e, "Sku", (function() { + return Nc + } + )), + i.d(e, "Slider", (function() { + return Vc + } + )), + i.d(e, "Step", (function() { + return Wc + } + )), + i.d(e, "Stepper", (function() { + return Ul + } + )), + i.d(e, "Steps", (function() { + return Yc + } + )), + i.d(e, "Sticky", (function() { + return $n + } + )), + i.d(e, "SubmitBar", (function() { + return tu + } + )), + i.d(e, "Swipe", (function() { + return so + } + )), + i.d(e, "SwipeCell", (function() { + return ru + } + )), + i.d(e, "SwipeItem", (function() { + return co + } + )), + i.d(e, "Switch", (function() { + return si + } + )), + i.d(e, "SwitchCell", (function() { + return cu + } + )), + i.d(e, "Tab", (function() { + return gn + } + )), + i.d(e, "Tabbar", (function() { + return fu + } + )), + i.d(e, "TabbarItem", (function() { + return gu + } + )), + i.d(e, "Tabs", (function() { + return Nn + } + )), + i.d(e, "Tag", (function() { + return Si + } + )), + i.d(e, "Toast", (function() { + return we + } + )), + i.d(e, "TreeSelect", (function() { + return xu + } + )), + i.d(e, "Uploader", (function() { + return cc + } + )); + var r = i(1) + , s = i.n(r) + , o = i(4) + , a = i.n(o) + , l = i(9) + , 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), r = 2; r < i; r++) + n[r - 2] = arguments[r]; + var s = t.listeners[e]; + s && (Array.isArray(s) ? s.forEach((function(t) { + t.apply(void 0, n) + } + )) : s.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] + } + } + , 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, r) { + 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", s()([{ + directives: [{ + name: "show", + value: e.show + }], + style: o, + class: [C(), e.className], + on: { + touchmove: e.lockScroll ? O : m.i + } + }, h(r, !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 D(t) { + var e = p.find(t); + if (e) { + var i = t.$el + , r = e.config + , s = e.overlay; + i && i.parentNode && i.parentNode.insertBefore(s.$el, i), + n(s, I, r, { + show: !0 + }) + } + } + function E(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 + }) + } + D(t) + } + function j(t) { + var e = p.find(t); + e && (e.overlay.show = !1) + } + function P(t) { + return t === window + } + var L = /scroll|auto/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 A(t) { + var e = "scrollTop"in t ? t.scrollTop : t.pageYOffset; + return Math.max(e, 0) + } + function M(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 F(t) { + M(window, t), + M(document.body, t) + } + function V(t, e) { + if (P(t)) + return 0; + var i = e ? A(e) : z(); + return t.getBoundingClientRect().top + i + } + var R = { + 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, i, n = t.touches[0]; + this.deltaX = n.clientX < 0 ? 0 : n.clientX - this.startX, + this.deltaY = n.clientY - this.startY, + this.offsetX = Math.abs(this.deltaX), + this.offsetY = Math.abs(this.deltaY), + this.direction = this.direction || (e = this.offsetX, + i = this.offsetY, + e > i && e > 10 ? "horizontal" : i > e && i > 10 ? "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, r = this.getContainer, s = i ? this.$refs[i] : this.$el; + r ? t = "string" == typeof (e = r) ? document.querySelector(e) : e() : this.$parent && (t = this.$parent.$el), + t && t !== s.parentNode && t.appendChild(s), + 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)) + } + } + } + , K = { + 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 U(t) { + return void 0 === t && (t = {}), + { + mixins: [R, q, H({ + afterPortal: function() { + this.overlay && D() + } + })], + provide: function() { + return { + vanPopup: this + } + }, + props: K, + 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), + 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 && (j(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 + , r = i.offsetHeight + , s = i.scrollTop + , o = "11"; + 0 === s ? o = r >= n ? "00" : "01" : s + r >= 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 ? E(t, { + zIndex: p.zIndex++, + duration: t.duration, + className: t.overlayClass, + customStyle: t.overlayStyle + }) : j(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 r = e.dot + , o = e.info + , a = Object(m.c)(o) && "" !== o; + if (r || a) + return t("div", s()([{ + class: G({ + dot: r + }) + }, h(n, !0)]), [r ? "" : 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 rt(t, e, i, n) { + var r, o = function(t) { + return t && nt[t] || t + }(e.name), a = function(t) { + return !!t && -1 !== t.indexOf("/") + }(o); + return t(e.tag, s()([{ + 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 != (r = e.badge) ? r : e.info + } + })]) + } + rt.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 st = et(rt) + , ot = Object(l.a)("popup") + , at = ot[0] + , lt = ot[1] + , ct = at({ + mixins: [U()], + 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 + , r = this.duration + , s = "center" === n + , o = this.transition || (s ? "van-fade" : "van-popup-slide-" + n) + , a = {}; + if (Object(m.c)(r)) { + var l = s ? "animationDuration" : "transitionDuration"; + a[l] = r + "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(st, { + 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, r = { + fontSize: Object(Y.a)(e.textSize), + color: null != (n = e.textColor) ? n : e.color + }; + return t("span", { + class: dt("text"), + style: r + }, [i.default()]) + } + } + function mt(t, e, i, n) { + var r = e.color + , o = e.size + , a = e.type + , l = { + color: r + }; + if (o) { + var c = Object(Y.a)(o); + l.width = c, + l.height = c + } + return t("div", s()([{ + 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 r = e.title + , o = e.cancelText + , l = e.closeable; + function c() { + d(n, "input", !1), + d(n, "cancel") + } + return t(ct, s()([{ + 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 (r) + return t("div", { + class: yt("header") + }, [r, l && t(st, { + 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, r) { + var s = i.disabled + , o = i.loading + , l = i.callback; + return t("button", { + attrs: { + type: "button" + }, + class: [yt("item", { + disabled: s, + loading: o + }), i.className], + style: { + color: i.color + }, + on: { + click: function(t) { + t.stopPropagation(), + s || o || (l && l(i), + e.closeOnClickAction && d(n, "input", !1), + a.a.nextTick((function() { + d(n, "select", i, r) + } + ))) + } + } + }, [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({}, K, { + 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 Dt(t, e, i) { + return Math.min(Math.max(t, e), i) + } + function Et(t, e, i) { + var n = t.indexOf(e) + , r = ""; + return -1 === n ? t : "-" === e && 0 !== n ? t.slice(0, n) : ("." === e && t.match(/^(\.|-\.)/) && (r = n ? "-0" : "0"), + r + t.slice(0, n + 1) + t.slice(n).replace(i, "")) + } + function jt(t, e, i) { + void 0 === e && (e = !0), + void 0 === i && (i = !0), + t = e ? Et(t, ".", /\./g) : t.split(".")[0]; + var n = e ? /[^-0-9.]/g : /[^-0-9]/g; + return (t = i ? Et(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] + , At = Lt[1]; + function Mt(t) { + return Object(m.f)(t) && t.disabled + } + var zt = Nt({ + mixins: [R], + 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) + }, + destroyed: function() { + var t = this.$parent.children; + t && t.splice(t.indexOf(this), 1) + }, + 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 = function(t) { + var e = window.getComputedStyle(t) + , i = e.transform || e.webkitTransform + , n = i.slice(7, i.length - 1).split(", ")[5]; + return Number(n) + }(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 = Dt(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) + } + } + }, + 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 = Dt(t, 0, this.count); e < this.count; e++) + if (!Mt(this.options[e])) + return e; + for (var i = t - 1; i >= 0; i--) + if (!Mt(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 + , r = function() { + t !== i.currentIndex && (i.currentIndex = t, + e && i.$emit("change", t)) + }; + this.moving && n !== this.offset ? this.transitionEndTrigger = r : r(), + 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 Dt(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, r) { + var o, a = t.getOptionText(n), l = Mt(n), c = { + style: i, + attrs: { + role: "button", + tabindex: l ? -1 : 0 + }, + class: [At("item", { + disabled: l, + selected: r === t.currentIndex + })], + on: { + click: function() { + t.onClickItem(r) + } + } + }, u = { + class: "van-ellipsis", + domProps: (o = {}, + o[t.allowHtml ? "innerHTML" : "textContent"] = a, + o) + }; + return e("li", s()([{}, c]), [t.slots("option", n) || e("div", s()([{}, 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: [At(), this.className] + }, [t("ul", { + ref: "wrapper", + style: e, + class: At("wrapper"), + on: { + transitionend: this.onTransitionEnd + } + }, [this.genOptions()])]) + } + }) + , Ft = Object(l.a)("picker") + , Vt = Ft[0] + , Rt = Ft[1] + , Ht = Ft[2] + , _t = Vt({ + 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, r = null != (i = e.defaultIndex) ? i : +this.defaultIndex; n[r] && n[r].disabled; ) { + if (!(r < n.length - 1)) { + r = 0; + break + } + r++ + } + t.push({ + values: e.children, + className: e.className, + defaultIndex: r + }), + e = n[r] + } + 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", Rt("title")] + }, [this.title]) : void 0) + }, + genCancel: function() { + return (0, + this.$createElement)("button", { + attrs: { + type: "button" + }, + class: Rt("cancel"), + on: { + click: this.cancel + } + }, [this.slots("cancel") || this.cancelButtonText || Ht("cancel")]) + }, + genConfirm: function() { + return (0, + this.$createElement)("button", { + attrs: { + type: "button" + }, + class: Rt("confirm"), + on: { + click: this.confirm + } + }, [this.slots("confirm") || this.confirmButtonText || Ht("confirm")]) + }, + genToolbar: function() { + var t = this.$createElement; + if (this.showToolbar) + return t("div", { + class: Rt("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" + } + , r = { + height: i + "px" + } + , s = { + backgroundSize: "100% " + (i - e) / 2 + "px" + }; + return t("div", { + class: Rt("columns"), + style: r, + on: { + touchmove: k + } + }, [this.genColumnItems(), t("div", { + class: Rt("mask"), + style: s + }), t("div", { + class: ["van-hairline-unset--top-bottom", Rt("frame")], + style: n + })]) + }, + genColumnItems: function() { + var t = this + , e = this.$createElement; + return this.formattedColumns.map((function(i, n) { + var r; + return e(zt, { + attrs: { + readonly: t.readonly, + valueKey: t.valueKey, + allowHtml: t.allowHtml, + className: i.className, + itemHeight: t.itemPxHeight, + defaultIndex: null != (r = i.defaultIndex) ? r : +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: Rt() + }, ["top" === this.toolbarPosition ? this.genToolbar() : t(), this.loading ? t(vt, { + class: Rt("loading") + }) : t(), this.slots("columns-top"), this.genColumns(), this.slots("columns-bottom"), "bottom" === this.toolbarPosition ? this.genToolbar() : t()]) + } + }) + , Wt = Object(l.a)("area") + , qt = Wt[0] + , Kt = Wt[1]; + function Ut(t, e) { + var i = t.$slots + , n = t.$scopedSlots + , r = {}; + return e.forEach((function(t) { + n[t] ? r[t] = n[t] : i[t] && (r[t] = function() { + return i[t] + } + ) + } + )), + r + } + var Yt = qt({ + 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 r = ""; + "city" === t ? r = "000000".slice(2, 4) : "county" === t && (r = "000000".slice(4, 6)), + i.unshift({ + code: "" + e + r, + 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 r = 0; r < n.length; r++) + if (n[r].code.slice(0, i) === e) + return r; + 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(_t, { + ref: "picker", + class: Kt(), + 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: Ut(this, ["title", "columns-top", "columns-bottom"]), + on: n({}, e) + }) + } + }); + function Xt(t, e) { + var i = e.to + , n = e.url + , r = e.replace; + if (i && t) { + var s = t[r ? "replace" : "push"](i); + s && s.catch && s.catch((function(t) { + if (t && !function(t) { + return "NavigationDuplicated" === t.name || t.message && -1 !== t.message.indexOf("redundant navigation") + }(t)) + throw t + } + )) + } else + n && (r ? location.replace(n) : location.href = n) + } + function Qt(t) { + Xt(t.parent && t.parent.$router, t.props) + } + var Gt = { + url: String, + replace: Boolean, + to: [String, Object] + } + , Zt = { + 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 + } + } + , Jt = Object(l.a)("cell") + , te = Jt[0] + , ee = Jt[1]; + function ie(t, e, i, n) { + var r, 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: [ee("label"), e.labelClass] + }, [i.label ? i.label() : c]) + } + var g = null != (r = e.clickable) ? r : f + , b = { + clickable: g, + center: e.center, + required: e.required, + borderless: !e.border + }; + return a && (b[a] = a), + t("div", s()([{ + class: ee(b), + attrs: { + role: g ? "button" : null, + tabindex: g ? 0 : null + }, + on: { + click: function(t) { + d(n, "click", t), + Qt(n) + } + } + }, h(n)]), [i.icon ? i.icon() : o ? t(st, { + class: ee("left-icon"), + attrs: { + name: o, + classPrefix: e.iconPrefix + } + }) : void 0, function() { + if (p) + return t("div", { + class: [ee("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: [ee("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 r = e.arrowDirection; + return t(st, { + class: ee("right-icon"), + attrs: { + name: r ? "arrow-" + r : "arrow" + } + }) + } + }(), null == i.extra ? void 0 : i.extra()]) + } + ie.props = n({}, Zt, Gt); + var ne = te(ie); + var re = !m.h && /ios|iphone|ipad|ipod/.test(navigator.userAgent.toLowerCase()); + function se() { + re && F(z()) + } + var oe = Object(l.a)("field") + , ae = oe[0] + , le = oe[1] + , ce = ae({ + inheritAttrs: !1, + provide: function() { + return { + vanField: this + } + }, + inject: { + vanForm: { + default: null + } + }, + props: n({}, Zt, { + 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 = jt(t, n, n) + } + this.formatter && e === this.formatTrigger && (t = this.formatter(t)); + var r = this.$refs.input; + r && t !== r.value && (r.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.getProp("readonly") && this.blur() + }, + onBlur: function(t) { + this.focused = !1, + this.updateValue(this.value, "onBlur"), + this.$emit("blur", t), + this.validateWithTrigger("onBlur"), + se() + }, + 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) { + t.style.height = "auto"; + var e = t.scrollHeight; + if (Object(m.f)(this.autosize)) { + var i = this.autosize + , n = i.maxHeight + , r = i.minHeight; + n && (e = Math.min(e, n)), + r && (e = Math.max(e, r)) + } + e && (t.style.height = e + "px") + } + }, + genInput: function() { + var t = this.$createElement + , e = this.type + , i = this.getProp("disabled") + , r = this.getProp("readonly") + , o = this.slots("input") + , a = this.getProp("inputAlign"); + if (o) + return t("div", { + class: le("control", [a, "custom"]), + on: { + click: this.onClickInput + } + }, [o]); + var l = { + ref: "input", + class: le("control", a), + domProps: { + value: this.value + }, + attrs: n({}, this.$attrs, { + name: this.name, + disabled: i, + readonly: r, + placeholder: this.placeholder + }), + on: this.listeners, + directives: [{ + name: "model", + value: this.value + }] + }; + if ("textarea" === e) + return t("textarea", s()([{}, l])); + var c, u = e; + return "number" === e && (u = "text", + c = "decimal"), + "digit" === e && (u = "tel", + c = "numeric"), + t("input", s()([{ + attrs: { + type: u, + inputmode: c + } + }, l])) + }, + genLeftIcon: function() { + var t = this.$createElement; + if (this.slots("left-icon") || this.leftIcon) + return t("div", { + class: le("left-icon"), + on: { + click: this.onClickLeftIcon + } + }, [this.slots("left-icon") || t(st, { + 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: le("right-icon"), + on: { + click: this.onClickRightIcon + } + }, [e("right-icon") || t(st, { + 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: le("word-limit") + }, [t("span", { + class: le("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: le("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"), r = this.getProp("labelAlign"), s = { + icon: this.genLeftIcon + }, o = this.genLabel(); + o && (s.title = function() { + return o + } + ); + var a = this.slots("extra"); + return a && (s.extra = function() { + return a + } + ), + e(ne, { + 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: le("value"), + titleClass: [le("label", r), this.labelClass], + arrowDirection: this.arrowDirection + }, + scopedSlots: s, + class: le((t = { + error: this.showError, + disabled: n + }, + t["label-" + r] = r, + t["min-height"] = "textarea" === this.type && !this.autosize, + t)), + on: { + click: this.onClick + } + }, [e("div", { + class: le("body") + }, [this.genInput(), this.showClear && e(st, { + attrs: { + name: "clear" + }, + class: le("clear"), + on: { + touchstart: this.onClear + } + }), this.genRightIcon(), i("button") && e("div", { + class: le("button") + }, [i("button")])]), this.genWordLimit(), this.genMessage()]) + } + }) + , ue = 0; + var he = Object(l.a)("toast") + , de = he[0] + , fe = he[1] + , pe = de({ + mixins: [U()], + 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 ? (ue || document.body.classList.add("van-toast--unclickable"), + ue++) : --ue || 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 + , r = this.loadingType; + return e || "success" === i || "fail" === i ? t(st, { + class: fe("icon"), + attrs: { + classPrefix: n, + name: e || i + } + }) : "loading" === i ? t(vt, { + class: fe("loading"), + attrs: { + type: r + } + }) : 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: fe("text"), + domProps: { + innerHTML: i + } + }) : t("div", { + class: fe("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: [fe([this.position, (t = {}, + t[this.type] = !this.icon, + t)]), this.className], + on: { + click: this.onClick + } + }, [this.genIcon(), this.genMessage()])]) + } + }) + , me = { + 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 + } + , ve = {} + , ge = [] + , be = !1 + , ye = n({}, me); + function Se(t) { + return Object(m.f)(t) ? t : { + message: t + } + } + function ke() { + if (m.h) + return {}; + if (!(ge = ge.filter((function(t) { + return !t.$el.parentNode || (e = t.$el, + document.body.contains(e)); + var e + } + ))).length || be) { + var t = new (a.a.extend(pe))({ + el: document.createElement("div") + }); + t.$on("input", (function(e) { + t.value = e + } + )), + ge.push(t) + } + return ge[ge.length - 1] + } + function xe(t) { + void 0 === t && (t = {}); + var e = ke(); + return e.value && e.updateZIndex(), + t = Se(t), + (t = n({}, ye, ve[t.type || ye.type], t)).clear = function() { + e.value = !1, + t.onClose && (t.onClose(), + t.onClose = null), + be && !m.h && e.$on("closed", (function() { + clearTimeout(e.timer), + ge = ge.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; + xe[t] = (e = t, + function(t) { + return xe(n({ + type: e + }, Se(t))) + } + ) + } + )), + xe.clear = function(t) { + ge.length && (t ? (ge.forEach((function(t) { + t.clear() + } + )), + ge = []) : be ? ge.shift().clear() : ge[0].clear()) + } + , + xe.setDefaultOptions = function(t, e) { + "string" == typeof t ? ve[t] = e : n(ye, t) + } + , + xe.resetDefaultOptions = function(t) { + "string" == typeof t ? ve[t] = null : (ye = n({}, me), + ve = {}) + } + , + xe.allowMultiple = function(t) { + void 0 === t && (t = !0), + be = t + } + , + xe.install = function() { + a.a.use(pe) + } + , + a.a.prototype.$toast = xe; + var we = xe + , Ce = Object(l.a)("button") + , Oe = Ce[0] + , Te = Ce[1]; + function $e(t, e, i, n) { + var r, 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 = [Te([l, e.size, { + plain: u, + loading: p, + disabled: f, + hairline: m, + block: e.block, + round: e.round, + square: e.square + }]), (r = {}, + r["van-hairline--surround"] = m, + r)]; + function x() { + return p ? i.loading ? i.loading() : t(vt, { + class: Te("loading"), + attrs: { + size: e.loadingSize, + type: e.loadingType, + color: "currentColor" + } + }) : i.icon ? t("div", { + class: Te("icon") + }, [i.icon()]) : a ? t(st, { + attrs: { + name: a, + classPrefix: e.iconPrefix + }, + class: Te("icon") + }) : void 0 + } + return t(o, s()([{ + style: b, + class: k, + attrs: { + type: e.nativeType, + disabled: f + }, + on: { + click: function(t) { + e.loading && t.preventDefault(), + p || f || (d(n, "click", t), + Qt(n)) + }, + touchstart: function(t) { + d(n, "touchstart", t) + } + } + }, h(n)]), [t("div", { + class: Te("content") + }, [(S = [], + "left" === g && S.push(x()), + (y = p ? v : i.default ? i.default() : e.text) && S.push(t("span", { + class: Te("text") + }, [y])), + "right" === g && S.push(x()), + S)])]) + } + $e.props = n({}, Gt, { + 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 Be = Oe($e); + function Ie(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 De(t, e) { + var i, n; + void 0 === e && (e = {}); + var r = e.indexKey || "index"; + return { + inject: (i = {}, + i[t] = { + default: null + }, + i), + computed: (n = { + parent: function() { + return this.disableBindRelation ? null : this[t] + } + }, + n[r] = 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]); + Ie(t, this.parent), + this.parent.children = t + } + } + } + } + } + function Ee(t) { + return { + provide: function() { + var e; + return (e = {})[t] = this, + e + }, + data: function() { + return { + children: [] + } + } + } + } + var je, Pe = Object(l.a)("goods-action"), Le = Pe[0], Ne = Pe[1], Ae = Le({ + mixins: [Ee("vanGoodsAction")], + props: { + safeAreaInsetBottom: { + type: Boolean, + default: !0 + } + }, + render: function() { + var t = arguments[0]; + return t("div", { + class: Ne({ + unfit: !this.safeAreaInsetBottom + }) + }, [this.slots()]) + } + }), Me = Object(l.a)("goods-action-button"), ze = Me[0], Fe = Me[1], Ve = ze({ + mixins: [De("vanGoodsAction")], + props: n({}, Gt, { + 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), + Xt(this.$router, this) + } + }, + render: function() { + var t = arguments[0]; + return t(Be, { + class: Fe([{ + 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]) + } + }), Re = Object(l.a)("dialog"), He = Re[0], _e = Re[1], We = Re[2], qe = He({ + mixins: [U()], + 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() { + this.$emit("opened") + }, + onClosed: function() { + this.$emit("closed") + }, + genRoundButtons: function() { + var t = this + , e = this.$createElement; + return e(Ae, { + class: _e("footer") + }, [this.showCancelButton && e(Ve, { + attrs: { + size: "large", + type: "warning", + text: this.cancelButtonText || We("cancel"), + color: this.cancelButtonColor, + loading: this.loading.cancel + }, + class: _e("cancel"), + on: { + click: function() { + t.handleAction("cancel") + } + } + }), this.showConfirmButton && e(Ve, { + attrs: { + size: "large", + type: "danger", + text: this.confirmButtonText || We("confirm"), + color: this.confirmButtonColor, + loading: this.loading.confirm + }, + class: _e("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, _e("footer")] + }, [this.showCancelButton && i(Be, { + attrs: { + size: "large", + loading: this.loading.cancel, + text: this.cancelButtonText || We("cancel") + }, + class: _e("cancel"), + style: { + color: this.cancelButtonColor + }, + on: { + click: function() { + e.handleAction("cancel") + } + } + }), this.showConfirmButton && i(Be, { + attrs: { + size: "large", + loading: this.loading.confirm, + text: this.confirmButtonText || We("confirm") + }, + class: [_e("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: _e("content") + }, [e]); + var n = this.message + , r = this.messageAlign; + if (n) { + var o, a, l = { + class: _e("message", (o = { + "has-title": t + }, + o[r] = r, + o)), + domProps: (a = {}, + a[this.allowHtml ? "innerHTML" : "textContent"] = n, + a) + }; + return i("div", { + class: _e("content", { + isolated: !t + }) + }, [i("div", s()([{}, l]))]) + } + } + }, + render: function() { + var t = arguments[0]; + if (this.shouldRender) { + var e = this.message + , i = this.slots() + , n = this.slots("title") || this.title + , r = n && t("div", { + class: _e("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 + }, + class: [_e([this.theme]), this.className], + style: { + width: Object(Y.a)(this.width) + } + }, [r, this.genContent(n, i), "round-button" === this.theme ? this.genRoundButtons() : this.genButtons()])]) + } + } + }); + function Ke(t) { + return m.h ? Promise.resolve() : new Promise((function(e, i) { + var r; + je && (r = je.$el, + document.body.contains(r)) || (je && je.$destroy(), + (je = new (a.a.extend(qe))({ + el: document.createElement("div"), + propsData: { + lazyRender: !1 + } + })).$on("input", (function(t) { + je.value = t + } + ))), + n(je, Ke.currentOptions, t, { + resolve: e, + reject: i + }) + } + )) + } + Ke.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) { + je["confirm" === t ? "resolve" : "reject"](t) + } + }, + Ke.alert = Ke, + Ke.confirm = function(t) { + return Ke(n({ + showCancelButton: !0 + }, t)) + } + , + Ke.close = function() { + je && (je.value = !1) + } + , + Ke.setDefaultOptions = function(t) { + n(Ke.currentOptions, t) + } + , + Ke.resetDefaultOptions = function() { + Ke.currentOptions = n({}, Ke.defaultOptions) + } + , + Ke.resetDefaultOptions(), + Ke.install = function() { + a.a.use(qe) + } + , + Ke.Component = qe, + a.a.prototype.$dialog = Ke; + var Ue = Ke + , Ye = Object(l.a)("address-edit-detail") + , Xe = Ye[0] + , Qe = Ye[1] + , Ge = Ye[2] + , Ze = !m.h && /android/.test(navigator.userAgent.toLowerCase()) + , Je = Xe({ + 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 && Ze) + return t("div", { + class: Qe("finish"), + on: { + click: this.onFinish + } + }, [Ge("complete")]) + }, + genSearchResult: function() { + var t = this + , e = this.$createElement + , i = this.value + , n = this.shouldShowSearchResult + , r = this.searchResult; + if (n) + return r.map((function(n) { + return e(ne, { + key: n.name + n.address, + attrs: { + clickable: !0, + border: !1, + icon: "location-o", + label: n.address + }, + class: Qe("search-item"), + on: { + click: function() { + t.onSelect(n) + } + }, + scopedSlots: { + title: function() { + if (n.name) { + var t = n.name.replace(i, "" + i + ""); + return e("div", { + domProps: { + innerHTML: t + } + }) + } + } + } + }) + } + )) + } + }, + render: function() { + var t = arguments[0]; + return t(ne, { + class: Qe() + }, [t(ce, { + attrs: { + autosize: !0, + rows: this.detailRows, + clearable: !Ze, + type: "textarea", + value: this.value, + errorMessage: this.errorMessage, + border: !this.shouldShowSearchResult, + label: Ge("label"), + maxlength: this.detailMaxlength, + placeholder: Ge("placeholder") + }, + ref: "field", + scopedSlots: { + icon: this.genFinish + }, + on: n({}, this.$listeners) + }), this.genSearchResult()]) + } + }) + , ti = { + size: [Number, String], + value: null, + loading: Boolean, + disabled: Boolean, + activeColor: String, + inactiveColor: String, + activeValue: { + type: null, + default: !0 + }, + inactiveValue: { + type: null, + default: !1 + } + } + , ei = { + 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) + } + } + , ii = Object(l.a)("switch") + , ni = ii[0] + , ri = ii[1] + , si = ni({ + mixins: [ei], + props: ti, + 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: ri("loading"), + attrs: { + color: e + } + }) + } + } + }, + render: function() { + var t = arguments[0] + , e = this.checked + , i = this.loading + , n = this.disabled; + return t("div", { + class: ri({ + on: e, + loading: i, + disabled: n + }), + attrs: { + role: "switch", + "aria-checked": String(e) + }, + style: this.style, + on: { + click: this.onClick + } + }, [t("div", { + class: ri("node") + }, [this.genLoading()])]) + } + }) + , oi = Object(l.a)("address-edit") + , ai = oi[0] + , li = oi[1] + , ci = oi[2] + , ui = { + name: "", + tel: "", + country: "", + province: "", + city: "", + county: "", + areaCode: "", + postalCode: "", + addressDetail: "", + isDefault: !1 + }; + var hi = ai({ + 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({}, ui) + } + }, + 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 + , r = t.county; + if (t.areaCode) { + var s = [e, i, n, r]; + return i && i === n && s.splice(1, 1), + s.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({}, ui, 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 + } + )) ? we(ci("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 ? "" : ci("nameEmpty"); + case "tel": + return this.telValidator(e) ? "" : ci("telInvalid"); + case "areaCode": + return e ? "" : ci("areaEmpty"); + case "addressDetail": + return e ? "" : ci("addressEmpty"); + case "postalCode": + return e && !this.postalValidator(e) ? ci("postalEmpty") : "" + } + }, + onDelete: function() { + var t = this; + Ue.confirm({ + title: ci("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(si, { + 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(ne, { + directives: [{ + name: "show", + value: !this.hideBottomFields + }], + attrs: { + center: !0, + title: ci("defaultAddress") + }, + class: li("default"), + scopedSlots: i + }) + } + return t() + } + }, + render: function(t) { + var e = this + , i = this.data + , n = this.errorInfo + , r = this.disableArea + , s = this.hideBottomFields + , o = function(t) { + return function() { + return e.onFocus(t) + } + }; + return t("div", { + class: li() + }, [t("div", { + class: li("fields") + }, [t(ce, { + attrs: { + clearable: !0, + label: ci("name"), + placeholder: ci("namePlaceholder"), + errorMessage: n.name + }, + on: { + focus: o("name") + }, + model: { + value: i.name, + callback: function(t) { + e.$set(i, "name", t) + } + } + }), t(ce, { + attrs: { + clearable: !0, + type: "tel", + label: ci("tel"), + maxlength: this.telMaxlength, + placeholder: ci("telPlaceholder"), + errorMessage: n.tel + }, + on: { + focus: o("tel") + }, + model: { + value: i.tel, + callback: function(t) { + e.$set(i, "tel", t) + } + } + }), t(ce, { + directives: [{ + name: "show", + value: this.showArea + }], + attrs: { + readonly: !0, + clickable: !r, + label: ci("area"), + placeholder: this.areaPlaceholder || ci("areaPlaceholder"), + errorMessage: n.areaCode, + rightIcon: r ? null : "arrow", + value: this.areaText + }, + on: { + focus: o("areaCode"), + click: function() { + e.$emit("click-area"), + e.showAreaPopup = !r + } + } + }), t(Je, { + 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(ce, { + directives: [{ + name: "show", + value: !s + }], + attrs: { + type: "tel", + maxlength: "6", + label: ci("postal"), + placeholder: ci("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: !s + }], + class: li("buttons") + }, [t(Be, { + attrs: { + block: !0, + round: !0, + loading: this.isSaving, + type: "danger", + text: this.saveButtonText || ci("save") + }, + on: { + click: this.onSave + } + }), this.showDelete && t(Be, { + attrs: { + block: !0, + round: !0, + loading: this.isDeleting, + text: this.deleteButtonText || ci("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(Yt, { + ref: "area", + attrs: { + value: i.areaCode, + loading: !this.areaListLoaded, + areaList: this.areaList, + columnsPlaceholder: this.areaColumnsPlaceholder + }, + on: { + confirm: this.onAreaConfirm, + cancel: function() { + e.showAreaPopup = !1 + } + } + })])]) + } + }) + , di = Object(l.a)("radio-group") + , fi = di[0] + , pi = di[1] + , mi = fi({ + mixins: [Ee("vanRadio"), ei], + 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: pi([this.direction]), + attrs: { + role: "radiogroup" + } + }, [this.slots()]) + } + }) + , vi = Object(l.a)("tag") + , gi = vi[0] + , bi = vi[1]; + function yi(t, e, i, n) { + var r, o = e.type, a = e.mark, l = e.plain, c = e.color, u = e.round, f = e.size, p = e.textColor, m = ((r = {})[l ? "color" : "backgroundColor"] = c, + r); + 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(st, { + attrs: { + name: "cross" + }, + class: bi("close"), + on: { + click: function(t) { + t.stopPropagation(), + d(n, "close") + } + } + }); + return t("transition", { + attrs: { + name: e.closeable ? "van-fade" : null + } + }, [t("span", s()([{ + key: "content", + style: m, + class: bi([v, o]) + }, h(n, !0)]), [null == i.default ? void 0 : i.default(), g])]) + } + yi.props = { + size: String, + mark: Boolean, + color: String, + plain: Boolean, + round: Boolean, + textColor: String, + closeable: Boolean, + type: { + type: String, + default: "default" + } + }; + var Si = gi(yi) + , ki = function(t) { + var e = t.parent + , i = t.bem + , n = t.role; + return { + mixins: [De(e), ei], + 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 + , r = n === i || n.contains(i); + this.isDisabled || !r && 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(st, { + 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]) + } + } + } + , xi = Object(l.a)("radio") + , wi = (0, + xi[0])({ + mixins: [ki({ + bem: xi[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 + } + } + }) + , Ci = Object(l.a)("address-item") + , Oi = Ci[0] + , Ti = Ci[1]; + function $i(t, e, i, r) { + var o = e.disabled + , a = e.switchable; + return t("div", { + class: Ti({ + disabled: o + }), + on: { + click: function() { + a && d(r, "select"), + d(r, "click") + } + } + }, [t(ne, s()([{ + attrs: { + border: !1, + valueClass: Ti("value") + }, + scopedSlots: { + default: function() { + var r = e.data + , s = [t("div", { + class: Ti("name") + }, [r.name + " " + r.tel, i.tag ? i.tag(n({}, e.data)) : e.data.isDefault && e.defaultTagText ? t(Si, { + attrs: { + type: "danger", + round: !0 + }, + class: Ti("tag") + }, [e.defaultTagText]) : void 0]), t("div", { + class: Ti("address") + }, [r.address])]; + return a && !o ? t(wi, { + attrs: { + name: r.id, + iconSize: 18 + } + }, [s]) : s + }, + "right-icon": function() { + return t(st, { + attrs: { + name: "edit" + }, + class: Ti("edit"), + on: { + click: function(t) { + t.stopPropagation(), + d(r, "edit"), + d(r, "click") + } + } + }) + } + } + }, h(r)])), null == i.bottom ? void 0 : i.bottom(n({}, e.data, { + disabled: o + }))]) + } + $i.props = { + data: Object, + disabled: Boolean, + switchable: Boolean, + defaultTagText: String + }; + var Bi = Oi($i) + , Ii = Object(l.a)("address-list") + , Di = Ii[0] + , Ei = Ii[1] + , ji = Ii[2]; + function Pi(t, e, i, n) { + function r(r, s) { + if (r) + return r.map((function(r, o) { + return t(Bi, { + attrs: { + data: r, + disabled: s, + switchable: e.switchable, + defaultTagText: e.defaultTagText + }, + key: r.id, + scopedSlots: { + bottom: i["item-bottom"], + tag: i.tag + }, + on: { + select: function() { + d(n, s ? "select-disabled" : "select", r, o), + s || d(n, "input", r.id) + }, + edit: function() { + d(n, s ? "edit-disabled" : "edit", r, o) + }, + click: function() { + d(n, "click-item", r, o) + } + } + }) + } + )) + } + var o = r(e.list) + , a = r(e.disabledList, !0); + return t("div", s()([{ + class: Ei() + }, h(n)]), [null == i.top ? void 0 : i.top(), t(mi, { + attrs: { + value: e.value + } + }, [o]), e.disabledText && t("div", { + class: Ei("disabled-text") + }, [e.disabledText]), a, null == i.default ? void 0 : i.default(), t("div", { + class: Ei("bottom") + }, [t(Be, { + attrs: { + round: !0, + block: !0, + type: "danger", + text: e.addButtonText || ji("add") + }, + class: Ei("add"), + on: { + click: function() { + d(n, "add") + } + } + })])]) + } + Pi.props = { + list: Array, + value: [Number, String], + disabledList: Array, + disabledText: String, + addButtonText: String, + defaultTagText: String, + switchable: { + type: Boolean, + default: !0 + } + }; + var Li = Di(Pi) + , Ni = i(5) + , Ai = Object(l.a)("badge") + , Mi = Ai[0] + , zi = Ai[1] + , Fi = Mi({ + 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(Ni.b)(i) && +i > e ? e + "+" : i + }, + renderBadge: function() { + var t = this.$createElement; + if (this.hasContent() || this.dot) + return t("div", { + class: zi({ + 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: zi("wrapper") + }, [this.$scopedSlots.default(), this.renderBadge()]) + } + return this.renderBadge() + } + }) + , Vi = i(3); + function Ri(t) { + return "[object Date]" === Object.prototype.toString.call(t) && !Object(Ni.a)(t.getTime()) + } + var Hi = Object(l.a)("calendar") + , _i = Hi[0] + , Wi = Hi[1] + , qi = Hi[2]; + function Ki(t, e) { + var i = t.getFullYear() + , n = e.getFullYear() + , r = t.getMonth() + , s = e.getMonth(); + return i === n ? r === s ? 0 : r > s ? 1 : -1 : i > n ? 1 : -1 + } + function Ui(t, e) { + var i = Ki(t, e); + if (0 === i) { + var n = t.getDate() + , r = e.getDate(); + return n === r ? 0 : n > r ? 1 : -1 + } + return i + } + function Yi(t, e) { + return (t = new Date(t)).setDate(t.getDate() + e), + t + } + function Xi(t) { + return Yi(t, 1) + } + function Qi(t) { + return new Date(t) + } + function Gi(t) { + return Array.isArray(t) ? t.map((function(t) { + return null === t ? t : Qi(t) + } + )) : Qi(t) + } + function Zi(t) { + if (!t) + return 0; + for (; Object(Ni.a)(parseInt(t, 10)); ) { + if (!(t.length > 1)) + return 0; + t = t.slice(1) + } + return parseInt(t, 10) + } + function Ji(t, e) { + return 32 - new Date(t,e - 1,32).getDate() + } + var tn = (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, + qi("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 Ji(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 r = new Date(e,i,n) + , s = this.getDayType(r) + , o = { + date: r, + type: s, + text: n, + bottomInfo: this.getBottomInfo(s) + }; + this.formatter && (o = this.formatter(o)), + t.push(o) + } + return t + } + }, + methods: { + getHeight: function() { + return this.height || (this.height = this.$el.getBoundingClientRect().height), + this.height + }, + scrollIntoView: function(t) { + var e = this.$refs + , i = e.days + , n = e.month + , r = (this.showSubtitle ? i : n).getBoundingClientRect().top - t.getBoundingClientRect().top + t.scrollTop; + M(t, r) + }, + getMultipleDayType: function(t) { + var e = this + , i = function(t) { + return e.currentDate.some((function(e) { + return 0 === Ui(e, t) + } + )) + }; + if (i(t)) { + var n = Yi(t, -1) + , r = Xi(t) + , s = i(n) + , o = i(r); + return s && o ? "multiple-middle" : s ? "end" : o ? "start" : "multiple-selected" + } + return "" + }, + getRangeDayType: function(t) { + var e = this.currentDate + , i = e[0] + , n = e[1]; + if (!i) + return ""; + var r = Ui(t, i); + if (!n) + return 0 === r ? "start" : ""; + var s = Ui(t, n); + return 0 === r && 0 === s && this.allowSameDay ? "start-end" : 0 === r ? "start" : 0 === s ? "end" : r > 0 && s < 0 ? "middle" : void 0 + }, + getDayType: function(t) { + var e = this.type + , i = this.minDate + , n = this.maxDate + , r = this.currentDate; + return Ui(t, i) < 0 || Ui(t, n) > 0 ? "disabled" : null !== r ? "single" === e ? 0 === Ui(t, r) ? "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 qi(t); + if ("start-end" === t) + return qi("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: Wi("month-title") + }, [this.title]) + }, + genMark: function() { + var t = this.$createElement; + if (this.showMark && this.shouldRender) + return t("div", { + class: Wi("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: Wi("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: Wi("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: Wi("bottom-info") + }, [i ? i(t) : t.bottomInfo]) + }, + genDay: function(t, e) { + var i = this + , n = this.$createElement + , r = t.type + , s = this.getDayStyle(r, e) + , o = "disabled" === r + , a = function() { + o || i.$emit("click", t) + }; + return "selected" === r ? n("div", { + attrs: { + role: "gridcell", + tabindex: -1 + }, + style: s, + class: [Wi("day"), t.className], + on: { + click: a + } + }, [n("div", { + class: Wi("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: s, + class: [Wi("day", r), t.className], + on: { + click: a + } + }, [this.genTopInfo(t), t.text, this.genBottomInfo(t)]) + } + }, + render: function() { + var t = arguments[0]; + return t("div", { + class: Wi("month"), + ref: "month" + }, [this.genTitle(), this.genDays()]) + } + }) + , en = (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 || qi("title"); + return t("div", { + class: Wi("header-title") + }, [e]) + } + }, + genSubtitle: function() { + var t = this.$createElement; + if (this.showSubtitle) + return t("div", { + class: Wi("header-subtitle") + }, [this.subtitle]) + }, + genWeekDays: function() { + var t = this.$createElement + , e = qi("weekdays") + , i = this.firstDayOfWeek + , n = [].concat(e.slice(i, 7), e.slice(0, i)); + return t("div", { + class: Wi("weekdays") + }, [n.map((function(e) { + return t("span", { + class: Wi("weekday") + }, [e]) + } + ))]) + } + }, + render: function() { + var t = arguments[0]; + return t("div", { + class: Wi("header") + }, [this.genTitle(), this.genSubtitle(), this.genWeekDays()]) + } + }) + , nn = _i({ + 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: Ri, + default: function() { + return new Date + } + }, + maxDate: { + type: Date, + validator: Ri, + 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 + } + } + }, + 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 !== Ki(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() { + this.init() + }, + 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(Vi.c)((function() { + var i = e.value || !e.poppable; + t && i && (e.months.some((function(i, n) { + if (0 === Ki(i, t)) { + var r = e.$refs + , s = r.body; + return r.months[n].scrollIntoView(s), + !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 r = new Date; + if (-1 === Ui(r, e) ? r = e : 1 === Ui(r, i) && (r = i), + "range" === t) { + var s = n || []; + return [s[0] || r, s[1] || Xi(r)] + } + return "multiple" === t ? n || [r] : n || r + }, + onScroll: function() { + var t = this.$refs + , e = t.body + , i = t.months + , n = A(e) + , r = n + this.bodyHeight + , s = i.map((function(t) { + return t.getHeight() + } + )); + if (!(r > s.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 <= r && a + s[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 += s[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 r = n[0] + , s = n[1]; + if (r && !s) { + var o = Ui(e, r); + 1 === o ? this.select([r, 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 === Ui(t, e); + return n && (a = i), + n + } + ))) { + var l = n.splice(a, 1)[0]; + this.$emit("unselect", Qi(l)) + } else + this.maxRange && n.length >= this.maxRange ? we(this.rangePrompt || qi("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", Gi(i.currentDate)) + }; + if (e && "range" === this.type && !this.checkRange(t)) + return void (this.showConfirm ? n([t[0], Yi(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) || (we(i || qi("rangePrompt", e)), + !1) + }, + onConfirm: function() { + this.$emit("confirm", Gi(this.currentDate)) + }, + genMonth: function(t, e) { + var i = this.$createElement + , n = 0 !== e || !this.showSubtitle; + return i(tn, { + 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(Be, { + attrs: { + round: !0, + block: !0, + type: "danger", + color: this.color, + disabled: this.buttonDisabled, + nativeType: "button" + }, + class: Wi("confirm"), + on: { + click: this.onConfirm + } + }, [i || qi("confirm")]) + } + }, + genFooter: function() { + return (0, + this.$createElement)("div", { + class: Wi("footer", { + unfit: !this.safeAreaInsetBottom + }) + }, [this.genFooterContent()]) + }, + genCalendar: function() { + var t = this + , e = this.$createElement; + return e("div", { + class: Wi() + }, [e(en, { + 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: Wi("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: Wi("popup"), + on: { + input: this.togglePopup, + open: n("open"), + opened: n("opened"), + close: n("close"), + closed: n("closed") + } + }, [this.genCalendar()]) + } + return this.genCalendar() + } + }) + , rn = Object(l.a)("image") + , sn = rn[0] + , on = rn[1] + , an = sn({ + 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: on("loading") + }, [this.slots("loading") || t(st, { + attrs: { + name: this.loadingIcon, + classPrefix: this.iconPrefix + }, + class: on("loading-icon") + })]) : this.error && this.showError ? t("div", { + class: on("error") + }, [this.slots("error") || t(st, { + attrs: { + name: this.errorIcon, + classPrefix: this.iconPrefix + }, + class: on("error-icon") + })]) : void 0 + }, + genImage: function() { + var t = this.$createElement + , e = { + class: on("img"), + attrs: { + alt: this.alt + }, + style: { + objectFit: this.fit + } + }; + if (!this.error) + return this.lazyLoad ? t("img", s()([{ + ref: "image", + directives: [{ + name: "lazy", + value: this.src + }] + }, e])) : t("img", s()([{ + attrs: { + src: this.src + }, + on: { + load: this.onLoad, + error: this.onError + } + }, e])) + } + }, + render: function() { + var t = arguments[0]; + return t("div", { + class: on({ + round: this.round + }), + style: this.style, + on: { + click: this.onClick + } + }, [this.genImage(), this.genPlaceholder(), this.slots()]) + } + }) + , ln = Object(l.a)("card") + , cn = ln[0] + , un = ln[1]; + function hn(t, e, i, n) { + var r, 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: un("tag") + }, [i.tag ? i.tag() : t(Si, { + attrs: { + mark: !0, + type: "danger" + } + }, [e.tag])]) + } + return t("div", s()([{ + class: un() + }, h(n, !0)]), [t("div", { + class: un("header") + }, [function() { + if (i.thumb || o) + return t("a", { + attrs: { + href: e.thumbLink + }, + class: un("thumb"), + on: { + click: f + } + }, [i.thumb ? i.thumb() : t(an, { + attrs: { + src: o, + width: "100%", + height: "100%", + fit: "cover", + "lazy-load": e.lazyLoad + } + }), p()]) + }(), t("div", { + class: un("content", { + centered: e.centered + }) + }, [t("div", [i.title ? i.title() : e.title ? t("div", { + class: [un("title"), "van-multi-ellipsis--l2"] + }, [e.title]) : void 0, i.desc ? i.desc() : e.desc ? t("div", { + class: [un("desc"), "van-ellipsis"] + }, [e.desc]) : void 0, null == i.tags ? void 0 : i.tags()]), u && t("div", { + class: "van-card__bottom" + }, [null == (r = i["price-top"]) ? void 0 : r.call(i), function() { + if (l) + return t("div", { + class: un("price") + }, [i.price ? i.price() : (n = e.price.toString().split("."), + t("div", [t("span", { + class: un("price-currency") + }, [e.currency]), t("span", { + class: un("price-integer") + }, [n[0]]), ".", t("span", { + class: un("price-decimal") + }, [n[1]])]))]); + var n + }(), function() { + if (c) { + var n = i["origin-price"]; + return t("div", { + class: un("origin-price") + }, [n ? n() : e.currency + " " + e.originPrice]) + } + }(), function() { + if (a) + return t("div", { + class: un("num") + }, [i.num ? i.num() : "x" + e.num]) + }(), null == i.bottom ? void 0 : i.bottom()])])]), function() { + if (i.footer) + return t("div", { + class: un("footer") + }, [i.footer()]) + }()]) + } + hn.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 dn, fn = cn(hn), pn = Object(l.a)("tab"), mn = pn[0], vn = pn[1], gn = mn({ + mixins: [De("vanTabs")], + props: n({}, Gt, { + 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 + , r = e(); + if (r || i.animated) { + var s = i.scrollspy || n + , o = this.inited || i.scrollspy || !i.lazyRender ? r : t(); + return i.animated ? t("div", { + attrs: { + role: "tabpanel", + "aria-hidden": !n + }, + class: vn("pane-wrapper", { + inactive: !n + }) + }, [t("div", { + class: vn("pane") + }, [o])]) : t("div", { + directives: [{ + name: "show", + value: s + }], + attrs: { + role: "tabpanel" + }, + class: vn("pane") + }, [o]) + } + } + }); + function bn(t) { + var e = window.getComputedStyle(t) + , i = "none" === e.display + , n = null === t.offsetParent && "fixed" !== e.position; + return i || n + } + function yn(t) { + var e = t.interceptor + , i = t.args + , n = t.done; + if (e) { + var r = e.apply(void 0, i); + Object(m.g)(r) ? r.then((function(t) { + t && n() + } + )).catch(m.i) : r && n() + } else + n() + } + var Sn = Object(l.a)("tab") + , kn = Sn[0] + , xn = Sn[1] + , wn = kn({ + 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 r = i ? this.activeColor : this.inactiveColor; + return r && (t.color = r), + t + } + }, + methods: { + onClick: function() { + this.$emit("click") + }, + genText: function() { + var t = this.$createElement + , e = t("span", { + class: xn("text", { + ellipsis: !this.scrollable + }) + }, [this.slots() || this.title]); + return this.dot || Object(m.c)(this.info) && "" !== this.info ? t("span", { + class: xn("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: [xn({ + active: this.isActive, + disabled: this.disabled + })], + style: this.style, + on: { + click: this.onClick + } + }, [this.genText()]) + } + }) + , Cn = Object(l.a)("sticky") + , On = Cn[0] + , Tn = Cn[1] + , $n = On({ + 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 (!bn(this.$el)) { + this.height = this.$el.offsetHeight; + var e = this.container + , i = this.offsetTopPx + , n = A(window) + , r = V(this.$el) + , s = function() { + t.$emit("scroll", { + scrollTop: n, + isFixed: t.fixed + }) + }; + if (e) { + var o = r + 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 s() + } + } + n + i > r ? (this.fixed = !0, + this.transform = 0) : this.fixed = !1, + s() + } + } + }, + render: function() { + var t = arguments[0] + , e = this.fixed + , i = { + height: e ? this.height + "px" : null + }; + return t("div", { + style: i + }, [t("div", { + class: Tn({ + fixed: e + }), + style: this.style + }, [this.slots()])]) + } + }) + , Bn = Object(l.a)("tabs") + , In = Bn[0] + , Dn = Bn[1] + , En = In({ + mixins: [R], + 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()]) + } + }) + , jn = Object(l.a)("tabs") + , Pn = jn[0] + , Ln = jn[1] + , Nn = Pn({ + mixins: [Ee("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 && F(Math.ceil(V(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 && !bn(t.$el)) { + var n = i[t.currentIndex].$el + , r = t.lineWidth + , s = t.lineHeight + , o = n.offsetLeft + n.offsetWidth / 2 + , a = { + width: Object(Y.a)(r), + backgroundColor: t.color, + transform: "translateX(" + o + "px) translateX(-50%)" + }; + if (e && (a.transitionDuration = t.duration + "s"), + Object(m.c)(s)) { + var l = Object(Y.a)(s); + 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 + , r = null !== this.currentIndex; + this.currentIndex = e, + n !== this.active && (this.$emit("input", n), + r && 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] + , r = n.title + , s = n.disabled + , o = n.computedName; + s ? this.$emit("disabled", o, r) : (yn({ + interceptor: this.beforeChange, + args: [o], + done: function() { + i.setCurrentIndex(e), + i.scrollToCurrentContent() + } + }), + this.$emit("click", o, r), + Xt(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) { + Object(Vi.a)(dn); + var n = 0 + , r = t.scrollLeft + , s = 0 === i ? 1 : Math.round(1e3 * i / 16); + !function i() { + t.scrollLeft += (e - r) / s, + ++n < s && (dn = Object(Vi.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 r = V(n, this.scroller) - this.scrollOffset; + this.lockScroll = !0, + function(t, e, i, n) { + var r = A(t) + , s = r < e + , o = 0 === i ? 1 : Math.round(1e3 * i / 16) + , a = (e - r) / o; + !function i() { + r += a, + (s && r > e || !s && r < e) && (r = e), + M(t, r), + s && r < e || !s && r > e ? Object(Vi.c)(i) : n && Object(Vi.c)(n) + }() + }(this.scroller, r, 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, r = this.animated, s = this.scrollable, o = this.children.map((function(t, r) { + var o; + return i(wn, { + 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: r === e.currentIndex, + disabled: t.disabled, + scrollable: s, + 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, r) + } + } + }) + } + )), a = i("div", { + ref: "wrap", + class: [Ln("wrap", { + scrollable: s + }), (t = {}, + t[Bt] = "line" === n && this.border, + t)] + }, [i("div", { + ref: "nav", + attrs: { + role: "tablist" + }, + class: Ln("nav", [n, { + complete: this.scrollable + }]), + style: this.navStyle + }, [this.slots("nav-left"), o, "line" === n && i("div", { + class: Ln("line"), + style: this.lineStyle + }), this.slots("nav-right")])]); + return i("div", { + class: Ln([n]) + }, [this.sticky ? i($n, { + attrs: { + container: this.$el, + offsetTop: this.offsetTop + }, + on: { + scroll: this.onSticktScroll + } + }, [a]) : a, i(En, { + attrs: { + count: this.children.length, + animated: r, + duration: this.duration, + swipeable: this.swipeable, + currentIndex: this.currentIndex + }, + on: { + change: this.setCurrentIndex + } + }, [this.slots()])]) + } + }) + , An = Object(l.a)("cascader") + , Mn = An[0] + , zn = An[1] + , Fn = An[2] + , Vn = Mn({ + props: { + title: String, + value: [Number, String], + fieldNames: Object, + placeholder: String, + activeColor: String, + options: { + type: Array, + default: function() { + return [] + } + }, + closeable: { + 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 r = this.getSelectedOptionsByValue(n[this.childrenKey], e); + if (r) + return [n].concat(r) + } + } + }, + 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 + } + , r = i.filter((function(i) { + return i[t.valueKey] === e[t.valueKey] + } + )); + return r.length && (i = r[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 r = this.tabs.map((function(t) { + return t.selectedOption + } + )).filter((function(t) { + return !!t + } + )) + , s = { + value: t[this.valueKey], + tabIndex: e, + selectedOptions: r + }; + this.$emit("input", t[this.valueKey]), + this.$emit("change", s), + t[this.childrenKey] || this.$emit("finish", s) + }, + onClose: function() { + this.$emit("close") + }, + renderHeader: function() { + var t = this.$createElement; + return t("div", { + class: zn("header") + }, [t("h2", { + class: zn("title") + }, [this.slots("title") || this.title]), this.closeable ? t(st, { + attrs: { + name: "cross" + }, + class: zn("close-icon"), + on: { + click: this.onClose + } + }) : null]) + }, + renderOptions: function(t, e, i) { + var n = this + , r = this.$createElement; + return r("ul", { + class: zn("options") + }, [t.map((function(t) { + var s = e && t[n.valueKey] === e[n.valueKey] + , o = n.slots("option", { + option: t, + selected: s + }) || r("span", [t[n.textKey]]); + return r("li", { + class: zn("option", { + selected: s + }), + style: { + color: s ? n.activeColor : null + }, + on: { + click: function() { + n.onSelect(t, i) + } + } + }, [o, s ? r(st, { + attrs: { + name: "success" + }, + class: zn("selected-icon") + }) : null]) + } + ))]) + }, + renderTab: function(t, e) { + var i = this.$createElement + , n = t.options + , r = t.selectedOption + , s = r ? r[this.textKey] : this.placeholder || Fn("select"); + return i(gn, { + attrs: { + title: s, + titleClass: zn("tab", { + unselected: !r + }) + } + }, [this.renderOptions(n, r, e)]) + }, + renderTabs: function() { + var t = this; + return (0, + this.$createElement)(Nn, { + attrs: { + animated: !0, + swipeable: !0, + swipeThreshold: 0, + color: this.activeColor + }, + class: zn("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: zn() + }, [this.renderHeader(), this.renderTabs()]) + } + }) + , Rn = Object(l.a)("cell-group") + , Hn = Rn[0] + , _n = Rn[1]; + function Wn(t, e, i, n) { + var r, o = t("div", s()([{ + class: [_n({ + inset: e.inset + }), (r = {}, + r[Bt] = e.border, + r)] + }, h(n, !0)]), [null == i.default ? void 0 : i.default()]); + return e.title || i.title ? t("div", { + key: n.data.key + }, [t("div", { + class: _n("title", { + inset: e.inset + }) + }, [i.title ? i.title() : e.title]), o]) : o + } + Wn.props = { + title: String, + inset: Boolean, + border: { + type: Boolean, + default: !0 + } + }; + var qn = Hn(Wn) + , Kn = Object(l.a)("checkbox") + , Un = (0, + Kn[0])({ + mixins: [ki({ + bem: Kn[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)) + } + } + } + }) + , Yn = Object(l.a)("checkbox-group") + , Xn = Yn[0] + , Qn = Yn[1] + , Gn = Xn({ + mixins: [Ee("vanCheckbox"), ei], + 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 + , r = 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", r) + } + }, + render: function() { + var t = arguments[0]; + return t("div", { + class: Qn([this.direction]) + }, [this.slots()]) + } + }) + , Zn = Object(l.a)("circle") + , Jn = Zn[0] + , tr = Zn[1] + , er = 0; + function ir(t) { + return Math.min(Math.max(t, 0), 100) + } + var nr = Jn({ + 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-" + er++ + }, + 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 = ir(t), + this.increase = this.endRate > this.startRate, + this.duration = Math.abs(1e3 * (this.startRate - this.endRate) / this.speed), + this.speed ? (Object(Vi.a)(this.rafId), + this.rafId = Object(Vi.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", ir(parseFloat(e.toFixed(1)))), + (this.increase ? e < this.endRate : e > this.endRate) && (this.rafId = Object(Vi.c)(this.animate)) + } + }, + render: function() { + var t = arguments[0]; + return t("div", { + class: tr(), + style: this.style + }, [t("svg", { + attrs: { + viewBox: "0 0 " + this.viewBoxSize + " " + this.viewBoxSize + } + }, [this.LinearGradient, t("path", { + class: tr("layer"), + style: this.layerStyle, + attrs: { + d: this.path + } + }), t("path", { + attrs: { + d: this.path + }, + class: tr("hover"), + style: this.hoverStyle + })]), this.slots() || this.text && t("div", { + class: tr("text") + }, [this.text])]) + } + }) + , rr = Object(l.a)("col") + , sr = rr[0] + , or = rr[1] + , ar = sr({ + mixins: [De("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 + , r = i.right; + return { + paddingLeft: n ? n + "px" : null, + paddingRight: r ? r + "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: or((t = {}, + t[i] = i, + t["offset-" + n] = n, + t)), + on: { + click: this.onClick + } + }, [this.slots()]) + } + }) + , lr = Object(l.a)("collapse") + , cr = lr[0] + , ur = lr[1] + , hr = cr({ + mixins: [Ee("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: [ur(), (t = {}, + t[Bt] = this.border, + t)] + }, [this.slots()]) + } + }) + , dr = Object(l.a)("collapse-item") + , fr = dr[0] + , pr = dr[1] + , mr = ["title", "icon", "right-icon"] + , vr = fr({ + mixins: [De("vanCollapse")], + props: n({}, Zt, { + name: [Number, String], + disabled: Boolean, + 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 : Vi.c)((function() { + var e = i.$refs + , n = e.content + , r = e.wrapper; + if (n && r) { + var s = n.offsetHeight; + if (s) { + var o = s + "px"; + r.style.height = t ? 0 : o, + Object(Vi.b)((function() { + r.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 + , r = this.disabled + , s = this.expanded + , o = mr.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(ne, { + attrs: { + role: "button", + tabindex: r ? -1 : 0, + "aria-expanded": String(s) + }, + class: pr("title", { + disabled: r, + expanded: s, + borderless: !i + }), + on: { + click: this.onClick + }, + scopedSlots: o, + props: n({}, this.$props) + }) + }, + genContent: function() { + var t = this.$createElement; + if (this.inited) + return t("div", { + directives: [{ + name: "show", + value: this.show + }], + ref: "wrapper", + class: pr("wrapper"), + on: { + transitionend: this.onTransitionEnd + } + }, [t("div", { + ref: "content", + class: pr("content") + }, [this.slots()])]) + } + }, + render: function() { + var t = arguments[0]; + return t("div", { + class: [pr({ + border: this.index && this.border + })] + }, [this.genTitle(), this.genContent()]) + } + }) + , gr = Object(l.a)("contact-card") + , br = gr[0] + , yr = gr[1] + , Sr = gr[2]; + function kr(t, e, i, n) { + var r = e.type + , o = e.editable; + return t(ne, s()([{ + attrs: { + center: !0, + border: !1, + isLink: o, + valueClass: yr("value"), + icon: "edit" === r ? "contact" : "add-square" + }, + class: yr([r]), + on: { + click: function(t) { + o && d(n, "click", t) + } + } + }, h(n)]), ["add" === r ? e.addText || Sr("addText") : [t("div", [Sr("name") + ":" + e.name]), t("div", [Sr("tel") + ":" + e.tel])]]) + } + kr.props = { + tel: String, + name: String, + addText: String, + editable: { + type: Boolean, + default: !0 + }, + type: { + type: String, + default: "add" + } + }; + var xr = br(kr) + , wr = Object(l.a)("contact-edit") + , Cr = wr[0] + , Or = wr[1] + , Tr = wr[2] + , $r = { + tel: "", + name: "" + } + , Br = Cr({ + props: { + isEdit: Boolean, + isSaving: Boolean, + isDeleting: Boolean, + showSetDefault: Boolean, + setDefaultLabel: String, + contactInfo: { + type: Object, + default: function() { + return n({}, $r) + } + }, + telValidator: { + type: Function, + default: xt + } + }, + data: function() { + return { + data: n({}, $r, this.contactInfo), + errorInfo: { + name: "", + tel: "" + } + } + }, + watch: { + contactInfo: function(t) { + this.data = n({}, $r, t) + } + }, + methods: { + onFocus: function(t) { + this.errorInfo[t] = "" + }, + getErrorMessageByKey: function(t) { + var e = this.data[t].trim(); + switch (t) { + case "name": + return e ? "" : Tr("nameInvalid"); + case "tel": + return this.telValidator(e) ? "" : Tr("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; + Ue.confirm({ + title: Tr("confirmDelete") + }).then((function() { + t.$emit("delete", t.data) + } + )) + } + }, + render: function() { + var t = this + , e = arguments[0] + , i = this.data + , n = this.errorInfo + , r = function(e) { + return function() { + return t.onFocus(e) + } + }; + return e("div", { + class: Or() + }, [e("div", { + class: Or("fields") + }, [e(ce, { + attrs: { + clearable: !0, + maxlength: "30", + label: Tr("name"), + placeholder: Tr("nameEmpty"), + errorMessage: n.name + }, + on: { + focus: r("name") + }, + model: { + value: i.name, + callback: function(e) { + t.$set(i, "name", e) + } + } + }), e(ce, { + attrs: { + clearable: !0, + type: "tel", + label: Tr("tel"), + placeholder: Tr("telEmpty"), + errorMessage: n.tel + }, + on: { + focus: r("tel") + }, + model: { + value: i.tel, + callback: function(e) { + t.$set(i, "tel", e) + } + } + })]), this.showSetDefault && e(ne, { + attrs: { + title: this.setDefaultLabel, + border: !1 + }, + class: Or("switch-cell") + }, [e(si, { + 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: Or("buttons") + }, [e(Be, { + attrs: { + block: !0, + round: !0, + type: "danger", + text: Tr("save"), + loading: this.isSaving + }, + on: { + click: this.onSave + } + }), this.isEdit && e(Be, { + attrs: { + block: !0, + round: !0, + text: Tr("delete"), + loading: this.isDeleting + }, + on: { + click: this.onDelete + } + })])]) + } + }) + , Ir = Object(l.a)("contact-list") + , Dr = Ir[0] + , Er = Ir[1] + , jr = Ir[2]; + function Pr(t, e, i, n) { + var r = e.list && e.list.map((function(i, r) { + function s() { + d(n, "input", i.id), + d(n, "select", i, r) + } + return t(ne, { + key: i.id, + attrs: { + isLink: !0, + center: !0, + valueClass: Er("item-value") + }, + class: Er("item"), + scopedSlots: { + icon: function() { + return t(st, { + attrs: { + name: "edit" + }, + class: Er("edit"), + on: { + click: function(t) { + t.stopPropagation(), + d(n, "edit", i, r) + } + } + }) + }, + default: function() { + var n = [i.name + "," + i.tel]; + return i.isDefault && e.defaultTagText && n.push(t(Si, { + attrs: { + type: "danger", + round: !0 + }, + class: Er("item-tag") + }, [e.defaultTagText])), + n + }, + "right-icon": function() { + return t(wi, { + attrs: { + name: i.id, + iconSize: 16, + checkedColor: Ct + }, + on: { + click: s + } + }) + } + }, + on: { + click: s + } + }) + } + )); + return t("div", s()([{ + class: Er() + }, h(n)]), [t(mi, { + attrs: { + value: e.value + }, + class: Er("group") + }, [r]), t("div", { + class: Er("bottom") + }, [t(Be, { + attrs: { + round: !0, + block: !0, + type: "danger", + text: e.addText || jr("addText") + }, + class: Er("add"), + on: { + click: function() { + d(n, "add") + } + } + })])]) + } + Pr.props = { + value: null, + list: Array, + addText: String, + defaultTagText: String + }; + var Lr = Dr(Pr) + , Nr = i(2); + var Ar = Object(l.a)("count-down") + , Mr = Ar[0] + , zr = Ar[1] + , Fr = Mr({ + 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 + , r = e.minutes + , s = e.seconds + , o = e.milliseconds; + if (-1 === t.indexOf("DD") ? n += 24 * i : t = t.replace("DD", Object(Nr.b)(i)), + -1 === t.indexOf("HH") ? r += 60 * n : t = t.replace("HH", Object(Nr.b)(n)), + -1 === t.indexOf("mm") ? s += 60 * r : t = t.replace("mm", Object(Nr.b)(r)), + -1 === t.indexOf("ss") ? o += 1e3 * s : t = t.replace("ss", Object(Nr.b)(s)), + -1 !== t.indexOf("S")) { + var a = Object(Nr.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(Vi.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(Vi.c)((function() { + t.counting && (t.setRemain(t.getRemain()), + t.remain > 0 && t.microTick()) + } + )) + }, + macroTick: function() { + var t = this; + this.rafId = Object(Vi.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: zr() + }, [this.slots("default", this.timeData) || this.formattedTime]) + } + }) + , Vr = Object(l.a)("coupon") + , Rr = Vr[0] + , Hr = Vr[1] + , _r = Vr[2]; + function Wr(t) { + var e = new Date(function(t) { + return t < Math.pow(10, 12) ? 1e3 * t : +t + }(t)); + return e.getFullYear() + "." + Object(Nr.b)(e.getMonth() + 1) + "." + Object(Nr.b)(e.getDate()) + } + function qr(t) { + return (t / 100).toFixed(t % 100 == 0 ? 0 : t % 10 == 0 ? 1 : 2) + } + var Kr = Rr({ + 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 || Wr(e) + " - " + Wr(i) + }, + faceAmount: function() { + var t, e = this.coupon; + if (e.valueDesc) + return e.valueDesc + "" + (e.unitDesc || "") + ""; + if (e.denominations) { + var i = qr(e.denominations); + return "" + this.currency + " " + i + } + return e.discount ? _r("discount", ((t = e.discount) / 10).toFixed(t % 10 == 0 ? 0 : 1)) : "" + }, + conditionMessage: function() { + var t = qr(this.coupon.originCondition); + return "0" === t ? _r("unlimited") : _r("condition", t) + } + }, + render: function() { + var t = arguments[0] + , e = this.coupon + , i = this.disabled + , n = i && e.reason || e.description; + return t("div", { + class: Hr({ + disabled: i + }) + }, [t("div", { + class: Hr("content") + }, [t("div", { + class: Hr("head") + }, [t("h2", { + class: Hr("amount"), + domProps: { + innerHTML: this.faceAmount + } + }), t("p", { + class: Hr("condition") + }, [this.coupon.condition || this.conditionMessage])]), t("div", { + class: Hr("body") + }, [t("p", { + class: Hr("name") + }, [e.name]), t("p", { + class: Hr("valid") + }, [this.validPeriod]), !this.disabled && t(Un, { + attrs: { + size: 18, + value: this.chosen, + checkedColor: Ct + }, + class: Hr("corner") + })])]), n && t("p", { + class: Hr("description") + }, [n])]) + } + }) + , Ur = Object(l.a)("coupon-cell") + , Yr = Ur[0] + , Xr = Ur[1] + , Qr = Ur[2]; + function Gr(t, e, i, n) { + var r = e.coupons[+e.chosenCoupon] + , o = function(t) { + var e = t.coupons + , i = t.chosenCoupon + , n = t.currency + , r = e[+i]; + if (r) { + var s = 0; + return Object(m.c)(r.value) ? s = r.value : Object(m.c)(r.denominations) && (s = r.denominations), + "-" + n + " " + (s / 100).toFixed(2) + } + return 0 === e.length ? Qr("tips") : Qr("count", e.length) + }(e); + return t(ne, s()([{ + class: Xr(), + attrs: { + value: o, + title: e.title || Qr("title"), + border: e.border, + isLink: e.editable, + valueClass: Xr("value", { + selected: r + }) + } + }, h(n, !0)])) + } + Gr.model = { + prop: "chosenCoupon" + }, + Gr.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 Zr = Yr(Gr) + , Jr = Object(l.a)("coupon-list") + , ts = Jr[0] + , es = Jr[1] + , is = Jr[2] + , ns = ts({ + 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 + , r = i.list; + r && n && n[t] && (r.scrollTop = n[t].$el.offsetTop - 100) + } + )) + }, + genEmpty: function() { + var t = this.$createElement; + return t("div", { + class: es("empty") + }, [t("img", { + attrs: { + src: this.emptyImage + } + }), t("p", [is("empty")])]) + }, + genExchangeButton: function() { + return (0, + this.$createElement)(Be, { + attrs: { + plain: !0, + type: "danger", + text: this.exchangeButtonText || is("exchange"), + loading: this.exchangeButtonLoading, + disabled: this.buttonDisabled + }, + class: es("exchange"), + on: { + click: this.onClickExchangeButton + } + }) + } + }, + render: function() { + var t = this + , e = arguments[0] + , i = this.coupons + , n = this.disabledCoupons + , r = this.showCount ? " (" + i.length + ")" : "" + , s = (this.enabledTitle || is("enable")) + r + , o = this.showCount ? " (" + n.length + ")" : "" + , a = (this.disabledTitle || is("disabled")) + o + , l = this.showExchangeBar && e("div", { + class: es("exchange-bar") + }, [e(ce, { + attrs: { + clearable: !0, + border: !1, + placeholder: this.inputPlaceholder || is("placeholder"), + maxlength: "20" + }, + class: es("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(gn, { + attrs: { + title: s + } + }, [e("div", { + class: es("list", { + "with-bottom": this.showCloseButton + }), + style: this.listStyle + }, [i.map((function(i, n) { + return e(Kr, { + 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(gn, { + attrs: { + title: a + } + }, [e("div", { + class: es("list", { + "with-bottom": this.showCloseButton + }), + style: this.listStyle + }, [n.map((function(i) { + return e(Kr, { + attrs: { + disabled: !0, + coupon: i, + currency: t.currency + }, + key: i.id + }) + } + )), !n.length && this.genEmpty(), this.slots("disabled-list-footer")])]); + return e("div", { + class: es() + }, [l, e(Nn, { + class: es("tab"), + attrs: { + border: !1 + }, + model: { + value: t.tab, + callback: function(e) { + t.tab = e + } + } + }, [u, h]), e("div", { + class: es("bottom") + }, [e(Be, { + directives: [{ + name: "show", + value: this.showCloseButton + }], + attrs: { + round: !0, + type: "danger", + block: !0, + text: this.closeButtonText || is("close") + }, + class: es("close"), + on: { + click: c(-1) + } + })])]) + } + }) + , rs = n({}, wt, { + value: null, + filter: Function, + columnsOrder: Array, + showToolbar: { + type: Boolean, + default: !0 + }, + formatter: { + type: Function, + default: function(t, e) { + return e + } + } + }) + , ss = { + 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 + , r = function(t, e) { + for (var i = -1, n = Array(t); ++i < t; ) + n[i] = e(i); + return n + }(n[1] - n[0] + 1, (function(t) { + return Object(Nr.b)(n[0] + t) + } + )); + return t.filter && (r = t.filter(i, r)), + { + type: i, + values: r + } + } + )) + }, + 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 + }, + 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(_t, { + 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) + }) + } + } + , os = (0, + Object(l.a)("time-picker")[0])({ + mixins: [ss], + props: n({}, rs, { + 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(Nr.b)(this.minHour) + ":" + Object(Nr.b)(this.minMinute)); + var e = t.split(":") + , i = e[0] + , n = e[1]; + return (i = Object(Nr.b)(Dt(i, this.minHour, this.maxHour))) + ":" + (n = Object(Nr.b)(Dt(n, this.minMinute, this.maxMinute))) + }, + updateInnerValue: function() { + var t = this.getPicker().getIndexes() + , e = t[0] + , i = t[1] + , n = this.originColumns + , r = n[0] + , s = n[1] + , o = r.values[e] || r.values[0] + , a = s.values[i] || s.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.$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 as(t, e) { + return (as = Object.setPrototypeOf || function(t, e) { + return t.__proto__ = e, + t + } + )(t, e) + } + function ls() { + 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 cs(t, e, i) { + return (cs = ls() ? Reflect.construct : function(t, e, i) { + var n = [null]; + n.push.apply(n, e); + var r = new (Function.bind.apply(t, n)); + return i && as(r, i.prototype), + r + } + ).apply(null, arguments) + } + var us = (new Date).getFullYear() + , hs = (0, + Object(l.a)("date-picker")[0])({ + mixins: [ss], + props: n({}, rs, { + type: { + type: String, + default: "datetime" + }, + minDate: { + type: Date, + default: function() { + return new Date(us - 10,0,1) + }, + validator: Ri + }, + maxDate: { + type: Date, + default: function() { + return new Date(us + 10,11,31) + }, + validator: Ri + } + }), + 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 + , r = t.maxHour + , s = 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, r] + }, { + type: "minute", + range: [o.minMinute, s] + }]; + 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 (!Ri(t)) + return null; + var i = new Date(this.minDate) + , n = new Date(this.maxDate) + , r = { + year: "getFullYear", + month: "getMonth", + day: "getDate", + hour: "getHours", + minute: "getMinutes" + }; + if (this.originColumns) { + var s = this.originColumns.map((function(t, s) { + var o = t.type + , a = t.values + , l = e.ranges[s].range + , c = i[r[o]]() + , u = n[r[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(); + s.unshift({ + type: "year", + values: [o, o] + }) + } + var a = Object.keys(r).map((function(t) { + var e; + return null == (e = s.filter((function(e) { + return e.type === t + } + ))[0]) ? void 0 : e.values + } + )).filter((function(t) { + return t + } + )); + i = cs(Date, a.map((function(t) { + return Zi(t[0]) + } + ))), + n = cs(Date, a.map((function(t) { + return Zi(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"], r = n.getFullYear(), s = 1, o = 1, a = 0, l = 0; + return "max" === t && (s = 12, + o = Ji(e.getFullYear(), e.getMonth() + 1), + a = 23, + l = 59), + e.getFullYear() === r && (s = n.getMonth() + 1, + e.getMonth() + 1 === s && (o = n.getDate(), + e.getDate() === o && (a = n.getHours(), + e.getHours() === a && (l = n.getMinutes())))), + (i = {})[t + "Year"] = r, + i[t + "Month"] = s, + i[t + "Date"] = o, + i[t + "Hour"] = a, + i[t + "Minute"] = l, + i + }, + updateInnerValue: function() { + var t, e, i, n = this, r = this.type, s = this.getPicker().getIndexes(), o = function(t) { + var e = 0; + return n.originColumns.forEach((function(i, n) { + t === i.type && (e = n) + } + )), + Zi(n.originColumns[e].values[s[e]]) + }; + "month-day" === r ? (t = (this.innerValue || this.minDate).getFullYear(), + e = o("month"), + i = o("day")) : (t = o("year"), + e = o("month"), + i = "year-month" === r ? 1 : o("day")); + var a = Ji(t, e); + i = i > a ? a : i; + var l = 0 + , c = 0; + "datehour" === r && (l = o("hour")), + "datetime" === r && (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.$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(Nr.b)(e.getMonth() + 1)); + case "day": + return i("day", Object(Nr.b)(e.getDate())); + case "hour": + return i("hour", Object(Nr.b)(e.getHours())); + case "minute": + return i("minute", Object(Nr.b)(e.getMinutes())); + default: + return null + } + } + )); + this.$nextTick((function() { + t.getPicker().setValues(n) + } + )) + } + } + }) + , ds = Object(l.a)("datetime-picker") + , fs = ds[0] + , ps = ds[1] + , ms = fs({ + props: n({}, os.props, hs.props), + methods: { + getPicker: function() { + return this.$refs.root.getPicker() + } + }, + render: function() { + var t = arguments[0] + , e = "time" === this.type ? os : hs; + return t(e, { + ref: "root", + class: ps(), + scopedSlots: this.$scopedSlots, + props: n({}, this.$props), + on: n({}, this.$listeners) + }) + } + }) + , vs = Object(l.a)("divider") + , gs = vs[0] + , bs = vs[1]; + function ys(t, e, i, n) { + var r; + return t("div", s()([{ + attrs: { + role: "separator" + }, + style: { + borderColor: e.borderColor + }, + class: bs((r = { + dashed: e.dashed, + hairline: e.hairline + }, + r["content-" + e.contentPosition] = i.default, + r)) + }, h(n, !0)]), [i.default && i.default()]) + } + ys.props = { + dashed: Boolean, + hairline: { + type: Boolean, + default: !0 + }, + contentPosition: { + type: String, + default: "center" + } + }; + var Ss = gs(ys) + , ks = Object(l.a)("dropdown-item") + , xs = ks[0] + , ws = ks[1] + , Cs = xs({ + mixins: [H({ + ref: "wrapper" + }), De("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 + , r = i.offset + , s = 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(ne, { + attrs: { + clickable: !0, + icon: i.icon, + title: i.text + }, + key: i.value, + class: ws("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(st, { + class: ws("icon"), + attrs: { + color: l, + name: "success" + } + })]) + } + )) + , h = { + zIndex: n + }; + return "down" === a ? h.top = r + "px" : h.bottom = r + "px", + e("div", [e("div", { + directives: [{ + name: "show", + value: this.showWrapper + }], + ref: "wrapper", + style: h, + class: ws([a]), + on: { + click: this.onClickWrapper + } + }, [e(ct, { + attrs: { + overlay: s, + position: "down" === a ? "top" : "bottom", + duration: this.transition ? o : 0, + lazyRender: this.lazyRender, + overlayStyle: { + position: "absolute" + }, + closeOnClickOverlay: c + }, + class: ws("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")])])]) + } + }) + , Os = 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) + } + } + } + , Ts = Object(l.a)("dropdown-menu") + , $s = Ts[0] + , Bs = Ts[1] + , Is = $s({ + mixins: [Ee("vanDropdownMenu"), Os({ + 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: Bs("item", { + disabled: i.disabled + }), + on: { + click: function() { + i.disabled || t.toggleItem(n) + } + } + }, [e("span", { + class: [Bs("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: Bs() + }, [e("div", { + ref: "bar", + style: this.barStyle, + class: Bs("bar", { + opened: this.opened + }) + }, [i]), this.slots("default")]) + } + }) + , Ds = "van-empty-network-" + , Es = { + 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: Ds + "1", + x1: "64.022%", + y1: "100%", + x2: "64.022%", + y2: "0%" + } + }, [e("#FFF", 0, .5), e("#F2F3F5", 100)]), t("linearGradient", { + attrs: { + id: Ds + "2", + x1: "50%", + y1: "0%", + x2: "50%", + y2: "84.459%" + } + }, [e("#EBEDF0", 0), e("#DCDEE0", 100, 0)]), t("linearGradient", { + attrs: { + id: Ds + "3", + x1: "100%", + y1: "0%", + x2: "100%", + y2: "100%" + } + }, [e("#EAEDF0", 0), e("#DCDEE0", 100)]), t("linearGradient", { + attrs: { + id: Ds + "4", + x1: "100%", + y1: "100%", + x2: "100%", + y2: "0%" + } + }, [e("#EAEDF0", 0), e("#DCDEE0", 100)]), t("linearGradient", { + attrs: { + id: Ds + "5", + x1: "0%", + y1: "43.982%", + x2: "100%", + y2: "54.703%" + } + }, [e("#EAEDF0", 0), e("#DCDEE0", 100)]), t("linearGradient", { + attrs: { + id: Ds + "6", + x1: "94.535%", + y1: "43.837%", + x2: "5.465%", + y2: "54.948%" + } + }, [e("#EAEDF0", 0), e("#DCDEE0", 100)]), t("radialGradient", { + attrs: { + id: Ds + "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(#" + Ds + "1)", + transform: "matrix(-1 0 0 1 36 7)" + } + }), t("path", { + attrs: { + d: "M121 8h22.231v14H152v77.37h-31V8z", + fill: "url(#" + Ds + "1)", + transform: "translate(2 7)" + } + })]), t("path", { + attrs: { + fill: "url(#" + Ds + "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(#" + Ds + "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(#" + Ds + "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(#" + Ds + "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(#" + Ds + "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(#" + Ds + "4)", + transform: "rotate(-180 89.791 42.146)" + } + })]), t("g", { + attrs: { + transform: "translate(31 105)", + "fill-rule": "nonzero" + } + }, [t("rect", { + attrs: { + fill: "url(#" + Ds + "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(#" + Ds + "6)", + x: "15", + y: "12", + width: "18", + height: "6", + rx: "1.114" + } + })])])]) + } + } + , js = Object(l.a)("empty") + , Ps = js[0] + , Ls = js[1] + , Ns = ["error", "search", "default"] + , As = Ps({ + 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(Es); + var i = this.image; + return -1 !== Ns.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: Ls("image"), + style: e + }, [this.genImageContent()]) + }, + genDescription: function() { + var t = this.$createElement + , e = this.slots("description") || this.description; + if (e) + return t("p", { + class: Ls("description") + }, [e]) + }, + genBottom: function() { + var t = this.$createElement + , e = this.slots(); + if (e) + return t("div", { + class: Ls("bottom") + }, [e]) + } + }, + render: function() { + var t = arguments[0]; + return t("div", { + class: Ls() + }, [this.genImage(), this.genDescription(), this.genBottom()]) + } + }) + , Ms = Object(l.a)("form") + , zs = Ms[0] + , Fs = Ms[1] + , Vs = zs({ + 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 r = []; + e.getFieldsByNames(t).reduce((function(t, e) { + return t.then((function() { + if (!r.length) + return e.validate().then((function(t) { + t && r.push(t) + } + )) + } + )) + } + ), Promise.resolve()).then((function() { + r.length ? n(r) : i() + } + )) + } + )) + }, + validateFields: function(t) { + var e = this; + return new Promise((function(i, n) { + var r = e.getFieldsByNames(t); + Promise.all(r.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), + Ie(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: Fs(), + on: { + submit: this.onSubmit + } + }, [this.slots()]) + } + }) + , Rs = Object(l.a)("goods-action-icon") + , Hs = Rs[0] + , _s = Rs[1] + , Ws = Hs({ + mixins: [De("vanGoodsAction")], + props: n({}, Gt, { + dot: Boolean, + text: String, + icon: String, + color: String, + info: [Number, String], + badge: [Number, String], + iconClass: null + }), + methods: { + onClick: function(t) { + this.$emit("click", t), + Xt(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: _s("icon") + }, [i, e(J, { + attrs: { + dot: this.dot, + info: n + } + })]) : e(st, { + class: [_s("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: _s(), + on: { + click: this.onClick + } + }, [this.genIcon(), this.slots() || this.text]) + } + }) + , qs = Object(l.a)("grid") + , Ks = qs[0] + , Us = qs[1] + , Ys = Ks({ + mixins: [Ee("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: [Us(), (t = {}, + t[Tt] = this.border && !this.gutter, + t)] + }, [this.slots()]) + } + }) + , Xs = Object(l.a)("grid-item") + , Qs = Xs[0] + , Gs = Xs[1] + , Zs = Qs({ + mixins: [De("vanGrid")], + props: n({}, Gt, { + 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 + , r = 100 / n + "%" + , s = { + flexBasis: r + }; + if (e) + s.paddingTop = r; + else if (i) { + var o = Object(Y.a)(i); + s.paddingRight = o, + this.index >= n && (s.marginTop = o) + } + return s + }, + 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), + Xt(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: Gs("icon-wrapper") + }, [i, e(J, { + attrs: { + dot: this.dot, + info: n + } + })]) : this.icon ? e(st, { + attrs: { + name: this.icon, + dot: this.dot, + badge: n, + size: this.parent.iconSize, + classPrefix: this.iconPrefix + }, + class: Gs("icon") + }) : void 0 + }, + getText: function() { + var t = this.$createElement + , e = this.slots("text"); + return e || (this.text ? t("span", { + class: Gs("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, r = i.border, s = i.square, o = i.gutter, a = i.direction, l = i.clickable; + return e("div", { + class: [Gs({ + square: s + })], + style: this.style + }, [e("div", { + style: this.contentStyle, + attrs: { + role: l ? "button" : null, + tabindex: l ? 0 : null + }, + class: [Gs("content", [a, { + center: n, + square: s, + clickable: l, + surround: r && o + }]), (t = {}, + t[Ot] = r, + t)], + on: { + click: this.onClick + } + }, [this.genContent()])]) + } + }) + , Js = Object(l.a)("image-preview") + , to = Js[0] + , eo = Js[1] + , io = Object(l.a)("swipe") + , no = io[0] + , ro = io[1] + , so = no({ + mixins: [R, Ee("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 && !bn(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 + , r = 0; + r = this.loop ? n > 0 ? e > 0 ? -1 : 1 : 0 : -Math[e > 0 ? "ceil" : "floor"](e / t), + this.move({ + pace: r, + 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 ? Dt(e + t, -1, i) : Dt(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 = Dt(n, this.minOffset, 0)), + n + }, + move: function(t) { + var e = t.pace + , i = void 0 === e ? 0 : e + , n = t.offset + , r = void 0 === n ? 0 : n + , s = 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, r); + 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, + s && d !== l && this.$emit("change", this.activeIndicator) + } + }, + prev: function() { + var t = this; + this.correctPosition(), + this.resetTouchStatus(), + Object(Vi.b)((function() { + t.swiping = !1, + t.move({ + pace: -1, + emitChange: !0 + }) + } + )) + }, + next: function() { + var t = this; + this.correctPosition(), + this.resetTouchStatus(), + Object(Vi.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(Vi.b)((function() { + var n; + n = i.loop && t === i.count ? 0 === i.active ? 0 : t : t % i.count, + e.immediate ? Object(Vi.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 + , r = this.slots("indicator"); + return r || (this.showIndicators && i > 1 ? e("div", { + class: ro("indicators", { + vertical: this.vertical + }) + }, [Array.apply(void 0, Array(i)).map((function(i, r) { + return e("i", { + class: ro("indicator", { + active: r === n + }), + style: r === n ? t.indicatorStyle : null + }) + } + ))]) : void 0) + } + }, + render: function() { + var t = arguments[0]; + return t("div", { + class: ro() + }, [t("div", { + ref: "track", + style: this.trackStyle, + class: ro("track", { + vertical: this.vertical + }) + }, [this.slots()]), this.genIndicator()]) + } + }) + , oo = Object(l.a)("swipe-item") + , ao = oo[0] + , lo = oo[1] + , co = ao({ + mixins: [De("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 r = i.activeIndicator + , s = i.count - 1 + , o = 0 === r && i.loop ? s : r - 1 + , a = r === s && i.loop ? 0 : r + 1 + , l = t === r || t === o || t === a; + return l && (this.inited = !0), + l + } + }, + render: function() { + var t = arguments[0]; + return t("div", { + class: lo(), + style: this.style, + on: n({}, this.$listeners) + }, [this.shouldRender && this.slots()]) + } + }); + function uo(t) { + return Math.sqrt(Math.pow(t[0].clientX - t[1].clientX, 2) + Math.pow(t[0].clientY - t[1].clientY, 2)) + } + var ho, fo = { + mixins: [R], + 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 = Dt(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.startMoveX = this.moveX, + this.startMoveY = this.moveY, + this.moving = 1 === e.length && 1 !== this.scale, + this.zooming = 2 === e.length && !n, + this.zooming && (this.startScale = this.scale, + this.startDistance = uo(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 = Dt(i, -this.maxMoveX, this.maxMoveX), + this.moveY = Dt(n, -this.maxMoveY, this.maxMoveY) + } + if (this.zooming && 2 === e.length) { + var r = uo(e) + , s = this.startScale * r / this.startDistance; + this.setScale(s) + } + }, + 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 = Dt(this.moveX, -this.maxMoveX, this.maxMoveX), + this.moveY = Dt(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 + , e = this.offsetX + , i = void 0 === e ? 0 : e + , n = this.offsetY + , r = void 0 === n ? 0 : n + , s = new Date - this.touchStartTime; + i < 10 && r < 10 && s < 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(co, { + class: eo("swipe-item") + }, [t(an, { + attrs: { + src: this.src, + fit: "contain" + }, + class: eo("image", { + vertical: this.vertical + }), + style: this.imageStyle, + scopedSlots: e, + on: { + load: this.onLoad + } + })]) + } + }, po = to({ + mixins: [R, U({ + skipToggleEvent: !0 + }), W((function(t) { + t(window, "resize", this.resize, !0), + t(window, "orientationchange", this.resize, !0) + } + ))], + props: { + className: null, + closeable: Boolean, + asyncClose: Boolean, + 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: eo("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: eo("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: eo("cover") + }, [e]) + }, + genImages: function() { + var t = this + , e = this.$createElement; + return e(so, { + ref: "swipe", + attrs: { + lazyRender: !0, + loop: this.loop, + duration: this.swipeDuration, + initialSwipe: this.startPosition, + showIndicators: this.showIndicators, + indicatorColor: "white" + }, + class: eo("swipe"), + on: { + change: this.setActive + } + }, [this.images.map((function(i) { + return e(fo, { + 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(st, { + attrs: { + role: "button", + name: this.closeIcon + }, + class: eo("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: [eo(), this.className] + }, [this.genClose(), this.genImages(), this.genIndex(), this.genCover()]) : null]) + } + }), mo = { + 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", + startPosition: 0, + swipeDuration: 300, + showIndicators: !1, + closeOnPopstate: !0, + closeIconPosition: "top-right" + }, vo = function(t, e) { + if (void 0 === e && (e = 0), + !m.h) { + ho || (ho = new (a.a.extend(po))({ + el: document.createElement("div") + }), + document.body.appendChild(ho.$el), + ho.$on("change", (function(t) { + ho.onChange && ho.onChange(t) + } + )), + ho.$on("scale", (function(t) { + ho.onScale && ho.onScale(t) + } + ))); + var i = Array.isArray(t) ? { + images: t, + startPosition: e + } : t; + return n(ho, mo, i), + ho.$once("input", (function(t) { + ho.value = t + } + )), + ho.$once("closed", (function() { + ho.images = [] + } + )), + i.onClose && (ho.$off("close"), + ho.$once("close", i.onClose)), + ho + } + }; + vo.Component = po, + vo.install = function() { + a.a.use(po) + } + ; + var go = vo + , bo = Object(l.a)("index-anchor") + , yo = bo[0] + , So = bo[1] + , ko = yo({ + mixins: [De("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 + A(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: [So({ + sticky: i + }), (t = {}, + t[$t] = i, + t)] + }, [this.slots("default") || this.index])]) + } + }); + var xo = Object(l.a)("index-bar") + , wo = xo[0] + , Co = xo[1] + , Oo = wo({ + mixins: [R, Ee("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 (!bn(this.$el)) { + var e = A(this.scroller) + , i = this.getScrollerRect() + , n = this.children.map((function(e) { + return e.getRect(t.scroller, i) + } + )) + , r = this.getActiveAnchorIndex(e, n); + this.activeAnchorIndex = this.indexList[r], + this.sticky && this.children.forEach((function(s, o) { + if (o === r || o === r - 1) { + var a = s.$el.getBoundingClientRect(); + s.left = a.left, + s.width = a.width + } else + s.left = null, + s.width = null; + if (o === r) + s.active = !0, + s.top = Math.max(t.stickyOffsetTop, n[o].top - e) + i.top; + else if (o === r - 1) { + var l = n[r].top - e; + s.active = l > 0, + s.top = l + i.top - n[o].height + } else + s.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 + , r = document.elementFromPoint(i, n); + if (r) { + var s = r.dataset.index; + this.touchActiveIndex !== s && (this.touchActiveIndex = s, + this.scrollToElement(r)) + } + } + }, + scrollTo: function(t) { + var e = this.children.filter((function(e) { + return String(e.index) === t + } + )); + e[0] && (e[0].scrollIntoView(), + this.sticky && this.stickyOffsetTop && F(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: Co("index", { + active: n + }), + style: n ? t.highlightStyle : null, + attrs: { + "data-index": i + } + }, [i]) + } + )); + return e("div", { + class: Co() + }, [e("div", { + class: Co("sidebar"), + style: this.sidebarStyle, + on: { + click: this.onClick, + touchstart: this.touchStart, + touchmove: this.onTouchMove, + touchend: this.onTouchEnd, + touchcancel: this.onTouchEnd + } + }, [i]), this.slots("default")]) + } + }) + , To = i(10) + , $o = i.n(To).a + , Bo = Object(l.a)("list") + , Io = Bo[0] + , Do = Bo[1] + , Eo = Bo[2] + , jo = Io({ + 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, r = t.offset, s = t.direction; + if (!((e = n.getBoundingClientRect ? n.getBoundingClientRect() : { + top: 0, + bottom: n.innerHeight + }).bottom - e.top) || bn(i)) + return !1; + var o = t.$refs.placeholder.getBoundingClientRect(); + ("up" === s ? e.top - o.top <= r : o.bottom - e.bottom <= r) && (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 || Eo("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]) + } + }) + , Po = i(7) + , Lo = Object(l.a)("nav-bar") + , No = Lo[0] + , Ao = Lo[1] + , Mo = No({ + 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() { + this.placeholder && this.fixed && (this.height = this.$refs.navBar.getBoundingClientRect().height) + }, + methods: { + genLeft: function() { + var t = this.$createElement + , e = this.slots("left"); + return e || [this.leftArrow && t(st, { + class: Ao("arrow"), + attrs: { + name: "arrow-left" + } + }), this.leftText && t("span", { + class: Ao("text") + }, [this.leftText])] + }, + genRight: function() { + var t = this.$createElement + , e = this.slots("right"); + return e || (this.rightText ? t("span", { + class: Ao("text") + }, [this.rightText]) : void 0) + }, + genNavBar: function() { + var t, e = this.$createElement; + return e("div", { + ref: "navBar", + style: { + zIndex: this.zIndex + }, + class: [Ao({ + fixed: this.fixed, + "safe-area-inset-top": this.safeAreaInsetTop + }), (t = {}, + t[$t] = this.border, + t)] + }, [e("div", { + class: Ao("content") + }, [this.hasLeft() && e("div", { + class: Ao("left"), + on: { + click: this.onClickLeft + } + }, [this.genLeft()]), e("div", { + class: [Ao("title"), "van-ellipsis"] + }, [this.slots("title") || this.title]), this.hasRight() && e("div", { + class: Ao("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: Ao("placeholder"), + style: { + height: this.height + "px" + } + }, [this.genNavBar()]) : this.genNavBar() + } + }) + , zo = Object(l.a)("notice-bar") + , Fo = zo[0] + , Vo = zo[1] + , Ro = Fo({ + mixins: [W((function(t) { + t(window, "pageshow", this.start) + } + ))], + 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: "start", + text: { + handler: "start", + immediate: !0 + } + }, + created: function() { + var t = this; + this.vanPopup && this.vanPopup.onReopen((function() { + t.start() + } + )) + }, + activated: function() { + this.start() + }, + 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(Vi.c)((function() { + Object(Vi.b)((function() { + t.offset = -t.contentWidth, + t.duration = (t.contentWidth + t.wrapWidth) / t.speed, + t.$emit("replay") + } + )) + } + )) + }, + reset: function() { + this.offset = 0, + this.duration = 0, + this.wrapWidth = 0, + this.contentWidth = 0 + }, + start: function() { + var t = this + , e = Object(m.c)(this.delay) ? 1e3 * this.delay : 0; + this.reset(), + clearTimeout(this.startTimer), + this.startTimer = setTimeout((function() { + var e = t.$refs + , i = e.wrap + , n = e.content; + if (i && n && !1 !== t.scrollable) { + var r = i.getBoundingClientRect().width + , s = n.getBoundingClientRect().width; + (t.scrollable || s > r) && Object(Vi.b)((function() { + t.offset = -s, + t.duration = s / t.speed, + t.wrapWidth = r, + t.contentWidth = s + } + )) + } + } + ), e) + } + }, + render: function() { + var t = this + , e = arguments[0] + , i = this.slots + , n = this.mode + , r = this.leftIcon + , s = 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 || (r ? e(st, { + class: Vo("left-icon"), + attrs: { + name: r + } + }) : void 0) + } + function c() { + var t, r = i("right-icon"); + return r || ("closeable" === n ? t = "cross" : "link" === n && (t = "arrow"), + t ? e(st, { + class: Vo("right-icon"), + attrs: { + name: t + }, + on: { + click: s + } + }) : void 0) + } + return e("div", { + attrs: { + role: "alert" + }, + directives: [{ + name: "show", + value: this.show + }], + class: Vo({ + wrapable: this.wrapable + }), + style: o, + on: { + click: function(e) { + t.$emit("click", e) + } + } + }, [l(), e("div", { + ref: "wrap", + class: Vo("wrap"), + attrs: { + role: "marquee" + } + }, [e("div", { + ref: "content", + class: [Vo("content"), { + "van-ellipsis": !1 === this.scrollable && !this.wrapable + }], + style: a, + on: { + transitionend: this.onTransitionEnd + } + }, [this.slots() || this.text])]), c()]) + } + }) + , Ho = Object(l.a)("notify") + , _o = Ho[0] + , Wo = Ho[1]; + function qo(t, e, i, n) { + var r = { + color: e.color, + background: e.background + }; + return t(ct, s()([{ + attrs: { + value: e.value, + position: "top", + overlay: !1, + duration: .2, + lockScroll: !1 + }, + style: r, + class: [Wo([e.type]), e.className] + }, h(n, !0)]), [(null == i.default ? void 0 : i.default()) || e.message]) + } + qo.props = n({}, K, { + color: String, + message: [Number, String], + duration: [Number, String], + className: null, + background: String, + getContainer: [String, Function], + type: { + type: String, + default: "danger" + } + }); + var Ko, Uo, Yo = _o(qo); + function Xo(t) { + var e; + if (!m.h) + return Uo || (Uo = f(Yo, { + on: { + click: function(t) { + Uo.onClick && Uo.onClick(t) + }, + close: function() { + Uo.onClose && Uo.onClose() + }, + opened: function() { + Uo.onOpened && Uo.onOpened() + } + } + })), + t = n({}, Xo.currentOptions, (e = t, + Object(m.f)(e) ? e : { + message: e + })), + n(Uo, t), + clearTimeout(Ko), + t.duration && t.duration > 0 && (Ko = setTimeout(Xo.clear, t.duration)), + Uo + } + Xo.clear = function() { + Uo && (Uo.value = !1) + } + , + Xo.currentOptions = { + type: "danger", + value: !0, + message: "", + color: void 0, + background: void 0, + duration: 3e3, + className: "", + onClose: null, + onClick: null, + onOpened: null + }, + Xo.setDefaultOptions = function(t) { + n(Xo.currentOptions, t) + } + , + Xo.resetDefaultOptions = function() { + Xo.currentOptions = { + type: "danger", + value: !0, + message: "", + color: void 0, + background: void 0, + duration: 3e3, + className: "", + onClose: null, + onClick: null, + onOpened: null + } + } + , + Xo.install = function() { + a.a.use(Yo) + } + , + Xo.Component = Yo, + a.a.prototype.$notify = Xo; + var Qo = Xo + , Go = { + 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" + } + })]) + } + } + , Zo = { + 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" + } + })]) + } + } + , Jo = Object(l.a)("key") + , ta = Jo[0] + , ea = Jo[1] + , ia = ta({ + mixins: [R], + 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: ea("loading-icon") + }) : i ? n || t(Go, { + class: ea("delete-icon") + }) : e ? n || t(Zo, { + class: ea("collapse-icon") + }) : n + } + }, + render: function() { + var t = arguments[0]; + return t("div", { + class: ea("wrapper", { + wider: this.wider + }) + }, [t("div", { + attrs: { + role: "button", + tabindex: "0" + }, + class: ea([this.color, { + large: this.large, + active: this.active, + delete: "delete" === this.type + }]) + }, [this.genContent()])]) + } + }) + , na = Object(l.a)("number-keyboard") + , ra = na[0] + , sa = na[1] + , oa = ra({ + 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 + , r = this.slots("title-left") + , s = n && "default" === i; + if (e || s || r) + return t("div", { + class: sa("header") + }, [r && t("span", { + class: sa("title-left") + }, [r]), e && t("h2", { + class: sa("title") + }, [e]), s && t("button", { + attrs: { + type: "button" + }, + class: sa("close"), + on: { + click: this.onClose + } + }, [n])]) + }, + genKeys: function() { + var t = this + , e = this.$createElement; + return this.keys.map((function(i) { + return e(ia, { + 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: sa("sidebar") + }, [this.showDeleteKey && t(ia, { + attrs: { + large: !0, + text: this.deleteButtonText, + type: "delete" + }, + on: { + press: this.onPress + } + }, [this.slots("delete")]), t(ia, { + 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: sa({ + unfit: !this.safeAreaInsetBottom, + "with-title": e + }), + on: { + touchstart: S, + animationend: this.onAnimationEnd, + webkitAnimationEnd: this.onAnimationEnd + } + }, [e, t("div", { + class: sa("body") + }, [t("div", { + class: sa("keys") + }, [this.genKeys()]), this.genSidebar()])])]) + } + }) + , aa = Object(l.a)("pagination") + , la = aa[0] + , ca = aa[1] + , ua = aa[2]; + function ha(t, e, i) { + return { + number: t, + text: e, + active: i + } + } + var da = la({ + 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 + , r = e + , s = i < e; + s && (r = (n = Math.max(this.value - Math.floor(i / 2), 1)) + i - 1) > e && (n = (r = e) - i + 1); + for (var o = n; o <= r; o++) { + var a = ha(o, o, o === this.value); + t.push(a) + } + if (s && i > 0 && this.forceEllipses) { + if (n > 1) { + var l = ha(n - 1, "...", !1); + t.unshift(l) + } + if (r < e) { + var c = ha(r + 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], r = this.value, s = "multi" !== this.mode, o = function(t) { + return function() { + i.select(t, !0) + } + }; + return n("ul", { + class: ca({ + simple: s + }) + }, [n("li", { + class: [ca("item", { + disabled: 1 === r + }), ca("prev"), Ot], + on: { + click: o(r - 1) + } + }, [(null != (t = this.slots("prev-text")) ? t : this.prevText) || ua("prev")]), this.pages.map((function(t) { + var e; + return n("li", { + class: [ca("item", { + active: t.active + }), ca("page"), Ot], + on: { + click: o(t.number) + } + }, [null != (e = i.slots("page", t)) ? e : t.text]) + } + )), s && n("li", { + class: ca("page-desc") + }, [this.slots("pageDesc") || r + "/" + this.count]), n("li", { + class: [ca("item", { + disabled: r === this.count + }), ca("next"), Ot], + on: { + click: o(r + 1) + } + }, [(null != (e = this.slots("next-text")) ? e : this.nextText) || ua("next")])]) + } + }) + , fa = Object(l.a)("panel") + , pa = fa[0] + , ma = fa[1]; + function va(t, e, i, n) { + return t(qn, s()([{ + class: ma(), + scopedSlots: { + default: function() { + return [i.header ? i.header() : t(ne, { + attrs: { + icon: e.icon, + label: e.desc, + title: e.title, + value: e.status, + valueClass: ma("header-value") + }, + class: ma("header") + }), t("div", { + class: ma("content") + }, [i.default && i.default()]), i.footer && t("div", { + class: [ma("footer"), Tt] + }, [i.footer()])] + } + } + }, h(n, !0)])) + } + va.props = { + icon: String, + desc: String, + title: String, + status: String + }; + var ga = pa(va) + , ba = Object(l.a)("password-input") + , ya = ba[0] + , Sa = ba[1]; + function ka(t, e, i, n) { + for (var r, 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), Sa("item", { + focus: S + })], + style: k + }, [o ? t("i", { + style: { + visibility: b ? "visible" : "hidden" + } + }) : b, S && t("div", { + class: Sa("cursor") + })])) + } + return t("div", { + class: Sa() + }, [t("ul", s()([{ + class: [Sa("security"), (r = {}, + r["van-hairline--surround"] = !c, + r)], + on: { + touchstart: function(t) { + t.stopPropagation(), + d(n, "focus", t) + } + } + }, h(n, !0)]), [m]), p && t("div", { + class: Sa(f ? "error-info" : "info") + }, [p])]) + } + ka.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 xa = ya(ka) + , wa = i(8) + , Ca = Object(l.a)("popover") + , Oa = Ca[0] + , Ta = Ca[1] + , $a = Oa({ + mixins: [Os({ + 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 && (this.popper.destroy(), + this.popper = null) + }, + methods: { + createPopper: function() { + return Object(wa.createPopper)(this.$refs.wrapper, this.$refs.popover.$el, { + placement: this.placement, + modifiers: [{ + name: "computeStyles", + options: { + adaptive: !1, + gpuAcceleration: !1 + } + }, n({}, wa.offsetModifier, { + options: { + offset: this.offset + } + })] + }) + }, + 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 + , r = t.icon + , s = t.text + , o = t.disabled + , a = t.className; + return n("div", { + attrs: { + role: "menuitem" + }, + class: [Ta("action", { + disabled: o, + "with-icon": r + }), a], + on: { + click: function() { + return i.onClickAction(t, e) + } + } + }, [r && n(st, { + attrs: { + name: r + }, + class: Ta("action-icon") + }), n("div", { + class: [Ta("action-text"), $t] + }, [s])]) + }, + 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: Ta("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: Ta([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: Ta("arrow") + }), t("div", { + class: Ta("content"), + attrs: { + role: "menu" + } + }, [this.slots("default") || this.actions.map(this.renderAction)])]), this.slots("reference")]) + } + }) + , Ba = Object(l.a)("progress") + , Ia = Ba[0] + , Da = Ba[1] + , Ea = Ia({ + 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 + "%" + , r = this.showPivot && n + , s = this.inactive ? "#cacaca" : this.color + , o = { + color: this.textColor, + left: (this.progressWidth - this.pivotWidth) * i / 100 + "px", + background: this.pivotColor || s + } + , a = { + background: s, + width: this.progressWidth * i / 100 + "px" + } + , l = { + background: this.trackColor, + height: Object(Y.a)(this.strokeWidth) + }; + return t("div", { + class: Da(), + style: l + }, [t("span", { + class: Da("portion"), + style: a + }, [r && t("span", { + ref: "pivot", + style: o, + class: Da("pivot") + }, [n])])]) + } + }) + , ja = Object(l.a)("pull-refresh") + , Pa = ja[0] + , La = ja[1] + , Na = ja[2] + , Aa = ["pulling", "loosing", "success"] + , Ma = Pa({ + mixins: [R], + 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 === A(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 r = [] + , s = this[e + "Text"] || Na(e); + return -1 !== Aa.indexOf(e) && r.push(t("div", { + class: La("text") + }, [s])), + "loading" === e && r.push(t(vt, { + attrs: { + size: "16" + } + }, [s])), + r + }, + 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: La() + }, [t("div", { + ref: "track", + class: La("track"), + style: e + }, [t("div", { + class: La("head"), + style: this.headStyle + }, [this.genStatus()]), this.slots()])]) + } + }) + , za = Object(l.a)("rate") + , Fa = za[0] + , Va = za[1]; + var Ra = Fa({ + mixins: [R, ei], + 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 = [], r = 1; r <= this.count; r++) + n.push((t = this.value, + e = r, + 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, r = this.$createElement, s = 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 + }), + r("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: Va("item") + }, [r(st, { + attrs: { + size: this.sizeWithUnit, + name: f ? s : l, + color: c ? h : f ? o : u, + classPrefix: this.iconPrefix, + "data-score": d + }, + class: Va("icon", { + disabled: c, + full: f + }), + on: { + click: function() { + n.select(d) + } + } + }), this.allowHalf && r(st, { + attrs: { + size: this.sizeWithUnit, + name: p ? l : s, + color: c ? h : p ? u : o, + classPrefix: this.iconPrefix, + "data-score": d - .5 + }, + class: Va("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: Va({ + readonly: this.readonly, + disabled: this.disabled + }), + attrs: { + tabindex: "0", + role: "radiogroup" + } + }, [this.list.map((function(e, i) { + return t.genStar(e, i) + } + ))]) + } + }) + , Ha = Object(l.a)("row") + , _a = Ha[0] + , Wa = Ha[1] + , qa = _a({ + mixins: [Ee("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, r) { + if (0 === r) + e.push({ + right: n + }); + else { + var s = t - e[i - 1].right + , o = n - s; + e.push({ + left: s, + right: o + }) + } + } + )) + } + )), + e + } + } + }, + methods: { + onClick: function(t) { + this.$emit("click", t) + } + }, + render: function() { + var t, e = arguments[0], i = this.align, n = this.justify, r = "flex" === this.type; + return e(this.tag, { + class: Wa((t = { + flex: r + }, + t["align-" + i] = r && i, + t["justify-" + n] = r && n, + t)), + on: { + click: this.onClick + } + }, [this.slots()]) + } + }) + , Ka = Object(l.a)("search") + , Ua = Ka[0] + , Ya = Ka[1] + , Xa = Ka[2]; + function Qa(t, e, i, r) { + var o = { + attrs: r.data.attrs, + on: n({}, r.listeners, { + keypress: function(t) { + 13 === t.keyCode && (k(t), + d(r, "search", e.value)), + d(r, "keypress", t) + } + }) + } + , a = h(r); + return a.attrs = void 0, + t("div", s()([{ + class: Ya({ + "show-action": e.showAction + }), + style: { + background: e.background + } + }, a]), [null == i.left ? void 0 : i.left(), t("div", { + class: Ya("content", e.shape) + }, [function() { + if (i.label || e.label) + return t("div", { + class: Ya("label") + }, [i.label ? i.label() : e.label]) + }(), t(ce, s()([{ + 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: Ya("action"), + attrs: { + role: "button", + tabindex: "0" + }, + on: { + click: function() { + i.action || (d(r, "input", ""), + d(r, "cancel")) + } + } + }, [i.action ? i.action() : e.actionText || Xa("cancel")]) + }()]) + } + Qa.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 Ga = Ua(Qa) + , Za = ["qq", "link", "weibo", "wechat", "poster", "qrcode", "weapp-qrcode", "wechat-moments"] + , Ja = Object(l.a)("share-sheet") + , tl = Ja[0] + , el = Ja[1] + , il = Ja[2] + , nl = tl({ + props: n({}, K, { + 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 !== Za.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: el("header") + }, [e && t("h2", { + class: el("title") + }, [e]), i && t("span", { + class: el("description") + }, [i])]) + }, + genOptions: function(t, e) { + var i = this + , n = this.$createElement; + return n("div", { + class: el("options", { + border: e + }) + }, [t.map((function(t, e) { + return n("div", { + attrs: { + role: "button", + tabindex: "0" + }, + class: [el("option"), t.className], + on: { + click: function() { + i.onSelect(t, e) + } + } + }, [n("img", { + attrs: { + src: i.getIconURL(t.icon) + }, + class: el("icon") + }), t.name && n("span", { + class: el("name") + }, [t.name]), t.description && n("span", { + class: el("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 : il("cancel"); + if (i) + return e("button", { + attrs: { + type: "button" + }, + class: el("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: el(), + on: { + input: this.toggle, + "click-overlay": this.onClickOverlay + } + }, [this.genHeader(), this.genRows(), this.genCancelText()]) + } + }) + , rl = Object(l.a)("sidebar") + , sl = rl[0] + , ol = rl[1] + , al = sl({ + mixins: [Ee("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: ol() + }, [this.slots()]) + } + }) + , ll = Object(l.a)("sidebar-item") + , cl = ll[0] + , ul = ll[1] + , hl = cl({ + mixins: [De("vanSidebar")], + props: n({}, Gt, { + 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), + Xt(this.$router, this)) + } + }, + render: function() { + var t, e, i = arguments[0]; + return i("a", { + class: ul({ + select: this.select, + disabled: this.disabled + }), + on: { + click: this.onClick + } + }, [i("div", { + class: ul("text") + }, [null != (t = this.slots("title")) ? t : this.title, i(J, { + attrs: { + dot: this.dot, + info: null != (e = this.badge) ? e : this.info + }, + class: ul("info") + })])]) + } + }) + , dl = Object(l.a)("skeleton") + , fl = dl[0] + , pl = dl[1]; + function ml(t, e, i, n) { + if (!e.loading) + return i.default && i.default(); + return t("div", s()([{ + class: pl({ + animate: e.animate, + round: e.round + }) + }, h(n)]), [function() { + if (e.avatar) { + var i = Object(Y.a)(e.avatarSize); + return t("div", { + class: pl("avatar", e.avatarShape), + style: { + width: i, + height: i + } + }) + } + }(), t("div", { + class: pl("content") + }, [function() { + if (e.title) + return t("h3", { + class: pl("title"), + style: { + width: Object(Y.a)(e.titleWidth) + } + }) + }(), function() { + for (var i, n = [], r = e.rowWidth, s = 0; s < e.row; s++) + n.push(t("div", { + class: pl("row"), + style: { + width: Object(Y.a)((i = s, + "100%" === r && i === +e.row - 1 ? "60%" : Array.isArray(r) ? r[i] : r)) + } + })); + return n + }()])]) + } + ml.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 vl = fl(ml) + , gl = { + QUOTA_LIMIT: 0, + STOCK_LIMIT: 1 + } + , bl = { + LIMIT_TYPE: gl, + UNSELECTED_SKU_VALUE_ID: "" + } + , yl = function(t) { + var e = {}; + return t.forEach((function(t) { + e[t.k_s] = t.v + } + )), + e + } + , Sl = function(t, e) { + var i = Object.keys(e).filter((function(t) { + return "" !== e[t] + } + )); + return t.length === i.length + } + , kl = function(t, e) { + return t.filter((function(t) { + return Object.keys(e).every((function(i) { + return String(t[i]) === String(e[i]) + } + )) + } + ))[0] + } + , xl = function(t, e) { + var i = yl(t); + return Object.keys(e).reduce((function(t, n) { + var r = i[n] + , s = e[n]; + if ("" !== s) { + var o = r.filter((function(t) { + return t.id === s + } + ))[0]; + o && t.push(o) + } + return t + } + ), []) + } + , wl = function(t, e, i) { + var r, s = i.key, o = i.valueId, a = n({}, e, ((r = {})[s] = o, + r)), 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 + } + , Cl = 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, r) { + return e[r].forEach((function(e) { + t.push(n({}, i[r][e])) + } + )), + t + } + ), []) + } + , Ol = function(t, e) { + var i = []; + return (t || []).forEach((function(t) { + if (e[t.k_id] && e[t.k_id].length > 0) { + var r = []; + t.v.forEach((function(i) { + e[t.k_id].indexOf(i.id) > -1 && r.push(n({}, i)) + } + )), + i.push(n({}, t, { + v: r + })) + } + } + )), + i + } + , Tl = { + normalizeSkuTree: yl, + getSkuComb: kl, + getSelectedSkuValues: xl, + isAllSelected: Sl, + isSkuChoosable: wl, + getSelectedPropValues: Cl, + getSelectedProperties: Ol + } + , $l = Object(l.a)("sku-header") + , Bl = $l[0] + , Il = $l[1]; + function Dl(t, e, i, r) { + 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 r = e[t.k_s]; + if (r && t.v) { + var s = t.v.filter((function(t) { + return t.id === r + } + ))[0] || {} + , o = s.previewImgUrl || s.imgUrl || s.img_url; + if (o) + return i = n({}, s, { + ks: t.k_s, + imgUrl: o + }), + !0 + } + return !1 + } + )), + i + }(a, u), m = p ? p.imgUrl : l.picture; + return t("div", s()([{ + class: [Il(), $t] + }, h(r)]), [f && t(an, { + attrs: { + fit: "cover", + src: m + }, + class: Il("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: Il("goods-info") + }, [null == i.default ? void 0 : i.default()])]) + } + Dl.props = { + sku: Object, + goods: Object, + skuEventBus: Object, + selectedSku: Object, + showHeaderImage: Boolean + }; + var El = Bl(Dl) + , jl = Object(l.a)("sku-header-item") + , Pl = jl[0] + , Ll = jl[1]; + var Nl = Pl((function(t, e, i, n) { + return t("div", s()([{ + class: Ll() + }, h(n)]), [i.default && i.default()]) + } + )) + , Al = Object(l.a)("sku-row") + , Ml = Al[0] + , zl = Al[1] + , Fl = Al[2] + , Vl = Ml({ + mixins: [Ee("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: zl("title") + }, [this.skuRow.k, this.skuRow.is_multiple && t("span", { + class: zl("title-multiple") + }, ["(", Fl("multiple"), ")"])]) + }, + genIndicator: function() { + var t = this.$createElement; + if (this.scrollable) { + var e = { + transform: "translate3d(" + 20 * this.progress + "px, 0, 0)" + }; + return t("div", { + class: zl("indicator-wrapper") + }, [t("div", { + class: zl("indicator") + }, [t("div", { + class: zl("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: zl("scroller"), + ref: "scroller" + }, [t("div", { + class: zl("row"), + ref: "row" + }, [i]), n.length ? t("div", { + class: zl("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 + , r = n.scroller + , s = n.row + , o = i.find((function(e) { + return +e.skuValue.id == +t + } + )); + if (r && s && o && o.$el) { + var a = o.$el + , l = a.offsetLeft - (r.offsetWidth - a.offsetWidth) / 2; + r.scrollLeft = l + } + } + } + }, + render: function() { + var t = arguments[0]; + return t("div", { + class: [zl(), $t] + }, [this.genTitle(), this.genContent(), this.genIndicator()]) + } + }) + , Rl = (0, + Object(l.a)("sku-row-item")[0])({ + mixins: [De("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 || wl(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(an, { + 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 ? zl("image-item") : zl("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(st, { + attrs: { + name: "enlarge" + }, + class: i + "-img-icon", + on: { + click: this.onPreviewImg + } + })]) + } + }) + , Hl = (0, + Object(l.a)("sku-row-prop-item")[0])({ + props: { + skuValue: Object, + skuKeyStr: String, + skuEventBus: Object, + selectedProp: Object, + multiple: 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.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 + }], + on: { + click: this.onSelect + } + }, [t("span", { + class: "van-sku-row__item-name" + }, [this.skuValue.name])]) + } + }) + , _l = Object(l.a)("stepper") + , Wl = _l[0] + , ql = _l[1]; + function Kl(t, e) { + return String(t) === String(e) + } + var Ul = Wl({ + mixins: [ei], + 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 Kl(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) { + Kl(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); + Kl(t, this.currentValue) || (this.currentValue = t) + }, + formatNumber: function(t) { + return jt(String(t), !this.integer) + }, + format: function(t) { + return this.allowEmpty && "" === t || (t = "" === (t = this.formatNumber(t)) ? 0 : +t, + t = Object(Ni.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) + } + Kl(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), + se() + }, + 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: ql([this.theme]) + }, [e("button", s()([{ + directives: [{ + name: "show", + value: this.showMinus + }], + attrs: { + type: "button" + }, + style: this.buttonStyle, + class: ql("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: ql("input"), + domProps: { + value: this.currentValue + }, + style: this.inputStyle, + on: { + input: this.onInput, + focus: this.onFocus, + blur: this.onBlur, + mousedown: this.onMousedown + } + }), e("button", s()([{ + directives: [{ + name: "show", + value: this.showPlus + }], + attrs: { + type: "button" + }, + style: this.buttonStyle, + class: ql("plus", { + disabled: this.plusDisabled + }) + }, i("plus")]))]) + } + }) + , Yl = Object(l.a)("sku-stepper") + , Xl = Yl[0] + , Ql = Yl[2] + , Gl = gl.QUOTA_LIMIT + , Zl = gl.STOCK_LIMIT + , Jl = Xl({ + 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: Zl + } + }, + 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 = Gl) : (t = this.stock, + this.limitType = Zl), + 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(Ql("quotaStart", this.startSaleNum)), + this.quota > 0 && n.push(Ql("quotaLimit", this.quota)), + i = n.join(Ql("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 || Ql("num")]), e(Ul, { + 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 tc(t) { + return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(t) + } + function ec(t) { + return Array.isArray(t) ? t : [t] + } + function ic(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 ec(t).some((function(t) { + return !!t && (Object(m.e)(e) ? e(t) : t.size > e) + } + )) + } + var rc = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i; + function sc(t) { + return !!t.isImage || (t.file && t.file.type ? 0 === t.file.type.indexOf("image") : t.url ? (e = t.url, + rc.test(e)) : !!t.content && 0 === t.content.indexOf("data:image")); + var e + } + var oc = Object(l.a)("uploader") + , ac = oc[0] + , lc = oc[1] + , cc = ac({ + inheritAttrs: !1, + mixins: [ei], + model: { + prop: "fileList" + }, + props: { + disabled: 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 + } + }, + 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 ic(t, e.resultType) + } + ))).then((function(n) { + var r = t.map((function(t, e) { + var i = { + file: t, + status: "", + message: "" + }; + return n[e] && (i.content = n[e]), + i + } + )); + e.onAfterRead(r, i) + } + )) + } else + ic(t, this.resultType).then((function(n) { + var r = { + file: t, + status: "", + message: "" + }; + n && (r.content = n), + e.onAfterRead(r, i) + } + )) + }, + onAfterRead: function(t, e) { + var i = this; + this.resetInput(); + var n = t; + if (e) { + var r = t; + Array.isArray(t) ? (r = [], + n = [], + t.forEach((function(t) { + t.file && (nc(t.file, i.maxSize) ? r.push(t) : n.push(t)) + } + ))) : n = null, + this.$emit("oversize", r, this.getDetail()) + } + (Array.isArray(n) ? Boolean(n.length) : Boolean(n)) && (this.$emit("input", [].concat(this.fileList, ec(n))), + this.afterRead && this.afterRead(n, this.getDetail())) + }, + onDelete: function(t, e) { + var i, n = this, r = null != (i = t.beforeDelete) ? i : this.beforeDelete; + if (r) { + var s = r(t, this.getDetail(e)); + if (!s) + return; + if (Object(m.g)(s)) + return void s.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 = "") + }, + onPreviewImage: function(t) { + var e = this; + if (this.previewFullImage) { + var i = this.fileList.filter((function(t) { + return sc(t) + } + )) + , r = i.map((function(t) { + return t.content || t.url + } + )); + this.imagePreview = go(n({ + images: r, + 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 r = "failed" === i ? e(st, { + attrs: { + name: "close" + }, + class: lc("mask-icon") + }) : e(vt, { + class: lc("loading") + }) + , s = Object(m.c)(n) && "" !== n; + return e("div", { + class: lc("mask") + }, [r, s && e("div", { + class: lc("mask-message") + }, [n])]) + } + }, + genPreviewItem: function(t, e) { + var i, r, s, o = this, a = this.$createElement, l = null != (i = t.deletable) ? i : this.deletable, c = "uploading" !== t.status && l && a("div", { + class: lc("preview-delete"), + on: { + click: function(i) { + i.stopPropagation(), + o.onDelete(t, e) + } + } + }, [a(st, { + attrs: { + name: "cross" + }, + class: lc("preview-delete-icon") + })]), u = this.slots("preview-cover", n({ + index: e + }, t)), h = u && a("div", { + class: lc("preview-cover") + }, [u]), d = null != (r = t.previewSize) ? r : this.previewSize, f = null != (s = t.imageFit) ? s : this.imageFit, p = sc(t) ? a(an, { + attrs: { + fit: f, + src: t.content || t.url, + width: d, + height: d, + lazyLoad: this.lazyLoad + }, + class: lc("preview-image"), + on: { + click: function() { + o.onPreviewImage(t) + } + } + }, [h]) : a("div", { + class: lc("file"), + style: { + width: this.previewSizeWithUnit, + height: this.previewSizeWithUnit + } + }, [a(st, { + class: lc("file-icon"), + attrs: { + name: "description" + } + }), a("div", { + class: [lc("file-name"), "van-ellipsis"] + }, [t.file ? t.file.name : t.url]), h]); + return a("div", { + class: lc("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) && this.showUpload) { + var e, i = this.slots(), r = t("input", { + attrs: n({}, this.$attrs, { + type: "file", + accept: this.accept, + disabled: this.disabled + }), + ref: "input", + class: lc("input"), + on: { + change: this.onChange + } + }); + if (i) + return t("div", { + class: lc("input-wrapper"), + key: "input-wrapper" + }, [i, r]); + if (this.previewSize) { + var s = this.previewSizeWithUnit; + e = { + width: s, + height: s + } + } + return t("div", { + class: lc("upload"), + style: e + }, [t(st, { + attrs: { + name: this.uploadIcon + }, + class: lc("upload-icon") + }), this.uploadText && t("span", { + class: lc("upload-text") + }, [this.uploadText]), r]) + } + } + }, + render: function() { + var t = arguments[0]; + return t("div", { + class: lc() + }, [t("div", { + class: lc("wrapper", { + disabled: this.disabled + }) + }, [this.genPreviewList(), this.genUpload()])]) + } + }) + , uc = Object(l.a)("sku-img-uploader") + , hc = uc[0] + , dc = uc[2] + , fc = hc({ + props: { + value: String, + uploadImg: 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 = dc("uploading"), + this.uploadImg(t.file, t.content).then((function(i) { + t.status = "done", + e.$emit("input", i) + } + )).catch((function() { + t.status = "failed", + t.message = dc("fail") + } + )) + }, + onOversize: function() { + this.$toast(dc("oversize", this.maxSize)) + }, + onDelete: function() { + this.$emit("input", "") + } + }, + render: function() { + var t = this + , e = arguments[0]; + return e(cc, { + attrs: { + maxCount: 1, + afterRead: this.afterReadFile, + maxSize: 1024 * this.maxSize * 1024 + }, + on: { + oversize: this.onOversize, + delete: this.onDelete + }, + model: { + value: t.fileList, + callback: function(e) { + t.fileList = e + } + } + }) + } + }); + var pc = Object(l.a)("sku-datetime-field") + , mc = pc[0] + , vc = pc[2] + , gc = mc({ + 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 vc("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 + , r = t.getDate() + , s = i + "-" + Object(Nr.b)(n) + "-" + Object(Nr.b)(r); + if ("datetime" === e) { + var o = t.getHours() + , a = t.getMinutes(); + s += " " + Object(Nr.b)(o) + ":" + Object(Nr.b)(a) + } + return s + }(t, this.type)), + this.$emit("input", e), + this.showDatePicker = !1 + }, + onCancel: function() { + this.showDatePicker = !1 + }, + formatter: function(t, e) { + return "" + e + vc("format." + t) + } + }, + render: function() { + var t = this + , e = arguments[0]; + return e(ce, { + 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(ms, { + attrs: { + type: this.type, + title: this.title, + value: this.currentDate, + minDate: this.minDate, + formatter: this.formatter + }, + on: { + cancel: this.onCancel, + confirm: this.onConfirm + } + })])]) + } + }) + , bc = Object(l.a)("sku-messages") + , yc = bc[0] + , Sc = bc[1] + , kc = bc[2] + , xc = yc({ + 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 r = t.messages[n]; + e[r.name] = i.value + } + )), + e + }, + getPlaceholder: function(t) { + var e = 1 == +t.multiple ? "textarea" : t.type + , i = this.messageConfig.placeholderMap || {}; + return t.placeholder || i[e] || kc("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 kc("image" === n.type ? "upload" : "fill") + n.name + } else { + if ("tel" === n.type && !Object(Ni.b)(i)) + return kc("invalid.tel"); + if ("mobile" === n.type && !/^\d{6,20}$/.test(i)) + return kc("invalid.mobile"); + if ("email" === n.type && !tc(i)) + return kc("invalid.email"); + if ("id_no" === n.type && (i.length < 15 || i.length > 18)) + return kc("invalid.id_no") + } + } + }, + getFormatter: function(t) { + return function(e) { + return "mobile" === t.type || "tel" === t.type ? e.replace(/[^\d.]/g, "") : e + } + }, + genMessage: function(t, e) { + var i = this + , n = this.$createElement; + return "image" === t.type ? n(ne, { + key: this.goodsId + "-" + e, + attrs: { + title: t.name, + required: "1" === String(t.required), + valueClass: Sc("image-cell-value") + }, + class: Sc("image-cell") + }, [n(fc, { + attrs: { + maxSize: this.messageConfig.uploadMaxSize, + uploadImg: this.messageConfig.uploadImg + }, + model: { + value: i.messageValues[e].value, + callback: function(t) { + i.$set(i.messageValues[e], "value", t) + } + } + }), n("div", { + class: Sc("image-cell-label") + }, [kc("imageLabel")])]) : ["date", "time"].indexOf(t.type) > -1 ? n(gc, { + 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(ce, { + 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) + }, + key: this.goodsId + "-" + e, + model: { + value: i.messageValues[e].value, + callback: function(t) { + i.$set(i.messageValues[e], "value", t) + } + } + }) + } + }, + render: function() { + var t = arguments[0]; + return t("div", { + class: Sc() + }, [this.messages.map(this.genMessage)]) + } + }) + , wc = Object(l.a)("sku-actions") + , Cc = wc[0] + , Oc = wc[1] + , Tc = wc[2]; + function $c(t, e, i, n) { + var r = function(t) { + return function() { + e.skuEventBus.$emit(t) + } + }; + return t("div", s()([{ + class: Oc() + }, h(n)]), [e.showAddCartBtn && t(Be, { + attrs: { + size: "large", + type: "warning", + text: e.addCartText || Tc("addCart") + }, + on: { + click: r("sku:addCart") + } + }), t(Be, { + attrs: { + size: "large", + type: "danger", + text: e.buyText || Tc("buy") + }, + on: { + click: r("sku:buy") + } + })]) + } + $c.props = { + buyText: String, + addCartText: String, + skuEventBus: Object, + showAddCartBtn: Boolean + }; + var Bc = Cc($c) + , Ic = Object(l.a)("sku") + , Dc = Ic[0] + , Ec = Ic[1] + , jc = Ic[2] + , Pc = gl.QUOTA_LIMIT + , Lc = Dc({ + 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 && !Sl(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 ? kl(this.skuList, this.selectedSku) : { + id: this.sku.collection_id, + price: Math.round(100 * this.sku.price), + stock_num: this.sku.stock_num + }) && (t.properties = Ol(this.propList, this.selectedProp), + t.property_price = this.selectedPropValues.reduce((function(t, e) { + return t + (e.price || 0) + } + ), 0)), + t + }, + selectedSkuValues: function() { + return xl(this.skuTree, this.selectedSku) + }, + selectedPropValues: function() { + return Cl(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) : [jc("stock") + " ", t("span", { + class: Ec("stock-num", { + highlight: this.stock < this.stockThreshold + }) + }, [this.stock]), " " + jc("stockUnit")] + }, + selectedText: function() { + var t = this; + if (this.selectedSkuComb) { + var e = this.selectedSkuValues.concat(this.selectedPropValues); + return jc("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 jc("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 && wl(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 + , r = e.k_id; + n.some((function(t) { + return 0 != +t.price + } + )) || (t.selectedProp[r] = [n[0].id]) + } + } + )); + var r = this.selectedPropValues; + r.length > 0 && this.$emit("sku-prop-selected", { + propValue: r[r.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 jc("unavailable"); + if (this.isSkuCombSelected) + return this.validateSkuMessages(); + if (this.customSkuValidator) { + var t = this.customSkuValidator(this); + if (t) + return t + } + return jc("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] || [], r = i.indexOf(t.id); + r > -1 ? i.splice(r, 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 + , r = 0 + , s = i[0]; + t && t.imgUrl && (this.imageList.some((function(e, i) { + return e === t.imgUrl && (r = i, + !0) + } + )), + s = t.imgUrl); + var o = n({}, t, { + index: r, + imageList: this.imageList, + indexImage: s + }); + this.$emit("open-preview", o), + this.previewOnClickImage && go({ + images: this.imageList, + startPosition: r, + onClose: function() { + e.$emit("close-preview", o) + } + }) + }, + onOverLimit: function(t) { + var e = t.action + , i = t.limitType + , n = t.quota + , r = t.quotaUsed + , s = this.customStepperConfig.handleOverLimit; + s ? s(t) : "minus" === e ? this.startSaleNum > 1 ? we(jc("minusStartTip", this.startSaleNum)) : we(jc("minusTip")) : "plus" === e && we(i === Pc ? r > 0 ? jc("quotaUsedTip", n, r) : jc("quotaTip", n) : jc("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 ? we(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 + , r = this.goods + , s = 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: s, + originPrice: a, + selectedNum: h, + skuEventBus: l, + selectedSku: c, + selectedSkuComb: f + } + , g = function(e) { + return t.slots(e, v) + } + , b = g("sku-header") || e(El, { + attrs: { + sku: i, + goods: r, + 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" + }, [s]), this.priceTag && e("span", { + class: "van-sku__price-tag" + }, [this.priceTag])]), g("sku-header-origin-price") || a && e(Nl, [jc("originPrice"), " ¥", a]), !this.hideStock && e(Nl, [e("span", { + class: "van-sku__stock" + }, [this.stockText])]), this.hasSkuOrAttr && !this.hideSelectedText && e(Nl, [this.selectedText]), g("sku-header-extra")]) + , y = g("sku-group") || this.hasSkuOrAttr && e("div", { + class: this.skuGroupClass + }, [this.skuTree.map((function(t) { + return e(Vl, { + attrs: { + skuRow: t + }, + ref: "skuRows", + refInFor: !0 + }, [t.v.map((function(i) { + return e(Rl, { + 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(Vl, { + attrs: { + skuRow: t + } + }, [t.v.map((function(i) { + return e(Hl, { + attrs: { + skuValue: i, + skuKeyStr: t.k_id + "", + selectedProp: u, + skuEventBus: l, + multiple: t.is_multiple + } + }) + } + ))]) + } + ))]) + , S = g("sku-stepper") || e(Jl, { + 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(xc, { + ref: "skuMessages", + attrs: { + goodsId: this.goodsId, + messageConfig: this.messageConfig, + messages: i.messages + } + }) + , x = g("sku-actions") || e(Bc, { + 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]) + } + } + }); + Po.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: "分" + } + } + } + }), + Lc.SkuActions = Bc, + Lc.SkuHeader = El, + Lc.SkuHeaderItem = Nl, + Lc.SkuMessages = xc, + Lc.SkuStepper = Jl, + Lc.SkuRow = Vl, + Lc.SkuRowItem = Rl, + Lc.SkuRowPropItem = Hl, + Lc.skuHelper = Tl, + Lc.skuConstants = bl; + var Nc = Lc + , Ac = Object(l.a)("slider") + , Mc = Ac[0] + , zc = Ac[1] + , Fc = function(t, e) { + return JSON.stringify(t) === JSON.stringify(e) + } + , Vc = Mc({ + mixins: [R, ei], + 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 + , r = +this.min + i / n * this.scope; + if (this.range) { + var s = this.value + , o = s[0] + , a = s[1]; + r <= (o + a) / 2 ? o = r : a = r, + r = [o, a] + } + this.startValue = this.value, + this.updateValue(r, !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), + Fc(t, this.value) || this.$emit("input", t), + e && !Fc(t, this.startValue) && this.$emit("change", t) + }, + format: function(t) { + var e = +this.min + , i = +this.max + , n = +this.step; + return t = Dt(t, e, i), + Pt(e, Math.round((t - e) / n) * n) + } + }, + render: function() { + var t, e, i = this, n = arguments[0], r = this.vertical, s = r ? "height" : "width", o = r ? "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 + , r = i.scope; + return n ? 100 * (t[1] - t[0]) / r + "%" : 100 * (t - e) / r + "%" + }, c = function() { + var t = i.value + , e = i.min + , n = i.range + , r = i.scope; + return n ? 100 * (t[0] - e) / r + "%" : null + }, u = ((e = {})[s] = 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"] + , r = "number" == typeof t; + return n("div", { + ref: r ? "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: zc(r ? "button-wrapper-" + e[t] : "button-wrapper"), + on: { + touchstart: function() { + r && (i.index = t) + }, + click: function(t) { + return t.stopPropagation() + } + } + }, [i.slots("button") || n("div", { + class: zc("button"), + style: i.buttonStyle + })]) + }; + return n("div", { + style: a, + class: zc({ + disabled: this.disabled, + vertical: r + }), + on: { + click: this.onClick + } + }, [n("div", { + class: zc("bar"), + style: u + }, [this.range ? [h(0), h(1)] : h()])]) + } + }) + , Rc = Object(l.a)("step") + , Hc = Rc[0] + , _c = Rc[1] + , Wc = Hc({ + mixins: [De("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() { + return "finish" === this.status ? { + background: this.parent.activeColor + } : { + background: this.parent.inactiveColor + } + }, + 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 + , r = e.activeColor + , s = e.finishIcon + , o = e.inactiveIcon; + if (this.active) + return this.slots("active-icon") || t(st, { + class: _c("icon", "active"), + attrs: { + name: i, + color: r, + classPrefix: n + } + }); + var a = this.slots("finish-icon"); + if ("finish" === this.status && (s || a)) + return a || t(st, { + class: _c("icon", "finish"), + attrs: { + name: s, + color: r, + classPrefix: n + } + }); + var l = this.slots("inactive-icon"); + return o || l ? l || t(st, { + class: _c("icon"), + attrs: { + name: o, + classPrefix: n + } + }) : t("i", { + class: _c("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, r = this.parent.direction; + return e("div", { + class: [Ot, _c([r, (t = {}, + t[i] = i, + t)])] + }, [e("div", { + class: _c("title", { + active: n + }), + style: this.titleStyle, + on: { + click: this.onClickStep + } + }, [this.slots()]), e("div", { + class: _c("circle-container"), + on: { + click: this.onClickStep + } + }, [this.genCircle()]), e("div", { + class: _c("line"), + style: this.lineStyle + })]) + } + }) + , qc = Object(l.a)("steps") + , Kc = qc[0] + , Uc = qc[1] + , Yc = Kc({ + mixins: [Ee("vanSteps")], + props: { + 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: Uc([this.direction]) + }, [t("div", { + class: Uc("items") + }, [this.slots()])]) + } + }) + , Xc = Object(l.a)("submit-bar") + , Qc = Xc[0] + , Gc = Xc[1] + , Zc = Xc[2]; + function Jc(t, e, i, n) { + var r = e.tip + , o = e.price + , a = e.tipIcon; + return t("div", s()([{ + class: Gc({ + unfit: !e.safeAreaInsetBottom + }) + }, h(n)]), [i.top && i.top(), function() { + if (i.tip || r) + return t("div", { + class: Gc("tip") + }, [a && t(st, { + class: Gc("tip-icon"), + attrs: { + name: a + } + }), r && t("span", { + class: Gc("tip-text") + }, [r]), i.tip && i.tip()]) + }(), t("div", { + class: Gc("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: Gc("text") + }, [t("span", [e.label || Zc("label")]), t("span", { + class: Gc("price") + }, [e.currency, t("span", { + class: Gc("price", "integer") + }, [i[0]]), n]), e.suffixLabel && t("span", { + class: Gc("suffix-label") + }, [e.suffixLabel])]) + } + }(), i.button ? i.button() : t(Be, { + attrs: { + round: !0, + type: e.buttonType, + text: e.loading ? "" : e.buttonText, + color: e.buttonColor, + loading: e.loading, + disabled: e.disabled + }, + class: Gc("button", e.buttonType), + on: { + click: function() { + d(n, "submit") + } + } + })])]) + } + Jc.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 tu = Qc(Jc) + , eu = Object(l.a)("swipe-cell") + , iu = eu[0] + , nu = eu[1] + , ru = iu({ + mixins: [R, Os({ + 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 = Dt(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 + , r = this.computedRightWidth; + r && "right" === t && e > r * 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()])]) + } + }) + , su = Object(l.a)("switch-cell") + , ou = su[0] + , au = su[1]; + function lu(t, e, i, r) { + return t(ne, s()([{ + attrs: { + center: !0, + size: e.cellSize, + title: e.title, + border: e.border + }, + class: au([e.cellSize]) + }, h(r)]), [t(si, { + props: n({}, e), + on: n({}, r.listeners) + })]) + } + lu.props = n({}, ti, { + title: String, + cellSize: String, + border: { + type: Boolean, + default: !0 + }, + size: { + type: String, + default: "24px" + } + }); + var cu = ou(lu) + , uu = Object(l.a)("tabbar") + , hu = uu[0] + , du = uu[1] + , fu = hu({ + mixins: [Ee("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() { + this.placeholder && this.fixed && (this.height = this.$refs.tabbar.getBoundingClientRect().height) + }, + methods: { + setActiveItem: function() { + var t = this; + this.children.forEach((function(e, i) { + e.active = (e.name || i) === t.value + } + )) + }, + onChange: function(t) { + var e = this; + t !== this.value && yn({ + interceptor: this.beforeChange, + args: [t], + done: function() { + e.$emit("input", t), + e.$emit("change", t) + } + }) + }, + genTabbar: function() { + var t; + return (0, + this.$createElement)("div", { + ref: "tabbar", + style: { + zIndex: this.zIndex + }, + class: [(t = {}, + t[Bt] = this.border, + t), du({ + unfit: !this.fit, + fixed: this.fixed + })] + }, [this.slots()]) + } + }, + render: function() { + var t = arguments[0]; + return this.placeholder && this.fixed ? t("div", { + class: du("placeholder"), + style: { + height: this.height + "px" + } + }, [this.genTabbar()]) : this.genTabbar() + } + }) + , pu = Object(l.a)("tabbar-item") + , mu = pu[0] + , vu = pu[1] + , gu = mu({ + mixins: [De("vanTabbar")], + props: n({}, Gt, { + dot: Boolean, + icon: String, + name: [Number, String], + info: [Number, String], + badge: [Number, String], + iconPrefix: String + }), + data: function() { + return { + active: !1 + } + }, + computed: { + routeActive: function() { + var t = this.to + , e = this.$route; + if (t && e) { + var i = Object(m.f)(t) ? t : { + path: t + } + , n = i.path === e.path + , r = Object(m.c)(i.name) && i.name === e.name; + return n || r + } + } + }, + methods: { + onClick: function(t) { + this.parent.onChange(this.name || this.index), + this.$emit("click", t), + Xt(this.$router, this) + }, + genIcon: function(t) { + var e = this.$createElement + , i = this.slots("icon", { + active: t + }); + return i || (this.icon ? e(st, { + attrs: { + name: this.icon, + classPrefix: this.iconPrefix + } + }) : void 0) + } + }, + render: function() { + var t, e = arguments[0], i = this.parent.route ? this.routeActive : this.active, n = this.parent[i ? "activeColor" : "inactiveColor"]; + return e("div", { + class: vu({ + active: i + }), + style: { + color: n + }, + on: { + click: this.onClick + } + }, [e("div", { + class: vu("icon") + }, [this.genIcon(i), e(J, { + attrs: { + dot: this.dot, + info: null != (t = this.badge) ? t : this.info + } + })]), e("div", { + class: vu("text") + }, [this.slots("default", { + active: i + })])]) + } + }) + , bu = Object(l.a)("tree-select") + , yu = bu[0] + , Su = bu[1]; + function ku(t, e, i, n) { + var r = e.items + , o = e.height + , a = e.activeId + , l = e.selectedIcon + , c = e.mainActiveIndex; + var u = (r[+c] || {}).children || [] + , f = Array.isArray(a); + function p(t) { + return f ? -1 !== a.indexOf(t) : a === t + } + var m = r.map((function(e) { + var i; + return t(hl, { + attrs: { + dot: e.dot, + info: null != (i = e.badge) ? i : e.info, + title: e.text, + disabled: e.disabled + }, + class: [Su("nav-item"), e.className] + }) + } + )); + return t("div", s()([{ + class: Su(), + style: { + height: Object(Y.a)(o) + } + }, h(n)]), [t(al, { + class: Su("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: Su("content") + }, [i.content ? i.content() : u.map((function(i) { + return t("div", { + key: i.id, + class: ["van-ellipsis", Su("item", { + active: p(i.id), + disabled: i.disabled + })], + on: { + click: function() { + if (!i.disabled) { + var t = i.id; + if (f) { + var r = (t = a.slice()).indexOf(i.id); + -1 !== r ? t.splice(r, 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(st, { + attrs: { + name: l + }, + class: Su("selected") + })]) + } + ))])]) + } + ku.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 xu = yu(ku) + , wu = "2.12.25"; + function Cu(t) { + [kt, hi, Li, Yt, Fi, Be, nn, fn, Vn, ne, qn, Un, Gn, nr, ar, hr, vr, xr, Br, Lr, Fr, Kr, Zr, ns, ms, Ue, Ss, Cs, Is, As, ce, Vs, Ae, Ve, Ws, Ys, Zs, st, an, go, ko, Oo, J, jo, vt, Po.a, Mo, Ro, Qo, oa, $, da, ga, xa, _t, $a, ct, Ea, Ma, wi, mi, Ra, qa, Ga, nl, al, hl, vl, Nc, Vc, Wc, Ul, Yc, $n, tu, so, ru, co, si, cu, gn, fu, gu, Nn, Si, we, xu, cc].forEach((function(e) { + e.install ? t.use(e) : e.name && t.component(e.name, e) + } + )) + } + "undefined" != typeof window && window.Vue && Cu(window.Vue); + e.default = { + install: Cu, + version: wu + } + } + ]) + } +)); diff --git a/src/main/resources/views/mobile/platform.html b/src/main/resources/views/mobile/platform.html index 6a3baa3..3eb8c47 100644 --- a/src/main/resources/views/mobile/platform.html +++ b/src/main/resources/views/mobile/platform.html @@ -6,13 +6,15 @@ - + + - + +