@inertiajs/react 2.0.7 → 2.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/types/useForm.d.ts +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{router as ct}from"@inertiajs/core";import{router as ke,setupProgress as Ae}from"@inertiajs/core";import{createElement as Oe}from"react";import{createHeadManager as De,router as ue}from"@inertiajs/core";import{createElement as w,useEffect as xe,useMemo as Ie,useState as Ee}from"react";import{createContext as Ce}from"react";var ie=Ce(void 0);ie.displayName="InertiaHeadContext";var K=ie;import{createContext as Re}from"react";var pe=Re(void 0);pe.displayName="InertiaPageContext";var B=pe;function _({children:p,initialPage:n,initialComponent:s,resolveComponent:i,titleCallback:a,onHeadUpdate:g}){let[u,f]=Ee({component:s||null,page:n,key:null}),c=Ie(()=>De(typeof window>"u",a||(l=>l),g||(()=>{})),[]);if(xe(()=>{ue.init({initialPage:n,resolveComponent:i,swapComponent:async({component:l,page:e,preserveState:d})=>{f(t=>({component:l,page:e,key:d?t.key:Date.now()}))}}),ue.on("navigate",()=>c.forceUpdate())},[]),!u.component)return w(K.Provider,{value:c},w(B.Provider,{value:u.page},null));let m=p||(({Component:l,props:e,key:d})=>{let t=w(l,{key:d,...e});return typeof l.layout=="function"?l.layout(t):Array.isArray(l.layout)?l.layout.concat(t).reverse().reduce((h,F)=>w(F,{children:h,...e})):t});return w(K.Provider,{value:c},w(B.Provider,{value:u.page},m({Component:u.component,key:u.key,props:u.page.props})))}_.displayName="Inertia";async function ce({id:p="app",resolve:n,setup:s,title:i,progress:a={},page:g,render:u}){let f=typeof window>"u",c=f?null:document.getElementById(p),m=g||JSON.parse(c.dataset.page),l=t=>Promise.resolve(n(t)).then(h=>h.default||h),e=[],d=await Promise.all([l(m.component),ke.decryptHistory().catch(()=>{})]).then(([t])=>s({el:c,App:_,props:{initialPage:m,initialComponent:t,resolveComponent:l,titleCallback:i,onHeadUpdate:f?h=>e=h:null}}));if(!f&&a&&Ae(a),f){let t=await u(Oe("div",{id:p,"data-page":JSON.stringify(m)},d));return{head:e,body:t}}}import{useEffect as le,useMemo as Me,useState as Le}from"react";import{useContext as we}from"react";function q(){let p=we(B);if(!p)throw new Error("usePage must be used within the Inertia component");return p}var de=({children:p,data:n,fallback:s})=>{if(!n)throw new Error("`<Deferred>` requires a `data` prop to be a string or array of strings");let[i,a]=Le(!1),g=q().props,u=Me(()=>Array.isArray(n)?n:[n],[n]);return le(()=>{let f=fe.on("start",c=>{(c.detail.visit.only.length===0&&c.detail.visit.except.length===0||c.detail.visit.only.find(m=>u.includes(m)))&&a(!1)});return()=>{f()}},[]),le(()=>{a(u.every(f=>g[f]!==void 0))},[g,u]),i?p:s};de.displayName="InertiaDeferred";var He=de;import me,{useContext as Ke,useEffect as Be,useMemo as Ve}from"react";var Ne=function({children:p,title:n}){let s=Ke(K),i=Ve(()=>s.createProvider(),[s]);Be(()=>()=>{i.disconnect()},[i]);function a(e){return["area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"].indexOf(e.type)>-1}function g(e){let d=Object.keys(e.props).reduce((t,h)=>{if(["head-key","children","dangerouslySetInnerHTML"].includes(h))return t;let F=e.props[h];return F===""?t+` ${h}`:t+` ${h}="${F}"`},"");return`<${e.type}${d}>`}function u(e){return typeof e.props.children=="string"?e.props.children:e.props.children.reduce((d,t)=>d+f(t),"")}function f(e){let d=g(e);return e.props.children&&(d+=u(e)),e.props.dangerouslySetInnerHTML&&(d+=e.props.dangerouslySetInnerHTML.__html),a(e)||(d+=`</${e.type}>`),d}function c(e){return me.cloneElement(e,{inertia:e.props["head-key"]!==void 0?e.props["head-key"]:""})}function m(e){return f(c(e))}function l(e){let d=me.Children.toArray(e).filter(t=>t).map(t=>m(t));return n&&!d.find(t=>t.startsWith("<title"))&&d.push(`<title inertia>${n}</title>`),d}return i.update(l(p)),null},je=Ne;import{mergeDataIntoQueryString as Ue,router as re,shouldIntercept as oe}from"@inertiajs/core";import{createElement as $e,forwardRef as We,useEffect as ge,useMemo as Pe,useRef as _e,useState as qe}from"react";var D=()=>{},ye=We(({children:p,as:n="a",data:s={},href:i,method:a="get",preserveScroll:g=!1,preserveState:u=null,replace:f=!1,only:c=[],except:m=[],headers:l={},queryStringArrayFormat:e="brackets",async:d=!1,onClick:t=D,onCancelToken:h=D,onBefore:F=D,onStart:I=D,onProgress:E=D,onFinish:Y=D,onCancel:j=D,onSuccess:z=D,onError:M=D,prefetch:T=!1,cacheFor:b=0,...G},X)=>{let[Z,U]=qe(0),L=_e(null);n=n.toLowerCase(),a=typeof i=="object"?i.method:a.toLowerCase();let[k,ee]=Ue(a,typeof i=="object"?i.url:i||"",s,e),A=k;s=ee;let $={data:s,method:a,preserveScroll:g,preserveState:u??a!=="get",replace:f,only:c,except:m,headers:l,async:d},W={...$,onCancelToken:h,onBefore:F,onStart(r){U(O=>O+1),I(r)},onProgress:E,onFinish(r){U(O=>O-1),Y(r)},onCancel:j,onSuccess:z,onError:M},H=()=>{re.prefetch(A,$,{cacheFor:te})},R=Pe(()=>T===!0?["hover"]:T===!1?[]:Array.isArray(T)?T:[T],Array.isArray(T)?T:[T]),te=Pe(()=>b!==0?b:R.length===1&&R[0]==="click"?0:3e4,[b,R]);ge(()=>()=>{clearTimeout(L.current)},[]),ge(()=>{R.includes("mount")&&setTimeout(()=>H())},R);let o={onClick:r=>{t(r),oe(r)&&(r.preventDefault(),re.visit(A,W))}},y={onMouseEnter:()=>{L.current=window.setTimeout(()=>{H()},75)},onMouseLeave:()=>{clearTimeout(L.current)},onClick:o.onClick},P={onMouseDown:r=>{oe(r)&&(r.preventDefault(),H())},onMouseUp:r=>{r.preventDefault(),re.visit(A,W)},onClick:r=>{t(r),oe(r)&&r.preventDefault()}};return a!=="get"&&(n="button"),$e(n,{...G,...{a:{href:A},button:{type:"button"}}[n]||{},ref:X,...R.includes("hover")?y:R.includes("click")?P:o,"data-loading":Z>0?"":void 0},p)});ye.displayName="InertiaLink";var Je=ye;import{router as Fe}from"@inertiajs/core";import{cloneDeep as J,isEqual as ze}from"es-toolkit";import{get as Ge,has as Xe,set as ne}from"es-toolkit/compat";import{useCallback as v,useEffect as Ze,useRef as Q,useState as x}from"react";import{router as he}from"@inertiajs/core";import{useEffect as Qe,useState as Ye}from"react";function V(p,n){let[s,i]=Ye(()=>{let a=he.restore(n);return a!==void 0?a:p});return Qe(()=>{he.remember(s,n)},[s,n]),[s,i]}function Se(p,n){let s=Q(null),i=typeof p=="string"?p:null,[a,g]=x((typeof p=="string"?n:p)||{}),u=Q(null),f=Q(null),[c,m]=i?V(a,`${i}:data`):x(a),[l,e]=i?V({},`${i}:errors`):x({}),[d,t]=x(!1),[h,F]=x(!1),[I,E]=x(null),[Y,j]=x(!1),[z,M]=x(!1),T=Q(o=>o);Ze(()=>(s.current=!0,()=>{s.current=!1}),[]);let b=v((...o)=>{let y=typeof o[0]=="object",P=y?o[0].method:o[0],C=y?o[0].url:o[1],r=(y?o[1]:o[2])??{},O={...r,onCancelToken:S=>{if(u.current=S,r.onCancelToken)return r.onCancelToken(S)},onBefore:S=>{if(j(!1),M(!1),clearTimeout(f.current),r.onBefore)return r.onBefore(S)},onStart:S=>{if(F(!0),r.onStart)return r.onStart(S)},onProgress:S=>{if(E(S),r.onProgress)return r.onProgress(S)},onSuccess:S=>{if(s.current&&(F(!1),E(null),e({}),t(!1),j(!0),M(!0),g(J(c)),f.current=setTimeout(()=>{s.current&&M(!1)},2e3)),r.onSuccess)return r.onSuccess(S)},onError:S=>{if(s.current&&(F(!1),E(null),e(S),t(!0)),r.onError)return r.onError(S)},onCancel:()=>{if(s.current&&(F(!1),E(null)),r.onCancel)return r.onCancel()},onFinish:S=>{if(s.current&&(F(!1),E(null)),u.current=null,r.onFinish)return r.onFinish(S)}};P==="delete"?Fe.delete(C,{...O,data:T.current(c)}):Fe[P](C,T.current(c),O)},[c,e,T]),G=v((o,y)=>{m(typeof o=="string"?P=>ne(J(P),o,y):typeof o=="function"?P=>o(P):o)},[m]),X=v((o,y)=>{g(typeof o>"u"?()=>c:P=>typeof o=="string"?ne(J(P),o,y):Object.assign(J(P),o))},[c,g]),Z=v((...o)=>{o.length===0?m(a):m(y=>o.filter(P=>Xe(a,P)).reduce((P,C)=>ne(P,C,Ge(a,C)),{...y}))},[m,a]),U=v((o,y)=>{e(P=>{let C={...P,...typeof o=="string"?{[o]:y}:o};return t(Object.keys(C).length>0),C})},[e,t]),L=v((...o)=>{e(y=>{let P=Object.keys(y).reduce((C,r)=>({...C,...o.length>0&&!o.includes(r)?{[r]:y[r]}:{}}),{});return t(Object.keys(P).length>0),P})},[e,t]),k=o=>(y,P)=>{b(o,y,P)},ee=v(k("get"),[b]),A=v(k("post"),[b]),$=v(k("put"),[b]),W=v(k("patch"),[b]),H=v(k("delete"),[b]),R=v(()=>{u.current&&u.current.cancel()},[]),te=v(o=>{T.current=o},[]);return{data:c,setData:G,isDirty:!ze(c,a),errors:l,hasErrors:d,processing:h,progress:I,wasSuccessful:Y,recentlySuccessful:z,transform:te,setDefaults:X,reset:Z,setError:U,clearErrors:L,submit:b,get:ee,post:A,put:$,patch:W,delete:H,cancel:R}}import{router as et}from"@inertiajs/core";import{useEffect as tt,useRef as rt}from"react";function Te(p,n={},s={keepAlive:!1,autoStart:!0}){let i=rt(et.poll(p,n,{...s,autoStart:!1}));return tt(()=>((s.autoStart??!0)&&i.current.start(),()=>i.current.stop()),[]),{stop:i.current.stop,start:i.current.start}}import{router as N}from"@inertiajs/core";import{useEffect as ot,useState as se}from"react";function ve(p={}){let n=typeof window>"u"?null:N.getCached(window.location.pathname,p),s=typeof window>"u"?null:N.getPrefetching(window.location.pathname,p),[i,a]=se(n?.staleTimestamp||null),[g,u]=se(s!==null),[f,c]=se(n!==null);return ot(()=>{let m=N.on("prefetching",e=>{e.detail.visit.url.pathname===window.location.pathname&&u(!0)}),l=N.on("prefetched",e=>{e.detail.visit.url.pathname===window.location.pathname&&(u(!1),c(!0),a(e.detail.fetchedAt))});return()=>{l(),m()}},[]),{lastUpdatedAt:i,isPrefetching:g,isPrefetched:f,flush:()=>N.flush(window.location.pathname,p)}}import{router as nt}from"@inertiajs/core";import{createElement as st,useCallback as at,useEffect as it,useRef as ae,useState as pt}from"react";var be=({children:p,data:n,params:s,buffer:i,as:a,always:g,fallback:u})=>{g=g??!1,a=a??"div",u=u??null;let[f,c]=pt(!1),m=ae(!1),l=ae(!1),e=ae(null),d=at(()=>{if(n)return{only:Array.isArray(n)?n:[n]};if(!s)throw new Error("You must provide either a `data` or `params` prop.");return s},[s,n]);return it(()=>{if(!e.current)return;let t=new IntersectionObserver(h=>{if(!h[0].isIntersecting||(!g&&m.current&&t.disconnect(),l.current))return;m.current=!0,l.current=!0;let F=d();nt.reload({...F,onStart:I=>{l.current=!0,F.onStart?.(I)},onFinish:I=>{c(!0),l.current=!1,F.onFinish?.(I),g||t.disconnect()}})},{rootMargin:`${i||0}px`});return t.observe(e.current),()=>{t.disconnect()}},[e,d,i]),g||!f?st(a,{props:null,ref:e},f?p:u):f?p:null};be.displayName="InertiaWhenVisible";var ut=be;var fe=ct;export{He as Deferred,je as Head,Je as Link,ut as WhenVisible,ce as createInertiaApp,fe as router,Se as useForm,q as usePage,Te as usePoll,ve as usePrefetch,V as useRemember};
|
|
1
|
+
import{router as ct}from"@inertiajs/core";import{router as ke,setupProgress as Ae}from"@inertiajs/core";import{createElement as Oe}from"react";import{createHeadManager as xe,router as ue}from"@inertiajs/core";import{createElement as w,useEffect as De,useMemo as Ie,useState as Ee}from"react";import{createContext as Ce}from"react";var ie=Ce(void 0);ie.displayName="InertiaHeadContext";var K=ie;import{createContext as Re}from"react";var pe=Re(void 0);pe.displayName="InertiaPageContext";var B=pe;function _({children:p,initialPage:n,initialComponent:s,resolveComponent:i,titleCallback:a,onHeadUpdate:g}){let[u,f]=Ee({component:s||null,page:n,key:null}),c=Ie(()=>xe(typeof window>"u",a||(l=>l),g||(()=>{})),[]);if(De(()=>{ue.init({initialPage:n,resolveComponent:i,swapComponent:async({component:l,page:e,preserveState:d})=>{f(t=>({component:l,page:e,key:d?t.key:Date.now()}))}}),ue.on("navigate",()=>c.forceUpdate())},[]),!u.component)return w(K.Provider,{value:c},w(B.Provider,{value:u.page},null));let m=p||(({Component:l,props:e,key:d})=>{let t=w(l,{key:d,...e});return typeof l.layout=="function"?l.layout(t):Array.isArray(l.layout)?l.layout.concat(t).reverse().reduce((h,F)=>w(F,{children:h,...e})):t});return w(K.Provider,{value:c},w(B.Provider,{value:u.page},m({Component:u.component,key:u.key,props:u.page.props})))}_.displayName="Inertia";async function ce({id:p="app",resolve:n,setup:s,title:i,progress:a={},page:g,render:u}){let f=typeof window>"u",c=f?null:document.getElementById(p),m=g||JSON.parse(c.dataset.page),l=t=>Promise.resolve(n(t)).then(h=>h.default||h),e=[],d=await Promise.all([l(m.component),ke.decryptHistory().catch(()=>{})]).then(([t])=>s({el:c,App:_,props:{initialPage:m,initialComponent:t,resolveComponent:l,titleCallback:i,onHeadUpdate:f?h=>e=h:null}}));if(!f&&a&&Ae(a),f){let t=await u(Oe("div",{id:p,"data-page":JSON.stringify(m)},d));return{head:e,body:t}}}import{useEffect as le,useMemo as Me,useState as Le}from"react";import{useContext as we}from"react";function q(){let p=we(B);if(!p)throw new Error("usePage must be used within the Inertia component");return p}var de=({children:p,data:n,fallback:s})=>{if(!n)throw new Error("`<Deferred>` requires a `data` prop to be a string or array of strings");let[i,a]=Le(!1),g=q().props,u=Me(()=>Array.isArray(n)?n:[n],[n]);return le(()=>{let f=fe.on("start",c=>{(c.detail.visit.only.length===0&&c.detail.visit.except.length===0||c.detail.visit.only.find(m=>u.includes(m)))&&a(!1)});return()=>{f()}},[]),le(()=>{a(u.every(f=>g[f]!==void 0))},[g,u]),i?p:s};de.displayName="InertiaDeferred";var He=de;import me,{useContext as Ke,useEffect as Be,useMemo as Ve}from"react";var Ne=function({children:p,title:n}){let s=Ke(K),i=Ve(()=>s.createProvider(),[s]);Be(()=>()=>{i.disconnect()},[i]);function a(e){return["area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"].indexOf(e.type)>-1}function g(e){let d=Object.keys(e.props).reduce((t,h)=>{if(["head-key","children","dangerouslySetInnerHTML"].includes(h))return t;let F=e.props[h];return F===""?t+` ${h}`:t+` ${h}="${F}"`},"");return`<${e.type}${d}>`}function u(e){return typeof e.props.children=="string"?e.props.children:e.props.children.reduce((d,t)=>d+f(t),"")}function f(e){let d=g(e);return e.props.children&&(d+=u(e)),e.props.dangerouslySetInnerHTML&&(d+=e.props.dangerouslySetInnerHTML.__html),a(e)||(d+=`</${e.type}>`),d}function c(e){return me.cloneElement(e,{inertia:e.props["head-key"]!==void 0?e.props["head-key"]:""})}function m(e){return f(c(e))}function l(e){let d=me.Children.toArray(e).filter(t=>t).map(t=>m(t));return n&&!d.find(t=>t.startsWith("<title"))&&d.push(`<title inertia>${n}</title>`),d}return i.update(l(p)),null},je=Ne;import{mergeDataIntoQueryString as Ue,router as re,shouldIntercept as oe}from"@inertiajs/core";import{createElement as $e,forwardRef as We,useEffect as ge,useMemo as Pe,useRef as _e,useState as qe}from"react";var x=()=>{},ye=We(({children:p,as:n="a",data:s={},href:i,method:a="get",preserveScroll:g=!1,preserveState:u=null,replace:f=!1,only:c=[],except:m=[],headers:l={},queryStringArrayFormat:e="brackets",async:d=!1,onClick:t=x,onCancelToken:h=x,onBefore:F=x,onStart:I=x,onProgress:E=x,onFinish:Y=x,onCancel:j=x,onSuccess:z=x,onError:M=x,prefetch:T=!1,cacheFor:b=0,...G},X)=>{let[Z,U]=qe(0),L=_e(null);n=n.toLowerCase(),a=typeof i=="object"?i.method:a.toLowerCase();let[k,ee]=Ue(a,typeof i=="object"?i.url:i||"",s,e),A=k;s=ee;let $={data:s,method:a,preserveScroll:g,preserveState:u??a!=="get",replace:f,only:c,except:m,headers:l,async:d},W={...$,onCancelToken:h,onBefore:F,onStart(r){U(O=>O+1),I(r)},onProgress:E,onFinish(r){U(O=>O-1),Y(r)},onCancel:j,onSuccess:z,onError:M},H=()=>{re.prefetch(A,$,{cacheFor:te})},R=Pe(()=>T===!0?["hover"]:T===!1?[]:Array.isArray(T)?T:[T],Array.isArray(T)?T:[T]),te=Pe(()=>b!==0?b:R.length===1&&R[0]==="click"?0:3e4,[b,R]);ge(()=>()=>{clearTimeout(L.current)},[]),ge(()=>{R.includes("mount")&&setTimeout(()=>H())},R);let o={onClick:r=>{t(r),oe(r)&&(r.preventDefault(),re.visit(A,W))}},y={onMouseEnter:()=>{L.current=window.setTimeout(()=>{H()},75)},onMouseLeave:()=>{clearTimeout(L.current)},onClick:o.onClick},P={onMouseDown:r=>{oe(r)&&(r.preventDefault(),H())},onMouseUp:r=>{r.preventDefault(),re.visit(A,W)},onClick:r=>{t(r),oe(r)&&r.preventDefault()}};return a!=="get"&&(n="button"),$e(n,{...G,...{a:{href:A},button:{type:"button"}}[n]||{},ref:X,...R.includes("hover")?y:R.includes("click")?P:o,"data-loading":Z>0?"":void 0},p)});ye.displayName="InertiaLink";var Je=ye;import{router as Fe}from"@inertiajs/core";import{cloneDeep as J,isEqual as ze}from"es-toolkit";import{get as Ge,has as Xe,set as ne}from"es-toolkit/compat";import{useCallback as v,useEffect as Ze,useRef as Q,useState as D}from"react";import{router as he}from"@inertiajs/core";import{useEffect as Qe,useState as Ye}from"react";function V(p,n){let[s,i]=Ye(()=>{let a=he.restore(n);return a!==void 0?a:p});return Qe(()=>{he.remember(s,n)},[s,n]),[s,i]}function Se(p,n){let s=Q(null),i=typeof p=="string"?p:null,[a,g]=D((typeof p=="string"?n:p)||{}),u=Q(null),f=Q(null),[c,m]=i?V(a,`${i}:data`):D(a),[l,e]=i?V({},`${i}:errors`):D({}),[d,t]=D(!1),[h,F]=D(!1),[I,E]=D(null),[Y,j]=D(!1),[z,M]=D(!1),T=Q(o=>o);Ze(()=>(s.current=!0,()=>{s.current=!1}),[]);let b=v((...o)=>{let y=typeof o[0]=="object",P=y?o[0].method:o[0],C=y?o[0].url:o[1],r=(y?o[1]:o[2])??{},O={...r,onCancelToken:S=>{if(u.current=S,r.onCancelToken)return r.onCancelToken(S)},onBefore:S=>{if(j(!1),M(!1),clearTimeout(f.current),r.onBefore)return r.onBefore(S)},onStart:S=>{if(F(!0),r.onStart)return r.onStart(S)},onProgress:S=>{if(E(S),r.onProgress)return r.onProgress(S)},onSuccess:S=>{if(s.current&&(F(!1),E(null),e({}),t(!1),j(!0),M(!0),g(J(c)),f.current=setTimeout(()=>{s.current&&M(!1)},2e3)),r.onSuccess)return r.onSuccess(S)},onError:S=>{if(s.current&&(F(!1),E(null),e(S),t(!0)),r.onError)return r.onError(S)},onCancel:()=>{if(s.current&&(F(!1),E(null)),r.onCancel)return r.onCancel()},onFinish:S=>{if(s.current&&(F(!1),E(null)),u.current=null,r.onFinish)return r.onFinish(S)}};P==="delete"?Fe.delete(C,{...O,data:T.current(c)}):Fe[P](C,T.current(c),O)},[c,e,T]),G=v((o,y)=>{m(typeof o=="string"?P=>ne(J(P),o,y):typeof o=="function"?P=>o(P):o)},[m]),X=v((o,y)=>{g(typeof o>"u"?()=>c:P=>typeof o=="string"?ne(J(P),o,y):Object.assign(J(P),o))},[c,g]),Z=v((...o)=>{o.length===0?m(a):m(y=>o.filter(P=>Xe(a,P)).reduce((P,C)=>ne(P,C,Ge(a,C)),{...y}))},[m,a]),U=v((o,y)=>{e(P=>{let C={...P,...typeof o=="string"?{[o]:y}:o};return t(Object.keys(C).length>0),C})},[e,t]),L=v((...o)=>{e(y=>{let P=Object.keys(y).reduce((C,r)=>({...C,...o.length>0&&!o.includes(r)?{[r]:y[r]}:{}}),{});return t(Object.keys(P).length>0),P})},[e,t]),k=o=>(y,P)=>{b(o,y,P)},ee=v(k("get"),[b]),A=v(k("post"),[b]),$=v(k("put"),[b]),W=v(k("patch"),[b]),H=v(k("delete"),[b]),R=v(()=>{u.current&&u.current.cancel()},[]),te=v(o=>{T.current=o},[]);return{data:c,setData:G,isDirty:!ze(c,a),errors:l,hasErrors:d,processing:h,progress:I,wasSuccessful:Y,recentlySuccessful:z,transform:te,setDefaults:X,reset:Z,setError:U,clearErrors:L,submit:b,get:ee,post:A,put:$,patch:W,delete:H,cancel:R}}import{router as et}from"@inertiajs/core";import{useEffect as tt,useRef as rt}from"react";function Te(p,n={},s={keepAlive:!1,autoStart:!0}){let i=rt(et.poll(p,n,{...s,autoStart:!1}));return tt(()=>((s.autoStart??!0)&&i.current.start(),()=>i.current.stop()),[]),{stop:i.current.stop,start:i.current.start}}import{router as N}from"@inertiajs/core";import{useEffect as ot,useState as se}from"react";function ve(p={}){let n=typeof window>"u"?null:N.getCached(window.location.pathname,p),s=typeof window>"u"?null:N.getPrefetching(window.location.pathname,p),[i,a]=se(n?.staleTimestamp||null),[g,u]=se(s!==null),[f,c]=se(n!==null);return ot(()=>{let m=N.on("prefetching",e=>{e.detail.visit.url.pathname===window.location.pathname&&u(!0)}),l=N.on("prefetched",e=>{e.detail.visit.url.pathname===window.location.pathname&&(u(!1),c(!0),a(e.detail.fetchedAt))});return()=>{l(),m()}},[]),{lastUpdatedAt:i,isPrefetching:g,isPrefetched:f,flush:()=>N.flush(window.location.pathname,p)}}import{router as nt}from"@inertiajs/core";import{createElement as st,useCallback as at,useEffect as it,useRef as ae,useState as pt}from"react";var be=({children:p,data:n,params:s,buffer:i,as:a,always:g,fallback:u})=>{g=g??!1,a=a??"div",u=u??null;let[f,c]=pt(!1),m=ae(!1),l=ae(!1),e=ae(null),d=at(()=>{if(n)return{only:Array.isArray(n)?n:[n]};if(!s)throw new Error("You must provide either a `data` or `params` prop.");return s},[s,n]);return it(()=>{if(!e.current)return;let t=new IntersectionObserver(h=>{if(!h[0].isIntersecting||(!g&&m.current&&t.disconnect(),l.current))return;m.current=!0,l.current=!0;let F=d();nt.reload({...F,onStart:I=>{l.current=!0,F.onStart?.(I)},onFinish:I=>{c(!0),l.current=!1,F.onFinish?.(I),g||t.disconnect()}})},{rootMargin:`${i||0}px`});return t.observe(e.current),()=>{t.disconnect()}},[e,d,i]),g||!f?st(a,{props:null,ref:e},f?p:u):f?p:null};be.displayName="InertiaWhenVisible";var ut=be;var fe=ct;export{He as Deferred,je as Head,Je as Link,ut as WhenVisible,ce as createInertiaApp,fe as router,Se as useForm,q as usePage,Te as usePoll,ve as usePrefetch,V as useRemember};
|
|
2
2
|
//# sourceMappingURL=index.esm.js.map
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts", "../src/createInertiaApp.ts", "../src/App.ts", "../src/HeadContext.ts", "../src/PageContext.ts", "../src/Deferred.ts", "../src/usePage.ts", "../src/Head.ts", "../src/Link.ts", "../src/useForm.ts", "../src/useRemember.ts", "../src/usePoll.ts", "../src/usePrefetch.ts", "../src/WhenVisible.ts"],
|
|
4
|
-
"sourcesContent": ["import { router as Router } from '@inertiajs/core'\n\nexport const router = Router\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './Deferred'\nexport { default as Head } from './Head'\nexport { InertiaLinkProps, default as Link } from './Link'\nexport { InertiaFormProps, default as useForm } from './useForm'\nexport { default as usePage } from './usePage'\nexport { default as usePoll } from './usePoll'\nexport { default as usePrefetch } from './usePrefetch'\nexport { default as useRemember } from './useRemember'\nexport { default as WhenVisible } from './WhenVisible'\n", "import { Page, PageProps, PageResolver, router, setupProgress } from '@inertiajs/core'\nimport { ComponentType, FunctionComponent, Key, ReactElement, ReactNode, createElement } from 'react'\nimport { renderToString } from 'react-dom/server'\nimport App from './App'\n\ntype ReactInstance = ReactElement\ntype ReactComponent = ReactNode\n\ntype HeadManagerOnUpdate = (elements: string[]) => void // TODO: When shipped, replace with: Inertia.HeadManagerOnUpdate\ntype HeadManagerTitleCallback = (title: string) => string // TODO: When shipped, replace with: Inertia.HeadManagerTitleCallback\n\ntype AppType<SharedProps extends PageProps = PageProps> = FunctionComponent<\n {\n children?: (props: { Component: ComponentType; key: Key; props: Page<SharedProps>['props'] }) => ReactNode\n } & SetupOptions<unknown, SharedProps>['props']\n>\n\nexport type SetupOptions<ElementType, SharedProps extends PageProps> = {\n el: ElementType\n App: AppType\n props: {\n initialPage: Page<SharedProps>\n initialComponent: ReactComponent\n resolveComponent: PageResolver\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdate\n }\n}\n\ntype BaseInertiaAppOptions = {\n title?: HeadManagerTitleCallback\n resolve: PageResolver\n}\n\ntype CreateInertiaAppSetupReturnType = ReactInstance | void\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = BaseInertiaAppOptions & {\n id?: string\n page?: Page | string\n render?: undefined\n progress?:\n | false\n | {\n delay?: number\n color?: string\n includeCSS?: boolean\n showSpinner?: boolean\n }\n setup(options: SetupOptions<HTMLElement, SharedProps>): CreateInertiaAppSetupReturnType\n}\n\ntype CreateInertiaAppSSRContent = { head: string[]; body: string }\ntype InertiaAppOptionsForSSR<SharedProps extends PageProps> = BaseInertiaAppOptions & {\n id?: undefined\n page: Page | string\n render: typeof renderToString\n progress?: undefined\n setup(options: SetupOptions<null, SharedProps>): ReactInstance\n}\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<CreateInertiaAppSetupReturnType>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<CreateInertiaAppSSRContent>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>({\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n}: InertiaAppOptionsForCSR<SharedProps> | InertiaAppOptionsForSSR<SharedProps>): Promise<\n CreateInertiaAppSetupReturnType | CreateInertiaAppSSRContent\n> {\n const isServer = typeof window === 'undefined'\n const el = isServer ? null : document.getElementById(id)\n const initialPage = page || JSON.parse(el.dataset.page)\n // @ts-expect-error\n const resolveComponent = (name) => Promise.resolve(resolve(name)).then((module) => module.default || module)\n\n let head = []\n\n const reactApp = await Promise.all([\n resolveComponent(initialPage.component),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n return setup({\n // @ts-expect-error\n el,\n App,\n props: {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n onHeadUpdate: isServer ? (elements) => (head = elements) : null,\n },\n })\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer) {\n const body = await render(\n createElement(\n 'div',\n {\n id,\n 'data-page': JSON.stringify(initialPage),\n },\n // @ts-expect-error\n reactApp,\n ),\n )\n\n return { head, body }\n }\n}\n", "import { createHeadManager, router } from '@inertiajs/core'\nimport { createElement, useEffect, useMemo, useState } from 'react'\nimport HeadContext from './HeadContext'\nimport PageContext from './PageContext'\n\nexport default function App({\n children,\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n}) {\n const [current, setCurrent] = useState({\n component: initialComponent || null,\n page: initialPage,\n key: null,\n })\n\n const headManager = useMemo(() => {\n return createHeadManager(\n typeof window === 'undefined',\n titleCallback || ((title) => title),\n onHeadUpdate || (() => {}),\n )\n }, [])\n\n useEffect(() => {\n router.init({\n initialPage,\n resolveComponent,\n swapComponent: async ({ component, page, preserveState }) => {\n setCurrent((current) => ({\n component,\n page,\n key: preserveState ? current.key : Date.now(),\n }))\n },\n })\n\n router.on('navigate', () => headManager.forceUpdate())\n }, [])\n\n if (!current.component) {\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(PageContext.Provider, { value: current.page }, null),\n )\n }\n\n const renderChildren =\n children ||\n (({ Component, props, key }) => {\n const child = createElement(Component, { key, ...props })\n\n if (typeof Component.layout === 'function') {\n return Component.layout(child)\n }\n\n if (Array.isArray(Component.layout)) {\n return Component.layout\n .concat(child)\n .reverse()\n .reduce((children, Layout) => createElement(Layout, { children, ...props }))\n }\n\n return child\n })\n\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(\n PageContext.Provider,\n { value: current.page },\n renderChildren({\n Component: current.component,\n key: current.key,\n props: current.page.props,\n }),\n ),\n )\n}\n\nApp.displayName = 'Inertia'\n", "import { createContext } from 'react'\n\nconst headContext = createContext(undefined)\nheadContext.displayName = 'InertiaHeadContext'\n\nexport default headContext\n", "import { createContext } from 'react'\n\nconst pageContext = createContext(undefined)\npageContext.displayName = 'InertiaPageContext'\n\nexport default pageContext\n", "import { ReactElement, useEffect, useMemo, useState } from 'react'\nimport { router } from '.'\nimport usePage from './usePage'\n\ninterface DeferredProps {\n children: ReactElement | number | string\n fallback: ReactElement | number | string\n data: string | string[]\n}\n\nconst Deferred = ({ children, data, fallback }: DeferredProps) => {\n if (!data) {\n throw new Error('`<Deferred>` requires a `data` prop to be a string or array of strings')\n }\n\n const [loaded, setLoaded] = useState(false)\n const pageProps = usePage().props\n const keys = useMemo(() => (Array.isArray(data) ? data : [data]), [data])\n\n useEffect(() => {\n const removeListener = router.on('start', (e) => {\n if (\n (e.detail.visit.only.length === 0 && e.detail.visit.except.length === 0) ||\n e.detail.visit.only.find((key) => keys.includes(key))\n ) {\n setLoaded(false)\n }\n })\n\n return () => {\n removeListener()\n }\n }, [])\n\n useEffect(() => {\n setLoaded(keys.every((key) => pageProps[key] !== undefined))\n }, [pageProps, keys])\n\n return loaded ? children : fallback\n}\n\nDeferred.displayName = 'InertiaDeferred'\n\nexport default Deferred\n", "import { Page, PageProps } from '@inertiajs/core'\nimport { useContext } from 'react'\nimport PageContext from './PageContext'\n\nexport default function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps> {\n const page = useContext(PageContext)\n\n if (!page) {\n throw new Error('usePage must be used within the Inertia component')\n }\n\n return page\n}\n", "import React, { FunctionComponent, useContext, useEffect, useMemo } from 'react'\nimport HeadContext from './HeadContext'\n\ntype InertiaHeadProps = {\n title?: string\n children?: React.ReactNode\n}\n\ntype InertiaHead = FunctionComponent<InertiaHeadProps>\n\nconst Head: InertiaHead = function ({ children, title }) {\n const headManager = useContext(HeadContext)\n const provider = useMemo(() => headManager.createProvider(), [headManager])\n\n useEffect(() => {\n return () => {\n provider.disconnect()\n }\n }, [provider])\n\n function isUnaryTag(node) {\n return (\n [\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n ].indexOf(node.type) > -1\n )\n }\n\n function renderTagStart(node) {\n const attrs = Object.keys(node.props).reduce((carry, name) => {\n if (['head-key', 'children', 'dangerouslySetInnerHTML'].includes(name)) {\n return carry\n }\n const value = node.props[name]\n if (value === '') {\n return carry + ` ${name}`\n } else {\n return carry + ` ${name}=\"${value}\"`\n }\n }, '')\n return `<${node.type}${attrs}>`\n }\n\n function renderTagChildren(node) {\n return typeof node.props.children === 'string'\n ? node.props.children\n : node.props.children.reduce((html, child) => html + renderTag(child), '')\n }\n\n function renderTag(node) {\n let html = renderTagStart(node)\n if (node.props.children) {\n html += renderTagChildren(node)\n }\n if (node.props.dangerouslySetInnerHTML) {\n html += node.props.dangerouslySetInnerHTML.__html\n }\n if (!isUnaryTag(node)) {\n html += `</${node.type}>`\n }\n return html\n }\n\n function ensureNodeHasInertiaProp(node) {\n return React.cloneElement(node, {\n inertia: node.props['head-key'] !== undefined ? node.props['head-key'] : '',\n })\n }\n\n function renderNode(node) {\n return renderTag(ensureNodeHasInertiaProp(node))\n }\n\n function renderNodes(nodes) {\n const computed = React.Children.toArray(nodes)\n .filter((node) => node)\n .map((node) => renderNode(node))\n if (title && !computed.find((tag) => tag.startsWith('<title'))) {\n computed.push(`<title inertia>${title}</title>`)\n }\n return computed\n }\n\n provider.update(renderNodes(children))\n\n return null\n}\nexport default Head\n", "import {\n FormDataConvertible,\n LinkPrefetchOption,\n mergeDataIntoQueryString,\n Method,\n PendingVisit,\n PreserveStateOption,\n Progress,\n router,\n shouldIntercept,\n} from '@inertiajs/core'\nimport { createElement, forwardRef, useEffect, useMemo, useRef, useState } from 'react'\n\nconst noop = () => undefined\n\ninterface BaseInertiaLinkProps {\n as?: string\n data?: Record<string, FormDataConvertible>\n href: string | { url: string; method: Method }\n method?: Method\n headers?: Record<string, string>\n onClick?: (event: React.MouseEvent<Element>) => void\n preserveScroll?: PreserveStateOption\n preserveState?: PreserveStateOption\n replace?: boolean\n only?: string[]\n except?: string[]\n onCancelToken?: (cancelToken: import('axios').CancelTokenSource) => void\n onBefore?: () => void\n onStart?: (event: PendingVisit) => void\n onProgress?: (progress: Progress) => void\n onFinish?: (event: PendingVisit) => void\n onCancel?: () => void\n onSuccess?: () => void\n onError?: () => void\n queryStringArrayFormat?: 'indices' | 'brackets'\n async?: boolean\n cacheFor?: number | string\n prefetch?: boolean | LinkPrefetchOption | LinkPrefetchOption[]\n}\n\nexport type InertiaLinkProps = BaseInertiaLinkProps &\n Omit<React.HTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps> &\n Omit<React.AllHTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps>\n\nconst Link = forwardRef<unknown, InertiaLinkProps>(\n (\n {\n children,\n as = 'a',\n data = {},\n href,\n method = 'get',\n preserveScroll = false,\n preserveState = null,\n replace = false,\n only = [],\n except = [],\n headers = {},\n queryStringArrayFormat = 'brackets',\n async = false,\n onClick = noop,\n onCancelToken = noop,\n onBefore = noop,\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n prefetch = false,\n cacheFor = 0,\n ...props\n },\n ref,\n ) => {\n const [inFlightCount, setInFlightCount] = useState(0)\n const hoverTimeout = useRef<number>(null)\n\n as = as.toLowerCase()\n method = typeof href === 'object' ? href.method : (method.toLowerCase() as Method)\n const [_href, _data] = mergeDataIntoQueryString(\n method,\n typeof href === 'object' ? href.url : href || '',\n data,\n queryStringArrayFormat,\n )\n const url = _href\n data = _data\n\n const baseParams = {\n data,\n method,\n preserveScroll,\n preserveState: preserveState ?? method !== 'get',\n replace,\n only,\n except,\n headers,\n async,\n }\n\n const visitParams = {\n ...baseParams,\n onCancelToken,\n onBefore,\n onStart(event) {\n setInFlightCount((count) => count + 1)\n onStart(event)\n },\n onProgress,\n onFinish(event) {\n setInFlightCount((count) => count - 1)\n onFinish(event)\n },\n onCancel,\n onSuccess,\n onError,\n }\n\n const doPrefetch = () => {\n router.prefetch(url, baseParams, { cacheFor: cacheForValue })\n }\n\n const prefetchModes: LinkPrefetchOption[] = useMemo(\n () => {\n if (prefetch === true) {\n return ['hover']\n }\n\n if (prefetch === false) {\n return []\n }\n\n if (Array.isArray(prefetch)) {\n return prefetch\n }\n\n return [prefetch]\n },\n Array.isArray(prefetch) ? prefetch : [prefetch],\n )\n\n const cacheForValue = useMemo(() => {\n if (cacheFor !== 0) {\n // If they've provided a value, respect it\n return cacheFor\n }\n\n if (prefetchModes.length === 1 && prefetchModes[0] === 'click') {\n // If they've only provided a prefetch mode of 'click',\n // we should only prefetch for the next request but not keep it around\n return 0\n }\n\n // Otherwise, default to 30 seconds\n return 30_000\n }, [cacheFor, prefetchModes])\n\n useEffect(() => {\n return () => {\n clearTimeout(hoverTimeout.current)\n }\n }, [])\n\n useEffect(() => {\n if (prefetchModes.includes('mount')) {\n setTimeout(() => doPrefetch())\n }\n }, prefetchModes)\n\n const regularEvents = {\n onClick: (event) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n event.preventDefault()\n\n router.visit(url, visitParams)\n }\n },\n }\n\n const prefetchHoverEvents = {\n onMouseEnter: () => {\n hoverTimeout.current = window.setTimeout(() => {\n doPrefetch()\n }, 75)\n },\n onMouseLeave: () => {\n clearTimeout(hoverTimeout.current)\n },\n onClick: regularEvents.onClick,\n }\n\n const prefetchClickEvents = {\n onMouseDown: (event) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onMouseUp: (event) => {\n event.preventDefault()\n router.visit(url, visitParams)\n },\n onClick: (event) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n // Let the mouseup event handle the visit\n event.preventDefault()\n }\n },\n }\n\n if (method !== 'get') {\n as = 'button'\n }\n\n const elProps = {\n a: { href: url },\n button: { type: 'button' },\n }\n\n return createElement(\n as,\n {\n ...props,\n ...(elProps[as] || {}),\n ref,\n ...(() => {\n if (prefetchModes.includes('hover')) {\n return prefetchHoverEvents\n }\n\n if (prefetchModes.includes('click')) {\n return prefetchClickEvents\n }\n\n return regularEvents\n })(),\n 'data-loading': inFlightCount > 0 ? '' : undefined,\n },\n children,\n )\n },\n)\nLink.displayName = 'InertiaLink'\n\nexport default Link\n", "import {\n FormDataConvertible,\n FormDataKeys,\n FormDataValues,\n Method,\n Progress,\n router,\n VisitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep, isEqual } from 'es-toolkit'\nimport { get, has, set } from 'es-toolkit/compat'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport useRemember from './useRemember'\n\ntype SetDataByObject<TForm> = (data: TForm) => void\ntype SetDataByMethod<TForm> = (data: (previousData: TForm) => TForm) => void\ntype SetDataByKeyValuePair<TForm> = <K extends FormDataKeys<TForm>>(key: K, value: FormDataValues<TForm, K>) => void\ntype FormDataType = Record<string, FormDataConvertible>\ntype FormOptions = Omit<VisitOptions, 'data'>\n\nexport interface InertiaFormProps<TForm extends FormDataType> {\n data: TForm\n isDirty: boolean\n errors: Partial<Record<FormDataKeys<TForm>, string>>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n setData: SetDataByObject<TForm> & SetDataByMethod<TForm> & SetDataByKeyValuePair<TForm>\n transform: (callback: (data: TForm) => object) => void\n setDefaults(): void\n setDefaults(field: FormDataKeys<TForm>, value: FormDataConvertible): void\n setDefaults(fields: Partial<TForm>): void\n reset: (...fields: FormDataKeys<TForm>[]) => void\n clearErrors: (...fields: FormDataKeys<TForm>[]) => void\n setError(field: FormDataKeys<TForm>, value: string): void\n setError(errors: Record<FormDataKeys<TForm>, string>): void\n submit: (...args: [Method, string, FormOptions?] | [{ url: string; method: Method }, FormOptions?]) => void\n get: (url: string, options?: FormOptions) => void\n patch: (url: string, options?: FormOptions) => void\n post: (url: string, options?: FormOptions) => void\n put: (url: string, options?: FormOptions) => void\n delete: (url: string, options?: FormOptions) => void\n cancel: () => void\n}\nexport default function useForm<TForm extends FormDataType>(initialValues?: TForm): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType>(\n rememberKey: string,\n initialValues?: TForm,\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType>(\n rememberKeyOrInitialValues?: string | TForm,\n maybeInitialValues?: TForm,\n): InertiaFormProps<TForm> {\n const isMounted = useRef(null)\n const rememberKey = typeof rememberKeyOrInitialValues === 'string' ? rememberKeyOrInitialValues : null\n const [defaults, setDefaults] = useState(\n (typeof rememberKeyOrInitialValues === 'string' ? maybeInitialValues : rememberKeyOrInitialValues) || ({} as TForm),\n )\n const cancelToken = useRef(null)\n const recentlySuccessfulTimeoutId = useRef(null)\n const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`) : useState(defaults)\n const [errors, setErrors] = rememberKey\n ? useRemember({} as Partial<Record<FormDataKeys<TForm>, string>>, `${rememberKey}:errors`)\n : useState({} as Partial<Record<FormDataKeys<TForm>, string>>)\n const [hasErrors, setHasErrors] = useState(false)\n const [processing, setProcessing] = useState(false)\n const [progress, setProgress] = useState(null)\n const [wasSuccessful, setWasSuccessful] = useState(false)\n const [recentlySuccessful, setRecentlySuccessful] = useState(false)\n const transform = useRef((data) => data)\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n const submit = useCallback(\n (...args) => {\n const objectPassed = typeof args[0] === 'object'\n\n const method = objectPassed ? args[0].method : args[0]\n const url = objectPassed ? args[0].url : args[1]\n const options = (objectPassed ? args[1] : args[2]) ?? {}\n\n const _options = {\n ...options,\n onCancelToken: (token) => {\n cancelToken.current = token\n\n if (options.onCancelToken) {\n return options.onCancelToken(token)\n }\n },\n onBefore: (visit) => {\n setWasSuccessful(false)\n setRecentlySuccessful(false)\n clearTimeout(recentlySuccessfulTimeoutId.current)\n\n if (options.onBefore) {\n return options.onBefore(visit)\n }\n },\n onStart: (visit) => {\n setProcessing(true)\n\n if (options.onStart) {\n return options.onStart(visit)\n }\n },\n onProgress: (event) => {\n setProgress(event)\n\n if (options.onProgress) {\n return options.onProgress(event)\n }\n },\n onSuccess: (page) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors({})\n setHasErrors(false)\n setWasSuccessful(true)\n setRecentlySuccessful(true)\n setDefaults(cloneDeep(data))\n recentlySuccessfulTimeoutId.current = setTimeout(() => {\n if (isMounted.current) {\n setRecentlySuccessful(false)\n }\n }, 2000)\n }\n\n if (options.onSuccess) {\n return options.onSuccess(page)\n }\n },\n onError: (errors) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors(errors)\n setHasErrors(true)\n }\n\n if (options.onError) {\n return options.onError(errors)\n }\n },\n onCancel: () => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n if (options.onCancel) {\n return options.onCancel()\n }\n },\n onFinish: (visit) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n cancelToken.current = null\n\n if (options.onFinish) {\n return options.onFinish(visit)\n }\n },\n }\n\n if (method === 'delete') {\n router.delete(url, { ..._options, data: transform.current(data) })\n } else {\n router[method](url, transform.current(data), _options)\n }\n },\n [data, setErrors, transform],\n )\n\n const setDataFunction = useCallback(\n (keyOrData: FormDataKeys<TForm> | Function | TForm, maybeValue?: any) => {\n if (typeof keyOrData === 'string') {\n setData((data) => set(cloneDeep(data), keyOrData, maybeValue))\n } else if (typeof keyOrData === 'function') {\n setData((data) => keyOrData(data))\n } else {\n setData(keyOrData as TForm)\n }\n },\n [setData],\n )\n\n const setDefaultsFunction = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: FormDataConvertible) => {\n if (typeof fieldOrFields === 'undefined') {\n setDefaults(() => data)\n } else {\n setDefaults((defaults) => {\n return typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign(cloneDeep(defaults), fieldOrFields)\n })\n }\n },\n [data, setDefaults],\n )\n\n const reset = useCallback(\n (...fields) => {\n if (fields.length === 0) {\n setData(defaults)\n } else {\n setData((data) =>\n (fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(defaults, key))\n .reduce(\n (carry, key) => {\n return set(carry, key, get(defaults, key))\n },\n { ...data } as TForm,\n ),\n )\n }\n },\n [setData, defaults],\n )\n\n const setError = useCallback(\n (fieldOrFields: FormDataKeys<TForm> | Record<FormDataKeys<TForm>, string>, maybeValue?: string) => {\n setErrors((errors) => {\n const newErrors = {\n ...errors,\n ...(typeof fieldOrFields === 'string'\n ? { [fieldOrFields]: maybeValue }\n : (fieldOrFields as Record<FormDataKeys<TForm>, string>)),\n }\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors\n })\n },\n [setErrors, setHasErrors],\n )\n\n const clearErrors = useCallback(\n (...fields) => {\n setErrors((errors) => {\n const newErrors = (Object.keys(errors) as Array<FormDataKeys<TForm>>).reduce(\n (carry, field) => ({\n ...carry,\n ...(fields.length > 0 && !fields.includes(field) ? { [field]: errors[field] } : {}),\n }),\n {},\n )\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors\n })\n },\n [setErrors, setHasErrors],\n )\n\n const createSubmitMethod = (method) => (url, options) => {\n submit(method, url, options)\n }\n const getMethod = useCallback(createSubmitMethod('get'), [submit])\n const post = useCallback(createSubmitMethod('post'), [submit])\n const put = useCallback(createSubmitMethod('put'), [submit])\n const patch = useCallback(createSubmitMethod('patch'), [submit])\n const deleteMethod = useCallback(createSubmitMethod('delete'), [submit])\n\n const cancel = useCallback(() => {\n if (cancelToken.current) {\n cancelToken.current.cancel()\n }\n }, [])\n\n const transformFunction = useCallback((callback) => {\n transform.current = callback\n }, [])\n\n return {\n data,\n setData: setDataFunction,\n isDirty: !isEqual(data, defaults),\n errors,\n hasErrors,\n processing,\n progress,\n wasSuccessful,\n recentlySuccessful,\n transform: transformFunction,\n setDefaults: setDefaultsFunction,\n reset,\n setError,\n clearErrors,\n submit,\n get: getMethod,\n post,\n put,\n patch,\n delete: deleteMethod,\n cancel,\n }\n}\n", "import { router } from '@inertiajs/core'\nimport { Dispatch, SetStateAction, useEffect, useState } from 'react'\n\nexport default function useRemember<State>(\n initialState: State,\n key?: string,\n): [State, Dispatch<SetStateAction<State>>] {\n const [state, setState] = useState(() => {\n const restored = router.restore(key) as State\n\n return restored !== undefined ? restored : initialState\n })\n\n useEffect(() => {\n router.remember(state, key)\n }, [state, key])\n\n return [state, setState]\n}\n", "import { PollOptions, ReloadOptions, router } from '@inertiajs/core'\nimport { useEffect, useRef } from 'react'\n\nexport default function usePoll(\n interval: number,\n requestOptions: ReloadOptions = {},\n options: PollOptions = {\n keepAlive: false,\n autoStart: true,\n },\n) {\n const pollRef = useRef(\n router.poll(interval, requestOptions, {\n ...options,\n autoStart: false,\n }),\n )\n\n useEffect(() => {\n if (options.autoStart ?? true) {\n pollRef.current.start()\n }\n\n return () => pollRef.current.stop()\n }, [])\n\n return {\n stop: pollRef.current.stop,\n start: pollRef.current.start,\n }\n}\n", "import { router, VisitOptions } from '@inertiajs/core'\nimport { useEffect, useState } from 'react'\n\nexport default function usePrefetch(options: VisitOptions = {}): {\n lastUpdatedAt: number | null\n isPrefetching: boolean\n isPrefetched: boolean\n flush: () => void\n} {\n const cached = typeof window === 'undefined' ? null : router.getCached(window.location.pathname, options)\n const inFlight = typeof window === 'undefined' ? null : router.getPrefetching(window.location.pathname, options)\n\n const [lastUpdatedAt, setLastUpdatedAt] = useState<number | null>(cached?.staleTimestamp || null)\n const [isPrefetching, setIsPrefetching] = useState(inFlight !== null)\n const [isPrefetched, setIsPrefetched] = useState(cached !== null)\n\n useEffect(() => {\n const onPrefetchingListener = router.on('prefetching', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(true)\n }\n })\n\n const onPrefetchedListener = router.on('prefetched', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(false)\n setIsPrefetched(true)\n setLastUpdatedAt(e.detail.fetchedAt)\n }\n })\n\n return () => {\n onPrefetchedListener()\n onPrefetchingListener()\n }\n }, [])\n\n return {\n lastUpdatedAt,\n isPrefetching,\n isPrefetched,\n flush: () => router.flush(window.location.pathname, options),\n }\n}\n", "import { ReloadOptions, router } from '@inertiajs/core'\nimport { createElement, ReactElement, useCallback, useEffect, useRef, useState } from 'react'\n\ninterface WhenVisibleProps {\n children: ReactElement | number | string\n fallback: ReactElement | number | string\n data?: string | string[]\n params?: ReloadOptions\n buffer?: number\n as?: string\n always?: boolean\n}\n\nconst WhenVisible = ({ children, data, params, buffer, as, always, fallback }: WhenVisibleProps) => {\n always = always ?? false\n as = as ?? 'div'\n fallback = fallback ?? null\n\n const [loaded, setLoaded] = useState(false)\n const hasFetched = useRef<boolean>(false)\n const fetching = useRef<boolean>(false)\n const ref = useRef<HTMLDivElement>(null)\n\n const getReloadParams = useCallback<() => Partial<ReloadOptions>>(() => {\n if (data) {\n return {\n only: (Array.isArray(data) ? data : [data]) as string[],\n }\n }\n\n if (!params) {\n throw new Error('You must provide either a `data` or `params` prop.')\n }\n\n return params\n }, [params, data])\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (!always && hasFetched.current) {\n observer.disconnect()\n }\n\n if (fetching.current) {\n return\n }\n\n hasFetched.current = true\n fetching.current = true\n\n const reloadParams = getReloadParams()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.current = true\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n setLoaded(true)\n fetching.current = false\n reloadParams.onFinish?.(e)\n\n if (!always) {\n observer.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${buffer || 0}px`,\n },\n )\n\n observer.observe(ref.current)\n\n return () => {\n observer.disconnect()\n }\n }, [ref, getReloadParams, buffer])\n\n if (always || !loaded) {\n return createElement(\n as,\n {\n props: null,\n ref,\n },\n loaded ? children : fallback,\n )\n }\n\n return loaded ? children : null\n}\n\nWhenVisible.displayName = 'InertiaWhenVisible'\n\nexport default WhenVisible\n"],
|
|
4
|
+
"sourcesContent": ["import { router as Router } from '@inertiajs/core'\n\nexport const router = Router\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './Deferred'\nexport { default as Head } from './Head'\nexport { InertiaLinkProps, default as Link } from './Link'\nexport { InertiaFormProps, default as useForm } from './useForm'\nexport { default as usePage } from './usePage'\nexport { default as usePoll } from './usePoll'\nexport { default as usePrefetch } from './usePrefetch'\nexport { default as useRemember } from './useRemember'\nexport { default as WhenVisible } from './WhenVisible'\n", "import { Page, PageProps, PageResolver, router, setupProgress } from '@inertiajs/core'\nimport { ComponentType, FunctionComponent, Key, ReactElement, ReactNode, createElement } from 'react'\nimport { renderToString } from 'react-dom/server'\nimport App from './App'\n\ntype ReactInstance = ReactElement\ntype ReactComponent = ReactNode\n\ntype HeadManagerOnUpdate = (elements: string[]) => void // TODO: When shipped, replace with: Inertia.HeadManagerOnUpdate\ntype HeadManagerTitleCallback = (title: string) => string // TODO: When shipped, replace with: Inertia.HeadManagerTitleCallback\n\ntype AppType<SharedProps extends PageProps = PageProps> = FunctionComponent<\n {\n children?: (props: { Component: ComponentType; key: Key; props: Page<SharedProps>['props'] }) => ReactNode\n } & SetupOptions<unknown, SharedProps>['props']\n>\n\nexport type SetupOptions<ElementType, SharedProps extends PageProps> = {\n el: ElementType\n App: AppType\n props: {\n initialPage: Page<SharedProps>\n initialComponent: ReactComponent\n resolveComponent: PageResolver\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdate\n }\n}\n\ntype BaseInertiaAppOptions = {\n title?: HeadManagerTitleCallback\n resolve: PageResolver\n}\n\ntype CreateInertiaAppSetupReturnType = ReactInstance | void\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = BaseInertiaAppOptions & {\n id?: string\n page?: Page | string\n render?: undefined\n progress?:\n | false\n | {\n delay?: number\n color?: string\n includeCSS?: boolean\n showSpinner?: boolean\n }\n setup(options: SetupOptions<HTMLElement, SharedProps>): CreateInertiaAppSetupReturnType\n}\n\ntype CreateInertiaAppSSRContent = { head: string[]; body: string }\ntype InertiaAppOptionsForSSR<SharedProps extends PageProps> = BaseInertiaAppOptions & {\n id?: undefined\n page: Page | string\n render: typeof renderToString\n progress?: undefined\n setup(options: SetupOptions<null, SharedProps>): ReactInstance\n}\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<CreateInertiaAppSetupReturnType>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<CreateInertiaAppSSRContent>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>({\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n}: InertiaAppOptionsForCSR<SharedProps> | InertiaAppOptionsForSSR<SharedProps>): Promise<\n CreateInertiaAppSetupReturnType | CreateInertiaAppSSRContent\n> {\n const isServer = typeof window === 'undefined'\n const el = isServer ? null : document.getElementById(id)\n const initialPage = page || JSON.parse(el.dataset.page)\n // @ts-expect-error\n const resolveComponent = (name) => Promise.resolve(resolve(name)).then((module) => module.default || module)\n\n let head = []\n\n const reactApp = await Promise.all([\n resolveComponent(initialPage.component),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n return setup({\n // @ts-expect-error\n el,\n App,\n props: {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n onHeadUpdate: isServer ? (elements) => (head = elements) : null,\n },\n })\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer) {\n const body = await render(\n createElement(\n 'div',\n {\n id,\n 'data-page': JSON.stringify(initialPage),\n },\n // @ts-expect-error\n reactApp,\n ),\n )\n\n return { head, body }\n }\n}\n", "import { createHeadManager, router } from '@inertiajs/core'\nimport { createElement, useEffect, useMemo, useState } from 'react'\nimport HeadContext from './HeadContext'\nimport PageContext from './PageContext'\n\nexport default function App({\n children,\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n}) {\n const [current, setCurrent] = useState({\n component: initialComponent || null,\n page: initialPage,\n key: null,\n })\n\n const headManager = useMemo(() => {\n return createHeadManager(\n typeof window === 'undefined',\n titleCallback || ((title) => title),\n onHeadUpdate || (() => {}),\n )\n }, [])\n\n useEffect(() => {\n router.init({\n initialPage,\n resolveComponent,\n swapComponent: async ({ component, page, preserveState }) => {\n setCurrent((current) => ({\n component,\n page,\n key: preserveState ? current.key : Date.now(),\n }))\n },\n })\n\n router.on('navigate', () => headManager.forceUpdate())\n }, [])\n\n if (!current.component) {\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(PageContext.Provider, { value: current.page }, null),\n )\n }\n\n const renderChildren =\n children ||\n (({ Component, props, key }) => {\n const child = createElement(Component, { key, ...props })\n\n if (typeof Component.layout === 'function') {\n return Component.layout(child)\n }\n\n if (Array.isArray(Component.layout)) {\n return Component.layout\n .concat(child)\n .reverse()\n .reduce((children, Layout) => createElement(Layout, { children, ...props }))\n }\n\n return child\n })\n\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(\n PageContext.Provider,\n { value: current.page },\n renderChildren({\n Component: current.component,\n key: current.key,\n props: current.page.props,\n }),\n ),\n )\n}\n\nApp.displayName = 'Inertia'\n", "import { createContext } from 'react'\n\nconst headContext = createContext(undefined)\nheadContext.displayName = 'InertiaHeadContext'\n\nexport default headContext\n", "import { createContext } from 'react'\n\nconst pageContext = createContext(undefined)\npageContext.displayName = 'InertiaPageContext'\n\nexport default pageContext\n", "import { ReactElement, useEffect, useMemo, useState } from 'react'\nimport { router } from '.'\nimport usePage from './usePage'\n\ninterface DeferredProps {\n children: ReactElement | number | string\n fallback: ReactElement | number | string\n data: string | string[]\n}\n\nconst Deferred = ({ children, data, fallback }: DeferredProps) => {\n if (!data) {\n throw new Error('`<Deferred>` requires a `data` prop to be a string or array of strings')\n }\n\n const [loaded, setLoaded] = useState(false)\n const pageProps = usePage().props\n const keys = useMemo(() => (Array.isArray(data) ? data : [data]), [data])\n\n useEffect(() => {\n const removeListener = router.on('start', (e) => {\n if (\n (e.detail.visit.only.length === 0 && e.detail.visit.except.length === 0) ||\n e.detail.visit.only.find((key) => keys.includes(key))\n ) {\n setLoaded(false)\n }\n })\n\n return () => {\n removeListener()\n }\n }, [])\n\n useEffect(() => {\n setLoaded(keys.every((key) => pageProps[key] !== undefined))\n }, [pageProps, keys])\n\n return loaded ? children : fallback\n}\n\nDeferred.displayName = 'InertiaDeferred'\n\nexport default Deferred\n", "import { Page, PageProps } from '@inertiajs/core'\nimport { useContext } from 'react'\nimport PageContext from './PageContext'\n\nexport default function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps> {\n const page = useContext(PageContext)\n\n if (!page) {\n throw new Error('usePage must be used within the Inertia component')\n }\n\n return page\n}\n", "import React, { FunctionComponent, useContext, useEffect, useMemo } from 'react'\nimport HeadContext from './HeadContext'\n\ntype InertiaHeadProps = {\n title?: string\n children?: React.ReactNode\n}\n\ntype InertiaHead = FunctionComponent<InertiaHeadProps>\n\nconst Head: InertiaHead = function ({ children, title }) {\n const headManager = useContext(HeadContext)\n const provider = useMemo(() => headManager.createProvider(), [headManager])\n\n useEffect(() => {\n return () => {\n provider.disconnect()\n }\n }, [provider])\n\n function isUnaryTag(node) {\n return (\n [\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n ].indexOf(node.type) > -1\n )\n }\n\n function renderTagStart(node) {\n const attrs = Object.keys(node.props).reduce((carry, name) => {\n if (['head-key', 'children', 'dangerouslySetInnerHTML'].includes(name)) {\n return carry\n }\n const value = node.props[name]\n if (value === '') {\n return carry + ` ${name}`\n } else {\n return carry + ` ${name}=\"${value}\"`\n }\n }, '')\n return `<${node.type}${attrs}>`\n }\n\n function renderTagChildren(node) {\n return typeof node.props.children === 'string'\n ? node.props.children\n : node.props.children.reduce((html, child) => html + renderTag(child), '')\n }\n\n function renderTag(node) {\n let html = renderTagStart(node)\n if (node.props.children) {\n html += renderTagChildren(node)\n }\n if (node.props.dangerouslySetInnerHTML) {\n html += node.props.dangerouslySetInnerHTML.__html\n }\n if (!isUnaryTag(node)) {\n html += `</${node.type}>`\n }\n return html\n }\n\n function ensureNodeHasInertiaProp(node) {\n return React.cloneElement(node, {\n inertia: node.props['head-key'] !== undefined ? node.props['head-key'] : '',\n })\n }\n\n function renderNode(node) {\n return renderTag(ensureNodeHasInertiaProp(node))\n }\n\n function renderNodes(nodes) {\n const computed = React.Children.toArray(nodes)\n .filter((node) => node)\n .map((node) => renderNode(node))\n if (title && !computed.find((tag) => tag.startsWith('<title'))) {\n computed.push(`<title inertia>${title}</title>`)\n }\n return computed\n }\n\n provider.update(renderNodes(children))\n\n return null\n}\nexport default Head\n", "import {\n FormDataConvertible,\n LinkPrefetchOption,\n mergeDataIntoQueryString,\n Method,\n PendingVisit,\n PreserveStateOption,\n Progress,\n router,\n shouldIntercept,\n} from '@inertiajs/core'\nimport { createElement, forwardRef, useEffect, useMemo, useRef, useState } from 'react'\n\nconst noop = () => undefined\n\ninterface BaseInertiaLinkProps {\n as?: string\n data?: Record<string, FormDataConvertible>\n href: string | { url: string; method: Method }\n method?: Method\n headers?: Record<string, string>\n onClick?: (event: React.MouseEvent<Element>) => void\n preserveScroll?: PreserveStateOption\n preserveState?: PreserveStateOption\n replace?: boolean\n only?: string[]\n except?: string[]\n onCancelToken?: (cancelToken: import('axios').CancelTokenSource) => void\n onBefore?: () => void\n onStart?: (event: PendingVisit) => void\n onProgress?: (progress: Progress) => void\n onFinish?: (event: PendingVisit) => void\n onCancel?: () => void\n onSuccess?: () => void\n onError?: () => void\n queryStringArrayFormat?: 'indices' | 'brackets'\n async?: boolean\n cacheFor?: number | string\n prefetch?: boolean | LinkPrefetchOption | LinkPrefetchOption[]\n}\n\nexport type InertiaLinkProps = BaseInertiaLinkProps &\n Omit<React.HTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps> &\n Omit<React.AllHTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps>\n\nconst Link = forwardRef<unknown, InertiaLinkProps>(\n (\n {\n children,\n as = 'a',\n data = {},\n href,\n method = 'get',\n preserveScroll = false,\n preserveState = null,\n replace = false,\n only = [],\n except = [],\n headers = {},\n queryStringArrayFormat = 'brackets',\n async = false,\n onClick = noop,\n onCancelToken = noop,\n onBefore = noop,\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n prefetch = false,\n cacheFor = 0,\n ...props\n },\n ref,\n ) => {\n const [inFlightCount, setInFlightCount] = useState(0)\n const hoverTimeout = useRef<number>(null)\n\n as = as.toLowerCase()\n method = typeof href === 'object' ? href.method : (method.toLowerCase() as Method)\n const [_href, _data] = mergeDataIntoQueryString(\n method,\n typeof href === 'object' ? href.url : href || '',\n data,\n queryStringArrayFormat,\n )\n const url = _href\n data = _data\n\n const baseParams = {\n data,\n method,\n preserveScroll,\n preserveState: preserveState ?? method !== 'get',\n replace,\n only,\n except,\n headers,\n async,\n }\n\n const visitParams = {\n ...baseParams,\n onCancelToken,\n onBefore,\n onStart(event) {\n setInFlightCount((count) => count + 1)\n onStart(event)\n },\n onProgress,\n onFinish(event) {\n setInFlightCount((count) => count - 1)\n onFinish(event)\n },\n onCancel,\n onSuccess,\n onError,\n }\n\n const doPrefetch = () => {\n router.prefetch(url, baseParams, { cacheFor: cacheForValue })\n }\n\n const prefetchModes: LinkPrefetchOption[] = useMemo(\n () => {\n if (prefetch === true) {\n return ['hover']\n }\n\n if (prefetch === false) {\n return []\n }\n\n if (Array.isArray(prefetch)) {\n return prefetch\n }\n\n return [prefetch]\n },\n Array.isArray(prefetch) ? prefetch : [prefetch],\n )\n\n const cacheForValue = useMemo(() => {\n if (cacheFor !== 0) {\n // If they've provided a value, respect it\n return cacheFor\n }\n\n if (prefetchModes.length === 1 && prefetchModes[0] === 'click') {\n // If they've only provided a prefetch mode of 'click',\n // we should only prefetch for the next request but not keep it around\n return 0\n }\n\n // Otherwise, default to 30 seconds\n return 30_000\n }, [cacheFor, prefetchModes])\n\n useEffect(() => {\n return () => {\n clearTimeout(hoverTimeout.current)\n }\n }, [])\n\n useEffect(() => {\n if (prefetchModes.includes('mount')) {\n setTimeout(() => doPrefetch())\n }\n }, prefetchModes)\n\n const regularEvents = {\n onClick: (event) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n event.preventDefault()\n\n router.visit(url, visitParams)\n }\n },\n }\n\n const prefetchHoverEvents = {\n onMouseEnter: () => {\n hoverTimeout.current = window.setTimeout(() => {\n doPrefetch()\n }, 75)\n },\n onMouseLeave: () => {\n clearTimeout(hoverTimeout.current)\n },\n onClick: regularEvents.onClick,\n }\n\n const prefetchClickEvents = {\n onMouseDown: (event) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onMouseUp: (event) => {\n event.preventDefault()\n router.visit(url, visitParams)\n },\n onClick: (event) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n // Let the mouseup event handle the visit\n event.preventDefault()\n }\n },\n }\n\n if (method !== 'get') {\n as = 'button'\n }\n\n const elProps = {\n a: { href: url },\n button: { type: 'button' },\n }\n\n return createElement(\n as,\n {\n ...props,\n ...(elProps[as] || {}),\n ref,\n ...(() => {\n if (prefetchModes.includes('hover')) {\n return prefetchHoverEvents\n }\n\n if (prefetchModes.includes('click')) {\n return prefetchClickEvents\n }\n\n return regularEvents\n })(),\n 'data-loading': inFlightCount > 0 ? '' : undefined,\n },\n children,\n )\n },\n)\nLink.displayName = 'InertiaLink'\n\nexport default Link\n", "import {\n FormDataConvertible,\n FormDataKeys,\n FormDataValues,\n Method,\n Progress,\n router,\n VisitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep, isEqual } from 'es-toolkit'\nimport { get, has, set } from 'es-toolkit/compat'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport useRemember from './useRemember'\n\ntype SetDataByObject<TForm> = (data: TForm) => void\ntype SetDataByMethod<TForm> = (data: (previousData: TForm) => TForm) => void\ntype SetDataByKeyValuePair<TForm extends Record<any, any>> = <K extends FormDataKeys<TForm>>(key: K, value: FormDataValues<TForm, K>) => void\ntype FormDataType = Record<string, FormDataConvertible>\ntype FormOptions = Omit<VisitOptions, 'data'>\n\nexport interface InertiaFormProps<TForm extends FormDataType> {\n data: TForm\n isDirty: boolean\n errors: Partial<Record<FormDataKeys<TForm>, string>>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n setData: SetDataByObject<TForm> & SetDataByMethod<TForm> & SetDataByKeyValuePair<TForm>\n transform: (callback: (data: TForm) => object) => void\n setDefaults(): void\n setDefaults(field: FormDataKeys<TForm>, value: FormDataConvertible): void\n setDefaults(fields: Partial<TForm>): void\n reset: (...fields: FormDataKeys<TForm>[]) => void\n clearErrors: (...fields: FormDataKeys<TForm>[]) => void\n setError(field: FormDataKeys<TForm>, value: string): void\n setError(errors: Record<FormDataKeys<TForm>, string>): void\n submit: (...args: [Method, string, FormOptions?] | [{ url: string; method: Method }, FormOptions?]) => void\n get: (url: string, options?: FormOptions) => void\n patch: (url: string, options?: FormOptions) => void\n post: (url: string, options?: FormOptions) => void\n put: (url: string, options?: FormOptions) => void\n delete: (url: string, options?: FormOptions) => void\n cancel: () => void\n}\nexport default function useForm<TForm extends FormDataType>(initialValues?: TForm): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType>(\n rememberKey: string,\n initialValues?: TForm,\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType>(\n rememberKeyOrInitialValues?: string | TForm,\n maybeInitialValues?: TForm,\n): InertiaFormProps<TForm> {\n const isMounted = useRef(null)\n const rememberKey = typeof rememberKeyOrInitialValues === 'string' ? rememberKeyOrInitialValues : null\n const [defaults, setDefaults] = useState(\n (typeof rememberKeyOrInitialValues === 'string' ? maybeInitialValues : rememberKeyOrInitialValues) || ({} as TForm),\n )\n const cancelToken = useRef(null)\n const recentlySuccessfulTimeoutId = useRef(null)\n const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`) : useState(defaults)\n const [errors, setErrors] = rememberKey\n ? useRemember({} as Partial<Record<FormDataKeys<TForm>, string>>, `${rememberKey}:errors`)\n : useState({} as Partial<Record<FormDataKeys<TForm>, string>>)\n const [hasErrors, setHasErrors] = useState(false)\n const [processing, setProcessing] = useState(false)\n const [progress, setProgress] = useState(null)\n const [wasSuccessful, setWasSuccessful] = useState(false)\n const [recentlySuccessful, setRecentlySuccessful] = useState(false)\n const transform = useRef((data) => data)\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n const submit = useCallback(\n (...args) => {\n const objectPassed = typeof args[0] === 'object'\n\n const method = objectPassed ? args[0].method : args[0]\n const url = objectPassed ? args[0].url : args[1]\n const options = (objectPassed ? args[1] : args[2]) ?? {}\n\n const _options = {\n ...options,\n onCancelToken: (token) => {\n cancelToken.current = token\n\n if (options.onCancelToken) {\n return options.onCancelToken(token)\n }\n },\n onBefore: (visit) => {\n setWasSuccessful(false)\n setRecentlySuccessful(false)\n clearTimeout(recentlySuccessfulTimeoutId.current)\n\n if (options.onBefore) {\n return options.onBefore(visit)\n }\n },\n onStart: (visit) => {\n setProcessing(true)\n\n if (options.onStart) {\n return options.onStart(visit)\n }\n },\n onProgress: (event) => {\n setProgress(event)\n\n if (options.onProgress) {\n return options.onProgress(event)\n }\n },\n onSuccess: (page) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors({})\n setHasErrors(false)\n setWasSuccessful(true)\n setRecentlySuccessful(true)\n setDefaults(cloneDeep(data))\n recentlySuccessfulTimeoutId.current = setTimeout(() => {\n if (isMounted.current) {\n setRecentlySuccessful(false)\n }\n }, 2000)\n }\n\n if (options.onSuccess) {\n return options.onSuccess(page)\n }\n },\n onError: (errors) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors(errors)\n setHasErrors(true)\n }\n\n if (options.onError) {\n return options.onError(errors)\n }\n },\n onCancel: () => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n if (options.onCancel) {\n return options.onCancel()\n }\n },\n onFinish: (visit) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n cancelToken.current = null\n\n if (options.onFinish) {\n return options.onFinish(visit)\n }\n },\n }\n\n if (method === 'delete') {\n router.delete(url, { ..._options, data: transform.current(data) })\n } else {\n router[method](url, transform.current(data), _options)\n }\n },\n [data, setErrors, transform],\n )\n\n const setDataFunction = useCallback(\n (keyOrData: FormDataKeys<TForm> | Function | TForm, maybeValue?: any) => {\n if (typeof keyOrData === 'string') {\n setData((data) => set(cloneDeep(data), keyOrData, maybeValue))\n } else if (typeof keyOrData === 'function') {\n setData((data) => keyOrData(data))\n } else {\n setData(keyOrData as TForm)\n }\n },\n [setData],\n )\n\n const setDefaultsFunction = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: FormDataConvertible) => {\n if (typeof fieldOrFields === 'undefined') {\n setDefaults(() => data)\n } else {\n setDefaults((defaults) => {\n return typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign(cloneDeep(defaults), fieldOrFields)\n })\n }\n },\n [data, setDefaults],\n )\n\n const reset = useCallback(\n (...fields) => {\n if (fields.length === 0) {\n setData(defaults)\n } else {\n setData((data) =>\n (fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(defaults, key))\n .reduce(\n (carry, key) => {\n return set(carry, key, get(defaults, key))\n },\n { ...data } as TForm,\n ),\n )\n }\n },\n [setData, defaults],\n )\n\n const setError = useCallback(\n (fieldOrFields: FormDataKeys<TForm> | Record<FormDataKeys<TForm>, string>, maybeValue?: string) => {\n setErrors((errors) => {\n const newErrors = {\n ...errors,\n ...(typeof fieldOrFields === 'string'\n ? { [fieldOrFields]: maybeValue }\n : (fieldOrFields as Record<FormDataKeys<TForm>, string>)),\n }\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors\n })\n },\n [setErrors, setHasErrors],\n )\n\n const clearErrors = useCallback(\n (...fields) => {\n setErrors((errors) => {\n const newErrors = (Object.keys(errors) as Array<FormDataKeys<TForm>>).reduce(\n (carry, field) => ({\n ...carry,\n ...(fields.length > 0 && !fields.includes(field) ? { [field]: errors[field] } : {}),\n }),\n {},\n )\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors\n })\n },\n [setErrors, setHasErrors],\n )\n\n const createSubmitMethod = (method) => (url, options) => {\n submit(method, url, options)\n }\n const getMethod = useCallback(createSubmitMethod('get'), [submit])\n const post = useCallback(createSubmitMethod('post'), [submit])\n const put = useCallback(createSubmitMethod('put'), [submit])\n const patch = useCallback(createSubmitMethod('patch'), [submit])\n const deleteMethod = useCallback(createSubmitMethod('delete'), [submit])\n\n const cancel = useCallback(() => {\n if (cancelToken.current) {\n cancelToken.current.cancel()\n }\n }, [])\n\n const transformFunction = useCallback((callback) => {\n transform.current = callback\n }, [])\n\n return {\n data,\n setData: setDataFunction,\n isDirty: !isEqual(data, defaults),\n errors,\n hasErrors,\n processing,\n progress,\n wasSuccessful,\n recentlySuccessful,\n transform: transformFunction,\n setDefaults: setDefaultsFunction,\n reset,\n setError,\n clearErrors,\n submit,\n get: getMethod,\n post,\n put,\n patch,\n delete: deleteMethod,\n cancel,\n }\n}\n", "import { router } from '@inertiajs/core'\nimport { Dispatch, SetStateAction, useEffect, useState } from 'react'\n\nexport default function useRemember<State>(\n initialState: State,\n key?: string,\n): [State, Dispatch<SetStateAction<State>>] {\n const [state, setState] = useState(() => {\n const restored = router.restore(key) as State\n\n return restored !== undefined ? restored : initialState\n })\n\n useEffect(() => {\n router.remember(state, key)\n }, [state, key])\n\n return [state, setState]\n}\n", "import { PollOptions, ReloadOptions, router } from '@inertiajs/core'\nimport { useEffect, useRef } from 'react'\n\nexport default function usePoll(\n interval: number,\n requestOptions: ReloadOptions = {},\n options: PollOptions = {\n keepAlive: false,\n autoStart: true,\n },\n) {\n const pollRef = useRef(\n router.poll(interval, requestOptions, {\n ...options,\n autoStart: false,\n }),\n )\n\n useEffect(() => {\n if (options.autoStart ?? true) {\n pollRef.current.start()\n }\n\n return () => pollRef.current.stop()\n }, [])\n\n return {\n stop: pollRef.current.stop,\n start: pollRef.current.start,\n }\n}\n", "import { router, VisitOptions } from '@inertiajs/core'\nimport { useEffect, useState } from 'react'\n\nexport default function usePrefetch(options: VisitOptions = {}): {\n lastUpdatedAt: number | null\n isPrefetching: boolean\n isPrefetched: boolean\n flush: () => void\n} {\n const cached = typeof window === 'undefined' ? null : router.getCached(window.location.pathname, options)\n const inFlight = typeof window === 'undefined' ? null : router.getPrefetching(window.location.pathname, options)\n\n const [lastUpdatedAt, setLastUpdatedAt] = useState<number | null>(cached?.staleTimestamp || null)\n const [isPrefetching, setIsPrefetching] = useState(inFlight !== null)\n const [isPrefetched, setIsPrefetched] = useState(cached !== null)\n\n useEffect(() => {\n const onPrefetchingListener = router.on('prefetching', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(true)\n }\n })\n\n const onPrefetchedListener = router.on('prefetched', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(false)\n setIsPrefetched(true)\n setLastUpdatedAt(e.detail.fetchedAt)\n }\n })\n\n return () => {\n onPrefetchedListener()\n onPrefetchingListener()\n }\n }, [])\n\n return {\n lastUpdatedAt,\n isPrefetching,\n isPrefetched,\n flush: () => router.flush(window.location.pathname, options),\n }\n}\n", "import { ReloadOptions, router } from '@inertiajs/core'\nimport { createElement, ReactElement, useCallback, useEffect, useRef, useState } from 'react'\n\ninterface WhenVisibleProps {\n children: ReactElement | number | string\n fallback: ReactElement | number | string\n data?: string | string[]\n params?: ReloadOptions\n buffer?: number\n as?: string\n always?: boolean\n}\n\nconst WhenVisible = ({ children, data, params, buffer, as, always, fallback }: WhenVisibleProps) => {\n always = always ?? false\n as = as ?? 'div'\n fallback = fallback ?? null\n\n const [loaded, setLoaded] = useState(false)\n const hasFetched = useRef<boolean>(false)\n const fetching = useRef<boolean>(false)\n const ref = useRef<HTMLDivElement>(null)\n\n const getReloadParams = useCallback<() => Partial<ReloadOptions>>(() => {\n if (data) {\n return {\n only: (Array.isArray(data) ? data : [data]) as string[],\n }\n }\n\n if (!params) {\n throw new Error('You must provide either a `data` or `params` prop.')\n }\n\n return params\n }, [params, data])\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (!always && hasFetched.current) {\n observer.disconnect()\n }\n\n if (fetching.current) {\n return\n }\n\n hasFetched.current = true\n fetching.current = true\n\n const reloadParams = getReloadParams()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.current = true\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n setLoaded(true)\n fetching.current = false\n reloadParams.onFinish?.(e)\n\n if (!always) {\n observer.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${buffer || 0}px`,\n },\n )\n\n observer.observe(ref.current)\n\n return () => {\n observer.disconnect()\n }\n }, [ref, getReloadParams, buffer])\n\n if (always || !loaded) {\n return createElement(\n as,\n {\n props: null,\n ref,\n },\n loaded ? children : fallback,\n )\n }\n\n return loaded ? children : null\n}\n\nWhenVisible.displayName = 'InertiaWhenVisible'\n\nexport default WhenVisible\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["Router", "router", "setupProgress", "createElement", "createHeadManager", "router", "createElement", "useEffect", "useMemo", "useState", "createContext", "headContext", "HeadContext_default", "createContext", "pageContext", "PageContext_default", "App", "children", "initialPage", "initialComponent", "resolveComponent", "titleCallback", "onHeadUpdate", "current", "setCurrent", "useState", "headManager", "useMemo", "createHeadManager", "title", "useEffect", "router", "component", "page", "preserveState", "createElement", "HeadContext_default", "PageContext_default", "renderChildren", "Component", "props", "key", "child", "Layout", "createInertiaApp", "id", "resolve", "setup", "title", "progress", "page", "render", "isServer", "el", "initialPage", "resolveComponent", "name", "module", "head", "reactApp", "router", "initialComponent", "App", "elements", "setupProgress", "body", "createElement", "useEffect", "useMemo", "useState", "useContext", "usePage", "page", "useContext", "PageContext_default", "Deferred", "children", "data", "fallback", "loaded", "setLoaded", "useState", "pageProps", "usePage", "keys", "useMemo", "useEffect", "removeListener", "router", "e", "key", "Deferred_default", "React", "useContext", "useEffect", "useMemo", "Head", "children", "title", "headManager", "useContext", "HeadContext_default", "provider", "useMemo", "useEffect", "isUnaryTag", "node", "renderTagStart", "attrs", "carry", "name", "value", "renderTagChildren", "html", "child", "renderTag", "ensureNodeHasInertiaProp", "React", "renderNode", "renderNodes", "nodes", "computed", "tag", "Head_default", "mergeDataIntoQueryString", "router", "shouldIntercept", "createElement", "forwardRef", "useEffect", "useMemo", "useRef", "useState", "noop", "Link", "children", "as", "data", "href", "method", "preserveScroll", "preserveState", "replace", "only", "except", "headers", "queryStringArrayFormat", "async", "onClick", "onCancelToken", "onBefore", "onStart", "onProgress", "onFinish", "onCancel", "onSuccess", "onError", "prefetch", "cacheFor", "props", "ref", "inFlightCount", "setInFlightCount", "hoverTimeout", "_href", "_data", "url", "baseParams", "visitParams", "event", "count", "doPrefetch", "cacheForValue", "prefetchModes", "regularEvents", "prefetchHoverEvents", "prefetchClickEvents", "Link_default", "router", "cloneDeep", "isEqual", "get", "has", "set", "useCallback", "useEffect", "useRef", "useState", "router", "useEffect", "useState", "useRemember", "initialState", "key", "state", "setState", "restored", "useForm", "rememberKeyOrInitialValues", "maybeInitialValues", "isMounted", "useRef", "rememberKey", "defaults", "setDefaults", "useState", "cancelToken", "recentlySuccessfulTimeoutId", "data", "setData", "useRemember", "errors", "setErrors", "hasErrors", "setHasErrors", "processing", "setProcessing", "progress", "setProgress", "wasSuccessful", "setWasSuccessful", "recentlySuccessful", "setRecentlySuccessful", "transform", "useEffect", "submit", "useCallback", "args", "objectPassed", "method", "url", "options", "_options", "token", "visit", "event", "page", "cloneDeep", "router", "setDataFunction", "keyOrData", "maybeValue", "set", "setDefaultsFunction", "fieldOrFields", "reset", "fields", "key", "has", "carry", "get", "setError", "newErrors", "clearErrors", "field", "createSubmitMethod", "getMethod", "post", "put", "patch", "deleteMethod", "cancel", "transformFunction", "callback", "isEqual", "router", "useEffect", "useRef", "usePoll", "interval", "requestOptions", "options", "pollRef", "router", "useEffect", "useState", "usePrefetch", "options", "cached", "inFlight", "lastUpdatedAt", "setLastUpdatedAt", "isPrefetching", "setIsPrefetching", "isPrefetched", "setIsPrefetched", "onPrefetchingListener", "onPrefetchedListener", "router", "createElement", "useCallback", "useEffect", "useRef", "useState", "WhenVisible", "children", "data", "params", "buffer", "as", "always", "fallback", "loaded", "setLoaded", "hasFetched", "fetching", "ref", "getReloadParams", "observer", "entries", "reloadParams", "e", "WhenVisible_default", "router", "Router"]
|
|
7
7
|
}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var He=Object.create;var ee=Object.defineProperty;var Ke=Object.getOwnPropertyDescriptor;var Be=Object.getOwnPropertyNames;var Ve=Object.getPrototypeOf,Ne=Object.prototype.hasOwnProperty;var je=(r,t)=>{for(var o in t)ee(r,o,{get:t[o],enumerable:!0})},Fe=(r,t,o,p)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Be(t))!Ne.call(r,n)&&n!==o&&ee(r,n,{get:()=>t[n],enumerable:!(p=Ke(t,n))||p.enumerable});return r};var Ue=(r,t,o)=>(o=r!=null?He(Ve(r)):{},Fe(t||!r||!r.__esModule?ee(o,"default",{value:r,enumerable:!0}):o,r)),$e=r=>Fe(ee({},"__esModule",{value:!0}),r);var _e={};je(_e,{Deferred:()=>xe,Head:()=>Ie,Link:()=>ke,WhenVisible:()=>Me,createInertiaApp:()=>de,router:()=>fe,useForm:()=>Pe,usePage:()=>Y,usePoll:()=>ye,usePrefetch:()=>he,useRemember:()=>N});module.exports=$e(_e);var Le=require("@inertiajs/core");var re=require("@inertiajs/core"),Ce=require("react");var Q=require("@inertiajs/core"),C=require("react");var Se=require("react"),Te=(0,Se.createContext)(void 0);Te.displayName="InertiaHeadContext";var q=Te;var ve=require("react"),be=(0,ve.createContext)(void 0);be.displayName="InertiaPageContext";var J=be;function te({children:r,initialPage:t,initialComponent:o,resolveComponent:p,titleCallback:n,onHeadUpdate:P}){let[c,m]=(0,C.useState)({component:o||null,page:t,key:null}),l=(0,C.useMemo)(()=>(0,Q.createHeadManager)(typeof window>"u",n||(d=>d),P||(()=>{})),[]);if((0,C.useEffect)(()=>{Q.router.init({initialPage:t,resolveComponent:p,swapComponent:async({component:d,page:e,preserveState:f})=>{m(s=>({component:d,page:e,key:f?s.key:Date.now()}))}}),Q.router.on("navigate",()=>l.forceUpdate())},[]),!c.component)return(0,C.createElement)(q.Provider,{value:l},(0,C.createElement)(J.Provider,{value:c.page},null));let g=r||(({Component:d,props:e,key:f})=>{let s=(0,C.createElement)(d,{key:f,...e});return typeof d.layout=="function"?d.layout(s):Array.isArray(d.layout)?d.layout.concat(s).reverse().reduce((F,S)=>(0,C.createElement)(S,{children:F,...e})):s});return(0,C.createElement)(q.Provider,{value:l},(0,C.createElement)(J.Provider,{value:c.page},g({Component:c.component,key:c.key,props:c.page.props})))}te.displayName="Inertia";async function de({id:r="app",resolve:t,setup:o,title:p,progress:n={},page:P,render:c}){let m=typeof window>"u",l=m?null:document.getElementById(r),g=P||JSON.parse(l.dataset.page),d=s=>Promise.resolve(t(s)).then(F=>F.default||F),e=[],f=await Promise.all([d(g.component),re.router.decryptHistory().catch(()=>{})]).then(([s])=>o({el:l,App:te,props:{initialPage:g,initialComponent:s,resolveComponent:d,titleCallback:p,onHeadUpdate:m?F=>e=F:null}}));if(!m&&n&&(0,re.setupProgress)(n),m){let s=await c((0,Ce.createElement)("div",{id:r,"data-page":JSON.stringify(g)},f));return{head:e,body:s}}}var H=require("react");var Re=require("react");function Y(){let r=(0,Re.useContext)(J);if(!r)throw new Error("usePage must be used within the Inertia component");return r}var De=({children:r,data:t,fallback:o})=>{if(!t)throw new Error("`<Deferred>` requires a `data` prop to be a string or array of strings");let[p,n]=(0,H.useState)(!1),P=Y().props,c=(0,H.useMemo)(()=>Array.isArray(t)?t:[t],[t]);return(0,H.useEffect)(()=>{let m=fe.on("start",l=>{(l.detail.visit.only.length===0&&l.detail.visit.except.length===0||l.detail.visit.only.find(g=>c.includes(g)))&&n(!1)});return()=>{m()}},[]),(0,H.useEffect)(()=>{n(c.every(m=>P[m]!==void 0))},[P,c]),p?r:o};De.displayName="InertiaDeferred";var xe=De;var k=Ue(require("react"),1);var We=function({children:r,title:t}){let o=(0,k.useContext)(q),p=(0,k.useMemo)(()=>o.createProvider(),[o]);(0,k.useEffect)(()=>()=>{p.disconnect()},[p]);function n(e){return["area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"].indexOf(e.type)>-1}function P(e){let f=Object.keys(e.props).reduce((s,F)=>{if(["head-key","children","dangerouslySetInnerHTML"].includes(F))return s;let S=e.props[F];return S===""?s+` ${F}`:s+` ${F}="${S}"`},"");return`<${e.type}${f}>`}function c(e){return typeof e.props.children=="string"?e.props.children:e.props.children.reduce((f,s)=>f+m(s),"")}function m(e){let f=P(e);return e.props.children&&(f+=c(e)),e.props.dangerouslySetInnerHTML&&(f+=e.props.dangerouslySetInnerHTML.__html),n(e)||(f+=`</${e.type}>`),f}function l(e){return k.default.cloneElement(e,{inertia:e.props["head-key"]!==void 0?e.props["head-key"]:""})}function g(e){return m(l(e))}function d(e){let f=k.default.Children.toArray(e).filter(s=>s).map(s=>g(s));return t&&!f.find(s=>s.startsWith("<title"))&&f.push(`<title inertia>${t}</title>`),f}return p.update(d(r)),null},Ie=We;var I=require("@inertiajs/core"),v=require("react"),A=()=>{},Ee=(0,v.forwardRef)(({children:r,as:t="a",data:o={},href:p,method:n="get",preserveScroll:P=!1,preserveState:c=null,replace:m=!1,only:l=[],except:g=[],headers:d={},queryStringArrayFormat:e="brackets",async:f=!1,onClick:s=A,onCancelToken:F=A,onBefore:S=A,onStart:w=A,onProgress:M=A,onFinish:se=A,onCancel:z=A,onSuccess:ae=A,onError:$=A,prefetch:b=!1,cacheFor:D=0,...ie},pe)=>{let[ue,G]=(0,v.useState)(0),W=(0,v.useRef)(null);t=t.toLowerCase(),n=typeof p=="object"?p.method:n.toLowerCase();let[L,ce]=(0,I.mergeDataIntoQueryString)(n,typeof p=="object"?p.url:p||"",o,e),B=L;o=ce;let X={data:o,method:n,preserveScroll:P,preserveState:c??n!=="get",replace:m,only:l,except:g,headers:d,async:f},Z={...X,onCancelToken:F,onBefore:S,onStart(a){G(V=>V+1),w(a)},onProgress:M,onFinish(a){G(V=>V-1),se(a)},onCancel:z,onSuccess:ae,onError:$},_=()=>{I.router.prefetch(B,X,{cacheFor:le})},E=(0,v.useMemo)(()=>b===!0?["hover"]:b===!1?[]:Array.isArray(b)?b:[b],Array.isArray(b)?b:[b]),le=(0,v.useMemo)(()=>D!==0?D:E.length===1&&E[0]==="click"?0:3e4,[D,E]);(0,v.useEffect)(()=>()=>{clearTimeout(W.current)},[]),(0,v.useEffect)(()=>{E.includes("mount")&&setTimeout(()=>_())},E);let i={onClick:a=>{s(a),(0,I.shouldIntercept)(a)&&(a.preventDefault(),I.router.visit(B,Z))}},h={onMouseEnter:()=>{W.current=window.setTimeout(()=>{_()},75)},onMouseLeave:()=>{clearTimeout(W.current)},onClick:i.onClick},y={onMouseDown:a=>{(0,I.shouldIntercept)(a)&&(a.preventDefault(),_())},onMouseUp:a=>{a.preventDefault(),I.router.visit(B,Z)},onClick:a=>{s(a),(0,I.shouldIntercept)(a)&&a.preventDefault()}};return n!=="get"&&(t="button"),(0,v.createElement)(t,{...ie,...{a:{href:B},button:{type:"button"}}[t]||{},ref:pe,...E.includes("hover")?h:E.includes("click")?y:i,"data-loading":ue>0?"":void 0},r)});Ee.displayName="InertiaLink";var ke=Ee;var ge=require("@inertiajs/core"),K=require("es-toolkit"),O=require("es-toolkit/compat"),u=require("react");var me=require("@inertiajs/core"),oe=require("react");function N(r,t){let[o,p]=(0,oe.useState)(()=>{let n=me.router.restore(t);return n!==void 0?n:r});return(0,oe.useEffect)(()=>{me.router.remember(o,t)},[o,t]),[o,p]}function Pe(r,t){let o=(0,u.useRef)(null),p=typeof r=="string"?r:null,[n,P]=(0,u.useState)((typeof r=="string"?t:r)||{}),c=(0,u.useRef)(null),m=(0,u.useRef)(null),[l,g]=p?N(n,`${p}:data`):(0,u.useState)(n),[d,e]=p?N({},`${p}:errors`):(0,u.useState)({}),[f,s]=(0,u.useState)(!1),[F,S]=(0,u.useState)(!1),[w,M]=(0,u.useState)(null),[se,z]=(0,u.useState)(!1),[ae,$]=(0,u.useState)(!1),b=(0,u.useRef)(i=>i);(0,u.useEffect)(()=>(o.current=!0,()=>{o.current=!1}),[]);let D=(0,u.useCallback)((...i)=>{let h=typeof i[0]=="object",y=h?i[0].method:i[0],x=h?i[0].url:i[1],a=(h?i[1]:i[2])??{},V={...a,onCancelToken:T=>{if(c.current=T,a.onCancelToken)return a.onCancelToken(T)},onBefore:T=>{if(z(!1),$(!1),clearTimeout(m.current),a.onBefore)return a.onBefore(T)},onStart:T=>{if(S(!0),a.onStart)return a.onStart(T)},onProgress:T=>{if(M(T),a.onProgress)return a.onProgress(T)},onSuccess:T=>{if(o.current&&(S(!1),M(null),e({}),s(!1),z(!0),$(!0),P((0,K.cloneDeep)(l)),m.current=setTimeout(()=>{o.current&&$(!1)},2e3)),a.onSuccess)return a.onSuccess(T)},onError:T=>{if(o.current&&(S(!1),M(null),e(T),s(!0)),a.onError)return a.onError(T)},onCancel:()=>{if(o.current&&(S(!1),M(null)),a.onCancel)return a.onCancel()},onFinish:T=>{if(o.current&&(S(!1),M(null)),c.current=null,a.onFinish)return a.onFinish(T)}};y==="delete"?ge.router.delete(x,{...V,data:b.current(l)}):ge.router[y](x,b.current(l),V)},[l,e,b]),ie=(0,u.useCallback)((i,h)=>{g(typeof i=="string"?y=>(0,O.set)((0,K.cloneDeep)(y),i,h):typeof i=="function"?y=>i(y):i)},[g]),pe=(0,u.useCallback)((i,h)=>{P(typeof i>"u"?()=>l:y=>typeof i=="string"?(0,O.set)((0,K.cloneDeep)(y),i,h):Object.assign((0,K.cloneDeep)(y),i))},[l,P]),ue=(0,u.useCallback)((...i)=>{i.length===0?g(n):g(h=>i.filter(y=>(0,O.has)(n,y)).reduce((y,x)=>(0,O.set)(y,x,(0,O.get)(n,x)),{...h}))},[g,n]),G=(0,u.useCallback)((i,h)=>{e(y=>{let x={...y,...typeof i=="string"?{[i]:h}:i};return s(Object.keys(x).length>0),x})},[e,s]),W=(0,u.useCallback)((...i)=>{e(h=>{let y=Object.keys(h).reduce((x,a)=>({...x,...i.length>0&&!i.includes(a)?{[a]:h[a]}:{}}),{});return s(Object.keys(y).length>0),y})},[e,s]),L=i=>(h,y)=>{D(i,h,y)},ce=(0,u.useCallback)(L("get"),[D]),B=(0,u.useCallback)(L("post"),[D]),X=(0,u.useCallback)(L("put"),[D]),Z=(0,u.useCallback)(L("patch"),[D]),_=(0,u.useCallback)(L("delete"),[D]),E=(0,u.useCallback)(()=>{c.current&&c.current.cancel()},[]),le=(0,u.useCallback)(i=>{b.current=i},[]);return{data:l,setData:ie,isDirty:!(0,K.isEqual)(l,n),errors:d,hasErrors:f,processing:F,progress:w,wasSuccessful:se,recentlySuccessful:ae,transform:le,setDefaults:pe,reset:ue,setError:G,clearErrors:W,submit:D,get:ce,post:B,put:X,patch:Z,delete:_,cancel:E}}var Ae=require("@inertiajs/core"),ne=require("react");function ye(r,t={},o={keepAlive:!1,autoStart:!0}){let p=(0,ne.useRef)(Ae.router.poll(r,t,{...o,autoStart:!1}));return(0,ne.useEffect)(()=>((o.autoStart??!0)&&p.current.start(),()=>p.current.stop()),[]),{stop:p.current.stop,start:p.current.start}}var j=require("@inertiajs/core"),U=require("react");function he(r={}){let t=typeof window>"u"?null:j.router.getCached(window.location.pathname,r),o=typeof window>"u"?null:j.router.getPrefetching(window.location.pathname,r),[p,n]=(0,U.useState)(t?.staleTimestamp||null),[P,c]=(0,U.useState)(o!==null),[m,l]=(0,U.useState)(t!==null);return(0,U.useEffect)(()=>{let g=j.router.on("prefetching",e=>{e.detail.visit.url.pathname===window.location.pathname&&c(!0)}),d=j.router.on("prefetched",e=>{e.detail.visit.url.pathname===window.location.pathname&&(c(!1),l(!0),n(e.detail.fetchedAt))});return()=>{d(),g()}},[]),{lastUpdatedAt:p,isPrefetching:P,isPrefetched:m,flush:()=>j.router.flush(window.location.pathname,r)}}var Oe=require("@inertiajs/core"),R=require("react"),we=({children:r,data:t,params:o,buffer:p,as:n,always:P,fallback:c})=>{P=P??!1,n=n??"div",c=c??null;let[m,l]=(0,R.useState)(!1),g=(0,R.useRef)(!1),d=(0,R.useRef)(!1),e=(0,R.useRef)(null),f=(0,R.useCallback)(()=>{if(t)return{only:Array.isArray(t)?t:[t]};if(!o)throw new Error("You must provide either a `data` or `params` prop.");return o},[o,t]);return(0,R.useEffect)(()=>{if(!e.current)return;let s=new IntersectionObserver(F=>{if(!F[0].isIntersecting||(!P&&g.current&&s.disconnect(),d.current))return;g.current=!0,d.current=!0;let S=f();Oe.router.reload({...S,onStart:w=>{d.current=!0,S.onStart?.(w)},onFinish:w=>{l(!0),d.current=!1,S.onFinish?.(w),P||s.disconnect()}})},{rootMargin:`${p||0}px`});return s.observe(e.current),()=>{s.disconnect()}},[e,f,p]),P||!m?(0,R.createElement)(n,{props:null,ref:e},m?r:c):m?r:null};we.displayName="InertiaWhenVisible";var Me=we;var fe=Le.router;
|
|
1
|
+
var He=Object.create;var ee=Object.defineProperty;var Ke=Object.getOwnPropertyDescriptor;var Be=Object.getOwnPropertyNames;var Ve=Object.getPrototypeOf,Ne=Object.prototype.hasOwnProperty;var je=(r,t)=>{for(var o in t)ee(r,o,{get:t[o],enumerable:!0})},Fe=(r,t,o,p)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Be(t))!Ne.call(r,n)&&n!==o&&ee(r,n,{get:()=>t[n],enumerable:!(p=Ke(t,n))||p.enumerable});return r};var Ue=(r,t,o)=>(o=r!=null?He(Ve(r)):{},Fe(t||!r||!r.__esModule?ee(o,"default",{value:r,enumerable:!0}):o,r)),$e=r=>Fe(ee({},"__esModule",{value:!0}),r);var _e={};je(_e,{Deferred:()=>De,Head:()=>Ie,Link:()=>ke,WhenVisible:()=>Me,createInertiaApp:()=>de,router:()=>fe,useForm:()=>Pe,usePage:()=>Y,usePoll:()=>ye,usePrefetch:()=>he,useRemember:()=>N});module.exports=$e(_e);var Le=require("@inertiajs/core");var re=require("@inertiajs/core"),Ce=require("react");var Q=require("@inertiajs/core"),C=require("react");var Se=require("react"),Te=(0,Se.createContext)(void 0);Te.displayName="InertiaHeadContext";var q=Te;var ve=require("react"),be=(0,ve.createContext)(void 0);be.displayName="InertiaPageContext";var J=be;function te({children:r,initialPage:t,initialComponent:o,resolveComponent:p,titleCallback:n,onHeadUpdate:P}){let[c,m]=(0,C.useState)({component:o||null,page:t,key:null}),l=(0,C.useMemo)(()=>(0,Q.createHeadManager)(typeof window>"u",n||(d=>d),P||(()=>{})),[]);if((0,C.useEffect)(()=>{Q.router.init({initialPage:t,resolveComponent:p,swapComponent:async({component:d,page:e,preserveState:f})=>{m(s=>({component:d,page:e,key:f?s.key:Date.now()}))}}),Q.router.on("navigate",()=>l.forceUpdate())},[]),!c.component)return(0,C.createElement)(q.Provider,{value:l},(0,C.createElement)(J.Provider,{value:c.page},null));let g=r||(({Component:d,props:e,key:f})=>{let s=(0,C.createElement)(d,{key:f,...e});return typeof d.layout=="function"?d.layout(s):Array.isArray(d.layout)?d.layout.concat(s).reverse().reduce((F,S)=>(0,C.createElement)(S,{children:F,...e})):s});return(0,C.createElement)(q.Provider,{value:l},(0,C.createElement)(J.Provider,{value:c.page},g({Component:c.component,key:c.key,props:c.page.props})))}te.displayName="Inertia";async function de({id:r="app",resolve:t,setup:o,title:p,progress:n={},page:P,render:c}){let m=typeof window>"u",l=m?null:document.getElementById(r),g=P||JSON.parse(l.dataset.page),d=s=>Promise.resolve(t(s)).then(F=>F.default||F),e=[],f=await Promise.all([d(g.component),re.router.decryptHistory().catch(()=>{})]).then(([s])=>o({el:l,App:te,props:{initialPage:g,initialComponent:s,resolveComponent:d,titleCallback:p,onHeadUpdate:m?F=>e=F:null}}));if(!m&&n&&(0,re.setupProgress)(n),m){let s=await c((0,Ce.createElement)("div",{id:r,"data-page":JSON.stringify(g)},f));return{head:e,body:s}}}var H=require("react");var Re=require("react");function Y(){let r=(0,Re.useContext)(J);if(!r)throw new Error("usePage must be used within the Inertia component");return r}var xe=({children:r,data:t,fallback:o})=>{if(!t)throw new Error("`<Deferred>` requires a `data` prop to be a string or array of strings");let[p,n]=(0,H.useState)(!1),P=Y().props,c=(0,H.useMemo)(()=>Array.isArray(t)?t:[t],[t]);return(0,H.useEffect)(()=>{let m=fe.on("start",l=>{(l.detail.visit.only.length===0&&l.detail.visit.except.length===0||l.detail.visit.only.find(g=>c.includes(g)))&&n(!1)});return()=>{m()}},[]),(0,H.useEffect)(()=>{n(c.every(m=>P[m]!==void 0))},[P,c]),p?r:o};xe.displayName="InertiaDeferred";var De=xe;var k=Ue(require("react"),1);var We=function({children:r,title:t}){let o=(0,k.useContext)(q),p=(0,k.useMemo)(()=>o.createProvider(),[o]);(0,k.useEffect)(()=>()=>{p.disconnect()},[p]);function n(e){return["area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"].indexOf(e.type)>-1}function P(e){let f=Object.keys(e.props).reduce((s,F)=>{if(["head-key","children","dangerouslySetInnerHTML"].includes(F))return s;let S=e.props[F];return S===""?s+` ${F}`:s+` ${F}="${S}"`},"");return`<${e.type}${f}>`}function c(e){return typeof e.props.children=="string"?e.props.children:e.props.children.reduce((f,s)=>f+m(s),"")}function m(e){let f=P(e);return e.props.children&&(f+=c(e)),e.props.dangerouslySetInnerHTML&&(f+=e.props.dangerouslySetInnerHTML.__html),n(e)||(f+=`</${e.type}>`),f}function l(e){return k.default.cloneElement(e,{inertia:e.props["head-key"]!==void 0?e.props["head-key"]:""})}function g(e){return m(l(e))}function d(e){let f=k.default.Children.toArray(e).filter(s=>s).map(s=>g(s));return t&&!f.find(s=>s.startsWith("<title"))&&f.push(`<title inertia>${t}</title>`),f}return p.update(d(r)),null},Ie=We;var I=require("@inertiajs/core"),v=require("react"),A=()=>{},Ee=(0,v.forwardRef)(({children:r,as:t="a",data:o={},href:p,method:n="get",preserveScroll:P=!1,preserveState:c=null,replace:m=!1,only:l=[],except:g=[],headers:d={},queryStringArrayFormat:e="brackets",async:f=!1,onClick:s=A,onCancelToken:F=A,onBefore:S=A,onStart:w=A,onProgress:M=A,onFinish:se=A,onCancel:z=A,onSuccess:ae=A,onError:$=A,prefetch:b=!1,cacheFor:x=0,...ie},pe)=>{let[ue,G]=(0,v.useState)(0),W=(0,v.useRef)(null);t=t.toLowerCase(),n=typeof p=="object"?p.method:n.toLowerCase();let[L,ce]=(0,I.mergeDataIntoQueryString)(n,typeof p=="object"?p.url:p||"",o,e),B=L;o=ce;let X={data:o,method:n,preserveScroll:P,preserveState:c??n!=="get",replace:m,only:l,except:g,headers:d,async:f},Z={...X,onCancelToken:F,onBefore:S,onStart(a){G(V=>V+1),w(a)},onProgress:M,onFinish(a){G(V=>V-1),se(a)},onCancel:z,onSuccess:ae,onError:$},_=()=>{I.router.prefetch(B,X,{cacheFor:le})},E=(0,v.useMemo)(()=>b===!0?["hover"]:b===!1?[]:Array.isArray(b)?b:[b],Array.isArray(b)?b:[b]),le=(0,v.useMemo)(()=>x!==0?x:E.length===1&&E[0]==="click"?0:3e4,[x,E]);(0,v.useEffect)(()=>()=>{clearTimeout(W.current)},[]),(0,v.useEffect)(()=>{E.includes("mount")&&setTimeout(()=>_())},E);let i={onClick:a=>{s(a),(0,I.shouldIntercept)(a)&&(a.preventDefault(),I.router.visit(B,Z))}},h={onMouseEnter:()=>{W.current=window.setTimeout(()=>{_()},75)},onMouseLeave:()=>{clearTimeout(W.current)},onClick:i.onClick},y={onMouseDown:a=>{(0,I.shouldIntercept)(a)&&(a.preventDefault(),_())},onMouseUp:a=>{a.preventDefault(),I.router.visit(B,Z)},onClick:a=>{s(a),(0,I.shouldIntercept)(a)&&a.preventDefault()}};return n!=="get"&&(t="button"),(0,v.createElement)(t,{...ie,...{a:{href:B},button:{type:"button"}}[t]||{},ref:pe,...E.includes("hover")?h:E.includes("click")?y:i,"data-loading":ue>0?"":void 0},r)});Ee.displayName="InertiaLink";var ke=Ee;var ge=require("@inertiajs/core"),K=require("es-toolkit"),O=require("es-toolkit/compat"),u=require("react");var me=require("@inertiajs/core"),oe=require("react");function N(r,t){let[o,p]=(0,oe.useState)(()=>{let n=me.router.restore(t);return n!==void 0?n:r});return(0,oe.useEffect)(()=>{me.router.remember(o,t)},[o,t]),[o,p]}function Pe(r,t){let o=(0,u.useRef)(null),p=typeof r=="string"?r:null,[n,P]=(0,u.useState)((typeof r=="string"?t:r)||{}),c=(0,u.useRef)(null),m=(0,u.useRef)(null),[l,g]=p?N(n,`${p}:data`):(0,u.useState)(n),[d,e]=p?N({},`${p}:errors`):(0,u.useState)({}),[f,s]=(0,u.useState)(!1),[F,S]=(0,u.useState)(!1),[w,M]=(0,u.useState)(null),[se,z]=(0,u.useState)(!1),[ae,$]=(0,u.useState)(!1),b=(0,u.useRef)(i=>i);(0,u.useEffect)(()=>(o.current=!0,()=>{o.current=!1}),[]);let x=(0,u.useCallback)((...i)=>{let h=typeof i[0]=="object",y=h?i[0].method:i[0],D=h?i[0].url:i[1],a=(h?i[1]:i[2])??{},V={...a,onCancelToken:T=>{if(c.current=T,a.onCancelToken)return a.onCancelToken(T)},onBefore:T=>{if(z(!1),$(!1),clearTimeout(m.current),a.onBefore)return a.onBefore(T)},onStart:T=>{if(S(!0),a.onStart)return a.onStart(T)},onProgress:T=>{if(M(T),a.onProgress)return a.onProgress(T)},onSuccess:T=>{if(o.current&&(S(!1),M(null),e({}),s(!1),z(!0),$(!0),P((0,K.cloneDeep)(l)),m.current=setTimeout(()=>{o.current&&$(!1)},2e3)),a.onSuccess)return a.onSuccess(T)},onError:T=>{if(o.current&&(S(!1),M(null),e(T),s(!0)),a.onError)return a.onError(T)},onCancel:()=>{if(o.current&&(S(!1),M(null)),a.onCancel)return a.onCancel()},onFinish:T=>{if(o.current&&(S(!1),M(null)),c.current=null,a.onFinish)return a.onFinish(T)}};y==="delete"?ge.router.delete(D,{...V,data:b.current(l)}):ge.router[y](D,b.current(l),V)},[l,e,b]),ie=(0,u.useCallback)((i,h)=>{g(typeof i=="string"?y=>(0,O.set)((0,K.cloneDeep)(y),i,h):typeof i=="function"?y=>i(y):i)},[g]),pe=(0,u.useCallback)((i,h)=>{P(typeof i>"u"?()=>l:y=>typeof i=="string"?(0,O.set)((0,K.cloneDeep)(y),i,h):Object.assign((0,K.cloneDeep)(y),i))},[l,P]),ue=(0,u.useCallback)((...i)=>{i.length===0?g(n):g(h=>i.filter(y=>(0,O.has)(n,y)).reduce((y,D)=>(0,O.set)(y,D,(0,O.get)(n,D)),{...h}))},[g,n]),G=(0,u.useCallback)((i,h)=>{e(y=>{let D={...y,...typeof i=="string"?{[i]:h}:i};return s(Object.keys(D).length>0),D})},[e,s]),W=(0,u.useCallback)((...i)=>{e(h=>{let y=Object.keys(h).reduce((D,a)=>({...D,...i.length>0&&!i.includes(a)?{[a]:h[a]}:{}}),{});return s(Object.keys(y).length>0),y})},[e,s]),L=i=>(h,y)=>{x(i,h,y)},ce=(0,u.useCallback)(L("get"),[x]),B=(0,u.useCallback)(L("post"),[x]),X=(0,u.useCallback)(L("put"),[x]),Z=(0,u.useCallback)(L("patch"),[x]),_=(0,u.useCallback)(L("delete"),[x]),E=(0,u.useCallback)(()=>{c.current&&c.current.cancel()},[]),le=(0,u.useCallback)(i=>{b.current=i},[]);return{data:l,setData:ie,isDirty:!(0,K.isEqual)(l,n),errors:d,hasErrors:f,processing:F,progress:w,wasSuccessful:se,recentlySuccessful:ae,transform:le,setDefaults:pe,reset:ue,setError:G,clearErrors:W,submit:x,get:ce,post:B,put:X,patch:Z,delete:_,cancel:E}}var Ae=require("@inertiajs/core"),ne=require("react");function ye(r,t={},o={keepAlive:!1,autoStart:!0}){let p=(0,ne.useRef)(Ae.router.poll(r,t,{...o,autoStart:!1}));return(0,ne.useEffect)(()=>((o.autoStart??!0)&&p.current.start(),()=>p.current.stop()),[]),{stop:p.current.stop,start:p.current.start}}var j=require("@inertiajs/core"),U=require("react");function he(r={}){let t=typeof window>"u"?null:j.router.getCached(window.location.pathname,r),o=typeof window>"u"?null:j.router.getPrefetching(window.location.pathname,r),[p,n]=(0,U.useState)(t?.staleTimestamp||null),[P,c]=(0,U.useState)(o!==null),[m,l]=(0,U.useState)(t!==null);return(0,U.useEffect)(()=>{let g=j.router.on("prefetching",e=>{e.detail.visit.url.pathname===window.location.pathname&&c(!0)}),d=j.router.on("prefetched",e=>{e.detail.visit.url.pathname===window.location.pathname&&(c(!1),l(!0),n(e.detail.fetchedAt))});return()=>{d(),g()}},[]),{lastUpdatedAt:p,isPrefetching:P,isPrefetched:m,flush:()=>j.router.flush(window.location.pathname,r)}}var Oe=require("@inertiajs/core"),R=require("react"),we=({children:r,data:t,params:o,buffer:p,as:n,always:P,fallback:c})=>{P=P??!1,n=n??"div",c=c??null;let[m,l]=(0,R.useState)(!1),g=(0,R.useRef)(!1),d=(0,R.useRef)(!1),e=(0,R.useRef)(null),f=(0,R.useCallback)(()=>{if(t)return{only:Array.isArray(t)?t:[t]};if(!o)throw new Error("You must provide either a `data` or `params` prop.");return o},[o,t]);return(0,R.useEffect)(()=>{if(!e.current)return;let s=new IntersectionObserver(F=>{if(!F[0].isIntersecting||(!P&&g.current&&s.disconnect(),d.current))return;g.current=!0,d.current=!0;let S=f();Oe.router.reload({...S,onStart:w=>{d.current=!0,S.onStart?.(w)},onFinish:w=>{l(!0),d.current=!1,S.onFinish?.(w),P||s.disconnect()}})},{rootMargin:`${p||0}px`});return s.observe(e.current),()=>{s.disconnect()}},[e,f,p]),P||!m?(0,R.createElement)(n,{props:null,ref:e},m?r:c):m?r:null};we.displayName="InertiaWhenVisible";var Me=we;var fe=Le.router;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts", "../src/createInertiaApp.ts", "../src/App.ts", "../src/HeadContext.ts", "../src/PageContext.ts", "../src/Deferred.ts", "../src/usePage.ts", "../src/Head.ts", "../src/Link.ts", "../src/useForm.ts", "../src/useRemember.ts", "../src/usePoll.ts", "../src/usePrefetch.ts", "../src/WhenVisible.ts"],
|
|
4
|
-
"sourcesContent": ["import { router as Router } from '@inertiajs/core'\n\nexport const router = Router\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './Deferred'\nexport { default as Head } from './Head'\nexport { InertiaLinkProps, default as Link } from './Link'\nexport { InertiaFormProps, default as useForm } from './useForm'\nexport { default as usePage } from './usePage'\nexport { default as usePoll } from './usePoll'\nexport { default as usePrefetch } from './usePrefetch'\nexport { default as useRemember } from './useRemember'\nexport { default as WhenVisible } from './WhenVisible'\n", "import { Page, PageProps, PageResolver, router, setupProgress } from '@inertiajs/core'\nimport { ComponentType, FunctionComponent, Key, ReactElement, ReactNode, createElement } from 'react'\nimport { renderToString } from 'react-dom/server'\nimport App from './App'\n\ntype ReactInstance = ReactElement\ntype ReactComponent = ReactNode\n\ntype HeadManagerOnUpdate = (elements: string[]) => void // TODO: When shipped, replace with: Inertia.HeadManagerOnUpdate\ntype HeadManagerTitleCallback = (title: string) => string // TODO: When shipped, replace with: Inertia.HeadManagerTitleCallback\n\ntype AppType<SharedProps extends PageProps = PageProps> = FunctionComponent<\n {\n children?: (props: { Component: ComponentType; key: Key; props: Page<SharedProps>['props'] }) => ReactNode\n } & SetupOptions<unknown, SharedProps>['props']\n>\n\nexport type SetupOptions<ElementType, SharedProps extends PageProps> = {\n el: ElementType\n App: AppType\n props: {\n initialPage: Page<SharedProps>\n initialComponent: ReactComponent\n resolveComponent: PageResolver\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdate\n }\n}\n\ntype BaseInertiaAppOptions = {\n title?: HeadManagerTitleCallback\n resolve: PageResolver\n}\n\ntype CreateInertiaAppSetupReturnType = ReactInstance | void\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = BaseInertiaAppOptions & {\n id?: string\n page?: Page | string\n render?: undefined\n progress?:\n | false\n | {\n delay?: number\n color?: string\n includeCSS?: boolean\n showSpinner?: boolean\n }\n setup(options: SetupOptions<HTMLElement, SharedProps>): CreateInertiaAppSetupReturnType\n}\n\ntype CreateInertiaAppSSRContent = { head: string[]; body: string }\ntype InertiaAppOptionsForSSR<SharedProps extends PageProps> = BaseInertiaAppOptions & {\n id?: undefined\n page: Page | string\n render: typeof renderToString\n progress?: undefined\n setup(options: SetupOptions<null, SharedProps>): ReactInstance\n}\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<CreateInertiaAppSetupReturnType>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<CreateInertiaAppSSRContent>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>({\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n}: InertiaAppOptionsForCSR<SharedProps> | InertiaAppOptionsForSSR<SharedProps>): Promise<\n CreateInertiaAppSetupReturnType | CreateInertiaAppSSRContent\n> {\n const isServer = typeof window === 'undefined'\n const el = isServer ? null : document.getElementById(id)\n const initialPage = page || JSON.parse(el.dataset.page)\n // @ts-expect-error\n const resolveComponent = (name) => Promise.resolve(resolve(name)).then((module) => module.default || module)\n\n let head = []\n\n const reactApp = await Promise.all([\n resolveComponent(initialPage.component),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n return setup({\n // @ts-expect-error\n el,\n App,\n props: {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n onHeadUpdate: isServer ? (elements) => (head = elements) : null,\n },\n })\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer) {\n const body = await render(\n createElement(\n 'div',\n {\n id,\n 'data-page': JSON.stringify(initialPage),\n },\n // @ts-expect-error\n reactApp,\n ),\n )\n\n return { head, body }\n }\n}\n", "import { createHeadManager, router } from '@inertiajs/core'\nimport { createElement, useEffect, useMemo, useState } from 'react'\nimport HeadContext from './HeadContext'\nimport PageContext from './PageContext'\n\nexport default function App({\n children,\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n}) {\n const [current, setCurrent] = useState({\n component: initialComponent || null,\n page: initialPage,\n key: null,\n })\n\n const headManager = useMemo(() => {\n return createHeadManager(\n typeof window === 'undefined',\n titleCallback || ((title) => title),\n onHeadUpdate || (() => {}),\n )\n }, [])\n\n useEffect(() => {\n router.init({\n initialPage,\n resolveComponent,\n swapComponent: async ({ component, page, preserveState }) => {\n setCurrent((current) => ({\n component,\n page,\n key: preserveState ? current.key : Date.now(),\n }))\n },\n })\n\n router.on('navigate', () => headManager.forceUpdate())\n }, [])\n\n if (!current.component) {\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(PageContext.Provider, { value: current.page }, null),\n )\n }\n\n const renderChildren =\n children ||\n (({ Component, props, key }) => {\n const child = createElement(Component, { key, ...props })\n\n if (typeof Component.layout === 'function') {\n return Component.layout(child)\n }\n\n if (Array.isArray(Component.layout)) {\n return Component.layout\n .concat(child)\n .reverse()\n .reduce((children, Layout) => createElement(Layout, { children, ...props }))\n }\n\n return child\n })\n\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(\n PageContext.Provider,\n { value: current.page },\n renderChildren({\n Component: current.component,\n key: current.key,\n props: current.page.props,\n }),\n ),\n )\n}\n\nApp.displayName = 'Inertia'\n", "import { createContext } from 'react'\n\nconst headContext = createContext(undefined)\nheadContext.displayName = 'InertiaHeadContext'\n\nexport default headContext\n", "import { createContext } from 'react'\n\nconst pageContext = createContext(undefined)\npageContext.displayName = 'InertiaPageContext'\n\nexport default pageContext\n", "import { ReactElement, useEffect, useMemo, useState } from 'react'\nimport { router } from '.'\nimport usePage from './usePage'\n\ninterface DeferredProps {\n children: ReactElement | number | string\n fallback: ReactElement | number | string\n data: string | string[]\n}\n\nconst Deferred = ({ children, data, fallback }: DeferredProps) => {\n if (!data) {\n throw new Error('`<Deferred>` requires a `data` prop to be a string or array of strings')\n }\n\n const [loaded, setLoaded] = useState(false)\n const pageProps = usePage().props\n const keys = useMemo(() => (Array.isArray(data) ? data : [data]), [data])\n\n useEffect(() => {\n const removeListener = router.on('start', (e) => {\n if (\n (e.detail.visit.only.length === 0 && e.detail.visit.except.length === 0) ||\n e.detail.visit.only.find((key) => keys.includes(key))\n ) {\n setLoaded(false)\n }\n })\n\n return () => {\n removeListener()\n }\n }, [])\n\n useEffect(() => {\n setLoaded(keys.every((key) => pageProps[key] !== undefined))\n }, [pageProps, keys])\n\n return loaded ? children : fallback\n}\n\nDeferred.displayName = 'InertiaDeferred'\n\nexport default Deferred\n", "import { Page, PageProps } from '@inertiajs/core'\nimport { useContext } from 'react'\nimport PageContext from './PageContext'\n\nexport default function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps> {\n const page = useContext(PageContext)\n\n if (!page) {\n throw new Error('usePage must be used within the Inertia component')\n }\n\n return page\n}\n", "import React, { FunctionComponent, useContext, useEffect, useMemo } from 'react'\nimport HeadContext from './HeadContext'\n\ntype InertiaHeadProps = {\n title?: string\n children?: React.ReactNode\n}\n\ntype InertiaHead = FunctionComponent<InertiaHeadProps>\n\nconst Head: InertiaHead = function ({ children, title }) {\n const headManager = useContext(HeadContext)\n const provider = useMemo(() => headManager.createProvider(), [headManager])\n\n useEffect(() => {\n return () => {\n provider.disconnect()\n }\n }, [provider])\n\n function isUnaryTag(node) {\n return (\n [\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n ].indexOf(node.type) > -1\n )\n }\n\n function renderTagStart(node) {\n const attrs = Object.keys(node.props).reduce((carry, name) => {\n if (['head-key', 'children', 'dangerouslySetInnerHTML'].includes(name)) {\n return carry\n }\n const value = node.props[name]\n if (value === '') {\n return carry + ` ${name}`\n } else {\n return carry + ` ${name}=\"${value}\"`\n }\n }, '')\n return `<${node.type}${attrs}>`\n }\n\n function renderTagChildren(node) {\n return typeof node.props.children === 'string'\n ? node.props.children\n : node.props.children.reduce((html, child) => html + renderTag(child), '')\n }\n\n function renderTag(node) {\n let html = renderTagStart(node)\n if (node.props.children) {\n html += renderTagChildren(node)\n }\n if (node.props.dangerouslySetInnerHTML) {\n html += node.props.dangerouslySetInnerHTML.__html\n }\n if (!isUnaryTag(node)) {\n html += `</${node.type}>`\n }\n return html\n }\n\n function ensureNodeHasInertiaProp(node) {\n return React.cloneElement(node, {\n inertia: node.props['head-key'] !== undefined ? node.props['head-key'] : '',\n })\n }\n\n function renderNode(node) {\n return renderTag(ensureNodeHasInertiaProp(node))\n }\n\n function renderNodes(nodes) {\n const computed = React.Children.toArray(nodes)\n .filter((node) => node)\n .map((node) => renderNode(node))\n if (title && !computed.find((tag) => tag.startsWith('<title'))) {\n computed.push(`<title inertia>${title}</title>`)\n }\n return computed\n }\n\n provider.update(renderNodes(children))\n\n return null\n}\nexport default Head\n", "import {\n FormDataConvertible,\n LinkPrefetchOption,\n mergeDataIntoQueryString,\n Method,\n PendingVisit,\n PreserveStateOption,\n Progress,\n router,\n shouldIntercept,\n} from '@inertiajs/core'\nimport { createElement, forwardRef, useEffect, useMemo, useRef, useState } from 'react'\n\nconst noop = () => undefined\n\ninterface BaseInertiaLinkProps {\n as?: string\n data?: Record<string, FormDataConvertible>\n href: string | { url: string; method: Method }\n method?: Method\n headers?: Record<string, string>\n onClick?: (event: React.MouseEvent<Element>) => void\n preserveScroll?: PreserveStateOption\n preserveState?: PreserveStateOption\n replace?: boolean\n only?: string[]\n except?: string[]\n onCancelToken?: (cancelToken: import('axios').CancelTokenSource) => void\n onBefore?: () => void\n onStart?: (event: PendingVisit) => void\n onProgress?: (progress: Progress) => void\n onFinish?: (event: PendingVisit) => void\n onCancel?: () => void\n onSuccess?: () => void\n onError?: () => void\n queryStringArrayFormat?: 'indices' | 'brackets'\n async?: boolean\n cacheFor?: number | string\n prefetch?: boolean | LinkPrefetchOption | LinkPrefetchOption[]\n}\n\nexport type InertiaLinkProps = BaseInertiaLinkProps &\n Omit<React.HTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps> &\n Omit<React.AllHTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps>\n\nconst Link = forwardRef<unknown, InertiaLinkProps>(\n (\n {\n children,\n as = 'a',\n data = {},\n href,\n method = 'get',\n preserveScroll = false,\n preserveState = null,\n replace = false,\n only = [],\n except = [],\n headers = {},\n queryStringArrayFormat = 'brackets',\n async = false,\n onClick = noop,\n onCancelToken = noop,\n onBefore = noop,\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n prefetch = false,\n cacheFor = 0,\n ...props\n },\n ref,\n ) => {\n const [inFlightCount, setInFlightCount] = useState(0)\n const hoverTimeout = useRef<number>(null)\n\n as = as.toLowerCase()\n method = typeof href === 'object' ? href.method : (method.toLowerCase() as Method)\n const [_href, _data] = mergeDataIntoQueryString(\n method,\n typeof href === 'object' ? href.url : href || '',\n data,\n queryStringArrayFormat,\n )\n const url = _href\n data = _data\n\n const baseParams = {\n data,\n method,\n preserveScroll,\n preserveState: preserveState ?? method !== 'get',\n replace,\n only,\n except,\n headers,\n async,\n }\n\n const visitParams = {\n ...baseParams,\n onCancelToken,\n onBefore,\n onStart(event) {\n setInFlightCount((count) => count + 1)\n onStart(event)\n },\n onProgress,\n onFinish(event) {\n setInFlightCount((count) => count - 1)\n onFinish(event)\n },\n onCancel,\n onSuccess,\n onError,\n }\n\n const doPrefetch = () => {\n router.prefetch(url, baseParams, { cacheFor: cacheForValue })\n }\n\n const prefetchModes: LinkPrefetchOption[] = useMemo(\n () => {\n if (prefetch === true) {\n return ['hover']\n }\n\n if (prefetch === false) {\n return []\n }\n\n if (Array.isArray(prefetch)) {\n return prefetch\n }\n\n return [prefetch]\n },\n Array.isArray(prefetch) ? prefetch : [prefetch],\n )\n\n const cacheForValue = useMemo(() => {\n if (cacheFor !== 0) {\n // If they've provided a value, respect it\n return cacheFor\n }\n\n if (prefetchModes.length === 1 && prefetchModes[0] === 'click') {\n // If they've only provided a prefetch mode of 'click',\n // we should only prefetch for the next request but not keep it around\n return 0\n }\n\n // Otherwise, default to 30 seconds\n return 30_000\n }, [cacheFor, prefetchModes])\n\n useEffect(() => {\n return () => {\n clearTimeout(hoverTimeout.current)\n }\n }, [])\n\n useEffect(() => {\n if (prefetchModes.includes('mount')) {\n setTimeout(() => doPrefetch())\n }\n }, prefetchModes)\n\n const regularEvents = {\n onClick: (event) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n event.preventDefault()\n\n router.visit(url, visitParams)\n }\n },\n }\n\n const prefetchHoverEvents = {\n onMouseEnter: () => {\n hoverTimeout.current = window.setTimeout(() => {\n doPrefetch()\n }, 75)\n },\n onMouseLeave: () => {\n clearTimeout(hoverTimeout.current)\n },\n onClick: regularEvents.onClick,\n }\n\n const prefetchClickEvents = {\n onMouseDown: (event) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onMouseUp: (event) => {\n event.preventDefault()\n router.visit(url, visitParams)\n },\n onClick: (event) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n // Let the mouseup event handle the visit\n event.preventDefault()\n }\n },\n }\n\n if (method !== 'get') {\n as = 'button'\n }\n\n const elProps = {\n a: { href: url },\n button: { type: 'button' },\n }\n\n return createElement(\n as,\n {\n ...props,\n ...(elProps[as] || {}),\n ref,\n ...(() => {\n if (prefetchModes.includes('hover')) {\n return prefetchHoverEvents\n }\n\n if (prefetchModes.includes('click')) {\n return prefetchClickEvents\n }\n\n return regularEvents\n })(),\n 'data-loading': inFlightCount > 0 ? '' : undefined,\n },\n children,\n )\n },\n)\nLink.displayName = 'InertiaLink'\n\nexport default Link\n", "import {\n FormDataConvertible,\n FormDataKeys,\n FormDataValues,\n Method,\n Progress,\n router,\n VisitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep, isEqual } from 'es-toolkit'\nimport { get, has, set } from 'es-toolkit/compat'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport useRemember from './useRemember'\n\ntype SetDataByObject<TForm> = (data: TForm) => void\ntype SetDataByMethod<TForm> = (data: (previousData: TForm) => TForm) => void\ntype SetDataByKeyValuePair<TForm> = <K extends FormDataKeys<TForm>>(key: K, value: FormDataValues<TForm, K>) => void\ntype FormDataType = Record<string, FormDataConvertible>\ntype FormOptions = Omit<VisitOptions, 'data'>\n\nexport interface InertiaFormProps<TForm extends FormDataType> {\n data: TForm\n isDirty: boolean\n errors: Partial<Record<FormDataKeys<TForm>, string>>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n setData: SetDataByObject<TForm> & SetDataByMethod<TForm> & SetDataByKeyValuePair<TForm>\n transform: (callback: (data: TForm) => object) => void\n setDefaults(): void\n setDefaults(field: FormDataKeys<TForm>, value: FormDataConvertible): void\n setDefaults(fields: Partial<TForm>): void\n reset: (...fields: FormDataKeys<TForm>[]) => void\n clearErrors: (...fields: FormDataKeys<TForm>[]) => void\n setError(field: FormDataKeys<TForm>, value: string): void\n setError(errors: Record<FormDataKeys<TForm>, string>): void\n submit: (...args: [Method, string, FormOptions?] | [{ url: string; method: Method }, FormOptions?]) => void\n get: (url: string, options?: FormOptions) => void\n patch: (url: string, options?: FormOptions) => void\n post: (url: string, options?: FormOptions) => void\n put: (url: string, options?: FormOptions) => void\n delete: (url: string, options?: FormOptions) => void\n cancel: () => void\n}\nexport default function useForm<TForm extends FormDataType>(initialValues?: TForm): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType>(\n rememberKey: string,\n initialValues?: TForm,\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType>(\n rememberKeyOrInitialValues?: string | TForm,\n maybeInitialValues?: TForm,\n): InertiaFormProps<TForm> {\n const isMounted = useRef(null)\n const rememberKey = typeof rememberKeyOrInitialValues === 'string' ? rememberKeyOrInitialValues : null\n const [defaults, setDefaults] = useState(\n (typeof rememberKeyOrInitialValues === 'string' ? maybeInitialValues : rememberKeyOrInitialValues) || ({} as TForm),\n )\n const cancelToken = useRef(null)\n const recentlySuccessfulTimeoutId = useRef(null)\n const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`) : useState(defaults)\n const [errors, setErrors] = rememberKey\n ? useRemember({} as Partial<Record<FormDataKeys<TForm>, string>>, `${rememberKey}:errors`)\n : useState({} as Partial<Record<FormDataKeys<TForm>, string>>)\n const [hasErrors, setHasErrors] = useState(false)\n const [processing, setProcessing] = useState(false)\n const [progress, setProgress] = useState(null)\n const [wasSuccessful, setWasSuccessful] = useState(false)\n const [recentlySuccessful, setRecentlySuccessful] = useState(false)\n const transform = useRef((data) => data)\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n const submit = useCallback(\n (...args) => {\n const objectPassed = typeof args[0] === 'object'\n\n const method = objectPassed ? args[0].method : args[0]\n const url = objectPassed ? args[0].url : args[1]\n const options = (objectPassed ? args[1] : args[2]) ?? {}\n\n const _options = {\n ...options,\n onCancelToken: (token) => {\n cancelToken.current = token\n\n if (options.onCancelToken) {\n return options.onCancelToken(token)\n }\n },\n onBefore: (visit) => {\n setWasSuccessful(false)\n setRecentlySuccessful(false)\n clearTimeout(recentlySuccessfulTimeoutId.current)\n\n if (options.onBefore) {\n return options.onBefore(visit)\n }\n },\n onStart: (visit) => {\n setProcessing(true)\n\n if (options.onStart) {\n return options.onStart(visit)\n }\n },\n onProgress: (event) => {\n setProgress(event)\n\n if (options.onProgress) {\n return options.onProgress(event)\n }\n },\n onSuccess: (page) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors({})\n setHasErrors(false)\n setWasSuccessful(true)\n setRecentlySuccessful(true)\n setDefaults(cloneDeep(data))\n recentlySuccessfulTimeoutId.current = setTimeout(() => {\n if (isMounted.current) {\n setRecentlySuccessful(false)\n }\n }, 2000)\n }\n\n if (options.onSuccess) {\n return options.onSuccess(page)\n }\n },\n onError: (errors) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors(errors)\n setHasErrors(true)\n }\n\n if (options.onError) {\n return options.onError(errors)\n }\n },\n onCancel: () => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n if (options.onCancel) {\n return options.onCancel()\n }\n },\n onFinish: (visit) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n cancelToken.current = null\n\n if (options.onFinish) {\n return options.onFinish(visit)\n }\n },\n }\n\n if (method === 'delete') {\n router.delete(url, { ..._options, data: transform.current(data) })\n } else {\n router[method](url, transform.current(data), _options)\n }\n },\n [data, setErrors, transform],\n )\n\n const setDataFunction = useCallback(\n (keyOrData: FormDataKeys<TForm> | Function | TForm, maybeValue?: any) => {\n if (typeof keyOrData === 'string') {\n setData((data) => set(cloneDeep(data), keyOrData, maybeValue))\n } else if (typeof keyOrData === 'function') {\n setData((data) => keyOrData(data))\n } else {\n setData(keyOrData as TForm)\n }\n },\n [setData],\n )\n\n const setDefaultsFunction = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: FormDataConvertible) => {\n if (typeof fieldOrFields === 'undefined') {\n setDefaults(() => data)\n } else {\n setDefaults((defaults) => {\n return typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign(cloneDeep(defaults), fieldOrFields)\n })\n }\n },\n [data, setDefaults],\n )\n\n const reset = useCallback(\n (...fields) => {\n if (fields.length === 0) {\n setData(defaults)\n } else {\n setData((data) =>\n (fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(defaults, key))\n .reduce(\n (carry, key) => {\n return set(carry, key, get(defaults, key))\n },\n { ...data } as TForm,\n ),\n )\n }\n },\n [setData, defaults],\n )\n\n const setError = useCallback(\n (fieldOrFields: FormDataKeys<TForm> | Record<FormDataKeys<TForm>, string>, maybeValue?: string) => {\n setErrors((errors) => {\n const newErrors = {\n ...errors,\n ...(typeof fieldOrFields === 'string'\n ? { [fieldOrFields]: maybeValue }\n : (fieldOrFields as Record<FormDataKeys<TForm>, string>)),\n }\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors\n })\n },\n [setErrors, setHasErrors],\n )\n\n const clearErrors = useCallback(\n (...fields) => {\n setErrors((errors) => {\n const newErrors = (Object.keys(errors) as Array<FormDataKeys<TForm>>).reduce(\n (carry, field) => ({\n ...carry,\n ...(fields.length > 0 && !fields.includes(field) ? { [field]: errors[field] } : {}),\n }),\n {},\n )\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors\n })\n },\n [setErrors, setHasErrors],\n )\n\n const createSubmitMethod = (method) => (url, options) => {\n submit(method, url, options)\n }\n const getMethod = useCallback(createSubmitMethod('get'), [submit])\n const post = useCallback(createSubmitMethod('post'), [submit])\n const put = useCallback(createSubmitMethod('put'), [submit])\n const patch = useCallback(createSubmitMethod('patch'), [submit])\n const deleteMethod = useCallback(createSubmitMethod('delete'), [submit])\n\n const cancel = useCallback(() => {\n if (cancelToken.current) {\n cancelToken.current.cancel()\n }\n }, [])\n\n const transformFunction = useCallback((callback) => {\n transform.current = callback\n }, [])\n\n return {\n data,\n setData: setDataFunction,\n isDirty: !isEqual(data, defaults),\n errors,\n hasErrors,\n processing,\n progress,\n wasSuccessful,\n recentlySuccessful,\n transform: transformFunction,\n setDefaults: setDefaultsFunction,\n reset,\n setError,\n clearErrors,\n submit,\n get: getMethod,\n post,\n put,\n patch,\n delete: deleteMethod,\n cancel,\n }\n}\n", "import { router } from '@inertiajs/core'\nimport { Dispatch, SetStateAction, useEffect, useState } from 'react'\n\nexport default function useRemember<State>(\n initialState: State,\n key?: string,\n): [State, Dispatch<SetStateAction<State>>] {\n const [state, setState] = useState(() => {\n const restored = router.restore(key) as State\n\n return restored !== undefined ? restored : initialState\n })\n\n useEffect(() => {\n router.remember(state, key)\n }, [state, key])\n\n return [state, setState]\n}\n", "import { PollOptions, ReloadOptions, router } from '@inertiajs/core'\nimport { useEffect, useRef } from 'react'\n\nexport default function usePoll(\n interval: number,\n requestOptions: ReloadOptions = {},\n options: PollOptions = {\n keepAlive: false,\n autoStart: true,\n },\n) {\n const pollRef = useRef(\n router.poll(interval, requestOptions, {\n ...options,\n autoStart: false,\n }),\n )\n\n useEffect(() => {\n if (options.autoStart ?? true) {\n pollRef.current.start()\n }\n\n return () => pollRef.current.stop()\n }, [])\n\n return {\n stop: pollRef.current.stop,\n start: pollRef.current.start,\n }\n}\n", "import { router, VisitOptions } from '@inertiajs/core'\nimport { useEffect, useState } from 'react'\n\nexport default function usePrefetch(options: VisitOptions = {}): {\n lastUpdatedAt: number | null\n isPrefetching: boolean\n isPrefetched: boolean\n flush: () => void\n} {\n const cached = typeof window === 'undefined' ? null : router.getCached(window.location.pathname, options)\n const inFlight = typeof window === 'undefined' ? null : router.getPrefetching(window.location.pathname, options)\n\n const [lastUpdatedAt, setLastUpdatedAt] = useState<number | null>(cached?.staleTimestamp || null)\n const [isPrefetching, setIsPrefetching] = useState(inFlight !== null)\n const [isPrefetched, setIsPrefetched] = useState(cached !== null)\n\n useEffect(() => {\n const onPrefetchingListener = router.on('prefetching', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(true)\n }\n })\n\n const onPrefetchedListener = router.on('prefetched', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(false)\n setIsPrefetched(true)\n setLastUpdatedAt(e.detail.fetchedAt)\n }\n })\n\n return () => {\n onPrefetchedListener()\n onPrefetchingListener()\n }\n }, [])\n\n return {\n lastUpdatedAt,\n isPrefetching,\n isPrefetched,\n flush: () => router.flush(window.location.pathname, options),\n }\n}\n", "import { ReloadOptions, router } from '@inertiajs/core'\nimport { createElement, ReactElement, useCallback, useEffect, useRef, useState } from 'react'\n\ninterface WhenVisibleProps {\n children: ReactElement | number | string\n fallback: ReactElement | number | string\n data?: string | string[]\n params?: ReloadOptions\n buffer?: number\n as?: string\n always?: boolean\n}\n\nconst WhenVisible = ({ children, data, params, buffer, as, always, fallback }: WhenVisibleProps) => {\n always = always ?? false\n as = as ?? 'div'\n fallback = fallback ?? null\n\n const [loaded, setLoaded] = useState(false)\n const hasFetched = useRef<boolean>(false)\n const fetching = useRef<boolean>(false)\n const ref = useRef<HTMLDivElement>(null)\n\n const getReloadParams = useCallback<() => Partial<ReloadOptions>>(() => {\n if (data) {\n return {\n only: (Array.isArray(data) ? data : [data]) as string[],\n }\n }\n\n if (!params) {\n throw new Error('You must provide either a `data` or `params` prop.')\n }\n\n return params\n }, [params, data])\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (!always && hasFetched.current) {\n observer.disconnect()\n }\n\n if (fetching.current) {\n return\n }\n\n hasFetched.current = true\n fetching.current = true\n\n const reloadParams = getReloadParams()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.current = true\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n setLoaded(true)\n fetching.current = false\n reloadParams.onFinish?.(e)\n\n if (!always) {\n observer.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${buffer || 0}px`,\n },\n )\n\n observer.observe(ref.current)\n\n return () => {\n observer.disconnect()\n }\n }, [ref, getReloadParams, buffer])\n\n if (always || !loaded) {\n return createElement(\n as,\n {\n props: null,\n ref,\n },\n loaded ? children : fallback,\n )\n }\n\n return loaded ? children : null\n}\n\nWhenVisible.displayName = 'InertiaWhenVisible'\n\nexport default WhenVisible\n"],
|
|
4
|
+
"sourcesContent": ["import { router as Router } from '@inertiajs/core'\n\nexport const router = Router\nexport { default as createInertiaApp } from './createInertiaApp'\nexport { default as Deferred } from './Deferred'\nexport { default as Head } from './Head'\nexport { InertiaLinkProps, default as Link } from './Link'\nexport { InertiaFormProps, default as useForm } from './useForm'\nexport { default as usePage } from './usePage'\nexport { default as usePoll } from './usePoll'\nexport { default as usePrefetch } from './usePrefetch'\nexport { default as useRemember } from './useRemember'\nexport { default as WhenVisible } from './WhenVisible'\n", "import { Page, PageProps, PageResolver, router, setupProgress } from '@inertiajs/core'\nimport { ComponentType, FunctionComponent, Key, ReactElement, ReactNode, createElement } from 'react'\nimport { renderToString } from 'react-dom/server'\nimport App from './App'\n\ntype ReactInstance = ReactElement\ntype ReactComponent = ReactNode\n\ntype HeadManagerOnUpdate = (elements: string[]) => void // TODO: When shipped, replace with: Inertia.HeadManagerOnUpdate\ntype HeadManagerTitleCallback = (title: string) => string // TODO: When shipped, replace with: Inertia.HeadManagerTitleCallback\n\ntype AppType<SharedProps extends PageProps = PageProps> = FunctionComponent<\n {\n children?: (props: { Component: ComponentType; key: Key; props: Page<SharedProps>['props'] }) => ReactNode\n } & SetupOptions<unknown, SharedProps>['props']\n>\n\nexport type SetupOptions<ElementType, SharedProps extends PageProps> = {\n el: ElementType\n App: AppType\n props: {\n initialPage: Page<SharedProps>\n initialComponent: ReactComponent\n resolveComponent: PageResolver\n titleCallback?: HeadManagerTitleCallback\n onHeadUpdate?: HeadManagerOnUpdate\n }\n}\n\ntype BaseInertiaAppOptions = {\n title?: HeadManagerTitleCallback\n resolve: PageResolver\n}\n\ntype CreateInertiaAppSetupReturnType = ReactInstance | void\ntype InertiaAppOptionsForCSR<SharedProps extends PageProps> = BaseInertiaAppOptions & {\n id?: string\n page?: Page | string\n render?: undefined\n progress?:\n | false\n | {\n delay?: number\n color?: string\n includeCSS?: boolean\n showSpinner?: boolean\n }\n setup(options: SetupOptions<HTMLElement, SharedProps>): CreateInertiaAppSetupReturnType\n}\n\ntype CreateInertiaAppSSRContent = { head: string[]; body: string }\ntype InertiaAppOptionsForSSR<SharedProps extends PageProps> = BaseInertiaAppOptions & {\n id?: undefined\n page: Page | string\n render: typeof renderToString\n progress?: undefined\n setup(options: SetupOptions<null, SharedProps>): ReactInstance\n}\n\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForCSR<SharedProps>,\n): Promise<CreateInertiaAppSetupReturnType>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>(\n options: InertiaAppOptionsForSSR<SharedProps>,\n): Promise<CreateInertiaAppSSRContent>\nexport default async function createInertiaApp<SharedProps extends PageProps = PageProps>({\n id = 'app',\n resolve,\n setup,\n title,\n progress = {},\n page,\n render,\n}: InertiaAppOptionsForCSR<SharedProps> | InertiaAppOptionsForSSR<SharedProps>): Promise<\n CreateInertiaAppSetupReturnType | CreateInertiaAppSSRContent\n> {\n const isServer = typeof window === 'undefined'\n const el = isServer ? null : document.getElementById(id)\n const initialPage = page || JSON.parse(el.dataset.page)\n // @ts-expect-error\n const resolveComponent = (name) => Promise.resolve(resolve(name)).then((module) => module.default || module)\n\n let head = []\n\n const reactApp = await Promise.all([\n resolveComponent(initialPage.component),\n router.decryptHistory().catch(() => {}),\n ]).then(([initialComponent]) => {\n return setup({\n // @ts-expect-error\n el,\n App,\n props: {\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback: title,\n onHeadUpdate: isServer ? (elements) => (head = elements) : null,\n },\n })\n })\n\n if (!isServer && progress) {\n setupProgress(progress)\n }\n\n if (isServer) {\n const body = await render(\n createElement(\n 'div',\n {\n id,\n 'data-page': JSON.stringify(initialPage),\n },\n // @ts-expect-error\n reactApp,\n ),\n )\n\n return { head, body }\n }\n}\n", "import { createHeadManager, router } from '@inertiajs/core'\nimport { createElement, useEffect, useMemo, useState } from 'react'\nimport HeadContext from './HeadContext'\nimport PageContext from './PageContext'\n\nexport default function App({\n children,\n initialPage,\n initialComponent,\n resolveComponent,\n titleCallback,\n onHeadUpdate,\n}) {\n const [current, setCurrent] = useState({\n component: initialComponent || null,\n page: initialPage,\n key: null,\n })\n\n const headManager = useMemo(() => {\n return createHeadManager(\n typeof window === 'undefined',\n titleCallback || ((title) => title),\n onHeadUpdate || (() => {}),\n )\n }, [])\n\n useEffect(() => {\n router.init({\n initialPage,\n resolveComponent,\n swapComponent: async ({ component, page, preserveState }) => {\n setCurrent((current) => ({\n component,\n page,\n key: preserveState ? current.key : Date.now(),\n }))\n },\n })\n\n router.on('navigate', () => headManager.forceUpdate())\n }, [])\n\n if (!current.component) {\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(PageContext.Provider, { value: current.page }, null),\n )\n }\n\n const renderChildren =\n children ||\n (({ Component, props, key }) => {\n const child = createElement(Component, { key, ...props })\n\n if (typeof Component.layout === 'function') {\n return Component.layout(child)\n }\n\n if (Array.isArray(Component.layout)) {\n return Component.layout\n .concat(child)\n .reverse()\n .reduce((children, Layout) => createElement(Layout, { children, ...props }))\n }\n\n return child\n })\n\n return createElement(\n HeadContext.Provider,\n { value: headManager },\n createElement(\n PageContext.Provider,\n { value: current.page },\n renderChildren({\n Component: current.component,\n key: current.key,\n props: current.page.props,\n }),\n ),\n )\n}\n\nApp.displayName = 'Inertia'\n", "import { createContext } from 'react'\n\nconst headContext = createContext(undefined)\nheadContext.displayName = 'InertiaHeadContext'\n\nexport default headContext\n", "import { createContext } from 'react'\n\nconst pageContext = createContext(undefined)\npageContext.displayName = 'InertiaPageContext'\n\nexport default pageContext\n", "import { ReactElement, useEffect, useMemo, useState } from 'react'\nimport { router } from '.'\nimport usePage from './usePage'\n\ninterface DeferredProps {\n children: ReactElement | number | string\n fallback: ReactElement | number | string\n data: string | string[]\n}\n\nconst Deferred = ({ children, data, fallback }: DeferredProps) => {\n if (!data) {\n throw new Error('`<Deferred>` requires a `data` prop to be a string or array of strings')\n }\n\n const [loaded, setLoaded] = useState(false)\n const pageProps = usePage().props\n const keys = useMemo(() => (Array.isArray(data) ? data : [data]), [data])\n\n useEffect(() => {\n const removeListener = router.on('start', (e) => {\n if (\n (e.detail.visit.only.length === 0 && e.detail.visit.except.length === 0) ||\n e.detail.visit.only.find((key) => keys.includes(key))\n ) {\n setLoaded(false)\n }\n })\n\n return () => {\n removeListener()\n }\n }, [])\n\n useEffect(() => {\n setLoaded(keys.every((key) => pageProps[key] !== undefined))\n }, [pageProps, keys])\n\n return loaded ? children : fallback\n}\n\nDeferred.displayName = 'InertiaDeferred'\n\nexport default Deferred\n", "import { Page, PageProps } from '@inertiajs/core'\nimport { useContext } from 'react'\nimport PageContext from './PageContext'\n\nexport default function usePage<TPageProps extends PageProps = PageProps>(): Page<TPageProps> {\n const page = useContext(PageContext)\n\n if (!page) {\n throw new Error('usePage must be used within the Inertia component')\n }\n\n return page\n}\n", "import React, { FunctionComponent, useContext, useEffect, useMemo } from 'react'\nimport HeadContext from './HeadContext'\n\ntype InertiaHeadProps = {\n title?: string\n children?: React.ReactNode\n}\n\ntype InertiaHead = FunctionComponent<InertiaHeadProps>\n\nconst Head: InertiaHead = function ({ children, title }) {\n const headManager = useContext(HeadContext)\n const provider = useMemo(() => headManager.createProvider(), [headManager])\n\n useEffect(() => {\n return () => {\n provider.disconnect()\n }\n }, [provider])\n\n function isUnaryTag(node) {\n return (\n [\n 'area',\n 'base',\n 'br',\n 'col',\n 'embed',\n 'hr',\n 'img',\n 'input',\n 'keygen',\n 'link',\n 'meta',\n 'param',\n 'source',\n 'track',\n 'wbr',\n ].indexOf(node.type) > -1\n )\n }\n\n function renderTagStart(node) {\n const attrs = Object.keys(node.props).reduce((carry, name) => {\n if (['head-key', 'children', 'dangerouslySetInnerHTML'].includes(name)) {\n return carry\n }\n const value = node.props[name]\n if (value === '') {\n return carry + ` ${name}`\n } else {\n return carry + ` ${name}=\"${value}\"`\n }\n }, '')\n return `<${node.type}${attrs}>`\n }\n\n function renderTagChildren(node) {\n return typeof node.props.children === 'string'\n ? node.props.children\n : node.props.children.reduce((html, child) => html + renderTag(child), '')\n }\n\n function renderTag(node) {\n let html = renderTagStart(node)\n if (node.props.children) {\n html += renderTagChildren(node)\n }\n if (node.props.dangerouslySetInnerHTML) {\n html += node.props.dangerouslySetInnerHTML.__html\n }\n if (!isUnaryTag(node)) {\n html += `</${node.type}>`\n }\n return html\n }\n\n function ensureNodeHasInertiaProp(node) {\n return React.cloneElement(node, {\n inertia: node.props['head-key'] !== undefined ? node.props['head-key'] : '',\n })\n }\n\n function renderNode(node) {\n return renderTag(ensureNodeHasInertiaProp(node))\n }\n\n function renderNodes(nodes) {\n const computed = React.Children.toArray(nodes)\n .filter((node) => node)\n .map((node) => renderNode(node))\n if (title && !computed.find((tag) => tag.startsWith('<title'))) {\n computed.push(`<title inertia>${title}</title>`)\n }\n return computed\n }\n\n provider.update(renderNodes(children))\n\n return null\n}\nexport default Head\n", "import {\n FormDataConvertible,\n LinkPrefetchOption,\n mergeDataIntoQueryString,\n Method,\n PendingVisit,\n PreserveStateOption,\n Progress,\n router,\n shouldIntercept,\n} from '@inertiajs/core'\nimport { createElement, forwardRef, useEffect, useMemo, useRef, useState } from 'react'\n\nconst noop = () => undefined\n\ninterface BaseInertiaLinkProps {\n as?: string\n data?: Record<string, FormDataConvertible>\n href: string | { url: string; method: Method }\n method?: Method\n headers?: Record<string, string>\n onClick?: (event: React.MouseEvent<Element>) => void\n preserveScroll?: PreserveStateOption\n preserveState?: PreserveStateOption\n replace?: boolean\n only?: string[]\n except?: string[]\n onCancelToken?: (cancelToken: import('axios').CancelTokenSource) => void\n onBefore?: () => void\n onStart?: (event: PendingVisit) => void\n onProgress?: (progress: Progress) => void\n onFinish?: (event: PendingVisit) => void\n onCancel?: () => void\n onSuccess?: () => void\n onError?: () => void\n queryStringArrayFormat?: 'indices' | 'brackets'\n async?: boolean\n cacheFor?: number | string\n prefetch?: boolean | LinkPrefetchOption | LinkPrefetchOption[]\n}\n\nexport type InertiaLinkProps = BaseInertiaLinkProps &\n Omit<React.HTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps> &\n Omit<React.AllHTMLAttributes<HTMLElement>, keyof BaseInertiaLinkProps>\n\nconst Link = forwardRef<unknown, InertiaLinkProps>(\n (\n {\n children,\n as = 'a',\n data = {},\n href,\n method = 'get',\n preserveScroll = false,\n preserveState = null,\n replace = false,\n only = [],\n except = [],\n headers = {},\n queryStringArrayFormat = 'brackets',\n async = false,\n onClick = noop,\n onCancelToken = noop,\n onBefore = noop,\n onStart = noop,\n onProgress = noop,\n onFinish = noop,\n onCancel = noop,\n onSuccess = noop,\n onError = noop,\n prefetch = false,\n cacheFor = 0,\n ...props\n },\n ref,\n ) => {\n const [inFlightCount, setInFlightCount] = useState(0)\n const hoverTimeout = useRef<number>(null)\n\n as = as.toLowerCase()\n method = typeof href === 'object' ? href.method : (method.toLowerCase() as Method)\n const [_href, _data] = mergeDataIntoQueryString(\n method,\n typeof href === 'object' ? href.url : href || '',\n data,\n queryStringArrayFormat,\n )\n const url = _href\n data = _data\n\n const baseParams = {\n data,\n method,\n preserveScroll,\n preserveState: preserveState ?? method !== 'get',\n replace,\n only,\n except,\n headers,\n async,\n }\n\n const visitParams = {\n ...baseParams,\n onCancelToken,\n onBefore,\n onStart(event) {\n setInFlightCount((count) => count + 1)\n onStart(event)\n },\n onProgress,\n onFinish(event) {\n setInFlightCount((count) => count - 1)\n onFinish(event)\n },\n onCancel,\n onSuccess,\n onError,\n }\n\n const doPrefetch = () => {\n router.prefetch(url, baseParams, { cacheFor: cacheForValue })\n }\n\n const prefetchModes: LinkPrefetchOption[] = useMemo(\n () => {\n if (prefetch === true) {\n return ['hover']\n }\n\n if (prefetch === false) {\n return []\n }\n\n if (Array.isArray(prefetch)) {\n return prefetch\n }\n\n return [prefetch]\n },\n Array.isArray(prefetch) ? prefetch : [prefetch],\n )\n\n const cacheForValue = useMemo(() => {\n if (cacheFor !== 0) {\n // If they've provided a value, respect it\n return cacheFor\n }\n\n if (prefetchModes.length === 1 && prefetchModes[0] === 'click') {\n // If they've only provided a prefetch mode of 'click',\n // we should only prefetch for the next request but not keep it around\n return 0\n }\n\n // Otherwise, default to 30 seconds\n return 30_000\n }, [cacheFor, prefetchModes])\n\n useEffect(() => {\n return () => {\n clearTimeout(hoverTimeout.current)\n }\n }, [])\n\n useEffect(() => {\n if (prefetchModes.includes('mount')) {\n setTimeout(() => doPrefetch())\n }\n }, prefetchModes)\n\n const regularEvents = {\n onClick: (event) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n event.preventDefault()\n\n router.visit(url, visitParams)\n }\n },\n }\n\n const prefetchHoverEvents = {\n onMouseEnter: () => {\n hoverTimeout.current = window.setTimeout(() => {\n doPrefetch()\n }, 75)\n },\n onMouseLeave: () => {\n clearTimeout(hoverTimeout.current)\n },\n onClick: regularEvents.onClick,\n }\n\n const prefetchClickEvents = {\n onMouseDown: (event) => {\n if (shouldIntercept(event)) {\n event.preventDefault()\n doPrefetch()\n }\n },\n onMouseUp: (event) => {\n event.preventDefault()\n router.visit(url, visitParams)\n },\n onClick: (event) => {\n onClick(event)\n\n if (shouldIntercept(event)) {\n // Let the mouseup event handle the visit\n event.preventDefault()\n }\n },\n }\n\n if (method !== 'get') {\n as = 'button'\n }\n\n const elProps = {\n a: { href: url },\n button: { type: 'button' },\n }\n\n return createElement(\n as,\n {\n ...props,\n ...(elProps[as] || {}),\n ref,\n ...(() => {\n if (prefetchModes.includes('hover')) {\n return prefetchHoverEvents\n }\n\n if (prefetchModes.includes('click')) {\n return prefetchClickEvents\n }\n\n return regularEvents\n })(),\n 'data-loading': inFlightCount > 0 ? '' : undefined,\n },\n children,\n )\n },\n)\nLink.displayName = 'InertiaLink'\n\nexport default Link\n", "import {\n FormDataConvertible,\n FormDataKeys,\n FormDataValues,\n Method,\n Progress,\n router,\n VisitOptions,\n} from '@inertiajs/core'\nimport { cloneDeep, isEqual } from 'es-toolkit'\nimport { get, has, set } from 'es-toolkit/compat'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport useRemember from './useRemember'\n\ntype SetDataByObject<TForm> = (data: TForm) => void\ntype SetDataByMethod<TForm> = (data: (previousData: TForm) => TForm) => void\ntype SetDataByKeyValuePair<TForm extends Record<any, any>> = <K extends FormDataKeys<TForm>>(key: K, value: FormDataValues<TForm, K>) => void\ntype FormDataType = Record<string, FormDataConvertible>\ntype FormOptions = Omit<VisitOptions, 'data'>\n\nexport interface InertiaFormProps<TForm extends FormDataType> {\n data: TForm\n isDirty: boolean\n errors: Partial<Record<FormDataKeys<TForm>, string>>\n hasErrors: boolean\n processing: boolean\n progress: Progress | null\n wasSuccessful: boolean\n recentlySuccessful: boolean\n setData: SetDataByObject<TForm> & SetDataByMethod<TForm> & SetDataByKeyValuePair<TForm>\n transform: (callback: (data: TForm) => object) => void\n setDefaults(): void\n setDefaults(field: FormDataKeys<TForm>, value: FormDataConvertible): void\n setDefaults(fields: Partial<TForm>): void\n reset: (...fields: FormDataKeys<TForm>[]) => void\n clearErrors: (...fields: FormDataKeys<TForm>[]) => void\n setError(field: FormDataKeys<TForm>, value: string): void\n setError(errors: Record<FormDataKeys<TForm>, string>): void\n submit: (...args: [Method, string, FormOptions?] | [{ url: string; method: Method }, FormOptions?]) => void\n get: (url: string, options?: FormOptions) => void\n patch: (url: string, options?: FormOptions) => void\n post: (url: string, options?: FormOptions) => void\n put: (url: string, options?: FormOptions) => void\n delete: (url: string, options?: FormOptions) => void\n cancel: () => void\n}\nexport default function useForm<TForm extends FormDataType>(initialValues?: TForm): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType>(\n rememberKey: string,\n initialValues?: TForm,\n): InertiaFormProps<TForm>\nexport default function useForm<TForm extends FormDataType>(\n rememberKeyOrInitialValues?: string | TForm,\n maybeInitialValues?: TForm,\n): InertiaFormProps<TForm> {\n const isMounted = useRef(null)\n const rememberKey = typeof rememberKeyOrInitialValues === 'string' ? rememberKeyOrInitialValues : null\n const [defaults, setDefaults] = useState(\n (typeof rememberKeyOrInitialValues === 'string' ? maybeInitialValues : rememberKeyOrInitialValues) || ({} as TForm),\n )\n const cancelToken = useRef(null)\n const recentlySuccessfulTimeoutId = useRef(null)\n const [data, setData] = rememberKey ? useRemember(defaults, `${rememberKey}:data`) : useState(defaults)\n const [errors, setErrors] = rememberKey\n ? useRemember({} as Partial<Record<FormDataKeys<TForm>, string>>, `${rememberKey}:errors`)\n : useState({} as Partial<Record<FormDataKeys<TForm>, string>>)\n const [hasErrors, setHasErrors] = useState(false)\n const [processing, setProcessing] = useState(false)\n const [progress, setProgress] = useState(null)\n const [wasSuccessful, setWasSuccessful] = useState(false)\n const [recentlySuccessful, setRecentlySuccessful] = useState(false)\n const transform = useRef((data) => data)\n\n useEffect(() => {\n isMounted.current = true\n return () => {\n isMounted.current = false\n }\n }, [])\n\n const submit = useCallback(\n (...args) => {\n const objectPassed = typeof args[0] === 'object'\n\n const method = objectPassed ? args[0].method : args[0]\n const url = objectPassed ? args[0].url : args[1]\n const options = (objectPassed ? args[1] : args[2]) ?? {}\n\n const _options = {\n ...options,\n onCancelToken: (token) => {\n cancelToken.current = token\n\n if (options.onCancelToken) {\n return options.onCancelToken(token)\n }\n },\n onBefore: (visit) => {\n setWasSuccessful(false)\n setRecentlySuccessful(false)\n clearTimeout(recentlySuccessfulTimeoutId.current)\n\n if (options.onBefore) {\n return options.onBefore(visit)\n }\n },\n onStart: (visit) => {\n setProcessing(true)\n\n if (options.onStart) {\n return options.onStart(visit)\n }\n },\n onProgress: (event) => {\n setProgress(event)\n\n if (options.onProgress) {\n return options.onProgress(event)\n }\n },\n onSuccess: (page) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors({})\n setHasErrors(false)\n setWasSuccessful(true)\n setRecentlySuccessful(true)\n setDefaults(cloneDeep(data))\n recentlySuccessfulTimeoutId.current = setTimeout(() => {\n if (isMounted.current) {\n setRecentlySuccessful(false)\n }\n }, 2000)\n }\n\n if (options.onSuccess) {\n return options.onSuccess(page)\n }\n },\n onError: (errors) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n setErrors(errors)\n setHasErrors(true)\n }\n\n if (options.onError) {\n return options.onError(errors)\n }\n },\n onCancel: () => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n if (options.onCancel) {\n return options.onCancel()\n }\n },\n onFinish: (visit) => {\n if (isMounted.current) {\n setProcessing(false)\n setProgress(null)\n }\n\n cancelToken.current = null\n\n if (options.onFinish) {\n return options.onFinish(visit)\n }\n },\n }\n\n if (method === 'delete') {\n router.delete(url, { ..._options, data: transform.current(data) })\n } else {\n router[method](url, transform.current(data), _options)\n }\n },\n [data, setErrors, transform],\n )\n\n const setDataFunction = useCallback(\n (keyOrData: FormDataKeys<TForm> | Function | TForm, maybeValue?: any) => {\n if (typeof keyOrData === 'string') {\n setData((data) => set(cloneDeep(data), keyOrData, maybeValue))\n } else if (typeof keyOrData === 'function') {\n setData((data) => keyOrData(data))\n } else {\n setData(keyOrData as TForm)\n }\n },\n [setData],\n )\n\n const setDefaultsFunction = useCallback(\n (fieldOrFields?: FormDataKeys<TForm> | Partial<TForm>, maybeValue?: FormDataConvertible) => {\n if (typeof fieldOrFields === 'undefined') {\n setDefaults(() => data)\n } else {\n setDefaults((defaults) => {\n return typeof fieldOrFields === 'string'\n ? set(cloneDeep(defaults), fieldOrFields, maybeValue)\n : Object.assign(cloneDeep(defaults), fieldOrFields)\n })\n }\n },\n [data, setDefaults],\n )\n\n const reset = useCallback(\n (...fields) => {\n if (fields.length === 0) {\n setData(defaults)\n } else {\n setData((data) =>\n (fields as Array<FormDataKeys<TForm>>)\n .filter((key) => has(defaults, key))\n .reduce(\n (carry, key) => {\n return set(carry, key, get(defaults, key))\n },\n { ...data } as TForm,\n ),\n )\n }\n },\n [setData, defaults],\n )\n\n const setError = useCallback(\n (fieldOrFields: FormDataKeys<TForm> | Record<FormDataKeys<TForm>, string>, maybeValue?: string) => {\n setErrors((errors) => {\n const newErrors = {\n ...errors,\n ...(typeof fieldOrFields === 'string'\n ? { [fieldOrFields]: maybeValue }\n : (fieldOrFields as Record<FormDataKeys<TForm>, string>)),\n }\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors\n })\n },\n [setErrors, setHasErrors],\n )\n\n const clearErrors = useCallback(\n (...fields) => {\n setErrors((errors) => {\n const newErrors = (Object.keys(errors) as Array<FormDataKeys<TForm>>).reduce(\n (carry, field) => ({\n ...carry,\n ...(fields.length > 0 && !fields.includes(field) ? { [field]: errors[field] } : {}),\n }),\n {},\n )\n setHasErrors(Object.keys(newErrors).length > 0)\n return newErrors\n })\n },\n [setErrors, setHasErrors],\n )\n\n const createSubmitMethod = (method) => (url, options) => {\n submit(method, url, options)\n }\n const getMethod = useCallback(createSubmitMethod('get'), [submit])\n const post = useCallback(createSubmitMethod('post'), [submit])\n const put = useCallback(createSubmitMethod('put'), [submit])\n const patch = useCallback(createSubmitMethod('patch'), [submit])\n const deleteMethod = useCallback(createSubmitMethod('delete'), [submit])\n\n const cancel = useCallback(() => {\n if (cancelToken.current) {\n cancelToken.current.cancel()\n }\n }, [])\n\n const transformFunction = useCallback((callback) => {\n transform.current = callback\n }, [])\n\n return {\n data,\n setData: setDataFunction,\n isDirty: !isEqual(data, defaults),\n errors,\n hasErrors,\n processing,\n progress,\n wasSuccessful,\n recentlySuccessful,\n transform: transformFunction,\n setDefaults: setDefaultsFunction,\n reset,\n setError,\n clearErrors,\n submit,\n get: getMethod,\n post,\n put,\n patch,\n delete: deleteMethod,\n cancel,\n }\n}\n", "import { router } from '@inertiajs/core'\nimport { Dispatch, SetStateAction, useEffect, useState } from 'react'\n\nexport default function useRemember<State>(\n initialState: State,\n key?: string,\n): [State, Dispatch<SetStateAction<State>>] {\n const [state, setState] = useState(() => {\n const restored = router.restore(key) as State\n\n return restored !== undefined ? restored : initialState\n })\n\n useEffect(() => {\n router.remember(state, key)\n }, [state, key])\n\n return [state, setState]\n}\n", "import { PollOptions, ReloadOptions, router } from '@inertiajs/core'\nimport { useEffect, useRef } from 'react'\n\nexport default function usePoll(\n interval: number,\n requestOptions: ReloadOptions = {},\n options: PollOptions = {\n keepAlive: false,\n autoStart: true,\n },\n) {\n const pollRef = useRef(\n router.poll(interval, requestOptions, {\n ...options,\n autoStart: false,\n }),\n )\n\n useEffect(() => {\n if (options.autoStart ?? true) {\n pollRef.current.start()\n }\n\n return () => pollRef.current.stop()\n }, [])\n\n return {\n stop: pollRef.current.stop,\n start: pollRef.current.start,\n }\n}\n", "import { router, VisitOptions } from '@inertiajs/core'\nimport { useEffect, useState } from 'react'\n\nexport default function usePrefetch(options: VisitOptions = {}): {\n lastUpdatedAt: number | null\n isPrefetching: boolean\n isPrefetched: boolean\n flush: () => void\n} {\n const cached = typeof window === 'undefined' ? null : router.getCached(window.location.pathname, options)\n const inFlight = typeof window === 'undefined' ? null : router.getPrefetching(window.location.pathname, options)\n\n const [lastUpdatedAt, setLastUpdatedAt] = useState<number | null>(cached?.staleTimestamp || null)\n const [isPrefetching, setIsPrefetching] = useState(inFlight !== null)\n const [isPrefetched, setIsPrefetched] = useState(cached !== null)\n\n useEffect(() => {\n const onPrefetchingListener = router.on('prefetching', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(true)\n }\n })\n\n const onPrefetchedListener = router.on('prefetched', (e) => {\n if (e.detail.visit.url.pathname === window.location.pathname) {\n setIsPrefetching(false)\n setIsPrefetched(true)\n setLastUpdatedAt(e.detail.fetchedAt)\n }\n })\n\n return () => {\n onPrefetchedListener()\n onPrefetchingListener()\n }\n }, [])\n\n return {\n lastUpdatedAt,\n isPrefetching,\n isPrefetched,\n flush: () => router.flush(window.location.pathname, options),\n }\n}\n", "import { ReloadOptions, router } from '@inertiajs/core'\nimport { createElement, ReactElement, useCallback, useEffect, useRef, useState } from 'react'\n\ninterface WhenVisibleProps {\n children: ReactElement | number | string\n fallback: ReactElement | number | string\n data?: string | string[]\n params?: ReloadOptions\n buffer?: number\n as?: string\n always?: boolean\n}\n\nconst WhenVisible = ({ children, data, params, buffer, as, always, fallback }: WhenVisibleProps) => {\n always = always ?? false\n as = as ?? 'div'\n fallback = fallback ?? null\n\n const [loaded, setLoaded] = useState(false)\n const hasFetched = useRef<boolean>(false)\n const fetching = useRef<boolean>(false)\n const ref = useRef<HTMLDivElement>(null)\n\n const getReloadParams = useCallback<() => Partial<ReloadOptions>>(() => {\n if (data) {\n return {\n only: (Array.isArray(data) ? data : [data]) as string[],\n }\n }\n\n if (!params) {\n throw new Error('You must provide either a `data` or `params` prop.')\n }\n\n return params\n }, [params, data])\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (!entries[0].isIntersecting) {\n return\n }\n\n if (!always && hasFetched.current) {\n observer.disconnect()\n }\n\n if (fetching.current) {\n return\n }\n\n hasFetched.current = true\n fetching.current = true\n\n const reloadParams = getReloadParams()\n\n router.reload({\n ...reloadParams,\n onStart: (e) => {\n fetching.current = true\n reloadParams.onStart?.(e)\n },\n onFinish: (e) => {\n setLoaded(true)\n fetching.current = false\n reloadParams.onFinish?.(e)\n\n if (!always) {\n observer.disconnect()\n }\n },\n })\n },\n {\n rootMargin: `${buffer || 0}px`,\n },\n )\n\n observer.observe(ref.current)\n\n return () => {\n observer.disconnect()\n }\n }, [ref, getReloadParams, buffer])\n\n if (always || !loaded) {\n return createElement(\n as,\n {\n props: null,\n ref,\n },\n loaded ? children : fallback,\n )\n }\n\n return loaded ? children : null\n}\n\nWhenVisible.displayName = 'InertiaWhenVisible'\n\nexport default WhenVisible\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["index_exports", "__export", "Deferred_default", "Head_default", "Link_default", "WhenVisible_default", "createInertiaApp", "router", "useForm", "usePage", "usePoll", "usePrefetch", "useRemember", "__toCommonJS", "import_core", "import_core", "import_react", "import_core", "import_react", "import_react", "headContext", "HeadContext_default", "import_react", "pageContext", "PageContext_default", "App", "children", "initialPage", "initialComponent", "resolveComponent", "titleCallback", "onHeadUpdate", "current", "setCurrent", "headManager", "title", "component", "page", "preserveState", "HeadContext_default", "PageContext_default", "renderChildren", "Component", "props", "key", "child", "Layout", "createInertiaApp", "id", "resolve", "setup", "title", "progress", "page", "render", "isServer", "el", "initialPage", "resolveComponent", "name", "module", "head", "reactApp", "initialComponent", "App", "elements", "body", "import_react", "import_react", "usePage", "page", "PageContext_default", "Deferred", "children", "data", "fallback", "loaded", "setLoaded", "pageProps", "usePage", "keys", "removeListener", "router", "e", "key", "Deferred_default", "import_react", "Head", "children", "title", "headManager", "HeadContext_default", "provider", "isUnaryTag", "node", "renderTagStart", "attrs", "carry", "name", "value", "renderTagChildren", "html", "child", "renderTag", "ensureNodeHasInertiaProp", "React", "renderNode", "renderNodes", "nodes", "computed", "tag", "Head_default", "import_core", "import_react", "noop", "Link", "children", "as", "data", "href", "method", "preserveScroll", "preserveState", "replace", "only", "except", "headers", "queryStringArrayFormat", "async", "onClick", "onCancelToken", "onBefore", "onStart", "onProgress", "onFinish", "onCancel", "onSuccess", "onError", "prefetch", "cacheFor", "props", "ref", "inFlightCount", "setInFlightCount", "hoverTimeout", "_href", "_data", "url", "baseParams", "visitParams", "event", "count", "doPrefetch", "cacheForValue", "prefetchModes", "regularEvents", "prefetchHoverEvents", "prefetchClickEvents", "Link_default", "import_core", "import_es_toolkit", "import_compat", "import_react", "import_core", "import_react", "useRemember", "initialState", "key", "state", "setState", "restored", "useForm", "rememberKeyOrInitialValues", "maybeInitialValues", "isMounted", "rememberKey", "defaults", "setDefaults", "cancelToken", "recentlySuccessfulTimeoutId", "data", "setData", "useRemember", "errors", "setErrors", "hasErrors", "setHasErrors", "processing", "setProcessing", "progress", "setProgress", "wasSuccessful", "setWasSuccessful", "recentlySuccessful", "setRecentlySuccessful", "transform", "submit", "args", "objectPassed", "method", "url", "options", "_options", "token", "visit", "event", "page", "setDataFunction", "keyOrData", "maybeValue", "setDefaultsFunction", "fieldOrFields", "reset", "fields", "key", "carry", "setError", "newErrors", "clearErrors", "field", "createSubmitMethod", "getMethod", "post", "put", "patch", "deleteMethod", "cancel", "transformFunction", "callback", "import_core", "import_react", "usePoll", "interval", "requestOptions", "options", "pollRef", "import_core", "import_react", "usePrefetch", "options", "cached", "inFlight", "lastUpdatedAt", "setLastUpdatedAt", "isPrefetching", "setIsPrefetching", "isPrefetched", "setIsPrefetched", "onPrefetchingListener", "onPrefetchedListener", "import_core", "import_react", "WhenVisible", "children", "data", "params", "buffer", "as", "always", "fallback", "loaded", "setLoaded", "hasFetched", "fetching", "ref", "getReloadParams", "observer", "entries", "reloadParams", "e", "WhenVisible_default", "router", "Router"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inertiajs/react",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.8",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "The React adapter for Inertia.js",
|
|
6
6
|
"contributors": [
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"react": "^16.9.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"@inertiajs/core": "2.0.
|
|
62
|
+
"@inertiajs/core": "2.0.8",
|
|
63
63
|
"es-toolkit": "^1.33.0"
|
|
64
64
|
}
|
|
65
65
|
}
|
package/types/useForm.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FormDataConvertible, FormDataKeys, FormDataValues, Method, Progress, VisitOptions } from '@inertiajs/core';
|
|
2
2
|
type SetDataByObject<TForm> = (data: TForm) => void;
|
|
3
3
|
type SetDataByMethod<TForm> = (data: (previousData: TForm) => TForm) => void;
|
|
4
|
-
type SetDataByKeyValuePair<TForm
|
|
4
|
+
type SetDataByKeyValuePair<TForm extends Record<any, any>> = <K extends FormDataKeys<TForm>>(key: K, value: FormDataValues<TForm, K>) => void;
|
|
5
5
|
type FormDataType = Record<string, FormDataConvertible>;
|
|
6
6
|
type FormOptions = Omit<VisitOptions, 'data'>;
|
|
7
7
|
export interface InertiaFormProps<TForm extends FormDataType> {
|