vuse-rx
Version:
First-class rxjs support for Vue 3
3 lines (2 loc) • 2.96 kB
JavaScript
(function(o,s){typeof exports=="object"&&typeof module<"u"?s(exports,require("rxjs"),require("rxjs/operators"),require("vue")):typeof define=="function"&&define.amd?define(["exports","rxjs","rxjs/operators","vue"],s):(o=typeof globalThis<"u"?globalThis:o||self,s(o.vuseRx={},o.rxjs,o.rxjs.operators,o.Vue))})(this,function(o,s,u,r){"use strict";const g=e=>new s.Observable(n=>{r.getCurrentInstance()&&e(()=>n.next())}),j=e=>u.takeUntil(g(e)),y=j(r.onUnmounted),$=(e,n,t)=>n!=null&&typeof n[t]=="object"&&typeof e[t]=="object",k=[Array,Date,RegExp,Error];function R(e){return n=>{for(const t in n){const c=n[t];e[t]=$(e,n,t)&&!this.some(i=>[e[t].constructor,c.constructor].includes(i))?R.call(this,e[t])(c):c}return e}}const U={mutationStrategy:R,strategyContext:k};function x(e,n){const{mutationStrategy:t,strategyContext:c}={...U,...n},i=t.bind(c);return function(f,d){const l=r.reactive(E(e)),m={},a={},A=[];let B=!1,S;const F={error:b=>{S=b},complete:()=>{B=!0}};for(const b in f){const p=new s.Subject;m[b]=(...O)=>p.next(f[b].apply(f,O)),A.push(a[`${b}$`]=u.mergeScan((O,h)=>(h=E(h,O,F),(s.isObservable(h)?h:s.of(h)).pipe(u.map(i(O,i)),u.tap({next:()=>S?S=p.error(S):B&&p.complete()}))),l)(p))}const q=s.merge(...A);return C({actions:m,state:r.readonly(l),state$:y(d?d(q,f,l,a,F).pipe(u.scan((b,p)=>i(b,i)(p),l)):q),actions$:a})}}const C=e=>({...e,subscribe:(...n)=>({...e,subscription:e.state$.subscribe(...n)})}),E=(e,...n)=>typeof e=="function"?e(...n):e,M=e=>n=>{for(const t in n)e[t]=$(e,n,t)?M(e[t])(n[t]):n[t];return e},P=e=>n=>{for(const t in n)e[t]=n[t];return e},T=e=>n=>R.apply([Array],[e])(n),v=e=>u.catchError((n,t)=>{throw e(n,t)}),H=e=>u.tap({next:n=>e.value=n});function I(e,n){return y(new s.Observable(t=>r.watch(e,c=>t.next(c),n)))}function K(e,n){if(typeof e=="object"&&!r.isProxy(e))try{const t=r.ref(n);return y(s.from(e)).subscribe({next:c=>t.value=c}),t}catch{}return r.isProxy(e)?r.toRef(e,n):r.ref(e)}function z(e,n={}){const t=r.ref(n.next),c=r.ref(n.error),i=y(s.from(e));return{next:t,error:c,value$:i,subscription:i.subscribe({next:f=>t.value=f,error:f=>c.value=f})}}function w(e,n,t){const c=r.ref(t??(n.to?n.to(e.value):e.value));for(const i in n)(c[i]=D(e,c,n,i,this)).bind();return c}w.with=(...e)=>{const n=Object.assign({},...e),t=w.bind(n);return t.with=w.with.bind(n),t};const D=(e,n,t,c,i)=>({bind:f=>{const{ref:d,map:l,watch:m}={ref:e,map:t[c],watch:i,...f};n[c].stop(),n[c].stop=c==="to"?r.watch(d,a=>n.value=l(a),Object.assign({},i,m)):r.watch(n,a=>d.value=l(a),Object.assign({},i,m))},stop:()=>{}}),G=e=>r.onUnmounted(()=>e.unsubscribe());o.canMergeDeep=$,o.deep=M,o.deepReplaceArray=T,o.deepReplaceBuiltin=R,o.defaultBuiltin=k,o.defaultOptions=U,o.fromHook=g,o.fromRef=I,o.mapError=v,o.pipeUntil=j,o.refFrom=K,o.refsFrom=z,o.setRef=H,o.shallow=P,o.syncRef=w,o.untilUnmounted=y,o.useRxState=x,o.useSubscription=G,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})});
//# sourceMappingURL=umd.js.map