ray-template/assets/vue-hooks-plus@1.7.6_vue@3.3.4-1baf6b87.js
2023-07-12 14:47:01 +08:00

2 lines
8.8 KiB
JavaScript

import{u as v,k as g,h as N,i as M,v as j}from"./@vue_reactivity@3.3.4-2b3a1c4e.js";import{D as _,m as x,j as U,A as O,i as q,f as $}from"./@vue_runtime-core@3.3.4-073fad6e.js";import{d as Q,t as V}from"./lodash@4.17.21-2cee12c8.js";const H=(n,{manual:e,ready:t=!0,refreshDeps:i=[],refreshDepsAction:r})=>{const o=g(!1);return _(()=>{!e&&n.options.refreshDeps!==!0&&(o.value=v(t))}),i instanceof Array?x([o,...i],([s])=>{s&&!e&&s&&(r?r():n.refresh())},{deep:!0,immediate:!1}):x(o,s=>{!e&&s&&(r?r():n.refresh())}),{onBefore:()=>{if(!v(t))return{stopNow:!0}}}};H.onInit=({ready:n=!0,manual:e})=>({loading:!e&&v(n)});const S=new Map,G=(n,e,t)=>{const i=S.get(n);i!=null&&i.timer&&clearTimeout(i.timer);let r;e>-1&&(r=setTimeout(()=>{S.delete(n)},e)),S.set(n,{...t,timer:r})},Y=n=>S.get(n),E=new Map,z=n=>E.get(n),J=(n,e)=>{E.set(n,e),e.then(t=>(E.delete(n),t)).catch(t=>{throw E.delete(n),t})},b={},X=(n,e)=>{b[n]&&b[n].forEach(t=>t(e))},D=(n,e)=>(b[n]||(b[n]=[]),b[n].push(e),function(){const i=b[n].indexOf(e);b[n].splice(i,1)}),Z=(n,{cacheKey:e,cacheTime:t=5*60*1e3,staleTime:i=0,setCache:r,getCache:o})=>{const s=g(),c=g(),f=(a,u)=>{r?r(u):G(a,t,u),X(a,u.data)},h=(a,u=[])=>o?o(u):Y(a);return _(()=>{if(!e)return;const a=h(e);a&&Object.hasOwnProperty.call(a,"data")&&(n.state.data=a.data,n.state.params=a.params,(i===-1||new Date().getTime()-a.time<=i)&&(n.state.loading=!1)),s.value=D(e,u=>{n.setState({data:u})})}),U(()=>{var a;(a=s.value)==null||a.call(s)}),e?{onBefore:a=>{const u=h(e,a);return!u||!Object.hasOwnProperty.call(u,"data")?{}:i===-1||new Date().getTime()-u.time<=i?{loading:!1,data:u==null?void 0:u.data,returnNow:!0}:{data:u==null?void 0:u.data}},onRequest:(a,u)=>{let l=z(e);return l&&l!==c.value?{servicePromise:l}:(l=a(...u),c.value=l,J(e,l),{servicePromise:l})},onSuccess:(a,u)=>{var l;e&&((l=s.value)==null||l.call(s),f(e,{data:a,params:u,time:new Date().getTime()}),s.value=D(e,d=>{n.setState({data:d})}))},onMutate:a=>{var u;e&&((u=s.value)==null||u.call(s),f(e,{data:a,params:n.state.params,time:new Date().getTime()}),s.value=D(e,l=>{n.setState({data:l})}))}}:{}},W=(n,{debounceWait:e,debounceLeading:t,debounceTrailing:i,debounceMaxWait:r})=>{const o=g(),s=O(()=>{const c={},f=v(t),h=v(i),a=v(r);return f!==void 0&&(c.leading=f),h!==void 0&&(c.trailing=h),a!==void 0&&(c.maxWait=a),c});return _(c=>{if(v(e)){const f=n.runAsync.bind(n);o.value=Q(h=>{h()},v(e),s.value),n.runAsync=(...h)=>new Promise((a,u)=>{var l;(l=o.value)==null||l.call(o,()=>{f(...h).then(a).catch(u)})}),c(()=>{var h;(h=o.value)==null||h.cancel(),n.runAsync=f})}}),v(e)?{onCancel:()=>{var c;(c=o.value)==null||c.cancel()}}:{}},I=(n,{loadingDelay:e})=>{const t=g();if(!v(e))return{};const i=()=>{t.value&&clearTimeout(t.value)};return{onBefore:()=>(i(),t.value=setTimeout(()=>{n.setState({loading:!0})},v(e)),{loading:!1}),onFinally:()=>{i()},onCancel:()=>{i()}}};function B(){return!!(typeof window<"u"&&window.document&&window.document.createElement)}function C(){return B()?document.visibilityState!=="hidden":!0}const P=[];function K(n){return P.push(n),function(){const t=P.indexOf(n);P.splice(t,1)}}if(B()){const n=()=>{if(C())for(let e=0;e<P.length;e++){const t=P[e];t()}};window.addEventListener("visibilitychange",n,!1)}const k=(n,{pollingInterval:e,pollingWhenHidden:t=!0,pollingErrorRetryCount:i=-1})=>{const r=g(),o=g(),s=g(0),c=()=>{var f;r.value&&clearInterval(r.value),(f=o.value)==null||f.call(o)};return _(()=>{v(e)||c()}),v(e)?{onBefore:()=>{c()},onError:()=>{s.value+=1},onSuccess:()=>{s.value=0},onFinally:()=>{i===-1||i!==-1&&s.value<=i?r.value=setTimeout(()=>{!t&&!C()?o.value=K(()=>{n.refresh()}):n.refresh()},v(e)):s.value=0},onCancel:()=>{c()}}:{}};function ee(n,e){let t=!1;return(...i)=>{t||(t=!0,n(...i),setTimeout(()=>{t=!1},e))}}const te=!!(typeof window<"u"&&window.document&&window.document.createElement);function ne(){return B()&&typeof navigator.onLine<"u"?navigator.onLine:!0}const R=[];function ie(n){return R.push(n),function(){const t=R.indexOf(n);t>-1&&R.splice(t,1)}}if(te){const n=()=>{if(!(!C()||!ne()))for(let e=0;e<R.length;e++){const t=R[e];t()}};window.addEventListener("visibilitychange",n,!1),window.addEventListener("focus",n,!1)}const se=(n,{refreshOnWindowFocus:e,focusTimespan:t=5e3})=>{const i=g(),r=()=>{var o;(o=i.value)==null||o.call(i)};return _(o=>{if(v(e)){const s=ee(n.refresh.bind(n),v(t));i.value=ie(()=>{s()})}o(()=>{r()})}),U(()=>{r()}),{}},re=(n,{retryInterval:e,retryCount:t})=>{const i=g(),r=g(0),o=g(!1);return t?{onBefore:()=>{o.value||(r.value=0),o.value=!1,i.value&&clearTimeout(i.value)},onSuccess:()=>{r.value=0},onError:()=>{if(r.value+=1,t===-1||r.value<=t){const s=e??Math.min(1e3*2**r.value,3e4);i.value=setTimeout(()=>{o.value=!0,n.refresh()},s)}else r.value=0},onCancel:()=>{r.value=0,i.value&&clearTimeout(i.value)}}:{}},oe=(n,{throttleWait:e,throttleLeading:t,throttleTrailing:i})=>{const r=O(()=>{const s={};return v(t)!==void 0&&(s.leading=v(t)),v(i)!==void 0&&(s.trailing=v(i)),s}),o=O(()=>V(s=>{s()},v(e),r.value));return _(s=>{if(v(e)){const c=n.runAsync.bind(n);n.runAsync=(...f)=>new Promise((h,a)=>{var u;(u=o.value)==null||u.call(o,()=>{c(...f).then(h).catch(a)})}),s(()=>{var f;n.runAsync=c,(f=o.value)==null||f.cancel()})}}),v(e)?{onCancel:()=>{var s;(s=o.value)==null||s.cancel()}}:{}};var ae=Object.defineProperty,ue=(n,e,t)=>e in n?ae(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,T=(n,e,t)=>(ue(n,typeof e!="symbol"?e+"":e,t),t);class le{constructor(e,t,i,r={}){T(this,"pluginImpls"),T(this,"count",0),T(this,"state",{loading:!1,params:void 0,data:void 0,error:void 0}),this.serviceRef=e,this.options=t,this.setUpdateData=i,this.initState=r,this.state={...this.state,loading:!t.manual,...r}}setState(e={}){this.state={...this.state,...e},this.setUpdateData(this.state)}setData(e,t){console.warn("Please use 'setFetchState' instead of 'setData'"),t instanceof Array?t.forEach(i=>{this.state[i]=e,this.setUpdateData(e,i)}):(this.state[t]=e,this.setUpdateData(e,t))}setFetchState(e,t){t instanceof Array?t.forEach(i=>{this.state[i]=e,this.setUpdateData(e,i)}):(this.state[t]=e,this.setUpdateData(e,t))}runPluginHandler(e,...t){var i,r;const o=(r=((i=this.pluginImpls)==null?void 0:i.map(s=>{var c;return(c=s[e])==null?void 0:c.call(s,...t)}))??[])==null?void 0:r.filter(Boolean);return Object.assign({},...o)}async runAsync(...e){var t,i,r,o,s,c;this.count+=1;const f=this.count,{stopNow:h=!1,returnNow:a=!1,...u}=this.runPluginHandler("onBefore",e);if(h)return new Promise(()=>{});if(this.setState({loading:!0,params:e,...u}),a)return Promise.resolve(u.data);(i=(t=this.options).onBefore)==null||i.call(t,e);try{let{servicePromise:l}=this.runPluginHandler("onRequest",this.serviceRef.value,e);const d=m=>{var p,F,L,y;if(f!==this.count)return new Promise(()=>{});const w=this.options.formatResult?this.options.formatResult(m):m;return this.setState({data:w,error:void 0,loading:!1}),(F=(p=this.options).onSuccess)==null||F.call(p,w,e),this.runPluginHandler("onSuccess",w,e),(y=(L=this.options).onFinally)==null||y.call(L,e,w,void 0),f===this.count&&this.runPluginHandler("onFinally",e,w,void 0),w};l||(l=this.serviceRef.value(...e));const A=await l;return d(A)}catch(l){if(f!==this.count)return new Promise(()=>{});throw this.setState({error:l,loading:!1}),(o=(r=this.options).onError)==null||o.call(r,l,e),this.runPluginHandler("onError",l,e),(c=(s=this.options).onFinally)==null||c.call(s,e,void 0,l),f===this.count&&this.runPluginHandler("onFinally",e,void 0,l),l}}run(...e){this.runAsync(...e).catch(t=>{this.options.onError||console.error(t)})}cancel(){this.count+=1,this.setState({loading:!1}),this.runPluginHandler("onCancel")}refresh(){this.run(...this.state.params||[])}refreshAsync(){return this.runAsync(...this.state.params||[])}mutate(e){let t;typeof e=="function"?t=e==null?void 0:e(this.state.data):t=e,this.runPluginHandler("onMutate",t),this.setState({data:t})}}const ce=Symbol("USEREQUEST_GLOBAL_OPTIONS_PROVIDE_KEY");function fe(n){return Object.keys(n).filter(t=>["data","loading","params","error"].includes(t)).length===4}function de(n,e={},t=[]){const i=q(ce,{}),{initialData:r=void 0,manual:o=!1,ready:s=!0,...c}={...i??{},...e??{}},f={manual:o,ready:s,...c},h=g(n),a=N({data:r,loading:!1,params:void 0,error:void 0}),u=(m,p)=>{p?a[p]=m:fe(m)&&(a.data=m.data,a.loading=m.loading,a.error=m.error,a.params=m.params)},l=t.map(m=>{var p;return(p=m==null?void 0:m.onInit)==null?void 0:p.call(m,f)}).filter(Boolean),d=new le(h,f,u,Object.assign({},...l,a));d.options=f,d.pluginImpls=t.map(m=>m(d,f));const A=O(()=>M(s)?s.value:s);return _(()=>{if(!o){const m=d.state.params||e.defaultParams||[];A.value&&d.options.refreshDeps===!0&&h.value&&d.run(...m)}}),$(()=>{if(!o&&d.options.refreshDeps!==!0){const m=d.state.params||e.defaultParams||[];v(s)&&d.run(...m)}}),U(()=>{d.cancel()}),{...j(a),cancel:d.cancel.bind(d),refresh:d.refresh.bind(d),refreshAsync:d.refreshAsync.bind(d),run:d.run.bind(d),runAsync:d.runAsync.bind(d),mutate:d.mutate.bind(d)}}function ge(n,e,t){return de(n,e,[...t||[],W,I,k,se,oe,H,Z,re])}export{ge as u};