react-solid-flow
Version:
[SolidJS](https://www.solidjs.com/docs/latest/api#control-flow)-inspired basic control-flow components and everyday async state hook library for [React](https://reactjs.org/)
2 lines • 5.43 kB
JavaScript
var W=Object.create;var w=Object.defineProperty;var Z=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var $=Object.getPrototypeOf,ee=Object.prototype.hasOwnProperty;var re=(e,r)=>{for(var t in r)w(e,t,{get:r[t],enumerable:!0})},C=(e,r,t,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of _(r))!ee.call(e,n)&&n!==t&&w(e,n,{get:()=>r[n],enumerable:!(o=Z(r,n))||o.enumerable});return e};var k=(e,r,t)=>(t=e!=null?W($(e)):{},C(r||!e||!e.__esModule?w(t,"default",{value:e,enumerable:!0}):t,e)),te=e=>C(w({},"__esModule",{value:!0}),e);var ce={};re(ce,{AbortError:()=>b,Await:()=>B,Dynamic:()=>U,ErrorBoundary:()=>A,For:()=>F,Match:()=>I,NullishError:()=>T,Portal:()=>V,Resource:()=>u,Show:()=>L,Switch:()=>D,useResource:()=>Y});module.exports=te(ce);var l=k(require("react"),1);var S=k(require("react"),1),v=require("react");function s(e){return e==null?null:(0,v.isValidElement)(e)?e:S.default.createElement(S.default.Fragment,null,e)}function F({children:e,each:r,fallback:t=null}){if(!Array.isArray(r)||!r.length||e==null)return s(t);if(typeof e!="function")return l.default.createElement(l.default.Fragment,null,r.map((n,a)=>l.default.createElement(l.Fragment,{key:a},e)));let o=[];for(let n=0;n<r.length;n++){let a=e(r[n],n);a!=null&&(!(0,l.isValidElement)(a)||!a.key?o.push(l.default.createElement(l.Fragment,{key:n},a)):o.push(a))}return o.length?l.default.createElement(l.default.Fragment,null,o):s(t)}function f(e,...r){return typeof e=="function"?s(e(...r)):s(e)}function L({fallback:e=null,...r}){return r.when?f(r.children,r.when):s(e)}var g=require("react");function D(e){for(let r of g.Children.toArray(e.children))if((0,g.isValidElement)(r)&&r.props.when)return r;return s(e.fallback)}function I({when:e,children:r}){return e?f(r,e):null}var z=require("react"),A=class extends z.Component{constructor(r){super(r),this.resetError=this.resetError.bind(this)}state={error:void 0};static getDerivedStateFromError(r){return{error:r}}componentDidCatch(r,t){this.props.onCatch?.(r,t),this.setState({error:r})}resetError(){this.setState({error:void 0})}render(){return this.state.error===void 0?this.props.children:typeof this.props.fallback=="function"?this.props.fallback(this.state.error,this.resetError):this.props.fallback}};var N=k(require("react"),1),oe=N.forwardRef,U=oe(function({component:r,...t},o){return r?N.default.createElement(r,{...t,ref:o}):null});var O=require("react-dom");function V({mount:e,...r}){let t=e==null||e instanceof Element||e instanceof DocumentFragment?e:document.querySelector(e);return t?(0,O.createPortal)(r.children,t):null}function B(e){return e.for==null?null:e.for.loading?f(e.fallback):e.for.error!=null?f(e.catch,e.for.error):f(e.children,e.for.data)}var u=class e{loading;data;error;state;latest;constructor(r,t){this.data=r?.data,this.error=r?.error,this.loading=!!r?.loading,this.data!==void 0?this.latest=this.data:this.latest=t?.latest,this.state=e.getState(this)}static from(r,t){let o=r instanceof Promise;return new e(o?{loading:!0}:{data:r,loading:!!t})}static getState(r){return r.data!==void 0&&r.loading?"refreshing":r.loading?"pending":r.error!==void 0?"errored":r.data!==void 0?"ready":"unresolved"}};var b=class extends Error{name="AbortError";code=20;constructor(r="The operation was aborted."){super(r)}};var T=class extends Error{name="NullishError"};var c=require("react");var J=require("react");function M(e,r){return(0,J.useReducer)(ae,[e,r],ne)}function ne(e){let[r,t=!1]=e,o=typeof r=="function"?r():r;return u.from(o,!t)}function ae(e,r){let t=r?.type;switch(t){case"PEND":return new u({loading:!0,error:void 0,data:e.data},e);case"RESOLVE":return new u({...e,loading:!1,error:void 0,data:r.payload},e);case"SYNC-RESULT":return new u({loading:!1,error:void 0,data:r.payload},e);case"REJECT":return new u({loading:!1,error:r.payload??new T("resource rejected with a nullish error",{cause:r.payload}),data:void 0},e);default:ie(t)}}function ie(e){throw new Error("Invalid action type")}function Y(e,r=[],{initialValue:t,onCompleted:o,onError:n,skipFirstRun:a=!1,skip:x=!1,skipFnMemoization:j}={}){let i=(0,c.useRef)(),P=(0,c.useRef)(a),[q,m]=M(t,x||a),X=(0,c.useCallback)(d=>{i.current?.abort(),i.current=new AbortController,m({type:"SYNC-RESULT",payload:d})},[m]),y=(0,c.useCallback)((d,...K)=>{let R,h=i.current;try{if(h==null)throw new Error("resource state error, abort controller is null during the fetch operation");return R=e(...K,{signal:h.signal,refetching:d}),R instanceof Promise?Q(R):m({type:"SYNC-RESULT",payload:R}),R}catch(E){if(m({type:"REJECT",payload:E}),d)throw E;return}async function Q(E){m({type:"PEND"});try{let p=await E;if(h!==i.current)return;m({type:"RESOLVE",payload:p}),o?.(p)}catch(p){if(le(p)||h!==i.current)return;m({type:"REJECT",payload:p}),n?.(p)}}},j?[e]:[]),G=(0,c.useCallback)((...d)=>(i.current?.abort(),i.current=new AbortController,y(!0,...d)),[y]),H=(0,c.useCallback)(d=>{i.current?.abort(d)},[]);return(0,c.useEffect)(()=>{P.current=a,i.current||(i.current=new AbortController)},[a]),(0,c.useEffect)(()=>{if(P.current){P.current=!1;return}if(!x)return y(!1,...r),()=>{i.current?.abort(),i.current=new AbortController}},[...r,x,y]),[q,{mutate:X,refetch:G,abort:H}]}function le(e){return e!=null&&e.name==="AbortError"}0&&(module.exports={AbortError,Await,Dynamic,ErrorBoundary,For,Match,NullishError,Portal,Resource,Show,Switch,useResource});
//# sourceMappingURL=lib.cjs.map
;