{"version":3,"mappings":"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","names":["relList","document","createElement","supports","link","querySelectorAll","processPreload","mutations","mutation","type","addedNodes","node","tagName","rel","observe","childList","subtree","ep","script","fetchOpts","integrity","referrerpolicy","referrerPolicy","crossorigin","credentials","getFetchOpts","fetch","href","p","exports","t","e","n","r","i","s","u","a","o","f","h","c","d","$","l","y","M","name","weekdays","split","months","m","String","length","Array","join","g","z","utcOffset","Math","abs","floor","date","year","month","clone","add","ceil","w","D","ms","Q","toLowerCase","replace","v","_","S","args","arguments","O","locale","$L","utc","$u","x","$x","$offset","this","parse","prototype","Date","NaN","test","match","substring","UTC","init","$d","$y","getFullYear","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","toString","isSame","startOf","endOf","isAfter","isBefore","$g","set","unix","valueOf","getTime","toDate","apply","slice","$locale","weekStart","$set","min","daysInMonth","get","Number","round","subtract","format","invalidDate","meridiem","YY","YYYY","MM","MMM","monthsShort","MMMM","DD","dd","weekdaysMin","ddd","weekdaysShort","dddd","H","HH","hh","A","mm","ss","SSS","Z","getTimezoneOffset","diff","toJSON","toISOString","toUTCString","T","forEach","extend","$i","isDayjs","en","Ls","getImageUrl","imagePath","URL","import","url","iconBasePath","icons","affection","character","community","health","money","question","travel","work","qrcode","getQueryString","locationSearches","window","location","console","log","locationSearch","search","hash","substr","lastIndexOf","query","param","idx","keyValue","decodeURIComponent","getQueryStringByKey","key","qs","Object","keys","mobileReg","getBbsDate","dayjs","DateFormatTime","getSexName","sex","getPrice","price","parseInt","getDateInfo","value","day","formatStrRNToBr","TAB_BAR_LIST","text","color","activeColor","image","activeImage","HomePage","AboutPage","DateFormat","DateFormatMinute","activePinia","setActivePinia","pinia","piniaSymbol","Symbol","isPlainObject","call","MutationType","noop","addSubscription","subscriptions","callback","detached","onCleanup","push","removeSubscription","indexOf","getCurrentInstance","onUnmounted","triggerSubscriptions","mergeReactiveObjects","target","patchToApply","hasOwnProperty","subPatch","targetValue","isRef","isReactive","skipHydrateSymbol","assign","createSetupStore","$id","setup","options","hot","isOptionsStore","optionsForPlugin","actions","$subscribeOptions","deep","isSyncListening","debuggerEvents","markRaw","actionSubscriptions","state","$patch","partialStateOrMutator","isListening","subscriptionMutation","patchFunction","storeId","events","patchObject","payload","activeListener","nextTick","then","myListenerId","initialState","ref","$reset","action","from","afterCallbackList","onErrorCallbackList","after","onError","store","ret","error","Promise","catch","reject","partialStore","_p","$onAction","bind","$subscribe","stopWatcher","scope","run","watch","flush","direct","$dispose","stop","_s","delete","reactive","setupStore","_e","effectScope","prop","effect","obj","wrapAction","actionValue","$state","extender","app","_a","hydrate","defineStore","idOrOptions","setupOptions","currentInstance","inject","has","id","isSetupStore","getters","localState","toRefs","reduce","computedGetters","computed","newState","createOptionsStore","useStore","storeToRefs","toRaw","refs","toRef","showTabBar","tabBarActive","copyRightBottom","zIndex","setShowTabBar","setCopyRightBottom","setTabActive","index","querySelector","tabBar","clientHeight","inBrowser","object","path","result","pick","ignoreUndefined","toArray","item","isArray","unknownProp","numericProp","truthProp","Boolean","default","makeRequiredProp","required","makeArrayProp","makeNumberProp","defaultVal","makeNumericProp","makeStringProp","raf","fn","requestAnimationFrame","doubleRaf","width","height","makeDOMRect","width2","height2","top","left","right","bottom","useRect","elementOrRef","unref","element","innerWidth","innerHeight","getBoundingClientRect","useToggle","defaultValue","useParent","parent","instance","unlink","internalChildren","ref2","sortChildren","publicChildren","vnodes","children","traverse","children2","child","isVNode","component","subTree","flattenVNodes","sort","b","vnode","orderedPublicChildren","map","proxy","useChildren","getCurrentInstance2","linkChildren","provide","onMountedOrActivated","hook","onMounted","mounted","onActivated2","useEventListener","listener","passive","capture","target2","unref2","attached","addEventListener","remove","onDeactivated","val","oldVal","visibility","overflowScrollReg","defaultRoot","isElement","nodeType","getScrollParent","el","root","overflowY","getComputedStyle","parentNode","useScrollParent","scrollParent","ref5","onMounted2","usePageVisibility","ref6","update","hidden","CUSTOM_FIELD_INJECTION_KEY","useCustomFieldValue","customValue","inject2","field","watch2","resetValidation","validateWithTrigger","isDef","isFunction","isObject","isPromise","isDate","isNaN","isNumeric","getScrollTop","scrollTop","pageYOffset","max","setScrollTop","scrollX","getRootScrollTop","documentElement","body","setRootScrollTop","getElementTop","scroller","isIOS","navigator","userAgent","resetScroll","preventDefault","event","isStopPropagation","cancelable","stopPropagation","isHidden","elementRef","style","display","parentHidden","offsetParent","position","windowWidth","windowHeight","ref4","useWindowSize","addUnit","getZIndexStyle","rootFontSize","convertRem","doc","fontSize","parseFloat","getRootFontSize","unitToPx","includes","convertVw","convertVh","camelizeRE","camelize","str","toUpperCase","padZero","num","targetLength","clamp","trimExtraChar","char","regExp","formatNumber","allowDot","allowMinus","deepAssign","to","assignKey","lang","messages","tel","save","confirm","cancel","loading","noCoupon","nameEmpty","addContact","telInvalid","vanCalendar","end","start","title","monthTitle","rangePrompt","maxRange","vanCascader","select","vanPagination","prev","next","vanPullRefresh","pulling","loosing","vanSubmitBar","label","vanCoupon","unlimited","discount","condition","vanCouponCell","count","vanCouponList","exchange","close","enable","disabled","placeholder","vanAddressEdit","area","postal","areaEmpty","addressEmpty","postalEmpty","addressDetail","defaultAddress","vanAddressList","stdin_default","use","newLang","newMessages","createTranslate","message","prefix","genBem","mods","createBEM","createNamespace","prefixedName","BORDER","BORDER_TOP","BORDER_LEFT","BORDER_BOTTOM","BORDER_SURROUND","BORDER_TOP_BOTTOM","BORDER_UNSET_TOP_BOTTOM","HAPTICS_FEEDBACK","FORM_KEY","callInterceptor","interceptor","done","canceled","returnVal","withInstall","useHeight","withSafeArea","setHeight","setTimeout","usePlaceholder","contentRef","bem","renderContent","_createVNode","class","ACTION_BAR_KEY","ActionBar","defineComponent","props","safeAreaInsetBottom","slots","renderPlaceholder","renderActionBar","useExpose","apis","routeProps","route","$router","router","useRoute","vm","Badge","dot","tag","offset","content","showZero","hasContent","style2","background","startsWith","marginTop","marginLeft","renderBadge","fixed","CONFIG_PROVIDER_KEY","themeVars","iconPrefix","cssVars","mapThemeVarsToCSSVars","Icon","size","badge","badgeProps","classPrefix","config","name2","isImageIcon","isImage","_mergeProps","src","SpinIcon","fill","CircularIcon","viewBox","cx","cy","Loading","vertical","textSize","textColor","originSize","getSizeStyle","renderText","spinnerStyle","Button","icon","block","plain","square","hairline","nativeType","loadingSize","loadingText","loadingType","iconPosition","emits","emit","renderIcon","getStyle","border","borderColor","onClick","classes","ActionBarButton","isFirst","isLast","isButton","last","first","popupSharedProps","show","overlay","duration","teleport","lockScroll","lazyRender","beforeClose","Function","overlayStyle","overlayClass","transitionAppear","closeOnClickOverlay","popupSharedPropKeys","useTouch","startY","deltaX","deltaY","offsetX","offsetY","direction","reset","move","touches","touch","clientX","startX","clientY","isVertical","isHorizontal","totalLockCount","useLazyRender","inited","immediate","render","POPUP_TOGGLE_KEY","onPopupReopen","popupToggleStatus","Overlay","className","customStyle","preventTouchMove","renderOverlay","_withDirectives","animationDuration","onTouchmove","_vShow","Transition","appear","popupProps","closeIcon","closeable","transition","closeOnPopstate","closeIconPosition","safeAreaInsetTop","globalZIndex","Popup","inheritAttrs","attrs","shouldReopen","popupRef","open","opened","onClickOverlay","onClickCloseIcon","renderCloseIcon","role","tabindex","onOpened","onClosed","onKeydown","renderPopup","renderTransition","onAfterEnter","onAfterLeave","focus","rootRef","shouldLock","onTouchMove","scrollHeight","offsetHeight","status","lock","classList","unlock","destroy","onBeforeUnmount","useLockScroll","onActivated","Teleport","_Fragment","usePopupState","toggle","mountComponent","RootComponent","createApp","appendChild","mount","unmount","removeChild","lockCount","popupInheritProps","iconSize","forbidClick","closeOnClick","clickable","toggleClickable","newValue","updateShow","clearTimer","clearTimeout","timer","renderMessage","innerHTML","defaultOptions","onClose","queue","allowMultiple","currentOptions","defaultOptionsMap","Map","parseOptions","getInstance","filter","VanToast","clear","createInstance","Toast","toast","parsedOptions","createMethod","success","fail","all","shift","setDefaultOptions","resetDefaultOptions","install","globalProperties","$toast","dialogProps","theme","allowHtml","messageAlign","showCancelButton","cancelButtonText","cancelButtonColor","cancelButtonDisabled","confirmButtonText","confirmButtonColor","confirmButtonDisabled","showConfirmButton","popupInheritKeys","getActionHandler","onCancel","onConfirm","withKeys","_b","Enter","Escape","renderTitle","isolated","hasTitle","classNames","renderFooter","footer","Dialog","resolve","Wrapper","VanDialog","alert","extend$1","Component","$dialog","tabbarProps","beforeChange","inactiveColor","modelValue","TABBAR_KEY","Tabbar","enableSafeArea","renderTabbar","setActive","active","afterChange","TabbarItem","route2","$route","matched","find","pathMatched","nameMatched","cache","thisArg","require$$0","kindOf","create","thing","kindOfTest","isUndefined","isArrayBuffer","getPrototypeOf","isFile","isBlob","isFileList","isURLSearchParams","TypedArray","isTypedArray","Uint8Array","utils","isBuffer","constructor","isFormData","pattern","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isStream","pipe","isStandardBrowserEnv","product","merge","assignValue","trim","stripBOM","charCodeAt","inherits","superConstructor","descriptors","toFlatObject","sourceObj","destObj","merged","getOwnPropertyNames","endsWith","searchString","lastIndex","arr","encode","buildURL","params","paramsSerializer","serializedParams","parts","stringify","hashmarkIndex","InterceptorManager","handlers","fulfilled","rejected","synchronous","runWhen","eject","AxiosError","code","request","response","Error","description","number","fileName","lineNumber","columnNumber","stack","defineProperties","defineProperty","customProps","axiosError","transitional","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","formData","convertValue","Blob","Buffer","data","parentKey","fullKey","append","build","pop","isAbsoluteURL","combineURLs","baseURL","relativeURL","buildFullPath","requestedURL","CanceledError","ERR_CANCELED","require$$1","__CANCEL__","settle","validateStatus","ERR_BAD_REQUEST","ERR_BAD_RESPONSE","cookies","write","expires","domain","secure","cookie","encodeURIComponent","toGMTString","read","RegExp","now","require$$2","require$$3","require$$4","parseHeaders","ignoreDuplicateOf","headers","parsed","line","concat","require$$5","isURLSameOrigin","originURL","msie","urlParsingNode","resolveURL","protocol","host","hostname","port","pathname","charAt","requestURL","require$$6","transitionalDefaults","require$$7","require$$8","require$$9","parseProtocol","exec","xhr","onCanceled","requestData","requestHeaders","responseType","cancelToken","unsubscribe","signal","removeEventListener","XMLHttpRequest","auth","username","password","unescape","Authorization","btoa","fullPath","onloadend","responseHeaders","getAllResponseHeaders","responseText","statusText","err","method","timeout","onreadystatechange","readyState","responseURL","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","xsrfValue","withCredentials","xsrfCookieName","xsrfHeaderName","setRequestHeader","onDownloadProgress","onUploadProgress","upload","abort","subscribe","aborted","send","normalizeHeaderName","normalizedName","toFormData","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","adapter","defaults","process","transformRequest","isObjectPayload","contentType","_FormData","env","rawValue","parser","encoder","JSON","stringifySafely","transformResponse","strictJSONParsing","maxContentLength","maxBodyLength","_null","common","Accept","defaults$3","isCancel$2","transformData","fns","context","isCancel","throwIfCancellationRequested","throwIfRequested","mergeConfig","config1","config2","source","mergeDeepProperties","getMergedValue","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","timeoutMessage","decompress","beforeRedirect","transport","httpAgent","httpsAgent","socketPath","responseEncoding","configValue","version","VERSION","validators","validators$1","deprecatedWarnings","validator","opt","desc","opts","formatMessage","ERR_DEPRECATED","dispatchRequest","utils$3","reason","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","configOrUrl","boolean","requestInterceptorChain","synchronousRequestInterceptors","unshift","promise","responseInterceptorChain","chain","newConfig","onRejected","onFulfilled","getUri","generateHTTPMethod","isForm","Axios$1","axios","defaultConfig","CancelToken","executor","TypeError","resolvePromise","token","_listeners","onfulfilled","_resolve","splice","require$$10","Cancel","promises","spread","isAxiosError","require$$12","axiosModule","axios_1","Expires","Pragma","service","async","authStore","getToken","authToken","resp","removeToken","post","tUrl","parseResponse","__","del","deserialize","_JsonStorage","static","storage","getItem","session","setItem","removeItem","excepts","JsonStorage","__publicField","localStorage","sessionStorage","res","getSystemSettings","setToken","getUserProfile","headimgurl","nickname","country","city","divinatoryCount","isAgreementAccepted","systemSetting","banners","questionPrice","questionOldPrice","fastQuestionPrice","fastQuestionOldPrice","kefuWeixin","weixin","weixinQrCode","orderCount","tags","useHomeStore","generalTags","customTags","todayInfo","remark","resultReloadId","setResultReloadId","setRemark","submitType","divinationByRandom","divinationByBirthday","divinationByMobile","today","orderNo","questionId","jWeixin","onMenuShareTimeline","onMenuShareAppMessage","onMenuShareQQ","onMenuShareWeibo","onMenuShareQZone","previewImage","getLocation","openProductSpecificView","addCard","openCard","chooseWXPay","openEnterpriseRedPacket","startSearchBeacons","stopSearchBeacons","onSearchBeacons","consumeAndShareCard","openAddress","platform","initStartTime","L","initEndTime","preVerifyStartTime","preVerifyEndTime","appId","initTime","preVerifyTime","networkType","isPreVerifyOk","systemType","clientVersion","_completes","I","B","check","verifyJsApiList","C","jsApiList","verifyOpenTagList","openTagList","_complete","_fail","debug","Image","getNetworkType","isInnerInvoke","complete","invoke","WeixinJSBridge","on","ready","checkJsApi","checkResult","P","img_url","imgUrl","data_url","dataUrl","scene","updateTimelineShareData","updateAppMessageShareData","startRecord","stopRecord","onVoiceRecordEnd","playVoice","localId","pauseVoice","stopVoice","onVoicePlayEnd","uploadVoice","isShowProgressTips","downloadVoice","serverId","translateVoice","chooseImage","sizeType","sourceType","localIds","current","urls","uploadImage","downloadImage","getLocalImgData","wx","errMsg","subtype","openLocation","latitude","longitude","address","scale","infoUrl","hideOptionMenu","showOptionMenu","closeWindow","hideMenuItems","menuList","showMenuItems","hideAllNonBaseMenuItem","showAllNonBaseMenuItem","scanQRCode","needResult","scanType","resultStr","scan_code","scan_result","postalCode","addressPostalCode","provinceName","proviceFirstStageName","cityName","addressCitySecondStageName","countryName","addressCountiesThirdStageName","detailInfo","addressDetailInfo","pid","productId","view_type","viewType","ext_info","extInfo","cardList","card_id","cardId","card_ext","cardExt","card_list","isSuccess","is_succ","chooseCard","app_id","location_id","shopId","sign_type","signType","card_type","cardType","card_sign","cardSign","time_stamp","timestamp","nonce_str","nonceStr","choose_card_info","consumedCardId","consumedCode","V","ticket","openEnterpriseChat","useridlist","userIds","chatname","groupName","launchMiniProgram","targetAppId","envVersion","openBusinessView","businessType","queryString","extraData","miniProgram","navigateBack","arg","delta","navigateTo","redirectTo","switchTab","reLaunch","postMessage","getEnv","miniprogram","__wxjs_environment","k","localData","trigger","verifyAppId","verifySignType","verifyTimestamp","verifyNonceStr","verifySignature","signature","timeStamp","package","paySign","errCode","err_code","err_desc","err_detail","err_msg","orderType","questionInfo","fromPage","toPage","homeStore","order","wxpayQequestData","payRes","wxInit","getJsApiConfig","weixinJsSdk","commonShareData","shareHref","routes","redirect","__vitePreload","createRouter","history","createWebHashHistory","scrollBehavior","savedPosition","tabUrlList","beforeEach","appStore","useAppStore","toHref","afterEach","toBeInstalled","$pinia","plugin","createPinia","renderView","App","getAuthCode","wxLoginUrl","wxLoginUrlQs","redirect_uri","origin","pre"],"sources":["../../vite/modulepreload-polyfill","../../node_modules/dayjs/dayjs.min.js","../../src/utils/index.ts","../../src/config/index.ts","../../node_modules/pinia/dist/pinia.esm-browser.js","../../src/store/index.ts","../../node_modules/vant/es/utils/basic.mjs","../../node_modules/vant/es/utils/props.mjs","../../node_modules/@vant/use/dist/index.esm.mjs","../../node_modules/vant/es/utils/validate.mjs","../../node_modules/vant/es/utils/dom.mjs","../../node_modules/vant/es/utils/format.mjs","../../node_modules/vant/es/utils/deep-assign.mjs","../../node_modules/vant/es/locale/index.mjs","../../node_modules/vant/es/locale/lang/zh-CN.mjs","../../node_modules/vant/es/utils/create.mjs","../../node_modules/vant/es/utils/constant.mjs","../../node_modules/vant/es/utils/interceptor.mjs","../../node_modules/vant/es/utils/with-install.mjs","../../node_modules/vant/es/composables/use-height.mjs","../../node_modules/vant/es/composables/use-placeholder.mjs","../../node_modules/vant/es/action-bar/ActionBar.mjs","../../node_modules/vant/es/action-bar/index.mjs","../../node_modules/vant/es/composables/use-expose.mjs","../../node_modules/vant/es/composables/use-route.mjs","../../node_modules/vant/es/badge/Badge.mjs","../../node_modules/vant/es/badge/index.mjs","../../node_modules/vant/es/config-provider/ConfigProvider.mjs","../../node_modules/vant/es/icon/Icon.mjs","../../node_modules/vant/es/icon/index.mjs","../../node_modules/vant/es/loading/Loading.mjs","../../node_modules/vant/es/loading/index.mjs","../../node_modules/vant/es/button/Button.mjs","../../node_modules/vant/es/button/index.mjs","../../node_modules/vant/es/action-bar-button/ActionBarButton.mjs","../../node_modules/vant/es/action-bar-button/index.mjs","../../node_modules/vant/es/popup/shared.mjs","../../node_modules/vant/es/composables/use-touch.mjs","../../node_modules/vant/es/composables/use-lock-scroll.mjs","../../node_modules/vant/es/composables/use-lazy-render.mjs","../../node_modules/vant/es/composables/on-popup-reopen.mjs","../../node_modules/vant/es/overlay/Overlay.mjs","../../node_modules/vant/es/overlay/index.mjs","../../node_modules/vant/es/popup/Popup.mjs","../../node_modules/vant/es/popup/index.mjs","../../node_modules/vant/es/utils/mount-component.mjs","../../node_modules/vant/es/toast/lock-click.mjs","../../node_modules/vant/es/toast/Toast.mjs","../../node_modules/vant/es/toast/function-call.mjs","../../node_modules/vant/es/dialog/Dialog.mjs","../../node_modules/vant/es/dialog/function-call.mjs","../../node_modules/vant/es/tabbar/Tabbar.mjs","../../node_modules/vant/es/tabbar/index.mjs","../../node_modules/vant/es/tabbar-item/TabbarItem.mjs","../../node_modules/vant/es/tabbar-item/index.mjs","../../node_modules/axios/lib/utils.js","../../node_modules/axios/lib/helpers/bind.js","../../node_modules/axios/lib/helpers/buildURL.js","../../node_modules/axios/lib/core/InterceptorManager.js","../../node_modules/axios/lib/helpers/normalizeHeaderName.js","../../node_modules/axios/lib/core/AxiosError.js","../../node_modules/axios/lib/defaults/transitional.js","../../node_modules/axios/lib/helpers/toFormData.js","../../node_modules/axios/lib/helpers/isAbsoluteURL.js","../../node_modules/axios/lib/core/buildFullPath.js","../../node_modules/axios/lib/helpers/combineURLs.js","../../node_modules/axios/lib/cancel/CanceledError.js","../../node_modules/axios/lib/adapters/xhr.js","../../node_modules/axios/lib/core/settle.js","../../node_modules/axios/lib/helpers/cookies.js","../../node_modules/axios/lib/helpers/parseHeaders.js","../../node_modules/axios/lib/helpers/isURLSameOrigin.js","../../node_modules/axios/lib/helpers/parseProtocol.js","../../node_modules/axios/lib/defaults/index.js","../../node_modules/axios/lib/helpers/null.js","../../node_modules/axios/lib/core/transformData.js","../../node_modules/axios/lib/cancel/isCancel.js","../../node_modules/axios/lib/core/dispatchRequest.js","../../node_modules/axios/lib/core/mergeConfig.js","../../node_modules/axios/lib/env/data.js","../../node_modules/axios/lib/helpers/validator.js","../../node_modules/axios/lib/core/Axios.js","../../node_modules/axios/lib/axios.js","../../node_modules/axios/lib/cancel/CancelToken.js","../../node_modules/axios/lib/helpers/spread.js","../../node_modules/axios/lib/helpers/isAxiosError.js","../../node_modules/axios/index.js","../../src/utils/Request.ts","../../node_modules/@rpdg/revue-utils/JsonStorage.ts","../../src/store/AuthStore.ts","../../src/common/StorageKeys.ts","../../src/store/HomeStore.ts","../../node_modules/weixin-js-sdk/index.js","../../src/utils/wx.ts","../../src/router/index.ts","../../src/components/CopyRight/index.vue","../../src/App.vue","../../src/main.ts"],"sourcesContent":["const p = function polyfill() {\n const relList = document.createElement('link').relList;\n if (relList && relList.supports && relList.supports('modulepreload')) {\n return;\n }\n for (const link of document.querySelectorAll('link[rel=\"modulepreload\"]')) {\n processPreload(link);\n }\n new MutationObserver((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type !== 'childList') {\n continue;\n }\n for (const node of mutation.addedNodes) {\n if (node.tagName === 'LINK' && node.rel === 'modulepreload')\n processPreload(node);\n }\n }\n }).observe(document, { childList: true, subtree: true });\n function getFetchOpts(script) {\n const fetchOpts = {};\n if (script.integrity)\n fetchOpts.integrity = script.integrity;\n if (script.referrerpolicy)\n fetchOpts.referrerPolicy = script.referrerpolicy;\n if (script.crossorigin === 'use-credentials')\n fetchOpts.credentials = 'include';\n else if (script.crossorigin === 'anonymous')\n fetchOpts.credentials = 'omit';\n else\n fetchOpts.credentials = 'same-origin';\n return fetchOpts;\n }\n function processPreload(link) {\n if (link.ep)\n // ep marker = processed\n return;\n link.ep = true;\n // prepopulate the load record\n const fetchOpts = getFetchOpts(link);\n fetch(link.href, fetchOpts);\n }\n};__VITE_IS_MODERN__&&p();","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",f=\"month\",h=\"quarter\",c=\"year\",d=\"date\",$=\"Invalid Date\",l=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\")},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},g={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(v=i),i||!r&&v},w=function(t,e){if(p(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},O=g;O.l=S,O.i=p,O.w=function(t,e){return w(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=S(t.locale,null,!0),this.parse(t)}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(O.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match(l);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return O},m.isValid=function(){return!(this.$d.toString()===$)},m.isSame=function(t,e){var n=w(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return w(t) {\r\n return new URL(imagePath, import.meta.url).href;\r\n};\r\nconst iconBasePath = \"../assets/images/divination/icon\";\r\nexport const icons: Record = {\r\n affection: getImageUrl(`${iconBasePath}/affection.png`),\r\n character: getImageUrl(`${iconBasePath}/character.png`),\r\n community: getImageUrl(`${iconBasePath}/community.png`),\r\n health: getImageUrl(`${iconBasePath}/health.png`),\r\n money: getImageUrl(`${iconBasePath}/money.png`),\r\n question: getImageUrl(`${iconBasePath}/question.png`),\r\n travel: getImageUrl(`${iconBasePath}/travel.png`),\r\n work: getImageUrl(`${iconBasePath}/work.png`),\r\n qrcode: getImageUrl(\"../assets/images/qrcode.png\"),\r\n};\r\n\r\nexport const getQueryString = (locationSearches?: string) => {\r\n if (!window || !window.location) {\r\n console.log(\"error not browser\");\r\n return null;\r\n }\r\n let locationSearch: string = locationSearches\r\n ? locationSearches\r\n : window.location.search;\r\n if (!locationSearch && window.location.hash) {\r\n locationSearch = window.location.hash.substr(\r\n window.location.hash.lastIndexOf(\"?\")\r\n );\r\n }\r\n const query: Record = {};\r\n if (locationSearch) {\r\n locationSearch = locationSearch.replace(\"?\", \"\");\r\n const params = locationSearch.split(\"&\");\r\n params.forEach((param, idx) => {\r\n const keyValue = param.split(\"=\");\r\n query[keyValue[0]] = decodeURIComponent(keyValue[1]);\r\n });\r\n }\r\n return query;\r\n};\r\n\r\nexport const getQueryStringByKey = (key: string) => {\r\n const qs = getQueryString();\r\n if (qs && Object.keys(qs)) {\r\n return qs[key];\r\n }\r\n return null;\r\n};\r\n\r\nexport const mobileReg = /^((0\\d{2,3}-\\d{7,8})|(1[3456789]\\d{9}))$/;\r\n\r\nexport const getBbsDate = (date?: string) => {\r\n if (!date) {\r\n return \"\";\r\n }\r\n try {\r\n return dayjs(date).format(DateFormatTime);\r\n } catch {\r\n return \"\";\r\n }\r\n};\r\n\r\n/**\r\n * 获取性别显示文字\r\n * 0是未知1是男2是女\r\n */\r\nexport const getSexName = (sex?: number | string) => {\r\n if (!sex) {\r\n return \"\";\r\n }\r\n if (sex.toString() === \"1\") {\r\n return \"男\";\r\n } else if (sex.toString() === \"2\") {\r\n return \"女\";\r\n } else {\r\n return \"\";\r\n }\r\n};\r\n\r\nexport const getPrice = (price: string) => {\r\n return Number.parseInt(price || \"0\") / 100;\r\n};\r\n\r\nexport const getDateInfo = (value: Date) => {\r\n const date = dayjs(value);\r\n return {\r\n year: parseInt(date.format(\"YYYY\"), 10),\r\n month: parseInt(date.format(\"MM\")) - 1,\r\n day: parseInt(date.format(\"DD\")),\r\n };\r\n};\r\n\r\nexport const formatStrRNToBr = (value?: string) => {\r\n return value?.replace(/\\r|\\n/gi, \"
\").replace(//gi, \"
\");\r\n};\r\n","import { getImageUrl } from \"@/utils\";\r\n\r\nexport const TAB_BAR_LIST = [\r\n {\r\n text: \"起卦\",\r\n color: \"#8E8E9F\",\r\n activeColor: \"#255DEA\",\r\n image: getImageUrl(\"../assets/images/tabbar/home.jpg\"),\r\n activeImage: getImageUrl(\"../assets/images/tabbar/home-active.jpg\"),\r\n url: \"/#/home\",\r\n },\r\n {\r\n text: \"学习\",\r\n color: \"#8E8E9F\",\r\n activeColor: \"#255DEA\",\r\n image: getImageUrl(\"../assets/images/tabbar/bbs.png\"),\r\n activeImage: getImageUrl(\"../assets/images/tabbar/bbs-active.png\"),\r\n url: \"/#/bbs\",\r\n },\r\n {\r\n text: \"问一问\",\r\n color: \"#8E8E9F\",\r\n activeColor: \"#255DEA\",\r\n image: getImageUrl(\"../assets/images/tabbar/question.png\"),\r\n activeImage: getImageUrl(\"../assets/images/tabbar/question-active.png\"),\r\n url: \"/#/question\",\r\n },\r\n {\r\n text: \"日历\",\r\n color: \"#8E8E9F\",\r\n activeColor: \"#255DEA\",\r\n image: getImageUrl(\"../assets/images/tabbar/calendar.png\"),\r\n activeImage: getImageUrl(\"../assets/images/tabbar/calendar-active.png\"),\r\n url: \"/#/calendar\",\r\n },\r\n {\r\n text: \"我的\",\r\n color: \"#8E8E9F\",\r\n activeColor: \"#255DEA\",\r\n image: getImageUrl(\"../assets/images/tabbar/about.png\"),\r\n activeImage: getImageUrl(\"../assets/images/tabbar/about-active.png\"),\r\n url: \"/#/about\",\r\n },\r\n];\r\n\r\nexport const LoadingPage = \"/#/loading\";\r\n// export const HomePage = '/#/home'\r\nexport const HomePage = \"/#/question\";\r\nexport const AboutPage = \"/#/about\";\r\n\r\nexport const DateFormat = \"YYYY-MM-DD\";\r\nexport const DateFormatMinute = \"YYYY-MM-DD HH:mm\";\r\nexport const DateFormatTime = \"YYYY-MM-DD HH:mm:ss\";\r\n","/*!\n * pinia v2.0.17\n * (c) 2022 Eduardo San Martin Morote\n * @license MIT\n */\nimport { getCurrentInstance, inject, toRaw, watch, unref, markRaw, effectScope, ref, isVue2, isRef, isReactive, set, onUnmounted, reactive, toRef, del, nextTick, computed, toRefs } from 'vue-demi';\nimport { setupDevtoolsPlugin } from '@vue/devtools-api';\n\n/**\r\n * setActivePinia must be called to handle SSR at the top of functions like\r\n * `fetch`, `setup`, `serverPrefetch` and others\r\n */\r\nlet activePinia;\r\n/**\r\n * Sets or unsets the active pinia. Used in SSR and internally when calling\r\n * actions and getters\r\n *\r\n * @param pinia - Pinia instance\r\n */\r\nconst setActivePinia = (pinia) => (activePinia = pinia);\r\n/**\r\n * Get the currently active pinia if there is any.\r\n */\r\nconst getActivePinia = () => (getCurrentInstance() && inject(piniaSymbol)) || activePinia;\r\nconst piniaSymbol = ((process.env.NODE_ENV !== 'production') ? Symbol('pinia') : /* istanbul ignore next */ Symbol());\n\nfunction isPlainObject(\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\no) {\r\n return (o &&\r\n typeof o === 'object' &&\r\n Object.prototype.toString.call(o) === '[object Object]' &&\r\n typeof o.toJSON !== 'function');\r\n}\r\n// type DeepReadonly = { readonly [P in keyof T]: DeepReadonly }\r\n// TODO: can we change these to numbers?\r\n/**\r\n * Possible types for SubscriptionCallback\r\n */\r\nvar MutationType;\r\n(function (MutationType) {\r\n /**\r\n * Direct mutation of the state:\r\n *\r\n * - `store.name = 'new name'`\r\n * - `store.$state.name = 'new name'`\r\n * - `store.list.push('new item')`\r\n */\r\n MutationType[\"direct\"] = \"direct\";\r\n /**\r\n * Mutated the state with `$patch` and an object\r\n *\r\n * - `store.$patch({ name: 'newName' })`\r\n */\r\n MutationType[\"patchObject\"] = \"patch object\";\r\n /**\r\n * Mutated the state with `$patch` and a function\r\n *\r\n * - `store.$patch(state => state.name = 'newName')`\r\n */\r\n MutationType[\"patchFunction\"] = \"patch function\";\r\n // maybe reset? for $state = {} and $reset\r\n})(MutationType || (MutationType = {}));\n\nconst IS_CLIENT = typeof window !== 'undefined';\n\n/*\r\n * FileSaver.js A saveAs() FileSaver implementation.\r\n *\r\n * Originally by Eli Grey, adapted as an ESM module by Eduardo San Martin\r\n * Morote.\r\n *\r\n * License : MIT\r\n */\r\n// The one and only way of getting global scope in all environments\r\n// https://stackoverflow.com/q/3277182/1008999\r\nconst _global = /*#__PURE__*/ (() => typeof window === 'object' && window.window === window\r\n ? window\r\n : typeof self === 'object' && self.self === self\r\n ? self\r\n : typeof global === 'object' && global.global === global\r\n ? global\r\n : typeof globalThis === 'object'\r\n ? globalThis\r\n : { HTMLElement: null })();\r\nfunction bom(blob, { autoBom = false } = {}) {\r\n // prepend BOM for UTF-8 XML and text/* types (including HTML)\r\n // note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\r\n if (autoBom &&\r\n /^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\r\n return new Blob([String.fromCharCode(0xfeff), blob], { type: blob.type });\r\n }\r\n return blob;\r\n}\r\nfunction download(url, name, opts) {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open('GET', url);\r\n xhr.responseType = 'blob';\r\n xhr.onload = function () {\r\n saveAs(xhr.response, name, opts);\r\n };\r\n xhr.onerror = function () {\r\n console.error('could not download file');\r\n };\r\n xhr.send();\r\n}\r\nfunction corsEnabled(url) {\r\n const xhr = new XMLHttpRequest();\r\n // use sync to avoid popup blocker\r\n xhr.open('HEAD', url, false);\r\n try {\r\n xhr.send();\r\n }\r\n catch (e) { }\r\n return xhr.status >= 200 && xhr.status <= 299;\r\n}\r\n// `a.click()` doesn't work for all browsers (#465)\r\nfunction click(node) {\r\n try {\r\n node.dispatchEvent(new MouseEvent('click'));\r\n }\r\n catch (e) {\r\n const evt = document.createEvent('MouseEvents');\r\n evt.initMouseEvent('click', true, true, window, 0, 0, 0, 80, 20, false, false, false, false, 0, null);\r\n node.dispatchEvent(evt);\r\n }\r\n}\r\nconst _navigator = \r\n typeof navigator === 'object' ? navigator : { userAgent: '' };\r\n// Detect WebView inside a native macOS app by ruling out all browsers\r\n// We just need to check for 'Safari' because all other browsers (besides Firefox) include that too\r\n// https://www.whatismybrowser.com/guides/the-latest-user-agent/macos\r\nconst isMacOSWebView = /*#__PURE__*/ (() => /Macintosh/.test(_navigator.userAgent) &&\r\n /AppleWebKit/.test(_navigator.userAgent) &&\r\n !/Safari/.test(_navigator.userAgent))();\r\nconst saveAs = !IS_CLIENT\r\n ? () => { } // noop\r\n : // Use download attribute first if possible (#193 Lumia mobile) unless this is a macOS WebView or mini program\r\n typeof HTMLAnchorElement !== 'undefined' &&\r\n 'download' in HTMLAnchorElement.prototype &&\r\n !isMacOSWebView\r\n ? downloadSaveAs\r\n : // Use msSaveOrOpenBlob as a second approach\r\n 'msSaveOrOpenBlob' in _navigator\r\n ? msSaveAs\r\n : // Fallback to using FileReader and a popup\r\n fileSaverSaveAs;\r\nfunction downloadSaveAs(blob, name = 'download', opts) {\r\n const a = document.createElement('a');\r\n a.download = name;\r\n a.rel = 'noopener'; // tabnabbing\r\n // TODO: detect chrome extensions & packaged apps\r\n // a.target = '_blank'\r\n if (typeof blob === 'string') {\r\n // Support regular links\r\n a.href = blob;\r\n if (a.origin !== location.origin) {\r\n if (corsEnabled(a.href)) {\r\n download(blob, name, opts);\r\n }\r\n else {\r\n a.target = '_blank';\r\n click(a);\r\n }\r\n }\r\n else {\r\n click(a);\r\n }\r\n }\r\n else {\r\n // Support blobs\r\n a.href = URL.createObjectURL(blob);\r\n setTimeout(function () {\r\n URL.revokeObjectURL(a.href);\r\n }, 4e4); // 40s\r\n setTimeout(function () {\r\n click(a);\r\n }, 0);\r\n }\r\n}\r\nfunction msSaveAs(blob, name = 'download', opts) {\r\n if (typeof blob === 'string') {\r\n if (corsEnabled(blob)) {\r\n download(blob, name, opts);\r\n }\r\n else {\r\n const a = document.createElement('a');\r\n a.href = blob;\r\n a.target = '_blank';\r\n setTimeout(function () {\r\n click(a);\r\n });\r\n }\r\n }\r\n else {\r\n // @ts-ignore: works on windows\r\n navigator.msSaveOrOpenBlob(bom(blob, opts), name);\r\n }\r\n}\r\nfunction fileSaverSaveAs(blob, name, opts, popup) {\r\n // Open a popup immediately do go around popup blocker\r\n // Mostly only available on user interaction and the fileReader is async so...\r\n popup = popup || open('', '_blank');\r\n if (popup) {\r\n popup.document.title = popup.document.body.innerText = 'downloading...';\r\n }\r\n if (typeof blob === 'string')\r\n return download(blob, name, opts);\r\n const force = blob.type === 'application/octet-stream';\r\n const isSafari = /constructor/i.test(String(_global.HTMLElement)) || 'safari' in _global;\r\n const isChromeIOS = /CriOS\\/[\\d]+/.test(navigator.userAgent);\r\n if ((isChromeIOS || (force && isSafari) || isMacOSWebView) &&\r\n typeof FileReader !== 'undefined') {\r\n // Safari doesn't allow downloading of blob URLs\r\n const reader = new FileReader();\r\n reader.onloadend = function () {\r\n let url = reader.result;\r\n if (typeof url !== 'string') {\r\n popup = null;\r\n throw new Error('Wrong reader.result type');\r\n }\r\n url = isChromeIOS\r\n ? url\r\n : url.replace(/^data:[^;]*;/, 'data:attachment/file;');\r\n if (popup) {\r\n popup.location.href = url;\r\n }\r\n else {\r\n location.assign(url);\r\n }\r\n popup = null; // reverse-tabnabbing #460\r\n };\r\n reader.readAsDataURL(blob);\r\n }\r\n else {\r\n const url = URL.createObjectURL(blob);\r\n if (popup)\r\n popup.location.assign(url);\r\n else\r\n location.href = url;\r\n popup = null; // reverse-tabnabbing #460\r\n setTimeout(function () {\r\n URL.revokeObjectURL(url);\r\n }, 4e4); // 40s\r\n }\r\n}\n\n/**\r\n * Shows a toast or console.log\r\n *\r\n * @param message - message to log\r\n * @param type - different color of the tooltip\r\n */\r\nfunction toastMessage(message, type) {\r\n const piniaMessage = '🍍 ' + message;\r\n if (typeof __VUE_DEVTOOLS_TOAST__ === 'function') {\r\n __VUE_DEVTOOLS_TOAST__(piniaMessage, type);\r\n }\r\n else if (type === 'error') {\r\n console.error(piniaMessage);\r\n }\r\n else if (type === 'warn') {\r\n console.warn(piniaMessage);\r\n }\r\n else {\r\n console.log(piniaMessage);\r\n }\r\n}\r\nfunction isPinia(o) {\r\n return '_a' in o && 'install' in o;\r\n}\n\nfunction checkClipboardAccess() {\r\n if (!('clipboard' in navigator)) {\r\n toastMessage(`Your browser doesn't support the Clipboard API`, 'error');\r\n return true;\r\n }\r\n}\r\nfunction checkNotFocusedError(error) {\r\n if (error instanceof Error &&\r\n error.message.toLowerCase().includes('document is not focused')) {\r\n toastMessage('You need to activate the \"Emulate a focused page\" setting in the \"Rendering\" panel of devtools.', 'warn');\r\n return true;\r\n }\r\n return false;\r\n}\r\nasync function actionGlobalCopyState(pinia) {\r\n if (checkClipboardAccess())\r\n return;\r\n try {\r\n await navigator.clipboard.writeText(JSON.stringify(pinia.state.value));\r\n toastMessage('Global state copied to clipboard.');\r\n }\r\n catch (error) {\r\n if (checkNotFocusedError(error))\r\n return;\r\n toastMessage(`Failed to serialize the state. Check the console for more details.`, 'error');\r\n console.error(error);\r\n }\r\n}\r\nasync function actionGlobalPasteState(pinia) {\r\n if (checkClipboardAccess())\r\n return;\r\n try {\r\n pinia.state.value = JSON.parse(await navigator.clipboard.readText());\r\n toastMessage('Global state pasted from clipboard.');\r\n }\r\n catch (error) {\r\n if (checkNotFocusedError(error))\r\n return;\r\n toastMessage(`Failed to deserialize the state from clipboard. Check the console for more details.`, 'error');\r\n console.error(error);\r\n }\r\n}\r\nasync function actionGlobalSaveState(pinia) {\r\n try {\r\n saveAs(new Blob([JSON.stringify(pinia.state.value)], {\r\n type: 'text/plain;charset=utf-8',\r\n }), 'pinia-state.json');\r\n }\r\n catch (error) {\r\n toastMessage(`Failed to export the state as JSON. Check the console for more details.`, 'error');\r\n console.error(error);\r\n }\r\n}\r\nlet fileInput;\r\nfunction getFileOpener() {\r\n if (!fileInput) {\r\n fileInput = document.createElement('input');\r\n fileInput.type = 'file';\r\n fileInput.accept = '.json';\r\n }\r\n function openFile() {\r\n return new Promise((resolve, reject) => {\r\n fileInput.onchange = async () => {\r\n const files = fileInput.files;\r\n if (!files)\r\n return resolve(null);\r\n const file = files.item(0);\r\n if (!file)\r\n return resolve(null);\r\n return resolve({ text: await file.text(), file });\r\n };\r\n // @ts-ignore: TODO: changed from 4.3 to 4.4\r\n fileInput.oncancel = () => resolve(null);\r\n fileInput.onerror = reject;\r\n fileInput.click();\r\n });\r\n }\r\n return openFile;\r\n}\r\nasync function actionGlobalOpenStateFile(pinia) {\r\n try {\r\n const open = await getFileOpener();\r\n const result = await open();\r\n if (!result)\r\n return;\r\n const { text, file } = result;\r\n pinia.state.value = JSON.parse(text);\r\n toastMessage(`Global state imported from \"${file.name}\".`);\r\n }\r\n catch (error) {\r\n toastMessage(`Failed to export the state as JSON. Check the console for more details.`, 'error');\r\n console.error(error);\r\n }\r\n}\n\nfunction formatDisplay(display) {\r\n return {\r\n _custom: {\r\n display,\r\n },\r\n };\r\n}\r\nconst PINIA_ROOT_LABEL = '🍍 Pinia (root)';\r\nconst PINIA_ROOT_ID = '_root';\r\nfunction formatStoreForInspectorTree(store) {\r\n return isPinia(store)\r\n ? {\r\n id: PINIA_ROOT_ID,\r\n label: PINIA_ROOT_LABEL,\r\n }\r\n : {\r\n id: store.$id,\r\n label: store.$id,\r\n };\r\n}\r\nfunction formatStoreForInspectorState(store) {\r\n if (isPinia(store)) {\r\n const storeNames = Array.from(store._s.keys());\r\n const storeMap = store._s;\r\n const state = {\r\n state: storeNames.map((storeId) => ({\r\n editable: true,\r\n key: storeId,\r\n value: store.state.value[storeId],\r\n })),\r\n getters: storeNames\r\n .filter((id) => storeMap.get(id)._getters)\r\n .map((id) => {\r\n const store = storeMap.get(id);\r\n return {\r\n editable: false,\r\n key: id,\r\n value: store._getters.reduce((getters, key) => {\r\n getters[key] = store[key];\r\n return getters;\r\n }, {}),\r\n };\r\n }),\r\n };\r\n return state;\r\n }\r\n const state = {\r\n state: Object.keys(store.$state).map((key) => ({\r\n editable: true,\r\n key,\r\n value: store.$state[key],\r\n })),\r\n };\r\n // avoid adding empty getters\r\n if (store._getters && store._getters.length) {\r\n state.getters = store._getters.map((getterName) => ({\r\n editable: false,\r\n key: getterName,\r\n value: store[getterName],\r\n }));\r\n }\r\n if (store._customProperties.size) {\r\n state.customProperties = Array.from(store._customProperties).map((key) => ({\r\n editable: true,\r\n key,\r\n value: store[key],\r\n }));\r\n }\r\n return state;\r\n}\r\nfunction formatEventData(events) {\r\n if (!events)\r\n return {};\r\n if (Array.isArray(events)) {\r\n // TODO: handle add and delete for arrays and objects\r\n return events.reduce((data, event) => {\r\n data.keys.push(event.key);\r\n data.operations.push(event.type);\r\n data.oldValue[event.key] = event.oldValue;\r\n data.newValue[event.key] = event.newValue;\r\n return data;\r\n }, {\r\n oldValue: {},\r\n keys: [],\r\n operations: [],\r\n newValue: {},\r\n });\r\n }\r\n else {\r\n return {\r\n operation: formatDisplay(events.type),\r\n key: formatDisplay(events.key),\r\n oldValue: events.oldValue,\r\n newValue: events.newValue,\r\n };\r\n }\r\n}\r\nfunction formatMutationType(type) {\r\n switch (type) {\r\n case MutationType.direct:\r\n return 'mutation';\r\n case MutationType.patchFunction:\r\n return '$patch';\r\n case MutationType.patchObject:\r\n return '$patch';\r\n default:\r\n return 'unknown';\r\n }\r\n}\n\n// timeline can be paused when directly changing the state\r\nlet isTimelineActive = true;\r\nconst componentStateTypes = [];\r\nconst MUTATIONS_LAYER_ID = 'pinia:mutations';\r\nconst INSPECTOR_ID = 'pinia';\r\n/**\r\n * Gets the displayed name of a store in devtools\r\n *\r\n * @param id - id of the store\r\n * @returns a formatted string\r\n */\r\nconst getStoreType = (id) => '🍍 ' + id;\r\n/**\r\n * Add the pinia plugin without any store. Allows displaying a Pinia plugin tab\r\n * as soon as it is added to the application.\r\n *\r\n * @param app - Vue application\r\n * @param pinia - pinia instance\r\n */\r\nfunction registerPiniaDevtools(app, pinia) {\r\n setupDevtoolsPlugin({\r\n id: 'dev.esm.pinia',\r\n label: 'Pinia 🍍',\r\n logo: 'https://pinia.vuejs.org/logo.svg',\r\n packageName: 'pinia',\r\n homepage: 'https://pinia.vuejs.org',\r\n componentStateTypes,\r\n app,\r\n }, (api) => {\r\n if (typeof api.now !== 'function') {\r\n toastMessage('You seem to be using an outdated version of Vue Devtools. Are you still using the Beta release instead of the stable one? You can find the links at https://devtools.vuejs.org/guide/installation.html.');\r\n }\r\n api.addTimelineLayer({\r\n id: MUTATIONS_LAYER_ID,\r\n label: `Pinia 🍍`,\r\n color: 0xe5df88,\r\n });\r\n api.addInspector({\r\n id: INSPECTOR_ID,\r\n label: 'Pinia 🍍',\r\n icon: 'storage',\r\n treeFilterPlaceholder: 'Search stores',\r\n actions: [\r\n {\r\n icon: 'content_copy',\r\n action: () => {\r\n actionGlobalCopyState(pinia);\r\n },\r\n tooltip: 'Serialize and copy the state',\r\n },\r\n {\r\n icon: 'content_paste',\r\n action: async () => {\r\n await actionGlobalPasteState(pinia);\r\n api.sendInspectorTree(INSPECTOR_ID);\r\n api.sendInspectorState(INSPECTOR_ID);\r\n },\r\n tooltip: 'Replace the state with the content of your clipboard',\r\n },\r\n {\r\n icon: 'save',\r\n action: () => {\r\n actionGlobalSaveState(pinia);\r\n },\r\n tooltip: 'Save the state as a JSON file',\r\n },\r\n {\r\n icon: 'folder_open',\r\n action: async () => {\r\n await actionGlobalOpenStateFile(pinia);\r\n api.sendInspectorTree(INSPECTOR_ID);\r\n api.sendInspectorState(INSPECTOR_ID);\r\n },\r\n tooltip: 'Import the state from a JSON file',\r\n },\r\n ],\r\n nodeActions: [\r\n {\r\n icon: 'restore',\r\n tooltip: 'Reset the state (option store only)',\r\n action: (nodeId) => {\r\n const store = pinia._s.get(nodeId);\r\n if (!store) {\r\n toastMessage(`Cannot reset \"${nodeId}\" store because it wasn't found.`, 'warn');\r\n }\r\n else if (!store._isOptionsAPI) {\r\n toastMessage(`Cannot reset \"${nodeId}\" store because it's a setup store.`, 'warn');\r\n }\r\n else {\r\n store.$reset();\r\n toastMessage(`Store \"${nodeId}\" reset.`);\r\n }\r\n },\r\n },\r\n ],\r\n });\r\n api.on.inspectComponent((payload, ctx) => {\r\n const proxy = (payload.componentInstance &&\r\n payload.componentInstance.proxy);\r\n if (proxy && proxy._pStores) {\r\n const piniaStores = payload.componentInstance.proxy._pStores;\r\n Object.values(piniaStores).forEach((store) => {\r\n payload.instanceData.state.push({\r\n type: getStoreType(store.$id),\r\n key: 'state',\r\n editable: true,\r\n value: store._isOptionsAPI\r\n ? {\r\n _custom: {\r\n value: toRaw(store.$state),\r\n actions: [\r\n {\r\n icon: 'restore',\r\n tooltip: 'Reset the state of this store',\r\n action: () => store.$reset(),\r\n },\r\n ],\r\n },\r\n }\r\n : // NOTE: workaround to unwrap transferred refs\r\n Object.keys(store.$state).reduce((state, key) => {\r\n state[key] = store.$state[key];\r\n return state;\r\n }, {}),\r\n });\r\n if (store._getters && store._getters.length) {\r\n payload.instanceData.state.push({\r\n type: getStoreType(store.$id),\r\n key: 'getters',\r\n editable: false,\r\n value: store._getters.reduce((getters, key) => {\r\n try {\r\n getters[key] = store[key];\r\n }\r\n catch (error) {\r\n // @ts-expect-error: we just want to show it in devtools\r\n getters[key] = error;\r\n }\r\n return getters;\r\n }, {}),\r\n });\r\n }\r\n });\r\n }\r\n });\r\n api.on.getInspectorTree((payload) => {\r\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\r\n let stores = [pinia];\r\n stores = stores.concat(Array.from(pinia._s.values()));\r\n payload.rootNodes = (payload.filter\r\n ? stores.filter((store) => '$id' in store\r\n ? store.$id\r\n .toLowerCase()\r\n .includes(payload.filter.toLowerCase())\r\n : PINIA_ROOT_LABEL.toLowerCase().includes(payload.filter.toLowerCase()))\r\n : stores).map(formatStoreForInspectorTree);\r\n }\r\n });\r\n api.on.getInspectorState((payload) => {\r\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\r\n const inspectedStore = payload.nodeId === PINIA_ROOT_ID\r\n ? pinia\r\n : pinia._s.get(payload.nodeId);\r\n if (!inspectedStore) {\r\n // this could be the selected store restored for a different project\r\n // so it's better not to say anything here\r\n return;\r\n }\r\n if (inspectedStore) {\r\n payload.state = formatStoreForInspectorState(inspectedStore);\r\n }\r\n }\r\n });\r\n api.on.editInspectorState((payload, ctx) => {\r\n if (payload.app === app && payload.inspectorId === INSPECTOR_ID) {\r\n const inspectedStore = payload.nodeId === PINIA_ROOT_ID\r\n ? pinia\r\n : pinia._s.get(payload.nodeId);\r\n if (!inspectedStore) {\r\n return toastMessage(`store \"${payload.nodeId}\" not found`, 'error');\r\n }\r\n const { path } = payload;\r\n if (!isPinia(inspectedStore)) {\r\n // access only the state\r\n if (path.length !== 1 ||\r\n !inspectedStore._customProperties.has(path[0]) ||\r\n path[0] in inspectedStore.$state) {\r\n path.unshift('$state');\r\n }\r\n }\r\n else {\r\n // Root access, we can omit the `.value` because the devtools API does it for us\r\n path.unshift('state');\r\n }\r\n isTimelineActive = false;\r\n payload.set(inspectedStore, path, payload.state.value);\r\n isTimelineActive = true;\r\n }\r\n });\r\n api.on.editComponentState((payload) => {\r\n if (payload.type.startsWith('🍍')) {\r\n const storeId = payload.type.replace(/^🍍\\s*/, '');\r\n const store = pinia._s.get(storeId);\r\n if (!store) {\r\n return toastMessage(`store \"${storeId}\" not found`, 'error');\r\n }\r\n const { path } = payload;\r\n if (path[0] !== 'state') {\r\n return toastMessage(`Invalid path for store \"${storeId}\":\\n${path}\\nOnly state can be modified.`);\r\n }\r\n // rewrite the first entry to be able to directly set the state as\r\n // well as any other path\r\n path[0] = '$state';\r\n isTimelineActive = false;\r\n payload.set(store, path, payload.state.value);\r\n isTimelineActive = true;\r\n }\r\n });\r\n });\r\n}\r\nfunction addStoreToDevtools(app, store) {\r\n if (!componentStateTypes.includes(getStoreType(store.$id))) {\r\n componentStateTypes.push(getStoreType(store.$id));\r\n }\r\n setupDevtoolsPlugin({\r\n id: 'dev.esm.pinia',\r\n label: 'Pinia 🍍',\r\n logo: 'https://pinia.vuejs.org/logo.svg',\r\n packageName: 'pinia',\r\n homepage: 'https://pinia.vuejs.org',\r\n componentStateTypes,\r\n app,\r\n settings: {\r\n logStoreChanges: {\r\n label: 'Notify about new/deleted stores',\r\n type: 'boolean',\r\n defaultValue: true,\r\n },\r\n // useEmojis: {\r\n // label: 'Use emojis in messages ⚡️',\r\n // type: 'boolean',\r\n // defaultValue: true,\r\n // },\r\n },\r\n }, (api) => {\r\n // gracefully handle errors\r\n const now = typeof api.now === 'function' ? api.now.bind(api) : Date.now;\r\n store.$onAction(({ after, onError, name, args }) => {\r\n const groupId = runningActionId++;\r\n api.addTimelineEvent({\r\n layerId: MUTATIONS_LAYER_ID,\r\n event: {\r\n time: now(),\r\n title: '🛫 ' + name,\r\n subtitle: 'start',\r\n data: {\r\n store: formatDisplay(store.$id),\r\n action: formatDisplay(name),\r\n args,\r\n },\r\n groupId,\r\n },\r\n });\r\n after((result) => {\r\n activeAction = undefined;\r\n api.addTimelineEvent({\r\n layerId: MUTATIONS_LAYER_ID,\r\n event: {\r\n time: now(),\r\n title: '🛬 ' + name,\r\n subtitle: 'end',\r\n data: {\r\n store: formatDisplay(store.$id),\r\n action: formatDisplay(name),\r\n args,\r\n result,\r\n },\r\n groupId,\r\n },\r\n });\r\n });\r\n onError((error) => {\r\n activeAction = undefined;\r\n api.addTimelineEvent({\r\n layerId: MUTATIONS_LAYER_ID,\r\n event: {\r\n time: now(),\r\n logType: 'error',\r\n title: '💥 ' + name,\r\n subtitle: 'end',\r\n data: {\r\n store: formatDisplay(store.$id),\r\n action: formatDisplay(name),\r\n args,\r\n error,\r\n },\r\n groupId,\r\n },\r\n });\r\n });\r\n }, true);\r\n store._customProperties.forEach((name) => {\r\n watch(() => unref(store[name]), (newValue, oldValue) => {\r\n api.notifyComponentUpdate();\r\n api.sendInspectorState(INSPECTOR_ID);\r\n if (isTimelineActive) {\r\n api.addTimelineEvent({\r\n layerId: MUTATIONS_LAYER_ID,\r\n event: {\r\n time: now(),\r\n title: 'Change',\r\n subtitle: name,\r\n data: {\r\n newValue,\r\n oldValue,\r\n },\r\n groupId: activeAction,\r\n },\r\n });\r\n }\r\n }, { deep: true });\r\n });\r\n store.$subscribe(({ events, type }, state) => {\r\n api.notifyComponentUpdate();\r\n api.sendInspectorState(INSPECTOR_ID);\r\n if (!isTimelineActive)\r\n return;\r\n // rootStore.state[store.id] = state\r\n const eventData = {\r\n time: now(),\r\n title: formatMutationType(type),\r\n data: {\r\n store: formatDisplay(store.$id),\r\n ...formatEventData(events),\r\n },\r\n groupId: activeAction,\r\n };\r\n // reset for the next mutation\r\n activeAction = undefined;\r\n if (type === MutationType.patchFunction) {\r\n eventData.subtitle = '⤵️';\r\n }\r\n else if (type === MutationType.patchObject) {\r\n eventData.subtitle = '🧩';\r\n }\r\n else if (events && !Array.isArray(events)) {\r\n eventData.subtitle = events.type;\r\n }\r\n if (events) {\r\n eventData.data['rawEvent(s)'] = {\r\n _custom: {\r\n display: 'DebuggerEvent',\r\n type: 'object',\r\n tooltip: 'raw DebuggerEvent[]',\r\n value: events,\r\n },\r\n };\r\n }\r\n api.addTimelineEvent({\r\n layerId: MUTATIONS_LAYER_ID,\r\n event: eventData,\r\n });\r\n }, { detached: true, flush: 'sync' });\r\n const hotUpdate = store._hotUpdate;\r\n store._hotUpdate = markRaw((newStore) => {\r\n hotUpdate(newStore);\r\n api.addTimelineEvent({\r\n layerId: MUTATIONS_LAYER_ID,\r\n event: {\r\n time: now(),\r\n title: '🔥 ' + store.$id,\r\n subtitle: 'HMR update',\r\n data: {\r\n store: formatDisplay(store.$id),\r\n info: formatDisplay(`HMR update`),\r\n },\r\n },\r\n });\r\n // update the devtools too\r\n api.notifyComponentUpdate();\r\n api.sendInspectorTree(INSPECTOR_ID);\r\n api.sendInspectorState(INSPECTOR_ID);\r\n });\r\n const { $dispose } = store;\r\n store.$dispose = () => {\r\n $dispose();\r\n api.notifyComponentUpdate();\r\n api.sendInspectorTree(INSPECTOR_ID);\r\n api.sendInspectorState(INSPECTOR_ID);\r\n api.getSettings().logStoreChanges &&\r\n toastMessage(`Disposed \"${store.$id}\" store 🗑`);\r\n };\r\n // trigger an update so it can display new registered stores\r\n api.notifyComponentUpdate();\r\n api.sendInspectorTree(INSPECTOR_ID);\r\n api.sendInspectorState(INSPECTOR_ID);\r\n api.getSettings().logStoreChanges &&\r\n toastMessage(`\"${store.$id}\" store installed 🆕`);\r\n });\r\n}\r\nlet runningActionId = 0;\r\nlet activeAction;\r\n/**\r\n * Patches a store to enable action grouping in devtools by wrapping the store with a Proxy that is passed as the\r\n * context of all actions, allowing us to set `runningAction` on each access and effectively associating any state\r\n * mutation to the action.\r\n *\r\n * @param store - store to patch\r\n * @param actionNames - list of actionst to patch\r\n */\r\nfunction patchActionForGrouping(store, actionNames) {\r\n // original actions of the store as they are given by pinia. We are going to override them\r\n const actions = actionNames.reduce((storeActions, actionName) => {\r\n // use toRaw to avoid tracking #541\r\n storeActions[actionName] = toRaw(store)[actionName];\r\n return storeActions;\r\n }, {});\r\n for (const actionName in actions) {\r\n store[actionName] = function () {\r\n // setActivePinia(store._p)\r\n // the running action id is incremented in a before action hook\r\n const _actionId = runningActionId;\r\n const trackedStore = new Proxy(store, {\r\n get(...args) {\r\n activeAction = _actionId;\r\n return Reflect.get(...args);\r\n },\r\n set(...args) {\r\n activeAction = _actionId;\r\n return Reflect.set(...args);\r\n },\r\n });\r\n return actions[actionName].apply(trackedStore, arguments);\r\n };\r\n }\r\n}\r\n/**\r\n * pinia.use(devtoolsPlugin)\r\n */\r\nfunction devtoolsPlugin({ app, store, options }) {\r\n // HMR module\r\n if (store.$id.startsWith('__hot:')) {\r\n return;\r\n }\r\n // detect option api vs setup api\r\n if (options.state) {\r\n store._isOptionsAPI = true;\r\n }\r\n // only wrap actions in option-defined stores as this technique relies on\r\n // wrapping the context of the action with a proxy\r\n if (typeof options.state === 'function') {\r\n patchActionForGrouping(\r\n // @ts-expect-error: can cast the store...\r\n store, Object.keys(options.actions));\r\n const originalHotUpdate = store._hotUpdate;\r\n // Upgrade the HMR to also update the new actions\r\n toRaw(store)._hotUpdate = function (newStore) {\r\n originalHotUpdate.apply(this, arguments);\r\n patchActionForGrouping(store, Object.keys(newStore._hmrPayload.actions));\r\n };\r\n }\r\n addStoreToDevtools(app, \r\n // FIXME: is there a way to allow the assignment from Store to StoreGeneric?\r\n store);\r\n}\n\n/**\r\n * Creates a Pinia instance to be used by the application\r\n */\r\nfunction createPinia() {\r\n const scope = effectScope(true);\r\n // NOTE: here we could check the window object for a state and directly set it\r\n // if there is anything like it with Vue 3 SSR\r\n const state = scope.run(() => ref({}));\r\n let _p = [];\r\n // plugins added before calling app.use(pinia)\r\n let toBeInstalled = [];\r\n const pinia = markRaw({\r\n install(app) {\r\n // this allows calling useStore() outside of a component setup after\r\n // installing pinia's plugin\r\n setActivePinia(pinia);\r\n if (!isVue2) {\r\n pinia._a = app;\r\n app.provide(piniaSymbol, pinia);\r\n app.config.globalProperties.$pinia = pinia;\r\n /* istanbul ignore else */\r\n if ((process.env.NODE_ENV !== 'production') && IS_CLIENT) {\r\n registerPiniaDevtools(app, pinia);\r\n }\r\n toBeInstalled.forEach((plugin) => _p.push(plugin));\r\n toBeInstalled = [];\r\n }\r\n },\r\n use(plugin) {\r\n if (!this._a && !isVue2) {\r\n toBeInstalled.push(plugin);\r\n }\r\n else {\r\n _p.push(plugin);\r\n }\r\n return this;\r\n },\r\n _p,\r\n // it's actually undefined here\r\n // @ts-expect-error\r\n _a: null,\r\n _e: scope,\r\n _s: new Map(),\r\n state,\r\n });\r\n // pinia devtools rely on dev only features so they cannot be forced unless\r\n // the dev build of Vue is used\r\n // We also don't need devtools in test mode\r\n if ((process.env.NODE_ENV !== 'production') && IS_CLIENT && !(process.env.NODE_ENV === 'test')) {\r\n pinia.use(devtoolsPlugin);\r\n }\r\n return pinia;\r\n}\n\n/**\r\n * Checks if a function is a `StoreDefinition`.\r\n *\r\n * @param fn - object to test\r\n * @returns true if `fn` is a StoreDefinition\r\n */\r\nconst isUseStore = (fn) => {\r\n return typeof fn === 'function' && typeof fn.$id === 'string';\r\n};\r\n/**\r\n * Mutates in place `newState` with `oldState` to _hot update_ it. It will\r\n * remove any key not existing in `newState` and recursively merge plain\r\n * objects.\r\n *\r\n * @param newState - new state object to be patched\r\n * @param oldState - old state that should be used to patch newState\r\n * @returns - newState\r\n */\r\nfunction patchObject(newState, oldState) {\r\n // no need to go through symbols because they cannot be serialized anyway\r\n for (const key in oldState) {\r\n const subPatch = oldState[key];\r\n // skip the whole sub tree\r\n if (!(key in newState)) {\r\n continue;\r\n }\r\n const targetValue = newState[key];\r\n if (isPlainObject(targetValue) &&\r\n isPlainObject(subPatch) &&\r\n !isRef(subPatch) &&\r\n !isReactive(subPatch)) {\r\n newState[key] = patchObject(targetValue, subPatch);\r\n }\r\n else {\r\n // objects are either a bit more complex (e.g. refs) or primitives, so we\r\n // just set the whole thing\r\n if (isVue2) {\r\n set(newState, key, subPatch);\r\n }\r\n else {\r\n newState[key] = subPatch;\r\n }\r\n }\r\n }\r\n return newState;\r\n}\r\n/**\r\n * Creates an _accept_ function to pass to `import.meta.hot` in Vite applications.\r\n *\r\n * @example\r\n * ```js\r\n * const useUser = defineStore(...)\r\n * if (import.meta.hot) {\r\n * import.meta.hot.accept(acceptHMRUpdate(useUser, import.meta.hot))\r\n * }\r\n * ```\r\n *\r\n * @param initialUseStore - return of the defineStore to hot update\r\n * @param hot - `import.meta.hot`\r\n */\r\nfunction acceptHMRUpdate(initialUseStore, hot) {\r\n return (newModule) => {\r\n const pinia = hot.data.pinia || initialUseStore._pinia;\r\n if (!pinia) {\r\n // this store is still not used\r\n return;\r\n }\r\n // preserve the pinia instance across loads\r\n hot.data.pinia = pinia;\r\n // console.log('got data', newStore)\r\n for (const exportName in newModule) {\r\n const useStore = newModule[exportName];\r\n // console.log('checking for', exportName)\r\n if (isUseStore(useStore) && pinia._s.has(useStore.$id)) {\r\n // console.log('Accepting update for', useStore.$id)\r\n const id = useStore.$id;\r\n if (id !== initialUseStore.$id) {\r\n console.warn(`The id of the store changed from \"${initialUseStore.$id}\" to \"${id}\". Reloading.`);\r\n // return import.meta.hot.invalidate()\r\n return hot.invalidate();\r\n }\r\n const existingStore = pinia._s.get(id);\r\n if (!existingStore) {\r\n console.log(`[Pinia]: skipping hmr because store doesn't exist yet`);\r\n return;\r\n }\r\n useStore(pinia, existingStore);\r\n }\r\n }\r\n };\r\n}\n\nconst noop = () => { };\r\nfunction addSubscription(subscriptions, callback, detached, onCleanup = noop) {\r\n subscriptions.push(callback);\r\n const removeSubscription = () => {\r\n const idx = subscriptions.indexOf(callback);\r\n if (idx > -1) {\r\n subscriptions.splice(idx, 1);\r\n onCleanup();\r\n }\r\n };\r\n if (!detached && getCurrentInstance()) {\r\n onUnmounted(removeSubscription);\r\n }\r\n return removeSubscription;\r\n}\r\nfunction triggerSubscriptions(subscriptions, ...args) {\r\n subscriptions.slice().forEach((callback) => {\r\n callback(...args);\r\n });\r\n}\n\nfunction mergeReactiveObjects(target, patchToApply) {\r\n // no need to go through symbols because they cannot be serialized anyway\r\n for (const key in patchToApply) {\r\n if (!patchToApply.hasOwnProperty(key))\r\n continue;\r\n const subPatch = patchToApply[key];\r\n const targetValue = target[key];\r\n if (isPlainObject(targetValue) &&\r\n isPlainObject(subPatch) &&\r\n target.hasOwnProperty(key) &&\r\n !isRef(subPatch) &&\r\n !isReactive(subPatch)) {\r\n target[key] = mergeReactiveObjects(targetValue, subPatch);\r\n }\r\n else {\r\n // @ts-expect-error: subPatch is a valid value\r\n target[key] = subPatch;\r\n }\r\n }\r\n return target;\r\n}\r\nconst skipHydrateSymbol = (process.env.NODE_ENV !== 'production')\r\n ? Symbol('pinia:skipHydration')\r\n : /* istanbul ignore next */ Symbol();\r\nconst skipHydrateMap = /*#__PURE__*/ new WeakMap();\r\n/**\r\n * Tells Pinia to skip the hydration process of a given object. This is useful in setup stores (only) when you return a\r\n * stateful object in the store but it isn't really state. e.g. returning a router instance in a setup store.\r\n *\r\n * @param obj - target object\r\n * @returns obj\r\n */\r\nfunction skipHydrate(obj) {\r\n return isVue2\r\n ? // in @vue/composition-api, the refs are sealed so defineProperty doesn't work...\r\n /* istanbul ignore next */ skipHydrateMap.set(obj, 1) && obj\r\n : Object.defineProperty(obj, skipHydrateSymbol, {});\r\n}\r\nfunction shouldHydrate(obj) {\r\n return isVue2\r\n ? /* istanbul ignore next */ !skipHydrateMap.has(obj)\r\n : !isPlainObject(obj) || !obj.hasOwnProperty(skipHydrateSymbol);\r\n}\r\nconst { assign } = Object;\r\nfunction isComputed(o) {\r\n return !!(isRef(o) && o.effect);\r\n}\r\nfunction createOptionsStore(id, options, pinia, hot) {\r\n const { state, actions, getters } = options;\r\n const initialState = pinia.state.value[id];\r\n let store;\r\n function setup() {\r\n if (!initialState && (!(process.env.NODE_ENV !== 'production') || !hot)) {\r\n /* istanbul ignore if */\r\n if (isVue2) {\r\n set(pinia.state.value, id, state ? state() : {});\r\n }\r\n else {\r\n pinia.state.value[id] = state ? state() : {};\r\n }\r\n }\r\n // avoid creating a state in pinia.state.value\r\n const localState = (process.env.NODE_ENV !== 'production') && hot\r\n ? // use ref() to unwrap refs inside state TODO: check if this is still necessary\r\n toRefs(ref(state ? state() : {}).value)\r\n : toRefs(pinia.state.value[id]);\r\n return assign(localState, actions, Object.keys(getters || {}).reduce((computedGetters, name) => {\r\n if ((process.env.NODE_ENV !== 'production') && name in localState) {\r\n console.warn(`[🍍]: A getter cannot have the same name as another state property. Rename one of them. Found with \"${name}\" in store \"${id}\".`);\r\n }\r\n computedGetters[name] = markRaw(computed(() => {\r\n setActivePinia(pinia);\r\n // it was created just before\r\n const store = pinia._s.get(id);\r\n // allow cross using stores\r\n /* istanbul ignore next */\r\n if (isVue2 && !store._r)\r\n return;\r\n // @ts-expect-error\r\n // return getters![name].call(context, context)\r\n // TODO: avoid reading the getter while assigning with a global variable\r\n return getters[name].call(store, store);\r\n }));\r\n return computedGetters;\r\n }, {}));\r\n }\r\n store = createSetupStore(id, setup, options, pinia, hot, true);\r\n store.$reset = function $reset() {\r\n const newState = state ? state() : {};\r\n // we use a patch to group all changes into one single subscription\r\n this.$patch(($state) => {\r\n assign($state, newState);\r\n });\r\n };\r\n return store;\r\n}\r\nfunction createSetupStore($id, setup, options = {}, pinia, hot, isOptionsStore) {\r\n let scope;\r\n const optionsForPlugin = assign({ actions: {} }, options);\r\n /* istanbul ignore if */\r\n // @ts-expect-error: active is an internal property\r\n if ((process.env.NODE_ENV !== 'production') && !pinia._e.active) {\r\n throw new Error('Pinia destroyed');\r\n }\r\n // watcher options for $subscribe\r\n const $subscribeOptions = {\r\n deep: true,\r\n // flush: 'post',\r\n };\r\n /* istanbul ignore else */\r\n if ((process.env.NODE_ENV !== 'production') && !isVue2) {\r\n $subscribeOptions.onTrigger = (event) => {\r\n /* istanbul ignore else */\r\n if (isListening) {\r\n debuggerEvents = event;\r\n // avoid triggering this while the store is being built and the state is being set in pinia\r\n }\r\n else if (isListening == false && !store._hotUpdating) {\r\n // let patch send all the events together later\r\n /* istanbul ignore else */\r\n if (Array.isArray(debuggerEvents)) {\r\n debuggerEvents.push(event);\r\n }\r\n else {\r\n console.error('🍍 debuggerEvents should be an array. This is most likely an internal Pinia bug.');\r\n }\r\n }\r\n };\r\n }\r\n // internal state\r\n let isListening; // set to true at the end\r\n let isSyncListening; // set to true at the end\r\n let subscriptions = markRaw([]);\r\n let actionSubscriptions = markRaw([]);\r\n let debuggerEvents;\r\n const initialState = pinia.state.value[$id];\r\n // avoid setting the state for option stores if it is set\r\n // by the setup\r\n if (!isOptionsStore && !initialState && (!(process.env.NODE_ENV !== 'production') || !hot)) {\r\n /* istanbul ignore if */\r\n if (isVue2) {\r\n set(pinia.state.value, $id, {});\r\n }\r\n else {\r\n pinia.state.value[$id] = {};\r\n }\r\n }\r\n const hotState = ref({});\r\n // avoid triggering too many listeners\r\n // https://github.com/vuejs/pinia/issues/1129\r\n let activeListener;\r\n function $patch(partialStateOrMutator) {\r\n let subscriptionMutation;\r\n isListening = isSyncListening = false;\r\n // reset the debugger events since patches are sync\r\n /* istanbul ignore else */\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n debuggerEvents = [];\r\n }\r\n if (typeof partialStateOrMutator === 'function') {\r\n partialStateOrMutator(pinia.state.value[$id]);\r\n subscriptionMutation = {\r\n type: MutationType.patchFunction,\r\n storeId: $id,\r\n events: debuggerEvents,\r\n };\r\n }\r\n else {\r\n mergeReactiveObjects(pinia.state.value[$id], partialStateOrMutator);\r\n subscriptionMutation = {\r\n type: MutationType.patchObject,\r\n payload: partialStateOrMutator,\r\n storeId: $id,\r\n events: debuggerEvents,\r\n };\r\n }\r\n const myListenerId = (activeListener = Symbol());\r\n nextTick().then(() => {\r\n if (activeListener === myListenerId) {\r\n isListening = true;\r\n }\r\n });\r\n isSyncListening = true;\r\n // because we paused the watcher, we need to manually call the subscriptions\r\n triggerSubscriptions(subscriptions, subscriptionMutation, pinia.state.value[$id]);\r\n }\r\n /* istanbul ignore next */\r\n const $reset = (process.env.NODE_ENV !== 'production')\r\n ? () => {\r\n throw new Error(`🍍: Store \"${$id}\" is built using the setup syntax and does not implement $reset().`);\r\n }\r\n : noop;\r\n function $dispose() {\r\n scope.stop();\r\n subscriptions = [];\r\n actionSubscriptions = [];\r\n pinia._s.delete($id);\r\n }\r\n /**\r\n * Wraps an action to handle subscriptions.\r\n *\r\n * @param name - name of the action\r\n * @param action - action to wrap\r\n * @returns a wrapped action to handle subscriptions\r\n */\r\n function wrapAction(name, action) {\r\n return function () {\r\n setActivePinia(pinia);\r\n const args = Array.from(arguments);\r\n const afterCallbackList = [];\r\n const onErrorCallbackList = [];\r\n function after(callback) {\r\n afterCallbackList.push(callback);\r\n }\r\n function onError(callback) {\r\n onErrorCallbackList.push(callback);\r\n }\r\n // @ts-expect-error\r\n triggerSubscriptions(actionSubscriptions, {\r\n args,\r\n name,\r\n store,\r\n after,\r\n onError,\r\n });\r\n let ret;\r\n try {\r\n ret = action.apply(this && this.$id === $id ? this : store, args);\r\n // handle sync errors\r\n }\r\n catch (error) {\r\n triggerSubscriptions(onErrorCallbackList, error);\r\n throw error;\r\n }\r\n if (ret instanceof Promise) {\r\n return ret\r\n .then((value) => {\r\n triggerSubscriptions(afterCallbackList, value);\r\n return value;\r\n })\r\n .catch((error) => {\r\n triggerSubscriptions(onErrorCallbackList, error);\r\n return Promise.reject(error);\r\n });\r\n }\r\n // allow the afterCallback to override the return value\r\n triggerSubscriptions(afterCallbackList, ret);\r\n return ret;\r\n };\r\n }\r\n const _hmrPayload = /*#__PURE__*/ markRaw({\r\n actions: {},\r\n getters: {},\r\n state: [],\r\n hotState,\r\n });\r\n const partialStore = {\r\n _p: pinia,\r\n // _s: scope,\r\n $id,\r\n $onAction: addSubscription.bind(null, actionSubscriptions),\r\n $patch,\r\n $reset,\r\n $subscribe(callback, options = {}) {\r\n const removeSubscription = addSubscription(subscriptions, callback, options.detached, () => stopWatcher());\r\n const stopWatcher = scope.run(() => watch(() => pinia.state.value[$id], (state) => {\r\n if (options.flush === 'sync' ? isSyncListening : isListening) {\r\n callback({\r\n storeId: $id,\r\n type: MutationType.direct,\r\n events: debuggerEvents,\r\n }, state);\r\n }\r\n }, assign({}, $subscribeOptions, options)));\r\n return removeSubscription;\r\n },\r\n $dispose,\r\n };\r\n /* istanbul ignore if */\r\n if (isVue2) {\r\n // start as non ready\r\n partialStore._r = false;\r\n }\r\n const store = reactive(assign((process.env.NODE_ENV !== 'production') && IS_CLIENT\r\n ? // devtools custom properties\r\n {\r\n _customProperties: markRaw(new Set()),\r\n _hmrPayload,\r\n }\r\n : {}, partialStore\r\n // must be added later\r\n // setupStore\r\n ));\r\n // store the partial store now so the setup of stores can instantiate each other before they are finished without\r\n // creating infinite loops.\r\n pinia._s.set($id, store);\r\n // TODO: idea create skipSerialize that marks properties as non serializable and they are skipped\r\n const setupStore = pinia._e.run(() => {\r\n scope = effectScope();\r\n return scope.run(() => setup());\r\n });\r\n // overwrite existing actions to support $onAction\r\n for (const key in setupStore) {\r\n const prop = setupStore[key];\r\n if ((isRef(prop) && !isComputed(prop)) || isReactive(prop)) {\r\n // mark it as a piece of state to be serialized\r\n if ((process.env.NODE_ENV !== 'production') && hot) {\r\n set(hotState.value, key, toRef(setupStore, key));\r\n // createOptionStore directly sets the state in pinia.state.value so we\r\n // can just skip that\r\n }\r\n else if (!isOptionsStore) {\r\n // in setup stores we must hydrate the state and sync pinia state tree with the refs the user just created\r\n if (initialState && shouldHydrate(prop)) {\r\n if (isRef(prop)) {\r\n prop.value = initialState[key];\r\n }\r\n else {\r\n // probably a reactive object, lets recursively assign\r\n mergeReactiveObjects(prop, initialState[key]);\r\n }\r\n }\r\n // transfer the ref to the pinia state to keep everything in sync\r\n /* istanbul ignore if */\r\n if (isVue2) {\r\n set(pinia.state.value[$id], key, prop);\r\n }\r\n else {\r\n pinia.state.value[$id][key] = prop;\r\n }\r\n }\r\n /* istanbul ignore else */\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n _hmrPayload.state.push(key);\r\n }\r\n // action\r\n }\r\n else if (typeof prop === 'function') {\r\n // @ts-expect-error: we are overriding the function we avoid wrapping if\r\n const actionValue = (process.env.NODE_ENV !== 'production') && hot ? prop : wrapAction(key, prop);\r\n // this a hot module replacement store because the hotUpdate method needs\r\n // to do it with the right context\r\n /* istanbul ignore if */\r\n if (isVue2) {\r\n set(setupStore, key, actionValue);\r\n }\r\n else {\r\n // @ts-expect-error\r\n setupStore[key] = actionValue;\r\n }\r\n /* istanbul ignore else */\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n _hmrPayload.actions[key] = prop;\r\n }\r\n // list actions so they can be used in plugins\r\n // @ts-expect-error\r\n optionsForPlugin.actions[key] = prop;\r\n }\r\n else if ((process.env.NODE_ENV !== 'production')) {\r\n // add getters for devtools\r\n if (isComputed(prop)) {\r\n _hmrPayload.getters[key] = isOptionsStore\r\n ? // @ts-expect-error\r\n options.getters[key]\r\n : prop;\r\n if (IS_CLIENT) {\r\n const getters = \r\n // @ts-expect-error: it should be on the store\r\n setupStore._getters || (setupStore._getters = markRaw([]));\r\n getters.push(key);\r\n }\r\n }\r\n }\r\n }\r\n // add the state, getters, and action properties\r\n /* istanbul ignore if */\r\n if (isVue2) {\r\n Object.keys(setupStore).forEach((key) => {\r\n set(store, key, \r\n // @ts-expect-error: valid key indexing\r\n setupStore[key]);\r\n });\r\n }\r\n else {\r\n assign(store, setupStore);\r\n // allows retrieving reactive objects with `storeToRefs()`. Must be called after assigning to the reactive object.\r\n // Make `storeToRefs()` work with `reactive()` #799\r\n assign(toRaw(store), setupStore);\r\n }\r\n // use this instead of a computed with setter to be able to create it anywhere\r\n // without linking the computed lifespan to wherever the store is first\r\n // created.\r\n Object.defineProperty(store, '$state', {\r\n get: () => ((process.env.NODE_ENV !== 'production') && hot ? hotState.value : pinia.state.value[$id]),\r\n set: (state) => {\r\n /* istanbul ignore if */\r\n if ((process.env.NODE_ENV !== 'production') && hot) {\r\n throw new Error('cannot set hotState');\r\n }\r\n $patch(($state) => {\r\n assign($state, state);\r\n });\r\n },\r\n });\r\n // add the hotUpdate before plugins to allow them to override it\r\n /* istanbul ignore else */\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n store._hotUpdate = markRaw((newStore) => {\r\n store._hotUpdating = true;\r\n newStore._hmrPayload.state.forEach((stateKey) => {\r\n if (stateKey in store.$state) {\r\n const newStateTarget = newStore.$state[stateKey];\r\n const oldStateSource = store.$state[stateKey];\r\n if (typeof newStateTarget === 'object' &&\r\n isPlainObject(newStateTarget) &&\r\n isPlainObject(oldStateSource)) {\r\n patchObject(newStateTarget, oldStateSource);\r\n }\r\n else {\r\n // transfer the ref\r\n newStore.$state[stateKey] = oldStateSource;\r\n }\r\n }\r\n // patch direct access properties to allow store.stateProperty to work as\r\n // store.$state.stateProperty\r\n set(store, stateKey, toRef(newStore.$state, stateKey));\r\n });\r\n // remove deleted state properties\r\n Object.keys(store.$state).forEach((stateKey) => {\r\n if (!(stateKey in newStore.$state)) {\r\n del(store, stateKey);\r\n }\r\n });\r\n // avoid devtools logging this as a mutation\r\n isListening = false;\r\n isSyncListening = false;\r\n pinia.state.value[$id] = toRef(newStore._hmrPayload, 'hotState');\r\n isSyncListening = true;\r\n nextTick().then(() => {\r\n isListening = true;\r\n });\r\n for (const actionName in newStore._hmrPayload.actions) {\r\n const action = newStore[actionName];\r\n set(store, actionName, wrapAction(actionName, action));\r\n }\r\n // TODO: does this work in both setup and option store?\r\n for (const getterName in newStore._hmrPayload.getters) {\r\n const getter = newStore._hmrPayload.getters[getterName];\r\n const getterValue = isOptionsStore\r\n ? // special handling of options api\r\n computed(() => {\r\n setActivePinia(pinia);\r\n return getter.call(store, store);\r\n })\r\n : getter;\r\n set(store, getterName, getterValue);\r\n }\r\n // remove deleted getters\r\n Object.keys(store._hmrPayload.getters).forEach((key) => {\r\n if (!(key in newStore._hmrPayload.getters)) {\r\n del(store, key);\r\n }\r\n });\r\n // remove old actions\r\n Object.keys(store._hmrPayload.actions).forEach((key) => {\r\n if (!(key in newStore._hmrPayload.actions)) {\r\n del(store, key);\r\n }\r\n });\r\n // update the values used in devtools and to allow deleting new properties later on\r\n store._hmrPayload = newStore._hmrPayload;\r\n store._getters = newStore._getters;\r\n store._hotUpdating = false;\r\n });\r\n const nonEnumerable = {\r\n writable: true,\r\n configurable: true,\r\n // avoid warning on devtools trying to display this property\r\n enumerable: false,\r\n };\r\n if (IS_CLIENT) {\r\n ['_p', '_hmrPayload', '_getters', '_customProperties'].forEach((p) => {\r\n Object.defineProperty(store, p, {\r\n value: store[p],\r\n ...nonEnumerable,\r\n });\r\n });\r\n }\r\n }\r\n /* istanbul ignore if */\r\n if (isVue2) {\r\n // mark the store as ready before plugins\r\n store._r = true;\r\n }\r\n // apply all plugins\r\n pinia._p.forEach((extender) => {\r\n /* istanbul ignore else */\r\n if ((process.env.NODE_ENV !== 'production') && IS_CLIENT) {\r\n const extensions = scope.run(() => extender({\r\n store,\r\n app: pinia._a,\r\n pinia,\r\n options: optionsForPlugin,\r\n }));\r\n Object.keys(extensions || {}).forEach((key) => store._customProperties.add(key));\r\n assign(store, extensions);\r\n }\r\n else {\r\n assign(store, scope.run(() => extender({\r\n store,\r\n app: pinia._a,\r\n pinia,\r\n options: optionsForPlugin,\r\n })));\r\n }\r\n });\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n store.$state &&\r\n typeof store.$state === 'object' &&\r\n typeof store.$state.constructor === 'function' &&\r\n !store.$state.constructor.toString().includes('[native code]')) {\r\n console.warn(`[🍍]: The \"state\" must be a plain object. It cannot be\\n` +\r\n `\\tstate: () => new MyClass()\\n` +\r\n `Found in store \"${store.$id}\".`);\r\n }\r\n // only apply hydrate to option stores with an initial state in pinia\r\n if (initialState &&\r\n isOptionsStore &&\r\n options.hydrate) {\r\n options.hydrate(store.$state, initialState);\r\n }\r\n isListening = true;\r\n isSyncListening = true;\r\n return store;\r\n}\r\nfunction defineStore(\r\n// TODO: add proper types from above\r\nidOrOptions, setup, setupOptions) {\r\n let id;\r\n let options;\r\n const isSetupStore = typeof setup === 'function';\r\n if (typeof idOrOptions === 'string') {\r\n id = idOrOptions;\r\n // the option store setup will contain the actual options in this case\r\n options = isSetupStore ? setupOptions : setup;\r\n }\r\n else {\r\n options = idOrOptions;\r\n id = idOrOptions.id;\r\n }\r\n function useStore(pinia, hot) {\r\n const currentInstance = getCurrentInstance();\r\n pinia =\r\n // in test mode, ignore the argument provided as we can always retrieve a\r\n // pinia instance with getActivePinia()\r\n ((process.env.NODE_ENV === 'test') && activePinia && activePinia._testing ? null : pinia) ||\r\n (currentInstance && inject(piniaSymbol));\r\n if (pinia)\r\n setActivePinia(pinia);\r\n if ((process.env.NODE_ENV !== 'production') && !activePinia) {\r\n throw new Error(`[🍍]: getActivePinia was called with no active Pinia. Did you forget to install pinia?\\n` +\r\n `\\tconst pinia = createPinia()\\n` +\r\n `\\tapp.use(pinia)\\n` +\r\n `This will fail in production.`);\r\n }\r\n pinia = activePinia;\r\n if (!pinia._s.has(id)) {\r\n // creating the store registers it in `pinia._s`\r\n if (isSetupStore) {\r\n createSetupStore(id, setup, options, pinia);\r\n }\r\n else {\r\n createOptionsStore(id, options, pinia);\r\n }\r\n /* istanbul ignore else */\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n // @ts-expect-error: not the right inferred type\r\n useStore._pinia = pinia;\r\n }\r\n }\r\n const store = pinia._s.get(id);\r\n if ((process.env.NODE_ENV !== 'production') && hot) {\r\n const hotId = '__hot:' + id;\r\n const newStore = isSetupStore\r\n ? createSetupStore(hotId, setup, options, pinia, true)\r\n : createOptionsStore(hotId, assign({}, options), pinia, true);\r\n hot._hotUpdate(newStore);\r\n // cleanup the state properties and the store from the cache\r\n delete pinia.state.value[hotId];\r\n pinia._s.delete(hotId);\r\n }\r\n // save stores in instances to access them devtools\r\n if ((process.env.NODE_ENV !== 'production') &&\r\n IS_CLIENT &&\r\n currentInstance &&\r\n currentInstance.proxy &&\r\n // avoid adding stores that are just built for hot module replacement\r\n !hot) {\r\n const vm = currentInstance.proxy;\r\n const cache = '_pStores' in vm ? vm._pStores : (vm._pStores = {});\r\n cache[id] = store;\r\n }\r\n // StoreGeneric cannot be casted towards Store\r\n return store;\r\n }\r\n useStore.$id = id;\r\n return useStore;\r\n}\n\nlet mapStoreSuffix = 'Store';\r\n/**\r\n * Changes the suffix added by `mapStores()`. Can be set to an empty string.\r\n * Defaults to `\"Store\"`. Make sure to extend the MapStoresCustomization\r\n * interface if you are using TypeScript.\r\n *\r\n * @param suffix - new suffix\r\n */\r\nfunction setMapStoreSuffix(suffix // could be 'Store' but that would be annoying for JS\r\n) {\r\n mapStoreSuffix = suffix;\r\n}\r\n/**\r\n * Allows using stores without the composition API (`setup()`) by generating an\r\n * object to be spread in the `computed` field of a component. It accepts a list\r\n * of store definitions.\r\n *\r\n * @example\r\n * ```js\r\n * export default {\r\n * computed: {\r\n * // other computed properties\r\n * ...mapStores(useUserStore, useCartStore)\r\n * },\r\n *\r\n * created() {\r\n * this.userStore // store with id \"user\"\r\n * this.cartStore // store with id \"cart\"\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @param stores - list of stores to map to an object\r\n */\r\nfunction mapStores(...stores) {\r\n if ((process.env.NODE_ENV !== 'production') && Array.isArray(stores[0])) {\r\n console.warn(`[🍍]: Directly pass all stores to \"mapStores()\" without putting them in an array:\\n` +\r\n `Replace\\n` +\r\n `\\tmapStores([useAuthStore, useCartStore])\\n` +\r\n `with\\n` +\r\n `\\tmapStores(useAuthStore, useCartStore)\\n` +\r\n `This will fail in production if not fixed.`);\r\n stores = stores[0];\r\n }\r\n return stores.reduce((reduced, useStore) => {\r\n // @ts-expect-error: $id is added by defineStore\r\n reduced[useStore.$id + mapStoreSuffix] = function () {\r\n return useStore(this.$pinia);\r\n };\r\n return reduced;\r\n }, {});\r\n}\r\n/**\r\n * Allows using state and getters from one store without using the composition\r\n * API (`setup()`) by generating an object to be spread in the `computed` field\r\n * of a component.\r\n *\r\n * @param useStore - store to map from\r\n * @param keysOrMapper - array or object\r\n */\r\nfunction mapState(useStore, keysOrMapper) {\r\n return Array.isArray(keysOrMapper)\r\n ? keysOrMapper.reduce((reduced, key) => {\r\n reduced[key] = function () {\r\n return useStore(this.$pinia)[key];\r\n };\r\n return reduced;\r\n }, {})\r\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\r\n // @ts-expect-error\r\n reduced[key] = function () {\r\n const store = useStore(this.$pinia);\r\n const storeKey = keysOrMapper[key];\r\n // for some reason TS is unable to infer the type of storeKey to be a\r\n // function\r\n return typeof storeKey === 'function'\r\n ? storeKey.call(this, store)\r\n : store[storeKey];\r\n };\r\n return reduced;\r\n }, {});\r\n}\r\n/**\r\n * Alias for `mapState()`. You should use `mapState()` instead.\r\n * @deprecated use `mapState()` instead.\r\n */\r\nconst mapGetters = mapState;\r\n/**\r\n * Allows directly using actions from your store without using the composition\r\n * API (`setup()`) by generating an object to be spread in the `methods` field\r\n * of a component.\r\n *\r\n * @param useStore - store to map from\r\n * @param keysOrMapper - array or object\r\n */\r\nfunction mapActions(useStore, keysOrMapper) {\r\n return Array.isArray(keysOrMapper)\r\n ? keysOrMapper.reduce((reduced, key) => {\r\n // @ts-expect-error\r\n reduced[key] = function (...args) {\r\n return useStore(this.$pinia)[key](...args);\r\n };\r\n return reduced;\r\n }, {})\r\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\r\n // @ts-expect-error\r\n reduced[key] = function (...args) {\r\n return useStore(this.$pinia)[keysOrMapper[key]](...args);\r\n };\r\n return reduced;\r\n }, {});\r\n}\r\n/**\r\n * Allows using state and getters from one store without using the composition\r\n * API (`setup()`) by generating an object to be spread in the `computed` field\r\n * of a component.\r\n *\r\n * @param useStore - store to map from\r\n * @param keysOrMapper - array or object\r\n */\r\nfunction mapWritableState(useStore, keysOrMapper) {\r\n return Array.isArray(keysOrMapper)\r\n ? keysOrMapper.reduce((reduced, key) => {\r\n // @ts-ignore\r\n reduced[key] = {\r\n get() {\r\n return useStore(this.$pinia)[key];\r\n },\r\n set(value) {\r\n // it's easier to type it here as any\r\n return (useStore(this.$pinia)[key] = value);\r\n },\r\n };\r\n return reduced;\r\n }, {})\r\n : Object.keys(keysOrMapper).reduce((reduced, key) => {\r\n // @ts-ignore\r\n reduced[key] = {\r\n get() {\r\n return useStore(this.$pinia)[keysOrMapper[key]];\r\n },\r\n set(value) {\r\n // it's easier to type it here as any\r\n return (useStore(this.$pinia)[keysOrMapper[key]] = value);\r\n },\r\n };\r\n return reduced;\r\n }, {});\r\n}\n\n/**\r\n * Creates an object of references with all the state, getters, and plugin-added\r\n * state properties of the store. Similar to `toRefs()` but specifically\r\n * designed for Pinia stores so methods and non reactive properties are\r\n * completely ignored.\r\n *\r\n * @param store - store to extract the refs from\r\n */\r\nfunction storeToRefs(store) {\r\n // See https://github.com/vuejs/pinia/issues/852\r\n // It's easier to just use toRefs() even if it includes more stuff\r\n if (isVue2) {\r\n // @ts-expect-error: toRefs include methods and others\r\n return toRefs(store);\r\n }\r\n else {\r\n store = toRaw(store);\r\n const refs = {};\r\n for (const key in store) {\r\n const value = store[key];\r\n if (isRef(value) || isReactive(value)) {\r\n // @ts-expect-error: the key is state or getter\r\n refs[key] =\r\n // ---\r\n toRef(store, key);\r\n }\r\n }\r\n return refs;\r\n }\r\n}\n\n/**\r\n * Vue 2 Plugin that must be installed for pinia to work. Note **you don't need\r\n * this plugin if you are using Nuxt.js**. Use the `buildModule` instead:\r\n * https://pinia.vuejs.org/ssr/nuxt.html.\r\n *\r\n * @example\r\n * ```js\r\n * import Vue from 'vue'\r\n * import { PiniaVuePlugin, createPinia } from 'pinia'\r\n *\r\n * Vue.use(PiniaVuePlugin)\r\n * const pinia = createPinia()\r\n *\r\n * new Vue({\r\n * el: '#app',\r\n * // ...\r\n * pinia,\r\n * })\r\n * ```\r\n *\r\n * @param _Vue - `Vue` imported from 'vue'.\r\n */\r\nconst PiniaVuePlugin = function (_Vue) {\r\n // Equivalent of\r\n // app.config.globalProperties.$pinia = pinia\r\n _Vue.mixin({\r\n beforeCreate() {\r\n const options = this.$options;\r\n if (options.pinia) {\r\n const pinia = options.pinia;\r\n // HACK: taken from provide(): https://github.com/vuejs/composition-api/blob/main/src/apis/inject.ts#L31\r\n /* istanbul ignore else */\r\n if (!this._provided) {\r\n const provideCache = {};\r\n Object.defineProperty(this, '_provided', {\r\n get: () => provideCache,\r\n set: (v) => Object.assign(provideCache, v),\r\n });\r\n }\r\n this._provided[piniaSymbol] = pinia;\r\n // propagate the pinia instance in an SSR friendly way\r\n // avoid adding it to nuxt twice\r\n /* istanbul ignore else */\r\n if (!this.$pinia) {\r\n this.$pinia = pinia;\r\n }\r\n pinia._a = this;\r\n if (IS_CLIENT) {\r\n // this allows calling useStore() outside of a component setup after\r\n // installing pinia's plugin\r\n setActivePinia(pinia);\r\n if ((process.env.NODE_ENV !== 'production')) {\r\n registerPiniaDevtools(pinia._a, pinia);\r\n }\r\n }\r\n }\r\n else if (!this.$pinia && options.parent && options.parent.$pinia) {\r\n this.$pinia = options.parent.$pinia;\r\n }\r\n },\r\n destroyed() {\r\n delete this._pStores;\r\n },\r\n });\r\n};\n\nexport { MutationType, PiniaVuePlugin, acceptHMRUpdate, createPinia, defineStore, getActivePinia, mapActions, mapGetters, mapState, mapStores, mapWritableState, setActivePinia, setMapStoreSuffix, skipHydrate, storeToRefs };\n","import {defineStore} from \"pinia\";\r\n\r\nexport const useAppStore = defineStore('app', {\r\n state: () => ({\r\n showTabBar: false,\r\n tabBarActive: 0 as number,\r\n copyRightBottom: '14px',\r\n zIndex: -1111\r\n }),\r\n getters: {},\r\n actions: {\r\n setShowTabBar(value: boolean) {\r\n this.showTabBar = value\r\n this.setCopyRightBottom()\r\n },\r\n setTabActive(index: number) {\r\n this.tabBarActive = index\r\n },\r\n setCopyRightBottom(value?: string, zIndex: number = -1111) {\r\n if (value) {\r\n this.copyRightBottom = value\r\n this.zIndex = zIndex\r\n return\r\n }\r\n const tabBar = document.querySelector('.van-tabbar')\r\n if (this.showTabBar && tabBar) {\r\n this.copyRightBottom = `${tabBar.clientHeight + 10}px`\r\n return\r\n }\r\n this.copyRightBottom = '14px'\r\n }\r\n },\r\n})\r\n\r\n","function noop() {\n}\nconst extend = Object.assign;\nconst inBrowser = typeof window !== \"undefined\";\nfunction get(object, path) {\n const keys = path.split(\".\");\n let result = object;\n keys.forEach((key) => {\n var _a;\n result = (_a = result[key]) != null ? _a : \"\";\n });\n return result;\n}\nfunction pick(obj, keys, ignoreUndefined) {\n return keys.reduce((ret, key) => {\n if (!ignoreUndefined || obj[key] !== void 0) {\n ret[key] = obj[key];\n }\n return ret;\n }, {});\n}\nconst toArray = (item) => Array.isArray(item) ? item : [item];\nexport {\n extend,\n get,\n inBrowser,\n noop,\n pick,\n toArray\n};\n","const unknownProp = null;\nconst numericProp = [Number, String];\nconst truthProp = {\n type: Boolean,\n default: true\n};\nconst makeRequiredProp = (type) => ({\n type,\n required: true\n});\nconst makeArrayProp = () => ({\n type: Array,\n default: () => []\n});\nconst makeNumberProp = (defaultVal) => ({\n type: Number,\n default: defaultVal\n});\nconst makeNumericProp = (defaultVal) => ({\n type: numericProp,\n default: defaultVal\n});\nconst makeStringProp = (defaultVal) => ({\n type: String,\n default: defaultVal\n});\nexport {\n makeArrayProp,\n makeNumberProp,\n makeNumericProp,\n makeRequiredProp,\n makeStringProp,\n numericProp,\n truthProp,\n unknownProp\n};\n","// src/utils.ts\nvar inBrowser = typeof window !== \"undefined\";\nvar supportsPassive = true;\nfunction raf(fn) {\n return inBrowser ? requestAnimationFrame(fn) : -1;\n}\nfunction cancelRaf(id) {\n if (inBrowser) {\n cancelAnimationFrame(id);\n }\n}\nfunction doubleRaf(fn) {\n raf(() => raf(fn));\n}\n\n// src/useRect/index.ts\nimport { unref } from \"vue\";\nvar isWindow = (val) => val === window;\nvar makeDOMRect = (width2, height2) => ({\n top: 0,\n left: 0,\n right: width2,\n bottom: height2,\n width: width2,\n height: height2\n});\nvar useRect = (elementOrRef) => {\n const element = unref(elementOrRef);\n if (isWindow(element)) {\n const width2 = element.innerWidth;\n const height2 = element.innerHeight;\n return makeDOMRect(width2, height2);\n }\n if (element == null ? void 0 : element.getBoundingClientRect) {\n return element.getBoundingClientRect();\n }\n return makeDOMRect(0, 0);\n};\n\n// src/useToggle/index.ts\nimport { ref } from \"vue\";\nfunction useToggle(defaultValue = false) {\n const state = ref(defaultValue);\n const toggle = (value = !state.value) => {\n state.value = value;\n };\n return [state, toggle];\n}\n\n// src/useRelation/useParent.ts\nimport {\n ref as ref2,\n inject,\n computed,\n onUnmounted,\n getCurrentInstance\n} from \"vue\";\nfunction useParent(key) {\n const parent = inject(key, null);\n if (parent) {\n const instance = getCurrentInstance();\n const { link, unlink, internalChildren } = parent;\n link(instance);\n onUnmounted(() => unlink(instance));\n const index = computed(() => internalChildren.indexOf(instance));\n return {\n parent,\n index\n };\n }\n return {\n parent: null,\n index: ref2(-1)\n };\n}\n\n// src/useRelation/useChildren.ts\nimport {\n isVNode,\n provide,\n reactive,\n getCurrentInstance as getCurrentInstance2\n} from \"vue\";\nfunction flattenVNodes(children) {\n const result = [];\n const traverse = (children2) => {\n if (Array.isArray(children2)) {\n children2.forEach((child) => {\n var _a;\n if (isVNode(child)) {\n result.push(child);\n if ((_a = child.component) == null ? void 0 : _a.subTree) {\n result.push(child.component.subTree);\n traverse(child.component.subTree.children);\n }\n if (child.children) {\n traverse(child.children);\n }\n }\n });\n }\n };\n traverse(children);\n return result;\n}\nfunction sortChildren(parent, publicChildren, internalChildren) {\n const vnodes = flattenVNodes(parent.subTree.children);\n internalChildren.sort((a, b) => vnodes.indexOf(a.vnode) - vnodes.indexOf(b.vnode));\n const orderedPublicChildren = internalChildren.map((item) => item.proxy);\n publicChildren.sort((a, b) => {\n const indexA = orderedPublicChildren.indexOf(a);\n const indexB = orderedPublicChildren.indexOf(b);\n return indexA - indexB;\n });\n}\nfunction useChildren(key) {\n const publicChildren = reactive([]);\n const internalChildren = reactive([]);\n const parent = getCurrentInstance2();\n const linkChildren = (value) => {\n const link = (child) => {\n if (child.proxy) {\n internalChildren.push(child);\n publicChildren.push(child.proxy);\n sortChildren(parent, publicChildren, internalChildren);\n }\n };\n const unlink = (child) => {\n const index = internalChildren.indexOf(child);\n publicChildren.splice(index, 1);\n internalChildren.splice(index, 1);\n };\n provide(key, Object.assign({\n link,\n unlink,\n children: publicChildren,\n internalChildren\n }, value));\n };\n return {\n children: publicChildren,\n linkChildren\n };\n}\n\n// src/useCountDown/index.ts\nimport {\n ref as ref3,\n computed as computed2,\n onActivated,\n onDeactivated,\n onBeforeUnmount\n} from \"vue\";\nvar SECOND = 1e3;\nvar MINUTE = 60 * SECOND;\nvar HOUR = 60 * MINUTE;\nvar DAY = 24 * HOUR;\nfunction parseTime(time) {\n const days = Math.floor(time / DAY);\n const hours = Math.floor(time % DAY / HOUR);\n const minutes = Math.floor(time % HOUR / MINUTE);\n const seconds = Math.floor(time % MINUTE / SECOND);\n const milliseconds = Math.floor(time % SECOND);\n return {\n total: time,\n days,\n hours,\n minutes,\n seconds,\n milliseconds\n };\n}\nfunction isSameSecond(time1, time2) {\n return Math.floor(time1 / 1e3) === Math.floor(time2 / 1e3);\n}\nfunction useCountDown(options) {\n let rafId;\n let endTime;\n let counting;\n let deactivated;\n const remain = ref3(options.time);\n const current = computed2(() => parseTime(remain.value));\n const pause = () => {\n counting = false;\n cancelRaf(rafId);\n };\n const getCurrentRemain = () => Math.max(endTime - Date.now(), 0);\n const setRemain = (value) => {\n var _a, _b;\n remain.value = value;\n (_a = options.onChange) == null ? void 0 : _a.call(options, current.value);\n if (value === 0) {\n pause();\n (_b = options.onFinish) == null ? void 0 : _b.call(options);\n }\n };\n const microTick = () => {\n rafId = raf(() => {\n if (counting) {\n setRemain(getCurrentRemain());\n if (remain.value > 0) {\n microTick();\n }\n }\n });\n };\n const macroTick = () => {\n rafId = raf(() => {\n if (counting) {\n const remainRemain = getCurrentRemain();\n if (!isSameSecond(remainRemain, remain.value) || remainRemain === 0) {\n setRemain(remainRemain);\n }\n if (remain.value > 0) {\n macroTick();\n }\n }\n });\n };\n const tick = () => {\n if (!inBrowser) {\n return;\n }\n if (options.millisecond) {\n microTick();\n } else {\n macroTick();\n }\n };\n const start = () => {\n if (!counting) {\n endTime = Date.now() + remain.value;\n counting = true;\n tick();\n }\n };\n const reset = (totalTime = options.time) => {\n pause();\n remain.value = totalTime;\n };\n onBeforeUnmount(pause);\n onActivated(() => {\n if (deactivated) {\n counting = true;\n deactivated = false;\n tick();\n }\n });\n onDeactivated(() => {\n if (counting) {\n pause();\n deactivated = true;\n }\n });\n return {\n start,\n pause,\n reset,\n current\n };\n}\n\n// src/useClickAway/index.ts\nimport { unref as unref3 } from \"vue\";\n\n// src/useEventListener/index.ts\nimport { watch, isRef, unref as unref2, onUnmounted as onUnmounted2, onDeactivated as onDeactivated2 } from \"vue\";\n\n// src/onMountedOrActivated/index.ts\nimport { nextTick, onMounted, onActivated as onActivated2 } from \"vue\";\nfunction onMountedOrActivated(hook) {\n let mounted;\n onMounted(() => {\n hook();\n nextTick(() => {\n mounted = true;\n });\n });\n onActivated2(() => {\n if (mounted) {\n hook();\n }\n });\n}\n\n// src/useEventListener/index.ts\nfunction useEventListener(type, listener, options = {}) {\n if (!inBrowser) {\n return;\n }\n const { target = window, passive = false, capture = false } = options;\n let attached;\n const add = (target2) => {\n const element = unref2(target2);\n if (element && !attached) {\n element.addEventListener(type, listener, { capture, passive });\n attached = true;\n }\n };\n const remove = (target2) => {\n const element = unref2(target2);\n if (element && attached) {\n element.removeEventListener(type, listener, capture);\n attached = false;\n }\n };\n onUnmounted2(() => remove(target));\n onDeactivated2(() => remove(target));\n onMountedOrActivated(() => add(target));\n if (isRef(target)) {\n watch(target, (val, oldVal) => {\n remove(oldVal);\n add(val);\n });\n }\n}\n\n// src/useClickAway/index.ts\nfunction useClickAway(target, listener, options = {}) {\n if (!inBrowser) {\n return;\n }\n const { eventName = \"click\" } = options;\n const onClick = (event) => {\n const element = unref3(target);\n if (element && !element.contains(event.target)) {\n listener(event);\n }\n };\n useEventListener(eventName, onClick, { target: document });\n}\n\n// src/useWindowSize/index.ts\nimport { ref as ref4 } from \"vue\";\nvar width;\nvar height;\nfunction useWindowSize() {\n if (!width) {\n width = ref4(0);\n height = ref4(0);\n if (inBrowser) {\n const update = () => {\n width.value = window.innerWidth;\n height.value = window.innerHeight;\n };\n update();\n window.addEventListener(\"resize\", update, { passive: true });\n window.addEventListener(\"orientationchange\", update, { passive: true });\n }\n }\n return { width, height };\n}\n\n// src/useScrollParent/index.ts\nimport { ref as ref5, onMounted as onMounted2 } from \"vue\";\nvar overflowScrollReg = /scroll|auto/i;\nvar defaultRoot = inBrowser ? window : void 0;\nfunction isElement(node) {\n const ELEMENT_NODE_TYPE = 1;\n return node.tagName !== \"HTML\" && node.tagName !== \"BODY\" && node.nodeType === ELEMENT_NODE_TYPE;\n}\nfunction getScrollParent(el, root = defaultRoot) {\n let node = el;\n while (node && node !== root && isElement(node)) {\n const { overflowY } = window.getComputedStyle(node);\n if (overflowScrollReg.test(overflowY)) {\n return node;\n }\n node = node.parentNode;\n }\n return root;\n}\nfunction useScrollParent(el, root = defaultRoot) {\n const scrollParent = ref5();\n onMounted2(() => {\n if (el.value) {\n scrollParent.value = getScrollParent(el.value, root);\n }\n });\n return scrollParent;\n}\n\n// src/usePageVisibility/index.ts\nimport { ref as ref6 } from \"vue\";\nvar visibility;\nfunction usePageVisibility() {\n if (!visibility) {\n visibility = ref6(\"visible\");\n if (inBrowser) {\n const update = () => {\n visibility.value = document.hidden ? \"hidden\" : \"visible\";\n };\n update();\n window.addEventListener(\"visibilitychange\", update);\n }\n }\n return visibility;\n}\n\n// src/useCustomFieldValue/index.ts\nimport { watch as watch2, inject as inject2 } from \"vue\";\nvar CUSTOM_FIELD_INJECTION_KEY = Symbol(\"van-field\");\nfunction useCustomFieldValue(customValue) {\n const field = inject2(CUSTOM_FIELD_INJECTION_KEY, null);\n if (field && !field.customValue.value) {\n field.customValue.value = customValue;\n watch2(customValue, () => {\n field.resetValidation();\n field.validateWithTrigger(\"onChange\");\n });\n }\n}\nexport {\n CUSTOM_FIELD_INJECTION_KEY,\n cancelRaf,\n doubleRaf,\n flattenVNodes,\n getScrollParent,\n inBrowser,\n onMountedOrActivated,\n raf,\n sortChildren,\n supportsPassive,\n useChildren,\n useClickAway,\n useCountDown,\n useCustomFieldValue,\n useEventListener,\n usePageVisibility,\n useParent,\n useRect,\n useScrollParent,\n useToggle,\n useWindowSize\n};\n","import { inBrowser } from \"./basic.mjs\";\nconst isDef = (val) => val !== void 0 && val !== null;\nconst isFunction = (val) => typeof val === \"function\";\nconst isObject = (val) => val !== null && typeof val === \"object\";\nconst isPromise = (val) => isObject(val) && isFunction(val.then) && isFunction(val.catch);\nconst isDate = (val) => Object.prototype.toString.call(val) === \"[object Date]\" && !Number.isNaN(val.getTime());\nfunction 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}\nconst isNumeric = (val) => typeof val === \"number\" || /^\\d+(\\.\\d+)?$/.test(val);\nconst isIOS = () => inBrowser ? /ios|iphone|ipad|ipod/.test(navigator.userAgent.toLowerCase()) : false;\nexport {\n isDate,\n isDef,\n isFunction,\n isIOS,\n isMobile,\n isNumeric,\n isObject,\n isPromise\n};\n","import { useRect, useWindowSize } from \"@vant/use\";\nimport { unref } from \"vue\";\nimport { isIOS as checkIsIOS } from \"./validate.mjs\";\nfunction getScrollTop(el) {\n const top = \"scrollTop\" in el ? el.scrollTop : el.pageYOffset;\n return Math.max(top, 0);\n}\nfunction setScrollTop(el, value) {\n if (\"scrollTop\" in el) {\n el.scrollTop = value;\n } else {\n el.scrollTo(el.scrollX, value);\n }\n}\nfunction getRootScrollTop() {\n return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n}\nfunction setRootScrollTop(value) {\n setScrollTop(window, value);\n setScrollTop(document.body, value);\n}\nfunction getElementTop(el, scroller) {\n if (el === window) {\n return 0;\n }\n const scrollTop = scroller ? getScrollTop(scroller) : getRootScrollTop();\n return useRect(el).top + scrollTop;\n}\nconst isIOS = checkIsIOS();\nfunction resetScroll() {\n if (isIOS) {\n setRootScrollTop(getRootScrollTop());\n }\n}\nconst stopPropagation = (event) => event.stopPropagation();\nfunction preventDefault(event, isStopPropagation) {\n if (typeof event.cancelable !== \"boolean\" || event.cancelable) {\n event.preventDefault();\n }\n if (isStopPropagation) {\n stopPropagation(event);\n }\n}\nfunction isHidden(elementRef) {\n const el = unref(elementRef);\n if (!el) {\n return false;\n }\n const style = window.getComputedStyle(el);\n const hidden = style.display === \"none\";\n const parentHidden = el.offsetParent === null && style.position !== \"fixed\";\n return hidden || parentHidden;\n}\nconst { width: windowWidth, height: windowHeight } = useWindowSize();\nexport {\n getElementTop,\n getRootScrollTop,\n getScrollTop,\n isHidden,\n preventDefault,\n resetScroll,\n setRootScrollTop,\n setScrollTop,\n stopPropagation,\n windowHeight,\n windowWidth\n};\n","import { inBrowser } from \"./basic.mjs\";\nimport { windowWidth, windowHeight } from \"./dom.mjs\";\nimport { isDef, isNumeric } from \"./validate.mjs\";\nfunction addUnit(value) {\n if (isDef(value)) {\n return isNumeric(value) ? `${value}px` : String(value);\n }\n return void 0;\n}\nfunction getSizeStyle(originSize) {\n if (isDef(originSize)) {\n if (Array.isArray(originSize)) {\n return {\n width: addUnit(originSize[0]),\n height: addUnit(originSize[1])\n };\n }\n const size = addUnit(originSize);\n return {\n width: size,\n height: size\n };\n }\n}\nfunction getZIndexStyle(zIndex) {\n const style = {};\n if (zIndex !== void 0) {\n style.zIndex = +zIndex;\n }\n return style;\n}\nlet rootFontSize;\nfunction getRootFontSize() {\n if (!rootFontSize) {\n const doc = document.documentElement;\n const fontSize = doc.style.fontSize || window.getComputedStyle(doc).fontSize;\n rootFontSize = parseFloat(fontSize);\n }\n return rootFontSize;\n}\nfunction convertRem(value) {\n value = value.replace(/rem/g, \"\");\n return +value * getRootFontSize();\n}\nfunction convertVw(value) {\n value = value.replace(/vw/g, \"\");\n return +value * windowWidth.value / 100;\n}\nfunction convertVh(value) {\n value = value.replace(/vh/g, \"\");\n return +value * windowHeight.value / 100;\n}\nfunction unitToPx(value) {\n if (typeof value === \"number\") {\n return value;\n }\n if (inBrowser) {\n if (value.includes(\"rem\")) {\n return convertRem(value);\n }\n if (value.includes(\"vw\")) {\n return convertVw(value);\n }\n if (value.includes(\"vh\")) {\n return convertVh(value);\n }\n }\n return parseFloat(value);\n}\nconst camelizeRE = /-(\\w)/g;\nconst camelize = (str) => str.replace(camelizeRE, (_, c) => c.toUpperCase());\nconst kebabCase = (str) => str.replace(/([A-Z])/g, \"-$1\").toLowerCase().replace(/^-/, \"\");\nfunction padZero(num, targetLength = 2) {\n let str = num + \"\";\n while (str.length < targetLength) {\n str = \"0\" + str;\n }\n return str;\n}\nconst clamp = (num, min, max) => Math.min(Math.max(num, min), max);\nfunction trimExtraChar(value, char, regExp) {\n const index = value.indexOf(char);\n if (index === -1) {\n return value;\n }\n if (char === \"-\" && index !== 0) {\n return value.slice(0, index);\n }\n return value.slice(0, index + 1) + value.slice(index).replace(regExp, \"\");\n}\nfunction formatNumber(value, allowDot = true, allowMinus = true) {\n if (allowDot) {\n value = trimExtraChar(value, \".\", /\\./g);\n } else {\n value = value.split(\".\")[0];\n }\n if (allowMinus) {\n value = trimExtraChar(value, \"-\", /-/g);\n } else {\n value = value.replace(/-/, \"\");\n }\n const regExp = allowDot ? /[^-0-9.]/g : /[^-0-9]/g;\n return value.replace(regExp, \"\");\n}\nfunction addNumber(num1, num2) {\n const cardinal = 10 ** 10;\n return Math.round((num1 + num2) * cardinal) / cardinal;\n}\nexport {\n addNumber,\n addUnit,\n camelize,\n clamp,\n formatNumber,\n getSizeStyle,\n getZIndexStyle,\n kebabCase,\n padZero,\n unitToPx\n};\n","import { isDef, isObject } from \"./validate.mjs\";\nconst { hasOwnProperty } = Object.prototype;\nfunction assignKey(to, from, key) {\n const val = from[key];\n if (!isDef(val)) {\n return;\n }\n if (!hasOwnProperty.call(to, key) || !isObject(val)) {\n to[key] = val;\n } else {\n to[key] = deepAssign(Object(to[key]), val);\n }\n}\nfunction deepAssign(to, from) {\n Object.keys(from).forEach((key) => {\n assignKey(to, from, key);\n });\n return to;\n}\nexport {\n deepAssign\n};\n","import { ref, reactive } from \"vue\";\nimport { deepAssign } from \"../utils/deep-assign.mjs\";\nimport defaultMessages from \"./lang/zh-CN.mjs\";\nconst lang = ref(\"zh-CN\");\nconst messages = reactive({\n \"zh-CN\": defaultMessages\n});\nconst Locale = {\n messages() {\n return messages[lang.value];\n },\n use(newLang, newMessages) {\n lang.value = newLang;\n this.add({ [newLang]: newMessages });\n },\n add(newMessages = {}) {\n deepAssign(messages, newMessages);\n }\n};\nvar stdin_default = Locale;\nexport {\n Locale,\n stdin_default as default\n};\n","var stdin_default = {\n name: \"\\u59D3\\u540D\",\n tel: \"\\u7535\\u8BDD\",\n save: \"\\u4FDD\\u5B58\",\n confirm: \"\\u786E\\u8BA4\",\n cancel: \"\\u53D6\\u6D88\",\n delete: \"\\u5220\\u9664\",\n loading: \"\\u52A0\\u8F7D\\u4E2D...\",\n noCoupon: \"\\u6682\\u65E0\\u4F18\\u60E0\\u5238\",\n nameEmpty: \"\\u8BF7\\u586B\\u5199\\u59D3\\u540D\",\n addContact: \"\\u6DFB\\u52A0\\u8054\\u7CFB\\u4EBA\",\n telInvalid: \"\\u8BF7\\u586B\\u5199\\u6B63\\u786E\\u7684\\u7535\\u8BDD\",\n vanCalendar: {\n end: \"\\u7ED3\\u675F\",\n start: \"\\u5F00\\u59CB\",\n title: \"\\u65E5\\u671F\\u9009\\u62E9\",\n weekdays: [\"\\u65E5\", \"\\u4E00\", \"\\u4E8C\", \"\\u4E09\", \"\\u56DB\", \"\\u4E94\", \"\\u516D\"],\n monthTitle: (year, month) => `${year}\\u5E74${month}\\u6708`,\n rangePrompt: (maxRange) => `\\u6700\\u591A\\u9009\\u62E9 ${maxRange} \\u5929`\n },\n vanCascader: {\n select: \"\\u8BF7\\u9009\\u62E9\"\n },\n vanPagination: {\n prev: \"\\u4E0A\\u4E00\\u9875\",\n next: \"\\u4E0B\\u4E00\\u9875\"\n },\n vanPullRefresh: {\n pulling: \"\\u4E0B\\u62C9\\u5373\\u53EF\\u5237\\u65B0...\",\n loosing: \"\\u91CA\\u653E\\u5373\\u53EF\\u5237\\u65B0...\"\n },\n vanSubmitBar: {\n label: \"\\u5408\\u8BA1:\"\n },\n vanCoupon: {\n unlimited: \"\\u65E0\\u95E8\\u69DB\",\n discount: (discount) => `${discount}\\u6298`,\n condition: (condition) => `\\u6EE1${condition}\\u5143\\u53EF\\u7528`\n },\n vanCouponCell: {\n title: \"\\u4F18\\u60E0\\u5238\",\n count: (count) => `${count}\\u5F20\\u53EF\\u7528`\n },\n vanCouponList: {\n exchange: \"\\u5151\\u6362\",\n close: \"\\u4E0D\\u4F7F\\u7528\",\n enable: \"\\u53EF\\u7528\",\n disabled: \"\\u4E0D\\u53EF\\u7528\",\n placeholder: \"\\u8F93\\u5165\\u4F18\\u60E0\\u7801\"\n },\n vanAddressEdit: {\n area: \"\\u5730\\u533A\",\n postal: \"\\u90AE\\u653F\\u7F16\\u7801\",\n areaEmpty: \"\\u8BF7\\u9009\\u62E9\\u5730\\u533A\",\n addressEmpty: \"\\u8BF7\\u586B\\u5199\\u8BE6\\u7EC6\\u5730\\u5740\",\n postalEmpty: \"\\u90AE\\u653F\\u7F16\\u7801\\u4E0D\\u6B63\\u786E\",\n addressDetail: \"\\u8BE6\\u7EC6\\u5730\\u5740\",\n defaultAddress: \"\\u8BBE\\u4E3A\\u9ED8\\u8BA4\\u6536\\u8D27\\u5730\\u5740\"\n },\n vanAddressList: {\n add: \"\\u65B0\\u589E\\u5730\\u5740\"\n }\n};\nexport {\n stdin_default as default\n};\n","import { get } from \"./basic.mjs\";\nimport { camelize } from \"./format.mjs\";\nimport { isFunction } from \"./validate.mjs\";\nimport locale from \"../locale/index.mjs\";\nfunction createTranslate(name) {\n const prefix = camelize(name) + \".\";\n return (path, ...args) => {\n const messages = locale.messages();\n const message = get(messages, prefix + path) || get(messages, path);\n return isFunction(message) ? message(...args) : message;\n };\n}\nfunction genBem(name, mods) {\n if (!mods) {\n return \"\";\n }\n if (typeof mods === \"string\") {\n return ` ${name}--${mods}`;\n }\n if (Array.isArray(mods)) {\n return mods.reduce((ret, item) => ret + genBem(name, item), \"\");\n }\n return Object.keys(mods).reduce((ret, key) => ret + (mods[key] ? genBem(name, key) : \"\"), \"\");\n}\nfunction createBEM(name) {\n return (el, mods) => {\n if (el && typeof el !== \"string\") {\n mods = el;\n el = \"\";\n }\n el = el ? `${name}__${el}` : name;\n return `${el}${genBem(el, mods)}`;\n };\n}\nfunction createNamespace(name) {\n const prefixedName = `van-${name}`;\n return [\n prefixedName,\n createBEM(prefixedName),\n createTranslate(prefixedName)\n ];\n}\nexport {\n createBEM,\n createNamespace,\n createTranslate\n};\n","const BORDER = \"van-hairline\";\nconst BORDER_TOP = `${BORDER}--top`;\nconst BORDER_LEFT = `${BORDER}--left`;\nconst BORDER_BOTTOM = `${BORDER}--bottom`;\nconst BORDER_SURROUND = `${BORDER}--surround`;\nconst BORDER_TOP_BOTTOM = `${BORDER}--top-bottom`;\nconst BORDER_UNSET_TOP_BOTTOM = `${BORDER}-unset--top-bottom`;\nconst HAPTICS_FEEDBACK = \"van-haptics-feedback\";\nconst FORM_KEY = Symbol(\"van-form\");\nexport {\n BORDER,\n BORDER_BOTTOM,\n BORDER_LEFT,\n BORDER_SURROUND,\n BORDER_TOP,\n BORDER_TOP_BOTTOM,\n BORDER_UNSET_TOP_BOTTOM,\n FORM_KEY,\n HAPTICS_FEEDBACK\n};\n","import { noop } from \"./basic.mjs\";\nimport { isPromise } from \"./validate.mjs\";\nfunction callInterceptor(interceptor, {\n args = [],\n done,\n canceled\n}) {\n if (interceptor) {\n const returnVal = interceptor.apply(null, args);\n if (isPromise(returnVal)) {\n returnVal.then((value) => {\n if (value) {\n done();\n } else if (canceled) {\n canceled();\n }\n }).catch(noop);\n } else if (returnVal) {\n done();\n } else if (canceled) {\n canceled();\n }\n } else {\n done();\n }\n}\nexport {\n callInterceptor\n};\n","import { camelize } from \"./format.mjs\";\nfunction withInstall(options) {\n options.install = (app) => {\n const { name } = options;\n app.component(name, options);\n app.component(camelize(`-${name}`), options);\n };\n return options;\n}\nexport {\n withInstall\n};\n","import { useRect } from \"@vant/use\";\nimport { ref, onMounted, nextTick } from \"vue\";\nconst useHeight = (element, withSafeArea) => {\n const height = ref();\n const setHeight = () => {\n height.value = useRect(element).height;\n };\n onMounted(() => {\n nextTick(setHeight);\n if (withSafeArea) {\n for (let i = 1; i <= 3; i++) {\n setTimeout(setHeight, 100 * i);\n }\n }\n });\n return height;\n};\nexport {\n useHeight\n};\n","import { createVNode as _createVNode } from \"vue\";\nimport { useHeight } from \"./use-height.mjs\";\nfunction usePlaceholder(contentRef, bem) {\n const height = useHeight(contentRef, true);\n return (renderContent) => _createVNode(\"div\", {\n \"class\": bem(\"placeholder\"),\n \"style\": {\n height: height.value ? `${height.value}px` : void 0\n }\n }, [renderContent()]);\n}\nexport {\n usePlaceholder\n};\n","import { createVNode as _createVNode } from \"vue\";\nimport { defineComponent, ref } from \"vue\";\nimport { truthProp, createNamespace } from \"../utils/index.mjs\";\nimport { useChildren } from \"@vant/use\";\nimport { usePlaceholder } from \"../composables/use-placeholder.mjs\";\nconst [name, bem] = createNamespace(\"action-bar\");\nconst ACTION_BAR_KEY = Symbol(name);\nconst actionBarProps = {\n placeholder: Boolean,\n safeAreaInsetBottom: truthProp\n};\nvar stdin_default = defineComponent({\n name,\n props: actionBarProps,\n setup(props, {\n slots\n }) {\n const root = ref();\n const renderPlaceholder = usePlaceholder(root, bem);\n const {\n linkChildren\n } = useChildren(ACTION_BAR_KEY);\n linkChildren();\n const renderActionBar = () => {\n var _a;\n return _createVNode(\"div\", {\n \"ref\": root,\n \"class\": [bem(), {\n \"van-safe-area-bottom\": props.safeAreaInsetBottom\n }]\n }, [(_a = slots.default) == null ? void 0 : _a.call(slots)]);\n };\n return () => {\n if (props.placeholder) {\n return renderPlaceholder(renderActionBar);\n }\n return renderActionBar();\n };\n }\n});\nexport {\n ACTION_BAR_KEY,\n stdin_default as default\n};\n","import { withInstall } from \"../utils/index.mjs\";\nimport _ActionBar from \"./ActionBar.mjs\";\nconst ActionBar = withInstall(_ActionBar);\nvar stdin_default = ActionBar;\nexport {\n ActionBar,\n stdin_default as default\n};\n","import { getCurrentInstance } from \"vue\";\nimport { extend } from \"../utils/index.mjs\";\nfunction useExpose(apis) {\n const instance = getCurrentInstance();\n if (instance) {\n extend(instance.proxy, apis);\n }\n}\nexport {\n useExpose\n};\n","import {\n getCurrentInstance\n} from \"vue\";\nconst routeProps = {\n to: [String, Object],\n url: String,\n replace: Boolean\n};\nfunction route({\n to,\n url,\n replace,\n $router: router\n}) {\n if (to && router) {\n router[replace ? \"replace\" : \"push\"](to);\n } else if (url) {\n replace ? location.replace(url) : location.href = url;\n }\n}\nfunction useRoute() {\n const vm = getCurrentInstance().proxy;\n return () => route(vm);\n}\nexport {\n route,\n routeProps,\n useRoute\n};\n","import { createVNode as _createVNode } from \"vue\";\nimport { computed, defineComponent } from \"vue\";\nimport { isDef, addUnit, isNumeric, truthProp, numericProp, makeStringProp, createNamespace } from \"../utils/index.mjs\";\nconst [name, bem] = createNamespace(\"badge\");\nconst badgeProps = {\n dot: Boolean,\n max: numericProp,\n tag: makeStringProp(\"div\"),\n color: String,\n offset: Array,\n content: numericProp,\n showZero: truthProp,\n position: makeStringProp(\"top-right\")\n};\nvar stdin_default = defineComponent({\n name,\n props: badgeProps,\n setup(props, {\n slots\n }) {\n const hasContent = () => {\n if (slots.content) {\n return true;\n }\n const {\n content,\n showZero\n } = props;\n return isDef(content) && content !== \"\" && (showZero || content !== 0);\n };\n const renderContent = () => {\n const {\n dot,\n max,\n content\n } = props;\n if (!dot && hasContent()) {\n if (slots.content) {\n return slots.content();\n }\n if (isDef(max) && isNumeric(content) && +content > max) {\n return `${max}+`;\n }\n return content;\n }\n };\n const style = computed(() => {\n const style2 = {\n background: props.color\n };\n if (props.offset) {\n const [x, y] = props.offset;\n if (slots.default) {\n style2.top = addUnit(y);\n if (typeof x === \"number\") {\n style2.right = addUnit(-x);\n } else {\n style2.right = x.startsWith(\"-\") ? x.replace(\"-\", \"\") : `-${x}`;\n }\n } else {\n style2.marginTop = addUnit(y);\n style2.marginLeft = addUnit(x);\n }\n }\n return style2;\n });\n const renderBadge = () => {\n if (hasContent() || props.dot) {\n return _createVNode(\"div\", {\n \"class\": bem([props.position, {\n dot: props.dot,\n fixed: !!slots.default\n }]),\n \"style\": style.value\n }, [renderContent()]);\n }\n };\n return () => {\n if (slots.default) {\n const {\n tag\n } = props;\n return _createVNode(tag, {\n \"class\": bem(\"wrapper\")\n }, {\n default: () => [slots.default(), renderBadge()]\n });\n }\n return renderBadge();\n };\n }\n});\nexport {\n stdin_default as default\n};\n","import { withInstall } from \"../utils/index.mjs\";\nimport _Badge from \"./Badge.mjs\";\nconst Badge = withInstall(_Badge);\nvar stdin_default = Badge;\nexport {\n Badge,\n stdin_default as default\n};\n","import { createVNode as _createVNode } from \"vue\";\nimport { provide, computed, defineComponent } from \"vue\";\nimport { kebabCase, makeStringProp, createNamespace } from \"../utils/index.mjs\";\nconst [name, bem] = createNamespace(\"config-provider\");\nconst CONFIG_PROVIDER_KEY = Symbol(name);\nconst configProviderProps = {\n tag: makeStringProp(\"div\"),\n themeVars: Object,\n iconPrefix: String\n};\nfunction mapThemeVarsToCSSVars(themeVars) {\n const cssVars = {};\n Object.keys(themeVars).forEach((key) => {\n cssVars[`--van-${kebabCase(key)}`] = themeVars[key];\n });\n return cssVars;\n}\nvar stdin_default = defineComponent({\n name,\n props: configProviderProps,\n setup(props, {\n slots\n }) {\n const style = computed(() => {\n if (props.themeVars) {\n return mapThemeVarsToCSSVars(props.themeVars);\n }\n });\n provide(CONFIG_PROVIDER_KEY, props);\n return () => _createVNode(props.tag, {\n \"class\": bem(),\n \"style\": style.value\n }, {\n default: () => {\n var _a;\n return [(_a = slots.default) == null ? void 0 : _a.call(slots)];\n }\n });\n }\n});\nexport {\n CONFIG_PROVIDER_KEY,\n stdin_default as default\n};\n","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\nimport { inject, computed, defineComponent } from \"vue\";\nimport { addUnit, numericProp, makeStringProp, createNamespace } from \"../utils/index.mjs\";\nimport { Badge } from \"../badge/index.mjs\";\nimport { CONFIG_PROVIDER_KEY } from \"../config-provider/ConfigProvider.mjs\";\nconst [name, bem] = createNamespace(\"icon\");\nconst isImage = (name2) => name2 == null ? void 0 : name2.includes(\"/\");\nconst iconProps = {\n dot: Boolean,\n tag: makeStringProp(\"i\"),\n name: String,\n size: numericProp,\n badge: numericProp,\n color: String,\n badgeProps: Object,\n classPrefix: String\n};\nvar stdin_default = defineComponent({\n name,\n props: iconProps,\n setup(props, {\n slots\n }) {\n const config = inject(CONFIG_PROVIDER_KEY, null);\n const classPrefix = computed(() => props.classPrefix || (config == null ? void 0 : config.iconPrefix) || bem());\n return () => {\n const {\n tag,\n dot,\n name: name2,\n size,\n badge,\n color\n } = props;\n const isImageIcon = isImage(name2);\n return _createVNode(Badge, _mergeProps({\n \"dot\": dot,\n \"tag\": tag,\n \"class\": [classPrefix.value, isImageIcon ? \"\" : `${classPrefix.value}-${name2}`],\n \"style\": {\n color,\n fontSize: addUnit(size)\n },\n \"content\": badge\n }, props.badgeProps), {\n default: () => {\n var _a;\n return [(_a = slots.default) == null ? void 0 : _a.call(slots), isImageIcon && _createVNode(\"img\", {\n \"class\": bem(\"image\"),\n \"src\": name2\n }, null)];\n }\n });\n };\n }\n});\nexport {\n stdin_default as default\n};\n","import { withInstall } from \"../utils/index.mjs\";\nimport _Icon from \"./Icon.mjs\";\nconst Icon = withInstall(_Icon);\nvar stdin_default = Icon;\nexport {\n Icon,\n stdin_default as default\n};\n","import { createVNode as _createVNode } from \"vue\";\nimport { computed, defineComponent } from \"vue\";\nimport { extend, addUnit, numericProp, getSizeStyle, makeStringProp, createNamespace } from \"../utils/index.mjs\";\nconst [name, bem] = createNamespace(\"loading\");\nconst SpinIcon = Array(12).fill(null).map((_, index) => _createVNode(\"i\", {\n \"class\": bem(\"line\", String(index + 1))\n}, null));\nconst CircularIcon = _createVNode(\"svg\", {\n \"class\": bem(\"circular\"),\n \"viewBox\": \"25 25 50 50\"\n}, [_createVNode(\"circle\", {\n \"cx\": \"50\",\n \"cy\": \"50\",\n \"r\": \"20\",\n \"fill\": \"none\"\n}, null)]);\nconst loadingProps = {\n size: numericProp,\n type: makeStringProp(\"circular\"),\n color: String,\n vertical: Boolean,\n textSize: numericProp,\n textColor: String\n};\nvar stdin_default = defineComponent({\n name,\n props: loadingProps,\n setup(props, {\n slots\n }) {\n const spinnerStyle = computed(() => extend({\n color: props.color\n }, getSizeStyle(props.size)));\n const renderText = () => {\n var _a;\n if (slots.default) {\n return _createVNode(\"span\", {\n \"class\": bem(\"text\"),\n \"style\": {\n fontSize: addUnit(props.textSize),\n color: (_a = props.textColor) != null ? _a : props.color\n }\n }, [slots.default()]);\n }\n };\n return () => {\n const {\n type,\n vertical\n } = props;\n return _createVNode(\"div\", {\n \"class\": bem([type, {\n vertical\n }]),\n \"aria-live\": \"polite\",\n \"aria-busy\": true\n }, [_createVNode(\"span\", {\n \"class\": bem(\"spinner\", type),\n \"style\": spinnerStyle.value\n }, [type === \"spinner\" ? SpinIcon : CircularIcon]), renderText()]);\n };\n }\n});\nexport {\n stdin_default as default\n};\n","import { withInstall } from \"../utils/index.mjs\";\nimport _Loading from \"./Loading.mjs\";\nconst Loading = withInstall(_Loading);\nvar stdin_default = Loading;\nexport {\n Loading,\n stdin_default as default\n};\n","import { createVNode as _createVNode } from \"vue\";\nimport { defineComponent } from \"vue\";\nimport { extend, numericProp, preventDefault, makeStringProp, createNamespace, BORDER_SURROUND } from \"../utils/index.mjs\";\nimport { useRoute, routeProps } from \"../composables/use-route.mjs\";\nimport { Icon } from \"../icon/index.mjs\";\nimport { Loading } from \"../loading/index.mjs\";\nconst [name, bem] = createNamespace(\"button\");\nconst buttonProps = extend({}, routeProps, {\n tag: makeStringProp(\"button\"),\n text: String,\n icon: String,\n type: makeStringProp(\"default\"),\n size: makeStringProp(\"normal\"),\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: makeStringProp(\"button\"),\n loadingSize: numericProp,\n loadingText: String,\n loadingType: String,\n iconPosition: makeStringProp(\"left\")\n});\nvar stdin_default = defineComponent({\n name,\n props: buttonProps,\n emits: [\"click\"],\n setup(props, {\n emit,\n slots\n }) {\n const route = useRoute();\n const renderLoadingIcon = () => {\n if (slots.loading) {\n return slots.loading();\n }\n return _createVNode(Loading, {\n \"size\": props.loadingSize,\n \"type\": props.loadingType,\n \"class\": bem(\"loading\")\n }, null);\n };\n const renderIcon = () => {\n if (props.loading) {\n return renderLoadingIcon();\n }\n if (slots.icon) {\n return _createVNode(\"div\", {\n \"class\": bem(\"icon\")\n }, [slots.icon()]);\n }\n if (props.icon) {\n return _createVNode(Icon, {\n \"name\": props.icon,\n \"class\": bem(\"icon\"),\n \"classPrefix\": props.iconPrefix\n }, null);\n }\n };\n const renderText = () => {\n let text;\n if (props.loading) {\n text = props.loadingText;\n } else {\n text = slots.default ? slots.default() : props.text;\n }\n if (text) {\n return _createVNode(\"span\", {\n \"class\": bem(\"text\")\n }, [text]);\n }\n };\n const getStyle = () => {\n const {\n color,\n plain\n } = props;\n if (color) {\n const style = {\n color: plain ? color : \"white\"\n };\n if (!plain) {\n style.background = color;\n }\n if (color.includes(\"gradient\")) {\n style.border = 0;\n } else {\n style.borderColor = color;\n }\n return style;\n }\n };\n const onClick = (event) => {\n if (props.loading) {\n preventDefault(event);\n } else if (!props.disabled) {\n emit(\"click\", event);\n route();\n }\n };\n return () => {\n const {\n tag,\n type,\n size,\n block,\n round,\n plain,\n square,\n loading,\n disabled,\n hairline,\n nativeType,\n iconPosition\n } = props;\n const classes = [bem([type, size, {\n plain,\n block,\n round,\n square,\n loading,\n disabled,\n hairline\n }]), {\n [BORDER_SURROUND]: hairline\n }];\n return _createVNode(tag, {\n \"type\": nativeType,\n \"class\": classes,\n \"style\": getStyle(),\n \"disabled\": disabled,\n \"onClick\": onClick\n }, {\n default: () => [_createVNode(\"div\", {\n \"class\": bem(\"content\")\n }, [iconPosition === \"left\" && renderIcon(), renderText(), iconPosition === \"right\" && renderIcon()])]\n });\n };\n }\n});\nexport {\n stdin_default as default\n};\n","import { withInstall } from \"../utils/index.mjs\";\nimport _Button from \"./Button.mjs\";\nconst Button = withInstall(_Button);\nvar stdin_default = Button;\nexport {\n Button,\n stdin_default as default\n};\n","import { createVNode as _createVNode } from \"vue\";\nimport { computed, defineComponent } from \"vue\";\nimport { extend, createNamespace } from \"../utils/index.mjs\";\nimport { ACTION_BAR_KEY } from \"../action-bar/ActionBar.mjs\";\nimport { useParent } from \"@vant/use\";\nimport { useExpose } from \"../composables/use-expose.mjs\";\nimport { useRoute, routeProps } from \"../composables/use-route.mjs\";\nimport { Button } from \"../button/index.mjs\";\nconst [name, bem] = createNamespace(\"action-bar-button\");\nconst actionBarButtonProps = extend({}, routeProps, {\n type: String,\n text: String,\n icon: String,\n color: String,\n loading: Boolean,\n disabled: Boolean\n});\nvar stdin_default = defineComponent({\n name,\n props: actionBarButtonProps,\n setup(props, {\n slots\n }) {\n const route = useRoute();\n const {\n parent,\n index\n } = useParent(ACTION_BAR_KEY);\n const isFirst = computed(() => {\n if (parent) {\n const prev = parent.children[index.value - 1];\n return !(prev && \"isButton\" in prev);\n }\n });\n const isLast = computed(() => {\n if (parent) {\n const next = parent.children[index.value + 1];\n return !(next && \"isButton\" in next);\n }\n });\n useExpose({\n isButton: true\n });\n return () => {\n const {\n type,\n icon,\n text,\n color,\n loading,\n disabled\n } = props;\n return _createVNode(Button, {\n \"class\": bem([type, {\n last: isLast.value,\n first: isFirst.value\n }]),\n \"size\": \"large\",\n \"type\": type,\n \"icon\": icon,\n \"color\": color,\n \"loading\": loading,\n \"disabled\": disabled,\n \"onClick\": route\n }, {\n default: () => [slots.default ? slots.default() : text]\n });\n };\n }\n});\nexport {\n stdin_default as default\n};\n","import { withInstall } from \"../utils/index.mjs\";\nimport _ActionBarButton from \"./ActionBarButton.mjs\";\nconst ActionBarButton = withInstall(_ActionBarButton);\nvar stdin_default = ActionBarButton;\nexport {\n ActionBarButton,\n stdin_default as default\n};\n","import { truthProp, unknownProp, numericProp } from \"../utils/index.mjs\";\nconst popupSharedProps = {\n show: Boolean,\n zIndex: numericProp,\n overlay: truthProp,\n duration: numericProp,\n teleport: [String, Object],\n lockScroll: truthProp,\n lazyRender: truthProp,\n beforeClose: Function,\n overlayStyle: Object,\n overlayClass: unknownProp,\n transitionAppear: Boolean,\n closeOnClickOverlay: truthProp\n};\nconst popupSharedPropKeys = Object.keys(popupSharedProps);\nexport {\n popupSharedPropKeys,\n popupSharedProps\n};\n","import { ref } from \"vue\";\nfunction getDirection(x, y) {\n if (x > y) {\n return \"horizontal\";\n }\n if (y > x) {\n return \"vertical\";\n }\n return \"\";\n}\nfunction useTouch() {\n const startX = ref(0);\n const startY = ref(0);\n const deltaX = ref(0);\n const deltaY = ref(0);\n const offsetX = ref(0);\n const offsetY = ref(0);\n const direction = ref(\"\");\n const isVertical = () => direction.value === \"vertical\";\n const isHorizontal = () => direction.value === \"horizontal\";\n const reset = () => {\n deltaX.value = 0;\n deltaY.value = 0;\n offsetX.value = 0;\n offsetY.value = 0;\n direction.value = \"\";\n };\n const start = (event) => {\n reset();\n startX.value = event.touches[0].clientX;\n startY.value = event.touches[0].clientY;\n };\n const move = (event) => {\n const touch = event.touches[0];\n deltaX.value = (touch.clientX < 0 ? 0 : touch.clientX) - startX.value;\n deltaY.value = touch.clientY - startY.value;\n offsetX.value = Math.abs(deltaX.value);\n offsetY.value = Math.abs(deltaY.value);\n const LOCK_DIRECTION_DISTANCE = 10;\n if (!direction.value || offsetX.value < LOCK_DIRECTION_DISTANCE && offsetY.value < LOCK_DIRECTION_DISTANCE) {\n direction.value = getDirection(offsetX.value, offsetY.value);\n }\n };\n return {\n move,\n start,\n reset,\n startX,\n startY,\n deltaX,\n deltaY,\n offsetX,\n offsetY,\n direction,\n isVertical,\n isHorizontal\n };\n}\nexport {\n useTouch\n};\n","import { watch, onBeforeUnmount, onDeactivated } from \"vue\";\nimport { getScrollParent, onMountedOrActivated } from \"@vant/use\";\nimport { useTouch } from \"./use-touch.mjs\";\nimport { preventDefault } from \"../utils/index.mjs\";\nlet totalLockCount = 0;\nconst BODY_LOCK_CLASS = \"van-overflow-hidden\";\nfunction useLockScroll(rootRef, shouldLock) {\n const touch = useTouch();\n const onTouchMove = (event) => {\n touch.move(event);\n const direction = touch.deltaY.value > 0 ? \"10\" : \"01\";\n const el = getScrollParent(event.target, rootRef.value);\n const { scrollHeight, offsetHeight, scrollTop } = el;\n let status = \"11\";\n if (scrollTop === 0) {\n status = offsetHeight >= scrollHeight ? \"00\" : \"01\";\n } else if (scrollTop + offsetHeight >= scrollHeight) {\n status = \"10\";\n }\n if (status !== \"11\" && touch.isVertical() && !(parseInt(status, 2) & parseInt(direction, 2))) {\n preventDefault(event, true);\n }\n };\n const lock = () => {\n document.addEventListener(\"touchstart\", touch.start);\n document.addEventListener(\"touchmove\", onTouchMove, { passive: false });\n if (!totalLockCount) {\n document.body.classList.add(BODY_LOCK_CLASS);\n }\n totalLockCount++;\n };\n const unlock = () => {\n if (totalLockCount) {\n document.removeEventListener(\"touchstart\", touch.start);\n document.removeEventListener(\"touchmove\", onTouchMove);\n totalLockCount--;\n if (!totalLockCount) {\n document.body.classList.remove(BODY_LOCK_CLASS);\n }\n }\n };\n const init = () => shouldLock() && lock();\n const destroy = () => shouldLock() && unlock();\n onMountedOrActivated(init);\n onDeactivated(destroy);\n onBeforeUnmount(destroy);\n watch(shouldLock, (value) => {\n value ? lock() : unlock();\n });\n}\nexport {\n useLockScroll\n};\n","import { ref, watch } from \"vue\";\nfunction useLazyRender(show) {\n const inited = ref(false);\n watch(show, (value) => {\n if (value) {\n inited.value = value;\n }\n }, { immediate: true });\n return (render) => () => inited.value ? render() : null;\n}\nexport {\n useLazyRender\n};\n","import { inject, watch } from \"vue\";\nconst POPUP_TOGGLE_KEY = Symbol();\nfunction onPopupReopen(callback) {\n const popupToggleStatus = inject(POPUP_TOGGLE_KEY, null);\n if (popupToggleStatus) {\n watch(popupToggleStatus, (show) => {\n if (show) {\n callback();\n }\n });\n }\n}\nexport {\n POPUP_TOGGLE_KEY,\n onPopupReopen\n};\n","import { withDirectives as _withDirectives, createVNode as _createVNode, vShow as _vShow } from \"vue\";\nimport { Transition, defineComponent } from \"vue\";\nimport { noop, isDef, extend, truthProp, numericProp, unknownProp, preventDefault, createNamespace, getZIndexStyle } from \"../utils/index.mjs\";\nimport { useLazyRender } from \"../composables/use-lazy-render.mjs\";\nconst [name, bem] = createNamespace(\"overlay\");\nconst overlayProps = {\n show: Boolean,\n zIndex: numericProp,\n duration: numericProp,\n className: unknownProp,\n lockScroll: truthProp,\n lazyRender: truthProp,\n customStyle: Object\n};\nvar stdin_default = defineComponent({\n name,\n props: overlayProps,\n setup(props, {\n slots\n }) {\n const lazyRender = useLazyRender(() => props.show || !props.lazyRender);\n const preventTouchMove = (event) => {\n preventDefault(event, true);\n };\n const renderOverlay = lazyRender(() => {\n var _a;\n const style = extend(getZIndexStyle(props.zIndex), props.customStyle);\n if (isDef(props.duration)) {\n style.animationDuration = `${props.duration}s`;\n }\n return _withDirectives(_createVNode(\"div\", {\n \"style\": style,\n \"class\": [bem(), props.className],\n \"onTouchmove\": props.lockScroll ? preventTouchMove : noop\n }, [(_a = slots.default) == null ? void 0 : _a.call(slots)]), [[_vShow, props.show]]);\n });\n return () => _createVNode(Transition, {\n \"name\": \"van-fade\",\n \"appear\": true\n }, {\n default: renderOverlay\n });\n }\n});\nexport {\n stdin_default as default\n};\n","import { withInstall } from \"../utils/index.mjs\";\nimport _Overlay from \"./Overlay.mjs\";\nconst Overlay = withInstall(_Overlay);\nvar stdin_default = Overlay;\nexport {\n Overlay,\n stdin_default as default\n};\n","import { Fragment as _Fragment, withDirectives as _withDirectives, mergeProps as _mergeProps, vShow as _vShow, createVNode as _createVNode } from \"vue\";\nimport { ref, watch, provide, Teleport, nextTick, computed, onMounted, Transition, onActivated, onDeactivated, defineComponent } from \"vue\";\nimport { popupSharedProps } from \"./shared.mjs\";\nimport { isDef, extend, makeStringProp, callInterceptor, createNamespace, HAPTICS_FEEDBACK } from \"../utils/index.mjs\";\nimport { useEventListener } from \"@vant/use\";\nimport { useExpose } from \"../composables/use-expose.mjs\";\nimport { useLockScroll } from \"../composables/use-lock-scroll.mjs\";\nimport { useLazyRender } from \"../composables/use-lazy-render.mjs\";\nimport { POPUP_TOGGLE_KEY } from \"../composables/on-popup-reopen.mjs\";\nimport { Icon } from \"../icon/index.mjs\";\nimport { Overlay } from \"../overlay/index.mjs\";\nconst popupProps = extend({}, popupSharedProps, {\n round: Boolean,\n position: makeStringProp(\"center\"),\n closeIcon: makeStringProp(\"cross\"),\n closeable: Boolean,\n transition: String,\n iconPrefix: String,\n closeOnPopstate: Boolean,\n closeIconPosition: makeStringProp(\"top-right\"),\n safeAreaInsetTop: Boolean,\n safeAreaInsetBottom: Boolean\n});\nconst [name, bem] = createNamespace(\"popup\");\nlet globalZIndex = 2e3;\nvar stdin_default = defineComponent({\n name,\n inheritAttrs: false,\n props: popupProps,\n emits: [\"open\", \"close\", \"opened\", \"closed\", \"keydown\", \"update:show\", \"click-overlay\", \"click-close-icon\"],\n setup(props, {\n emit,\n attrs,\n slots\n }) {\n let opened;\n let shouldReopen;\n const zIndex = ref();\n const popupRef = ref();\n const lazyRender = useLazyRender(() => props.show || !props.lazyRender);\n const style = computed(() => {\n const style2 = {\n zIndex: zIndex.value\n };\n if (isDef(props.duration)) {\n const key = props.position === \"center\" ? \"animationDuration\" : \"transitionDuration\";\n style2[key] = `${props.duration}s`;\n }\n return style2;\n });\n const open = () => {\n if (!opened) {\n if (props.zIndex !== void 0) {\n globalZIndex = +props.zIndex;\n }\n opened = true;\n zIndex.value = ++globalZIndex;\n emit(\"open\");\n }\n };\n const close = () => {\n if (opened) {\n callInterceptor(props.beforeClose, {\n done() {\n opened = false;\n emit(\"close\");\n emit(\"update:show\", false);\n }\n });\n }\n };\n const onClickOverlay = (event) => {\n emit(\"click-overlay\", event);\n if (props.closeOnClickOverlay) {\n close();\n }\n };\n const renderOverlay = () => {\n if (props.overlay) {\n return _createVNode(Overlay, {\n \"show\": props.show,\n \"class\": props.overlayClass,\n \"zIndex\": zIndex.value,\n \"duration\": props.duration,\n \"customStyle\": props.overlayStyle,\n \"onClick\": onClickOverlay\n }, {\n default: slots[\"overlay-content\"]\n });\n }\n };\n const onClickCloseIcon = (event) => {\n emit(\"click-close-icon\", event);\n close();\n };\n const renderCloseIcon = () => {\n if (props.closeable) {\n return _createVNode(Icon, {\n \"role\": \"button\",\n \"tabindex\": 0,\n \"name\": props.closeIcon,\n \"class\": [bem(\"close-icon\", props.closeIconPosition), HAPTICS_FEEDBACK],\n \"classPrefix\": props.iconPrefix,\n \"onClick\": onClickCloseIcon\n }, null);\n }\n };\n const onOpened = () => emit(\"opened\");\n const onClosed = () => emit(\"closed\");\n const onKeydown = (event) => emit(\"keydown\", event);\n const renderPopup = lazyRender(() => {\n var _a;\n const {\n round,\n position,\n safeAreaInsetTop,\n safeAreaInsetBottom\n } = props;\n return _withDirectives(_createVNode(\"div\", _mergeProps({\n \"ref\": popupRef,\n \"style\": style.value,\n \"class\": [bem({\n round,\n [position]: position\n }), {\n \"van-safe-area-top\": safeAreaInsetTop,\n \"van-safe-area-bottom\": safeAreaInsetBottom\n }],\n \"onKeydown\": onKeydown\n }, attrs), [(_a = slots.default) == null ? void 0 : _a.call(slots), renderCloseIcon()]), [[_vShow, props.show]]);\n });\n const renderTransition = () => {\n const {\n position,\n transition,\n transitionAppear\n } = props;\n const name2 = position === \"center\" ? \"van-fade\" : `van-popup-slide-${position}`;\n return _createVNode(Transition, {\n \"name\": transition || name2,\n \"appear\": transitionAppear,\n \"onAfterEnter\": onOpened,\n \"onAfterLeave\": onClosed\n }, {\n default: renderPopup\n });\n };\n watch(() => props.show, (show) => {\n if (show && !opened) {\n open();\n if (attrs.tabindex === 0) {\n nextTick(() => {\n var _a;\n (_a = popupRef.value) == null ? void 0 : _a.focus();\n });\n }\n }\n if (!show && opened) {\n opened = false;\n emit(\"close\");\n }\n });\n useExpose({\n popupRef\n });\n useLockScroll(popupRef, () => props.show && props.lockScroll);\n useEventListener(\"popstate\", () => {\n if (props.closeOnPopstate) {\n close();\n shouldReopen = false;\n }\n });\n onMounted(() => {\n if (props.show) {\n open();\n }\n });\n onActivated(() => {\n if (shouldReopen) {\n emit(\"update:show\", true);\n shouldReopen = false;\n }\n });\n onDeactivated(() => {\n if (props.show && props.teleport) {\n close();\n shouldReopen = true;\n }\n });\n provide(POPUP_TOGGLE_KEY, () => props.show);\n return () => {\n if (props.teleport) {\n return _createVNode(Teleport, {\n \"to\": props.teleport\n }, {\n default: () => [renderOverlay(), renderTransition()]\n });\n }\n return _createVNode(_Fragment, null, [renderOverlay(), renderTransition()]);\n };\n }\n});\nexport {\n stdin_default as default\n};\n","import { withInstall } from \"../utils/index.mjs\";\nimport _Popup from \"./Popup.mjs\";\nconst Popup = withInstall(_Popup);\nvar stdin_default = Popup;\nexport {\n Popup,\n stdin_default as default\n};\n","import { createApp, reactive } from \"vue\";\nimport { extend } from \"../utils/index.mjs\";\nimport { useExpose } from \"../composables/use-expose.mjs\";\nfunction usePopupState() {\n const state = reactive({\n show: false\n });\n const toggle = (show) => {\n state.show = show;\n };\n const open = (props) => {\n extend(state, props, { transitionAppear: true });\n toggle(true);\n };\n const close = () => toggle(false);\n useExpose({ open, close, toggle });\n return {\n open,\n close,\n state,\n toggle\n };\n}\nfunction mountComponent(RootComponent) {\n const app = createApp(RootComponent);\n const root = document.createElement(\"div\");\n document.body.appendChild(root);\n return {\n instance: app.mount(root),\n unmount() {\n app.unmount();\n document.body.removeChild(root);\n }\n };\n}\nexport {\n mountComponent,\n usePopupState\n};\n","let lockCount = 0;\nfunction lockClick(lock) {\n if (lock) {\n if (!lockCount) {\n document.body.classList.add(\"van-toast--unclickable\");\n }\n lockCount++;\n } else if (lockCount) {\n lockCount--;\n if (!lockCount) {\n document.body.classList.remove(\"van-toast--unclickable\");\n }\n }\n}\nexport {\n lockClick\n};\n","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\nimport { watch, onMounted, onUnmounted, defineComponent } from \"vue\";\nimport { pick, isDef, unknownProp, numericProp, makeStringProp, makeNumberProp, createNamespace } from \"../utils/index.mjs\";\nimport { lockClick } from \"./lock-click.mjs\";\nimport { Icon } from \"../icon/index.mjs\";\nimport { Popup } from \"../popup/index.mjs\";\nimport { Loading } from \"../loading/index.mjs\";\nconst [name, bem] = createNamespace(\"toast\");\nconst popupInheritProps = [\"show\", \"overlay\", \"teleport\", \"transition\", \"overlayClass\", \"overlayStyle\", \"closeOnClickOverlay\"];\nconst toastProps = {\n icon: String,\n show: Boolean,\n type: makeStringProp(\"text\"),\n overlay: Boolean,\n message: numericProp,\n iconSize: numericProp,\n duration: makeNumberProp(2e3),\n position: makeStringProp(\"middle\"),\n teleport: [String, Object],\n className: unknownProp,\n iconPrefix: String,\n transition: makeStringProp(\"van-fade\"),\n loadingType: String,\n forbidClick: Boolean,\n overlayClass: unknownProp,\n overlayStyle: Object,\n closeOnClick: Boolean,\n closeOnClickOverlay: Boolean\n};\nvar stdin_default = defineComponent({\n name,\n props: toastProps,\n emits: [\"update:show\"],\n setup(props, {\n emit\n }) {\n let timer;\n let clickable = false;\n const toggleClickable = () => {\n const newValue = props.show && props.forbidClick;\n if (clickable !== newValue) {\n clickable = newValue;\n lockClick(clickable);\n }\n };\n const updateShow = (show) => emit(\"update:show\", show);\n const onClick = () => {\n if (props.closeOnClick) {\n updateShow(false);\n }\n };\n const clearTimer = () => clearTimeout(timer);\n const renderIcon = () => {\n const {\n icon,\n type,\n iconSize,\n iconPrefix,\n loadingType\n } = props;\n const hasIcon = icon || type === \"success\" || type === \"fail\";\n if (hasIcon) {\n return _createVNode(Icon, {\n \"name\": icon || type,\n \"size\": iconSize,\n \"class\": bem(\"icon\"),\n \"classPrefix\": iconPrefix\n }, null);\n }\n if (type === \"loading\") {\n return _createVNode(Loading, {\n \"class\": bem(\"loading\"),\n \"size\": iconSize,\n \"type\": loadingType\n }, null);\n }\n };\n const renderMessage = () => {\n const {\n type,\n message\n } = props;\n if (isDef(message) && message !== \"\") {\n return type === \"html\" ? _createVNode(\"div\", {\n \"key\": 0,\n \"class\": bem(\"text\"),\n \"innerHTML\": String(message)\n }, null) : _createVNode(\"div\", {\n \"class\": bem(\"text\")\n }, [message]);\n }\n };\n watch(() => [props.show, props.forbidClick], toggleClickable);\n watch(() => [props.show, props.type, props.message, props.duration], () => {\n clearTimer();\n if (props.show && props.duration > 0) {\n timer = setTimeout(() => {\n updateShow(false);\n }, props.duration);\n }\n });\n onMounted(toggleClickable);\n onUnmounted(toggleClickable);\n return () => _createVNode(Popup, _mergeProps({\n \"class\": [bem([props.position, {\n [props.type]: !props.icon\n }]), props.className],\n \"lockScroll\": false,\n \"onClick\": onClick,\n \"onClosed\": clearTimer,\n \"onUpdate:show\": updateShow\n }, pick(props, popupInheritProps)), {\n default: () => [renderIcon(), renderMessage()]\n });\n }\n});\nexport {\n stdin_default as default\n};\n","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\nimport { ref, watch, getCurrentInstance } from \"vue\";\nimport { extend, isObject, inBrowser, withInstall } from \"../utils/index.mjs\";\nimport { mountComponent, usePopupState } from \"../utils/mount-component.mjs\";\nimport VanToast from \"./Toast.mjs\";\nconst defaultOptions = {\n icon: \"\",\n type: \"text\",\n message: \"\",\n className: \"\",\n overlay: false,\n onClose: void 0,\n onOpened: void 0,\n duration: 2e3,\n teleport: \"body\",\n iconSize: void 0,\n iconPrefix: void 0,\n position: \"middle\",\n transition: \"van-fade\",\n forbidClick: false,\n loadingType: void 0,\n overlayClass: \"\",\n overlayStyle: void 0,\n closeOnClick: false,\n closeOnClickOverlay: false\n};\nlet queue = [];\nlet allowMultiple = false;\nlet currentOptions = extend({}, defaultOptions);\nconst defaultOptionsMap = /* @__PURE__ */ new Map();\nfunction parseOptions(message) {\n if (isObject(message)) {\n return message;\n }\n return {\n message\n };\n}\nfunction createInstance() {\n const {\n instance,\n unmount\n } = mountComponent({\n setup() {\n const message = ref(\"\");\n const {\n open,\n state,\n close,\n toggle\n } = usePopupState();\n const onClosed = () => {\n if (allowMultiple) {\n queue = queue.filter((item) => item !== instance);\n unmount();\n }\n };\n const render = () => {\n const attrs = {\n onClosed,\n \"onUpdate:show\": toggle\n };\n return _createVNode(VanToast, _mergeProps(state, attrs), null);\n };\n watch(message, (val) => {\n state.message = val;\n });\n getCurrentInstance().render = render;\n return {\n open,\n clear: close,\n message\n };\n }\n });\n return instance;\n}\nfunction getInstance() {\n if (!queue.length || allowMultiple) {\n const instance = createInstance();\n queue.push(instance);\n }\n return queue[queue.length - 1];\n}\nfunction Toast(options = {}) {\n if (!inBrowser) {\n return {};\n }\n const toast = getInstance();\n const parsedOptions = parseOptions(options);\n toast.open(extend({}, currentOptions, defaultOptionsMap.get(parsedOptions.type || currentOptions.type), parsedOptions));\n return toast;\n}\nconst createMethod = (type) => (options) => Toast(extend({\n type\n}, parseOptions(options)));\nToast.loading = createMethod(\"loading\");\nToast.success = createMethod(\"success\");\nToast.fail = createMethod(\"fail\");\nToast.clear = (all) => {\n var _a;\n if (queue.length) {\n if (all) {\n queue.forEach((toast) => {\n toast.clear();\n });\n queue = [];\n } else if (!allowMultiple) {\n queue[0].clear();\n } else {\n (_a = queue.shift()) == null ? void 0 : _a.clear();\n }\n }\n};\nfunction setDefaultOptions(type, options) {\n if (typeof type === \"string\") {\n defaultOptionsMap.set(type, options);\n } else {\n extend(currentOptions, type);\n }\n}\nToast.setDefaultOptions = setDefaultOptions;\nToast.resetDefaultOptions = (type) => {\n if (typeof type === \"string\") {\n defaultOptionsMap.delete(type);\n } else {\n currentOptions = extend({}, defaultOptions);\n defaultOptionsMap.clear();\n }\n};\nToast.allowMultiple = (value = true) => {\n allowMultiple = value;\n};\nToast.install = (app) => {\n app.use(withInstall(VanToast));\n app.config.globalProperties.$toast = Toast;\n};\nexport {\n Toast\n};\n","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\nimport { ref, reactive, withKeys, defineComponent } from \"vue\";\nimport { noop, pick, extend, addUnit, truthProp, isFunction, BORDER_TOP, BORDER_LEFT, unknownProp, numericProp, makeStringProp, callInterceptor, createNamespace } from \"../utils/index.mjs\";\nimport { popupSharedProps, popupSharedPropKeys } from \"../popup/shared.mjs\";\nimport { Popup } from \"../popup/index.mjs\";\nimport { Button } from \"../button/index.mjs\";\nimport { ActionBar } from \"../action-bar/index.mjs\";\nimport { ActionBarButton } from \"../action-bar-button/index.mjs\";\nconst [name, bem, t] = createNamespace(\"dialog\");\nconst dialogProps = extend({}, popupSharedProps, {\n title: String,\n theme: String,\n width: numericProp,\n message: [String, Function],\n callback: Function,\n allowHtml: Boolean,\n className: unknownProp,\n transition: makeStringProp(\"van-dialog-bounce\"),\n messageAlign: String,\n closeOnPopstate: truthProp,\n showCancelButton: Boolean,\n cancelButtonText: String,\n cancelButtonColor: String,\n cancelButtonDisabled: Boolean,\n confirmButtonText: String,\n confirmButtonColor: String,\n confirmButtonDisabled: Boolean,\n showConfirmButton: truthProp,\n closeOnClickOverlay: Boolean\n});\nconst popupInheritKeys = [...popupSharedPropKeys, \"transition\", \"closeOnPopstate\"];\nvar stdin_default = defineComponent({\n name,\n props: dialogProps,\n emits: [\"confirm\", \"cancel\", \"keydown\", \"update:show\"],\n setup(props, {\n emit,\n slots\n }) {\n const root = ref();\n const loading = reactive({\n confirm: false,\n cancel: false\n });\n const updateShow = (value) => emit(\"update:show\", value);\n const close = (action) => {\n var _a;\n updateShow(false);\n (_a = props.callback) == null ? void 0 : _a.call(props, action);\n };\n const getActionHandler = (action) => () => {\n if (!props.show) {\n return;\n }\n emit(action);\n if (props.beforeClose) {\n loading[action] = true;\n callInterceptor(props.beforeClose, {\n args: [action],\n done() {\n close(action);\n loading[action] = false;\n },\n canceled() {\n loading[action] = false;\n }\n });\n } else {\n close(action);\n }\n };\n const onCancel = getActionHandler(\"cancel\");\n const onConfirm = getActionHandler(\"confirm\");\n const onKeydown = withKeys((event) => {\n var _a, _b;\n if (event.target !== ((_b = (_a = root.value) == null ? void 0 : _a.popupRef) == null ? void 0 : _b.value)) {\n return;\n }\n const onEventType = {\n Enter: props.showConfirmButton ? onConfirm : noop,\n Escape: props.showCancelButton ? onCancel : noop\n };\n onEventType[event.key]();\n emit(\"keydown\", event);\n }, [\"enter\", \"esc\"]);\n const renderTitle = () => {\n const title = slots.title ? slots.title() : props.title;\n if (title) {\n return _createVNode(\"div\", {\n \"class\": bem(\"header\", {\n isolated: !props.message && !slots.default\n })\n }, [title]);\n }\n };\n const renderMessage = (hasTitle) => {\n const {\n message,\n allowHtml,\n messageAlign\n } = props;\n const classNames = bem(\"message\", {\n \"has-title\": hasTitle,\n [messageAlign]: messageAlign\n });\n const content = isFunction(message) ? message() : message;\n if (allowHtml && typeof content === \"string\") {\n return _createVNode(\"div\", {\n \"class\": classNames,\n \"innerHTML\": content\n }, null);\n }\n return _createVNode(\"div\", {\n \"class\": classNames\n }, [content]);\n };\n const renderContent = () => {\n if (slots.default) {\n return _createVNode(\"div\", {\n \"class\": bem(\"content\")\n }, [slots.default()]);\n }\n const {\n title,\n message,\n allowHtml\n } = props;\n if (message) {\n const hasTitle = !!(title || slots.title);\n return _createVNode(\"div\", {\n \"key\": allowHtml ? 1 : 0,\n \"class\": bem(\"content\", {\n isolated: !hasTitle\n })\n }, [renderMessage(hasTitle)]);\n }\n };\n const renderButtons = () => _createVNode(\"div\", {\n \"class\": [BORDER_TOP, bem(\"footer\")]\n }, [props.showCancelButton && _createVNode(Button, {\n \"size\": \"large\",\n \"text\": props.cancelButtonText || t(\"cancel\"),\n \"class\": bem(\"cancel\"),\n \"style\": {\n color: props.cancelButtonColor\n },\n \"loading\": loading.cancel,\n \"disabled\": props.cancelButtonDisabled,\n \"onClick\": onCancel\n }, null), props.showConfirmButton && _createVNode(Button, {\n \"size\": \"large\",\n \"text\": props.confirmButtonText || t(\"confirm\"),\n \"class\": [bem(\"confirm\"), {\n [BORDER_LEFT]: props.showCancelButton\n }],\n \"style\": {\n color: props.confirmButtonColor\n },\n \"loading\": loading.confirm,\n \"disabled\": props.confirmButtonDisabled,\n \"onClick\": onConfirm\n }, null)]);\n const renderRoundButtons = () => _createVNode(ActionBar, {\n \"class\": bem(\"footer\")\n }, {\n default: () => [props.showCancelButton && _createVNode(ActionBarButton, {\n \"type\": \"warning\",\n \"text\": props.cancelButtonText || t(\"cancel\"),\n \"class\": bem(\"cancel\"),\n \"color\": props.cancelButtonColor,\n \"loading\": loading.cancel,\n \"disabled\": props.cancelButtonDisabled,\n \"onClick\": onCancel\n }, null), props.showConfirmButton && _createVNode(ActionBarButton, {\n \"type\": \"danger\",\n \"text\": props.confirmButtonText || t(\"confirm\"),\n \"class\": bem(\"confirm\"),\n \"color\": props.confirmButtonColor,\n \"loading\": loading.confirm,\n \"disabled\": props.confirmButtonDisabled,\n \"onClick\": onConfirm\n }, null)]\n });\n const renderFooter = () => {\n if (slots.footer) {\n return slots.footer();\n }\n return props.theme === \"round-button\" ? renderRoundButtons() : renderButtons();\n };\n return () => {\n const {\n width,\n title,\n theme,\n message,\n className\n } = props;\n return _createVNode(Popup, _mergeProps({\n \"ref\": root,\n \"role\": \"dialog\",\n \"class\": [bem([theme]), className],\n \"style\": {\n width: addUnit(width)\n },\n \"tabindex\": 0,\n \"aria-labelledby\": title || message,\n \"onKeydown\": onKeydown,\n \"onUpdate:show\": updateShow\n }, pick(props, popupInheritKeys)), {\n default: () => [renderTitle(), renderContent(), renderFooter()]\n });\n };\n }\n});\nexport {\n stdin_default as default\n};\n","import { createVNode as _createVNode, mergeProps as _mergeProps } from \"vue\";\nimport { extend, inBrowser, withInstall } from \"../utils/index.mjs\";\nimport { mountComponent, usePopupState } from \"../utils/mount-component.mjs\";\nimport VanDialog from \"./Dialog.mjs\";\nlet instance;\nfunction initInstance() {\n const Wrapper = {\n setup() {\n const {\n state,\n toggle\n } = usePopupState();\n return () => _createVNode(VanDialog, _mergeProps(state, {\n \"onUpdate:show\": toggle\n }), null);\n }\n };\n ({\n instance\n } = mountComponent(Wrapper));\n}\nfunction Dialog(options) {\n if (!inBrowser) {\n return Promise.resolve();\n }\n return new Promise((resolve, reject) => {\n if (!instance) {\n initInstance();\n }\n instance.open(extend({}, Dialog.currentOptions, options, {\n callback: (action) => {\n (action === \"confirm\" ? resolve : reject)(action);\n }\n }));\n });\n}\nDialog.defaultOptions = {\n title: \"\",\n width: \"\",\n theme: null,\n message: \"\",\n overlay: true,\n callback: null,\n teleport: \"body\",\n className: \"\",\n allowHtml: false,\n lockScroll: true,\n transition: void 0,\n beforeClose: null,\n overlayClass: \"\",\n overlayStyle: void 0,\n messageAlign: \"\",\n cancelButtonText: \"\",\n cancelButtonColor: null,\n cancelButtonDisabled: false,\n confirmButtonText: \"\",\n confirmButtonColor: null,\n confirmButtonDisabled: false,\n showConfirmButton: true,\n showCancelButton: false,\n closeOnPopstate: true,\n closeOnClickOverlay: false\n};\nDialog.currentOptions = extend({}, Dialog.defaultOptions);\nDialog.alert = Dialog;\nDialog.confirm = (options) => Dialog(extend({\n showCancelButton: true\n}, options));\nDialog.close = () => {\n if (instance) {\n instance.toggle(false);\n }\n};\nDialog.setDefaultOptions = (options) => {\n extend(Dialog.currentOptions, options);\n};\nDialog.resetDefaultOptions = () => {\n Dialog.currentOptions = extend({}, Dialog.defaultOptions);\n};\nDialog.Component = withInstall(VanDialog);\nDialog.install = (app) => {\n app.use(Dialog.Component);\n app.config.globalProperties.$dialog = Dialog;\n};\nexport {\n Dialog\n};\n","import { createVNode as _createVNode } from \"vue\";\nimport { ref, defineComponent } from \"vue\";\nimport { truthProp, numericProp, getZIndexStyle, createNamespace, callInterceptor, makeNumericProp, BORDER_TOP_BOTTOM } from \"../utils/index.mjs\";\nimport { useChildren } from \"@vant/use\";\nimport { usePlaceholder } from \"../composables/use-placeholder.mjs\";\nconst [name, bem] = createNamespace(\"tabbar\");\nconst tabbarProps = {\n route: Boolean,\n fixed: truthProp,\n border: truthProp,\n zIndex: numericProp,\n placeholder: Boolean,\n activeColor: String,\n beforeChange: Function,\n inactiveColor: String,\n modelValue: makeNumericProp(0),\n safeAreaInsetBottom: {\n type: Boolean,\n default: null\n }\n};\nconst TABBAR_KEY = Symbol(name);\nvar stdin_default = defineComponent({\n name,\n props: tabbarProps,\n emits: [\"change\", \"update:modelValue\"],\n setup(props, {\n emit,\n slots\n }) {\n const root = ref();\n const {\n linkChildren\n } = useChildren(TABBAR_KEY);\n const renderPlaceholder = usePlaceholder(root, bem);\n const enableSafeArea = () => {\n var _a;\n return (_a = props.safeAreaInsetBottom) != null ? _a : props.fixed;\n };\n const renderTabbar = () => {\n var _a;\n const {\n fixed,\n zIndex,\n border\n } = props;\n return _createVNode(\"div\", {\n \"ref\": root,\n \"role\": \"tablist\",\n \"style\": getZIndexStyle(zIndex),\n \"class\": [bem({\n fixed\n }), {\n [BORDER_TOP_BOTTOM]: border,\n \"van-safe-area-bottom\": enableSafeArea()\n }]\n }, [(_a = slots.default) == null ? void 0 : _a.call(slots)]);\n };\n const setActive = (active, afterChange) => {\n callInterceptor(props.beforeChange, {\n args: [active],\n done() {\n emit(\"update:modelValue\", active);\n emit(\"change\", active);\n afterChange();\n }\n });\n };\n linkChildren({\n props,\n setActive\n });\n return () => {\n if (props.fixed && props.placeholder) {\n return renderPlaceholder(renderTabbar);\n }\n return renderTabbar();\n };\n }\n});\nexport {\n TABBAR_KEY,\n stdin_default as default\n};\n","import { withInstall } from \"../utils/index.mjs\";\nimport _Tabbar from \"./Tabbar.mjs\";\nconst Tabbar = withInstall(_Tabbar);\nvar stdin_default = Tabbar;\nexport {\n Tabbar,\n stdin_default as default\n};\n","import { mergeProps as _mergeProps, createVNode as _createVNode } from \"vue\";\nimport { computed, defineComponent, getCurrentInstance } from \"vue\";\nimport { createNamespace, extend, isObject, numericProp } from \"../utils/index.mjs\";\nimport { TABBAR_KEY } from \"../tabbar/Tabbar.mjs\";\nimport { useParent } from \"@vant/use\";\nimport { routeProps, useRoute } from \"../composables/use-route.mjs\";\nimport { Icon } from \"../icon/index.mjs\";\nimport { Badge } from \"../badge/index.mjs\";\nconst [name, bem] = createNamespace(\"tabbar-item\");\nconst tabbarItemProps = extend({}, routeProps, {\n dot: Boolean,\n icon: String,\n name: numericProp,\n badge: numericProp,\n badgeProps: Object,\n iconPrefix: String\n});\nvar stdin_default = defineComponent({\n name,\n props: tabbarItemProps,\n emits: [\"click\"],\n setup(props, {\n emit,\n slots\n }) {\n const route = useRoute();\n const vm = getCurrentInstance().proxy;\n const {\n parent,\n index\n } = useParent(TABBAR_KEY);\n if (!parent) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(\"[Vant] must be a child component of .\");\n }\n return;\n }\n const active = computed(() => {\n var _a;\n const {\n route: route2,\n modelValue\n } = parent.props;\n if (route2 && \"$route\" in vm) {\n const {\n $route\n } = vm;\n const {\n to\n } = props;\n const config = isObject(to) ? to : {\n path: to\n };\n return !!$route.matched.find((val) => {\n const pathMatched = \"path\" in config && config.path === val.path;\n const nameMatched = \"name\" in config && config.name === val.name;\n return pathMatched || nameMatched;\n });\n }\n return ((_a = props.name) != null ? _a : index.value) === modelValue;\n });\n const onClick = (event) => {\n var _a;\n if (!active.value) {\n parent.setActive((_a = props.name) != null ? _a : index.value, route);\n }\n emit(\"click\", event);\n };\n const renderIcon = () => {\n if (slots.icon) {\n return slots.icon({\n active: active.value\n });\n }\n if (props.icon) {\n return _createVNode(Icon, {\n \"name\": props.icon,\n \"classPrefix\": props.iconPrefix\n }, null);\n }\n };\n return () => {\n var _a;\n const {\n dot,\n badge\n } = props;\n const {\n activeColor,\n inactiveColor\n } = parent.props;\n const color = active.value ? activeColor : inactiveColor;\n return _createVNode(\"div\", {\n \"role\": \"tab\",\n \"class\": bem({\n active: active.value\n }),\n \"style\": {\n color\n },\n \"tabindex\": 0,\n \"aria-selected\": active.value,\n \"onClick\": onClick\n }, [_createVNode(Badge, _mergeProps({\n \"dot\": dot,\n \"class\": bem(\"icon\"),\n \"content\": badge\n }, props.badgeProps), {\n default: renderIcon\n }), _createVNode(\"div\", {\n \"class\": bem(\"text\")\n }, [(_a = slots.default) == null ? void 0 : _a.call(slots, {\n active: active.value\n })])]);\n };\n }\n});\nexport {\n stdin_default as default\n};\n","import { withInstall } from \"../utils/index.mjs\";\nimport _TabbarItem from \"./TabbarItem.mjs\";\nconst TabbarItem = withInstall(_TabbarItem);\nvar stdin_default = TabbarItem;\nexport {\n TabbarItem,\n stdin_default as default\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: require('./env/FormData')\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","module.exports = require('./lib/axios');","import { LoadingPage } from \"./../config/index\";\r\nimport router from \"@/router\";\r\nimport authStore from \"@/store/AuthStore\";\r\nimport { Dialog } from \"vant\";\r\nimport axios, { AxiosError, AxiosRequestConfig, AxiosResponse } from \"axios\";\r\n\r\nexport interface ApiResult {\r\n code: number;\r\n message: string;\r\n data: T;\r\n}\r\n\r\naxios.defaults.baseURL = import.meta.env.VITE_BASE_URL as string;\r\naxios.defaults.timeout = 30e3;\r\naxios.defaults.headers.common = {\r\n \"Content-Type\": \"application/json\",\r\n \"Cache-Control\": \"no-cache\",\r\n Expires: \"0\",\r\n Pragma: \"no-cache\",\r\n};\r\n\r\n// default timeout is 0 (no timeout)\r\nconst service = axios.create();\r\n\r\n// request interceptor\r\nservice.interceptors.request.use(\r\n async (config: AxiosRequestConfig) => {\r\n const authToken = authStore.getToken();\r\n if (authToken) {\r\n config.headers![\"Authorization\"] = `Bearer ${authToken}`;\r\n }\r\n return config;\r\n },\r\n (err) => {\r\n console.error(err);\r\n return Promise.reject(err);\r\n }\r\n);\r\n\r\n// response interceptor\r\nservice.interceptors.response.use(\r\n (response) => {\r\n const result = response.data as ApiResult;\r\n if (\r\n result.code !== 20000 ||\r\n (result.message !== \"\" && result.message?.toLowerCase() !== \"success\")\r\n ) {\r\n console.error(result.message);\r\n // Dialog.alert({\r\n // message: result.message,\r\n // }).then();\r\n return Promise.reject(new Error(result.message));\r\n } else {\r\n return response;\r\n }\r\n },\r\n (error: AxiosError) => {\r\n const resp = error.response as Record;\r\n if (resp && resp.status) {\r\n switch (resp.status) {\r\n case 401:\r\n case 403:\r\n authStore.removeToken();\r\n window.location.replace(LoadingPage);\r\n break;\r\n default:\r\n Dialog.alert({\r\n message: resp?.data.message || resp.statusText,\r\n }).then();\r\n }\r\n }\r\n return Promise.reject(\r\n new Error((resp?.data as ApiResult).message ?? \"Unknown error\")\r\n );\r\n }\r\n);\r\n\r\nconst { CancelToken, isCancel } = axios;\r\n\r\nasync function post(tUrl: string, params?: Record) {\r\n const source = CancelToken.source();\r\n\r\n if (params === undefined) {\r\n params = {};\r\n }\r\n\r\n try {\r\n let resp = await service.post>(tUrl, params, {\r\n cancelToken: source.token,\r\n });\r\n return parseResponse(resp);\r\n } catch (err: any) {\r\n if (isCancel(err)) {\r\n console.log(\"Request canceled\", err.message);\r\n }\r\n // message.error(err.message);\r\n // alert(err.message);\r\n throw err;\r\n }\r\n}\r\n\r\nasync function put(tUrl: string, params?: Record) {\r\n const source = CancelToken.source();\r\n\r\n if (params === undefined) {\r\n params = {};\r\n }\r\n\r\n try {\r\n let resp = await service.put>(tUrl, params, {\r\n cancelToken: source.token,\r\n });\r\n return parseResponse(resp);\r\n } catch (err: any) {\r\n if (isCancel(err)) {\r\n console.log(\"Request canceled\", err.message);\r\n }\r\n // message.error(err.message);\r\n // alert(err.message);\r\n throw err;\r\n }\r\n}\r\n\r\nasync function get(tUrl: string, params?: Record) {\r\n const source = CancelToken.source();\r\n\r\n if (params === undefined) {\r\n params = {};\r\n }\r\n if (params) {\r\n params.__ = new Date().getTime();\r\n } else {\r\n params = {\r\n __: new Date().getTime(),\r\n };\r\n }\r\n\r\n try {\r\n let resp = await service.get>(tUrl, {\r\n params,\r\n cancelToken: source.token,\r\n });\r\n return parseResponse(resp);\r\n } catch (err: any) {\r\n if (isCancel(err)) {\r\n console.log(\"Request canceled\", err.message);\r\n }\r\n // alert(err.message);\r\n throw err;\r\n }\r\n}\r\n\r\nasync function del(tUrl: string, params?: Record) {\r\n const source = CancelToken.source();\r\n\r\n if (params === undefined) {\r\n params = {};\r\n }\r\n\r\n try {\r\n let resp = await service.delete>(tUrl, {\r\n params,\r\n cancelToken: source.token,\r\n });\r\n return parseResponse(resp);\r\n } catch (err: any) {\r\n if (isCancel(err)) {\r\n console.log(\"Request canceled\", err.message);\r\n }\r\n // alert(err.message);\r\n throw err;\r\n }\r\n}\r\n\r\nasync function download(tUrl: string, params?: Record) {\r\n const service = axios.create();\r\n const source = CancelToken.source();\r\n try {\r\n let resp = await service.post(tUrl, params, {\r\n cancelToken: source.token,\r\n responseType: \"blob\",\r\n });\r\n const url = window.URL.createObjectURL(new Blob([resp.data]));\r\n const link = document.createElement(\"a\");\r\n link.href = url;\r\n link.setAttribute(\r\n \"download\",\r\n resp.headers[\"content-disposition\"].split(\"filename=\")[1]\r\n );\r\n document.body.appendChild(link);\r\n link.click();\r\n return resp;\r\n } catch (err: any) {\r\n if (isCancel(err)) {\r\n console.log(\"Request canceled\", err.message);\r\n }\r\n // alert(err.message);\r\n throw err;\r\n }\r\n}\r\n\r\nfunction parseResponse(response: AxiosResponse>): T {\r\n let resp: ApiResult = {\r\n ...response.data,\r\n };\r\n return resp.data as T;\r\n}\r\n\r\n// a fetching similator\r\nfunction delay(t: number, v?: any): Promise {\r\n return new Promise(function (resolve) {\r\n setTimeout(resolve.bind(null, v), t);\r\n });\r\n}\r\n\r\nexport { get, post, put, del, del as delete, download };\r\n","const deserialize = (value: string | any): any => {\r\n\tif (typeof value !== 'string') {\r\n\t\treturn undefined;\r\n\t}\r\n\ttry {\r\n\t\treturn JSON.parse(value);\r\n\t} catch (e) {\r\n\t\treturn value || undefined;\r\n\t}\r\n};\r\n\r\nexport default class JsonStorage {\r\n\tstatic storage: Storage = localStorage;\r\n\tstatic session: Storage = sessionStorage;\r\n\r\n\tstatic get(key: string, defaultVal?: any): T {\r\n\t\tlet val = deserialize(JsonStorage.storage.getItem(key));\r\n\t\treturn val === undefined ? defaultVal : val;\r\n\t}\r\n\r\n\tstatic getSession(key: string, defaultVal?: any): T {\r\n\t\tlet val = deserialize(JsonStorage.session.getItem(key));\r\n\t\treturn val === undefined ? defaultVal : val;\r\n\t}\r\n\r\n\tstatic set(key: string, val: any): void {\r\n\t\tif (val !== undefined) {\r\n\t\t\tJsonStorage.storage.setItem(key, JSON.stringify(val));\r\n\t\t} else {\r\n\t\t\tJsonStorage.storage.removeItem(key);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic setSession(key: string, val: any): void {\r\n\t\tif (val !== undefined) {\r\n\t\t\tJsonStorage.session.setItem(key, JSON.stringify(val));\r\n\t\t} else {\r\n\t\t\tJsonStorage.session.removeItem(key);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic remove(key: string) {\r\n\t\tJsonStorage.storage.removeItem(key);\r\n\t}\r\n\r\n\tstatic removeSession(key: string) {\r\n\t\tJsonStorage.session.removeItem(key);\r\n\t}\r\n\r\n\tstatic clear(prefix?: string, excepts?: Set) {\r\n\t\tif (prefix) {\r\n\t\t\tObject.keys(JsonStorage.storage).forEach((key) => {\r\n\t\t\t\tif (key.indexOf(prefix) === 0) {\r\n\t\t\t\t\tJsonStorage.storage.removeItem(key);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tJsonStorage.storage.clear();\r\n\t\t}\r\n\t}\r\n\r\n\tstatic clearSession(prefix?: string, excepts?: Set) {\r\n\t\tif (prefix) {\r\n\t\t\tObject.keys(JsonStorage.session).forEach((key) => {\r\n\t\t\t\tif (key.indexOf(prefix) === 0) {\r\n\t\t\t\t\tJsonStorage.session.removeItem(key);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tJsonStorage.session.clear();\r\n\t\t}\r\n\t}\r\n}\r\n","import {\r\n AUTH_TOKEN,\r\n AUTH_USER_PROFILE,\r\n SYSTEM_SETTING,\r\n} from \"./../common/StorageKeys\";\r\nimport { get, post } from \"@/utils/Request\";\r\nimport JsonStorage from \"@rpdg/revue-utils/JsonStorage\";\r\n\r\nexport interface ISystemSetting {\r\n banners?: Banner[];\r\n priceInfo?: Price;\r\n kefuInfo?: {\r\n weixin: string;\r\n weixinQrCode: string;\r\n };\r\n orderCount: number;\r\n}\r\n\r\nexport interface Banner {\r\n name?: string;\r\n imgSrc?: string;\r\n orderIndex?: number;\r\n enabled?: boolean;\r\n description?: string;\r\n id?: number;\r\n linkUrl?: string;\r\n}\r\n\r\nexport interface Price {\r\n questionPrice?: number;\r\n questionOldPrice?: number;\r\n fastQuestionPrice?: number;\r\n fastQuestionOldPrice?: number;\r\n}\r\n\r\nclass AuthStore {\r\n token: string = \"\";\r\n\r\n constructor() {\r\n this.token = this.getToken();\r\n }\r\n\r\n async getAuthCode() {\r\n return await get<{ url: string }>(\"/h5/auth/getcode\");\r\n }\r\n\r\n async signin(code: string) {\r\n return await post<{ openid: string; access_token: string }>(\r\n `/h5/auth/signin/${code}`\r\n );\r\n }\r\n\r\n async getUserProfile() {\r\n const res = await get<{ headimgurl: string; nickname: string }>(\r\n \"h5/user/profile\"\r\n );\r\n JsonStorage.set(AUTH_USER_PROFILE, res);\r\n await this.getSystemSettings();\r\n }\r\n\r\n async getSystemSettings() {\r\n const res = await get(\"h5/systemsettings/\");\r\n JsonStorage.set(SYSTEM_SETTING, res);\r\n return res;\r\n }\r\n\r\n getToken() {\r\n return JsonStorage.get(AUTH_TOKEN, \"\");\r\n }\r\n\r\n setToken(token: string) {\r\n this.token = token;\r\n JsonStorage.set(AUTH_TOKEN, token);\r\n }\r\n\r\n removeToken() {\r\n JsonStorage.remove(AUTH_TOKEN);\r\n JsonStorage.remove(AUTH_USER_PROFILE);\r\n }\r\n\r\n async getUserProfileFromStorage() {\r\n await this.getUserProfile();\r\n return JsonStorage.get<{\r\n headimgurl: string;\r\n nickname: string;\r\n sex: number | string;\r\n country: string;\r\n city: string;\r\n divinatoryCount: number;\r\n isAgreementAccepted: boolean;\r\n }>(AUTH_USER_PROFILE, {\r\n headimgurl: \"\",\r\n nickname: \"\",\r\n sex: \"\",\r\n country: \"\",\r\n city: \"\",\r\n divinatoryCount: 0,\r\n isAgreementAccepted: false,\r\n });\r\n }\r\n\r\n async getSystemSettingFromStorage() {\r\n let systemSetting = JsonStorage.get(\r\n SYSTEM_SETTING,\r\n null\r\n );\r\n if (!systemSetting) {\r\n await this.getSystemSettings();\r\n systemSetting = JsonStorage.get(SYSTEM_SETTING, {\r\n banners: [],\r\n price: {\r\n questionPrice: 0,\r\n questionOldPrice: 0,\r\n fastQuestionPrice: 0,\r\n fastQuestionOldPrice: 0,\r\n },\r\n kefuWeixin: {\r\n weixin: \"\",\r\n weixinQrCode: \"\",\r\n },\r\n orderCount: 0,\r\n } as ISystemSetting);\r\n }\r\n return systemSetting;\r\n }\r\n}\r\n\r\nexport default new AuthStore();\r\n","export const AUTH_TOKEN: string = \"auth-token\";\r\nexport const AUTH_USER_PROFILE: string = \"auth_user_profile\";\r\nexport const SYSTEM_SETTING: string = \"system_setting\";\r\n","import {ITagButton} from \"@/types\";\r\nimport {del, get, post} from \"@/utils/Request\";\r\nimport {defineStore} from \"pinia\";\r\n\r\nexport type submitType = 0 | 1;\r\n\r\nexport interface ITags {\r\n generalTags?: GeneralTag[];\r\n customTags?: string[];\r\n}\r\n\r\nexport interface GeneralTag {\r\n name?: string;\r\n id?: string;\r\n tags?: string[];\r\n}\r\n\r\nexport interface IDivinationResponse {\r\n questionId?: number;\r\n articleId?: number;\r\n subject?: string;\r\n calculateDate?: string;\r\n guaName?: string;\r\n guaYi?: string;\r\n guaImageSrc?: string;\r\n sex?: string;\r\n bazi?: string;\r\n mobile?: string;\r\n type?: string;\r\n divinationType?: string;\r\n}\r\n\r\nexport interface IDivinationParams {\r\n subject?: string;\r\n tags?: ITags;\r\n submitType: submitType;\r\n remark?: string;\r\n}\r\n\r\nexport interface IDivinationParamsForRandom extends IDivinationParams {\r\n}\r\n\r\nexport interface IDivinationParamsForBirthday extends IDivinationParams {\r\n name?: string;\r\n sex?: string | number;\r\n birthplace?: string;\r\n birthday?: Date | string;\r\n isChineseBirthday?: boolean;\r\n isLeapMonth?: boolean;\r\n}\r\n\r\nexport interface IDivinationParamsForMobile extends IDivinationParams {\r\n mobile?: string;\r\n sex?: string;\r\n}\r\n\r\nexport type paramsKeys = keyof (IDivinationParams & IDivinationParamsForRandom & IDivinationParamsForBirthday & IDivinationParamsForMobile)\r\n\r\nexport interface IChooseTag {\r\n tag: string;\r\n id?: number | string;\r\n name?: string;\r\n type: number;\r\n}\r\n\r\nexport interface ICalendarToday {\r\n year?: number;\r\n month?: number;\r\n day?: number;\r\n weekDay?: number;\r\n weekDayString?: string;\r\n holiday?: string;\r\n date?: Date;\r\n dateString?: Date;\r\n chineseDay?: number;\r\n chineseDayString?: string;\r\n chineseMonth?: number;\r\n chineseMonthString?: string;\r\n chineseYear?: number;\r\n chineseYearString?: string;\r\n chineseDateString?: string;\r\n chineseHoliday?: string;\r\n ganZhiYear?: string;\r\n ganZhiYearString?: string;\r\n ganZhiMonth?: string;\r\n ganZhiMonthString?: string;\r\n ganZhiDay?: string;\r\n ganZhiDayString?: string;\r\n ganZhiDateString?: string;\r\n ganZhiHour?: string;\r\n ganZhiHourString?: string;\r\n solarTermPrevDay?: string;\r\n solarTermNextDay?: string;\r\n constellation?: string;\r\n animalYear?: string;\r\n daJianYear?: string;\r\n daJianMonth?: string;\r\n daJianDay?: string;\r\n daJianHour?: string;\r\n}\r\n\r\n\r\nexport interface IYingQiParams {\r\n questionId?: number;\r\n guaName?: string;\r\n scope?: string;\r\n baseTime?: string;\r\n groupby?: string;\r\n}\r\n\r\nexport interface LuckyList {\r\n weiGua?: string;\r\n lieGua?: string;\r\n beginTime?: string;\r\n endTime?: string;\r\n ageDescription?: string;\r\n isCurrentScope?: boolean;\r\n isDynamicPosition?: boolean;\r\n smallLuckyList?: LuckyList[];\r\n}\r\n\r\nexport interface IOrderParams {\r\n questionId: number,\r\n orderType: number\r\n}\r\n\r\nexport interface IOrderResponse {\r\n orderId?: number;\r\n questionId?: number;\r\n orderNo?: string;\r\n wxpayQequestData?: WxpayQequestData;\r\n}\r\n\r\n\r\nexport interface IJsApiConfigRequestData {\r\n url: string\r\n}\r\n\r\nexport interface IJsApiConfigResponseData {\r\n appId: string,\r\n timestamp: number,\r\n nonceStr: string,\r\n signature: string,\r\n jsApiList: Array\r\n}\r\n\r\nexport interface WxpayQequestData {\r\n appId?: string;\r\n timeStamp?: string;\r\n nonceStr?: string;\r\n package?: string;\r\n signType?: string;\r\n paySign?: string;\r\n}\r\n\r\nexport interface IQuestionAIResultResponse {\r\n questionId?: number;\r\n subject?: string;\r\n answers?: Answer[];\r\n}\r\n\r\nexport interface Answer {\r\n categoryId?: number;\r\n categoryName?: string;\r\n categoryDescription?: string;\r\n answerContent?: string;\r\n icon?: string;\r\n}\r\n\r\nexport interface IAiResultMark {\r\n questionId?: number;\r\n score?: number;\r\n questionType?: 0 | 1;\r\n comment?: string;\r\n}\r\n\r\nexport interface IQuestionAnalyseParams {\r\n articleId?: number;\r\n questionId?: number;\r\n isPublic?: boolean;\r\n analyseContent?: string;\r\n summary?: string;\r\n}\r\n\r\nexport interface IBaseAddress {\r\n value: number;\r\n text: string;\r\n}\r\n\r\nexport interface IAddress extends IBaseAddress {\r\n children?: IAddress[] | IBaseAddress[]\r\n}\r\n\r\nexport const tags: ITagButton[] = [\r\n {\r\n text: \"感应定卦\",\r\n },\r\n {\r\n text: \"八字\",\r\n },\r\n {\r\n text: \"手机号码\",\r\n },\r\n];\r\n\r\nexport default defineStore(\"home\", {\r\n state: () => ({\r\n tags: {\r\n generalTags: [],\r\n customTags: [],\r\n } as ITags,\r\n todayInfo: {} as ICalendarToday,\r\n remark: '',\r\n resultReloadId: '' as string | number\r\n }),\r\n getters: {},\r\n actions: {\r\n setResultReloadId(value: string | number) {\r\n this.resultReloadId = value\r\n },\r\n setRemark(value: string) {\r\n this.remark = value\r\n },\r\n async getTags() {\r\n this.tags = await get(\"/h5/tag\");\r\n },\r\n async divinationByRandom(params: IDivinationParamsForRandom) {\r\n return await post(`h5/divination/${params.submitType}/random`, params)\r\n },\r\n async divinationByBirthday(params: IDivinationParamsForBirthday) {\r\n return await post(\r\n `h5/divination/${params.submitType}/byBirthday`,\r\n params\r\n );\r\n },\r\n async divinationByMobile(params: IDivinationParamsForMobile) {\r\n return await post(\r\n `h5/divination/${params.submitType}/byMobile`,\r\n params\r\n );\r\n },\r\n async divination(type: string, params: string) {\r\n const formData = JSON.parse(params)\r\n let res: IDivinationResponse | null = null;\r\n if (type === '0') {\r\n res = await this.divinationByRandom(formData)\r\n } else if (type === '1') {\r\n res = await this.divinationByBirthday(formData)\r\n } else if (type === '2') {\r\n res = await this.divinationByMobile(formData)\r\n }\r\n return res;\r\n },\r\n async divinationYingQi(params: IYingQiParams) {\r\n return await get<{ questionId: number, bigLuckyList: LuckyList[] }>(\r\n 'h5/divination/yingqi',\r\n params\r\n )\r\n },\r\n async calendarToday() {\r\n const res = await get<{ today: ICalendarToday }>(\"/h5/calendar/today\");\r\n this.todayInfo = res.today;\r\n },\r\n async order(params: IOrderParams) {\r\n return await post('h5/order', params)\r\n },\r\n async getJsApiConfig(params: IJsApiConfigRequestData) {\r\n return await get('h5/weixin/jssdk/config', params)\r\n },\r\n async orderStatus(orderNo: string) {\r\n return await get<{\r\n questionId: number,\r\n payStatus: \"SUCCESS\" | \"REFUND\" | \"NOTPAY\" | \"CLOSED\" | \"REVOKED\" | \"USERPAYING\" | \"PAYERROR\",\r\n orderNo: string\r\n }>(`h5/order/${orderNo}`)\r\n },\r\n async divinationAiQuestionAnalyse(questionId: number) {\r\n return await get(`h5/divination/AiQuestionAnalyse/${questionId}`)\r\n },\r\n async divinationAiMark(params: IAiResultMark) {\r\n return await post<{\r\n questionId: number\r\n successful: boolean\r\n }>('h5/divination/mark', params)\r\n },\r\n async questionAnalyse(params: IQuestionAnalyseParams) {\r\n return await post<{\r\n divinationArticleId: number\r\n }>('h5/divination/qusetionAnalyse', params)\r\n },\r\n async getAddress(value: number) {\r\n return await get(`h5/geo/${value}`)\r\n },\r\n async modifyArticle(params: IQuestionAnalyseParams) {\r\n return await post('h5/bbs/modifyArticle', params)\r\n },\r\n async addTag(tagName: string) {\r\n return await post(`h5/tag/addTag/${tagName}`)\r\n },\r\n async delTag(tagName: string) {\r\n return await del(`h5/tag/delTag/${tagName}`)\r\n },\r\n async hasAnswered(questionId: number) {\r\n return await get(`h5/question/hasAnswered/${questionId}`)\r\n },\r\n async discard(questionId: number) {\r\n return await del(`h5/question/discard/${questionId}`)\r\n }\r\n },\r\n});\r\n","!(function(e, n) {\n module.exports = n(e);\n})(window, function(o, e) {\n if (!o.jWeixin) {\n var n,\n c = {\n config: \"preVerifyJSAPI\",\n onMenuShareTimeline: \"menu:share:timeline\",\n onMenuShareAppMessage: \"menu:share:appmessage\",\n onMenuShareQQ: \"menu:share:qq\",\n onMenuShareWeibo: \"menu:share:weiboApp\",\n onMenuShareQZone: \"menu:share:QZone\",\n previewImage: \"imagePreview\",\n getLocation: \"geoLocation\",\n openProductSpecificView: \"openProductViewWithPid\",\n addCard: \"batchAddCard\",\n openCard: \"batchViewCard\",\n chooseWXPay: \"getBrandWCPayRequest\",\n openEnterpriseRedPacket: \"getRecevieBizHongBaoRequest\",\n startSearchBeacons: \"startMonitoringBeacons\",\n stopSearchBeacons: \"stopMonitoringBeacons\",\n onSearchBeacons: \"onBeaconsInRange\",\n consumeAndShareCard: \"consumedShareCard\",\n openAddress: \"editAddress\"\n },\n a = (function() {\n var e = {};\n for (var n in c) e[c[n]] = n;\n return e;\n })(),\n i = o.document,\n t = i.title,\n r = navigator.userAgent.toLowerCase(),\n s = navigator.platform.toLowerCase(),\n d = !(!s.match(\"mac\") && !s.match(\"win\")),\n u = -1 != r.indexOf(\"wxdebugger\"),\n l = -1 != r.indexOf(\"micromessenger\"),\n p = -1 != r.indexOf(\"android\"),\n f = -1 != r.indexOf(\"iphone\") || -1 != r.indexOf(\"ipad\"),\n m = (n =\n r.match(/micromessenger\\/(\\d+\\.\\d+\\.\\d+)/) ||\n r.match(/micromessenger\\/(\\d+\\.\\d+)/))\n ? n[1]\n : \"\",\n g = {\n initStartTime: L(),\n initEndTime: 0,\n preVerifyStartTime: 0,\n preVerifyEndTime: 0\n },\n h = {\n version: 1,\n appId: \"\",\n initTime: 0,\n preVerifyTime: 0,\n networkType: \"\",\n isPreVerifyOk: 1,\n systemType: f ? 1 : p ? 2 : -1,\n clientVersion: m,\n url: encodeURIComponent(location.href)\n },\n v = {},\n S = { _completes: [] },\n y = { state: 0, data: {} };\n O(function() {\n g.initEndTime = L();\n });\n var I = !1,\n _ = [],\n w = {\n config: function(e) {\n B(\"config\", (v = e));\n var t = !1 !== v.check;\n O(function() {\n if (t)\n M(\n c.config,\n {\n verifyJsApiList: C(v.jsApiList),\n verifyOpenTagList: C(v.openTagList)\n },\n (function() {\n (S._complete = function(e) {\n (g.preVerifyEndTime = L()), (y.state = 1), (y.data = e);\n }),\n (S.success = function(e) {\n h.isPreVerifyOk = 0;\n }),\n (S.fail = function(e) {\n S._fail ? S._fail(e) : (y.state = -1);\n });\n var t = S._completes;\n return (\n t.push(function() {\n !(function() {\n if (\n !(\n d ||\n u ||\n v.debug ||\n m < \"6.0.2\" ||\n h.systemType < 0\n )\n ) {\n var i = new Image();\n (h.appId = v.appId),\n (h.initTime = g.initEndTime - g.initStartTime),\n (h.preVerifyTime =\n g.preVerifyEndTime - g.preVerifyStartTime),\n w.getNetworkType({\n isInnerInvoke: !0,\n success: function(e) {\n h.networkType = e.networkType;\n var n =\n \"https://open.weixin.qq.com/sdk/report?v=\" +\n h.version +\n \"&o=\" +\n h.isPreVerifyOk +\n \"&s=\" +\n h.systemType +\n \"&c=\" +\n h.clientVersion +\n \"&a=\" +\n h.appId +\n \"&n=\" +\n h.networkType +\n \"&i=\" +\n h.initTime +\n \"&p=\" +\n h.preVerifyTime +\n \"&u=\" +\n h.url;\n i.src = n;\n }\n });\n }\n })();\n }),\n (S.complete = function(e) {\n for (var n = 0, i = t.length; n < i; ++n) t[n]();\n S._completes = [];\n }),\n S\n );\n })()\n ),\n (g.preVerifyStartTime = L());\n else {\n y.state = 1;\n for (var e = S._completes, n = 0, i = e.length; n < i; ++n)\n e[n]();\n S._completes = [];\n }\n }),\n w.invoke ||\n ((w.invoke = function(e, n, i) {\n o.WeixinJSBridge && WeixinJSBridge.invoke(e, x(n), i);\n }),\n (w.on = function(e, n) {\n o.WeixinJSBridge && WeixinJSBridge.on(e, n);\n }));\n },\n ready: function(e) {\n 0 != y.state ? e() : (S._completes.push(e), !l && v.debug && e());\n },\n error: function(e) {\n m < \"6.0.2\" || (-1 == y.state ? e(y.data) : (S._fail = e));\n },\n checkJsApi: function(e) {\n M(\n \"checkJsApi\",\n { jsApiList: C(e.jsApiList) },\n ((e._complete = function(e) {\n if (p) {\n var n = e.checkResult;\n n && (e.checkResult = JSON.parse(n));\n }\n e = (function(e) {\n var n = e.checkResult;\n for (var i in n) {\n var t = a[i];\n t && ((n[t] = n[i]), delete n[i]);\n }\n return e;\n })(e);\n }),\n e)\n );\n },\n onMenuShareTimeline: function(e) {\n P(\n c.onMenuShareTimeline,\n {\n complete: function() {\n M(\n \"shareTimeline\",\n {\n title: e.title || t,\n desc: e.title || t,\n img_url: e.imgUrl || \"\",\n link: e.link || location.href,\n type: e.type || \"link\",\n data_url: e.dataUrl || \"\"\n },\n e\n );\n }\n },\n e\n );\n },\n onMenuShareAppMessage: function(n) {\n P(\n c.onMenuShareAppMessage,\n {\n complete: function(e) {\n \"favorite\" === e.scene\n ? M(\"sendAppMessage\", {\n title: n.title || t,\n desc: n.desc || \"\",\n link: n.link || location.href,\n img_url: n.imgUrl || \"\",\n type: n.type || \"link\",\n data_url: n.dataUrl || \"\"\n })\n : M(\n \"sendAppMessage\",\n {\n title: n.title || t,\n desc: n.desc || \"\",\n link: n.link || location.href,\n img_url: n.imgUrl || \"\",\n type: n.type || \"link\",\n data_url: n.dataUrl || \"\"\n },\n n\n );\n }\n },\n n\n );\n },\n onMenuShareQQ: function(e) {\n P(\n c.onMenuShareQQ,\n {\n complete: function() {\n M(\n \"shareQQ\",\n {\n title: e.title || t,\n desc: e.desc || \"\",\n img_url: e.imgUrl || \"\",\n link: e.link || location.href\n },\n e\n );\n }\n },\n e\n );\n },\n onMenuShareWeibo: function(e) {\n P(\n c.onMenuShareWeibo,\n {\n complete: function() {\n M(\n \"shareWeiboApp\",\n {\n title: e.title || t,\n desc: e.desc || \"\",\n img_url: e.imgUrl || \"\",\n link: e.link || location.href\n },\n e\n );\n }\n },\n e\n );\n },\n onMenuShareQZone: function(e) {\n P(\n c.onMenuShareQZone,\n {\n complete: function() {\n M(\n \"shareQZone\",\n {\n title: e.title || t,\n desc: e.desc || \"\",\n img_url: e.imgUrl || \"\",\n link: e.link || location.href\n },\n e\n );\n }\n },\n e\n );\n },\n updateTimelineShareData: function(e) {\n M(\n \"updateTimelineShareData\",\n { title: e.title, link: e.link, imgUrl: e.imgUrl },\n e\n );\n },\n updateAppMessageShareData: function(e) {\n M(\n \"updateAppMessageShareData\",\n { title: e.title, desc: e.desc, link: e.link, imgUrl: e.imgUrl },\n e\n );\n },\n startRecord: function(e) {\n M(\"startRecord\", {}, e);\n },\n stopRecord: function(e) {\n M(\"stopRecord\", {}, e);\n },\n onVoiceRecordEnd: function(e) {\n P(\"onVoiceRecordEnd\", e);\n },\n playVoice: function(e) {\n M(\"playVoice\", { localId: e.localId }, e);\n },\n pauseVoice: function(e) {\n M(\"pauseVoice\", { localId: e.localId }, e);\n },\n stopVoice: function(e) {\n M(\"stopVoice\", { localId: e.localId }, e);\n },\n onVoicePlayEnd: function(e) {\n P(\"onVoicePlayEnd\", e);\n },\n uploadVoice: function(e) {\n M(\n \"uploadVoice\",\n {\n localId: e.localId,\n isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1\n },\n e\n );\n },\n downloadVoice: function(e) {\n M(\n \"downloadVoice\",\n {\n serverId: e.serverId,\n isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1\n },\n e\n );\n },\n translateVoice: function(e) {\n M(\n \"translateVoice\",\n {\n localId: e.localId,\n isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1\n },\n e\n );\n },\n chooseImage: function(e) {\n M(\n \"chooseImage\",\n {\n scene: \"1|2\",\n count: e.count || 9,\n sizeType: e.sizeType || [\"original\", \"compressed\"],\n sourceType: e.sourceType || [\"album\", \"camera\"]\n },\n ((e._complete = function(e) {\n if (p) {\n var n = e.localIds;\n try {\n n && (e.localIds = JSON.parse(n));\n } catch (e) {}\n }\n }),\n e)\n );\n },\n getLocation: function(e) {},\n previewImage: function(e) {\n M(c.previewImage, { current: e.current, urls: e.urls }, e);\n },\n uploadImage: function(e) {\n M(\n \"uploadImage\",\n {\n localId: e.localId,\n isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1\n },\n e\n );\n },\n downloadImage: function(e) {\n M(\n \"downloadImage\",\n {\n serverId: e.serverId,\n isShowProgressTips: 0 == e.isShowProgressTips ? 0 : 1\n },\n e\n );\n },\n getLocalImgData: function(e) {\n !1 === I\n ? ((I = !0),\n M(\n \"getLocalImgData\",\n { localId: e.localId },\n ((e._complete = function(e) {\n if (((I = !1), 0 < _.length)) {\n var n = _.shift();\n wx.getLocalImgData(n);\n }\n }),\n e)\n ))\n : _.push(e);\n },\n getNetworkType: function(e) {\n M(\n \"getNetworkType\",\n {},\n ((e._complete = function(e) {\n e = (function(e) {\n var n = e.errMsg;\n e.errMsg = \"getNetworkType:ok\";\n var i = e.subtype;\n if ((delete e.subtype, i)) e.networkType = i;\n else {\n var t = n.indexOf(\":\"),\n o = n.substring(t + 1);\n switch (o) {\n case \"wifi\":\n case \"edge\":\n case \"wwan\":\n e.networkType = o;\n break;\n default:\n e.errMsg = \"getNetworkType:fail\";\n }\n }\n return e;\n })(e);\n }),\n e)\n );\n },\n openLocation: function(e) {\n M(\n \"openLocation\",\n {\n latitude: e.latitude,\n longitude: e.longitude,\n name: e.name || \"\",\n address: e.address || \"\",\n scale: e.scale || 28,\n infoUrl: e.infoUrl || \"\"\n },\n e\n );\n },\n getLocation: function(e) {\n M(\n c.getLocation,\n { type: (e = e || {}).type || \"wgs84\" },\n ((e._complete = function(e) {\n delete e.type;\n }),\n e)\n );\n },\n hideOptionMenu: function(e) {\n M(\"hideOptionMenu\", {}, e);\n },\n showOptionMenu: function(e) {\n M(\"showOptionMenu\", {}, e);\n },\n closeWindow: function(e) {\n M(\"closeWindow\", {}, (e = e || {}));\n },\n hideMenuItems: function(e) {\n M(\"hideMenuItems\", { menuList: e.menuList }, e);\n },\n showMenuItems: function(e) {\n M(\"showMenuItems\", { menuList: e.menuList }, e);\n },\n hideAllNonBaseMenuItem: function(e) {\n M(\"hideAllNonBaseMenuItem\", {}, e);\n },\n showAllNonBaseMenuItem: function(e) {\n M(\"showAllNonBaseMenuItem\", {}, e);\n },\n scanQRCode: function(e) {\n M(\n \"scanQRCode\",\n {\n needResult: (e = e || {}).needResult || 0,\n scanType: e.scanType || [\"qrCode\", \"barCode\"]\n },\n ((e._complete = function(e) {\n if (f) {\n var n = e.resultStr;\n if (n) {\n var i = JSON.parse(n);\n e.resultStr = i && i.scan_code && i.scan_code.scan_result;\n }\n }\n }),\n e)\n );\n },\n openAddress: function(e) {\n M(\n c.openAddress,\n {},\n ((e._complete = function(e) {\n e = (function(e) {\n return (\n (e.postalCode = e.addressPostalCode),\n delete e.addressPostalCode,\n (e.provinceName = e.proviceFirstStageName),\n delete e.proviceFirstStageName,\n (e.cityName = e.addressCitySecondStageName),\n delete e.addressCitySecondStageName,\n (e.countryName = e.addressCountiesThirdStageName),\n delete e.addressCountiesThirdStageName,\n (e.detailInfo = e.addressDetailInfo),\n delete e.addressDetailInfo,\n e\n );\n })(e);\n }),\n e)\n );\n },\n openProductSpecificView: function(e) {\n M(\n c.openProductSpecificView,\n {\n pid: e.productId,\n view_type: e.viewType || 0,\n ext_info: e.extInfo\n },\n e\n );\n },\n addCard: function(e) {\n for (var n = e.cardList, i = [], t = 0, o = n.length; t < o; ++t) {\n var r = n[t],\n a = { card_id: r.cardId, card_ext: r.cardExt };\n i.push(a);\n }\n M(\n c.addCard,\n { card_list: i },\n ((e._complete = function(e) {\n var n = e.card_list;\n if (n) {\n for (var i = 0, t = (n = JSON.parse(n)).length; i < t; ++i) {\n var o = n[i];\n (o.cardId = o.card_id),\n (o.cardExt = o.card_ext),\n (o.isSuccess = !!o.is_succ),\n delete o.card_id,\n delete o.card_ext,\n delete o.is_succ;\n }\n (e.cardList = n), delete e.card_list;\n }\n }),\n e)\n );\n },\n chooseCard: function(e) {\n M(\n \"chooseCard\",\n {\n app_id: v.appId,\n location_id: e.shopId || \"\",\n sign_type: e.signType || \"SHA1\",\n card_id: e.cardId || \"\",\n card_type: e.cardType || \"\",\n card_sign: e.cardSign,\n time_stamp: e.timestamp + \"\",\n nonce_str: e.nonceStr\n },\n ((e._complete = function(e) {\n (e.cardList = e.choose_card_info), delete e.choose_card_info;\n }),\n e)\n );\n },\n openCard: function(e) {\n for (var n = e.cardList, i = [], t = 0, o = n.length; t < o; ++t) {\n var r = n[t],\n a = { card_id: r.cardId, code: r.code };\n i.push(a);\n }\n M(c.openCard, { card_list: i }, e);\n },\n consumeAndShareCard: function(e) {\n M(\n c.consumeAndShareCard,\n { consumedCardId: e.cardId, consumedCode: e.code },\n e\n );\n },\n chooseWXPay: function(e) {\n M(c.chooseWXPay, V(e), e);\n },\n openEnterpriseRedPacket: function(e) {\n M(c.openEnterpriseRedPacket, V(e), e);\n },\n startSearchBeacons: function(e) {\n M(c.startSearchBeacons, { ticket: e.ticket }, e);\n },\n stopSearchBeacons: function(e) {\n M(c.stopSearchBeacons, {}, e);\n },\n onSearchBeacons: function(e) {\n P(c.onSearchBeacons, e);\n },\n openEnterpriseChat: function(e) {\n M(\n \"openEnterpriseChat\",\n { useridlist: e.userIds, chatname: e.groupName },\n e\n );\n },\n launchMiniProgram: function(e) {\n M(\n \"launchMiniProgram\",\n {\n targetAppId: e.targetAppId,\n path: (function(e) {\n if (\"string\" == typeof e && 0 < e.length) {\n var n = e.split(\"?\")[0],\n i = e.split(\"?\")[1];\n return (n += \".html\"), void 0 !== i ? n + \"?\" + i : n;\n }\n })(e.path),\n envVersion: e.envVersion\n },\n e\n );\n },\n openBusinessView: function(e) {\n M(\n \"openBusinessView\",\n {\n businessType: e.businessType,\n queryString: e.queryString || \"\",\n envVersion: e.envVersion\n },\n ((e._complete = function(n) {\n if (p) {\n var e = n.extraData;\n if (e)\n try {\n n.extraData = JSON.parse(e);\n } catch (e) {\n n.extraData = {};\n }\n }\n }),\n e)\n );\n },\n miniProgram: {\n navigateBack: function(e) {\n (e = e || {}),\n O(function() {\n M(\n \"invokeMiniProgramAPI\",\n { name: \"navigateBack\", arg: { delta: e.delta || 1 } },\n e\n );\n });\n },\n navigateTo: function(e) {\n O(function() {\n M(\n \"invokeMiniProgramAPI\",\n { name: \"navigateTo\", arg: { url: e.url } },\n e\n );\n });\n },\n redirectTo: function(e) {\n O(function() {\n M(\n \"invokeMiniProgramAPI\",\n { name: \"redirectTo\", arg: { url: e.url } },\n e\n );\n });\n },\n switchTab: function(e) {\n O(function() {\n M(\n \"invokeMiniProgramAPI\",\n { name: \"switchTab\", arg: { url: e.url } },\n e\n );\n });\n },\n reLaunch: function(e) {\n O(function() {\n M(\n \"invokeMiniProgramAPI\",\n { name: \"reLaunch\", arg: { url: e.url } },\n e\n );\n });\n },\n postMessage: function(e) {\n O(function() {\n M(\n \"invokeMiniProgramAPI\",\n { name: \"postMessage\", arg: e.data || {} },\n e\n );\n });\n },\n getEnv: function(e) {\n O(function() {\n e({ miniprogram: \"miniprogram\" === o.__wxjs_environment });\n });\n }\n }\n },\n T = 1,\n k = {};\n return (\n i.addEventListener(\n \"error\",\n function(e) {\n if (!p) {\n var n = e.target,\n i = n.tagName,\n t = n.src;\n if (\"IMG\" == i || \"VIDEO\" == i || \"AUDIO\" == i || \"SOURCE\" == i)\n if (-1 != t.indexOf(\"wxlocalresource://\")) {\n e.preventDefault(), e.stopPropagation();\n var o = n[\"wx-id\"];\n if ((o || ((o = T++), (n[\"wx-id\"] = o)), k[o])) return;\n (k[o] = !0),\n wx.ready(function() {\n wx.getLocalImgData({\n localId: t,\n success: function(e) {\n n.src = e.localData;\n }\n });\n });\n }\n }\n },\n !0\n ),\n i.addEventListener(\n \"load\",\n function(e) {\n if (!p) {\n var n = e.target,\n i = n.tagName;\n n.src;\n if (\"IMG\" == i || \"VIDEO\" == i || \"AUDIO\" == i || \"SOURCE\" == i) {\n var t = n[\"wx-id\"];\n t && (k[t] = !1);\n }\n }\n },\n !0\n ),\n e && (o.wx = o.jWeixin = w),\n w\n );\n }\n function M(n, e, i) {\n o.WeixinJSBridge\n ? WeixinJSBridge.invoke(n, x(e), function(e) {\n A(n, e, i);\n })\n : B(n, i);\n }\n function P(n, i, t) {\n o.WeixinJSBridge\n ? WeixinJSBridge.on(n, function(e) {\n t && t.trigger && t.trigger(e), A(n, e, i);\n })\n : B(n, t || i);\n }\n function x(e) {\n return (\n ((e = e || {}).appId = v.appId),\n (e.verifyAppId = v.appId),\n (e.verifySignType = \"sha1\"),\n (e.verifyTimestamp = v.timestamp + \"\"),\n (e.verifyNonceStr = v.nonceStr),\n (e.verifySignature = v.signature),\n e\n );\n }\n function V(e) {\n return {\n timeStamp: e.timestamp + \"\",\n nonceStr: e.nonceStr,\n package: e.package,\n paySign: e.paySign,\n signType: e.signType || \"SHA1\"\n };\n }\n function A(e, n, i) {\n (\"openEnterpriseChat\" != e && \"openBusinessView\" !== e) ||\n (n.errCode = n.err_code),\n delete n.err_code,\n delete n.err_desc,\n delete n.err_detail;\n var t = n.errMsg;\n t ||\n ((t = n.err_msg),\n delete n.err_msg,\n (t = (function(e, n) {\n var i = e,\n t = a[i];\n t && (i = t);\n var o = \"ok\";\n if (n) {\n var r = n.indexOf(\":\");\n \"confirm\" == (o = n.substring(r + 1)) && (o = \"ok\"),\n \"failed\" == o && (o = \"fail\"),\n -1 != o.indexOf(\"failed_\") && (o = o.substring(7)),\n -1 != o.indexOf(\"fail_\") && (o = o.substring(5)),\n (\"access denied\" !=\n (o = (o = o.replace(/_/g, \" \")).toLowerCase()) &&\n \"no permission to execute\" != o) ||\n (o = \"permission denied\"),\n \"config\" == i && \"function not exist\" == o && (o = \"ok\"),\n \"\" == o && (o = \"fail\");\n }\n return (n = i + \":\" + o);\n })(e, t)),\n (n.errMsg = t)),\n (i = i || {})._complete && (i._complete(n), delete i._complete),\n (t = n.errMsg || \"\"),\n v.debug && !i.isInnerInvoke && alert(JSON.stringify(n));\n var o = t.indexOf(\":\");\n switch (t.substring(o + 1)) {\n case \"ok\":\n i.success && i.success(n);\n break;\n case \"cancel\":\n i.cancel && i.cancel(n);\n break;\n default:\n i.fail && i.fail(n);\n }\n i.complete && i.complete(n);\n }\n function C(e) {\n if (e) {\n for (var n = 0, i = e.length; n < i; ++n) {\n var t = e[n],\n o = c[t];\n o && (e[n] = o);\n }\n return e;\n }\n }\n function B(e, n) {\n if (!(!v.debug || (n && n.isInnerInvoke))) {\n var i = a[e];\n i && (e = i),\n n && n._complete && delete n._complete,\n console.log('\"' + e + '\",', n || \"\");\n }\n }\n function L() {\n return new Date().getTime();\n }\n function O(e) {\n l &&\n (o.WeixinJSBridge\n ? e()\n : i.addEventListener &&\n i.addEventListener(\"WeixinJSBridgeReady\", e, !1));\n }\n});\n","import useHomeStore, {\r\n IDivinationResponse,\r\n IJsApiConfigRequestData,\r\n IJsApiConfigResponseData,\r\n} from \"@/store/HomeStore\";\r\nimport { Toast } from \"vant\";\r\nimport router from \"@/router\";\r\nimport { HomePage } from \"@/config\";\r\nimport { RouteParamsRaw } from \"vue-router\";\r\n// @ts-ignore\r\nimport wx from \"weixin-js-sdk\";\r\nimport { getImageUrl } from \"@/utils/index\";\r\n\r\n/**\r\n * 微信下单\r\n * @param orderType 0 问一问 1 起卦\r\n * @param questionInfo IDivinationResponse 对象主要传入questionId\r\n * @param fromPage 来自哪个页面\r\n * @param toPage string|去哪个页面,对应路由中的名称 DivinationAIResult(起卦) | function\r\n */\r\nexport const pay = async (\r\n orderType: 0 | 1,\r\n questionInfo: IDivinationResponse | null = null,\r\n fromPage: string = \"\",\r\n toPage: string | Function | null = null\r\n): Promise> => {\r\n if (!questionInfo || !questionInfo.questionId) {\r\n await router.push(HomePage);\r\n return;\r\n }\r\n if (import.meta.env.DEV) {\r\n if (toPage) {\r\n if (typeof toPage === \"string\") {\r\n await router.push({\r\n name: toPage,\r\n params: {\r\n orderNo: \"N202208261708537697816\",\r\n questionId: 5,\r\n from: fromPage,\r\n } as RouteParamsRaw,\r\n });\r\n } else if (typeof toPage === \"function\") {\r\n toPage({ success: true });\r\n } else {\r\n Toast(\"支付成功\");\r\n }\r\n } else {\r\n return Promise.resolve({ success: true });\r\n }\r\n } else {\r\n const homeStore = useHomeStore();\r\n const res = await homeStore.order({\r\n questionId: questionInfo.questionId,\r\n orderType,\r\n });\r\n const { wxpayQequestData, orderNo, questionId } = res;\r\n window.WeixinJSBridge.invoke(\r\n \"getBrandWCPayRequest\",\r\n wxpayQequestData,\r\n (payRes: Record) => {\r\n if (payRes.err_msg == \"get_brand_wcpay_request:ok\") {\r\n // 使用以上方式判断前端返回,微信团队郑重提示:\r\n //res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。\r\n if (toPage) {\r\n if (typeof toPage === \"string\") {\r\n router.push({\r\n name: toPage,\r\n params: {\r\n orderNo,\r\n questionId,\r\n from: fromPage,\r\n } as RouteParamsRaw,\r\n });\r\n } else if (typeof toPage === \"function\") {\r\n toPage({ ...payRes, success: true });\r\n } else {\r\n Toast(\"支付成功\");\r\n return Promise.resolve({ ...payRes, success: true });\r\n }\r\n } else {\r\n Toast(\"支付成功\");\r\n return Promise.resolve({ ...payRes, success: true });\r\n }\r\n } else {\r\n Toast(\"支付失败\");\r\n return Promise.resolve({ ...payRes, success: false });\r\n }\r\n }\r\n );\r\n }\r\n};\r\n\r\nexport const wxConfig = (data: Record, callback?: () => void) => {\r\n wx.config({\r\n debug: false,\r\n // 后台返回之前获取的appId\r\n appId: data.appId,\r\n // 必填,生成签名的时间戳\r\n timestamp: data.timestamp,\r\n // 必填,生成签名的随机串\r\n nonceStr: data.nonceStr,\r\n // 必填,签名,见附录1\r\n signature: data.signature,\r\n // 必填,需要使用的JS接口列表,所有JS接口列表见附录3\r\n jsApiList: [\r\n \"onMenuShareTimeline\", //1.0分享到朋友圈\r\n \"onMenuShareAppMessage\", //1.0 分享到朋友\r\n \"updateAppMessageShareData\", //1.4 分享到朋友\r\n \"updateTimelineShareData\", //1.4分享到朋友圈\r\n // \"chooseImage\", //拍照或从手机相册中选图接口\r\n // \"previewImage\", //预览图片接口\r\n // \"uploadImage\", //上传图片接口\r\n // \"downloadImage\", //下载图片接口\r\n // \"getLocalImgData\", //获取本地图片接口\r\n ],\r\n });\r\n callback && callback();\r\n};\r\n\r\nexport const wxInit = async (href: string = \"\"): Promise => {\r\n const homeStore = useHomeStore();\r\n const res = await homeStore.getJsApiConfig({\r\n url: encodeURIComponent(location.href),\r\n });\r\n const { appId, timestamp, nonceStr, signature } = res;\r\n wxConfig({\r\n appId: appId,\r\n timestamp: timestamp,\r\n nonceStr: nonceStr,\r\n signature: signature,\r\n });\r\n let shareHref = href || window.location.href;\r\n //console.log(\"🐯\", \"[shareHref]\", shareHref);\r\n wx.ready(() => {\r\n wx.checkJsApi({\r\n jsApiList: [\r\n \"onMenuShareTimeline\",\r\n \"onMenuShareAppMessage\",\r\n \"updateAppMessageShareData\",\r\n \"updateTimelineShareData\",\r\n ], // 需要检测的JS接口列表,所有JS接口列表见附录2,\r\n success: function (res: any) {\r\n // 以键值对的形式返回,可用的api值true,不可用为false\r\n // 如:{\"checkResult\":{\"chooseImage\":true},\"errMsg\":\"checkJsApi:ok\"}\r\n console.log(\"checkJsApi=>\", res);\r\n },\r\n });\r\n\r\n const commonShareData = {\r\n // 分享标题\r\n title: \"满意度超过90%的测算软件\",\r\n // 分享描述\r\n desc: \"解惑安心,指点迷津。每天免费一次!@大简易经\",\r\n // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致\r\n link: shareHref,\r\n // 分享图标\r\n // imgUrl: getImageUrl('../assets/images/logo.png'),\r\n imgUrl: getImageUrl(\"../assets/images/share/logo.jpg\"),\r\n success: function () {\r\n //console.log(\"分享回调函数\");\r\n },\r\n };\r\n wx.updateTimelineShareData(commonShareData); //1.4\r\n wx.updateAppMessageShareData(commonShareData); //1.4\r\n wx.onMenuShareTimeline(commonShareData); //1.0\r\n wx.onMenuShareAppMessage(commonShareData); //1.0\r\n });\r\n wx.error((err: string) => {\r\n console.log(\"🐯\", \"[wx_err]\", err);\r\n });\r\n};\r\n","/*\r\n * @Author: tom\r\n * @Date: 2022-07-30 16:56:44\r\n * @Description:\r\n */\r\nimport { createRouter, createWebHashHistory } from \"vue-router\";\r\nimport { LoadingPage, TAB_BAR_LIST } from \"@/config\";\r\nimport { useAppStore } from \"@/store\";\r\nimport authStore from \"@/store/AuthStore\";\r\nimport { wxInit } from \"@/utils/wx\";\r\n\r\nconst routes = [\r\n {\r\n path: \"/\",\r\n redirect: \"/loading\",\r\n children: [\r\n { path: \"loading\", component: () => import(\"@/views/loading/index.vue\") },\r\n { path: \"home\", component: () => import(\"@/views/home/index.vue\") },\r\n { path: \"bbs\", component: () => import(\"@/views/bbs/index.vue\") },\r\n {\r\n path: \"question\",\r\n component: () => import(\"@/views/question/index.vue\"),\r\n },\r\n {\r\n path: \"calendar\",\r\n component: () => import(\"@/views/calendar/index.vue\"),\r\n },\r\n { path: \"about\", component: () => import(\"@/views/about/index.vue\") },\r\n {\r\n path: \"agreement/:src\",\r\n component: () => import(\"@/views/agreement/index.vue\"),\r\n },\r\n {\r\n path: \"myagreement\",\r\n component: () => import(\"@/views/about/myagreement/index.vue\"),\r\n },\r\n {\r\n path: \"useragreement\",\r\n component: () => import(\"@/views/agreement/useragreement.vue\"),\r\n },\r\n ],\r\n },\r\n {\r\n path: \"/divination-result\",\r\n name: \"DivinationResult\",\r\n component: () => import(\"@/views/divination/result/index.vue\"),\r\n },\r\n {\r\n path: \"/divination-ai-result-pay\",\r\n name: \"DivinationAIResultPay\",\r\n component: () => import(\"@/views/divination/airesultpay/index.vue\"),\r\n },\r\n {\r\n path: \"/divination-ai-result\",\r\n name: \"DivinationAIResult\",\r\n component: () => import(\"@/views/divination/airesult/index.vue\"),\r\n },\r\n {\r\n path: \"/test\",\r\n component: () => import(\"@/views/unitest/index.vue\"),\r\n children: [\r\n {\r\n path: \"poup\",\r\n component: () => import(\"@/views/unitest/poup.vue\"),\r\n },\r\n ],\r\n },\r\n {\r\n path: \"/:pathMatch(.*)*\",\r\n name: \"notFound\",\r\n redirect: \"/loading\",\r\n },\r\n];\r\nconst router = createRouter({\r\n history: createWebHashHistory(),\r\n routes,\r\n scrollBehavior: (to, from, savedPosition) => {\r\n return { left: 0, top: 0 };\r\n },\r\n});\r\n\r\nconst tabUrlList = TAB_BAR_LIST.map((item) => item.url);\r\nrouter.beforeEach((to: any, from) => {\r\n const appStore = useAppStore();\r\n if (to.href) {\r\n if (\r\n !to.href.includes(\"loading\") &&\r\n (!authStore.getToken() || !authStore.token)\r\n ) {\r\n window.location.replace(LoadingPage);\r\n return false;\r\n }\r\n let toHref = `/${to.href}`;\r\n if (toHref.includes(\"?\")) {\r\n toHref = toHref.split(\"?\")[0];\r\n }\r\n const index = tabUrlList.indexOf(toHref);\r\n if (index !== -1) {\r\n appStore.setTabActive(index);\r\n appStore.setShowTabBar(true);\r\n document.title = TAB_BAR_LIST[index].text;\r\n } else {\r\n appStore.setTabActive(-1);\r\n appStore.setShowTabBar(false);\r\n }\r\n }\r\n return true;\r\n});\r\n\r\nrouter.afterEach(() => {\r\n wxInit().then();\r\n});\r\nexport default router;\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","import { createApp } from \"vue\";\r\nimport router from \"@/router\";\r\nimport { createPinia } from \"pinia\";\r\nimport App from \"./App.vue\";\r\nimport \"./style.less\";\r\nimport { Popup } from \"vant\";\r\nimport \"vant/es/dialog/style\";\r\nimport \"vant/es/toast/style\";\r\nimport \"vant/es/search/style\";\r\nimport \"vant/es/tabs/style\";\r\nimport \"vant/es/divider/style\";\r\n\r\n// import VConsole from 'vconsole';\r\nimport { getQueryString, getQueryStringByKey } from \"@/utils\";\r\nimport authStore from \"@/store/AuthStore\";\r\n\r\n// new VConsole({theme: 'dark'});\r\nconst pinia = createPinia();\r\nconst renderView = () => {\r\n const app = createApp(App);\r\n app.use(router);\r\n app.use(pinia);\r\n app.use(Popup);\r\n app.mount(\"#app\");\r\n};\r\nconst token = authStore.getToken();\r\nif (!token) {\r\n const code = getQueryStringByKey(\"code\");\r\n if (!code) {\r\n authStore\r\n .getAuthCode()\r\n .then((res) => {\r\n const wxLoginUrl = new URL(res.url);\r\n const wxLoginUrlQs = getQueryString(wxLoginUrl.search);\r\n if (wxLoginUrlQs) {\r\n wxLoginUrlQs.redirect_uri = encodeURIComponent(\r\n `${window.location.origin.replace(\"http:\", \"https://\")}/${\r\n window.location.hash\r\n }`\r\n );\r\n wxLoginUrl.search = Object.keys(wxLoginUrlQs).reduce(\r\n (pre: string, next: string) => {\r\n if (pre) {\r\n return `${pre}&${next}=${wxLoginUrlQs[next]}`;\r\n } else {\r\n return `${next}=${wxLoginUrlQs[next]}`;\r\n }\r\n },\r\n \"\"\r\n );\r\n renderView();\r\n window.location.replace(wxLoginUrl.toString());\r\n } else {\r\n renderView();\r\n window.location.replace(res.url);\r\n }\r\n })\r\n .catch(() => {\r\n renderView();\r\n });\r\n } else {\r\n renderView();\r\n }\r\n} else {\r\n renderView();\r\n}\r\n"],"file":"static/index.c76623dd.js"}