{"version":3,"sources":["webpack:///./node_modules/vant/es/utils/deep-assign.js","webpack:///./node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/@vue/babel-helper-vue-jsx-merge-props/dist/helper.js","webpack:///./node_modules/vant/es/locale/lang/zh-CN.js","webpack:///./node_modules/vant/es/locale/index.js","webpack:///./node_modules/vant/es/utils/dom/raf.js","webpack:///./node_modules/vant/es/utils/format/string.js","webpack:///./node_modules/vant/es/utils/validate/number.js","webpack:///./node_modules/vant/es/utils/index.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./node_modules/@babel/runtime/helpers/esm/extends.js","webpack:///./node_modules/vant/es/utils/functional.js","webpack:///./node_modules/vant/es/mixins/popup/context.js","webpack:///./node_modules/vant/es/utils/dom/event.js","webpack:///./node_modules/vant/es/overlay/index.js","webpack:///./node_modules/vant/es/utils/dom/node.js","webpack:///./node_modules/vant/es/mixins/popup/overlay.js","webpack:///./node_modules/vant/es/utils/dom/scroll.js","webpack:///./node_modules/vant/es/mixins/touch.js","webpack:///./node_modules/vant/es/mixins/portal.js","webpack:///./node_modules/vant/es/mixins/bind-event.js","webpack:///./node_modules/vant/es/mixins/close-on-popstate.js","webpack:///./node_modules/vant/es/mixins/popup/index.js","webpack:///./node_modules/vant/es/info/index.js","webpack:///./node_modules/vant/es/icon/index.js","webpack:///./node_modules/vant/es/popup/index.js","webpack:///./node_modules/vant/es/loading/index.js","webpack:///./node_modules/vant/es/action-sheet/index.js","webpack:///./node_modules/vant/es/utils/validate/mobile.js","webpack:///./node_modules/vant/es/picker/shared.js","webpack:///./node_modules/vant/es/utils/constant.js","webpack:///./node_modules/vant/es/utils/deep-clone.js","webpack:///./node_modules/vant/es/utils/format/number.js","webpack:///./node_modules/vant/es/picker/PickerColumn.js","webpack:///./node_modules/vant/es/picker/index.js","webpack:///./node_modules/vant/es/area/index.js","webpack:///./node_modules/vant/es/utils/router.js","webpack:///./node_modules/vant/es/cell/shared.js","webpack:///./node_modules/vant/es/cell/index.js","webpack:///./node_modules/vant/es/utils/validate/system.js","webpack:///./node_modules/vant/es/utils/dom/reset-scroll.js","webpack:///./node_modules/vant/es/field/index.js","webpack:///./node_modules/vant/es/toast/lock-click.js","webpack:///./node_modules/vant/es/toast/Toast.js","webpack:///./node_modules/vant/es/toast/index.js","webpack:///./node_modules/vant/es/button/index.js","webpack:///./node_modules/vant/es/utils/vnodes.js","webpack:///./node_modules/vant/es/mixins/relation.js","webpack:///./node_modules/vant/es/goods-action/index.js","webpack:///./node_modules/vant/es/dialog/index.js","webpack:///./node_modules/vant/es/goods-action-button/index.js","webpack:///./node_modules/vant/es/dialog/Dialog.js","webpack:///./node_modules/vant/es/address-edit/Detail.js","webpack:///./node_modules/vant/es/switch/shared.js","webpack:///./node_modules/vant/es/mixins/field.js","webpack:///./node_modules/vant/es/switch/index.js","webpack:///./node_modules/vant/es/address-edit/index.js","webpack:///./node_modules/vant/es/radio-group/index.js","webpack:///./node_modules/vant/es/tag/index.js","webpack:///./node_modules/vant/es/mixins/checkbox.js","webpack:///./node_modules/vant/es/radio/index.js","webpack:///./node_modules/vant/es/address-list/Item.js","webpack:///./node_modules/vant/es/address-list/index.js","webpack:///./node_modules/vant/es/badge/index.js","webpack:///./node_modules/vant/es/utils/validate/date.js","webpack:///./node_modules/vant/es/calendar/utils.js","webpack:///./node_modules/vant/es/datetime-picker/utils.js","webpack:///./node_modules/vant/es/calendar/components/Month.js","webpack:///./node_modules/vant/es/calendar/components/Header.js","webpack:///./node_modules/vant/es/calendar/index.js","webpack:///./node_modules/vant/es/image/index.js","webpack:///./node_modules/vant/es/card/index.js","webpack:///./node_modules/vant/es/tabs/utils.js","webpack:///./node_modules/vant/es/tab/index.js","webpack:///./node_modules/vant/es/utils/dom/style.js","webpack:///./node_modules/vant/es/utils/interceptor.js","webpack:///./node_modules/vant/es/tabs/Title.js","webpack:///./node_modules/vant/es/sticky/index.js","webpack:///./node_modules/vant/es/tabs/Content.js","webpack:///./node_modules/vant/es/tabs/index.js","webpack:///./node_modules/vant/es/cascader/index.js","webpack:///./node_modules/vant/es/cell-group/index.js","webpack:///./node_modules/vant/es/checkbox/index.js","webpack:///./node_modules/vant/es/checkbox-group/index.js","webpack:///./node_modules/vant/es/circle/index.js","webpack:///./node_modules/vant/es/col/index.js","webpack:///./node_modules/vant/es/collapse/index.js","webpack:///./node_modules/vant/es/collapse-item/index.js","webpack:///./node_modules/vant/es/contact-card/index.js","webpack:///./node_modules/vant/es/contact-edit/index.js","webpack:///./node_modules/vant/es/contact-list/index.js","webpack:///./node_modules/vant/es/count-down/utils.js","webpack:///./node_modules/vant/es/count-down/index.js","webpack:///./node_modules/vant/es/coupon/index.js","webpack:///./node_modules/vant/es/coupon-cell/index.js","webpack:///./node_modules/vant/es/coupon-list/index.js","webpack:///./node_modules/vant/es/datetime-picker/shared.js","webpack:///./node_modules/vant/es/datetime-picker/TimePicker.js","webpack:///./node_modules/vant/es/datetime-picker/DatePicker.js","webpack:///./node_modules/vant/es/datetime-picker/index.js","webpack:///./node_modules/vant/es/divider/index.js","webpack:///./node_modules/vant/es/dropdown-item/index.js","webpack:///./node_modules/vant/es/mixins/click-outside.js","webpack:///./node_modules/vant/es/dropdown-menu/index.js","webpack:///./node_modules/vant/es/empty/Network.js","webpack:///./node_modules/vant/es/empty/index.js","webpack:///./node_modules/vant/es/form/index.js","webpack:///./node_modules/vant/es/goods-action-icon/index.js","webpack:///./node_modules/vant/es/grid/index.js","webpack:///./node_modules/vant/es/grid-item/index.js","webpack:///./node_modules/vant/es/image-preview/shared.js","webpack:///./node_modules/vant/es/swipe/index.js","webpack:///./node_modules/vant/es/swipe-item/index.js","webpack:///./node_modules/vant/es/image-preview/ImagePreviewItem.js","webpack:///./node_modules/vant/es/image-preview/index.js","webpack:///./node_modules/vant/es/image-preview/ImagePreview.js","webpack:///./node_modules/vant/es/index-anchor/index.js","webpack:///./node_modules/vant/es/index-bar/index.js","webpack:///./node_modules/vant/es/list/index.js","webpack:///./node_modules/vant/es/nav-bar/index.js","webpack:///./node_modules/vant/es/notice-bar/index.js","webpack:///./node_modules/vant/es/notify/Notify.js","webpack:///./node_modules/vant/es/notify/index.js","webpack:///./node_modules/vant/es/number-keyboard/DeleteIcon.js","webpack:///./node_modules/vant/es/number-keyboard/CollapseIcon.js","webpack:///./node_modules/vant/es/number-keyboard/Key.js","webpack:///./node_modules/vant/es/number-keyboard/index.js","webpack:///./node_modules/vant/es/pagination/index.js","webpack:///./node_modules/vant/es/panel/index.js","webpack:///./node_modules/vant/es/password-input/index.js","webpack:///./node_modules/@vant/popperjs/dist/esm/index.js","webpack:///./node_modules/vant/es/popover/index.js","webpack:///./node_modules/vant/es/progress/index.js","webpack:///./node_modules/vant/es/pull-refresh/index.js","webpack:///./node_modules/vant/es/rate/index.js","webpack:///./node_modules/vant/es/row/index.js","webpack:///./node_modules/vant/es/search/index.js","webpack:///./node_modules/vant/es/share-sheet/index.js","webpack:///./node_modules/vant/es/sidebar/index.js","webpack:///./node_modules/vant/es/sidebar-item/index.js","webpack:///./node_modules/vant/es/skeleton/index.js","webpack:///./node_modules/vant/es/sku/lang.js","webpack:///./node_modules/vant/es/sku/constants.js","webpack:///./node_modules/vant/es/sku/utils/sku-helper.js","webpack:///./node_modules/vant/es/sku/components/SkuHeader.js","webpack:///./node_modules/vant/es/sku/components/SkuHeaderItem.js","webpack:///./node_modules/vant/es/sku/components/SkuRow.js","webpack:///./node_modules/vant/es/sku/components/SkuRowItem.js","webpack:///./node_modules/vant/es/sku/components/SkuRowPropItem.js","webpack:///./node_modules/vant/es/stepper/index.js","webpack:///./node_modules/vant/es/sku/components/SkuStepper.js","webpack:///./node_modules/vant/es/utils/validate/email.js","webpack:///./node_modules/vant/es/uploader/utils.js","webpack:///./node_modules/vant/es/uploader/index.js","webpack:///./node_modules/vant/es/sku/components/SkuImgUploader.js","webpack:///./node_modules/vant/es/sku/utils/time-helper.js","webpack:///./node_modules/vant/es/sku/components/SkuDateTimeField.js","webpack:///./node_modules/vant/es/sku/components/SkuMessages.js","webpack:///./node_modules/vant/es/sku/components/SkuActions.js","webpack:///./node_modules/vant/es/sku/Sku.js","webpack:///./node_modules/vant/es/sku/index.js","webpack:///./node_modules/vant/es/slider/index.js","webpack:///./node_modules/vant/es/step/index.js","webpack:///./node_modules/vant/es/steps/index.js","webpack:///./node_modules/vant/es/submit-bar/index.js","webpack:///./node_modules/vant/es/swipe-cell/index.js","webpack:///./node_modules/vant/es/switch-cell/index.js","webpack:///./node_modules/vant/es/tabbar/index.js","webpack:///./node_modules/vant/es/tabbar-item/index.js","webpack:///./node_modules/vant/es/tree-select/index.js","webpack:///./node_modules/vant/es/index.js","webpack:///./node_modules/vant/es/utils/create/bem.js","webpack:///./node_modules/vant/es/mixins/slots.js","webpack:///./node_modules/vant/es/utils/create/component.js","webpack:///./node_modules/vant/es/utils/create/i18n.js","webpack:///./node_modules/vant/es/utils/create/index.js","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/vant/es/utils/format/unit.js"],"names":["hasOwnProperty","Object","prototype","assignKey","to","from","key","val","call","deepAssign","keys","forEach","fails","wellKnownSymbol","V8_VERSION","SPECIES","module","exports","METHOD_NAME","array","constructor","foo","Boolean","_extends","assign","a","b","c","arguments","length","d","apply","this","normalMerge","toArrayMerge","functionalMerge","mergeJsxProps","reduce","indexOf","Array","e","concat","f","g","h","i","mergeFn","name","tel","save","confirm","cancel","delete","complete","loading","telEmpty","nameEmpty","nameInvalid","confirmDelete","telInvalid","vanCalendar","end","start","title","startEnd","weekdays","monthTitle","year","month","rangePrompt","maxRange","vanCascader","select","vanContactCard","addText","vanContactList","vanPagination","prev","next","vanPullRefresh","pulling","loosing","vanSubmitBar","label","vanCoupon","unlimited","discount","_discount","condition","_condition","vanCouponCell","tips","count","_count","vanCouponList","empty","exchange","close","enable","disabled","placeholder","vanAddressEdit","area","postal","areaEmpty","addressEmpty","postalEmpty","defaultAddress","telPlaceholder","namePlaceholder","areaPlaceholder","vanAddressEditDetail","vanAddressList","add","proto","defineReactive","util","messages","$vantMessages","$vantLang","use","lang","_this$add","Date","now","fallback","fn","curr","ms","Math","max","id","setTimeout","root","global","window","iRaf","requestAnimationFrame","iCancel","cancelAnimationFrame","clearTimeout","raf","doubleRaf","cancelRaf","camelizeRE","camelize","str","replace","_","toUpperCase","padZero","num","targetLength","isNumeric","test","isNaN","Number","inBrowser","isServer","$isServer","noop","isDef","undefined","isFunction","isObject","isPromise","then","catch","get","object","path","split","result","_result$key","$","IndexedObject","toIndexedObject","arrayMethodIsStrict","nativeJoin","join","ES3_STRINGS","STRICT_METHOD","target","forced","separator","toAbsoluteIndex","toInteger","toLength","toObject","arraySpeciesCreate","createProperty","arrayMethodHasSpeciesSupport","arrayMethodUsesToLength","HAS_SPECIES_SUPPORT","USES_TO_LENGTH","ACCESSORS","0","1","min","MAX_SAFE_INTEGER","MAXIMUM_ALLOWED_LENGTH_EXCEEDED","splice","deleteCount","insertCount","actualDeleteCount","A","k","O","len","actualStart","argumentsLength","TypeError","source","inheritKey","mapInheritKey","nativeOn","inherit","context","inheritListeners","obj","data","on","eventName","_len","args","_key","listeners","isArray","listener","mount","Component","instance","el","document","createElement","props","render","$props","body","appendChild","$el","zIndex","lockCount","stack","find","vm","filter","item","supportsPassive","opts","defineProperty","addEventListener","event","handler","passive","capture","off","removeEventListener","stopPropagation","preventDefault","isStopPropagation","cancelable","_createNamespace","create","createComponent","preventTouchMove","Overlay","slots","ctx","style","customStyle","duration","animationDuration","value","show","className","lockScroll","default","String","type","removeNode","parent","parentNode","removeChild","defaultConfig","mountOverlay","click","$emit","closeOnClickOverlay","onClickOverlay","updateOverlay","config","overlay","insertBefore","openOverlay","push","closeOverlay","removeOverlay","isWindow","overflowScrollReg","getScroller","node","tagName","nodeType","_window$getComputedSt","getComputedStyle","overflowY","getScrollTop","top","scrollTop","pageYOffset","setScrollTop","scrollTo","scrollX","getRootScrollTop","documentElement","setRootScrollTop","getElementTop","scroller","getBoundingClientRect","getVisibleHeight","innerHeight","height","getVisibleTop","MIN_DISTANCE","getDirection","x","y","TouchMixin","direction","methods","touchStart","resetTouchStatus","startX","touches","clientX","startY","clientY","touchMove","touch","deltaX","deltaY","offsetX","abs","offsetY","bindTouchEvent","onTouchStart","onTouchMove","onTouchEnd","getElement","selector","querySelector","PortalMixin","_temp","_ref","ref","afterPortal","getContainer","Function","watch","mounted","portal","container","$refs","$parent","uid","BindEventMixin","bind","unbind","activated","deactivated","beforeDestroy","CloseOnPopstateMixin","mixins","isBind","handlePopstate","closeOnPopstate","bindStatus","onPopstate","shouldReopen","action","popupMixinProps","transitionAppear","overlayStyle","overlayClass","lazyRender","PopupMixin","options","inited","computed","shouldRender","skipToggleEvent","open","opened","removeLock","renderOverlay","addLock","classList","remove","scrollHeight","offsetHeight","status","parseInt","_this","$nextTick","updateZIndex","dot","info","showInfo","isImage","LEGACY_MAP","medel","correctName","Icon","_props$badge","imageIcon","tag","classPrefix","color","fontSize","size","badge","round","closeable","transition","safeAreaInsetBottom","closeIcon","closeIconPosition","position","beforeCreate","createEmitter","onClick","onOpened","onClosed","onClickCloseIcon","_bem","isCenter","transitionName","LoadingIcon","Spin","LoadingText","_props$textColor","textSize","textColor","Loading","iconSize","width","vertical","ActionSheet","cancelText","onCancel","Header","Option","index","callback","onClickOption","closeOnClickAction","OptionContent","subname","CancelText","Description","description","actions","map","isMobile","DEFAULT_ITEM_HEIGHT","pickerProps","readonly","itemHeight","showToolbar","cancelButtonText","confirmButtonText","allowHtml","visibleItemCount","swipeDuration","RED","BORDER","BORDER_TOP","BORDER_LEFT","BORDER_BOTTOM","BORDER_SURROUND","BORDER_TOP_BOTTOM","BORDER_UNSET_TOP_BOTTOM","deepClone","range","trimExtraChar","_char","regExp","prefix","slice","match","allowDot","allowMinus","DEFAULT_DURATION","MOMENTUM_LIMIT_TIME","MOMENTUM_LIMIT_DISTANCE","getElementTranslateY","element","transform","webkitTransform","translateY","isOptionDisabled","option","valueKey","defaultIndex","initialOptions","offset","currentIndex","created","children","setIndex","destroyed","baseOffset","setOptions","JSON","stringify","moving","wrapper","startOffset","transitionEndTrigger","touchStartTime","momentumOffset","distance","allowMomentum","momentum","getIndexByOffset","onTransitionEnd","stopMomentum","onClickItem","adjustIndex","_i","getOptionText","emitChange","_this2","trigger","setValue","getValue","speed","genOptions","_this3","$createElement","optionStyle","_domProps","text","attrs","role","tabindex","class","selected","childData","domProps","wrapperStyle","transitionDuration","transitionProperty","t","columns","toolbarPosition","formattedColumns","itemPxHeight","unit","dataType","firstColumn","values","immediate","format","formatCascade","formatted","cursor","_cursor$defaultIndex","_cursor","emit","getColumnValue","getColumnIndex","getValues","getIndexes","onCascadeChange","columnIndex","indexes","setColumnValues","onChange","getColumn","column","setColumnValue","setColumnIndex","optionIndex","getColumnValues","child","setValues","setIndexes","_this4","genTitle","titleSlot","genCancel","genConfirm","genToolbar","genColumns","wrapHeight","frameStyle","columnsStyle","maskStyle","backgroundSize","genColumnItems","_this5","_item$defaultIndex","PickerColumn","$scopedSlots","PLACEHOLDER_CODE","isOverseaCode","code","pickSlots","$slots","scopedSlots","areaList","columnsNum","columnsPlaceholder","province","province_list","city","city_list","county","county_list","displayColumns","placeholderMap","deep","getList","list","listCode","codeFill","unshift","getIndex","compareNum","parseOutputValues","parse","picker","parsedValues","onConfirm","getDefaultCode","countyCodes","cityCodes","getArea","country","names","validValues","reset","$listeners","change","isRedundantNavigation","err","message","route","router","url","promise","location","href","functionalRoute","$router","routeProps","cellProps","icon","center","isLink","required","iconPrefix","titleStyle","titleClass","valueClass","labelClass","arrowDirection","border","clickable","Cell","_props$clickable","showTitle","Label","showLabel","Title","Value","showValue","alone","LeftIcon","RightIcon","rightIconSlot","classes","borderless","extra","isAndroid","navigator","userAgent","toLowerCase","isIOS","resetScroll","inheritAttrs","provide","vanField","inject","vanForm","rules","autosize","leftIcon","rightIcon","clearable","formatter","maxlength","labelWidth","labelAlign","inputAlign","errorMessage","errorMessageAlign","showWordLimit","error","colon","clearTrigger","formatTrigger","focused","validateFailed","validateMessage","updateValue","resetValidation","validateWithTrigger","adjustSize","addField","removeField","showClear","getProp","hasValue","showError","blur","onBlur","focus","onFocus","input","onInput","onClickInput","keypress","onKeypress","labelStyle","formValue","runValidator","rule","Promise","resolve","returnVal","validator","isEmptyValue","runSyncRule","pattern","getRuleMessage","runRules","validate","defaultTrigger","validateTrigger","isNumber","composing","onClickLeftIcon","onClickRightIcon","onClear","ENTER_CODE","keyCode","submitOnEnter","_this$autosize","maxHeight","minHeight","genInput","inputSlot","inputProps","$attrs","directives","inputMode","inputType","genLeftIcon","showLeftIcon","genRightIcon","showRightIcon","genWordLimit","genMessage","showErrorMessage","genLabel","lockClick","lock","loadingType","forbidClick","closeOnClick","toggleClickable","onAfterEnter","onAfterLeave","genIcon","hasIcon","defaultOptions","mask","onClose","defaultOptionsMap","queue","currentOptions","parseOptions","isInDocument","contains","createInstance","toast","extend","$on","transformOptions","clear","timer","$destroy","method","all","shift","setDefaultOptions","resetDefaultOptions","allowMultiple","install","$toast","Button","plain","hairline","loadingText","iconPosition","onTouchstart","background","borderColor","block","square","renderIcon","loadingSize","renderContent","content","nativeType","flattenVNodes","vnodes","traverse","vnode","componentInstance","$children","$vnode","sortChildren","componentOptions","sort","ChildrenMixin","_parent","_inject","_computed","indexKey","disableBindRelation","bindRelation","ParentMixin","unfit","isFirst","$options","isLast","first","last","theme","beforeClose","messageAlign","cancelButtonColor","confirmButtonColor","showCancelButton","showConfirmButton","handleAction","state","genRoundButtons","genButtons","multiple","genContent","hasTitle","messageSlot","isolated","propsData","reject","alert","$dialog","android","detailRows","searchResult","detailMaxlength","showSearchResult","shouldShowSearchResult","onSelect","express","address","trim","onFinish","field","genFinish","genSearchResult","switchProps","activeColor","inactiveColor","activeValue","inactiveValue","FieldMixin","checked","backgroundColor","newValue","genLoading","defaultData","areaCode","postalCode","addressDetail","isDefault","isPostal","isSaving","isDeleting","showDelete","showPostal","telMaxlength","showSetDefault","saveButtonText","deleteButtonText","showArea","showDetail","disableArea","addressInfo","telValidator","postalValidator","areaColumnsPlaceholder","showAreaPopup","detailFocused","errorInfo","areaListLoaded","areaText","_this$data","arr","hideBottomFields","setAreaCode","onChangeDetail","onAreaConfirm","some","assignAreaValues","detail","onSave","items","isValid","every","msg","getErrorMessage","onDelete","setAddressDetail","onDetailBlur","genSetDefaultCell","$$v","$set","Detail","checkedColor","_value","Tag","_style","mark","CloseIcon","bem","labelPosition","labelDisabled","shape","bindGroup","isDisabled","iconStyle","iconClicked","toggle","slot","Children","currentValue","set","AddressItem","switchable","genTag","defaultTagText","Info","bottom","AddressList","genList","List","DisabledList","disabledList","disabledText","addButtonText","hasContent","renderBadge","fixed","isDate","toString","getTime","formatMonthTitle","date","getFullYear","getMonth","compareMonth","date1","date2","year1","year2","month1","month2","compareDay","day1","day2","compareMonthResult","getDate","getDayByOffset","setDate","getPrevDay","getNextDay","calcDateNum","copyDate","dates","copyDates","times","n","iteratee","getTrueValue","getMonthEndDay","minDate","maxDate","showMark","rowHeight","currentDate","allowSameDay","showSubtitle","showMonthTitle","firstDayOfWeek","visible","rowHeightWithUnit","realDay","getDay","totalDay","placeholders","rows","ceil","day","days","getDayType","bottomInfo","getBottomInfo","getHeight","scrollIntoView","_this$$refs","getMultipleDayType","isSelected","prevDay","nextDay","prevSelected","nextSelected","getRangeDayType","_this$currentDate","startDay","endDay","compareToStart","compareToEnd","getDayStyle","marginLeft","genMark","genDays","genDay","topInfo","TopInfo","BottomInfo","subtitle","genSubtitle","genWeekDays","renderWeekDays","confirmText","defaultDate","confirmDisabledText","poppable","showConfirm","getInitialDate","months","setMonth","buttonDisabled","dayOffset","init","bodyHeight","floor","onScroll","scrollToDate","targetDate","displayed","_this2$$refs","defaultVal","heights","heightSum","currentMonth","visibleRange","showed","onClickDay","selectedIndex","dateItem","equal","_currentDate$splice","unselectedDate","togglePopup","valid","checkRange","genMonth","Month","genFooterContent","genFooter","genCalendar","_attrs","createListener","src","fit","alt","radius","lazyLoad","showLoading","errorIcon","loadingIcon","overflow","borderRadius","$Lazyload","onLazyLoaded","onLazyLoadError","$off","onLoad","image","_ref2","onError","genPlaceholder","genImage","imgData","objectFit","Card","_slots$priceTop","thumb","showNum","showPrice","price","showOriginPrice","originPrice","showBottom","onThumbClick","ThumbTag","Thumb","thumbLink","Desc","desc","PriceContent","priceArr","currency","Price","OriginPrice","Num","Footer","footer","centered","tags","scrollLeftRafId","computedName","_this$name","isActive","active","currentName","setLine","slotContent","animated","scrollspy","Content","inactive","scrollLeftTo","scrollLeft","frames","animate","scrollTopTo","current","isDown","step","isHidden","hidden","display","parentHidden","offsetParent","callInterceptor","interceptor","done","scrollable","isCard","titleColor","genText","Text","ellipsis","observer","offsetTop","offsetTopPx","IntersectionObserver","entries","intersectionRatio","topToPageTop","emitScrollEvent","isFixed","bottomToPageTop","distanceToBottom","MIN_SWIPE_DISTANCE","swipeable","touchstart","touchmove","touchend","touchcancel","genChildren","resize","model","prop","sticky","lineWidth","lineHeight","beforeChange","titleActiveColor","titleInactiveColor","swipeThreshold","lineStyle","navStyle","activeTab","scrollOffset","tabHeight","setCurrentIndexByName","stickyFixed","wrap","shouldAnimate","titles","left","offsetLeft","offsetWidth","matched","tab","setCurrentIndex","newIndex","findAvailableTab","newTab","newName","shouldEmitChange","diff","_this$children$index","scrollToCurrentContent","nav","onSticktScroll","params","_this6","getCurrentIndexOnScroll","_this7","Nav","_item$badge","Wrap","fieldNames","tabs","textKey","_this$fieldNames","_this$fieldNames2","childrenKey","_this$fieldNames3","_tab$selectedOption","selectedOption","updateTabs","getSelectedOptionsByValue","selectedOptions","optionsCursor","tabIndex","nextTab","eventParams","renderHeader","renderOptions","renderOption","renderTab","unselected","renderTabs","CellGroup","Group","setParentValue","toggleTask","toggleAll","_options","skipDisabled","PERIMETER","rate","getPath","clockwise","viewBoxSize","sweepFlag","layerColor","strokeLinecap","fill","strokeWidth","layerStyle","stroke","hoverStyle","gradient","strokeDasharray","LinearGradient","Stops","parseFloat","startTime","startRate","endRate","increase","rafId","progress","toFixed","span","spaces","_spaces$index","right","paddingLeft","paddingRight","accordion","switch","expanded","activeName","CELL_SLOTS","_this$parent","_expanded","nextTick","contentHeight","titleSlots","ContactCard","editable","defaultContact","isEdit","setDefaultLabel","contactInfo","getErrorMessageByKey","ContactList","nodes","SECOND","MINUTE","HOUR","DAY","parseTimeData","time","hours","minutes","seconds","milliseconds","parseFormat","timeData","charAt","isSameSecond","time1","time2","millisecond","autoStart","remain","formattedTime","keepAlivePaused","counting","tick","pause","endTime","microTick","macroTick","setRemain","getRemain","timeStamp","formatDiscount","formatAmount","amount","coupon","chosen","validPeriod","_this$coupon","startAt","endAt","faceAmount","valueDesc","unitDesc","denominations","conditionMessage","originCondition","reason","coupons","chosenCoupon","CouponCell","EMPTY_IMAGE","closeButtonText","inputPlaceholder","enabledTitle","disabledTitle","exchangeButtonText","exchangeButtonLoading","exchangeButtonDisabled","exchangeMinLength","disabledCoupons","displayedCouponIndex","showExchangeBar","showCloseButton","showCount","emptyImage","winHeight","currentCode","listStyle","_code","scrollToShowCoupon","onClickExchangeButton","card","genEmpty","genExchangeButton","disabledCount","ExchangeBar","CouponTab","DisabledCouponTab","sharedProps","columnsOrder","TimePickerMixin","innerValue","formatValue","originColumns","ranges","rangeArr","updateColumnValue","updateInnerValue","getPicker","minHour","maxHour","minMinute","maxMinute","_value$split","hour","minute","_this$getPicker$getIn","hourIndex","minuteIndex","_this$originColumns","hourColumn","minuteColumn","pair","currentYear","valueOf","_this$getBoundary","getBoundary","maxYear","maxMonth","_this$getBoundary2","minYear","minMonth","boundary","getHours","getMinutes","maxDay","TimePicker","DatePicker","Divider","dashed","contentPosition","showPopup","showWrapper","displayTitle","bindScroll","onOpen","updateOffset","onClickWrapper","Options","closeOnClickOutside","clickOutsideHandler","barStyle","bar","rect","toggleItem","onClickOutside","Titles","down","genStop","opacity","PRESETS","imageSize","genImageContent","Network","imageStyle","genDescription","genBottom","scrollToError","validateFirst","fields","getFieldsByNames","validateSeq","errors","validateFields","validateField","scrollToField","form","onSubmit","submit","iconClass","_this$badge","gutter","columnNum","percent","flexBasis","paddingTop","gutterValue","marginTop","contentStyle","_this$parent2","iconSlot","getText","textSlot","_this$parent3","surround","onVisibilityChange","initialize","autoplay","indicatorColor","loop","touchable","initialSwipe","showIndicators","swiping","computedWidth","computedHeight","_autoplay","autoPlay","maxCount","minOffset","delta","trackSize","activeIndicator","isCorrectDirection","expect","trackStyle","mainAxis","crossAxis","indicatorStyle","track","getTargetOffset","swipe","correctPosition","move","shouldSwipe","pace","getTargetActive","targetActive","currentPosition","targetOffset","_ref$pace","_ref$offset","outRightBound","outLeftBound","swipeTo","targetIndex","genIndicator","maxActive","prevActive","nextActive","getDistance","sqrt","pow","minZoom","maxZoom","rootWidth","rootHeight","scale","moveX","moveY","zooming","imageRatio","displayWidth","displayHeight","rootRatio","maxMoveX","maxMoveY","resetScale","setScale","toggleScale","_this$offsetX","startMoveX","startMoveY","startScale","startDistance","checkTap","_this$offsetX2","_this$offsetY","deltaTime","TAP_TIME","TAP_OFFSET","doubleTapTimer","_event$target","naturalWidth","naturalHeight","imageSlots","asyncClose","images","showIndex","startPosition","doubleClickTimer","setActive","emitClose","emitScale","genIndex","genCover","cover","genImages","ImagePreviewItem","genClose","onScale","$once","anchorStyle","highlightColor","getRect","scrollerRect","elRect","genAlphabet","indexList","charCodeOfA","charCodeAt","fromCharCode","stickyOffsetTop","activeAnchorIndex","sidebarStyle","highlightStyle","getScrollerRect","rects","getActiveAnchorIndex","activeItemTop","prevHeight","reachTop","scrollToElement","_event$touches$","elementFromPoint","dataset","touchActiveIndex","Indexes","check","finished","errorText","finishedText","immediateCheck","innerLoading","updated","scrollerHeight","isReachEdge","placeholderRect","clickErrorText","genFinishedText","genErrorText","Placeholder","leftText","rightText","leftArrow","safeAreaInsetTop","navBar","genLeft","leftSlot","genRight","rightSlot","genNavBar","hasLeft","onClickLeft","hasRight","onClickRight","mode","wrapable","delay","wrapWidth","contentWidth","onClickIcon","startTimer","iconName","Notify","$notify","wider","large","isExtra","isDelete","CollapseIcon","hideOnClickOutside","randomKeyOrder","closeButtonLoading","extraKey","MAX_VALUE","showDeleteKey","genCustomKeys","genDefaultKeys","genBasicKeys","random","extraKeys","onAnimationEnd","onPress","titleLeft","showClose","genKeys","Key","genSidebar","makePage","number","prevText","nextText","forceEllipses","pageCount","totalItems","itemsPerPage","showPageSize","pages","startPage","endPage","isMaxSized","page","previousPageSet","nextPageSet","_this$slots","_this$slots3","simple","_this$slots2","Panel","header","PasswordInput","Points","showBorder","showCursor","visibility","getWindow","ownerDocument","defaultView","getWindowScroll","win","pageXOffset","isElement","OwnElement","Element","isHTMLElement","HTMLElement","getHTMLElementScroll","getNodeScroll","getNodeName","nodeName","getDocumentElement","getWindowScrollBarX","isScrollParent","_getComputedStyle","overflowX","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","scroll","offsets","clientLeft","clientTop","getLayoutRect","getParentNode","assignedSlot","host","getScrollParent","listScrollParents","scrollParent","isBody","visualViewport","updatedList","isTableElement","getTrueOffsetParent","html","getContainingBlock","currentNode","css","perspective","willChange","getOffsetParent","auto","basePlacements","placements","acc","placement","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","order","modifiers","Map","visited","Set","modifier","requires","requiresIfExists","dep","has","depModifier","orderModifiers","orderedModifiers","phase","debounce","pending","getBasePlacement","mergeByName","merged","existing","getVariation","getMainAxisFromPlacement","computeOffsets","reference","basePlacement","variation","commonX","commonY","DEFAULT_OPTIONS","strategy","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","popper","modifiersData","elements","attributes","styles","effectCleanupFns","isDestroyed","cleanupModifierEffects","scrollParents","contextElement","m","enabled","runModifierEffects","update","forceUpdate","_state$elements","_state$orderedModifie","_state$orderedModifie2","destroy","_ref3","_ref3$options","effect","cleanupFn","noopFn","onFirstUpdate","_options$scroll","_options$resize","eventListeners","popperOffsets","popperOffsets$1","unsetSides","roundOffsets","dpr","devicePixelRatio","mapToStyles","_Object$assign2","popperRect","gpuAcceleration","adaptive","_roundOffsets","hasX","hasY","sideX","sideY","clientHeight","clientWidth","_Object$assign","commonStyles","computeStyles","_options$gpuAccelerat","_options$adaptive","arrow","computeStyles$1","applyStyles","removeAttribute","setAttribute","effect$1","initialStyles","margin","styleProperties","property","attribute","applyStyles$1","distanceAndSkiddingToXY","invertDistance","skidding","_options$offset","_data$state$placement","offset$1","updateLocation","createPopper","popover","renderAction","onClickAction","onToggle","pivotText","pivotColor","trackColor","percentage","showPivot","pivotWidth","progressWidth","pivot","pivotStyle","portionStyle","DEFAULT_HEAD_HEIGHT","TEXT_STATUS","successText","pullingText","loosingText","successDuration","headHeight","headStyle","setStatus","showSuccessTip","scrollEl","checkPullStart","ceiling","ease","isLoading","genStatus","getRateStatus","allowHalf","voidColor","disabledColor","voidIcon","sizeWithUnit","gutterWithUnit","score","getScoreByPosition","genStar","isFull","isVoid","full","align","justify","groups","totalSpan","group","averagePadding","flex","Search","Action","showAction","actionText","fieldData","inheritData","PRESET_ICONS","getIconURL","genHeader","genRows","genCancelText","_this$cancelText","activeKey","DEFAULT_ROW_WIDTH","DEFAULT_LAST_ROW_WIDTH","Skeleton","titleWidth","Rows","rowWidth","getRowWidth","row","Avatar","avatar","avatarSize","avatarShape","vanSku","selectSku","soldout","minusTip","minusStartTip","unavailable","stock","stockUnit","quotaTip","quota","quotaUsedTip","vanSkuActions","buy","addCart","vanSkuImgUploader","oversize","maxSize","fail","uploading","vanSkuStepper","quotaLimit","quotaStart","comma","vanSkuMessages","upload","imageLabel","invalid","mobile","email","id_no","textarea","vanSkuRow","vanSkuDatetimeField","datetime","LIMIT_TYPE","QUOTA_LIMIT","STOCK_LIMIT","UNSELECTED_SKU_VALUE_ID","normalizeSkuTree","skuTree","normalizedTree","treeItem","k_s","v","normalizePropList","propList","normalizedProp","itemObj","it","k_id","selectedSku","skuKeyStr","getSkuComb","skuList","skuComb","selectedValues","skuValues","skuValueId","skuValue","skuToChoose","_extends2","valueId","matchedSku","skusToCheck","skuKey","filteredSku","sku","total","stock_num","selectedProp","normalizeProp","cur","getSelectedSkuValues","isAllSelected","isSkuChoosable","getSelectedPropValues","getSelectedProperties","getSkuImgValue","imgValue","tree","img","previewImgUrl","imgUrl","img_url","ks","SkuHeader","_slots$skuHeaderIma","goods","skuEventBus","_props$showHeaderImag","showHeaderImage","selectedValue","picture","previewImage","skuRow","largeImageMode","is_multiple","centerItem","selectSkuId","_this$children","_this$$refs2","disableSoldoutSku","choosable","onPreviewImg","choosed","LONG_PRESS_START_TIME","LONG_PRESS_INTERVAL","value1","value2","num1","num2","cardinal","integer","allowEmpty","inputWidth","buttonSize","asyncChange","disablePlus","disableMinus","disableInput","decimalLength","Infinity","defaultValue","showPlus","showMinus","showInput","longPress","_this$value","minusDisabled","plusDisabled","inputStyle","buttonStyle","formatNumber","longPressStep","longPressTimer","isLongPress","onMousedown","createListeners","namespace","skuStockNum","selectedNum","stepperTitle","disableStepperInput","customStepperConfig","hideQuotaText","quotaUsed","startSaleNum","currentNum","limitType","intValue","stepperMinLimit","stepperLimit","limit","checkState","quotaText","_this$customStepperCo","textArr","setCurrentNum","onOverLimit","handleStepperChange","isEmail","reg","toArray","file","resultType","reader","FileReader","onload","readAsDataURL","readAsText","isOversize","files","IMAGE_REGEXP","isImageUrl","isImageFile","uploadText","beforeDelete","previewSize","previewOptions","accept","fileList","deletable","showUpload","previewFullImage","imageFit","uploadIcon","previewSizeWithUnit","getDetail","response","resetInput","readFile","contents","onAfterRead","validFiles","oversizeFiles","isValidFiles","_file$beforeDelete","deleteFile","onPreviewImage","imageFiles","imageContents","imagePreview","closeImagePreview","chooseFile","genPreviewMask","MaskIcon","showMessage","genPreviewItem","_item$deletable","_item$previewSize","_item$imageFit","deleteAble","DeleteIcon","PreviewCoverContent","PreviewCover","Preview","genPreviewList","genUpload","Input","uploadImg","afterReadFile","onOversize","stringToDate","timeString","dateToString","showDatePicker","word","messageConfig","goodsId","messageValues","resetMessageValues","_messageConfig$initia","initialMessages","getType","getMessages","getCartMessages","getPlaceholder","validateMessages","textType","getFormatter","SkuImgUploader","uploadMaxSize","isDateOrTime","SkuDateTimeField","SkuActions","showAddCartBtn","addCartText","buyText","priceTag","hideStock","properties","hideSelectedText","resetStepperOnHide","customSkuValidator","resetSelectedSkuOnHide","initialSku","stockThreshold","showSoldoutSku","previewOnClickImage","bodyOffsetTop","selectedSkuValues","selectedSkuComb","resetStepper","resetSelectedSku","skuGroupClass","bodyStyle","isSkuCombSelected","hasSku","isSkuEmpty","none_sku","hasSkuOrAttr","collection_id","property_price","selectedPropValues","origin_price","imageList","vItem","stockNum","stockText","stockFormatter","highlight","selectedText","unselectedSku","unselectedProp","onPropSelect","onNumChange","onStepperState","onAddCart","onBuy","skuStepper","stepperError","_this$initialSku$sele","propValues","propValue","centerInitialSku","getSkuMessages","skuMessages","getSkuCartMessages","validateSkuMessages","validateSku","_extends3","_extends4","pos","indexImage","handleOverLimit","onBuyOrAddCart","getSkuData","cartMessages","skuRows","slotsProps","SkuHeaderItem","skuTreeItem","SkuRow","SkuRowItem","SkuRowPropItem","Stepper","SkuStepper","Messages","SkuMessages","Actions","Sku","skuHelper","skuConstants","constants","isSameValue","oldValue","barHeight","dragStatus","scope","wrapper0","wrapper1","startValue","middle","handleOverlap","reverse","_wrapperStyle","_barStyle","calcMainAxis","calcOffset","renderButton","getClassName","getRefName","genCircle","activeIcon","inactiveIcon","inactiveIconSlot","onClickStep","SubmitBar","tip","tipIcon","decimalStr","textAlign","suffixLabel","Tip","button","buttonType","buttonText","buttonColor","THRESHOLD","leftWidth","rightWidth","dragging","computedLeftWidth","getWidthByRef","computedRightWidth","isPrevent","threshold","getClickHandler","stop","genLeftPart","genRightPart","SwitchCell","cellSize","tabbar","setActiveItem","genTabbar","routeActive","$route","pathMatched","nameMatched","TreeSelect","activeId","selectedIcon","mainActiveIndex","selectedItem","subItems","isMultiple","isActiveItem","Navs","newActiveId","version","Vue","components","component","gen","mods","ret","createBEM","SlotsMixin","scopedSlot","unifySlots","transformFunctionComponent","pure","functional","sfc","createI18N","locale","createNamespace","$map","callbackfn","rootFontSize","addUnit","getRootFontSize","doc","convertRem","convertVw","innerWidth","convertVh","unitToPx"],"mappings":"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","file":"js/chunk-589a3d00.a79f7015.js","sourcesContent":["import { isDef, isObject } from '.';\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction assignKey(to, from, key) {\n var val = from[key];\n\n if (!isDef(val)) {\n return;\n }\n\n if (!hasOwnProperty.call(to, key) || !isObject(val)) {\n to[key] = val;\n } else {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n to[key] = deepAssign(Object(to[key]), from[key]);\n }\n}\n\nexport function deepAssign(to, from) {\n Object.keys(from).forEach(function (key) {\n assignKey(to, from, key);\n });\n return to;\n}","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","\"use strict\";function _extends(){return _extends=Object.assign||function(a){for(var b,c=1;c MAX_SAFE_INTEGER) {\n throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);\n }\n A = arraySpeciesCreate(O, actualDeleteCount);\n for (k = 0; k < actualDeleteCount; k++) {\n from = actualStart + k;\n if (from in O) createProperty(A, k, O[from]);\n }\n A.length = actualDeleteCount;\n if (insertCount < actualDeleteCount) {\n for (k = actualStart; k < len - actualDeleteCount; k++) {\n from = k + actualDeleteCount;\n to = k + insertCount;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];\n } else if (insertCount > actualDeleteCount) {\n for (k = len - actualDeleteCount; k > actualStart; k--) {\n from = k + actualDeleteCount - 1;\n to = k + insertCount - 1;\n if (from in O) O[to] = O[from];\n else delete O[to];\n }\n }\n for (k = 0; k < insertCount; k++) {\n O[k + actualStart] = arguments[k + 2];\n }\n O.length = len - actualDeleteCount + insertCount;\n return A;\n }\n});\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport Vue from 'vue';\nvar inheritKey = ['ref', 'style', 'class', 'attrs', 'refInFor', 'nativeOn', 'directives', 'staticClass', 'staticStyle'];\nvar mapInheritKey = {\n nativeOn: 'on'\n}; // inherit partial context, map nativeOn to on\n\nexport function inherit(context, inheritListeners) {\n var result = inheritKey.reduce(function (obj, key) {\n if (context.data[key]) {\n obj[mapInheritKey[key] || key] = context.data[key];\n }\n\n return obj;\n }, {});\n\n if (inheritListeners) {\n result.on = result.on || {};\n\n _extends(result.on, context.data.on);\n }\n\n return result;\n} // emit event\n\nexport function emit(context, eventName) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var listeners = context.listeners[eventName];\n\n if (listeners) {\n if (Array.isArray(listeners)) {\n listeners.forEach(function (listener) {\n listener.apply(void 0, args);\n });\n } else {\n listeners.apply(void 0, args);\n }\n }\n} // mount functional component\n\nexport function mount(Component, data) {\n var instance = new Vue({\n el: document.createElement('div'),\n props: Component.props,\n render: function render(h) {\n return h(Component, _extends({\n props: this.$props\n }, data));\n }\n });\n document.body.appendChild(instance.$el);\n return instance;\n}","export var context = {\n zIndex: 2000,\n lockCount: 0,\n stack: [],\n find: function find(vm) {\n return this.stack.filter(function (item) {\n return item.vm === vm;\n })[0];\n }\n};","import { isServer } from '..';\n// eslint-disable-next-line import/no-mutable-exports\nexport var supportsPassive = false;\n\nif (!isServer) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', {\n // eslint-disable-next-line getter-return\n get: function get() {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n });\n window.addEventListener('test-passive', null, opts); // eslint-disable-next-line no-empty\n } catch (e) {}\n}\n\nexport function on(target, event, handler, passive) {\n if (passive === void 0) {\n passive = false;\n }\n\n if (!isServer) {\n target.addEventListener(event, handler, supportsPassive ? {\n capture: false,\n passive: passive\n } : false);\n }\n}\nexport function off(target, event, handler) {\n if (!isServer) {\n target.removeEventListener(event, handler);\n }\n}\nexport function stopPropagation(event) {\n event.stopPropagation();\n}\nexport function preventDefault(event, isStopPropagation) {\n /* istanbul ignore else */\n if (typeof event.cancelable !== 'boolean' || event.cancelable) {\n event.preventDefault();\n }\n\n if (isStopPropagation) {\n stopPropagation(event);\n }\n}","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n// Utils\nimport { createNamespace, isDef, noop } from '../utils';\nimport { inherit } from '../utils/functional';\nimport { preventDefault } from '../utils/dom/event'; // Types\n\nvar _createNamespace = createNamespace('overlay'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nfunction preventTouchMove(event) {\n preventDefault(event, true);\n}\n\nfunction Overlay(h, props, slots, ctx) {\n var style = _extends({\n zIndex: props.zIndex\n }, props.customStyle);\n\n if (isDef(props.duration)) {\n style.animationDuration = props.duration + \"s\";\n }\n\n return h(\"transition\", {\n \"attrs\": {\n \"name\": \"van-fade\"\n }\n }, [h(\"div\", _mergeJSXProps([{\n \"directives\": [{\n name: \"show\",\n value: props.show\n }],\n \"style\": style,\n \"class\": [bem(), props.className],\n \"on\": {\n \"touchmove\": props.lockScroll ? preventTouchMove : noop\n }\n }, inherit(ctx, true)]), [slots.default == null ? void 0 : slots.default()])]);\n}\n\nOverlay.props = {\n show: Boolean,\n zIndex: [Number, String],\n duration: [Number, String],\n className: null,\n customStyle: Object,\n lockScroll: {\n type: Boolean,\n default: true\n }\n};\nexport default createComponent(Overlay);","export function removeNode(el) {\n var parent = el.parentNode;\n\n if (parent) {\n parent.removeChild(el);\n }\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport Overlay from '../../overlay';\nimport { context } from './context';\nimport { mount } from '../../utils/functional';\nimport { removeNode } from '../../utils/dom/node';\nvar defaultConfig = {\n className: '',\n customStyle: {}\n};\n\nfunction mountOverlay(vm) {\n return mount(Overlay, {\n on: {\n // close popup when overlay clicked & closeOnClickOverlay is true\n click: function click() {\n vm.$emit('click-overlay');\n\n if (vm.closeOnClickOverlay) {\n if (vm.onClickOverlay) {\n vm.onClickOverlay();\n } else {\n vm.close();\n }\n }\n }\n }\n });\n}\n\nexport function updateOverlay(vm) {\n var item = context.find(vm);\n\n if (item) {\n var el = vm.$el;\n var config = item.config,\n overlay = item.overlay;\n\n if (el && el.parentNode) {\n el.parentNode.insertBefore(overlay.$el, el);\n }\n\n _extends(overlay, defaultConfig, config, {\n show: true\n });\n }\n}\nexport function openOverlay(vm, config) {\n var item = context.find(vm);\n\n if (item) {\n item.config = config;\n } else {\n var overlay = mountOverlay(vm);\n context.stack.push({\n vm: vm,\n config: config,\n overlay: overlay\n });\n }\n\n updateOverlay(vm);\n}\nexport function closeOverlay(vm) {\n var item = context.find(vm);\n\n if (item) {\n item.overlay.show = false;\n }\n}\nexport function removeOverlay(vm) {\n var item = context.find(vm);\n\n if (item) {\n removeNode(item.overlay.$el);\n }\n}","function isWindow(val) {\n return val === window;\n} // get nearest scroll element\n// https://github.com/youzan/vant/issues/3823\n\n\nvar overflowScrollReg = /scroll|auto/i;\nexport function getScroller(el, root) {\n if (root === void 0) {\n root = window;\n }\n\n var node = el;\n\n while (node && node.tagName !== 'HTML' && node.tagName !== 'BODY' && node.nodeType === 1 && node !== root) {\n var _window$getComputedSt = window.getComputedStyle(node),\n overflowY = _window$getComputedSt.overflowY;\n\n if (overflowScrollReg.test(overflowY)) {\n return node;\n }\n\n node = node.parentNode;\n }\n\n return root;\n}\nexport function getScrollTop(el) {\n var top = 'scrollTop' in el ? el.scrollTop : el.pageYOffset; // iOS scroll bounce cause minus scrollTop\n\n return Math.max(top, 0);\n}\nexport function setScrollTop(el, value) {\n if ('scrollTop' in el) {\n el.scrollTop = value;\n } else {\n el.scrollTo(el.scrollX, value);\n }\n}\nexport function getRootScrollTop() {\n return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n}\nexport function setRootScrollTop(value) {\n setScrollTop(window, value);\n setScrollTop(document.body, value);\n} // get distance from element top to page top or scroller top\n\nexport function getElementTop(el, scroller) {\n if (isWindow(el)) {\n return 0;\n }\n\n var scrollTop = scroller ? getScrollTop(scroller) : getRootScrollTop();\n return el.getBoundingClientRect().top + scrollTop;\n}\nexport function getVisibleHeight(el) {\n if (isWindow(el)) {\n return el.innerHeight;\n }\n\n return el.getBoundingClientRect().height;\n}\nexport function getVisibleTop(el) {\n if (isWindow(el)) {\n return 0;\n }\n\n return el.getBoundingClientRect().top;\n}","import { on } from '../utils/dom/event';\nvar MIN_DISTANCE = 10;\n\nfunction getDirection(x, y) {\n if (x > y && x > MIN_DISTANCE) {\n return 'horizontal';\n }\n\n if (y > x && y > MIN_DISTANCE) {\n return 'vertical';\n }\n\n return '';\n}\n\nexport var TouchMixin = {\n data: function data() {\n return {\n direction: ''\n };\n },\n methods: {\n touchStart: function touchStart(event) {\n this.resetTouchStatus();\n this.startX = event.touches[0].clientX;\n this.startY = event.touches[0].clientY;\n },\n touchMove: function touchMove(event) {\n var touch = event.touches[0];\n this.deltaX = touch.clientX - this.startX;\n this.deltaY = touch.clientY - this.startY;\n this.offsetX = Math.abs(this.deltaX);\n this.offsetY = Math.abs(this.deltaY);\n this.direction = this.direction || getDirection(this.offsetX, this.offsetY);\n },\n resetTouchStatus: function resetTouchStatus() {\n this.direction = '';\n this.deltaX = 0;\n this.deltaY = 0;\n this.offsetX = 0;\n this.offsetY = 0;\n },\n // avoid Vue 2.6 event bubble issues by manually binding events\n // https://github.com/youzan/vant/issues/3015\n bindTouchEvent: function bindTouchEvent(el) {\n var onTouchStart = this.onTouchStart,\n onTouchMove = this.onTouchMove,\n onTouchEnd = this.onTouchEnd;\n on(el, 'touchstart', onTouchStart);\n on(el, 'touchmove', onTouchMove);\n\n if (onTouchEnd) {\n on(el, 'touchend', onTouchEnd);\n on(el, 'touchcancel', onTouchEnd);\n }\n }\n }\n};","function getElement(selector) {\n if (typeof selector === 'string') {\n return document.querySelector(selector);\n }\n\n return selector();\n}\n\nexport function PortalMixin(_temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n ref = _ref.ref,\n afterPortal = _ref.afterPortal;\n\n return {\n props: {\n getContainer: [String, Function]\n },\n watch: {\n getContainer: 'portal'\n },\n mounted: function mounted() {\n if (this.getContainer) {\n this.portal();\n }\n },\n methods: {\n portal: function portal() {\n var getContainer = this.getContainer;\n var el = ref ? this.$refs[ref] : this.$el;\n var container;\n\n if (getContainer) {\n container = getElement(getContainer);\n } else if (this.$parent) {\n container = this.$parent.$el;\n }\n\n if (container && container !== el.parentNode) {\n container.appendChild(el);\n }\n\n if (afterPortal) {\n afterPortal.call(this);\n }\n }\n }\n };\n}","/**\n * Bind event when mounted or activated\n */\nimport { on, off } from '../utils/dom/event';\nvar uid = 0;\nexport function BindEventMixin(handler) {\n var key = \"binded_\" + uid++;\n\n function bind() {\n if (!this[key]) {\n handler.call(this, on, true);\n this[key] = true;\n }\n }\n\n function unbind() {\n if (this[key]) {\n handler.call(this, off, false);\n this[key] = false;\n }\n }\n\n return {\n mounted: bind,\n activated: bind,\n deactivated: unbind,\n beforeDestroy: unbind\n };\n}","import { on, off } from '../utils/dom/event';\nimport { BindEventMixin } from './bind-event';\nexport var CloseOnPopstateMixin = {\n mixins: [BindEventMixin(function (bind, isBind) {\n this.handlePopstate(isBind && this.closeOnPopstate);\n })],\n props: {\n closeOnPopstate: Boolean\n },\n data: function data() {\n return {\n bindStatus: false\n };\n },\n watch: {\n closeOnPopstate: function closeOnPopstate(val) {\n this.handlePopstate(val);\n }\n },\n methods: {\n onPopstate: function onPopstate() {\n this.close();\n this.shouldReopen = false;\n },\n handlePopstate: function handlePopstate(bind) {\n /* istanbul ignore if */\n if (this.$isServer) {\n return;\n }\n\n if (this.bindStatus !== bind) {\n this.bindStatus = bind;\n var action = bind ? on : off;\n action(window, 'popstate', this.onPopstate);\n }\n }\n }\n};","// Context\nimport { context } from './context';\nimport { openOverlay, closeOverlay, updateOverlay, removeOverlay } from './overlay'; // Utils\n\nimport { on, off, preventDefault } from '../../utils/dom/event';\nimport { removeNode } from '../../utils/dom/node';\nimport { getScroller } from '../../utils/dom/scroll'; // Mixins\n\nimport { TouchMixin } from '../touch';\nimport { PortalMixin } from '../portal';\nimport { CloseOnPopstateMixin } from '../close-on-popstate';\nexport var popupMixinProps = {\n // Initial rendering animation\n transitionAppear: Boolean,\n // whether to show popup\n value: Boolean,\n // whether to show overlay\n overlay: Boolean,\n // overlay custom style\n overlayStyle: Object,\n // overlay custom class name\n overlayClass: String,\n // whether to close popup when overlay is clicked\n closeOnClickOverlay: Boolean,\n // z-index\n zIndex: [Number, String],\n // prevent body scroll\n lockScroll: {\n type: Boolean,\n default: true\n },\n // whether to lazy render\n lazyRender: {\n type: Boolean,\n default: true\n }\n};\nexport function PopupMixin(options) {\n if (options === void 0) {\n options = {};\n }\n\n return {\n mixins: [TouchMixin, CloseOnPopstateMixin, PortalMixin({\n afterPortal: function afterPortal() {\n if (this.overlay) {\n updateOverlay();\n }\n }\n })],\n props: popupMixinProps,\n data: function data() {\n return {\n inited: this.value\n };\n },\n computed: {\n shouldRender: function shouldRender() {\n return this.inited || !this.lazyRender;\n }\n },\n watch: {\n value: function value(val) {\n var type = val ? 'open' : 'close';\n this.inited = this.inited || this.value;\n this[type]();\n\n if (!options.skipToggleEvent) {\n this.$emit(type);\n }\n },\n overlay: 'renderOverlay'\n },\n mounted: function mounted() {\n if (this.value) {\n this.open();\n }\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n if (this.shouldReopen) {\n this.$emit('input', true);\n this.shouldReopen = false;\n }\n },\n beforeDestroy: function beforeDestroy() {\n removeOverlay(this);\n\n if (this.opened) {\n this.removeLock();\n }\n\n if (this.getContainer) {\n removeNode(this.$el);\n }\n },\n\n /* istanbul ignore next */\n deactivated: function deactivated() {\n if (this.value) {\n this.close();\n this.shouldReopen = true;\n }\n },\n methods: {\n open: function open() {\n /* istanbul ignore next */\n if (this.$isServer || this.opened) {\n return;\n } // cover default zIndex\n\n\n if (this.zIndex !== undefined) {\n context.zIndex = this.zIndex;\n }\n\n this.opened = true;\n this.renderOverlay();\n this.addLock();\n },\n addLock: function addLock() {\n if (this.lockScroll) {\n on(document, 'touchstart', this.touchStart);\n on(document, 'touchmove', this.onTouchMove);\n\n if (!context.lockCount) {\n document.body.classList.add('van-overflow-hidden');\n }\n\n context.lockCount++;\n }\n },\n removeLock: function removeLock() {\n if (this.lockScroll && context.lockCount) {\n context.lockCount--;\n off(document, 'touchstart', this.touchStart);\n off(document, 'touchmove', this.onTouchMove);\n\n if (!context.lockCount) {\n document.body.classList.remove('van-overflow-hidden');\n }\n }\n },\n close: function close() {\n if (!this.opened) {\n return;\n }\n\n closeOverlay(this);\n this.opened = false;\n this.removeLock();\n this.$emit('input', false);\n },\n onTouchMove: function onTouchMove(event) {\n this.touchMove(event);\n var direction = this.deltaY > 0 ? '10' : '01';\n var el = getScroller(event.target, this.$el);\n var scrollHeight = el.scrollHeight,\n offsetHeight = el.offsetHeight,\n scrollTop = el.scrollTop;\n var status = '11';\n /* istanbul ignore next */\n\n if (scrollTop === 0) {\n status = offsetHeight >= scrollHeight ? '00' : '01';\n } else if (scrollTop + offsetHeight >= scrollHeight) {\n status = '10';\n }\n /* istanbul ignore next */\n\n\n if (status !== '11' && this.direction === 'vertical' && !(parseInt(status, 2) & parseInt(direction, 2))) {\n preventDefault(event, true);\n }\n },\n renderOverlay: function renderOverlay() {\n var _this = this;\n\n if (this.$isServer || !this.value) {\n return;\n }\n\n this.$nextTick(function () {\n _this.updateZIndex(_this.overlay ? 1 : 0);\n\n if (_this.overlay) {\n openOverlay(_this, {\n zIndex: context.zIndex++,\n duration: _this.duration,\n className: _this.overlayClass,\n customStyle: _this.overlayStyle\n });\n } else {\n closeOverlay(_this);\n }\n });\n },\n updateZIndex: function updateZIndex(value) {\n if (value === void 0) {\n value = 0;\n }\n\n this.$el.style.zIndex = ++context.zIndex + value;\n }\n }\n };\n}","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace, isDef } from '../utils';\nimport { inherit } from '../utils/functional'; // Types\n\nvar _createNamespace = createNamespace('info'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nfunction Info(h, props, slots, ctx) {\n var dot = props.dot,\n info = props.info;\n var showInfo = isDef(info) && info !== '';\n\n if (!dot && !showInfo) {\n return;\n }\n\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem({\n dot: dot\n })\n }, inherit(ctx, true)]), [dot ? '' : props.info]);\n}\n\nInfo.props = {\n dot: Boolean,\n info: [Number, String]\n};\nexport default createComponent(Info);","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace, addUnit } from '../utils';\nimport { inherit } from '../utils/functional'; // Components\n\nimport Info from '../info'; // Types\n\nvar _createNamespace = createNamespace('icon'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nfunction isImage(name) {\n return name ? name.indexOf('/') !== -1 : false;\n} // compatible with legacy usage, should be removed in next major version\n\n\nvar LEGACY_MAP = {\n medel: 'medal',\n 'medel-o': 'medal-o',\n 'calender-o': 'calendar-o'\n};\n\nfunction correctName(name) {\n return name && LEGACY_MAP[name] || name;\n}\n\nfunction Icon(h, props, slots, ctx) {\n var _props$badge;\n\n var name = correctName(props.name);\n var imageIcon = isImage(name);\n\n if (process.env.NODE_ENV === 'development' && props.info) {\n console.warn('[Vant] Icon: \"info\" prop is deprecated, use \"badge\" prop instead.');\n }\n\n return h(props.tag, _mergeJSXProps([{\n \"class\": [props.classPrefix, imageIcon ? '' : props.classPrefix + \"-\" + name],\n \"style\": {\n color: props.color,\n fontSize: addUnit(props.size)\n }\n }, inherit(ctx, true)]), [slots.default && slots.default(), imageIcon && h(\"img\", {\n \"class\": bem('image'),\n \"attrs\": {\n \"src\": name\n }\n }), h(Info, {\n \"attrs\": {\n \"dot\": props.dot,\n \"info\": (_props$badge = props.badge) != null ? _props$badge : props.info\n }\n })]);\n}\n\nIcon.props = {\n dot: Boolean,\n name: String,\n size: [Number, String],\n // @deprecated\n // should be removed in next major version\n info: [Number, String],\n badge: [Number, String],\n color: String,\n tag: {\n type: String,\n default: 'i'\n },\n classPrefix: {\n type: String,\n default: bem()\n }\n};\nexport default createComponent(Icon);","import { createNamespace, isDef } from '../utils';\nimport { PopupMixin } from '../mixins/popup';\nimport Icon from '../icon';\n\nvar _createNamespace = createNamespace('popup'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [PopupMixin()],\n props: {\n round: Boolean,\n duration: [Number, String],\n closeable: Boolean,\n transition: String,\n safeAreaInsetBottom: Boolean,\n closeIcon: {\n type: String,\n default: 'cross'\n },\n closeIconPosition: {\n type: String,\n default: 'top-right'\n },\n position: {\n type: String,\n default: 'center'\n },\n overlay: {\n type: Boolean,\n default: true\n },\n closeOnClickOverlay: {\n type: Boolean,\n default: true\n }\n },\n beforeCreate: function beforeCreate() {\n var _this = this;\n\n var createEmitter = function createEmitter(eventName) {\n return function (event) {\n return _this.$emit(eventName, event);\n };\n };\n\n this.onClick = createEmitter('click');\n this.onOpened = createEmitter('opened');\n this.onClosed = createEmitter('closed');\n },\n methods: {\n onClickCloseIcon: function onClickCloseIcon(event) {\n this.$emit('click-close-icon', event);\n this.close();\n }\n },\n render: function render() {\n var _bem;\n\n var h = arguments[0];\n\n if (!this.shouldRender) {\n return;\n }\n\n var round = this.round,\n position = this.position,\n duration = this.duration;\n var isCenter = position === 'center';\n var transitionName = this.transition || (isCenter ? 'van-fade' : \"van-popup-slide-\" + position);\n var style = {};\n\n if (isDef(duration)) {\n var key = isCenter ? 'animationDuration' : 'transitionDuration';\n style[key] = duration + \"s\";\n }\n\n return h(\"transition\", {\n \"attrs\": {\n \"appear\": this.transitionAppear,\n \"name\": transitionName\n },\n \"on\": {\n \"afterEnter\": this.onOpened,\n \"afterLeave\": this.onClosed\n }\n }, [h(\"div\", {\n \"directives\": [{\n name: \"show\",\n value: this.value\n }],\n \"style\": style,\n \"class\": bem((_bem = {\n round: round\n }, _bem[position] = position, _bem['safe-area-inset-bottom'] = this.safeAreaInsetBottom, _bem)),\n \"on\": {\n \"click\": this.onClick\n }\n }, [this.slots(), this.closeable && h(Icon, {\n \"attrs\": {\n \"role\": \"button\",\n \"tabindex\": \"0\",\n \"name\": this.closeIcon\n },\n \"class\": bem('close-icon', this.closeIconPosition),\n \"on\": {\n \"click\": this.onClickCloseIcon\n }\n })])]);\n }\n});","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace, addUnit } from '../utils';\nimport { inherit } from '../utils/functional'; // Types\n\nvar _createNamespace = createNamespace('loading'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nfunction LoadingIcon(h, props) {\n if (props.type === 'spinner') {\n var Spin = [];\n\n for (var i = 0; i < 12; i++) {\n Spin.push(h(\"i\"));\n }\n\n return Spin;\n }\n\n return h(\"svg\", {\n \"class\": bem('circular'),\n \"attrs\": {\n \"viewBox\": \"25 25 50 50\"\n }\n }, [h(\"circle\", {\n \"attrs\": {\n \"cx\": \"50\",\n \"cy\": \"50\",\n \"r\": \"20\",\n \"fill\": \"none\"\n }\n })]);\n}\n\nfunction LoadingText(h, props, slots) {\n if (slots.default) {\n var _props$textColor;\n\n var style = {\n fontSize: addUnit(props.textSize),\n color: (_props$textColor = props.textColor) != null ? _props$textColor : props.color\n };\n return h(\"span\", {\n \"class\": bem('text'),\n \"style\": style\n }, [slots.default()]);\n }\n}\n\nfunction Loading(h, props, slots, ctx) {\n var color = props.color,\n size = props.size,\n type = props.type;\n var style = {\n color: color\n };\n\n if (size) {\n var iconSize = addUnit(size);\n style.width = iconSize;\n style.height = iconSize;\n }\n\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem([type, {\n vertical: props.vertical\n }])\n }, inherit(ctx, true)]), [h(\"span\", {\n \"class\": bem('spinner', type),\n \"style\": style\n }, [LoadingIcon(h, props)]), LoadingText(h, props, slots)]);\n}\n\nLoading.props = {\n color: String,\n size: [Number, String],\n vertical: Boolean,\n textSize: [Number, String],\n textColor: String,\n type: {\n type: String,\n default: 'circular'\n }\n};\nexport default createComponent(Loading);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace } from '../utils';\nimport { emit, inherit } from '../utils/functional'; // Mixins\n\nimport { popupMixinProps } from '../mixins/popup'; // Components\n\nimport Icon from '../icon';\nimport Popup from '../popup';\nimport Loading from '../loading'; // Types\n\nvar _createNamespace = createNamespace('action-sheet'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nfunction ActionSheet(h, props, slots, ctx) {\n var title = props.title,\n cancelText = props.cancelText,\n closeable = props.closeable;\n\n function onCancel() {\n emit(ctx, 'input', false);\n emit(ctx, 'cancel');\n }\n\n function Header() {\n if (title) {\n return h(\"div\", {\n \"class\": bem('header')\n }, [title, closeable && h(Icon, {\n \"attrs\": {\n \"name\": props.closeIcon\n },\n \"class\": bem('close'),\n \"on\": {\n \"click\": onCancel\n }\n })]);\n }\n }\n\n function Option(item, index) {\n var disabled = item.disabled,\n loading = item.loading,\n callback = item.callback;\n\n function onClickOption(event) {\n event.stopPropagation();\n\n if (disabled || loading) {\n return;\n }\n\n if (callback) {\n callback(item);\n }\n\n emit(ctx, 'select', item, index);\n\n if (props.closeOnClickAction) {\n emit(ctx, 'input', false);\n }\n }\n\n function OptionContent() {\n if (loading) {\n return h(Loading, {\n \"class\": bem('loading-icon')\n });\n }\n\n return [h(\"span\", {\n \"class\": bem('name')\n }, [item.name]), item.subname && h(\"div\", {\n \"class\": bem('subname')\n }, [item.subname])];\n }\n\n return h(\"button\", {\n \"attrs\": {\n \"type\": \"button\"\n },\n \"class\": [bem('item', {\n disabled: disabled,\n loading: loading\n }), item.className],\n \"style\": {\n color: item.color\n },\n \"on\": {\n \"click\": onClickOption\n }\n }, [OptionContent()]);\n }\n\n function CancelText() {\n if (cancelText) {\n return [h(\"div\", {\n \"class\": bem('gap')\n }), h(\"button\", {\n \"attrs\": {\n \"type\": \"button\"\n },\n \"class\": bem('cancel'),\n \"on\": {\n \"click\": onCancel\n }\n }, [cancelText])];\n }\n }\n\n function Description() {\n var description = (slots.description == null ? void 0 : slots.description()) || props.description;\n\n if (description) {\n return h(\"div\", {\n \"class\": bem('description')\n }, [description]);\n }\n }\n\n return h(Popup, _mergeJSXProps([{\n \"class\": bem(),\n \"attrs\": {\n \"position\": \"bottom\",\n \"round\": props.round,\n \"value\": props.value,\n \"overlay\": props.overlay,\n \"duration\": props.duration,\n \"lazyRender\": props.lazyRender,\n \"lockScroll\": props.lockScroll,\n \"getContainer\": props.getContainer,\n \"closeOnPopstate\": props.closeOnPopstate,\n \"closeOnClickOverlay\": props.closeOnClickOverlay,\n \"safeAreaInsetBottom\": props.safeAreaInsetBottom\n }\n }, inherit(ctx, true)]), [Header(), Description(), h(\"div\", {\n \"class\": bem('content')\n }, [props.actions && props.actions.map(Option), slots.default == null ? void 0 : slots.default()]), CancelText()]);\n}\n\nActionSheet.props = _extends({}, popupMixinProps, {\n title: String,\n actions: Array,\n duration: [Number, String],\n cancelText: String,\n description: String,\n getContainer: [String, Function],\n closeOnPopstate: Boolean,\n closeOnClickAction: Boolean,\n round: {\n type: Boolean,\n default: true\n },\n closeable: {\n type: Boolean,\n default: true\n },\n closeIcon: {\n type: String,\n default: 'cross'\n },\n safeAreaInsetBottom: {\n type: Boolean,\n default: true\n },\n overlay: {\n type: Boolean,\n default: true\n },\n closeOnClickOverlay: {\n type: Boolean,\n default: true\n }\n});\nexport default createComponent(ActionSheet);","export function isMobile(value) {\n value = value.replace(/[^-|\\d]/g, '');\n return /^((\\+86)|(86))?(1)\\d{10}$/.test(value) || /^0[0-9-]{10,13}$/.test(value);\n}","export var DEFAULT_ITEM_HEIGHT = 44;\nexport var pickerProps = {\n title: String,\n loading: Boolean,\n readonly: Boolean,\n itemHeight: [Number, String],\n showToolbar: Boolean,\n cancelButtonText: String,\n confirmButtonText: String,\n allowHtml: {\n type: Boolean,\n default: true\n },\n visibleItemCount: {\n type: [Number, String],\n default: 6\n },\n swipeDuration: {\n type: [Number, String],\n default: 1000\n }\n};","// color\nexport var RED = '#ee0a24'; // border\n\nexport var BORDER = 'van-hairline';\nexport var BORDER_TOP = BORDER + \"--top\";\nexport var BORDER_LEFT = BORDER + \"--left\";\nexport var BORDER_BOTTOM = BORDER + \"--bottom\";\nexport var BORDER_SURROUND = BORDER + \"--surround\";\nexport var BORDER_TOP_BOTTOM = BORDER + \"--top-bottom\";\nexport var BORDER_UNSET_TOP_BOTTOM = BORDER + \"-unset--top-bottom\";","import { deepAssign } from './deep-assign';\nexport function deepClone(obj) {\n if (Array.isArray(obj)) {\n return obj.map(function (item) {\n return deepClone(item);\n });\n }\n\n if (typeof obj === 'object') {\n return deepAssign({}, obj);\n }\n\n return obj;\n}","export function range(num, min, max) {\n return Math.min(Math.max(num, min), max);\n}\n\nfunction trimExtraChar(value, _char, regExp) {\n var index = value.indexOf(_char);\n var prefix = '';\n\n if (index === -1) {\n return value;\n }\n\n if (_char === '-' && index !== 0) {\n return value.slice(0, index);\n }\n\n if (_char === '.' && value.match(/^(\\.|-\\.)/)) {\n prefix = index ? '-0' : '0';\n }\n\n return prefix + value.slice(0, index + 1) + value.slice(index).replace(regExp, '');\n}\n\nexport function formatNumber(value, allowDot, allowMinus) {\n if (allowDot === void 0) {\n allowDot = true;\n }\n\n if (allowMinus === void 0) {\n allowMinus = true;\n }\n\n if (allowDot) {\n value = trimExtraChar(value, '.', /\\./g);\n } else {\n value = value.split('.')[0];\n }\n\n if (allowMinus) {\n value = trimExtraChar(value, '-', /-/g);\n } else {\n value = value.replace(/-/, '');\n }\n\n var regExp = allowDot ? /[^-0-9.]/g : /[^-0-9]/g;\n return value.replace(regExp, '');\n}","import _mergeJSXProps2 from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { deepClone } from '../utils/deep-clone';\nimport { createNamespace, isObject } from '../utils';\nimport { range } from '../utils/format/number';\nimport { preventDefault } from '../utils/dom/event';\nimport { TouchMixin } from '../mixins/touch';\nvar DEFAULT_DURATION = 200; // 惯性滑动思路:\n// 在手指离开屏幕时,如果和上一次 move 时的间隔小于 `MOMENTUM_LIMIT_TIME` 且 move\n// 距离大于 `MOMENTUM_LIMIT_DISTANCE` 时,执行惯性滑动\n\nvar MOMENTUM_LIMIT_TIME = 300;\nvar MOMENTUM_LIMIT_DISTANCE = 15;\n\nvar _createNamespace = createNamespace('picker-column'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nfunction getElementTranslateY(element) {\n var style = window.getComputedStyle(element);\n var transform = style.transform || style.webkitTransform;\n var translateY = transform.slice(7, transform.length - 1).split(', ')[5];\n return Number(translateY);\n}\n\nfunction isOptionDisabled(option) {\n return isObject(option) && option.disabled;\n}\n\nexport default createComponent({\n mixins: [TouchMixin],\n props: {\n valueKey: String,\n readonly: Boolean,\n allowHtml: Boolean,\n className: String,\n itemHeight: Number,\n defaultIndex: Number,\n swipeDuration: [Number, String],\n visibleItemCount: [Number, String],\n initialOptions: {\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n data: function data() {\n return {\n offset: 0,\n duration: 0,\n options: deepClone(this.initialOptions),\n currentIndex: this.defaultIndex\n };\n },\n created: function created() {\n if (this.$parent.children) {\n this.$parent.children.push(this);\n }\n\n this.setIndex(this.currentIndex);\n },\n mounted: function mounted() {\n this.bindTouchEvent(this.$el);\n },\n destroyed: function destroyed() {\n var children = this.$parent.children;\n\n if (children) {\n children.splice(children.indexOf(this), 1);\n }\n },\n watch: {\n initialOptions: 'setOptions',\n defaultIndex: function defaultIndex(val) {\n this.setIndex(val);\n }\n },\n computed: {\n count: function count() {\n return this.options.length;\n },\n baseOffset: function baseOffset() {\n return this.itemHeight * (this.visibleItemCount - 1) / 2;\n }\n },\n methods: {\n setOptions: function setOptions(options) {\n if (JSON.stringify(options) !== JSON.stringify(this.options)) {\n this.options = deepClone(options);\n this.setIndex(this.defaultIndex);\n }\n },\n onTouchStart: function onTouchStart(event) {\n if (this.readonly) {\n return;\n }\n\n this.touchStart(event);\n\n if (this.moving) {\n var translateY = getElementTranslateY(this.$refs.wrapper);\n this.offset = Math.min(0, translateY - this.baseOffset);\n this.startOffset = this.offset;\n } else {\n this.startOffset = this.offset;\n }\n\n this.duration = 0;\n this.transitionEndTrigger = null;\n this.touchStartTime = Date.now();\n this.momentumOffset = this.startOffset;\n },\n onTouchMove: function onTouchMove(event) {\n if (this.readonly) {\n return;\n }\n\n this.touchMove(event);\n\n if (this.direction === 'vertical') {\n this.moving = true;\n preventDefault(event, true);\n }\n\n this.offset = range(this.startOffset + this.deltaY, -(this.count * this.itemHeight), this.itemHeight);\n var now = Date.now();\n\n if (now - this.touchStartTime > MOMENTUM_LIMIT_TIME) {\n this.touchStartTime = now;\n this.momentumOffset = this.offset;\n }\n },\n onTouchEnd: function onTouchEnd() {\n var _this = this;\n\n if (this.readonly) {\n return;\n }\n\n var distance = this.offset - this.momentumOffset;\n var duration = Date.now() - this.touchStartTime;\n var allowMomentum = duration < MOMENTUM_LIMIT_TIME && Math.abs(distance) > MOMENTUM_LIMIT_DISTANCE;\n\n if (allowMomentum) {\n this.momentum(distance, duration);\n return;\n }\n\n var index = this.getIndexByOffset(this.offset);\n this.duration = DEFAULT_DURATION;\n this.setIndex(index, true); // compatible with desktop scenario\n // use setTimeout to skip the click event Emitted after touchstart\n\n setTimeout(function () {\n _this.moving = false;\n }, 0);\n },\n onTransitionEnd: function onTransitionEnd() {\n this.stopMomentum();\n },\n onClickItem: function onClickItem(index) {\n if (this.moving || this.readonly) {\n return;\n }\n\n this.transitionEndTrigger = null;\n this.duration = DEFAULT_DURATION;\n this.setIndex(index, true);\n },\n adjustIndex: function adjustIndex(index) {\n index = range(index, 0, this.count);\n\n for (var i = index; i < this.count; i++) {\n if (!isOptionDisabled(this.options[i])) return i;\n }\n\n for (var _i = index - 1; _i >= 0; _i--) {\n if (!isOptionDisabled(this.options[_i])) return _i;\n }\n },\n getOptionText: function getOptionText(option) {\n if (isObject(option) && this.valueKey in option) {\n return option[this.valueKey];\n }\n\n return option;\n },\n setIndex: function setIndex(index, emitChange) {\n var _this2 = this;\n\n index = this.adjustIndex(index) || 0;\n var offset = -index * this.itemHeight;\n\n var trigger = function trigger() {\n if (index !== _this2.currentIndex) {\n _this2.currentIndex = index;\n\n if (emitChange) {\n _this2.$emit('change', index);\n }\n }\n }; // trigger the change event after transitionend when moving\n\n\n if (this.moving && offset !== this.offset) {\n this.transitionEndTrigger = trigger;\n } else {\n trigger();\n }\n\n this.offset = offset;\n },\n setValue: function setValue(value) {\n var options = this.options;\n\n for (var i = 0; i < options.length; i++) {\n if (this.getOptionText(options[i]) === value) {\n return this.setIndex(i);\n }\n }\n },\n getValue: function getValue() {\n return this.options[this.currentIndex];\n },\n getIndexByOffset: function getIndexByOffset(offset) {\n return range(Math.round(-offset / this.itemHeight), 0, this.count - 1);\n },\n momentum: function momentum(distance, duration) {\n var speed = Math.abs(distance / duration);\n distance = this.offset + speed / 0.003 * (distance < 0 ? -1 : 1);\n var index = this.getIndexByOffset(distance);\n this.duration = +this.swipeDuration;\n this.setIndex(index, true);\n },\n stopMomentum: function stopMomentum() {\n this.moving = false;\n this.duration = 0;\n\n if (this.transitionEndTrigger) {\n this.transitionEndTrigger();\n this.transitionEndTrigger = null;\n }\n },\n genOptions: function genOptions() {\n var _this3 = this;\n\n var h = this.$createElement;\n var optionStyle = {\n height: this.itemHeight + \"px\"\n };\n return this.options.map(function (option, index) {\n var _domProps;\n\n var text = _this3.getOptionText(option);\n\n var disabled = isOptionDisabled(option);\n var data = {\n style: optionStyle,\n attrs: {\n role: 'button',\n tabindex: disabled ? -1 : 0\n },\n class: [bem('item', {\n disabled: disabled,\n selected: index === _this3.currentIndex\n })],\n on: {\n click: function click() {\n _this3.onClickItem(index);\n }\n }\n };\n var childData = {\n class: 'van-ellipsis',\n domProps: (_domProps = {}, _domProps[_this3.allowHtml ? 'innerHTML' : 'textContent'] = text, _domProps)\n };\n return h(\"li\", _mergeJSXProps([{}, data]), [_this3.slots('option', option) || h(\"div\", _mergeJSXProps2([{}, childData]))]);\n });\n }\n },\n render: function render() {\n var h = arguments[0];\n var wrapperStyle = {\n transform: \"translate3d(0, \" + (this.offset + this.baseOffset) + \"px, 0)\",\n transitionDuration: this.duration + \"ms\",\n transitionProperty: this.duration ? 'all' : 'none'\n };\n return h(\"div\", {\n \"class\": [bem(), this.className]\n }, [h(\"ul\", {\n \"ref\": \"wrapper\",\n \"style\": wrapperStyle,\n \"class\": bem('wrapper'),\n \"on\": {\n \"transitionend\": this.onTransitionEnd\n }\n }, [this.genOptions()])]);\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// Utils\nimport { createNamespace } from '../utils';\nimport { preventDefault } from '../utils/dom/event';\nimport { BORDER_UNSET_TOP_BOTTOM } from '../utils/constant';\nimport { pickerProps, DEFAULT_ITEM_HEIGHT } from './shared';\nimport { unitToPx } from '../utils/format/unit'; // Components\n\nimport Loading from '../loading';\nimport PickerColumn from './PickerColumn';\n\nvar _createNamespace = createNamespace('picker'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nexport default createComponent({\n props: _extends({}, pickerProps, {\n defaultIndex: {\n type: [Number, String],\n default: 0\n },\n columns: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n toolbarPosition: {\n type: String,\n default: 'top'\n },\n valueKey: {\n type: String,\n default: 'text'\n }\n }),\n data: function data() {\n return {\n children: [],\n formattedColumns: []\n };\n },\n computed: {\n itemPxHeight: function itemPxHeight() {\n return this.itemHeight ? unitToPx(this.itemHeight) : DEFAULT_ITEM_HEIGHT;\n },\n dataType: function dataType() {\n var columns = this.columns;\n var firstColumn = columns[0] || {};\n\n if (firstColumn.children) {\n return 'cascade';\n }\n\n if (firstColumn.values) {\n return 'object';\n }\n\n return 'text';\n }\n },\n watch: {\n columns: {\n handler: 'format',\n immediate: true\n }\n },\n methods: {\n format: function format() {\n var columns = this.columns,\n dataType = this.dataType;\n\n if (dataType === 'text') {\n this.formattedColumns = [{\n values: columns\n }];\n } else if (dataType === 'cascade') {\n this.formatCascade();\n } else {\n this.formattedColumns = columns;\n }\n },\n formatCascade: function formatCascade() {\n var formatted = [];\n var cursor = {\n children: this.columns\n };\n\n while (cursor && cursor.children) {\n var _cursor$defaultIndex;\n\n var _cursor = cursor,\n children = _cursor.children;\n var defaultIndex = (_cursor$defaultIndex = cursor.defaultIndex) != null ? _cursor$defaultIndex : +this.defaultIndex;\n\n while (children[defaultIndex] && children[defaultIndex].disabled) {\n if (defaultIndex < children.length - 1) {\n defaultIndex++;\n } else {\n defaultIndex = 0;\n break;\n }\n }\n\n formatted.push({\n values: cursor.children,\n className: cursor.className,\n defaultIndex: defaultIndex\n });\n cursor = children[defaultIndex];\n }\n\n this.formattedColumns = formatted;\n },\n emit: function emit(event) {\n var _this = this;\n\n if (this.dataType === 'text') {\n this.$emit(event, this.getColumnValue(0), this.getColumnIndex(0));\n } else {\n var values = this.getValues(); // compatible with old version of wrong parameters\n // should be removed in next major version\n // see: https://github.com/youzan/vant/issues/5905\n\n if (this.dataType === 'cascade') {\n values = values.map(function (item) {\n return item[_this.valueKey];\n });\n }\n\n this.$emit(event, values, this.getIndexes());\n }\n },\n onCascadeChange: function onCascadeChange(columnIndex) {\n var cursor = {\n children: this.columns\n };\n var indexes = this.getIndexes();\n\n for (var i = 0; i <= columnIndex; i++) {\n cursor = cursor.children[indexes[i]];\n }\n\n while (cursor && cursor.children) {\n columnIndex++;\n this.setColumnValues(columnIndex, cursor.children);\n cursor = cursor.children[cursor.defaultIndex || 0];\n }\n },\n onChange: function onChange(columnIndex) {\n var _this2 = this;\n\n if (this.dataType === 'cascade') {\n this.onCascadeChange(columnIndex);\n }\n\n if (this.dataType === 'text') {\n this.$emit('change', this, this.getColumnValue(0), this.getColumnIndex(0));\n } else {\n var values = this.getValues(); // compatible with old version of wrong parameters\n // should be removed in next major version\n // see: https://github.com/youzan/vant/issues/5905\n\n if (this.dataType === 'cascade') {\n values = values.map(function (item) {\n return item[_this2.valueKey];\n });\n }\n\n this.$emit('change', this, values, columnIndex);\n }\n },\n // get column instance by index\n getColumn: function getColumn(index) {\n return this.children[index];\n },\n // @exposed-api\n // get column value by index\n getColumnValue: function getColumnValue(index) {\n var column = this.getColumn(index);\n return column && column.getValue();\n },\n // @exposed-api\n // set column value by index\n setColumnValue: function setColumnValue(index, value) {\n var column = this.getColumn(index);\n\n if (column) {\n column.setValue(value);\n\n if (this.dataType === 'cascade') {\n this.onCascadeChange(index);\n }\n }\n },\n // @exposed-api\n // get column option index by column index\n getColumnIndex: function getColumnIndex(columnIndex) {\n return (this.getColumn(columnIndex) || {}).currentIndex;\n },\n // @exposed-api\n // set column option index by column index\n setColumnIndex: function setColumnIndex(columnIndex, optionIndex) {\n var column = this.getColumn(columnIndex);\n\n if (column) {\n column.setIndex(optionIndex);\n\n if (this.dataType === 'cascade') {\n this.onCascadeChange(columnIndex);\n }\n }\n },\n // @exposed-api\n // get options of column by index\n getColumnValues: function getColumnValues(index) {\n return (this.children[index] || {}).options;\n },\n // @exposed-api\n // set options of column by index\n setColumnValues: function setColumnValues(index, options) {\n var column = this.children[index];\n\n if (column) {\n column.setOptions(options);\n }\n },\n // @exposed-api\n // get values of all columns\n getValues: function getValues() {\n return this.children.map(function (child) {\n return child.getValue();\n });\n },\n // @exposed-api\n // set values of all columns\n setValues: function setValues(values) {\n var _this3 = this;\n\n values.forEach(function (value, index) {\n _this3.setColumnValue(index, value);\n });\n },\n // @exposed-api\n // get indexes of all columns\n getIndexes: function getIndexes() {\n return this.children.map(function (child) {\n return child.currentIndex;\n });\n },\n // @exposed-api\n // set indexes of all columns\n setIndexes: function setIndexes(indexes) {\n var _this4 = this;\n\n indexes.forEach(function (optionIndex, columnIndex) {\n _this4.setColumnIndex(columnIndex, optionIndex);\n });\n },\n // @exposed-api\n confirm: function confirm() {\n this.children.forEach(function (child) {\n return child.stopMomentum();\n });\n this.emit('confirm');\n },\n cancel: function cancel() {\n this.emit('cancel');\n },\n genTitle: function genTitle() {\n var h = this.$createElement;\n var titleSlot = this.slots('title');\n\n if (titleSlot) {\n return titleSlot;\n }\n\n if (this.title) {\n return h(\"div\", {\n \"class\": ['van-ellipsis', bem('title')]\n }, [this.title]);\n }\n },\n genCancel: function genCancel() {\n var h = this.$createElement;\n return h(\"button\", {\n \"attrs\": {\n \"type\": \"button\"\n },\n \"class\": bem('cancel'),\n \"on\": {\n \"click\": this.cancel\n }\n }, [this.slots('cancel') || this.cancelButtonText || t('cancel')]);\n },\n genConfirm: function genConfirm() {\n var h = this.$createElement;\n return h(\"button\", {\n \"attrs\": {\n \"type\": \"button\"\n },\n \"class\": bem('confirm'),\n \"on\": {\n \"click\": this.confirm\n }\n }, [this.slots('confirm') || this.confirmButtonText || t('confirm')]);\n },\n genToolbar: function genToolbar() {\n var h = this.$createElement;\n\n if (this.showToolbar) {\n return h(\"div\", {\n \"class\": bem('toolbar')\n }, [this.slots() || [this.genCancel(), this.genTitle(), this.genConfirm()]]);\n }\n },\n genColumns: function genColumns() {\n var h = this.$createElement;\n var itemPxHeight = this.itemPxHeight;\n var wrapHeight = itemPxHeight * this.visibleItemCount;\n var frameStyle = {\n height: itemPxHeight + \"px\"\n };\n var columnsStyle = {\n height: wrapHeight + \"px\"\n };\n var maskStyle = {\n backgroundSize: \"100% \" + (wrapHeight - itemPxHeight) / 2 + \"px\"\n };\n return h(\"div\", {\n \"class\": bem('columns'),\n \"style\": columnsStyle,\n \"on\": {\n \"touchmove\": preventDefault\n }\n }, [this.genColumnItems(), h(\"div\", {\n \"class\": bem('mask'),\n \"style\": maskStyle\n }), h(\"div\", {\n \"class\": [BORDER_UNSET_TOP_BOTTOM, bem('frame')],\n \"style\": frameStyle\n })]);\n },\n genColumnItems: function genColumnItems() {\n var _this5 = this;\n\n var h = this.$createElement;\n return this.formattedColumns.map(function (item, columnIndex) {\n var _item$defaultIndex;\n\n return h(PickerColumn, {\n \"attrs\": {\n \"readonly\": _this5.readonly,\n \"valueKey\": _this5.valueKey,\n \"allowHtml\": _this5.allowHtml,\n \"className\": item.className,\n \"itemHeight\": _this5.itemPxHeight,\n \"defaultIndex\": (_item$defaultIndex = item.defaultIndex) != null ? _item$defaultIndex : +_this5.defaultIndex,\n \"swipeDuration\": _this5.swipeDuration,\n \"visibleItemCount\": _this5.visibleItemCount,\n \"initialOptions\": item.values\n },\n \"scopedSlots\": {\n option: _this5.$scopedSlots.option\n },\n \"on\": {\n \"change\": function change() {\n _this5.onChange(columnIndex);\n }\n }\n });\n });\n }\n },\n render: function render(h) {\n return h(\"div\", {\n \"class\": bem()\n }, [this.toolbarPosition === 'top' ? this.genToolbar() : h(), this.loading ? h(Loading, {\n \"class\": bem('loading')\n }) : h(), this.slots('columns-top'), this.genColumns(), this.slots('columns-bottom'), this.toolbarPosition === 'bottom' ? this.genToolbar() : h()]);\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createNamespace } from '../utils';\nimport { pickerProps } from '../picker/shared';\nimport Picker from '../picker';\n\nvar _createNamespace = createNamespace('area'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nvar PLACEHOLDER_CODE = '000000';\n\nfunction isOverseaCode(code) {\n return code[0] === '9';\n}\n\nfunction pickSlots(instance, keys) {\n var $slots = instance.$slots,\n $scopedSlots = instance.$scopedSlots;\n var scopedSlots = {};\n keys.forEach(function (key) {\n if ($scopedSlots[key]) {\n scopedSlots[key] = $scopedSlots[key];\n } else if ($slots[key]) {\n scopedSlots[key] = function () {\n return $slots[key];\n };\n }\n });\n return scopedSlots;\n}\n\nexport default createComponent({\n props: _extends({}, pickerProps, {\n value: String,\n areaList: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n columnsNum: {\n type: [Number, String],\n default: 3\n },\n isOverseaCode: {\n type: Function,\n default: isOverseaCode\n },\n columnsPlaceholder: {\n type: Array,\n default: function _default() {\n return [];\n }\n }\n }),\n data: function data() {\n return {\n code: this.value,\n columns: [{\n values: []\n }, {\n values: []\n }, {\n values: []\n }]\n };\n },\n computed: {\n province: function province() {\n return this.areaList.province_list || {};\n },\n city: function city() {\n return this.areaList.city_list || {};\n },\n county: function county() {\n return this.areaList.county_list || {};\n },\n displayColumns: function displayColumns() {\n return this.columns.slice(0, +this.columnsNum);\n },\n placeholderMap: function placeholderMap() {\n return {\n province: this.columnsPlaceholder[0] || '',\n city: this.columnsPlaceholder[1] || '',\n county: this.columnsPlaceholder[2] || ''\n };\n }\n },\n watch: {\n value: function value(val) {\n this.code = val;\n this.setValues();\n },\n areaList: {\n deep: true,\n handler: 'setValues'\n },\n columnsNum: function columnsNum() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.setValues();\n });\n }\n },\n mounted: function mounted() {\n this.setValues();\n },\n methods: {\n // get list by code\n getList: function getList(type, code) {\n var result = [];\n\n if (type !== 'province' && !code) {\n return result;\n }\n\n var list = this[type];\n result = Object.keys(list).map(function (listCode) {\n return {\n code: listCode,\n name: list[listCode]\n };\n });\n\n if (code) {\n // oversea code\n if (this.isOverseaCode(code) && type === 'city') {\n code = '9';\n }\n\n result = result.filter(function (item) {\n return item.code.indexOf(code) === 0;\n });\n }\n\n if (this.placeholderMap[type] && result.length) {\n // set columns placeholder\n var codeFill = '';\n\n if (type === 'city') {\n codeFill = PLACEHOLDER_CODE.slice(2, 4);\n } else if (type === 'county') {\n codeFill = PLACEHOLDER_CODE.slice(4, 6);\n }\n\n result.unshift({\n code: \"\" + code + codeFill,\n name: this.placeholderMap[type]\n });\n }\n\n return result;\n },\n // get index by code\n getIndex: function getIndex(type, code) {\n var compareNum = type === 'province' ? 2 : type === 'city' ? 4 : 6;\n var list = this.getList(type, code.slice(0, compareNum - 2)); // oversea code\n\n if (this.isOverseaCode(code) && type === 'province') {\n compareNum = 1;\n }\n\n code = code.slice(0, compareNum);\n\n for (var i = 0; i < list.length; i++) {\n if (list[i].code.slice(0, compareNum) === code) {\n return i;\n }\n }\n\n return 0;\n },\n // parse output columns data\n parseOutputValues: function parseOutputValues(values) {\n var _this2 = this;\n\n return values.map(function (value, index) {\n // save undefined value\n if (!value) return value;\n value = JSON.parse(JSON.stringify(value));\n\n if (!value.code || value.name === _this2.columnsPlaceholder[index]) {\n value.code = '';\n value.name = '';\n }\n\n return value;\n });\n },\n onChange: function onChange(picker, values, index) {\n this.code = values[index].code;\n this.setValues();\n var parsedValues = this.parseOutputValues(picker.getValues());\n this.$emit('change', picker, parsedValues, index);\n },\n onConfirm: function onConfirm(values, index) {\n values = this.parseOutputValues(values);\n this.setValues();\n this.$emit('confirm', values, index);\n },\n getDefaultCode: function getDefaultCode() {\n if (this.columnsPlaceholder.length) {\n return PLACEHOLDER_CODE;\n }\n\n var countyCodes = Object.keys(this.county);\n\n if (countyCodes[0]) {\n return countyCodes[0];\n }\n\n var cityCodes = Object.keys(this.city);\n\n if (cityCodes[0]) {\n return cityCodes[0];\n }\n\n return '';\n },\n setValues: function setValues() {\n var code = this.code;\n\n if (!code) {\n code = this.getDefaultCode();\n }\n\n var picker = this.$refs.picker;\n var province = this.getList('province');\n var city = this.getList('city', code.slice(0, 2));\n\n if (!picker) {\n return;\n }\n\n picker.setColumnValues(0, province);\n picker.setColumnValues(1, city);\n\n if (city.length && code.slice(2, 4) === '00' && !this.isOverseaCode(code)) {\n code = city[0].code;\n }\n\n picker.setColumnValues(2, this.getList('county', code.slice(0, 4)));\n picker.setIndexes([this.getIndex('province', code), this.getIndex('city', code), this.getIndex('county', code)]);\n },\n getValues: function getValues() {\n var picker = this.$refs.picker;\n var getValues = picker ? picker.getValues().filter(function (value) {\n return !!value;\n }) : [];\n getValues = this.parseOutputValues(getValues);\n return getValues;\n },\n getArea: function getArea() {\n var values = this.getValues();\n var area = {\n code: '',\n country: '',\n province: '',\n city: '',\n county: ''\n };\n\n if (!values.length) {\n return area;\n }\n\n var names = values.map(function (item) {\n return item.name;\n });\n var validValues = values.filter(function (value) {\n return !!value.code;\n });\n area.code = validValues.length ? validValues[validValues.length - 1].code : '';\n\n if (this.isOverseaCode(area.code)) {\n area.country = names[1] || '';\n area.province = names[2] || '';\n } else {\n area.province = names[0] || '';\n area.city = names[1] || '';\n area.county = names[2] || '';\n }\n\n return area;\n },\n // @exposed-api\n reset: function reset(code) {\n this.code = code || '';\n this.setValues();\n }\n },\n render: function render() {\n var h = arguments[0];\n\n var on = _extends({}, this.$listeners, {\n change: this.onChange,\n confirm: this.onConfirm\n });\n\n return h(Picker, {\n \"ref\": \"picker\",\n \"class\": bem(),\n \"attrs\": {\n \"showToolbar\": true,\n \"valueKey\": \"name\",\n \"title\": this.title,\n \"columns\": this.displayColumns,\n \"loading\": this.loading,\n \"readonly\": this.readonly,\n \"itemHeight\": this.itemHeight,\n \"swipeDuration\": this.swipeDuration,\n \"visibleItemCount\": this.visibleItemCount,\n \"cancelButtonText\": this.cancelButtonText,\n \"confirmButtonText\": this.confirmButtonText\n },\n \"scopedSlots\": pickSlots(this, ['title', 'columns-top', 'columns-bottom']),\n \"on\": _extends({}, on)\n });\n }\n});","/**\n * Vue Router support\n */\nfunction isRedundantNavigation(err) {\n return err.name === 'NavigationDuplicated' || // compatible with vue-router@3.3\n err.message && err.message.indexOf('redundant navigation') !== -1;\n}\n\nexport function route(router, config) {\n var to = config.to,\n url = config.url,\n replace = config.replace;\n\n if (to && router) {\n var promise = router[replace ? 'replace' : 'push'](to);\n /* istanbul ignore else */\n\n if (promise && promise.catch) {\n promise.catch(function (err) {\n if (err && !isRedundantNavigation(err)) {\n throw err;\n }\n });\n }\n } else if (url) {\n replace ? location.replace(url) : location.href = url;\n }\n}\nexport function functionalRoute(context) {\n route(context.parent && context.parent.$router, context.props);\n}\nexport var routeProps = {\n url: String,\n replace: Boolean,\n to: [String, Object]\n};","export var cellProps = {\n icon: String,\n size: String,\n center: Boolean,\n isLink: Boolean,\n required: Boolean,\n iconPrefix: String,\n titleStyle: null,\n titleClass: null,\n valueClass: null,\n labelClass: null,\n title: [Number, String],\n value: [Number, String],\n label: [Number, String],\n arrowDirection: String,\n border: {\n type: Boolean,\n default: true\n },\n clickable: {\n type: Boolean,\n default: null\n }\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace, isDef } from '../utils';\nimport { emit, inherit } from '../utils/functional';\nimport { routeProps, functionalRoute } from '../utils/router';\nimport { cellProps } from './shared'; // Components\n\nimport Icon from '../icon'; // Types\n\nvar _createNamespace = createNamespace('cell'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nfunction Cell(h, props, slots, ctx) {\n var _props$clickable;\n\n var icon = props.icon,\n size = props.size,\n title = props.title,\n label = props.label,\n value = props.value,\n isLink = props.isLink;\n var showTitle = slots.title || isDef(title);\n\n function Label() {\n var showLabel = slots.label || isDef(label);\n\n if (showLabel) {\n return h(\"div\", {\n \"class\": [bem('label'), props.labelClass]\n }, [slots.label ? slots.label() : label]);\n }\n }\n\n function Title() {\n if (showTitle) {\n return h(\"div\", {\n \"class\": [bem('title'), props.titleClass],\n \"style\": props.titleStyle\n }, [slots.title ? slots.title() : h(\"span\", [title]), Label()]);\n }\n }\n\n function Value() {\n var showValue = slots.default || isDef(value);\n\n if (showValue) {\n return h(\"div\", {\n \"class\": [bem('value', {\n alone: !showTitle\n }), props.valueClass]\n }, [slots.default ? slots.default() : h(\"span\", [value])]);\n }\n }\n\n function LeftIcon() {\n if (slots.icon) {\n return slots.icon();\n }\n\n if (icon) {\n return h(Icon, {\n \"class\": bem('left-icon'),\n \"attrs\": {\n \"name\": icon,\n \"classPrefix\": props.iconPrefix\n }\n });\n }\n }\n\n function RightIcon() {\n var rightIconSlot = slots['right-icon'];\n\n if (rightIconSlot) {\n return rightIconSlot();\n }\n\n if (isLink) {\n var arrowDirection = props.arrowDirection;\n return h(Icon, {\n \"class\": bem('right-icon'),\n \"attrs\": {\n \"name\": arrowDirection ? \"arrow-\" + arrowDirection : 'arrow'\n }\n });\n }\n }\n\n function onClick(event) {\n emit(ctx, 'click', event);\n functionalRoute(ctx);\n }\n\n var clickable = (_props$clickable = props.clickable) != null ? _props$clickable : isLink;\n var classes = {\n clickable: clickable,\n center: props.center,\n required: props.required,\n borderless: !props.border\n };\n\n if (size) {\n classes[size] = size;\n }\n\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem(classes),\n \"attrs\": {\n \"role\": clickable ? 'button' : null,\n \"tabindex\": clickable ? 0 : null\n },\n \"on\": {\n \"click\": onClick\n }\n }, inherit(ctx)]), [LeftIcon(), Title(), Value(), RightIcon(), slots.extra == null ? void 0 : slots.extra()]);\n}\n\nCell.props = _extends({}, cellProps, routeProps);\nexport default createComponent(Cell);","import { isServer } from '..';\nexport function isAndroid() {\n /* istanbul ignore next */\n return isServer ? false : /android/.test(navigator.userAgent.toLowerCase());\n}\nexport function isIOS() {\n /* istanbul ignore next */\n return isServer ? false : /ios|iphone|ipad|ipod/.test(navigator.userAgent.toLowerCase());\n}","/**\n * Hack for iOS12 page scroll\n * https://developers.weixin.qq.com/community/develop/doc/00044ae90742f8c82fb78fcae56800\n */\nimport { isIOS as checkIsIOS } from '../validate/system';\nimport { getRootScrollTop, setRootScrollTop } from './scroll';\nvar isIOS = checkIsIOS();\n/* istanbul ignore next */\n\nexport function resetScroll() {\n if (isIOS) {\n setRootScrollTop(getRootScrollTop());\n }\n}","import _mergeJSXProps2 from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n// Utils\nimport { resetScroll } from '../utils/dom/reset-scroll';\nimport { formatNumber } from '../utils/format/number';\nimport { preventDefault } from '../utils/dom/event';\nimport { isDef, addUnit, isObject, isPromise, isFunction, createNamespace } from '../utils'; // Components\n\nimport Icon from '../icon';\nimport Cell from '../cell';\nimport { cellProps } from '../cell/shared';\n\nvar _createNamespace = createNamespace('field'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n inheritAttrs: false,\n provide: function provide() {\n return {\n vanField: this\n };\n },\n inject: {\n vanForm: {\n default: null\n }\n },\n props: _extends({}, cellProps, {\n name: String,\n rules: Array,\n disabled: {\n type: Boolean,\n default: null\n },\n readonly: {\n type: Boolean,\n default: null\n },\n autosize: [Boolean, Object],\n leftIcon: String,\n rightIcon: String,\n clearable: Boolean,\n formatter: Function,\n maxlength: [Number, String],\n labelWidth: [Number, String],\n labelClass: null,\n labelAlign: String,\n inputAlign: String,\n placeholder: String,\n errorMessage: String,\n errorMessageAlign: String,\n showWordLimit: Boolean,\n value: {\n type: [Number, String],\n default: ''\n },\n type: {\n type: String,\n default: 'text'\n },\n error: {\n type: Boolean,\n default: null\n },\n colon: {\n type: Boolean,\n default: null\n },\n clearTrigger: {\n type: String,\n default: 'focus'\n },\n formatTrigger: {\n type: String,\n default: 'onChange'\n }\n }),\n data: function data() {\n return {\n focused: false,\n validateFailed: false,\n validateMessage: ''\n };\n },\n watch: {\n value: function value() {\n this.updateValue(this.value);\n this.resetValidation();\n this.validateWithTrigger('onChange');\n this.$nextTick(this.adjustSize);\n }\n },\n mounted: function mounted() {\n this.updateValue(this.value, this.formatTrigger);\n this.$nextTick(this.adjustSize);\n\n if (this.vanForm) {\n this.vanForm.addField(this);\n }\n },\n beforeDestroy: function beforeDestroy() {\n if (this.vanForm) {\n this.vanForm.removeField(this);\n }\n },\n computed: {\n showClear: function showClear() {\n var readonly = this.getProp('readonly');\n\n if (this.clearable && !readonly) {\n var hasValue = isDef(this.value) && this.value !== '';\n var trigger = this.clearTrigger === 'always' || this.clearTrigger === 'focus' && this.focused;\n return hasValue && trigger;\n }\n },\n showError: function showError() {\n if (this.error !== null) {\n return this.error;\n }\n\n if (this.vanForm && this.vanForm.showError && this.validateFailed) {\n return true;\n }\n },\n listeners: function listeners() {\n return _extends({}, this.$listeners, {\n blur: this.onBlur,\n focus: this.onFocus,\n input: this.onInput,\n click: this.onClickInput,\n keypress: this.onKeypress\n });\n },\n labelStyle: function labelStyle() {\n var labelWidth = this.getProp('labelWidth');\n\n if (labelWidth) {\n return {\n width: addUnit(labelWidth)\n };\n }\n },\n formValue: function formValue() {\n if (this.children && (this.$scopedSlots.input || this.$slots.input)) {\n return this.children.value;\n }\n\n return this.value;\n }\n },\n methods: {\n // @exposed-api\n focus: function focus() {\n if (this.$refs.input) {\n this.$refs.input.focus();\n }\n },\n // @exposed-api\n blur: function blur() {\n if (this.$refs.input) {\n this.$refs.input.blur();\n }\n },\n runValidator: function runValidator(value, rule) {\n return new Promise(function (resolve) {\n var returnVal = rule.validator(value, rule);\n\n if (isPromise(returnVal)) {\n return returnVal.then(resolve);\n }\n\n resolve(returnVal);\n });\n },\n isEmptyValue: function isEmptyValue(value) {\n if (Array.isArray(value)) {\n return !value.length;\n }\n\n if (value === 0) {\n return false;\n }\n\n return !value;\n },\n runSyncRule: function runSyncRule(value, rule) {\n if (rule.required && this.isEmptyValue(value)) {\n return false;\n }\n\n if (rule.pattern && !rule.pattern.test(value)) {\n return false;\n }\n\n return true;\n },\n getRuleMessage: function getRuleMessage(value, rule) {\n var message = rule.message;\n\n if (isFunction(message)) {\n return message(value, rule);\n }\n\n return message;\n },\n runRules: function runRules(rules) {\n var _this = this;\n\n return rules.reduce(function (promise, rule) {\n return promise.then(function () {\n if (_this.validateFailed) {\n return;\n }\n\n var value = _this.formValue;\n\n if (rule.formatter) {\n value = rule.formatter(value, rule);\n }\n\n if (!_this.runSyncRule(value, rule)) {\n _this.validateFailed = true;\n _this.validateMessage = _this.getRuleMessage(value, rule);\n return;\n }\n\n if (rule.validator) {\n return _this.runValidator(value, rule).then(function (result) {\n if (result === false) {\n _this.validateFailed = true;\n _this.validateMessage = _this.getRuleMessage(value, rule);\n }\n });\n }\n });\n }, Promise.resolve());\n },\n validate: function validate(rules) {\n var _this2 = this;\n\n if (rules === void 0) {\n rules = this.rules;\n }\n\n return new Promise(function (resolve) {\n if (!rules) {\n resolve();\n }\n\n _this2.resetValidation();\n\n _this2.runRules(rules).then(function () {\n if (_this2.validateFailed) {\n resolve({\n name: _this2.name,\n message: _this2.validateMessage\n });\n } else {\n resolve();\n }\n });\n });\n },\n validateWithTrigger: function validateWithTrigger(trigger) {\n if (this.vanForm && this.rules) {\n var defaultTrigger = this.vanForm.validateTrigger === trigger;\n var rules = this.rules.filter(function (rule) {\n if (rule.trigger) {\n return rule.trigger === trigger;\n }\n\n return defaultTrigger;\n });\n this.validate(rules);\n }\n },\n resetValidation: function resetValidation() {\n if (this.validateFailed) {\n this.validateFailed = false;\n this.validateMessage = '';\n }\n },\n updateValue: function updateValue(value, trigger) {\n if (trigger === void 0) {\n trigger = 'onChange';\n }\n\n value = isDef(value) ? String(value) : ''; // native maxlength have incorrect line-break counting\n // see: https://github.com/youzan/vant/issues/5033\n\n var maxlength = this.maxlength;\n\n if (isDef(maxlength) && value.length > maxlength) {\n if (this.value && this.value.length === +maxlength) {\n value = this.value;\n } else {\n value = value.slice(0, maxlength);\n }\n }\n\n if (this.type === 'number' || this.type === 'digit') {\n var isNumber = this.type === 'number';\n value = formatNumber(value, isNumber, isNumber);\n }\n\n if (this.formatter && trigger === this.formatTrigger) {\n value = this.formatter(value);\n }\n\n var input = this.$refs.input;\n\n if (input && value !== input.value) {\n input.value = value;\n }\n\n if (value !== this.value) {\n this.$emit('input', value);\n }\n },\n onInput: function onInput(event) {\n // not update v-model when composing\n if (event.target.composing) {\n return;\n }\n\n this.updateValue(event.target.value);\n },\n onFocus: function onFocus(event) {\n this.focused = true;\n this.$emit('focus', event); // readonly not work in lagacy mobile safari\n\n /* istanbul ignore if */\n\n var readonly = this.getProp('readonly');\n\n if (readonly) {\n this.blur();\n }\n },\n onBlur: function onBlur(event) {\n this.focused = false;\n this.updateValue(this.value, 'onBlur');\n this.$emit('blur', event);\n this.validateWithTrigger('onBlur');\n resetScroll();\n },\n onClick: function onClick(event) {\n this.$emit('click', event);\n },\n onClickInput: function onClickInput(event) {\n this.$emit('click-input', event);\n },\n onClickLeftIcon: function onClickLeftIcon(event) {\n this.$emit('click-left-icon', event);\n },\n onClickRightIcon: function onClickRightIcon(event) {\n this.$emit('click-right-icon', event);\n },\n onClear: function onClear(event) {\n preventDefault(event);\n this.$emit('input', '');\n this.$emit('clear', event);\n },\n onKeypress: function onKeypress(event) {\n var ENTER_CODE = 13;\n\n if (event.keyCode === ENTER_CODE) {\n var submitOnEnter = this.getProp('submitOnEnter');\n\n if (!submitOnEnter && this.type !== 'textarea') {\n preventDefault(event);\n } // trigger blur after click keyboard search button\n\n\n if (this.type === 'search') {\n this.blur();\n }\n }\n\n this.$emit('keypress', event);\n },\n adjustSize: function adjustSize() {\n var input = this.$refs.input;\n\n if (!(this.type === 'textarea' && this.autosize) || !input) {\n return;\n }\n\n input.style.height = 'auto';\n var height = input.scrollHeight;\n\n if (isObject(this.autosize)) {\n var _this$autosize = this.autosize,\n maxHeight = _this$autosize.maxHeight,\n minHeight = _this$autosize.minHeight;\n\n if (maxHeight) {\n height = Math.min(height, maxHeight);\n }\n\n if (minHeight) {\n height = Math.max(height, minHeight);\n }\n }\n\n if (height) {\n input.style.height = height + 'px';\n }\n },\n genInput: function genInput() {\n var h = this.$createElement;\n var type = this.type;\n var disabled = this.getProp('disabled');\n var readonly = this.getProp('readonly');\n var inputSlot = this.slots('input');\n var inputAlign = this.getProp('inputAlign');\n\n if (inputSlot) {\n return h(\"div\", {\n \"class\": bem('control', [inputAlign, 'custom']),\n \"on\": {\n \"click\": this.onClickInput\n }\n }, [inputSlot]);\n }\n\n var inputProps = {\n ref: 'input',\n class: bem('control', inputAlign),\n domProps: {\n value: this.value\n },\n attrs: _extends({}, this.$attrs, {\n name: this.name,\n disabled: disabled,\n readonly: readonly,\n placeholder: this.placeholder\n }),\n on: this.listeners,\n // add model directive to skip IME composition\n directives: [{\n name: 'model',\n value: this.value\n }]\n };\n\n if (type === 'textarea') {\n return h(\"textarea\", _mergeJSXProps([{}, inputProps]));\n }\n\n var inputType = type;\n var inputMode; // type=\"number\" is weired in iOS, and can't prevent dot in Android\n // so use inputmode to set keyboard in mordern browers\n\n if (type === 'number') {\n inputType = 'text';\n inputMode = 'decimal';\n }\n\n if (type === 'digit') {\n inputType = 'tel';\n inputMode = 'numeric';\n }\n\n return h(\"input\", _mergeJSXProps2([{\n \"attrs\": {\n \"type\": inputType,\n \"inputmode\": inputMode\n }\n }, inputProps]));\n },\n genLeftIcon: function genLeftIcon() {\n var h = this.$createElement;\n var showLeftIcon = this.slots('left-icon') || this.leftIcon;\n\n if (showLeftIcon) {\n return h(\"div\", {\n \"class\": bem('left-icon'),\n \"on\": {\n \"click\": this.onClickLeftIcon\n }\n }, [this.slots('left-icon') || h(Icon, {\n \"attrs\": {\n \"name\": this.leftIcon,\n \"classPrefix\": this.iconPrefix\n }\n })]);\n }\n },\n genRightIcon: function genRightIcon() {\n var h = this.$createElement;\n var slots = this.slots;\n var showRightIcon = slots('right-icon') || this.rightIcon;\n\n if (showRightIcon) {\n return h(\"div\", {\n \"class\": bem('right-icon'),\n \"on\": {\n \"click\": this.onClickRightIcon\n }\n }, [slots('right-icon') || h(Icon, {\n \"attrs\": {\n \"name\": this.rightIcon,\n \"classPrefix\": this.iconPrefix\n }\n })]);\n }\n },\n genWordLimit: function genWordLimit() {\n var h = this.$createElement;\n\n if (this.showWordLimit && this.maxlength) {\n var count = (this.value || '').length;\n return h(\"div\", {\n \"class\": bem('word-limit')\n }, [h(\"span\", {\n \"class\": bem('word-num')\n }, [count]), \"/\", this.maxlength]);\n }\n },\n genMessage: function genMessage() {\n var h = this.$createElement;\n\n if (this.vanForm && this.vanForm.showErrorMessage === false) {\n return;\n }\n\n var message = this.errorMessage || this.validateMessage;\n\n if (message) {\n var errorMessageAlign = this.getProp('errorMessageAlign');\n return h(\"div\", {\n \"class\": bem('error-message', errorMessageAlign)\n }, [message]);\n }\n },\n getProp: function getProp(key) {\n if (isDef(this[key])) {\n return this[key];\n }\n\n if (this.vanForm && isDef(this.vanForm[key])) {\n return this.vanForm[key];\n }\n },\n genLabel: function genLabel() {\n var h = this.$createElement;\n var colon = this.getProp('colon') ? ':' : '';\n\n if (this.slots('label')) {\n return [this.slots('label'), colon];\n }\n\n if (this.label) {\n return h(\"span\", [this.label + colon]);\n }\n }\n },\n render: function render() {\n var _bem;\n\n var h = arguments[0];\n var slots = this.slots;\n var disabled = this.getProp('disabled');\n var labelAlign = this.getProp('labelAlign');\n var scopedSlots = {\n icon: this.genLeftIcon\n };\n var Label = this.genLabel();\n\n if (Label) {\n scopedSlots.title = function () {\n return Label;\n };\n }\n\n var extra = this.slots('extra');\n\n if (extra) {\n scopedSlots.extra = function () {\n return extra;\n };\n }\n\n return h(Cell, {\n \"attrs\": {\n \"icon\": this.leftIcon,\n \"size\": this.size,\n \"center\": this.center,\n \"border\": this.border,\n \"isLink\": this.isLink,\n \"required\": this.required,\n \"clickable\": this.clickable,\n \"titleStyle\": this.labelStyle,\n \"valueClass\": bem('value'),\n \"titleClass\": [bem('label', labelAlign), this.labelClass],\n \"arrowDirection\": this.arrowDirection\n },\n \"scopedSlots\": scopedSlots,\n \"class\": bem((_bem = {\n error: this.showError,\n disabled: disabled\n }, _bem[\"label-\" + labelAlign] = labelAlign, _bem['min-height'] = this.type === 'textarea' && !this.autosize, _bem)),\n \"on\": {\n \"click\": this.onClick\n }\n }, [h(\"div\", {\n \"class\": bem('body')\n }, [this.genInput(), this.showClear && h(Icon, {\n \"attrs\": {\n \"name\": \"clear\"\n },\n \"class\": bem('clear'),\n \"on\": {\n \"touchstart\": this.onClear\n }\n }), this.genRightIcon(), slots('button') && h(\"div\", {\n \"class\": bem('button')\n }, [slots('button')])]), this.genWordLimit(), this.genMessage()]);\n }\n});","var lockCount = 0;\nexport function lockClick(lock) {\n if (lock) {\n if (!lockCount) {\n document.body.classList.add('van-toast--unclickable');\n }\n\n lockCount++;\n } else {\n lockCount--;\n\n if (!lockCount) {\n document.body.classList.remove('van-toast--unclickable');\n }\n }\n}","// Utils\nimport { createNamespace, isDef } from '../utils';\nimport { lockClick } from './lock-click'; // Mixins\n\nimport { PopupMixin } from '../mixins/popup'; // Components\n\nimport Icon from '../icon';\nimport Loading from '../loading';\n\nvar _createNamespace = createNamespace('toast'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [PopupMixin()],\n props: {\n icon: String,\n className: null,\n iconPrefix: String,\n loadingType: String,\n forbidClick: Boolean,\n closeOnClick: Boolean,\n message: [Number, String],\n type: {\n type: String,\n default: 'text'\n },\n position: {\n type: String,\n default: 'middle'\n },\n transition: {\n type: String,\n default: 'van-fade'\n },\n lockScroll: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n clickable: false\n };\n },\n mounted: function mounted() {\n this.toggleClickable();\n },\n destroyed: function destroyed() {\n this.toggleClickable();\n },\n watch: {\n value: 'toggleClickable',\n forbidClick: 'toggleClickable'\n },\n methods: {\n onClick: function onClick() {\n if (this.closeOnClick) {\n this.close();\n }\n },\n toggleClickable: function toggleClickable() {\n var clickable = this.value && this.forbidClick;\n\n if (this.clickable !== clickable) {\n this.clickable = clickable;\n lockClick(clickable);\n }\n },\n\n /* istanbul ignore next */\n onAfterEnter: function onAfterEnter() {\n this.$emit('opened');\n\n if (this.onOpened) {\n this.onOpened();\n }\n },\n onAfterLeave: function onAfterLeave() {\n this.$emit('closed');\n },\n genIcon: function genIcon() {\n var h = this.$createElement;\n var icon = this.icon,\n type = this.type,\n iconPrefix = this.iconPrefix,\n loadingType = this.loadingType;\n var hasIcon = icon || type === 'success' || type === 'fail';\n\n if (hasIcon) {\n return h(Icon, {\n \"class\": bem('icon'),\n \"attrs\": {\n \"classPrefix\": iconPrefix,\n \"name\": icon || type\n }\n });\n }\n\n if (type === 'loading') {\n return h(Loading, {\n \"class\": bem('loading'),\n \"attrs\": {\n \"type\": loadingType\n }\n });\n }\n },\n genMessage: function genMessage() {\n var h = this.$createElement;\n var type = this.type,\n message = this.message;\n\n if (!isDef(message) || message === '') {\n return;\n }\n\n if (type === 'html') {\n return h(\"div\", {\n \"class\": bem('text'),\n \"domProps\": {\n \"innerHTML\": message\n }\n });\n }\n\n return h(\"div\", {\n \"class\": bem('text')\n }, [message]);\n }\n },\n render: function render() {\n var _ref;\n\n var h = arguments[0];\n return h(\"transition\", {\n \"attrs\": {\n \"name\": this.transition\n },\n \"on\": {\n \"afterEnter\": this.onAfterEnter,\n \"afterLeave\": this.onAfterLeave\n }\n }, [h(\"div\", {\n \"directives\": [{\n name: \"show\",\n value: this.value\n }],\n \"class\": [bem([this.position, (_ref = {}, _ref[this.type] = !this.icon, _ref)]), this.className],\n \"on\": {\n \"click\": this.onClick\n }\n }, [this.genIcon(), this.genMessage()])]);\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport Vue from 'vue';\nimport VueToast from './Toast';\nimport { isObject, isServer } from '../utils';\nimport { removeNode } from '../utils/dom/node';\nvar defaultOptions = {\n icon: '',\n type: 'text',\n // @deprecated\n mask: false,\n value: true,\n message: '',\n className: '',\n overlay: false,\n onClose: null,\n onOpened: null,\n duration: 2000,\n iconPrefix: undefined,\n position: 'middle',\n transition: 'van-fade',\n forbidClick: false,\n loadingType: undefined,\n getContainer: 'body',\n overlayStyle: null,\n closeOnClick: false,\n closeOnClickOverlay: false\n}; // default options of specific type\n\nvar defaultOptionsMap = {};\nvar queue = [];\nvar multiple = false;\n\nvar currentOptions = _extends({}, defaultOptions);\n\nfunction parseOptions(message) {\n if (isObject(message)) {\n return message;\n }\n\n return {\n message: message\n };\n}\n\nfunction isInDocument(element) {\n return document.body.contains(element);\n}\n\nfunction createInstance() {\n /* istanbul ignore if */\n if (isServer) {\n return {};\n }\n\n queue = queue.filter(function (item) {\n return !item.$el.parentNode || isInDocument(item.$el);\n });\n\n if (!queue.length || multiple) {\n var toast = new (Vue.extend(VueToast))({\n el: document.createElement('div')\n });\n toast.$on('input', function (value) {\n toast.value = value;\n });\n queue.push(toast);\n }\n\n return queue[queue.length - 1];\n} // transform toast options to popup props\n\n\nfunction transformOptions(options) {\n return _extends({}, options, {\n overlay: options.mask || options.overlay,\n mask: undefined,\n duration: undefined\n });\n}\n\nfunction Toast(options) {\n if (options === void 0) {\n options = {};\n }\n\n var toast = createInstance(); // should add z-index if previous toast has not disappeared\n\n if (toast.value) {\n toast.updateZIndex();\n }\n\n options = parseOptions(options);\n options = _extends({}, currentOptions, defaultOptionsMap[options.type || currentOptions.type], options);\n\n if (process.env.NODE_ENV === 'development' && options.mask) {\n console.warn('[Vant] Toast: \"mask\" option is deprecated, use \"overlay\" option instead.');\n }\n\n options.clear = function () {\n toast.value = false;\n\n if (options.onClose) {\n options.onClose();\n options.onClose = null;\n }\n\n if (multiple && !isServer) {\n toast.$on('closed', function () {\n clearTimeout(toast.timer);\n queue = queue.filter(function (item) {\n return item !== toast;\n });\n removeNode(toast.$el);\n toast.$destroy();\n });\n }\n };\n\n _extends(toast, transformOptions(options));\n\n clearTimeout(toast.timer);\n\n if (options.duration > 0) {\n toast.timer = setTimeout(function () {\n toast.clear();\n }, options.duration);\n }\n\n return toast;\n}\n\nvar createMethod = function createMethod(type) {\n return function (options) {\n return Toast(_extends({\n type: type\n }, parseOptions(options)));\n };\n};\n\n['loading', 'success', 'fail'].forEach(function (method) {\n Toast[method] = createMethod(method);\n});\n\nToast.clear = function (all) {\n if (queue.length) {\n if (all) {\n queue.forEach(function (toast) {\n toast.clear();\n });\n queue = [];\n } else if (!multiple) {\n queue[0].clear();\n } else {\n queue.shift().clear();\n }\n }\n};\n\nToast.setDefaultOptions = function (type, options) {\n if (typeof type === 'string') {\n defaultOptionsMap[type] = options;\n } else {\n _extends(currentOptions, type);\n }\n};\n\nToast.resetDefaultOptions = function (type) {\n if (typeof type === 'string') {\n defaultOptionsMap[type] = null;\n } else {\n currentOptions = _extends({}, defaultOptions);\n defaultOptionsMap = {};\n }\n};\n\nToast.allowMultiple = function (value) {\n if (value === void 0) {\n value = true;\n }\n\n multiple = value;\n};\n\nToast.install = function () {\n Vue.use(VueToast);\n};\n\nVue.prototype.$toast = Toast;\nexport default Toast;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace } from '../utils';\nimport { emit, inherit } from '../utils/functional';\nimport { BORDER_SURROUND } from '../utils/constant';\nimport { routeProps, functionalRoute } from '../utils/router'; // Components\n\nimport Icon from '../icon';\nimport Loading from '../loading'; // Types\n\nvar _createNamespace = createNamespace('button'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nfunction Button(h, props, slots, ctx) {\n var _ref;\n\n var tag = props.tag,\n icon = props.icon,\n type = props.type,\n color = props.color,\n plain = props.plain,\n disabled = props.disabled,\n loading = props.loading,\n hairline = props.hairline,\n loadingText = props.loadingText,\n iconPosition = props.iconPosition;\n var style = {};\n\n if (color) {\n style.color = plain ? color : 'white';\n\n if (!plain) {\n // Use background instead of backgroundColor to make linear-gradient work\n style.background = color;\n } // hide border when color is linear-gradient\n\n\n if (color.indexOf('gradient') !== -1) {\n style.border = 0;\n } else {\n style.borderColor = color;\n }\n }\n\n function onClick(event) {\n if (!loading && !disabled) {\n emit(ctx, 'click', event);\n functionalRoute(ctx);\n }\n }\n\n function onTouchstart(event) {\n emit(ctx, 'touchstart', event);\n }\n\n var classes = [bem([type, props.size, {\n plain: plain,\n loading: loading,\n disabled: disabled,\n hairline: hairline,\n block: props.block,\n round: props.round,\n square: props.square\n }]), (_ref = {}, _ref[BORDER_SURROUND] = hairline, _ref)];\n\n function renderIcon() {\n if (loading) {\n return slots.loading ? slots.loading() : h(Loading, {\n \"class\": bem('loading'),\n \"attrs\": {\n \"size\": props.loadingSize,\n \"type\": props.loadingType,\n \"color\": \"currentColor\"\n }\n });\n }\n\n if (icon) {\n return h(Icon, {\n \"attrs\": {\n \"name\": icon,\n \"classPrefix\": props.iconPrefix\n },\n \"class\": bem('icon')\n });\n }\n }\n\n function renderContent() {\n var content = [];\n\n if (iconPosition === 'left') {\n content.push(renderIcon());\n }\n\n var text;\n\n if (loading) {\n text = loadingText;\n } else {\n text = slots.default ? slots.default() : props.text;\n }\n\n if (text) {\n content.push(h(\"span\", {\n \"class\": bem('text')\n }, [text]));\n }\n\n if (iconPosition === 'right') {\n content.push(renderIcon());\n }\n\n return content;\n }\n\n return h(tag, _mergeJSXProps([{\n \"style\": style,\n \"class\": classes,\n \"attrs\": {\n \"type\": props.nativeType,\n \"disabled\": disabled\n },\n \"on\": {\n \"click\": onClick,\n \"touchstart\": onTouchstart\n }\n }, inherit(ctx)]), [h(\"div\", {\n \"class\": bem('content')\n }, [renderContent()])]);\n}\n\nButton.props = _extends({}, routeProps, {\n text: String,\n icon: String,\n color: String,\n block: Boolean,\n plain: Boolean,\n round: Boolean,\n square: Boolean,\n loading: Boolean,\n hairline: Boolean,\n disabled: Boolean,\n iconPrefix: String,\n nativeType: String,\n loadingText: String,\n loadingType: String,\n tag: {\n type: String,\n default: 'button'\n },\n type: {\n type: String,\n default: 'default'\n },\n size: {\n type: String,\n default: 'normal'\n },\n loadingSize: {\n type: String,\n default: '20px'\n },\n iconPosition: {\n type: String,\n default: 'left'\n }\n});\nexport default createComponent(Button);","function flattenVNodes(vnodes) {\n var result = [];\n\n function traverse(vnodes) {\n vnodes.forEach(function (vnode) {\n result.push(vnode);\n\n if (vnode.componentInstance) {\n traverse(vnode.componentInstance.$children.map(function (item) {\n return item.$vnode;\n }));\n }\n\n if (vnode.children) {\n traverse(vnode.children);\n }\n });\n }\n\n traverse(vnodes);\n return result;\n} // sort children instances by vnodes order\n\n\nexport function sortChildren(children, parent) {\n var componentOptions = parent.$vnode.componentOptions;\n\n if (!componentOptions || !componentOptions.children) {\n return;\n }\n\n var vnodes = flattenVNodes(componentOptions.children);\n children.sort(function (a, b) {\n return vnodes.indexOf(a.$vnode) - vnodes.indexOf(b.$vnode);\n });\n}","import { sortChildren } from '../utils/vnodes';\nexport function ChildrenMixin(_parent, options) {\n var _inject, _computed;\n\n if (options === void 0) {\n options = {};\n }\n\n var indexKey = options.indexKey || 'index';\n return {\n inject: (_inject = {}, _inject[_parent] = {\n default: null\n }, _inject),\n computed: (_computed = {\n parent: function parent() {\n if (this.disableBindRelation) {\n return null;\n }\n\n return this[_parent];\n }\n }, _computed[indexKey] = function () {\n this.bindRelation();\n\n if (this.parent) {\n return this.parent.children.indexOf(this);\n }\n\n return null;\n }, _computed),\n watch: {\n disableBindRelation: function disableBindRelation(val) {\n if (!val) {\n this.bindRelation();\n }\n }\n },\n mounted: function mounted() {\n this.bindRelation();\n },\n beforeDestroy: function beforeDestroy() {\n var _this = this;\n\n if (this.parent) {\n this.parent.children = this.parent.children.filter(function (item) {\n return item !== _this;\n });\n }\n },\n methods: {\n bindRelation: function bindRelation() {\n if (!this.parent || this.parent.children.indexOf(this) !== -1) {\n return;\n }\n\n var children = [].concat(this.parent.children, [this]);\n sortChildren(children, this.parent);\n this.parent.children = children;\n }\n }\n };\n}\nexport function ParentMixin(parent) {\n return {\n provide: function provide() {\n var _ref;\n\n return _ref = {}, _ref[parent] = this, _ref;\n },\n data: function data() {\n return {\n children: []\n };\n }\n };\n}","import { createNamespace } from '../utils';\nimport { ParentMixin } from '../mixins/relation';\n\nvar _createNamespace = createNamespace('goods-action'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ParentMixin('vanGoodsAction')],\n props: {\n safeAreaInsetBottom: {\n type: Boolean,\n default: true\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"class\": bem({\n unfit: !this.safeAreaInsetBottom\n })\n }, [this.slots()]);\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport Vue from 'vue';\nimport VanDialog from './Dialog';\nimport { isServer } from '../utils';\nvar instance;\n\nfunction isInDocument(element) {\n return document.body.contains(element);\n}\n\nfunction initInstance() {\n if (instance) {\n instance.$destroy();\n }\n\n instance = new (Vue.extend(VanDialog))({\n el: document.createElement('div'),\n // avoid missing animation when first rendered\n propsData: {\n lazyRender: false\n }\n });\n instance.$on('input', function (value) {\n instance.value = value;\n });\n}\n\nfunction Dialog(options) {\n /* istanbul ignore if */\n if (isServer) {\n return Promise.resolve();\n }\n\n return new Promise(function (resolve, reject) {\n if (!instance || !isInDocument(instance.$el)) {\n initInstance();\n }\n\n _extends(instance, Dialog.currentOptions, options, {\n resolve: resolve,\n reject: reject\n });\n });\n}\n\nDialog.defaultOptions = {\n value: true,\n title: '',\n width: '',\n theme: null,\n message: '',\n overlay: true,\n className: '',\n allowHtml: true,\n lockScroll: true,\n transition: 'van-dialog-bounce',\n beforeClose: null,\n overlayClass: '',\n overlayStyle: null,\n messageAlign: '',\n getContainer: 'body',\n cancelButtonText: '',\n cancelButtonColor: null,\n confirmButtonText: '',\n confirmButtonColor: null,\n showConfirmButton: true,\n showCancelButton: false,\n closeOnPopstate: true,\n closeOnClickOverlay: false,\n callback: function callback(action) {\n instance[action === 'confirm' ? 'resolve' : 'reject'](action);\n }\n};\nDialog.alert = Dialog;\n\nDialog.confirm = function (options) {\n return Dialog(_extends({\n showCancelButton: true\n }, options));\n};\n\nDialog.close = function () {\n if (instance) {\n instance.value = false;\n }\n};\n\nDialog.setDefaultOptions = function (options) {\n _extends(Dialog.currentOptions, options);\n};\n\nDialog.resetDefaultOptions = function () {\n Dialog.currentOptions = _extends({}, Dialog.defaultOptions);\n};\n\nDialog.resetDefaultOptions();\n\nDialog.install = function () {\n Vue.use(VanDialog);\n};\n\nDialog.Component = VanDialog;\nVue.prototype.$dialog = Dialog;\nexport default Dialog;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createNamespace } from '../utils';\nimport { route, routeProps } from '../utils/router';\nimport { ChildrenMixin } from '../mixins/relation';\nimport Button from '../button';\n\nvar _createNamespace = createNamespace('goods-action-button'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ChildrenMixin('vanGoodsAction')],\n props: _extends({}, routeProps, {\n type: String,\n text: String,\n icon: String,\n color: String,\n loading: Boolean,\n disabled: Boolean\n }),\n computed: {\n isFirst: function isFirst() {\n var prev = this.parent && this.parent.children[this.index - 1];\n return !prev || prev.$options.name !== this.$options.name;\n },\n isLast: function isLast() {\n var next = this.parent && this.parent.children[this.index + 1];\n return !next || next.$options.name !== this.$options.name;\n }\n },\n methods: {\n onClick: function onClick(event) {\n this.$emit('click', event);\n route(this.$router, this);\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(Button, {\n \"class\": bem([{\n first: this.isFirst,\n last: this.isLast\n }, this.type]),\n \"attrs\": {\n \"size\": \"large\",\n \"type\": this.type,\n \"icon\": this.icon,\n \"color\": this.color,\n \"loading\": this.loading,\n \"disabled\": this.disabled\n },\n \"on\": {\n \"click\": this.onClick\n }\n }, [this.slots() || this.text]);\n }\n});","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { createNamespace, addUnit } from '../utils';\nimport { BORDER_TOP, BORDER_LEFT } from '../utils/constant';\nimport { PopupMixin } from '../mixins/popup';\nimport Button from '../button';\nimport GoodsAction from '../goods-action';\nimport GoodsActionButton from '../goods-action-button';\n\nvar _createNamespace = createNamespace('dialog'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nexport default createComponent({\n mixins: [PopupMixin()],\n props: {\n title: String,\n theme: String,\n width: [Number, String],\n message: String,\n className: null,\n callback: Function,\n beforeClose: Function,\n messageAlign: String,\n cancelButtonText: String,\n cancelButtonColor: String,\n confirmButtonText: String,\n confirmButtonColor: String,\n showCancelButton: Boolean,\n overlay: {\n type: Boolean,\n default: true\n },\n allowHtml: {\n type: Boolean,\n default: true\n },\n transition: {\n type: String,\n default: 'van-dialog-bounce'\n },\n showConfirmButton: {\n type: Boolean,\n default: true\n },\n closeOnPopstate: {\n type: Boolean,\n default: true\n },\n closeOnClickOverlay: {\n type: Boolean,\n default: false\n }\n },\n data: function data() {\n return {\n loading: {\n confirm: false,\n cancel: false\n }\n };\n },\n methods: {\n onClickOverlay: function onClickOverlay() {\n this.handleAction('overlay');\n },\n handleAction: function handleAction(action) {\n var _this = this;\n\n this.$emit(action); // show not trigger close event when hidden\n\n if (!this.value) {\n return;\n }\n\n if (this.beforeClose) {\n this.loading[action] = true;\n this.beforeClose(action, function (state) {\n if (state !== false && _this.loading[action]) {\n _this.onClose(action);\n }\n\n _this.loading.confirm = false;\n _this.loading.cancel = false;\n });\n } else {\n this.onClose(action);\n }\n },\n onClose: function onClose(action) {\n this.close();\n\n if (this.callback) {\n this.callback(action);\n }\n },\n onOpened: function onOpened() {\n this.$emit('opened');\n },\n onClosed: function onClosed() {\n this.$emit('closed');\n },\n genRoundButtons: function genRoundButtons() {\n var _this2 = this;\n\n var h = this.$createElement;\n return h(GoodsAction, {\n \"class\": bem('footer')\n }, [this.showCancelButton && h(GoodsActionButton, {\n \"attrs\": {\n \"size\": \"large\",\n \"type\": \"warning\",\n \"text\": this.cancelButtonText || t('cancel'),\n \"color\": this.cancelButtonColor,\n \"loading\": this.loading.cancel\n },\n \"class\": bem('cancel'),\n \"on\": {\n \"click\": function click() {\n _this2.handleAction('cancel');\n }\n }\n }), this.showConfirmButton && h(GoodsActionButton, {\n \"attrs\": {\n \"size\": \"large\",\n \"type\": \"danger\",\n \"text\": this.confirmButtonText || t('confirm'),\n \"color\": this.confirmButtonColor,\n \"loading\": this.loading.confirm\n },\n \"class\": bem('confirm'),\n \"on\": {\n \"click\": function click() {\n _this2.handleAction('confirm');\n }\n }\n })]);\n },\n genButtons: function genButtons() {\n var _this3 = this,\n _ref;\n\n var h = this.$createElement;\n var multiple = this.showCancelButton && this.showConfirmButton;\n return h(\"div\", {\n \"class\": [BORDER_TOP, bem('footer')]\n }, [this.showCancelButton && h(Button, {\n \"attrs\": {\n \"size\": \"large\",\n \"loading\": this.loading.cancel,\n \"text\": this.cancelButtonText || t('cancel')\n },\n \"class\": bem('cancel'),\n \"style\": {\n color: this.cancelButtonColor\n },\n \"on\": {\n \"click\": function click() {\n _this3.handleAction('cancel');\n }\n }\n }), this.showConfirmButton && h(Button, {\n \"attrs\": {\n \"size\": \"large\",\n \"loading\": this.loading.confirm,\n \"text\": this.confirmButtonText || t('confirm')\n },\n \"class\": [bem('confirm'), (_ref = {}, _ref[BORDER_LEFT] = multiple, _ref)],\n \"style\": {\n color: this.confirmButtonColor\n },\n \"on\": {\n \"click\": function click() {\n _this3.handleAction('confirm');\n }\n }\n })]);\n },\n genContent: function genContent(hasTitle, messageSlot) {\n var h = this.$createElement;\n\n if (messageSlot) {\n return h(\"div\", {\n \"class\": bem('content')\n }, [messageSlot]);\n }\n\n var message = this.message,\n messageAlign = this.messageAlign;\n\n if (message) {\n var _bem, _domProps;\n\n var data = {\n class: bem('message', (_bem = {\n 'has-title': hasTitle\n }, _bem[messageAlign] = messageAlign, _bem)),\n domProps: (_domProps = {}, _domProps[this.allowHtml ? 'innerHTML' : 'textContent'] = message, _domProps)\n };\n return h(\"div\", {\n \"class\": bem('content', {\n isolated: !hasTitle\n })\n }, [h(\"div\", _mergeJSXProps([{}, data]))]);\n }\n }\n },\n render: function render() {\n var h = arguments[0];\n\n if (!this.shouldRender) {\n return;\n }\n\n var message = this.message;\n var messageSlot = this.slots();\n var title = this.slots('title') || this.title;\n var Title = title && h(\"div\", {\n \"class\": bem('header', {\n isolated: !message && !messageSlot\n })\n }, [title]);\n return h(\"transition\", {\n \"attrs\": {\n \"name\": this.transition\n },\n \"on\": {\n \"afterEnter\": this.onOpened,\n \"afterLeave\": this.onClosed\n }\n }, [h(\"div\", {\n \"directives\": [{\n name: \"show\",\n value: this.value\n }],\n \"attrs\": {\n \"role\": \"dialog\",\n \"aria-labelledby\": this.title || message\n },\n \"class\": [bem([this.theme]), this.className],\n \"style\": {\n width: addUnit(this.width)\n }\n }, [Title, this.genContent(title, messageSlot), this.theme === 'round-button' ? this.genRoundButtons() : this.genButtons()])]);\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// Utils\nimport { createNamespace } from '../utils';\nimport { isAndroid } from '../utils/validate/system'; // Components\n\nimport Cell from '../cell';\nimport Field from '../field';\n\nvar _createNamespace = createNamespace('address-edit-detail'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nvar android = isAndroid();\nexport default createComponent({\n props: {\n value: String,\n errorMessage: String,\n focused: Boolean,\n detailRows: [Number, String],\n searchResult: Array,\n detailMaxlength: [Number, String],\n showSearchResult: Boolean\n },\n computed: {\n shouldShowSearchResult: function shouldShowSearchResult() {\n return this.focused && this.searchResult && this.showSearchResult;\n }\n },\n methods: {\n onSelect: function onSelect(express) {\n this.$emit('select-search', express);\n this.$emit('input', ((express.address || '') + \" \" + (express.name || '')).trim());\n },\n onFinish: function onFinish() {\n this.$refs.field.blur();\n },\n genFinish: function genFinish() {\n var h = this.$createElement;\n var show = this.value && this.focused && android;\n\n if (show) {\n return h(\"div\", {\n \"class\": bem('finish'),\n \"on\": {\n \"click\": this.onFinish\n }\n }, [t('complete')]);\n }\n },\n genSearchResult: function genSearchResult() {\n var _this = this;\n\n var h = this.$createElement;\n var value = this.value,\n shouldShowSearchResult = this.shouldShowSearchResult,\n searchResult = this.searchResult;\n\n if (shouldShowSearchResult) {\n return searchResult.map(function (express) {\n return h(Cell, {\n \"key\": express.name + express.address,\n \"attrs\": {\n \"clickable\": true,\n \"border\": false,\n \"icon\": \"location-o\",\n \"label\": express.address\n },\n \"class\": bem('search-item'),\n \"on\": {\n \"click\": function click() {\n _this.onSelect(express);\n }\n },\n \"scopedSlots\": {\n title: function title() {\n if (express.name) {\n var text = express.name.replace(value, \"\" + value + \"\");\n return h(\"div\", {\n \"domProps\": {\n \"innerHTML\": text\n }\n });\n }\n }\n }\n });\n });\n }\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(Cell, {\n \"class\": bem()\n }, [h(Field, {\n \"attrs\": {\n \"autosize\": true,\n \"rows\": this.detailRows,\n \"clearable\": !android,\n \"type\": \"textarea\",\n \"value\": this.value,\n \"errorMessage\": this.errorMessage,\n \"border\": !this.shouldShowSearchResult,\n \"label\": t('label'),\n \"maxlength\": this.detailMaxlength,\n \"placeholder\": t('placeholder')\n },\n \"ref\": \"field\",\n \"scopedSlots\": {\n icon: this.genFinish\n },\n \"on\": _extends({}, this.$listeners)\n }), this.genSearchResult()]);\n }\n});","/**\n * Common Switch Props\n */\nexport var switchProps = {\n size: [Number, String],\n value: null,\n loading: Boolean,\n disabled: Boolean,\n activeColor: String,\n inactiveColor: String,\n activeValue: {\n type: null,\n default: true\n },\n inactiveValue: {\n type: null,\n default: false\n }\n};","export var FieldMixin = {\n inject: {\n vanField: {\n default: null\n }\n },\n watch: {\n value: function value() {\n var field = this.vanField;\n\n if (field) {\n field.resetValidation();\n field.validateWithTrigger('onChange');\n }\n }\n },\n created: function created() {\n var field = this.vanField;\n\n if (field && !field.children) {\n field.children = this;\n }\n }\n};","// Utils\nimport { createNamespace, addUnit } from '../utils';\nimport { switchProps } from './shared'; // Mixins\n\nimport { FieldMixin } from '../mixins/field'; // Components\n\nimport Loading from '../loading';\n\nvar _createNamespace = createNamespace('switch'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [FieldMixin],\n props: switchProps,\n computed: {\n checked: function checked() {\n return this.value === this.activeValue;\n },\n style: function style() {\n return {\n fontSize: addUnit(this.size),\n backgroundColor: this.checked ? this.activeColor : this.inactiveColor\n };\n }\n },\n methods: {\n onClick: function onClick(event) {\n this.$emit('click', event);\n\n if (!this.disabled && !this.loading) {\n var newValue = this.checked ? this.inactiveValue : this.activeValue;\n this.$emit('input', newValue);\n this.$emit('change', newValue);\n }\n },\n genLoading: function genLoading() {\n var h = this.$createElement;\n\n if (this.loading) {\n var color = this.checked ? this.activeColor : this.inactiveColor;\n return h(Loading, {\n \"class\": bem('loading'),\n \"attrs\": {\n \"color\": color\n }\n });\n }\n }\n },\n render: function render() {\n var h = arguments[0];\n var checked = this.checked,\n loading = this.loading,\n disabled = this.disabled;\n return h(\"div\", {\n \"class\": bem({\n on: checked,\n loading: loading,\n disabled: disabled\n }),\n \"attrs\": {\n \"role\": \"switch\",\n \"aria-checked\": String(checked)\n },\n \"style\": this.style,\n \"on\": {\n \"click\": this.onClick\n }\n }, [h(\"div\", {\n \"class\": bem('node')\n }, [this.genLoading()])]);\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// Utils\nimport { createNamespace, isObject } from '../utils';\nimport { isMobile } from '../utils/validate/mobile'; // Components\n\nimport Area from '../area';\nimport Cell from '../cell';\nimport Field from '../field';\nimport Popup from '../popup';\nimport Toast from '../toast';\nimport Button from '../button';\nimport Dialog from '../dialog';\nimport Detail from './Detail';\nimport Switch from '../switch';\n\nvar _createNamespace = createNamespace('address-edit'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nvar defaultData = {\n name: '',\n tel: '',\n country: '',\n province: '',\n city: '',\n county: '',\n areaCode: '',\n postalCode: '',\n addressDetail: '',\n isDefault: false\n};\n\nfunction isPostal(value) {\n return /^\\d{6}$/.test(value);\n}\n\nexport default createComponent({\n props: {\n areaList: Object,\n isSaving: Boolean,\n isDeleting: Boolean,\n validator: Function,\n showDelete: Boolean,\n showPostal: Boolean,\n searchResult: Array,\n telMaxlength: [Number, String],\n showSetDefault: Boolean,\n saveButtonText: String,\n areaPlaceholder: String,\n deleteButtonText: String,\n showSearchResult: Boolean,\n showArea: {\n type: Boolean,\n default: true\n },\n showDetail: {\n type: Boolean,\n default: true\n },\n disableArea: Boolean,\n detailRows: {\n type: [Number, String],\n default: 1\n },\n detailMaxlength: {\n type: [Number, String],\n default: 200\n },\n addressInfo: {\n type: Object,\n default: function _default() {\n return _extends({}, defaultData);\n }\n },\n telValidator: {\n type: Function,\n default: isMobile\n },\n postalValidator: {\n type: Function,\n default: isPostal\n },\n areaColumnsPlaceholder: {\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n data: function data() {\n return {\n data: {},\n showAreaPopup: false,\n detailFocused: false,\n errorInfo: {\n tel: '',\n name: '',\n areaCode: '',\n postalCode: '',\n addressDetail: ''\n }\n };\n },\n computed: {\n areaListLoaded: function areaListLoaded() {\n return isObject(this.areaList) && Object.keys(this.areaList).length;\n },\n areaText: function areaText() {\n var _this$data = this.data,\n country = _this$data.country,\n province = _this$data.province,\n city = _this$data.city,\n county = _this$data.county,\n areaCode = _this$data.areaCode;\n\n if (areaCode) {\n var arr = [country, province, city, county];\n\n if (province && province === city) {\n arr.splice(1, 1);\n }\n\n return arr.filter(function (text) {\n return text;\n }).join('/');\n }\n\n return '';\n },\n // hide bottom field when use search && detail get focused\n hideBottomFields: function hideBottomFields() {\n var searchResult = this.searchResult;\n return searchResult && searchResult.length && this.detailFocused;\n }\n },\n watch: {\n addressInfo: {\n handler: function handler(val) {\n this.data = _extends({}, defaultData, val);\n this.setAreaCode(val.areaCode);\n },\n deep: true,\n immediate: true\n },\n areaList: function areaList() {\n this.setAreaCode(this.data.areaCode);\n }\n },\n methods: {\n onFocus: function onFocus(key) {\n this.errorInfo[key] = '';\n this.detailFocused = key === 'addressDetail';\n this.$emit('focus', key);\n },\n onChangeDetail: function onChangeDetail(val) {\n this.data.addressDetail = val;\n this.$emit('change-detail', val);\n },\n onAreaConfirm: function onAreaConfirm(values) {\n values = values.filter(function (value) {\n return !!value;\n });\n\n if (values.some(function (value) {\n return !value.code;\n })) {\n Toast(t('areaEmpty'));\n return;\n }\n\n this.showAreaPopup = false;\n this.assignAreaValues();\n this.$emit('change-area', values);\n },\n assignAreaValues: function assignAreaValues() {\n var area = this.$refs.area;\n\n if (area) {\n var detail = area.getArea();\n detail.areaCode = detail.code;\n delete detail.code;\n\n _extends(this.data, detail);\n }\n },\n onSave: function onSave() {\n var _this = this;\n\n var items = ['name', 'tel'];\n\n if (this.showArea) {\n items.push('areaCode');\n }\n\n if (this.showDetail) {\n items.push('addressDetail');\n }\n\n if (this.showPostal) {\n items.push('postalCode');\n }\n\n var isValid = items.every(function (item) {\n var msg = _this.getErrorMessage(item);\n\n if (msg) {\n _this.errorInfo[item] = msg;\n }\n\n return !msg;\n });\n\n if (isValid && !this.isSaving) {\n this.$emit('save', this.data);\n }\n },\n getErrorMessage: function getErrorMessage(key) {\n var value = String(this.data[key] || '').trim();\n\n if (this.validator) {\n var message = this.validator(key, value);\n\n if (message) {\n return message;\n }\n }\n\n switch (key) {\n case 'name':\n return value ? '' : t('nameEmpty');\n\n case 'tel':\n return this.telValidator(value) ? '' : t('telInvalid');\n\n case 'areaCode':\n return value ? '' : t('areaEmpty');\n\n case 'addressDetail':\n return value ? '' : t('addressEmpty');\n\n case 'postalCode':\n return value && !this.postalValidator(value) ? t('postalEmpty') : '';\n }\n },\n onDelete: function onDelete() {\n var _this2 = this;\n\n Dialog.confirm({\n title: t('confirmDelete')\n }).then(function () {\n _this2.$emit('delete', _this2.data);\n }).catch(function () {\n _this2.$emit('cancel-delete', _this2.data);\n });\n },\n // get values of area component\n getArea: function getArea() {\n return this.$refs.area ? this.$refs.area.getValues() : [];\n },\n // set area code to area component\n setAreaCode: function setAreaCode(code) {\n this.data.areaCode = code || '';\n\n if (code) {\n this.$nextTick(this.assignAreaValues);\n }\n },\n // @exposed-api\n setAddressDetail: function setAddressDetail(value) {\n this.data.addressDetail = value;\n },\n onDetailBlur: function onDetailBlur() {\n var _this3 = this;\n\n // await for click search event\n setTimeout(function () {\n _this3.detailFocused = false;\n });\n },\n genSetDefaultCell: function genSetDefaultCell(h) {\n var _this4 = this;\n\n if (this.showSetDefault) {\n var slots = {\n 'right-icon': function rightIcon() {\n return h(Switch, {\n \"attrs\": {\n \"size\": \"24\"\n },\n \"on\": {\n \"change\": function change(event) {\n _this4.$emit('change-default', event);\n }\n },\n \"model\": {\n value: _this4.data.isDefault,\n callback: function callback($$v) {\n _this4.$set(_this4.data, \"isDefault\", $$v);\n }\n }\n });\n }\n };\n return h(Cell, {\n \"directives\": [{\n name: \"show\",\n value: !this.hideBottomFields\n }],\n \"attrs\": {\n \"center\": true,\n \"title\": t('defaultAddress')\n },\n \"class\": bem('default'),\n \"scopedSlots\": slots\n });\n }\n\n return h();\n }\n },\n render: function render(h) {\n var _this5 = this;\n\n var data = this.data,\n errorInfo = this.errorInfo,\n disableArea = this.disableArea,\n hideBottomFields = this.hideBottomFields;\n\n var onFocus = function onFocus(name) {\n return function () {\n return _this5.onFocus(name);\n };\n };\n\n return h(\"div\", {\n \"class\": bem()\n }, [h(\"div\", {\n \"class\": bem('fields')\n }, [h(Field, {\n \"attrs\": {\n \"clearable\": true,\n \"label\": t('name'),\n \"placeholder\": t('namePlaceholder'),\n \"errorMessage\": errorInfo.name\n },\n \"on\": {\n \"focus\": onFocus('name')\n },\n \"model\": {\n value: data.name,\n callback: function callback($$v) {\n _this5.$set(data, \"name\", $$v);\n }\n }\n }), h(Field, {\n \"attrs\": {\n \"clearable\": true,\n \"type\": \"tel\",\n \"label\": t('tel'),\n \"maxlength\": this.telMaxlength,\n \"placeholder\": t('telPlaceholder'),\n \"errorMessage\": errorInfo.tel\n },\n \"on\": {\n \"focus\": onFocus('tel')\n },\n \"model\": {\n value: data.tel,\n callback: function callback($$v) {\n _this5.$set(data, \"tel\", $$v);\n }\n }\n }), h(Field, {\n \"directives\": [{\n name: \"show\",\n value: this.showArea\n }],\n \"attrs\": {\n \"readonly\": true,\n \"clickable\": !disableArea,\n \"label\": t('area'),\n \"placeholder\": this.areaPlaceholder || t('areaPlaceholder'),\n \"errorMessage\": errorInfo.areaCode,\n \"rightIcon\": !disableArea ? 'arrow' : null,\n \"value\": this.areaText\n },\n \"on\": {\n \"focus\": onFocus('areaCode'),\n \"click\": function click() {\n _this5.$emit('click-area');\n\n _this5.showAreaPopup = !disableArea;\n }\n }\n }), h(Detail, {\n \"directives\": [{\n name: \"show\",\n value: this.showDetail\n }],\n \"attrs\": {\n \"focused\": this.detailFocused,\n \"value\": data.addressDetail,\n \"errorMessage\": errorInfo.addressDetail,\n \"detailRows\": this.detailRows,\n \"detailMaxlength\": this.detailMaxlength,\n \"searchResult\": this.searchResult,\n \"showSearchResult\": this.showSearchResult\n },\n \"on\": {\n \"focus\": onFocus('addressDetail'),\n \"blur\": this.onDetailBlur,\n \"input\": this.onChangeDetail,\n \"select-search\": function selectSearch(event) {\n _this5.$emit('select-search', event);\n }\n }\n }), this.showPostal && h(Field, {\n \"directives\": [{\n name: \"show\",\n value: !hideBottomFields\n }],\n \"attrs\": {\n \"type\": \"tel\",\n \"maxlength\": \"6\",\n \"label\": t('postal'),\n \"placeholder\": t('postal'),\n \"errorMessage\": errorInfo.postalCode\n },\n \"on\": {\n \"focus\": onFocus('postalCode')\n },\n \"model\": {\n value: data.postalCode,\n callback: function callback($$v) {\n _this5.$set(data, \"postalCode\", $$v);\n }\n }\n }), this.slots()]), this.genSetDefaultCell(h), h(\"div\", {\n \"directives\": [{\n name: \"show\",\n value: !hideBottomFields\n }],\n \"class\": bem('buttons')\n }, [h(Button, {\n \"attrs\": {\n \"block\": true,\n \"round\": true,\n \"loading\": this.isSaving,\n \"type\": \"danger\",\n \"text\": this.saveButtonText || t('save')\n },\n \"on\": {\n \"click\": this.onSave\n }\n }), this.showDelete && h(Button, {\n \"attrs\": {\n \"block\": true,\n \"round\": true,\n \"loading\": this.isDeleting,\n \"text\": this.deleteButtonText || t('delete')\n },\n \"on\": {\n \"click\": this.onDelete\n }\n })]), h(Popup, {\n \"attrs\": {\n \"round\": true,\n \"position\": \"bottom\",\n \"lazyRender\": false,\n \"getContainer\": \"body\"\n },\n \"model\": {\n value: _this5.showAreaPopup,\n callback: function callback($$v) {\n _this5.showAreaPopup = $$v;\n }\n }\n }, [h(Area, {\n \"ref\": \"area\",\n \"attrs\": {\n \"value\": data.areaCode,\n \"loading\": !this.areaListLoaded,\n \"areaList\": this.areaList,\n \"columnsPlaceholder\": this.areaColumnsPlaceholder\n },\n \"on\": {\n \"confirm\": this.onAreaConfirm,\n \"cancel\": function cancel() {\n _this5.showAreaPopup = false;\n }\n }\n })])]);\n }\n});","import { createNamespace } from '../utils';\nimport { FieldMixin } from '../mixins/field';\nimport { ParentMixin } from '../mixins/relation';\n\nvar _createNamespace = createNamespace('radio-group'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ParentMixin('vanRadio'), FieldMixin],\n props: {\n value: null,\n disabled: Boolean,\n direction: String,\n checkedColor: String,\n iconSize: [Number, String]\n },\n watch: {\n value: function value(_value) {\n this.$emit('change', _value);\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"class\": bem([this.direction]),\n \"attrs\": {\n \"role\": \"radiogroup\"\n }\n }, [this.slots()]);\n }\n});","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace } from '../utils';\nimport { inherit, emit } from '../utils/functional'; // Components\n\nimport Icon from '../icon'; // Types\n\nvar _createNamespace = createNamespace('tag'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nfunction Tag(h, props, slots, ctx) {\n var _style;\n\n var type = props.type,\n mark = props.mark,\n plain = props.plain,\n color = props.color,\n round = props.round,\n size = props.size;\n var key = plain ? 'color' : 'backgroundColor';\n var style = (_style = {}, _style[key] = color, _style);\n\n if (props.textColor) {\n style.color = props.textColor;\n }\n\n var classes = {\n mark: mark,\n plain: plain,\n round: round\n };\n\n if (size) {\n classes[size] = size;\n }\n\n var CloseIcon = props.closeable && h(Icon, {\n \"attrs\": {\n \"name\": \"cross\"\n },\n \"class\": bem('close'),\n \"on\": {\n \"click\": function click(event) {\n event.stopPropagation();\n emit(ctx, 'close');\n }\n }\n });\n return h(\"transition\", {\n \"attrs\": {\n \"name\": props.closeable ? 'van-fade' : null\n }\n }, [h(\"span\", _mergeJSXProps([{\n \"key\": \"content\",\n \"style\": style,\n \"class\": bem([classes, type])\n }, inherit(ctx, true)]), [slots.default == null ? void 0 : slots.default(), CloseIcon])]);\n}\n\nTag.props = {\n size: String,\n mark: Boolean,\n color: String,\n plain: Boolean,\n round: Boolean,\n textColor: String,\n closeable: Boolean,\n type: {\n type: String,\n default: 'default'\n }\n};\nexport default createComponent(Tag);","/**\n * Common part of Checkbox & Radio\n */\nimport Icon from '../icon';\nimport { FieldMixin } from './field';\nimport { ChildrenMixin } from './relation';\nimport { addUnit } from '../utils';\nexport var CheckboxMixin = function CheckboxMixin(_ref) {\n var parent = _ref.parent,\n bem = _ref.bem,\n role = _ref.role;\n return {\n mixins: [ChildrenMixin(parent), FieldMixin],\n props: {\n name: null,\n value: null,\n disabled: Boolean,\n iconSize: [Number, String],\n checkedColor: String,\n labelPosition: String,\n labelDisabled: Boolean,\n shape: {\n type: String,\n default: 'round'\n },\n bindGroup: {\n type: Boolean,\n default: true\n }\n },\n computed: {\n disableBindRelation: function disableBindRelation() {\n return !this.bindGroup;\n },\n isDisabled: function isDisabled() {\n return this.parent && this.parent.disabled || this.disabled;\n },\n direction: function direction() {\n return this.parent && this.parent.direction || null;\n },\n iconStyle: function iconStyle() {\n var checkedColor = this.checkedColor || this.parent && this.parent.checkedColor;\n\n if (checkedColor && this.checked && !this.isDisabled) {\n return {\n borderColor: checkedColor,\n backgroundColor: checkedColor\n };\n }\n },\n tabindex: function tabindex() {\n if (this.isDisabled || role === 'radio' && !this.checked) {\n return -1;\n }\n\n return 0;\n }\n },\n methods: {\n onClick: function onClick(event) {\n var _this = this;\n\n var target = event.target;\n var icon = this.$refs.icon;\n var iconClicked = icon === target || icon.contains(target);\n\n if (!this.isDisabled && (iconClicked || !this.labelDisabled)) {\n this.toggle(); // wait for toggle method to complete\n // so we can get the changed value in the click event listener\n\n setTimeout(function () {\n _this.$emit('click', event);\n });\n } else {\n this.$emit('click', event);\n }\n },\n genIcon: function genIcon() {\n var h = this.$createElement;\n var checked = this.checked;\n var iconSize = this.iconSize || this.parent && this.parent.iconSize;\n return h(\"div\", {\n \"ref\": \"icon\",\n \"class\": bem('icon', [this.shape, {\n disabled: this.isDisabled,\n checked: checked\n }]),\n \"style\": {\n fontSize: addUnit(iconSize)\n }\n }, [this.slots('icon', {\n checked: checked\n }) || h(Icon, {\n \"attrs\": {\n \"name\": \"success\"\n },\n \"style\": this.iconStyle\n })]);\n },\n genLabel: function genLabel() {\n var h = this.$createElement;\n var slot = this.slots();\n\n if (slot) {\n return h(\"span\", {\n \"class\": bem('label', [this.labelPosition, {\n disabled: this.isDisabled\n }])\n }, [slot]);\n }\n }\n },\n render: function render() {\n var h = arguments[0];\n var Children = [this.genIcon()];\n\n if (this.labelPosition === 'left') {\n Children.unshift(this.genLabel());\n } else {\n Children.push(this.genLabel());\n }\n\n return h(\"div\", {\n \"attrs\": {\n \"role\": role,\n \"tabindex\": this.tabindex,\n \"aria-checked\": String(this.checked)\n },\n \"class\": bem([{\n disabled: this.isDisabled,\n 'label-disabled': this.labelDisabled\n }, this.direction]),\n \"on\": {\n \"click\": this.onClick\n }\n }, [Children]);\n }\n };\n};","import { createNamespace } from '../utils';\nimport { CheckboxMixin } from '../mixins/checkbox';\n\nvar _createNamespace = createNamespace('radio'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [CheckboxMixin({\n bem: bem,\n role: 'radio',\n parent: 'vanRadio'\n })],\n computed: {\n currentValue: {\n get: function get() {\n return this.parent ? this.parent.value : this.value;\n },\n set: function set(val) {\n (this.parent || this).$emit('input', val);\n }\n },\n checked: function checked() {\n return this.currentValue === this.name;\n }\n },\n methods: {\n toggle: function toggle() {\n this.currentValue = this.name;\n }\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace } from '../utils';\nimport { emit, inherit } from '../utils/functional'; // Components\n\nimport Tag from '../tag';\nimport Icon from '../icon';\nimport Cell from '../cell';\nimport Radio from '../radio'; // Types\n\nvar _createNamespace = createNamespace('address-item'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nfunction AddressItem(h, props, slots, ctx) {\n var disabled = props.disabled,\n switchable = props.switchable;\n\n function onClick() {\n if (switchable) {\n emit(ctx, 'select');\n }\n\n emit(ctx, 'click');\n }\n\n var genRightIcon = function genRightIcon() {\n return h(Icon, {\n \"attrs\": {\n \"name\": \"edit\"\n },\n \"class\": bem('edit'),\n \"on\": {\n \"click\": function click(event) {\n event.stopPropagation();\n emit(ctx, 'edit');\n emit(ctx, 'click');\n }\n }\n });\n };\n\n function genTag() {\n if (props.data.isDefault && props.defaultTagText) {\n return h(Tag, {\n \"attrs\": {\n \"type\": \"danger\",\n \"round\": true\n },\n \"class\": bem('tag')\n }, [props.defaultTagText]);\n }\n }\n\n function genContent() {\n var data = props.data;\n var Info = [h(\"div\", {\n \"class\": bem('name')\n }, [data.name + \" \" + data.tel, genTag()]), h(\"div\", {\n \"class\": bem('address')\n }, [data.address])];\n\n if (switchable && !disabled) {\n return h(Radio, {\n \"attrs\": {\n \"name\": data.id,\n \"iconSize\": 18\n }\n }, [Info]);\n }\n\n return Info;\n }\n\n return h(\"div\", {\n \"class\": bem({\n disabled: disabled\n }),\n \"on\": {\n \"click\": onClick\n }\n }, [h(Cell, _mergeJSXProps([{\n \"attrs\": {\n \"border\": false,\n \"valueClass\": bem('value')\n },\n \"scopedSlots\": {\n default: genContent,\n 'right-icon': genRightIcon\n }\n }, inherit(ctx)])), slots.bottom == null ? void 0 : slots.bottom(_extends({}, props.data, {\n disabled: disabled\n }))]);\n}\n\nAddressItem.props = {\n data: Object,\n disabled: Boolean,\n switchable: Boolean,\n defaultTagText: String\n};\nexport default createComponent(AddressItem);","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace } from '../utils';\nimport { emit, inherit } from '../utils/functional'; // Components\n\nimport Button from '../button';\nimport RadioGroup from '../radio-group';\nimport AddressItem from './Item'; // Types\n\nvar _createNamespace = createNamespace('address-list'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nfunction AddressList(h, props, slots, ctx) {\n function genList(list, disabled) {\n if (!list) {\n return;\n }\n\n return list.map(function (item, index) {\n return h(AddressItem, {\n \"attrs\": {\n \"data\": item,\n \"disabled\": disabled,\n \"switchable\": props.switchable,\n \"defaultTagText\": props.defaultTagText\n },\n \"key\": item.id,\n \"scopedSlots\": {\n bottom: slots['item-bottom']\n },\n \"on\": {\n \"select\": function select() {\n emit(ctx, disabled ? 'select-disabled' : 'select', item, index);\n\n if (!disabled) {\n emit(ctx, 'input', item.id);\n }\n },\n \"edit\": function edit() {\n emit(ctx, disabled ? 'edit-disabled' : 'edit', item, index);\n },\n \"click\": function click() {\n emit(ctx, 'click-item', item, index);\n }\n }\n });\n });\n }\n\n var List = genList(props.list);\n var DisabledList = genList(props.disabledList, true);\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem()\n }, inherit(ctx)]), [slots.top == null ? void 0 : slots.top(), h(RadioGroup, {\n \"attrs\": {\n \"value\": props.value\n }\n }, [List]), props.disabledText && h(\"div\", {\n \"class\": bem('disabled-text')\n }, [props.disabledText]), DisabledList, slots.default == null ? void 0 : slots.default(), h(\"div\", {\n \"class\": bem('bottom')\n }, [h(Button, {\n \"attrs\": {\n \"round\": true,\n \"block\": true,\n \"type\": \"danger\",\n \"text\": props.addButtonText || t('add')\n },\n \"class\": bem('add'),\n \"on\": {\n \"click\": function click() {\n emit(ctx, 'add');\n }\n }\n })])]);\n}\n\nAddressList.props = {\n list: Array,\n value: [Number, String],\n disabledList: Array,\n disabledText: String,\n addButtonText: String,\n defaultTagText: String,\n switchable: {\n type: Boolean,\n default: true\n }\n};\nexport default createComponent(AddressList);","import { isDef, createNamespace } from '../utils';\nimport { isNumeric } from '../utils/validate/number';\n\nvar _createNamespace = createNamespace('badge'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n props: {\n dot: Boolean,\n max: [Number, String],\n color: String,\n content: [Number, String],\n tag: {\n type: String,\n default: 'div'\n }\n },\n methods: {\n hasContent: function hasContent() {\n return !!(this.$scopedSlots.content || isDef(this.content) && this.content !== '');\n },\n renderContent: function renderContent() {\n var dot = this.dot,\n max = this.max,\n content = this.content;\n\n if (!dot && this.hasContent()) {\n if (this.$scopedSlots.content) {\n return this.$scopedSlots.content();\n }\n\n if (isDef(max) && isNumeric(content) && +content > max) {\n return max + \"+\";\n }\n\n return content;\n }\n },\n renderBadge: function renderBadge() {\n var h = this.$createElement;\n\n if (this.hasContent() || this.dot) {\n return h(\"div\", {\n \"class\": bem({\n dot: this.dot,\n fixed: !!this.$scopedSlots.default\n }),\n \"style\": {\n background: this.color\n }\n }, [this.renderContent()]);\n }\n }\n },\n render: function render() {\n var h = arguments[0];\n\n if (this.$scopedSlots.default) {\n var tag = this.tag;\n return h(tag, {\n \"class\": bem('wrapper')\n }, [this.$scopedSlots.default(), this.renderBadge()]);\n }\n\n return this.renderBadge();\n }\n});","import { isNaN } from './number';\nexport function isDate(val) {\n return Object.prototype.toString.call(val) === '[object Date]' && !isNaN(val.getTime());\n}","import { createNamespace } from '../utils';\n\nvar _createNamespace = createNamespace('calendar'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nexport { createComponent, bem, t };\nexport function formatMonthTitle(date) {\n return t('monthTitle', date.getFullYear(), date.getMonth() + 1);\n}\nexport function compareMonth(date1, date2) {\n var year1 = date1.getFullYear();\n var year2 = date2.getFullYear();\n var month1 = date1.getMonth();\n var month2 = date2.getMonth();\n\n if (year1 === year2) {\n return month1 === month2 ? 0 : month1 > month2 ? 1 : -1;\n }\n\n return year1 > year2 ? 1 : -1;\n}\nexport function compareDay(day1, day2) {\n var compareMonthResult = compareMonth(day1, day2);\n\n if (compareMonthResult === 0) {\n var date1 = day1.getDate();\n var date2 = day2.getDate();\n return date1 === date2 ? 0 : date1 > date2 ? 1 : -1;\n }\n\n return compareMonthResult;\n}\nexport function getDayByOffset(date, offset) {\n date = new Date(date);\n date.setDate(date.getDate() + offset);\n return date;\n}\nexport function getPrevDay(date) {\n return getDayByOffset(date, -1);\n}\nexport function getNextDay(date) {\n return getDayByOffset(date, 1);\n}\nexport function calcDateNum(date) {\n var day1 = date[0].getTime();\n var day2 = date[1].getTime();\n return (day2 - day1) / (1000 * 60 * 60 * 24) + 1;\n}\nexport function copyDate(dates) {\n return new Date(dates);\n}\nexport function copyDates(dates) {\n if (Array.isArray(dates)) {\n return dates.map(function (date) {\n if (date === null) {\n return date;\n }\n\n return copyDate(date);\n });\n }\n\n return copyDate(dates);\n}","import { isNaN } from '../utils/validate/number';\nexport function times(n, iteratee) {\n var index = -1;\n var result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n\n return result;\n}\nexport function getTrueValue(value) {\n if (!value) {\n return 0;\n }\n\n while (isNaN(parseInt(value, 10))) {\n if (value.length > 1) {\n value = value.slice(1);\n } else {\n return 0;\n }\n }\n\n return parseInt(value, 10);\n}\nexport function getMonthEndDay(year, month) {\n return 32 - new Date(year, month - 1, 32).getDate();\n}","import { createNamespace, addUnit } from '../../utils';\nimport { setScrollTop } from '../../utils/dom/scroll';\nimport { t, bem, compareDay, getPrevDay, getNextDay, formatMonthTitle } from '../utils';\nimport { getMonthEndDay } from '../../datetime-picker/utils';\n\nvar _createNamespace = createNamespace('calendar-month'),\n createComponent = _createNamespace[0];\n\nexport default createComponent({\n props: {\n date: Date,\n type: String,\n color: String,\n minDate: Date,\n maxDate: Date,\n showMark: Boolean,\n rowHeight: [Number, String],\n formatter: Function,\n lazyRender: Boolean,\n currentDate: [Date, Array],\n allowSameDay: Boolean,\n showSubtitle: Boolean,\n showMonthTitle: Boolean,\n firstDayOfWeek: Number\n },\n data: function data() {\n return {\n visible: false\n };\n },\n computed: {\n title: function title() {\n return formatMonthTitle(this.date);\n },\n rowHeightWithUnit: function rowHeightWithUnit() {\n return addUnit(this.rowHeight);\n },\n offset: function offset() {\n var firstDayOfWeek = this.firstDayOfWeek;\n var realDay = this.date.getDay();\n\n if (!firstDayOfWeek) {\n return realDay;\n }\n\n return (realDay + 7 - this.firstDayOfWeek) % 7;\n },\n totalDay: function totalDay() {\n return getMonthEndDay(this.date.getFullYear(), this.date.getMonth() + 1);\n },\n shouldRender: function shouldRender() {\n return this.visible || !this.lazyRender;\n },\n placeholders: function placeholders() {\n var rows = [];\n var count = Math.ceil((this.totalDay + this.offset) / 7);\n\n for (var day = 1; day <= count; day++) {\n rows.push({\n type: 'placeholder'\n });\n }\n\n return rows;\n },\n days: function days() {\n var days = [];\n var year = this.date.getFullYear();\n var month = this.date.getMonth();\n\n for (var day = 1; day <= this.totalDay; day++) {\n var date = new Date(year, month, day);\n var type = this.getDayType(date);\n var config = {\n date: date,\n type: type,\n text: day,\n bottomInfo: this.getBottomInfo(type)\n };\n\n if (this.formatter) {\n config = this.formatter(config);\n }\n\n days.push(config);\n }\n\n return days;\n }\n },\n methods: {\n getHeight: function getHeight() {\n if (!this.height) {\n this.height = this.$el.getBoundingClientRect().height;\n }\n\n return this.height;\n },\n scrollIntoView: function scrollIntoView(body) {\n var _this$$refs = this.$refs,\n days = _this$$refs.days,\n month = _this$$refs.month;\n var el = this.showSubtitle ? days : month;\n var scrollTop = el.getBoundingClientRect().top - body.getBoundingClientRect().top + body.scrollTop;\n setScrollTop(body, scrollTop);\n },\n getMultipleDayType: function getMultipleDayType(day) {\n var _this = this;\n\n var isSelected = function isSelected(date) {\n return _this.currentDate.some(function (item) {\n return compareDay(item, date) === 0;\n });\n };\n\n if (isSelected(day)) {\n var prevDay = getPrevDay(day);\n var nextDay = getNextDay(day);\n var prevSelected = isSelected(prevDay);\n var nextSelected = isSelected(nextDay);\n\n if (prevSelected && nextSelected) {\n return 'multiple-middle';\n }\n\n if (prevSelected) {\n return 'end';\n }\n\n return nextSelected ? 'start' : 'multiple-selected';\n }\n\n return '';\n },\n getRangeDayType: function getRangeDayType(day) {\n var _this$currentDate = this.currentDate,\n startDay = _this$currentDate[0],\n endDay = _this$currentDate[1];\n\n if (!startDay) {\n return '';\n }\n\n var compareToStart = compareDay(day, startDay);\n\n if (!endDay) {\n return compareToStart === 0 ? 'start' : '';\n }\n\n var compareToEnd = compareDay(day, endDay);\n\n if (compareToStart === 0 && compareToEnd === 0 && this.allowSameDay) {\n return 'start-end';\n }\n\n if (compareToStart === 0) {\n return 'start';\n }\n\n if (compareToEnd === 0) {\n return 'end';\n }\n\n if (compareToStart > 0 && compareToEnd < 0) {\n return 'middle';\n }\n },\n getDayType: function getDayType(day) {\n var type = this.type,\n minDate = this.minDate,\n maxDate = this.maxDate,\n currentDate = this.currentDate;\n\n if (compareDay(day, minDate) < 0 || compareDay(day, maxDate) > 0) {\n return 'disabled';\n }\n\n if (currentDate === null) {\n return;\n }\n\n if (type === 'single') {\n return compareDay(day, currentDate) === 0 ? 'selected' : '';\n }\n\n if (type === 'multiple') {\n return this.getMultipleDayType(day);\n }\n /* istanbul ignore else */\n\n\n if (type === 'range') {\n return this.getRangeDayType(day);\n }\n },\n getBottomInfo: function getBottomInfo(type) {\n if (this.type === 'range') {\n if (type === 'start' || type === 'end') {\n return t(type);\n }\n\n if (type === 'start-end') {\n return t('startEnd');\n }\n }\n },\n getDayStyle: function getDayStyle(type, index) {\n var style = {\n height: this.rowHeightWithUnit\n };\n\n if (type === 'placeholder') {\n style.width = '100%';\n return style;\n }\n\n if (index === 0) {\n style.marginLeft = 100 * this.offset / 7 + \"%\";\n }\n\n if (this.color) {\n if (type === 'start' || type === 'end' || type === 'start-end' || type === 'multiple-selected' || type === 'multiple-middle') {\n style.background = this.color;\n } else if (type === 'middle') {\n style.color = this.color;\n }\n }\n\n return style;\n },\n genTitle: function genTitle() {\n var h = this.$createElement;\n\n if (this.showMonthTitle) {\n return h(\"div\", {\n \"class\": bem('month-title')\n }, [this.title]);\n }\n },\n genMark: function genMark() {\n var h = this.$createElement;\n\n if (this.showMark && this.shouldRender) {\n return h(\"div\", {\n \"class\": bem('month-mark')\n }, [this.date.getMonth() + 1]);\n }\n },\n genDays: function genDays() {\n var h = this.$createElement;\n var days = this.shouldRender ? this.days : this.placeholders;\n return h(\"div\", {\n \"ref\": \"days\",\n \"attrs\": {\n \"role\": \"grid\"\n },\n \"class\": bem('days')\n }, [this.genMark(), days.map(this.genDay)]);\n },\n genDay: function genDay(item, index) {\n var _this2 = this;\n\n var h = this.$createElement;\n var type = item.type,\n topInfo = item.topInfo,\n bottomInfo = item.bottomInfo;\n var style = this.getDayStyle(type, index);\n var disabled = type === 'disabled';\n\n var onClick = function onClick() {\n if (!disabled) {\n _this2.$emit('click', item);\n }\n };\n\n var TopInfo = topInfo && h(\"div\", {\n \"class\": bem('top-info')\n }, [topInfo]);\n var BottomInfo = bottomInfo && h(\"div\", {\n \"class\": bem('bottom-info')\n }, [bottomInfo]);\n\n if (type === 'selected') {\n return h(\"div\", {\n \"attrs\": {\n \"role\": \"gridcell\",\n \"tabindex\": -1\n },\n \"style\": style,\n \"class\": [bem('day'), item.className],\n \"on\": {\n \"click\": onClick\n }\n }, [h(\"div\", {\n \"class\": bem('selected-day'),\n \"style\": {\n width: this.rowHeightWithUnit,\n height: this.rowHeightWithUnit,\n background: this.color\n }\n }, [TopInfo, item.text, BottomInfo])]);\n }\n\n return h(\"div\", {\n \"attrs\": {\n \"role\": \"gridcell\",\n \"tabindex\": disabled ? null : -1\n },\n \"style\": style,\n \"class\": [bem('day', type), item.className],\n \"on\": {\n \"click\": onClick\n }\n }, [TopInfo, item.text, BottomInfo]);\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"class\": bem('month'),\n \"ref\": \"month\"\n }, [this.genTitle(), this.genDays()]);\n }\n});","import { createNamespace } from '../../utils';\nimport { t, bem } from '../utils';\n\nvar _createNamespace = createNamespace('calendar-header'),\n createComponent = _createNamespace[0];\n\nexport default createComponent({\n props: {\n title: String,\n subtitle: String,\n showTitle: Boolean,\n showSubtitle: Boolean,\n firstDayOfWeek: Number\n },\n methods: {\n genTitle: function genTitle() {\n var h = this.$createElement;\n\n if (this.showTitle) {\n var title = this.slots('title') || this.title || t('title');\n return h(\"div\", {\n \"class\": bem('header-title')\n }, [title]);\n }\n },\n genSubtitle: function genSubtitle() {\n var h = this.$createElement;\n\n if (this.showSubtitle) {\n return h(\"div\", {\n \"class\": bem('header-subtitle')\n }, [this.subtitle]);\n }\n },\n genWeekDays: function genWeekDays() {\n var h = this.$createElement;\n var weekdays = t('weekdays');\n var firstDayOfWeek = this.firstDayOfWeek;\n var renderWeekDays = [].concat(weekdays.slice(firstDayOfWeek, 7), weekdays.slice(0, firstDayOfWeek));\n return h(\"div\", {\n \"class\": bem('weekdays')\n }, [renderWeekDays.map(function (item) {\n return h(\"span\", {\n \"class\": bem('weekday')\n }, [item]);\n })]);\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"class\": bem('header')\n }, [this.genTitle(), this.genSubtitle(), this.genWeekDays()]);\n }\n});","// Utils\nimport { raf } from '../utils/dom/raf';\nimport { isDate } from '../utils/validate/date';\nimport { getScrollTop } from '../utils/dom/scroll';\nimport { t, bem, copyDate, copyDates, getNextDay, compareDay, calcDateNum, compareMonth, createComponent, getDayByOffset } from './utils'; // Components\n\nimport Popup from '../popup';\nimport Button from '../button';\nimport Toast from '../toast';\nimport Month from './components/Month';\nimport Header from './components/Header';\nexport default createComponent({\n props: {\n title: String,\n color: String,\n value: Boolean,\n readonly: Boolean,\n formatter: Function,\n rowHeight: [Number, String],\n confirmText: String,\n rangePrompt: String,\n defaultDate: [Date, Array],\n getContainer: [String, Function],\n allowSameDay: Boolean,\n confirmDisabledText: String,\n type: {\n type: String,\n default: 'single'\n },\n round: {\n type: Boolean,\n default: true\n },\n position: {\n type: String,\n default: 'bottom'\n },\n poppable: {\n type: Boolean,\n default: true\n },\n maxRange: {\n type: [Number, String],\n default: null\n },\n lazyRender: {\n type: Boolean,\n default: true\n },\n showMark: {\n type: Boolean,\n default: true\n },\n showTitle: {\n type: Boolean,\n default: true\n },\n showConfirm: {\n type: Boolean,\n default: true\n },\n showSubtitle: {\n type: Boolean,\n default: true\n },\n closeOnPopstate: {\n type: Boolean,\n default: true\n },\n closeOnClickOverlay: {\n type: Boolean,\n default: true\n },\n safeAreaInsetBottom: {\n type: Boolean,\n default: true\n },\n minDate: {\n type: Date,\n validator: isDate,\n default: function _default() {\n return new Date();\n }\n },\n maxDate: {\n type: Date,\n validator: isDate,\n default: function _default() {\n var now = new Date();\n return new Date(now.getFullYear(), now.getMonth() + 6, now.getDate());\n }\n },\n firstDayOfWeek: {\n type: [Number, String],\n default: 0,\n validator: function validator(val) {\n return val >= 0 && val <= 6;\n }\n }\n },\n data: function data() {\n return {\n subtitle: '',\n currentDate: this.getInitialDate()\n };\n },\n computed: {\n months: function months() {\n var months = [];\n var cursor = new Date(this.minDate);\n cursor.setDate(1);\n\n do {\n months.push(new Date(cursor));\n cursor.setMonth(cursor.getMonth() + 1);\n } while (compareMonth(cursor, this.maxDate) !== 1);\n\n return months;\n },\n buttonDisabled: function buttonDisabled() {\n var type = this.type,\n currentDate = this.currentDate;\n\n if (currentDate) {\n if (type === 'range') {\n return !currentDate[0] || !currentDate[1];\n }\n\n if (type === 'multiple') {\n return !currentDate.length;\n }\n }\n\n return !currentDate;\n },\n dayOffset: function dayOffset() {\n return this.firstDayOfWeek ? this.firstDayOfWeek % 7 : 0;\n }\n },\n watch: {\n value: 'init',\n type: function type() {\n this.reset();\n },\n defaultDate: function defaultDate(val) {\n this.currentDate = val;\n this.scrollIntoView();\n }\n },\n mounted: function mounted() {\n this.init();\n },\n\n /* istanbul ignore next */\n activated: function activated() {\n this.init();\n },\n methods: {\n // @exposed-api\n reset: function reset(date) {\n if (date === void 0) {\n date = this.getInitialDate();\n }\n\n this.currentDate = date;\n this.scrollIntoView();\n },\n init: function init() {\n var _this = this;\n\n if (this.poppable && !this.value) {\n return;\n }\n\n this.$nextTick(function () {\n // add Math.floor to avoid decimal height issues\n // https://github.com/youzan/vant/issues/5640\n _this.bodyHeight = Math.floor(_this.$refs.body.getBoundingClientRect().height);\n\n _this.onScroll();\n\n _this.scrollIntoView();\n });\n },\n // @exposed-api\n scrollToDate: function scrollToDate(targetDate) {\n var _this2 = this;\n\n raf(function () {\n var displayed = _this2.value || !_this2.poppable;\n /* istanbul ignore if */\n\n if (!targetDate || !displayed) {\n return;\n }\n\n _this2.months.some(function (month, index) {\n if (compareMonth(month, targetDate) === 0) {\n var _this2$$refs = _this2.$refs,\n body = _this2$$refs.body,\n months = _this2$$refs.months;\n months[index].scrollIntoView(body);\n return true;\n }\n\n return false;\n });\n });\n },\n // scroll to current month\n scrollIntoView: function scrollIntoView() {\n var currentDate = this.currentDate;\n\n if (currentDate) {\n var targetDate = this.type === 'single' ? currentDate : currentDate[0];\n this.scrollToDate(targetDate);\n }\n },\n getInitialDate: function getInitialDate() {\n var type = this.type,\n minDate = this.minDate,\n maxDate = this.maxDate,\n defaultDate = this.defaultDate;\n\n if (defaultDate === null) {\n return defaultDate;\n }\n\n var defaultVal = new Date();\n\n if (compareDay(defaultVal, minDate) === -1) {\n defaultVal = minDate;\n } else if (compareDay(defaultVal, maxDate) === 1) {\n defaultVal = maxDate;\n }\n\n if (type === 'range') {\n var _ref = defaultDate || [],\n startDay = _ref[0],\n endDay = _ref[1];\n\n return [startDay || defaultVal, endDay || getNextDay(defaultVal)];\n }\n\n if (type === 'multiple') {\n return defaultDate || [defaultVal];\n }\n\n return defaultDate || defaultVal;\n },\n // calculate the position of the elements\n // and find the elements that needs to be rendered\n onScroll: function onScroll() {\n var _this$$refs = this.$refs,\n body = _this$$refs.body,\n months = _this$$refs.months;\n var top = getScrollTop(body);\n var bottom = top + this.bodyHeight;\n var heights = months.map(function (item) {\n return item.getHeight();\n });\n var heightSum = heights.reduce(function (a, b) {\n return a + b;\n }, 0); // iOS scroll bounce may exceed the range\n\n if (bottom > heightSum && top > 0) {\n return;\n }\n\n var height = 0;\n var currentMonth;\n var visibleRange = [-1, -1];\n\n for (var i = 0; i < months.length; i++) {\n var visible = height <= bottom && height + heights[i] >= top;\n\n if (visible) {\n visibleRange[1] = i;\n\n if (!currentMonth) {\n currentMonth = months[i];\n visibleRange[0] = i;\n }\n\n if (!months[i].showed) {\n months[i].showed = true;\n this.$emit('month-show', {\n date: months[i].date,\n title: months[i].title\n });\n }\n }\n\n height += heights[i];\n }\n\n months.forEach(function (month, index) {\n month.visible = index >= visibleRange[0] - 1 && index <= visibleRange[1] + 1;\n });\n /* istanbul ignore else */\n\n if (currentMonth) {\n this.subtitle = currentMonth.title;\n }\n },\n onClickDay: function onClickDay(item) {\n if (this.readonly) {\n return;\n }\n\n var date = item.date;\n var type = this.type,\n currentDate = this.currentDate;\n\n if (type === 'range') {\n if (!currentDate) {\n this.select([date, null]);\n return;\n }\n\n var startDay = currentDate[0],\n endDay = currentDate[1];\n\n if (startDay && !endDay) {\n var compareToStart = compareDay(date, startDay);\n\n if (compareToStart === 1) {\n this.select([startDay, date], true);\n } else if (compareToStart === -1) {\n this.select([date, null]);\n } else if (this.allowSameDay) {\n this.select([date, date], true);\n }\n } else {\n this.select([date, null]);\n }\n } else if (type === 'multiple') {\n if (!currentDate) {\n this.select([date]);\n return;\n }\n\n var selectedIndex;\n var selected = this.currentDate.some(function (dateItem, index) {\n var equal = compareDay(dateItem, date) === 0;\n\n if (equal) {\n selectedIndex = index;\n }\n\n return equal;\n });\n\n if (selected) {\n var _currentDate$splice = currentDate.splice(selectedIndex, 1),\n unselectedDate = _currentDate$splice[0];\n\n this.$emit('unselect', copyDate(unselectedDate));\n } else if (this.maxRange && currentDate.length >= this.maxRange) {\n Toast(this.rangePrompt || t('rangePrompt', this.maxRange));\n } else {\n this.select([].concat(currentDate, [date]));\n }\n } else {\n this.select(date, true);\n }\n },\n togglePopup: function togglePopup(val) {\n this.$emit('input', val);\n },\n select: function select(date, complete) {\n var _this3 = this;\n\n var emit = function emit(date) {\n _this3.currentDate = date;\n\n _this3.$emit('select', copyDates(_this3.currentDate));\n };\n\n if (complete && this.type === 'range') {\n var valid = this.checkRange(date);\n\n if (!valid) {\n // auto selected to max range if showConfirm\n if (this.showConfirm) {\n emit([date[0], getDayByOffset(date[0], this.maxRange - 1)]);\n } else {\n emit(date);\n }\n\n return;\n }\n }\n\n emit(date);\n\n if (complete && !this.showConfirm) {\n this.onConfirm();\n }\n },\n checkRange: function checkRange(date) {\n var maxRange = this.maxRange,\n rangePrompt = this.rangePrompt;\n\n if (maxRange && calcDateNum(date) > maxRange) {\n Toast(rangePrompt || t('rangePrompt', maxRange));\n return false;\n }\n\n return true;\n },\n onConfirm: function onConfirm() {\n this.$emit('confirm', copyDates(this.currentDate));\n },\n genMonth: function genMonth(date, index) {\n var h = this.$createElement;\n var showMonthTitle = index !== 0 || !this.showSubtitle;\n return h(Month, {\n \"ref\": \"months\",\n \"refInFor\": true,\n \"attrs\": {\n \"date\": date,\n \"type\": this.type,\n \"color\": this.color,\n \"minDate\": this.minDate,\n \"maxDate\": this.maxDate,\n \"showMark\": this.showMark,\n \"formatter\": this.formatter,\n \"rowHeight\": this.rowHeight,\n \"lazyRender\": this.lazyRender,\n \"currentDate\": this.currentDate,\n \"showSubtitle\": this.showSubtitle,\n \"allowSameDay\": this.allowSameDay,\n \"showMonthTitle\": showMonthTitle,\n \"firstDayOfWeek\": this.dayOffset\n },\n \"on\": {\n \"click\": this.onClickDay\n }\n });\n },\n genFooterContent: function genFooterContent() {\n var h = this.$createElement;\n var slot = this.slots('footer');\n\n if (slot) {\n return slot;\n }\n\n if (this.showConfirm) {\n var text = this.buttonDisabled ? this.confirmDisabledText : this.confirmText;\n return h(Button, {\n \"attrs\": {\n \"round\": true,\n \"block\": true,\n \"type\": \"danger\",\n \"color\": this.color,\n \"disabled\": this.buttonDisabled,\n \"nativeType\": \"button\"\n },\n \"class\": bem('confirm'),\n \"on\": {\n \"click\": this.onConfirm\n }\n }, [text || t('confirm')]);\n }\n },\n genFooter: function genFooter() {\n var h = this.$createElement;\n return h(\"div\", {\n \"class\": bem('footer', {\n unfit: !this.safeAreaInsetBottom\n })\n }, [this.genFooterContent()]);\n },\n genCalendar: function genCalendar() {\n var _this4 = this;\n\n var h = this.$createElement;\n return h(\"div\", {\n \"class\": bem()\n }, [h(Header, {\n \"attrs\": {\n \"title\": this.title,\n \"showTitle\": this.showTitle,\n \"subtitle\": this.subtitle,\n \"showSubtitle\": this.showSubtitle,\n \"firstDayOfWeek\": this.dayOffset\n },\n \"scopedSlots\": {\n title: function title() {\n return _this4.slots('title');\n }\n }\n }), h(\"div\", {\n \"ref\": \"body\",\n \"class\": bem('body'),\n \"on\": {\n \"scroll\": this.onScroll\n }\n }, [this.months.map(this.genMonth)]), this.genFooter()]);\n }\n },\n render: function render() {\n var _this5 = this;\n\n var h = arguments[0];\n\n if (this.poppable) {\n var _attrs;\n\n var createListener = function createListener(name) {\n return function () {\n return _this5.$emit(name);\n };\n };\n\n return h(Popup, {\n \"attrs\": (_attrs = {\n \"round\": true,\n \"value\": this.value\n }, _attrs[\"round\"] = this.round, _attrs[\"position\"] = this.position, _attrs[\"closeable\"] = this.showTitle || this.showSubtitle, _attrs[\"getContainer\"] = this.getContainer, _attrs[\"closeOnPopstate\"] = this.closeOnPopstate, _attrs[\"closeOnClickOverlay\"] = this.closeOnClickOverlay, _attrs),\n \"class\": bem('popup'),\n \"on\": {\n \"input\": this.togglePopup,\n \"open\": createListener('open'),\n \"opened\": createListener('opened'),\n \"close\": createListener('close'),\n \"closed\": createListener('closed')\n }\n }, [this.genCalendar()]);\n }\n\n return this.genCalendar();\n }\n});","import _mergeJSXProps2 from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { createNamespace, isDef, addUnit, inBrowser } from '../utils';\nimport Icon from '../icon';\n\nvar _createNamespace = createNamespace('image'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n props: {\n src: String,\n fit: String,\n alt: String,\n round: Boolean,\n width: [Number, String],\n height: [Number, String],\n radius: [Number, String],\n lazyLoad: Boolean,\n iconPrefix: String,\n showError: {\n type: Boolean,\n default: true\n },\n showLoading: {\n type: Boolean,\n default: true\n },\n errorIcon: {\n type: String,\n default: 'photo-fail'\n },\n loadingIcon: {\n type: String,\n default: 'photo'\n }\n },\n data: function data() {\n return {\n loading: true,\n error: false\n };\n },\n watch: {\n src: function src() {\n this.loading = true;\n this.error = false;\n }\n },\n computed: {\n style: function style() {\n var style = {};\n\n if (isDef(this.width)) {\n style.width = addUnit(this.width);\n }\n\n if (isDef(this.height)) {\n style.height = addUnit(this.height);\n }\n\n if (isDef(this.radius)) {\n style.overflow = 'hidden';\n style.borderRadius = addUnit(this.radius);\n }\n\n return style;\n }\n },\n created: function created() {\n var $Lazyload = this.$Lazyload;\n\n if ($Lazyload && inBrowser) {\n $Lazyload.$on('loaded', this.onLazyLoaded);\n $Lazyload.$on('error', this.onLazyLoadError);\n }\n },\n beforeDestroy: function beforeDestroy() {\n var $Lazyload = this.$Lazyload;\n\n if ($Lazyload) {\n $Lazyload.$off('loaded', this.onLazyLoaded);\n $Lazyload.$off('error', this.onLazyLoadError);\n }\n },\n methods: {\n onLoad: function onLoad(event) {\n this.loading = false;\n this.$emit('load', event);\n },\n onLazyLoaded: function onLazyLoaded(_ref) {\n var el = _ref.el;\n\n if (el === this.$refs.image && this.loading) {\n this.onLoad();\n }\n },\n onLazyLoadError: function onLazyLoadError(_ref2) {\n var el = _ref2.el;\n\n if (el === this.$refs.image && !this.error) {\n this.onError();\n }\n },\n onError: function onError(event) {\n this.error = true;\n this.loading = false;\n this.$emit('error', event);\n },\n onClick: function onClick(event) {\n this.$emit('click', event);\n },\n genPlaceholder: function genPlaceholder() {\n var h = this.$createElement;\n\n if (this.loading && this.showLoading) {\n return h(\"div\", {\n \"class\": bem('loading')\n }, [this.slots('loading') || h(Icon, {\n \"attrs\": {\n \"name\": this.loadingIcon,\n \"classPrefix\": this.iconPrefix\n },\n \"class\": bem('loading-icon')\n })]);\n }\n\n if (this.error && this.showError) {\n return h(\"div\", {\n \"class\": bem('error')\n }, [this.slots('error') || h(Icon, {\n \"attrs\": {\n \"name\": this.errorIcon,\n \"classPrefix\": this.iconPrefix\n },\n \"class\": bem('error-icon')\n })]);\n }\n },\n genImage: function genImage() {\n var h = this.$createElement;\n var imgData = {\n class: bem('img'),\n attrs: {\n alt: this.alt\n },\n style: {\n objectFit: this.fit\n }\n };\n\n if (this.error) {\n return;\n }\n\n if (this.lazyLoad) {\n return h(\"img\", _mergeJSXProps([{\n \"ref\": \"image\",\n \"directives\": [{\n name: \"lazy\",\n value: this.src\n }]\n }, imgData]));\n }\n\n return h(\"img\", _mergeJSXProps2([{\n \"attrs\": {\n \"src\": this.src\n },\n \"on\": {\n \"load\": this.onLoad,\n \"error\": this.onError\n }\n }, imgData]));\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"class\": bem({\n round: this.round\n }),\n \"style\": this.style,\n \"on\": {\n \"click\": this.onClick\n }\n }, [this.genImage(), this.genPlaceholder(), this.slots()]);\n }\n});","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace, isDef } from '../utils';\nimport { emit, inherit } from '../utils/functional'; // Components\n\nimport Tag from '../tag';\nimport Image from '../image'; // Types\n\nvar _createNamespace = createNamespace('card'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nfunction Card(h, props, slots, ctx) {\n var _slots$priceTop;\n\n var thumb = props.thumb;\n var showNum = slots.num || isDef(props.num);\n var showPrice = slots.price || isDef(props.price);\n var showOriginPrice = slots['origin-price'] || isDef(props.originPrice);\n var showBottom = showNum || showPrice || showOriginPrice || slots.bottom;\n\n function onThumbClick(event) {\n emit(ctx, 'click-thumb', event);\n }\n\n function ThumbTag() {\n if (slots.tag || props.tag) {\n return h(\"div\", {\n \"class\": bem('tag')\n }, [slots.tag ? slots.tag() : h(Tag, {\n \"attrs\": {\n \"mark\": true,\n \"type\": \"danger\"\n }\n }, [props.tag])]);\n }\n }\n\n function Thumb() {\n if (slots.thumb || thumb) {\n return h(\"a\", {\n \"attrs\": {\n \"href\": props.thumbLink\n },\n \"class\": bem('thumb'),\n \"on\": {\n \"click\": onThumbClick\n }\n }, [slots.thumb ? slots.thumb() : h(Image, {\n \"attrs\": {\n \"src\": thumb,\n \"width\": \"100%\",\n \"height\": \"100%\",\n \"fit\": \"cover\",\n \"lazy-load\": props.lazyLoad\n }\n }), ThumbTag()]);\n }\n }\n\n function Title() {\n if (slots.title) {\n return slots.title();\n }\n\n if (props.title) {\n return h(\"div\", {\n \"class\": [bem('title'), 'van-multi-ellipsis--l2']\n }, [props.title]);\n }\n }\n\n function Desc() {\n if (slots.desc) {\n return slots.desc();\n }\n\n if (props.desc) {\n return h(\"div\", {\n \"class\": [bem('desc'), 'van-ellipsis']\n }, [props.desc]);\n }\n }\n\n function PriceContent() {\n var priceArr = props.price.toString().split('.');\n return h(\"div\", [h(\"span\", {\n \"class\": bem('price-currency')\n }, [props.currency]), h(\"span\", {\n \"class\": bem('price-integer')\n }, [priceArr[0]]), \".\", h(\"span\", {\n \"class\": bem('price-decimal')\n }, [priceArr[1]])]);\n }\n\n function Price() {\n if (showPrice) {\n return h(\"div\", {\n \"class\": bem('price')\n }, [slots.price ? slots.price() : PriceContent()]);\n }\n }\n\n function OriginPrice() {\n if (showOriginPrice) {\n var slot = slots['origin-price'];\n return h(\"div\", {\n \"class\": bem('origin-price')\n }, [slot ? slot() : props.currency + \" \" + props.originPrice]);\n }\n }\n\n function Num() {\n if (showNum) {\n return h(\"div\", {\n \"class\": bem('num')\n }, [slots.num ? slots.num() : \"x\" + props.num]);\n }\n }\n\n function Footer() {\n if (slots.footer) {\n return h(\"div\", {\n \"class\": bem('footer')\n }, [slots.footer()]);\n }\n }\n\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem()\n }, inherit(ctx, true)]), [h(\"div\", {\n \"class\": bem('header')\n }, [Thumb(), h(\"div\", {\n \"class\": bem('content', {\n centered: props.centered\n })\n }, [h(\"div\", [Title(), Desc(), slots.tags == null ? void 0 : slots.tags()]), showBottom && h(\"div\", {\n \"class\": \"van-card__bottom\"\n }, [(_slots$priceTop = slots['price-top']) == null ? void 0 : _slots$priceTop.call(slots), Price(), OriginPrice(), Num(), slots.bottom == null ? void 0 : slots.bottom()])])]), Footer()]);\n}\n\nCard.props = {\n tag: String,\n desc: String,\n thumb: String,\n title: String,\n centered: Boolean,\n lazyLoad: Boolean,\n thumbLink: String,\n num: [Number, String],\n price: [Number, String],\n originPrice: [Number, String],\n currency: {\n type: String,\n default: '¥'\n }\n};\nexport default createComponent(Card);","import { raf, cancelRaf } from '../utils/dom/raf';\nimport { getScrollTop, setScrollTop } from '../utils/dom/scroll';\nvar scrollLeftRafId;\nexport function scrollLeftTo(scroller, to, duration) {\n cancelRaf(scrollLeftRafId);\n var count = 0;\n var from = scroller.scrollLeft;\n var frames = duration === 0 ? 1 : Math.round(duration * 1000 / 16);\n\n function animate() {\n scroller.scrollLeft += (to - from) / frames;\n\n if (++count < frames) {\n scrollLeftRafId = raf(animate);\n }\n }\n\n animate();\n}\nexport function scrollTopTo(scroller, to, duration, callback) {\n var current = getScrollTop(scroller);\n var isDown = current < to;\n var frames = duration === 0 ? 1 : Math.round(duration * 1000 / 16);\n var step = (to - current) / frames;\n\n function animate() {\n current += step;\n\n if (isDown && current > to || !isDown && current < to) {\n current = to;\n }\n\n setScrollTop(scroller, current);\n\n if (isDown && current < to || !isDown && current > to) {\n raf(animate);\n } else if (callback) {\n raf(callback);\n }\n }\n\n animate();\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createNamespace } from '../utils';\nimport { ChildrenMixin } from '../mixins/relation';\nimport { routeProps } from '../utils/router';\n\nvar _createNamespace = createNamespace('tab'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ChildrenMixin('vanTabs')],\n props: _extends({}, routeProps, {\n dot: Boolean,\n name: [Number, String],\n // @deprecated\n info: [Number, String],\n badge: [Number, String],\n title: String,\n titleStyle: null,\n titleClass: null,\n disabled: Boolean\n }),\n data: function data() {\n return {\n inited: false\n };\n },\n computed: {\n computedName: function computedName() {\n var _this$name;\n\n return (_this$name = this.name) != null ? _this$name : this.index;\n },\n isActive: function isActive() {\n var active = this.computedName === this.parent.currentName;\n\n if (active) {\n this.inited = true;\n }\n\n return active;\n }\n },\n watch: {\n title: function title() {\n this.parent.setLine();\n this.parent.scrollIntoView();\n },\n inited: function inited(val) {\n var _this = this;\n\n if (this.parent.lazyRender && val) {\n this.$nextTick(function () {\n _this.parent.$emit('rendered', _this.computedName, _this.title);\n });\n }\n }\n },\n render: function render(h) {\n var slots = this.slots,\n parent = this.parent,\n isActive = this.isActive;\n var slotContent = slots();\n\n if (process.env.NODE_ENV === 'development' && this.info) {\n console.warn('[Vant] Tab: \"info\" prop is deprecated, use \"badge\" prop instead.');\n }\n\n if (!slotContent && !parent.animated) {\n return;\n }\n\n var show = parent.scrollspy || isActive;\n var shouldRender = this.inited || parent.scrollspy || !parent.lazyRender;\n var Content = shouldRender ? slotContent : h();\n\n if (parent.animated) {\n return h(\"div\", {\n \"attrs\": {\n \"role\": \"tabpanel\",\n \"aria-hidden\": !isActive\n },\n \"class\": bem('pane-wrapper', {\n inactive: !isActive\n })\n }, [h(\"div\", {\n \"class\": bem('pane')\n }, [Content])]);\n }\n\n return h(\"div\", {\n \"directives\": [{\n name: \"show\",\n value: show\n }],\n \"attrs\": {\n \"role\": \"tabpanel\"\n },\n \"class\": bem('pane')\n }, [Content]);\n }\n});","export function isHidden(el) {\n var style = window.getComputedStyle(el);\n var hidden = style.display === 'none'; // offsetParent returns null in the following situations:\n // 1. The element or its parent element has the display property set to none.\n // 2. The element has the position property set to fixed\n\n var parentHidden = el.offsetParent === null && style.position !== 'fixed';\n return hidden || parentHidden;\n}","import { isPromise, noop } from '.';\nexport function callInterceptor(options) {\n var interceptor = options.interceptor,\n args = options.args,\n done = options.done;\n\n if (interceptor) {\n var returnVal = interceptor.apply(void 0, args);\n\n if (isPromise(returnVal)) {\n returnVal.then(function (value) {\n if (value) {\n done();\n }\n }).catch(noop);\n } else if (returnVal) {\n done();\n }\n } else {\n done();\n }\n}","import { createNamespace, isDef } from '../utils';\nimport Info from '../info';\n\nvar _createNamespace = createNamespace('tab'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n props: {\n dot: Boolean,\n type: String,\n info: [Number, String],\n color: String,\n title: String,\n isActive: Boolean,\n disabled: Boolean,\n scrollable: Boolean,\n activeColor: String,\n inactiveColor: String\n },\n computed: {\n style: function style() {\n var style = {};\n var color = this.color,\n isActive = this.isActive;\n var isCard = this.type === 'card'; // card theme color\n\n if (color && isCard) {\n style.borderColor = color;\n\n if (!this.disabled) {\n if (isActive) {\n style.backgroundColor = color;\n } else {\n style.color = color;\n }\n }\n }\n\n var titleColor = isActive ? this.activeColor : this.inactiveColor;\n\n if (titleColor) {\n style.color = titleColor;\n }\n\n return style;\n }\n },\n methods: {\n onClick: function onClick() {\n this.$emit('click');\n },\n genText: function genText() {\n var h = this.$createElement;\n var Text = h(\"span\", {\n \"class\": bem('text', {\n ellipsis: !this.scrollable\n })\n }, [this.slots() || this.title]);\n\n if (this.dot || isDef(this.info) && this.info !== '') {\n return h(\"span\", {\n \"class\": bem('text-wrapper')\n }, [Text, h(Info, {\n \"attrs\": {\n \"dot\": this.dot,\n \"info\": this.info\n }\n })]);\n }\n\n return Text;\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"attrs\": {\n \"role\": \"tab\",\n \"aria-selected\": this.isActive\n },\n \"class\": [bem({\n active: this.isActive,\n disabled: this.disabled\n })],\n \"style\": this.style,\n \"on\": {\n \"click\": this.onClick\n }\n }, [this.genText()]);\n }\n});","import { isHidden } from '../utils/dom/style';\nimport { unitToPx } from '../utils/format/unit';\nimport { createNamespace, isDef, isServer } from '../utils';\nimport { getScrollTop, getElementTop, getScroller } from '../utils/dom/scroll';\nimport { BindEventMixin } from '../mixins/bind-event';\n\nvar _createNamespace = createNamespace('sticky'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [BindEventMixin(function (bind, isBind) {\n if (!this.scroller) {\n this.scroller = getScroller(this.$el);\n }\n\n if (this.observer) {\n var method = isBind ? 'observe' : 'unobserve';\n this.observer[method](this.$el);\n }\n\n bind(this.scroller, 'scroll', this.onScroll, true);\n this.onScroll();\n })],\n props: {\n zIndex: [Number, String],\n container: null,\n offsetTop: {\n type: [Number, String],\n default: 0\n }\n },\n data: function data() {\n return {\n fixed: false,\n height: 0,\n transform: 0\n };\n },\n computed: {\n offsetTopPx: function offsetTopPx() {\n return unitToPx(this.offsetTop);\n },\n style: function style() {\n if (!this.fixed) {\n return;\n }\n\n var style = {};\n\n if (isDef(this.zIndex)) {\n style.zIndex = this.zIndex;\n }\n\n if (this.offsetTopPx && this.fixed) {\n style.top = this.offsetTopPx + \"px\";\n }\n\n if (this.transform) {\n style.transform = \"translate3d(0, \" + this.transform + \"px, 0)\";\n }\n\n return style;\n }\n },\n created: function created() {\n var _this = this;\n\n // compatibility: https://caniuse.com/#feat=intersectionobserver\n if (!isServer && window.IntersectionObserver) {\n this.observer = new IntersectionObserver(function (entries) {\n // trigger scroll when visibility changed\n if (entries[0].intersectionRatio > 0) {\n _this.onScroll();\n }\n }, {\n root: document.body\n });\n }\n },\n methods: {\n onScroll: function onScroll() {\n var _this2 = this;\n\n if (isHidden(this.$el)) {\n return;\n }\n\n this.height = this.$el.offsetHeight;\n var container = this.container,\n offsetTopPx = this.offsetTopPx;\n var scrollTop = getScrollTop(window);\n var topToPageTop = getElementTop(this.$el);\n\n var emitScrollEvent = function emitScrollEvent() {\n _this2.$emit('scroll', {\n scrollTop: scrollTop,\n isFixed: _this2.fixed\n });\n }; // The sticky component should be kept inside the container element\n\n\n if (container) {\n var bottomToPageTop = topToPageTop + container.offsetHeight;\n\n if (scrollTop + offsetTopPx + this.height > bottomToPageTop) {\n var distanceToBottom = this.height + scrollTop - bottomToPageTop;\n\n if (distanceToBottom < this.height) {\n this.fixed = true;\n this.transform = -(distanceToBottom + offsetTopPx);\n } else {\n this.fixed = false;\n }\n\n emitScrollEvent();\n return;\n }\n }\n\n if (scrollTop + offsetTopPx > topToPageTop) {\n this.fixed = true;\n this.transform = 0;\n } else {\n this.fixed = false;\n }\n\n emitScrollEvent();\n }\n },\n render: function render() {\n var h = arguments[0];\n var fixed = this.fixed;\n var style = {\n height: fixed ? this.height + \"px\" : null\n };\n return h(\"div\", {\n \"style\": style\n }, [h(\"div\", {\n \"class\": bem({\n fixed: fixed\n }),\n \"style\": this.style\n }, [this.slots()])]);\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createNamespace } from '../utils';\nimport { TouchMixin } from '../mixins/touch';\n\nvar _createNamespace = createNamespace('tabs'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nvar MIN_SWIPE_DISTANCE = 50;\nexport default createComponent({\n mixins: [TouchMixin],\n props: {\n count: Number,\n duration: [Number, String],\n animated: Boolean,\n swipeable: Boolean,\n currentIndex: Number\n },\n computed: {\n style: function style() {\n if (this.animated) {\n return {\n transform: \"translate3d(\" + -1 * this.currentIndex * 100 + \"%, 0, 0)\",\n transitionDuration: this.duration + \"s\"\n };\n }\n },\n listeners: function listeners() {\n if (this.swipeable) {\n return {\n touchstart: this.touchStart,\n touchmove: this.touchMove,\n touchend: this.onTouchEnd,\n touchcancel: this.onTouchEnd\n };\n }\n }\n },\n methods: {\n // watch swipe touch end\n onTouchEnd: function onTouchEnd() {\n var direction = this.direction,\n deltaX = this.deltaX,\n currentIndex = this.currentIndex;\n /* istanbul ignore else */\n\n if (direction === 'horizontal' && this.offsetX >= MIN_SWIPE_DISTANCE) {\n /* istanbul ignore else */\n if (deltaX > 0 && currentIndex !== 0) {\n this.$emit('change', currentIndex - 1);\n } else if (deltaX < 0 && currentIndex !== this.count - 1) {\n this.$emit('change', currentIndex + 1);\n }\n }\n },\n genChildren: function genChildren() {\n var h = this.$createElement;\n\n if (this.animated) {\n return h(\"div\", {\n \"class\": bem('track'),\n \"style\": this.style\n }, [this.slots()]);\n }\n\n return this.slots();\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"class\": bem('content', {\n animated: this.animated\n }),\n \"on\": _extends({}, this.listeners)\n }, [this.genChildren()]);\n }\n});","// Utils\nimport { createNamespace, isDef, addUnit } from '../utils';\nimport { scrollLeftTo, scrollTopTo } from './utils';\nimport { route } from '../utils/router';\nimport { isHidden } from '../utils/dom/style';\nimport { on, off } from '../utils/dom/event';\nimport { unitToPx } from '../utils/format/unit';\nimport { BORDER_TOP_BOTTOM } from '../utils/constant';\nimport { callInterceptor } from '../utils/interceptor';\nimport { getScroller, getVisibleTop, getElementTop, getVisibleHeight, setRootScrollTop } from '../utils/dom/scroll'; // Mixins\n\nimport { ParentMixin } from '../mixins/relation';\nimport { BindEventMixin } from '../mixins/bind-event'; // Components\n\nimport Title from './Title';\nimport Sticky from '../sticky';\nimport Content from './Content';\n\nvar _createNamespace = createNamespace('tabs'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ParentMixin('vanTabs'), BindEventMixin(function (bind) {\n if (!this.scroller) {\n this.scroller = getScroller(this.$el);\n }\n\n bind(window, 'resize', this.resize, true);\n\n if (this.scrollspy) {\n bind(this.scroller, 'scroll', this.onScroll, true);\n }\n })],\n model: {\n prop: 'active'\n },\n props: {\n color: String,\n border: Boolean,\n sticky: Boolean,\n animated: Boolean,\n swipeable: Boolean,\n scrollspy: Boolean,\n background: String,\n lineWidth: [Number, String],\n lineHeight: [Number, String],\n beforeChange: Function,\n titleActiveColor: String,\n titleInactiveColor: String,\n type: {\n type: String,\n default: 'line'\n },\n active: {\n type: [Number, String],\n default: 0\n },\n ellipsis: {\n type: Boolean,\n default: true\n },\n duration: {\n type: [Number, String],\n default: 0.3\n },\n offsetTop: {\n type: [Number, String],\n default: 0\n },\n lazyRender: {\n type: Boolean,\n default: true\n },\n swipeThreshold: {\n type: [Number, String],\n default: 5\n }\n },\n data: function data() {\n return {\n position: '',\n currentIndex: null,\n lineStyle: {\n backgroundColor: this.color\n }\n };\n },\n computed: {\n // whether the nav is scrollable\n scrollable: function scrollable() {\n return this.children.length > this.swipeThreshold || !this.ellipsis;\n },\n navStyle: function navStyle() {\n return {\n borderColor: this.color,\n background: this.background\n };\n },\n currentName: function currentName() {\n var activeTab = this.children[this.currentIndex];\n\n if (activeTab) {\n return activeTab.computedName;\n }\n },\n offsetTopPx: function offsetTopPx() {\n return unitToPx(this.offsetTop);\n },\n scrollOffset: function scrollOffset() {\n if (this.sticky) {\n return this.offsetTopPx + this.tabHeight;\n }\n\n return 0;\n }\n },\n watch: {\n color: 'setLine',\n active: function active(name) {\n if (name !== this.currentName) {\n this.setCurrentIndexByName(name);\n }\n },\n children: function children() {\n var _this = this;\n\n this.setCurrentIndexByName(this.active || this.currentName);\n this.setLine();\n this.$nextTick(function () {\n _this.scrollIntoView(true);\n });\n },\n currentIndex: function currentIndex() {\n this.scrollIntoView();\n this.setLine(); // scroll to correct position\n\n if (this.stickyFixed && !this.scrollspy) {\n setRootScrollTop(Math.ceil(getElementTop(this.$el) - this.offsetTopPx));\n }\n },\n scrollspy: function scrollspy(val) {\n if (val) {\n on(this.scroller, 'scroll', this.onScroll, true);\n } else {\n off(this.scroller, 'scroll', this.onScroll);\n }\n }\n },\n mounted: function mounted() {\n this.init();\n },\n activated: function activated() {\n this.init();\n this.setLine();\n },\n methods: {\n // @exposed-api\n resize: function resize() {\n this.setLine();\n },\n init: function init() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.inited = true;\n _this2.tabHeight = getVisibleHeight(_this2.$refs.wrap);\n\n _this2.scrollIntoView(true);\n });\n },\n // update nav bar style\n setLine: function setLine() {\n var _this3 = this;\n\n var shouldAnimate = this.inited;\n this.$nextTick(function () {\n var titles = _this3.$refs.titles;\n\n if (!titles || !titles[_this3.currentIndex] || _this3.type !== 'line' || isHidden(_this3.$el)) {\n return;\n }\n\n var title = titles[_this3.currentIndex].$el;\n var lineWidth = _this3.lineWidth,\n lineHeight = _this3.lineHeight;\n var left = title.offsetLeft + title.offsetWidth / 2;\n var lineStyle = {\n width: addUnit(lineWidth),\n backgroundColor: _this3.color,\n transform: \"translateX(\" + left + \"px) translateX(-50%)\"\n };\n\n if (shouldAnimate) {\n lineStyle.transitionDuration = _this3.duration + \"s\";\n }\n\n if (isDef(lineHeight)) {\n var height = addUnit(lineHeight);\n lineStyle.height = height;\n lineStyle.borderRadius = height;\n }\n\n _this3.lineStyle = lineStyle;\n });\n },\n // correct the index of active tab\n setCurrentIndexByName: function setCurrentIndexByName(name) {\n var matched = this.children.filter(function (tab) {\n return tab.computedName === name;\n });\n var defaultIndex = (this.children[0] || {}).index || 0;\n this.setCurrentIndex(matched.length ? matched[0].index : defaultIndex);\n },\n setCurrentIndex: function setCurrentIndex(currentIndex) {\n var newIndex = this.findAvailableTab(currentIndex);\n\n if (!isDef(newIndex)) {\n return;\n }\n\n var newTab = this.children[newIndex];\n var newName = newTab.computedName;\n var shouldEmitChange = this.currentIndex !== null;\n this.currentIndex = newIndex;\n\n if (newName !== this.active) {\n this.$emit('input', newName);\n\n if (shouldEmitChange) {\n this.$emit('change', newName, newTab.title);\n }\n }\n },\n findAvailableTab: function findAvailableTab(index) {\n var diff = index < this.currentIndex ? -1 : 1;\n\n while (index >= 0 && index < this.children.length) {\n if (!this.children[index].disabled) {\n return index;\n }\n\n index += diff;\n }\n },\n // emit event when clicked\n onClick: function onClick(item, index) {\n var _this4 = this;\n\n var _this$children$index = this.children[index],\n title = _this$children$index.title,\n disabled = _this$children$index.disabled,\n computedName = _this$children$index.computedName;\n\n if (disabled) {\n this.$emit('disabled', computedName, title);\n } else {\n callInterceptor({\n interceptor: this.beforeChange,\n args: [computedName],\n done: function done() {\n _this4.setCurrentIndex(index);\n\n _this4.scrollToCurrentContent();\n }\n });\n this.$emit('click', computedName, title);\n route(item.$router, item);\n }\n },\n // scroll active tab into view\n scrollIntoView: function scrollIntoView(immediate) {\n var titles = this.$refs.titles;\n\n if (!this.scrollable || !titles || !titles[this.currentIndex]) {\n return;\n }\n\n var nav = this.$refs.nav;\n var title = titles[this.currentIndex].$el;\n var to = title.offsetLeft - (nav.offsetWidth - title.offsetWidth) / 2;\n scrollLeftTo(nav, to, immediate ? 0 : +this.duration);\n },\n onSticktScroll: function onSticktScroll(params) {\n this.stickyFixed = params.isFixed;\n this.$emit('scroll', params);\n },\n // @exposed-api\n scrollTo: function scrollTo(name) {\n var _this5 = this;\n\n this.$nextTick(function () {\n _this5.setCurrentIndexByName(name);\n\n _this5.scrollToCurrentContent(true);\n });\n },\n scrollToCurrentContent: function scrollToCurrentContent(immediate) {\n var _this6 = this;\n\n if (immediate === void 0) {\n immediate = false;\n }\n\n if (this.scrollspy) {\n var target = this.children[this.currentIndex];\n var el = target == null ? void 0 : target.$el;\n\n if (el) {\n var to = getElementTop(el, this.scroller) - this.scrollOffset;\n this.lockScroll = true;\n scrollTopTo(this.scroller, to, immediate ? 0 : +this.duration, function () {\n _this6.lockScroll = false;\n });\n }\n }\n },\n onScroll: function onScroll() {\n if (this.scrollspy && !this.lockScroll) {\n var index = this.getCurrentIndexOnScroll();\n this.setCurrentIndex(index);\n }\n },\n getCurrentIndexOnScroll: function getCurrentIndexOnScroll() {\n var children = this.children;\n\n for (var index = 0; index < children.length; index++) {\n var top = getVisibleTop(children[index].$el);\n\n if (top > this.scrollOffset) {\n return index === 0 ? 0 : index - 1;\n }\n }\n\n return children.length - 1;\n }\n },\n render: function render() {\n var _this7 = this,\n _ref;\n\n var h = arguments[0];\n var type = this.type,\n animated = this.animated,\n scrollable = this.scrollable;\n var Nav = this.children.map(function (item, index) {\n var _item$badge;\n\n return h(Title, {\n \"ref\": \"titles\",\n \"refInFor\": true,\n \"attrs\": {\n \"type\": type,\n \"dot\": item.dot,\n \"info\": (_item$badge = item.badge) != null ? _item$badge : item.info,\n \"title\": item.title,\n \"color\": _this7.color,\n \"isActive\": index === _this7.currentIndex,\n \"disabled\": item.disabled,\n \"scrollable\": scrollable,\n \"activeColor\": _this7.titleActiveColor,\n \"inactiveColor\": _this7.titleInactiveColor\n },\n \"style\": item.titleStyle,\n \"class\": item.titleClass,\n \"scopedSlots\": {\n default: function _default() {\n return item.slots('title');\n }\n },\n \"on\": {\n \"click\": function click() {\n _this7.onClick(item, index);\n }\n }\n });\n });\n var Wrap = h(\"div\", {\n \"ref\": \"wrap\",\n \"class\": [bem('wrap', {\n scrollable: scrollable\n }), (_ref = {}, _ref[BORDER_TOP_BOTTOM] = type === 'line' && this.border, _ref)]\n }, [h(\"div\", {\n \"ref\": \"nav\",\n \"attrs\": {\n \"role\": \"tablist\"\n },\n \"class\": bem('nav', [type, {\n complete: this.scrollable\n }]),\n \"style\": this.navStyle\n }, [this.slots('nav-left'), Nav, type === 'line' && h(\"div\", {\n \"class\": bem('line'),\n \"style\": this.lineStyle\n }), this.slots('nav-right')])]);\n return h(\"div\", {\n \"class\": bem([type])\n }, [this.sticky ? h(Sticky, {\n \"attrs\": {\n \"container\": this.$el,\n \"offsetTop\": this.offsetTop\n },\n \"on\": {\n \"scroll\": this.onSticktScroll\n }\n }, [Wrap]) : Wrap, h(Content, {\n \"attrs\": {\n \"count\": this.children.length,\n \"animated\": animated,\n \"duration\": this.duration,\n \"swipeable\": this.swipeable,\n \"currentIndex\": this.currentIndex\n },\n \"on\": {\n \"change\": this.setCurrentIndex\n }\n }, [this.slots()])]);\n }\n});","import { createNamespace } from '../utils';\nimport Tab from '../tab';\nimport Tabs from '../tabs';\nimport Icon from '../icon';\n\nvar _createNamespace = createNamespace('cascader'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nexport default createComponent({\n props: {\n title: String,\n value: [Number, String],\n fieldNames: Object,\n placeholder: String,\n activeColor: String,\n options: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n closeable: {\n type: Boolean,\n default: true\n }\n },\n data: function data() {\n return {\n tabs: [],\n activeTab: 0\n };\n },\n computed: {\n textKey: function textKey() {\n var _this$fieldNames;\n\n return ((_this$fieldNames = this.fieldNames) == null ? void 0 : _this$fieldNames.text) || 'text';\n },\n valueKey: function valueKey() {\n var _this$fieldNames2;\n\n return ((_this$fieldNames2 = this.fieldNames) == null ? void 0 : _this$fieldNames2.value) || 'value';\n },\n childrenKey: function childrenKey() {\n var _this$fieldNames3;\n\n return ((_this$fieldNames3 = this.fieldNames) == null ? void 0 : _this$fieldNames3.children) || 'children';\n }\n },\n watch: {\n options: {\n deep: true,\n handler: 'updateTabs'\n },\n value: function value(_value) {\n var _this = this;\n\n if (_value || _value === 0) {\n var values = this.tabs.map(function (tab) {\n var _tab$selectedOption;\n\n return (_tab$selectedOption = tab.selectedOption) == null ? void 0 : _tab$selectedOption[_this.valueKey];\n });\n\n if (values.indexOf(_value) !== -1) {\n return;\n }\n }\n\n this.updateTabs();\n }\n },\n created: function created() {\n this.updateTabs();\n },\n methods: {\n getSelectedOptionsByValue: function getSelectedOptionsByValue(options, value) {\n for (var i = 0; i < options.length; i++) {\n var option = options[i];\n\n if (option[this.valueKey] === value) {\n return [option];\n }\n\n if (option[this.childrenKey]) {\n var selectedOptions = this.getSelectedOptionsByValue(option[this.childrenKey], value);\n\n if (selectedOptions) {\n return [option].concat(selectedOptions);\n }\n }\n }\n },\n updateTabs: function updateTabs() {\n var _this2 = this;\n\n if (this.value || this.value === 0) {\n var selectedOptions = this.getSelectedOptionsByValue(this.options, this.value);\n\n if (selectedOptions) {\n var optionsCursor = this.options;\n this.tabs = selectedOptions.map(function (option) {\n var tab = {\n options: optionsCursor,\n selectedOption: option\n };\n var next = optionsCursor.filter(function (item) {\n return item[_this2.valueKey] === option[_this2.valueKey];\n });\n\n if (next.length) {\n optionsCursor = next[0][_this2.childrenKey];\n }\n\n return tab;\n });\n\n if (optionsCursor) {\n this.tabs.push({\n options: optionsCursor,\n selectedOption: null\n });\n }\n\n this.$nextTick(function () {\n _this2.activeTab = _this2.tabs.length - 1;\n });\n return;\n }\n }\n\n this.tabs = [{\n options: this.options,\n selectedOption: null\n }];\n },\n onSelect: function onSelect(option, tabIndex) {\n var _this3 = this;\n\n this.tabs[tabIndex].selectedOption = option;\n\n if (this.tabs.length > tabIndex + 1) {\n this.tabs = this.tabs.slice(0, tabIndex + 1);\n }\n\n if (option[this.childrenKey]) {\n var nextTab = {\n options: option[this.childrenKey],\n selectedOption: null\n };\n\n if (this.tabs[tabIndex + 1]) {\n this.$set(this.tabs, tabIndex + 1, nextTab);\n } else {\n this.tabs.push(nextTab);\n }\n\n this.$nextTick(function () {\n _this3.activeTab++;\n });\n }\n\n var selectedOptions = this.tabs.map(function (tab) {\n return tab.selectedOption;\n }).filter(function (item) {\n return !!item;\n });\n var eventParams = {\n value: option[this.valueKey],\n tabIndex: tabIndex,\n selectedOptions: selectedOptions\n };\n this.$emit('input', option[this.valueKey]);\n this.$emit('change', eventParams);\n\n if (!option[this.childrenKey]) {\n this.$emit('finish', eventParams);\n }\n },\n onClose: function onClose() {\n this.$emit('close');\n },\n renderHeader: function renderHeader() {\n var h = this.$createElement;\n return h(\"div\", {\n \"class\": bem('header')\n }, [h(\"h2\", {\n \"class\": bem('title')\n }, [this.slots('title') || this.title]), this.closeable ? h(Icon, {\n \"attrs\": {\n \"name\": \"cross\"\n },\n \"class\": bem('close-icon'),\n \"on\": {\n \"click\": this.onClose\n }\n }) : null]);\n },\n renderOptions: function renderOptions(options, selectedOption, tabIndex) {\n var _this4 = this;\n\n var h = this.$createElement;\n\n var renderOption = function renderOption(option) {\n var isSelected = selectedOption && option[_this4.valueKey] === selectedOption[_this4.valueKey];\n return h(\"li\", {\n \"class\": bem('option', {\n selected: isSelected\n }),\n \"style\": {\n color: isSelected ? _this4.activeColor : null\n },\n \"on\": {\n \"click\": function click() {\n _this4.onSelect(option, tabIndex);\n }\n }\n }, [h(\"span\", [option[_this4.textKey]]), isSelected ? h(Icon, {\n \"attrs\": {\n \"name\": \"success\"\n },\n \"class\": bem('selected-icon')\n }) : null]);\n };\n\n return h(\"ul\", {\n \"class\": bem('options')\n }, [options.map(renderOption)]);\n },\n renderTab: function renderTab(item, tabIndex) {\n var h = this.$createElement;\n var options = item.options,\n selectedOption = item.selectedOption;\n var title = selectedOption ? selectedOption[this.textKey] : this.placeholder || t('select');\n return h(Tab, {\n \"attrs\": {\n \"title\": title,\n \"titleClass\": bem('tab', {\n unselected: !selectedOption\n })\n }\n }, [this.renderOptions(options, selectedOption, tabIndex)]);\n },\n renderTabs: function renderTabs() {\n var _this5 = this;\n\n var h = this.$createElement;\n return h(Tabs, {\n \"attrs\": {\n \"animated\": true,\n \"swipeable\": true,\n \"swipeThreshold\": 0,\n \"color\": this.activeColor\n },\n \"class\": bem('tabs'),\n \"model\": {\n value: _this5.activeTab,\n callback: function callback($$v) {\n _this5.activeTab = $$v;\n }\n }\n }, [this.tabs.map(this.renderTab)]);\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"class\": bem()\n }, [this.renderHeader(), this.renderTabs()]);\n }\n});","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace } from '../utils';\nimport { inherit } from '../utils/functional';\nimport { BORDER_TOP_BOTTOM } from '../utils/constant'; // Types\n\nvar _createNamespace = createNamespace('cell-group'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nfunction CellGroup(h, props, slots, ctx) {\n var _ref;\n\n var Group = h(\"div\", _mergeJSXProps([{\n \"class\": [bem(), (_ref = {}, _ref[BORDER_TOP_BOTTOM] = props.border, _ref)]\n }, inherit(ctx, true)]), [slots.default == null ? void 0 : slots.default()]);\n\n if (props.title || slots.title) {\n return h(\"div\", [h(\"div\", {\n \"class\": bem('title')\n }, [slots.title ? slots.title() : props.title]), Group]);\n }\n\n return Group;\n}\n\nCellGroup.props = {\n title: String,\n border: {\n type: Boolean,\n default: true\n }\n};\nexport default createComponent(CellGroup);","import { createNamespace } from '../utils';\nimport { CheckboxMixin } from '../mixins/checkbox';\n\nvar _createNamespace = createNamespace('checkbox'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [CheckboxMixin({\n bem: bem,\n role: 'checkbox',\n parent: 'vanCheckbox'\n })],\n computed: {\n checked: {\n get: function get() {\n if (this.parent) {\n return this.parent.value.indexOf(this.name) !== -1;\n }\n\n return this.value;\n },\n set: function set(val) {\n if (this.parent) {\n this.setParentValue(val);\n } else {\n this.$emit('input', val);\n }\n }\n }\n },\n watch: {\n value: function value(val) {\n this.$emit('change', val);\n }\n },\n methods: {\n // @exposed-api\n toggle: function toggle(checked) {\n var _this = this;\n\n if (checked === void 0) {\n checked = !this.checked;\n }\n\n // When toggle method is called multiple times at the same time,\n // only the last call is valid.\n // This is a hack for usage inside Cell.\n clearTimeout(this.toggleTask);\n this.toggleTask = setTimeout(function () {\n _this.checked = checked;\n });\n },\n setParentValue: function setParentValue(val) {\n var parent = this.parent;\n var value = parent.value.slice();\n\n if (val) {\n if (parent.max && value.length >= parent.max) {\n return;\n }\n /* istanbul ignore else */\n\n\n if (value.indexOf(this.name) === -1) {\n value.push(this.name);\n parent.$emit('input', value);\n }\n } else {\n var index = value.indexOf(this.name);\n /* istanbul ignore else */\n\n if (index !== -1) {\n value.splice(index, 1);\n parent.$emit('input', value);\n }\n }\n }\n }\n});","import { createNamespace } from '../utils';\nimport { FieldMixin } from '../mixins/field';\nimport { ParentMixin } from '../mixins/relation';\n\nvar _createNamespace = createNamespace('checkbox-group'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ParentMixin('vanCheckbox'), FieldMixin],\n props: {\n max: [Number, String],\n disabled: Boolean,\n direction: String,\n iconSize: [Number, String],\n checkedColor: String,\n value: {\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n watch: {\n value: function value(val) {\n this.$emit('change', val);\n }\n },\n methods: {\n // @exposed-api\n toggleAll: function toggleAll(options) {\n if (options === void 0) {\n options = {};\n }\n\n if (typeof options === 'boolean') {\n options = {\n checked: options\n };\n }\n\n var _options = options,\n checked = _options.checked,\n skipDisabled = _options.skipDisabled;\n var children = this.children.filter(function (item) {\n if (item.disabled && skipDisabled) {\n return item.checked;\n }\n\n return checked != null ? checked : !item.checked;\n });\n var names = children.map(function (item) {\n return item.name;\n });\n this.$emit('input', names);\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"class\": bem([this.direction])\n }, [this.slots()]);\n }\n});","import { createNamespace, isObject, addUnit } from '../utils';\nimport { raf, cancelRaf } from '../utils/dom/raf';\n\nvar _createNamespace = createNamespace('circle'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nvar PERIMETER = 3140;\nvar uid = 0;\n\nfunction format(rate) {\n return Math.min(Math.max(rate, 0), 100);\n}\n\nfunction getPath(clockwise, viewBoxSize) {\n var sweepFlag = clockwise ? 1 : 0;\n return \"M \" + viewBoxSize / 2 + \" \" + viewBoxSize / 2 + \" m 0, -500 a 500, 500 0 1, \" + sweepFlag + \" 0, 1000 a 500, 500 0 1, \" + sweepFlag + \" 0, -1000\";\n}\n\nexport default createComponent({\n props: {\n text: String,\n size: [Number, String],\n color: [String, Object],\n layerColor: String,\n strokeLinecap: String,\n value: {\n type: Number,\n default: 0\n },\n speed: {\n type: [Number, String],\n default: 0\n },\n fill: {\n type: String,\n default: 'none'\n },\n rate: {\n type: [Number, String],\n default: 100\n },\n strokeWidth: {\n type: [Number, String],\n default: 40\n },\n clockwise: {\n type: Boolean,\n default: true\n }\n },\n beforeCreate: function beforeCreate() {\n this.uid = \"van-circle-gradient-\" + uid++;\n },\n computed: {\n style: function style() {\n var size = addUnit(this.size);\n return {\n width: size,\n height: size\n };\n },\n path: function path() {\n return getPath(this.clockwise, this.viewBoxSize);\n },\n viewBoxSize: function viewBoxSize() {\n return +this.strokeWidth + 1000;\n },\n layerStyle: function layerStyle() {\n return {\n fill: \"\" + this.fill,\n stroke: \"\" + this.layerColor,\n strokeWidth: this.strokeWidth + \"px\"\n };\n },\n hoverStyle: function hoverStyle() {\n var offset = PERIMETER * this.value / 100;\n return {\n stroke: \"\" + (this.gradient ? \"url(#\" + this.uid + \")\" : this.color),\n strokeWidth: +this.strokeWidth + 1 + \"px\",\n strokeLinecap: this.strokeLinecap,\n strokeDasharray: offset + \"px \" + PERIMETER + \"px\"\n };\n },\n gradient: function gradient() {\n return isObject(this.color);\n },\n LinearGradient: function LinearGradient() {\n var _this = this;\n\n var h = this.$createElement;\n\n if (!this.gradient) {\n return;\n }\n\n var Stops = Object.keys(this.color).sort(function (a, b) {\n return parseFloat(a) - parseFloat(b);\n }).map(function (key, index) {\n return h(\"stop\", {\n \"key\": index,\n \"attrs\": {\n \"offset\": key,\n \"stop-color\": _this.color[key]\n }\n });\n });\n return h(\"defs\", [h(\"linearGradient\", {\n \"attrs\": {\n \"id\": this.uid,\n \"x1\": \"100%\",\n \"y1\": \"0%\",\n \"x2\": \"0%\",\n \"y2\": \"0%\"\n }\n }, [Stops])]);\n }\n },\n watch: {\n rate: {\n handler: function handler(rate) {\n this.startTime = Date.now();\n this.startRate = this.value;\n this.endRate = format(rate);\n this.increase = this.endRate > this.startRate;\n this.duration = Math.abs((this.startRate - this.endRate) * 1000 / this.speed);\n\n if (this.speed) {\n cancelRaf(this.rafId);\n this.rafId = raf(this.animate);\n } else {\n this.$emit('input', this.endRate);\n }\n },\n immediate: true\n }\n },\n methods: {\n animate: function animate() {\n var now = Date.now();\n var progress = Math.min((now - this.startTime) / this.duration, 1);\n var rate = progress * (this.endRate - this.startRate) + this.startRate;\n this.$emit('input', format(parseFloat(rate.toFixed(1))));\n\n if (this.increase ? rate < this.endRate : rate > this.endRate) {\n this.rafId = raf(this.animate);\n }\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"class\": bem(),\n \"style\": this.style\n }, [h(\"svg\", {\n \"attrs\": {\n \"viewBox\": \"0 0 \" + this.viewBoxSize + \" \" + this.viewBoxSize\n }\n }, [this.LinearGradient, h(\"path\", {\n \"class\": bem('layer'),\n \"style\": this.layerStyle,\n \"attrs\": {\n \"d\": this.path\n }\n }), h(\"path\", {\n \"attrs\": {\n \"d\": this.path\n },\n \"class\": bem('hover'),\n \"style\": this.hoverStyle\n })]), this.slots() || this.text && h(\"div\", {\n \"class\": bem('text')\n }, [this.text])]);\n }\n});","import { createNamespace } from '../utils';\nimport { ChildrenMixin } from '../mixins/relation';\n\nvar _createNamespace = createNamespace('col'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ChildrenMixin('vanRow')],\n props: {\n span: [Number, String],\n offset: [Number, String],\n tag: {\n type: String,\n default: 'div'\n }\n },\n computed: {\n style: function style() {\n var index = this.index;\n\n var _ref = this.parent || {},\n spaces = _ref.spaces;\n\n if (spaces && spaces[index]) {\n var _spaces$index = spaces[index],\n left = _spaces$index.left,\n right = _spaces$index.right;\n return {\n paddingLeft: left ? left + \"px\" : null,\n paddingRight: right ? right + \"px\" : null\n };\n }\n }\n },\n methods: {\n onClick: function onClick(event) {\n this.$emit('click', event);\n }\n },\n render: function render() {\n var _bem;\n\n var h = arguments[0];\n var span = this.span,\n offset = this.offset;\n return h(this.tag, {\n \"style\": this.style,\n \"class\": bem((_bem = {}, _bem[span] = span, _bem[\"offset-\" + offset] = offset, _bem)),\n \"on\": {\n \"click\": this.onClick\n }\n }, [this.slots()]);\n }\n});","import { createNamespace } from '../utils';\nimport { ParentMixin } from '../mixins/relation';\nimport { BORDER_TOP_BOTTOM } from '../utils/constant';\n\nvar _createNamespace = createNamespace('collapse'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ParentMixin('vanCollapse')],\n props: {\n accordion: Boolean,\n value: [String, Number, Array],\n border: {\n type: Boolean,\n default: true\n }\n },\n methods: {\n switch: function _switch(name, expanded) {\n if (!this.accordion) {\n name = expanded ? this.value.concat(name) : this.value.filter(function (activeName) {\n return activeName !== name;\n });\n }\n\n this.$emit('change', name);\n this.$emit('input', name);\n }\n },\n render: function render() {\n var _ref;\n\n var h = arguments[0];\n return h(\"div\", {\n \"class\": [bem(), (_ref = {}, _ref[BORDER_TOP_BOTTOM] = this.border, _ref)]\n }, [this.slots()]);\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// Utils\nimport { createNamespace } from '../utils';\nimport { raf, doubleRaf } from '../utils/dom/raf'; // Mixins\n\nimport { ChildrenMixin } from '../mixins/relation'; // Components\n\nimport Cell from '../cell';\nimport { cellProps } from '../cell/shared';\n\nvar _createNamespace = createNamespace('collapse-item'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nvar CELL_SLOTS = ['title', 'icon', 'right-icon'];\nexport default createComponent({\n mixins: [ChildrenMixin('vanCollapse')],\n props: _extends({}, cellProps, {\n name: [Number, String],\n disabled: Boolean,\n isLink: {\n type: Boolean,\n default: true\n }\n }),\n data: function data() {\n return {\n show: null,\n inited: null\n };\n },\n computed: {\n currentName: function currentName() {\n var _this$name;\n\n return (_this$name = this.name) != null ? _this$name : this.index;\n },\n expanded: function expanded() {\n var _this = this;\n\n if (!this.parent) {\n return null;\n }\n\n var _this$parent = this.parent,\n value = _this$parent.value,\n accordion = _this$parent.accordion;\n\n if (process.env.NODE_ENV === 'development' && !accordion && !Array.isArray(value)) {\n console.error('[Vant] Collapse: type of prop \"value\" should be Array');\n return;\n }\n\n return accordion ? value === this.currentName : value.some(function (name) {\n return name === _this.currentName;\n });\n }\n },\n created: function created() {\n this.show = this.expanded;\n this.inited = this.expanded;\n },\n watch: {\n expanded: function expanded(_expanded, prev) {\n var _this2 = this;\n\n if (prev === null) {\n return;\n }\n\n if (_expanded) {\n this.show = true;\n this.inited = true;\n } // Use raf: flick when opened in safari\n // Use nextTick: closing animation failed when set `user-select: none`\n\n\n var nextTick = _expanded ? this.$nextTick : raf;\n nextTick(function () {\n var _this2$$refs = _this2.$refs,\n content = _this2$$refs.content,\n wrapper = _this2$$refs.wrapper;\n\n if (!content || !wrapper) {\n return;\n }\n\n var offsetHeight = content.offsetHeight;\n\n if (offsetHeight) {\n var contentHeight = offsetHeight + \"px\";\n wrapper.style.height = _expanded ? 0 : contentHeight; // use double raf to ensure animation can start\n\n doubleRaf(function () {\n wrapper.style.height = _expanded ? contentHeight : 0;\n });\n } else {\n _this2.onTransitionEnd();\n }\n });\n }\n },\n methods: {\n onClick: function onClick() {\n if (!this.disabled) {\n this.toggle();\n }\n },\n // @exposed-api\n toggle: function toggle(expanded) {\n if (expanded === void 0) {\n expanded = !this.expanded;\n }\n\n var parent = this.parent,\n currentName = this.currentName;\n var close = parent.accordion && currentName === parent.value;\n var name = close ? '' : currentName;\n this.parent.switch(name, expanded);\n },\n onTransitionEnd: function onTransitionEnd() {\n if (!this.expanded) {\n this.show = false;\n } else {\n this.$refs.wrapper.style.height = '';\n }\n },\n genTitle: function genTitle() {\n var _this3 = this;\n\n var h = this.$createElement;\n var border = this.border,\n disabled = this.disabled,\n expanded = this.expanded;\n var titleSlots = CELL_SLOTS.reduce(function (slots, name) {\n if (_this3.slots(name)) {\n slots[name] = function () {\n return _this3.slots(name);\n };\n }\n\n return slots;\n }, {});\n\n if (this.slots('value')) {\n titleSlots.default = function () {\n return _this3.slots('value');\n };\n }\n\n return h(Cell, {\n \"attrs\": {\n \"role\": \"button\",\n \"tabindex\": disabled ? -1 : 0,\n \"aria-expanded\": String(expanded)\n },\n \"class\": bem('title', {\n disabled: disabled,\n expanded: expanded,\n borderless: !border\n }),\n \"on\": {\n \"click\": this.onClick\n },\n \"scopedSlots\": titleSlots,\n \"props\": _extends({}, this.$props)\n });\n },\n genContent: function genContent() {\n var h = this.$createElement;\n\n if (this.inited) {\n return h(\"div\", {\n \"directives\": [{\n name: \"show\",\n value: this.show\n }],\n \"ref\": \"wrapper\",\n \"class\": bem('wrapper'),\n \"on\": {\n \"transitionend\": this.onTransitionEnd\n }\n }, [h(\"div\", {\n \"ref\": \"content\",\n \"class\": bem('content')\n }, [this.slots()])]);\n }\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"class\": [bem({\n border: this.index && this.border\n })]\n }, [this.genTitle(), this.genContent()]);\n }\n});","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace } from '../utils';\nimport { emit, inherit } from '../utils/functional'; // Components\n\nimport Cell from '../cell'; // Types\n\nvar _createNamespace = createNamespace('contact-card'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nfunction ContactCard(h, props, slots, ctx) {\n var type = props.type,\n editable = props.editable;\n\n function onClick(event) {\n if (editable) {\n emit(ctx, 'click', event);\n }\n }\n\n function Content() {\n if (type === 'add') {\n return props.addText || t('addText');\n }\n\n return [h(\"div\", [t('name') + \"\\uFF1A\" + props.name]), h(\"div\", [t('tel') + \"\\uFF1A\" + props.tel])];\n }\n\n return h(Cell, _mergeJSXProps([{\n \"attrs\": {\n \"center\": true,\n \"border\": false,\n \"isLink\": editable,\n \"valueClass\": bem('value'),\n \"icon\": type === 'edit' ? 'contact' : 'add-square'\n },\n \"class\": bem([type]),\n \"on\": {\n \"click\": onClick\n }\n }, inherit(ctx)]), [Content()]);\n}\n\nContactCard.props = {\n tel: String,\n name: String,\n addText: String,\n editable: {\n type: Boolean,\n default: true\n },\n type: {\n type: String,\n default: 'add'\n }\n};\nexport default createComponent(ContactCard);","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// Utils\nimport { createNamespace } from '../utils';\nimport { isMobile } from '../utils/validate/mobile'; // Components\n\nimport Cell from '../cell';\nimport Field from '../field';\nimport Button from '../button';\nimport Dialog from '../dialog';\nimport Switch from '../switch';\n\nvar _createNamespace = createNamespace('contact-edit'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nvar defaultContact = {\n tel: '',\n name: ''\n};\nexport default createComponent({\n props: {\n isEdit: Boolean,\n isSaving: Boolean,\n isDeleting: Boolean,\n showSetDefault: Boolean,\n setDefaultLabel: String,\n contactInfo: {\n type: Object,\n default: function _default() {\n return _extends({}, defaultContact);\n }\n },\n telValidator: {\n type: Function,\n default: isMobile\n }\n },\n data: function data() {\n return {\n data: _extends({}, defaultContact, this.contactInfo),\n errorInfo: {\n name: '',\n tel: ''\n }\n };\n },\n watch: {\n contactInfo: function contactInfo(val) {\n this.data = _extends({}, defaultContact, val);\n }\n },\n methods: {\n onFocus: function onFocus(key) {\n this.errorInfo[key] = '';\n },\n getErrorMessageByKey: function getErrorMessageByKey(key) {\n var value = this.data[key].trim();\n\n switch (key) {\n case 'name':\n return value ? '' : t('nameInvalid');\n\n case 'tel':\n return this.telValidator(value) ? '' : t('telInvalid');\n }\n },\n onSave: function onSave() {\n var _this = this;\n\n var isValid = ['name', 'tel'].every(function (item) {\n var msg = _this.getErrorMessageByKey(item);\n\n if (msg) {\n _this.errorInfo[item] = msg;\n }\n\n return !msg;\n });\n\n if (isValid && !this.isSaving) {\n this.$emit('save', this.data);\n }\n },\n onDelete: function onDelete() {\n var _this2 = this;\n\n Dialog.confirm({\n title: t('confirmDelete')\n }).then(function () {\n _this2.$emit('delete', _this2.data);\n });\n }\n },\n render: function render() {\n var _this3 = this;\n\n var h = arguments[0];\n var data = this.data,\n errorInfo = this.errorInfo;\n\n var onFocus = function onFocus(name) {\n return function () {\n return _this3.onFocus(name);\n };\n };\n\n return h(\"div\", {\n \"class\": bem()\n }, [h(\"div\", {\n \"class\": bem('fields')\n }, [h(Field, {\n \"attrs\": {\n \"clearable\": true,\n \"maxlength\": \"30\",\n \"label\": t('name'),\n \"placeholder\": t('nameEmpty'),\n \"errorMessage\": errorInfo.name\n },\n \"on\": {\n \"focus\": onFocus('name')\n },\n \"model\": {\n value: data.name,\n callback: function callback($$v) {\n _this3.$set(data, \"name\", $$v);\n }\n }\n }), h(Field, {\n \"attrs\": {\n \"clearable\": true,\n \"type\": \"tel\",\n \"label\": t('tel'),\n \"placeholder\": t('telEmpty'),\n \"errorMessage\": errorInfo.tel\n },\n \"on\": {\n \"focus\": onFocus('tel')\n },\n \"model\": {\n value: data.tel,\n callback: function callback($$v) {\n _this3.$set(data, \"tel\", $$v);\n }\n }\n })]), this.showSetDefault && h(Cell, {\n \"attrs\": {\n \"title\": this.setDefaultLabel,\n \"border\": false\n },\n \"class\": bem('switch-cell')\n }, [h(Switch, {\n \"attrs\": {\n \"size\": 24\n },\n \"slot\": \"right-icon\",\n \"on\": {\n \"change\": function change(event) {\n _this3.$emit('change-default', event);\n }\n },\n \"model\": {\n value: data.isDefault,\n callback: function callback($$v) {\n _this3.$set(data, \"isDefault\", $$v);\n }\n }\n })]), h(\"div\", {\n \"class\": bem('buttons')\n }, [h(Button, {\n \"attrs\": {\n \"block\": true,\n \"round\": true,\n \"type\": \"danger\",\n \"text\": t('save'),\n \"loading\": this.isSaving\n },\n \"on\": {\n \"click\": this.onSave\n }\n }), this.isEdit && h(Button, {\n \"attrs\": {\n \"block\": true,\n \"round\": true,\n \"text\": t('delete'),\n \"loading\": this.isDeleting\n },\n \"on\": {\n \"click\": this.onDelete\n }\n })])]);\n }\n});","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace } from '../utils';\nimport { RED } from '../utils/constant';\nimport { emit, inherit } from '../utils/functional'; // Components\n\nimport Tag from '../tag';\nimport Icon from '../icon';\nimport Cell from '../cell';\nimport Radio from '../radio';\nimport Button from '../button';\nimport RadioGroup from '../radio-group'; // Types\n\nvar _createNamespace = createNamespace('contact-list'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nfunction ContactList(h, props, slots, ctx) {\n var List = props.list && props.list.map(function (item, index) {\n function onClick() {\n emit(ctx, 'input', item.id);\n emit(ctx, 'select', item, index);\n }\n\n function RightIcon() {\n return h(Radio, {\n \"attrs\": {\n \"name\": item.id,\n \"iconSize\": 16,\n \"checkedColor\": RED\n },\n \"on\": {\n \"click\": onClick\n }\n });\n }\n\n function LeftIcon() {\n return h(Icon, {\n \"attrs\": {\n \"name\": \"edit\"\n },\n \"class\": bem('edit'),\n \"on\": {\n \"click\": function click(event) {\n event.stopPropagation();\n emit(ctx, 'edit', item, index);\n }\n }\n });\n }\n\n function Content() {\n var nodes = [item.name + \"\\uFF0C\" + item.tel];\n\n if (item.isDefault && props.defaultTagText) {\n nodes.push(h(Tag, {\n \"attrs\": {\n \"type\": \"danger\",\n \"round\": true\n },\n \"class\": bem('item-tag')\n }, [props.defaultTagText]));\n }\n\n return nodes;\n }\n\n return h(Cell, {\n \"key\": item.id,\n \"attrs\": {\n \"isLink\": true,\n \"center\": true,\n \"valueClass\": bem('item-value')\n },\n \"class\": bem('item'),\n \"scopedSlots\": {\n icon: LeftIcon,\n default: Content,\n 'right-icon': RightIcon\n },\n \"on\": {\n \"click\": onClick\n }\n });\n });\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem()\n }, inherit(ctx)]), [h(RadioGroup, {\n \"attrs\": {\n \"value\": props.value\n },\n \"class\": bem('group')\n }, [List]), h(\"div\", {\n \"class\": bem('bottom')\n }, [h(Button, {\n \"attrs\": {\n \"round\": true,\n \"block\": true,\n \"type\": \"danger\",\n \"text\": props.addText || t('addText')\n },\n \"class\": bem('add'),\n \"on\": {\n \"click\": function click() {\n emit(ctx, 'add');\n }\n }\n })])]);\n}\n\nContactList.props = {\n value: null,\n list: Array,\n addText: String,\n defaultTagText: String\n};\nexport default createComponent(ContactList);","import { padZero } from '../utils/format/string';\nvar SECOND = 1000;\nvar MINUTE = 60 * SECOND;\nvar HOUR = 60 * MINUTE;\nvar DAY = 24 * HOUR;\nexport function parseTimeData(time) {\n var days = Math.floor(time / DAY);\n var hours = Math.floor(time % DAY / HOUR);\n var minutes = Math.floor(time % HOUR / MINUTE);\n var seconds = Math.floor(time % MINUTE / SECOND);\n var milliseconds = Math.floor(time % SECOND);\n return {\n days: days,\n hours: hours,\n minutes: minutes,\n seconds: seconds,\n milliseconds: milliseconds\n };\n}\nexport function parseFormat(format, timeData) {\n var days = timeData.days;\n var hours = timeData.hours,\n minutes = timeData.minutes,\n seconds = timeData.seconds,\n milliseconds = timeData.milliseconds;\n\n if (format.indexOf('DD') === -1) {\n hours += days * 24;\n } else {\n format = format.replace('DD', padZero(days));\n }\n\n if (format.indexOf('HH') === -1) {\n minutes += hours * 60;\n } else {\n format = format.replace('HH', padZero(hours));\n }\n\n if (format.indexOf('mm') === -1) {\n seconds += minutes * 60;\n } else {\n format = format.replace('mm', padZero(minutes));\n }\n\n if (format.indexOf('ss') === -1) {\n milliseconds += seconds * 1000;\n } else {\n format = format.replace('ss', padZero(seconds));\n }\n\n if (format.indexOf('S') !== -1) {\n var ms = padZero(milliseconds, 3);\n\n if (format.indexOf('SSS') !== -1) {\n format = format.replace('SSS', ms);\n } else if (format.indexOf('SS') !== -1) {\n format = format.replace('SS', ms.slice(0, 2));\n } else {\n format = format.replace('S', ms.charAt(0));\n }\n }\n\n return format;\n}\nexport function isSameSecond(time1, time2) {\n return Math.floor(time1 / 1000) === Math.floor(time2 / 1000);\n}","import { createNamespace, inBrowser } from '../utils';\nimport { raf, cancelRaf } from '../utils/dom/raf';\nimport { isSameSecond, parseTimeData, parseFormat } from './utils';\n\nvar _createNamespace = createNamespace('count-down'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n props: {\n millisecond: Boolean,\n time: {\n type: [Number, String],\n default: 0\n },\n format: {\n type: String,\n default: 'HH:mm:ss'\n },\n autoStart: {\n type: Boolean,\n default: true\n }\n },\n data: function data() {\n return {\n remain: 0\n };\n },\n computed: {\n timeData: function timeData() {\n return parseTimeData(this.remain);\n },\n formattedTime: function formattedTime() {\n return parseFormat(this.format, this.timeData);\n }\n },\n watch: {\n time: {\n immediate: true,\n handler: 'reset'\n }\n },\n activated: function activated() {\n if (this.keepAlivePaused) {\n this.counting = true;\n this.keepAlivePaused = false;\n this.tick();\n }\n },\n deactivated: function deactivated() {\n if (this.counting) {\n this.pause();\n this.keepAlivePaused = true;\n }\n },\n beforeDestroy: function beforeDestroy() {\n this.pause();\n },\n methods: {\n // @exposed-api\n start: function start() {\n if (this.counting) {\n return;\n }\n\n this.counting = true;\n this.endTime = Date.now() + this.remain;\n this.tick();\n },\n // @exposed-api\n pause: function pause() {\n this.counting = false;\n cancelRaf(this.rafId);\n },\n // @exposed-api\n reset: function reset() {\n this.pause();\n this.remain = +this.time;\n\n if (this.autoStart) {\n this.start();\n }\n },\n tick: function tick() {\n // should not start counting in server\n // see: https://github.com/youzan/vant/issues/7807\n if (!inBrowser) {\n return;\n }\n\n if (this.millisecond) {\n this.microTick();\n } else {\n this.macroTick();\n }\n },\n microTick: function microTick() {\n var _this = this;\n\n this.rafId = raf(function () {\n /* istanbul ignore if */\n // in case of call reset immediately after finish\n if (!_this.counting) {\n return;\n }\n\n _this.setRemain(_this.getRemain());\n\n if (_this.remain > 0) {\n _this.microTick();\n }\n });\n },\n macroTick: function macroTick() {\n var _this2 = this;\n\n this.rafId = raf(function () {\n /* istanbul ignore if */\n // in case of call reset immediately after finish\n if (!_this2.counting) {\n return;\n }\n\n var remain = _this2.getRemain();\n\n if (!isSameSecond(remain, _this2.remain) || remain === 0) {\n _this2.setRemain(remain);\n }\n\n if (_this2.remain > 0) {\n _this2.macroTick();\n }\n });\n },\n getRemain: function getRemain() {\n return Math.max(this.endTime - Date.now(), 0);\n },\n setRemain: function setRemain(remain) {\n this.remain = remain;\n this.$emit('change', this.timeData);\n\n if (remain === 0) {\n this.pause();\n this.$emit('finish');\n }\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"class\": bem()\n }, [this.slots('default', this.timeData) || this.formattedTime]);\n }\n});","import { createNamespace } from '../utils';\nimport { RED } from '../utils/constant';\nimport { padZero } from '../utils/format/string';\nimport Checkbox from '../checkbox';\n\nvar _createNamespace = createNamespace('coupon'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nfunction getDate(timeStamp) {\n var date = new Date(timeStamp * 1000);\n return date.getFullYear() + \".\" + padZero(date.getMonth() + 1) + \".\" + padZero(date.getDate());\n}\n\nfunction formatDiscount(discount) {\n return (discount / 10).toFixed(discount % 10 === 0 ? 0 : 1);\n}\n\nfunction formatAmount(amount) {\n return (amount / 100).toFixed(amount % 100 === 0 ? 0 : amount % 10 === 0 ? 1 : 2);\n}\n\nexport default createComponent({\n props: {\n coupon: Object,\n chosen: Boolean,\n disabled: Boolean,\n currency: {\n type: String,\n default: '¥'\n }\n },\n computed: {\n validPeriod: function validPeriod() {\n var _this$coupon = this.coupon,\n startAt = _this$coupon.startAt,\n endAt = _this$coupon.endAt;\n return getDate(startAt) + \" - \" + getDate(endAt);\n },\n faceAmount: function faceAmount() {\n var coupon = this.coupon;\n\n if (coupon.valueDesc) {\n return coupon.valueDesc + \"\" + (coupon.unitDesc || '') + \"\";\n }\n\n if (coupon.denominations) {\n var denominations = formatAmount(coupon.denominations);\n return \"\" + this.currency + \" \" + denominations;\n }\n\n if (coupon.discount) {\n return t('discount', formatDiscount(coupon.discount));\n }\n\n return '';\n },\n conditionMessage: function conditionMessage() {\n var condition = formatAmount(this.coupon.originCondition);\n return condition === '0' ? t('unlimited') : t('condition', condition);\n }\n },\n render: function render() {\n var h = arguments[0];\n var coupon = this.coupon,\n disabled = this.disabled;\n var description = disabled && coupon.reason || coupon.description;\n return h(\"div\", {\n \"class\": bem({\n disabled: disabled\n })\n }, [h(\"div\", {\n \"class\": bem('content')\n }, [h(\"div\", {\n \"class\": bem('head')\n }, [h(\"h2\", {\n \"class\": bem('amount'),\n \"domProps\": {\n \"innerHTML\": this.faceAmount\n }\n }), h(\"p\", {\n \"class\": bem('condition')\n }, [this.coupon.condition || this.conditionMessage])]), h(\"div\", {\n \"class\": bem('body')\n }, [h(\"p\", {\n \"class\": bem('name')\n }, [coupon.name]), h(\"p\", {\n \"class\": bem('valid')\n }, [this.validPeriod]), !this.disabled && h(Checkbox, {\n \"attrs\": {\n \"size\": 18,\n \"value\": this.chosen,\n \"checkedColor\": RED\n },\n \"class\": bem('corner')\n })])]), description && h(\"p\", {\n \"class\": bem('description')\n }, [description])]);\n }\n});","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace, isDef } from '../utils';\nimport { inherit } from '../utils/functional'; // Components\n\nimport Cell from '../cell'; // Types\n\nvar _createNamespace = createNamespace('coupon-cell'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nfunction formatValue(props) {\n var coupons = props.coupons,\n chosenCoupon = props.chosenCoupon,\n currency = props.currency;\n var coupon = coupons[+chosenCoupon];\n\n if (coupon) {\n var value = 0;\n\n if (isDef(coupon.value)) {\n value = coupon.value;\n } else if (isDef(coupon.denominations)) {\n value = coupon.denominations;\n }\n\n return \"-\" + currency + \" \" + (value / 100).toFixed(2);\n }\n\n return coupons.length === 0 ? t('tips') : t('count', coupons.length);\n}\n\nfunction CouponCell(h, props, slots, ctx) {\n var selected = props.coupons[+props.chosenCoupon];\n var value = formatValue(props);\n return h(Cell, _mergeJSXProps([{\n \"class\": bem(),\n \"attrs\": {\n \"value\": value,\n \"title\": props.title || t('title'),\n \"border\": props.border,\n \"isLink\": props.editable,\n \"valueClass\": bem('value', {\n selected: selected\n })\n }\n }, inherit(ctx, true)]));\n}\n\nCouponCell.model = {\n prop: 'chosenCoupon'\n};\nCouponCell.props = {\n title: String,\n coupons: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n currency: {\n type: String,\n default: '¥'\n },\n border: {\n type: Boolean,\n default: true\n },\n editable: {\n type: Boolean,\n default: true\n },\n chosenCoupon: {\n type: [Number, String],\n default: -1\n }\n};\nexport default createComponent(CouponCell);","// Utils\nimport { createNamespace } from '../utils'; // Components\n\nimport Tab from '../tab';\nimport Tabs from '../tabs';\nimport Field from '../field';\nimport Button from '../button';\nimport Coupon from '../coupon';\n\nvar _createNamespace = createNamespace('coupon-list'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nvar EMPTY_IMAGE = 'https://img01.yzcdn.cn/vant/coupon-empty.png';\nexport default createComponent({\n model: {\n prop: 'code'\n },\n props: {\n code: String,\n closeButtonText: String,\n inputPlaceholder: String,\n enabledTitle: String,\n disabledTitle: String,\n exchangeButtonText: String,\n exchangeButtonLoading: Boolean,\n exchangeButtonDisabled: Boolean,\n exchangeMinLength: {\n type: Number,\n default: 1\n },\n chosenCoupon: {\n type: Number,\n default: -1\n },\n coupons: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n disabledCoupons: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n displayedCouponIndex: {\n type: Number,\n default: -1\n },\n showExchangeBar: {\n type: Boolean,\n default: true\n },\n showCloseButton: {\n type: Boolean,\n default: true\n },\n showCount: {\n type: Boolean,\n default: true\n },\n currency: {\n type: String,\n default: '¥'\n },\n emptyImage: {\n type: String,\n default: EMPTY_IMAGE\n }\n },\n data: function data() {\n return {\n tab: 0,\n winHeight: window.innerHeight,\n currentCode: this.code || ''\n };\n },\n computed: {\n buttonDisabled: function buttonDisabled() {\n return !this.exchangeButtonLoading && (this.exchangeButtonDisabled || !this.currentCode || this.currentCode.length < this.exchangeMinLength);\n },\n listStyle: function listStyle() {\n return {\n height: this.winHeight - (this.showExchangeBar ? 140 : 94) + 'px'\n };\n }\n },\n watch: {\n code: function code(_code) {\n this.currentCode = _code;\n },\n currentCode: function currentCode(code) {\n this.$emit('input', code);\n },\n displayedCouponIndex: 'scrollToShowCoupon'\n },\n mounted: function mounted() {\n this.scrollToShowCoupon(this.displayedCouponIndex);\n },\n methods: {\n onClickExchangeButton: function onClickExchangeButton() {\n this.$emit('exchange', this.currentCode); // auto clear currentCode when not use vModel\n\n if (!this.code) {\n this.currentCode = '';\n }\n },\n // scroll to show specific coupon\n scrollToShowCoupon: function scrollToShowCoupon(index) {\n var _this = this;\n\n if (index === -1) {\n return;\n }\n\n this.$nextTick(function () {\n var _this$$refs = _this.$refs,\n card = _this$$refs.card,\n list = _this$$refs.list;\n /* istanbul ignore next */\n\n if (list && card && card[index]) {\n list.scrollTop = card[index].$el.offsetTop - 100;\n }\n });\n },\n genEmpty: function genEmpty() {\n var h = this.$createElement;\n return h(\"div\", {\n \"class\": bem('empty')\n }, [h(\"img\", {\n \"attrs\": {\n \"src\": this.emptyImage\n }\n }), h(\"p\", [t('empty')])]);\n },\n genExchangeButton: function genExchangeButton() {\n var h = this.$createElement;\n return h(Button, {\n \"attrs\": {\n \"plain\": true,\n \"type\": \"danger\",\n \"text\": this.exchangeButtonText || t('exchange'),\n \"loading\": this.exchangeButtonLoading,\n \"disabled\": this.buttonDisabled\n },\n \"class\": bem('exchange'),\n \"on\": {\n \"click\": this.onClickExchangeButton\n }\n });\n }\n },\n render: function render() {\n var _this2 = this;\n\n var h = arguments[0];\n var coupons = this.coupons,\n disabledCoupons = this.disabledCoupons;\n var count = this.showCount ? \" (\" + coupons.length + \")\" : '';\n var title = (this.enabledTitle || t('enable')) + count;\n var disabledCount = this.showCount ? \" (\" + disabledCoupons.length + \")\" : '';\n var disabledTitle = (this.disabledTitle || t('disabled')) + disabledCount;\n var ExchangeBar = this.showExchangeBar && h(\"div\", {\n \"class\": bem('exchange-bar')\n }, [h(Field, {\n \"attrs\": {\n \"clearable\": true,\n \"border\": false,\n \"placeholder\": this.inputPlaceholder || t('placeholder'),\n \"maxlength\": \"20\"\n },\n \"class\": bem('field'),\n \"model\": {\n value: _this2.currentCode,\n callback: function callback($$v) {\n _this2.currentCode = $$v;\n }\n }\n }), this.genExchangeButton()]);\n\n var onChange = function onChange(index) {\n return function () {\n return _this2.$emit('change', index);\n };\n };\n\n var CouponTab = h(Tab, {\n \"attrs\": {\n \"title\": title\n }\n }, [h(\"div\", {\n \"class\": bem('list', {\n 'with-bottom': this.showCloseButton\n }),\n \"style\": this.listStyle\n }, [coupons.map(function (coupon, index) {\n return h(Coupon, {\n \"ref\": \"card\",\n \"key\": coupon.id,\n \"attrs\": {\n \"coupon\": coupon,\n \"currency\": _this2.currency,\n \"chosen\": index === _this2.chosenCoupon\n },\n \"nativeOn\": {\n \"click\": onChange(index)\n }\n });\n }), !coupons.length && this.genEmpty()])]);\n var DisabledCouponTab = h(Tab, {\n \"attrs\": {\n \"title\": disabledTitle\n }\n }, [h(\"div\", {\n \"class\": bem('list', {\n 'with-bottom': this.showCloseButton\n }),\n \"style\": this.listStyle\n }, [disabledCoupons.map(function (coupon) {\n return h(Coupon, {\n \"attrs\": {\n \"disabled\": true,\n \"coupon\": coupon,\n \"currency\": _this2.currency\n },\n \"key\": coupon.id\n });\n }), !disabledCoupons.length && this.genEmpty()])]);\n return h(\"div\", {\n \"class\": bem()\n }, [ExchangeBar, h(Tabs, {\n \"class\": bem('tab'),\n \"attrs\": {\n \"border\": false\n },\n \"model\": {\n value: _this2.tab,\n callback: function callback($$v) {\n _this2.tab = $$v;\n }\n }\n }, [CouponTab, DisabledCouponTab]), h(\"div\", {\n \"class\": bem('bottom')\n }, [h(Button, {\n \"directives\": [{\n name: \"show\",\n value: this.showCloseButton\n }],\n \"attrs\": {\n \"round\": true,\n \"type\": \"danger\",\n \"block\": true,\n \"text\": this.closeButtonText || t('close')\n },\n \"class\": bem('close'),\n \"on\": {\n \"click\": onChange(-1)\n }\n })])]);\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { times } from './utils';\nimport { padZero } from '../utils/format/string';\nimport { pickerProps } from '../picker/shared';\nimport Picker from '../picker';\nexport var sharedProps = _extends({}, pickerProps, {\n value: null,\n filter: Function,\n columnsOrder: Array,\n showToolbar: {\n type: Boolean,\n default: true\n },\n formatter: {\n type: Function,\n default: function _default(type, value) {\n return value;\n }\n }\n});\nexport var TimePickerMixin = {\n data: function data() {\n return {\n innerValue: this.formatValue(this.value)\n };\n },\n computed: {\n originColumns: function originColumns() {\n var _this = this;\n\n return this.ranges.map(function (_ref) {\n var type = _ref.type,\n rangeArr = _ref.range;\n var values = times(rangeArr[1] - rangeArr[0] + 1, function (index) {\n var value = padZero(rangeArr[0] + index);\n return value;\n });\n\n if (_this.filter) {\n values = _this.filter(type, values);\n }\n\n return {\n type: type,\n values: values\n };\n });\n },\n columns: function columns() {\n var _this2 = this;\n\n return this.originColumns.map(function (column) {\n return {\n values: column.values.map(function (value) {\n return _this2.formatter(column.type, value);\n })\n };\n });\n }\n },\n watch: {\n columns: 'updateColumnValue',\n innerValue: function innerValue(val) {\n this.$emit('input', val);\n }\n },\n mounted: function mounted() {\n var _this3 = this;\n\n this.updateColumnValue();\n this.$nextTick(function () {\n _this3.updateInnerValue();\n });\n },\n methods: {\n // @exposed-api\n getPicker: function getPicker() {\n return this.$refs.picker;\n },\n onConfirm: function onConfirm() {\n this.$emit('confirm', this.innerValue);\n },\n onCancel: function onCancel() {\n this.$emit('cancel');\n }\n },\n render: function render() {\n var _this4 = this;\n\n var h = arguments[0];\n var props = {};\n Object.keys(pickerProps).forEach(function (key) {\n props[key] = _this4[key];\n });\n return h(Picker, {\n \"ref\": \"picker\",\n \"attrs\": {\n \"columns\": this.columns,\n \"readonly\": this.readonly\n },\n \"scopedSlots\": this.$scopedSlots,\n \"on\": {\n \"change\": this.onChange,\n \"confirm\": this.onConfirm,\n \"cancel\": this.onCancel\n },\n \"props\": _extends({}, props)\n });\n }\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createNamespace } from '../utils';\nimport { padZero } from '../utils/format/string';\nimport { range } from '../utils/format/number';\nimport { sharedProps, TimePickerMixin } from './shared';\n\nvar _createNamespace = createNamespace('time-picker'),\n createComponent = _createNamespace[0];\n\nexport default createComponent({\n mixins: [TimePickerMixin],\n props: _extends({}, sharedProps, {\n minHour: {\n type: [Number, String],\n default: 0\n },\n maxHour: {\n type: [Number, String],\n default: 23\n },\n minMinute: {\n type: [Number, String],\n default: 0\n },\n maxMinute: {\n type: [Number, String],\n default: 59\n }\n }),\n computed: {\n ranges: function ranges() {\n return [{\n type: 'hour',\n range: [+this.minHour, +this.maxHour]\n }, {\n type: 'minute',\n range: [+this.minMinute, +this.maxMinute]\n }];\n }\n },\n watch: {\n filter: 'updateInnerValue',\n minHour: 'updateInnerValue',\n maxHour: 'updateInnerValue',\n minMinute: 'updateInnerValue',\n maxMinute: 'updateInnerValue',\n value: function value(val) {\n val = this.formatValue(val);\n\n if (val !== this.innerValue) {\n this.innerValue = val;\n this.updateColumnValue();\n }\n }\n },\n methods: {\n formatValue: function formatValue(value) {\n if (!value) {\n value = padZero(this.minHour) + \":\" + padZero(this.minMinute);\n }\n\n var _value$split = value.split(':'),\n hour = _value$split[0],\n minute = _value$split[1];\n\n hour = padZero(range(hour, this.minHour, this.maxHour));\n minute = padZero(range(minute, this.minMinute, this.maxMinute));\n return hour + \":\" + minute;\n },\n updateInnerValue: function updateInnerValue() {\n var _this$getPicker$getIn = this.getPicker().getIndexes(),\n hourIndex = _this$getPicker$getIn[0],\n minuteIndex = _this$getPicker$getIn[1];\n\n var _this$originColumns = this.originColumns,\n hourColumn = _this$originColumns[0],\n minuteColumn = _this$originColumns[1];\n var hour = hourColumn.values[hourIndex] || hourColumn.values[0];\n var minute = minuteColumn.values[minuteIndex] || minuteColumn.values[0];\n this.innerValue = this.formatValue(hour + \":\" + minute);\n this.updateColumnValue();\n },\n onChange: function onChange(picker) {\n var _this = this;\n\n this.updateInnerValue();\n this.$nextTick(function () {\n _this.$nextTick(function () {\n _this.$emit('change', picker);\n });\n });\n },\n updateColumnValue: function updateColumnValue() {\n var _this2 = this;\n\n var formatter = this.formatter;\n var pair = this.innerValue.split(':');\n var values = [formatter('hour', pair[0]), formatter('minute', pair[1])];\n this.$nextTick(function () {\n _this2.getPicker().setValues(values);\n });\n }\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createNamespace } from '../utils';\nimport { isDate } from '../utils/validate/date';\nimport { padZero } from '../utils/format/string';\nimport { getTrueValue, getMonthEndDay } from './utils';\nimport { sharedProps, TimePickerMixin } from './shared';\nvar currentYear = new Date().getFullYear();\n\nvar _createNamespace = createNamespace('date-picker'),\n createComponent = _createNamespace[0];\n\nexport default createComponent({\n mixins: [TimePickerMixin],\n props: _extends({}, sharedProps, {\n type: {\n type: String,\n default: 'datetime'\n },\n minDate: {\n type: Date,\n default: function _default() {\n return new Date(currentYear - 10, 0, 1);\n },\n validator: isDate\n },\n maxDate: {\n type: Date,\n default: function _default() {\n return new Date(currentYear + 10, 11, 31);\n },\n validator: isDate\n }\n }),\n watch: {\n filter: 'updateInnerValue',\n minDate: 'updateInnerValue',\n maxDate: 'updateInnerValue',\n value: function value(val) {\n val = this.formatValue(val);\n\n if (val.valueOf() !== this.innerValue.valueOf()) {\n this.innerValue = val;\n }\n }\n },\n computed: {\n ranges: function ranges() {\n var _this$getBoundary = this.getBoundary('max', this.innerValue),\n maxYear = _this$getBoundary.maxYear,\n maxDate = _this$getBoundary.maxDate,\n maxMonth = _this$getBoundary.maxMonth,\n maxHour = _this$getBoundary.maxHour,\n maxMinute = _this$getBoundary.maxMinute;\n\n var _this$getBoundary2 = this.getBoundary('min', this.innerValue),\n minYear = _this$getBoundary2.minYear,\n minDate = _this$getBoundary2.minDate,\n minMonth = _this$getBoundary2.minMonth,\n minHour = _this$getBoundary2.minHour,\n minMinute = _this$getBoundary2.minMinute;\n\n var result = [{\n type: 'year',\n range: [minYear, maxYear]\n }, {\n type: 'month',\n range: [minMonth, maxMonth]\n }, {\n type: 'day',\n range: [minDate, maxDate]\n }, {\n type: 'hour',\n range: [minHour, maxHour]\n }, {\n type: 'minute',\n range: [minMinute, maxMinute]\n }];\n\n switch (this.type) {\n case 'date':\n result = result.slice(0, 3);\n break;\n\n case 'year-month':\n result = result.slice(0, 2);\n break;\n\n case 'month-day':\n result = result.slice(1, 3);\n break;\n\n case 'datehour':\n result = result.slice(0, 4);\n break;\n }\n\n if (this.columnsOrder) {\n var columnsOrder = this.columnsOrder.concat(result.map(function (column) {\n return column.type;\n }));\n result.sort(function (a, b) {\n return columnsOrder.indexOf(a.type) - columnsOrder.indexOf(b.type);\n });\n }\n\n return result;\n }\n },\n methods: {\n formatValue: function formatValue(value) {\n if (!isDate(value)) {\n value = this.minDate;\n }\n\n value = Math.max(value, this.minDate.getTime());\n value = Math.min(value, this.maxDate.getTime());\n return new Date(value);\n },\n getBoundary: function getBoundary(type, value) {\n var _ref;\n\n var boundary = this[type + \"Date\"];\n var year = boundary.getFullYear();\n var month = 1;\n var date = 1;\n var hour = 0;\n var minute = 0;\n\n if (type === 'max') {\n month = 12;\n date = getMonthEndDay(value.getFullYear(), value.getMonth() + 1);\n hour = 23;\n minute = 59;\n }\n\n if (value.getFullYear() === year) {\n month = boundary.getMonth() + 1;\n\n if (value.getMonth() + 1 === month) {\n date = boundary.getDate();\n\n if (value.getDate() === date) {\n hour = boundary.getHours();\n\n if (value.getHours() === hour) {\n minute = boundary.getMinutes();\n }\n }\n }\n }\n\n return _ref = {}, _ref[type + \"Year\"] = year, _ref[type + \"Month\"] = month, _ref[type + \"Date\"] = date, _ref[type + \"Hour\"] = hour, _ref[type + \"Minute\"] = minute, _ref;\n },\n updateInnerValue: function updateInnerValue() {\n var _this = this;\n\n var type = this.type;\n var indexes = this.getPicker().getIndexes();\n\n var getValue = function getValue(type) {\n var index = 0;\n\n _this.originColumns.forEach(function (column, columnIndex) {\n if (type === column.type) {\n index = columnIndex;\n }\n });\n\n var values = _this.originColumns[index].values;\n return getTrueValue(values[indexes[index]]);\n };\n\n var year;\n var month;\n var day;\n\n if (type === 'month-day') {\n year = this.innerValue.getFullYear();\n month = getValue('month');\n day = getValue('day');\n } else {\n year = getValue('year');\n month = getValue('month');\n day = type === 'year-month' ? 1 : getValue('day');\n }\n\n var maxDay = getMonthEndDay(year, month);\n day = day > maxDay ? maxDay : day;\n var hour = 0;\n var minute = 0;\n\n if (type === 'datehour') {\n hour = getValue('hour');\n }\n\n if (type === 'datetime') {\n hour = getValue('hour');\n minute = getValue('minute');\n }\n\n var value = new Date(year, month - 1, day, hour, minute);\n this.innerValue = this.formatValue(value);\n },\n onChange: function onChange(picker) {\n var _this2 = this;\n\n this.updateInnerValue();\n this.$nextTick(function () {\n _this2.$nextTick(function () {\n _this2.$emit('change', picker);\n });\n });\n },\n updateColumnValue: function updateColumnValue() {\n var _this3 = this;\n\n var value = this.innerValue;\n var formatter = this.formatter;\n var values = this.originColumns.map(function (column) {\n switch (column.type) {\n case 'year':\n return formatter('year', \"\" + value.getFullYear());\n\n case 'month':\n return formatter('month', padZero(value.getMonth() + 1));\n\n case 'day':\n return formatter('day', padZero(value.getDate()));\n\n case 'hour':\n return formatter('hour', padZero(value.getHours()));\n\n case 'minute':\n return formatter('minute', padZero(value.getMinutes()));\n\n default:\n // no default\n return null;\n }\n });\n this.$nextTick(function () {\n _this3.getPicker().setValues(values);\n });\n }\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createNamespace } from '../utils';\nimport TimePicker from './TimePicker';\nimport DatePicker from './DatePicker';\n\nvar _createNamespace = createNamespace('datetime-picker'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n props: _extends({}, TimePicker.props, DatePicker.props),\n methods: {\n // @exposed-api\n getPicker: function getPicker() {\n return this.$refs.root.getPicker();\n }\n },\n render: function render() {\n var h = arguments[0];\n var Component = this.type === 'time' ? TimePicker : DatePicker;\n return h(Component, {\n \"ref\": \"root\",\n \"class\": bem(),\n \"scopedSlots\": this.$scopedSlots,\n \"props\": _extends({}, this.$props),\n \"on\": _extends({}, this.$listeners)\n });\n }\n});","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace } from '../utils';\nimport { inherit } from '../utils/functional'; // Types\n\nvar _createNamespace = createNamespace('divider'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nfunction Divider(h, props, slots, ctx) {\n var _bem;\n\n return h(\"div\", _mergeJSXProps([{\n \"attrs\": {\n \"role\": \"separator\"\n },\n \"style\": {\n borderColor: props.borderColor\n },\n \"class\": bem((_bem = {\n dashed: props.dashed,\n hairline: props.hairline\n }, _bem[\"content-\" + props.contentPosition] = slots.default, _bem))\n }, inherit(ctx, true)]), [slots.default && slots.default()]);\n}\n\nDivider.props = {\n dashed: Boolean,\n hairline: {\n type: Boolean,\n default: true\n },\n contentPosition: {\n type: String,\n default: 'center'\n }\n};\nexport default createComponent(Divider);","// Utils\nimport { createNamespace } from '../utils';\nimport { on, off } from '../utils/dom/event'; // Mixins\n\nimport { PortalMixin } from '../mixins/portal';\nimport { ChildrenMixin } from '../mixins/relation'; // Components\n\nimport Cell from '../cell';\nimport Icon from '../icon';\nimport Popup from '../popup';\n\nvar _createNamespace = createNamespace('dropdown-item'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [PortalMixin({\n ref: 'wrapper'\n }), ChildrenMixin('vanDropdownMenu')],\n props: {\n value: null,\n title: String,\n disabled: Boolean,\n titleClass: String,\n options: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n lazyRender: {\n type: Boolean,\n default: true\n }\n },\n data: function data() {\n return {\n transition: true,\n showPopup: false,\n showWrapper: false\n };\n },\n computed: {\n displayTitle: function displayTitle() {\n var _this = this;\n\n if (this.title) {\n return this.title;\n }\n\n var match = this.options.filter(function (option) {\n return option.value === _this.value;\n });\n return match.length ? match[0].text : '';\n }\n },\n watch: {\n showPopup: function showPopup(val) {\n this.bindScroll(val);\n }\n },\n beforeCreate: function beforeCreate() {\n var _this2 = this;\n\n var createEmitter = function createEmitter(eventName) {\n return function () {\n return _this2.$emit(eventName);\n };\n };\n\n this.onOpen = createEmitter('open');\n this.onClose = createEmitter('close');\n this.onOpened = createEmitter('opened');\n },\n methods: {\n // @exposed-api\n toggle: function toggle(show, options) {\n if (show === void 0) {\n show = !this.showPopup;\n }\n\n if (options === void 0) {\n options = {};\n }\n\n if (show === this.showPopup) {\n return;\n }\n\n this.transition = !options.immediate;\n this.showPopup = show;\n\n if (show) {\n this.parent.updateOffset();\n this.showWrapper = true;\n }\n },\n bindScroll: function bindScroll(bind) {\n var scroller = this.parent.scroller;\n var action = bind ? on : off;\n action(scroller, 'scroll', this.onScroll, true);\n },\n onScroll: function onScroll() {\n this.parent.updateOffset();\n },\n onClickWrapper: function onClickWrapper(event) {\n // prevent being identified as clicking outside and closed when use get-contaienr\n if (this.getContainer) {\n event.stopPropagation();\n }\n }\n },\n render: function render() {\n var _this3 = this;\n\n var h = arguments[0];\n var _this$parent = this.parent,\n zIndex = _this$parent.zIndex,\n offset = _this$parent.offset,\n overlay = _this$parent.overlay,\n duration = _this$parent.duration,\n direction = _this$parent.direction,\n activeColor = _this$parent.activeColor,\n closeOnClickOverlay = _this$parent.closeOnClickOverlay;\n var Options = this.options.map(function (option) {\n var active = option.value === _this3.value;\n return h(Cell, {\n \"attrs\": {\n \"clickable\": true,\n \"icon\": option.icon,\n \"title\": option.text\n },\n \"key\": option.value,\n \"class\": bem('option', {\n active: active\n }),\n \"style\": {\n color: active ? activeColor : ''\n },\n \"on\": {\n \"click\": function click() {\n _this3.showPopup = false;\n\n if (option.value !== _this3.value) {\n _this3.$emit('input', option.value);\n\n _this3.$emit('change', option.value);\n }\n }\n }\n }, [active && h(Icon, {\n \"class\": bem('icon'),\n \"attrs\": {\n \"color\": activeColor,\n \"name\": \"success\"\n }\n })]);\n });\n var style = {\n zIndex: zIndex\n };\n\n if (direction === 'down') {\n style.top = offset + \"px\";\n } else {\n style.bottom = offset + \"px\";\n }\n\n return h(\"div\", [h(\"div\", {\n \"directives\": [{\n name: \"show\",\n value: this.showWrapper\n }],\n \"ref\": \"wrapper\",\n \"style\": style,\n \"class\": bem([direction]),\n \"on\": {\n \"click\": this.onClickWrapper\n }\n }, [h(Popup, {\n \"attrs\": {\n \"overlay\": overlay,\n \"position\": direction === 'down' ? 'top' : 'bottom',\n \"duration\": this.transition ? duration : 0,\n \"lazyRender\": this.lazyRender,\n \"overlayStyle\": {\n position: 'absolute'\n },\n \"closeOnClickOverlay\": closeOnClickOverlay\n },\n \"class\": bem('content'),\n \"on\": {\n \"open\": this.onOpen,\n \"close\": this.onClose,\n \"opened\": this.onOpened,\n \"closed\": function closed() {\n _this3.showWrapper = false;\n\n _this3.$emit('closed');\n }\n },\n \"model\": {\n value: _this3.showPopup,\n callback: function callback($$v) {\n _this3.showPopup = $$v;\n }\n }\n }, [Options, this.slots('default')])])]);\n }\n});","/**\n * Listen to click outside event\n */\nimport { on, off } from '../utils/dom/event';\nexport var ClickOutsideMixin = function ClickOutsideMixin(config) {\n return {\n props: {\n closeOnClickOutside: {\n type: Boolean,\n default: true\n }\n },\n data: function data() {\n var _this = this;\n\n var clickOutsideHandler = function clickOutsideHandler(event) {\n if (_this.closeOnClickOutside && !_this.$el.contains(event.target)) {\n _this[config.method]();\n }\n };\n\n return {\n clickOutsideHandler: clickOutsideHandler\n };\n },\n mounted: function mounted() {\n on(document, config.event, this.clickOutsideHandler);\n },\n beforeDestroy: function beforeDestroy() {\n off(document, config.event, this.clickOutsideHandler);\n }\n };\n};","// Utils\nimport { createNamespace, isDef } from '../utils';\nimport { getScroller } from '../utils/dom/scroll'; // Mixins\n\nimport { ParentMixin } from '../mixins/relation';\nimport { ClickOutsideMixin } from '../mixins/click-outside';\n\nvar _createNamespace = createNamespace('dropdown-menu'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ParentMixin('vanDropdownMenu'), ClickOutsideMixin({\n event: 'click',\n method: 'onClickOutside'\n })],\n props: {\n zIndex: [Number, String],\n activeColor: String,\n overlay: {\n type: Boolean,\n default: true\n },\n duration: {\n type: [Number, String],\n default: 0.2\n },\n direction: {\n type: String,\n default: 'down'\n },\n closeOnClickOverlay: {\n type: Boolean,\n default: true\n }\n },\n data: function data() {\n return {\n offset: 0\n };\n },\n computed: {\n scroller: function scroller() {\n return getScroller(this.$el);\n },\n opened: function opened() {\n return this.children.some(function (item) {\n return item.showWrapper;\n });\n },\n barStyle: function barStyle() {\n if (this.opened && isDef(this.zIndex)) {\n return {\n zIndex: 1 + this.zIndex\n };\n }\n }\n },\n methods: {\n updateOffset: function updateOffset() {\n if (!this.$refs.bar) {\n return;\n }\n\n var rect = this.$refs.bar.getBoundingClientRect();\n\n if (this.direction === 'down') {\n this.offset = rect.bottom;\n } else {\n this.offset = window.innerHeight - rect.top;\n }\n },\n toggleItem: function toggleItem(active) {\n this.children.forEach(function (item, index) {\n if (index === active) {\n item.toggle();\n } else if (item.showPopup) {\n item.toggle(false, {\n immediate: true\n });\n }\n });\n },\n onClickOutside: function onClickOutside() {\n this.children.forEach(function (item) {\n item.toggle(false);\n });\n }\n },\n render: function render() {\n var _this = this;\n\n var h = arguments[0];\n var Titles = this.children.map(function (item, index) {\n return h(\"div\", {\n \"attrs\": {\n \"role\": \"button\",\n \"tabindex\": item.disabled ? -1 : 0\n },\n \"class\": bem('item', {\n disabled: item.disabled\n }),\n \"on\": {\n \"click\": function click() {\n if (!item.disabled) {\n _this.toggleItem(index);\n }\n }\n }\n }, [h(\"span\", {\n \"class\": [bem('title', {\n active: item.showPopup,\n down: item.showPopup === (_this.direction === 'down')\n }), item.titleClass],\n \"style\": {\n color: item.showPopup ? _this.activeColor : ''\n }\n }, [h(\"div\", {\n \"class\": \"van-ellipsis\"\n }, [item.slots('title') || item.displayTitle])])]);\n });\n return h(\"div\", {\n \"class\": bem()\n }, [h(\"div\", {\n \"ref\": \"bar\",\n \"style\": this.barStyle,\n \"class\": bem('bar', {\n opened: this.opened\n })\n }, [Titles]), this.slots('default')]);\n }\n});","export default {\n render: function render() {\n var h = arguments[0];\n\n var genStop = function genStop(color, offset, opacity) {\n return h(\"stop\", {\n \"attrs\": {\n \"stop-color\": color,\n \"offset\": offset + \"%\",\n \"stop-opacity\": opacity\n }\n });\n };\n\n return h(\"svg\", {\n \"attrs\": {\n \"viewBox\": \"0 0 160 160\",\n \"xmlns\": \"http://www.w3.org/2000/svg\"\n }\n }, [h(\"defs\", [h(\"linearGradient\", {\n \"attrs\": {\n \"id\": \"c\",\n \"x1\": \"64.022%\",\n \"y1\": \"100%\",\n \"x2\": \"64.022%\",\n \"y2\": \"0%\"\n }\n }, [genStop('#FFF', 0, 0.5), genStop('#F2F3F5', 100)]), h(\"linearGradient\", {\n \"attrs\": {\n \"id\": \"d\",\n \"x1\": \"64.022%\",\n \"y1\": \"96.956%\",\n \"x2\": \"64.022%\",\n \"y2\": \"0%\"\n }\n }, [genStop('#F2F3F5', 0, 0.3), genStop('#F2F3F5', 100)]), h(\"linearGradient\", {\n \"attrs\": {\n \"id\": \"h\",\n \"x1\": \"50%\",\n \"y1\": \"0%\",\n \"x2\": \"50%\",\n \"y2\": \"84.459%\"\n }\n }, [genStop('#EBEDF0', 0), genStop('#DCDEE0', 100, 0)]), h(\"linearGradient\", {\n \"attrs\": {\n \"id\": \"i\",\n \"x1\": \"100%\",\n \"y1\": \"0%\",\n \"x2\": \"100%\",\n \"y2\": \"100%\"\n }\n }, [genStop('#EAEDF0', 0), genStop('#DCDEE0', 100)]), h(\"linearGradient\", {\n \"attrs\": {\n \"id\": \"k\",\n \"x1\": \"100%\",\n \"y1\": \"100%\",\n \"x2\": \"100%\",\n \"y2\": \"0%\"\n }\n }, [genStop('#EAEDF0', 0), genStop('#DCDEE0', 100)]), h(\"linearGradient\", {\n \"attrs\": {\n \"id\": \"m\",\n \"x1\": \"0%\",\n \"y1\": \"43.982%\",\n \"x2\": \"100%\",\n \"y2\": \"54.703%\"\n }\n }, [genStop('#EAEDF0', 0), genStop('#DCDEE0', 100)]), h(\"linearGradient\", {\n \"attrs\": {\n \"id\": \"n\",\n \"x1\": \"94.535%\",\n \"y1\": \"43.837%\",\n \"x2\": \"5.465%\",\n \"y2\": \"54.948%\"\n }\n }, [genStop('#EAEDF0', 0), genStop('#DCDEE0', 100)]), h(\"radialGradient\", {\n \"attrs\": {\n \"id\": \"g\",\n \"cx\": \"50%\",\n \"cy\": \"0%\",\n \"fx\": \"50%\",\n \"fy\": \"0%\",\n \"r\": \"100%\",\n \"gradientTransform\": \"matrix(0 1 -.54835 0 .5 -.5)\"\n }\n }, [genStop('#EBEDF0', 0), genStop('#FFF', 100, 0)])]), h(\"g\", {\n \"attrs\": {\n \"fill\": \"none\",\n \"fill-rule\": \"evenodd\"\n }\n }, [h(\"g\", {\n \"attrs\": {\n \"opacity\": \".8\"\n }\n }, [h(\"path\", {\n \"attrs\": {\n \"d\": \"M0 124V46h20v20h14v58H0z\",\n \"fill\": \"url(#c)\",\n \"transform\": \"matrix(-1 0 0 1 36 7)\"\n }\n }), h(\"path\", {\n \"attrs\": {\n \"d\": \"M40.5 5a8.504 8.504 0 018.13 6.009l.12-.005L49 11a8 8 0 11-1 15.938V27H34v-.174a6.5 6.5 0 11-1.985-12.808A8.5 8.5 0 0140.5 5z\",\n \"fill\": \"url(#d)\",\n \"transform\": \"translate(2 7)\"\n }\n }), h(\"path\", {\n \"attrs\": {\n \"d\": \"M96.016 0a4.108 4.108 0 013.934 2.868l.179-.004c2.138 0 3.871 1.71 3.871 3.818 0 2.109-1.733 3.818-3.871 3.818-.164 0-.325-.01-.484-.03v.03h-6.774v-.083a3.196 3.196 0 01-.726.083C90.408 10.5 89 9.111 89 7.398c0-1.636 1.284-2.976 2.911-3.094a3.555 3.555 0 01-.008-.247c0-2.24 1.842-4.057 4.113-4.057z\",\n \"fill\": \"url(#d)\",\n \"transform\": \"translate(2 7)\"\n }\n }), h(\"path\", {\n \"attrs\": {\n \"d\": \"M121 8h22.231v14H152v77.37h-31V8z\",\n \"fill\": \"url(#c)\",\n \"transform\": \"translate(2 7)\"\n }\n })]), h(\"path\", {\n \"attrs\": {\n \"fill\": \"url(#g)\",\n \"d\": \"M0 139h160v21H0z\"\n }\n }), h(\"path\", {\n \"attrs\": {\n \"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\",\n \"fill\": \"url(#h)\",\n \"fill-rule\": \"nonzero\",\n \"transform\": \"translate(43 36)\"\n }\n }), h(\"g\", {\n \"attrs\": {\n \"opacity\": \".6\",\n \"stroke-linecap\": \"round\",\n \"stroke-width\": \"7\"\n }\n }, [h(\"path\", {\n \"attrs\": {\n \"d\": \"M20.875 11.136a18.868 18.868 0 00-5.284 13.121c0 5.094 2.012 9.718 5.284 13.12\",\n \"stroke\": \"url(#i)\",\n \"transform\": \"translate(43 36)\"\n }\n }), h(\"path\", {\n \"attrs\": {\n \"d\": \"M9.849 0C3.756 6.225 0 14.747 0 24.146c0 9.398 3.756 17.92 9.849 24.145\",\n \"stroke\": \"url(#i)\",\n \"transform\": \"translate(43 36)\"\n }\n }), h(\"path\", {\n \"attrs\": {\n \"d\": \"M57.625 11.136a18.868 18.868 0 00-5.284 13.121c0 5.094 2.012 9.718 5.284 13.12\",\n \"stroke\": \"url(#k)\",\n \"transform\": \"rotate(-180 76.483 42.257)\"\n }\n }), h(\"path\", {\n \"attrs\": {\n \"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\",\n \"stroke\": \"url(#k)\",\n \"transform\": \"rotate(-180 89.791 42.146)\"\n }\n })]), h(\"g\", {\n \"attrs\": {\n \"transform\": \"translate(31 105)\",\n \"fill-rule\": \"nonzero\"\n }\n }, [h(\"rect\", {\n \"attrs\": {\n \"fill\": \"url(#m)\",\n \"width\": \"98\",\n \"height\": \"34\",\n \"rx\": \"2\"\n }\n }), h(\"rect\", {\n \"attrs\": {\n \"fill\": \"#FFF\",\n \"x\": \"9\",\n \"y\": \"8\",\n \"width\": \"80\",\n \"height\": \"18\",\n \"rx\": \"1.114\"\n }\n }), h(\"rect\", {\n \"attrs\": {\n \"fill\": \"url(#n)\",\n \"x\": \"15\",\n \"y\": \"12\",\n \"width\": \"18\",\n \"height\": \"6\",\n \"rx\": \"1.114\"\n }\n })])])]);\n }\n};","import { addUnit, createNamespace } from '../utils';\nimport Network from './Network';\n\nvar _createNamespace = createNamespace('empty'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nvar PRESETS = ['error', 'search', 'default'];\nexport default createComponent({\n props: {\n imageSize: [Number, String],\n description: String,\n image: {\n type: String,\n default: 'default'\n }\n },\n methods: {\n genImageContent: function genImageContent() {\n var h = this.$createElement;\n var slots = this.slots('image');\n\n if (slots) {\n return slots;\n }\n\n if (this.image === 'network') {\n return h(Network);\n }\n\n var image = this.image;\n\n if (PRESETS.indexOf(image) !== -1) {\n image = \"https://img01.yzcdn.cn/vant/empty-image-\" + image + \".png\";\n }\n\n return h(\"img\", {\n \"attrs\": {\n \"src\": image\n }\n });\n },\n genImage: function genImage() {\n var h = this.$createElement;\n var imageStyle = {\n width: addUnit(this.imageSize),\n height: addUnit(this.imageSize)\n };\n return h(\"div\", {\n \"class\": bem('image'),\n \"style\": imageStyle\n }, [this.genImageContent()]);\n },\n genDescription: function genDescription() {\n var h = this.$createElement;\n var description = this.slots('description') || this.description;\n\n if (description) {\n return h(\"p\", {\n \"class\": bem('description')\n }, [description]);\n }\n },\n genBottom: function genBottom() {\n var h = this.$createElement;\n var slot = this.slots();\n\n if (slot) {\n return h(\"div\", {\n \"class\": bem('bottom')\n }, [slot]);\n }\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"class\": bem()\n }, [this.genImage(), this.genDescription(), this.genBottom()]);\n }\n});","import { createNamespace } from '../utils';\nimport { sortChildren } from '../utils/vnodes';\n\nvar _createNamespace = createNamespace('form'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n props: {\n colon: Boolean,\n disabled: Boolean,\n readonly: Boolean,\n labelWidth: [Number, String],\n labelAlign: String,\n inputAlign: String,\n scrollToError: Boolean,\n validateFirst: Boolean,\n errorMessageAlign: String,\n submitOnEnter: {\n type: Boolean,\n default: true\n },\n validateTrigger: {\n type: String,\n default: 'onBlur'\n },\n showError: {\n type: Boolean,\n default: true\n },\n showErrorMessage: {\n type: Boolean,\n default: true\n }\n },\n provide: function provide() {\n return {\n vanForm: this\n };\n },\n data: function data() {\n return {\n fields: []\n };\n },\n methods: {\n getFieldsByNames: function getFieldsByNames(names) {\n if (names) {\n return this.fields.filter(function (field) {\n return names.indexOf(field.name) !== -1;\n });\n }\n\n return this.fields;\n },\n validateSeq: function validateSeq(names) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n var errors = [];\n\n var fields = _this.getFieldsByNames(names);\n\n fields.reduce(function (promise, field) {\n return promise.then(function () {\n if (!errors.length) {\n return field.validate().then(function (error) {\n if (error) {\n errors.push(error);\n }\n });\n }\n });\n }, Promise.resolve()).then(function () {\n if (errors.length) {\n reject(errors);\n } else {\n resolve();\n }\n });\n });\n },\n validateFields: function validateFields(names) {\n var _this2 = this;\n\n return new Promise(function (resolve, reject) {\n var fields = _this2.getFieldsByNames(names);\n\n Promise.all(fields.map(function (item) {\n return item.validate();\n })).then(function (errors) {\n errors = errors.filter(function (item) {\n return item;\n });\n\n if (errors.length) {\n reject(errors);\n } else {\n resolve();\n }\n });\n });\n },\n // @exposed-api\n validate: function validate(name) {\n if (name && !Array.isArray(name)) {\n return this.validateField(name);\n }\n\n return this.validateFirst ? this.validateSeq(name) : this.validateFields(name);\n },\n validateField: function validateField(name) {\n var matched = this.fields.filter(function (item) {\n return item.name === name;\n });\n\n if (matched.length) {\n return new Promise(function (resolve, reject) {\n matched[0].validate().then(function (error) {\n if (error) {\n reject(error);\n } else {\n resolve();\n }\n });\n });\n }\n\n return Promise.reject();\n },\n // @exposed-api\n resetValidation: function resetValidation(name) {\n if (name && !Array.isArray(name)) {\n name = [name];\n }\n\n var fields = this.getFieldsByNames(name);\n fields.forEach(function (item) {\n item.resetValidation();\n });\n },\n // @exposed-api\n scrollToField: function scrollToField(name, options) {\n this.fields.some(function (item) {\n if (item.name === name) {\n item.$el.scrollIntoView(options);\n return true;\n }\n\n return false;\n });\n },\n addField: function addField(field) {\n this.fields.push(field);\n sortChildren(this.fields, this);\n },\n removeField: function removeField(field) {\n this.fields = this.fields.filter(function (item) {\n return item !== field;\n });\n },\n getValues: function getValues() {\n return this.fields.reduce(function (form, field) {\n form[field.name] = field.formValue;\n return form;\n }, {});\n },\n onSubmit: function onSubmit(event) {\n event.preventDefault();\n this.submit();\n },\n // @exposed-api\n submit: function submit() {\n var _this3 = this;\n\n var values = this.getValues();\n this.validate().then(function () {\n _this3.$emit('submit', values);\n }).catch(function (errors) {\n _this3.$emit('failed', {\n values: values,\n errors: errors\n });\n\n if (_this3.scrollToError) {\n _this3.scrollToField(errors[0].name);\n }\n });\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"form\", {\n \"class\": bem(),\n \"on\": {\n \"submit\": this.onSubmit\n }\n }, [this.slots()]);\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createNamespace } from '../utils';\nimport { route, routeProps } from '../utils/router';\nimport { ChildrenMixin } from '../mixins/relation';\nimport Info from '../info';\nimport Icon from '../icon';\n\nvar _createNamespace = createNamespace('goods-action-icon'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ChildrenMixin('vanGoodsAction')],\n props: _extends({}, routeProps, {\n dot: Boolean,\n text: String,\n icon: String,\n color: String,\n // @deprecated\n info: [Number, String],\n badge: [Number, String],\n iconClass: null\n }),\n methods: {\n onClick: function onClick(event) {\n this.$emit('click', event);\n route(this.$router, this);\n },\n genIcon: function genIcon() {\n var _this$badge;\n\n var h = this.$createElement;\n var slot = this.slots('icon');\n var info = (_this$badge = this.badge) != null ? _this$badge : this.info;\n\n if (process.env.NODE_ENV === 'development' && this.info) {\n console.warn('[Vant] GoodsActionIcon: \"info\" prop is deprecated, use \"badge\" prop instead.');\n }\n\n if (slot) {\n return h(\"div\", {\n \"class\": bem('icon')\n }, [slot, h(Info, {\n \"attrs\": {\n \"dot\": this.dot,\n \"info\": info\n }\n })]);\n }\n\n return h(Icon, {\n \"class\": [bem('icon'), this.iconClass],\n \"attrs\": {\n \"tag\": \"div\",\n \"dot\": this.dot,\n \"info\": info,\n \"name\": this.icon,\n \"color\": this.color\n }\n });\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"attrs\": {\n \"role\": \"button\",\n \"tabindex\": \"0\"\n },\n \"class\": bem(),\n \"on\": {\n \"click\": this.onClick\n }\n }, [this.genIcon(), this.slots() || this.text]);\n }\n});","import { createNamespace, addUnit } from '../utils';\nimport { BORDER_TOP } from '../utils/constant';\nimport { ParentMixin } from '../mixins/relation';\n\nvar _createNamespace = createNamespace('grid'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ParentMixin('vanGrid')],\n props: {\n square: Boolean,\n gutter: [Number, String],\n iconSize: [Number, String],\n direction: String,\n clickable: Boolean,\n columnNum: {\n type: [Number, String],\n default: 4\n },\n center: {\n type: Boolean,\n default: true\n },\n border: {\n type: Boolean,\n default: true\n }\n },\n computed: {\n style: function style() {\n var gutter = this.gutter;\n\n if (gutter) {\n return {\n paddingLeft: addUnit(gutter)\n };\n }\n }\n },\n render: function render() {\n var _ref;\n\n var h = arguments[0];\n return h(\"div\", {\n \"style\": this.style,\n \"class\": [bem(), (_ref = {}, _ref[BORDER_TOP] = this.border && !this.gutter, _ref)]\n }, [this.slots()]);\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// Utils\nimport { createNamespace, addUnit } from '../utils';\nimport { BORDER } from '../utils/constant';\nimport { route, routeProps } from '../utils/router'; // Mixins\n\nimport { ChildrenMixin } from '../mixins/relation'; // Components\n\nimport Info from '../info';\nimport Icon from '../icon';\n\nvar _createNamespace = createNamespace('grid-item'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ChildrenMixin('vanGrid')],\n props: _extends({}, routeProps, {\n dot: Boolean,\n text: String,\n icon: String,\n iconPrefix: String,\n // @deprecated\n info: [Number, String],\n badge: [Number, String]\n }),\n computed: {\n style: function style() {\n var _this$parent = this.parent,\n square = _this$parent.square,\n gutter = _this$parent.gutter,\n columnNum = _this$parent.columnNum;\n var percent = 100 / columnNum + \"%\";\n var style = {\n flexBasis: percent\n };\n\n if (square) {\n style.paddingTop = percent;\n } else if (gutter) {\n var gutterValue = addUnit(gutter);\n style.paddingRight = gutterValue;\n\n if (this.index >= columnNum) {\n style.marginTop = gutterValue;\n }\n }\n\n return style;\n },\n contentStyle: function contentStyle() {\n var _this$parent2 = this.parent,\n square = _this$parent2.square,\n gutter = _this$parent2.gutter;\n\n if (square && gutter) {\n var gutterValue = addUnit(gutter);\n return {\n right: gutterValue,\n bottom: gutterValue,\n height: 'auto'\n };\n }\n }\n },\n methods: {\n onClick: function onClick(event) {\n this.$emit('click', event);\n route(this.$router, this);\n },\n genIcon: function genIcon() {\n var _this$badge;\n\n var h = this.$createElement;\n var iconSlot = this.slots('icon');\n var info = (_this$badge = this.badge) != null ? _this$badge : this.info;\n\n if (process.env.NODE_ENV === 'development' && this.info) {\n console.warn('[Vant] GridItem: \"info\" prop is deprecated, use \"badge\" prop instead.');\n }\n\n if (iconSlot) {\n return h(\"div\", {\n \"class\": bem('icon-wrapper')\n }, [iconSlot, h(Info, {\n \"attrs\": {\n \"dot\": this.dot,\n \"info\": info\n }\n })]);\n }\n\n if (this.icon) {\n return h(Icon, {\n \"attrs\": {\n \"name\": this.icon,\n \"dot\": this.dot,\n \"badge\": info,\n \"size\": this.parent.iconSize,\n \"classPrefix\": this.iconPrefix\n },\n \"class\": bem('icon')\n });\n }\n },\n getText: function getText() {\n var h = this.$createElement;\n var textSlot = this.slots('text');\n\n if (textSlot) {\n return textSlot;\n }\n\n if (this.text) {\n return h(\"span\", {\n \"class\": bem('text')\n }, [this.text]);\n }\n },\n genContent: function genContent() {\n var slot = this.slots();\n\n if (slot) {\n return slot;\n }\n\n return [this.genIcon(), this.getText()];\n }\n },\n render: function render() {\n var _ref;\n\n var h = arguments[0];\n var _this$parent3 = this.parent,\n center = _this$parent3.center,\n border = _this$parent3.border,\n square = _this$parent3.square,\n gutter = _this$parent3.gutter,\n direction = _this$parent3.direction,\n clickable = _this$parent3.clickable;\n return h(\"div\", {\n \"class\": [bem({\n square: square\n })],\n \"style\": this.style\n }, [h(\"div\", {\n \"style\": this.contentStyle,\n \"attrs\": {\n \"role\": clickable ? 'button' : null,\n \"tabindex\": clickable ? 0 : null\n },\n \"class\": [bem('content', [direction, {\n center: center,\n square: square,\n clickable: clickable,\n surround: border && gutter\n }]), (_ref = {}, _ref[BORDER] = border, _ref)],\n \"on\": {\n \"click\": this.onClick\n }\n }, [this.genContent()])]);\n }\n});","import { createNamespace } from '../utils';\n\nvar _createNamespace = createNamespace('image-preview'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport { createComponent, bem };","// Utils\nimport { createNamespace } from '../utils';\nimport { isHidden } from '../utils/dom/style';\nimport { preventDefault } from '../utils/dom/event';\nimport { doubleRaf } from '../utils/dom/raf';\nimport { range } from '../utils/format/number'; // Mixins\n\nimport { TouchMixin } from '../mixins/touch';\nimport { ParentMixin } from '../mixins/relation';\nimport { BindEventMixin } from '../mixins/bind-event';\n\nvar _createNamespace = createNamespace('swipe'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [TouchMixin, ParentMixin('vanSwipe'), BindEventMixin(function (bind, isBind) {\n bind(window, 'resize', this.resize, true);\n bind(window, 'orientationchange', this.resize, true);\n bind(window, 'visibilitychange', this.onVisibilityChange);\n\n if (isBind) {\n this.initialize();\n } else {\n this.clear();\n }\n })],\n props: {\n width: [Number, String],\n height: [Number, String],\n autoplay: [Number, String],\n vertical: Boolean,\n lazyRender: Boolean,\n indicatorColor: String,\n loop: {\n type: Boolean,\n default: true\n },\n duration: {\n type: [Number, String],\n default: 500\n },\n touchable: {\n type: Boolean,\n default: true\n },\n initialSwipe: {\n type: [Number, String],\n default: 0\n },\n showIndicators: {\n type: Boolean,\n default: true\n },\n stopPropagation: {\n type: Boolean,\n default: true\n }\n },\n data: function data() {\n return {\n rect: null,\n offset: 0,\n active: 0,\n deltaX: 0,\n deltaY: 0,\n swiping: false,\n computedWidth: 0,\n computedHeight: 0\n };\n },\n watch: {\n children: function children() {\n this.initialize();\n },\n initialSwipe: function initialSwipe() {\n this.initialize();\n },\n autoplay: function autoplay(_autoplay) {\n if (_autoplay > 0) {\n this.autoPlay();\n } else {\n this.clear();\n }\n }\n },\n computed: {\n count: function count() {\n return this.children.length;\n },\n maxCount: function maxCount() {\n return Math.ceil(Math.abs(this.minOffset) / this.size);\n },\n delta: function delta() {\n return this.vertical ? this.deltaY : this.deltaX;\n },\n size: function size() {\n return this[this.vertical ? 'computedHeight' : 'computedWidth'];\n },\n trackSize: function trackSize() {\n return this.count * this.size;\n },\n activeIndicator: function activeIndicator() {\n return (this.active + this.count) % this.count;\n },\n isCorrectDirection: function isCorrectDirection() {\n var expect = this.vertical ? 'vertical' : 'horizontal';\n return this.direction === expect;\n },\n trackStyle: function trackStyle() {\n var style = {\n transitionDuration: (this.swiping ? 0 : this.duration) + \"ms\",\n transform: \"translate\" + (this.vertical ? 'Y' : 'X') + \"(\" + this.offset + \"px)\"\n };\n\n if (this.size) {\n var mainAxis = this.vertical ? 'height' : 'width';\n var crossAxis = this.vertical ? 'width' : 'height';\n style[mainAxis] = this.trackSize + \"px\";\n style[crossAxis] = this[crossAxis] ? this[crossAxis] + \"px\" : '';\n }\n\n return style;\n },\n indicatorStyle: function indicatorStyle() {\n return {\n backgroundColor: this.indicatorColor\n };\n },\n minOffset: function minOffset() {\n return (this.vertical ? this.rect.height : this.rect.width) - this.size * this.count;\n }\n },\n mounted: function mounted() {\n this.bindTouchEvent(this.$refs.track);\n },\n methods: {\n // initialize swipe position\n initialize: function initialize(active) {\n if (active === void 0) {\n active = +this.initialSwipe;\n }\n\n if (!this.$el || isHidden(this.$el)) {\n return;\n }\n\n clearTimeout(this.timer);\n var rect = this.$el.getBoundingClientRect();\n this.rect = rect;\n this.swiping = true;\n this.active = active;\n this.computedWidth = +this.width || rect.width;\n this.computedHeight = +this.height || rect.height;\n this.offset = this.getTargetOffset(active);\n this.children.forEach(function (swipe) {\n swipe.offset = 0;\n });\n this.autoPlay();\n },\n // @exposed-api\n resize: function resize() {\n this.initialize(this.activeIndicator);\n },\n onVisibilityChange: function onVisibilityChange() {\n if (document.hidden) {\n this.clear();\n } else {\n this.autoPlay();\n }\n },\n onTouchStart: function onTouchStart(event) {\n if (!this.touchable) return;\n this.clear();\n this.touchStartTime = Date.now();\n this.touchStart(event);\n this.correctPosition();\n },\n onTouchMove: function onTouchMove(event) {\n if (!this.touchable || !this.swiping) return;\n this.touchMove(event);\n\n if (this.isCorrectDirection) {\n preventDefault(event, this.stopPropagation);\n this.move({\n offset: this.delta\n });\n }\n },\n onTouchEnd: function onTouchEnd() {\n if (!this.touchable || !this.swiping) return;\n var size = this.size,\n delta = this.delta;\n var duration = Date.now() - this.touchStartTime;\n var speed = delta / duration;\n var shouldSwipe = Math.abs(speed) > 0.25 || Math.abs(delta) > size / 2;\n\n if (shouldSwipe && this.isCorrectDirection) {\n var offset = this.vertical ? this.offsetY : this.offsetX;\n var pace = 0;\n\n if (this.loop) {\n pace = offset > 0 ? delta > 0 ? -1 : 1 : 0;\n } else {\n pace = -Math[delta > 0 ? 'ceil' : 'floor'](delta / size);\n }\n\n this.move({\n pace: pace,\n emitChange: true\n });\n } else if (delta) {\n this.move({\n pace: 0\n });\n }\n\n this.swiping = false;\n this.autoPlay();\n },\n getTargetActive: function getTargetActive(pace) {\n var active = this.active,\n count = this.count,\n maxCount = this.maxCount;\n\n if (pace) {\n if (this.loop) {\n return range(active + pace, -1, count);\n }\n\n return range(active + pace, 0, maxCount);\n }\n\n return active;\n },\n getTargetOffset: function getTargetOffset(targetActive, offset) {\n if (offset === void 0) {\n offset = 0;\n }\n\n var currentPosition = targetActive * this.size;\n\n if (!this.loop) {\n currentPosition = Math.min(currentPosition, -this.minOffset);\n }\n\n var targetOffset = offset - currentPosition;\n\n if (!this.loop) {\n targetOffset = range(targetOffset, this.minOffset, 0);\n }\n\n return targetOffset;\n },\n move: function move(_ref) {\n var _ref$pace = _ref.pace,\n pace = _ref$pace === void 0 ? 0 : _ref$pace,\n _ref$offset = _ref.offset,\n offset = _ref$offset === void 0 ? 0 : _ref$offset,\n emitChange = _ref.emitChange;\n var loop = this.loop,\n count = this.count,\n active = this.active,\n children = this.children,\n trackSize = this.trackSize,\n minOffset = this.minOffset;\n\n if (count <= 1) {\n return;\n }\n\n var targetActive = this.getTargetActive(pace);\n var targetOffset = this.getTargetOffset(targetActive, offset); // auto move first and last swipe in loop mode\n\n if (loop) {\n if (children[0] && targetOffset !== minOffset) {\n var outRightBound = targetOffset < minOffset;\n children[0].offset = outRightBound ? trackSize : 0;\n }\n\n if (children[count - 1] && targetOffset !== 0) {\n var outLeftBound = targetOffset > 0;\n children[count - 1].offset = outLeftBound ? -trackSize : 0;\n }\n }\n\n this.active = targetActive;\n this.offset = targetOffset;\n\n if (emitChange && targetActive !== active) {\n this.$emit('change', this.activeIndicator);\n }\n },\n // @exposed-api\n prev: function prev() {\n var _this = this;\n\n this.correctPosition();\n this.resetTouchStatus();\n doubleRaf(function () {\n _this.swiping = false;\n\n _this.move({\n pace: -1,\n emitChange: true\n });\n });\n },\n // @exposed-api\n next: function next() {\n var _this2 = this;\n\n this.correctPosition();\n this.resetTouchStatus();\n doubleRaf(function () {\n _this2.swiping = false;\n\n _this2.move({\n pace: 1,\n emitChange: true\n });\n });\n },\n // @exposed-api\n swipeTo: function swipeTo(index, options) {\n var _this3 = this;\n\n if (options === void 0) {\n options = {};\n }\n\n this.correctPosition();\n this.resetTouchStatus();\n doubleRaf(function () {\n var targetIndex;\n\n if (_this3.loop && index === _this3.count) {\n targetIndex = _this3.active === 0 ? 0 : index;\n } else {\n targetIndex = index % _this3.count;\n }\n\n if (options.immediate) {\n doubleRaf(function () {\n _this3.swiping = false;\n });\n } else {\n _this3.swiping = false;\n }\n\n _this3.move({\n pace: targetIndex - _this3.active,\n emitChange: true\n });\n });\n },\n correctPosition: function correctPosition() {\n this.swiping = true;\n\n if (this.active <= -1) {\n this.move({\n pace: this.count\n });\n }\n\n if (this.active >= this.count) {\n this.move({\n pace: -this.count\n });\n }\n },\n clear: function clear() {\n clearTimeout(this.timer);\n },\n autoPlay: function autoPlay() {\n var _this4 = this;\n\n var autoplay = this.autoplay;\n\n if (autoplay > 0 && this.count > 1) {\n this.clear();\n this.timer = setTimeout(function () {\n _this4.next();\n\n _this4.autoPlay();\n }, autoplay);\n }\n },\n genIndicator: function genIndicator() {\n var _this5 = this;\n\n var h = this.$createElement;\n var count = this.count,\n activeIndicator = this.activeIndicator;\n var slot = this.slots('indicator');\n\n if (slot) {\n return slot;\n }\n\n if (this.showIndicators && count > 1) {\n return h(\"div\", {\n \"class\": bem('indicators', {\n vertical: this.vertical\n })\n }, [Array.apply(void 0, Array(count)).map(function (empty, index) {\n return h(\"i\", {\n \"class\": bem('indicator', {\n active: index === activeIndicator\n }),\n \"style\": index === activeIndicator ? _this5.indicatorStyle : null\n });\n })]);\n }\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"class\": bem()\n }, [h(\"div\", {\n \"ref\": \"track\",\n \"style\": this.trackStyle,\n \"class\": bem('track', {\n vertical: this.vertical\n })\n }, [this.slots()]), this.genIndicator()]);\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createNamespace } from '../utils';\nimport { ChildrenMixin } from '../mixins/relation';\n\nvar _createNamespace = createNamespace('swipe-item'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ChildrenMixin('vanSwipe')],\n data: function data() {\n return {\n offset: 0,\n inited: false,\n mounted: false\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.mounted = true;\n });\n },\n computed: {\n style: function style() {\n var style = {};\n var _this$parent = this.parent,\n size = _this$parent.size,\n vertical = _this$parent.vertical;\n\n if (size) {\n style[vertical ? 'height' : 'width'] = size + \"px\";\n }\n\n if (this.offset) {\n style.transform = \"translate\" + (vertical ? 'Y' : 'X') + \"(\" + this.offset + \"px)\";\n }\n\n return style;\n },\n shouldRender: function shouldRender() {\n var index = this.index,\n inited = this.inited,\n parent = this.parent,\n mounted = this.mounted;\n\n if (!parent.lazyRender || inited) {\n return true;\n } // wait for all item to mount, so we can get the exact count\n\n\n if (!mounted) {\n return false;\n }\n\n var active = parent.activeIndicator;\n var maxActive = parent.count - 1;\n var prevActive = active === 0 && parent.loop ? maxActive : active - 1;\n var nextActive = active === maxActive && parent.loop ? 0 : active + 1;\n var shouldRender = index === active || index === prevActive || index === nextActive;\n\n if (shouldRender) {\n this.inited = true;\n }\n\n return shouldRender;\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"class\": bem(),\n \"style\": this.style,\n \"on\": _extends({}, this.$listeners)\n }, [this.shouldRender && this.slots()]);\n }\n});","// Utils\nimport { bem } from './shared';\nimport { range } from '../utils/format/number';\nimport { preventDefault } from '../utils/dom/event'; // Mixins\n\nimport { TouchMixin } from '../mixins/touch'; // Component\n\nimport Image from '../image';\nimport Loading from '../loading';\nimport SwipeItem from '../swipe-item';\n\nfunction getDistance(touches) {\n return Math.sqrt(Math.pow(touches[0].clientX - touches[1].clientX, 2) + Math.pow(touches[0].clientY - touches[1].clientY, 2));\n}\n\nexport default {\n mixins: [TouchMixin],\n props: {\n src: String,\n show: Boolean,\n active: Number,\n minZoom: [Number, String],\n maxZoom: [Number, String],\n rootWidth: Number,\n rootHeight: Number\n },\n data: function data() {\n return {\n scale: 1,\n moveX: 0,\n moveY: 0,\n moving: false,\n zooming: false,\n imageRatio: 0,\n displayWidth: 0,\n displayHeight: 0\n };\n },\n computed: {\n vertical: function vertical() {\n var rootWidth = this.rootWidth,\n rootHeight = this.rootHeight;\n var rootRatio = rootHeight / rootWidth;\n return this.imageRatio > rootRatio;\n },\n imageStyle: function imageStyle() {\n var scale = this.scale;\n var style = {\n transitionDuration: this.zooming || this.moving ? '0s' : '.3s'\n };\n\n if (scale !== 1) {\n var offsetX = this.moveX / scale;\n var offsetY = this.moveY / scale;\n style.transform = \"scale(\" + scale + \", \" + scale + \") translate(\" + offsetX + \"px, \" + offsetY + \"px)\";\n }\n\n return style;\n },\n maxMoveX: function maxMoveX() {\n if (this.imageRatio) {\n var displayWidth = this.vertical ? this.rootHeight / this.imageRatio : this.rootWidth;\n return Math.max(0, (this.scale * displayWidth - this.rootWidth) / 2);\n }\n\n return 0;\n },\n maxMoveY: function maxMoveY() {\n if (this.imageRatio) {\n var displayHeight = this.vertical ? this.rootHeight : this.rootWidth * this.imageRatio;\n return Math.max(0, (this.scale * displayHeight - this.rootHeight) / 2);\n }\n\n return 0;\n }\n },\n watch: {\n active: 'resetScale',\n show: function show(val) {\n if (!val) {\n this.resetScale();\n }\n }\n },\n mounted: function mounted() {\n this.bindTouchEvent(this.$el);\n },\n methods: {\n resetScale: function resetScale() {\n this.setScale(1);\n this.moveX = 0;\n this.moveY = 0;\n },\n setScale: function setScale(scale) {\n scale = range(scale, +this.minZoom, +this.maxZoom);\n\n if (scale !== this.scale) {\n this.scale = scale;\n this.$emit('scale', {\n scale: this.scale,\n index: this.active\n });\n }\n },\n toggleScale: function toggleScale() {\n var scale = this.scale > 1 ? 1 : 2;\n this.setScale(scale);\n this.moveX = 0;\n this.moveY = 0;\n },\n onTouchStart: function onTouchStart(event) {\n var touches = event.touches;\n var _this$offsetX = this.offsetX,\n offsetX = _this$offsetX === void 0 ? 0 : _this$offsetX;\n this.touchStart(event);\n this.touchStartTime = new Date();\n this.startMoveX = this.moveX;\n this.startMoveY = this.moveY;\n this.moving = touches.length === 1 && this.scale !== 1;\n this.zooming = touches.length === 2 && !offsetX;\n\n if (this.zooming) {\n this.startScale = this.scale;\n this.startDistance = getDistance(event.touches);\n }\n },\n onTouchMove: function onTouchMove(event) {\n var touches = event.touches;\n this.touchMove(event);\n\n if (this.moving || this.zooming) {\n preventDefault(event, true);\n }\n\n if (this.moving) {\n var moveX = this.deltaX + this.startMoveX;\n var moveY = this.deltaY + this.startMoveY;\n this.moveX = range(moveX, -this.maxMoveX, this.maxMoveX);\n this.moveY = range(moveY, -this.maxMoveY, this.maxMoveY);\n }\n\n if (this.zooming && touches.length === 2) {\n var distance = getDistance(touches);\n var scale = this.startScale * distance / this.startDistance;\n this.setScale(scale);\n }\n },\n onTouchEnd: function onTouchEnd(event) {\n var stopPropagation = false;\n /* istanbul ignore else */\n\n if (this.moving || this.zooming) {\n stopPropagation = true;\n\n if (this.moving && this.startMoveX === this.moveX && this.startMoveY === this.moveY) {\n stopPropagation = false;\n }\n\n if (!event.touches.length) {\n if (this.zooming) {\n this.moveX = range(this.moveX, -this.maxMoveX, this.maxMoveX);\n this.moveY = range(this.moveY, -this.maxMoveY, this.maxMoveY);\n this.zooming = false;\n }\n\n this.moving = false;\n this.startMoveX = 0;\n this.startMoveY = 0;\n this.startScale = 1;\n\n if (this.scale < 1) {\n this.resetScale();\n }\n }\n } // eliminate tap delay on safari\n\n\n preventDefault(event, stopPropagation);\n this.checkTap();\n this.resetTouchStatus();\n },\n checkTap: function checkTap() {\n var _this = this;\n\n var _this$offsetX2 = this.offsetX,\n offsetX = _this$offsetX2 === void 0 ? 0 : _this$offsetX2,\n _this$offsetY = this.offsetY,\n offsetY = _this$offsetY === void 0 ? 0 : _this$offsetY;\n var deltaTime = new Date() - this.touchStartTime;\n var TAP_TIME = 250;\n var TAP_OFFSET = 10;\n\n if (offsetX < TAP_OFFSET && offsetY < TAP_OFFSET && deltaTime < TAP_TIME) {\n if (this.doubleTapTimer) {\n clearTimeout(this.doubleTapTimer);\n this.doubleTapTimer = null;\n this.toggleScale();\n } else {\n this.doubleTapTimer = setTimeout(function () {\n _this.$emit('close');\n\n _this.doubleTapTimer = null;\n }, TAP_TIME);\n }\n }\n },\n onLoad: function onLoad(event) {\n var _event$target = event.target,\n naturalWidth = _event$target.naturalWidth,\n naturalHeight = _event$target.naturalHeight;\n this.imageRatio = naturalHeight / naturalWidth;\n }\n },\n render: function render() {\n var h = arguments[0];\n var imageSlots = {\n loading: function loading() {\n return h(Loading, {\n \"attrs\": {\n \"type\": \"spinner\"\n }\n });\n }\n };\n return h(SwipeItem, {\n \"class\": bem('swipe-item')\n }, [h(Image, {\n \"attrs\": {\n \"src\": this.src,\n \"fit\": \"contain\"\n },\n \"class\": bem('image', {\n vertical: this.vertical\n }),\n \"style\": this.imageStyle,\n \"scopedSlots\": imageSlots,\n \"on\": {\n \"load\": this.onLoad\n }\n })]);\n }\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport Vue from 'vue';\nimport VueImagePreview from './ImagePreview';\nimport { isServer } from '../utils';\nvar instance;\nvar defaultConfig = {\n loop: true,\n value: true,\n images: [],\n maxZoom: 3,\n minZoom: 1 / 3,\n onClose: null,\n onChange: null,\n className: '',\n showIndex: true,\n closeable: false,\n closeIcon: 'clear',\n asyncClose: false,\n getContainer: 'body',\n startPosition: 0,\n swipeDuration: 300,\n showIndicators: false,\n closeOnPopstate: true,\n closeIconPosition: 'top-right'\n};\n\nvar initInstance = function initInstance() {\n instance = new (Vue.extend(VueImagePreview))({\n el: document.createElement('div')\n });\n document.body.appendChild(instance.$el);\n instance.$on('change', function (index) {\n if (instance.onChange) {\n instance.onChange(index);\n }\n });\n instance.$on('scale', function (data) {\n if (instance.onScale) {\n instance.onScale(data);\n }\n });\n};\n\nvar ImagePreview = function ImagePreview(images, startPosition) {\n if (startPosition === void 0) {\n startPosition = 0;\n }\n\n /* istanbul ignore if */\n if (isServer) {\n return;\n }\n\n if (!instance) {\n initInstance();\n }\n\n var options = Array.isArray(images) ? {\n images: images,\n startPosition: startPosition\n } : images;\n\n _extends(instance, defaultConfig, options);\n\n instance.$once('input', function (show) {\n instance.value = show;\n });\n instance.$once('closed', function () {\n instance.images = [];\n });\n\n if (options.onClose) {\n instance.$off('close');\n instance.$once('close', options.onClose);\n }\n\n return instance;\n};\n\nImagePreview.Component = VueImagePreview;\n\nImagePreview.install = function () {\n Vue.use(VueImagePreview);\n};\n\nexport default ImagePreview;","// Utils\nimport { bem, createComponent } from './shared'; // Mixins\n\nimport { PopupMixin } from '../mixins/popup';\nimport { TouchMixin } from '../mixins/touch';\nimport { BindEventMixin } from '../mixins/bind-event'; // Components\n\nimport Icon from '../icon';\nimport Swipe from '../swipe';\nimport ImagePreviewItem from './ImagePreviewItem';\nexport default createComponent({\n mixins: [TouchMixin, PopupMixin({\n skipToggleEvent: true\n }), BindEventMixin(function (bind) {\n bind(window, 'resize', this.resize, true);\n bind(window, 'orientationchange', this.resize, true);\n })],\n props: {\n className: null,\n closeable: Boolean,\n asyncClose: Boolean,\n showIndicators: Boolean,\n images: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n loop: {\n type: Boolean,\n default: true\n },\n overlay: {\n type: Boolean,\n default: true\n },\n minZoom: {\n type: [Number, String],\n default: 1 / 3\n },\n maxZoom: {\n type: [Number, String],\n default: 3\n },\n showIndex: {\n type: Boolean,\n default: true\n },\n swipeDuration: {\n type: [Number, String],\n default: 300\n },\n startPosition: {\n type: [Number, String],\n default: 0\n },\n overlayClass: {\n type: String,\n default: bem('overlay')\n },\n closeIcon: {\n type: String,\n default: 'clear'\n },\n closeOnPopstate: {\n type: Boolean,\n default: true\n },\n closeIconPosition: {\n type: String,\n default: 'top-right'\n }\n },\n data: function data() {\n return {\n active: 0,\n rootWidth: 0,\n rootHeight: 0,\n doubleClickTimer: null\n };\n },\n mounted: function mounted() {\n this.resize();\n },\n watch: {\n startPosition: 'setActive',\n value: function value(val) {\n var _this = this;\n\n if (val) {\n this.setActive(+this.startPosition);\n this.$nextTick(function () {\n _this.resize();\n\n _this.$refs.swipe.swipeTo(+_this.startPosition, {\n immediate: true\n });\n });\n } else {\n this.$emit('close', {\n index: this.active,\n url: this.images[this.active]\n });\n }\n }\n },\n methods: {\n resize: function resize() {\n if (this.$el && this.$el.getBoundingClientRect) {\n var rect = this.$el.getBoundingClientRect();\n this.rootWidth = rect.width;\n this.rootHeight = rect.height;\n }\n },\n emitClose: function emitClose() {\n if (!this.asyncClose) {\n this.$emit('input', false);\n }\n },\n emitScale: function emitScale(args) {\n this.$emit('scale', args);\n },\n setActive: function setActive(active) {\n if (active !== this.active) {\n this.active = active;\n this.$emit('change', active);\n }\n },\n genIndex: function genIndex() {\n var h = this.$createElement;\n\n if (this.showIndex) {\n return h(\"div\", {\n \"class\": bem('index')\n }, [this.slots('index', {\n index: this.active\n }) || this.active + 1 + \" / \" + this.images.length]);\n }\n },\n genCover: function genCover() {\n var h = this.$createElement;\n var cover = this.slots('cover');\n\n if (cover) {\n return h(\"div\", {\n \"class\": bem('cover')\n }, [cover]);\n }\n },\n genImages: function genImages() {\n var _this2 = this;\n\n var h = this.$createElement;\n return h(Swipe, {\n \"ref\": \"swipe\",\n \"attrs\": {\n \"lazyRender\": true,\n \"loop\": this.loop,\n \"duration\": this.swipeDuration,\n \"initialSwipe\": this.startPosition,\n \"showIndicators\": this.showIndicators,\n \"indicatorColor\": \"white\"\n },\n \"class\": bem('swipe'),\n \"on\": {\n \"change\": this.setActive\n }\n }, [this.images.map(function (image) {\n return h(ImagePreviewItem, {\n \"attrs\": {\n \"src\": image,\n \"show\": _this2.value,\n \"active\": _this2.active,\n \"maxZoom\": _this2.maxZoom,\n \"minZoom\": _this2.minZoom,\n \"rootWidth\": _this2.rootWidth,\n \"rootHeight\": _this2.rootHeight\n },\n \"on\": {\n \"scale\": _this2.emitScale,\n \"close\": _this2.emitClose\n }\n });\n })]);\n },\n genClose: function genClose() {\n var h = this.$createElement;\n\n if (this.closeable) {\n return h(Icon, {\n \"attrs\": {\n \"role\": \"button\",\n \"name\": this.closeIcon\n },\n \"class\": bem('close-icon', this.closeIconPosition),\n \"on\": {\n \"click\": this.emitClose\n }\n });\n }\n },\n onClosed: function onClosed() {\n this.$emit('closed');\n },\n // @exposed-api\n swipeTo: function swipeTo(index, options) {\n if (this.$refs.swipe) {\n this.$refs.swipe.swipeTo(index, options);\n }\n }\n },\n render: function render() {\n var h = arguments[0];\n\n if (!this.shouldRender) {\n return;\n }\n\n return h(\"transition\", {\n \"attrs\": {\n \"name\": \"van-fade\"\n },\n \"on\": {\n \"afterLeave\": this.onClosed\n }\n }, [h(\"div\", {\n \"directives\": [{\n name: \"show\",\n value: this.value\n }],\n \"class\": [bem(), this.className]\n }, [this.genClose(), this.genImages(), this.genIndex(), this.genCover()])]);\n }\n});","import { createNamespace } from '../utils';\nimport { ChildrenMixin } from '../mixins/relation';\nimport { BORDER_BOTTOM } from '../utils/constant';\nimport { getScrollTop, getRootScrollTop } from '../utils/dom/scroll';\n\nvar _createNamespace = createNamespace('index-anchor'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ChildrenMixin('vanIndexBar', {\n indexKey: 'childrenIndex'\n })],\n props: {\n index: [Number, String]\n },\n data: function data() {\n return {\n top: 0,\n left: null,\n rect: {\n top: 0,\n height: 0\n },\n width: null,\n active: false\n };\n },\n computed: {\n sticky: function sticky() {\n return this.active && this.parent.sticky;\n },\n anchorStyle: function anchorStyle() {\n if (this.sticky) {\n return {\n zIndex: \"\" + this.parent.zIndex,\n left: this.left ? this.left + \"px\" : null,\n width: this.width ? this.width + \"px\" : null,\n transform: \"translate3d(0, \" + this.top + \"px, 0)\",\n color: this.parent.highlightColor\n };\n }\n }\n },\n mounted: function mounted() {\n var rect = this.$el.getBoundingClientRect();\n this.rect.height = rect.height;\n },\n methods: {\n scrollIntoView: function scrollIntoView() {\n this.$el.scrollIntoView();\n },\n getRect: function getRect(scroller, scrollerRect) {\n var el = this.$el;\n var elRect = el.getBoundingClientRect();\n this.rect.height = elRect.height;\n\n if (scroller === window || scroller === document.body) {\n this.rect.top = elRect.top + getRootScrollTop();\n } else {\n this.rect.top = elRect.top + getScrollTop(scroller) - scrollerRect.top;\n }\n\n return this.rect;\n }\n },\n render: function render() {\n var _ref;\n\n var h = arguments[0];\n var sticky = this.sticky;\n return h(\"div\", {\n \"style\": {\n height: sticky ? this.rect.height + \"px\" : null\n }\n }, [h(\"div\", {\n \"style\": this.anchorStyle,\n \"class\": [bem({\n sticky: sticky\n }), (_ref = {}, _ref[BORDER_BOTTOM] = sticky, _ref)]\n }, [this.slots('default') || this.index])]);\n }\n});","// Utils\nimport { createNamespace, isDef } from '../utils';\nimport { isHidden } from '../utils/dom/style';\nimport { preventDefault } from '../utils/dom/event';\nimport { getScroller, getScrollTop, getRootScrollTop, setRootScrollTop } from '../utils/dom/scroll'; // Mixins\n\nimport { TouchMixin } from '../mixins/touch';\nimport { ParentMixin } from '../mixins/relation';\nimport { BindEventMixin } from '../mixins/bind-event';\n\nfunction genAlphabet() {\n var indexList = [];\n var charCodeOfA = 'A'.charCodeAt(0);\n\n for (var i = 0; i < 26; i++) {\n indexList.push(String.fromCharCode(charCodeOfA + i));\n }\n\n return indexList;\n}\n\nvar _createNamespace = createNamespace('index-bar'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [TouchMixin, ParentMixin('vanIndexBar'), BindEventMixin(function (bind) {\n if (!this.scroller) {\n this.scroller = getScroller(this.$el);\n }\n\n bind(this.scroller, 'scroll', this.onScroll);\n })],\n props: {\n zIndex: [Number, String],\n highlightColor: String,\n sticky: {\n type: Boolean,\n default: true\n },\n stickyOffsetTop: {\n type: Number,\n default: 0\n },\n indexList: {\n type: Array,\n default: genAlphabet\n }\n },\n data: function data() {\n return {\n activeAnchorIndex: null\n };\n },\n computed: {\n sidebarStyle: function sidebarStyle() {\n if (isDef(this.zIndex)) {\n return {\n zIndex: this.zIndex + 1\n };\n }\n },\n highlightStyle: function highlightStyle() {\n var highlightColor = this.highlightColor;\n\n if (highlightColor) {\n return {\n color: highlightColor\n };\n }\n }\n },\n watch: {\n indexList: function indexList() {\n this.$nextTick(this.onScroll);\n },\n activeAnchorIndex: function activeAnchorIndex(value) {\n if (value) {\n this.$emit('change', value);\n }\n }\n },\n methods: {\n onScroll: function onScroll() {\n var _this = this;\n\n if (isHidden(this.$el)) {\n return;\n }\n\n var scrollTop = getScrollTop(this.scroller);\n var scrollerRect = this.getScrollerRect();\n var rects = this.children.map(function (item) {\n return item.getRect(_this.scroller, scrollerRect);\n });\n var active = this.getActiveAnchorIndex(scrollTop, rects);\n this.activeAnchorIndex = this.indexList[active];\n\n if (this.sticky) {\n this.children.forEach(function (item, index) {\n if (index === active || index === active - 1) {\n var rect = item.$el.getBoundingClientRect();\n item.left = rect.left;\n item.width = rect.width;\n } else {\n item.left = null;\n item.width = null;\n }\n\n if (index === active) {\n item.active = true;\n item.top = Math.max(_this.stickyOffsetTop, rects[index].top - scrollTop) + scrollerRect.top;\n } else if (index === active - 1) {\n var activeItemTop = rects[active].top - scrollTop;\n item.active = activeItemTop > 0;\n item.top = activeItemTop + scrollerRect.top - rects[index].height;\n } else {\n item.active = false;\n }\n });\n }\n },\n getScrollerRect: function getScrollerRect() {\n if (this.scroller.getBoundingClientRect) {\n return this.scroller.getBoundingClientRect();\n }\n\n return {\n top: 0,\n left: 0\n };\n },\n getActiveAnchorIndex: function getActiveAnchorIndex(scrollTop, rects) {\n for (var i = this.children.length - 1; i >= 0; i--) {\n var prevHeight = i > 0 ? rects[i - 1].height : 0;\n var reachTop = this.sticky ? prevHeight + this.stickyOffsetTop : 0;\n\n if (scrollTop + reachTop >= rects[i].top) {\n return i;\n }\n }\n\n return -1;\n },\n onClick: function onClick(event) {\n this.scrollToElement(event.target);\n },\n onTouchMove: function onTouchMove(event) {\n this.touchMove(event);\n\n if (this.direction === 'vertical') {\n preventDefault(event);\n var _event$touches$ = event.touches[0],\n clientX = _event$touches$.clientX,\n clientY = _event$touches$.clientY;\n var target = document.elementFromPoint(clientX, clientY);\n\n if (target) {\n var index = target.dataset.index;\n /* istanbul ignore else */\n\n if (this.touchActiveIndex !== index) {\n this.touchActiveIndex = index;\n this.scrollToElement(target);\n }\n }\n }\n },\n scrollTo: function scrollTo(index) {\n var match = this.children.filter(function (item) {\n return String(item.index) === index;\n });\n\n if (match[0]) {\n match[0].scrollIntoView();\n\n if (this.sticky && this.stickyOffsetTop) {\n setRootScrollTop(getRootScrollTop() - this.stickyOffsetTop);\n }\n\n this.$emit('select', match[0].index);\n }\n },\n scrollToElement: function scrollToElement(element) {\n var index = element.dataset.index;\n this.scrollTo(index);\n },\n onTouchEnd: function onTouchEnd() {\n this.active = null;\n }\n },\n render: function render() {\n var _this2 = this;\n\n var h = arguments[0];\n var Indexes = this.indexList.map(function (index) {\n var active = index === _this2.activeAnchorIndex;\n return h(\"span\", {\n \"class\": bem('index', {\n active: active\n }),\n \"style\": active ? _this2.highlightStyle : null,\n \"attrs\": {\n \"data-index\": index\n }\n }, [index]);\n });\n return h(\"div\", {\n \"class\": bem()\n }, [h(\"div\", {\n \"class\": bem('sidebar'),\n \"style\": this.sidebarStyle,\n \"on\": {\n \"click\": this.onClick,\n \"touchstart\": this.touchStart,\n \"touchmove\": this.onTouchMove,\n \"touchend\": this.onTouchEnd,\n \"touchcancel\": this.onTouchEnd\n }\n }, [Indexes]), this.slots('default')]);\n }\n});","// Utils\nimport { createNamespace } from '../utils';\nimport { isHidden } from '../utils/dom/style';\nimport { getScroller } from '../utils/dom/scroll'; // Mixins\n\nimport { BindEventMixin } from '../mixins/bind-event'; // Components\n\nimport Loading from '../loading';\n\nvar _createNamespace = createNamespace('list'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nexport default createComponent({\n mixins: [BindEventMixin(function (bind) {\n if (!this.scroller) {\n this.scroller = getScroller(this.$el);\n }\n\n bind(this.scroller, 'scroll', this.check);\n })],\n model: {\n prop: 'loading'\n },\n props: {\n error: Boolean,\n loading: Boolean,\n finished: Boolean,\n errorText: String,\n loadingText: String,\n finishedText: String,\n immediateCheck: {\n type: Boolean,\n default: true\n },\n offset: {\n type: [Number, String],\n default: 300\n },\n direction: {\n type: String,\n default: 'down'\n }\n },\n data: function data() {\n return {\n // use sync innerLoading state to avoid repeated loading in some edge cases\n innerLoading: this.loading\n };\n },\n updated: function updated() {\n this.innerLoading = this.loading;\n },\n mounted: function mounted() {\n if (this.immediateCheck) {\n this.check();\n }\n },\n watch: {\n loading: 'check',\n finished: 'check'\n },\n methods: {\n // @exposed-api\n check: function check() {\n var _this = this;\n\n this.$nextTick(function () {\n if (_this.innerLoading || _this.finished || _this.error) {\n return;\n }\n\n var el = _this.$el,\n scroller = _this.scroller,\n offset = _this.offset,\n direction = _this.direction;\n var scrollerRect;\n\n if (scroller.getBoundingClientRect) {\n scrollerRect = scroller.getBoundingClientRect();\n } else {\n scrollerRect = {\n top: 0,\n bottom: scroller.innerHeight\n };\n }\n\n var scrollerHeight = scrollerRect.bottom - scrollerRect.top;\n /* istanbul ignore next */\n\n if (!scrollerHeight || isHidden(el)) {\n return false;\n }\n\n var isReachEdge = false;\n\n var placeholderRect = _this.$refs.placeholder.getBoundingClientRect();\n\n if (direction === 'up') {\n isReachEdge = scrollerRect.top - placeholderRect.top <= offset;\n } else {\n isReachEdge = placeholderRect.bottom - scrollerRect.bottom <= offset;\n }\n\n if (isReachEdge) {\n _this.innerLoading = true;\n\n _this.$emit('input', true);\n\n _this.$emit('load');\n }\n });\n },\n clickErrorText: function clickErrorText() {\n this.$emit('update:error', false);\n this.check();\n },\n genLoading: function genLoading() {\n var h = this.$createElement;\n\n if (this.innerLoading && !this.finished) {\n return h(\"div\", {\n \"key\": \"loading\",\n \"class\": bem('loading')\n }, [this.slots('loading') || h(Loading, {\n \"attrs\": {\n \"size\": \"16\"\n }\n }, [this.loadingText || t('loading')])]);\n }\n },\n genFinishedText: function genFinishedText() {\n var h = this.$createElement;\n\n if (this.finished) {\n var text = this.slots('finished') || this.finishedText;\n\n if (text) {\n return h(\"div\", {\n \"class\": bem('finished-text')\n }, [text]);\n }\n }\n },\n genErrorText: function genErrorText() {\n var h = this.$createElement;\n\n if (this.error) {\n var text = this.slots('error') || this.errorText;\n\n if (text) {\n return h(\"div\", {\n \"on\": {\n \"click\": this.clickErrorText\n },\n \"class\": bem('error-text')\n }, [text]);\n }\n }\n }\n },\n render: function render() {\n var h = arguments[0];\n var Placeholder = h(\"div\", {\n \"ref\": \"placeholder\",\n \"key\": \"placeholder\",\n \"class\": bem('placeholder')\n });\n return h(\"div\", {\n \"class\": bem(),\n \"attrs\": {\n \"role\": \"feed\",\n \"aria-busy\": this.innerLoading\n }\n }, [this.direction === 'down' ? this.slots() : Placeholder, this.genLoading(), this.genFinishedText(), this.genErrorText(), this.direction === 'up' ? this.slots() : Placeholder]);\n }\n});","// Utils\nimport { createNamespace } from '../utils';\nimport { BORDER_BOTTOM } from '../utils/constant'; // Components\n\nimport Icon from '../icon';\n\nvar _createNamespace = createNamespace('nav-bar'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n props: {\n title: String,\n fixed: Boolean,\n zIndex: [Number, String],\n leftText: String,\n rightText: String,\n leftArrow: Boolean,\n placeholder: Boolean,\n safeAreaInsetTop: Boolean,\n border: {\n type: Boolean,\n default: true\n }\n },\n data: function data() {\n return {\n height: null\n };\n },\n mounted: function mounted() {\n if (this.placeholder && this.fixed) {\n this.height = this.$refs.navBar.getBoundingClientRect().height;\n }\n },\n methods: {\n genLeft: function genLeft() {\n var h = this.$createElement;\n var leftSlot = this.slots('left');\n\n if (leftSlot) {\n return leftSlot;\n }\n\n return [this.leftArrow && h(Icon, {\n \"class\": bem('arrow'),\n \"attrs\": {\n \"name\": \"arrow-left\"\n }\n }), this.leftText && h(\"span\", {\n \"class\": bem('text')\n }, [this.leftText])];\n },\n genRight: function genRight() {\n var h = this.$createElement;\n var rightSlot = this.slots('right');\n\n if (rightSlot) {\n return rightSlot;\n }\n\n if (this.rightText) {\n return h(\"span\", {\n \"class\": bem('text')\n }, [this.rightText]);\n }\n },\n genNavBar: function genNavBar() {\n var _ref;\n\n var h = this.$createElement;\n return h(\"div\", {\n \"ref\": \"navBar\",\n \"style\": {\n zIndex: this.zIndex\n },\n \"class\": [bem({\n fixed: this.fixed,\n 'safe-area-inset-top': this.safeAreaInsetTop\n }), (_ref = {}, _ref[BORDER_BOTTOM] = this.border, _ref)]\n }, [h(\"div\", {\n \"class\": bem('content')\n }, [this.hasLeft() && h(\"div\", {\n \"class\": bem('left'),\n \"on\": {\n \"click\": this.onClickLeft\n }\n }, [this.genLeft()]), h(\"div\", {\n \"class\": [bem('title'), 'van-ellipsis']\n }, [this.slots('title') || this.title]), this.hasRight() && h(\"div\", {\n \"class\": bem('right'),\n \"on\": {\n \"click\": this.onClickRight\n }\n }, [this.genRight()])])]);\n },\n hasLeft: function hasLeft() {\n return this.leftArrow || this.leftText || this.slots('left');\n },\n hasRight: function hasRight() {\n return this.rightText || this.slots('right');\n },\n onClickLeft: function onClickLeft(event) {\n this.$emit('click-left', event);\n },\n onClickRight: function onClickRight(event) {\n this.$emit('click-right', event);\n }\n },\n render: function render() {\n var h = arguments[0];\n\n if (this.placeholder && this.fixed) {\n return h(\"div\", {\n \"class\": bem('placeholder'),\n \"style\": {\n height: this.height + \"px\"\n }\n }, [this.genNavBar()]);\n }\n\n return this.genNavBar();\n }\n});","import { createNamespace, isDef } from '../utils';\nimport { doubleRaf, raf } from '../utils/dom/raf';\nimport { BindEventMixin } from '../mixins/bind-event';\nimport Icon from '../icon';\n\nvar _createNamespace = createNamespace('notice-bar'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [BindEventMixin(function (bind) {\n // fix cache issues with forwards and back history in safari\n // see: https://guwii.com/cache-issues-with-forwards-and-back-history-in-safari/\n bind(window, 'pageshow', this.start);\n })],\n props: {\n text: String,\n mode: String,\n color: String,\n leftIcon: String,\n wrapable: Boolean,\n background: String,\n scrollable: {\n type: Boolean,\n default: null\n },\n delay: {\n type: [Number, String],\n default: 1\n },\n speed: {\n type: [Number, String],\n default: 50\n }\n },\n data: function data() {\n return {\n show: true,\n offset: 0,\n duration: 0,\n wrapWidth: 0,\n contentWidth: 0\n };\n },\n watch: {\n scrollable: 'start',\n text: {\n handler: 'start',\n immediate: true\n }\n },\n activated: function activated() {\n this.start();\n },\n methods: {\n onClickIcon: function onClickIcon(event) {\n if (this.mode === 'closeable') {\n this.show = false;\n this.$emit('close', event);\n }\n },\n onTransitionEnd: function onTransitionEnd() {\n var _this = this;\n\n this.offset = this.wrapWidth;\n this.duration = 0; // wait for Vue to render offset\n // using nextTick won't work in iOS14\n\n raf(function () {\n // use double raf to ensure animation can start\n doubleRaf(function () {\n _this.offset = -_this.contentWidth;\n _this.duration = (_this.contentWidth + _this.wrapWidth) / _this.speed;\n\n _this.$emit('replay');\n });\n });\n },\n reset: function reset() {\n this.offset = 0;\n this.duration = 0;\n this.wrapWidth = 0;\n this.contentWidth = 0;\n },\n start: function start() {\n var _this2 = this;\n\n var delay = isDef(this.delay) ? this.delay * 1000 : 0;\n this.reset();\n clearTimeout(this.startTimer);\n this.startTimer = setTimeout(function () {\n var _this2$$refs = _this2.$refs,\n wrap = _this2$$refs.wrap,\n content = _this2$$refs.content;\n\n if (!wrap || !content || _this2.scrollable === false) {\n return;\n }\n\n var wrapWidth = wrap.getBoundingClientRect().width;\n var contentWidth = content.getBoundingClientRect().width;\n\n if (_this2.scrollable || contentWidth > wrapWidth) {\n doubleRaf(function () {\n _this2.offset = -contentWidth;\n _this2.duration = contentWidth / _this2.speed;\n _this2.wrapWidth = wrapWidth;\n _this2.contentWidth = contentWidth;\n });\n }\n }, delay);\n }\n },\n render: function render() {\n var _this3 = this;\n\n var h = arguments[0];\n var slots = this.slots,\n mode = this.mode,\n leftIcon = this.leftIcon,\n onClickIcon = this.onClickIcon;\n var barStyle = {\n color: this.color,\n background: this.background\n };\n var contentStyle = {\n transform: this.offset ? \"translateX(\" + this.offset + \"px)\" : '',\n transitionDuration: this.duration + 's'\n };\n\n function LeftIcon() {\n var slot = slots('left-icon');\n\n if (slot) {\n return slot;\n }\n\n if (leftIcon) {\n return h(Icon, {\n \"class\": bem('left-icon'),\n \"attrs\": {\n \"name\": leftIcon\n }\n });\n }\n }\n\n function RightIcon() {\n var slot = slots('right-icon');\n\n if (slot) {\n return slot;\n }\n\n var iconName;\n\n if (mode === 'closeable') {\n iconName = 'cross';\n } else if (mode === 'link') {\n iconName = 'arrow';\n }\n\n if (iconName) {\n return h(Icon, {\n \"class\": bem('right-icon'),\n \"attrs\": {\n \"name\": iconName\n },\n \"on\": {\n \"click\": onClickIcon\n }\n });\n }\n }\n\n return h(\"div\", {\n \"attrs\": {\n \"role\": \"alert\"\n },\n \"directives\": [{\n name: \"show\",\n value: this.show\n }],\n \"class\": bem({\n wrapable: this.wrapable\n }),\n \"style\": barStyle,\n \"on\": {\n \"click\": function click(event) {\n _this3.$emit('click', event);\n }\n }\n }, [LeftIcon(), h(\"div\", {\n \"ref\": \"wrap\",\n \"class\": bem('wrap'),\n \"attrs\": {\n \"role\": \"marquee\"\n }\n }, [h(\"div\", {\n \"ref\": \"content\",\n \"class\": [bem('content'), {\n 'van-ellipsis': this.scrollable === false && !this.wrapable\n }],\n \"style\": contentStyle,\n \"on\": {\n \"transitionend\": this.onTransitionEnd\n }\n }, [this.slots() || this.text])]), RightIcon()]);\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace } from '../utils';\nimport { inherit } from '../utils/functional'; // Mixins\n\nimport { popupMixinProps } from '../mixins/popup'; // Components\n\nimport Popup from '../popup'; // Types\n\nvar _createNamespace = createNamespace('notify'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nfunction Notify(h, props, slots, ctx) {\n var style = {\n color: props.color,\n background: props.background\n };\n return h(Popup, _mergeJSXProps([{\n \"attrs\": {\n \"value\": props.value,\n \"position\": \"top\",\n \"overlay\": false,\n \"duration\": 0.2,\n \"lockScroll\": false\n },\n \"style\": style,\n \"class\": [bem([props.type]), props.className]\n }, inherit(ctx, true)]), [(slots.default == null ? void 0 : slots.default()) || props.message]);\n}\n\nNotify.props = _extends({}, popupMixinProps, {\n color: String,\n message: [Number, String],\n duration: [Number, String],\n className: null,\n background: String,\n getContainer: [String, Function],\n type: {\n type: String,\n default: 'danger'\n }\n});\nexport default createComponent(Notify);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport Vue from 'vue';\nimport VanNotify from './Notify';\nimport { isObject, isServer } from '../utils';\nimport { mount } from '../utils/functional';\nvar timer;\nvar instance;\n\nfunction parseOptions(message) {\n return isObject(message) ? message : {\n message: message\n };\n}\n\nfunction Notify(options) {\n /* istanbul ignore if */\n if (isServer) {\n return;\n }\n\n if (!instance) {\n instance = mount(VanNotify, {\n on: {\n click: function click(event) {\n if (instance.onClick) {\n instance.onClick(event);\n }\n },\n close: function close() {\n if (instance.onClose) {\n instance.onClose();\n }\n },\n opened: function opened() {\n if (instance.onOpened) {\n instance.onOpened();\n }\n }\n }\n });\n }\n\n options = _extends({}, Notify.currentOptions, parseOptions(options));\n\n _extends(instance, options);\n\n clearTimeout(timer);\n\n if (options.duration && options.duration > 0) {\n timer = setTimeout(Notify.clear, options.duration);\n }\n\n return instance;\n}\n\nfunction defaultOptions() {\n return {\n type: 'danger',\n value: true,\n message: '',\n color: undefined,\n background: undefined,\n duration: 3000,\n className: '',\n onClose: null,\n onClick: null,\n onOpened: null\n };\n}\n\nNotify.clear = function () {\n if (instance) {\n instance.value = false;\n }\n};\n\nNotify.currentOptions = defaultOptions();\n\nNotify.setDefaultOptions = function (options) {\n _extends(Notify.currentOptions, options);\n};\n\nNotify.resetDefaultOptions = function () {\n Notify.currentOptions = defaultOptions();\n};\n\nNotify.install = function () {\n Vue.use(VanNotify);\n};\n\nNotify.Component = VanNotify;\nVue.prototype.$notify = Notify;\nexport default Notify;","export default {\n render: function render() {\n var h = arguments[0];\n return h(\"svg\", {\n \"attrs\": {\n \"viewBox\": \"0 0 32 22\",\n \"xmlns\": \"http://www.w3.org/2000/svg\"\n }\n }, [h(\"path\", {\n \"attrs\": {\n \"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\",\n \"fill\": \"currentColor\"\n }\n })]);\n }\n};","export default {\n render: function render() {\n var h = arguments[0];\n return h(\"svg\", {\n \"attrs\": {\n \"viewBox\": \"0 0 30 24\",\n \"xmlns\": \"http://www.w3.org/2000/svg\"\n }\n }, [h(\"path\", {\n \"attrs\": {\n \"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\",\n \"fill\": \"currentColor\"\n }\n })]);\n }\n};","import { createNamespace } from '../utils';\nimport { TouchMixin } from '../mixins/touch';\nimport Loading from '../loading';\nimport DeleteIcon from './DeleteIcon';\nimport CollapseIcon from './CollapseIcon';\n\nvar _createNamespace = createNamespace('key'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [TouchMixin],\n props: {\n type: String,\n text: [Number, String],\n color: String,\n wider: Boolean,\n large: Boolean,\n loading: Boolean\n },\n data: function data() {\n return {\n active: false\n };\n },\n mounted: function mounted() {\n this.bindTouchEvent(this.$el);\n },\n methods: {\n onTouchStart: function onTouchStart(event) {\n // compatible with Vue 2.6 event bubble bug\n event.stopPropagation();\n this.touchStart(event);\n this.active = true;\n },\n onTouchMove: function onTouchMove(event) {\n this.touchMove(event);\n\n if (this.direction) {\n this.active = false;\n }\n },\n onTouchEnd: function onTouchEnd(event) {\n if (this.active) {\n // eliminate tap delay on safari\n // see: https://github.com/youzan/vant/issues/6836\n if (!this.slots('default')) {\n event.preventDefault();\n }\n\n this.active = false;\n this.$emit('press', this.text, this.type);\n }\n },\n genContent: function genContent() {\n var h = this.$createElement;\n var isExtra = this.type === 'extra';\n var isDelete = this.type === 'delete';\n var text = this.slots('default') || this.text;\n\n if (this.loading) {\n return h(Loading, {\n \"class\": bem('loading-icon')\n });\n }\n\n if (isDelete) {\n return text || h(DeleteIcon, {\n \"class\": bem('delete-icon')\n });\n }\n\n if (isExtra) {\n return text || h(CollapseIcon, {\n \"class\": bem('collapse-icon')\n });\n }\n\n return text;\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"class\": bem('wrapper', {\n wider: this.wider\n })\n }, [h(\"div\", {\n \"attrs\": {\n \"role\": \"button\",\n \"tabindex\": \"0\"\n },\n \"class\": bem([this.color, {\n large: this.large,\n active: this.active,\n delete: this.type === 'delete'\n }])\n }, [this.genContent()])]);\n }\n});","import { createNamespace } from '../utils';\nimport { stopPropagation } from '../utils/dom/event';\nimport { PortalMixin } from '../mixins/portal';\nimport { BindEventMixin } from '../mixins/bind-event';\nimport Key from './Key';\n\nvar _createNamespace = createNamespace('number-keyboard'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [PortalMixin(), BindEventMixin(function (bind) {\n if (this.hideOnClickOutside) {\n bind(document.body, 'touchstart', this.onBlur);\n }\n })],\n model: {\n event: 'update:value'\n },\n props: {\n show: Boolean,\n title: String,\n zIndex: [Number, String],\n randomKeyOrder: Boolean,\n closeButtonText: String,\n deleteButtonText: String,\n closeButtonLoading: Boolean,\n theme: {\n type: String,\n default: 'default'\n },\n value: {\n type: String,\n default: ''\n },\n extraKey: {\n type: [String, Array],\n default: ''\n },\n maxlength: {\n type: [Number, String],\n default: Number.MAX_VALUE\n },\n transition: {\n type: Boolean,\n default: true\n },\n showDeleteKey: {\n type: Boolean,\n default: true\n },\n hideOnClickOutside: {\n type: Boolean,\n default: true\n },\n safeAreaInsetBottom: {\n type: Boolean,\n default: true\n }\n },\n watch: {\n show: function show(val) {\n if (!this.transition) {\n this.$emit(val ? 'show' : 'hide');\n }\n }\n },\n computed: {\n keys: function keys() {\n if (this.theme === 'custom') {\n return this.genCustomKeys();\n }\n\n return this.genDefaultKeys();\n }\n },\n methods: {\n genBasicKeys: function genBasicKeys() {\n var keys = [];\n\n for (var i = 1; i <= 9; i++) {\n keys.push({\n text: i\n });\n }\n\n if (this.randomKeyOrder) {\n keys.sort(function () {\n return Math.random() > 0.5 ? 1 : -1;\n });\n }\n\n return keys;\n },\n genDefaultKeys: function genDefaultKeys() {\n return [].concat(this.genBasicKeys(), [{\n text: this.extraKey,\n type: 'extra'\n }, {\n text: 0\n }, {\n text: this.showDeleteKey ? this.deleteButtonText : '',\n type: this.showDeleteKey ? 'delete' : ''\n }]);\n },\n genCustomKeys: function genCustomKeys() {\n var keys = this.genBasicKeys();\n var extraKey = this.extraKey;\n var extraKeys = Array.isArray(extraKey) ? extraKey : [extraKey];\n\n if (extraKeys.length === 1) {\n keys.push({\n text: 0,\n wider: true\n }, {\n text: extraKeys[0],\n type: 'extra'\n });\n } else if (extraKeys.length === 2) {\n keys.push({\n text: extraKeys[0],\n type: 'extra'\n }, {\n text: 0\n }, {\n text: extraKeys[1],\n type: 'extra'\n });\n }\n\n return keys;\n },\n onBlur: function onBlur() {\n this.show && this.$emit('blur');\n },\n onClose: function onClose() {\n this.$emit('close');\n this.onBlur();\n },\n onAnimationEnd: function onAnimationEnd() {\n this.$emit(this.show ? 'show' : 'hide');\n },\n onPress: function onPress(text, type) {\n if (text === '') {\n if (type === 'extra') {\n this.onBlur();\n }\n\n return;\n }\n\n var value = this.value;\n\n if (type === 'delete') {\n this.$emit('delete');\n this.$emit('update:value', value.slice(0, value.length - 1));\n } else if (type === 'close') {\n this.onClose();\n } else if (value.length < this.maxlength) {\n this.$emit('input', text);\n this.$emit('update:value', value + text);\n }\n },\n genTitle: function genTitle() {\n var h = this.$createElement;\n var title = this.title,\n theme = this.theme,\n closeButtonText = this.closeButtonText;\n var titleLeft = this.slots('title-left');\n var showClose = closeButtonText && theme === 'default';\n var showTitle = title || showClose || titleLeft;\n\n if (!showTitle) {\n return;\n }\n\n return h(\"div\", {\n \"class\": bem('header')\n }, [titleLeft && h(\"span\", {\n \"class\": bem('title-left')\n }, [titleLeft]), title && h(\"h2\", {\n \"class\": bem('title')\n }, [title]), showClose && h(\"button\", {\n \"attrs\": {\n \"type\": \"button\"\n },\n \"class\": bem('close'),\n \"on\": {\n \"click\": this.onClose\n }\n }, [closeButtonText])]);\n },\n genKeys: function genKeys() {\n var _this = this;\n\n var h = this.$createElement;\n return this.keys.map(function (key) {\n return h(Key, {\n \"key\": key.text,\n \"attrs\": {\n \"text\": key.text,\n \"type\": key.type,\n \"wider\": key.wider,\n \"color\": key.color\n },\n \"on\": {\n \"press\": _this.onPress\n }\n }, [key.type === 'delete' && _this.slots('delete'), key.type === 'extra' && _this.slots('extra-key')]);\n });\n },\n genSidebar: function genSidebar() {\n var h = this.$createElement;\n\n if (this.theme === 'custom') {\n return h(\"div\", {\n \"class\": bem('sidebar')\n }, [this.showDeleteKey && h(Key, {\n \"attrs\": {\n \"large\": true,\n \"text\": this.deleteButtonText,\n \"type\": \"delete\"\n },\n \"on\": {\n \"press\": this.onPress\n }\n }, [this.slots('delete')]), h(Key, {\n \"attrs\": {\n \"large\": true,\n \"text\": this.closeButtonText,\n \"type\": \"close\",\n \"color\": \"blue\",\n \"loading\": this.closeButtonLoading\n },\n \"on\": {\n \"press\": this.onPress\n }\n })]);\n }\n }\n },\n render: function render() {\n var h = arguments[0];\n var Title = this.genTitle();\n return h(\"transition\", {\n \"attrs\": {\n \"name\": this.transition ? 'van-slide-up' : ''\n }\n }, [h(\"div\", {\n \"directives\": [{\n name: \"show\",\n value: this.show\n }],\n \"style\": {\n zIndex: this.zIndex\n },\n \"class\": bem({\n unfit: !this.safeAreaInsetBottom,\n 'with-title': Title\n }),\n \"on\": {\n \"touchstart\": stopPropagation,\n \"animationend\": this.onAnimationEnd,\n \"webkitAnimationEnd\": this.onAnimationEnd\n }\n }, [Title, h(\"div\", {\n \"class\": bem('body')\n }, [h(\"div\", {\n \"class\": bem('keys')\n }, [this.genKeys()]), this.genSidebar()])])]);\n }\n});","import { createNamespace } from '../utils';\nimport { BORDER } from '../utils/constant';\n\nvar _createNamespace = createNamespace('pagination'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nfunction makePage(number, text, active) {\n return {\n number: number,\n text: text,\n active: active\n };\n}\n\nexport default createComponent({\n props: {\n prevText: String,\n nextText: String,\n forceEllipses: Boolean,\n mode: {\n type: String,\n default: 'multi'\n },\n value: {\n type: Number,\n default: 0\n },\n pageCount: {\n type: [Number, String],\n default: 0\n },\n totalItems: {\n type: [Number, String],\n default: 0\n },\n itemsPerPage: {\n type: [Number, String],\n default: 10\n },\n showPageSize: {\n type: [Number, String],\n default: 5\n }\n },\n computed: {\n count: function count() {\n var count = this.pageCount || Math.ceil(this.totalItems / this.itemsPerPage);\n return Math.max(1, count);\n },\n pages: function pages() {\n var pages = [];\n var pageCount = this.count;\n var showPageSize = +this.showPageSize;\n\n if (this.mode !== 'multi') {\n return pages;\n } // Default page limits\n\n\n var startPage = 1;\n var endPage = pageCount;\n var isMaxSized = showPageSize < pageCount; // recompute if showPageSize\n\n if (isMaxSized) {\n // Current page is displayed in the middle of the visible ones\n startPage = Math.max(this.value - Math.floor(showPageSize / 2), 1);\n endPage = startPage + showPageSize - 1; // Adjust if limit is exceeded\n\n if (endPage > pageCount) {\n endPage = pageCount;\n startPage = endPage - showPageSize + 1;\n }\n } // Add page number links\n\n\n for (var number = startPage; number <= endPage; number++) {\n var page = makePage(number, number, number === this.value);\n pages.push(page);\n } // Add links to move between page sets\n\n\n if (isMaxSized && showPageSize > 0 && this.forceEllipses) {\n if (startPage > 1) {\n var previousPageSet = makePage(startPage - 1, '...', false);\n pages.unshift(previousPageSet);\n }\n\n if (endPage < pageCount) {\n var nextPageSet = makePage(endPage + 1, '...', false);\n pages.push(nextPageSet);\n }\n }\n\n return pages;\n }\n },\n watch: {\n value: {\n handler: function handler(page) {\n this.select(page || this.value);\n },\n immediate: true\n }\n },\n methods: {\n select: function select(page, emitChange) {\n page = Math.min(this.count, Math.max(1, page));\n\n if (this.value !== page) {\n this.$emit('input', page);\n\n if (emitChange) {\n this.$emit('change', page);\n }\n }\n }\n },\n render: function render() {\n var _this = this,\n _this$slots,\n _this$slots3;\n\n var h = arguments[0];\n var value = this.value;\n var simple = this.mode !== 'multi';\n\n var onSelect = function onSelect(value) {\n return function () {\n _this.select(value, true);\n };\n };\n\n return h(\"ul\", {\n \"class\": bem({\n simple: simple\n })\n }, [h(\"li\", {\n \"class\": [bem('item', {\n disabled: value === 1\n }), bem('prev'), BORDER],\n \"on\": {\n \"click\": onSelect(value - 1)\n }\n }, [((_this$slots = this.slots('prev-text')) != null ? _this$slots : this.prevText) || t('prev')]), this.pages.map(function (page) {\n var _this$slots2;\n\n return h(\"li\", {\n \"class\": [bem('item', {\n active: page.active\n }), bem('page'), BORDER],\n \"on\": {\n \"click\": onSelect(page.number)\n }\n }, [(_this$slots2 = _this.slots('page', page)) != null ? _this$slots2 : page.text]);\n }), simple && h(\"li\", {\n \"class\": bem('page-desc')\n }, [this.slots('pageDesc') || value + \"/\" + this.count]), h(\"li\", {\n \"class\": [bem('item', {\n disabled: value === this.count\n }), bem('next'), BORDER],\n \"on\": {\n \"click\": onSelect(value + 1)\n }\n }, [((_this$slots3 = this.slots('next-text')) != null ? _this$slots3 : this.nextText) || t('next')])]);\n }\n});","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace } from '../utils';\nimport { inherit } from '../utils/functional';\nimport { BORDER_TOP } from '../utils/constant'; // Components\n\nimport Cell from '../cell';\nimport CellGroup from '../cell-group'; // Types\n\nvar _createNamespace = createNamespace('panel'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nfunction Panel(h, props, slots, ctx) {\n var Content = function Content() {\n return [slots.header ? slots.header() : h(Cell, {\n \"attrs\": {\n \"icon\": props.icon,\n \"label\": props.desc,\n \"title\": props.title,\n \"value\": props.status,\n \"valueClass\": bem('header-value')\n },\n \"class\": bem('header')\n }), h(\"div\", {\n \"class\": bem('content')\n }, [slots.default && slots.default()]), slots.footer && h(\"div\", {\n \"class\": [bem('footer'), BORDER_TOP]\n }, [slots.footer()])];\n };\n\n return h(CellGroup, _mergeJSXProps([{\n \"class\": bem(),\n \"scopedSlots\": {\n default: Content\n }\n }, inherit(ctx, true)]));\n}\n\nPanel.props = {\n icon: String,\n desc: String,\n title: String,\n status: String\n};\nexport default createComponent(Panel);","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace, addUnit } from '../utils';\nimport { emit, inherit } from '../utils/functional';\nimport { BORDER_LEFT, BORDER_SURROUND } from '../utils/constant'; // Types\n\nvar _createNamespace = createNamespace('password-input'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nfunction PasswordInput(h, props, slots, ctx) {\n var _ref2;\n\n var mask = props.mask,\n value = props.value,\n length = props.length,\n gutter = props.gutter,\n focused = props.focused,\n errorInfo = props.errorInfo;\n var info = errorInfo || props.info;\n var Points = [];\n\n for (var i = 0; i < length; i++) {\n var _ref;\n\n var _char = value[i];\n var showBorder = i !== 0 && !gutter;\n var showCursor = focused && i === value.length;\n var style = void 0;\n\n if (i !== 0 && gutter) {\n style = {\n marginLeft: addUnit(gutter)\n };\n }\n\n Points.push(h(\"li\", {\n \"class\": [(_ref = {}, _ref[BORDER_LEFT] = showBorder, _ref), bem('item', {\n focus: showCursor\n })],\n \"style\": style\n }, [mask ? h(\"i\", {\n \"style\": {\n visibility: _char ? 'visible' : 'hidden'\n }\n }) : _char, showCursor && h(\"div\", {\n \"class\": bem('cursor')\n })]));\n }\n\n return h(\"div\", {\n \"class\": bem()\n }, [h(\"ul\", _mergeJSXProps([{\n \"class\": [bem('security'), (_ref2 = {}, _ref2[BORDER_SURROUND] = !gutter, _ref2)],\n \"on\": {\n \"touchstart\": function touchstart(event) {\n event.stopPropagation();\n emit(ctx, 'focus', event);\n }\n }\n }, inherit(ctx, true)]), [Points]), info && h(\"div\", {\n \"class\": bem(errorInfo ? 'error-info' : 'info')\n }, [info])]);\n}\n\nPasswordInput.props = {\n info: String,\n gutter: [Number, String],\n focused: Boolean,\n errorInfo: String,\n mask: {\n type: Boolean,\n default: true\n },\n value: {\n type: String,\n default: ''\n },\n length: {\n type: [Number, String],\n default: 6\n }\n};\nexport default createComponent(PasswordInput);","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction getBoundingClientRect(element) {\n var rect = element.getBoundingClientRect();\n return {\n width: rect.width,\n height: rect.height,\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n x: rect.left,\n y: rect.top\n };\n}\n\n/*:: import type { Window } from '../types'; */\n\n/*:: declare function getWindow(node: Node | Window): Window; */\nfunction getWindow(node) {\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}\n\nfunction getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}\n\n/*:: declare function isElement(node: mixed): boolean %checks(node instanceof\n Element); */\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n/*:: declare function isHTMLElement(node: mixed): boolean %checks(node instanceof\n HTMLElement); */\n\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}\n\nfunction getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}\n\nfunction getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}\n\nfunction getDocumentElement(element) {\n // $FlowFixMe: assume body is always available\n return ((isElement(element) ? element.ownerDocument : element.document) || window.document).documentElement;\n}\n\nfunction getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}\n\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\n\nfunction isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}\n\n// Composite means it takes into account transforms as well as layout.\n\nfunction getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement);\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}\n\n// Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\nfunction getLayoutRect(element) {\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n}\n\nfunction getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// $FlowFixMe: this is a quicker (but less type safe) way to save quite some bytes from the bundle\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || // DOM Element detected\n // $FlowFixMe: need a better way to handle this...\n element.host || // ShadowRoot detected\n // $FlowFixMe: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}\n\nfunction getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}\n\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the \nreference element's position.\n*/\n\nfunction listScrollParents(element, list) {\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = getNodeName(scrollParent) === 'body';\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}\n\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n var offsetParent = element.offsetParent;\n\n if (offsetParent) {\n var html = getDocumentElement(offsetParent);\n\n if (getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static' && getComputedStyle(html).position !== 'static') {\n return html;\n }\n }\n\n return offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var currentNode = getParentNode(element);\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.willChange && css.willChange !== 'auto') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nfunction getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static') {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}\n\nvar top = 'top';\nvar bottom = 'bottom';\nvar right = 'right';\nvar left = 'left';\nvar auto = 'auto';\nvar basePlacements = [top, bottom, right, left];\nvar start = 'start';\nvar end = 'end';\nvar placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nvar beforeRead = 'beforeRead';\nvar read = 'read';\nvar afterRead = 'afterRead'; // pure-logic modifiers\n\nvar beforeMain = 'beforeMain';\nvar main = 'main';\nvar afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nvar beforeWrite = 'beforeWrite';\nvar write = 'write';\nvar afterWrite = 'afterWrite';\nvar modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nfunction orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}\n\nfunction debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}\n\nfunction format(str) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return [].concat(args).reduce(function (p, c) {\n return p.replace(/%s/, c);\n }, str);\n}\n\nvar INVALID_MODIFIER_ERROR = 'Popper: modifier \"%s\" provided an invalid %s property, expected %s but got %s';\nvar MISSING_DEPENDENCY_ERROR = 'Popper: modifier \"%s\" requires \"%s\", but \"%s\" modifier is not available';\nvar VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options'];\nfunction validateModifiers(modifiers) {\n modifiers.forEach(function (modifier) {\n Object.keys(modifier).forEach(function (key) {\n switch (key) {\n case 'name':\n if (typeof modifier.name !== 'string') {\n console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '\"name\"', '\"string\"', \"\\\"\" + String(modifier.name) + \"\\\"\"));\n }\n\n break;\n\n case 'enabled':\n if (typeof modifier.enabled !== 'boolean') {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"enabled\"', '\"boolean\"', \"\\\"\" + String(modifier.enabled) + \"\\\"\"));\n }\n\n case 'phase':\n if (modifierPhases.indexOf(modifier.phase) < 0) {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"phase\"', \"either \" + modifierPhases.join(', '), \"\\\"\" + String(modifier.phase) + \"\\\"\"));\n }\n\n break;\n\n case 'fn':\n if (typeof modifier.fn !== 'function') {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"fn\"', '\"function\"', \"\\\"\" + String(modifier.fn) + \"\\\"\"));\n }\n\n break;\n\n case 'effect':\n if (typeof modifier.effect !== 'function') {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"effect\"', '\"function\"', \"\\\"\" + String(modifier.fn) + \"\\\"\"));\n }\n\n break;\n\n case 'requires':\n if (!Array.isArray(modifier.requires)) {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"requires\"', '\"array\"', \"\\\"\" + String(modifier.requires) + \"\\\"\"));\n }\n\n break;\n\n case 'requiresIfExists':\n if (!Array.isArray(modifier.requiresIfExists)) {\n console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '\"requiresIfExists\"', '\"array\"', \"\\\"\" + String(modifier.requiresIfExists) + \"\\\"\"));\n }\n\n break;\n\n case 'options':\n case 'data':\n break;\n\n default:\n console.error(\"PopperJS: an invalid property has been provided to the \\\"\" + modifier.name + \"\\\" modifier, valid properties are \" + VALID_PROPERTIES.map(function (s) {\n return \"\\\"\" + s + \"\\\"\";\n }).join(', ') + \"; but \\\"\" + key + \"\\\" was provided.\");\n }\n\n modifier.requires && modifier.requires.forEach(function (requirement) {\n if (modifiers.find(function (mod) {\n return mod.name === requirement;\n }) == null) {\n console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement));\n }\n });\n });\n });\n}\n\nfunction uniqueBy(arr, fn) {\n var identifiers = new Set();\n return arr.filter(function (item) {\n var identifier = fn(item);\n\n if (!identifiers.has(identifier)) {\n identifiers.add(identifier);\n return true;\n }\n });\n}\n\nfunction getBasePlacement(placement) {\n return placement.split('-')[0];\n}\n\nfunction mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? _extends(_extends(_extends({}, existing), current), {}, {\n options: _extends(_extends({}, existing.options), current.options),\n data: _extends(_extends({}, existing.data), current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}\n\nfunction getVariation(placement) {\n return placement.split('-')[1];\n}\n\nfunction getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}\n\nfunction computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = Math.floor(offsets[mainAxis]) - Math.floor(reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = Math.floor(offsets[mainAxis]) + Math.ceil(reference[len] / 2 - element[len] / 2);\n break;\n }\n }\n\n return offsets;\n}\n\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nfunction popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: _extends(_extends({}, DEFAULT_OPTIONS), defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(options) {\n cleanupModifierEffects();\n state.options = _extends(_extends(_extends({}, defaultOptions), state.options), options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = _extends({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nvar eventListeners = {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name; // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nvar popperOffsets$1 = {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsets(_ref) {\n var x = _ref.x,\n y = _ref.y;\n var win = window;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: Math.round(x * dpr) / dpr || 0,\n y: Math.round(y * dpr) / dpr || 0\n };\n}\n\nfunction mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive;\n\n var _roundOffsets = roundOffsets(offsets),\n x = _roundOffsets.x,\n y = _roundOffsets.y;\n\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n } // $FlowFixMe: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n /*:: offsetParent = (offsetParent: Element); */\n\n\n if (placement === top) {\n sideY = bottom;\n y -= offsetParent.clientHeight - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left) {\n sideX = right;\n x -= offsetParent.clientWidth - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = _extends({\n position: position\n }, adaptive && unsetSides);\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return _extends(_extends({}, commonStyles), {}, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return _extends(_extends({}, commonStyles), {}, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref3) {\n var state = _ref3.state,\n options = _ref3.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = _extends(_extends({}, state.styles.popper), mapToStyles(_extends(_extends({}, commonStyles), {}, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = _extends(_extends({}, state.styles.arrow), mapToStyles(_extends(_extends({}, commonStyles), {}, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false\n })));\n }\n\n state.attributes.popper = _extends(_extends({}, state.attributes.popper), {}, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nvar computeStyles$1 = {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};\n\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe\n\n\n _extends(element.style, style);\n\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect$1(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n\n _extends(state.elements.popper.style, initialStyles.popper);\n\n if (state.elements.arrow) {\n _extends(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe\n\n\n _extends(element.style, style);\n\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nvar applyStyles$1 = {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect$1,\n requires: ['computeStyles']\n};\n\nvar defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nfunction distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(_extends(_extends({}, rects), {}, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nvar offset$1 = {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};\n\nexport { createPopper, offset$1 as offsetModifier };\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createPopper as _createPopper, offsetModifier } from '@vant/popperjs';\nimport { createNamespace } from '../utils';\nimport { BORDER_BOTTOM } from '../utils/constant'; // Mixins\n\nimport { ClickOutsideMixin } from '../mixins/click-outside'; // Components\n\nimport Icon from '../icon';\nimport Popup from '../popup';\n\nvar _createNamespace = createNamespace('popover'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ClickOutsideMixin({\n event: 'touchstart',\n method: 'onClickOutside'\n })],\n props: {\n value: Boolean,\n trigger: String,\n overlay: Boolean,\n offset: {\n type: Array,\n default: function _default() {\n return [0, 8];\n }\n },\n theme: {\n type: String,\n default: 'light'\n },\n actions: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n placement: {\n type: String,\n default: 'bottom'\n },\n getContainer: {\n type: [String, Function],\n default: 'body'\n },\n closeOnClickAction: {\n type: Boolean,\n default: true\n }\n },\n watch: {\n value: 'updateLocation',\n placement: 'updateLocation'\n },\n mounted: function mounted() {\n this.updateLocation();\n },\n beforeDestroy: function beforeDestroy() {\n if (this.popper) {\n this.popper.destroy();\n this.popper = null;\n }\n },\n methods: {\n createPopper: function createPopper() {\n return _createPopper(this.$refs.wrapper, this.$refs.popover.$el, {\n placement: this.placement,\n modifiers: [{\n name: 'computeStyles',\n options: {\n adaptive: false,\n gpuAcceleration: false\n }\n }, _extends({}, offsetModifier, {\n options: {\n offset: this.offset\n }\n })]\n });\n },\n updateLocation: function updateLocation() {\n var _this = this;\n\n this.$nextTick(function () {\n if (!_this.value) {\n return;\n }\n\n if (!_this.popper) {\n _this.popper = _this.createPopper();\n } else {\n _this.popper.setOptions({\n placement: _this.placement\n });\n }\n });\n },\n renderAction: function renderAction(action, index) {\n var _this2 = this;\n\n var h = this.$createElement;\n var icon = action.icon,\n text = action.text,\n disabled = action.disabled,\n className = action.className;\n return h(\"div\", {\n \"attrs\": {\n \"role\": \"menuitem\"\n },\n \"class\": [bem('action', {\n disabled: disabled,\n 'with-icon': icon\n }), className],\n \"on\": {\n \"click\": function click() {\n return _this2.onClickAction(action, index);\n }\n }\n }, [icon && h(Icon, {\n \"attrs\": {\n \"name\": icon\n },\n \"class\": bem('action-icon')\n }), h(\"div\", {\n \"class\": [bem('action-text'), BORDER_BOTTOM]\n }, [text])]);\n },\n onToggle: function onToggle(value) {\n this.$emit('input', value);\n },\n onClickWrapper: function onClickWrapper() {\n if (this.trigger === 'click') {\n this.onToggle(!this.value);\n }\n },\n onTouchstart: function onTouchstart(event) {\n event.stopPropagation();\n this.$emit('touchstart', event);\n },\n onClickAction: function onClickAction(action, index) {\n if (action.disabled) {\n return;\n }\n\n this.$emit('select', action, index);\n\n if (this.closeOnClickAction) {\n this.$emit('input', false);\n }\n },\n onClickOutside: function onClickOutside() {\n this.$emit('input', false);\n },\n onOpen: function onOpen() {\n this.$emit('open');\n },\n\n /* istanbul ignore next */\n onOpened: function onOpened() {\n this.$emit('opened');\n },\n onClose: function onClose() {\n this.$emit('close');\n },\n\n /* istanbul ignore next */\n onClosed: function onClosed() {\n this.$emit('closed');\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"span\", {\n \"ref\": \"wrapper\",\n \"class\": bem('wrapper'),\n \"on\": {\n \"click\": this.onClickWrapper\n }\n }, [h(Popup, {\n \"ref\": \"popover\",\n \"attrs\": {\n \"value\": this.value,\n \"overlay\": this.overlay,\n \"position\": null,\n \"transition\": \"van-popover-zoom\",\n \"lockScroll\": false,\n \"getContainer\": this.getContainer\n },\n \"class\": bem([this.theme]),\n \"on\": {\n \"open\": this.onOpen,\n \"close\": this.onClose,\n \"input\": this.onToggle,\n \"opened\": this.onOpened,\n \"closed\": this.onClosed\n },\n \"nativeOn\": {\n \"touchstart\": this.onTouchstart\n }\n }, [h(\"div\", {\n \"class\": bem('arrow')\n }), h(\"div\", {\n \"class\": bem('content'),\n \"attrs\": {\n \"role\": \"menu\"\n }\n }, [this.slots('default') || this.actions.map(this.renderAction)])]), this.slots('reference')]);\n }\n});","import { createNamespace, addUnit } from '../utils';\n\nvar _createNamespace = createNamespace('progress'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n props: {\n color: String,\n inactive: Boolean,\n pivotText: String,\n textColor: String,\n pivotColor: String,\n trackColor: String,\n strokeWidth: [Number, String],\n percentage: {\n type: [Number, String],\n required: true,\n validator: function validator(value) {\n return value >= 0 && value <= 100;\n }\n },\n showPivot: {\n type: Boolean,\n default: true\n }\n },\n data: function data() {\n return {\n pivotWidth: 0,\n progressWidth: 0\n };\n },\n mounted: function mounted() {\n this.resize();\n },\n watch: {\n showPivot: 'resize',\n pivotText: 'resize'\n },\n methods: {\n // @exposed-api\n resize: function resize() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.progressWidth = _this.$el.offsetWidth;\n _this.pivotWidth = _this.$refs.pivot ? _this.$refs.pivot.offsetWidth : 0;\n });\n }\n },\n render: function render() {\n var h = arguments[0];\n var pivotText = this.pivotText,\n percentage = this.percentage;\n var text = pivotText != null ? pivotText : percentage + '%';\n var showPivot = this.showPivot && text;\n var background = this.inactive ? '#cacaca' : this.color;\n var pivotStyle = {\n color: this.textColor,\n left: (this.progressWidth - this.pivotWidth) * percentage / 100 + \"px\",\n background: this.pivotColor || background\n };\n var portionStyle = {\n background: background,\n width: this.progressWidth * percentage / 100 + 'px'\n };\n var wrapperStyle = {\n background: this.trackColor,\n height: addUnit(this.strokeWidth)\n };\n return h(\"div\", {\n \"class\": bem(),\n \"style\": wrapperStyle\n }, [h(\"span\", {\n \"class\": bem('portion'),\n \"style\": portionStyle\n }, [showPivot && h(\"span\", {\n \"ref\": \"pivot\",\n \"style\": pivotStyle,\n \"class\": bem('pivot')\n }, [text])])]);\n }\n});","// Utils\nimport { createNamespace } from '../utils';\nimport { preventDefault } from '../utils/dom/event';\nimport { getScrollTop, getScroller } from '../utils/dom/scroll'; // Mixins\n\nimport { TouchMixin } from '../mixins/touch'; // Components\n\nimport Loading from '../loading';\n\nvar _createNamespace = createNamespace('pull-refresh'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nvar DEFAULT_HEAD_HEIGHT = 50;\nvar TEXT_STATUS = ['pulling', 'loosing', 'success'];\nexport default createComponent({\n mixins: [TouchMixin],\n props: {\n disabled: Boolean,\n successText: String,\n pullingText: String,\n loosingText: String,\n loadingText: String,\n value: {\n type: Boolean,\n required: true\n },\n successDuration: {\n type: [Number, String],\n default: 500\n },\n animationDuration: {\n type: [Number, String],\n default: 300\n },\n headHeight: {\n type: [Number, String],\n default: DEFAULT_HEAD_HEIGHT\n }\n },\n data: function data() {\n return {\n status: 'normal',\n distance: 0,\n duration: 0\n };\n },\n computed: {\n touchable: function touchable() {\n return this.status !== 'loading' && this.status !== 'success' && !this.disabled;\n },\n headStyle: function headStyle() {\n if (this.headHeight !== DEFAULT_HEAD_HEIGHT) {\n return {\n height: this.headHeight + \"px\"\n };\n }\n }\n },\n watch: {\n value: function value(loading) {\n this.duration = this.animationDuration;\n\n if (loading) {\n this.setStatus(+this.headHeight, true);\n } else if (this.slots('success') || this.successText) {\n this.showSuccessTip();\n } else {\n this.setStatus(0, false);\n }\n }\n },\n mounted: function mounted() {\n this.bindTouchEvent(this.$refs.track);\n this.scrollEl = getScroller(this.$el);\n },\n methods: {\n checkPullStart: function checkPullStart(event) {\n this.ceiling = getScrollTop(this.scrollEl) === 0;\n\n if (this.ceiling) {\n this.duration = 0;\n this.touchStart(event);\n }\n },\n onTouchStart: function onTouchStart(event) {\n if (this.touchable) {\n this.checkPullStart(event);\n }\n },\n onTouchMove: function onTouchMove(event) {\n if (!this.touchable) {\n return;\n }\n\n if (!this.ceiling) {\n this.checkPullStart(event);\n }\n\n this.touchMove(event);\n\n if (this.ceiling && this.deltaY >= 0 && this.direction === 'vertical') {\n preventDefault(event);\n this.setStatus(this.ease(this.deltaY));\n }\n },\n onTouchEnd: function onTouchEnd() {\n var _this = this;\n\n if (this.touchable && this.ceiling && this.deltaY) {\n this.duration = this.animationDuration;\n\n if (this.status === 'loosing') {\n this.setStatus(+this.headHeight, true);\n this.$emit('input', true); // ensure value change can be watched\n\n this.$nextTick(function () {\n _this.$emit('refresh');\n });\n } else {\n this.setStatus(0);\n }\n }\n },\n ease: function ease(distance) {\n var headHeight = +this.headHeight;\n\n if (distance > headHeight) {\n if (distance < headHeight * 2) {\n distance = headHeight + (distance - headHeight) / 2;\n } else {\n distance = headHeight * 1.5 + (distance - headHeight * 2) / 4;\n }\n }\n\n return Math.round(distance);\n },\n setStatus: function setStatus(distance, isLoading) {\n var status;\n\n if (isLoading) {\n status = 'loading';\n } else if (distance === 0) {\n status = 'normal';\n } else {\n status = distance < this.headHeight ? 'pulling' : 'loosing';\n }\n\n this.distance = distance;\n\n if (status !== this.status) {\n this.status = status;\n }\n },\n genStatus: function genStatus() {\n var h = this.$createElement;\n var status = this.status,\n distance = this.distance;\n var slot = this.slots(status, {\n distance: distance\n });\n\n if (slot) {\n return slot;\n }\n\n var nodes = [];\n var text = this[status + \"Text\"] || t(status);\n\n if (TEXT_STATUS.indexOf(status) !== -1) {\n nodes.push(h(\"div\", {\n \"class\": bem('text')\n }, [text]));\n }\n\n if (status === 'loading') {\n nodes.push(h(Loading, {\n \"attrs\": {\n \"size\": \"16\"\n }\n }, [text]));\n }\n\n return nodes;\n },\n showSuccessTip: function showSuccessTip() {\n var _this2 = this;\n\n this.status = 'success';\n setTimeout(function () {\n _this2.setStatus(0);\n }, this.successDuration);\n }\n },\n render: function render() {\n var h = arguments[0];\n var trackStyle = {\n transitionDuration: this.duration + \"ms\",\n transform: this.distance ? \"translate3d(0,\" + this.distance + \"px, 0)\" : ''\n };\n return h(\"div\", {\n \"class\": bem()\n }, [h(\"div\", {\n \"ref\": \"track\",\n \"class\": bem('track'),\n \"style\": trackStyle\n }, [h(\"div\", {\n \"class\": bem('head'),\n \"style\": this.headStyle\n }, [this.genStatus()]), this.slots()])]);\n }\n});","// Utils\nimport { createNamespace, addUnit } from '../utils';\nimport { preventDefault } from '../utils/dom/event'; // Mixins\n\nimport { TouchMixin } from '../mixins/touch';\nimport { FieldMixin } from '../mixins/field'; // Components\n\nimport Icon from '../icon';\n\nvar _createNamespace = createNamespace('rate'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nfunction getRateStatus(value, index, allowHalf) {\n if (value >= index) {\n return 'full';\n }\n\n if (value + 0.5 >= index && allowHalf) {\n return 'half';\n }\n\n return 'void';\n}\n\nexport default createComponent({\n mixins: [TouchMixin, FieldMixin],\n props: {\n size: [Number, String],\n color: String,\n gutter: [Number, String],\n readonly: Boolean,\n disabled: Boolean,\n allowHalf: Boolean,\n voidColor: String,\n iconPrefix: String,\n disabledColor: String,\n value: {\n type: Number,\n default: 0\n },\n icon: {\n type: String,\n default: 'star'\n },\n voidIcon: {\n type: String,\n default: 'star-o'\n },\n count: {\n type: [Number, String],\n default: 5\n },\n touchable: {\n type: Boolean,\n default: true\n }\n },\n computed: {\n list: function list() {\n var list = [];\n\n for (var i = 1; i <= this.count; i++) {\n list.push(getRateStatus(this.value, i, this.allowHalf));\n }\n\n return list;\n },\n sizeWithUnit: function sizeWithUnit() {\n return addUnit(this.size);\n },\n gutterWithUnit: function gutterWithUnit() {\n return addUnit(this.gutter);\n }\n },\n mounted: function mounted() {\n this.bindTouchEvent(this.$el);\n },\n methods: {\n select: function select(index) {\n if (!this.disabled && !this.readonly && index !== this.value) {\n this.$emit('input', index);\n this.$emit('change', index);\n }\n },\n onTouchStart: function onTouchStart(event) {\n var _this = this;\n\n if (this.readonly || this.disabled || !this.touchable) {\n return;\n }\n\n this.touchStart(event);\n var rects = this.$refs.items.map(function (item) {\n return item.getBoundingClientRect();\n });\n var ranges = [];\n rects.forEach(function (rect, index) {\n if (_this.allowHalf) {\n ranges.push({\n score: index + 0.5,\n left: rect.left\n }, {\n score: index + 1,\n left: rect.left + rect.width / 2\n });\n } else {\n ranges.push({\n score: index + 1,\n left: rect.left\n });\n }\n });\n this.ranges = ranges;\n },\n onTouchMove: function onTouchMove(event) {\n if (this.readonly || this.disabled || !this.touchable) {\n return;\n }\n\n this.touchMove(event);\n\n if (this.direction === 'horizontal') {\n preventDefault(event);\n var clientX = event.touches[0].clientX;\n this.select(this.getScoreByPosition(clientX));\n }\n },\n getScoreByPosition: function getScoreByPosition(x) {\n for (var i = this.ranges.length - 1; i > 0; i--) {\n if (x > this.ranges[i].left) {\n return this.ranges[i].score;\n }\n }\n\n return this.allowHalf ? 0.5 : 1;\n },\n genStar: function genStar(status, index) {\n var _this2 = this;\n\n var h = this.$createElement;\n var icon = this.icon,\n color = this.color,\n count = this.count,\n voidIcon = this.voidIcon,\n disabled = this.disabled,\n voidColor = this.voidColor,\n disabledColor = this.disabledColor;\n var score = index + 1;\n var isFull = status === 'full';\n var isVoid = status === 'void';\n var style;\n\n if (this.gutterWithUnit && score !== +count) {\n style = {\n paddingRight: this.gutterWithUnit\n };\n }\n\n return h(\"div\", {\n \"ref\": \"items\",\n \"refInFor\": true,\n \"key\": index,\n \"attrs\": {\n \"role\": \"radio\",\n \"tabindex\": \"0\",\n \"aria-setsize\": count,\n \"aria-posinset\": score,\n \"aria-checked\": String(!isVoid)\n },\n \"style\": style,\n \"class\": bem('item')\n }, [h(Icon, {\n \"attrs\": {\n \"size\": this.sizeWithUnit,\n \"name\": isFull ? icon : voidIcon,\n \"color\": disabled ? disabledColor : isFull ? color : voidColor,\n \"classPrefix\": this.iconPrefix,\n \"data-score\": score\n },\n \"class\": bem('icon', {\n disabled: disabled,\n full: isFull\n }),\n \"on\": {\n \"click\": function click() {\n _this2.select(score);\n }\n }\n }), this.allowHalf && h(Icon, {\n \"attrs\": {\n \"size\": this.sizeWithUnit,\n \"name\": isVoid ? voidIcon : icon,\n \"color\": disabled ? disabledColor : isVoid ? voidColor : color,\n \"classPrefix\": this.iconPrefix,\n \"data-score\": score - 0.5\n },\n \"class\": bem('icon', ['half', {\n disabled: disabled,\n full: !isVoid\n }]),\n \"on\": {\n \"click\": function click() {\n _this2.select(score - 0.5);\n }\n }\n })]);\n }\n },\n render: function render() {\n var _this3 = this;\n\n var h = arguments[0];\n return h(\"div\", {\n \"class\": bem({\n readonly: this.readonly,\n disabled: this.disabled\n }),\n \"attrs\": {\n \"tabindex\": \"0\",\n \"role\": \"radiogroup\"\n }\n }, [this.list.map(function (status, index) {\n return _this3.genStar(status, index);\n })]);\n }\n});","import { createNamespace } from '../utils';\nimport { ParentMixin } from '../mixins/relation';\n\nvar _createNamespace = createNamespace('row'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ParentMixin('vanRow')],\n props: {\n type: String,\n align: String,\n justify: String,\n tag: {\n type: String,\n default: 'div'\n },\n gutter: {\n type: [Number, String],\n default: 0\n }\n },\n computed: {\n spaces: function spaces() {\n var gutter = Number(this.gutter);\n\n if (!gutter) {\n return;\n }\n\n var spaces = [];\n var groups = [[]];\n var totalSpan = 0;\n this.children.forEach(function (item, index) {\n totalSpan += Number(item.span);\n\n if (totalSpan > 24) {\n groups.push([index]);\n totalSpan -= 24;\n } else {\n groups[groups.length - 1].push(index);\n }\n });\n groups.forEach(function (group) {\n var averagePadding = gutter * (group.length - 1) / group.length;\n group.forEach(function (item, index) {\n if (index === 0) {\n spaces.push({\n right: averagePadding\n });\n } else {\n var left = gutter - spaces[item - 1].right;\n var right = averagePadding - left;\n spaces.push({\n left: left,\n right: right\n });\n }\n });\n });\n return spaces;\n }\n },\n methods: {\n onClick: function onClick(event) {\n this.$emit('click', event);\n }\n },\n render: function render() {\n var _bem;\n\n var h = arguments[0];\n var align = this.align,\n justify = this.justify;\n var flex = this.type === 'flex';\n return h(this.tag, {\n \"class\": bem((_bem = {\n flex: flex\n }, _bem[\"align-\" + align] = flex && align, _bem[\"justify-\" + justify] = flex && justify, _bem)),\n \"on\": {\n \"click\": this.onClick\n }\n }, [this.slots()]);\n }\n});","import _mergeJSXProps2 from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n// Utils\nimport { createNamespace } from '../utils';\nimport { inherit, emit } from '../utils/functional';\nimport { preventDefault } from '../utils/dom/event'; // Components\n\nimport Field from '../field'; // Types\n\nvar _createNamespace = createNamespace('search'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nfunction Search(h, props, slots, ctx) {\n function Label() {\n if (slots.label || props.label) {\n return h(\"div\", {\n \"class\": bem('label')\n }, [slots.label ? slots.label() : props.label]);\n }\n }\n\n function Action() {\n if (!props.showAction) {\n return;\n }\n\n function onCancel() {\n if (slots.action) {\n return;\n }\n\n emit(ctx, 'input', '');\n emit(ctx, 'cancel');\n }\n\n return h(\"div\", {\n \"class\": bem('action'),\n \"attrs\": {\n \"role\": \"button\",\n \"tabindex\": \"0\"\n },\n \"on\": {\n \"click\": onCancel\n }\n }, [slots.action ? slots.action() : props.actionText || t('cancel')]);\n }\n\n var fieldData = {\n attrs: ctx.data.attrs,\n on: _extends({}, ctx.listeners, {\n keypress: function keypress(event) {\n // press enter\n if (event.keyCode === 13) {\n preventDefault(event);\n emit(ctx, 'search', props.value);\n }\n\n emit(ctx, 'keypress', event);\n }\n })\n };\n var inheritData = inherit(ctx);\n inheritData.attrs = undefined;\n return h(\"div\", _mergeJSXProps2([{\n \"class\": bem({\n 'show-action': props.showAction\n }),\n \"style\": {\n background: props.background\n }\n }, inheritData]), [slots.left == null ? void 0 : slots.left(), h(\"div\", {\n \"class\": bem('content', props.shape)\n }, [Label(), h(Field, _mergeJSXProps([{\n \"attrs\": {\n \"type\": \"search\",\n \"border\": false,\n \"value\": props.value,\n \"leftIcon\": props.leftIcon,\n \"rightIcon\": props.rightIcon,\n \"clearable\": props.clearable,\n \"clearTrigger\": props.clearTrigger\n },\n \"scopedSlots\": {\n 'left-icon': slots['left-icon'],\n 'right-icon': slots['right-icon']\n }\n }, fieldData]))]), Action()]);\n}\n\nSearch.props = {\n value: String,\n label: String,\n rightIcon: String,\n actionText: String,\n background: String,\n showAction: Boolean,\n clearTrigger: String,\n shape: {\n type: String,\n default: 'square'\n },\n clearable: {\n type: Boolean,\n default: true\n },\n leftIcon: {\n type: String,\n default: 'search'\n }\n};\nexport default createComponent(Search);","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// Utils\nimport { createNamespace } from '../utils'; // Mixins\n\nimport { popupMixinProps } from '../mixins/popup'; // Components\n\nimport Popup from '../popup';\nvar PRESET_ICONS = ['qq', 'link', 'weibo', 'wechat', 'poster', 'qrcode', 'weapp-qrcode', 'wechat-moments'];\n\nvar _createNamespace = createNamespace('share-sheet'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nexport default createComponent({\n props: _extends({}, popupMixinProps, {\n title: String,\n cancelText: String,\n description: String,\n getContainer: [String, Function],\n options: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n overlay: {\n type: Boolean,\n default: true\n },\n closeOnPopstate: {\n type: Boolean,\n default: true\n },\n safeAreaInsetBottom: {\n type: Boolean,\n default: true\n },\n closeOnClickOverlay: {\n type: Boolean,\n default: true\n }\n }),\n methods: {\n onCancel: function onCancel() {\n this.toggle(false);\n this.$emit('cancel');\n },\n onSelect: function onSelect(option, index) {\n this.$emit('select', option, index);\n },\n toggle: function toggle(val) {\n this.$emit('input', val);\n },\n getIconURL: function getIconURL(icon) {\n if (PRESET_ICONS.indexOf(icon) !== -1) {\n return \"https://img01.yzcdn.cn/vant/share-sheet-\" + icon + \".png\";\n }\n\n return icon;\n },\n genHeader: function genHeader() {\n var h = this.$createElement;\n var title = this.slots('title') || this.title;\n var description = this.slots('description') || this.description;\n\n if (!title && !description) {\n return;\n }\n\n return h(\"div\", {\n \"class\": bem('header')\n }, [title && h(\"h2\", {\n \"class\": bem('title')\n }, [title]), description && h(\"span\", {\n \"class\": bem('description')\n }, [description])]);\n },\n genOptions: function genOptions(options, showBorder) {\n var _this = this;\n\n var h = this.$createElement;\n return h(\"div\", {\n \"class\": bem('options', {\n border: showBorder\n })\n }, [options.map(function (option, index) {\n return h(\"div\", {\n \"attrs\": {\n \"role\": \"button\",\n \"tabindex\": \"0\"\n },\n \"class\": [bem('option'), option.className],\n \"on\": {\n \"click\": function click() {\n _this.onSelect(option, index);\n }\n }\n }, [h(\"img\", {\n \"attrs\": {\n \"src\": _this.getIconURL(option.icon)\n },\n \"class\": bem('icon')\n }), option.name && h(\"span\", {\n \"class\": bem('name')\n }, [option.name]), option.description && h(\"span\", {\n \"class\": bem('option-description')\n }, [option.description])]);\n })]);\n },\n genRows: function genRows() {\n var _this2 = this;\n\n var options = this.options;\n\n if (Array.isArray(options[0])) {\n return options.map(function (item, index) {\n return _this2.genOptions(item, index !== 0);\n });\n }\n\n return this.genOptions(options);\n },\n genCancelText: function genCancelText() {\n var _this$cancelText;\n\n var h = this.$createElement;\n var cancelText = (_this$cancelText = this.cancelText) != null ? _this$cancelText : t('cancel');\n\n if (cancelText) {\n return h(\"button\", {\n \"attrs\": {\n \"type\": \"button\"\n },\n \"class\": bem('cancel'),\n \"on\": {\n \"click\": this.onCancel\n }\n }, [cancelText]);\n }\n },\n onClickOverlay: function onClickOverlay() {\n this.$emit('click-overlay');\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(Popup, {\n \"attrs\": {\n \"round\": true,\n \"value\": this.value,\n \"position\": \"bottom\",\n \"overlay\": this.overlay,\n \"duration\": this.duration,\n \"lazyRender\": this.lazyRender,\n \"lockScroll\": this.lockScroll,\n \"getContainer\": this.getContainer,\n \"closeOnPopstate\": this.closeOnPopstate,\n \"closeOnClickOverlay\": this.closeOnClickOverlay,\n \"safeAreaInsetBottom\": this.safeAreaInsetBottom\n },\n \"class\": bem(),\n \"on\": {\n \"input\": this.toggle,\n \"click-overlay\": this.onClickOverlay\n }\n }, [this.genHeader(), this.genRows(), this.genCancelText()]);\n }\n});","import { createNamespace } from '../utils';\nimport { ParentMixin } from '../mixins/relation';\n\nvar _createNamespace = createNamespace('sidebar'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ParentMixin('vanSidebar')],\n model: {\n prop: 'activeKey'\n },\n props: {\n activeKey: {\n type: [Number, String],\n default: 0\n }\n },\n data: function data() {\n return {\n index: +this.activeKey\n };\n },\n watch: {\n activeKey: function activeKey() {\n this.setIndex(+this.activeKey);\n }\n },\n methods: {\n setIndex: function setIndex(index) {\n if (index !== this.index) {\n this.index = index;\n this.$emit('change', index);\n }\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"class\": bem()\n }, [this.slots()]);\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createNamespace } from '../utils';\nimport { ChildrenMixin } from '../mixins/relation';\nimport { route, routeProps } from '../utils/router';\nimport Info from '../info';\n\nvar _createNamespace = createNamespace('sidebar-item'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ChildrenMixin('vanSidebar')],\n props: _extends({}, routeProps, {\n dot: Boolean,\n // @deprecated\n info: [Number, String],\n badge: [Number, String],\n title: String,\n disabled: Boolean\n }),\n computed: {\n select: function select() {\n return this.index === +this.parent.activeKey;\n }\n },\n methods: {\n onClick: function onClick() {\n if (this.disabled) {\n return;\n }\n\n this.$emit('click', this.index);\n this.parent.$emit('input', this.index);\n this.parent.setIndex(this.index);\n route(this.$router, this);\n }\n },\n render: function render() {\n var _this$slots, _this$badge;\n\n var h = arguments[0];\n\n if (process.env.NODE_ENV === 'development' && this.info) {\n console.warn('[Vant] SidebarItem: \"info\" prop is deprecated, use \"badge\" prop instead.');\n }\n\n return h(\"a\", {\n \"class\": bem({\n select: this.select,\n disabled: this.disabled\n }),\n \"on\": {\n \"click\": this.onClick\n }\n }, [h(\"div\", {\n \"class\": bem('text')\n }, [(_this$slots = this.slots('title')) != null ? _this$slots : this.title, h(Info, {\n \"attrs\": {\n \"dot\": this.dot,\n \"info\": (_this$badge = this.badge) != null ? _this$badge : this.info\n },\n \"class\": bem('info')\n })])]);\n }\n});","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace, addUnit } from '../utils';\nimport { inherit } from '../utils/functional'; // Types\n\nvar _createNamespace = createNamespace('skeleton'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nvar DEFAULT_ROW_WIDTH = '100%';\nvar DEFAULT_LAST_ROW_WIDTH = '60%';\n\nfunction Skeleton(h, props, slots, ctx) {\n if (!props.loading) {\n return slots.default && slots.default();\n }\n\n function Title() {\n if (props.title) {\n return h(\"h3\", {\n \"class\": bem('title'),\n \"style\": {\n width: addUnit(props.titleWidth)\n }\n });\n }\n }\n\n function Rows() {\n var Rows = [];\n var rowWidth = props.rowWidth;\n\n function getRowWidth(index) {\n if (rowWidth === DEFAULT_ROW_WIDTH && index === +props.row - 1) {\n return DEFAULT_LAST_ROW_WIDTH;\n }\n\n if (Array.isArray(rowWidth)) {\n return rowWidth[index];\n }\n\n return rowWidth;\n }\n\n for (var i = 0; i < props.row; i++) {\n Rows.push(h(\"div\", {\n \"class\": bem('row'),\n \"style\": {\n width: addUnit(getRowWidth(i))\n }\n }));\n }\n\n return Rows;\n }\n\n function Avatar() {\n if (props.avatar) {\n var size = addUnit(props.avatarSize);\n return h(\"div\", {\n \"class\": bem('avatar', props.avatarShape),\n \"style\": {\n width: size,\n height: size\n }\n });\n }\n }\n\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem({\n animate: props.animate,\n round: props.round\n })\n }, inherit(ctx)]), [Avatar(), h(\"div\", {\n \"class\": bem('content')\n }, [Title(), Rows()])]);\n}\n\nSkeleton.props = {\n title: Boolean,\n round: Boolean,\n avatar: Boolean,\n titleWidth: [Number, String],\n avatarSize: [Number, String],\n row: {\n type: [Number, String],\n default: 0\n },\n loading: {\n type: Boolean,\n default: true\n },\n animate: {\n type: Boolean,\n default: true\n },\n avatarShape: {\n type: String,\n default: 'round'\n },\n rowWidth: {\n type: [Number, String, Array],\n default: DEFAULT_ROW_WIDTH\n }\n};\nexport default createComponent(Skeleton);","/**\n * Sku only provide zh-CN lang by default\n */\nexport default {\n 'zh-CN': {\n vanSku: {\n select: '请选择',\n selected: '已选',\n selectSku: '请先选择商品规格',\n soldout: '库存不足',\n originPrice: '原价',\n minusTip: '至少选择一件',\n minusStartTip: function minusStartTip(start) {\n return start + \"\\u4EF6\\u8D77\\u552E\";\n },\n unavailable: '商品已经无法购买啦',\n stock: '剩余',\n stockUnit: '件',\n quotaTip: function quotaTip(quota) {\n return \"\\u6BCF\\u4EBA\\u9650\\u8D2D\" + quota + \"\\u4EF6\";\n },\n quotaUsedTip: function quotaUsedTip(quota, count) {\n return \"\\u6BCF\\u4EBA\\u9650\\u8D2D\" + quota + \"\\u4EF6\\uFF0C\\u4F60\\u5DF2\\u8D2D\\u4E70\" + count + \"\\u4EF6\";\n }\n },\n vanSkuActions: {\n buy: '立即购买',\n addCart: '加入购物车'\n },\n vanSkuImgUploader: {\n oversize: function oversize(maxSize) {\n return \"\\u6700\\u5927\\u53EF\\u4E0A\\u4F20\\u56FE\\u7247\\u4E3A\" + maxSize + \"MB\\uFF0C\\u8BF7\\u5C1D\\u8BD5\\u538B\\u7F29\\u56FE\\u7247\\u5C3A\\u5BF8\";\n },\n fail: '上传失败',\n uploading: '上传中...'\n },\n vanSkuStepper: {\n quotaLimit: function quotaLimit(quota) {\n return \"\\u9650\\u8D2D\" + quota + \"\\u4EF6\";\n },\n quotaStart: function quotaStart(start) {\n return start + \"\\u4EF6\\u8D77\\u552E\";\n },\n comma: ',',\n num: '购买数量'\n },\n vanSkuMessages: {\n fill: '请填写',\n upload: '请上传',\n imageLabel: '仅限一张',\n invalid: {\n tel: '请填写正确的数字格式留言',\n mobile: '手机号长度为6-20位数字',\n email: '请填写正确的邮箱',\n id_no: '请填写正确的身份证号码'\n },\n placeholder: {\n id_no: '请填写身份证号',\n text: '请填写留言',\n tel: '请填写数字',\n email: '请填写邮箱',\n date: '请选择日期',\n time: '请选择时间',\n textarea: '请填写留言',\n mobile: '请填写手机号'\n }\n },\n vanSkuRow: {\n multiple: '可多选'\n },\n vanSkuDatetimeField: {\n title: {\n date: '选择年月日',\n time: '选择时间',\n datetime: '选择日期时间'\n },\n format: {\n year: '年',\n month: '月',\n day: '日',\n hour: '时',\n minute: '分'\n }\n }\n }\n};","export var LIMIT_TYPE = {\n QUOTA_LIMIT: 0,\n STOCK_LIMIT: 1\n};\nexport var UNSELECTED_SKU_VALUE_ID = '';\nexport default {\n LIMIT_TYPE: LIMIT_TYPE,\n UNSELECTED_SKU_VALUE_ID: UNSELECTED_SKU_VALUE_ID\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { UNSELECTED_SKU_VALUE_ID } from '../constants';\n/*\n normalize sku tree\n\n [\n {\n count: 2,\n k: \"品种\", // 规格名称 skuKeyName\n k_id: \"1200\", // skuKeyId\n k_s: \"s1\" // skuKeyStr\n v: [ // skuValues\n { // skuValue\n id: \"1201\", // skuValueId\n name: \"萌\" // 具体的规格值 skuValueName\n }, {\n id: \"973\",\n name: \"帅\"\n }\n ]\n },\n ...\n ]\n |\n v\n {\n s1: [{\n id: \"1201\",\n name: \"萌\"\n }, {\n id: \"973\",\n name: \"帅\"\n }],\n ...\n }\n */\n\nexport var normalizeSkuTree = function normalizeSkuTree(skuTree) {\n var normalizedTree = {};\n skuTree.forEach(function (treeItem) {\n normalizedTree[treeItem.k_s] = treeItem.v;\n });\n return normalizedTree;\n};\nexport var normalizePropList = function normalizePropList(propList) {\n var normalizedProp = {};\n propList.forEach(function (item) {\n var itemObj = {};\n item.v.forEach(function (it) {\n itemObj[it.id] = it;\n });\n normalizedProp[item.k_id] = itemObj;\n });\n return normalizedProp;\n}; // 判断是否所有的sku都已经选中\n\nexport var isAllSelected = function isAllSelected(skuTree, selectedSku) {\n // 筛选selectedSku对象中key值不为空的值\n var selected = Object.keys(selectedSku).filter(function (skuKeyStr) {\n return selectedSku[skuKeyStr] !== UNSELECTED_SKU_VALUE_ID;\n });\n return skuTree.length === selected.length;\n}; // 根据已选择的 sku 获取 skuComb\n\nexport var getSkuComb = function getSkuComb(skuList, selectedSku) {\n var skuComb = skuList.filter(function (item) {\n return Object.keys(selectedSku).every(function (skuKeyStr) {\n return String(item[skuKeyStr]) === String(selectedSku[skuKeyStr]);\n });\n });\n return skuComb[0];\n}; // 获取已选择的sku名称\n\nexport var getSelectedSkuValues = function getSelectedSkuValues(skuTree, selectedSku) {\n var normalizedTree = normalizeSkuTree(skuTree);\n return Object.keys(selectedSku).reduce(function (selectedValues, skuKeyStr) {\n var skuValues = normalizedTree[skuKeyStr];\n var skuValueId = selectedSku[skuKeyStr];\n\n if (skuValueId !== UNSELECTED_SKU_VALUE_ID) {\n var skuValue = skuValues.filter(function (value) {\n return value.id === skuValueId;\n })[0];\n skuValue && selectedValues.push(skuValue);\n }\n\n return selectedValues;\n }, []);\n}; // 判断sku是否可选\n\nexport var isSkuChoosable = function isSkuChoosable(skuList, selectedSku, skuToChoose) {\n var _extends2;\n\n var key = skuToChoose.key,\n valueId = skuToChoose.valueId; // 先假设sku已选中,拼入已选中sku对象中\n\n var matchedSku = _extends({}, selectedSku, (_extends2 = {}, _extends2[key] = valueId, _extends2)); // 再判断剩余sku是否全部不可选,若不可选则当前sku不可选中\n\n\n var skusToCheck = Object.keys(matchedSku).filter(function (skuKey) {\n return matchedSku[skuKey] !== UNSELECTED_SKU_VALUE_ID;\n });\n var filteredSku = skuList.filter(function (sku) {\n return skusToCheck.every(function (skuKey) {\n return String(matchedSku[skuKey]) === String(sku[skuKey]);\n });\n });\n var stock = filteredSku.reduce(function (total, sku) {\n total += sku.stock_num;\n return total;\n }, 0);\n return stock > 0;\n};\nexport var getSelectedPropValues = function getSelectedPropValues(propList, selectedProp) {\n var normalizeProp = normalizePropList(propList);\n return Object.keys(selectedProp).reduce(function (acc, cur) {\n selectedProp[cur].forEach(function (it) {\n acc.push(_extends({}, normalizeProp[cur][it]));\n });\n return acc;\n }, []);\n};\nexport var getSelectedProperties = function getSelectedProperties(propList, selectedProp) {\n var list = [];\n (propList || []).forEach(function (prop) {\n if (selectedProp[prop.k_id] && selectedProp[prop.k_id].length > 0) {\n var v = [];\n prop.v.forEach(function (it) {\n if (selectedProp[prop.k_id].indexOf(it.id) > -1) {\n v.push(_extends({}, it));\n }\n });\n list.push(_extends({}, prop, {\n v: v\n }));\n }\n });\n return list;\n};\nexport default {\n normalizeSkuTree: normalizeSkuTree,\n getSkuComb: getSkuComb,\n getSelectedSkuValues: getSelectedSkuValues,\n isAllSelected: isAllSelected,\n isSkuChoosable: isSkuChoosable,\n getSelectedPropValues: getSelectedPropValues,\n getSelectedProperties: getSelectedProperties\n};","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\n// Utils\nimport { createNamespace } from '../../utils';\nimport { inherit } from '../../utils/functional';\nimport { BORDER_BOTTOM } from '../../utils/constant'; // Components\n\nimport Image from '../../image'; // Types\n\nvar _createNamespace = createNamespace('sku-header'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nfunction getSkuImgValue(sku, selectedSku) {\n var imgValue;\n sku.tree.some(function (item) {\n var id = selectedSku[item.k_s];\n\n if (id && item.v) {\n var matchedSku = item.v.filter(function (skuValue) {\n return skuValue.id === id;\n })[0] || {};\n var img = matchedSku.previewImgUrl || matchedSku.imgUrl || matchedSku.img_url;\n\n if (img) {\n imgValue = _extends({}, matchedSku, {\n ks: item.k_s,\n imgUrl: img\n });\n return true;\n }\n }\n\n return false;\n });\n return imgValue;\n}\n\nfunction SkuHeader(h, props, slots, ctx) {\n var _slots$skuHeaderIma;\n\n var sku = props.sku,\n goods = props.goods,\n skuEventBus = props.skuEventBus,\n selectedSku = props.selectedSku,\n _props$showHeaderImag = props.showHeaderImage,\n showHeaderImage = _props$showHeaderImag === void 0 ? true : _props$showHeaderImag;\n var selectedValue = getSkuImgValue(sku, selectedSku);\n var imgUrl = selectedValue ? selectedValue.imgUrl : goods.picture;\n\n var previewImage = function previewImage() {\n skuEventBus.$emit('sku:previewImage', selectedValue);\n };\n\n return h(\"div\", _mergeJSXProps([{\n \"class\": [bem(), BORDER_BOTTOM]\n }, inherit(ctx)]), [showHeaderImage && h(Image, {\n \"attrs\": {\n \"fit\": \"cover\",\n \"src\": imgUrl\n },\n \"class\": bem('img-wrap'),\n \"on\": {\n \"click\": previewImage\n }\n }, [(_slots$skuHeaderIma = slots['sku-header-image-extra']) == null ? void 0 : _slots$skuHeaderIma.call(slots)]), h(\"div\", {\n \"class\": bem('goods-info')\n }, [slots.default == null ? void 0 : slots.default()])]);\n}\n\nSkuHeader.props = {\n sku: Object,\n goods: Object,\n skuEventBus: Object,\n selectedSku: Object,\n showHeaderImage: Boolean\n};\nexport default createComponent(SkuHeader);","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace } from '../../utils';\nimport { inherit } from '../../utils/functional'; // Types\n\nvar _createNamespace = createNamespace('sku-header-item'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nfunction SkuHeader(h, props, slots, ctx) {\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem()\n }, inherit(ctx)]), [slots.default && slots.default()]);\n}\n\nexport default createComponent(SkuHeader);","// Utils\nimport { createNamespace } from '../../utils';\nimport { BORDER_BOTTOM } from '../../utils/constant'; // Mixins\n\nimport { ParentMixin } from '../../mixins/relation';\nimport { BindEventMixin } from '../../mixins/bind-event';\n\nvar _createNamespace = createNamespace('sku-row'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nexport { bem };\nexport default createComponent({\n mixins: [ParentMixin('vanSkuRows'), BindEventMixin(function (bind) {\n if (this.scrollable && this.$refs.scroller) {\n bind(this.$refs.scroller, 'scroll', this.onScroll);\n }\n })],\n props: {\n skuRow: Object\n },\n data: function data() {\n return {\n progress: 0\n };\n },\n computed: {\n scrollable: function scrollable() {\n return this.skuRow.largeImageMode && this.skuRow.v.length > 6;\n }\n },\n methods: {\n onScroll: function onScroll() {\n var _this$$refs = this.$refs,\n scroller = _this$$refs.scroller,\n row = _this$$refs.row;\n var distance = row.offsetWidth - scroller.offsetWidth;\n this.progress = scroller.scrollLeft / distance;\n },\n genTitle: function genTitle() {\n var h = this.$createElement;\n return h(\"div\", {\n \"class\": bem('title')\n }, [this.skuRow.k, this.skuRow.is_multiple && h(\"span\", {\n \"class\": bem('title-multiple')\n }, [\"\\uFF08\", t('multiple'), \"\\uFF09\"])]);\n },\n genIndicator: function genIndicator() {\n var h = this.$createElement;\n\n if (this.scrollable) {\n var style = {\n transform: \"translate3d(\" + this.progress * 20 + \"px, 0, 0)\"\n };\n return h(\"div\", {\n \"class\": bem('indicator-wrapper')\n }, [h(\"div\", {\n \"class\": bem('indicator')\n }, [h(\"div\", {\n \"class\": bem('indicator-slider'),\n \"style\": style\n })])]);\n }\n },\n genContent: function genContent() {\n var h = this.$createElement;\n var nodes = this.slots();\n\n if (this.skuRow.largeImageMode) {\n var top = [];\n var bottom = [];\n nodes.forEach(function (node, index) {\n var group = Math.floor(index / 3) % 2 === 0 ? top : bottom;\n group.push(node);\n });\n return h(\"div\", {\n \"class\": bem('scroller'),\n \"ref\": \"scroller\"\n }, [h(\"div\", {\n \"class\": bem('row'),\n \"ref\": \"row\"\n }, [top]), bottom.length ? h(\"div\", {\n \"class\": bem('row')\n }, [bottom]) : null]);\n }\n\n return nodes;\n },\n centerItem: function centerItem(selectSkuId) {\n if (!this.skuRow.largeImageMode || !selectSkuId) {\n return;\n }\n\n var _this$children = this.children,\n children = _this$children === void 0 ? [] : _this$children;\n var _this$$refs2 = this.$refs,\n scroller = _this$$refs2.scroller,\n row = _this$$refs2.row;\n var child = children.find(function (it) {\n return +it.skuValue.id === +selectSkuId;\n });\n\n if (scroller && row && child && child.$el) {\n var target = child.$el;\n var to = target.offsetLeft - (scroller.offsetWidth - target.offsetWidth) / 2;\n scroller.scrollLeft = to;\n }\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"class\": [bem(), BORDER_BOTTOM]\n }, [this.genTitle(), this.genContent(), this.genIndicator()]);\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { bem } from './SkuRow';\nimport { createNamespace } from '../../utils';\nimport { isSkuChoosable } from '../utils/sku-helper';\nimport { ChildrenMixin } from '../../mixins/relation';\nimport Icon from '../../icon';\nimport Image from '../../image';\n\nvar _createNamespace = createNamespace('sku-row-item'),\n createComponent = _createNamespace[0];\n\nexport default createComponent({\n mixins: [ChildrenMixin('vanSkuRows')],\n props: {\n lazyLoad: Boolean,\n skuValue: Object,\n skuKeyStr: String,\n skuEventBus: Object,\n selectedSku: Object,\n largeImageMode: Boolean,\n disableSoldoutSku: Boolean,\n skuList: {\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n computed: {\n imgUrl: function imgUrl() {\n var url = this.skuValue.imgUrl || this.skuValue.img_url;\n return this.largeImageMode ? url || 'https://img01.yzcdn.cn/upload_files/2020/06/24/FmKWDg0bN9rMcTp9ne8MXiQWGtLn.png' : url;\n },\n choosable: function choosable() {\n if (!this.disableSoldoutSku) {\n return true;\n }\n\n return isSkuChoosable(this.skuList, this.selectedSku, {\n key: this.skuKeyStr,\n valueId: this.skuValue.id\n });\n }\n },\n methods: {\n onSelect: function onSelect() {\n if (this.choosable) {\n this.skuEventBus.$emit('sku:select', _extends({}, this.skuValue, {\n skuKeyStr: this.skuKeyStr\n }));\n }\n },\n onPreviewImg: function onPreviewImg(event) {\n event.stopPropagation();\n var skuValue = this.skuValue,\n skuKeyStr = this.skuKeyStr;\n this.skuEventBus.$emit('sku:previewImage', _extends({}, skuValue, {\n ks: skuKeyStr,\n imgUrl: skuValue.imgUrl || skuValue.img_url\n }));\n },\n genImage: function genImage(classPrefix) {\n var h = this.$createElement;\n\n if (this.imgUrl) {\n return h(Image, {\n \"attrs\": {\n \"fit\": \"cover\",\n \"src\": this.imgUrl,\n \"lazyLoad\": this.lazyLoad\n },\n \"class\": classPrefix + \"-img\"\n });\n }\n }\n },\n render: function render() {\n var h = arguments[0];\n var choosed = this.skuValue.id === this.selectedSku[this.skuKeyStr];\n var classPrefix = this.largeImageMode ? bem('image-item') : bem('item');\n return h(\"span\", {\n \"class\": [classPrefix, choosed ? classPrefix + \"--active\" : '', !this.choosable ? classPrefix + \"--disabled\" : ''],\n \"on\": {\n \"click\": this.onSelect\n }\n }, [this.genImage(classPrefix), h(\"div\", {\n \"class\": classPrefix + \"-name\"\n }, [this.largeImageMode ? h(\"span\", {\n \"class\": {\n 'van-multi-ellipsis--l2': this.largeImageMode\n }\n }, [this.skuValue.name]) : this.skuValue.name]), this.largeImageMode && h(Icon, {\n \"attrs\": {\n \"name\": \"enlarge\"\n },\n \"class\": classPrefix + \"-img-icon\",\n \"on\": {\n \"click\": this.onPreviewImg\n }\n })]);\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { createNamespace } from '../../utils';\n\nvar _createNamespace = createNamespace('sku-row-prop-item'),\n createComponent = _createNamespace[0];\n\nexport default createComponent({\n props: {\n skuValue: Object,\n skuKeyStr: String,\n skuEventBus: Object,\n selectedProp: Object,\n multiple: Boolean\n },\n computed: {\n choosed: function choosed() {\n var selectedProp = this.selectedProp,\n skuKeyStr = this.skuKeyStr,\n skuValue = this.skuValue;\n\n if (selectedProp && selectedProp[skuKeyStr]) {\n return selectedProp[skuKeyStr].indexOf(skuValue.id) > -1;\n }\n\n return false;\n }\n },\n methods: {\n onSelect: function onSelect() {\n this.skuEventBus.$emit('sku:propSelect', _extends({}, this.skuValue, {\n skuKeyStr: this.skuKeyStr,\n multiple: this.multiple\n }));\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"span\", {\n \"class\": ['van-sku-row__item', {\n 'van-sku-row__item--active': this.choosed\n }],\n \"on\": {\n \"click\": this.onSelect\n }\n }, [h(\"span\", {\n \"class\": \"van-sku-row__item-name\"\n }, [this.skuValue.name])]);\n }\n});","import _mergeJSXProps2 from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\nimport { createNamespace, isDef, addUnit } from '../utils';\nimport { resetScroll } from '../utils/dom/reset-scroll';\nimport { preventDefault } from '../utils/dom/event';\nimport { formatNumber as _formatNumber } from '../utils/format/number';\nimport { isNaN } from '../utils/validate/number';\nimport { FieldMixin } from '../mixins/field';\n\nvar _createNamespace = createNamespace('stepper'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nvar LONG_PRESS_START_TIME = 600;\nvar LONG_PRESS_INTERVAL = 200;\n\nfunction equal(value1, value2) {\n return String(value1) === String(value2);\n} // add num and avoid float number\n\n\nfunction add(num1, num2) {\n var cardinal = Math.pow(10, 10);\n return Math.round((num1 + num2) * cardinal) / cardinal;\n}\n\nexport default createComponent({\n mixins: [FieldMixin],\n props: {\n value: null,\n theme: String,\n integer: Boolean,\n disabled: Boolean,\n allowEmpty: Boolean,\n inputWidth: [Number, String],\n buttonSize: [Number, String],\n asyncChange: Boolean,\n placeholder: String,\n disablePlus: Boolean,\n disableMinus: Boolean,\n disableInput: Boolean,\n decimalLength: [Number, String],\n name: {\n type: [Number, String],\n default: ''\n },\n min: {\n type: [Number, String],\n default: 1\n },\n max: {\n type: [Number, String],\n default: Infinity\n },\n step: {\n type: [Number, String],\n default: 1\n },\n defaultValue: {\n type: [Number, String],\n default: 1\n },\n showPlus: {\n type: Boolean,\n default: true\n },\n showMinus: {\n type: Boolean,\n default: true\n },\n showInput: {\n type: Boolean,\n default: true\n },\n longPress: {\n type: Boolean,\n default: true\n }\n },\n data: function data() {\n var _this$value;\n\n var defaultValue = (_this$value = this.value) != null ? _this$value : this.defaultValue;\n var value = this.format(defaultValue);\n\n if (!equal(value, this.value)) {\n this.$emit('input', value);\n }\n\n return {\n currentValue: value\n };\n },\n computed: {\n minusDisabled: function minusDisabled() {\n return this.disabled || this.disableMinus || this.currentValue <= +this.min;\n },\n plusDisabled: function plusDisabled() {\n return this.disabled || this.disablePlus || this.currentValue >= +this.max;\n },\n inputStyle: function inputStyle() {\n var style = {};\n\n if (this.inputWidth) {\n style.width = addUnit(this.inputWidth);\n }\n\n if (this.buttonSize) {\n style.height = addUnit(this.buttonSize);\n }\n\n return style;\n },\n buttonStyle: function buttonStyle() {\n if (this.buttonSize) {\n var size = addUnit(this.buttonSize);\n return {\n width: size,\n height: size\n };\n }\n }\n },\n watch: {\n max: 'check',\n min: 'check',\n integer: 'check',\n decimalLength: 'check',\n value: function value(val) {\n if (!equal(val, this.currentValue)) {\n this.currentValue = this.format(val);\n }\n },\n currentValue: function currentValue(val) {\n this.$emit('input', val);\n this.$emit('change', val, {\n name: this.name\n });\n }\n },\n methods: {\n check: function check() {\n var val = this.format(this.currentValue);\n\n if (!equal(val, this.currentValue)) {\n this.currentValue = val;\n }\n },\n // formatNumber illegal characters\n formatNumber: function formatNumber(value) {\n return _formatNumber(String(value), !this.integer);\n },\n format: function format(value) {\n if (this.allowEmpty && value === '') {\n return value;\n }\n\n value = this.formatNumber(value); // format range\n\n value = value === '' ? 0 : +value;\n value = isNaN(value) ? this.min : value;\n value = Math.max(Math.min(this.max, value), this.min); // format decimal\n\n if (isDef(this.decimalLength)) {\n value = value.toFixed(this.decimalLength);\n }\n\n return value;\n },\n onInput: function onInput(event) {\n var value = event.target.value;\n var formatted = this.formatNumber(value); // limit max decimal length\n\n if (isDef(this.decimalLength) && formatted.indexOf('.') !== -1) {\n var pair = formatted.split('.');\n formatted = pair[0] + \".\" + pair[1].slice(0, this.decimalLength);\n }\n\n if (!equal(value, formatted)) {\n event.target.value = formatted;\n } // perfer number type\n\n\n if (formatted === String(+formatted)) {\n formatted = +formatted;\n }\n\n this.emitChange(formatted);\n },\n emitChange: function emitChange(value) {\n if (this.asyncChange) {\n this.$emit('input', value);\n this.$emit('change', value, {\n name: this.name\n });\n } else {\n this.currentValue = value;\n }\n },\n onChange: function onChange() {\n var type = this.type;\n\n if (this[type + \"Disabled\"]) {\n this.$emit('overlimit', type);\n return;\n }\n\n var diff = type === 'minus' ? -this.step : +this.step;\n var value = this.format(add(+this.currentValue, diff));\n this.emitChange(value);\n this.$emit(type);\n },\n onFocus: function onFocus(event) {\n // readonly not work in lagacy mobile safari\n if (this.disableInput && this.$refs.input) {\n this.$refs.input.blur();\n } else {\n this.$emit('focus', event);\n }\n },\n onBlur: function onBlur(event) {\n var value = this.format(event.target.value);\n event.target.value = value;\n this.currentValue = value;\n this.$emit('blur', event);\n resetScroll();\n },\n longPressStep: function longPressStep() {\n var _this = this;\n\n this.longPressTimer = setTimeout(function () {\n _this.onChange();\n\n _this.longPressStep(_this.type);\n }, LONG_PRESS_INTERVAL);\n },\n onTouchStart: function onTouchStart() {\n var _this2 = this;\n\n if (!this.longPress) {\n return;\n }\n\n clearTimeout(this.longPressTimer);\n this.isLongPress = false;\n this.longPressTimer = setTimeout(function () {\n _this2.isLongPress = true;\n\n _this2.onChange();\n\n _this2.longPressStep();\n }, LONG_PRESS_START_TIME);\n },\n onTouchEnd: function onTouchEnd(event) {\n if (!this.longPress) {\n return;\n }\n\n clearTimeout(this.longPressTimer);\n\n if (this.isLongPress) {\n preventDefault(event);\n }\n },\n onMousedown: function onMousedown(event) {\n // fix mobile safari page scroll down issue\n // see: https://github.com/youzan/vant/issues/7690\n if (this.disableInput) {\n event.preventDefault();\n }\n }\n },\n render: function render() {\n var _this3 = this;\n\n var h = arguments[0];\n\n var createListeners = function createListeners(type) {\n return {\n on: {\n click: function click(e) {\n // disable double tap scrolling on mobile safari\n e.preventDefault();\n _this3.type = type;\n\n _this3.onChange();\n },\n touchstart: function touchstart() {\n _this3.type = type;\n\n _this3.onTouchStart();\n },\n touchend: _this3.onTouchEnd,\n touchcancel: _this3.onTouchEnd\n }\n };\n };\n\n return h(\"div\", {\n \"class\": bem([this.theme])\n }, [h(\"button\", _mergeJSXProps([{\n \"directives\": [{\n name: \"show\",\n value: this.showMinus\n }],\n \"attrs\": {\n \"type\": \"button\"\n },\n \"style\": this.buttonStyle,\n \"class\": bem('minus', {\n disabled: this.minusDisabled\n })\n }, createListeners('minus')])), h(\"input\", {\n \"directives\": [{\n name: \"show\",\n value: this.showInput\n }],\n \"ref\": \"input\",\n \"attrs\": {\n \"type\": this.integer ? 'tel' : 'text',\n \"role\": \"spinbutton\",\n \"disabled\": this.disabled,\n \"readonly\": this.disableInput,\n \"inputmode\": this.integer ? 'numeric' : 'decimal',\n \"placeholder\": this.placeholder,\n \"aria-valuemax\": this.max,\n \"aria-valuemin\": this.min,\n \"aria-valuenow\": this.currentValue\n },\n \"class\": bem('input'),\n \"domProps\": {\n \"value\": this.currentValue\n },\n \"style\": this.inputStyle,\n \"on\": {\n \"input\": this.onInput,\n \"focus\": this.onFocus,\n \"blur\": this.onBlur,\n \"mousedown\": this.onMousedown\n }\n }), h(\"button\", _mergeJSXProps2([{\n \"directives\": [{\n name: \"show\",\n value: this.showPlus\n }],\n \"attrs\": {\n \"type\": \"button\"\n },\n \"style\": this.buttonStyle,\n \"class\": bem('plus', {\n disabled: this.plusDisabled\n })\n }, createListeners('plus')]))]);\n }\n});","import { createNamespace } from '../../utils';\nimport { LIMIT_TYPE } from '../constants';\nimport Stepper from '../../stepper';\nvar namespace = createNamespace('sku-stepper');\nvar createComponent = namespace[0];\nvar t = namespace[2];\nvar QUOTA_LIMIT = LIMIT_TYPE.QUOTA_LIMIT,\n STOCK_LIMIT = LIMIT_TYPE.STOCK_LIMIT;\nexport default createComponent({\n props: {\n stock: Number,\n skuEventBus: Object,\n skuStockNum: Number,\n selectedNum: Number,\n stepperTitle: String,\n disableStepperInput: Boolean,\n customStepperConfig: Object,\n hideQuotaText: Boolean,\n quota: {\n type: Number,\n default: 0\n },\n quotaUsed: {\n type: Number,\n default: 0\n },\n startSaleNum: {\n type: Number,\n default: 1\n }\n },\n data: function data() {\n return {\n currentNum: this.selectedNum,\n // 购买限制类型: 限购/库存\n limitType: STOCK_LIMIT\n };\n },\n watch: {\n currentNum: function currentNum(num) {\n var intValue = parseInt(num, 10);\n\n if (intValue >= this.stepperMinLimit && intValue <= this.stepperLimit) {\n this.skuEventBus.$emit('sku:numChange', intValue);\n }\n },\n stepperLimit: function stepperLimit(limit) {\n if (limit < this.currentNum && this.stepperMinLimit <= limit) {\n this.currentNum = limit;\n }\n\n this.checkState(this.stepperMinLimit, limit);\n },\n stepperMinLimit: function stepperMinLimit(start) {\n if (start > this.currentNum || start > this.stepperLimit) {\n this.currentNum = start;\n }\n\n this.checkState(start, this.stepperLimit);\n }\n },\n computed: {\n stepperLimit: function stepperLimit() {\n var quotaLimit = this.quota - this.quotaUsed;\n var limit; // 无限购时直接取库存,有限购时取限购数和库存数中小的那个\n\n if (this.quota > 0 && quotaLimit <= this.stock) {\n // 修正负的limit\n limit = quotaLimit < 0 ? 0 : quotaLimit;\n this.limitType = QUOTA_LIMIT;\n } else {\n limit = this.stock;\n this.limitType = STOCK_LIMIT;\n }\n\n return limit;\n },\n stepperMinLimit: function stepperMinLimit() {\n return this.startSaleNum < 1 ? 1 : this.startSaleNum;\n },\n quotaText: function quotaText() {\n var _this$customStepperCo = this.customStepperConfig,\n quotaText = _this$customStepperCo.quotaText,\n hideQuotaText = _this$customStepperCo.hideQuotaText;\n if (hideQuotaText) return '';\n var text = '';\n\n if (quotaText) {\n text = quotaText;\n } else {\n var textArr = [];\n\n if (this.startSaleNum > 1) {\n textArr.push(t('quotaStart', this.startSaleNum));\n }\n\n if (this.quota > 0) {\n textArr.push(t('quotaLimit', this.quota));\n }\n\n text = textArr.join(t('comma'));\n }\n\n return text;\n }\n },\n created: function created() {\n this.checkState(this.stepperMinLimit, this.stepperLimit);\n },\n methods: {\n setCurrentNum: function setCurrentNum(num) {\n this.currentNum = num;\n this.checkState(this.stepperMinLimit, this.stepperLimit);\n },\n onOverLimit: function onOverLimit(action) {\n this.skuEventBus.$emit('sku:overLimit', {\n action: action,\n limitType: this.limitType,\n quota: this.quota,\n quotaUsed: this.quotaUsed,\n startSaleNum: this.startSaleNum\n });\n },\n onChange: function onChange(currentValue) {\n var intValue = parseInt(currentValue, 10);\n var handleStepperChange = this.customStepperConfig.handleStepperChange;\n handleStepperChange && handleStepperChange(intValue);\n this.$emit('change', intValue);\n },\n checkState: function checkState(min, max) {\n // 如果选择小于起售,则强制变为起售\n if (this.currentNum < min || min > max) {\n this.currentNum = min;\n } else if (this.currentNum > max) {\n // 当前选择数量大于最大可选时,需要重置已选数量\n this.currentNum = max;\n }\n\n this.skuEventBus.$emit('sku:stepperState', {\n valid: min <= max,\n min: min,\n max: max,\n limitType: this.limitType,\n quota: this.quota,\n quotaUsed: this.quotaUsed,\n startSaleNum: this.startSaleNum\n });\n }\n },\n render: function render() {\n var _this = this;\n\n var h = arguments[0];\n return h(\"div\", {\n \"class\": \"van-sku-stepper-stock\"\n }, [h(\"div\", {\n \"class\": \"van-sku__stepper-title\"\n }, [this.stepperTitle || t('num')]), h(Stepper, {\n \"attrs\": {\n \"integer\": true,\n \"min\": this.stepperMinLimit,\n \"max\": this.stepperLimit,\n \"disableInput\": this.disableStepperInput\n },\n \"class\": \"van-sku__stepper\",\n \"on\": {\n \"overlimit\": this.onOverLimit,\n \"change\": this.onChange\n },\n \"model\": {\n value: _this.currentNum,\n callback: function callback($$v) {\n _this.currentNum = $$v;\n }\n }\n }), !this.hideQuotaText && this.quotaText && h(\"span\", {\n \"class\": \"van-sku__stepper-quota\"\n }, [\"(\", this.quotaText, \")\"])]);\n }\n});","/* eslint-disable */\nexport function isEmail(value) {\n var reg = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n return reg.test(value);\n}","export function toArray(item) {\n if (Array.isArray(item)) {\n return item;\n }\n\n return [item];\n}\nexport function readFile(file, resultType) {\n return new Promise(function (resolve) {\n if (resultType === 'file') {\n resolve();\n return;\n }\n\n var reader = new FileReader();\n\n reader.onload = function (event) {\n resolve(event.target.result);\n };\n\n if (resultType === 'dataUrl') {\n reader.readAsDataURL(file);\n } else if (resultType === 'text') {\n reader.readAsText(file);\n }\n });\n}\nexport function isOversize(files, maxSize) {\n return toArray(files).some(function (file) {\n return file.size > maxSize;\n });\n}\nvar IMAGE_REGEXP = /\\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i;\nexport function isImageUrl(url) {\n return IMAGE_REGEXP.test(url);\n}\nexport function isImageFile(item) {\n // some special urls cannot be recognized\n // user can add `isImage` flag to mark it as an image url\n if (item.isImage) {\n return true;\n }\n\n if (item.file && item.file.type) {\n return item.file.type.indexOf('image') === 0;\n }\n\n if (item.url) {\n return isImageUrl(item.url);\n }\n\n if (item.content) {\n return item.content.indexOf('data:image') === 0;\n }\n\n return false;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// Utils\nimport { createNamespace, addUnit, noop, isPromise, isDef } from '../utils';\nimport { toArray, readFile as _readFile, isOversize, isImageFile } from './utils'; // Mixins\n\nimport { FieldMixin } from '../mixins/field'; // Components\n\nimport Icon from '../icon';\nimport Image from '../image';\nimport Loading from '../loading';\nimport ImagePreview from '../image-preview';\n\nvar _createNamespace = createNamespace('uploader'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n inheritAttrs: false,\n mixins: [FieldMixin],\n model: {\n prop: 'fileList'\n },\n props: {\n disabled: Boolean,\n lazyLoad: Boolean,\n uploadText: String,\n afterRead: Function,\n beforeRead: Function,\n beforeDelete: Function,\n previewSize: [Number, String],\n previewOptions: Object,\n name: {\n type: [Number, String],\n default: ''\n },\n accept: {\n type: String,\n default: 'image/*'\n },\n fileList: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n maxSize: {\n type: [Number, String],\n default: Number.MAX_VALUE\n },\n maxCount: {\n type: [Number, String],\n default: Number.MAX_VALUE\n },\n deletable: {\n type: Boolean,\n default: true\n },\n showUpload: {\n type: Boolean,\n default: true\n },\n previewImage: {\n type: Boolean,\n default: true\n },\n previewFullImage: {\n type: Boolean,\n default: true\n },\n imageFit: {\n type: String,\n default: 'cover'\n },\n resultType: {\n type: String,\n default: 'dataUrl'\n },\n uploadIcon: {\n type: String,\n default: 'photograph'\n }\n },\n computed: {\n previewSizeWithUnit: function previewSizeWithUnit() {\n return addUnit(this.previewSize);\n },\n // for form\n value: function value() {\n return this.fileList;\n }\n },\n methods: {\n getDetail: function getDetail(index) {\n if (index === void 0) {\n index = this.fileList.length;\n }\n\n return {\n name: this.name,\n index: index\n };\n },\n onChange: function onChange(event) {\n var _this = this;\n\n var files = event.target.files;\n\n if (this.disabled || !files.length) {\n return;\n }\n\n files = files.length === 1 ? files[0] : [].slice.call(files);\n\n if (this.beforeRead) {\n var response = this.beforeRead(files, this.getDetail());\n\n if (!response) {\n this.resetInput();\n return;\n }\n\n if (isPromise(response)) {\n response.then(function (data) {\n if (data) {\n _this.readFile(data);\n } else {\n _this.readFile(files);\n }\n }).catch(this.resetInput);\n return;\n }\n }\n\n this.readFile(files);\n },\n readFile: function readFile(files) {\n var _this2 = this;\n\n var oversize = isOversize(files, this.maxSize);\n\n if (Array.isArray(files)) {\n var maxCount = this.maxCount - this.fileList.length;\n\n if (files.length > maxCount) {\n files = files.slice(0, maxCount);\n }\n\n Promise.all(files.map(function (file) {\n return _readFile(file, _this2.resultType);\n })).then(function (contents) {\n var fileList = files.map(function (file, index) {\n var result = {\n file: file,\n status: '',\n message: ''\n };\n\n if (contents[index]) {\n result.content = contents[index];\n }\n\n return result;\n });\n\n _this2.onAfterRead(fileList, oversize);\n });\n } else {\n _readFile(files, this.resultType).then(function (content) {\n var result = {\n file: files,\n status: '',\n message: ''\n };\n\n if (content) {\n result.content = content;\n }\n\n _this2.onAfterRead(result, oversize);\n });\n }\n },\n onAfterRead: function onAfterRead(files, oversize) {\n var _this3 = this;\n\n this.resetInput();\n var validFiles = files;\n\n if (oversize) {\n var oversizeFiles = files;\n\n if (Array.isArray(files)) {\n oversizeFiles = [];\n validFiles = [];\n files.forEach(function (item) {\n if (item.file) {\n if (item.file.size > _this3.maxSize) {\n oversizeFiles.push(item);\n } else {\n validFiles.push(item);\n }\n }\n });\n } else {\n validFiles = null;\n }\n\n this.$emit('oversize', oversizeFiles, this.getDetail());\n }\n\n var isValidFiles = Array.isArray(validFiles) ? Boolean(validFiles.length) : Boolean(validFiles);\n\n if (isValidFiles) {\n this.$emit('input', [].concat(this.fileList, toArray(validFiles)));\n\n if (this.afterRead) {\n this.afterRead(validFiles, this.getDetail());\n }\n }\n },\n onDelete: function onDelete(file, index) {\n var _file$beforeDelete,\n _this4 = this;\n\n var beforeDelete = (_file$beforeDelete = file.beforeDelete) != null ? _file$beforeDelete : this.beforeDelete;\n\n if (beforeDelete) {\n var response = beforeDelete(file, this.getDetail(index));\n\n if (!response) {\n return;\n }\n\n if (isPromise(response)) {\n response.then(function () {\n _this4.deleteFile(file, index);\n }).catch(noop);\n return;\n }\n }\n\n this.deleteFile(file, index);\n },\n deleteFile: function deleteFile(file, index) {\n var fileList = this.fileList.slice(0);\n fileList.splice(index, 1);\n this.$emit('input', fileList);\n this.$emit('delete', file, this.getDetail(index));\n },\n resetInput: function resetInput() {\n /* istanbul ignore else */\n if (this.$refs.input) {\n this.$refs.input.value = '';\n }\n },\n onPreviewImage: function onPreviewImage(item) {\n var _this5 = this;\n\n if (!this.previewFullImage) {\n return;\n }\n\n var imageFiles = this.fileList.filter(function (item) {\n return isImageFile(item);\n });\n var imageContents = imageFiles.map(function (item) {\n return item.content || item.url;\n });\n this.imagePreview = ImagePreview(_extends({\n images: imageContents,\n startPosition: imageFiles.indexOf(item),\n onClose: function onClose() {\n _this5.$emit('close-preview');\n }\n }, this.previewOptions));\n },\n // @exposed-api\n closeImagePreview: function closeImagePreview() {\n if (this.imagePreview) {\n this.imagePreview.close();\n }\n },\n // @exposed-api\n chooseFile: function chooseFile() {\n if (this.disabled) {\n return;\n }\n /* istanbul ignore else */\n\n\n if (this.$refs.input) {\n this.$refs.input.click();\n }\n },\n genPreviewMask: function genPreviewMask(item) {\n var h = this.$createElement;\n var status = item.status,\n message = item.message;\n\n if (status === 'uploading' || status === 'failed') {\n var MaskIcon = status === 'failed' ? h(Icon, {\n \"attrs\": {\n \"name\": \"close\"\n },\n \"class\": bem('mask-icon')\n }) : h(Loading, {\n \"class\": bem('loading')\n });\n var showMessage = isDef(message) && message !== '';\n return h(\"div\", {\n \"class\": bem('mask')\n }, [MaskIcon, showMessage && h(\"div\", {\n \"class\": bem('mask-message')\n }, [message])]);\n }\n },\n genPreviewItem: function genPreviewItem(item, index) {\n var _item$deletable,\n _this6 = this,\n _item$previewSize,\n _item$imageFit;\n\n var h = this.$createElement;\n var deleteAble = (_item$deletable = item.deletable) != null ? _item$deletable : this.deletable;\n var showDelete = item.status !== 'uploading' && deleteAble;\n var DeleteIcon = showDelete && h(\"div\", {\n \"class\": bem('preview-delete'),\n \"on\": {\n \"click\": function click(event) {\n event.stopPropagation();\n\n _this6.onDelete(item, index);\n }\n }\n }, [h(Icon, {\n \"attrs\": {\n \"name\": \"cross\"\n },\n \"class\": bem('preview-delete-icon')\n })]);\n var PreviewCoverContent = this.slots('preview-cover', _extends({\n index: index\n }, item));\n var PreviewCover = PreviewCoverContent && h(\"div\", {\n \"class\": bem('preview-cover')\n }, [PreviewCoverContent]);\n var previewSize = (_item$previewSize = item.previewSize) != null ? _item$previewSize : this.previewSize;\n var imageFit = (_item$imageFit = item.imageFit) != null ? _item$imageFit : this.imageFit;\n var Preview = isImageFile(item) ? h(Image, {\n \"attrs\": {\n \"fit\": imageFit,\n \"src\": item.content || item.url,\n \"width\": previewSize,\n \"height\": previewSize,\n \"lazyLoad\": this.lazyLoad\n },\n \"class\": bem('preview-image'),\n \"on\": {\n \"click\": function click() {\n _this6.onPreviewImage(item);\n }\n }\n }, [PreviewCover]) : h(\"div\", {\n \"class\": bem('file'),\n \"style\": {\n width: this.previewSizeWithUnit,\n height: this.previewSizeWithUnit\n }\n }, [h(Icon, {\n \"class\": bem('file-icon'),\n \"attrs\": {\n \"name\": \"description\"\n }\n }), h(\"div\", {\n \"class\": [bem('file-name'), 'van-ellipsis']\n }, [item.file ? item.file.name : item.url]), PreviewCover]);\n return h(\"div\", {\n \"class\": bem('preview'),\n \"on\": {\n \"click\": function click() {\n _this6.$emit('click-preview', item, _this6.getDetail(index));\n }\n }\n }, [Preview, this.genPreviewMask(item), DeleteIcon]);\n },\n genPreviewList: function genPreviewList() {\n if (this.previewImage) {\n return this.fileList.map(this.genPreviewItem);\n }\n },\n genUpload: function genUpload() {\n var h = this.$createElement;\n\n if (this.fileList.length >= this.maxCount || !this.showUpload) {\n return;\n }\n\n var slot = this.slots();\n var Input = h(\"input\", {\n \"attrs\": _extends({}, this.$attrs, {\n \"type\": \"file\",\n \"accept\": this.accept,\n \"disabled\": this.disabled\n }),\n \"ref\": \"input\",\n \"class\": bem('input'),\n \"on\": {\n \"change\": this.onChange\n }\n });\n\n if (slot) {\n return h(\"div\", {\n \"class\": bem('input-wrapper')\n }, [slot, Input]);\n }\n\n var style;\n\n if (this.previewSize) {\n var size = this.previewSizeWithUnit;\n style = {\n width: size,\n height: size\n };\n }\n\n return h(\"div\", {\n \"class\": bem('upload'),\n \"style\": style\n }, [h(Icon, {\n \"attrs\": {\n \"name\": this.uploadIcon\n },\n \"class\": bem('upload-icon')\n }), this.uploadText && h(\"span\", {\n \"class\": bem('upload-text')\n }, [this.uploadText]), Input]);\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"class\": bem()\n }, [h(\"div\", {\n \"class\": bem('wrapper', {\n disabled: this.disabled\n })\n }, [this.genPreviewList(), this.genUpload()])]);\n }\n});","// Utils\nimport { createNamespace } from '../../utils'; // Components\n\nimport Uploader from '../../uploader';\nvar namespace = createNamespace('sku-img-uploader');\nvar createComponent = namespace[0];\nvar t = namespace[2];\nexport default createComponent({\n props: {\n value: String,\n uploadImg: Function,\n maxSize: {\n type: Number,\n default: 6\n }\n },\n data: function data() {\n return {\n fileList: []\n };\n },\n watch: {\n value: function value(val) {\n if (val) {\n this.fileList = [{\n url: val,\n isImage: true\n }];\n } else {\n this.fileList = [];\n }\n }\n },\n methods: {\n afterReadFile: function afterReadFile(file) {\n var _this = this;\n\n file.status = 'uploading';\n file.message = t('uploading');\n this.uploadImg(file.file, file.content).then(function (img) {\n file.status = 'done';\n\n _this.$emit('input', img);\n }).catch(function () {\n file.status = 'failed';\n file.message = t('fail');\n });\n },\n onOversize: function onOversize() {\n this.$toast(t('oversize', this.maxSize));\n },\n onDelete: function onDelete() {\n this.$emit('input', '');\n }\n },\n render: function render() {\n var _this2 = this;\n\n var h = arguments[0];\n return h(Uploader, {\n \"attrs\": {\n \"maxCount\": 1,\n \"afterRead\": this.afterReadFile,\n \"maxSize\": this.maxSize * 1024 * 1024\n },\n \"on\": {\n \"oversize\": this.onOversize,\n \"delete\": this.onDelete\n },\n \"model\": {\n value: _this2.fileList,\n callback: function callback($$v) {\n _this2.fileList = $$v;\n }\n }\n });\n }\n});","import { padZero } from '../../utils/format/string'; // 字符串转 Date\n// 只处理 YYYY-MM-DD 或者 YYYY-MM-DD HH:MM 格式\n\nexport function stringToDate(timeString) {\n if (!timeString) {\n return null;\n }\n\n return new Date(timeString.replace(/-/g, '/'));\n} // Date 转字符串\n// type: date or datetime\n\nexport function dateToString(date, type) {\n if (type === void 0) {\n type = 'date';\n }\n\n if (!date) {\n return '';\n }\n\n var year = date.getFullYear();\n var month = date.getMonth() + 1;\n var day = date.getDate();\n var timeString = year + \"-\" + padZero(month) + \"-\" + padZero(day);\n\n if (type === 'datetime') {\n var hours = date.getHours();\n var minute = date.getMinutes();\n timeString += \" \" + padZero(hours) + \":\" + padZero(minute);\n }\n\n return timeString;\n}","// Utils\nimport { createNamespace } from '../../utils';\nimport { stringToDate, dateToString } from '../utils/time-helper'; // Components\n\nimport Popup from '../../popup';\nimport DateTimePicker from '../../datetime-picker';\nimport Field from '../../field';\nvar namespace = createNamespace('sku-datetime-field');\nvar createComponent = namespace[0];\nvar t = namespace[2];\nexport default createComponent({\n props: {\n value: String,\n label: String,\n required: Boolean,\n placeholder: String,\n type: {\n type: String,\n default: 'date'\n }\n },\n data: function data() {\n return {\n showDatePicker: false,\n currentDate: this.type === 'time' ? '' : new Date(),\n minDate: new Date(new Date().getFullYear() - 60, 0, 1)\n };\n },\n watch: {\n value: function value(val) {\n switch (this.type) {\n case 'time':\n this.currentDate = val;\n break;\n\n case 'date':\n case 'datetime':\n this.currentDate = stringToDate(val) || new Date();\n break;\n }\n }\n },\n computed: {\n title: function title() {\n return t(\"title.\" + this.type);\n }\n },\n methods: {\n onClick: function onClick() {\n this.showDatePicker = true;\n },\n onConfirm: function onConfirm(val) {\n var data = val;\n\n if (this.type !== 'time') {\n data = dateToString(val, this.type);\n }\n\n this.$emit('input', data);\n this.showDatePicker = false;\n },\n onCancel: function onCancel() {\n this.showDatePicker = false;\n },\n formatter: function formatter(type, val) {\n var word = t(\"format.\" + type);\n return \"\" + val + word;\n }\n },\n render: function render() {\n var _this = this;\n\n var h = arguments[0];\n return h(Field, {\n \"attrs\": {\n \"readonly\": true,\n \"is-link\": true,\n \"center\": true,\n \"value\": this.value,\n \"label\": this.label,\n \"required\": this.required,\n \"placeholder\": this.placeholder\n },\n \"on\": {\n \"click\": this.onClick\n }\n }, [h(Popup, {\n \"attrs\": {\n \"round\": true,\n \"position\": \"bottom\",\n \"getContainer\": \"body\"\n },\n \"slot\": \"extra\",\n \"model\": {\n value: _this.showDatePicker,\n callback: function callback($$v) {\n _this.showDatePicker = $$v;\n }\n }\n }, [h(DateTimePicker, {\n \"attrs\": {\n \"type\": this.type,\n \"title\": this.title,\n \"value\": this.currentDate,\n \"minDate\": this.minDate,\n \"formatter\": this.formatter\n },\n \"on\": {\n \"cancel\": this.onCancel,\n \"confirm\": this.onConfirm\n }\n })])]);\n }\n});","// Utils\nimport { createNamespace } from '../../utils';\nimport { isEmail } from '../../utils/validate/email';\nimport { isNumeric } from '../../utils/validate/number'; // Components\n\nimport Cell from '../../cell';\nimport Field from '../../field';\nimport SkuImgUploader from './SkuImgUploader';\nimport SkuDateTimeField from './SkuDateTimeField';\n\nvar _createNamespace = createNamespace('sku-messages'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nexport default createComponent({\n props: {\n messageConfig: Object,\n goodsId: [Number, String],\n messages: {\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n data: function data() {\n return {\n messageValues: this.resetMessageValues(this.messages)\n };\n },\n watch: {\n messages: function messages(val) {\n this.messageValues = this.resetMessageValues(val);\n }\n },\n methods: {\n resetMessageValues: function resetMessageValues(messages) {\n var messageConfig = this.messageConfig;\n var _messageConfig$initia = messageConfig.initialMessages,\n initialMessages = _messageConfig$initia === void 0 ? {} : _messageConfig$initia;\n return (messages || []).map(function (message) {\n return {\n value: initialMessages[message.name] || ''\n };\n });\n },\n getType: function getType(message) {\n if (+message.multiple === 1) {\n return 'textarea';\n }\n\n if (message.type === 'id_no') {\n return 'text';\n }\n\n return message.datetime > 0 ? 'datetime' : message.type;\n },\n getMessages: function getMessages() {\n var messages = {};\n this.messageValues.forEach(function (item, index) {\n messages[\"message_\" + index] = item.value;\n });\n return messages;\n },\n getCartMessages: function getCartMessages() {\n var _this = this;\n\n var messages = {};\n this.messageValues.forEach(function (item, index) {\n var message = _this.messages[index];\n messages[message.name] = item.value;\n });\n return messages;\n },\n getPlaceholder: function getPlaceholder(message) {\n var type = +message.multiple === 1 ? 'textarea' : message.type;\n var map = this.messageConfig.placeholderMap || {};\n return message.placeholder || map[type] || t(\"placeholder.\" + type);\n },\n validateMessages: function validateMessages() {\n var values = this.messageValues;\n\n for (var i = 0; i < values.length; i++) {\n var value = values[i].value;\n var message = this.messages[i];\n\n if (value === '') {\n // 必填字段的校验\n if (String(message.required) === '1') {\n var textType = t(message.type === 'image' ? 'upload' : 'fill');\n return textType + message.name;\n }\n } else {\n if (message.type === 'tel' && !isNumeric(value)) {\n return t('invalid.tel');\n }\n\n if (message.type === 'mobile' && !/^\\d{6,20}$/.test(value)) {\n return t('invalid.mobile');\n }\n\n if (message.type === 'email' && !isEmail(value)) {\n return t('invalid.email');\n }\n\n if (message.type === 'id_no' && (value.length < 15 || value.length > 18)) {\n return t('invalid.id_no');\n }\n }\n }\n },\n\n /**\n * The phone number copied from IOS mobile phone address book\n * will add spaces and invisible Unicode characters\n * which cannot pass the /^\\d+$/ verification\n * so keep numbers and dots\n */\n getFormatter: function getFormatter(message) {\n return function formatter(value) {\n if (message.type === 'mobile' || message.type === 'tel') {\n return value.replace(/[^\\d.]/g, '');\n }\n\n return value;\n };\n },\n genMessage: function genMessage(message, index) {\n var _this2 = this;\n\n var h = this.$createElement;\n\n if (message.type === 'image') {\n return h(Cell, {\n \"key\": this.goodsId + \"-\" + index,\n \"attrs\": {\n \"title\": message.name,\n \"required\": String(message.required) === '1',\n \"valueClass\": bem('image-cell-value')\n },\n \"class\": bem('image-cell')\n }, [h(SkuImgUploader, {\n \"attrs\": {\n \"maxSize\": this.messageConfig.uploadMaxSize,\n \"uploadImg\": this.messageConfig.uploadImg\n },\n \"model\": {\n value: _this2.messageValues[index].value,\n callback: function callback($$v) {\n _this2.$set(_this2.messageValues[index], \"value\", $$v);\n }\n }\n }), h(\"div\", {\n \"class\": bem('image-cell-label')\n }, [t('imageLabel')])]);\n } // 时间和日期使用的vant选择器\n\n\n var isDateOrTime = ['date', 'time'].indexOf(message.type) > -1;\n\n if (isDateOrTime) {\n return h(SkuDateTimeField, {\n \"attrs\": {\n \"label\": message.name,\n \"required\": String(message.required) === '1',\n \"placeholder\": this.getPlaceholder(message),\n \"type\": this.getType(message)\n },\n \"key\": this.goodsId + \"-\" + index,\n \"model\": {\n value: _this2.messageValues[index].value,\n callback: function callback($$v) {\n _this2.$set(_this2.messageValues[index], \"value\", $$v);\n }\n }\n });\n }\n\n return h(Field, {\n \"attrs\": {\n \"maxlength\": \"200\",\n \"center\": !message.multiple,\n \"label\": message.name,\n \"required\": String(message.required) === '1',\n \"placeholder\": this.getPlaceholder(message),\n \"type\": this.getType(message),\n \"formatter\": this.getFormatter(message)\n },\n \"key\": this.goodsId + \"-\" + index,\n \"model\": {\n value: _this2.messageValues[index].value,\n callback: function callback($$v) {\n _this2.$set(_this2.messageValues[index], \"value\", $$v);\n }\n }\n });\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"class\": bem()\n }, [this.messages.map(this.genMessage)]);\n }\n});","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace } from '../../utils';\nimport { inherit } from '../../utils/functional'; // Components\n\nimport Button from '../../button'; // Types\n\nvar _createNamespace = createNamespace('sku-actions'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nfunction SkuActions(h, props, slots, ctx) {\n var createEmitter = function createEmitter(name) {\n return function () {\n props.skuEventBus.$emit(name);\n };\n };\n\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem()\n }, inherit(ctx)]), [props.showAddCartBtn && h(Button, {\n \"attrs\": {\n \"size\": \"large\",\n \"type\": \"warning\",\n \"text\": props.addCartText || t('addCart')\n },\n \"on\": {\n \"click\": createEmitter('sku:addCart')\n }\n }), h(Button, {\n \"attrs\": {\n \"size\": \"large\",\n \"type\": \"danger\",\n \"text\": props.buyText || t('buy')\n },\n \"on\": {\n \"click\": createEmitter('sku:buy')\n }\n })]);\n}\n\nSkuActions.props = {\n buyText: String,\n addCartText: String,\n skuEventBus: Object,\n showAddCartBtn: Boolean\n};\nexport default createComponent(SkuActions);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport Vue from 'vue';\nimport Popup from '../popup';\nimport Toast from '../toast';\nimport ImagePreview from '../image-preview';\nimport SkuHeader from './components/SkuHeader';\nimport SkuHeaderItem from './components/SkuHeaderItem';\nimport SkuRow from './components/SkuRow';\nimport SkuRowItem from './components/SkuRowItem';\nimport SkuRowPropItem from './components/SkuRowPropItem';\nimport SkuStepper from './components/SkuStepper';\nimport SkuMessages from './components/SkuMessages';\nimport SkuActions from './components/SkuActions';\nimport { createNamespace } from '../utils';\nimport { isAllSelected, isSkuChoosable, getSkuComb, getSelectedSkuValues, getSelectedPropValues, getSelectedProperties } from './utils/sku-helper';\nimport { LIMIT_TYPE, UNSELECTED_SKU_VALUE_ID } from './constants';\nvar namespace = createNamespace('sku');\nvar createComponent = namespace[0],\n bem = namespace[1],\n t = namespace[2];\nvar QUOTA_LIMIT = LIMIT_TYPE.QUOTA_LIMIT;\nexport default createComponent({\n props: {\n sku: Object,\n goods: Object,\n value: Boolean,\n buyText: String,\n goodsId: [Number, String],\n priceTag: String,\n lazyLoad: Boolean,\n hideStock: Boolean,\n properties: Array,\n addCartText: String,\n stepperTitle: String,\n getContainer: [String, Function],\n hideQuotaText: Boolean,\n hideSelectedText: Boolean,\n resetStepperOnHide: Boolean,\n customSkuValidator: Function,\n disableStepperInput: Boolean,\n resetSelectedSkuOnHide: Boolean,\n quota: {\n type: Number,\n default: 0\n },\n quotaUsed: {\n type: Number,\n default: 0\n },\n startSaleNum: {\n type: Number,\n default: 1\n },\n initialSku: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n stockThreshold: {\n type: Number,\n default: 50\n },\n showSoldoutSku: {\n type: Boolean,\n default: true\n },\n showAddCartBtn: {\n type: Boolean,\n default: true\n },\n disableSoldoutSku: {\n type: Boolean,\n default: true\n },\n customStepperConfig: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n showHeaderImage: {\n type: Boolean,\n default: true\n },\n previewOnClickImage: {\n type: Boolean,\n default: true\n },\n safeAreaInsetBottom: {\n type: Boolean,\n default: true\n },\n closeOnClickOverlay: {\n type: Boolean,\n default: true\n },\n bodyOffsetTop: {\n type: Number,\n default: 200\n },\n messageConfig: {\n type: Object,\n default: function _default() {\n return {\n initialMessages: {},\n placeholderMap: {},\n uploadImg: function uploadImg() {\n return Promise.resolve();\n },\n uploadMaxSize: 5\n };\n }\n }\n },\n data: function data() {\n return {\n selectedSku: {},\n selectedProp: {},\n selectedNum: 1,\n show: this.value\n };\n },\n watch: {\n show: function show(val) {\n this.$emit('input', val);\n\n if (!val) {\n this.$emit('sku-close', {\n selectedSkuValues: this.selectedSkuValues,\n selectedNum: this.selectedNum,\n selectedSkuComb: this.selectedSkuComb\n });\n\n if (this.resetStepperOnHide) {\n this.resetStepper();\n }\n\n if (this.resetSelectedSkuOnHide) {\n this.resetSelectedSku();\n }\n }\n },\n value: function value(val) {\n this.show = val;\n },\n skuTree: 'resetSelectedSku',\n initialSku: function initialSku() {\n this.resetStepper();\n this.resetSelectedSku();\n }\n },\n computed: {\n skuGroupClass: function skuGroupClass() {\n return ['van-sku-group-container', {\n 'van-sku-group-container--hide-soldout': !this.showSoldoutSku\n }];\n },\n bodyStyle: function bodyStyle() {\n if (this.$isServer) {\n return;\n }\n\n var maxHeight = window.innerHeight - this.bodyOffsetTop;\n return {\n maxHeight: maxHeight + 'px'\n };\n },\n isSkuCombSelected: function isSkuCombSelected() {\n var _this = this;\n\n // SKU 未选完\n if (this.hasSku && !isAllSelected(this.skuTree, this.selectedSku)) {\n return false;\n } // 属性未全选\n\n\n return !this.propList.some(function (it) {\n return (_this.selectedProp[it.k_id] || []).length < 1;\n });\n },\n isSkuEmpty: function isSkuEmpty() {\n return Object.keys(this.sku).length === 0;\n },\n hasSku: function hasSku() {\n return !this.sku.none_sku;\n },\n hasSkuOrAttr: function hasSkuOrAttr() {\n return this.hasSku || this.propList.length > 0;\n },\n selectedSkuComb: function selectedSkuComb() {\n var skuComb = null;\n\n if (this.isSkuCombSelected) {\n if (this.hasSku) {\n skuComb = getSkuComb(this.skuList, this.selectedSku);\n } else {\n skuComb = {\n id: this.sku.collection_id,\n price: Math.round(this.sku.price * 100),\n stock_num: this.sku.stock_num\n };\n }\n\n if (skuComb) {\n skuComb.properties = getSelectedProperties(this.propList, this.selectedProp);\n skuComb.property_price = this.selectedPropValues.reduce(function (acc, cur) {\n return acc + (cur.price || 0);\n }, 0);\n }\n }\n\n return skuComb;\n },\n selectedSkuValues: function selectedSkuValues() {\n return getSelectedSkuValues(this.skuTree, this.selectedSku);\n },\n selectedPropValues: function selectedPropValues() {\n return getSelectedPropValues(this.propList, this.selectedProp);\n },\n price: function price() {\n if (this.selectedSkuComb) {\n return ((this.selectedSkuComb.price + this.selectedSkuComb.property_price) / 100).toFixed(2);\n } // sku.price是一个格式化好的价格区间\n\n\n return this.sku.price;\n },\n originPrice: function originPrice() {\n if (this.selectedSkuComb && this.selectedSkuComb.origin_price) {\n return ((this.selectedSkuComb.origin_price + this.selectedSkuComb.property_price) / 100).toFixed(2);\n }\n\n return this.sku.origin_price;\n },\n skuTree: function skuTree() {\n return this.sku.tree || [];\n },\n skuList: function skuList() {\n return this.sku.list || [];\n },\n propList: function propList() {\n return this.properties || [];\n },\n imageList: function imageList() {\n var imageList = [this.goods.picture];\n\n if (this.skuTree.length > 0) {\n this.skuTree.forEach(function (treeItem) {\n if (!treeItem.v) {\n return;\n }\n\n treeItem.v.forEach(function (vItem) {\n var imgUrl = vItem.previewImgUrl || vItem.imgUrl || vItem.img_url;\n\n if (imgUrl && imageList.indexOf(imgUrl) === -1) {\n imageList.push(imgUrl);\n }\n });\n });\n }\n\n return imageList;\n },\n stock: function stock() {\n var stockNum = this.customStepperConfig.stockNum;\n\n if (stockNum !== undefined) {\n return stockNum;\n }\n\n if (this.selectedSkuComb) {\n return this.selectedSkuComb.stock_num;\n }\n\n return this.sku.stock_num;\n },\n stockText: function stockText() {\n var h = this.$createElement;\n var stockFormatter = this.customStepperConfig.stockFormatter;\n\n if (stockFormatter) {\n return stockFormatter(this.stock);\n }\n\n return [t('stock') + \" \", h(\"span\", {\n \"class\": bem('stock-num', {\n highlight: this.stock < this.stockThreshold\n })\n }, [this.stock]), \" \" + t('stockUnit')];\n },\n selectedText: function selectedText() {\n var _this2 = this;\n\n if (this.selectedSkuComb) {\n var values = this.selectedSkuValues.concat(this.selectedPropValues);\n return t('selected') + \" \" + values.map(function (item) {\n return item.name;\n }).join(' ');\n }\n\n var unselectedSku = this.skuTree.filter(function (item) {\n return _this2.selectedSku[item.k_s] === UNSELECTED_SKU_VALUE_ID;\n }).map(function (item) {\n return item.k;\n });\n var unselectedProp = this.propList.filter(function (item) {\n return (_this2.selectedProp[item.k_id] || []).length < 1;\n }).map(function (item) {\n return item.k;\n });\n return t('select') + \" \" + unselectedSku.concat(unselectedProp).join(' ');\n }\n },\n created: function created() {\n var skuEventBus = new Vue();\n this.skuEventBus = skuEventBus;\n skuEventBus.$on('sku:select', this.onSelect);\n skuEventBus.$on('sku:propSelect', this.onPropSelect);\n skuEventBus.$on('sku:numChange', this.onNumChange);\n skuEventBus.$on('sku:previewImage', this.onPreviewImage);\n skuEventBus.$on('sku:overLimit', this.onOverLimit);\n skuEventBus.$on('sku:stepperState', this.onStepperState);\n skuEventBus.$on('sku:addCart', this.onAddCart);\n skuEventBus.$on('sku:buy', this.onBuy);\n this.resetStepper();\n this.resetSelectedSku(); // 组件初始化后的钩子,抛出skuEventBus\n\n this.$emit('after-sku-create', skuEventBus);\n },\n methods: {\n resetStepper: function resetStepper() {\n var skuStepper = this.$refs.skuStepper;\n var selectedNum = this.initialSku.selectedNum;\n var num = selectedNum != null ? selectedNum : this.startSaleNum; // 用来缓存不合法的情况\n\n this.stepperError = null;\n\n if (skuStepper) {\n skuStepper.setCurrentNum(num);\n } else {\n // 当首次加载(skuStepper 为空)时,传入数量如果不合法,可能会存在问题\n this.selectedNum = num;\n }\n },\n // @exposed-api\n resetSelectedSku: function resetSelectedSku() {\n var _this3 = this;\n\n this.selectedSku = {}; // 重置 selectedSku\n\n this.skuTree.forEach(function (item) {\n _this3.selectedSku[item.k_s] = UNSELECTED_SKU_VALUE_ID;\n });\n this.skuTree.forEach(function (item) {\n var key = item.k_s; // 规格值只有1个时,优先判断\n\n var valueId = item.v.length === 1 ? item.v[0].id : _this3.initialSku[key];\n\n if (valueId && isSkuChoosable(_this3.skuList, _this3.selectedSku, {\n key: key,\n valueId: valueId\n })) {\n _this3.selectedSku[key] = valueId;\n }\n });\n var skuValues = this.selectedSkuValues;\n\n if (skuValues.length > 0) {\n this.$nextTick(function () {\n _this3.$emit('sku-selected', {\n skuValue: skuValues[skuValues.length - 1],\n selectedSku: _this3.selectedSku,\n selectedSkuComb: _this3.selectedSkuComb\n });\n });\n } // 重置商品属性\n\n\n this.selectedProp = {};\n var _this$initialSku$sele = this.initialSku.selectedProp,\n selectedProp = _this$initialSku$sele === void 0 ? {} : _this$initialSku$sele; // 只有一个属性值时,默认选中,且选中外部传入信息\n\n this.propList.forEach(function (item) {\n if (item.v && item.v.length === 1) {\n _this3.selectedProp[item.k_id] = [item.v[0].id];\n } else if (selectedProp[item.k_id]) {\n _this3.selectedProp[item.k_id] = selectedProp[item.k_id];\n }\n });\n var propValues = this.selectedPropValues;\n\n if (propValues.length > 0) {\n this.$emit('sku-prop-selected', {\n propValue: propValues[propValues.length - 1],\n selectedProp: this.selectedProp,\n selectedSkuComb: this.selectedSkuComb\n });\n } // 抛出重置事件\n\n\n this.$emit('sku-reset', {\n selectedSku: this.selectedSku,\n selectedProp: this.selectedProp,\n selectedSkuComb: this.selectedSkuComb\n });\n this.centerInitialSku();\n },\n getSkuMessages: function getSkuMessages() {\n return this.$refs.skuMessages ? this.$refs.skuMessages.getMessages() : {};\n },\n getSkuCartMessages: function getSkuCartMessages() {\n return this.$refs.skuMessages ? this.$refs.skuMessages.getCartMessages() : {};\n },\n validateSkuMessages: function validateSkuMessages() {\n return this.$refs.skuMessages ? this.$refs.skuMessages.validateMessages() : '';\n },\n validateSku: function validateSku() {\n if (this.selectedNum === 0) {\n return t('unavailable');\n }\n\n if (this.isSkuCombSelected) {\n return this.validateSkuMessages();\n } // 自定义sku校验\n\n\n if (this.customSkuValidator) {\n var err = this.customSkuValidator(this);\n if (err) return err;\n }\n\n return t('selectSku');\n },\n onSelect: function onSelect(skuValue) {\n var _extends2, _extends3;\n\n // 点击已选中的sku时则取消选中\n this.selectedSku = this.selectedSku[skuValue.skuKeyStr] === skuValue.id ? _extends({}, this.selectedSku, (_extends2 = {}, _extends2[skuValue.skuKeyStr] = UNSELECTED_SKU_VALUE_ID, _extends2)) : _extends({}, this.selectedSku, (_extends3 = {}, _extends3[skuValue.skuKeyStr] = skuValue.id, _extends3));\n this.$emit('sku-selected', {\n skuValue: skuValue,\n selectedSku: this.selectedSku,\n selectedSkuComb: this.selectedSkuComb\n });\n },\n onPropSelect: function onPropSelect(propValue) {\n var _extends4;\n\n var arr = this.selectedProp[propValue.skuKeyStr] || [];\n var pos = arr.indexOf(propValue.id);\n\n if (pos > -1) {\n arr.splice(pos, 1);\n } else if (propValue.multiple) {\n arr.push(propValue.id);\n } else {\n arr.splice(0, 1, propValue.id);\n }\n\n this.selectedProp = _extends({}, this.selectedProp, (_extends4 = {}, _extends4[propValue.skuKeyStr] = arr, _extends4));\n this.$emit('sku-prop-selected', {\n propValue: propValue,\n selectedProp: this.selectedProp,\n selectedSkuComb: this.selectedSkuComb\n });\n },\n onNumChange: function onNumChange(num) {\n this.selectedNum = num;\n },\n onPreviewImage: function onPreviewImage(selectedValue) {\n var _this4 = this;\n\n var imageList = this.imageList;\n var index = 0;\n var indexImage = imageList[0];\n\n if (selectedValue && selectedValue.imgUrl) {\n this.imageList.some(function (image, pos) {\n if (image === selectedValue.imgUrl) {\n index = pos;\n return true;\n }\n\n return false;\n });\n indexImage = selectedValue.imgUrl;\n }\n\n var params = _extends({}, selectedValue, {\n index: index,\n imageList: this.imageList,\n indexImage: indexImage\n });\n\n this.$emit('open-preview', params);\n\n if (!this.previewOnClickImage) {\n return;\n }\n\n ImagePreview({\n images: this.imageList,\n startPosition: index,\n onClose: function onClose() {\n _this4.$emit('close-preview', params);\n }\n });\n },\n onOverLimit: function onOverLimit(data) {\n var action = data.action,\n limitType = data.limitType,\n quota = data.quota,\n quotaUsed = data.quotaUsed;\n var handleOverLimit = this.customStepperConfig.handleOverLimit;\n\n if (handleOverLimit) {\n handleOverLimit(data);\n return;\n }\n\n if (action === 'minus') {\n if (this.startSaleNum > 1) {\n Toast(t('minusStartTip', this.startSaleNum));\n } else {\n Toast(t('minusTip'));\n }\n } else if (action === 'plus') {\n if (limitType === QUOTA_LIMIT) {\n if (quotaUsed > 0) {\n Toast(t('quotaUsedTip', quota, quotaUsed));\n } else {\n Toast(t('quotaTip', quota));\n }\n } else {\n Toast(t('soldout'));\n }\n }\n },\n onStepperState: function onStepperState(data) {\n this.stepperError = data.valid ? null : _extends({}, data, {\n action: 'plus'\n });\n },\n onAddCart: function onAddCart() {\n this.onBuyOrAddCart('add-cart');\n },\n onBuy: function onBuy() {\n this.onBuyOrAddCart('buy-clicked');\n },\n onBuyOrAddCart: function onBuyOrAddCart(type) {\n // sku 不符合购买条件\n if (this.stepperError) {\n return this.onOverLimit(this.stepperError);\n }\n\n var error = this.validateSku();\n\n if (error) {\n Toast(error);\n } else {\n this.$emit(type, this.getSkuData());\n }\n },\n // @exposed-api\n getSkuData: function getSkuData() {\n return {\n goodsId: this.goodsId,\n messages: this.getSkuMessages(),\n selectedNum: this.selectedNum,\n cartMessages: this.getSkuCartMessages(),\n selectedSkuComb: this.selectedSkuComb\n };\n },\n // 当 popup 完全打开后执行\n onOpened: function onOpened() {\n this.centerInitialSku();\n },\n centerInitialSku: function centerInitialSku() {\n var _this5 = this;\n\n (this.$refs.skuRows || []).forEach(function (it) {\n var _ref = it.skuRow || {},\n k_s = _ref.k_s;\n\n it.centerItem(_this5.initialSku[k_s]);\n });\n }\n },\n render: function render() {\n var _this6 = this;\n\n var h = arguments[0];\n\n if (this.isSkuEmpty) {\n return;\n }\n\n var sku = this.sku,\n skuList = this.skuList,\n goods = this.goods,\n price = this.price,\n lazyLoad = this.lazyLoad,\n originPrice = this.originPrice,\n skuEventBus = this.skuEventBus,\n selectedSku = this.selectedSku,\n selectedProp = this.selectedProp,\n selectedNum = this.selectedNum,\n stepperTitle = this.stepperTitle,\n selectedSkuComb = this.selectedSkuComb,\n showHeaderImage = this.showHeaderImage,\n disableSoldoutSku = this.disableSoldoutSku;\n var slotsProps = {\n price: price,\n originPrice: originPrice,\n selectedNum: selectedNum,\n skuEventBus: skuEventBus,\n selectedSku: selectedSku,\n selectedSkuComb: selectedSkuComb\n };\n\n var slots = function slots(name) {\n return _this6.slots(name, slotsProps);\n };\n\n var Header = slots('sku-header') || h(SkuHeader, {\n \"attrs\": {\n \"sku\": sku,\n \"goods\": goods,\n \"skuEventBus\": skuEventBus,\n \"selectedSku\": selectedSku,\n \"showHeaderImage\": showHeaderImage\n }\n }, [h(\"template\", {\n \"slot\": \"sku-header-image-extra\"\n }, [slots('sku-header-image-extra')]), slots('sku-header-price') || h(\"div\", {\n \"class\": \"van-sku__goods-price\"\n }, [h(\"span\", {\n \"class\": \"van-sku__price-symbol\"\n }, [\"\\uFFE5\"]), h(\"span\", {\n \"class\": \"van-sku__price-num\"\n }, [price]), this.priceTag && h(\"span\", {\n \"class\": \"van-sku__price-tag\"\n }, [this.priceTag])]), slots('sku-header-origin-price') || originPrice && h(SkuHeaderItem, [t('originPrice'), \" \\uFFE5\", originPrice]), !this.hideStock && h(SkuHeaderItem, [h(\"span\", {\n \"class\": \"van-sku__stock\"\n }, [this.stockText])]), this.hasSkuOrAttr && !this.hideSelectedText && h(SkuHeaderItem, [this.selectedText]), slots('sku-header-extra')]);\n var Group = slots('sku-group') || this.hasSkuOrAttr && h(\"div\", {\n \"class\": this.skuGroupClass\n }, [this.skuTree.map(function (skuTreeItem) {\n return h(SkuRow, {\n \"attrs\": {\n \"skuRow\": skuTreeItem\n },\n \"ref\": \"skuRows\",\n \"refInFor\": true\n }, [skuTreeItem.v.map(function (skuValue) {\n return h(SkuRowItem, {\n \"attrs\": {\n \"skuList\": skuList,\n \"lazyLoad\": lazyLoad,\n \"skuValue\": skuValue,\n \"skuKeyStr\": skuTreeItem.k_s,\n \"selectedSku\": selectedSku,\n \"skuEventBus\": skuEventBus,\n \"disableSoldoutSku\": disableSoldoutSku,\n \"largeImageMode\": skuTreeItem.largeImageMode\n }\n });\n })]);\n }), this.propList.map(function (skuTreeItem) {\n return h(SkuRow, {\n \"attrs\": {\n \"skuRow\": skuTreeItem\n }\n }, [skuTreeItem.v.map(function (skuValue) {\n return h(SkuRowPropItem, {\n \"attrs\": {\n \"skuValue\": skuValue,\n \"skuKeyStr\": skuTreeItem.k_id + '',\n \"selectedProp\": selectedProp,\n \"skuEventBus\": skuEventBus,\n \"multiple\": skuTreeItem.is_multiple\n }\n });\n })]);\n })]);\n var Stepper = slots('sku-stepper') || h(SkuStepper, {\n \"ref\": \"skuStepper\",\n \"attrs\": {\n \"stock\": this.stock,\n \"quota\": this.quota,\n \"quotaUsed\": this.quotaUsed,\n \"startSaleNum\": this.startSaleNum,\n \"skuEventBus\": skuEventBus,\n \"selectedNum\": selectedNum,\n \"stepperTitle\": stepperTitle,\n \"skuStockNum\": sku.stock_num,\n \"disableStepperInput\": this.disableStepperInput,\n \"customStepperConfig\": this.customStepperConfig,\n \"hideQuotaText\": this.hideQuotaText\n },\n \"on\": {\n \"change\": function change(event) {\n _this6.$emit('stepper-change', event);\n }\n }\n });\n var Messages = slots('sku-messages') || h(SkuMessages, {\n \"ref\": \"skuMessages\",\n \"attrs\": {\n \"goodsId\": this.goodsId,\n \"messageConfig\": this.messageConfig,\n \"messages\": sku.messages\n }\n });\n var Actions = slots('sku-actions') || h(SkuActions, {\n \"attrs\": {\n \"buyText\": this.buyText,\n \"skuEventBus\": skuEventBus,\n \"addCartText\": this.addCartText,\n \"showAddCartBtn\": this.showAddCartBtn\n }\n });\n return h(Popup, {\n \"attrs\": {\n \"round\": true,\n \"closeable\": true,\n \"position\": \"bottom\",\n \"getContainer\": this.getContainer,\n \"closeOnClickOverlay\": this.closeOnClickOverlay,\n \"safeAreaInsetBottom\": this.safeAreaInsetBottom\n },\n \"class\": \"van-sku-container\",\n \"on\": {\n \"opened\": this.onOpened\n },\n \"model\": {\n value: _this6.show,\n callback: function callback($$v) {\n _this6.show = $$v;\n }\n }\n }, [Header, h(\"div\", {\n \"class\": \"van-sku-body\",\n \"style\": this.bodyStyle\n }, [slots('sku-body-top'), Group, slots('extra-sku-group'), Stepper, Messages]), slots('sku-actions-top'), Actions]);\n }\n});","// Utils\nimport lang from './lang';\nimport constants from './constants';\nimport skuHelper from './utils/sku-helper'; // Components\n\nimport Sku from './Sku';\nimport Locale from '../locale';\nimport SkuActions from './components/SkuActions';\nimport SkuHeader from './components/SkuHeader';\nimport SkuHeaderItem from './components/SkuHeaderItem';\nimport SkuMessages from './components/SkuMessages';\nimport SkuStepper from './components/SkuStepper';\nimport SkuRow from './components/SkuRow';\nimport SkuRowItem from './components/SkuRowItem';\nimport SkuRowPropItem from './components/SkuRowPropItem';\nLocale.add(lang);\nSku.SkuActions = SkuActions;\nSku.SkuHeader = SkuHeader;\nSku.SkuHeaderItem = SkuHeaderItem;\nSku.SkuMessages = SkuMessages;\nSku.SkuStepper = SkuStepper;\nSku.SkuRow = SkuRow;\nSku.SkuRowItem = SkuRowItem;\nSku.SkuRowPropItem = SkuRowPropItem;\nSku.skuHelper = skuHelper;\nSku.skuConstants = constants;\nexport default Sku;","import { createNamespace, addUnit } from '../utils';\nimport { deepClone } from '../utils/deep-clone';\nimport { preventDefault } from '../utils/dom/event';\nimport { TouchMixin } from '../mixins/touch';\nimport { FieldMixin } from '../mixins/field';\n\nvar _createNamespace = createNamespace('slider'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nvar isSameValue = function isSameValue(newValue, oldValue) {\n return JSON.stringify(newValue) === JSON.stringify(oldValue);\n};\n\nexport default createComponent({\n mixins: [TouchMixin, FieldMixin],\n props: {\n disabled: Boolean,\n vertical: Boolean,\n range: Boolean,\n barHeight: [Number, String],\n buttonSize: [Number, String],\n activeColor: String,\n inactiveColor: String,\n min: {\n type: [Number, String],\n default: 0\n },\n max: {\n type: [Number, String],\n default: 100\n },\n step: {\n type: [Number, String],\n default: 1\n },\n value: {\n type: [Number, Array],\n default: 0\n }\n },\n data: function data() {\n return {\n dragStatus: ''\n };\n },\n computed: {\n scope: function scope() {\n return this.max - this.min;\n },\n buttonStyle: function buttonStyle() {\n if (this.buttonSize) {\n var size = addUnit(this.buttonSize);\n return {\n width: size,\n height: size\n };\n }\n }\n },\n created: function created() {\n // format initial value\n this.updateValue(this.value);\n },\n mounted: function mounted() {\n if (this.range) {\n this.bindTouchEvent(this.$refs.wrapper0);\n this.bindTouchEvent(this.$refs.wrapper1);\n } else {\n this.bindTouchEvent(this.$refs.wrapper);\n }\n },\n methods: {\n onTouchStart: function onTouchStart(event) {\n if (this.disabled) {\n return;\n }\n\n this.touchStart(event);\n this.currentValue = this.value;\n\n if (this.range) {\n this.startValue = this.value.map(this.format);\n } else {\n this.startValue = this.format(this.value);\n }\n\n this.dragStatus = 'start';\n },\n onTouchMove: function onTouchMove(event) {\n if (this.disabled) {\n return;\n }\n\n if (this.dragStatus === 'start') {\n this.$emit('drag-start');\n }\n\n preventDefault(event, true);\n this.touchMove(event);\n this.dragStatus = 'draging';\n var rect = this.$el.getBoundingClientRect();\n var delta = this.vertical ? this.deltaY : this.deltaX;\n var total = this.vertical ? rect.height : rect.width;\n var diff = delta / total * this.scope;\n\n if (this.range) {\n this.currentValue[this.index] = this.startValue[this.index] + diff;\n } else {\n this.currentValue = this.startValue + diff;\n }\n\n this.updateValue(this.currentValue);\n },\n onTouchEnd: function onTouchEnd() {\n if (this.disabled) {\n return;\n }\n\n if (this.dragStatus === 'draging') {\n this.updateValue(this.currentValue, true);\n this.$emit('drag-end');\n }\n\n this.dragStatus = '';\n },\n onClick: function onClick(event) {\n event.stopPropagation();\n if (this.disabled) return;\n var rect = this.$el.getBoundingClientRect();\n var delta = this.vertical ? event.clientY - rect.top : event.clientX - rect.left;\n var total = this.vertical ? rect.height : rect.width;\n var value = +this.min + delta / total * this.scope;\n\n if (this.range) {\n var _this$value = this.value,\n left = _this$value[0],\n right = _this$value[1];\n var middle = (left + right) / 2;\n\n if (value <= middle) {\n left = value;\n } else {\n right = value;\n }\n\n value = [left, right];\n }\n\n this.startValue = this.value;\n this.updateValue(value, true);\n },\n // 处理两个滑块重叠之后的情况\n handleOverlap: function handleOverlap(value) {\n if (value[0] > value[1]) {\n value = deepClone(value);\n return value.reverse();\n }\n\n return value;\n },\n updateValue: function updateValue(value, end) {\n if (this.range) {\n value = this.handleOverlap(value).map(this.format);\n } else {\n value = this.format(value);\n }\n\n if (!isSameValue(value, this.value)) {\n this.$emit('input', value);\n }\n\n if (end && !isSameValue(value, this.startValue)) {\n this.$emit('change', value);\n }\n },\n format: function format(value) {\n return Math.round(Math.max(this.min, Math.min(value, this.max)) / this.step) * this.step;\n }\n },\n render: function render() {\n var _wrapperStyle,\n _this = this,\n _barStyle;\n\n var h = arguments[0];\n var vertical = this.vertical;\n var mainAxis = vertical ? 'height' : 'width';\n var crossAxis = vertical ? 'width' : 'height';\n var wrapperStyle = (_wrapperStyle = {\n background: this.inactiveColor\n }, _wrapperStyle[crossAxis] = addUnit(this.barHeight), _wrapperStyle); // 计算选中条的长度百分比\n\n var calcMainAxis = function calcMainAxis() {\n var value = _this.value,\n min = _this.min,\n range = _this.range,\n scope = _this.scope;\n\n if (range) {\n return (value[1] - value[0]) * 100 / scope + \"%\";\n }\n\n return (value - min) * 100 / scope + \"%\";\n }; // 计算选中条的开始位置的偏移量\n\n\n var calcOffset = function calcOffset() {\n var value = _this.value,\n min = _this.min,\n range = _this.range,\n scope = _this.scope;\n\n if (range) {\n return (value[0] - min) * 100 / scope + \"%\";\n }\n\n return null;\n };\n\n var barStyle = (_barStyle = {}, _barStyle[mainAxis] = calcMainAxis(), _barStyle.left = this.vertical ? null : calcOffset(), _barStyle.top = this.vertical ? calcOffset() : null, _barStyle.background = this.activeColor, _barStyle);\n\n if (this.dragStatus) {\n barStyle.transition = 'none';\n }\n\n var renderButton = function renderButton(i) {\n var map = ['left', 'right'];\n var isNumber = typeof i === 'number';\n\n var getClassName = function getClassName() {\n if (isNumber) {\n return \"button-wrapper-\" + map[i];\n }\n\n return \"button-wrapper\";\n };\n\n var getRefName = function getRefName() {\n if (isNumber) {\n return \"wrapper\" + i;\n }\n\n return \"wrapper\";\n };\n\n return h(\"div\", {\n \"ref\": getRefName(),\n \"attrs\": {\n \"role\": \"slider\",\n \"tabindex\": _this.disabled ? -1 : 0,\n \"aria-valuemin\": _this.min,\n \"aria-valuenow\": _this.value,\n \"aria-valuemax\": _this.max,\n \"aria-orientation\": _this.vertical ? 'vertical' : 'horizontal'\n },\n \"class\": bem(getClassName()),\n \"on\": {\n \"touchstart\": function touchstart() {\n if (isNumber) {\n // 保存当前按钮的索引\n _this.index = i;\n }\n },\n \"click\": function click(e) {\n return e.stopPropagation();\n }\n }\n }, [_this.slots('button') || h(\"div\", {\n \"class\": bem('button'),\n \"style\": _this.buttonStyle\n })]);\n };\n\n return h(\"div\", {\n \"style\": wrapperStyle,\n \"class\": bem({\n disabled: this.disabled,\n vertical: vertical\n }),\n \"on\": {\n \"click\": this.onClick\n }\n }, [h(\"div\", {\n \"class\": bem('bar'),\n \"style\": barStyle\n }, [this.range ? [renderButton(0), renderButton(1)] : renderButton()])]);\n }\n});","import { createNamespace } from '../utils';\nimport { BORDER } from '../utils/constant';\nimport { ChildrenMixin } from '../mixins/relation';\nimport Icon from '../icon';\n\nvar _createNamespace = createNamespace('step'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ChildrenMixin('vanSteps')],\n computed: {\n status: function status() {\n if (this.index < this.parent.active) {\n return 'finish';\n }\n\n if (this.index === +this.parent.active) {\n return 'process';\n }\n },\n active: function active() {\n return this.status === 'process';\n },\n lineStyle: function lineStyle() {\n if (this.status === 'finish') {\n return {\n background: this.parent.activeColor\n };\n }\n\n return {\n background: this.parent.inactiveColor\n };\n },\n titleStyle: function titleStyle() {\n if (this.active) {\n return {\n color: this.parent.activeColor\n };\n }\n\n if (!this.status) {\n return {\n color: this.parent.inactiveColor\n };\n }\n }\n },\n methods: {\n genCircle: function genCircle() {\n var h = this.$createElement;\n var _this$parent = this.parent,\n activeIcon = _this$parent.activeIcon,\n activeColor = _this$parent.activeColor,\n inactiveIcon = _this$parent.inactiveIcon;\n\n if (this.active) {\n return this.slots('active-icon') || h(Icon, {\n \"class\": bem('icon', 'active'),\n \"attrs\": {\n \"name\": activeIcon,\n \"color\": activeColor\n }\n });\n }\n\n var inactiveIconSlot = this.slots('inactive-icon');\n\n if (inactiveIcon || inactiveIconSlot) {\n return inactiveIconSlot || h(Icon, {\n \"class\": bem('icon'),\n \"attrs\": {\n \"name\": inactiveIcon\n }\n });\n }\n\n return h(\"i\", {\n \"class\": bem('circle'),\n \"style\": this.lineStyle\n });\n },\n onClickStep: function onClickStep() {\n this.parent.$emit('click-step', this.index);\n }\n },\n render: function render() {\n var _ref;\n\n var h = arguments[0];\n var status = this.status,\n active = this.active;\n var direction = this.parent.direction;\n return h(\"div\", {\n \"class\": [BORDER, bem([direction, (_ref = {}, _ref[status] = status, _ref)])]\n }, [h(\"div\", {\n \"class\": bem('title', {\n active: active\n }),\n \"style\": this.titleStyle,\n \"on\": {\n \"click\": this.onClickStep\n }\n }, [this.slots()]), h(\"div\", {\n \"class\": bem('circle-container'),\n \"on\": {\n \"click\": this.onClickStep\n }\n }, [this.genCircle()]), h(\"div\", {\n \"class\": bem('line'),\n \"style\": this.lineStyle\n })]);\n }\n});","import { createNamespace } from '../utils';\nimport { ParentMixin } from '../mixins/relation';\n\nvar _createNamespace = createNamespace('steps'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ParentMixin('vanSteps')],\n props: {\n activeColor: String,\n inactiveIcon: String,\n inactiveColor: String,\n active: {\n type: [Number, String],\n default: 0\n },\n direction: {\n type: String,\n default: 'horizontal'\n },\n activeIcon: {\n type: String,\n default: 'checked'\n }\n },\n render: function render() {\n var h = arguments[0];\n return h(\"div\", {\n \"class\": bem([this.direction])\n }, [h(\"div\", {\n \"class\": bem('items')\n }, [this.slots()])]);\n }\n});","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace } from '../utils';\nimport { emit, inherit } from '../utils/functional'; // Components\n\nimport Icon from '../icon';\nimport Button from '../button'; // Types\n\nvar _createNamespace = createNamespace('submit-bar'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1],\n t = _createNamespace[2];\n\nfunction SubmitBar(h, props, slots, ctx) {\n var tip = props.tip,\n price = props.price,\n tipIcon = props.tipIcon;\n\n function Text() {\n if (typeof price === 'number') {\n var priceArr = (price / 100).toFixed(props.decimalLength).split('.');\n var decimalStr = props.decimalLength ? \".\" + priceArr[1] : '';\n return h(\"div\", {\n \"style\": {\n textAlign: props.textAlign ? props.textAlign : ''\n },\n \"class\": bem('text')\n }, [h(\"span\", [props.label || t('label')]), h(\"span\", {\n \"class\": bem('price')\n }, [props.currency, h(\"span\", {\n \"class\": bem('price', 'integer')\n }, [priceArr[0]]), decimalStr]), props.suffixLabel && h(\"span\", {\n \"class\": bem('suffix-label')\n }, [props.suffixLabel])]);\n }\n }\n\n function Tip() {\n if (slots.tip || tip) {\n return h(\"div\", {\n \"class\": bem('tip')\n }, [tipIcon && h(Icon, {\n \"class\": bem('tip-icon'),\n \"attrs\": {\n \"name\": tipIcon\n }\n }), tip && h(\"span\", {\n \"class\": bem('tip-text')\n }, [tip]), slots.tip && slots.tip()]);\n }\n }\n\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem({\n unfit: !props.safeAreaInsetBottom\n })\n }, inherit(ctx)]), [slots.top && slots.top(), Tip(), h(\"div\", {\n \"class\": bem('bar')\n }, [slots.default && slots.default(), Text(), slots.button ? slots.button() : h(Button, {\n \"attrs\": {\n \"round\": true,\n \"type\": props.buttonType,\n \"text\": props.loading ? '' : props.buttonText,\n \"color\": props.buttonColor,\n \"loading\": props.loading,\n \"disabled\": props.disabled\n },\n \"class\": bem('button', props.buttonType),\n \"on\": {\n \"click\": function click() {\n emit(ctx, 'submit');\n }\n }\n })])]);\n}\n\nSubmitBar.props = {\n tip: String,\n label: String,\n price: Number,\n tipIcon: String,\n loading: Boolean,\n disabled: Boolean,\n textAlign: String,\n buttonText: String,\n buttonColor: String,\n suffixLabel: String,\n safeAreaInsetBottom: {\n type: Boolean,\n default: true\n },\n decimalLength: {\n type: [Number, String],\n default: 2\n },\n currency: {\n type: String,\n default: '¥'\n },\n buttonType: {\n type: String,\n default: 'danger'\n }\n};\nexport default createComponent(SubmitBar);","// Utils\nimport { createNamespace } from '../utils';\nimport { range } from '../utils/format/number';\nimport { preventDefault } from '../utils/dom/event'; // Mixins\n\nimport { TouchMixin } from '../mixins/touch';\nimport { ClickOutsideMixin } from '../mixins/click-outside';\n\nvar _createNamespace = createNamespace('swipe-cell'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nvar THRESHOLD = 0.15;\nexport default createComponent({\n mixins: [TouchMixin, ClickOutsideMixin({\n event: 'touchstart',\n method: 'onClick'\n })],\n props: {\n // @deprecated\n // should be removed in next major version, use beforeClose instead\n onClose: Function,\n disabled: Boolean,\n leftWidth: [Number, String],\n rightWidth: [Number, String],\n beforeClose: Function,\n stopPropagation: Boolean,\n name: {\n type: [Number, String],\n default: ''\n }\n },\n data: function data() {\n return {\n offset: 0,\n dragging: false\n };\n },\n computed: {\n computedLeftWidth: function computedLeftWidth() {\n return +this.leftWidth || this.getWidthByRef('left');\n },\n computedRightWidth: function computedRightWidth() {\n return +this.rightWidth || this.getWidthByRef('right');\n }\n },\n mounted: function mounted() {\n this.bindTouchEvent(this.$el);\n },\n methods: {\n getWidthByRef: function getWidthByRef(ref) {\n if (this.$refs[ref]) {\n var rect = this.$refs[ref].getBoundingClientRect();\n return rect.width;\n }\n\n return 0;\n },\n // @exposed-api\n open: function open(position) {\n var offset = position === 'left' ? this.computedLeftWidth : -this.computedRightWidth;\n this.opened = true;\n this.offset = offset;\n this.$emit('open', {\n position: position,\n name: this.name,\n // @deprecated\n // should be removed in next major version\n detail: this.name\n });\n },\n // @exposed-api\n close: function close(position) {\n this.offset = 0;\n\n if (this.opened) {\n this.opened = false;\n this.$emit('close', {\n position: position,\n name: this.name\n });\n }\n },\n onTouchStart: function onTouchStart(event) {\n if (this.disabled) {\n return;\n }\n\n this.startOffset = this.offset;\n this.touchStart(event);\n },\n onTouchMove: function onTouchMove(event) {\n if (this.disabled) {\n return;\n }\n\n this.touchMove(event);\n\n if (this.direction === 'horizontal') {\n this.dragging = true;\n this.lockClick = true;\n var isPrevent = !this.opened || this.deltaX * this.startOffset < 0;\n\n if (isPrevent) {\n preventDefault(event, this.stopPropagation);\n }\n\n this.offset = range(this.deltaX + this.startOffset, -this.computedRightWidth, this.computedLeftWidth);\n }\n },\n onTouchEnd: function onTouchEnd() {\n var _this = this;\n\n if (this.disabled) {\n return;\n }\n\n if (this.dragging) {\n this.toggle(this.offset > 0 ? 'left' : 'right');\n this.dragging = false; // compatible with desktop scenario\n\n setTimeout(function () {\n _this.lockClick = false;\n }, 0);\n }\n },\n toggle: function toggle(direction) {\n var offset = Math.abs(this.offset);\n var threshold = this.opened ? 1 - THRESHOLD : THRESHOLD;\n var computedLeftWidth = this.computedLeftWidth,\n computedRightWidth = this.computedRightWidth;\n\n if (computedRightWidth && direction === 'right' && offset > computedRightWidth * threshold) {\n this.open('right');\n } else if (computedLeftWidth && direction === 'left' && offset > computedLeftWidth * threshold) {\n this.open('left');\n } else {\n this.close();\n }\n },\n onClick: function onClick(position) {\n if (position === void 0) {\n position = 'outside';\n }\n\n this.$emit('click', position);\n\n if (this.opened && !this.lockClick) {\n if (this.beforeClose) {\n this.beforeClose({\n position: position,\n name: this.name,\n instance: this\n });\n } else if (this.onClose) {\n this.onClose(position, this, {\n name: this.name\n });\n } else {\n this.close(position);\n }\n }\n },\n getClickHandler: function getClickHandler(position, stop) {\n var _this2 = this;\n\n return function (event) {\n if (stop) {\n event.stopPropagation();\n }\n\n _this2.onClick(position);\n };\n },\n genLeftPart: function genLeftPart() {\n var h = this.$createElement;\n var content = this.slots('left');\n\n if (content) {\n return h(\"div\", {\n \"ref\": \"left\",\n \"class\": bem('left'),\n \"on\": {\n \"click\": this.getClickHandler('left', true)\n }\n }, [content]);\n }\n },\n genRightPart: function genRightPart() {\n var h = this.$createElement;\n var content = this.slots('right');\n\n if (content) {\n return h(\"div\", {\n \"ref\": \"right\",\n \"class\": bem('right'),\n \"on\": {\n \"click\": this.getClickHandler('right', true)\n }\n }, [content]);\n }\n }\n },\n render: function render() {\n var h = arguments[0];\n var wrapperStyle = {\n transform: \"translate3d(\" + this.offset + \"px, 0, 0)\",\n transitionDuration: this.dragging ? '0s' : '.6s'\n };\n return h(\"div\", {\n \"class\": bem(),\n \"on\": {\n \"click\": this.getClickHandler('cell')\n }\n }, [h(\"div\", {\n \"class\": bem('wrapper'),\n \"style\": wrapperStyle\n }, [this.genLeftPart(), this.slots(), this.genRightPart()])]);\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace } from '../utils';\nimport { inherit } from '../utils/functional'; // Components\n\nimport Cell from '../cell';\nimport Switch from '../switch';\nimport { switchProps } from '../switch/shared'; // Types\n\nvar _createNamespace = createNamespace('switch-cell'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nfunction SwitchCell(h, props, slots, ctx) {\n if (process.env.NODE_ENV === 'development') {\n console.warn('[Vant] \"SwitchCell\" component is deprecated, see: https://youzan.github.io/vant/#/zh-CN/switch-cell.');\n }\n\n return h(Cell, _mergeJSXProps([{\n \"attrs\": {\n \"center\": true,\n \"size\": props.cellSize,\n \"title\": props.title,\n \"border\": props.border\n },\n \"class\": bem([props.cellSize])\n }, inherit(ctx)]), [h(Switch, {\n \"props\": _extends({}, props),\n \"on\": _extends({}, ctx.listeners)\n })]);\n}\n\nSwitchCell.props = _extends({}, switchProps, {\n title: String,\n cellSize: String,\n border: {\n type: Boolean,\n default: true\n },\n size: {\n type: String,\n default: '24px'\n }\n});\nexport default createComponent(SwitchCell);","import { createNamespace } from '../utils';\nimport { BORDER_TOP_BOTTOM } from '../utils/constant';\nimport { callInterceptor } from '../utils/interceptor';\nimport { ParentMixin } from '../mixins/relation';\n\nvar _createNamespace = createNamespace('tabbar'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ParentMixin('vanTabbar')],\n props: {\n route: Boolean,\n zIndex: [Number, String],\n placeholder: Boolean,\n activeColor: String,\n beforeChange: Function,\n inactiveColor: String,\n value: {\n type: [Number, String],\n default: 0\n },\n border: {\n type: Boolean,\n default: true\n },\n fixed: {\n type: Boolean,\n default: true\n },\n safeAreaInsetBottom: {\n type: Boolean,\n default: null\n }\n },\n data: function data() {\n return {\n height: null\n };\n },\n computed: {\n fit: function fit() {\n if (this.safeAreaInsetBottom !== null) {\n return this.safeAreaInsetBottom;\n } // enable safe-area-inset-bottom by default when fixed\n\n\n return this.fixed;\n }\n },\n watch: {\n value: 'setActiveItem',\n children: 'setActiveItem'\n },\n mounted: function mounted() {\n if (this.placeholder && this.fixed) {\n this.height = this.$refs.tabbar.getBoundingClientRect().height;\n }\n },\n methods: {\n setActiveItem: function setActiveItem() {\n var _this = this;\n\n this.children.forEach(function (item, index) {\n item.active = (item.name || index) === _this.value;\n });\n },\n onChange: function onChange(active) {\n var _this2 = this;\n\n if (active !== this.value) {\n callInterceptor({\n interceptor: this.beforeChange,\n args: [active],\n done: function done() {\n _this2.$emit('input', active);\n\n _this2.$emit('change', active);\n }\n });\n }\n },\n genTabbar: function genTabbar() {\n var _ref;\n\n var h = this.$createElement;\n return h(\"div\", {\n \"ref\": \"tabbar\",\n \"style\": {\n zIndex: this.zIndex\n },\n \"class\": [(_ref = {}, _ref[BORDER_TOP_BOTTOM] = this.border, _ref), bem({\n unfit: !this.fit,\n fixed: this.fixed\n })]\n }, [this.slots()]);\n }\n },\n render: function render() {\n var h = arguments[0];\n\n if (this.placeholder && this.fixed) {\n return h(\"div\", {\n \"class\": bem('placeholder'),\n \"style\": {\n height: this.height + \"px\"\n }\n }, [this.genTabbar()]);\n }\n\n return this.genTabbar();\n }\n});","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// Utils\nimport { createNamespace, isObject, isDef } from '../utils';\nimport { route, routeProps } from '../utils/router'; // Mixins\n\nimport { ChildrenMixin } from '../mixins/relation'; // Components\n\nimport Icon from '../icon';\nimport Info from '../info';\n\nvar _createNamespace = createNamespace('tabbar-item'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nexport default createComponent({\n mixins: [ChildrenMixin('vanTabbar')],\n props: _extends({}, routeProps, {\n dot: Boolean,\n icon: String,\n name: [Number, String],\n // @deprecated\n info: [Number, String],\n badge: [Number, String],\n iconPrefix: String\n }),\n data: function data() {\n return {\n active: false\n };\n },\n computed: {\n routeActive: function routeActive() {\n var to = this.to,\n $route = this.$route;\n\n if (to && $route) {\n var config = isObject(to) ? to : {\n path: to\n };\n var pathMatched = config.path === $route.path;\n var nameMatched = isDef(config.name) && config.name === $route.name;\n return pathMatched || nameMatched;\n }\n }\n },\n methods: {\n onClick: function onClick(event) {\n this.parent.onChange(this.name || this.index);\n this.$emit('click', event);\n route(this.$router, this);\n },\n genIcon: function genIcon(active) {\n var h = this.$createElement;\n var slot = this.slots('icon', {\n active: active\n });\n\n if (slot) {\n return slot;\n }\n\n if (this.icon) {\n return h(Icon, {\n \"attrs\": {\n \"name\": this.icon,\n \"classPrefix\": this.iconPrefix\n }\n });\n }\n }\n },\n render: function render() {\n var _this$badge;\n\n var h = arguments[0];\n var active = this.parent.route ? this.routeActive : this.active;\n var color = this.parent[active ? 'activeColor' : 'inactiveColor'];\n\n if (process.env.NODE_ENV === 'development' && this.info) {\n console.warn('[Vant] TabbarItem: \"info\" prop is deprecated, use \"badge\" prop instead.');\n }\n\n return h(\"div\", {\n \"class\": bem({\n active: active\n }),\n \"style\": {\n color: color\n },\n \"on\": {\n \"click\": this.onClick\n }\n }, [h(\"div\", {\n \"class\": bem('icon')\n }, [this.genIcon(active), h(Info, {\n \"attrs\": {\n \"dot\": this.dot,\n \"info\": (_this$badge = this.badge) != null ? _this$badge : this.info\n }\n })]), h(\"div\", {\n \"class\": bem('text')\n }, [this.slots('default', {\n active: active\n })])]);\n }\n});","import _mergeJSXProps from \"@vue/babel-helper-vue-jsx-merge-props\";\n// Utils\nimport { createNamespace, addUnit } from '../utils';\nimport { emit, inherit } from '../utils/functional'; // Components\n\nimport Icon from '../icon';\nimport Sidebar from '../sidebar';\nimport SidebarItem from '../sidebar-item'; // Types\n\nvar _createNamespace = createNamespace('tree-select'),\n createComponent = _createNamespace[0],\n bem = _createNamespace[1];\n\nfunction TreeSelect(h, props, slots, ctx) {\n var items = props.items,\n height = props.height,\n activeId = props.activeId,\n selectedIcon = props.selectedIcon,\n mainActiveIndex = props.mainActiveIndex;\n\n if (process.env.NODE_ENV === 'development') {\n if (ctx.listeners.navclick) {\n console.warn('[Vant] TreeSelect: \"navclick\" event is deprecated, use \"click-nav\" instead.');\n }\n\n if (ctx.listeners.itemclick) {\n console.warn('[Vant] TreeSelect: \"itemclick\" event is deprecated, use \"click-item\" instead.');\n }\n }\n\n var selectedItem = items[+mainActiveIndex] || {};\n var subItems = selectedItem.children || [];\n var isMultiple = Array.isArray(activeId);\n\n function isActiveItem(id) {\n return isMultiple ? activeId.indexOf(id) !== -1 : activeId === id;\n }\n\n var Navs = items.map(function (item) {\n var _item$badge;\n\n return h(SidebarItem, {\n \"attrs\": {\n \"dot\": item.dot,\n \"info\": (_item$badge = item.badge) != null ? _item$badge : item.info,\n \"title\": item.text,\n \"disabled\": item.disabled\n },\n \"class\": [bem('nav-item'), item.className]\n });\n });\n\n function Content() {\n if (slots.content) {\n return slots.content();\n }\n\n return subItems.map(function (item) {\n return h(\"div\", {\n \"key\": item.id,\n \"class\": ['van-ellipsis', bem('item', {\n active: isActiveItem(item.id),\n disabled: item.disabled\n })],\n \"on\": {\n \"click\": function click() {\n if (!item.disabled) {\n var newActiveId = item.id;\n\n if (isMultiple) {\n newActiveId = activeId.slice();\n var index = newActiveId.indexOf(item.id);\n\n if (index !== -1) {\n newActiveId.splice(index, 1);\n } else if (newActiveId.length < props.max) {\n newActiveId.push(item.id);\n }\n }\n\n emit(ctx, 'update:active-id', newActiveId);\n emit(ctx, 'click-item', item); // compatible with legacy usage, should be removed in next major version\n\n emit(ctx, 'itemclick', item);\n }\n }\n }\n }, [item.text, isActiveItem(item.id) && h(Icon, {\n \"attrs\": {\n \"name\": selectedIcon\n },\n \"class\": bem('selected')\n })]);\n });\n }\n\n return h(\"div\", _mergeJSXProps([{\n \"class\": bem(),\n \"style\": {\n height: addUnit(height)\n }\n }, inherit(ctx)]), [h(Sidebar, {\n \"class\": bem('nav'),\n \"attrs\": {\n \"activeKey\": mainActiveIndex\n },\n \"on\": {\n \"change\": function change(index) {\n emit(ctx, 'update:main-active-index', index);\n emit(ctx, 'click-nav', index); // compatible with legacy usage, should be removed in next major version\n\n emit(ctx, 'navclick', index);\n }\n }\n }, [Navs]), h(\"div\", {\n \"class\": bem('content')\n }, [Content()])]);\n}\n\nTreeSelect.props = {\n max: {\n type: [Number, String],\n default: Infinity\n },\n items: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n height: {\n type: [Number, String],\n default: 300\n },\n activeId: {\n type: [Number, String, Array],\n default: 0\n },\n selectedIcon: {\n type: String,\n default: 'success'\n },\n mainActiveIndex: {\n type: [Number, String],\n default: 0\n }\n};\nexport default createComponent(TreeSelect);","import ActionSheet from './action-sheet';\nimport AddressEdit from './address-edit';\nimport AddressList from './address-list';\nimport Area from './area';\nimport Badge from './badge';\nimport Button from './button';\nimport Calendar from './calendar';\nimport Card from './card';\nimport Cascader from './cascader';\nimport Cell from './cell';\nimport CellGroup from './cell-group';\nimport Checkbox from './checkbox';\nimport CheckboxGroup from './checkbox-group';\nimport Circle from './circle';\nimport Col from './col';\nimport Collapse from './collapse';\nimport CollapseItem from './collapse-item';\nimport ContactCard from './contact-card';\nimport ContactEdit from './contact-edit';\nimport ContactList from './contact-list';\nimport CountDown from './count-down';\nimport Coupon from './coupon';\nimport CouponCell from './coupon-cell';\nimport CouponList from './coupon-list';\nimport DatetimePicker from './datetime-picker';\nimport Dialog from './dialog';\nimport Divider from './divider';\nimport DropdownItem from './dropdown-item';\nimport DropdownMenu from './dropdown-menu';\nimport Empty from './empty';\nimport Field from './field';\nimport Form from './form';\nimport GoodsAction from './goods-action';\nimport GoodsActionButton from './goods-action-button';\nimport GoodsActionIcon from './goods-action-icon';\nimport Grid from './grid';\nimport GridItem from './grid-item';\nimport Icon from './icon';\nimport Image from './image';\nimport ImagePreview from './image-preview';\nimport IndexAnchor from './index-anchor';\nimport IndexBar from './index-bar';\nimport Info from './info';\nimport Lazyload from './lazyload';\nimport List from './list';\nimport Loading from './loading';\nimport Locale from './locale';\nimport NavBar from './nav-bar';\nimport NoticeBar from './notice-bar';\nimport Notify from './notify';\nimport NumberKeyboard from './number-keyboard';\nimport Overlay from './overlay';\nimport Pagination from './pagination';\nimport Panel from './panel';\nimport PasswordInput from './password-input';\nimport Picker from './picker';\nimport Popover from './popover';\nimport Popup from './popup';\nimport Progress from './progress';\nimport PullRefresh from './pull-refresh';\nimport Radio from './radio';\nimport RadioGroup from './radio-group';\nimport Rate from './rate';\nimport Row from './row';\nimport Search from './search';\nimport ShareSheet from './share-sheet';\nimport Sidebar from './sidebar';\nimport SidebarItem from './sidebar-item';\nimport Skeleton from './skeleton';\nimport Sku from './sku';\nimport Slider from './slider';\nimport Step from './step';\nimport Stepper from './stepper';\nimport Steps from './steps';\nimport Sticky from './sticky';\nimport SubmitBar from './submit-bar';\nimport Swipe from './swipe';\nimport SwipeCell from './swipe-cell';\nimport SwipeItem from './swipe-item';\nimport Switch from './switch';\nimport SwitchCell from './switch-cell';\nimport Tab from './tab';\nimport Tabbar from './tabbar';\nimport TabbarItem from './tabbar-item';\nimport Tabs from './tabs';\nimport Tag from './tag';\nimport Toast from './toast';\nimport TreeSelect from './tree-select';\nimport Uploader from './uploader';\nvar version = '2.12.6';\n\nfunction install(Vue) {\n var components = [ActionSheet, AddressEdit, AddressList, Area, Badge, Button, Calendar, Card, Cascader, Cell, CellGroup, Checkbox, CheckboxGroup, Circle, Col, Collapse, CollapseItem, ContactCard, ContactEdit, ContactList, CountDown, Coupon, CouponCell, CouponList, DatetimePicker, Dialog, Divider, DropdownItem, DropdownMenu, Empty, Field, Form, GoodsAction, GoodsActionButton, GoodsActionIcon, Grid, GridItem, Icon, Image, ImagePreview, IndexAnchor, IndexBar, Info, List, Loading, Locale, NavBar, NoticeBar, Notify, NumberKeyboard, Overlay, Pagination, Panel, PasswordInput, Picker, Popover, Popup, Progress, PullRefresh, Radio, RadioGroup, Rate, Row, Search, ShareSheet, Sidebar, SidebarItem, Skeleton, Sku, Slider, Step, Stepper, Steps, Sticky, SubmitBar, Swipe, SwipeCell, SwipeItem, Switch, SwitchCell, Tab, Tabbar, TabbarItem, Tabs, Tag, Toast, TreeSelect, Uploader];\n components.forEach(function (item) {\n if (item.install) {\n Vue.use(item);\n } else if (item.name) {\n Vue.component(item.name, item);\n }\n });\n}\n\nif (typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n}\n\nexport { install, version, ActionSheet, AddressEdit, AddressList, Area, Badge, Button, Calendar, Card, Cascader, Cell, CellGroup, Checkbox, CheckboxGroup, Circle, Col, Collapse, CollapseItem, ContactCard, ContactEdit, ContactList, CountDown, Coupon, CouponCell, CouponList, DatetimePicker, Dialog, Divider, DropdownItem, DropdownMenu, Empty, Field, Form, GoodsAction, GoodsActionButton, GoodsActionIcon, Grid, GridItem, Icon, Image, ImagePreview, IndexAnchor, IndexBar, Info, Lazyload, List, Loading, Locale, NavBar, NoticeBar, Notify, NumberKeyboard, Overlay, Pagination, Panel, PasswordInput, Picker, Popover, Popup, Progress, PullRefresh, Radio, RadioGroup, Rate, Row, Search, ShareSheet, Sidebar, SidebarItem, Skeleton, Sku, Slider, Step, Stepper, Steps, Sticky, SubmitBar, Swipe, SwipeCell, SwipeItem, Switch, SwitchCell, Tab, Tabbar, TabbarItem, Tabs, Tag, Toast, TreeSelect, Uploader };\nexport default {\n install: install,\n version: version\n};","/**\n * bem helper\n * b() // 'button'\n * b('text') // 'button__text'\n * b({ disabled }) // 'button button--disabled'\n * b('text', { disabled }) // 'button__text button__text--disabled'\n * b(['disabled', 'primary']) // 'button button--disabled button--primary'\n */\nfunction gen(name, mods) {\n if (!mods) {\n return '';\n }\n\n if (typeof mods === 'string') {\n return \" \" + name + \"--\" + mods;\n }\n\n if (Array.isArray(mods)) {\n return mods.reduce(function (ret, item) {\n return ret + gen(name, item);\n }, '');\n }\n\n return Object.keys(mods).reduce(function (ret, key) {\n return ret + (mods[key] ? gen(name, key) : '');\n }, '');\n}\n\nexport function createBEM(name) {\n return function (el, mods) {\n if (el && typeof el !== 'string') {\n mods = el;\n el = '';\n }\n\n el = el ? name + \"__\" + el : name;\n return \"\" + el + gen(el, mods);\n };\n}","/**\n * Use scopedSlots in Vue 2.6+\n * downgrade to slots in lower version\n */\nexport var SlotsMixin = {\n methods: {\n slots: function slots(name, props) {\n if (name === void 0) {\n name = 'default';\n }\n\n var $slots = this.$slots,\n $scopedSlots = this.$scopedSlots;\n var scopedSlot = $scopedSlots[name];\n\n if (scopedSlot) {\n return scopedSlot(props);\n }\n\n return $slots[name];\n }\n }\n};","/**\n * Create a basic component with common options\n */\nimport '../../locale';\nimport { isFunction } from '..';\nimport { camelize } from '../format/string';\nimport { SlotsMixin } from '../../mixins/slots';\nimport Vue from 'vue';\n\nfunction install(Vue) {\n var name = this.name;\n Vue.component(name, this);\n Vue.component(camelize(\"-\" + name), this);\n} // unify slots & scopedSlots\n\n\nexport function unifySlots(context) {\n // use data.scopedSlots in lower Vue version\n var scopedSlots = context.scopedSlots || context.data.scopedSlots || {};\n var slots = context.slots();\n Object.keys(slots).forEach(function (key) {\n if (!scopedSlots[key]) {\n scopedSlots[key] = function () {\n return slots[key];\n };\n }\n });\n return scopedSlots;\n} // should be removed after Vue 3\n\nfunction transformFunctionComponent(pure) {\n return {\n functional: true,\n props: pure.props,\n model: pure.model,\n render: function render(h, context) {\n return pure(h, context.props, unifySlots(context), context);\n }\n };\n}\n\nexport function createComponent(name) {\n return function (sfc) {\n if (isFunction(sfc)) {\n sfc = transformFunctionComponent(sfc);\n }\n\n if (!sfc.functional) {\n sfc.mixins = sfc.mixins || [];\n sfc.mixins.push(SlotsMixin);\n }\n\n sfc.name = name;\n sfc.install = install;\n return sfc;\n };\n}","import { get, isFunction } from '..';\nimport { camelize } from '../format/string';\nimport locale from '../../locale';\nexport function createI18N(name) {\n var prefix = camelize(name) + '.';\n return function (path) {\n var messages = locale.messages();\n var message = get(messages, prefix + path) || get(messages, path);\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return isFunction(message) ? message.apply(void 0, args) : message;\n };\n}","import { createBEM } from './bem';\nimport { createComponent } from './component';\nimport { createI18N } from './i18n';\nexport function createNamespace(name) {\n name = 'van-' + name;\n return [createComponent(name), createBEM(name), createI18N(name)];\n}","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n// FF49- issue\nvar USES_TO_LENGTH = arrayMethodUsesToLength('map');\n\n// `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","import { isDef, inBrowser } from '..';\nimport { isNumeric } from '../validate/number';\nexport function addUnit(value) {\n if (!isDef(value)) {\n return undefined;\n }\n\n value = String(value);\n return isNumeric(value) ? value + \"px\" : value;\n} // cache\n\nvar rootFontSize;\n\nfunction getRootFontSize() {\n if (!rootFontSize) {\n var doc = document.documentElement;\n var fontSize = doc.style.fontSize || window.getComputedStyle(doc).fontSize;\n rootFontSize = parseFloat(fontSize);\n }\n\n return rootFontSize;\n}\n\nfunction convertRem(value) {\n value = value.replace(/rem/g, '');\n return +value * getRootFontSize();\n}\n\nfunction convertVw(value) {\n value = value.replace(/vw/g, '');\n return +value * window.innerWidth / 100;\n}\n\nfunction convertVh(value) {\n value = value.replace(/vh/g, '');\n return +value * window.innerHeight / 100;\n}\n\nexport function unitToPx(value) {\n if (typeof value === 'number') {\n return value;\n }\n\n if (inBrowser) {\n if (value.indexOf('rem') !== -1) {\n return convertRem(value);\n }\n\n if (value.indexOf('vw') !== -1) {\n return convertVw(value);\n }\n\n if (value.indexOf('vh') !== -1) {\n return convertVh(value);\n }\n }\n\n return parseFloat(value);\n}"],"sourceRoot":""}